首页 > 其他分享 >openai api

openai api

时间:2023-12-23 16:22:25浏览次数:40  
标签:chunk content conversation api openai history

0. 介绍

chatgpt 是一个人工智能模型,该公司提供了可调用的 api 接口进行使用。

1. openai库

python 下载安装 openai 库,即可使用官方提供的库文件进行api使用。

pip install openai

据目前所了解资料,openai 认证方式是通过密钥进行验证,密钥生成之后就不会显示第二次,所以需要进行及时保存。

以下是官方示例:

from openai import OpenAI

client = OpenAI(
  organization='org-QJDpr7acI5F99Zo3RVHGYzAD',
)

通过OpenAI 创建对象的时候,需要填写密钥进行验证。openai 可使用任何类型语言,只要能够进行http通信,都可以模拟出类似的报文进行发送。

2. chatgpt的api

chatgpt 是通过 网络的http报文进行发送和接收的。官网可使用流的方式进行使用。官方提供了openai的接口。可以创建OpenAI对象进行对话。

client = OpenAI()
client.chat.completions.create(
	model 模型
    messages 发送的消息,如果联系上下文,可以使用一个列表将问题添加进去。
    问题使用字典形式{"role":"user", "content":content}表示用户输入的对话。
    gpt模型的回答形式{"role":"assistant", "content":content},
    其中的role表示角色,content表示内容。
    联系上下文的话,是通过这样一种形式:
    [
		{"role":"user", "content":content},
        {"role":"assistant", "content":content}
    ]
    就能够表示之前和gpt模型之间的问题交互了。
    stream = True 如果使用流模式进行交互的话,则需要开启 stream这个功能,之后,就可以流动式获取gpt模型的回答。另外,可以设置max_token对token进行限制。防止消耗token过多。
)

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=conversation_history,
    max_tokens=50,  # 控制生成的文本长度
    temperature=0.7,  # 控制生成文本的多样性
    stop=["\n", "Why"],  # 设置停止条件,当生成文本中包含指定的条件时停止
    frequency_penalty=0.2,  # 用于调整特定单词的频率
    presence_penalty=0.0,   # 用于调整特定单词的频率
    best_of=1,  # 选择最佳回复的数量
    stream=False  # 设置为 True 以启用生成器方式逐步获取生成的文本
)
model_reply = response.choices[0].message["content"] # 获取回复

# 如果使用流模式:

for chunk in stream:
                if chunk.choices[0].delta.content is not None:
                    print(chunk.choices[0].delta.content, end="")
def test03():
    try:
        client = OpenAI(api_key="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")
        conversation_history = []
        max_history_length = 3
        # 用户输入新的问题

        while True:
            user_input = input("用户: ")
            # 将用户输入添加到对话历史
            conversation_history.append({"role": "user", "content": user_input})

            stream = client.chat.completions.create(
                model="gpt-3.5-turbo",
                messages=conversation_history,
                stream=True,
                # max_tokens=50
            )
            model_reply = ''
            for chunk in stream:
                if chunk.choices[0].delta.content is not None:
                    model_reply += chunk.choices[0].delta.content
                    print(chunk.choices[0].delta.content, end="")
            time.sleep(20)
            conversation_history.append({"role": "assistant", "content": model_reply})

            if "exit" in user_input:
                print("问答结束.")
                break
    except:
        for conversation in conversation_history:
            print(conversation)

至此,可以完成对 chatgpt 的 api 的调用,并能够完成连续对话,且记忆上下文,但值得注意的是,上下文是通过每次对话发送请求的时候,将全部所需上下文的token都进行发送,询问问题并回答是消耗大量token的。

标签:chunk,content,conversation,api,openai,history
From: https://www.cnblogs.com/zxinlog/p/17923250.html

相关文章

  • 京东JDAPI:电商行业的得力助手
    一、引言在当今电商行业中,数据的获取与利用显得尤为重要。作为中国领先的电商平台,京东提供了丰富的API接口,其中JD商品详情API是关键之一,它允许第三方开发者获取京东平台上的商品详情信息。本文将深入探讨京东JD商品详情API在电商行业中的重要性,以及如何通过该API实现实时数据获取。......
  • python脚本打包api flask pyinstaller
    如果你想将Python脚本打包成API,你可以使用Flask框架³。以下是一个简单的步骤:安装Flask。你可以使用pip来安装Flask³:pipinstallFlask创建一个新的Python文件,例如app.py³。在这个文件中,你可以定义你的API接口³。如果你想将Python脚本打包成可执行程序,你可以使用PyInstaller¹。......
  • 使用ApiFox做简单的接口并发压力测试
    前言笔者原计划是学着用jmeter来搞个简单的并发测试,但是...好好好,笔者刚好安装了apifox,计划有变!1.新建测试场景2.编辑测试步骤3.查看测试结果查看请求的详细信息更多详细信息4.数据库验证笔者测试目的主要是想验证该接口在并发压力下是否会存在日志丢失、线程池占......
  • 使用代码生成工具快速开发应用-结合后端Web API提供接口和前端页面快速生成,实现通用的
    在前面随笔《在Winform应用中增加通用的业务编码规则生成》,我介绍了基于Winform和WPF的一个通用的业务编码规则的管理功能,本篇随笔介绍基于后端WebAPI接口,实现快速的Vue3+ElementPlus前端界面的开发整合,同样是基于代码生成工具实现快速的前端代码的生成处理。1、通用的业务编码......
  • 自然语言处理:通过API调用各大公司的机器翻译开放平台
    国内大公司做机器翻译做的比较好的有讯飞和百度,这里给出这两个公司机器翻译的开放平台API的介绍:讯飞开放平台:链接:https://www.xfyun.cn/doc/nlp/xftrans_new/API.html#%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E百度翻译平台:链接:https://api.fanyi.baidu.com/doc/21......
  • 超好用的API协作管理工具:Apipost
    在当今快速发展的数字化时代,API已成为企业与开发者实现数据互通、应用集成的重要桥梁。然而,随着API数量的不断增加,API开发、调试、测试、文档等工作也变得越来越复杂。为了解决这一痛点,一款名为Apipost的API协同研发工具应运而生。成功案例许多知名的公司和团队都在使用Apipost......
  • 免费!Apipost IDEA插件
    IDEA插件市场中的API调试插件不是收费(FastRequest)就是不好用(apidoc、apidocx等等)今天给大家介绍一款国产的API调试插件:Apipost-Helper,完全免费且好看好用!这款插件由Apipost团队开发的,其官方介绍是:用于IDEA项目快速生成API文档,快速查询接口、接口代码功能,并支持在IDEA中进行API......
  • Windows环境中使用dotnet-sdk运行打包后的.NET6.0 项目WebApi程序
     去官网下载Windows平台下的SDK并安装,与开发环境对应的版本【我的程序为.NET6.0】:https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/sdk-6.0.417-windows-x64-installer在开发好的程序中,右键添加Dockerfile支持,添加后修改配置,FROMmcr.microsoft.com/d......
  • JDBC常用的API
    在开发JDBC程序前,先了解一下JDBC常用的API。JDBCAPI主要位于java.sql包中,该包定义了一系列访问数据库的接口和类。(1)Driver接口Driver接口是所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。需要注意的是,在编写JDBC程序时,必须要把所使用的数据库驱动程序或类库加......
  • 超好用的API协作管理工具:Apipost
    在当今快速发展的数字化时代,API已成为企业与开发者实现数据互通、应用集成的重要桥梁。然而,随着API数量的不断增加,API开发、调试、测试、文档等工作也变得越来越复杂。为了解决这一痛点,一款名为Apipost的API协同研发工具应运而生。成功案例许多知名的公司和团队都在使用Apipost......