当前位置: 首页 > article >正文

python 访问openai接口

目录

一、openai接口文档

1. 访问 OpenAI API 文档

2. 注册和获取 API 密钥

3. 快速开始:示例代码

4. 请求结构和响应格式

二、步骤

1、安装openai库

2、示例代码

实现一个命令行循环对话机器人

加入gradio界面demo


一、openai接口文档

使用 OpenAI API 文档可以帮助你更好地理解和操作 API,尤其是在开发复杂项目时。以下是使用 OpenAI API 文档的指南:

1. 访问 OpenAI API 文档

首先,你可以通过访问 OpenAI 的官方文档页面来获取详细信息: OpenAI API Documentation

文档提供了 API 的完整说明、端点、请求参数、响应结构等。它还包含了关于如何使用不同 API 功能(如 GPT、Embeddings、DALL·E)的例子。

2. 注册和获取 API 密钥

要使用 API,你需要有一个 OpenAI 账户,并生成一个 API 密钥。文档会详细介绍如何获取和管理这些密钥。

  1. 访问 OpenAI API 密钥页面。
  2. 生成一个新的密钥,并在你的应用程序中将它用于身份验证。

3. 快速开始:示例代码

文档中的 "Quickstart" 部分包含了调用 OpenAI API 的基本示例代码。通常,它包括使用 Python、Node.js 等常用编程语言进行 API 请求的步骤。

4. 请求结构和响应格式

每个 API 调用都有特定的请求结构和响应格式。文档会介绍:

  • 请求方法:如 POST 请求。
  • 端点:如 https://api.openai.com/v1/completions
  • 请求参数:包括 prompttemperaturemax_tokens 等。
  • 响应格式:API 返回的 JSON 数据格式,包括 choicestext 等字段。

二、步骤

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


http://www.kler.cn/news/363335.html

相关文章:

  • day7:软件包管理
  • 你不常用的 FileReader 能干什么?
  • 逻辑回归公式推导-详细版
  • 【Android】使用 Compose 自定义 View 实现从 0 ~ 1 仿 EChat 柱状图
  • PostGis空间(下):空间连接与空间索引
  • [手机Linux PostmarketOS]七, Linux使用selenium爬虫
  • 2024年软件设计师中级(软考中级)详细笔记【11】知识产权基础知识(分值2~3分)
  • 6、基于Python+爬虫+LDA+决策树的《富士山下》评论数据情感分析【开题+源程序+论文】
  • Spring Task介绍与基本使用
  • Konva框选移动
  • PPT自动化:掌握 python-pptx 的基础元素
  • 20240818 字节跳动 笔试
  • Python小游戏11——扑克牌消消看小游戏
  • Go入门指南-3.1Go 开发环境的基本要求
  • 哈夫曼树的定义?如何构造?
  • XJ03、消费金融|从场景实例看懂背后的系统架构
  • Xcode使用的一些问题记录
  • 图文深入介绍oracle资源管理(续)
  • Pyspark中pyspark.sql.functions常用方法(4)
  • 机器学习运维(MLOps)
  • 考研篇——数据结构王道3.2.3_队列的链式实现
  • 2025年考PMP大概需要多少钱?提前了解!
  • 【计算机网络 - 基础问题】每日 3 题(四十六)
  • MBI6665Q聚积升降压LED驱动芯片车规级AEC-Q100认证
  • 从0开始深度学习(15)——权重衰退法(L2正则化)
  • 5. AOP