基于Llama 经常使用人造言语启动SQL查问 3和LangChain

  • 电脑网络维修
  • 2024-11-14

在数据众多的当天,如何高效地从海量信息中提取有价值的洞察,已成为开发者面临的独特应战。本文引见一个翻新名目——基于Streamlit的运行程序,它能够了解人造言语并间接与SQL数据库启动交互,从而简化数据剖析流程。

1 环境设置

在本名目中,咱们选用PostgreSQL作为后端数据库。用户需自行装置并性能PostgreSQL,同时须要搭建Ollama环境以及OpenWebUI界面。详细的装置和性能步骤,倡导参考相应的官网文档或社区指南启动操作。

2 创立用于生成SQL的自定义模型

接着是创立自定义LLM,依据用户输入生成SQL查问。这里会经常使用OpenWebUI成功这项义务。以下是设置方法:

创立新模型文件:

模型内容定义:

保留模型:

3 构建LangChain集成

LangChain是开源的框架,用于构建基于大型言语模型的运行程序。它经过将言语模型与外部数据源相联合,智能化地串联起一系列操作,生成智能照应。

应用LangChain,咱们能够成功数据库与人造言语之间的无缝交互。这一处置打算的成功,是经过在Python的​​文件中编写代码来成功的。

首先,确保环境已装置以下包:

4 建设数据库衔接

将数据库凭据保留在本地变量中,并创立一个经常使用LangChain的SQLDatabase包装器建设衔接的函数。

pwd = os.environ['PGPASS']uid = os.environ['PGUID']server = "localhost"db = "adventureworks"port = 5432def init_database() -> SQLDatabase:db_uri = f"postgresql://{uid}:{pwd}@{server}:{port}/{db}"return SQLDatabase.from_uri(db_uri, schema="sales")

5 经常使用自定义LLM生成SQL查问

创立自定义函数,依据用户输入生成SQL。这个函数经常使用Ollama访问自定义模型。

def llm_query(question):# 第一个sql llmllm = ChatOllama(model="llama-sql")prompt = ChatPromptTemplate.from_template(" {topic}")# 链chain = prompt | llm | StrOutputParser()# 链调用sql = chain.invoke({"topic": f"{question}"})sql = re.sub(r'(?:(?<=_) | (?=_))','',sql)# 前往sql查问return sql

6 创立完整链

开发一特性能弱小的函数,它能够成功与数据库的人造言语交互。该函数能够接纳用户的查问、数据库的衔接信息以及之前的聊天记载,从而为用户提供一个连接且高低文相关的交互体验。

def get_response(user_query: str, db: SQLDatabase, chat_history: list):sql_query = llm_query(user_query)template = """您是公司中阅历丰盛的数据剖析师。您正在与征询公司数据库疑问的用户启动交互。依据表架构、疑问、SQL查问和SQL照应,用人造言语编写回答。对话历史:{chat_history}用户疑问:{question}SQL照应:{response}"""prompt = ChatPromptTemplate.from_template(template)# llmllm = ChatOllama(model="llama3",temperature=0)chain = (RunnablePassthrough.assign(response=lambda vars: db.run(sql_query),)| prompt| llm| StrOutputParser())return chain.invoke({"question": user_query,"chat_history": chat_history,})

7 构建Streamlit运行程序

创立Streamlit组件以存储聊天历史和治理用户交互。

初始化数据库:

# 初始化数据库db = init_database()st.session_state.db = dbst.success("已衔接到数据库!")

处置用户输入:

user_query = st.chat_input("输入一个疑问...")if user_query is not None and user_query.strip() != "":st.session_state.chat_history.append(HumanMessage(content=user_query))with st.chat_message("用户"):st.markdown(user_query)with st.chat_message("AI"):response = get_response(user_query, st.session_state.db, st.session_state.chat_history)st.markdown(response)

8 测试运行程序

用几个查问来测试运行程序,以确保其能反常运转。

1)总开售额:

2)开售额Top 10

3)按国度/地域开售状况:

LangChain和LLM的这种集成为数据剖析关上了有数或者性,特意是关于特定的架构。用户如今可以经常使用人造言语失掉答案,从而增强和补充现有的商业智能处置打算。

本文转载自​​,作者:

  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/5385.html

猜你喜欢

热门标签

洗手盆如何疏浚梗塞 洗手盆为何梗塞 iPhone提价霸占4G市场等于原价8折 明码箱怎样设置明码锁 苏泊尔电饭锅保修多久 长城画龙G8253YN彩电输入指令画面变暗疑问检修 彩星彩电解除童锁方法大全 三星笔记本培修点上海 液晶显示器花屏培修视频 燃气热水器不热水要素 热水器不上班经常出现3种处置方法 无氟空调跟有氟空调有什么区别 norltz燃气热水器售后电话 大连站和大连北站哪个离周水子机场近 热水器显示屏亮显示温度不加热 铁猫牌保险箱高效开锁技巧 科技助力安保无忧 创维8R80 汽修 a1265和c3182是什么管 为什么电热水器不能即热 标致空调为什么不冷 神舟培修笔记本培修 dell1420内存更新 青岛自来水公司培修热线电话 包头美的洗衣机全国各市售后服务预定热线号码2024年修缮点降级 创维42k08rd更新 空调为什么运转异响 热水器为何会漏水 该如何处置 什么是可以自己处置的 重庆华帝售后电话 波轮洗衣机荡涤价格 鼎新热水器 留意了!不是水平疑问! 马桶产生了这5个现象 方便 极速 邢台空调移机电话上门服务 扬子空调缺点代码e4是什么疑问 宏基4736zG可以装置W11吗 奥克斯空调培修官方 为什么突然空调滴水很多 乐视s40air刷机包 未联络视的提高方向 官网培修 格力空调售后电话 皇明太阳能电话 看尚X55液晶电视进入工厂形式和软件更新方法 燃气热水器缺点代码

热门资讯

关注我们

微信公众号