前言
在学习OpenAI和框架Langchain的过程中,当时有个疑问,为啥有时候出现OpenAI,而有时会出现它:ChatOpenAI,有什么区别呢?还有也多次遇到过Completions、Model等术语,这类资料比较少,后来经过一点点尝试和源代码的走读,慢慢了解了...
这里抽丝剥茧,分享给大家,跟大家共同学习共同进步:)
理论篇
ChatOpenAI
- 基于消息而不是原始文本
- 支持的消息类型:AIMessage、HumanMessage、SystemMessage、FunctionMessage和ChatMessage
- ChatMessage接受任意角色参数 一般情况,只需处理HumanMessage、AIMessage和SystemMessage
OpenAI
- 基于原始文本
- 支持的消息类型很简单:就是文本
初步比较
OpenAI
程序
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
from langchain_openai import OpenAI
openai = OpenAI(model_name="gpt-3.5-turbo-instruct", temperature=0)
# 使用模型'gpt-3.5-turbo-instruct'
response = openai.invoke("你好啊, AI小助手")
print(response)
print("type", type(response))
输出结果
简单分析
- 支持的Model:
gpt-3.5-turbo-instruct
,babbage-002
,davinci-002
- 输出结果为str(字符串)
ChatOpenAI
程序
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage
chat = ChatOpenAI(temperature=0, model_name="gpt-3.5-turbo")
# using 'gpt-3.5-turbo' model
response = chat.invoke([HumanMessage(content="你好啊, AI小助手")])
print(response)
print("type", type(response))
输出结果
简单分析
- 支持的Model:
gpt-4
and dated model releases,gpt-4-turbo-preview
and dated model releases,gpt-4-vision-preview
,gpt-4-32k
and dated model releases,gpt-3.5-turbo
and dated model releases,gpt-3.5-turbo-16k
and dated model releases, fine-tuned versions ofgpt-3.5-turbo
- 输出结果为AIMessage
进阶一点
官网介绍
先关注圈中的部分就行,其他看不懂的我后面再给大家一点点介绍,我们一起学: )
混用会咋样
- OpenAI 用chat completions Model
- ChatOpenAI 用 completions (Legacy)
不指定Model会怎样
- OpenAI默认用
gpt-3.5-turbo-instruct
- ChatOpenAI默认
gpt-3.5-turbo
看源码就知道为啥了:)
附加:Temperature释义
翻译过来的意思:Temperature取值范围为[0, 2]
- 当值越小 会产生更一致的输出(例如 0.2)
- 当值越大 产生更加多样化和创造性的结果
请看官自行试试就知道了:)