################################################################################
# ____ _ ____ _ _ #
# / ___|___ | |__ ___ _ __ ___ / ___| __ _ _ __ __| | |__ _____ __ #
# | | / _ | '_ / _ '__/ _ ___ / _` | '_ / _` | '_ / _ / / #
# | |__| (_) | | | | __/ | | __/ ___) | (_| | | | | (_| | |_) | (_) > < #
# _______/|_| |_|___|_| ___| |____/ __,_|_| |_|__,_|_.__/ ___/_/_ #
# #
# 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! #
# #
################################################################################
维护者: Cohere ConvAI 团队
项目至少维持到(YYYY-MM-DD): 2023-03-01
在 Cohere 的大型语言模型之上构建对话式 AI
conversant
conversant
pip conversant
是一个正在开发的框架,用于构建可定制的对话代理(又名聊天机器人),可以回答问题并与具有各种不同聊天机器人角色的用户进行对话。 conversant
目标是模块化、灵活和可扩展,这样您就可以创建您想要的任何类型的聊天机器人!
我们为您提供多种自定义角色,包括 ? 客户支持代理、⌚️ 手表销售代理、??数学老师,并且?一个幻想巫师。只需描述和一些示例对话即可创建您自己的角色!
在我们的发布博客文章中详细了解conversant
如何成为 Cohere Sandbox 的一部分。
在这里尝试conversant
我们的 Streamlit 演示! ?
conversant
可在 PyPI 上使用,并在 Python 3.8+ 和 Cohere 2.8.0+ 上进行了测试。
pip install conversant
想先看看它的实际效果吗?您可以在 Streamlit 应用程序上使用conversant
,而无需在此处安装任何内容! ?
Cohere 使用 Streamlit 创建其演示应用程序。如果您是 Streamlit 的新手,可以在此处安装它并在此处阅读有关运行 Streamlit 命令的更多信息。
如果您想在本地修改此 Streamlit 演示,我们强烈建议分叉此存储库,而不是从 PyPI 将其安装为库。
如果您想启动自己的 Streamlit 演示实例,您首先需要一个COHERE_API_KEY
。您可以通过访问dashboard.cohere.ai 生成一个。
如果您计划在本地运行 Streamlit 应用程序,您可以将密钥添加到.streamlit/secrets.toml
:
COHERE_API_KEY = "YOUR_API_KEY_HERE"
在本地运行时,Streamlit 将读取secrets.toml
文件并以静默方式将这些值注入到环境变量中。或者,您可以通过从命令行运行以下命令来直接将 API 密钥设置为环境变量:
export COHERE_API_KEY = "YOUR_API_KEY_HERE"
使用以下命令从命令行启动 Streamlit 应用程序:
streamlit run conversant/demo/streamlit_example.py
如果您想创建托管 Streamlit 应用程序,请通过 Secrets Management 将您的 Cohere API 密钥添加到 Streamlit。添加以下行作为 Secret:
COHERE_API_KEY = "YOUR_API_KEY_HERE"
一旦您拥有自己的 Streamlit 应用程序实例,您就可以开始尝试创建自定义角色!查看conversant/personas
目录中每个角色的config.json
。您需要在此目录中创建一个与您的新角色相对应的子文件夹,并添加一个config.json
文件。
请注意,我们强烈建议分叉sandbox-conversant-lib
存储库,而不是从 PyPI 将其安装为库。创建新角色时,请使用克隆存储库中的personas
目录。目录结构应如下所示:
conversant/personas
├── fortune-teller
│ └── config.json
└── your-persona-name # new
└── config.json
配置文件应包含以下内容:
chatbot_config
:max_context_examples
:聊天机器人用于回复的聊天历史记录的长度。avatar
:可选的表情符号短代码或 URL,将图像作为聊天机器人的头像。默认为 ?。client_config
: co.generate()
的参数chat_prompt_config
:preamble
:人物描述。example_separator
:分隔每个示例对话的字符串。headers
: bot
和user
的名称。examples
:一些对话示例(few-shot),或空(zero-shot)。 conversant
会处理剩下的事情!作为示例,请查看fortune-teller/config.json
。当您启动 Streamlit 应用程序时,新角色将出现在下拉菜单中。
如果您想使用自定义角色的子集运行应用程序,可以创建一个仅包含所需角色的新目录。这类似于conversant/personas
目录,并且需要具有相同的结构:
custom-personas
├── your-first-persona
│ └── config.json
└── your-second-persona
└── config.json
创建此目录后,您需要告诉应用程序在哪里查找它。在演示 Streamlit 应用程序 ( streamlit_example.py
) 中,第一行之一为CUSTOM_PERSONA_DIRECTORY = None
。更改此设置以指定所需的角色目录,例如CUSTOM_PERSONA_DIRECTORY = "/Users/yourname/custom-personas"
。
如果未更改,应用程序将默认使用包含conversant
演示角色的目录。
如果您在下拉菜单中没有看到新角色,则可能需要指定自定义角色目录。按照上面的说明告诉应用程序在哪里寻找角色。
您还可以在 Streamlit 应用程序上编辑角色!
借助conversant
,您只需使用以下代码片段即可创建由 Cohere 大型语言模型支持的聊天机器人。
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?"
您还可以通过传入自己的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
使用提示完成来定义带有描述和一些示例的聊天机器人角色。该提示作为输入发送到 Cohere 的co.generate()
端点,用于自回归语言模型,以通过示例和当前对话上下文以少量方式生成文本。
每条用户消息和聊天机器人响应都会附加到聊天历史记录中,以便将来的响应以当时的对话上下文为条件。
将来,我们计划为聊天机器人添加功能,以便使用从本地文档缓存检索的文本进行事实依据。
有关更多信息,请参阅CONTRIBUTORS.md
中的此部分。
完整的文档可以在这里找到。
如果您有任何问题或意见,请提出问题或通过 Discord 联系我们。
如果您想为此项目做出贡献,请阅读此存储库中的CONTRIBUTORS.md
,并在提交任何拉取请求之前签署贡献者许可协议。当您第一次向 Cohere 存储库发出拉取请求时,将会生成一个用于签署 Cohere CLA 的链接。
除了有关向此存储库提交代码的指南之外, CONTRIBUTORS.md
还包含帮助开发人员入门的演练,以及解释conversant
如何在后台工作的示意图。 ?
conversant
拥有麻省理工学院许可证。