赞
踩
大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容
从0起步,扬帆起航。
什么是Agent?
Agent的是能够在一定环境中自主运作并完成特定任务的程序或者系统。
Agent具有以下特点:
在人工智能领域,Agent可以是简单的,如一个根据预定规则做出决策的软件程序;也可以是复杂的,如采用机器学习算法,能够从数据中学习并不断优化自己行为的智能体。
通俗来讲,我将Agent特征总结如下:
系列文章:https://blog.csdn.net/qq_43128256/article/details/139652995中提到,智能体开发得两种模式,即Agent和工作流。
其中:
一般Agent实现与工作流相比,省去了对数据、模型、工具、逻辑判别等步骤的次序设计规划,这是由于应用开发框架已经于底层设计了一套利用大模型自身能力对工具、流程进行规划的机制。
具体机制可参考下图:
分割线上侧得黑色框图表示agent开发时对工具组得自定义、工具描述、工具实现;下侧得红色框图表示了大模型自身能力对工具、流程进行规划的机制原理,通俗地讲就是通过prompt、脚本实现了计划设定、终止条件设定、工具调用条件、内容生成等功能。
显而易见的。
一般Agent构建模式
:优势在于搭建过程的高效性,开发者仅需要输入大致主题方向,平台就可以根据主题自动生成一套全面且详尽的人物设定和行为Prompt,极大地提升开发的速度和便捷性。不足之处在于对模型能力依赖较强、难以应对逻辑复杂且对稳定性有较高要求的任务流程。
工作流模式
:
优势在于能够设计出非常复杂且庞大的工作流程,利用意图跳转、条件分支(if/else逻辑)、循环等逻辑结构,配合模型、工具、数据,可以构建出企业内部非常复杂且精细的业务流程。缺陷是上手成本较高,开发时间较长。
可见一般Agent方式更符合我们对AGI通用人工智能得想象。这可比一般的AI高级多了。AGI的目标是创造一个能像人类一样思考、学习、执行多种任务的系统。本文以text2sql应用场景为例,使用大模型和Dify开发平台创造一个AGI!
tool.py
from fastapi import FastAPI, HTTPException, Depends
import mysql.connector
from mysql.connector import Error
import mysql.connector
import pandas as pd
from typing import Dict, List, Tuple, Optional
from pydantic import BaseModel, Field
from fastapi import Depends, HTTPException
from sql_database import SQLDatabase
app = FastAPI()
# 依赖项函数,用于创建数据库连接
def get_mysql_connection(host: str, user: str, password: str, db: str):
try:
# 尝试连接到 MySQL 数据库
mysql_uri = f'mysql+pymysql://{user}:{password}@{host}:3306/{db}'
db = SQLDatabase.from_uri(mysql_uri)
return db
except Error as e:
raise HTTPException(status_code=400, detail=str(e))
class TableInfo(BaseModel):
table_name: str = Field(..., title="Table Name", description="Name of the table.")
columns: List[Tuple[str, str]] = Field(..., title="Columns", description="List of columns with their types.")
sample_data: Optional[List[Tuple]] = Field(None, title="Sample Data", description="First three rows of table data.")
@app.get("/get-schema/")
def get_schema(db: str, connection: mysql.connector.MySQLConnection = Depends(get_mysql_connection)):
return {"schema":connection.get_table_info()}
@app.post("/execute-query/")
def execute_query(query: str, connection: mysql.connector.MySQLConnection = Depends(get_mysql_connection)):
try:
result = connection.run(query)
except:
result = '查询失败,请检查输入的sql语句是否正确'
return result
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
该文件通过启动API得形式提供可用于Dify使用的tool,定义一个数据库table_info得获取工具,一个SQL语句的执行工具。
进入Dify Agent页面配置工具和LLM
Prompt如下:
你是一位MySQL专家。
你可以协助用户完成SQL查询。
你总是按照如下流程执行查询:
1. 解读用户问题,根据问题类型调用get_schema获取相关库表Schema。
2. 根据获取的Schema,生成查询语句,优先使用like匹配地区、供电所、变电站、线路名称等,调用execute_query执行查询
可用库表如下
host=172.20.182.22
user=root
password=970712
db_name 需要你根据任务描述从下述库中任选一项
mysql:可以完成任意有关mysql数据的查询。
wqx:可以完成任意有关微气象数据的查询。
其中wqx、mysql是本地数据库的名字。
配置本地数据库权限:
net start MySQL80
GRANT ALL ON *.* TO 'super'@'172.20.32.127';
GRANT ALL ON *.* TO 'root'@'172.20.32.127';
其中172.20.32.127为dify应用所在的服务器IP。
可见,只提供数据库table_info得获取工具,一个SQL语句的执行工具,让大模型自身设计调配逻辑、工作流程,并让其根据需求自身生成SQL语句,实现了一定程度上的AGI。
这可能是很接近大家理想中的智能体吧!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。