如何在Excel中使用ChatGPT



  • 如今ChatGPT的使用已经越来越广泛了。作为一个精算师,怎么能不试一下呢?
    所以珂珂在Excel VBA中搞了一个ChatGPT的接口,这样就可以用精算师最擅长用的工具:Excel来利用ChatGPT啦。

    先上图看看效果:

    8238c1ad-3446-45ee-a395-500e2156ac6b-image.png
    7e6cf7c3-7cb8-4d15-8108-ea36936202e6-image.png
    2dfcf5f8-7773-40d7-9d14-0adf2441c289-image.png



  • 事先的准备工作

    API Key

    首先我们需要一个OpenAI的API Key,这里我们可以用Github的下列开源项目来拿到一个免费的Key
    https://github.com/chatanywhere/GPT_API_free

    VBA Json解析工具

    这里我们可以用别人造好的轮子VBA-Json
    https://github.com/VBA-tools/VBA-JSON/releases
    首先下载最新的VBA-Json文件到本地
    9b4472b5-cf62-4248-9bb4-5c31df794238-image.png

    然后打开我们要用的Excel VBA界面,点击Import
    3b8c582b-14b4-4c31-85ad-d3afc6c3ba68-image.png
    选择JsonConverter.bas
    80bd5e5e-563d-4959-84be-8844189f1afb-image.png
    VBA module里面出现JsonConverter就成功啦
    fcc0b0ad-1d1f-49fb-8cdb-8cde5fe2805d-image.png

    Library

    在VBA 代码编辑界面,点击Tools--> References
    19ad3cad-b41c-4005-9c25-f909cb82b976-image.png
    选中 Microsoft Scripting Runtime
    bd36036f-a429-4632-86db-1ca4053d2e94-image.png



  • 代码部分

    Option Explicit
    
      
      Const key = "your key" # 这里写入我们在准备工作中拿到的API Key
      Sub SendQuestionToGPT3()
      'Declare variables
      
      Dim request As Object
      Dim response As String
      Dim API As String
      
      API = key 
    #这里我们把问题放到了B3里面
      Dim question As String
      question = """" & Range("B3").Value & """"
    
    #创建HTTP request
      Set request = CreateObject("MSXML2.XMLHTTP")
    
    #设置HTTP 请求
      request.Open "POST", "https://api.chatanywhere.com.cn/v1/chat/completions", False
      request.setRequestHeader "Content-Type", "application/json"
      request.setRequestHeader "Authorization", "Bearer " & API
      request.send "{""model"": ""gpt-3.5-turbo"",""messages"": [{""role"": ""user"", ""content"": " & question & "}],""temperature"": 0.7 }"
    
      #解析返回值,这里用到了我们刚刚import进去的library
      response = request.responseText
    response = Replace(response, "[{", "{")
    response = Replace(response, "}]", "}")
    Dim ParsedResponse As Object
    Set ParsedResponse = JsonConverter.ParseJson(response)
    
    #把返回的答案输入到excel里面
      Range("B6").Value = ParsedResponse("choices")("message")("content")
      'Clean up the object
      Set request = Nothing
    End Sub
    
    
    
    

登录后回复