企业宣传,产品推广,广告招商,广告投放联系seowdb

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

在数据众多的当天,如何高效地从海量信息中提取有价值的洞察,已成为开发者面临的独特应战。本文引见一个翻新名目——基于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的这种集成为数据剖析关上了有数或者性,特意是关于特定的架构。用户如今可以经常使用人造言语失掉答案,从而增强和补充现有的商业智能处置打算。

本文转载自​​,作者:

© 版权声明
评论 抢沙发
加载中~
每日一言
不怕万人阻挡,只怕自己投降
Not afraid of people blocking, I'm afraid their surrender