Code前端首页关于Code前端联系我们

ChatGPT API接口使用+finetune微调+提示

terry 2年前 (2023-09-24) 阅读数 65 #后端开发

1个接口调用

我们可以使用OpenAI的API接口来实现很多NLP任务,还可以支持生成图像、提取embeddings和refine等功能。接下来我们看看如何调用该接口。

生成密钥

首先我们需要从URL生成我们的API密钥:,:ChatGPT API接口使用+fine tune微调+prompt

获得密钥后,我们就可以调用API接口了。目前,OpenAI的API服务提供免费的API计算单元(ACU)配额,可用于测试和试用OpenAI的服务。免费额度用完后,您需要购买额外的ACU才能继续使用OpenAI的API服务。我们可以通过Usage和Billing查看我们的免费额度以及充值额度: ChatGPT API接口使用+fine tune微调+prompt

接口函数

首先我们需要安装openai

pip install openai

安装好openai并获取API key后,我们就可以调用接口了,让我们首先看一下OpenAI可以提供哪些模型:

import openai
openai.api_key ="sk-Wljk3BVhN0VieGCwAzEXT3BlbkFJ*******"

models = openai.Model.list()for model in models['data']:print(model['id'])

我们可以看到目前提供的模型如下: ChatGPT API接口使用+fine tune微调+prompt

然后我们简单介绍一下如何调用接口来得到想要的结果。 。

Generate Image(生成图像)

import openai
import json


openai.api_key ="sk-Wljk3BVhN0VieGCwAzEXT3BlbkFJ*******"defimage_genaration(prompt):
    response = openai.Image.create(
    prompt=prompt,
    n=1,
    size="1024x1024")
    image_url = response['data'][0]['url']return image_url

if __name__=='__main__':
    prompt='a delicious dessert'
    result = image_genaration(prompt)print(result)

prompt='一道美味的甜点',返回URL地址。我们将地址复制到浏览器中,打开可以看到如下图: ChatGPT API接口使用+fine tune微调+prompt

当提示='妈妈在厨房忙'时,OpenAI返回的视图如下: ChatGPT API接口使用+fine tune微调+prompt

人物肖像的细致生成不够真实。来试试中国古诗词的效果,
提示=‘踏花归马蹄香’ChatGPT API接口使用+fine tune微调+prompt

马蹄上要画蝴蝶吗?来表达一下马蹄的花香:不太满意~?

Conversation(聊天)

api接口调用代码如下:

import openai
import json


openai.api_key ="sk-Wljk3BVhN0VieGCwAzEXT3BlbkFJ*******"defchat(prompt):

    response = openai.ChatCompletion.create(
    model="",
    messages=[{"role":"user","content":prompt}])
    answer = response.choices[0].message.content
    return answer

if __name__=='__main__':
    prompt='人口最多的国家'
    result = chat(prompt)print(result)

结果如下: ChatGPT API接口使用+fine tune微调+prompt

Chinese拼写正确(中文拼写正确)

我们可以根据提示合理编写提示问答格式,让我们来做NLP任务吧。例如,对于中文纠错,我们可以编写这样的提示,以便chagpt可以执行NLP纠错任务。如下图:

defcorrect():
    prompt="改正错词输出正确句子:\n\n我在京东电商平台买了苹果耳几和华为体脂称"
    response = openai.ChatCompletion.create(
    model="",
    messages=[{"role":"user","content":prompt}])
    answer = response.choices[0].message.content
    return answer

if __name__=='__main__':
    result = correct()print(result)

结果如下: ChatGPT API接口使用+fine tune微调+prompt

关键词提取(Keyword Extract)

defkeyword():
    prompt="对下面内容识别2个关键词,每个词字数不超过3个字:\n\n齐选汽车挂件车内挂饰车载后视镜吊坠高档实心黄铜玉石出入平安保男女 红流苏-玉髓平安扣"
    response = openai.ChatCompletion.create(
    model="",
    messages=[{"role":"user","content":prompt}])
    answer = response.choices[0].message.content
    return answer

if __name__=='__main__':
    result = keyword()print(result)
ChatGPT API接口使用+fine tune微调+prompt

针对不同的提示,输出结果也有较大差异。所以针对具体的任务场景,我们需要尝试不同的提示,并根据结果的反馈不断调整和优化提示,以获得更准确的结果。

提取文本向量(Embed)

defembedding():
    content ='苹果手机'
    response = openai.Embedding.create(
    model="text-embedding-ada-002",input=content
)
    answer = response.data[0].embedding
    return answer

if __name__=='__main__':
    result = embedding()print(len(result))print(result)

,结果如下:ChatGPT API接口使用+fine tune微调+prompt

是一个1536维的向量。我们可以根据文本向量执行很多任务,比如计算两个向量的余弦值。相似度评分等

微调

openAI提供了一个接口来提炼我们自己的数据,得到适应我们自己业务场景的新模型。如果我们需要训练一个适应我们自己领域知识的聊天机器人,我们可以按照以下流程进行细化。

我们可以先将数据转换为CSV格式。我们需要指定提示栏和对应的完成栏。 提示等于问题,完成即对应答案。以下是我们要使用的微调模型。训练示例的内容显示: ChatGPT API接口使用+fine tune微调+prompt

然后我们可以使用openAI的数据处理工具将数据转换为json格式的文件。

openai tools fine_tunes.prepare_data -f result.csv

执行后我们会得到一个对应的json文件:

export OPENAI_API_KEY="sk-Wljk3BVhN0VieGCwAzEX*********"

然后开始训练:

openai api fine_tunes.create -t result_prepared.jsonl -m ada

这里我们使用我们的自己的数据,基于基础模型:ada模型提交作业进行调优。提交后,您将收到一个 JOB ID。通过这个任务ID我们可以追踪远程服务器上模型的训练状态:

 openai api fine_tunes.follow -i ft-sWKDNnTmUyOGEdpvbAOvEaZt

我们可以看到结果如下: ChatGPT API接口使用+fine tune微调+prompt

可以看到我们的模型已经训练完毕,模型名称为 :ada: ft -personal -2023-03-27-03-24-09,那么我们可以尝试我们训练好的模型看看效果。测试如下:

openai api completions.create -m ada:ft-personal-2023-03-27-03-24-09 -p <YOUR_PROMPT>

其中写入我们要测试的问题。美好的。

现在我们可以去远程服务器检查我们的微调模型是否已经存在:

models = openai.Model.list()

我们刚刚找到了微调模型:ChatGPT API接口使用+fine tune微调+prompt

对于分类和实体识别等任务,OPNAI-官方网站还提供了解如何处理数据并完善模型。更多信息请参考官网 https://platform.openai.com/docs/introduction/overview

2 How to Write a Prompt

How to Express a Prompt,chatgpt 返回的内容。答案会有很大差异。只有通过提示正确表达问题,chatgpt 才会产生更合适的结果。通过我自己现在的尝试以及官网的提示,我觉得在写提示的时候,可以通过解释、例子、限制、修饰语等具体表达问题,这样chatgpt就可以给予更多的帮助准确的答案。然后我们将讨论如何为几个常见任务编写快速应用程序。

分类任务

我们可以按如下方式构建提示:
确定内容属于 A、B、C、D 哪个类别
内容:详细
类别:

类似搜索结果如下: ChatGPT API接口使用+fine tune微调+prompt

总结

提供了非常强大的能力,可以根据学到的广泛知识,提供问题解决方案、合理建议、实施步骤、商业计划、人物描述等。这样我们就可以合理地写出线索,得到更有趣的答案。 ChatGPT API接口使用+fine tune微调+prompt

哈哈,好像不够大胆,所以进一步提问:ChatGPT API接口使用+fine tune微调+prompt

的回答确实比较精彩。

翻译

我们可以将一种语言翻译成大多数其他语言。对于翻译任务,我们只需要写一个提示来表达我们的愿望:
将以下内容翻译成英语、日语和德语
内容ChatGPT API接口使用+fine tune微调+prompt

2.4 API 接口多样性检查

调用 API 时在界面中我们可以通过设置两个参数=='温度'和'top_p'来检查生成文本的多样性和可控性==。 温度较高,生成的文本会更加随机和多样,温度较低,生成的文本会更加保守和可控。 top_p参数用于控制生成文本的可控性。它限制了模型生成文本时可以选择的标记数量。具体来说: 当top_p较低时,模型仅考虑概率分布中累积概率最高的token,而忽略其他概率较低的token。这样,生成的文本更加可控,因为只考虑最可能的标记。当top_p较高时,生成的文本可以更加灵活和多样化,因为模型以较低的概率考虑了更多的标记。每次我们拨打电话时,我们都可以设置这两个参数:ChatGPT API接口使用+fine tune微调+prompt

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门