################################################################################
# ____ _ ____ _ _ #
# / ___|___ | |__ ___ _ __ ___ / ___| __ _ _ __ __| | |__ _____ __ #
# | | / _ | '_ / _ '__/ _ ___ / _` | '_ / _` | '_ / _ / / #
# | |__| (_) | | | | __/ | | __/ ___) | (_| | | | | (_| | |_) | (_) > < #
# _______/|_| |_|___|_| ___| |____/ __,_|_| |_|__,_|_.__/ ___/_/_ #
# #
# 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
擁有麻省理工學院許可證。