在 OpenAI 的官方 Python 库 (openai
) 中,提交提示词(Prompt)等内容给 ChatGPT 进行处理的主要函数/接口如下:
1️⃣ openai.ChatCompletion.create()
用于与 GPT-4 / GPT-3.5 Turbo 进行多轮对话交互(适用于 ChatGPT)。
调用示例
python">import openai
openai.api_key = "your-api-key"
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Tell me a joke."}
]
)
print(response["choices"][0]["message"]["content"])
关键参数
参数名 | 说明 |
---|---|
model | 选择 gpt-4 或 gpt-3.5-turbo |
messages | 聊天上下文列表,包含 system (设定助手行为)、user (用户输入)、assistant (助手回复) |
temperature | 控制输出的随机性(默认 1.0,越高随机性越大,越低越确定) |
max_tokens | 限制回复的 Token 数量 |
stream | 是否启用流式响应(默认 False ,设为 True 可逐步返回内容) |
支持流式输出(Streaming)
适用于构建实时对话、聊天机器人:
python">response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": "Tell me a joke."}],
stream=True
)
for chunk in response:
if "choices" in chunk and len(chunk["choices"]) > 0:
print(chunk["choices"][0]["delta"].get("content", ""), end="")
2️⃣ openai.Completion.create()
用于传统的 文本补全任务(适用于 GPT-3 系列,如 davinci
、curie
等)。
调用示例
python">response = openai.Completion.create(
model="text-davinci-003",
prompt="Once upon a time,",
max_tokens=100
)
print(response["choices"][0]["text"])
关键参数
参数名 | 说明 |
---|---|
model | 选择 text-davinci-003 (GPT-3)等 |
prompt | 需要补全的文本内容 |
temperature | 控制输出的随机性 |
max_tokens | 限制返回 Token 数量 |
🚀 适用于:
- 文章自动补全
- 代码生成
- 关键词扩展
3️⃣ openai.Edits.create()
用于 文本编辑,基于 text-davinci-edit-001
或 code-davinci-edit-001
。
调用示例
python">response = openai.Edits.create(
model="text-davinci-edit-001",
input="I has a apple.",
instruction="Correct grammar."
)
print(response["choices"][0]["text"])
🚀 适用于:
- 文本改写
- 代码修正
- 语法检查
4️⃣ openai.Embedding.create()
用于 文本向量化,适用于语义搜索、推荐系统等。
调用示例
python">response = openai.Embedding.create(
model="text-embedding-ada-002",
input="This is an example sentence."
)
embedding_vector = response["data"][0]["embedding"]
print(embedding_vector[:10]) # 打印前10个维度的数据
🚀 适用于:
- 语义搜索
- 相似度计算
- 向量数据库(如 Pinecone, Weaviate)
5️⃣ openai.Moderation.create()
用于 内容审核,检测是否包含不适当内容(仇恨、色情、暴力等)。
调用示例
python">response = openai.Moderation.create(
input="I hate you!"
)
print(response["results"][0]["flagged"]) # 输出 True/False
🚀 适用于:
- 社交媒体审核
- 聊天机器人内容过滤
- 论坛评论审核
🔥 总结(不同用途的 OpenAI API 调用)
API 方法 | 适用场景 | 主要参数 | 适用模型 |
---|---|---|---|
ChatCompletion.create() | ChatGPT 对话 | messages | gpt-4 、gpt-3.5-turbo |
Completion.create() | 传统文本补全 | prompt | text-davinci-003 |
Edits.create() | 文本/代码编辑 | input + instruction | text-davinci-edit-001 |
Embedding.create() | 文本向量化 | input | text-embedding-ada-002 |
Moderation.create() | 内容审核 | input | text-moderation-latest |
💡 如果你是 FastAPI 开发者,建议使用:
ChatCompletion.create()
(用于聊天应用)Embedding.create()
(用于搜索、推荐系统)Moderation.create()
(用于用户内容审核)
======================================
在 LangChain 框架中,提交提示词(Prompt)等内容给 ChatGPT 的主要函数/接口如下:
在 LangChain 框架中,提交提示词(Prompt)等内容给 ChatGPT 的主要函数/接口如下:
1️⃣ ChatOpenAI
(用于 ChatGPT 对话模型)
ChatOpenAI
是 LangChain 用于访问 OpenAI ChatGPT(GPT-4, GPT-3.5-Turbo) 的核心接口。
调用示例
python">from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage, SystemMessage
chat = ChatOpenAI(model_name="gpt-4", temperature=0)
response = chat([
SystemMessage(content="You are a helpful assistant."),
HumanMessage(content="Tell me a joke.")
])
print(response.content) # 输出 ChatGPT 的回复
关键参数
参数名 | 说明 |
---|---|
model_name | 选择 gpt-4 、gpt-3.5-turbo |
temperature | 控制输出的随机性(0.0 ~ 1.0) |
max_tokens | 限制返回 Token 数量 |
streaming | 是否启用流式输出(默认 False ) |
🚀 适用于:
- 多轮对话
- Chatbot(聊天机器人)
- 流式输出(Real-time Streaming)
2️⃣ OpenAI
(用于普通文本补全模型)
OpenAI
是 LangChain 用于访问 传统 OpenAI 文本补全(Completion) 的接口,如 text-davinci-003
。
调用示例
python">from langchain.llms import OpenAI
llm = OpenAI(model_name="text-davinci-003", temperature=0)
response = llm("Write a short poem about AI.")
print(response) # 输出文本补全的结果
关键参数
参数名 | 说明 |
---|---|
model_name | 选择 text-davinci-003 、davinci |
temperature | 控制输出的随机性 |
max_tokens | 限制返回 Token 数量 |
🚀 适用于:
- 文章生成
- 代码补全
- 关键词扩展
3️⃣ ChatOpenAI
+ PromptTemplate
(动态提示词模板)
如果你想使用结构化提示词(Prompt Engineering),可以结合 PromptTemplate
:
调用示例
python">from langchain.chat_models import ChatOpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
chat = ChatOpenAI(model_name="gpt-4")
prompt = PromptTemplate(
input_variables=["topic"],
template="Tell me a joke about {topic}."
)
chain = LLMChain(llm=chat, prompt=prompt)
response = chain.run(topic="computers")
print(response) # 输出关于“计算机”的笑话
🚀 适用于:
- 动态内容填充
- 批量内容生成
- 结构化提示词优化
4️⃣ ChatOpenAI
+ ConversationChain
(多轮对话管理)
如果你需要记忆历史对话,可以使用 ConversationChain
:
调用示例
python">from langchain.chat_models import ChatOpenAI
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
chat = ChatOpenAI(model_name="gpt-4")
memory = ConversationBufferMemory()
conversation = ConversationChain(
llm=chat,
memory=memory
)
print(conversation.run("Hello!"))
print(conversation.run("Tell me a joke."))
print(conversation.run("What was the first thing I said?")) # 记住历史对话
🚀 适用于:
- 多轮对话(Chatbot)
- 长记忆 AI 助手
- 客户服务 AI
5️⃣ ChatOpenAI
+ Streaming
(流式输出)
如果你想构建实时流式响应(适用于 FastAPI 应用),可以使用 streaming=True
:
调用示例
python">from langchain.chat_models import ChatOpenAI
chat = ChatOpenAI(model_name="gpt-4", streaming=True)
response = chat([{"role": "user", "content": "Tell me a joke."}])
for chunk in response:
print(chunk.content, end="") # 逐步打印生成的文本
🚀 适用于:
- 实时对话
- 命令行应用
- 流式 Web 交互(FastAPI, Flask)
6️⃣ OpenAIEmbeddings
(文本向量化)
如果你需要向量化文本(用于语义搜索、知识库),可以使用 OpenAIEmbeddings
:
调用示例
python">from langchain.embeddings import OpenAIEmbeddings
embedding_model = OpenAIEmbeddings()
vector = embedding_model.embed_query("Hello, world!")
print(vector[:10]) # 打印向量前10个数值
🚀 适用于:
- 语义搜索
- 向量数据库(Pinecone, Weaviate)
- 文档检索(RAG)
🔥 总结
API 方法 | 适用场景 | 主要参数 | 适用模型 |
---|---|---|---|
ChatOpenAI | ChatGPT 对话 | messages | gpt-4 、gpt-3.5-turbo |
OpenAI | 传统文本补全 | prompt | text-davinci-003 |
ChatOpenAI + PromptTemplate | 结构化提示词 | input_variables | gpt-4 |
ConversationChain | 多轮对话(记忆历史) | memory | gpt-4 |
ChatOpenAI (Streaming) | 流式输出 | streaming=True | gpt-4 |
OpenAIEmbeddings | 文本向量化 | input | text-embedding-ada-002 |
💡 如果你是 FastAPI 开发者,建议:
ChatOpenAI
(用于聊天 AI)Streaming
(用于实时对话)OpenAIEmbeddings
(用于知识库和搜索)