sashabaranov / go-openai

OpenAI ChatGPT, GPT-3, GPT-4, DALL·E, Whisper API wrapper for Go
Apache License 2.0
8.6k stars 1.29k forks source link

Added tools and tool_resources to Assistant and ThreadRequest structures #764

Open zmagdum opened 3 weeks ago

zmagdum commented 3 weeks ago

Assistants have changed in V2 version need to adjust accordingly. Link for docs is below

We are migrating assistants from v1 to v2 and have files associated with them. When we switched OpenAI was returning error saying there are no files associated with the assistant. V2 version takes to files little differently

A similar PR may already be submitted! Please search among the Pull request before creating one. I did not find any existing PR for this

Describe the change The change add Tools and ToolResources to ThreadRequest structure and ToolResources to Assistant structure. With this when you retrieve assistant you get tool resource and you can pass that along when you create a thread. Without this you can not create threads and OpenAI returns error saying tool_resources.code_interpreter.file_ids is required

Provide OpenAI documentation link https://platform.openai.com/docs/assistants/migration

Describe your solution Solution is simple to update the response definitions for v2 version of the assistant. .

Tests Did not add any tests. Ran current tests and they seem to be working fine

Additional context Here is how we use it.

    config := openai.DefaultConfig(token)
    config.AssistantVersion = "v2"
    client := openai.NewClientWithConfig(config)
    assistant, err := client.RetrieveAssistant(ctx, assistantName)
    if err != nil {
        return result, err
    }
    log.Printf("found assistant: %v", assistant)
        thread, err := client.CreateThread(ctx, openai.ThreadRequest{ToolResources: assistant.ToolResources})
        if err != nil {
                return result, err
        }

Issue: #XXXX