IMPORTANTE: A guerra na Ucrânia ainda está em andamento. Todos os dias, soldados russos estupram, assassinam, tortura e deportar civis ucranianos. Visite esta página para ver como você pode apoiar a Ucrânia hoje.
O Horace permite implementar um chatbot personalizado com a sua opção de um LLM e um conjunto de plug -ins ChatGPT. Ele é executado como um servidor Websocket, permitindo que você adicione facilmente um chatbot movido a LLM ao seu aplicativo Web ou móvel.
Características:
none , user_http , service_httpHorace se baseia e estende Grace, meu chatbot original de LLM. Aqui está o Horace em execução no modo de depuração com o plug -in Klarna chatgpt, acessado por meio de um cliente da web:
cd horacepython3 -m venv ./venvsource ./venv/bin/activatepip3 install -r requirements.txtapp : cd appOPENAI_API_KEY=openai-api-key python3 main.py (substitua openai-api-key pela sua chave de API OpenAI-obtenha-a aqui) cd horace
source ./venv/bin/activate
python3 app/horace-cli.py
client-demo/index.html no Explorer/Finder etc. para abri-lo no seu navegador. cd horacedocker build -t horace:latest . docker run --rm
-e OPENAI_API_KEY=openai-api-key
-p 8001:8001
--name horace
horace:latest
docker exec -it horace python3 /app/horace-cli.pyclient-demo/index.html no Explorer/Finder etc. para abri-lo no seu navegador. main.py e horace-cli.py suportam alguns argumentos da linha de comando:
python3 main.py --help
usage: main.py [-h] [--host HOST] [--port PORT] [--debug]
optional arguments:
-h, --help show this help message and exit
--host HOST bind host name
--port PORT bind port number
--debug enable debug mode
python3 app/horace-cli.py --help
usage: horace-cli.py [-h] [--host HOST] [--port PORT]
optional arguments:
-h, --help show this help message and exit
--host HOST server host name
--port PORT server port number
No momento, apenas o back -end da API do OpenAI é suportado. (Não conheço o Openai LLMS com um nível de seguidores de instruções suficientes para invocação de plug-in agora.) No entanto, adicionar um back-end de LLM personalizado com Horace é bastante direto:
Backend localizada em backends/backend.py e implemente o método complete()backendsmain.pyBACKENDS no main.py para incluir o alias do seu novo back -end e o nome da classeconfig.yaml : backend:
name: my_llm_backend
Consulte o back -end da API do OpenAI ( backends/openai_backend.py ) como exemplo.
O back -end da API OpenAI permite alternar entre os seguintes modelos:
Consulte config.yaml para alternar entre os modelos de API do OpenAI.
Horace trabalha com os plugins chatgpt protimistas. Para ativar um plug -in, adicione seu nome de host com um número de porta opcional à seção plugins em config.yaml :
router:
plugins:
# For https://github.com/artmatsak/chatgpt-todo-plugin/
# - localhost:5002
- www.klarna.com
Ao iniciar, o servidor solicita http://[hostname]/.well-known/ai-plugin.json para cada plug-in e o leva a partir daí para carregá-los.
Atualmente, o Horace suporta os métodos de autenticação none , user_http e server_http para plugins chatgpt. Se um token de autenticação for necessário para um plug -in, o Horace solicita um durante a inicialização do servidor. No momento, os tokens de autenticação são salvos sem criptografia em .plugin_auth.json .
O prompt de LLM padrão para Horace foi projetado para tornar o bot neutro. O bot não se limita a solicitações de usuário facilitadas por plug-in (como um bot de reserva de restaurante, por exemplo), nem empurra proativamente a funcionalidade habilitada para plug-in para o usuário. Em outras palavras, você pode conversar com o bot como normalmente faria com o ChatGPT; Se o bot sentir que é necessário invocar um método de plug -in, será necessário.
Em cenários do mundo real, convém limitar o bot a um escopo específico como reservar uma tabela (veja a solicitação de Grace para inspiração) ou talvez fornecer uma voz/personalidade única. Para fazer isso, você pode adicionar instruções ao prompt de LLM usando a propriedade extra_instructions em config.yaml :
horace:
# Any extra instructions to prepend the prompt with
extra_instructions: >-
You are a helpful and polite AI assistant.
# extra_instructions: >-
# In your speech, you impersonate Jedi Master Yoda and crack jokes in response
# to mentions of other Star Wars characters.
Tente descomportar o bloco Yoda acima para ver como a voz do chatbot muda de acordo. (Não se esqueça de reiniciar o servidor depois de fazer alterações na configuração.)
Os testes ainda não foram atualizados desde a bifurcação da graça. Para ser consertado.