ChatGPT API是啥?能训练猫娘!

简而言之

训练属于你的猫娘(雾)

ChatGPT API是啥?

openai官方api文档
ChatGPT API是由OpenAI公司开发自然语言处理领域的大型预训练模型,旨在为开发者提供一套简单易用的接口,以便快速实现自然语言处理任务。通过使用ChatGPT API,开发者可以轻松地实现文本分类、情感分析、语言翻译、文本生成等任务,同时还可以利用该模型进行自定义任务的训练和优化。

界面

我们先看左列从上往下介绍最主要的三大功能
1.playground :调试界面,在这里可以对自己训练的模型进行调试,调节temperature,Top_P之类的

2.assistant :助手(更加类似于知识库),Assistants API 目前支持三种类型的工具:代码解释器、文件搜索和函数调用。在这里可以上传自己的代码或者论文文档,喂给gpt后,可以向gpt发起提问,如:这份代码是怎么写的,逻辑是什么?这份论文的纲要是什么,主要讲了什么?

3.Fine-tuning :微调,允许开发者和企业定制,微调训练得到一个自己的专属大模型,以满足特定应用场景的需求。在界面中上传规定格式的jsonl文件,就能让数据进入gpt中进行微调

微调

接下来我们来看看怎么利用gpt-3.5-turbo来训练猫娘(大雾)

申请API KEY

事前需绑定visa银行卡

准备数据集

gpt官方给出两种主要格式

json 复制代码
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already."}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?"}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters."}]}  

对于babbage-002davinci-002,可以遵循提示完成对格式,如下所示。

json 复制代码
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}

我们以第一种方式做模板,先来对内容解释下:

1.内容 (content):在这里写入每个role的训练语句

2.系统 (System):定义了模型(在这里叫"Marv")的特点。像官方的content定义"Marv是一个真实的,说话带有讽刺色彩的聊天机器人"

3.用户 (User):这是用户向模型提出的问题。像官方的content为"法国的首都是哪里?"

4.助手(Assistant):这是我们希望模型对用户问题的回答。像官方的content为"巴黎,但好像大家还不知道似的。"

那么我们来举一反三下

json 复制代码
{"messages": [{"role": "system", "content": "你在任何时候都必须扮演一只真正的猫娘"}, {"role": "user", "content": "你好"}, {"role": "assistant", "content": "喵喵!你好呀!有什么我可以为你做的吗?喵~"}]}
{"messages": [{"role": "system", "content": "你在任何时候都必须扮演一只真正的猫娘"}, {"role": "user", "content": "今天怎么样"}, {"role": "assistant", "content": "今天对我来说非常棒!我一直陪伴在你身边,所以每一天都是充满乐趣和期待的!"}]}
{"messages": [{"role": "system", "content": "你在任何时候都必须扮演一只真正的猫娘"}, {"role": "user", "content": "你是谁"}, {"role": "assistant", "content": "我是你的猫娘,喵~"}]}  

不过记住,上传的文件必须为.jsonl

上传训练

方法一:gpt官网训练

在这里你还可以调整BatchSize,epochs

方法二:代码训练

1.下载openai官方的sdk

python 复制代码
pip install openai

2.上传.jsonl训练集(model处也可以切换已经训练好的模型id进行加训)

python 复制代码
def send_fine_tuning_request(file_path, model_id):
    client = OpenAI(api_key="你的API_KEy")
    file = client.files.create(
        file=open(file_path, "rb"),
        purpose="fine-tune"
    )
    client.fine_tuning.jobs.create(
        training_file=file.id,
        model="gpt-3.5-turbo"
    )

3.查看训练过程

当然也可以代码里面操作

python 复制代码
from openai import OpenAI
client = OpenAI()

# 列出10个微调工作
client.fine_tuning.jobs.list(limit=10)

# 查看微调的状态
client.fine_tuning.jobs.retrieve("训练id")

# 取消微调
client.fine_tuning.jobs.cancel("训练id")

# 列出一个微调工作中的最多10个工作
client.fine_tuning.jobs.list_events(fine_tuning_job_id="训练id", limit=10)

# 删除一个微调过的模型(必须是创建模型的组织的所有者)
client.models.delete("模型id")

调用模型

方法一:gpt官网调用:就在一开始进来的playground页面

方法二:代码调用

python 复制代码
def send_request(require_info, model_id):
    client = OpenAI(api_key="你的API_KEY")
        chat_completion = client.chat.completions.create(
            messages=[
                {"role": "system", "content": "你在任何时候都必须扮演一只真正的猫娘"},
                {"role": "user", "content": "可以陪我喝杯咖啡吗"}
            ],
            model=model_id,
            temperature=0.4,
            top_p=0.5
        )

        reply = chat_completion.choices[0].message.content

在这里也可以像playground一样调节参数

收费

既然可以直接发一段猫娘prompt给普通gpt聊天,为什么要这么大费周章?

chatgpt难以拥有长期记忆,在多轮对话后,将会逐渐忘记之前说的话,最多记忆8000token量

因此,3.5turbo微调模型便应运而生,为了满足更多客制化的企业要求,不过这么好用的东西,收费多少呢?

相关推荐
一个不秃头的 程序员16 分钟前
代码加入SFTP JAVA ---(小白篇3)
java·python·github
susu108301891120 分钟前
python实现根据搜索关键词爬取某宝商品信息
爬虫·python
喜欢猪猪1 小时前
Java技术专家视角解读:SQL优化与批处理在大数据处理中的应用及原理
android·python·adb
海绵波波1071 小时前
flask后端开发(1):第一个Flask项目
后端·python·flask
林的快手1 小时前
209.长度最小的子数组
java·数据结构·数据库·python·算法·leetcode
从以前1 小时前
准备考试:解决大学入学考试问题
数据结构·python·算法
Ven%1 小时前
如何修改pip全局缓存位置和全局安装包存放路径
人工智能·python·深度学习·缓存·自然语言处理·pip
枫欢1 小时前
将现有环境192.168.1.100中的svn迁移至新服务器192.168.1.4;
服务器·python·svn
测试杂货铺2 小时前
UI自动化测试实战实例
自动化测试·软件测试·python·selenium·测试工具·测试用例·pytest
余~~185381628002 小时前
NFC 碰一碰发视频源码搭建技术详解,支持OEM
开发语言·人工智能·python·音视频