当前位置: 首页 > news >正文

【Langchain系列五】DbGPT——Langchain+PG构建结构化数据库智能问答系统

1. 官方资料

  • 构建一个基于SQL数据的问答系统
  • 构建基于SQL数据的问答系统

2. 安装依赖

pip install langchain langchain_community pyjwt langgraph psycopg2

3. 完整代码

import os
import re
import time
from operator import itemgetterfrom langchain.chains.sql_database.query import create_sql_query_chain
from langchain_community.agent_toolkits import SQLDatabaseToolkit
from langchain_community.chat_models.zhipuai import ChatZhipuAI
from langchain_community.tools import QuerySQLDataBaseTool
from langchain_community.utilities import SQLDatabase
from langchain_core.messages import AIMessage, SystemMessage, HumanMessage
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import PromptTemplate, FewShotPromptTemplate, ChatPromptTemplate, MessagesPlaceholder
from langchain_core.runnables import RunnablePassthrough
from langchain_ollama import ChatOllama
from langgraph.prebuilt import create_react_agent# 设置OpenAI API密钥(GLM-4-Flash是免费模型,其它模型会消耗token,智谱的是目前免费模型最好的)
os.environ["ZHIPUAI_API_KEY"] = "你的key"
# llm = ChatZhipuAI(model="GLM-4-Flash", temperature=0.5)
# 本地模型也可以,但是glm4(9b)的效果明显优于qwen2.5:7b,和线上GLM-4-Flash的差不多
# llm=ChatOllama(base_url="http://localhost:11434", model="qwen2.5:7b", temperature=0.5)
llm = ChatOllama(base_url="http://localhost:11434", model="glm4:latest", temperature=0.5)
# qwen 效果有点差,罗里吧嗦还不对
# os.environ["DASHSCOPE_API_KEY"] = "密钥"
# llm = ChatTongyi(model="qwen-turbo", verbose=True)
# 讯飞星火(貌似不支持数据库的智能问答,会报错找不到model kwords
# llm = ChatSparkLLM(spark_app_id='应用id',spark_api_key='应用key',spark_api_secret='应用密钥',spark_llm_domain='generalv3.5')ai_db = SQLDatabase.from_uri("postgresql://postgres:123456@localhost:5433/ai_data",include_tables=['engineering_defect_detail'])def query_with_agent(q: str):"""基于代理的agent+提示词的查询优化(给定提示词后,可以解决枚举问题,但是给出的答案不是基于sql真实执行的结果):return:"""prompt = '''Given an input question, first create a syntactically correct {dialect} query to run, then look at the results of the query and return the answer.Use the following format strictly:Question: "Question here"SQLQuery: "SQL Query to run"SQLResult: "The actual result after executing the SQLQuery in the database"Answer: "Final answer here"Only use the following tables:['engineering_defect_detail(pk_defect_id, defect_component_id (部件), defect_component_type_id (部件种类), defect_position_id (部位), defect_description_id (缺陷描述), message (缺陷描述), detail (详情), levl ('1'一般,'2'严重,'3'危急), type ('0'可见光,'1'红外线), tower_name (杆塔名称), contri_company_name (出资单位名称), property_company_name (资产单位名称), maintain_company_name (运维单位名称), start_tower_no (起始杆号), end_tower_code (终止杆号), search_defect_name (查缺发现人), search_defect_num (查缺发现人人资编码), polling_time (巡检时间), sortie_num (架次信息), aircrew_name (机组名称), plan_name (归属方案名称), cruise_name (航检员名称), cruise_number (航检员编号), task_type (任务类型), line_iden (线路唯一标识), line_name (线路名称), task_year (任务年度), voltage_level (电压等级), electricty_type (交流、直流), single_double (同塔双回), sortie_position (架次位置), defect_check_person (视频查缺人员), defect_check_time (视频查缺时间), quality_check_person (质检人员), quality_check_time (质检时间), visible_operator_id (可见光操作员), infrared_operator_id (红外操作员), laser_operator_id (激光操作员), visible_operator_name (可见光操作员名称), infrared_operator_name (红外操作员名称), laser_operator_name (激光操作员名称), patrol_index (巡视轮次), down_base_dist (下基档距), elevation (高程), longtitude (经度), latitude (纬度), crm_iden (crm唯一标识), business_tag (业务标签(1:年度任务、2:三项专跨京广、3:三项专跨京沪)), defect_type (缺陷类型 0 普通(一次查缺) 1抽检(二次查缺))), and index keys: idx_polling_time(`polling_time`) , idx_air
http://www.lryc.cn/news/624778.html

相关文章:

  • MongoDB新手教学
  • Flutter 多功能列表项:图标、文字与Switch组合
  • 在阿里云 CentOS Stream 9 64位 UEFI 版上离线安装 Docker Compose
  • 智能人形机器人:知识驱动的工业生产力革新
  • 神经网络显存占用分析:从原理到优化的实战指南
  • 实战架构思考及实战问题:Docker+‌Jenkins 自动化部署
  • 【论文阅读】-《GeoDA: a geometric framework for black-box adversarial attacks》
  • 动态规划:入门思考篇
  • 01.Linux小技巧
  • 【Python语法基础学习笔记】条件表达式和逻辑表达式
  • python遇到异常流程
  • 【verge3d】如何在项目里调用接口
  • Python函数:装饰器
  • Kafka 零拷贝(Zero-Copy)技术详解
  • C++面试中的手写快速排序:从基础到最优的完整思考过程
  • IEC EN 62040 不间断电源系统(UPS)安全要求标准
  • 【音视频】芯片、方案、市场信息收集
  • 恒创科技:日本服务器 ping 不通?从排查到解决的实用指南
  • 政策技术双轮驱动智慧灯杆市场扩容,塔能科技破解行业痛点
  • 【轨物交流】轨物科技与华为鲲鹏生态深度合作 光伏清洁机器人解决方案获技术认证!
  • 微算法科技(NASDAQ: MLGO)研究分片技术:重塑区块链可扩展性新范式
  • 【P38 6】OpenCV Python——图片的运算(算术运算、逻辑运算)加法add、subtract减法、乘法multiply、除法divide
  • Maven resources资源配置详解
  • 深度研究系统、方法与应用的综述
  • kubeadm方式部署k8s集群
  • zsh 使用笔记 命令行智能提示 bash智能
  • 视频因为264问题无法网页播放,解决方案之一:转化视频
  • 【matlab】考虑源荷不平衡的微电网鲁棒定价研究
  • 第7节 神经网络
  • grep命令要点、详解和示例