首页 > 其他分享 >AI学习 | chatgpt_api 和 tiktoken使用

AI学习 | chatgpt_api 和 tiktoken使用

时间:2024-07-15 11:55:16浏览次数:20  
标签:api AI tiktoken content ai client role model response

from openai import OpenAI
import tiktoken 

如何使用chatgpt token

# 创建实例,因为密钥已经传入环境变量,所以这里不用输入了
client = OpenAI()
# 开始对话 
response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "你是一个乐于助人、语气友好的行政秘书"},  # 可选,系统用来给ai安排个性和角色或者指定规则、设置背景等等
        {"role": "user", "content": "格式化以下信息:\n姓名 -> 张三\n年龄->27\n客户ID->001"}, # 用户的指令
        {"role": "assistant", "content": "##客户信息\n- 客户姓名:张三\n- 客户年龄:27岁\n- 客户ID:001"}, # 期望ai的回答,在这里放入用户期望ai给出的回答示范,帮助ai学习格式
        {"role": "user", "content":"格式化以下信息:\n姓名 -> 李四\n年龄->20\n客户ID->002"}
    ]
)
# Ai 的回答是列表套元组,提取需要 
response.choices[0].message.content

如何使用tiktoken

# api计算的是提示和回答加起来后的tokens数

encoding = tiktoken.encoding_for_model("gpt-3.5-turbo")
encoding 
encoding.encode("黄河之水天上来")
len(encoding.encode("黄河之水天上来"))

常用参数详解

response = client.chat.completions.create( 
model="gpt-3.5-turbo", 
messages=[{...}],

max_tokens = 300,
temperature=1,
max_tokens=256,
# top_p=1,
frequency_penalty=0,
presence_penalty=0

)

# max_tokens 控制回答所消耗的tokens最大值 
# temperature 控制ai回答的随机性和创造性, 其值介于0-2之间,默认值为1越高约有创造力
# top_p 也会修改回答的随机性和创造性

# 这两个参数建议二选一使用,避免同时使用
# frequency_penalty,频率惩罚, 即多大程度上惩罚重复内容, 其值在-2~2之间, 默认为0, 越高惩罚越大(即越高越不容易重复)。最好在0-1之间
# presence_penalty, 重复惩罚,不考虑频率,即考虑新词,也是用于控制生成内容的重复性, 其值在-2~2之间, 默认为0, 越高惩罚越大。最好在0-1之间

# 这两个参数可以结合使用,增加新词就提高p,想降低重复就提高f

https://platform.openai.com/playground 这是openai的官方游乐场,用于可视化测试这些参数的,依旧消耗token

思维链

即在为ai示范时,同时展示生成步骤,如
response =client.chat.completions.create(
    model:"gpt-3.5.turbo",
    messages=[
        {
            "role": "user",
            "content":"该组中的奇数加起来为偶数:4、8、9、15、12、2、1,对吗?",
            "role":"assistant",
            "content":"所有奇数(9、15、1)相加,9 + 15 + 1= 25。答案为否" # 这里9+15+1 = 25 就是展示运算过程的思维链
            # 还有一种指令方法,是直接在后面写“让我们来分步骤思考”,以指引ai来进行思维链
            
        }
    ]

封装函数来使用chatgpt

client = OpenAI()
def get_openai_response(client, prompt, model="gpt-3.5-turbo"):
    response = client.chat.completions.create(
        model = model,
        messages=[{"role":"user","content": prompt}]
    ),
    return response.choices[0].message.content
# 调用
order = "请将下面的内容按格式整理"

response = get_openai_response(client, prompt = order)
response
# 最好还是使用print(response) ,这样可以排版输出gpt的回复内容,不是全部都在一行

标签:api,AI,tiktoken,content,ai,client,role,model,response
From: https://www.cnblogs.com/abloger/p/18302878

相关文章

  • AI学习 | 概念解释 + Scikit-learn 的简单情况
    一些机器学习概念解释点击查看代码*机器学习:是AI的一个子集,不用人类显式编程,让计算机通过算法自行学习和改进*监督学习:有数据、有标签,告诉机器什么是什么,让机器来学习输入和输出的映射关系。比如:分类和回归(预测)*非监督学习:有数据没有标签,让机器自己寻找规律。比如:聚类......
  • LeetCode 1530. Number of Good Leaf Nodes Pairs
    原题链接在这里:https://leetcode.com/problems/number-of-good-leaf-nodes-pairs/description/题目:Youaregiventhe root ofabinarytreeandaninteger distance.Apairoftwodifferent leaf nodesofabinarytreeissaidtobegoodifthelengthof thesh......
  • Improving News Recommendation via Bottlenecked Multi-task Pre-training论文阅读笔
    ImprovingNewsRecommendationviaBottleneckedMulti-taskPre-training论文阅读笔记Abstract现存的问题:​ 现有的PLM大多是在大规模通用语料库上预先训练的,并没有专门用于捕捉新闻文章中的丰富信息。因此,它们生成的新闻嵌入信息可能不足以表示新闻内容或描述新闻之间的关......
  • Tool-Cross-compilation-Toolchain-ARM-Linaro
    Tool-Cross-compilation-Toolchain-ARM-LinaroUbuntu上基于Arm的交叉编译工具链。引用:arm生态发展与交叉编译链选择-知乎arm-none-linux-gnueabi-gcc:是Codesourcery公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM(32位)系统中所有环节的代码,包......
  • 【论文阅读】DeepREL通过自动化关系 API 推理对深度学习库进行模糊测试
    通过自动化关系API推理对深度学习库进行模糊测试论文基本信息ESEC/FSE’22,November14–18,2022,Singapore,Singapore时间:2022-11-07CCFA原文:https://doi.org/10.1145/3540250.3549085摘要近年来,深度学习(DL)受到广泛关注。同时,深度学习系统中的错误可能导致严重后......
  • Simple WPF: WPF使用Windows API发送Toast通知
    最新内容优先发布于个人博客:小虎技术分享站,随后逐步搬运到博客园。创作不易,如果觉得有用请在Github上为博主点亮一颗小星星吧!以前看到Windows10的气泡通知觉得很有意思,但是一直不知道该如何实现。最近一次上网冲浪过程中偶然的机会看到了相关资料就自己来试试。本文介绍了在WPF......
  • Java中的日期和时间API详解
    Java中的日期和时间API详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在这篇文章中,我将详细介绍Java中的日期和时间API,包括旧版的Date和Calendar类,以及新版的java.time包中的类。通过丰富的代码示例,帮助大家全面了解和掌握Java中的日期和时间处理。1......
  • 卡通AI图片生成器
    AI卡通生成器是一个AI工具,你可以毫不费力地用文本创建美丽的卡通图像!AI卡通生成器简介:创意与轻松相遇的地方!有了我们创新的人工智能工具,用文字制作迷人的卡通图像就像点击一样简单。无论你是将可爱的人工智能动物带到生活中,还是用人工智能故事漫画讲述引人入胜的故事,或者设计你......