目录
前言
一、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使用过程进行零星记录,希望可以帮助一些小伙伴。