构建AI智能体:四十三、智能数据分析机器人:基于Qwen-Agent与Text2SQL的门票分析方案

简介: 摘要:本文介绍了一个基于Qwen-Agent和Text2SQL技术的智能门票数据分析系统。该系统通过自然语言交互降低技术门槛,使业务人员可直接查询和分析数据。系统采用分层架构设计,包含用户交互层、智能代理层、工具执行层和数据服务层,核心功能包括自然语言理解、SQL生成、数据查询和可视化展示。文章详细阐述了系统流程、核心代码实现及优化策略,展示了如何通过大语言模型实现企业级数据分析应用的智能化转型,有效解决了传统数据分析流程中响应慢、沟通成本高等痛点。

 一、系统概述

       随着企业数字化进程的加速,数据已成为决策的重要依据,但传统数据分析流程存在诸多痛点。业务人员往往需要依赖专业数据团队进行SQL查询和报表制作,这个过程耗时耗力且响应迟缓,沟通成本高、技术门槛也高。特别是在门票销售这样的实时性要求较高的行业,快速获取数据洞察对业务决策至关重要。

       结合昨天我们刚讲过的Qwen-Agent和前期讲过的Text2SQL技术以及Gradio前端展示技术,构建了一个智能化的门票数据分析平台,让业务人员能够通过自然语言直接进行数据查询和分析,大幅降低了技术门槛,提高了决策效率。旨在通过自然语言交互实现数据库查询和可视化分析。

43.2-票助手分析2.jpg

       系统结合了大语言模型、数据库操作和数据可视化技术,为用户提供直观的门票销售数据分析体验。该系统不仅解决了传统数据分析流程的痛点,更为企业级智能数据分析应用提供了新的思路和方案。

系统采用分层架构设计,确保各模块之间的松耦合和高内聚。整体架构包含四个核心层次:

  • 用户交互层:基于Gradio构建的Web界面,提供直观的聊天式交互体验。该层负责捕获用户输入、渲染查询结果,并管理用户会话状态。
  • 智能代理层:系统的"大脑",基于Qwen-Agent框架实现。该层负责自然语言理解、对话管理、工具调用决策和结果整合。
  • 工具执行层:模块化的工具系统,核心包括SQL执行工具和可视化生成工具。该层负责具体的业务逻辑执行和数据处理。
  • 数据服务层:包括MySQL数据库和文件系统,为系统提供数据存储和持久化支持。

43.3-门票助手.gif image.gif

二、核心组件

1. Qwen-Agent智能代理

  • 上下文感知:能够理解多轮对话的上下文关系
  • 意图识别:准确识别用户的查询意图和业务需求
  • 工具协调:智能决策何时以及如何调用工具函数
  • 结果整合:将工具执行结果整合成用户友好的格式

2. Text2SQL转换引擎

  • 自然语言理解:解析用户查询的语义结构,识别意图、实体和条件
  • 模式映射:将自然语言中的概念映射到数据库中的表、列和关系
  • SQL生成:构建符合目标数据库方言的正确语法结构
  • 查询优化:确保生成的SQL在执行时具有良好性能

3. Gradio前端展示

  • 简单易用:界面简单、设计友好,几行代码即可创建功能完整的Web界面
  • 多样化组件:支持文本、图像、音频、视频等多种输入输出格式
  • 即时分享:一键生成可公开访问的链接
  • 框架无关:可与TensorFlow、PyTorch、Scikit-learn等任何机器学习框架配合使用
  • 高度可定制:提供灵活的自定义选项满足不同需求和应用场景

三、系统流程

1. 流程图

43.4-票助手分析流程.png

2. 流程分解

2.1 基础流程

第一步:用户输入与消息传递 (步骤1-2)

  • 用户输入:用户在Web界面输入自然语言问题,如"查询2023年门票销售情况"
  • 消息捕获:WebUI组件捕获用户输入,格式化为标准消息格式
  • 会话管理:根据对话历史生成唯一的session_id,确保多用户隔离

第二步:智能分析与SQL生成 (步骤3-4)

  • 意图理解:Agent结合system_prompt中的业务知识,理解用户查询意图
  • 上下文整合:如果有历史对话,会结合上下文进行更准确的理解
  • SQL生成:基于数据表结构和业务逻辑,生成符合规范的SQL查询语句
  • 工具调用决策:判断需要调用exc_sql工具执行数据查询

第三步:数据查询执行 (步骤5-7)

  • 数据库连接:从连接池获取MySQL数据库连接,设置超时和字符集
  • SQL执行:使用pandas的read_sql方法执行查询,返回DataFrame
  • 结果验证:检查查询结果的有效性,处理空结果或异常情况

第四步:可视化与结果组装 (步骤8-10)

1. 智能可视化:

  • 自动分析数据类型(分类变量vs数值变量)
  • 根据数据特征选择图表类型(普通柱状图vs堆积柱状图)
  • 处理中文显示和格式美化
  • 文件保存:将生成的图表保存为PNG文件,使用时间戳确保文件名唯一

2. 结果组装:

  • 将DataFrame转换为Markdown表格格式
  • 生成图片的Markdown引用链接
  • 组合表格和图片为完整响应

第五步:结果返回与显示 (步骤11-12)

  • 结果传递:工具结果逐级返回给Agent和WebUI
  • 界面渲染:WebUI将Markdown内容渲染为美观的显示格式
  • 用户交互:用户可以看到结构化数据和可视化图表,可进行后续交互

2.2 自然语言到SQL的转换流程

  • 意图解析:理解用户查询的业务背景和具体需求
  • 条件提取:识别时间范围、筛选条件、分组维度等关键要素
  • SQL构造:根据数据库schema构建符合语法的SQL语句
  • 优化验证:检查SQL的合理性和执行效率

2.3 Agent创建过程

  • 配置LLM参数:指定模型版本、超时设置、重试策略
  • 实例化Assistant:传入名称、描述、系统提示词等
  • 注册工具函数:将'exc_sql'工具绑定到Agent
  • 返回初始化完成的bot对象

系统运行界面:

43.5-门票助手2.gif

查询过程中生成的图示:

43.6-查询过程中生成的图示 bar_1758716094363.png

此处也可导入echarts的组件,达到动态炫酷的展示效果!

四、核心代码分解

1. Assistant智能代理

llm_cfg = {
        'model': 'qwen-turbo',
        'timeout': 30,
        'retry_count': 3,
    }
bot = Assistant(
    llm=llm_cfg,
    name='门票助手',
    description='门票查询与订单分析',
    system_message=system_prompt,
    function_list=['exc_sql'],
)

image.gif

  • 使用qwen-turbo模型作为语言理解核心
  • 通过system_prompt定义专业领域知识
  • 函数调用机制实现工具扩展

2. 系统提示词设计

system_prompt = """我是门票助手,以下是关于门票订单表相关的字段,我可能会编写对应的SQL,对数据进行查询
-- 门票订单表
CREATE TABLE tkt_orders (
    order_time DATETIME,             -- 订单日期
    ......
    quantity INT                     -- 商品数量
);
一日门票,对应多种SKU:
Universal Studios Beijing One-Day Dated Ticket-Standard
Universal Studios Beijing One-Day Dated Ticket-Child
Universal Studios Beijing One-Day Dated Ticket-Senior

image.gif

  • 设计原则:明确的角色定义、数据结构说明、SQL查询模式示例、输出格式规范
  • 领域专业化:系统提示词不仅定义了助手角色,更包含了详细的数据表结构说明和业务逻辑,使模型能够理解门票业务的特殊性。
  • 查询模式预置:通过提供常见的SQL查询模板,如一日门票、二日门票的统计方式,引导模型生成符合业务需求的查询语句。
  • 输出规范约束:明确要求原样输出工具返回内容,避免模型过度"聪明"地总结或简化,确保用户获得完整的数据信息。

3. SQLAlchemy引擎配置

engine = create_engine(
    f'mysql+mysqlconnector://root:Aa123456!@localhost:3306/{database}?charset=utf8mb4',
    connect_args={'connect_timeout': 10}, pool_size=10, max_overflow=20
)

image.gif

连接参数详解:

  • 连接字符串格式:数据库类型+驱动://用户名:密码@主机:端口/数据库名
  • 连接池配置:pool_size控制连接数,max_overflow控制超额连接
  • 字符集设置:utf8mb4支持完整Unicode字符
  • 并发支持:pool_size=10确保系统能同时处理多个查询请求
  • 弹性扩展:max_overflow=20在高峰期提供额外连接缓冲
  • 故障隔离:超时设置防止单次查询阻塞整个系统

4. 数据查询执行

df = pd.read_sql(sql_input, engine)

image.gif

  • 使用pandas的read_sql方法直接执行SQL
  • 自动将结果转换为DataFrame格式
  • 支持复杂的SQL查询语句

5. 可视化函数架构

def generate_chart_png(df_sql, save_path):
    # 数据类型识别与处理
    object_columns = df_sql.select_dtypes(include='O').columns.tolist()
    num_columns = df_sql.select_dtypes(exclude='O').columns.tolist()
    
    # 智能图表类型选择
    if len(object_columns) > 0:
        # 堆积柱状图逻辑
        pivot_df = df_sql.pivot_table(...)
    else:
        # 普通柱状图逻辑
        bottom = np.zeros(len(df_sql))

image.gif

可视化策略:

43.7-可视化策略 ScreenShot_2025-10-09_141119_007.png

  • 自动识别数据类型:系统能够区分分类变量和数值变量,这是选择合适图表类型的基础
  • 智能图表选择:根据数据特征选择最佳可视化方式
  • 当数据包含多个分类维度时,自动选择堆积柱状图展示复合关系
  • 单一维度数据使用普通柱状图,保持图表简洁性
  • 透视表自动生成:通过pivot_table实现数据重组,满足复杂多维度的可视化需求

6. 中文显示解决方案

plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'SimSun', 'Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False

image.gif

  • 设置中文字体优先级列表
  • 解决负号显示异常问题
  • 确保图表中文字符正常渲染

7. 函数的调用机制

functions_desc = [
    {
        "name": "exc_sql",
        "description": "对于生成的SQL,进行SQL查询",
        # 参数定义确保SQL语句的正确传递
    }
]

image.gif

  • 能力边界清晰:语言模型负责理解意图和生成SQL,专业工具负责执行和可视化
  • 安全性保障:通过参数校验确保输入的SQL符合预期格式
  • 可扩展性强:新的分析功能可以通过添加工具函数快速集成

8. @register_tool装饰器

@register_tool('exc_sql')
class ExcSQLTool(BaseTool):
    description = '对于生成的SQL,进行SQL查询,并自动可视化'
    parameters = [{'name': 'sql_input', 'type': 'string', 'required': True}]

image.gif

  • 使用装饰器注册工具名称
  • 继承BaseTool基类
  • 定义工具描述和参数规范

9. 工具调用接口

def call(self, params: str, **kwargs) -> str:
    args = json.loads(params)
    sql_input = args['sql_input']

image.gif

  • JSON格式参数解析
  • 异常处理与错误返回
  • 统一的返回格式

10. 使用建议与默认提示

chatbot_config = {
    'prompt.suggestions': [
        '2023年4、5、6月一日门票,二日门票的销量多少?帮我按照周进行统计',
        '2023年7月的不同省份的入园人数统计',
        '帮我查看2023年10月1-7日销售渠道订单金额排名',
    ]
}

image.gif

  • 预置典型查询问题
  • 降低用户学习成本
  • 引导用户使用模式

11. 异常处理机制

try:
    df = pd.read_sql(sql_input, engine)
    # 正常处理逻辑
except Exception as e:
    return f"SQL执行或可视化出错: {str(e)}"

image.gif

  • 数据库连接异常捕获
  • SQL执行错误处理
  • 可视化过程异常管理

12. 性能优化

dashscope.timeout = 30  # API调用超时设置
connect_args={'connect_timeout': 10}  # 数据库连接超时
pool_size=10, max_overflow=20  # 连接池配置

image.gif

  • 合理的超时设置
  • 数据库连接池管理
  • 资源释放与清理

五:优化与不足

  • 针对SQL生成可能出现的错误,系统建立了多级校验机制。包括语法检查、执行验证和错误反馈循环,确保生成SQL的准确性和安全性。
  • 通过异步处理、连接池管理和缓存策略优化系统性能。数据库查询使用连接池复用连接,图表生成结果进行缓存,避免重复计算。
  • 采用会话隔离和资源池化技术支持多用户并发访问。每个会话有独立的数据空间,关键资源通过池化管理,确保系统稳定运行。

六、总结

       本项目成功构建了一个基于Qwen-Agent和Text2SQL的智能门票数据分析系统。通过自然语言交互大幅降低了数据分析的技术门槛,提高了业务决策效率,自动化报表生成,减少人工数据处理工作量,让非技术人员也能深度参与数据分析过程。  

       系统展示了大语言模型在企业级应用中的巨大潜力。基于提示工程的Text2SQL方案为类似项目提供了新的技术思路,避免了专门模型训练的复杂性。下一步将扩展系统分析能力,支持预测分析和异常检测等高级功能。同时探索更多应用场景,将这一技术方案推广到其他行业领域。

附录:完整实例代码

import os
import asyncio
from typing import Optional
import dashscope
from qwen_agent.agents import Assistant
from qwen_agent.gui import WebUI
import pandas as pd
from sqlalchemy import create_engine
from qwen_agent.tools.base import BaseTool, register_tool
import matplotlib.pyplot as plt
import io
import base64
import time
import numpy as np
# 解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'SimSun', 'Arial Unicode MS']  # 优先使用的中文字体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题
# 定义资源文件根目录
ROOT_RESOURCE = os.path.join(os.path.dirname(__file__), 'resource')
# 配置 DashScope
dashscope.api_key = os.getenv('DASHSCOPE_API_KEY', '')  # 从环境变量获取 API Key
dashscope.timeout = 30  # 设置超时时间为 30 秒
# ====== 门票助手 system prompt 和函数描述 ======
system_prompt = """我是门票助手,以下是关于门票订单表相关的字段,我可能会编写对应的SQL,对数据进行查询
-- 门票订单表
CREATE TABLE tkt_orders (
    order_time DATETIME,             -- 订单日期
    account_id INT,                  -- 预定用户ID
    gov_id VARCHAR(18),              -- 商品使用人ID(身份证号)
    gender VARCHAR(10),              -- 使用人性别
    age INT,                         -- 年龄
    province VARCHAR(30),           -- 使用人省份
    SKU VARCHAR(100),                -- 商品SKU名
    product_serial_no VARCHAR(30),  -- 商品ID
    eco_main_order_id VARCHAR(20),  -- 订单ID
    sales_channel VARCHAR(20),      -- 销售渠道
    status VARCHAR(30),             -- 商品状态
    order_value DECIMAL(10,2),       -- 订单金额
    quantity INT                     -- 商品数量
);
一日门票,对应多种SKU:
Universal Studios Beijing One-Day Dated Ticket-Standard
Universal Studios Beijing One-Day Dated Ticket-Child
Universal Studios Beijing One-Day Dated Ticket-Senior
二日门票,对应多种SKU:
USB 1.5-Day Dated Ticket Standard
USB 1.5-Day Dated Ticket Discounted
一日门票、二日门票查询
SUM(CASE WHEN SKU LIKE 'Universal Studios Beijing One-Day%' THEN quantity ELSE 0 END) AS one_day_ticket_sales,
SUM(CASE WHEN SKU LIKE 'USB%' THEN quantity ELSE 0 END) AS two_day_ticket_sales
我将回答用户关于门票相关的问题
每当 exc_sql 工具返回 markdown 表格和图片时,你必须原样输出工具返回的全部内容(包括图片 markdown),不要只总结表格,也不要省略图片。这样用户才能直接看到表格和图片。
"""
functions_desc = [
    {
        "name": "exc_sql",
        "description": "对于生成的SQL,进行SQL查询",
        "parameters": {
            "type": "object",
            "properties": {
                "sql_input": {
                    "type": "string",
                    "description": "生成的SQL语句",
                }
            },
            "required": ["sql_input"],
        },
    },
]
# ====== 会话隔离 DataFrame 存储 ======
# 用于存储每个会话的 DataFrame,避免多用户数据串扰
_last_df_dict = {}
def get_session_id(kwargs):
    """根据 kwargs 获取当前会话的唯一 session_id,这里用 messages 的 id"""
    messages = kwargs.get('messages')
    if messages is not None:
        return id(messages)
    return None
# ====== exc_sql 工具类实现 ======
@register_tool('exc_sql')
class ExcSQLTool(BaseTool):
    """
    SQL查询工具,执行传入的SQL语句并返回结果,并自动进行可视化。
    """
    description = '对于生成的SQL,进行SQL查询,并自动可视化'
    parameters = [{
        'name': 'sql_input',
        'type': 'string',
        'description': '生成的SQL语句',
        'required': True
    }]
    def call(self, params: str, **kwargs) -> str:
        import json
        import matplotlib.pyplot as plt
        import io, os, time
        import numpy as np
        args = json.loads(params)
        sql_input = args['sql_input']
        database = args.get('database', 'world')
        engine = create_engine(
            f'mysql+mysqlconnector://root:Aa123456!@localhost:3306/{database}?charset=utf8mb4',
            connect_args={'connect_timeout': 10}, pool_size=10, max_overflow=20
        )
        try:
            df = pd.read_sql(sql_input, engine)
            md = df.head(10).to_markdown(index=False)
            # 自动创建目录
            save_dir = os.path.join(os.path.dirname(__file__), 'image_show')
            os.makedirs(save_dir, exist_ok=True)
            filename = f'bar_{int(time.time()*1000)}.png'
            save_path = os.path.join(save_dir, filename)
            # 生成图表
            generate_chart_png(df, save_path)
            img_path = os.path.join('image_show', filename)
            img_md = f'![柱状图]({img_path})'
            return f"{md}\n\n{img_md}"
        except Exception as e:
            return f"SQL执行或可视化出错: {str(e)}"
# ========== 通用可视化函数 ========== 
def generate_chart_png(df_sql, save_path):
    columns = df_sql.columns
    x = np.arange(len(df_sql))
    # 获取object类型
    object_columns = df_sql.select_dtypes(include='O').columns.tolist()
    if columns[0] in object_columns:
        object_columns.remove(columns[0])
    num_columns = df_sql.select_dtypes(exclude='O').columns.tolist()
    if len(object_columns) > 0:
        # 对数据进行透视,以便为每个日期和销售渠道创建堆积柱状图
        pivot_df = df_sql.pivot_table(index=columns[0], columns=object_columns, 
                                      values=num_columns, 
                                      fill_value=0)
        # 绘制堆积柱状图
        fig, ax = plt.subplots(figsize=(10, 6))
        # 为每个销售渠道和票类型创建柱状图
        bottoms = None
        for col in pivot_df.columns:
            ax.bar(pivot_df.index, pivot_df[col], bottom=bottoms, label=str(col))
            if bottoms is None:
                bottoms = pivot_df[col].copy()
            else:
                bottoms += pivot_df[col]
    else:
        print('进入到else...')
        bottom = np.zeros(len(df_sql))
        for column in columns[1:]:
            plt.bar(x, df_sql[column], bottom=bottom, label=column)
            bottom += df_sql[column]
        plt.xticks(x, df_sql[columns[0]])
    plt.legend()
    plt.title("销售统计")
    plt.xlabel(columns[0])
    plt.ylabel("门票数量")
    plt.xticks(rotation=45)
    plt.tight_layout()
    plt.savefig(save_path)
    plt.close()
# ====== 初始化门票助手服务 ======
def init_agent_service():
    """初始化门票助手服务"""
    llm_cfg = {
        'model': 'qwen-turbo-2025-04-28',
        'timeout': 30,
        'retry_count': 3,
    }
    try:
        bot = Assistant(
            llm=llm_cfg,
            name='门票助手',
            description='门票查询与订单分析',
            system_message=system_prompt,
            function_list=['exc_sql'],  # 移除绘图工具
        )
        print("助手初始化成功!")
        return bot
    except Exception as e:
        print(f"助手初始化失败: {str(e)}")
        raise
def app_gui():
    """图形界面模式,提供 Web 图形界面"""
    try:
        print("正在启动 Web 界面...")
        # 初始化助手
        bot = init_agent_service()
        # 配置聊天界面,列举3个典型门票查询问题
        chatbot_config = {
            'prompt.suggestions': [
                '2023年4、5、6月一日门票,二日门票的销量多少?帮我按照周进行统计',
                '2023年7月的不同省份的入园人数统计',
                '帮我查看2023年10月1-7日销售渠道订单金额排名',
            ]
        }
        print("Web 界面准备就绪,正在启动服务...")
        # 启动 Web 界面
        WebUI(
            bot,
            chatbot_config=chatbot_config
        ).run()
    except Exception as e:
        print(f"启动 Web 界面失败: {str(e)}")
        print("请检查网络连接和 API Key 配置")
if __name__ == '__main__':
    # 运行模式选择
    app_gui()          # 图形界面模式(默认)

image.gif

数据库结构参考:

43.8-数据库结构参考.png

相关文章
|
7月前
|
人工智能 自然语言处理 API
构建AI智能体:四十二、使用 Qwen-Agent Assistant 调用高德 API 实现天气查询
本文介绍了如何将Qwen-Agent智能助手与高德天气API集成,构建一个能响应自然语言查询的天气服务系统。主要内容包括:高德天气API的注册、参数配置及数据解析方法;Qwen-Agent框架中Assistant类的核心功能和使用方式;通过FunctionCall和Assistant两种实现方式的对比;完整示例展示了从工具定义、API集成到交互界面开发的实现过程。该系统支持终端和Web两种交互模式,可扩展为智能客服、物联网控制等场景,为开发者提供了大模型与实际API服务结合的典型范例。
1172 7
|
7月前
|
机器学习/深度学习 人工智能 搜索推荐
构建AI智能体:六十、特征工程行业实践录:金融、电商、医疗的智能化转型
本文通过金融风控、电商推荐和医疗诊断三个行业案例,系统阐述了特征工程的实践价值与技术方法。在金融领域,通过构建稳定性评分等特征,将贷款审批坏账率从8.2%显著降低;电商行业通过实时兴趣向量等特征,使推荐点击率提升3倍;医疗领域则利用病变严重度评分等特征,将筛查效率提升5倍。研究揭示了特征工程作为连接业务需求与技术实现的关键桥梁,其核心在于将原始数据转化为机器可理解的业务语言。
563 3
|
8月前
|
机器学习/深度学习 人工智能 API
构建AI智能体:二十四、RAG的高效召回方法论:提升RAG系统召回率的三大策略实践
本文探讨了检索增强生成(RAG)系统中的高效召回技术。RAG系统通过检索相关文档增强大语言模型的回答质量,但性能受制于垃圾进,垃圾出原则。为提高召回效果,文章重点分析了三种方法:Small-to-Big通过大小文本块映射兼顾检索精度与上下文丰富度;索引扩展(如HyDE)利用大模型生成假设文档来优化检索;双向改写弥合用户查询与文档表述的差异。这些方法从不同角度解决了RAG系统中的语义鸿沟、词汇不匹配等核心问题,可单独或组合使用。高效召回技术能显著提升RAG系统的回答质量和效率。
1061 5
|
7月前
|
人工智能 缓存 自然语言处理
构建AI智能体:三十九、中文新闻智能分类:K-Means聚类与Qwen主题生成的融合应用
K-Means作为最经典和广泛使用的聚类算法,以其简单性和效率在数据科学中占据重要地位。尽管有其局限性,但通过合理的初始化方法、参数调优和与大模型的结合,K-Means仍然能够解决许多实际聚类问题。与大型语言模型的结合代表了现代AI应用的一个重要方向,其中K-Means负责高效处理和大规模模式识别,而大模型负责深度的语义理解和内容生成,二者优势互补,构建出更加智能和高效的AI系统。
457 12
|
8月前
|
数据采集 人工智能 缓存
构建AI智能体:十一、语义分析Gensim — 从文本处理到语义理解的奇妙之旅
Gensim是Python中强大的自然语言处理库,擅长从大量中文文本中自动提取主题、生成词向量并计算文档相似度。它支持LDA、Word2Vec等模型,结合jieba分词可有效实现文本预处理、主题建模与语义分析,适用于新闻分类、信息检索等任务,高效且易于扩展。
625 17
|
7月前
|
人工智能 自然语言处理 数据可视化
构建AI智能体:五十八、智能工作流引擎:基于LangGraph的模块化内容创作系统
本文介绍了一个基于LangGraph工作流引擎、Qwen大模型和Gradio界面的智能内容创作系统。该系统采用模块化设计,将内容创作过程分解为8个可配置节点(主题分析、大纲生成、内容创作等),通过工作流驱动实现从主题输入到完整内容(文字+配图)的全自动化生成。系统特点包括:1)灵活可配置的工作流模板;2)强类型状态管理确保数据安全;3)多重容错机制(重试/降级方案);4)实时可视化流程监控。该方案适用于营销、教育等多个场景,展示了现代AI系统中架构设计、工程实现与用户体验的有机结合。
943 3
|
8月前
|
SQL 自然语言处理 关系型数据库
构建AI智能体:二十九、Text2SQL:告别繁琐SQL!用大模型自助生成数据报表
Text2SQL技术通过自然语言处理将用户查询转换为SQL语句,解决企业数据查询效率低下的痛点。该技术包含语义理解、模式对齐、SQL生成和优化等核心处理过程,核心组件包括自然语言理解模块、Schema管理模块和SQL生成模块。文章介绍了闭源和开源模型的选择策略,并提供了基于Function Calling的Text2SQL实现示例,展示如何安全高效地将自然语言转换为数据库查询。
3899 4
|
7月前
|
人工智能 自然语言处理 安全
构建AI智能体:四十五、从专用插件到通用协议:MCP如何重新定义AI工具生态
MCP(模型上下文协议)是AI领域的标准化工具调用协议,相当于万能遥控器,让不同AI模型能通过统一接口使用各种外部工具。其核心架构采用客户端-服务器模式:AI客户端负责理解用户意图并整合结果,MCP服务器则专注于工具执行。相比厂商私有的FunctionCall,MCP具有开放标准、跨模型支持、动态发现等优势,能实现真正的"即插即用"。该协议解决了AI模型知识局限、无法执行动作等问题,使AI从"知识库"进化为能操作外部系统的智能助手,可应用于个人
972 7
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
构建AI智能体:十三、大数据下的“搭积木”:N-Gram 如何实现更智能的语义搜索
N-gram是一种基于上下文的统计语言模型,通过前N-1个词预测当前词的概率,广泛应用于文本生成、输入法预测、语音识别等领域,具有简单高效、可解释性强的优点,是自然语言处理的基础技术之一。
841 10
|
8月前
|
SQL 存储 自然语言处理
构建AI智能体:三十四、LangChain SQLDatabaseToolkit终极指南:架构、优势与最佳实践
SQLDatabaseToolkit 是 LangChain 框架中的一个核心组件,它不属于一个独立的软件,而是一个工具箱或工具集。它的核心目的是为大语言模型提供与 SQL 数据库进行交互的能力,将大模型的自然语言理解能力与数据库的精准数据存储和检索能力结合起来。它极大地降低了通过自然语言访问和操作 SQL 数据库的门槛,是构建基于 LLM 的数据驱动应用的关键组件之一。
1156 10

热门文章

最新文章