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

晨光科技 网站建设棋牌类网站设计建设

晨光科技 网站建设,棋牌类网站设计建设,山东省住房和城乡建设厅网站主页,现在市场最火的网店平台在当前大语言模型(LLM)应用开发的背景下,一个关键问题是如何评估模型输出的准确性。我们需要确定哪些评估指标能够有效衡量提示(prompt)的效果,以及在多大程度上需要对提示进行优化。 为解决这一问题,我们将介绍一个基于双代理的RAG(检索增强生成)评估系统。该系统使用生成代理…在当前大语言模型(LLM)应用开发的背景下,一个关键问题是如何评估模型输出的准确性。我们需要确定哪些评估指标能够有效衡量提示(prompt)的效果,以及在多大程度上需要对提示进行优化。 为解决这一问题,我们将介绍一个基于双代理的RAG(检索增强生成)评估系统。该系统使用生成代理和反馈代理,基于预定义的测试集对输出进行评估。或者更简单的说我们使用一个模型来评估另外一个模型的输出。 在本文中将详细介绍如何构建这样一个RAG评估系统,并展示基于四种提示工程技术的不同结果,包括ReAct、思维链(Chain of Thought)、自一致性(Self-Consistency)和角色提示(Role Prompting)。 以下是该项目的整体架构图: 数据收集与摄入 此部分在 ingestion.py 中实现 数据收集过程使用了三篇文章作为源数据。在加载和分割数据后,我们对文本进行嵌入,并将嵌入向量存储在FAISS中。FAISS(Facebook AI Similarity Search)是由Meta开发的开源库,用于高效进行密集向量的相似性搜索和聚类。 以下是实现代码: urls [ https://medium.com/fareedkhandev/prompt-engineering-complete-guide-2968776f0431, https://medium.com/researchgraph/prompt-engineering-21112dbfc789, https://blog.fabrichq.ai/what-is-prompt-engineering-a-detailed-guide-with-examples-4d3cbbd53792 ] loaderWebBaseLoader(urls) # 文本分割器 text_splitterRecursiveCharacterTextSplitter( chunk_size1000, chunk_overlap20 ) documentsloader.load_and_split(text_splitter) # LLM embedder_llmOpenAIModel().embed_model() # 对文档块进行嵌入 vectorstoreFAISS.from_documents(documents, embedder_llm) vectorstore.save_local(faiss_embed) print( 数据摄入完成 )创建测试集 此部分在 create_test_set.py 中实现 测试集的构建使用了Giskard工具。Giskard是一个开源工具,专为测试和改进机器学习模型而设计。它使用户能够创建、运行和自动化测试,以评估模型的性能、公平性和稳健性。 实现代码如下: fromlangchain_community.document_loadersimportWebBaseLoader fromlangchain.text_splitterimportRecursiveCharacterTextSplitter # 用于构建测试集 fromgiskard.ragimportKnowledgeBase, generate_testset # 数据框 importpandasaspd fromLLM.modelsimportOpenAIModel if__name____main__: urls [ https://medium.com/fareedkhandev/prompt-engineering-complete-guide-2968776f0431, https://medium.com/researchgraph/prompt-engineering-21112dbfc789, https://blog.fabrichq.ai/what-is-prompt-engineering-a-detailed-guide-with-examples-4d3cbbd53792 ] loaderWebBaseLoader(urls) # 文本分割器 text_splitterRecursiveCharacterTextSplitter( chunk_size1000, chunk_overlap20 ) documentsloader.load_and_split(text_splitter) dfpd.DataFrame([doc.page_contentfordocindocuments], columns[text]) print(df.head(10)) ## 将数据框添加到giskard KnowledgeBase knowledge_baseKnowledgeBase(df) # 生成测试集 test_setgenerate_testset( knowledge_base, num_questions10, agent_descriptionA chatbot answering question about prompt engineering ) test_set.save(test-set.jsonl)由于文本太多生成的样例就不显示了 答案检索 此部分在 generation.py 中实现 本文的第一个流程是生成流程。我们从FAISS检索数据。实现代码如下 generate_llmOpenAIModel().generate_model() embedder_llmOpenAIModel().embed_model() vectorstoreFAISS.load_local(faiss_embed, embedder_llm, allow_dangerous_deserializationTrue) retrieval_qa_chat_prompt (retrieval) promptChatPromptTemplate.from_messages( [ (system, retrieval_qa_chat_prompt), (human, {input}), ] )combine_docs_chaincreate_stuff_documents_chain(generate_llm, prompt) retrival_chaincreate_retrieval_chain( retrievervectorstore.as_retriever(), combine_docs_chaincombine_docs_chain )评估 此部分在 evaluation.py 中实现 评估过程中向LLM提供三个输入问题、AI答案第一个LLM的输出和实际答案从测试集中检索。实现代码如下 defRAG_eval(question, AI_answer, Actual_answer, prompt): evaluation_prompt_templatePromptTemplate( input_variables[ question, AI_answer, Actual_answer ], templateprompt ) generate_llmOpenAIModel().generate_model() optimization_chainevaluation_prompt_template|generate_llm|StrOutputParser() result_optimizationoptimization_chain.invoke( {question: question, AI_answer: AI_answer, Actual_answer: Actual_answer}) returnresult_optimization链接整合 此部分在 main.py 中实现 主文件遍历测试数据使用问题作为第一个LLM的输入。然后将第一个LLM的输出用作第二个LLM的输入。实现代码如下 foritemindata: question {input: item[question]} # 生成回答 resultretrival_chain.invoke(inputquestion) AI_answerresult[answer] # 获取实际答案 Actual_answeritem[reference_answer] # 将所有内容提供给第二个LLM EvaluationRAG_eval( questionquestion, AI_answerAI_answer, Actual_answerActual_answer, promptevaluation_self_consistency_prompting ) print(fAI_answer:{AI_answer}) print(Evaluation)实验结果 评估组件采用了四种不同的提示工程技术 思维链Chain of ThoughtReAct角色提示Role Prompting自一致性Self-Consistency 以下是基于这四种不同提示技术的评估代理对测试集第一个问题的输出示例 问题 What is the purpose of incorporating knowledge in prompt engineering? 实际答案 Incorporating knowledge or information in prompt engineering enhances the model’s prediction accuracy. By providing relevant knowledge or information related to the task at hand, the model can leverage this additional context to make more accurate predictions. This technique enables the model to tap into external resources or pre-existing knowledge to improve its understanding and generate more informed responses **AI答案**Incorporating knowledge in prompt engineering enhances the quality of responses by guiding AI models to provide not just answers, but also relevant context and insights. This leads to more informative and meaningful interactions, improving user experience and understanding. 使用思维链输出的**评估结果**The student’s answer correctly identifies that incorporating knowledge enhances the quality of responses and improves user experience. However, it lacks emphasis on the model’s prediction accuracy and the importance of leveraging external resources or pre-existing knowledge, which are key components of the actual answer. This omission affects the completeness and correctness of the response. 使用ReAct输出的评估结果****The student’s answer correctly identifies that incorporating knowledge enhances the quality of responses and improves user experience. However, it lacks emphasis on the specific aspect of prediction accuracy and the importance of leveraging external resources or pre-existing knowledge, which are key components of the actual answer. This omission affects the completeness of the response, leading to a lower evaluation percentage. 使用角色提示输出的评估结果****The student’s response accurately captures the essence of incorporating knowledge in prompt engineering by emphasizing the enhancement of response quality and user experience. However, it lacks specific mention of prediction accuracy and the model’s ability to leverage external resources, which are key aspects of the actual response. 使用自一致性输出的评估结果****The student’s answer captures the essence of enhancing the quality of responses through knowledge incorporation, but it lacks specific mention of prediction accuracy and the model’s ability to leverage external resources. The initial evaluation was slightly optimistic, but upon reevaluation, it became clear that the answer did not fully align with the actual answer’s emphasis on prediction accuracy and context utilization 实验结果分析 下图展示了四种提示工程技术的准确性比较。每种技术由图中的一条独立线条表示X轴上的10个数据点对应测试数据的索引值Y轴表示准确性值。 在评估过程中准确性达到85%及以上的响应视为真正准确True低于85%则视为不准确False。下面的条形图展示了基于每种提示工程技术的评估结果中True和False的计数。 实验结果显示ReAct和思维链Chain of Thought的性能几乎相似而自一致性Self-Consistency则表现出完全相反的行为。角色提示Role Prompting在所有方法中表现最不稳定。 一些发现 评估代理的所有响应虽然在内容上相近都提到了类似的缺失元素但反馈之间的差异主要体现在具体措辞和强调点上这些细微差别可能会对最终的评分过程产生影响。角色提示和自一致性技术倾向于强调结果的积极方面而ReAct和思维链则更多地使用特定措辞来突出回答中的缺失部分。 总结 本文展示了如何构建一个基于双代理的RAG检索增强生成评估系统该系统使用两个大语言模型LLM一个用于生成响应另一个用于提供反馈。通过采用四种不同的提示工程技术——思维链、ReAct、角色提示和自一致性我们能够全面评估AI生成响应的准确性和质量。 实验结果表明 ReAct和思维链技术在性能上表现相似这可能是因为它们都强调了结构化思考过程。自一致性技术经常产生与其他方法相反的结果这突显了在评估过程中考虑多个角度的重要性。角色提示技术被证明是最不可靠的这可能是由于其在不同上下文中的不一致性。 本文代码 https://avoid.overfit.cn/post/f64e1de74d8a423a859086dfed4d5a47 作者Homayoun S.
http://www.dnsts.com.cn/news/151752.html

相关文章:

  • seo怎么学在哪里学谷歌seo查询
  • 门户网站建设自查报告搭建个人网站的步骤
  • 手机建造网站wordpress 如何支持短代码
  • 门户网站设计要求做碳循环的网站
  • 做seo学网站wordpress电商方案
  • 手机版网站建设多少钱杭州营销网站建设平台
  • 官方网站怎样做黄浦区做网站
  • 绿色配色的企业网站管理咨询公司企业文化
  • 如何建设网站盈利聊城定制型网站开发
  • 科技网络网站建设苏州高校网站建设建议
  • 衡水做网站推广网站制作公司兴田德润i在哪里
  • 能访问各种网站的浏览器wordpress+悬浮按钮
  • 公明网站建设怎么做深圳市网站推广公司
  • 企业网站建设的基本原则有哪些?wordpress後台建站
  • 响应式网站怎么设置延安市网站建设
  • 网站建设和维护自学宜宾长宁网站建设
  • 广东建设信息网站首页6阿里云增加网站
  • 海南省住房和建设厅网站首页光明新区建设网站
  • 用竹片做的网站企业网站加快企业信息化建设
  • 做网站什么框架比较好网站模板如何编辑软件
  • 深圳福田网站建设专业公司营销类网站 英文
  • 建网站电话河北邯郸区号
  • 怎么设计网站页面东莞米可网络怎么样
  • 做logo宣传语的网站网站诊断书
  • 网站开发如何压缩图片最新闻头条新闻
  • 织梦网站模板如何安装怎么自己制作一个app
  • 建手机网站公司网站建设备案查询
  • 网站建设算什么专业自学网页设计的网站
  • 做旅游网站的目的代客做网站
  • 企业电商网站建设张雪峰建议取消市场营销