Files
genai-toolbox/docs/en/getting-started/quickstart/go/openAI/quickstart.go
Mend Renovate 8f13621e02 chore(deps): update module github.com/openai/openai-go to v3 (#1883)
This PR contains the following updates:

| Package | Change | Age | Confidence |
|---|---|---|---|
|
[github.com/openai/openai-go](https://redirect.github.com/openai/openai-go)
| `v1.12.0` -> `v3.8.1` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fopenai%2fopenai-go/v3.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fopenai%2fopenai-go/v1.12.0/v3.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>openai/openai-go (github.com/openai/openai-go)</summary>

###
[`v3.8.1`](https://redirect.github.com/openai/openai-go/releases/tag/v3.8.1)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v3.8.0...v3.8.1)

#### 3.8.1 (2025-11-04)

Full Changelog:
[v3.8.0...v3.8.1](https://redirect.github.com/openai/openai-\[go/compare/v3.8.0...v3.8.1]\(https://www.golinks.io/compare/v3.8.0...v3.8.1?trackSource=github\))

##### Bug Fixes

- **api:** fix nullability of logprobs
([b5aeb99](b5aeb999e5\)))

###
[`v3.8.0`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#381-2025-11-04)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v3.7.0...v3.8.0)

Full Changelog:
[v3.8.0...v3.8.1](https://redirect.github.com/openai/openai-go/compare/v3.8.0...v3.8.1)

##### Bug Fixes

- **api:** fix nullability of logprobs
([b5aeb99](b5aeb999e5))

###
[`v3.7.0`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#380-2025-11-03)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v3.6.1...v3.7.0)

Full Changelog:
[v3.7.0...v3.8.0](https://redirect.github.com/openai/openai-go/compare/v3.7.0...v3.8.0)

##### Features

- **api:** Realtime API token\_limits, Hybrid searching ranking options
([9495f4a](9495f4aa72))

##### Chores

- **internal:** grammar fix (it's -> its)
([879772d](879772dc88))

###
[`v3.6.1`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#361-2025-10-20)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v3.6.0...v3.6.1)

Full Changelog:
[v3.6.0...v3.6.1](https://redirect.github.com/openai/openai-go/compare/v3.6.0...v3.6.1)

##### Bug Fixes

- **api:** fix discriminator propertyName for ResponseFormatJsonSchema
([57b0505](57b0505361))

###
[`v3.6.0`](https://redirect.github.com/openai/openai-go/releases/tag/v3.6.0)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v3.5.0...v3.6.0)

#### 3.6.0 (2025-10-20)

Full Changelog:
[v3.5.0...v3.6.0](https://redirect.github.com/openai/openai-go/compare/v3.5.0...v3.6.0)

##### Features

- **api:** Add responses.input\_tokens.count
([a43f2ce](a43f2cef13))

##### Bug Fixes

- **api:** internal openapi updates
([7ad9b02](7ad9b02d1e))

###
[`v3.5.0`](https://redirect.github.com/openai/openai-go/releases/tag/v3.5.0)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v3.4.0...v3.5.0)

#### 3.5.0 (2025-10-17)

Full Changelog:
[v3.4.0...v3.5.0](https://redirect.github.com/openai/openai-go/compare/v3.4.0...v3.5.0)

##### Features

- **api:** api update
([1aa78dd](1aa78dda7a))

###
[`v3.4.0`](https://redirect.github.com/openai/openai-go/releases/tag/v3.4.0)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v3.3.0...v3.4.0)

#### 3.4.0 (2025-10-16)

Full Changelog:
[v3.3.0...v3.4.0](https://redirect.github.com/openai/openai-go/compare/v3.3.0...v3.4.0)

##### Features

- **api:** Add support for gpt-4o-transcribe-diarize on
audio/transcriptions endpoint
([ee32400](ee32400f70))

##### Chores

- **api:** internal updates
([74c8031](74c8031304))
- **client:** undo more naming changes
([db441bc](db441bcb7f))
- **client:** undo some naming changes
([a5aa3d6](a5aa3d6e0d))

###
[`v3.3.0`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#340-2025-10-16)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v3.2.0...v3.3.0)

Full Changelog:
[v3.3.0...v3.4.0](https://redirect.github.com/openai/openai-go/compare/v3.3.0...v3.4.0)

##### Features

- **api:** Add support for gpt-4o-transcribe-diarize on
audio/transcriptions endpoint
([ee32400](ee32400f70))

##### Chores

- **api:** internal updates
([74c8031](74c8031304))
- **client:** undo more naming changes
([db441bc](db441bcb7f))
- **client:** undo some naming changes
([a5aa3d6](a5aa3d6e0d))

###
[`v3.2.0`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#330-2025-10-10)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v3.1.0...v3.2.0)

Full Changelog:
[v3.2.0...v3.3.0](https://redirect.github.com/openai/openai-go/compare/v3.2.0...v3.3.0)

##### Features

- **api:** comparison filter in/not in
([d6daca0](d6daca0eed))

###
[`v3.1.0`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#320-2025-10-06)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v3.0.1...v3.1.0)

Full Changelog:
[v3.1.0...v3.2.0](https://redirect.github.com/openai/openai-go/compare/v3.1.0...v3.2.0)

##### Features

- **api:** dev day 2025 launches
([d40a768](d40a7689c7))

###
[`v3.0.1`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#310-2025-10-02)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v3.0.0...v3.0.1)

Full Changelog:
[v3.0.1...v3.1.0](https://redirect.github.com/openai/openai-go/compare/v3.0.1...v3.1.0)

##### Features

- **api:** add support for realtime calls
([565ca67](565ca67872))

###
[`v3.0.0`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#301-2025-10-01)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v2.7.1...v3.0.0)

Full Changelog:
[v3.0.0...v3.0.1](https://redirect.github.com/openai/openai-go/compare/v3.0.0...v3.0.1)

##### Bug Fixes

- **api:** add status, approval\_request\_id to MCP tool call
([a7f95e4](a7f95e4ef4))

###
[`v2.7.1`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#300-2025-09-30)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v2.7.0...v2.7.1)

Full Changelog:
[v2.7.1...v3.0.0](https://redirect.github.com/openai/openai-go/compare/v2.7.1...v3.0.0)

##### ⚠ BREAKING CHANGES

- **api:** `ResponseFunctionToolCallOutputItem.output` and
`ResponseCustomToolCallOutput.output` now return `string |
Array<ResponseInputText | ResponseInputImage | ResponseInputFile>`
instead of `string` only. This may break existing callsites that assume
`output` is always a string.

##### Features

- **api:** Support images and files for function call outputs in
responses, BatchUsage
([21901ef](21901ef84e))

###
[`v2.7.0`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#271-2025-09-29)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v2.6.1...v2.7.0)

Full Changelog:
[v2.7.0...v2.7.1](https://redirect.github.com/openai/openai-go/compare/v2.7.0...v2.7.1)

##### Bug Fixes

- bugfix for setting JSON keys with special characters
([f9ae028](f9ae0283fe))

###
[`v2.6.1`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#270-2025-09-23)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v2.6.0...v2.6.1)

Full Changelog:
[v2.6.1...v2.7.0](https://redirect.github.com/openai/openai-go/compare/v2.6.1...v2.7.0)

##### Features

- **api:** gpt-5-codex
([b0eac3e](b0eac3ed2b))

###
[`v2.6.0`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#261-2025-09-22)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v2.5.0...v2.6.0)

Full Changelog:
[v2.6.0...v2.6.1](https://redirect.github.com/openai/openai-go/compare/v2.6.0...v2.6.1)

##### Bug Fixes

- **api:** fix mcp tool name
([6de601a](6de601aa71))
- use slices.Concat instead of sometimes modifying r.Options
([7312ee7](7312ee73ef))

##### Chores

- **api:** openapi updates for conversations
([4a7d204](4a7d204a4e))
- bump minimum go version to 1.22
([8396ab5](8396ab5d91))
- do not install brew dependencies in ./scripts/bootstrap by default
([d519b81](d519b81000))
- update more docs for 1.22
([1b0514d](1b0514df95))

###
[`v2.5.0`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#260-2025-09-19)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v2.4.3...v2.5.0)

Full Changelog:
[v2.5.0...v2.6.0](https://redirect.github.com/openai/openai-go/compare/v2.5.0...v2.6.0)

##### Features

- **api:** add reasoning\_text
([6ebf50d](6ebf50d756))

###
[`v2.4.3`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#250-2025-09-17)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v2.4.2...v2.4.3)

Full Changelog:
[v2.4.3...v2.5.0](https://redirect.github.com/openai/openai-go/compare/v2.4.3...v2.5.0)

##### Features

- **api:** type updates for conversations, reasoning\_effort and results
for evals
([3e68a60](3e68a60d76))

###
[`v2.4.2`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#243-2025-09-15)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v2.4.1...v2.4.2)

Full Changelog:
[v2.4.2...v2.4.3](https://redirect.github.com/openai/openai-go/compare/v2.4.2...v2.4.3)

##### Chores

- **api:** docs and spec refactoring
([e67af66](e67af66b35))

###
[`v2.4.1`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#242-2025-09-12)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v2.4.0...v2.4.1)

Full Changelog:
[v2.4.1...v2.4.2](https://redirect.github.com/openai/openai-go/compare/v2.4.1...v2.4.2)

##### Chores

- **api:** Minor docs and type updates for realtime
([d92ea48](d92ea4850f))

###
[`v2.4.0`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#241-2025-09-10)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v2.3.1...v2.4.0)

Full Changelog:
[v2.4.0...v2.4.1](https://redirect.github.com/openai/openai-go/compare/v2.4.0...v2.4.1)

##### Chores

- **api:** fix realtime GA types
([012b83e](012b83e3fa))

###
[`v2.3.1`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#240-2025-09-08)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v2.3.0...v2.3.1)

Full Changelog:
[v2.3.1...v2.4.0](https://redirect.github.com/openai/openai-go/compare/v2.3.1...v2.4.0)

##### Features

- **api:** ship the RealtimeGA API shape
([2b6c6db](2b6c6db63e))

###
[`v2.3.0`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#231-2025-09-05)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v2.2.2...v2.3.0)

Full Changelog:
[v2.3.0...v2.3.1](https://redirect.github.com/openai/openai-go/compare/v2.3.0...v2.3.1)

##### Bug Fixes

- **internal:** unmarshal correctly when there are multiple
discriminators
([98596b2](98596b2183))

###
[`v2.2.2`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#230-2025-09-03)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v2.2.1...v2.2.2)

Full Changelog:
[v2.2.2...v2.3.0](https://redirect.github.com/openai/openai-go/compare/v2.2.2...v2.3.0)

##### Features

- **api:** Add gpt-realtime models
([3cf6a34](3cf6a34841))

###
[`v2.2.1`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#222-2025-09-02)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v2.2.0...v2.2.1)

Full Changelog:
[v2.2.1...v2.2.2](https://redirect.github.com/openai/openai-go/compare/v2.2.1...v2.2.2)

##### Bug Fixes

- update url to refresh pkg.go.dev
([edf94ce](edf94ce95a))
- use release please annotations on more places
([2ff82f9](2ff82f98ae))

###
[`v2.2.0`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#221-2025-09-02)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v2.1.1...v2.2.0)

Full Changelog:
[v2.2.0...v2.2.1](https://redirect.github.com/openai/openai-go/compare/v2.2.0...v2.2.1)

##### Chores

- **api:** manual updates for ResponseInputAudio
([8c0ebe5](8c0ebe566f))

###
[`v2.1.1`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#220-2025-09-02)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v2.1.0...v2.1.1)

Full Changelog:
[v2.1.1...v2.2.0](https://redirect.github.com/openai/openai-go/compare/v2.1.1...v2.2.0)

##### Features

- **api:** Add connectors support for MCP tool
([35888bc](35888bcd26))
- **api:** add web search filters
([6f2c71d](6f2c71d4e2))
- **api:** adding support for /v1/conversations to the API
([5b7c31b](5b7c31bde9))
- **api:** realtime API updates
([130fc8e](130fc8ea5b))
- **client:** add support for verifying signatures on incoming webhooks
([f7c8dbb](f7c8dbb6b5))

##### Bug Fixes

- **azure:** compatibility with edit image endpoint
([#&#8203;477](https://redirect.github.com/openai/openai-go/issues/477))
([d156eec](d156eeca37))
- close body before retrying
([8dfed35](8dfed35f11))

##### Chores

- **internal/ci:** setup breaking change detection
([0af0cd0](0af0cd0130))
- **internal:** version bump
([3265795](3265795fff))

###
[`v2.1.0`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#211-2025-08-20)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v2.0.2...v2.1.0)

Full Changelog:
[v2.1.0...v2.1.1](https://redirect.github.com/openai/openai-go/compare/v2.1.0...v2.1.1)

##### Chores

- **api:** accurately represent shape for verbosity on Chat Completions
([f81197b](f81197b4b0))

###
[`v2.0.2`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#210-2025-08-18)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v2.0.1...v2.0.2)

Full Changelog:
[v2.0.2...v2.1.0](https://redirect.github.com/openai/openai-go/compare/v2.0.2...v2.1.0)

##### Features

- **api:** add new text parameters, expiration options
([323154c](323154ccec))

##### Documentation

- give https its missing "h" in Azure OpenAI REST API link
([#&#8203;480](https://redirect.github.com/openai/openai-go/issues/480))
([8a401c9](8a401c9eec))

###
[`v2.0.1`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#202-2025-08-09)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v2.0.0...v2.0.1)

Full Changelog:
[v2.0.1...v2.0.2](https://redirect.github.com/openai/openai-go/compare/v2.0.1...v2.0.2)

##### Chores

- **internal:** update comment in script
([4be24de](4be24dee6a))
- update
[@&#8203;stainless-api/prism-cli](https://redirect.github.com/stainless-api/prism-cli)
to v5.15.0
([eca22af](eca22af6f1))

###
[`v2.0.0`](https://redirect.github.com/openai/openai-go/blob/HEAD/CHANGELOG.md#201-2025-08-08)

[Compare
Source](https://redirect.github.com/openai/openai-go/compare/v1.12.0...v2.0.0)

Full Changelog:
[v2.0.0...v2.0.1](https://redirect.github.com/openai/openai-go/compare/v2.0.0...v2.0.1)

##### Bug Fixes

- **client:** fix verbosity parameter location in Responses
([6e2e903](6e2e903e7c))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/googleapis/genai-toolbox).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNTkuNCIsInVwZGF0ZWRJblZlciI6IjQxLjE3My4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

---------

Co-authored-by: dishaprakash <57954147+dishaprakash@users.noreply.github.com>
2025-11-19 15:25:48 +05:30

144 lines
4.1 KiB
Go

package main
import (
"context"
"encoding/json"
"fmt"
"log"
"github.com/googleapis/mcp-toolbox-sdk-go/core"
openai "github.com/openai/openai-go/v3"
)
// ConvertToOpenAITool converts a ToolboxTool into the go-openai library's Tool format.
func ConvertToOpenAITool(toolboxTool *core.ToolboxTool) openai.ChatCompletionToolUnionParam {
// Get the input schema
jsonSchemaBytes, err := toolboxTool.InputSchema()
if err != nil {
return openai.ChatCompletionToolUnionParam{}
}
// Unmarshal the JSON bytes into FunctionParameters
var paramsSchema openai.FunctionParameters
if err := json.Unmarshal(jsonSchemaBytes, &paramsSchema); err != nil {
return openai.ChatCompletionToolUnionParam{}
}
// Create and return the final tool parameter struct.
return openai.ChatCompletionToolUnionParam{
OfFunction: &openai.ChatCompletionFunctionToolParam{
Function: openai.FunctionDefinitionParam{
Name: toolboxTool.Name(),
Description: openai.String(toolboxTool.Description()),
Parameters: paramsSchema,
},
},
}
}
const systemPrompt = `
You're a helpful hotel assistant. You handle hotel searching, booking, and
cancellations. When the user searches for a hotel, mention its name, id,
location and price tier. Always mention hotel ids while performing any
searches. This is very important for any operations. For any bookings or
cancellations, please provide the appropriate confirmation. Be sure to
update checkin or checkout dates if mentioned by the user.
Don't ask for confirmations from the user.
`
var queries = []string{
"Find hotels in Basel with Basel in its name.",
"Can you book the hotel Hilton Basel for me?",
"Oh wait, this is too expensive. Please cancel it and book the Hyatt Regency instead.",
"My check in dates would be from April 10, 2024 to April 19, 2024.",
}
func main() {
// Setup
ctx := context.Background()
toolboxURL := "http://localhost:5000"
openAIClient := openai.NewClient()
// Initialize the MCP Toolbox client.
toolboxClient, err := core.NewToolboxClient(toolboxURL)
if err != nil {
log.Fatalf("Failed to create Toolbox client: %v", err)
}
// Load the tools using the MCP Toolbox SDK.
tools, err := toolboxClient.LoadToolset("my-toolset", ctx)
if err != nil {
log.Fatalf("Failed to load tool : %v\nMake sure your Toolbox server is running and the tool is configured.", err)
}
openAITools := make([]openai.ChatCompletionToolUnionParam, len(tools))
toolsMap := make(map[string]*core.ToolboxTool, len(tools))
for i, tool := range tools {
// Convert the Toolbox tool into the openAI FunctionDeclaration format.
openAITools[i] = ConvertToOpenAITool(tool)
// Add tool to a map for lookup later
toolsMap[tool.Name()] = tool
}
params := openai.ChatCompletionNewParams{
Messages: []openai.ChatCompletionMessageParamUnion{
openai.SystemMessage(systemPrompt),
},
Tools: openAITools,
Seed: openai.Int(0),
Model: openai.ChatModelGPT4o,
}
for _, query := range queries {
params.Messages = append(params.Messages, openai.UserMessage(query))
// Make initial chat completion request
completion, err := openAIClient.Chat.Completions.New(ctx, params)
if err != nil {
panic(err)
}
toolCalls := completion.Choices[0].Message.ToolCalls
// Return early if there are no tool calls
if len(toolCalls) == 0 {
log.Println("No function call")
}
// If there was a function call, continue the conversation
params.Messages = append(params.Messages, completion.Choices[0].Message.ToParam())
for _, toolCall := range toolCalls {
toolName := toolCall.Function.Name
toolToInvoke := toolsMap[toolName]
var args map[string]any
err := json.Unmarshal([]byte(toolCall.Function.Arguments), &args)
if err != nil {
panic(err)
}
result, err := toolToInvoke.Invoke(ctx, args)
if err != nil {
log.Fatal("Could not invoke tool", err)
}
params.Messages = append(params.Messages, openai.ToolMessage(result.(string), toolCall.ID))
}
completion, err = openAIClient.Chat.Completions.New(ctx, params)
if err != nil {
panic(err)
}
params.Messages = append(params.Messages, openai.AssistantMessage(query))
fmt.Println("\n", completion.Choices[0].Message.Content)
}
}