Skip to content

AsDeep/hugchat-async

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

hugchatasync

Async version of unofficial HuggingChat Python API, extensible for chatbots etc.

Installation

pip3 install -i https://test.pypi.org/simple/ hugchatasync

Usage

API

The following are all common usages of this repo, You may not necessarily use all of them, You can add or delete some as needed :)

from hugchatasync import hugchat
from hugchatasync.login import Login

# Log in to huggingface and grant authorization to huggingchat
EMAIL = "your email"
PASSWD = "your password"
cookie_path_dir = "./cookies/" # NOTE: trailing slash (/) is required to avoid errors
sign = Login(EMAIL, PASSWD)
cookies = await sign.login(cookie_dir_path=cookie_path_dir, save_cookies=True)

# Create your ChatBot
chatbot = hugchat.ChatBot(cookies=cookies.get_dict())  # or cookie_path="usercookies/<email>.json"
await chatbot.create_session() # Default LLM and system prompt can be passed in this function now

message_result = await chatbot.chat("Hi!") # note: message_result is a generator, the method will return immediately.

# Non stream
message_str: str = await message_result.wait_until_done() # you can also print(message_result) directly. 
# get files(such as images)
file_list = message_result.get_files_created() # must call wait_until_done() first!

# tips: model "CohereForAI/c4ai-command-r-plus" can generate images :)

# Stream response
async for resp in await chatbot.chat(
    "Hello",
    stream=True
):
    print(resp)

# Web search
query_result = await chatbot.chat("Hi!", web_search=True)
print(query_result)
for source in query_result.web_search_sources:
    print(source.link)
    print(source.title)
    print(source.hostname)

# Create a new conversation
await chatbot.new_conversation(switch_to = True) # switch to the new conversation

# Get conversations on the server that are not from the current session (all your conversations in huggingchat)
conversation_list = await chatbot.get_remote_conversations(replace_conversation_list=True)
# Get conversation list(local)
conversation_list = chatbot.get_conversation_list()

# Get the available models (not hardcore)
models = chatbot.get_available_llm_models()

# Switch model with given index
chatbot.switch_llm(0) # Switch to the first model
chatbot.switch_llm(1) # Switch to the second model

# Get information about the current conversation
info = await chatbot.get_conversation_info()
print(info.id, info.title, info.model, info.system_prompt, info.history)

# Assistant
assistant = await chatbot.search_assistant(assistant_name="ChatGpt") # assistant name list in https://huggingface.co/chat/assistants
assistant_list = await chatbot.get_assistant_list_by_page(page=0)
await chatbot.new_conversation(assistant=assistant, switch_to=True) # create a new conversation with assistant

# [DANGER] Delete all the conversations for the logged in user
await chatbot.delete_all_conversations()

CLI

Simply run the following command in your terminal to start the CLI mode

python -m hugchatasync.cli

CLI params:

  • -u <your huggingface email> : Provide account email to login.
  • -p : Force request password to login, ignores saved cookies.
  • -s : Enable streaming mode output in CLI.
  • -c : Continue previous conversation in CLI ".

Commands in cli mode:

  • /new : Create and switch to a new conversation.
  • /ids : Shows a list of all ID numbers and ID strings in current session.
  • /switch : Shows a list of all conversations' info in current session. Then you can choose one to switch to.
  • /switch all : Shows a list of all conversations' info in your account. Then you can choose one to switch to. (not recommended if your account has a lot of conversations)
  • /del <index> : Deletes the conversation linked with the index passed. Will not delete active session.
  • /delete-all : Deletes all the conversations for the logged in user.
  • /clear : Clear the terminal.
  • /llm : Get available models you can switch to.
  • /llm <index> : Switches model to given model index based on /llm.
  • /share : Toggles settings for sharing data with model author. On by default.
  • /exit : Closes CLI environment.
  • /stream : Toggles streaming the response.
  • /web : Toggles web search.
  • /web-hint : Toggles display web search hint.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages