LangChain,一个用于大模型相关开发的框架
其就像是一个乐高积木一样,可以按照自己需要的部分快速构建项目
其支持Python和Java script两个版本,我们主要以Python进行演示
首先是安装
其安装相对比较简单
pip install langchain
pip install –upgrade langchain
这是最基本的依赖项,如果需要跟不同的模型进行集成,可能需要安装其他依赖。
比如
pip install openai等
或者考虑直接安装完整包
pip install langchain[llms]
GitHub社区的地址
https://github.com/langchain-ai/langchain
LangChain也提供了详细的API文档
https://python.langchain.com/docs/get_started
这里我们以OpenAI 为例,进行演示
不过之前,我们需要得到一个API Key
而在GPT之中,主要分为两个模型,分为了Chat Model,Text Model
分别对应了聊天模型,可以产生人与AI之间的对话
其次是文本模型,主要是根据一个任务进行直接返回
这里我们先看下调用Text模型的流程
不过在此之前,我们先看下openai key的使用方式,分为了环境变量和直接使用
环境变量可以为
import os
os.environ[“OPENAI_API_KEY”] = ‘你的Open API Key’
export OPENAI_API_KEY=’你的Open API Key’
直接使用
import openai
openai.api_key = ‘你的Open API Key’
之后就是关于Text模型的使用
import openai
response = openai.Completion.create( model=”text-davinci-003″, temperature=0.5, max_tokens=100, prompt=”请给我的花店起个名”)
然后从response中讲结果进行取回
print(response.choices[0].text.strip())
我们从response中讲结果取出
对于请求,其中包含常见的参数
其中的关键在于
prompt是语言传入
model是指定模型
然后是响应,其中包含
其中重点在于choices,一个列表,其中包含了模型生成的所有输出
这个列表中包含了多个字典,每个字典包含如下字段
text 模型生成的文本
finish_reason 模型停止原因
这样,我们print获取到了输出结果
对于chat模型的调用
示例如下
import openai
response = openai.ChatCompletion.create(model=”gpt-4″, messages=[{“role”: “system”, “content”: “You are a creative AI.”}, {“role”: “user”, “content”: “请给我的花店起个名”}, ], temperature=0.8, max_tokens=60) print(response[‘choices’][0][‘message’][‘content’]) |
一个是消息,一个是角色
Role中我们设定了一个角色,可以是system,user或者assistant
然后content 消息内容
对于system,主要用于设定对话的背景和上下文,帮助ai理解其在对话中的对色和任务,例如,可以告诉ai,他是在扮演一个医生,律师等
对于user,则是实际请求ai想要其帮忙完成的事情
对于assistant,则是模型的回复,可以在其中提供给ai之前其回复的内容,方便其进行记忆和模型行为设定。
{‘id’: ‘chatcmpl-2nZI6v1cW9E3Jg4w2Xtoql0M3XHfH’, ‘object’: ‘chat.completion’, ‘created’: 1677649420, ‘model’: ‘gpt-4’,
‘usage’: {‘prompt_tokens’: 56, ‘completion_tokens’: 31, ‘total_tokens’: 87}, ‘choices’: [
{‘message’: {‘role’: ‘assistant’, ‘content’: ‘你的花店可以叫做”花香四溢”。’}, ‘finish_reason’: ‘stop’, ‘index’: 0}]}
其返回的内容中choice返回了请求时带的role
对于这两种模型,可以从上面提供的信息看出来各有优缺点。
相较于Text模型,Chat模型的设计更适合处理对话或者多轮次交互的情况。这是因为它可以接受一个消息列表作为输入,而不仅仅是一个字符串。这个消息列表可以包含system、user和assistant的历史信息,从而在处理交互式对话时提供更多的上下文信息。
当然对于简单的单轮文本生成任务,使用Text模型更加简单可能
那么我们看下如何使用LangChain来访问Open AI
首先是Text模型
import os
os.environ[“OPENAI_API_KEY”] = ‘你的Open API Key’ from langchain.llms import OpenAI llm = OpenAI(model=”text-davinci-003″, temperature=0.8, max_tokens=60, ) response = llm.predict(“请给我的花店起个名”) print(response) |
这是对Open AI的简单调用
导入LangChain的OpenAI类,创建一个LLM 大语言模型对象,然后指定对象和一些生成参数,之后调用predict函数即可
对于Chat模型
import os
os.environ[“OPENAI_API_KEY”] = ‘你的Open API Key’ from langchain.chat_models import ChatOpenAIchat = ChatOpenAI(model=”gpt-4″, temperature=0.8, max_tokens=60) from langchain.schema import (HumanMessage, SystemMessage) messages = [SystemMessage(content=”你是一个很棒的智能助手”), HumanMessage(content=”请给我的花店起个名”)] response = chat(messages) |
比如Text模型,多传入了SystemMessage和HumanMessage类
进行了传入,并调用chat获取到了response变量中
Response包含的内容则是
content=’当然可以,叫做”花语秘境”怎么样?’ additional_kwargs={} example=False
上面可以看出,如果尝试调用LangChain框架的函数,其代码更加简洁,简单。
除了这些大语言模型之外,还可以在开源社区HugginFace网站上访问更多的开源模型