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

news/2025/2/8 14:54:09 标签: langchain, chatgpt, python

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

调用示例
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-001code-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 对话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) 的核心接口。

调用示例

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

调用示例

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-003davinci
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 方法适用场景主要参数适用模型
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(用于知识库和搜索)


http://www.niftyadmin.cn/n/5844986.html

相关文章

Transformer中的嵌入位置编码

在Transformer中,使用余弦编码或其他类似的编码方式(如正弦-余弦位置编码)而不是简单的“0123456”这种数字编码,主要是因为位置编码的目标是为模型提供位置信息,同时又不引入过多的显式顺序假设。 主要原因如下&…

SSH工具之MobaXterm

视频介绍 系统运维之SSH工具 MobaXterm 图文教程 下载MobaXterm MobaXterm下载地址:https://mobaxterm.mobatek.net/download-home-edition.html 根据需求选择便携版(Portable)或者安装版(Installer)。 生成注册文件…

拆解Kotlin中的by lazy:从语法糖到底层实现

by lazy 是Kotlin中一个强大的属性委托机制,它主要用于实现属性的延迟初始化。所谓延迟初始化,就是在第一次访问该属性时才进行初始化,而不是在对象创建时就立即初始化。这种机制在很多场景下都能带来性能优势,特别是当属性的初始…

【Linux网络编程】之配置阿里云安全组

【Linux网络编程】之配置阿里云安全组 配置阿里云安全组阿里云安全组的概念配置安全组规则入方向基本概念补充ICMP协议安全组配置UDP协议安全组配置 出方向 配置云服务器主机的防火墙什么是防火墙Linux中防火墙的管理工具防火墙的作用常用命令介绍(firewalld&#x…

搜维尔科技:Movella数字化运动领域的领先创新者

下一代游戏、视觉效果、直播、工作场所人体工程学、运动表现、海洋和机器人技术。前所未有的运动成就。让所有年龄段的观众惊叹不已的艺术创新。Movella 的全栈技术用于捕捉、数字化和分析运动,正在让世界变得更美好。 数字艺术家的创造力得到释放 灯光、摄像机、…

C++自研3D教程OPENGL版本---动态批处理的基本实现

又开始找工作了&#xff0c;借机休息出去旅行两个月&#xff0c;顺便利用这段时间整理下以前写的东西。 以下是一个简单的动态批处理实现&#xff1a; #include <GL/glew.h> #include <GLFW/glfw3.h> #include <iostream> #include <vector>// 顶点结…

大语言模型遇上自动驾驶:AsyncDriver如何巧妙解决推理瓶颈?

导读 这篇论文提出了AsyncDriver框架&#xff0c;致力于解决大语言模型在自动驾驶领域应用中的关键挑战。论文的主要创新点在于提出了大语言模型和实时规划器的异步推理机制&#xff0c;实现了在保持性能的同时显著降低计算开销。通过设计场景关联指令特征提取模块和自适应注入…

mapbox进阶,添加绘图扩展插件,绘制圆形

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️MapboxDraw 绘图控件二、🍀添加绘图扩…