Add cookies to HuggingChat provider

This commit is contained in:
Heiner Lohaus 2024-12-05 01:20:26 +01:00
parent b198d900aa
commit e2c269cc63
3 changed files with 127 additions and 151 deletions

View file

@ -1,16 +1,17 @@
from __future__ import annotations
import json
import requests
try:
from curl_cffi.requests import Session
from curl_cffi.requests import Session, CurlMime
has_curl_cffi = True
except ImportError:
has_curl_cffi = False
from ...typing import CreateResult, Messages
from ...typing import CreateResult, Messages, Cookies
from ...errors import MissingRequirementsError
from ...requests.raise_for_status import raise_for_status
from ...cookies import get_cookies
from ..base_provider import ProviderModelMixin, AbstractProvider
from ..helper import format_prompt
@ -53,14 +54,17 @@ class HuggingChat(AbstractProvider, ProviderModelMixin):
model: str,
messages: Messages,
stream: bool,
web_search: bool = False,
cookies: Cookies = None,
**kwargs
) -> CreateResult:
if not has_curl_cffi:
raise MissingRequirementsError('Install "curl_cffi" package | pip install -U curl_cffi')
model = cls.get_model(model)
if cookies is None:
cookies = get_cookies("huggingface.co")
if model in cls.models:
session = Session()
session = Session(cookies=cookies)
session.headers = {
'accept': '*/*',
'accept-language': 'en',
@ -118,7 +122,7 @@ class HuggingChat(AbstractProvider, ProviderModelMixin):
"id": messageId,
"is_retry": False,
"is_continue": False,
"web_search": False,
"web_search": web_search,
"tools": []
}
@ -139,15 +143,15 @@ class HuggingChat(AbstractProvider, ProviderModelMixin):
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',
}
files = {
'data': (None, json.dumps(settings, separators=(',', ':'))),
}
data = CurlMime()
data.addpart('data', data=json.dumps(settings, separators=(',', ':')))
response = requests.post(
response = session.post(
f'https://huggingface.co/chat/conversation/{conversationId}',
cookies=session.cookies,
headers=headers,
files=files,
multipart=data,
stream=True
)
raise_for_status(response)

View file

@ -92,6 +92,10 @@ body {
height: 100vh;
}
a:-webkit-any-link {
color: var(--accent);
}
.row {
display: flex;
gap: 10px;
@ -124,7 +128,7 @@ body {
.new_version a {
color: var(--colour-4);
text-decoration: underline dotted;
text-decoration: underline;
}
.conversations {
@ -975,11 +979,6 @@ ul {
display: flex;
}
a:-webkit-any-link {
color: var(--accent);
}
.conversation .user-input textarea {
font-size: 15px;
width: 100%;
@ -1021,7 +1020,6 @@ a:-webkit-any-link {
background-image: url('data:image/svg+xml;utf-8,<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M6 5C5.73478 5 5.48043 5.10536 5.29289 5.29289C5.10536 5.48043 5 5.73478 5 6V20C5 20.2652 5.10536 20.5196 5.29289 20.7071C5.48043 20.8946 5.73478 21 6 21H18C18.2652 21 18.5196 20.8946 18.7071 20.7071C18.8946 20.5196 19 20.2652 19 20V6C19 5.73478 18.8946 5.48043 18.7071 5.29289C18.5196 5.10536 18.2652 5 18 5H16C15.4477 5 15 4.55228 15 4C15 3.44772 15.4477 3 16 3H18C18.7956 3 19.5587 3.31607 20.1213 3.87868C20.6839 4.44129 21 5.20435 21 6V20C21 20.7957 20.6839 21.5587 20.1213 22.1213C19.5587 22.6839 18.7957 23 18 23H6C5.20435 23 4.44129 22.6839 3.87868 22.1213C3.31607 21.5587 3 20.7957 3 20V6C3 5.20435 3.31607 4.44129 3.87868 3.87868C4.44129 3.31607 5.20435 3 6 3H8C8.55228 3 9 3.44772 9 4C9 4.55228 8.55228 5 8 5H6Z" fill="white"/><path fill-rule="evenodd" clip-rule="evenodd" d="M7 3C7 1.89543 7.89543 1 9 1H15C16.1046 1 17 1.89543 17 3V5C17 6.10457 16.1046 7 15 7H9C7.89543 7 7 6.10457 7 5V3ZM15 3H9V5H15V3Z" fill="white"/></svg>');
background-repeat: no-repeat;
background-position: center;
transition: background-color 200ms ease, transform 200ms ease-out
}
.hljs-copy-button:hover {

View file

@ -1065,6 +1065,7 @@ async function hide_sidebar() {
sidebar_button.classList.remove("rotated");
settings.classList.add("hidden");
chat.classList.remove("hidden");
log_storage.classList.add("hidden");
if (window.location.pathname == "/menu/" || window.location.pathname == "/settings/") {
history.back();
}
@ -1182,31 +1183,6 @@ const say_hello = async () => {
}
}
// Theme storage for recurring viewers
const storeTheme = function (theme) {
appStorage.setItem("theme", theme);
};
// set theme when visitor returns
const setTheme = function () {
const activeTheme = appStorage.getItem("theme");
colorThemes.forEach((themeOption) => {
if (themeOption.id === activeTheme) {
themeOption.checked = true;
}
});
// fallback for no :has() support
document.documentElement.className = activeTheme;
};
colorThemes.forEach((themeOption) => {
themeOption.addEventListener("click", () => {
storeTheme(themeOption.id);
// fallback for no :has() support
document.documentElement.className = themeOption.id;
});
});
function count_tokens(model, text) {
if (model) {
if (window.llamaTokenizer)
@ -1273,7 +1249,6 @@ window.addEventListener('pywebviewready', async function() {
});
async function on_load() {
setTheme();
count_input();
if (/\/chat\/.+/.test(window.location.href)) {
@ -1290,8 +1265,7 @@ async function on_api() {
if (prompt_lock) return;
// If not mobile
if (!window.matchMedia("(pointer:coarse)").matches)
if (evt.keyCode === 13 && !evt.shiftKey) {
if (!window.matchMedia("(pointer:coarse)").matches && evt.keyCode === 13 && !evt.shiftKey) {
evt.preventDefault();
console.log("pressed enter");
prompt_lock = true;