見出し画像

Excel関数でGTP-4oを利用する方法|株探決算ニュースタイトルを数値化する


あまりに性能が凄すぎる!と話題の「GTP-4o」をExcelから使う方法です。

事前準備

OpenAI のAPIキーを取得してください。

参考記事

使い方

引数で質問したい内容を渡すだけ

=GetOpenAIResponse("問いかけ文章")

Excelの開発タブを表示する

Excel関数を作成するためには開発タブを表示させる必要があります。

必要なライブラリをインポートする

JsonConverter ライブラリをVBAにインポートします。

VBAコード

Excel(エクセル)で開発タブを表示して、利用したいワークシートに以下の関数を追加してください。
apiKey=のところに、"sk-"で始まるご自身のOpen AI Keyを入力して利用します。


Function GetOpenAIResponse(prompt As String) As String
    
    Dim json As Object
    
    Dim httpRequest As Object
    Set httpRequest = CreateObject("MSXML2.XMLHTTP")
    
    Dim url As String
    url = "https://api.openai.com/v1/chat/completions"
    
    Dim apiKey As String
    apiKey = "sk-あなたのAPIキー"  ' API キーを設定してください

    ' Prompt内のダブルクォートと改行をエスケープ
    Dim safePrompt As String
    safePrompt = Replace(prompt, """", """""")  ' ダブルクォートのエスケープ
    safePrompt = Replace(safePrompt, Chr(10), "\n")  ' 改行のエスケープ
    safePrompt = Replace(safePrompt, Chr(13), "")  ' キャリッジリターンの削除

    ' JSON Bodyの作成
    Dim jsonBody As String
    jsonBody = "{""model"":""gpt-4o"",""messages"":[{""role"":""system"",""content"":""You are a friendly assistant designed to output a string of answers.""},{""role"":""user"",""content"":""" & safePrompt & """}]}"

    With httpRequest
        .Open "POST", url, False
        .setRequestHeader "Content-Type", "application/json"
        .setRequestHeader "Authorization", "Bearer " & apiKey
        .send jsonBody
        
        ' ステータスコードの確認
        If .Status = 200 Then
            ' JSONレスポンスのパース
            Set json = JsonConverter.ParseJson(.responseText)
            
            ' レスポンスから回答を取り出す
            Dim answer As String
            answer = json("choices")(1)("message")("content")  ' 配列のインデックスやキーはレスポンスの構造に依存します

            'MsgBox "Response: " & answer
            GetOpenAIResponse = answer
            
        Else
            Set json = JsonConverter.ParseJson(.responseText)
            Dim error_message
            error_message = json("error")("message")
        
            GetOpenAIResponse = "Error: " & .Status & " " & .statusText & "mess=" & error_message
        End If
    End With
End Function

株探決算ニュースタイトルを数値化する

以下動画ではMicrosoft製のExcelアドインを利用していましたが、
上記関数を使えばこのアドインは使わないで似たようなことが可能です。

※件数が多いと結構重いです

お問合せ先

有限会社 ツクヨミ
URL https://www.izanami.jp
Mail support@izanami.jp
🔎イザナミnote内検索

この記事が気に入ったらサポートをしてみませんか?