Spaces:
Build error
Build error
from hugchat import hugchat | |
from hugchat.login import Login | |
from langchain.llms.base import LLM | |
from typing import Optional, List, Mapping, Any | |
from time import sleep | |
# THIS IS A CUSTOM LLM WRAPPER Based on hugchat library | |
# Reference : | |
# - Langchain custom LLM wrapper : https://python.langchain.com/docs/modules/model_io/models/llms/how_to/custom_llm | |
# - HugChat library : https://github.com/Soulter/hugging-chat-api | |
class HuggingChat(LLM): | |
"""HuggingChat LLM wrapper.""" | |
chatbot : Optional[hugchat.ChatBot] = None | |
conversation : Optional[str] = "" | |
email : Optional[str] | |
psw : Optional[str] | |
def _llm_type(self) -> str: | |
return "custom" | |
def _call(self, prompt: str, stop: Optional[List[str]] = None) -> str: | |
if stop is not None: | |
pass | |
if self.chatbot is None: | |
if self.email is None and self.psw is None: | |
ValueError("Email and Password is required, pls check the documentation on github : https://github.com/Soulter/hugging-chat-api") | |
else: | |
if self.conversation == "": | |
sign = Login(self.email, self.psw) # type: ignore | |
cookies = sign.login() | |
# Create a ChatBot | |
self.chatbot = hugchat.ChatBot(cookies=cookies.get_dict()) | |
id = self.chatbot.new_conversation() | |
self.chatbot.change_conversation(id) | |
self.conversation = id | |
else: | |
self.chatbot.change_conversation(self.conversation) # type: ignore | |
data = self.chatbot.chat(prompt, temperature=0.4, stream=False) # type: ignore | |
return data # type: ignore | |
def _identifying_params(self) -> Mapping[str, Any]: | |
"""Get the identifying parameters.""" | |
return {"model": "HuggingCHAT"} | |
#llm = HuggingChat(email = "YOUR-EMAIL" , psw = = "YOUR-PSW" ) #for start new chat | |
#print(llm("Hello, how are you?")) | |
#print(llm("what is AI?")) | |
#print(llm("Can you resume your previus answer?")) #now memory work well | |