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

武汉网站建设哪里好正能量网站地址链接免费

武汉网站建设哪里好,正能量网站地址链接免费,假山网站如何做,建个企业网站需要多久前言 我在上一篇文章中《Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用#xff08;text2sql#xff09;》 利用langchain 中create_sql_agent 创建一个数据库代理智能体#xff0c;但是实测中发现#xff0c;使用 create_sql_agent 在对话中#x…前言 我在上一篇文章中《Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用text2sql》 利用langchain 中create_sql_agent 创建一个数据库代理智能体但是实测中发现使用 create_sql_agent 在对话中响应速度太慢了数据的表越多对话响应就越慢这次本篇文章langchain中和数据库对话交互的另两种方式SQLDatabaseChain和create_sql_query_chain。 SQLDatabaseChain 使用LangChain中的SQLDatabaseChain需要安装langchain_experimental安装依赖命令如下 pip install langchain pip install langchain_experimentalSQLDatabaseChain和数据库的交互响应速度 处于 create_sql_agent 和create_sql_query_chain中间其中create_sql_agent 智能体在交互过程中和AI做了多次交互大致流程如下先用AI判断问题和数据中表的相关性查看相关表的设计表结构利用AI生成sql查询语句利用AI对生成的sql查询语句进行检查利用AI对sql命令查询出来结构做最终回复。过程比较多导致响应很慢但是相对于其他两种方式来说更智能更严谨。SQLDatabaseChain既保持了一定智能性又提升了回复的速度。下面我用chainilt作为一个网页对话的UI界面利用SQLDatabaseChain实现一个和数据库对话的网页应用示例如下 本次使用postgres数据库进行对话 在项目根目录下创建一个app.py文件代码如下 import os import time from io import BytesIOimport chainlit as cl import dashscope from langchain_community.llms import Tongyi from langchain_community.utilities import SQLDatabase from langchain_experimental.sql import SQLDatabaseChaincl.on_chat_start async def on_chat_start():db SQLDatabase.from_uri(postgresqlpsycopg2://username:passwordip:port/dbname)llm Tongyi(modelqwen-plus, verboseTrue)db_chain SQLDatabaseChain.from_llm(llm, db)cl.user_session.set(db_chain, db_chain)cl.on_message async def on_message(message: cl.Message):start_time time.time()db_chain cl.user_session.get(db_chain)result db_chain.invoke({query: message.content})print(f代码执行时间: {time.time() - start_time} 秒)await cl.Message(contentresult[result]).send()修改代码中的数据库连接信息为你自己的在env文件中配置dashscope的key 不知道的话看我之前的文章实测中把qwen-plus改为qwen-max 或者其他更智能的AI回答数据的准确度更高 create_sql_query_chain create_sql_query_chain 是langchain中和数据库查询最快的方式他只是负责根据用户问题生成查询sql查询语句一个功能。不太智能但是足够灵活用户可以自定义其他判断和最终回复的逻辑。下面我用create_sql_query_chain结合AI回复实现了一个简单数据库对话网页应用速度是目前方式中最快的。 在项目根目录下创建app.py文件代码如下 import os import time from io import BytesIOimport chainlit as cl import dashscope from langchain.chains.sql_database.query import create_sql_query_chain from langchain_community.llms import Tongyi from langchain_community.utilities import SQLDatabase from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import PromptTemplatedb SQLDatabase.from_uri(postgresqlpsycopg2://username:passwordip:port/dbname) llm Tongyi(modelqwen-plus, verboseTrue)cl.cache def extract_sql_query(text):# 查找 SQLQuery: 的位置start_index text.find(SQLQuery:)# 如果找到了 SQLQuery:则从其后的位置开始截取字符串if start_index ! -1:# SQLQuery: 后面的第一个字符的位置start_of_query start_index len(SQLQuery:) 1# 返回 SQLQuery: 后面的字符串return text[start_of_query:].strip()else:# 如果没有找到 SQLQuery:则返回空字符串return textcl.step(typetool, name数据库查询) async def db_query(message: cl.Message):db_chain cl.user_session.get(db_chain)result async for chunk in db_chain.astream({question: message.content}):result result.join(chunk)print(db_chain result)sql Noneif SELECT in result:sql extract_sql_query(result)print(自然语言转SQL sql)res db.run(sql)print(查询结果, res)return sql, resif not sql:await cl.Message(contentresult).send()return None, Nonecl.on_chat_start async def on_chat_start():answer_prompt PromptTemplate.from_template(Given the following user question, corresponding SQL query, and SQL result, answer the user question. 用中文回答最终答案Question: {question}SQL Query: {query}SQL Result: {result}Answer: )answer_chain answer_prompt | llm | StrOutputParser()cl.user_session.set(answer_chain, answer_chain)db_chain create_sql_query_chain(llmllm, dbdb)cl.user_session.set(db_chain, db_chain)cl.on_message async def on_message(message: cl.Message):start_time time.time()runnable cl.user_session.get(answer_chain)msg cl.Message(content)sql, res await db_query(message)if res:async for chunk in runnable.astream({question: message.content, query: sql, result: res}):await msg.stream_token(chunk)print(f代码执行时间: {time.time() - start_time} 秒)await msg.update() 修改代码中的配置为你自己的数据库连接信息代码中的AI模型使用的是通义千问的qwen-plus大致原理使用create_sql_query_chain 根据用户问题生成查询sql对返回的结构进行提取获得最终sql,使用db.run方法执行最终sql。将sql执行结果、sql查询语句、和用户问题发给AI做最终回答。这种方式的弊端当用户提问的问题和数据库无关时报错的概率更大需要进一步处理。对于create_sql_query_chain生成sql命令没有做进一步校验默认他是正确的虽然节省的时间也提升了报错的概率db SQLDatabase.from_uri(sqlite:///demo.db) 中的demo.db文件是上面sqlite_data.py文件执行后生成的 llm Tongyi(modelqwen-plus, verboseTrue) 中verbose 意思是是否打印详细输出在底层LangChain 使用 SQLAlchemy 连接到 SQL 数据库。因此SQLDatabaseChain 可以与 SQLAlchemy 支持的任何 SQL 方言一起使用例如 MS SQL、MySQL、MariaDB、PostgreSQL、Oracle SQL、Databricks 和 SQLite。有关连接到数据库的要求的更多信息请参阅 SQLAlchemy 文档。 连接mysql代码示例 # 连接 MySQL 数据库 db_user root db_password 12345678 db_host IP db_port 3306 db_name demo db SQLDatabase.from_uri(fmysqlpymysql://{db_user}:{db_password}{db_host}:{db_port}/{db_name})运行应用程序 要启动 Chainlit 应用程序请打开终端并导航到包含的目录app.py。然后运行以下命令 chainlit run app.py -w 该-w标志告知 Chainlit 启用自动重新加载因此您无需在每次更改应用程序时重新启动服务器。您的聊天机器人 UI 现在应该可以通过http://localhost:8000访问。自定义端口可以追加--port 80 启动后界面如下 目前存在问题没办法流式输出因为流公式返回的结果是ai执行sql的过程最终返回的结果文本是流式返回的最后一段。执行时间有点长提出问题后一般5秒左右才返回。目前支持sql查询相关的操作不支持数据库新增、修改、删除的操作 相关文章推荐 《Chainlit快速实现AI对话应用的界面定制化教程》 《Chainlit接入FastGpt接口快速实现自定义用户聊天界面》 《使用 Xinference 部署本地模型》 《Fastgpt接入Whisper本地模型实现语音输入》 《Fastgpt部署和接入使用重排模型bge-reranker》 《Fastgpt部署接入 M3E和chatglm2-m3e文本向量模型》 《Fastgpt 无法启动或启动后无法正常使用的讨论启动失败、用户未注册等问题这里》 《vllm推理服务兼容openai服务API》 《vLLM模型推理引擎参数大全》 《解决vllm推理框架内在开启多显卡时报错问题》 《Ollama 在本地快速部署大型语言模型可进行定制并创建属于您自己的模型》
http://www.dnsts.com.cn/news/2103.html

相关文章:

  • 公司建站文案给网站公司看的软服业营收破334亿
  • 网站升级公告模板今日新闻头条新闻摘抄
  • 贵阳做网站电话哪里有网页设计公司
  • 网站 备案 几天seo标题优化关键词怎么选
  • 企业网站的建设与维护谷歌google play官网下载
  • 开拓网站建设郑州网站排名优化公司
  • 自己做下载类网站品牌服务推广
  • 景德镇网站维护最有创意的广告语30条
  • 与国外公司合作网站建设上海公司网站宣传文案范例
  • 白石龙做网站搜索风云榜百度
  • 苏州做网站费用深圳网站快速排名优化
  • WordPress付费阅读文章seo快速排名关键词
  • 宿迁市住房和城乡建设局网站百度网络科技有限公司
  • 武汉做商城网站建设如何在百度提交自己的网站
  • 本地免费发布信息网站网站制作流程是什么
  • 可以下载各种软件的网站市场调研方案
  • 微分销免费平台网站优化排名首页
  • 小程序开发报价明细seo关键词排名优化哪好
  • 网上做头像用什么网站郑州网站运营专业乐云seo
  • 无版权图片网站 日本网站网络推广
  • 直销网站建设公司网站建设全包
  • wordpress首页分页seo与sem的区别和联系
  • 用瀑布流做的美食网站国外引流推广软件
  • 漯河住房和城乡进建设委员会网站网宁波网络营销推广咨询报价
  • 域名如何做网站seo什么意思中文意思
  • wp做网站难吗上海关键词自动排名
  • 网站可访问性搜索引擎排名优化是什么意思
  • 如何用webstrom做网站郑州网站优化推广
  • 厦门市建设局官方网站深圳英文站seo
  • 网站开发项目概述长沙seo优化