DuckDuckGo LangChain 机器人#
这是一个示例聊天机器人,展示了一个 LangChain 代理,该代理使用对话历史记录和 DuckDuckGo 工具来回答问题。它首先根据对话历史记录重新措辞问题,将重新措辞的问题提交给 DuckDuckGo,并根据 DuckDuckGo 输出生成最终答案。它依赖于一个自定义插件端点,该端点从代理流式传输响应。它使用 OpenAI 聊天模型进行重新措辞和最终响应形成。
DuckDuckGo LangChain 机器人展示了以下 ACE Agent 功能
将 LangChain 代理与 ACE Agent 集成
在代理中处理对话历史记录
在插件服务器中安装自定义依赖项
基于 Docker 的机器人部署
在启动机器人之前,使用您的 OpenAI API 密钥设置 OPENAI_API_KEY 环境变量。
export OPENAI_API_KEY=...
将需求从
ddg_langchain_bot/plugins/requirements_dev.txt
复制到deploy/docker/dockerfiles/plugin_server.Dockerfile
。############################## # Install custom dependencies ############################## RUN pip3 install \ langchain==0.1.1 \ langchain-community==0.0.13 \ langchain-core==0.1.12 \ duckduckgo-search==5.3.1b1
注意
如果您在插件服务器中看到崩溃或从 DuckDuckGo 获取响应时出现问题,请尝试使用更新版本的 duckduckgo-search
。
如果您不对 Dockerfile 进行更改,您将收到类似于 ModuleNotFoundError: No module named 'duckduckgo_search'
的导入错误
准备 Docker Compose 命令的环境。
export BOT_PATH=./samples/ddg_langchain_bot/ source deploy/docker/docker_init.sh
对于基于插件服务器架构的机器人,我们需要为 Chat Controller 微服务使用
speech_lite
管线配置。更新deploy/docker/docker_init.sh
中的PIPELINE
变量,或通过手动设置PIPELINE
环境变量来覆盖它。export PIPELINE=speech_lite
部署语音模型。
docker compose -f deploy/docker/docker-compose.yml up model-utils-speech
部署 ACE Agent 微服务。部署 Chat Controller、Chat Engine、插件服务器和 NLP 服务器微服务。
docker compose -f deploy/docker/docker-compose.yml up speech-bot -d --build
等待几分钟,让所有服务准备就绪,您可以检查各个微服务的 Docker 日志以进行确认。您将在 Chat Controller 容器的 Docker 日志中看到日志打印
Server listening on 0.0.0.0:50055
。使用 URL
http://<工作站 IP>:7006/
与机器人进行交互。为了访问浏览器上的麦克风,我们需要通过添加 SSL 验证将http
转换为https
端点,或者更新您的chrome://flags/
或edge://flags/
以允许http://<工作站 IP>:7006
作为安全端点。
