目录
一、openai接口文档
使用 OpenAI API 文档可以帮助你更好地理解和操作 API,尤其是在开发复杂项目时。以下是使用 OpenAI API 文档的指南:
1. 访问 OpenAI API 文档
首先,你可以通过访问 OpenAI 的官方文档页面来获取详细信息: OpenAI API Documentation
文档提供了 API 的完整说明、端点、请求参数、响应结构等。它还包含了关于如何使用不同 API 功能(如 GPT、Embeddings、DALL·E)的例子。
2. 注册和获取 API 密钥
要使用 API,你需要有一个 OpenAI 账户,并生成一个 API 密钥。文档会详细介绍如何获取和管理这些密钥。
- 访问 OpenAI API 密钥页面。
- 生成一个新的密钥,并在你的应用程序中将它用于身份验证。
3. 快速开始:示例代码
文档中的 "Quickstart" 部分包含了调用 OpenAI API 的基本示例代码。通常,它包括使用 Python、Node.js 等常用编程语言进行 API 请求的步骤。
4. 请求结构和响应格式
每个 API 调用都有特定的请求结构和响应格式。文档会介绍:
- 请求方法:如
POST
请求。 - 端点:如
https://api.openai.com/v1/completions
。 - 请求参数:包括
prompt
、temperature
、max_tokens
等。 -
响应格式:API 返回的 JSON 数据格式,包括
choices
、text
等字段。
二、步骤
1、安装openai库
pip install openai
2、示例代码
实现一个命令行循环对话机器人
from openai import OpenAI
client = OpenAI(
# defaults to os.environ.get("OPENAI_API_KEY")
api_key="yourkey",
base_url="https://api.chatanywhere.tech/v1"
)
# 非流式响应
def gpt_35_api(messages: list):
"""为提供的对话消息创建新的回答
Args:
messages (list): 完整的对话消息
"""
completion = client.chat.completions.create(model="gpt-3.5-turbo", messages=messages)
print(completion.choices[0].message.content)
def gpt_35_api_stream(messages: list):
"""为提供的对话消息创建新的回答 (流式传输)
Args:
messages (list): 完整的对话消息
"""
stream = client.chat.completions.create(
model='gpt-3.5-turbo',
messages=messages,
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="")
# 主函数,进行循环对话
def simple_comunication():
# 对话历史,保留用户和 GPT-4 的多轮对话内容
messages = [
{"role": "system", "content": "You are a helpful assistant."} # 系统消息,定义模型的行为
]
print("开始与GPT-4对话 (输入 'exit' 或 'quit' 退出)")
while True:
# 获取用户输入
user_input = input("你: ")
if user_input.lower() in ["exit", "quit"]:
print("退出对话。")
break
# 将用户输入添加到对话历史
messages.append({"role": "user", "content": user_input})
gpt_35_api_stream(messages)
# 将 GPT-4 的回复也添加到对话历史中
#messages.append({"role": "assistant", "content": reply})
# 打印 GPT-4 的回复
#print(f"GPT-4: {reply}")
if __name__ == '__main__':
#messages = [{'role': 'user','content': '鲁迅和周树人的关系'},]
# 非流式调用
# gpt_35_api(messages)
# 流式调用
#gpt_35_api_stream(messages)
simple_comunication()
加入gradio界面demo
import os
import gradio as gr
from openai import OpenAI
def add_message(history, message):
for x in message["files"]:
history.append(((x,), None))
if message["text"] is not None:
history.append((message["text"], None))
return history, gr.MultimodalTextbox(value=None, interactive=False)
def bot(history):
history[-1][1] = ""
history_openai_format = []
for human, assistant in history[:-1]:
history_openai_format.append({"role": "user", "content": human})
history_openai_format.append({"role": "assistant", "content": assistant})
history_openai_format.append({"role": "user", "content": history[-1][0]})
client = OpenAI(
api_key="yourkey",
base_url="https://api.chatanywhere.tech/v1"
)
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=history_openai_format,
temperature=0.1,
stream=True,
)
for chunk in completion:
history[-1][1] += chunk.choices[0].delta.content
yield history
with gr.Blocks() as demo:
chatbot = gr.Chatbot([], elem_id="chatbot", bubble_full_width=False)
chat_input = gr.MultimodalTextbox(
interactive=True,
file_types=[],
placeholder="Enter message or upload file...",
show_label=False,
)
chat_msg = chat_input.submit(
add_message, [chatbot, chat_input], [chatbot, chat_input]
)
bot_msg = chat_msg.then(bot, chatbot, chatbot, api_name="bot_response")
bot_msg.then(lambda: gr.MultimodalTextbox(interactive=True), None, [chat_input])
demo.queue()
demo.launch()
标签:python,messages,接口,content,API,openai,OpenAI,history
From: https://blog.csdn.net/cangqiongxiaoye/article/details/143193337