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

商梦建站网站安全检测发生告警后

商梦建站,网站安全检测发生告警后,网页设计科技有限公司,做公众号的公司是什么公司前言 在上篇文章中「大模型LLM在Text2SQL上的应用实践」介绍了基于SQLDatabaseChain的Text2SQL实践#xff0c;但对于逻辑复杂的查询在稳定性、可靠性、安全性方面可能无法达到预期#xff0c;比如输出幻觉、数据安全、用户输入错误等问题。 本文将从以下4个方面探讨通过Pr…前言 在上篇文章中「大模型LLM在Text2SQL上的应用实践」介绍了基于SQLDatabaseChain的Text2SQL实践但对于逻辑复杂的查询在稳定性、可靠性、安全性方面可能无法达到预期比如输出幻觉、数据安全、用户输入错误等问题。 本文将从以下4个方面探讨通过Prompt Engineering来优化LLM的Text2SQL转换效果。 1. 问题及思路 2. Prompt概述 3. Text2SQL中的Prompt实践 4. 后续计划 1. 问题及思路 1.1 问题挑战 在自然语言处理NLP和人工智能AI领域大型语言模型LLM如GPT-3和BERT已经取得显著的进步。然而在将文本转换为SQL查询Text to SQL的任务上这些模型仍有优化的空间。一些常见的挑战包括 1. 输出幻觉HallucinationLLM在生成SQL语句时会生成一些看似合理但实际与输入文本无关或错误的查询这可能是由于模型尚未充分学习到SQL查询的语法和逻辑导致在推理阶段产生误导性的输出。 2. 数据安全性在处理敏感数据时模型可能会生成泄露或篡改敏感信息的SQL语句。 3. 用户输入错误用户在输入查询时拼写错误或有不合规的操作这可能导致模型生成错误或高风险的SQL语句。 1.2 解决思路 针对上述问题我们可以从Prompt Engineering提示工程和Fine Tuning模型微调两个方面进行考虑。 1. Prompt Engineering是一种通过设计特定的提示词或句子引导模型生成更符合用户意图的输出的方法。例如我们可以为模型添加一些关于SQL语法的提示信息以帮助模型更好地理解SQL语句的结构和规则。通过这种方式我们可以有效地降低输出幻觉的可能性提高模型的准确性和稳定性。 2. Fine Tuning则是指在预训练模型的基础上使用特定的数据集进行微调以适应特定的任务需求。对于Text-to-SQL任务我们可以使用包含大量SQL语句的数据集进行Fine Tuning以提高模型对SQL语句的理解和生成能力。 1.3 思路对比 两者对比如下 Fine TuningPrompt Engineering方法在与目标任务或领域相关的数据集上重新训练模型输入提示的设计和调整选择合适的关键词、短语或问题来引导模型生成所需的回答复杂度较高涉及模型的重新训练和参数调整需要对模型的内部结构和机制有一定的了解较低涉及到对输入提示的设计和调整对模型本身的结构和机制要求较低成本与时长高重新训练模型需要大量的计算资源和时间低可以通过迭代的方式逐步优化性能较高模型深度理解特定任务或领域知识稍低侧重于引导模型生成与提示相关的回答 以我们都经历过的参加考试的例子做个通俗的对比 1. Fine Tuning考试前根据自己的知识体系参考考试的题型、历史真题做好有侧重点的准备考试过程中根据给定的题目按照自己的理解直接给出答案。 2. Prompt Engineering考试前不做额外的准备带着自己的知识体系去参加考试考试过程中除了给定的题目外还会有类似题目的解答思路按照解答提示来给出答案。 2. Prompt概述 2.1 Prompt概念 Prompt是一种通过设计特定的提示词或句子引导模型生成更符合用户意图的输出的方法。例如我们可以为模型添加一些关于SQL语法的提示信息以帮助模型更好地理解SQL语句的结构和规则。 Prompt的组成包四个元素 Instruction指令必需告诉模型该怎么做如何使用外部信息如何处理查询并构建Out。 Context上下文信息可选充当模型的附加知识来源。这些可以手动插入到提示中通过矢量数据库Vector Database检索检索增强获得或通过其他方式API、计算等引入。 Input Data需要处理的数据可选通常但不总是是由人类用户即提示者In 到系统中的查询。 Output Indicator要输出的类型或格式可选标记要生成的文本的开头。 代码示例 prompt Answer the question based on the context below. If the question cannot be answered using the information provided answer with I dont know.Context: Large Language Models (LLMs) are the latest models used in NLP. Their superior performance over smaller models has made them incredibly useful for developers building NLP enabled applications. These models can be accessed via Hugging Faces transformers library, via OpenAI using the openai library, and via Cohere using the cohere library.Question: Which libraries and model providers offer LLMs?Answer: 2.2 Prompt编写原则 1. 关键要素 明确目标清晰定义任务以便模型理解。 具体指导给予模型明确的指导和约束。 简介明了使用简练、清晰的语言表达Prompt。 适当引导通过示例或问题边界引导模型。 迭代优化根据输出结果持续调整和优化Prompt。 2. 有效做法 强调可以适当的重复命令和操作。 给模型一个出路如果模型可能无法完成告诉它说“不知道”别让它乱“联想”。 尽量具体它还是孩子少留解读空间。 2.3 Prompt类型 2.3.1 Zero-Shot Prompting 直接向模型提出问题不需要任何案例模型就能回答你的问题基于模型训练的时候提供的大量数据能做初步的判断。 1. Zero-Shot Prompting 技术依赖于预训练的语言模型。 2. 为了获得最佳性能它需要大量的样本数据进行微调。像ChatGPT 就是一个例子它的样本数量是过千亿。 3. 由于Zero-Shot Prompting 技术的灵活性和通用性它的输出有时可能不够准确或不符合预期。这可能需要对模型进行进一步的微调或添加更多的提示文本来纠正。 2.3.2 Few-Shot Prompting 向模型提出问题同时给出少量案例模型根据给定的案例调整输出的回答。 缺点依赖于案例的质量案例如果给的不恰当模型也会学到不恰当的描述和回答。 **2.3.3 Chain of Thought(CoT)**思维链 Jason Wei等人2022引入的思维链CoT提示通过中间推理步骤实现复杂的推理能力。可以将其与少样本提示相结合以获得更好的结果以便在回答之前进行推理的更复杂的任务。 有两种方式增加GPT的推理能力或者CoT能力 1. 第一种增加案例如下所示第一次回答错误给一个计算过程的案例GPT可以通过案例学会简单推理。 2. 第二种增加关键句Let’s think step by step测试人员测了很多类似的句子最后发现这句话是效果最好的这个时候不加案例GPT也具备一定的推理能力。 根据 Wei 等人的论文表明它仅在大于等于 100B 参数的模型中使用才会有效。如果使用的是小样本模型这个方法不会生效。 2.3.4 Self-Consistency 自洽 是对CoT的一个补充让模型生成多个思维链然后取最多数答案的作为最终结果。其实重复运算多次取概率最高的那一个需要借助脚本辅助完成这个功能。 1. 从语言模型中生成多个不同的“推理路径reasoning paths”这些路径可能因模型的随机性或不同的参数设置如temperature、top_p等而有所不同。有助于模型更全面地考虑问题并可能导致更准确或更可靠的最终答案。 2. 对上一步生成的多个推理路径进行“边缘化marginalize out”以得到一个最终的、一致的答案。边缘化在这里意味着从多个可能的推理路径中找出最常见或最一致的答案。 2.3.5 Tree of Thoughts(ToT) 思维树 Tree of ThoughtsToT框架用于改进语言模型LMs的推理能力。该框架是对流行的“Chain of Thought”方法的一种泛化允许模型在解决问题的过程中进行更多的探索和策略性前瞻。 ToT允许模型自我评估不同的选择以决定下一步的行动并在必要时进行前瞻或回溯以做出全局性的选择。 在24点游戏中使用链式思考提示的GPT-4仅解决了4%的任务而使用ToT方法的成功率达到了74%。 2.3.6 ReAct框架 Yao等人2022引入了一个框架其中LLMs以交错的方式生成推理轨迹和任务特定操作并且允许LLMs与外部工具交互来获取额外信息从而给出更可靠和实际的回应。ReAct的灵感来自于“行为”和“推理”之间的协同作用正是这种协同作用使得人类能够学习新任务并做出决策或推理。 下图展示ReAct的一个示例举例执行问题回答所涉及的不同步骤。 实现流程如下 1用Prompt实现一个样例比如上面的模板Thought:xxx Action: Search[xxx] 2LLMs会根据模板相同的逻辑结合CoT思维链方式一步一步思考并获取外部知识 3最后Action: Finish获取最终结果后结束。 ReAct框架在后续介绍Text2SQL的Agent实现的文章中还会详细介绍步骤如下 3. Text2SQL中的Prompt实践 3.1 现有问题 以上篇文中「大模型LLM在Text2SQL上的应用实践」的数据库Chinook为例需求为统计“连续两个月都下订单的客户有哪些”示例代码可参考上文。 结果如下 可以看出生成的SQL不准确只统计了最近两个月中都下订单的客户和统计需求不相符。那如何解决这个问题 3.2 解决方案 1. 增强LLM模型能力 我们先从LLM模型的角度考虑。测试案例中用到的是“GPT-3.5-Turbo”参考Spider排行榜https://yale-lily.github.io/spider可以看出GPT-4的效果还是一骑绝尘。 我们将LLM模型切换为GPT-4测试下效果结果如下 效果生成的SQL基本上满足我们的需求。 成本GPT-4的费用通常为GPT-3.5的10倍左右。所以该方案不是我们的首选方案。但其生成的SQL可以作为后续的参考和输入。 2. Prompt Engineering 采用Prompt的方式来实现。其中自定义Prompt信息包括Database中Table Schema信息Table Row数据样本和Few-shot Examples。 PromptTemplate示例代码如下 from langchain.prompts import PromptTemplateTEMPLATE 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:Question: Question here SQLQuery: SQL Query to run SQLResult: Result of the SQLQuery Answer: Final answer hereOnly use the following tables:{table_info}.Some examples of SQL queries that correspond to questions are:{few_shot_examples}Question: {input}其中{table_info}包括Table Schema信息和Table Row数据样本可通过LangChain中的SQLDatabase来获得其封装在db.table_info中示例内容如下 CREATE TABLE Track ( TrackId INTEGER NOT NULL, Name NVARCHAR(200) NOT NULL, AlbumId INTEGER, MediaTypeId INTEGER NOT NULL, GenreId INTEGER, Composer NVARCHAR(220), Milliseconds INTEGER NOT NULL, Bytes INTEGER, UnitPrice NUMERIC(10, 2) NOT NULL, PRIMARY KEY (TrackId), FOREIGN KEY(MediaTypeId) REFERENCES MediaType (MediaTypeId), FOREIGN KEY(GenreId) REFERENCES Genre (GenreId), FOREIGN KEY(AlbumId) REFERENCES Album (AlbumId) ) SELECT * FROM Track LIMIT 3; TrackId Name AlbumId MediaTypeId GenreId Composer Milliseconds Bytes UnitPrice 1 For Those About To Rock (We Salute You) 1 1 1 Angus Young, Malcolm Young, Brian Johnson 343719 11170334 0.99 2 Balls to the Wall 2 2 1 None 342562 5510424 0.99 3 Fast As a Shark 3 2 1 F. Baltes, S. Kaufman, U. Dirkscneider W. Hoffman 230619 3990994 0.99整体的测试代码如下 from langchain.utilities import SQLDatabase from langchain.chat_models import ChatOpenAI from langchain.schema.output_parser import StrOutputParser from langchain import hub# Initialize database db SQLDatabase.from_uri(sqlite:///xxx/Chinook.db) # Pull down prompt prompt hub.pull(rlm/text-to-sql) # Initialize model model ChatOpenAI()# few shot examples few_shots {List all artists.: SELECT * FROM artists;,Find all albums for the artist AC/DC.: SELECT * FROM albums WHERE ArtistId (SELECT ArtistId FROM artists WHERE Name AC/DC);,连续两个月都下订单的客户有哪些?:SELECT DISTINCT a.CustomerId, a.FirstName, a.LastName FROM Customer a JOIN Invoice b ON a.CustomerId b.CustomerId JOIN Invoice c ON a.CustomerId c.CustomerId AND ((strftime(%Y-%m, b.InvoiceDate) strftime(%Y-%m, date(c.InvoiceDate, -1 month))) OR (strftime(%Y-%m, b.InvoiceDate) strftime(%Y-%m, date(c.InvoiceDate, 1 month)))) }# Create chain with LangChain Expression Language inputs {table_info: lambda x: db.get_table_info(),input: lambda x: x[question],few_shot_examples: lambda x: few_shots,dialect: lambda x: db.dialect, } sql_response (inputs| prompt| model.bind(stop[\nSQLResult:])| StrOutputParser() )# Call with a given question sql_response.invoke({question: 连续两个月都下订单的客户有哪些?})结果如下 效果生成的SQL满足我们的需求。 成本增加的Prompt上下文信息所占tokens的费用与GPT-4相比基本在10%左右。 **根据Prompt信息**测试相似拓展问题结果情况如下 案例1统计“连续两个月都下订单的客户总共有多少个” 结果生成的SQL满足我们的需求。 案例2统计“连续两个月都下订单的客户的订单总共有多少个” 结果生成的SQL满足我们的需求虽然不是最优解。 4. 后续计划 本文介绍了通过Few-shot Prompting来优化Text2SQL生成结果的案例总的来说Prompt Engineering提供了一种有效的方法来优化LLM在Text2SQL应用上的效果。通过精心设计的提示我们可以引导模型更好地理解和处理用户的查询从而提高查询的准确性和效率。除了使用Few-shot Prompting还可以考虑Agent、CoT等相关技术对Text2SQL效果的优化后续共同探讨。同时也期待更多的研究和应用来探索和利用大型语言模型的潜力。 技术交流 技术要学会分享、交流不建议闭门造车。一个人走的很快、一堆人可以走的更远。 建立了大模型技术交流群大模型学习资料、数据代码、技术交流提升 均可加知识星球交流群获取群友已超过2000人添加时切记的备注方式为来源兴趣方向方便找到志同道合的朋友。 方式①、添加微信号mlc2060备注技术交流 方式②、微信搜索公众号机器学习社区后台回复技术交流 参考文献 https://python.langchain.com/docs/use_cases/qa_structured/sql https://blog.langchain.dev/query-construction/ https://blog.langchain.dev/llms-and-sql/ https://www.promptingguide.ai/zh/techniques/fewshot https://zhuanlan.zhihu.com/p/663355618
http://www.zqtcl.cn/news/861963/

相关文章:

  • node 网站开发 视频教程汉阳网站推广
  • 广西新农村建设工作专题网站怎样创建公司网站
  • 中国十大招商平台谷歌优化软件
  • 做任务领黄钻的网站中国采购网招标公告
  • 网站建设三层架构实训报告德阳市网站建设
  • 有免费建网站opencms wordpress
  • 行业网站做的好的wordpress要有数据库
  • 重庆智能网站建设哪里好怎么在微信做企业网站
  • 甘肃建设局网站丰都网站建设公司
  • 四川建设设计公司网站网站建设好的图片
  • 建设旅游网站的总结做网站链接怎么做
  • 深圳网站建设建设wordpress cms 布局
  • 企业网站的建立必要性公司建网站哪家
  • 自己做的旅游网站 介绍免费的网站推广在线推广
  • 阿里巴巴 网站设计龙华建设网站公司
  • 番禺网站优化手机商城是什么意思
  • 如何做网站关键词wordpress安装卡死
  • word模板免费下载网站山东定制网站建设公司
  • 郑州网站推广排名公司win7上怎样卸载wordpress
  • 科技网站有哪些wordpress代码编辑器件
  • 做英文企业网站多钱钱wordpress调用外链图片
  • 自学网站查分数西双版纳傣族自治州天气
  • 网站建设一个多少钱wordpress朗读句子插件
  • 网站关键词怎么填写找代理商的渠道有哪些
  • 网站开发销售简历范文新建网站网络空间
  • 舟山外贸建站公司制作公司简介
  • 菜鸟是什么网站威海网站建设费用
  • 网站开发花费如何制作个人网页兼职
  • 网站鼠标特效用户体验最好的网站
  • 网站设计步骤图南通网站建设公司