2024年9月

先看效果

系统架构组件

  1. Streamlit 界面

    • 侧边栏和输入区域:提供用户界面,用于输入数据(如 Azure 端点)并进行配置。
    • 聊天输入和输出区域:主要区域,用户在此与聊天助手交互并查看结果。
  2. LLM(大型语言模型)配置设置

    • OpenAI 配置:配置用于使用 OpenAI 模型(如 gpt-4o-2024-08-06)。
    • 本地 LLM 配置:本地 LLM 模型(如 ollama/llama3:latest)的配置。
  3. 助手代理(AssistantAgent)和用户代理(UserProxyAgent)

    • TrackableAssistantAgent:继承自 AssistantAgent,负责与用户输入进行处理和响应,同时集成在 Streamlit 中以显示聊天消息。
    • TrackableUserProxyAgent:继承自 UserProxyAgent,用于接收用户输入,处理用户命令,并在助手代理与用户之间进行代理交互。
  4. 实用工具函数

    • get_url_info_from_kong:从 Kong API 网关中查询 URL 的路由、服务和上游配置的信息,并返回格式化结果。
    • dns_record_status:检查给定 URL 的 DNS 记录状态。
    • query_from_cmdb:从 CMDB(配置管理数据库)中检索特定云服务提供商(如阿里云、AWS 等)的服务器、数据库和中间件实例的数量。
  5. 异步聊天系统

    • 使用异步事件循环(asyncio),用户代理(User Proxy Agent)可以异步与助手代理(Assistant Agent)进行对话,提供更高效的交互体验。

架构图

+---------------------------------------------------------------+
|                      Streamlit Interface                      |
|---------------------------------------------------------------|
| +-----------------------------------------------------------+ |
| |  Sidebar (Azure Endpoint Config, etc.)                    | |
| +-----------------------------------------------------------+ |
|                                                               |
| +-----------------------------------------------------------+ |
| |                  Chat Input / Output Area                 | |
| |                                                           | |
| |  User Input --> UserProxyAgent --> AssistantAgent         | |
| |                                                           | |
| |  AssistantAgent --> UserProxyAgent --> Output Display     | |
| +-----------------------------------------------------------+ |
+---------------------------------------------------------------+

+--------------------+               +--------------------+
| LLM Configurations |               |   Utility Functions|
|--------------------|               |--------------------|
| - OpenAI (GPT-4)   |               | - get_url_info_from|
| - Local LLM (LLaMA)|               |   _kong()          |
+--------------------+               |   (Interacts with  |
                                     |    Kong API Gateway)|
                                     | - dns_record_status|
                                     |   (Checks DNS)     |
                                     | - query_from_cmdb  |
                                     |   (Interacts with  |
                                     |    CMDB Database)  |
                                     +--------------------+

   +-----------------+               +-------------------+
   | AssistantAgent  | <--- asyncio ->| UserProxyAgent    |
   | (Handles LLM    |               | (Manages User     |
   |  Requests)      |               |  Input/Commands)  |
   +-----------------+               +-------------------+
        ^    |                              ^    |
        |    |                              |    |
        |    v                              |    v
+----------------+                     +-------------------+
|   LLM Config   |                     |  Utility Functions|
|  Setup (OpenAI)|                     | (Kong, DNS, CMDB) |
+----------------+                     +-------------------+

                     +----------------+
                     |   Data Flow    |
                     |----------------|
                     |  - User Input  |
                     |  - Assistant   |
                     |  - ProxyAgent  |
                     |  - Utility Func|
                     +----------------+

架构图描述

  1. 用户输入(通过 Streamlit)
    用户通过 Streamlit 界面输入聊天内容或命令。
  2. 助手代理和用户代理交互
    用户代理接收用户输入,解析并处理命令,然后与助手代理交互。助手代理根据注册的工具函数或LLM配置进行响应。
  3. 工具函数交互
    当助手代理或用户代理调用工具函数时,这些函数将与 Kong API 网关、DNS 解析服务或 CMDB 模拟数据进行交互。
  4. 结果显示
    通过 Streamlit 界面将助手代理和用户代理的响应结果显示给用户。

核心优势

  1. 超越简单的 RAG 和提示词工程

    • 传统的 RAG 方法主要依赖于检索和生成的结合,通过从知识库中检索相关信息并用语言模型生成答案。然而,这种方法局限于信息查询和简单的问答系统,无法处理更复杂的任务。
    • 提示词工程则是通过精细设计提示词来引导语言模型生成特定输出,依然依赖于语言模型本身的生成能力,不能主动与外部系统进行交互或执行特定操作。
  2. 使用 Function Call 完成真实世界的任务

    • 本系统通过引入 Function Call 技术,赋予助手代理(Assistant Agent)和用户代理(User Proxy Agent)调用实际功能的能力。这些功能可以执行复杂的任务,如查询 Kong API 网关中的服务配置、检查 DNS 记录状态、从 CMDB 检索云资源信息等。
    • 通过注册和调用实际的 Python 函数,系统能够与外部 API、数据库和服务进行交互,执行逻辑操作和数据处理。这种能力使得系统不仅限于简单的对话和问答,更能够执行真实世界中的操作任务。
  3. 集成异步交互和高效任务处理

    • 使用异步框架(如 asyncio)实现用户代理和助手代理之间的异步通信,大幅提升了任务处理的效率和响应速度。这样的设计确保了系统能够并发处理多个任务,而不阻塞用户输入和系统响应。
    • 异步处理机制也增强了系统的稳定性和扩展性,使其能够处理更大规模的请求和更复杂的任务逻辑。
  4. 技术含量高,解决复杂场景问题

    • 系统架构充分考虑了实际应用场景中的复杂性,通过模块化设计,支持各种工具函数的集成和扩展,能够适应不同的企业和业务需求。
    • 例如,get_url_info_from_kong 函数能够通过调用 Kong API,获取详细的路由、服务和插件信息,并对这些数据进行格式化处理和展示;query_from_cmdb 函数能够从 CMDB 中动态检索并整合不同云服务商的资源信息。这样的功能大大提升了系统的实际应用价值。
  5. 提升企业运营效率与智能化水平

    • 通过整合各种实用功能和自动化操作,系统能够显著提升企业运维和运营效率。例如,它可以自动查询和管理 API 网关配置、检查网络 DNS 状态、整合和分析云资源数据,帮助企业做出更高效的决策和管理。