OpenAI 笔记:chat API

聊天模型接受一系列消息作为输入,并返回模型生成的消息作为输出。

1 导入openai 的api key

from openai import OpenAIclient = OpenAI(api_key='***')

2  调用聊天API

completion = client.chat.completions.create(model="gpt-3.5-turbo",messages=[{"role": "system","content": "You are a poetic assistant, skilled in explaining complex programming concepts with creative flair."},{"role": "user","content": "Compose a short poem that explains the concept of recursion in programming."}]
)print(completion.choices[0].message.content)
'''
In the realm of code, recursion shines bright,
A concept of looping with a mystical light.
A function calling itself, over and over,
A dance of logic, a captivating rover.Like a mirror reflecting into infinity,
Recursion dives deep with elegant affinity.
Breaking down problems into smaller parts,
It conquers complexity with creative arts.Through recursive calls, layers unfold,
Solving mysteries, making connections bold.
A looping dream, a mesmerizing show,
In the world of coding, recursion's glow.
'''
  • 主要输入是 messages 参数。
    • 消息必须是一个消息对象数组,每个对象都有一个角色(“system”、“user”或“assistant”)和内容。
    • 对话可以短至一条消息,或者多次来回交换。
    • 通常,对话以“system”消息开始,然后是“user”和“assistant”消息的交替。
  • 系统消息有助于设定助手的行为。
    • 例如,可以修改助手的个性或提供关于助手在整个对话中应如何表现的具体指示
    • 系统消息是可选的,没有系统消息的模型行为可能类似于使用通用消息,如“你是一个有帮助的助手。”
  • 用户消息提供了助手需要回应的请求或评论
  • 助手消息存储了之前助手的回应,但也可以由用户自行编写,以展示期望的行为。

3 聊天完成 API响应结果分析

id

  • 类型: 字符串
  • 描述: 聊天完成的唯一标识符。

choices

  • 类型: 数组
  • 描述: 聊天完成选择的列表。如果 n 大于 1,则可以有多个选择。

finish_reason

每个响应都会包括一个 finish_reasonfinish_reason 的可能值包括:

  • stop:API 返回完整消息,或者由 stop 参数提供的一个停止序列终止的消息
  • length:由于 max_tokens 参数或令牌限制,模型输出不完整
  • tool_calls:模型决定调用一个工具
  • content_filter:由于我们的内容过滤器的标记,省略了内容
  • null:API 响应仍在进行中或不完整

index

  • 类型: 整数
  • 描述: 在选择列表中的选择索引。

message

  • 类型: 对象
  • 描述: 模型生成的聊天完成消息。

content

  • 类型: 字符串或空
  • 描述: 消息的内容。

tool_calls

  • 类型: 数组
  • 描述: 模型生成的工具调用,例如函数调用。

role

  • 类型: 字符串
  • 描述: 该消息作者的角色。

logprobs

  • 类型: 对象或空
  • 描述: 选项的对数概率信息。

created

  • 类型: 整数
  • 描述: 聊天完成创建的 Unix 时间戳(秒)。

model

  • 类型: 字符串
  • 描述: 用于聊天完成的模型。

object

  • 类型: 字符串
  • 描述: 对象类型,始终为 chat.completion。

usage

  • 类型: 对象
  • 描述: 完成请求的使用统计信息。
completion_tokens
  • 类型: 整数
  • 描述: 生成完成中的令牌数量。
prompt_tokens
  • 类型: 整数
  • 描述: 提示中的令牌数量。
total_tokens
  • 类型: 整数
  • 描述: 请求中使用的总令牌数量(提示 + 完成)。

4 seed & temperature

要获得(大多数情况下)跨 API 调用的确定性输出,可以:

  • 设置种子参数seed
  • 确保所有其他参数(如提示messages或温度temperature)在请求间完全相同。
    • 较低的温度值会导致输出更加一致,而较高的值会产生更多样化和创造性的结果
    • temperature的范围在0~2之间
completion = client.chat.completions.create(model="gpt-3.5-turbo",messages=[{"role": "user","content": "Compose a short sentence about Singapore."}],
)
print(completion.choices[0].message.content)
'''
Singapore is a vibrant and modern city-state known for its impressive skyline and diverse cultural attractions.
'''completion = client.chat.completions.create(model="gpt-3.5-turbo",messages=[{"role": "user","content": "Compose a short sentence about Singapore."}],seed=1
)
print(completion.choices[0].message.content)
'''
Singapore is a vibrant and bustling city-state known for its modernity and unique blend of cultures.
'''completion = client.chat.completions.create(model="gpt-3.5-turbo",messages=[{"role": "user","content": "Compose a short sentence about Singapore."}],seed=1,temperature=2
)
print(completion.choices[0].message.content)
'''
Singapore is praised for its advanced infrastructure, efficient public transport, and rich multicultural environment.
'''

5 token(令牌)数量

  • API 调用中的令牌总数影响:
    •  API 调用成本,因为openai是按令牌付费
    • API 调用时间,因为写入更多令牌需要更多时间
    • API 调用是否能够成功,因为总令牌必须低于模型的最大限制(对于 gpt-3.5-turbo 是 4097 )
  • 输入和输出令牌都计入这些数量。
    • 例如,如果API 调用在消息输入中使用了 10 个令牌,在消息输出中收到了 20 个令牌,则将被收取 30 个令牌
  • 查看调用了多少令牌:
completion.usage
#CompletionUsage(completion_tokens=17, prompt_tokens=14, total_tokens=31)

6 插入文本

text='hello world'
completion = client.chat.completions.create(model="gpt-3.5-turbo",messages=[{"role": "user", "content": f'Translate the following English text to French: \"{text}\"'}],)print(completion.choices[0].message.content)
#"Bonjour le monde"

7  其他主要的参数

frequency_penalty

频率惩罚

  • 类型: 数值或空
  • 可选
  • 默认值: 0
  • 范围: -2.0 到 2.0。正值根据文本中已存在的令牌的频率惩罚新令牌,减少模型重复相同文本的可能性。

logit_bias

日志偏置

  • 类型: 映射
  • 可选
  • 默认值: 空
  • 描述: 修改指定令牌在完成中出现的可能性。接受一个 JSON 对象,映射令牌(通过令牌ID指定)到一个从 -100 到 100 的偏置值。在抽样前,偏置会被加到模型生成的 logits 上。具体效果因模型而异,但-1到1之间的值应该会降低或增加选择的可能性;如 -100 或 100 的值应该会导致禁用或独占选择相关令牌。

logprobs

对数概率

  • 类型: 布尔值或空
  • 可选
  • 默认值: 假
  • 描述: 是否返回输出令牌的对数概率。如果为真,返回每个输出令牌的对数概率。

max_tokens

最大令牌数

  • 类型: 整数或空
  • 可选
  • 描述: 在聊天完成中可以生成的最大令牌数。输入令牌和生成令牌的总长度受模型的上下文长度限制。

n

数量

  • 类型: 整数或空
  • 可选
  • 默认值: 1
  • 描述: 为每个输入消息生成聊天完成选择的数量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2982156.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

TypeScript 中 interface 和 type 的使用#记录

一、interface:接口 interface A{label: string; }const aa ((aObj: A) > {console.log(aObj.label);//123return aObj.label; })aa({label: 123}) 1、可选属性 interface A{label: string;age?: number; } 2、只读属性 interface A{label: string;age?:…

Go Sync并发包之errgroup

你是否写过一个函数,它之所以很长,是因为它要完成很多任务,即使这些任务之间并不相互依赖? 你是否写过一个很长的函数,因为它要完成很多任务,即使这些任务并不相互依赖?我就遇到过这种情况。 想…

BRC铭文NFT铸造质押挖矿系统开发运营

区块链技术的不断演进与应用拓展,为数字资产领域带来了更多可能性。BRC铭文NFT铸造质押挖矿系统的开发与运营,将为用户提供一种全新的数字资产体验,下文将介绍其版/需求方案/逻辑项目。 1. 系统概述 BRC铭文NFT铸造质押挖矿系统旨在结合区块…

数据库之数据库恢复技术思维导图+大纲笔记

大纲笔记: 事务的基本概念 事务 定义 用户定义的一个数据库操作系列,这些操作要么全做,要么全不做,是一个不可分割的基本单位 语句 BEGIN TRANSACTION 开始 COMMIT 提交,提交事务的所有操作 ROLLBACK 回滚&#xff0c…

电商技术揭秘三十一:智能风控与反欺诈技术

相关系列文章 电商技术揭秘相关系列文章合集(1) 电商技术揭秘相关系列文章合集(2) 电商技术揭秘二十八:安全与合规性保障 电商技术揭秘二十九:电商法律合规浅析 电商技术揭秘三十:知识产权保…

科林Linux_3 进程

一、进程基础 操作系统基础的执行单元,调度单位 静态数据:只占用磁盘空间,不消耗其他资源 动态数据:磁盘 内存 CPU 1. 编译器将源码编译成一个可执行文件.exe/.elf 2. 运行后系统生成一个同名的进程 程序是进程的静态表现&a…

网络变压器的磁芯在使用中起着至关重要的作用

网络变压器的磁芯在使用中起着至关重要的作用。它主要有以下几个功能: 1. **提供磁通路径**:磁芯为变压器中电磁感应提供了闭合的磁通路径。这有助于提高变压器的效率,因为它确保了磁场能够有效地通过绕组。 2. **减少能量损失**&#xff1…

开发环境中的调试视图(IDEA)

当程序员写完一个代码时必然要运行这个代码,但是一个没有异常的代码却未必满足我们的要求,因此就要求程序员对已经写好的代码进行调试操作。在之前,如果我们要看某一个程序是否满足我们的需求,一般情况下会对程序运行的结果进行打…

Spring框架九大核心功能全面揭秘(一)

目录 资源管理 Java资源管理 1、来个Demo 2、原理 Spring资源管理 1、资源抽象 Resource WritableResource 2、资源加载 3、小结 环境 1、Environment 2、配置属性源PropertySource 3、SpringBoot是如何解析配置文件 类型转换 1、类型转换API …

Ubuntu+Systemd服务+实现开机自启

1.创建一个新的 systemd 服务文件 现在随便一个地方创建txt文档 如果想要启动sh脚本,就把下面的代码输入到txt文档中 [Unit] DescriptionRun Python script on specific executable run Afternetwork.target[Service] Typesimple ExecStart/home/tech/run_on_exe…

光接入网络的超宽带半导体光放大器

添加图片注释,不超过 140 字(可选) 新颖的双有源层结构获得宽增益光谱,应用于多波单纤双向光放大 ----翻译Xiao Sun等人2016年撰写的文章,文中给出了宽光谱SOA的一种新颖的结构设计方法和仿真结果,但并未给…

社交媒体数据恢复:Instagram

Instagram数据恢复方法 在本文中,我们将详细介绍如何恢复在Instagram上删除的照片、消息和其他数据。请注意,这些方法可能适用于其他类型的社交媒体数据,但具体效果取决于数据的实际状态和存储设备的健康状况。 一、准备工作 在开始数据恢…

四川赢涟电子商务有限公司深耕抖音电商服务

在当今数字化、网络化高速发展的时代,电子商务行业异军突起,成为推动经济增长的重要力量。四川赢涟电子商务有限公司凭借其敏锐的市场洞察力和创新精神,专注于抖音电商服务,致力于为广大消费者提供便捷、高效、个性化的购物体验&a…

kafka启动报错(kafka.common.InconsistentClusterIdException)

文章目录 前言kafka启动报错(kafka.common.InconsistentClusterIdException)1. 查找日志2. 定位问题/解决 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不…

基于YOLOv8+Pyqt5火焰烟雾检测系统

1、YOLOv8的基本原理 YOLOv8是一种前沿的目标检测技术,它基于先前YOLO版本在目标检测任务上的成功,进一步提升了性能和灵活性。主要的创新点包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,可以在从 CPU 到 GPU 的各…

Golang | Leetcode Golang题解之第47题全排列II

题目: 题解: func permuteUnique(nums []int) (ans [][]int) {sort.Ints(nums)n : len(nums)perm : []int{}vis : make([]bool, n)var backtrack func(int)backtrack func(idx int) {if idx n {ans append(ans, append([]int(nil), perm...))return}…

数据分析学习资源(未完)

1、PDF 数据分析自学攻略 增长黑客(AARRR) 量化思维

glib读写ini文件测试

函数简介 g_key_file_load_from_file g_key_file_load_from_file() 是 GLib 库中的一个函数,用于从指定的文件路径加载一个键值对文件(通常是一个 .ini 风格的配置文件)。这个函数是 GKeyFile 结构体相关API的一部分,GKeyFile 用…

C++面向对象程序设计 - 重载运算符进一步讨论

函数重载就是对一个已有的函数赋予新的含义,使之实现新的功能。因此一个函数名就可以用来代表不同功能的函数,也就是一名多用。运算符也可以重载,即运算符重载(operator overloading)。 一、非成员、非友元的重载运算…

STM32F103学习笔记 | 1.Keil5详细安装教程

Keil5详细安装教程 https://www.keil.com/download/product/