Chat Model:聊天模型,用于产生人类和AI之间的对话
Text Model:文本模型
调用 Text Model
-
先注册好OpenAI API Key。
-
用
pip install openai命令来安装OpenAI库。 -
导入 OpenAI API Key。
-
导入OpenAI库,并创建一个Client。
from openai import OpenAI client = OpenAI() -
指定Text Model,并调用completions方法。
response = client.completions.create( model="gpt-3.5-turbo-instruct", temperature=0.5, max_tokens=100, prompt="请给我的花店起个名")常见参数如下:
-
打印输出大模型返回的文字。
print(response.choices[0].text.strip())在使用Text模型(如text-davinci-003)的情况下,响应对象的主要字段包括:
choices字段是一个列表,因为在某些情况下,你可以要求模型生成多个可能的输出。每个选择都是一个字典,其中包含以下字段:
- text:模型生成的文本。
- finish_reason:模型停止生成的原因,可能的值包括 stop(遇到了停止标记)、length(达到了最大长度)或 temperature(根据设定的温度参数决定停止)。
调用 Chat Model
示例代码:
response = client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are a creative AI."},
{"role": "user", "content": "请给我的花店起个名"},
],
temperature=0.8,
max_tokens=60
)
先说消息,消息就是传入模型的提示。此处的messages参数是一个列表,包含了多个消息。每个消息都有一个role(可以是system、user或assistant)和content(消息的内容)。系统消息设定了对话的背景(你是一个很棒的智能助手),然后用户消息提出了具体请求(请给我的花店起个名)。模型的任务是基于这些消息来生成回复。
再说角色,在OpenAI的Chat模型中,system、user和assistant都是消息的角色。每一种角色都有不同的含义和作用。
- system:系统消息主要用于设定对话的背景或上下文。这可以帮助模型理解它在对话中的角色和任务。例如,你可以通过系统消息来设定一个场景,让模型知道它是在扮演一个医生、律师或者一个知识丰富的AI助手。系统消息通常在对话开始时给出。
- user:用户消息是从用户或人类角色发出的。它们通常包含了用户想要模型回答或完成的请求。用户消息可以是一个问题、一段话,或者任何其他用户希望模型响应的内容。
- assistant:助手消息是模型的回复。例如,在你使用API发送多轮对话中新的对话请求时,可以通过助手消息提供先前对话的上下文。然而,请注意在对话的最后一条消息应始终为用户消息,因为模型总是要回应最后这条用户消息。
响应对象的主要字段包括:
通过 LangChain 调用 Text 和 Chat 模型
调用 Text Model
import os
os.environ["OPENAI_API_KEY"] = '你的Open API Key'
from langchain.llms import OpenAI
llm = OpenAI(
model="gpt-3.5-turbo-instruct",
temperature=0.8,
max_tokens=60,)
response = llm.predict("请给我的花店起个名")
print(response)
调用 Chat Model
import os
os.environ["OPENAI_API_KEY"] = '你的Open API Key'
from langchain.chat_models import ChatOpenAI
chat = ChatOpenAI(model="gpt-4",
temperature=0.8,
max_tokens=60)
from langchain.schema import (
HumanMessage,
SystemMessage
)
messages = [
SystemMessage(content="你是一个很棒的智能助手"),
HumanMessage(content="请给我的花店起个名")
]
response = chat(messages)
print(response)
思考题
-
从今天的两个例子看起来,使用LangChain并不比直接调用OpenAI API来得省事?而且也仍然需要OpenAI API才能调用GPT家族模型。那么LangChain的核心价值在哪里?至少从这两个示例中没看出来。针对这个问题,你仔细思考思考。
答:
- 流水线任务处理:LangChain可以通过链式调用多个LLM,形成灵活的任务分解流水线,针对不同的模块给出不同的解答方案。
- 模型无缝切换:支持多种模型平台,便于比较不同模型的性能和效果。
核心价值在于其可扩展性和对复杂任务的适配能力上。
-
LangChain支持的可绝不只有OpenAI模型,那么你能否试一试HuggingFace开源社区中的其它模型,看看能不能用。
答:
from langchain import HuggingFaceHub llm = HuggingFaceHub(model_id="bigscience/bloom-1b7")不能用,没有API Key。
-
上面我提到了生成式模型,那么,大语言模型除了文本生成式模型,还有哪些类别的模型?比如说有名的Bert模型,是不是文本生成式的模型?
答:
还有其他类别的模型:
- encoder-decoder model:既可以用来生成任务,也可以用来理解任务。
- discriminator model(判别式模型):用来分类或者判断。
Bert不是文本生成式的模型,应该属于判别式模型,主要任务是对文本进行分类、判断或编码,而不是生成新内容,其预训练过程是MLM和NSP,跟传统的文本生成式模型的预训练任务都不一致。