################################################################################
# ____ _ ____ _ _ #
# / ___|___ | |__ ___ _ __ ___ / ___| __ _ _ __ __| | |__ _____ __ #
# | | / _ | '_ / _ '__/ _ ___ / _` | '_ / _` | '_ / _ / / #
# | |__| (_) | | | | __/ | | __/ ___) | (_| | | | | (_| | |_) | (_) > < #
# _______/|_| |_|___|_| ___| |____/ __,_|_| |_|__,_|_.__/ ___/_/_ #
# #
# This project is part of Cohere Sandbox, Cohere's Experimental Open Source #
# offering. This project provides a library, tooling, or demo making use of #
# the Cohere Platform. You should expect (self-)documented, high quality code #
# but be warned that this is EXPERIMENTAL. Therefore, also expect rough edges, #
# non-backwards compatible changes, or potential changes in functionality as #
# the library, tool, or demo evolves. Please consider referencing a specific #
# git commit or version if depending upon the project in any mission-critical #
# code as part of your own projects. #
# #
# Please don't hesitate to raise issues or submit pull requests, and thanks #
# for checking out this project! #
# #
################################################################################
Mantenedor: Equipe Cohere ConvAI
Projeto mantido até pelo menos (AAAA-MM-DD): 01/03/2023
Crie IA conversacional com base nos grandes modelos de linguagem da Cohere
conversant
conversant
com pip conversant
é uma estrutura em andamento para a construção de agentes de diálogo personalizáveis (também conhecidos como chatbots) que podem responder perguntas e conversar com usuários com uma variedade de diferentes personas de chatbot. conversant
pretende ser modular, flexível e extensível para que você possa criar qualquer tipo de chatbots que desejar!
Fornecemos várias personas personalizadas para você, incluindo ? um agente de suporte ao cliente, ⌚️ um agente de vendas de relógios, ?? um professor de matemática e ? um mago de fantasia. Crie sua própria persona com apenas uma descrição e alguns exemplos de conversas!
Leia mais sobre como conversant
faz parte do Cohere Sandbox em nossa postagem de lançamento no blog.
conversant
nossa demonstração Streamlit aqui! ?
conversant
está disponível no PyPI e é testado em Python 3.8+ e Cohere 2.8.0+.
pip install conversant
Quer vê-lo em ação primeiro? Você pode usar conversant
em um aplicativo Streamlit sem instalar nada aqui! ?
Cohere usa Streamlit para criar seus aplicativos de demonstração. Se você é novo no Streamlit, pode instalá-lo aqui e ler mais sobre como executar comandos do Streamlit aqui.
Se você quiser modificar esta demonstração do Streamlit localmente, recomendamos fortemente a bifurcação deste repositório em vez de instalá-lo como uma biblioteca do PyPI.
Se quiser criar sua própria instância da demonstração Streamlit, primeiro você precisará de COHERE_API_KEY
. Você pode gerar um visitando dashboard.cohere.ai.
Se você planeja executar o aplicativo Streamlit localmente, você pode adicionar a chave a .streamlit/secrets.toml
:
COHERE_API_KEY = "YOUR_API_KEY_HERE"
Ao executar localmente, o Streamlit lerá o arquivo secrets.toml
e injetará silenciosamente esses valores nas variáveis de ambiente. Alternativamente, você pode definir diretamente a chave API como uma variável de ambiente executando o seguinte comando na linha de comando:
export COHERE_API_KEY = "YOUR_API_KEY_HERE"
Inicie o aplicativo Streamlit na linha de comando com o seguinte comando:
streamlit run conversant/demo/streamlit_example.py
Se, em vez disso, você quiser criar um aplicativo Streamlit hospedado, adicione sua chave de API Cohere ao Streamlit por meio do Secrets Management. Adicione a seguinte linha como segredo:
COHERE_API_KEY = "YOUR_API_KEY_HERE"
Depois de ter sua própria instância do aplicativo Streamlit, você pode começar a experimentar a criação de personas personalizadas! Confira o config.json
para cada persona no diretório conversant/personas
. Você precisará criar uma subpasta neste diretório que corresponda à sua nova persona e adicionar um arquivo config.json
.
Como observação, recomendamos fortemente a bifurcação do repositório sandbox-conversant-lib
em vez de instalá-lo como uma biblioteca do PyPI. Ao criar uma nova persona, use o diretório personas
no repositório clonado. A estrutura de diretórios deve ficar assim:
conversant/personas
├── fortune-teller
│ └── config.json
└── your-persona-name # new
└── config.json
O arquivo de configuração deve conter o seguinte:
chatbot_config
:max_context_examples
: a duração do histórico de bate-papo para o chatbot usar na resposta.avatar
: código de acesso emoji opcional ou URL para imagem como avatar do chatbot. O padrão é ?.client_config
: Parâmetros para co.generate()
chat_prompt_config
:preamble
: Descrição da persona.example_separator
: uma string que separa cada exemplo de conversa.headers
: um nome para o bot
e o user
.examples
: alguns exemplos de conversa (poucas fotos) ou vazios (zero fotos). conversant
cuidará do resto! Por exemplo, verifique fortune-teller/config.json
. Ao iniciar o aplicativo Streamlit, a nova persona aparecerá no menu suspenso.
Se desejar executar o aplicativo com um subconjunto de personas personalizadas, é possível criar um novo diretório que contenha apenas as personas desejadas. Isso é análogo ao diretório conversant/personas
e precisa ter a mesma estrutura:
custom-personas
├── your-first-persona
│ └── config.json
└── your-second-persona
└── config.json
Depois de criar esse diretório, você precisará informar ao aplicativo onde procurá-lo. No aplicativo de demonstração Streamlit ( streamlit_example.py
), uma das primeiras linhas diz CUSTOM_PERSONA_DIRECTORY = None
. Altere isso para especificar o diretório de persona desejado, por exemplo CUSTOM_PERSONA_DIRECTORY = "/Users/yourname/custom-personas"
.
Se isso não for alterado, o aplicativo usará como padrão o diretório que contém as personas de demonstração conversant
.
Se você não vir a nova persona no menu suspenso, talvez seja necessário especificar um diretório de persona personalizado. Siga as instruções acima para informar ao aplicativo onde procurar as personas.
Você também pode editar uma persona no aplicativo Streamlit!
Com conversant
, você pode criar um chatbot baseado nos grandes modelos de linguagem do Cohere com apenas o seguinte trecho de código.
import cohere
import conversant
co = cohere . Client ( "YOUR_API_KEY_HERE" )
bot = conversant . PromptChatbot . from_persona ( "fantasy-wizard" , client = co )
print ( bot . reply ( "Hello!" ))
>> > "Well met, fair traveller. What bringest thou to mine village?"
Você também pode definir sua própria persona passando seu próprio ChatPrompt
.
from conversant . prompts import ChatPrompt
shakespeare_config = {
"preamble" : "Below is a conversation between Shakespeare and a Literature Student." ,
"example_separator" : " n " ,
"headers" : {
"user" : "Literature Student" ,
"bot" : "William Shakespeare" ,
},
"examples" : [
[
{
"user" : "Who are you?" ,
"bot" : "Mine own nameth is Shakespeare, and I speaketh in riddles." ,
},
]
],
}
shakespeare_bot = conversant . PromptChatbot (
client = co , prompt = ChatPrompt . from_dict ( shakespeare_config )
)
print ( shakespeare_bot . reply ( "Hello!" ))
>> > "Greeteth, and welcome. I am Shakespeare, the great poet, dramatist, and playwright."
conversant
usa o preenchimento imediato para definir uma persona do chatbot com uma descrição e alguns exemplos. O prompt é enviado como entrada para o endpoint co.generate()
de Cohere para um modelo de linguagem autorregressivo para gerar texto em poucas etapas a partir dos exemplos e do contexto de diálogo atual.
Cada mensagem do usuário e resposta do chatbot é anexada a um histórico de chat para que as respostas futuras sejam condicionadas ao contexto do diálogo naquele momento.
No futuro, planejamos adicionar funcionalidade para que um chatbot seja fundamentado em fatos usando texto recuperado de um cache de documentos local.
Para obter mais informações, consulte esta seção em CONTRIBUTORS.md
.
A documentação completa pode ser encontrada aqui.
Se você tiver alguma dúvida ou comentário, registre um problema ou entre em contato conosco no Discord.
Se você gostaria de contribuir para este projeto, leia CONTRIBUTORS.md
neste repositório e assine o Contrato de Licença de Colaborador antes de enviar qualquer solicitação pull. Um link para assinar o CLA Cohere será gerado na primeira vez que você fizer uma solicitação pull para um repositório Cohere.
Além das diretrizes sobre o envio de código para este repositório, CONTRIBUTORS.md
contém um passo a passo para ajudar os desenvolvedores a começar, bem como esquemas que explicam como conversant
funciona nos bastidores. ?
conversant
possui uma licença do MIT.