langchain使用零星记录

server/2024/10/8 13:02:16/

目录

前言

一、AIN.html" title=langchain>langchain是什么?

二、使用零星记录

1.llm

2.tool调用

总结


前言

AIN.html" title=langchain>langchain使用过程的一些坑点,做一些记录,便于日后回顾查找,也为同样在学习的小伙伴们异同一些可能的帮助。

期望在学习使用一段时间之后,可以系统性的写一些更有价值的内容出来。


一、AIN.html" title=langchain>langchain是什么?

AIN.html" title=langchain>langchain是一个AI开发框架,把各种AI功能调用进行封装,方便开发人员调用。他将不同大模型的调用封装起来,可以让开发人员更好的将精力放在业务功能上面。

比如每家大模型的调用方式不尽相同,AIN.html" title=langchain>langchain则进行这些大模型调用进行了封装、抽象,可以让你不管是调用哪个大模型,你只需要定义一个llm,即可llm.invoke去调用大模型。

其他封装还包括I/O封装(输入、输出)、数据封装(ARG相关如文件读取拆分、向量数据库)、内存封装(对话记录)、chain调用等。

二、使用零星记录

1.llm

AI开发不可避免要调用大模型,多数demo案例都是直接调用openai,而AIN.html" title=langchain>langchain其实也支持了很多其他的大模型。

针对openai,ChatOpenAI的定义在langchai_openai下(专门给openai一个包)

其他大模型定义在langchai_community下,如ChatTongyi(通义千问的)。实际还分llms(基础大模型)和chat_models(对话大模型)

然后这些大模型定义的内部,其实又引用了各自的包,如ChatTongyi内部引用了灵极(dashscope)

具体调用的时候,需要设置下对应的api_key、base_url等。

另外,使用api代理的话(比如我用的oneapi,可以把其他大模型配置到oneapi上面,然后开发层面都是调用这个base_url,调用不同模型只需改下model参数),可以封装为调用openai的形式,这样更方便,这种情况是需要设置base_url。

其实现在好多大模型,都是在往openai上面靠,包括chatglm、01、Moonshot…,甚至改下api_key、base_url就可以直接通过openai的包来调用,给开发人员是省事了,大模型开发商也省事了,只管优化大模型功能就好,打造SDK的功夫省下了

2.tool调用

tool调用其实就是function call功能,本地定义了一些tool(如加法、减法、查询天气等),然后把用户问题(如11+22=?、北京的天气怎么样?)+tool信息传递给大模型,大模型发现有传递tool信息,于是分析对应问题应该调用什么tool,然后返回这个问题需要调用什么tool,以及调用需要什么参数(当前我们传递tool信息的时候参数说明也有了,大模型是把具体参数值给设好了)

llm一开始,我用的ChatTongyi(通义千问),发现报错,原来是针对ChatTongyi的bind_tools接口AIN.html" title=langchain>langchain未实现

那就用openai吧,AIN.html" title=langchain>langchain最早也是基于openai开发的,那自然没问题。然后通过调用oneapi统一api的方式,修改model参数以实现调用其他模型。结果试了好几个都不通,无法返回tool调用信息。glm-4、SparkDesk-v.5、qwen-plus、yi-34b-0205…

Moonshot这方面比较让我觉得惊艳,我们都知道它的主打是长上下文,但是在fc调用上竟然也可以通。通过oneapi调用该model参数、通过直接修改api_key、base_url(Moonshot可以直接使用openai包)都可以成功实现tool调用功能


总结

本文主要针对AIN.html" title=langchain>langchain使用过程进行零星记录,希望可以帮助一些小伙伴。


http://www.ppmy.cn/server/20549.html

相关文章

华为云FunctionGraph构建高可用系统的实践

导语 每年,网上都会报道XXX系统异常不可用,给客户带来巨大的经济损失。云服务的客户基数更大,一旦出现问题,都将给客户和服务自身带来极大影响。本文将基于华为云FunctionGraph自身的实践,详细介绍如何构建高可用的Se…

汽车新智能图谱里:理解腾讯的AI TO B路径

将自身的C2B产品和产业理解充分AI化,在自身内部场景率先验证跑通后,进而释放给产业伙伴,对应到具体的需求痛点,一起打磨对应的行业AI模型。 这也恰是腾讯“实用”标签背后的AI产业路径。 作者|皮爷 出品|产业家 成本、性价…

面试:类加载过程、双亲委派

一、类加载分为三个阶段 1、加载 将类的字节码载入方法区,并创建类.class 对象如果此类的父类没有加载,先加载父类加载是懒惰执行 2、链接 验证–验证类是否符合Class规范,合法性、安全性检查准备-为static变量分配空间,设置默认…

基于SpringBoot + Vue实现的家政服务管理系统设计与实现+毕业论文+答辩PPT+指导搭建视频(包运行成功)

目录 项目介绍 论文展示 资源获取 项目介绍 家政服务管理平台是一个管理信息系统,为了宣传的需要,为了给用户提供方便快捷的服务,从而设计了家政服务管理平台。管理员可以通过这个系统把家政服务信息发布出去,可以方便用户快…

汽车新四化,会发生什么?

北京国际汽车展览会正如火如荼地进行中,作为国内外汽车行业瞩目的盛会,众多车企纷纷亮出了自家的“杀手锏”。 这场汽车的盛宴不仅集中展示了众多汽车品牌的最新技术和产品,更深刻体现了汽车新四化的发展趋势。汽车新四化,即电动化、网联化、…

python在Django中使用django-mptt库来实现无限级树结构非常直观和方便

在Django中使用django-mptt库来实现无限级树结构非常直观和方便。django-mptt(Modified Preorder Tree Traversal)是一个用于Django模型的树形结构字段的库,它允许你通过递归的方式轻松地构建和操作树形结构。 下面是一个使用django-mptt和MySQL数据库实现无限级树结构的基…

Swift手撸轮播效果

一、创建ScrollView objcMembers class LSLottieAnimView: UIView, UIScrollViewDelegate {private var scrollView: UIScrollView UIScrollView()func addScrollView() {scrollView.showsHorizontalScrollIndicator falsescrollView.isPagingEnabled true// 自定义framesc…

常见SSH功能概述

SSH的基本功能详解 用户身份验证 密码认证 密码身份验证是SSH中最基本的认证形式。在这种方式下,用户输入用户名和密码进行登录。密码在网络中的传输是加密的,保证了认证过程的安全性。尽管如此,基于密码的登录通常易于暴力破解&#xff0…