【Langchain系列五】DbGPT——Langchain+PG構建結構化數據庫智能問答系統

Langchain二次開發專欄

  • 【Langchain系列一】常用大模型的key獲取與連接方式
  • 【Langchain系列二】LangChain+Prompt +LLM智能問答入門
  • 【Langchain系列三】GraphGPT——LangChain+NebulaGraph+llm構建智能圖數據庫問答系統
  • 【Langchain系列四】RAG——基于非結構化數據庫的智能問答
  • 【Langchain系列五】DbGPT——Langchain+PG構建結構化數據庫智能問答系統
  • 【Langchain系列六】Langchain+Gradio界面化
  • 【Langchain系列七】Langchain+FastAPI(字符串輸出與OpenAI規范流式輸出)+FastGPT

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 (

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/96228.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/96228.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/96228.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

生信分析自學攻略 | R語言數據類型和數據結構

在前面兩篇文章中,我們已經成功搭建了R和RStudio這一強大的生信分析平臺。然而,工具再好,若不懂得如何“放置”和“理解”你的數據,一切都將寸步難行。今天,我們將學習R語言最重要的部分——數據類型(Data …

Python工程與模塊命名規范:構建可維護的大型項目架構

目錄 Python工程與模塊命名規范:構建可維護的大型項目架構 引言:命名的重要性 在軟件開發中,命名可能是最容易被忽視但卻是最重要的實踐之一。根據2023年對Python開源項目的分析,超過35%的維護問題與糟糕的命名約定直接相關。一個…

Props 與 State 類型定義

下面,我們來系統的梳理關于 TypeScript 集成:Props 與 State 類型定義 的基本知識點:一、TypeScript 在 React 中的核心價值 TypeScript 為 React 開發提供了強大的類型安全保證,特別是在定義組件 Props 和 State 時: …

[1Prompt1Story] 注意力機制增強 IPCA | 去噪神經網絡 UNet | U型架構分步去噪

第五章:注意力機制增強(IPCA) 歡迎回到1Prompt1Story🐻??? 在第四章中,我們掌握了**語義向量重加權(SVR)**技術,通過語義向量調節實現核心要素強化。 但當場景從"雪地嬉戲…

【P7071 [CSP-J2020] 優秀的拆分 - 洛谷 https://www.luogu.com.cn/problem/P7071】

題目 P7071 [CSP-J2020] 優秀的拆分 - 洛谷 https://www.luogu.com.cn/problem/P7071 代碼 #include <bits/stdc.h> using namespace std; const int N1e71; int d; vector<int> v; bool k[N]; bool fen(int x){if(x0)return 1;//能拆分完 for(int ix;i>x/…

從ioutil到os:Golang在線客服聊天系統文件讀取的遷移實踐

了解更多&#xff0c;搜索"程序員老狼"作為一名Golang開發者&#xff0c;我最近在維護一個客服系統時遇到了一個看似簡單卻值得深思的問題&#xff1a;如何將項目中遺留的ioutil.ReadFile調用遷移到現代的os.ReadFile。這看似只是一個簡單的函數替換&#xff0c;但背…

Python UI自動化測試Web frame及多窗口切換

這篇文章主要為大家介紹了Python UI自動化測試Web frame及多窗口切換&#xff0c;有需要的朋友可以借鑒參考下&#xff0c;希望能夠有所幫助&#xff0c;祝大家多多進步&#xff0c;早日升職加薪 一、什么是frame&frame切換&#xff1f; frame&#xff1a;HTML頁面中的一…

工業相機基本知識解讀:像元、幀率、數據接口等

工業相機&#xff08;Industrial Camera&#xff09;是一種專門為工業自動化和機器視覺應用而設計的成像設備&#xff0c;它不同于消費類相機&#xff08;如手機、單反&#xff09;&#xff0c;主要追求的是成像穩定性、長時間可靠性、實時性和精確性。它通常與鏡頭、光源、圖像…

RTC之神奇小鬧鐘

&#x1f3aa; RTC 是什么&#xff1f;—— 電子設備的“迷你生物鐘”想象一下&#xff1a;你晚上睡覺時&#xff0c;手機關機了。但當你第二天開機&#xff0c;它居然知道現在幾點&#xff01;這就是 RTC&#xff08;Real-Time Clock&#xff0c;實時時鐘&#xff09; 的功勞&…

判斷IP是否屬于某個網段

判斷IP是否屬于某個網段判斷一個IP是否是否屬于某個CIDR網段&#xff0c;核心是比較IP與網段的網絡位是否一致&#xff0c;步驟如下&#xff1a; 一、明確CIDR網段的兩個關鍵信息 假設要判斷的IP是 IPx&#xff0c;目標網段是 CIDR 網段地址/n&#xff08;例如 192.168.1.0/24…

Python day50

浙大疏錦行 python day50. 在預訓練模型&#xff08;resnet18&#xff09;中添加cbam注意力機制&#xff0c;需要修改模型的架構&#xff0c;同時應該考慮插入的cbam注意力機制模塊的位置&#xff1b; import torch import torch.nn as nn from torchvision import models# 自…

VPS海外節點性能監控全攻略:從基礎配置到高級優化

在全球化業務部署中&#xff0c;VPS海外節點的穩定運行直接影響用戶體驗。本文將深入解析如何構建高效的性能監控體系&#xff0c;涵蓋網絡延遲檢測、資源閾值設置、告警機制優化等核心環節&#xff0c;幫助運維人員實現跨國服務器的可視化管控。 VPS海外節點性能監控全攻略&am…

C語言初學者筆記【結構體】

文章目錄一、結構體的使用1. 結構體聲明2. 變量創建與初始化3. 特殊聲明與陷阱二、內存對齊1. 規則&#xff1a;2. 示例分析&#xff1a;3. 修改默認對齊數&#xff1a;三、結構體傳參四、結構體實現位段1. 定義2. 內存分配3. 應用場景4. 跨平臺問題&#xff1a;5. 注意事項&am…

基于XGBoost算法的數據回歸預測 極限梯度提升算法 XGBoost

一、作品詳細簡介 1.1附件文件夾程序代碼截圖 全部完整源代碼&#xff0c;請在個人首頁置頂文章查看&#xff1a; 學行庫小秘_CSDN博客?編輯https://blog.csdn.net/weixin_47760707?spm1000.2115.3001.5343 1.2各文件夾說明 1.2.1 main.m主函數文件 該MATLAB 代碼實現了…

數據安全系列4:常用的對稱算法淺析

常用的算法介紹 常用的算法JAVA實現 jce及其它開源包介紹、對比 傳送門 數據安全系列1&#xff1a;開篇 數據安全系列2&#xff1a;單向散列函數概念 數據安全系列3&#xff1a;密碼技術概述 時代有浪潮&#xff0c;就有退去的時候 在我的博客文章里面&#xff0c;其中…

云計算學習100天-第26天

地址重寫地址重寫語法——關于Nginx服務器的地址重寫&#xff0c;主要用到的配置參數是rewrite 語法格式&#xff1a; rewrite regex replacement flag rewrite 舊地址 新地址 [選項]地址重寫步驟&#xff1a;#修改配置文件(訪問a.html重定向到b.html) cd /usr/local/ngin…

【Python辦公】字符分割拼接工具(GUI工具)

目錄 專欄導讀 項目簡介 功能特性 ?? 核心功能 1. 字符分割功能 2. 字符拼接功能 ?? 界面特性 現代化設計 用戶體驗優化 技術實現 開發環境 核心代碼結構 關鍵技術點 使用指南 安裝步驟 完整代碼 字符分割操作 字符拼接操作 應用場景 數據處理 文本編輯 開發輔助 項目優勢 …

Windows 命令行:dir 命令

專欄導航 上一篇&#xff1a;Windows 命令行&#xff1a;Exit 命令 回到目錄 下一篇&#xff1a;MFC 第一章概述 本節前言 學習本節知識&#xff0c;需要你首先懂得如何打開一個命令行界面&#xff0c;也就是命令提示符界面。鏈接如下。 參考課節&#xff1a;Windows 命令…

軟考高級--系統架構設計師--案例分析真題解析

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄前言試題一 軟件架構設計一、2019年 案例分析二、2020年 案例分析三、2021年 案例分析四、2022年 案例分析試題二 軟件系統設計一、2019年 案例分析二、2020年 案例分…

css中的性能優化之content-visibility: auto

content-visibility: auto的核心機制是讓瀏覽器智能跳過屏幕外元素的渲染工作&#xff0c;包括布局和繪制&#xff0c;直到它們接近視口時才渲染。這與虛擬滾動等傳統方案相比優勢明顯&#xff0c;只需要一行CSS就能實現近似效果。值得注意的是必須配合contain-intrinsic-size屬…