【吴恩达deeplearning.ai】基于LangChain开发大语言应用模型(下)

以下内容均整理来自deeplearning.ai的同名课程

Location 课程访问地址

DLAI - Learning Platform Beta (deeplearning.ai)

 LangChain for LLM Application Development 基于LangChain开发大语言应用模型(上)

一、LangChain: Q&A over Documents基于文档的检索问答

langchain具有检索能力,可以通过检索用户提供的文档内容,进行相应的回答。以下具体讲解实现逻辑

技术原理

1、【准备阶段】将文档内容(如列表)拆分成多个分片

2、【准备阶段】将分片通过embed技术转换为空间向量数组

3、【提问阶段】用户提问时,程序自动将提问内容embed为空间向量

4、【提问阶段】将提问的空间向量和文档生成的空间向量数组比较,找到最相似的几个

5、 【回答阶段】根据对应相关的文档切片,通过大预言模型,得到最终结果

实现方式1(检索csv进行回答)

from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI
from langchain.document_loaders import CSVLoader
from langchain.vectorstores import DocArrayInMemorySearch
from IPython.display import display, Markdown
# 安装包file = 'OutdoorClothingCatalog_1000.csv'
loader = CSVLoader(file_path=file)
# 加载文件from langchain.indexes import VectorstoreIndexCreator
index = VectorstoreIndexCreator(vectorstore_cls=DocArrayInMemorySearch
).from_loaders([loader])
# 将文件内容,转换成空间向量组query ="Please list all your shirts with sun protection \
in a table in markdown and summarize each one."
response = index.query(query)
display(Markdown(response))
# 基于问题和空间向量的相似度,找到对应相关的内容进行回答。(通过markdown转换文本到表格)

实现方式2(检索docs进行回答)

# -------------------- 单个内容转换空间向量 --------------------from langchain.embeddings import OpenAIEmbeddings
embeddings = OpenAIEmbeddings()
# 加载包embed = embeddings.embed_query("Hi my name is Harrison")
print(len(embed))
print(embed[:5])
# 将提问内容,转换为空间向量
# [-0.021913960576057434, 0.006774206645786762, -0.018190348520874977, -0.039148248732089996, -0.014089343138039112]# ---------------- 在文档中检索相关内容进行解答 -----------------db = DocArrayInMemorySearch.from_documents(docs, embeddings)
# 基于需要检索的文档,分片转换为空间向量组query = "Please suggest a shirt with sunblocking"
docs = db.similarity_search(query)
len(docs)
docs[0]
# 在文档生成的空间向量组中检索和提问相关的内容llm = ChatOpenAI(temperature = 0.0)
# 创建一个大语言进程qdocs = "".join([docs[i].page_content for i in range(len(docs))])
response = llm.call_as_llm(f"{qdocs} Question: Please list all your \
shirts with sun protection in a table in markdown and summarize each one.") 
display(Markdown(response))
# 将文档中相关的内容+提问内容,通过llm进程获取解答

检索器

langchain支持直接通过标准检索器模板,进行内容检索。以下是一些检索器介绍。

 1、stuff检索器直接将全文内容压缩,并通过语言模型进行回答。压缩过程中,可能导致信息缺失。

2、其他检索器:就不一一介绍了,看图理解

3、stuff检索器代码实现

from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI
from langchain.document_loaders import CSVLoader
from langchain.vectorstores import DocArrayInMemorySearch
from IPython.display import display, Markdown
# 加载包file = 'OutdoorClothingCatalog_1000.csv'
loader = CSVLoader(file_path=file)
docs = loader.load()
# 加载docsfrom langchain.embeddings import OpenAIEmbeddings
embeddings = OpenAIEmbeddings()
db = DocArrayInMemorySearch.from_documents(docs, embeddings
)
# 转换空间向量组retriever = db.as_retriever()
# 基于空间向量组,创建检索器qa_stuff = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever, verbose=True
)
# 创建会话query =  "Please list all your shirts with sun protection in a table \
in markdown and summarize each one."
response = qa_stuff.run(query)
# 生成回答

 二、Evaluation评估

langchain支持基于内容生成QA问答对,也支持评估已有的QA问答对,相对于实际内容的准确程度。

Outline:概要内容

  • Example generation 示例生成
  • Manual evaluation (and debuging) 人工评估
  • LLM-assisted evaluation 大语言模型辅助评估

Create our QandA application 创建一个基于stuff检索的会话

from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI
from langchain.document_loaders import CSVLoader
from langchain.indexes import VectorstoreIndexCreator
from langchain.vectorstores import DocArrayInMemorySearch
# 加载包file = 'OutdoorClothingCatalog_1000.csv'
loader = CSVLoader(file_path=file)
data = loader.load()
# 加载数据index = VectorstoreIndexCreator(vectorstore_cls=DocArrayInMemorySearch
).from_loaders([loader])
# 基于数据创建向量空间组llm = ChatOpenAI(temperature = 0.0)
qa = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=index.vectorstore.as_retriever(), verbose=True,chain_type_kwargs = {"document_separator": "<<<<>>>>>"}
)
# 创建一个基于stuff检索的会话

Hard-coded examples手工编写QA示例

examples = [{"query": "Do the Cozy Comfort Pullover Set\have side pockets?","answer": "Yes"},{"query": "What collection is the Ultra-Lofty \850 Stretch Down Hooded Jacket from?","answer": "The DownTek collection"}
]

LLM-Generated examples通过大语言模型生成QA示例

from langchain.evaluation.qa import QAGenerateChain
# 加载包example_gen_chain = QAGenerateChain.from_llm(ChatOpenAI())
# 创建QA生成链new_examples = example_gen_chain.apply_and_parse([{"doc": t} for t in data[:5]]
)
# 基于数据内容生成QA示例

Combine examples合并人工示例和大语言模型生成的示例

examples += new_examples
# 合并

Manual Evaluation人工评估

import langchain
langchain.debug = True
# 加载包qa.run(examples[0]["query"])
# 生成示例提问的AI答案(用于印证)langchain.debug = False

LLM assisted evaluation大语言模型辅助评估

predictions = qa.apply(examples)
# 对所有的示例基于大语言模型,生成回答from langchain.evaluation.qa import QAEvalChain
llm = ChatOpenAI(temperature=0)
eval_chain = QAEvalChain.from_llm(llm)
# 创建评估链graded_outputs = eval_chain.evaluate(examples, predictions)
# 对示例问题和回答进行评估for i, eg in enumerate(examples):print(f"Example {i}:")print("Question: " + predictions[i]['query'])print("Real Answer: " + predictions[i]['answer'])print("Predicted Answer: " + predictions[i]['result'])print("Predicted Grade: " + graded_outputs[i]['text'])print()
# 显示评估结果

三、 Agents代理

大语言模型一般来说并不能完成用于知识的问答(因为其知识是被压缩的,不完整),而更适合作为一个可以链接和调用工具的真人。

我们只要提供给大语言模型一些工具和信息,他就能更好的帮助我们处理特定问题

Outline:概要

  • Using built in LangChain tools: DuckDuckGo search and Wikipedia使用langchain提供的工具
  • Defining your own tools自定义工具

Built-in LangChain tools使用自带工具

from langchain.agents.agent_toolkits import create_python_agent
from langchain.agents import load_tools, initialize_agent
from langchain.agents import AgentType
from langchain.tools.python.tool import PythonREPLTool
from langchain.python import PythonREPL
from langchain.chat_models import ChatOpenAI
# 加载包llm = ChatOpenAI(temperature=0)
tools = load_tools(["llm-math","wikipedia"], llm=llm)
# 创建一个工具箱agent= initialize_agent(tools, llm, agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,handle_parsing_errors=True,verbose = True)
# 创建一个代理,加载工具箱。agent("What is the 25% of 300?")
# 调用代理回答问题,代理会自动识别此问题需要调用math数学计算,并调用计算函数获得结果question = "Tom M. Mitchell is an American computer scientist \
and the Founders University Professor at Carnegie Mellon University (CMU)\
what book did he write?"
result = agent(question) 
# 调用代理回答问题,代理会自动判断此问题需要调用wiki百科页面,获取相关百科的词条信息,并基于词条信息,生成最终的答案

Python Agent使用python代理工具

agent = create_python_agent(llm,tool=PythonREPLTool(),verbose=True
)
# 创建一个python代理customer_list = [["Harrison", "Chase"], ["Lang", "Chain"],["Dolly", "Too"],["Elle", "Elem"], ["Geoff","Fusion"], ["Trance","Former"],["Jen","Ayai"]]
agent.run(f"""Sort these customers by \
last name and then first name \
and print the output: {customer_list}""") 
# 运行代理,代理会自动判断完成词任务需要用到sorted()方法,进行如下计算sorted_customers = sorted(customers, key=lambda x: (x[1], x[0])),并最终获得结果。langchain.debug=True
agent.run(f"""Sort these customers by \
last name and then first name \
and print the output: {customer_list}""") 
langchain.debug=False
# 可以通过debug查看具体的运行细节

Define your own tool自定义工具

from langchain.agents import tool
from datetime import date
# 加载包@tool
def time(text: str) -> str:"""Returns todays date, use this for any \questions related to knowing todays date. \The input should always be an empty string, \and this function will always return todays \date - any date mathmatics should occur \outside this function."""return str(date.today())
# 自定义函数工具agent= initialize_agent(tools + [time], llm, agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,handle_parsing_errors=True,verbose = True)
# 创建代理,调用自定义函数工具try:result = agent("whats the date today?") 
except: print("exception on external access")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/17503.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

继ChatGPT之后人工智能产业曙光已现,云知声加速推动产业智能化升级

2023随着ChatGPT的出现&#xff0c;有行业的人士表示&#xff1a;“工智能产业曙光已现”。目前&#xff0c;云知声正积极推动基于ChatGPT技术的应用落地案例&#xff0c;以专业版ChatGPT切入医疗场景&#xff0c;向更多通用场景拓展&#xff0c;加速推动产业智能化升级。 云…

2023双态IT北京用户大会回顾(一) | 基于运维数据治理的数智化转型

专题演讲人&#xff1a;擎创科技CTO 葛晓波 文末附有本场专题演讲视频 ●前言 各行业的云原生发展程度各有不同&#xff0c;并不是所有业务应用都适合云原生的形态&#xff0c;如若过度追求云原生化反而会使得企业运维压力骤增&#xff0c;运维成本激增。 从数字化转型的角度…

场景数量近300个,日均执行超1万次,光大银行RPA、AI技术应用实践

本文为中国光大银行科技研发中心副处长张洁&#xff0c;作客金融电子化“你问我答”栏目&#xff0c;围绕RPA技术的优势与应用情况&#xff0c;及ChatGPT对金融行业的影响分享行业痛点及解决办法的观点整理。 主持人&#xff1a;张处您好&#xff0c;您认为在金融业务中&#…

对话爱化身涂政:元宇宙是「价值创造」经济

目前元宇宙更多还是在初级技术探索阶段。至于未来终极形态如何&#xff1f;要从技术、经济、社会、政策四个层面进行实践和思考。 作者&#xff1a;王立新 元宇宙经济是否已经到了爆发时刻&#xff1f;2021年FaceBook宣布更名Meta&#xff0c;以释放自身对元宇宙的强烈信念。20…

大咖论道|金融AI下一阶段的发展思考

编者按&#xff1a; 回顾过去十年&#xff0c;人工智能&#xff08;AI&#xff09;技术的发展速度让人惊叹&#xff0c;金融行业是现今AI应用最具潜力和最为活跃的领域之一。通过多年渗透&#xff0c;AI不间断从技术驱动迈向场景驱动&#xff0c;已广泛与金融业务深度融合&…

银行数字人如何“破圈”?

银行数字人如何“破圈”&#xff1f; 2023-07-14 20:19:38 来源: 轻金融 北京 https://www.163.com/dy/article/I9KPRMOC051982TB.html 从场景应用、发展现状、关键技术等方面&#xff0c;探讨虚拟数字人如何“破圈”金融。‍‍ 作者&#xff1a;中国银行软件中心&#xff0…

甲骨文宣布裁员并撤回已发放的部分offer;中科院紫东太初2.0大模型发布;百度获深圳无人驾驶叫车服务商业营运许可丨每日大事件...

‍ ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 企业动态 联想集团&#xff1a;AI服务器等基础设施业务收入超20亿美元 近日&#xff0c;联想集团ISG&#xff08;基础设施方案业务集团&#xff09;宣布其全球AI基础设施业务年度收入突破20亿美元&#xff0c;并公布其下…

多技术融合推动,元宇宙应用破局向前 | 爱分析报告

报告编委 黄勇 爱分析合伙人&首席分析师 文鸿伟 爱分析高级分析师 外部专家&#xff08;按姓氏拼音排序&#xff09; 唐虓 艾迪普科技 融合创新中心总经理 特别鸣谢&#xff08;按拼音排序&#xff09; 报告摘要 元宇宙作为下一代互联网的典型代表&#xff0c;很可…

世优科技数字人工厂助推政企稳抓元宇宙和ChatGPT两大风口

随着ChatGPT爆火&#xff0c;生成式AI算法的突破&#xff0c;使得AIGC&#xff08;人工智能生产内容&#xff09;进入应用爆发期&#xff0c;将给元宇宙相关产业链带来全新的想象空间。 在接下来的数字人发展趋势中&#xff0c;ChatGPT加持下的AI数字人将在相关行业如媒体、金融…

观察|ChatGPT席卷全球,AIGC还将如何变革金融银行业

近年来&#xff0c;虚拟数字人技术的发展为金融银行业数字化转型带来了新的探索方向。数字人作为元宇宙的核心交互载体&#xff0c;是未来银行与用户进行对话、打造沉浸式服务体验的重要链接渠道。截至目前&#xff0c;国内已有13家银行推出虚拟数字人员工&#xff0c;无论在手…

ChatGPT浪潮席卷,维智科技以时空AI赋能数实融合的未来城市

作者 | 伍杏玲 出品 | CSDN 每个时代都有新的技术浪潮&#xff0c;但在短短两年时间里见证两项颠覆全球的技术发展&#xff0c;实在出人意料之外&#xff1a;2021年以来&#xff0c;元宇宙成为互联网产业新风口&#xff0c;今年ChatGPT成为IT圈“顶流”&#xff0c;这两者为地…

网心科技CEO李浩:边缘计算的当下以及未来

随着ChatGPT爆火&#xff0c;生成式AI算法的突破&#xff0c;使得AIGC全面进入爆发期。在此背景之下&#xff0c;对算力的容量和分布、海量数据传输、服务成本等方面提出了很高的挑战&#xff0c;其中&#xff0c;边缘云计算能够有效扩展中心云的算力容量、解决算力分布不均、高…

禾赛科技上市首份财报:出货量激增467.5% 亏损率降至25%

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 2023年3月16日&#xff0c;禾赛科技&#xff08;美股代码&#xff1a;HSAI&#xff09;发布了上市后首份财报&#xff0c;备受瞩目。 本次&#xff0c;禾赛科技发布的是2022年第四季度和全年未经审计的财务业绩。 财报数据显…

【大模型】人工智能大模型在自动驾驶领域的应用

随着ChatGPT的火爆&#xff0c;大模型受到的关注度越来越高&#xff0c;大模型展现出的能力令人惊叹。 第一个问题&#xff1a;怎样的模型可以称之为大模型呢&#xff1f; 一般来说&#xff0c;我们认为参数量过亿的模型都可以称之为“大模型”。而在自动驾驶领域&#xff0c;大…

高二学生爆肝10个月!自学数电在《我的世界》里打造理论最快计算器,5天涨粉1万...

金磊 梦晨 发自 凹非寺量子位 报道 | 公众号 QbitAI 辛丑牛年&#xff08;2021&#xff09;&#xff0c;《我的世界》&#xff0c;一高二学生因爆肝在B站火了。 他从未接触过数电&#xff0c;一切从零开始&#xff0c;仅仅是为了搞清计算器的原理。 然后……然后…… 就直接在《…

浅谈图像生成模型 Diffusion Model 原理

重磅推荐专栏&#xff1a; 《AI 大模型之美》 揭开 ChatGPT 面纱&#xff0c;拥抱 AI 新潮流 重磅推荐专栏&#xff1a; 《Transformers自然语言处理系列教程》 手把手带你深入实践Transformers&#xff0c;轻松构建属于自己的NLP智能应用&#xff01; 可不可以先 点击下方链接…

3纳米M3首发iMac/ 台积电拟招聘6千人/ 小鹏人脸识别需对车头半跪…今日更多新鲜事在此...

日报君 发自 凹非寺量子位 | 公众号 QbitAI 大家好&#xff0c;今天是3月6日星期一&#xff0c;又是元气满满的一周。 新一周的开始&#xff0c;一起来和日报君看看最近科技圈都有哪些新鲜事吧&#xff5e; 台积电今年计划招聘6000余人 年前各大科技公司都在裁员来应对行业挑战…

追溯ChatGPT

ChatGPT 国内趋势 在国际学术界看来&#xff0c;ChatGPT / GPT-3.5 是一种划时代的产物 它与之前常见的语言模型 (Bert/ Bart/ T5) 的区别&#xff0c;几乎是导弹与弓箭的区别&#xff0c;一定要引起最高程度的重视 国际上的主流学术机构 (如斯坦福大学&#xff0c;伯克利加…

【Go】集成paypal支付接口

go 语言集成paypal支付接口 PayPal 是一种常用的在线支付服务。如果要在 Go 语言项目中使用 PayPal 支付接口&#xff0c;您需要使用 PayPal 提供的 API。下面是 Go 语言中如何集成 PayPal 支付接口的一些基本步骤&#xff1a; 注册 PayPal 帐户&#xff1a;如果您没有 PayPa…

【WhatsApp营销】不可错过的品牌WhatsApp创意营销案例分享

关键词&#xff1a;WhatsApp营销&#xff0c;营销案例 作为社交网络社区&#xff0c;WhatsApp拥有高开放率和超过20亿的用户规模&#xff0c;如何在该平台上开展营销活动&#xff0c;利用该平台进行商业行为是越来越多的品牌正在做的事。一些大品牌一直在有效地做到这一点&…