图片

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网站上访问更多的开源模型

https://huggingface.co/

发表评论

邮箱地址不会被公开。 必填项已用*标注