Bootstrap

openai库 及LangChain 跟ChatGPT对话的主要接口

在 OpenAI 的官方 Python 库 (openai) 中,提交提示词(Prompt)等内容给 ChatGPT 进行处理的主要函数/接口如下:


1️⃣ openai.ChatCompletion.create()

用于与 GPT-4 / GPT-3.5 Turbo 进行多轮对话交互(适用于 ChatGPT)。

调用示例
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-4gpt-3.5-turbo
messages聊天上下文列表,包含 system(设定助手行为)、user(用户输入)、assistant(助手回复)
temperature控制输出的随机性(默认 1.0,越高随机性越大,越低越确定)
max_tokens限制回复的 Token 数量
stream是否启用流式响应(默认 False,设为 True 可逐步返回内容)
支持流式输出(Streaming)

适用于构建实时对话、聊天机器人

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 系列,如 davincicurie 等)。

调用示例
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-001code-davinci-edit-001

调用示例
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()

用于 文本向量化,适用于语义搜索、推荐系统等。

调用示例
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()

用于 内容审核,检测是否包含不适当内容(仇恨、色情、暴力等)。

调用示例
response = openai.Moderation.create(
    input="I hate you!"
)

print(response["results"][0]["flagged"])  # 输出 True/False

🚀 适用于

  • 社交媒体审核
  • 聊天机器人内容过滤
  • 论坛评论审核

🔥 总结(不同用途的 OpenAI API 调用)

API 方法适用场景主要参数适用模型
ChatCompletion.create()ChatGPT 对话messagesgpt-4gpt-3.5-turbo
Completion.create()传统文本补全prompttext-davinci-003
Edits.create()文本/代码编辑input + instructiontext-davinci-edit-001
Embedding.create()文本向量化inputtext-embedding-ada-002
Moderation.create()内容审核inputtext-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) 的核心接口。

调用示例

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-4gpt-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

调用示例

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-003davinci
temperature控制输出的随机性
max_tokens限制返回 Token 数量

🚀 适用于

  • 文章生成
  • 代码补全
  • 关键词扩展

3️⃣ ChatOpenAI + PromptTemplate(动态提示词模板)

如果你想使用结构化提示词(Prompt Engineering),可以结合 PromptTemplate

调用示例

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

调用示例

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

调用示例

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

调用示例

from langchain.embeddings import OpenAIEmbeddings

embedding_model = OpenAIEmbeddings()

vector = embedding_model.embed_query("Hello, world!")

print(vector[:10])  # 打印向量前10个数值
🚀 适用于
  • 语义搜索
  • 向量数据库(Pinecone, Weaviate)
  • 文档检索(RAG)

🔥 总结

API 方法适用场景主要参数适用模型
ChatOpenAIChatGPT 对话messagesgpt-4gpt-3.5-turbo
OpenAI传统文本补全prompttext-davinci-003
ChatOpenAI + PromptTemplate结构化提示词input_variablesgpt-4
ConversationChain多轮对话(记忆历史)memorygpt-4
ChatOpenAI(Streaming)流式输出streaming=Truegpt-4
OpenAIEmbeddings文本向量化inputtext-embedding-ada-002

💡 如果你是 FastAPI 开发者,建议:

  • ChatOpenAI(用于聊天 AI)
  • Streaming(用于实时对话)
  • OpenAIEmbeddings(用于知识库和搜索)

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;