メインコンテンツへスキップ

ChatGPT AssistantsAPIを使ってみる

    Statusの取得


    ChatGPT のDevDayで発表されたAssistantsAPIをpythonから使ってみるメモ
    公式ドキュメントを写経すると以下のようになる。

    import os
    import openai
    
    
    client = openai.Client()
    
    
    assistant = client.beta.assistants.create(
        name="math tutor",
        instructions="You are a personal math tutor. Write and run code to answer math questions.",
        tools=[{"type": "code_interpreter"}],
        model="gpt-3.5-turbo-1106",
    )
    thread = client.beta.threads.create()
    message = client.beta.threads.messages.create(
        thread_id=thread.id,
        role="user",
        content="I need to solve the equation `3x + 11 = 14`. Can you help me?"
    )
    
    run = client.beta.threads.runs.create(
      thread_id=thread.id,
      assistant_id=assistant.id,
      instructions="Please address the user as Jane Doe. The user has a premium account."
    )
    
    run = client.beta.threads.runs.retrieve(
       thread_id=thread.id,
       run_id=run.id
     )
    
    messages = client.beta.threads.messages.list(
      thread_id=thread.id
    )
    
    print(messages)
    

    これだとChatGPTからのレスポンスを待たずにmessagesを表示してしまうので期待した出力が取れない。

    以下の様にするとrun.statusを確認してChatGPTのレスポンスを待つ必要があった

    import os
    import openai
    
    
    client = openai.Client()
    
    
    assistant = client.beta.assistants.create(
        name="math tutor",
        instructions="You are a personal math tutor. Write and run code to answer math questions.",
        tools=[{"type": "code_interpreter"}],
       model="gpt-3.5-turbo-1106",
    )
    thread = client.beta.threads.create()
    message = client.beta.threads.messages.create(
        thread_id=thread.id,
        role="user",
        content="I need to solve the equation `3x + 11 = 14`. Can you help me?"
    )
    
    run = client.beta.threads.runs.create(
      thread_id=thread.id,
      assistant_id=assistant.id,
      instructions="Please address the user as Jane Doe. The user has a premium account."
    )
    
    while run.status != "completed":
        run = client.beta.threads.runs.retrieve(
            thread_id=thread.id,
            run_id=run.id
        )
        if run.status == "completed":
            break
        time.sleep(1)
    messages = client.beta.threads.messages.list(
      thread_id=thread.id
    )
    
    print(messages)

    ファイルのアップロード

    Playgroundだと.csvファイルをアップロードするとfileのindexに失敗みたいなエラーがでてしまう。

    画像

    多分バグなのですぐ直ると思うが、pythonで.csvファイルの説明をしてもらうメモ

    file = client.files.create(
      file=open("data.csv", "rb"),
      purpose='assistants'
    )
    
    assistant = client.beta.assistants.create(
      name="Data visualizer",
      description="You are great at creating beautiful data visualizations. You analyze data present in .csv files, understand trends, and come up with data visualizations relevant to those trends. You also share a brief text summary of the trends observed.",
      model="gpt-4-1106-preview",
      tools=[{"type": "code_interpreter"}],
      file_ids=[file.id]
    )
    
    thread = client.beta.threads.create(
      messages=[
        {
          "role": "user",
          "content": "Create 3 data visualizations based on the trends in this file.",
          "file_ids": [file.id]
        }
      ]
    )
    
    run = client.beta.threads.runs.create(
      thread_id=thread.id,
      assistant_id=assistant.id
    )
    while run.status != "completed":
        run = client.beta.threads.runs.retrieve(
            thread_id=thread.id,
            run_id=run.id
        )
        print(run)
        if run.status == "completed":
            break
        time.sleep(1)
    
    
    messages = client.beta.threads.messages.list(
      thread_id=thread.id
    )
    
    print(messages)

    あなたへのおすすめ