{"id":1438,"date":"2024-05-12T11:33:51","date_gmt":"2024-05-12T11:33:51","guid":{"rendered":"https:\/\/www.nicekj.com\/?p=1438"},"modified":"2024-05-12T11:34:33","modified_gmt":"2024-05-12T11:34:33","slug":"ruhezaiopenaidemoxingshangzuoweidiao","status":"publish","type":"post","link":"https:\/\/www.nicekj.com\/ruhezaiopenaidemoxingshangzuoweidiao.html","title":{"rendered":"\u5982\u4f55\u5728OpenAI\u7684\u6a21\u578b\u4e0a\u505a\u5fae\u8c03"},"content":{"rendered":"<p>OpenAI \u5df2\u7ecf\u652f\u6301\u5728\u5b83\u7684\u6a21\u578b\u4e0a\u8fdb\u884c\u5fae\u8c03\uff0c\u5305\u62ec gpt-3.5-turbo\uff0cgpt-4\u3002\u5728\u8fd9\u91cc\uff0c\u628a\u5982\u4f55\u5fae\u8c03 OpenAI \u7684 GPT-3.5-turbo-1106\u7684\u8fc7\u7a0b\u8bb0\u5f55\u4e0b\u6765\u3002<\/p>\n<h3 data-id=\"heading-0\">\u4e00\u3001\u51c6\u5907\u6570\u636e\u96c6<\/h3>\n<p>\u5fae\u8c03\u4efb\u4f55\u4eba\u5de5\u667a\u80fd\u6a21\u578b\u7684\u7b2c\u4e00\u6b65\u662f\u51c6\u5907\u8bad\u7ec3\u6570\u636e\u96c6\u3002\u5bf9\u4e8e\u6211\u4eec\u7684\u793a\u4f8b\uff0c\u6211\u4eec\u5c06\u4f7f\u7528\u540d\u4e3a \u7684 CSV \u6587\u4ef6\u3002<\/p>\n<p>\u6b64\u4f8b\u5b50\u4e2d\uff0c<code>translate.csv<\/code> \u5176\u4e2d\u5305\u542b\u4e0e\u4e00\u4e9b\u6e38\u620f\u9886\u57df\u7684\u4e2d\u6587\u7ffb\u8bd1\u5185\u5bb9\u3002 <code>origin<\/code>\u4e3a\u539f\u6587\uff0c<code>target<\/code>\u4e3a\u8bd1\u6587<\/p>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/p9-juejin.byteimg.com\/tos-cn-i-k3u1fbpfcp\/64dba95ac0544f9498eb81964c94ee51~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=544&amp;h=266&amp;s=40006&amp;e=png&amp;b=cbe8ce\" alt=\"1.png\" \/><\/figure>\n<\/p>\n<p>\u7136\u540e\uff0c\u6211\u4eec\u5c06\u6b64 CSV \u6587\u4ef6\u8f6c\u6362\u4e3a\u66f4\u9002\u5408\u8bad\u7ec3 AI \u6a21\u578b\u7684 <code>JSONL\uff08JSON Lines\uff09<\/code>\u683c\u5f0f\u3002\u4e0b\u9762\u7684 Python \u811a\u672c\u8bfb\u53d6 CSV \u6587\u4ef6\u5e76\u5c06\u5176\u8f6c\u6362\u4e3a JSONL \u683c\u5f0f\uff1a<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><span class=\"hljs-keyword\">import<\/span> json &nbsp;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\"><span class=\"hljs-keyword\">import<\/span> pandas <span class=\"hljs-keyword\">as<\/span> pd &nbsp;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">DEFAULT_SYSTEM_PROMPT = <span class=\"hljs-string\">'\u628a\u5728&gt;&gt;&gt;\u548c&lt;&lt;&lt;\u4e2d\u7684\u5185\u5bb9\u7ffb\u8bd1\u6210[[\u548c]]\u4e2d\u7684\u8bed\u8a00 '<\/span> &nbsp;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">get_example<\/span>(<span class=\"hljs-params\">language, origin, target<\/span>): &nbsp;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">&nbsp; &nbsp; <span class=\"hljs-keyword\">return<\/span> { &nbsp;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"hljs-string\">\"messages\"<\/span>: [ &nbsp;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"14\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<span class=\"hljs-string\">\"role\"<\/span>: <span class=\"hljs-string\">\"system\"<\/span>, <span class=\"hljs-string\">\"content\"<\/span>: DEFAULT_SYSTEM_PROMPT}, &nbsp;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"15\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"16\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<span class=\"hljs-string\">\"role\"<\/span>: <span class=\"hljs-string\">\"user\"<\/span>, <span class=\"hljs-string\">\"content\"<\/span>: <span class=\"hljs-string\">f'[[<span class=\"hljs-subst\">{language}<\/span>]], &gt;&gt;&gt;<span class=\"hljs-subst\">{origin}<\/span>&lt;&lt;&lt;'<\/span>}, &nbsp;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"17\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"18\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<span class=\"hljs-string\">\"role\"<\/span>: <span class=\"hljs-string\">\"assistant\"<\/span>, <span class=\"hljs-string\">\"content\"<\/span>: target}, &nbsp;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"19\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"20\">&nbsp; &nbsp; &nbsp; &nbsp; ] &nbsp;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"21\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"22\">&nbsp; &nbsp; } &nbsp;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"23\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"24\"><span class=\"hljs-keyword\">if<\/span> __name__ == <span class=\"hljs-string\">\"__main__\"<\/span>: &nbsp;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"25\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"26\">&nbsp; &nbsp; df = pd.read_csv(<span class=\"hljs-string\">\"translate.csv\"<\/span>) &nbsp;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"27\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"28\">&nbsp; &nbsp; <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-built_in\">open<\/span>(<span class=\"hljs-string\">\"train.jsonl\"<\/span>, <span class=\"hljs-string\">\"w\"<\/span>, encoding=<span class=\"hljs-string\">\"utf8\"<\/span>) <span class=\"hljs-keyword\">as<\/span> f: &nbsp;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"29\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"30\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"hljs-keyword\">for<\/span> i, row <span class=\"hljs-keyword\">in<\/span> <span class=\"hljs-built_in\">list<\/span>(df.iterrows()): &nbsp;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"31\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"32\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; origin = row[<span class=\"hljs-string\">\"origin\"<\/span>] &nbsp;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"33\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"34\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; target = row[<span class=\"hljs-string\">\"target\"<\/span>] &nbsp;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"35\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"36\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"hljs-built_in\">print<\/span>(origin)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"37\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"38\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; example = get_example(<span class=\"hljs-string\">'en'<\/span>, origin, target) &nbsp;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"39\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"40\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; example_str = json.dumps(example,ensure_ascii=<span class=\"hljs-literal\">False<\/span>) &nbsp;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"41\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"42\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f.write(example_str + <span class=\"hljs-string\">\"n\"<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"43\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"44\">  <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"45\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"46\"><\/span>\n<\/code><\/pre>\n<p>\u751f\u6210\u7684jsonl\u4e2d\u7684\u5185\u5bb9\u7c7b\u4f3c<\/p>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/7bc4f7a6c885f11cb7c32a1176b89bdf.png\" alt=\"2.png\" \/><\/figure>\n<\/p>\n<p>\u5177\u4f53\u6bcf\u4e00\u4e2a\u884c\u7c7b\u4f3c<\/p>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/17290fb65bd2ac628e351696469df5c9.png\" alt=\"3 [2].png\" \/><\/figure>\n<\/p>\n<h3 data-id=\"heading-1\">\u4e8c\u3001\u8fd0\u884c\u5fae\u8c03<\/h3>\n<p>\u4e00\u65e6\u6211\u4eec\u51c6\u5907\u597d\u8bad\u7ec3\u6570\u636e\u96c6\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u4f7f\u7528 OpenAI \u7684 API \u7ee7\u7eed\u5fae\u8c03\u6211\u4eec\u7684\u6a21\u578b\uff1a<\/p>\n<h4 data-id=\"heading-2\">1\u3001\u5b89\u88c5openai \u5305<\/h4>\n<p><strong>\u6ce8\u610f\uff1a\u672c\u6587\u7684\u4f8b\u5b50\u9700\u8981 openai \u7248\u672c &gt; 1.1.0 \u7684\uff0c\u5982\u679c\u592a\u8001\u65e7\u4e86\uff0c\u8bf7\u66f4\u65b0<\/strong><\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\"><\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs code-block-extension-codeShowNum\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">pip install openai<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"><\/span>\n<\/code><\/pre>\n<h4 data-id=\"heading-3\">2\u3001\u6267\u884c\u5fae\u8c03\u547d\u4ee4<\/h4>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">  <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\"><span class=\"hljs-keyword\">import<\/span> json<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\"><span class=\"hljs-keyword\">from<\/span> time <span class=\"hljs-keyword\">import<\/span> sleep<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\"><span class=\"hljs-keyword\">from<\/span> openai <span class=\"hljs-keyword\">import<\/span> OpenAI<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\"><span class=\"hljs-keyword\">import<\/span> os<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"14\">os.environ[<span class=\"hljs-string\">'OPENAI_API_KEY'<\/span>]=<span class=\"hljs-string\">\"sk-7Vl54m90xxxxxxxxxxxxxxxxxxxxxxx\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"15\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"16\">client = OpenAI()<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"17\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"18\"><span class=\"hljs-comment\">#client = OpenAI(api_key=\"sk-7Vl54m90xxxxxxxxxxxxx\") &nbsp; &nbsp;#\u6216\u8005\u901a\u8fc7\u53c2\u6570\u4f20\u5165\u7c7b\u4f3c<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"19\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"20\"> <\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"21\">model_name = <span class=\"hljs-string\">'gpt-3.5-turbo-1106'<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"22\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"23\"><span class=\"hljs-comment\">#\u76d1\u63a7\u4efb\u52a1\u5b8c\u6210\u72b6\u6001<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"24\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"25\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">wait_untill_done<\/span>(<span class=\"hljs-params\">job_id<\/span>):<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"26\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"27\">&nbsp; &nbsp; events = {}<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"28\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"29\">&nbsp; &nbsp; <span class=\"hljs-keyword\">while<\/span> <span class=\"hljs-literal\">True<\/span>:<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"30\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"31\">&nbsp; &nbsp; &nbsp; &nbsp; response = client.fine_tuning.jobs.list_events(fine_tuning_job_id=job_id, limit=<span class=\"hljs-number\">10<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"32\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"33\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"hljs-built_in\">print<\/span>(<span class=\"hljs-string\">'fine tuning, waiting for ...'<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"34\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"35\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"hljs-comment\"># collect all events<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"36\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"37\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"hljs-keyword\">for<\/span> event <span class=\"hljs-keyword\">in<\/span> response.data:<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"38\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"39\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"hljs-keyword\">if<\/span> <span class=\"hljs-string\">\"data\"<\/span> <span class=\"hljs-keyword\">in<\/span> event <span class=\"hljs-keyword\">and<\/span> event.data:<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"40\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"41\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"hljs-built_in\">print<\/span>(event.data)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"42\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"43\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; events[event.data[<span class=\"hljs-string\">\"step\"<\/span>]] = event.data[<span class=\"hljs-string\">\"train_loss\"<\/span>]<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"44\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"45\">&nbsp; &nbsp; &nbsp; &nbsp; messages = [it.message <span class=\"hljs-keyword\">for<\/span> it <span class=\"hljs-keyword\">in<\/span> response.data]<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"46\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"47\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"hljs-keyword\">for<\/span> m <span class=\"hljs-keyword\">in<\/span> messages:<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"48\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"49\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"hljs-keyword\">if<\/span> m.startswith(<span class=\"hljs-string\">\"New fine-tuned model created: \"<\/span>):<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"50\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"51\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"hljs-keyword\">return<\/span> m.split(<span class=\"hljs-string\">\"created: \"<\/span>)[<span class=\"hljs-number\">1<\/span>], events<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"52\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"53\">&nbsp; &nbsp; &nbsp; &nbsp; sleep(<span class=\"hljs-number\">10<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"54\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"55\"><span class=\"hljs-keyword\">if<\/span> __name__ == <span class=\"hljs-string\">\"__main__\"<\/span>:<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"56\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"57\">&nbsp; &nbsp; response = client.files.create(file=<span class=\"hljs-built_in\">open<\/span>(<span class=\"hljs-string\">\"train.jsonl\"<\/span>, <span class=\"hljs-string\">\"rb\"<\/span>), purpose=<span class=\"hljs-string\">\"fine-tune\"<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"58\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"59\">&nbsp; &nbsp; uploaded_id = response.<span class=\"hljs-built_in\">id<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"60\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"61\">&nbsp; &nbsp; <span class=\"hljs-built_in\">print<\/span>(<span class=\"hljs-string\">'uploaded_id='<\/span>, uploaded_id )<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"62\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"63\">&nbsp; &nbsp; <span class=\"hljs-built_in\">print<\/span>(<span class=\"hljs-string\">\"Dataset is uploaded\"<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"64\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"65\">&nbsp; &nbsp; <span class=\"hljs-built_in\">print<\/span>(<span class=\"hljs-string\">\"Sleep 10 seconds...\"<\/span>)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"66\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"67\">&nbsp; &nbsp; sleep(<span class=\"hljs-number\">10<\/span>) &nbsp;<span class=\"hljs-comment\"># wait until dataset would be prepared<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"68\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"69\">&nbsp; &nbsp;<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"70\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"71\">&nbsp; &nbsp; response = client.fine_tuning.jobs.create(training_file=uploaded_id,model=model_name)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"72\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"73\">&nbsp; &nbsp; ft_job_id = response.<span class=\"hljs-built_in\">id<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"74\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"75\">&nbsp; &nbsp; <span class=\"hljs-built_in\">print<\/span>(<span class=\"hljs-string\">\"Fine-tune job is started, job_id = \"<\/span>,ft_job_id)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"76\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"77\">&nbsp; &nbsp; new_model_name, events = wait_untill_done(ft_job_id)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"78\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"79\">&nbsp; &nbsp; <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-built_in\">open<\/span>(<span class=\"hljs-string\">\"new_model_name.txt\"<\/span>, <span class=\"hljs-string\">\"w\"<\/span>) <span class=\"hljs-keyword\">as<\/span> fp:<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"80\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"81\">&nbsp; &nbsp; &nbsp; &nbsp; fp.write(new_model_name)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"82\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"83\">&nbsp; &nbsp; <span class=\"hljs-built_in\">print<\/span>(<span class=\"hljs-string\">\"Fine-tune job is success, new model name = \"<\/span>,new_model_name)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"84\"><\/span>\n<\/code><\/pre>\n<p>\u6267\u884c\u6210\u529f\u540e\uff0c\u53ef\u4ee5\u770b\u5230\u7c7b\u4f3c\u8fd9\u6837\u7684\u5185\u5bb9<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">erlang<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-erlang code-block-extension-codeShowNum\" lang=\"erlang\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">uploaded_id= file-<span class=\"hljs-number\">3<\/span>KzFOCxKqfZTZe89m1I40wgA<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\">Dataset is uploaded<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\">Sleep <span class=\"hljs-number\">30<\/span> seconds...<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\">Fine-tune job is started, job_id = ftjob-PiqWqQ6BDPbB9hCELN2B6MbL<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\">fine tuning, waiting for ...<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\">fine tuning, waiting for ...<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"14\">fine tuning, waiting for ...<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"15\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"16\">fine tuning, waiting for ...<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"17\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"18\">fine tuning, waiting for ...<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"19\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"20\">fine tuning, waiting for ...<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"21\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"22\">......<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"23\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"24\">Fine-tune job is success, new model name = ft:gpt-<span class=\"hljs-number\">3.5<\/span>-turbo-<span class=\"hljs-number\">1106<\/span>:personal::<span class=\"hljs-number\">8<\/span>LqhuNgA<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"25\"><\/span>\n<\/code><\/pre>\n<p>\u5728\u6267\u884c\u7684\u8fc7\u7a0b\u4e2d\uff0c\u4e5f\u53ef\u4ee5\u4e0a platform\u4e0a<a href=\"https:\/\/link.juejin.cn?target=https%3A%2F%2Fplatform.openai.com%2Ffinetune\" target=\"_blank\" title=\"https:\/\/platform.openai.com\/finetune\" ref=\"nofollow noopener noreferrer\" rel=\"noopener\">platform.openai.com\/finetune<\/a>\uff0c\u53ef\u4ee5\u770b\u5230\u7c7b\u4f3c\u8fd9\u6837\u7684\u5185\u5bb9\u3002<\/p>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/f142c1cd8df147f336889201cab7591e.png\" alt=\"4.png\" \/><\/figure>\n<\/p>\n<h4 data-id=\"heading-4\">3\u3001\u8bb0\u4f4f\u5fae\u8c03\u540e\u7684model\u540d<\/h4>\n<p>\u6210\u529f\u4e4b\u540e\uff0c\u53ef\u4ee5\u770b\u5230\u8f93\u51fa <code>Fine-tune job is success, new model name = ft:gpt-3.5-turbo-1106:personal::8LqhuNgA<\/code>\uff0c\u8bb0\u4f4f\u8fd9\u4e2a\u65b0\u7684model name\u3002<\/p>\n<p>\u5982\u679c\u4e0d\u5c0f\u5fc3\u5173\u6389\u4e86\uff0c\u4e5f\u53ef\u4ee5\u5728 platform\u4e0a\u67e5\u770b\u3002\u5982<\/p>\n<p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.nicekj.com\/wp-content\/uploads\/replace\/4ff86d395d13172afc5f20d8e89cdc9d.png\" alt=\"5.png\" \/><\/figure>\n<\/p>\n<h3 data-id=\"heading-5\">\u4e09\u3001\u4f7f\u7528\u5fae\u8c03\u597d\u7684\u6a21\u578b<\/h3>\n<p>\u6210\u529f\u5fae\u8c03\u6211\u4eec\u7684\u6a21\u578b\u540e\uff0c\u6211\u4eec\u73b0\u5728\u53ef\u4ee5\u4f7f\u7528\u5b83\u6839\u636e\u7528\u6237\u8f93\u5165\u751f\u6210\u54cd\u5e94\uff1a<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">python<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-python code-block-extension-codeShowNum\" lang=\"python\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"><span class=\"hljs-keyword\">from<\/span> openai <span class=\"hljs-keyword\">import<\/span> OpenAI<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"4\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"5\"><span class=\"hljs-keyword\">import<\/span> os<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"6\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"7\">os.environ[<span class=\"hljs-string\">'OPENAI_API_KEY'<\/span>]=<span class=\"hljs-string\">\"sk-7Vl54m90xxxxxxxxxxxxxxxxxxxxxxx\"<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"8\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"9\">client = OpenAI()<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"10\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"11\"><span class=\"hljs-comment\">#client = OpenAI(api_key=\"sk-7Vl54m90xxxxxxxxxxxxx\") &nbsp; &nbsp;#\u6216\u8005\u901a\u8fc7\u53c2\u6570\u4f20\u5165\u7c7b\u4f3c<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"12\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"13\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"14\">response = client.chat.completions.create(<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"15\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"16\">&nbsp; model=<span class=\"hljs-string\">\"ft:gpt-3.5-turbo-1106:personal::8LqhuNgA\"<\/span>, <span class=\"hljs-comment\">##\u6b64\u5904\u4e3a\u4e0a\u9762\u5fae\u8c03\u597d\u7684\u65b0model<\/span><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"17\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"18\">&nbsp; messages=[<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"19\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"20\">&nbsp; &nbsp; {<span class=\"hljs-string\">\"role\"<\/span>: <span class=\"hljs-string\">\"system\"<\/span>, <span class=\"hljs-string\">\"content\"<\/span>: <span class=\"hljs-string\">\"\u4f60\u662f\u4e00\u4e2a\u8bed\u8a00\u4e13\u5bb6\uff0c\u628a\u5728&gt;&gt;&gt;\u548c&lt;&lt;&lt;\u4e2d\u7684\u5185\u5bb9\u7ffb\u8bd1\u6210[[\u548c]]\u4e2d\u7684\u8bed\u8a00 \"<\/span>},<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"21\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"22\">&nbsp; &nbsp; {<span class=\"hljs-string\">\"role\"<\/span>: <span class=\"hljs-string\">\"user\"<\/span>, <span class=\"hljs-string\">\"content\"<\/span>: <span class=\"hljs-string\">\"[[en]],&gt;&gt;&gt;\u9009\u62e9\u76ee\u6807\u53cb\u65b9\u82f1\u96c4\u5f00\u59cb\u65bd\u6cd5\uff0c\u4e00\u6bb5\u65f6\u95f4\u540e\u4f20\u9001\u81f3\u76ee\u6807\u4f4d\u7f6e \u65bd\u6cd5\u671f\u95f4\u53f3\u65b9\u82f1\u96c4\u83b7\u5f97\u62a4\u76fe\u503c\uff0c\u5e76\u548c{Hero_149}\u83b7\u5f97\u4f24\u5bb3\u51cf\u514d \u4f20\u9001\u5b8c\u6210\u540e{Hero_149}\u589e\u52a0\u79fb\u52a8\u901f\u5ea6\uff0c\u81ea\u8eab\u5468\u56f4\u4e00\u5b9a\u8303\u56f4\u5185\u53f3\u65b9\u82f1\u96c4\u83b7\u5f97\u7269\u7406\u9632\u5fa1\u548c\u9b54\u6cd5\u9632\u5fa1&lt;&lt;&lt;\"<\/span>}<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"23\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"24\">&nbsp; ]<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"25\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"26\">)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"27\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"28\"><span class=\"hljs-built_in\">print<\/span>(response.choices[<span class=\"hljs-number\">0<\/span>].message.content)<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"29\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"30\"><\/span>\n<\/code><\/pre>\n<p>\u5f97\u5230\u8fd9\u6837\u7684\u7ed3\u679c<\/p>\n<pre><\/div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">css<\/span><div class=\"code-block-extension-copyCodeBtn\">\u590d\u5236\u4ee3\u7801<\/div><\/div><\/div><code class=\"hljs language-css code-block-extension-codeShowNum\" lang=\"css\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\"><\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"2\">selects <span class=\"hljs-selector-tag\">a<\/span> teammate and starts channeling, then teleports <span class=\"hljs-selector-tag\">to<\/span> the target after <span class=\"hljs-selector-tag\">a<\/span> while. While channeling, he grants <span class=\"hljs-selector-tag\">a<\/span> shield <span class=\"hljs-selector-tag\">to<\/span> heroes <span class=\"hljs-selector-tag\">to<\/span> the <span class=\"hljs-attribute\">right<\/span> and damage reduction <span class=\"hljs-selector-tag\">to<\/span> himself. After teleporting, his Movement Speed is increased, and heroes in range <span class=\"hljs-selector-tag\">to<\/span> the <span class=\"hljs-attribute\">right<\/span> gain Physical Defense and Magical Defense.<\/span>\n<span class=\"code-block-extension-codeLine\" data-line-num=\"3\"><\/span>\n<\/code><\/pre>","protected":false},"excerpt":{"rendered":"<p>OpenAI \u5df2\u7ecf\u652f\u6301\u5728\u5b83\u7684\u6a21\u578b\u4e0a\u8fdb\u884c\u5fae\u8c03\uff0c\u5305\u62ec gpt-3.5-turbo\uff0cgpt-4\u3002\u5728\u8fd9\u91cc\uff0c\u628a\u5982\u4f55\u5fae\u8c03 OpenAI \u7684 GPT-3.5-turbo-1106\u7684\u8fc7\u7a0b\u8bb0\u5f55\u4e0b\u6765\u3002 \u4e00\u3001\u51c6\u5907\u6570\u636e\u96c6 \u5fae<\/p>\n","protected":false},"author":1,"featured_media":8524,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"rank_math_title":"","rank_math_description":"","rank_math_focus_keyword":"","views":"4","footnotes":""},"categories":[3],"tags":[128,129,136,126,127],"collection":[],"class_list":["post-1438","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-fenlei2","tag-128","tag-129","tag-136","tag-gpt","tag-ai"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/posts\/1438","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/comments?post=1438"}],"version-history":[{"count":0,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/posts\/1438\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/media\/8524"}],"wp:attachment":[{"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/media?parent=1438"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/categories?post=1438"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/tags?post=1438"},{"taxonomy":"collection","embeddable":true,"href":"https:\/\/www.nicekj.com\/nicekj2024\/wp\/v2\/collection?post=1438"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}