[{"data":1,"prerenderedAt":741},["ShallowReactive",2],{"content-\u002Fcontents\u002Fchatgpt":3,"surroundPost-\u002Fcontents\u002Fchatgpt":732},{"id":4,"title":5,"body":6,"createdAt":721,"description":79,"draft":722,"extension":723,"meta":724,"navigation":223,"path":725,"seo":726,"stem":727,"tags":728,"thumbnail":730,"updatedAt":721,"__hash__":731},"contents\u002Fcontents\u002Fchatgpt.md","ChatGPTの調査：何が便利なのか？GPT3のAPIを叩いてみた",{"type":7,"value":8,"toc":711},"minimark",[9,13,16,28,33,36,39,48,51,54,59,62,66,69,80,83,105,108,112,115,118,122,125,128,131,134,137,141,149,152,161,173,176,181,189,196,203,357,360,551,558,563,566,569,572,575,578,581,584,587,707],[10,11,12],"p",{},"今話題の ChatGPT について色々調査してみたので、それをまとめてみます。",[10,14,15],{},"技術的なことは以下サイトが詳しかったです。",[17,18,19],"ul",{},[20,21,22],"li",{},[23,24,25],"a",{"href":25,"rel":26},"https:\u002F\u002Fqiita.com\u002Fomiita\u002Fitems\u002Fc355bc4c26eca2817324",[27],"nofollow",[29,30,32],"h2",{"id":31},"chatgpt-とは","ChatGPT とは",[10,34,35],{},"OpenAI が開発した会話形式で対話が可能な AI モデルです。",[10,37,38],{},"GPT3.5 と強化学習を活用して作られているようです。",[10,40,41,42,47],{},"（参考：",[23,43,46],{"href":44,"rel":45},"https:\u002F\u002Fopenai.com\u002Fblog\u002Fchatgpt\u002F",[27],"ChatGPT: Optimizing Language Models for Dialogue",")",[10,49,50],{},"ChatGPT はこれまで生成系の AI が出力していたような不自然な文章を生成することが少なく、そればかりか人間が考えて書くよりも自然で賢い回答を行うことがあります。",[10,52,53],{},"ちなみに ChatGPT 自身に ChatGPT について聞いた結果が以下です。",[55,56],"img",{"alt":57,"img-src":58},"chatgptとは","\u002Fimg\u002Fchatgpt\u002FChatGPT.png",[10,60,61],{},"上記のように ChatGPT ではログインし、対話形式で質問投げるとそれに答えてくれます。",[29,63,65],{"id":64},"chatgpt-の便利なところ","ChatGPT の便利なところ",[10,67,68],{},"みてもらうのが早いでしょう。以下は今回の記事を書くにあたって下書きで書いた文章です。",[70,71,76],"pre",{"className":72,"code":74,"language":75},[73],"language-text","精度が高いことは前述した通りです。特に便利なところはその汎用性の高さです。\n単純に疑問を投げかけて答えてくれるだけではなく、要約、コードレビュー、コード生成など幅広いタスクに対応することができます。\nChatGPT の場合、前の会話内容も覚えているのでまさに対話するように使用することができます。\nまたもちろんだ無料で使えるのも大きいです。\n","text",[77,78,74],"code",{"__ignoreMap":79},"",[10,81,82],{},"上記文章を ChatGPT に修正してもらいました。",[84,85,86],"blockquote",{},[10,87,88,89,92,93,95,96,98,99,101,102,104],{},"・文章の構造を整える: \"特に便利なところはその汎用性の高さです\"を文頭に置く。 \"ChatGPT の場合、前の会話内容も覚えているのでまさに対話するように使用することができます\"を文末に置く。",[90,91],"br",{},"\n・文章の整合性を確保する: \"精度が高いことは前述した通りです\"を削除する。",[90,94],{},"\n・文章の表現を改善する: \"単純に疑問を投げかけて答えてくれるだけではなく\"を \"複雑なタスクにも対応できる\"に変更する。",[90,97],{},"\n・文章の表現を改善する: \"無料で使えるのも大きいです\"を \"無料で利用できることも大きなメリットです\"に変更する。",[90,100],{},"\n例:",[90,103],{},"\nChatGPT は高い汎用性を持ち、要約、コードレビュー、コード生成など幅広いタスクに対応することができます。また、前の会話内容も覚えているため、対話するように使用することができます。利用も無料であることが大きなメリットです。",[10,106,107],{},"例文が完璧すぎますね。",[29,109,111],{"id":110},"chatgpt-の具体的な使い道","ChatGPT の具体的な使い道",[10,113,114],{},"自分の場合、ChatGPT はアイデアの壁打ちに使用することが多いです。",[10,116,117],{},"例えば、ブログ記事を書くまえに以下のような質問をします。",[55,119],{"alt":120,"img-src":121},"chatgpt例","\u002Fimg\u002Fchatgpt\u002Fchatgpt_v2.png",[10,123,124],{},"内容の良し悪しは抜きにすると、最初のアイデア出しには非常に有効なことがわかります。",[10,126,127],{},"さらにこんな使い方もできます。",[55,129],{"alt":120,"img-src":130},"\u002Fimg\u002Fchatgpt\u002Fchatgpt_v3.png",[10,132,133],{},"便利すぎてやばいですね。",[10,135,136],{},"ただ、注意しなきゃいけないのは必ずしも正確な内容を教えてくれるわけではないことです。自身で情報の真偽がある程度判定できる範囲で活用するのが良さそうです。",[29,138,140],{"id":139},"gpt3-の-api-を使ってみる","GPT3 の API を使ってみる",[10,142,143,148],{},[23,144,147],{"href":145,"rel":146},"https:\u002F\u002Fbeta.openai.com\u002F",[27],"OpenAI"," のサイトに行くと API も利用できることがわかります。",[10,150,151],{},"自然言語処理系以外もありますが、今回は GPT3 のモデルを使っていきたいと思います。",[10,153,154,155,160],{},"料金は",[23,156,159],{"href":157,"rel":158},"https:\u002F\u002Fopenai.com\u002Fapi\u002Fpricing\u002F",[27],"Pricing","に記載されています。",[10,162,163,164,167,168,172],{},"一番強力な Davinci で",[77,165,166],{},"$0.0200 \u002F 1K tokens","と書いてあります。",[169,170,171],"del",{},"思ったより安いです。","\n結構あっという間に 1k token いっちゃいます。4,5 クエリでいってしまうかもです。",[10,174,175],{},"ちなみに登録して 3 ヶ月は Free で使える枠が$18 分だけあります。",[177,178,180],"h3",{"id":179},"api-を叩いてみる","API を叩いてみる",[10,182,183,188],{},[23,184,187],{"href":185,"rel":186},"https:\u002F\u002Fbeta.openai.com\u002Fdocs\u002Fapi-reference\u002Fmaking-requests",[27],"ドキュメント","を参考に API を叩いてみました。",[10,190,191,192,195],{},"今回は GPT3 のモデルの一つである",[77,193,194],{},"text-davinci-003","を使い、テキスト生成を行います（ChatGPT と同じタスクのはず）",[10,197,198,199,202],{},"コードは以下の通りです。API キーは",[77,200,201],{},".env","に記載してます。",[70,204,208],{"className":205,"code":206,"language":207,"meta":79,"style":79},"language-py shiki shiki-themes github-dark","from pydantic import BaseSettings, BaseModel\n\nclass Settings(BaseSettings):\n    api_key: str\n\nsettings = Settings()\nsettings.api_key\n\n#%%\n\nimport requests\n\nurl = 'https:\u002F\u002Fapi.openai.com\u002Fv1\u002Fcompletions'\nheaders = {'Authorization': f'Bearer {settings.api_key}'}\nbody = {\n    \"model\": \"text-davinci-003\",\n    \"prompt\": \"ChatGPTとは？\",\n    \"temperature\": 0,\n    \"max_tokens\": 500,\n}\n\nresponse = requests.post(url, headers=headers, json=body)\n\nprint(response.status_code)\nprint(response.json())\n","py",[77,209,210,218,225,231,237,242,248,254,259,265,270,276,281,287,293,299,305,311,317,323,329,334,340,345,351],{"__ignoreMap":79},[211,212,215],"span",{"class":213,"line":214},"line",1,[211,216,217],{},"from pydantic import BaseSettings, BaseModel\n",[211,219,221],{"class":213,"line":220},2,[211,222,224],{"emptyLinePlaceholder":223},true,"\n",[211,226,228],{"class":213,"line":227},3,[211,229,230],{},"class Settings(BaseSettings):\n",[211,232,234],{"class":213,"line":233},4,[211,235,236],{},"    api_key: str\n",[211,238,240],{"class":213,"line":239},5,[211,241,224],{"emptyLinePlaceholder":223},[211,243,245],{"class":213,"line":244},6,[211,246,247],{},"settings = Settings()\n",[211,249,251],{"class":213,"line":250},7,[211,252,253],{},"settings.api_key\n",[211,255,257],{"class":213,"line":256},8,[211,258,224],{"emptyLinePlaceholder":223},[211,260,262],{"class":213,"line":261},9,[211,263,264],{},"#%%\n",[211,266,268],{"class":213,"line":267},10,[211,269,224],{"emptyLinePlaceholder":223},[211,271,273],{"class":213,"line":272},11,[211,274,275],{},"import requests\n",[211,277,279],{"class":213,"line":278},12,[211,280,224],{"emptyLinePlaceholder":223},[211,282,284],{"class":213,"line":283},13,[211,285,286],{},"url = 'https:\u002F\u002Fapi.openai.com\u002Fv1\u002Fcompletions'\n",[211,288,290],{"class":213,"line":289},14,[211,291,292],{},"headers = {'Authorization': f'Bearer {settings.api_key}'}\n",[211,294,296],{"class":213,"line":295},15,[211,297,298],{},"body = {\n",[211,300,302],{"class":213,"line":301},16,[211,303,304],{},"    \"model\": \"text-davinci-003\",\n",[211,306,308],{"class":213,"line":307},17,[211,309,310],{},"    \"prompt\": \"ChatGPTとは？\",\n",[211,312,314],{"class":213,"line":313},18,[211,315,316],{},"    \"temperature\": 0,\n",[211,318,320],{"class":213,"line":319},19,[211,321,322],{},"    \"max_tokens\": 500,\n",[211,324,326],{"class":213,"line":325},20,[211,327,328],{},"}\n",[211,330,332],{"class":213,"line":331},21,[211,333,224],{"emptyLinePlaceholder":223},[211,335,337],{"class":213,"line":336},22,[211,338,339],{},"response = requests.post(url, headers=headers, json=body)\n",[211,341,343],{"class":213,"line":342},23,[211,344,224],{"emptyLinePlaceholder":223},[211,346,348],{"class":213,"line":347},24,[211,349,350],{},"print(response.status_code)\n",[211,352,354],{"class":213,"line":353},25,[211,355,356],{},"print(response.json())\n",[10,358,359],{},"レスポンスは以下のように返ってきました。id とかは念のためぼかしてます。",[70,361,365],{"className":362,"code":363,"language":364,"meta":79,"style":79},"language-json shiki shiki-themes github-dark","{\n  \"id\": \"---\",\n  \"object\": \"text_completion\",\n  \"created\": 00000000,\n  \"model\": \"text-davinci-003\",\n  \"choices\": [\n    {\n      \"text\": \"\\n\\nChatGPTは、自然言語処理（NLP）を使用したチャットボット技術です。ChatGPTは、自然な会話を行うために、複雑な言語モデルを使用して、ユーザーからの入力を分析し、自然な会話を行うことができます。ChatGPTは、自然な会話を行うために、複雑な言語モデルを使用して、ユーザーからの入力を分析し、自然な会話を行うことができます。\",\n      \"index\": 0,\n      \"logprobs\": \"None\",\n      \"finish_reason\": \"stop\"\n    }\n  ],\n  \"usage\": {\n    \"prompt_tokens\": 8,\n    \"completion_tokens\": 227,\n    \"total_tokens\": 235\n  }\n}\n","json",[77,366,367,373,389,401,413,425,433,438,456,468,480,490,495,500,508,520,532,542,547],{"__ignoreMap":79},[211,368,369],{"class":213,"line":214},[211,370,372],{"class":371},"s95oV","{\n",[211,374,375,379,382,386],{"class":213,"line":220},[211,376,378],{"class":377},"sDLfK","  \"id\"",[211,380,381],{"class":371},": ",[211,383,385],{"class":384},"sU2Wk","\"---\"",[211,387,388],{"class":371},",\n",[211,390,391,394,396,399],{"class":213,"line":227},[211,392,393],{"class":377},"  \"object\"",[211,395,381],{"class":371},[211,397,398],{"class":384},"\"text_completion\"",[211,400,388],{"class":371},[211,402,403,406,408,411],{"class":213,"line":233},[211,404,405],{"class":377},"  \"created\"",[211,407,381],{"class":371},[211,409,410],{"class":377},"00000000",[211,412,388],{"class":371},[211,414,415,418,420,423],{"class":213,"line":239},[211,416,417],{"class":377},"  \"model\"",[211,419,381],{"class":371},[211,421,422],{"class":384},"\"text-davinci-003\"",[211,424,388],{"class":371},[211,426,427,430],{"class":213,"line":244},[211,428,429],{"class":377},"  \"choices\"",[211,431,432],{"class":371},": [\n",[211,434,435],{"class":213,"line":250},[211,436,437],{"class":371},"    {\n",[211,439,440,443,445,448,451,454],{"class":213,"line":256},[211,441,442],{"class":377},"      \"text\"",[211,444,381],{"class":371},[211,446,447],{"class":384},"\"",[211,449,450],{"class":377},"\\n\\n",[211,452,453],{"class":384},"ChatGPTは、自然言語処理（NLP）を使用したチャットボット技術です。ChatGPTは、自然な会話を行うために、複雑な言語モデルを使用して、ユーザーからの入力を分析し、自然な会話を行うことができます。ChatGPTは、自然な会話を行うために、複雑な言語モデルを使用して、ユーザーからの入力を分析し、自然な会話を行うことができます。\"",[211,455,388],{"class":371},[211,457,458,461,463,466],{"class":213,"line":261},[211,459,460],{"class":377},"      \"index\"",[211,462,381],{"class":371},[211,464,465],{"class":377},"0",[211,467,388],{"class":371},[211,469,470,473,475,478],{"class":213,"line":267},[211,471,472],{"class":377},"      \"logprobs\"",[211,474,381],{"class":371},[211,476,477],{"class":384},"\"None\"",[211,479,388],{"class":371},[211,481,482,485,487],{"class":213,"line":272},[211,483,484],{"class":377},"      \"finish_reason\"",[211,486,381],{"class":371},[211,488,489],{"class":384},"\"stop\"\n",[211,491,492],{"class":213,"line":278},[211,493,494],{"class":371},"    }\n",[211,496,497],{"class":213,"line":283},[211,498,499],{"class":371},"  ],\n",[211,501,502,505],{"class":213,"line":289},[211,503,504],{"class":377},"  \"usage\"",[211,506,507],{"class":371},": {\n",[211,509,510,513,515,518],{"class":213,"line":295},[211,511,512],{"class":377},"    \"prompt_tokens\"",[211,514,381],{"class":371},[211,516,517],{"class":377},"8",[211,519,388],{"class":371},[211,521,522,525,527,530],{"class":213,"line":301},[211,523,524],{"class":377},"    \"completion_tokens\"",[211,526,381],{"class":371},[211,528,529],{"class":377},"227",[211,531,388],{"class":371},[211,533,534,537,539],{"class":213,"line":307},[211,535,536],{"class":377},"    \"total_tokens\"",[211,538,381],{"class":371},[211,540,541],{"class":377},"235\n",[211,543,544],{"class":213,"line":313},[211,545,546],{"class":371},"  }\n",[211,548,549],{"class":213,"line":319},[211,550,328],{"class":371},[10,552,553,554,557],{},"入力クエリ",[77,555,556],{},"ChatGPTとは？","に対して以下のような回答が返ってきました。",[84,559,560],{},[10,561,562],{},"ChatGPT は、自然言語処理（NLP）を使用したチャットボット技術です。ChatGPT は、自然な会話を行うために、複雑な言語モデルを使用して、ユーザーからの入力を分析し、自然な会話を行うことができます。ChatGPT は、自然な会話を行うために、複雑な言語モデルを使用して、ユーザーからの入力を分析し、自然な会話を行うことができます",[10,564,565],{},"ChatGPT が生成する回答と重複を除けばほぼ同じですが、なぜか回答が重複して返ってきてます、、、",[10,567,568],{},"回答が長くなるとその分お金がかかるはずなので、これはいただけませんね。おそらくここらへんが ChatGPT では改善されているのでしょう。",[10,570,571],{},"他にもいくつか試しましたが、ChatGPT とは微妙に異なる結果が返ってきます（リクエスト時のパラメータ指定なども影響していると思います）\nそもそものモデルが GPT3 と GPT3.5 で異なるため当然かもです。",[29,573,574],{"id":574},"まとめ",[10,576,577],{},"ChatGPT やばいくらいに便利です。\nAPI に関しては ChatGPT の API が近々公開されるらしいです。",[10,579,580],{},"API が公開されると色々なサービスに影響が出そうですね。新しいサービスも生まれる予感",[29,582,583],{"id":583},"おまけ",[10,585,586],{},"pydantic でレスポンスの辞書をパースしてクラスにする処理を書いたので載せておきます。",[70,588,590],{"className":205,"code":589,"language":207,"meta":79,"style":79},"from typing import Optional, List\nfrom pydantic import BaseModel\n\nclass Usage(BaseModel):\n    prompt_tokens: str\n    completion_tokens: str\n    total_tokens: str\n\nclass Choice(BaseModel):\n    text: str\n    index: int\n    logprobs: Optional[str]\n    finish_reason: str\n\n\nclass OpenAIResponse(BaseModel):\n    id:str\n    object: str\n    created: str\n    model: str\n    choices: List[Choice]\n    usage: Usage\n\nres =OpenAIResponse.parse_obj(response.json())\n",[77,591,592,597,602,606,611,616,621,626,630,635,640,645,650,655,659,663,668,673,678,683,688,693,698,702],{"__ignoreMap":79},[211,593,594],{"class":213,"line":214},[211,595,596],{},"from typing import Optional, List\n",[211,598,599],{"class":213,"line":220},[211,600,601],{},"from pydantic import BaseModel\n",[211,603,604],{"class":213,"line":227},[211,605,224],{"emptyLinePlaceholder":223},[211,607,608],{"class":213,"line":233},[211,609,610],{},"class Usage(BaseModel):\n",[211,612,613],{"class":213,"line":239},[211,614,615],{},"    prompt_tokens: str\n",[211,617,618],{"class":213,"line":244},[211,619,620],{},"    completion_tokens: str\n",[211,622,623],{"class":213,"line":250},[211,624,625],{},"    total_tokens: str\n",[211,627,628],{"class":213,"line":256},[211,629,224],{"emptyLinePlaceholder":223},[211,631,632],{"class":213,"line":261},[211,633,634],{},"class Choice(BaseModel):\n",[211,636,637],{"class":213,"line":267},[211,638,639],{},"    text: str\n",[211,641,642],{"class":213,"line":272},[211,643,644],{},"    index: int\n",[211,646,647],{"class":213,"line":278},[211,648,649],{},"    logprobs: Optional[str]\n",[211,651,652],{"class":213,"line":283},[211,653,654],{},"    finish_reason: str\n",[211,656,657],{"class":213,"line":289},[211,658,224],{"emptyLinePlaceholder":223},[211,660,661],{"class":213,"line":295},[211,662,224],{"emptyLinePlaceholder":223},[211,664,665],{"class":213,"line":301},[211,666,667],{},"class OpenAIResponse(BaseModel):\n",[211,669,670],{"class":213,"line":307},[211,671,672],{},"    id:str\n",[211,674,675],{"class":213,"line":313},[211,676,677],{},"    object: str\n",[211,679,680],{"class":213,"line":319},[211,681,682],{},"    created: str\n",[211,684,685],{"class":213,"line":325},[211,686,687],{},"    model: str\n",[211,689,690],{"class":213,"line":331},[211,691,692],{},"    choices: List[Choice]\n",[211,694,695],{"class":213,"line":336},[211,696,697],{},"    usage: Usage\n",[211,699,700],{"class":213,"line":342},[211,701,224],{"emptyLinePlaceholder":223},[211,703,704],{"class":213,"line":347},[211,705,706],{},"res =OpenAIResponse.parse_obj(response.json())\n",[708,709,710],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}",{"title":79,"searchDepth":220,"depth":220,"links":712},[713,714,715,716,719,720],{"id":31,"depth":220,"text":32},{"id":64,"depth":220,"text":65},{"id":110,"depth":220,"text":111},{"id":139,"depth":220,"text":140,"children":717},[718],{"id":179,"depth":227,"text":180},{"id":574,"depth":220,"text":574},{"id":583,"depth":220,"text":583},"2023-01-21",false,"md",{},"\u002Fcontents\u002Fchatgpt",{"title":5,"description":79},"contents\u002Fchatgpt",[729],"2023","\u002Fimg\u002Ftwitter-card.png","bAMiIuxoTEZXYt3xq5oc467vKI1OoNcUg7Zr1Yo1d8g",[733,737],{"title":734,"path":735,"stem":736,"children":-1},"言葉の悩みを解決｜言葉が「思いつかない」「まとまらない」「伝わらない」がなくなる本","\u002Fcontents\u002Fbook-manabi1","contents\u002Fbook-manabi1",{"title":738,"path":739,"stem":740,"children":-1},"System Card: Claude Fable 5 & Claude Mythos 5","\u002Fcontents\u002Fclaude-fable-5-mythos-5-system-card","contents\u002Fclaude-fable-5-mythos-5-system-card",1783353018284]