OpenAI 笔记:chat API

news2024/11/16 10:37:38

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

1 导入openai 的api key

from openai import OpenAI

client = 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://www.coloradmin.cn/o/1620201.html

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

相关文章

09—DOM和BOM

一、DOM 1、HTML DOM (文档对象模型) 文档对象模型(Document Object Model,DOM)是表示和操作HTML和XML文档内容的基础API。当网页被加载时,浏览器会根据DOM模型,将结构化文档(比如HTML和XML)解…

3d模型合并怎么样不丢材质?---模大狮模型网

在3D设计中,合并模型是常见的操作,它可以帮助设计师将多个单独的模型组合成一个,从而简化场景并提高渲染效率。然而,合并模型时常常会面临一个棘手的问题:如何确保合并后的模型不丢失原有的材质?本文将探讨如何在合并…

Parallels Desktop 19完美中文版 PD19虚拟机详细图文安装教程 亲测兼容M1/M2

对于许多Mac用户来说,运行Windows应用程序是必不可少的。也许你的雇主使用的软件只适用于Windows,或者需要使用依赖于某些Windows技术的网站。或者你想在Mac上玩Windows游戏。或者,你可能需要在其他操作系统上测试应用程序和服务——你可以在…

【数据结构-图】

目录 1 图2 图的定义和基本概念(在简单图范围内)3 图的类型定义4 图的存储结构4.1 邻接矩阵 表示法4.2 邻接表 表示法4.3 十字链表 表示法4.4 邻接多重表 表示法 5 图的遍历5.1 深度优先搜索-DFS 及 广度优先遍历-BFS 6 图的应用6.1 最小生成树6.1.1 克鲁…

Azure AKS集群监控告警表达式配置

背景需求 Azure AKS集群中,需要对部署的服务进行监控和告警,需要创建并启用预警规则,而这里怎么去监控每个pod级别的CPU和内存,需要自己写搜索查询 解决方法 搜索和查询的语句如下,需要自己替换其中的部分信息,其中…

Qwen1.5微调

引子 由于工作上需要,一直在用Qwen做大模型推理,有个再训练的需求,特此琢磨下Qwen的训练。OK,我们开始吧。 一、安装环境 查看显卡驱动版本 根据官网推荐 OK,docker在手,天下我有。 docker pull qwenll…

vuetify3.0+tailwindcss+vite最新框架

1、根据vuetify官网下载项目 安装vuetify项目 2、根据tailwindcss官网添加依赖 添加tailwindcss依赖 3、 配置main.ts // main.ts import "./style.css"4、使用 <template><h1 class"text-3xl font-bold underline">Hello world!</…

sscanf和scanf区别

sscandf 从字符串中提取数据 scanf 标准输入流读取数据 int num; sscanf("42", "%d", &num);float f; sscanf("3.14", "%f", &f);char str[20]; sscanf("Hello, World!", "%s", str);int a, b; sscanf(…

信息系统项目管理师论文考察范围预测

在2023年下半年实施机考之前&#xff0c;论文的范围还是比较好预测的&#xff0c;因为从历年考题来看&#xff0c;可以说十大管理领域考察的概率接近100%&#xff0c;而且有一定规律&#xff0c;比如说某个管理领域很久没考了&#xff0c;那么考察的概率就相对大一点&#xff0…

路由过滤与引入实验

一.实验要求及拓扑 二.实验思路 1.配置IP地址及环回 2.配置OSPF协议及RIP协议 3.OSPF和RIP进行路由引入 4.在R2上配置路由过滤&#xff0c;使RIP部分无法学到R4业务网段的信息 5.在R4上进行路由过滤&#xff08;地址前缀列表&#xff09;&#xff0c;使 R4 无法学习到 R1…

centos7服务器系统如何安装宋体字文件

centos7服务器系统如何安装宋体字文件&#xff01; 最近开发的积德寺app,菩提佛堂祈福平台网站发布后&#xff0c;由于服务器之前遇到了攻击&#xff0c;数据丢失了&#xff0c;重新安装了一遍系统centos7.发现客户的功德证书创建后&#xff0c;字体乱码了。很明显是缺少了宋体…

Linux 内核调试环境搭建

目录 QEMU Linux 0.11 源码 ​编辑 gdb 调试 学习Linux内核&#xff0c;我们可以看书&#xff0c;实际我们最好可以有一个可以调试的环境&#xff0c;本文就简单介绍一下使用Qemu 和gdb 来调试和查看Linux kernel 。在ubantu 20.04 的PC 上面编译内核源码&#xff0c;通过QE…

基于springboot+vue+Mysql的CSGO赛事管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

【点量云流】国内首家适配国产信创的实时云渲染解决方案,助力国产化信创新体验!

一、背景 随着信息技术的广泛应用&#xff0c;信息安全与自主可控成为国家发展的重要保障。近年来&#xff0c;国产化信创的发展&#xff0c;为推动信息技术产业自主创新&#xff0c;实现关键技术和产品的自主可控&#xff0c;对于保障国家信息安全、促进产业发展有着重要意义。…

Spectre-v2 以及 Linux Retpoline技术简介

文章目录 前言一、Executive Summary1.1 Spectre-v2: Branch Predictor Poisoning1.2 Mitigating Spectre-v2 with Retpolines1.3 Retpoline Concept 二、BackgroundExploit Composition 三、(Un-)Directing Speculative Execution四、Construction (x86)4.1 Speculation Barri…

递归神经网络(RNN)在AI去衣技术中的深度应用

在人工智能&#xff08;AI&#xff09;技术飞速发展的今天&#xff0c;图像处理和计算机视觉领域不断取得新的突破。其中&#xff0c;AI去衣技术作为一个具有挑战性的研究方向&#xff0c;引起了广大研究者和公众的关注。递归神经网络&#xff08;RNN&#xff09;作为深度学习的…

大模型-入门小知识

大模型是什么 大量参数&#xff08;上亿&#xff09;深度学习模型 人工只能包含机器学习&#xff0c;深度学习,深度学习包括大模型 单个神经元的计算模型&#xff1a; 大模型是怎么训练的 之前是算法&#xff08;神经网络&#xff09;----> 训练&#xff08;门槛降低&…

Win linux 下配置adb fastboot

一、Win配置adb & fastboot 环境变量 主机&#xff1a;Win10&#xff0c;除了adb fastboot需要设置变量之外&#xff0c;驱动直接安装即可 win下adb fastboot 下载地址&#xff1a;https://download.csdn.net/download/u012627628/89215420 win下qcom设备驱动下载地址&a…

C# winfrom窗体最小化任务栏托盘

一、添加notifyIcon控件 二、点击缩小按钮 三、添加notifyIcon双击还原事件 四、添加contextMenuStrip多任务菜单 五、将 contextMenuStrip绑定到notifyIcon控件 六、双击还原还原窗体 七、双击退出退出应用程序 一、添加notifyIcon控件 设置notifyIcon样式 Icon图标以…

k8s-pod 控制器

文章目录 k8s-pod 控制器无状态服务与有状态服务无状态服务pod 控制器ReplicationController(RC)ReplicaSet(RS)Label 和 Selector Deployment创建滚动更新回滚版本扩容/缩容暂停和恢复 StatefulSet创建扩容/缩容更新RollingUpdate->金丝雀发布OnDelete 删除 DaemonSet节点选…