当前位置:   article > 正文

使用python快速开发各种聊天机器人应用

使用python快速开发各种聊天机器人应用

开源项目 Panel及其最新版本1.3推出了一项令人兴奋且备受期待的新功能:聊天界面小部件。这项新功能开辟了一个充满神奇的新世界,使人工智能聊天机器人的创建比以往任何时候都更加容易和用户友好。

今天将学习如何使用 Panel 的ChatInterface 组件并构建:

  • 一个基本的聊天机器人
  • 基于ChatGPT的人工智能聊天机器人
  • 基于谷歌 Gemini 的人工智能聊天机器人
  • 基于langchain的人工智能聊天机器人

在我们开始之前,您需要安装panel(大于或等于 1.3.0 的版本)以及您可能需要的其他软件包,例如Gemini、openailangchain:

  1. pip install panel
  2. pip install openai
  3. pip install google-generativeai
  4. pip install langchain

使用聊天界面组件

全新的 ChatInterface 是panel的一个高级小组件,提供用户友好的聊天界面来发送消息,并具有四个内置操作:

  • 发送(Send):发送消息到聊天记录窗口
  • 重新运行(Rerun):重新发送最近的用户消息
  • 撤消(Undo):删除最近的消息
  • 清除(Clear):清除所有聊天消息

想了解更多关于ChatInterface幕后工作原理的信息吗?它是一个高级小组件,围绕着一个中级小组件ChatFeed,它用来管理用于显示聊天消息窗口的ChatMessage列表。查看panel关于ChatInterfaceChatFeedChatMessage的官方文档可以了解更多信息。

一、创建一个基本的聊天机器人

通过pn.chat.ChatInterface,我们就可以向聊天界面发送消息了,同时我们可以定义一个callback函数,以便生成"回复消息".

在下面的示例中,我们的callback函数只是回显用户消息。我们看看到它是如何实现回显用户消息的。

  1. """
  2. 演示回显用户消息
  3. """
  4. import panel as pn
  5. pn.extension()
  6. def callback(contents: str, user: str, instance: pn.chat.ChatInterface):
  7. message = f"Echoing {user}: {contents}"
  8. return message
  9. chat_interface = pn.chat.ChatInterface(callback=callback, callback_user="System")
  10. chat_interface.send("Send a message to receive an echo!", user="System", respond=False)
  11. chat_interface.servable()

二、创建基于 ChatGPT 的 AI 聊天机器人

我们需要做的是创建一个简单的调用OpenAI API 的callback函数。不过首先请确保您以及申请过 OpenAI API api_key,因为我们需要使用openai的api_key来访问ChatGPT。请注意,在此示例中,我们添加async了函数以便允许在单个线程内进行协作多任务处理,并允许 IO 任务在后台发生。这可以确保我们的应用程序在等待 OpenAI API 响应时顺利运行。异步支持并发执行,允许我们在等待时执行其他任务并确保应用程序响应。

这里我们首先创建一个 chatgpt_bot.py的python文件:

  1. # chatgpt_bot.py
  2. import panel as pn
  3. from openai import AsyncOpenAI
  4. pn.extension()
  5. async def callback(contents: str, user: str, instance: pn.chat.ChatInterface):
  6. response = await aclient.chat.completions.create(
  7. model="gpt-3.5-turbo",
  8. messages=[{"role": "user", "content": contents}],
  9. stream=True,
  10. )
  11. message = ""
  12. async for chunk in response:
  13. part = chunk.choices[0].delta.content
  14. if part is not None:
  15. message += part
  16. yield message
  17. #你自己的api_key
  18. my_api_key="your_api_key"
  19. aclient = AsyncOpenAI(api_key=my_api_key)
  20. chat_interface = pn.chat.ChatInterface(callback=callback,
  21. callback_user="ChatGPT")
  22. chat_interface.send(
  23. "你好,我是无所不知的ChatGPT机器人,欢迎像我提问!",
  24. user="System",
  25. respond=False
  26. )
  27. chat_interface.servable()

这里我们使用了panel的ChatInterface组件,它可以快速开发出一个功能强调的,基于web的聊天机器人程序。

三、创建基于谷歌 Gemini 的人工智能聊天机器人

与创建ChatGPT机器人类型,这里我们也需要创建一个gemini_bot.py的python文件,并在其中创建一个调用Gemini API 的callback函数:

  1. #gemini_bot.py
  2. import google.generativeai as genai
  3. import panel as pn
  4. genai.configure(api_key='your_api_key',#你自己的api_key
  5. transport='rest')
  6. model = genai.GenerativeModel('gemini-pro')
  7. pn.extension()
  8. async def callback(contents: str, user: str, instance: pn.chat.ChatInterface):
  9. response = model.generate_content(contents,stream=True)
  10. message = ""
  11. for chunk in response:
  12. message += chunk.text
  13. yield message
  14. chat_interface = pn.chat.ChatInterface(callback=callback,
  15. callback_user="Gemini")
  16. chat_interface.send(
  17. "你好,我是谷歌Gemini机器人,我比ChatGPT更牛,欢迎向我提问!",
  18. user="System", respond=False
  19. )
  20. chat_interface.servable()

三、创建基于langchain的人工智能聊天机器人

与创建ChatGPT机器人类型,这里我们也需要创建一个langchain_bot.py的python文件,并在其中创建一个callback函数, 这里我们让langchain机器人拥有记忆能力,所以我们还需要创建langchain的记忆力组件ConversationBufferMemory和chain:

  1. # langchain_bot.py
  2. import os
  3. import panel as pn
  4. from langchain.chat_models import ChatOpenAI
  5. from langchain.chains import ConversationChain
  6. from langchain.memory import ConversationBufferMemory
  7. pn.extension()
  8. #这里使用openai的api_key
  9. os.environ["OPENAI_API_KEY"] = "your_openai_api_key"
  10. async def callback(contents: str, user: str, instance: pn.chat.ChatInterface):
  11. await chain.apredict(input=contents)
  12. chat_interface = pn.chat.ChatInterface(callback=callback,
  13. callback_user="ChatGPT")
  14. callback_handler = pn.chat.langchain.PanelCallbackHandler(chat_interface)
  15. llm = ChatOpenAI(streaming=True, callbacks=[callback_handler])
  16. memory = ConversationBufferMemory()
  17. chain = ConversationChain(llm=llm, memory=memory)
  18. chat_interface.send(
  19. "你好,我是Langchain的ChatGPT机器人,欢迎向我提问!",
  20. user="System", respond=False
  21. )
  22. chat_interface.servable()

四、执行聊天机器人程序

我们只需在命令行窗口中执行其中任意一个机器人程序即可:

  1. panel serve chatgpt_bot.py
  2. panel serve gemini_bot.py
  3. panel serve langchain_bot.py

 

五、聊天效果

下面我们在浏览器中访问机器人的地址,分别访问ChatGPT,Gemini,Langchain的机器人:

Chatgpt的聊天机器人:

 Gemini的聊天机器人:

langchain的聊天机器人:

总结

Panel是一个开源的Python库,它可以让你用Python轻松地构建强大的工具、其中包括聊天机器人程序,今天我们使用panel快速开发了ChatGPT,Gemini,Langchain的聊天机器人应用。通过使用使用panel库,我们可以开发出功能强大界面美观的web机器人程序。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/1007522
推荐阅读
相关标签
  

闽ICP备14008679号