ChatOpenAI
本 Notebook 提供了使用 OpenAI 聊天模型 的快速入门指南。如需了解 ChatOpenAI 所有功能和配置的详细文档,请前往 API 参考。
OpenAI 拥有多种聊天模型。您可以在 OpenAI 文档 中找到有关其最新模型、成 本、上下文窗口和支持的输入类型的信息。
Azure OpenAI
请注意,某些 OpenAI 模型也可以通过 Microsoft Azure 平台 访问。要使用 Azure OpenAI 服务,请使用 AzureChatOpenAI 集成。
概述
集成详情
| 类别 | 包 | 本地 | 可序列化 | JS 支持 | 包下载量 | 包最新版本 |
|---|---|---|---|---|---|---|
| ChatOpenAI | langchain-openai | ❌ | beta | ✅ |
模型特性
| 工具调用 | 结构化输出 | JSON 模式 | 图片输入 | 音频输入 | 视频输入 | Token 级别流式传输 | 原生异步 | Token 使用量跟踪 | Logprobs |
|---|---|---|---|---|---|---|---|---|---|
| ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ |
设置
要访问 OpenAI 模型,您需要创建一个 OpenAI 账户,获取 API 密钥,并安装 langchain-openai 集成包。
凭证
请访问 https://platform.openai.com 注册 OpenAI 并生成 API 密钥。完成此操作后,请设置 OPENAI_API_KEY 环境变量:
import getpass
import os
if not os.environ.get("OPENAI_API_KEY"):
os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter your OpenAI API key: ")
如果你想获得模型调用的自动化追踪,你也可以通过取消下面这行注释来设置你的 LangSmith API 密钥:
# os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
# os.environ["LANGSMITH_TRACING"] = "true"
安装
LangChain OpenAI 集成位于 langchain-openai 包中:
%pip install -qU langchain-openai
实例化
现在我们可以实例化我们的模型对象并生成聊天补全:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-4o",
temperature=0,
max_tokens=None,
timeout=None,
max_retries=2,
# api_key="...", # if you prefer to pass api key in directly instaed of using env vars
# base_url="...",
# organization="...",
# other params...
)
API Reference:ChatOpenAI
调用
messages = [
(
"system",
"You are a helpful assistant that translates English to French. Translate the user sentence.",
),
("human", "I love programming."),
]
ai_msg = llm.invoke(messages)
ai_msg
AIMessage(content="J'adore la programmation.", additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 5, 'prompt_tokens': 31, 'total_tokens': 36}, 'model_name': 'gpt-4o-2024-05-13', 'system_fingerprint': 'fp_3aa7262c27', 'finish_reason': 'stop', 'logprobs': None}, id='run-63219b22-03e3-4561-8cc4-78b7c7c3a3ca-0', usage_metadata={'input_tokens': 31, 'output_tokens': 5, 'total_tokens': 36})
print(ai_msg.content)
J'adore la programmation.