DuckDuckGo LangChain 机器人#

这是一个示例聊天机器人,展示了一个 LangChain 代理,该代理使用对话历史记录和 DuckDuckGo 工具来回答问题。它首先根据对话历史记录重新措辞问题,将重新措辞的问题提交给 DuckDuckGo,并根据 DuckDuckGo 输出生成最终答案。它依赖于一个自定义插件端点,该端点从代理流式传输响应。它使用 OpenAI 聊天模型进行重新措辞和最终响应形成。

DuckDuckGo LangChain 机器人展示了以下 ACE Agent 功能

  • 将 LangChain 代理与 ACE Agent 集成

  • 在代理中处理对话历史记录

  • 在插件服务器中安装自定义依赖项

  • 插件服务器架构

基于 Docker 的机器人部署

  1. 在启动机器人之前,使用您的 OpenAI API 密钥设置 OPENAI_API_KEY 环境变量。

    export OPENAI_API_KEY=...
    
  2. 将需求从 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' 的导入错误

  1. 准备 Docker Compose 命令的环境。

    export BOT_PATH=./samples/ddg_langchain_bot/
    source deploy/docker/docker_init.sh
    
  2. 对于基于插件服务器架构的机器人,我们需要为 Chat Controller 微服务使用 speech_lite 管线配置。更新 deploy/docker/docker_init.sh 中的 PIPELINE 变量,或通过手动设置 PIPELINE 环境变量来覆盖它。

    export PIPELINE=speech_lite
    
  3. 部署语音模型。

    docker compose -f deploy/docker/docker-compose.yml up model-utils-speech
    
  4. 部署 ACE Agent 微服务。部署 Chat Controller、Chat Engine、插件服务器和 NLP 服务器微服务。

    docker compose -f deploy/docker/docker-compose.yml up speech-bot -d --build
    
  5. 等待几分钟,让所有服务准备就绪,您可以检查各个微服务的 Docker 日志以进行确认。您将在 Chat Controller 容器的 Docker 日志中看到日志打印 Server listening on 0.0.0.0:50055

  6. 使用 URL http://<工作站 IP>:7006/ 与机器人进行交互。为了访问浏览器上的麦克风,我们需要通过添加 SSL 验证将 http 转换为 https 端点,或者更新您的 chrome://flags/edge://flags/ 以允许 http://<工作站 IP>:7006 作为安全端点。

DuckDuckGo LangChain Bot