初识浪链:开启你的AI应用之旅

发布于:2024-10-24 编辑:匿名 来源:网络

温馨提示:本文虽然对浪链进行了比较全面的介绍,但也只是给你一个粗浅的了解。适合新手玩家。

所以,如果你是浪链新手,读完本文还是一头雾水,那么请你无情无情..............................给我喜欢( ???)??!有您的鼓励,我会继续努力! (??_?)?什么? Daniel:丹哥,我刚刚听到有人在谈论浪链。你知道它是什么吗? Egg先生:噢,LangChain,一个开发框架。

Daniel:你们正在开发什么样的框架? Egg先生:开发语言模型驱动的应用程序的框架 Daniel:噢,开发这种应用程序不就是写提示和调整语言模型API吗?蛋先生:是的。但LangChain使得提示的编写和API调用更加标准化。

丹尼尔:是这样吗?蛋先生:当然不仅如此,它还有很多很酷的功能。丹尼尔:例如? Dan:它可以连接外部数据源,并根据输入作为语言模型的上下文检索相关数据,从而使语言模型能够回答训练数据之外的问题。

这是浪链的检索大牛实现的:太酷了。我想到了一个场景,比如用它来连接客服的答案词汇库,这样语言模型就可以转化为专业的客服 Dan 先生:是的,这是一个很好的场景。

丹尼尔:还有其他更酷的功能吗? Mr. Egg:它允许语言模型决定采取哪些行动。丹尼尔:这个还不是很清楚。

Egg 先生:继续您的客户服务示例。如果用户问的问题是关于公司产品的,我们希望语言模型使用客服的词汇库来回答;如果是其他问题,我们希望语言模型用自己的知识直接回答。

如果是你,你会怎样实现呢? Daniel:我想我会先用语言模型来判断用户的问题是否是关于公司的产品。如果是,则使用连接词汇库的逻辑;如果没有,就用让语言模型直接回答的逻辑。

蛋先生:嗯,你的方法是硬编码逻辑。还有一种更神奇的方式,就是让语言模型决定采取哪种行为。

这是由LangChain的Agent来实现的。丹尼尔:听起来很酷。

你如何使用它? Dan先生:别急,让我慢慢解释为什么。 Daniel:丹哥,您刚才提到浪链让提示的编写和API调用更加规范。

标准化固然好,但好处大吗?用语言模型SDK不是很好吗? Dan先生:那么请举一个使用SDK与语言模型交互的例子。 Daniel:这个不简单,所以我就用这个:fireworks.ai (注:这个平台提供免费资源,访问方便) 代码语言: python 代码运行次数:0 Copy Cloud Studio code run from fireworks.client import Fireworksclient = Fireworks(api_key="")response = client.chat.completions.create( model="accounts/fireworks/models/llama-v2 -7b-chat", messages=[{ "角色": "用户", "content": "你是谁?", }],)print(response.choices[0].message.content)代码语言:bash 复制输出:Hello!我只是一名人工智能助手,尽我所能为您提供帮助。

我的目的是提供有用和尊重的回应,始终保持安全和社会公正。我在这里以积极和道德的方式为您提供帮助,并且我很乐意帮助您解决您可能遇到的任何问题或任务。

您有什么具体想要的吗我来帮你吗? Dan先生:很好,我再给你举一个语言模型的例子。丹尼尔:嗯,同样的操作。

你在开玩笑吧?好吧,那我再举个百度文心艺言的例子代码语言:python代码运行次数:0 Copy Cloud Studio代码运行 import osimport qianfanos.environ["QIANFAN_AK"] = ""os.environ["QIANFAN_SK"] = ""chat_comp = qianfan.ChatCompletion()resp = chat_comp.do(messages=[{ "role": "user", "content": "你是谁?"}])print (resp.body[ '结果']) 代码语言: bash 复制输出: 你好,我是百度开发的知识增强型大语言模型。中文名是文心一言,英文名是ERNIE Bot。

我可以与人交谈和互动。 、解答问题、辅助创作,帮助人们高效、便捷地获取信息、知识和灵感。

蛋先生:好的,现在假设我首先使用Fireworks来开发一个应用程序,但是在过程中我发现效果不是很理想。如果我想换成温馨一言怎么办?大牛:哦~,各个语言模型的SDK的接口定义都不一样,更换起来确实很麻烦。

来吧,开始你的表演了蛋先生:我们直接看一下通过浪链使用烟花和文心一言的代码示例。毕竟,没有代码就没有 BB。

Fireworks LangChain 示例代码语言:python 代码运行次数:0 复制 Cloud Studio 代码运行 import osfrom langchain_community.chat_models.fireworks import ChatFireworksos.environ["FIREWORKS_API_KEY"] = ''model = ChatFireworks(model="accounts/fireworks /models/llama-v2-13b-chat")res = model.invoke("你是谁?")print(res.content) 文心一言 LangChain 示例代码语言:python 代码运行次数:0 复制 Cloud Studio 代码运行import osfrom langchain_community.chat_models 导入QianfanChatEndpointos.environ["QIANFAN_AK" ] = ""os.environ["QIANFAN_SK"] = ""model = QiANFANChatEndpoint(model="ERNIE-Bot-turbo")res = model.invoke("你是谁?")print( res.content) Daniel:看来标准化之后,改变语言模型变得非常方便。您只需要更改模型的实例化即可。

丹先生:是的,这只是一个最简单的例子。 LangChain还有很多优雅的方式在不同模型之间进行切换。

从现在开始我们可以专注于Prompt的开发。至于语言模型,哪一种适合替换呢? Daniel:好吧,我决定进浪链了,我们再聊聊吧?蛋先生:当然!我们从简单到复杂,结合代码和流程图来展示LangChain的一些用法。

我们先从最简单的替换SDK的方法开始。代码语言上面已经提到了: python code run times: 0 复制 Cloud Studio code run res = model.invoke("tell me a short puzzle about a cat")print(res .content)image Daniel:嗯,是这样的简单的。

你一看就明白了。蛋先生:好的,那我们就用PromptTemplate来通过变量来控制模板中的部分内容。

代码语言:python 代码运行次数:0 复制 Cloud Studio 代码运行 from langchain_core.prompts import ChatPromptTemplate...prompt = ChatPromptTemplate.from_template("告诉我一个关于 {topic} 的小笑话")chain = Prompt | modelres = chain.invoke({"topic": "a cat" })print(res.content)image 大牛:使用PromptTemplate来写提示确实比字符串拼接优雅多了。 Dan 先生:让我们添加一个简单的输出转换。

代码语言:python 代码运行次数:0 copy Cloud Studio 代码运行 from langchain_core.prompts import ChatPromptTemplatefrom langchain_core.output_parsers import StrOutputParser...prompt = ChatPromptTemplate.from_template("告诉我一个关于 {topic} 的小笑话")output_parser = StrOutputParser( ) 链 = 提示 |型号| output_parserres = chain .invoke({"topic": "a cat"})print(res)imageDaniel: 终于知道为什么叫链了。蛋先生:继续吗? Daniel:继续... Egg先生:下面的代码可能有点长。

代码语言:python 代码运行次数:0 复制 Cloud Studio 代码运行 from langchain_community.embeddings import QifanEmbeddingsEndpoint from langchain_community.document_loaders import WebBaseLoaderfrom langchain_community.vectorstores import faissfrom langchain_community。 chat_models 导入QianfanChatEndpointfrom langchain.text_splitter 导入RecursiveCharacterTextSplitterfrom langchain.chains.combine_documents 导入create_stuff_documents_chainfrom langchain_core.prompts 导入ChatPromptTemplatefrom langchain_core.runnables 导入RunnableParallel,RunnablePassthroughfrom langchain_core.output_parsers 导入StrOutputParser # 1docs = WebBaseLoader("=QianfanEmbeddingsEndpoint()documents = RecursiveCharacterTextSplitter(chunk_size=). split_documents(docs)向量 = faiss.FAISS.from_documents(文档, 嵌入)retriever = vector.as_retriever(search_kwargs={'k': 4})# 2setup_and_retrieval = RunnableParallel({"context":检索器, "input": RunnablePassthrough()})prompt = ChatPromptTemplate.from_template("""仅根据提供的上下文回答以下问题:{context}问题:{input }""")model =QianfanChatEndpoint(streaming=False, model="ERNIE-Bot-turbo")output_parser = StrOutputParser()# 3retrieval_chain = setup_and_retrieval |提示|型号| output_parserres =retrieval_chain.invoke("langsmith如何帮助测试?")print(res) Daniel:请把“可能”去掉,谢谢 Dan先生:但是逻辑其实并不复杂。

主要分为三个部分 1)加载网页文档,通过 Embeddings 将文档内容转换为向量,并存储在向量数据库 FAISS 中,retrieve 是一个检索工具,可以基于向量数据库获取相关文档在输入上。 2) 声明链的每个步骤。

3)按顺序链接步骤。丹尼尔:等等,看起来有点痛吗?嵌入?向量?矢量数据库?蛋先生:今天是我们的“第一次探索”,所以只能简单聊聊,不然很多同学会睡着的。

丹尼尔:没问题,有一个大概的印象很好。蛋先生:首先我们为什么要把文本转换成向量呢?因为通过计算两个向量之间的距离,我们可以定量评估它们的相关性。

距离越小通常意味着文本之间的相关性越高。这里我们需要的是检索与输入相关的文档内容并将其作为对话上下文提供给语言模型。

如果整个文件都传输的话会不会太大?丹尼尔:哦,原来向量还有这么高级的功能。蛋先生:是的。

那么要将文本转换成向量,就需要用到Embeddings(词嵌入)技术。 Embeddings历史上有很多方法,比如基于统计的计数方法、基于神经网络的推理方法等。

QifanEmbeddingsEndpoint是通过深度学习训练得到的Embeddings模型服务。输入是文本,输出是向量。

丹尼尔:我大概明白了一点。蛋先生:那我们看一下流程图。

Image Daniel:你能给我解释一下上面的过程吗?图片前半部分 蛋先生:当然!第一个输入是“langsmith 如何帮助测试?”;然后是并行逻辑,一是通过Retriever根据输入作为上下文值检索相关文档内容,二是直接将输入作为输入值传递;然后将数据传递给Prompt模板即可,最后就可以得到传递给语言模型的PromptValue了。丹尼尔:曾我先生:注意,结局即将到来。

现在让我们请来著名的经纪人。代码语言:python 代码运行次数:0 复制 Cloud Studio 代码并运行 from langchain import hubfrom langchain.agents import AgentExecutor, create_json_chat_agentfrom langchain.tools import toolfrom langchain_community.chat_models.fireworks import ChatFireworks@tooldef leng(word: str) -> str : """如果你想求单词的长度,请使用这个工具。

""" return len(word)@tooldef lower(word: str) -> str: """如果你需要的话,请使用这个工具将单词更改为小写。""" return f'dx_{word.lower()}'tools = [leng, lower]model = ChatFireworks(model="accounts/fireworks/models/llama-v2-70b-chat")prompt = hub.pull("hwchase17/react-chat-json")agent = create_json_chat_agent(模型、工具、提示、stop_sequence=False) agent_executor = AgentExecutor(agent=agent,tools=tools, verbose=True,handle_parsing_errors=True,max_iterations=5) res = agent_executor.invoke({"input": "将这个单词小写:'Daniel'"})print(res ) 代码语言: sh copy {'input': "将这个单词小写:'Daniel'", 'output': "'Daniel' 的小写版本是 'dx_daniel'"} Daniel:好的,请快速解释一下。

Dan先生:首先我们声明了两个工具:一个是leng(用于求字符串的长度),另一个是lower(用于将字符串改为小写)。为了证明结果是通过我们的工具得到的,所以我特意在下层实现中添加了一个 dx_ 前缀。

Daniel:等等,hub.pull("hwchase17/react-chat-json") 中的神秘代码是什么? Egg先生:这是LangChain hub社区分享的众多用于实现Agent的提示之一。您可以在这里找到许多有用的提示。

毕竟语言工程也是一门艺术,需要实践和积累。Daniel:明白了,请继续。

Egg 先生:有了 Agent,语言模型就可以根据输入来决定使用哪个工具。 Daniel:哇,这太神奇了!我对它如何做出自己的判断很感兴趣。

Dan先生:简单来说,语言模型可以根据输入和每个工具的描述来判断哪个工具更适合,然后将结果输出为LangChain可以理解的执行指令(比如JSON)大牛: 惊人的!现在我对浪链有了一个大概的了解,希望以后能继续和大家进行深入的探讨。

初识浪链:开启你的AI应用之旅

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 深八明星独角兽PaLantir:硅谷信用游戏的混乱

    深八明星独角兽PaLantir:硅谷信用游戏的混乱

    via Getty Images 硅谷最神秘、估值最高的大数据公司PaLantir一直受到业界追捧,是其中之一。 硅谷估值排名前四的初创公司。 热的。 据pitchbaok最新数据显示,Pa旗下的Lantir已累计融资25亿美元,公司最新估值达到1亿美元,仅次于Uber、Airbnb和小米。 然而,继硅谷宠儿Ther

    06-17

  • 千亿打印机市场,汉图科技赚耐心钱

    千亿打印机市场,汉图科技赚耐心钱

    在千亿打印机市场,汉图科技正在赚钱。 2017年3月3日,薇娅在直播中推荐了极印写真打印机。 上架后5分钟内,所有单位都被抢购一空。 什么样的打印机引发了如此购买热潮?吉印是一款非常小巧的家用打印机,只有餐巾纸盒大小,但完全可以满足人们的基本需求。 完全围绕手机设计

    06-18

  • 欧达激光完成新一轮数千万Pre-A轮融资,由东方富海领投

    欧达激光完成新一轮数千万Pre-A轮融资,由东方富海领投

    欧达激光于今年12月成立。 是一家专注于短波长光纤激光器精密加工的科技创新企业。

    06-17

  • 网信办:在境外上市用户信息超百万的运营商须接受审查

    网信办:在境外上市用户信息超百万的运营商须接受审查

    创头条获悉,7月10日,网信办发布了《网络安全审查办法(修订草案征求意见稿)》公开征求意见的通知。 要求拥有1万以上用户个人信息且欲在境外上市的经营者,必须向网络安全审查办公室申请网络安全审查。 其中,网络安全审查重点评估采购活动、数据处理活动、境外上市等可能

    06-18

  • 张有之文学,当代年轻人最真实的代言人

    张有之文学,当代年轻人最真实的代言人

    最近在抖音,我总是看到一个神秘人的名字:张有之。 他是一名研究生,也是一名公务员。 有时是男人,有时是女人。 有时他是中年人,有时他是青少年。 有时肚子大了,有时又为家里的粮米油盐发愁。 有时候,本科毕业的张友智会在咖啡店兼职,但因为老板要求工作速度更快,加上

    06-18

  • 智能代理在医疗行业的应用

    智能代理在医疗行业的应用

    .wp-block-column h3{margin-left:0} 随着人工智能技术的快速发展,智能代理在医疗行业的应用逐渐成为一种趋势。 在医疗行业,智能代理可以发挥重要作用,为医院、医院和医生提供更好的服务和支持。 本文将围绕智能代理技术在医疗行业的应用场景和作用,详细介绍其在医疗领域

    06-18

  • 【融资24小时】2022年6月20日

    【融资24小时】2022年6月20日

    6月20日投融资事件汇总及详情)、本地生活3例(Vetreska、安安宠物互助、勃固生鲜)、企业服务3例(北京宁思科技、艾设计、易智智能)、3例医疗健康案例(科默医药、安旭源、格物智和)、电商零售案例2个(红河酒业、armilk五道牛奶)、汽车交通案例2个(潮汐集团、云科安信)

    06-18

  • 当当网:李国庆再次率领20余人强行闯入当当网获取信息

    当当网:李国庆再次率领20余人强行闯入当当网获取信息

    上头条 7月7日上午,当当网官方微博发文称,当当网创始人与前董事长李国庆再次诉诸武力并于凌晨带领20余人强行闯入当当网。 闯入当当网,撬开多个保险箱,拿走信息。 该公司已报警,目前正在处理此事。 此前,4月26日,当当网声称李国庆等5人闯入公司并盗走公章。

    06-18

  • 去哪儿涨价或因IPO压力遭遇代理商激烈抵制

    去哪儿涨价或因IPO压力遭遇代理商激烈抵制

    中国最大的旅游搜索网站去哪儿网(简称“去哪儿”)陷入“抵制”风波。   4月初以来,去哪儿酒店产品主要供应商艺龙网、芒果网、同程网、腾邦国际等约10家主流OTA网站(在线旅行社)均已从去哪儿网站“集体下线”相应酒店产品。   上述OTA网站表示,被迫离开的直接原因是

    06-18

  • 广东省熟菜产业基金体系宣布设立:50亿母基金+100亿子基金群

    广东省熟菜产业基金体系宣布设立:50亿母基金+100亿子基金群

    投资界消息(ID:pedaily),1月6日,广东熟菜双节营销由广东省政府指导省农业农村厅产销对接活动暨颁奖仪式在中国国际凉菜(白云)展示体验中心举行。 农业基金设立的广东预制蔬菜产业发展基金体系正式启动。 为落实省政府《加快推进广东预制菜产业高质量发展十条措施》工作

    06-18

  • 随着谷歌扩大通信版图,运营商会失去这块蛋糕吗?

    随着谷歌扩大通信版图,运营商会失去这块蛋糕吗?

    美国时间7月12日,谷歌宣布将国际虚拟运营商Three纳入其“Project Fi联盟”阵营,这表明谷歌正在加速海外无线网络布局。 三个覆盖主要英联邦国家和地区,包括澳大利亚、丹麦、香港、爱尔兰、意大利和瑞典。 谷歌表示,与Three的合作将使国际旅行用户的数据传输速度提高10-20倍

    06-17

  • 手机关机后真的还能定位吗?

    手机关机后真的还能定位吗?

    如果您的手机丢失,您必须尽快登录云服务搜索其位置。 否则,如果有人拿起并关机,您将无法找到您的手机。 您的朋友可能已经这样提醒过您。 手机关机后真的无法定位吗?答案是不。 有些 iPhone 关机后仍可定位。 您可以通过Apple提供的搜索功能找到丢失的手机。 手机关机状态

    06-21