Panel是一个开源的Python库,它可以让你用Python轻松地构建强大的工具、仪表盘和复杂的应用程序。它有一个“包含电池”的哲学,把PyData生态系统、强大的数据表格和更多的东西都放在你的手中。高级的反应式API和低级的回调式API确保你可以快速地构建探索性应用程序,但是如果你构建了复杂、多页面的应用程序,具有丰富交互性,你也不会受到限制。Panel是HoloViz生态系统的成员,它是一个连接数据探索工具的生态系统入口。
今天我们来利用Panel的Chat模块来快速开发基于各种大模型的聊天机器人:
我们需要安装如下python包:
pip install panel
pip install openai
pip install google-generativeai
pip install langchain
这里我们首先创建一个?chatgpt_bot.py的python文件:
# chatgpt_bot.py
import panel as pn
from openai import AsyncOpenAI
pn.extension()
async def callback(contents: str, user: str, instance: pn.chat.ChatInterface):
response = await aclient.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": contents}],
stream=True,
)
message = ""
async for chunk in response:
part = chunk.choices[0].delta.content
if part is not None:
message += part
yield message
#你自己的api_key
my_api_key="your_api_key"
aclient = AsyncOpenAI(api_key=my_api_key)
chat_interface = pn.chat.ChatInterface(callback=callback,
callback_user="ChatGPT")
chat_interface.send(
"你好,我是无所不知的ChatGPT机器人,欢迎像我提问!",
user="System",
respond=False
)
chat_interface.servable()
这里我们使用了panel的ChatInterface组件,它可以快速开发出一个功能强调的,基于web的聊天机器人程序。
我们需要创建一个gemini_bot.py的python文件:
#gemini_bot.py
import google.generativeai as genai
import panel as pn
genai.configure(api_key='your_api_key',#你自己的api_key
transport='rest')
model = genai.GenerativeModel('gemini-pro')
pn.extension()
async def callback(contents: str, user: str, instance: pn.chat.ChatInterface):
response = model.generate_content(contents,stream=True)
message = ""
for chunk in response:
message += chunk.text
yield message
chat_interface = pn.chat.ChatInterface(callback=callback,
callback_user="Gemini")
chat_interface.send(
"你好,我是谷歌Gemini机器人,我比ChatGPT更牛,欢迎向我提问!",
user="System", respond=False
)
chat_interface.servable()
Langchain聊天机器人具有记忆能力。同样我们创建一个langchain_bot.py的python文件:
# langchain_bot.py
import os
import panel as pn
from langchain.chat_models import ChatOpenAI
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
pn.extension()
#这里使用openai的api_key
os.environ["OPENAI_API_KEY"] = "your_openai_api_key"
async def callback(contents: str, user: str, instance: pn.chat.ChatInterface):
await chain.apredict(input=contents)
chat_interface = pn.chat.ChatInterface(callback=callback,
callback_user="ChatGPT")
callback_handler = pn.chat.langchain.PanelCallbackHandler(chat_interface)
llm = ChatOpenAI(streaming=True, callbacks=[callback_handler])
memory = ConversationBufferMemory()
chain = ConversationChain(llm=llm, memory=memory)
chat_interface.send(
"你好,我是Langchain的ChatGPT机器人,欢迎向我提问!",
user="System", respond=False
)
chat_interface.servable()
我们只需在命令行窗口中执行其中任意一个机器人程序即可:
?
下面我们在浏览器中访问机器人的地址,而已分别访问ChatGPT,Gemini,Langchain的机器人:
Panel是一个开源的Python库,它可以让你用Python轻松地构建强大的工具、其中包括聊天机器人程序,今天我们使用panel快速开发了ChatGPT,Gemini,Langchain的聊天机器人应用。通过使用使用panel库,我们可以开发出功能强大界面美观的web机器人程序。