标签 大模型应用 下的文章

先看效果

系统架构组件

  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 状态、整合和分析云资源数据,帮助企业做出更高效的决策和管理。

让查数据这件事,不再是高高在上、遥不可及的技能,而是人人都能玩得转,妙趣横生的小技巧。比如“我的店上周赚了多少钱?哪个商品即将售罄?这个月卖的最多的商品是啥?”,下一秒,答案就像变魔术一样蹦出来。直接看效果

流程如下,

  • 前端使用gradio,采集麦克风声音
  • 后端收到声音,使用openai的speech-to-text
  • 文字通过dbgpt(链接各种自定义模型),转换为sql进行数据库查询
  • 返回对应数据

关键代码

- 阅读剩余部分 -

需求如下,产品团队高频要求翻译团队给出符合标准的翻译件,比如翻译产品文档,其中又有大量的术语,比如3D结构光、扫码头、主屏、客显屏、立式等(在公司内有统一的标准叫法),使用市面通用的翻译产品需要自己修改。看效果
翻译效果.jpg

原理如图
Retrieval.png

openai负责文档Retrieval,flowise负责功能补充,同时做了一次封装,gradio负责提供展示页面,方便用户交互

gradio_run.py

import gradio as gr
import requests
import json

def call_api(question):
    url = "https://xxxx.com/api/v1/prediction/asdasce1-5a7b-4d9e-9ed6-21a9aaaab2"
    headers = {"Content-Type": "application/json"}
    data = {"question": question}
    response = requests.post(url, headers=headers, data=json.dumps(data))
    return response.json().get("text", "No response text found.")

iface = gr.Interface(
    fn=call_api,
    inputs="text",
    outputs="text",
)

iface.launch()

产品名: No English - 不学英语 https://chat.openai.com/g/g-kkrKOWa1E-no-english

产品概览: No English - 您的个人化英语学习伙伴

产品定位:
在语言学习的长河中,No English 站在了技术与教育的交汇点,提供了一个创新的、用户友好的英语学习解决方案。我们的平台运用最新的人工智能技术,致力于提升英语学习效率,同时保持学习过程的趣味性和参与度。

核心功能:

  1. 每日单词学习: 我们的系统每天精选实用词汇,配以例句和上下文,确保用户不仅记住单词,而且理解其应用。
  2. 定制化复习计划: 基于先进的记忆算法,No English 会提供个性化的复习计划,帮助用户巩固记忆,减少遗忘。
  3. 每日英语句型: 别名:"每天学点装比词汇😄 ",从日常对话到商务沟通,我们提供广泛的句型训练,以强化用户的实际应用能力。
  4. 学习动力激励: 别名:“今天踏马不想学了😕”,针对学习疲劳的用户,No English 提供及时的正能量和学习建议,激发学习激情。

知识资源库:
No English 配备了一系列的英语学习文件,涵盖商务英语和各类英语测试标准,如TEM-8、CET-4和CET-6,可供用户根据个人需要下载并学习。

技术能力:

  • 网页浏览: 无缝接入互联网资源,支持用户在学习中实时查询和获取信息。
  • DALL·E图像生成: 利用尖端的图像生成技术,为学习内容添加视觉元素,提高记忆点。
  • 代码解释器: 高级代码解释功能,为用户提供编程学习中的实时反馈。

用户动作与互动:
用户询问当日新闻时,会从指定接口请求,本app使用京东的汇聚新闻接口。

使用推荐:
No English 针对希望在移动设备上学习的用户进行了优化设计,特别推荐使用手机应用来体验我们的语音互动特性,这能够为用户提供更加沉浸式的学习环境。 手机端前两天还支持,现在已经不行了

app.jpg
app2.jpg