AI-大语言模型LLM-LangChainV1.0学习笔记-OpenAI类和ChatOpenAI类

目的

为避免一学就会、一用就废,这里做下笔记

内容

在 langchain-openai 库中,OpenAI 和 ChatOpenAI 是两个完全不同 的类,它们的核心区别在于针对的模型类型 和输入输出格式 。简单来说:OpenAI 是"古典派",ChatOpenAI 是"现代派"。

📊 核心区别对比

对比维度 OpenAI ChatOpenAI
API 端点 /v1/completions (文本补全接口) /v1/chat/completions (聊天补全接口)
模型类型 文本补全模型 (旧版),如 text-davinci-003、gpt-3.5-turbo-instruct 聊天模型 (现代),如 gpt-3.5-turbo、gpt-4、gpt-4o
输入格式 纯文本字符串 消息列表 (SystemMessage, HumanMessage, AIMessage 等)
输出格式 字符串 AIMessage 对象 (包含 content、tool_calls 等字段)
功能支持 基础文本生成 支持多轮对话、工具调用、JSON模式、流式输出
当前状态 仅用于兼容旧代码或嵌入模型 所有新项目首选,与LangChain生态无缝集成

🔍 为什么会有两个类?

这个区别的根源在于 OpenAI API 的演进历史:

  1. 早期阶段 :OpenAI 提供 /v1/completions 接口,模型只是对输入的 prompt 进行"续写"
  2. 现代阶段 :OpenAI 推出 /v1/chat/completions 接口,模型能够理解消息角色(system/user/assistant),支持真正的对话
  3. 现状 :OpenAI 已将 /v1/completions 接口标记为 Legacy(遗留),不再为新模型提供

📝 代码示例对比

使用 OpenAI(旧版文本补全)

python 复制代码
from langchain_openai import OpenAI

# 仅支持特定的 instruct 模型
llm = OpenAI(model_name="gpt-3.5-turbo-instruct")

# 输入是纯文本,输出是字符串
response = llm.invoke("你好啊,AI小助手")
print(response)  # 字符串
print(type(response))  # <class 'str'>

使用 ChatOpenAI(现代聊天模型)

python 复制代码
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage, SystemMessage

# 支持所有现代聊天模型
chat = ChatOpenAI(model_name="gpt-3.5-turbo")

# 输入是消息列表,输出是 AIMessage 对象
messages = [
    SystemMessage(content="你是一个知识渊博的助手"),
    HumanMessage(content="你好啊,AI小助手")
]
response = chat.invoke(messages)
print(response.content)  # 获取文本内容
print(type(response))  # <class 'langchain_core.messages.ai.AIMessage'>

💡 如何选择?

  • 使用 ChatOpenAI 如果你:

    • 使用现代模型(GPT-3.5-turbo、GPT-4、GPT-4o 等)
    • 构建对话应用或智能体(Agent)
    • 需要工具调用、结构化输出等高级功能
    • 推荐用于所有新项目
  • 使用 OpenAI 仅当:

    • 需要兼容遗留的文本补全模型
    • 使用嵌入模型(如 text-embedding-ada-002)
    • 不推荐用于新项目的对话场景
相关推荐
qq_2842740528 分钟前
数控铣床与加工中心笔记:铣刀与刀柄系统、G54试切对刀、镜像加工指令、孔加工工艺(钻扩铰镗)与固定循环G73/G83/G81/G76/G87/G84
笔记·学习·自动化·制造
Dawson Zhu29 分钟前
《Agentic Design Patterns》第 9 章导读:学习与适应(Learning and Adaptation)
人工智能·语言模型·架构·aigc·agi
IT研究所36 分钟前
AI-ITR平台如何减少客户问题反复升级?
大数据·运维·人工智能·低代码·自然语言处理·安全架构·企微
SEO_juper1 小时前
用 Python 写一个 GEO 可见性检查脚本:你的网站现在能被 AI 引用吗
开发语言·人工智能·爬虫·python·seo·外贸独立站
小易老师AI实战1 小时前
RLHF深度详解(超通俗+原理+工程+对比):大模型对齐的核心基石
人工智能·大模型·sft·rlhf·ppo·人类反馈强化学习·llm 对齐
资深电气设计1 小时前
高压直流母线系统测试是什么?宜迈思液冷直流负载方案技术说明
人工智能
数智工坊1 小时前
视觉SLAM第12讲|地图构建:单目稠密重建、RGB-D点云与八叉树地图全解析
人工智能·深度学习·矩阵·机器人
回眸&啤酒鸭1 小时前
【回眸】OpenSwarm 多智能体协作系统实战指南
大数据·前端·人工智能
博图光电1 小时前
Libra 27105相关技术参数
人工智能·数码相机
Titan20241 小时前
MySQL访问个人学习笔记
笔记·学习·mysql