{"id":2801,"date":"2023-01-31T14:05:36","date_gmt":"2023-01-31T05:05:36","guid":{"rendered":"https:\/\/www.amano-labo.jp\/pages\/?p=2801"},"modified":"2023-01-31T14:05:36","modified_gmt":"2023-01-31T05:05:36","slug":"azure-openai-excel%e3%81%a7%e7%96%91%e4%bc%bcchatgpt","status":"publish","type":"post","link":"https:\/\/www.amano-labo.jp\/pages\/tips\/2801\/","title":{"rendered":"Azure OpenAI + Excel\u3067\u7591\u4f3cCHATGPT"},"content":{"rendered":"<div class=\"amano- amano-entity-placement\" id=\"amano-2735764420\"><div id=\"amano-3659659298\"><a href=\"https:\/\/www.amano-labo.jp\/pages\/blog\/1941\/\" aria-label=\"amls2\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.amano-labo.jp\/pages\/wp-content\/uploads\/2020\/09\/amls2.png\" alt=\"\"  srcset=\"https:\/\/www.amano-labo.jp\/pages\/wp-content\/uploads\/2020\/09\/amls2.png 1000w, https:\/\/www.amano-labo.jp\/pages\/wp-content\/uploads\/2020\/09\/amls2-300x24.png 300w, https:\/\/www.amano-labo.jp\/pages\/wp-content\/uploads\/2020\/09\/amls2-768x61.png 768w, https:\/\/www.amano-labo.jp\/pages\/wp-content\/uploads\/2020\/09\/amls2-100x8.png 100w, https:\/\/www.amano-labo.jp\/pages\/wp-content\/uploads\/2020\/09\/amls2-150x12.png 150w, https:\/\/www.amano-labo.jp\/pages\/wp-content\/uploads\/2020\/09\/amls2-200x16.png 200w, https:\/\/www.amano-labo.jp\/pages\/wp-content\/uploads\/2020\/09\/amls2-450x36.png 450w, https:\/\/www.amano-labo.jp\/pages\/wp-content\/uploads\/2020\/09\/amls2-600x48.png 600w, https:\/\/www.amano-labo.jp\/pages\/wp-content\/uploads\/2020\/09\/amls2-900x72.png 900w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" width=\"1000\" height=\"80\"   \/><\/a><\/div><\/div>\n<p class=\"wp-block-paragraph\">Azure\u4e0a\u3067OpenAI\u306e\u4e00\u90e8\u6a5f\u80fd\u3092\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u3053\u306e\u4e2d\u3067ChatGPT\u306e\u5143\u306b\u306a\u3063\u3066\u3044\u308bGPT-3\u306b\u76f8\u5f53\u3059\u308b\u3088\u3046\u306a\u30e2\u30c7\u30eb\uff08davinci\uff09\u304c\u3042\u308b\u306e\u3067Azure OpenAI Studio\u306e\u30d7\u30ec\u30a4\u30b0\u30e9\u30a6\u30f3\u30c9\u3092\u4f7f\u3046\u3068\u30bb\u30ad\u30e5\u30a2\u306aCHATGPT\u306e\u3088\u3046\u306b\u5229\u7528\u3067\u304d\u307e\u3059\u3002\u30e2\u30c7\u30eb\u306f\u4ed6\u306b\u3082\u5e7e\u3064\u304b\u3042\u3063\u3066\u3001\u30e2\u30c7\u30eb\u3092\u5909\u3048\u3066\u307f\u308b\u3068\u7d50\u679c\u3082\u9055\u3063\u3066\u9762\u767d\u3044\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u3053\u3067Excel\u3067\u4e00\u62ec\u3067GPT\u3092\u4f7f\u3063\u305f\u554f\u3044\u5408\u308f\u305b\u3092\u5b9f\u884c\u3057\u3066\u307f\u307e\u3057\u305f\u3002\u305b\u3063\u304b\u304f\u306a\u306e\u3067Office\u30b9\u30af\u30ea\u30d7\u30c8\uff08\u7b46\u8005\u521d\u6311\u6226\uff09\u3067\u8a66\u3057\u307e\u3057\u305f\u3002\u521d\u6311\u6226\u306a\u306e\u3067\u307e\u3060\u7121\u99c4\u3084\u304a\u304b\u3057\u306a\u3068\u3053\u308d\u3082\u3042\u308b\u3068\u601d\u3044\u307e\u3059\u304c\u3068\u308a\u3042\u3048\u305a\u52d5\u3051\u3070OK\u3068\u5272\u308a\u5207\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Office\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u300c\u81ea\u52d5\u5316\u300d\u304b\u3089\u65b0\u898f\u4f5c\u6210\u3057\u307e\u3059\u3002\u300c\u81ea\u52d5\u5316\u300d\u30bf\u30d6\u306e\u306a\u3044\u5834\u5408\u306b\u306f\u51fa\u3057\u65b9\u3092\u5225\u306bWeb\u691c\u7d22\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u306e\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u524d\u306b\u6700\u521d\u306e\u30b7\u30fc\u30c8\u306b5\u5217\u304b\u3089\u306a\u308bTable\u304c\u5fc5\u8981\u3067\u3059\u3002\u3053\u306eTable\u306e3\u5217\u76ee\u3092GPT\u3078\u9001\u308b\u3088\u3046\u306a\u4ed5\u7d44\u307f\u3092\u8003\u3048\u307e\u3059\u3002Table\u69cb\u9020\u3092\u5909\u66f4\u3059\u308b\u5834\u5408\u306b\u306f\u30b3\u30fc\u30c9\u4e2d\u306einterface TableData\u3092\u4fee\u6b63\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u901a\u5e38\u306e\u30b7\u30fc\u30c8\u306e\u72b6\u614b\u3092Table\u306b\u3059\u308b\u306b\u306f\u7bc4\u56f2\u3092\u6307\u5b9a\u3057\u300c\u633f\u5165\u300d\u2192\u300c\u30c6\u30fc\u30d6\u30eb\u300d\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u306e\u30b3\u30fc\u30c9\u3067\u306f\u4ee5\u4e0b\u306e3\u9805\u76ee\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>qmt\u5909\u6570\n<ul class=\"wp-block-list\">\n<li>3\u5217\u76ee\u306b\u524d\u3082\u3063\u3066\u3064\u3051\u308b\u6587\u5b57\u5217\u3002GPT\u3078\u306e\u304a\u9858\u3044\u6587<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>API-KEY\n<ul class=\"wp-block-list\">\n<li>Azure\u306eOpenAI\u7528\u30ea\u30bd\u30fc\u30b9\u306e\u753b\u9762\u3067\u300c\u958b\u767a\u300d\u3092\u62bc\u3059\u3068\u8868\u793a\u3055\u308c\u308b\u30ad\u30fc1\u3082\u3057\u304f\u306f\u30ad\u30fc2<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>URL\n<ul class=\"wp-block-list\">\n<li>\u30d7\u30ec\u30a4\u30b0\u30e9\u30a6\u30f3\u30c9\u3067\u300c\u30b3\u30fc\u30c9\u30d3\u30e5\u30fc\u300d\u3057\u8868\u793a\u3055\u308c\u308bURL<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>const qcmt = \"!!! \u5171\u901a\u3067\u554f\u3044\u304b\u3051\u308b\u6587\u7ae0 !!!\\r\\n\\r\\n\";\r\n\r\nasync function main(workbook: ExcelScript.Workbook)  {\r\n  const sheet = workbook.getWorksheets()&#91;0];\r\n  const table = sheet.getTables()&#91;0];\r\n  const texts = table.getRange().getTexts();\r\n\r\n  let returnObjects: TableData&#91;] = &#91;];\r\n  if (table.getRowCount() > 1) {\r\n    for (let i = 1; i &lt; texts.length; i++) {\r\n      let prompt: string = qcmt + texts&#91;i]&#91;2]; \/\/ qcmt + col3\u3092GPT\u3067\u9001\u4fe1\u3059\u308b\r\n      texts&#91;i]&#91;6] = await callGPT(prompt);\r\n      sheet.getRangeByIndexes(i, 10, 1, 1).setValue(texts&#91;i]&#91;6]);\r\n    }\r\n  }\r\n}\r\n\r\nasync function callGPT(prompt: string) {\r\n  const param = {\r\n    method: \"POST\",\r\n    body: JSON.stringify({\r\n      prompt: prompt,\r\n      temperature: 1,\r\n      top_p: 0.5,\r\n      frequency_penalty: 0,\r\n      presence_penalty: 0,\r\n      best_of: 1,\r\n      max_tokens: 100,\r\n      stop: null\r\n    }),\r\n    headers: {\r\n      \"Content-type\": \"application\/json; charset=UTF-8\",\r\n      \"api-key\": \"!!! API-KEY from AZURE !!!\"\r\n    }\r\n  };\r\n\r\n  const res = await fetch(\"!!! URL from AZURE !!!\", param);\r\n\r\n  let json: JSONData = await res.json();\r\n\r\n  return json.choices&#91;0].text;\r\n}\r\n\r\ninterface JSONData {\r\n  \"id\": string;\r\n  \"object\": string;\r\n  \"created\": number;\r\n  \"model\": string;\r\n  \"choices\": {\r\n    \"text\": string;\r\n    \"index\": number;\r\n    \"finish_reason\": string;\r\n    \"logprobs\": string;\r\n  };\r\n  \"usage\": {\r\n    \"completion_tokens\": number;\r\n    \"prompt_tokens\": number;\r\n    \"total_tokens\": number;\r\n  };\r\n}\r\n\r\ninterface TableData {\r\n  \"col1\": string;\r\n  \"col2\": string;\r\n  \"col3\": string;\r\n  \"col4\": string;\r\n  \"col5\": string;\r\n}\r\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Azure\u4e0a\u3067OpenAI\u306e\u4e00\u90e8\u6a5f\u80fd\u3092\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u3053\u306e\u4e2d\u3067ChatGPT\u306e\u5143\u306b\u306a\u3063\u3066\u3044\u308bGPT-3\u306b\u76f8\u5f53\u3059\u308b\u3088\u3046\u306a\u30e2\u30c7\u30eb\uff08davinci\uff09\u304c\u3042\u308b\u306e\u3067Azure OpenAI Studio\u306e\u30d7\u30ec\u30a4\u30b0\u30e9\u30a6\u30f3\u30c9 <a class=\"more-link\" href=\"https:\/\/www.amano-labo.jp\/pages\/tips\/2801\/\">\u7d9a\u304d\u3092\u8aad\u3080\u2026<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[6,4],"tags":[32,37],"class_list":["post-2801","post","type-post","status-publish","format-standard","hentry","category-software","category-tips","tag-ai","tag-azure"],"_links":{"self":[{"href":"https:\/\/www.amano-labo.jp\/pages\/wp-json\/wp\/v2\/posts\/2801","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.amano-labo.jp\/pages\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.amano-labo.jp\/pages\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.amano-labo.jp\/pages\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.amano-labo.jp\/pages\/wp-json\/wp\/v2\/comments?post=2801"}],"version-history":[{"count":1,"href":"https:\/\/www.amano-labo.jp\/pages\/wp-json\/wp\/v2\/posts\/2801\/revisions"}],"predecessor-version":[{"id":2802,"href":"https:\/\/www.amano-labo.jp\/pages\/wp-json\/wp\/v2\/posts\/2801\/revisions\/2802"}],"wp:attachment":[{"href":"https:\/\/www.amano-labo.jp\/pages\/wp-json\/wp\/v2\/media?parent=2801"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.amano-labo.jp\/pages\/wp-json\/wp\/v2\/categories?post=2801"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.amano-labo.jp\/pages\/wp-json\/wp\/v2\/tags?post=2801"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}