首页 > 编程语言 >python 访问openai接口

python 访问openai接口

时间:2024-10-25 23:18:58浏览次数:7  
标签:python messages 接口 content API openai OpenAI history

目录

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

标签:python,messages,接口,content,API,openai,OpenAI,history
From: https://blog.csdn.net/cangqiongxiaoye/article/details/143193337

相关文章

  • 【数据结构初阶】单链表接口实现超详解
    1.顺序表问题与思考上一篇博客中我们介绍了顺序表,那么顺序表有什么缺点呢?中间/头部的插入删除,时间复杂度为O(N)增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到200,我们再继续插入了5个数......
  • python 访问openai assistant api(一)
    目录一、简介二、案例三、消息循环总结 一、简介使用Python访问OpenAIAssistantAPI(如GPT模型),你需要使用OpenAI提供的官方PythonSDK。官网介绍https://platform.openai.com/docs/api-reference/assistants目前只有简短的使用介绍,但是已经涵盖了所有需要注......
  • 6.1 用python代码绘制以下图形
    用python绘制一个无向图:v1在中间,v2、v3、v4、v5、v6在周围;v1与v2、v3、v4相连;v2与v3、v6、v1相连;v3与v1、v2、v4相连;v4与v1、v3、v5相连;v5与v4、v6相连;v6与v2、v5相连点击查看代码importnetworkxasnximportmatplotlib.pyplotaspltG=nx.Graph()nodes=['v1'......
  • Python编码规范
        为什么不直接进入Python的语法和数据类型阶段,而是介绍Python编码规范?因为这很重要!作为一个开发的老鸟,给新人的第一个建议就是Python编码规范,这种规范很多时候不仅仅是Python,祝大家养成良好的代码习惯!~~~~一.忽略代码规范的规则以下情况可以忽略代码规范,其余情况请尽量......
  • go接口01隐式实现特性
    在Go语言中,接口的隐式实现特性意味着只要类型定义了接口所需的所有方法,即被视为实现了该接口,无需显式声明。以下是一个示例说明:packagemainimport"fmt"//定义接口AnimaltypeAnimalinterface{Speak()Move()}//定义结构体Dog,实现Animal接口的两......
  • python编程基础
    @目录1.python中的变量和数据类型1.1变量1.2python基本数据类型1.3基本输入与输出输入(Input)输出(Output)基本输出打印多个参数格式化输出打印到文件1.4python中的运算符算术运算符比较运算符赋值运算符逻辑运算符位运算符成员运算符身份运算符2.python中的列表、元组、字典、集合2.1......
  • python异常处理中finally的作用
    Python异常处理中finally的作用包括:1、确保程序块退出前的代码执行、2、资源释放和清理工作、3、与return语句的交互行为。在finally子句中最为典型的应用是清理资源,比如关闭文件流或数据库连接。不论try块内代码是否触发了异常,finally子句都会被执行,这为程序员提供一种可靠的手段......
  • Python应用指南:地铁两站之间最短路径查询
    随着城市交通的发展,地铁已成为许多城市居民日常出行的重要方式之一。地铁网络的复杂性和站点数量的增加使得乘客在选择最佳路线时面临挑战。为了帮助乘客快速、准确地找到从起始站到目的站的最短乘坐线路,本篇文章我们来求一下地铁两站之间最短路径查询的查询,通过Python脚本快......
  • 10.25Python_pandas_函数(1)
    二、函数1、常用的统计学函数函数名称描述说明count()统计某个非空值的数量sum()求和mean()求均值median()求中位数std()求标准差min()求最小值max()求最大值abs()求绝对值prod()求所有数值的乘积案例:#创建一个示例DataFramedata={'A':[1,2,3,4,5],......
  • 用python绘图-散点图/直方图/概率密度图
    项目用到的文件:一、代码解释:drawing01.pyimportdash#Dash是用于构建分析型Web应用的Python框架,由Plotly开发fromdashimportdccfromdashimporthtmlfromdash.dependenciesimportInput,Outputimportpandasaspd#尤其适用于表格数据和时间序列数......