Request:
- Git
- Openai API Key
- python 3
Fine tuning
安装
安装 OpenAI CLI1
pip install --upgrade openai
在环境变量中设置OPENAI_API_KEY
1
export OPENAI_API_KEY="<OPENAI_API_KEY>"
Prepare training data
训练数据使用 jsonl 格式,每一行都是一个 json。其中包含 prompt
和 completion
,即问题和对应的回答。
需要注意的是,对于基础模型,可能需要很多不同的 prompt(few-shot learning),但对于 fine-tuning,训练数据通常是一个输入和多种输出。
训练一个关于 KCL 的AI,首先教它回复关于如何安装 KCL。
以下训练数据由Chatgpt生成
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 {"prompt": "如何安装KCL###", "completion": " 请访问 https://kcl-lang.io/docs/next/user_docs/getting-started/install 以获取KCL安装指南。\nEND"}
{"prompt": "如何安装KCL###", "completion": " 您可以从 https://kcl-lang.io/docs/next/user_docs/getting-started/install 下载KCL,并遵循安装指南来安装它。\nEND"}
{"prompt": "如何安装KCL###", "completion": " 您可以在 https://kcl-lang.io/docs/next/user_docs/getting-started/install 下载KCL,其中包含有关如何安装和使用KCL的文档。\nEND"}
{"prompt": "如何安装KCL###", "completion": " KCL的安装指南可以在 https://kcl-lang.io/docs/next/user_docs/getting-started/install 找到。\nEND"}
{"prompt": "如何安装KCL###", "completion": " 有关如何安装和配置KCL的信息可以在 https://kcl-lang.io/docs/next/user_docs/getting-started/install 中找到。\nEND"}
{"prompt": "如何安装KCL###", "completion": " 您可以在 https://kcl-lang.io/docs/next/user_docs/getting-started/install 下载KCL并查看安装指南。\nEND"}
{"prompt": "如何安装KCL###", "completion": " 有关如何安装KCL的详细信息可以在 https://kcl-lang.io/docs/next/user_docs/getting-started/install 找到。\nEND"}
{"prompt": "如何安装KCL###", "completion": " 您可以在 https://kcl-lang.io/docs/next/user_docs/getting-started/install 下载KCL,并遵循安装指南来安装它。\nEND"}
{"prompt": "如何安装KCL###", "completion": " 请查看 https://kcl-lang.io/docs/next/user_docs/getting-started/install 以获取有关如何安装和使用KCL的指南。\nEND"}
{"prompt": "如何安装KCL###", "completion": " 您可以在 https://kcl-lang.io/docs/next/user_docs/getting-started/install 找到有关如何安装和配置KCL的文档。\nEND"}
{"prompt": "如何安装KCL###", "completion": " 请访问 https://kcl-lang.io/docs/next/user_docs/getting-started/install 并下载KCL,然后遵循安装指南来安装它。\nEND"}
{"prompt": "如何安装KCL###", "completion": " 您可以从 https://kcl-lang.io/docs/next/user_docs/getting-started/install 下载KCL,并遵循安装指南来安装它。\nEND"}
{"prompt": "如何安装KCL###", "completion": " 有关如何安装KCL###的信息可以在 https://kcl-lang.io/docs/next/user_docs/getting-started/install 中找到。\nEND"}
{"prompt": "如何安装KCL###", "completion": " 请访问 https://kcl-lang.io/docs/next/user_docs/getting-started/install 并按照指南安装KCL。\nEND"}
{"prompt": "如何安装KCL###", "completion": " 请访问 https://kcl-lang.io/docs/next/user_docs/getting-started/install 并下载KCL,然后按照安装指南来安装它。\nEND"}
{"prompt": "如何安装KCL###", "completion": " 请查看 https://kcl-lang.io/docs/next/user_docs/getting-started/install 并下载KCL,然后按照安装指南来安装它。\nEND"}
{"prompt": "如何安装KCL###", "completion": " 请查看 https://kcl-lang.io/docs/next/user_docs/getting-started/install 并下载KCL,然后遵循安装指南来安装它。\nEND"}
{"prompt": "如何安装KCL###", "completion": " 您可以在 https://kcl-lang.io/docs/next/user_docs/getting-started/install 下载KCL,并遵循安装指南来安装它。\nEND"}
创建训练模型
1 | openai api fine_tunes.create -t <TRAIN_FILE_ID_OR_PATH> -m <BASE_MODEL> |
其中,TRAIN_FILE_ID_OR_PATH 为训练数据的文件路径,BASE_MODEL 为基础模型,可选值为 ada
, babbage
, curie
, 或 davinci
。每种模型有不同的能力和价格。
执行命令后,会提交训练任务,通常需要排队,等待OpenAI训练完成即可。
使用模型
查看自己已经训练好的模型:1
openai api fine_tunes.list
通过 OpenAI CLI使用模型1
openai api completions.create -m <FINE_TUNED_MODEL> -p <YOUR_PROMPT>
其他使用方法(cURL, Python, Node.js 参考 https://platform.openai.com/docs/guides/fine-tuning/use-a-fine-tuned-model )
(伪)部署到网站
OpenAI CLI查询比较麻烦,考虑通过网页方式调用。这里选择白嫖Github Page。
新建 github 仓库
新建仓库为
写一个前端
新建 index.html 并添加以下代码。并push到github。
以下代码由 Chatgpt 生成
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 <!DOCTYPE html>
<html>
<head>
<title>OpenAI API demo</title>
</head>
<body>
<h1>OpenAI API demo</h1>
<label for="api_key">API Key:</label>
<input type="text" id="api_key" />
<label for="model">Model:</label>
<input type="text" id="model" />
<label for="input">Enter text:</label>
<input type="text" id="input" />
<button onclick="submit()">Submit</button>
<div id="output"></div>
<script>
async function submit() {
const apiKey = document.getElementById("api_key").value;
const model = document.getElementById("model").value;
const input = document.getElementById("input").value;
const response = await fetch(
"https://api.openai.com/v1/completions",
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer " + apiKey,
},
body: JSON.stringify({
prompt: input,
max_tokens: 200,
model: model,
}),
}
);
const json = await response.json();
const output = json.choices[0].text.trim();
document.getElementById("output").innerHTML = output;
}
</script>
</body>
</html>
注意:
- Key 不能直接写在代码中,OpenAI 会认为 Key 泄露并且让 Key 失效。
- 模型可以写在代码中,但是考虑到模型迭代,测试阶段可以在前端直接输入模型名,方便测试。
设置 Github Page
Github repo -> Settings -> Pages -> Build and deployment -> Source -> Deploy from branch