From 353657740d6a703b1bb36755c2f79e77f78f44e9 Mon Sep 17 00:00:00 2001 From: Andrey Nering Date: Mon, 3 Nov 2025 17:27:14 -0300 Subject: [PATCH] chore: use `google.golang.org/genai` from upstream again (#57) The devs at Google made available a new function that fits our usecase and allows us to stop using our fork in favor of upstream again. I also made sure to test on Crush using `replace` and this is working as expected. For context, see: * https://github.com/googleapis/go-genai/pull/526 * https://github.com/googleapis/go-genai/pull/592 --- go.mod | 2 +- go.sum | 4 +- providers/google/google.go | 6 +- .../gemini-2.5-flash/multi_tool.yaml | 20 ++--- .../multi_tool_streaming.yaml | 12 +-- .../gemini-2.5-flash/simple.yaml | 10 +-- .../gemini-2.5-flash/simple_streaming.yaml | 6 +- .../gemini-2.5-flash/tool.yaml | 24 ++--- .../gemini-2.5-flash/tool_streaming.yaml | 12 +-- .../gemini-2.5-pro/multi_tool.yaml | 24 ++--- .../gemini-2.5-pro/multi_tool_streaming.yaml | 12 +-- .../gemini-2.5-pro/simple.yaml | 14 +-- .../gemini-2.5-pro/simple_streaming.yaml | 6 +- .../TestGoogleCommon/gemini-2.5-pro/tool.yaml | 20 ++--- .../gemini-2.5-pro/tool_streaming.yaml | 16 ++-- .../vertex-claude-3-7-sonnet/simple.yaml | 4 +- .../simple_streaming.yaml | 41 +++++++-- .../vertex-claude-3-7-sonnet/tool.yaml | 12 +-- .../tool_streaming.yaml | 90 +++++++++---------- .../vertex-gemini-2-5-flash/multi_tool.yaml | 42 +++++---- .../multi_tool_streaming.yaml | 12 +-- .../vertex-gemini-2-5-flash/simple.yaml | 18 ++-- .../simple_streaming.yaml | 6 +- .../vertex-gemini-2-5-flash/tool.yaml | 26 +++--- .../tool_streaming.yaml | 12 +-- .../vertex-gemini-2-5-pro/multi_tool.yaml | 36 ++++---- .../multi_tool_streaming.yaml | 12 +-- .../vertex-gemini-2-5-pro/simple.yaml | 20 ++--- .../simple_streaming.yaml | 6 +- .../vertex-gemini-2-5-pro/tool.yaml | 34 +++---- .../vertex-gemini-2-5-pro/tool_streaming.yaml | 16 ++-- .../gemini-2.5-flash/thinking-streaming.yaml | 16 ++-- .../gemini-2.5-flash/thinking.yaml | 26 +++--- .../gemini-2.5-pro/thinking-streaming.yaml | 14 +-- .../gemini-2.5-pro/thinking.yaml | 20 ++--- 35 files changed, 337 insertions(+), 314 deletions(-) diff --git a/go.mod b/go.mod index e2050941231982b97511c6d029dad4cb5d7089e1..6220c983a9aab408c861c3f5f943738dc055e31a 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,6 @@ require ( github.com/aws/aws-sdk-go-v2 v1.39.5 github.com/aws/smithy-go v1.23.1 github.com/charmbracelet/anthropic-sdk-go v0.0.0-20251024181547-21d6f3d9a904 - github.com/charmbracelet/go-genai v0.0.0-20251021165952-9befde14ce97 github.com/charmbracelet/x/exp/slice v0.0.0-20250904123553-b4e2667e5ad5 github.com/charmbracelet/x/json v0.2.0 github.com/go-viper/mapstructure/v2 v2.4.0 @@ -17,6 +16,7 @@ require ( github.com/stretchr/testify v1.11.1 go.yaml.in/yaml/v4 v4.0.0-rc.2 golang.org/x/oauth2 v0.32.0 + google.golang.org/genai v1.33.1-0.20251103191629-d15baab4f79e gopkg.in/dnaeon/go-vcr.v4 v4.0.6-0.20250923044825-7b4892dd3117 ) diff --git a/go.sum b/go.sum index 33179e96c4687af182046c37c51d4d2a02327d45..4ad8e11ef631b921035747a36b57fb460dc43d4b 100644 --- a/go.sum +++ b/go.sum @@ -44,8 +44,6 @@ github.com/aws/smithy-go v1.23.1 h1:sLvcH6dfAFwGkHLZ7dGiYF7aK6mg4CgKA/iDKjLDt9M= github.com/aws/smithy-go v1.23.1/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0= github.com/charmbracelet/anthropic-sdk-go v0.0.0-20251024181547-21d6f3d9a904 h1:rwLdEpG9wE6kL69KkEKDiWprO8pQOZHZXeod6+9K+mw= github.com/charmbracelet/anthropic-sdk-go v0.0.0-20251024181547-21d6f3d9a904/go.mod h1:8TIYxZxsuCqqeJ0lga/b91tBwrbjoHDC66Sq5t8N2R4= -github.com/charmbracelet/go-genai v0.0.0-20251021165952-9befde14ce97 h1:HK7B5Q+0FidxjQD5CovniMw7axkUeMHwgVkxkbmiW/s= -github.com/charmbracelet/go-genai v0.0.0-20251021165952-9befde14ce97/go.mod h1:ZagL2esO4qxlOJBj0d4PVvLM82akQFtne8s3ivxBnTQ= github.com/charmbracelet/x/exp/slice v0.0.0-20250904123553-b4e2667e5ad5 h1:DTSZxdV9qQagD4iGcAt9RgaRBZtJl01bfKgdLzUzUPI= github.com/charmbracelet/x/exp/slice v0.0.0-20250904123553-b4e2667e5ad5/go.mod h1:vI5nDVMWi6veaYH+0Fmvpbe/+cv/iJfMntdh+N0+Tms= github.com/charmbracelet/x/json v0.2.0 h1:DqB+ZGx2h+Z+1s98HOuOyli+i97wsFQIxP2ZQANTPrQ= @@ -139,6 +137,8 @@ golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= google.golang.org/api v0.239.0 h1:2hZKUnFZEy81eugPs4e2XzIJ5SOwQg0G82bpXD65Puo= google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50= +google.golang.org/genai v1.33.1-0.20251103191629-d15baab4f79e h1:pGBT6ptC4ENtN9wA4dGhvjwrYpVZ6X9Lnpwu4Y+jozk= +google.golang.org/genai v1.33.1-0.20251103191629-d15baab4f79e/go.mod h1:7pAilaICJlQBonjKKJNhftDFv3SREhZcTe9F6nRcjbg= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= diff --git a/providers/google/google.go b/providers/google/google.go index 2cda50752a7935ae826d546b71e438abda354a34..c59ffb3c8d2542bc546b98f592572bab5a8063fa 100644 --- a/providers/google/google.go +++ b/providers/google/google.go @@ -13,9 +13,9 @@ import ( "charm.land/fantasy" "charm.land/fantasy/providers/anthropic" "cloud.google.com/go/auth" - "github.com/charmbracelet/go-genai" "github.com/charmbracelet/x/exp/slice" "github.com/google/uuid" + "google.golang.org/genai" ) // Name is the name of the Google provider. @@ -162,6 +162,10 @@ func (a *provider) LanguageModel(ctx context.Context, modelID string) (fantasy.L } if a.options.skipAuth { cc.Credentials = &auth.Credentials{TokenProvider: dummyTokenProvider{}} + } else if cc.Backend == genai.BackendVertexAI { + if err := cc.UseDefaultCredentials(); err != nil { + return nil, err + } } if a.options.baseURL != "" || len(a.options.headers) > 0 { diff --git a/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/multi_tool.yaml b/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/multi_tool.yaml index b385a1e79a4226670764da9732202439f2712bcc..ddaa0858d512fb6d3bc7621b46ff650736d08e38 100644 --- a/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/multi_tool.yaml +++ b/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/multi_tool.yaml @@ -14,7 +14,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent method: POST response: @@ -37,7 +37,7 @@ interactions: "b": 3 } }, - "thoughtSignature": "CrwBAdHtim/FP8KqTMIQ2DVD+5BAiIXjN0k+ERNVFbVGtenSKcR/G6MtoIcIE/2nxX2ysKRnwClCPnq5+/KJSzS8uFjvU0577RF+LrP7bRIXSNoufBoAJV0aKusqd1DtXQBZif76FBAMtgiG42NALcM0+Jxs2JaKOhFof+1GhNOi8Zbnj+S/YYkU34CvqANixzHQCFkLpFpHbOmsqfYaiMol4juPFMVOJg2w1WZMS/0mE36gP5C8i8p3B0njO9E=" + "thoughtSignature": "CrwBAdHtim+wl6784Zk4lDQyf935vvgPxSmTr5FU84nEUq8ijt+y5Ajfd9AXfYybZQjoWoSaAORt4/EsHJNCd45DrAwz8UZYKIvpGgw9k5aKjLYYgw5GkRc2Cgs6uy4AlHHRIkyWMQfaxIcyV2a0Mm4aiT419RVlLd5vIVxEVHlUVawR/9Sds+EuksQP/EKQfuNaAAFXhunEQmJJiMdyGWKMhXYF+L2jMBTN9DxGpoXBiNeu4w/a32l1OTtxdog=" }, { "functionCall": { @@ -69,14 +69,14 @@ interactions: "thoughtsTokenCount": 40 }, "modelVersion": "gemini-2.5-flash", - "responseId": "WtH5aJy3I4K0nsEPiZnbmQs" + "responseId": "9AcJad7SDPSGz7IPjsKs6A0" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 1.046624584s + duration: 3.031359958s - id: 1 request: proto: HTTP/1.1 @@ -90,7 +90,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent method: POST response: @@ -106,7 +106,7 @@ interactions: "content": { "parts": [ { - "text": "The sum of 2 and 3 is 5. The product of 2 and 3 is 6." + "text": "The sum is 5 and the product is 6." } ], "role": "model" @@ -117,8 +117,8 @@ interactions: ], "usageMetadata": { "promptTokenCount": 185, - "candidatesTokenCount": 24, - "totalTokenCount": 209, + "candidatesTokenCount": 12, + "totalTokenCount": 197, "promptTokensDetails": [ { "modality": "TEXT", @@ -127,11 +127,11 @@ interactions: ] }, "modelVersion": "gemini-2.5-flash", - "responseId": "W9H5aO2FIdbj7M8Pjvyl8QI" + "responseId": "9QcJaYSCJPSGz7IPhcKs6A0" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 1.09843275s + duration: 1.487203542s diff --git a/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/multi_tool_streaming.yaml b/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/multi_tool_streaming.yaml index 2772d90a3387d0a07a3452c9f07b3917a67028b1..7a87fe1d85b2b58db7cdcd523a2012f0ada8ae13 100644 --- a/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/multi_tool_streaming.yaml +++ b/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/multi_tool_streaming.yaml @@ -17,7 +17,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:streamGenerateContent?alt=sse method: POST response: @@ -25,13 +25,13 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"functionCall\": {\"name\": \"add\",\"args\": {\"a\": 2,\"b\": 3}},\"thoughtSignature\": \"CiQB0e2Kb02QlBJ2I5/zDqv1c0AUEV+Ct+vGYwdFdWC3cx3yIuUKXQHR7Ypv3ZUytEmQlCdJhzrfshB8YFIoW134jv3AuUL8L16mz3cXjEvhr8tAFeSEScUollNyBu/e3OFraKdblEfpDXY2UASkOMhrezbveAaD4bxTeBmXbcJNqLFeTwp/AdHtim8YarufF4O5TXWRjFYgnIppzlQcQfTEyqqmA8J3gLjGgyROG7/2MSw/0EakJKFOXuFth2Sdskl1sLjsD7lOvAxbmzDHITcg9l39JrSaXcHN405OLs1bfgIhKdi8m/wq+MXPL72IOuO6YjuBjud9qruxF3/THtP+netVeA==\"},{\"functionCall\": {\"name\": \"multiply\",\"args\": {\"b\": 3,\"a\": 2}}}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0,\"finishMessage\": \"Model generated function call(s).\"}],\"usageMetadata\": {\"promptTokenCount\": 121,\"candidatesTokenCount\": 36,\"totalTokenCount\": 196,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 121}],\"thoughtsTokenCount\": 39},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"XNH5aLSAF8GznsEP9sXIsAs\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"functionCall\": {\"name\": \"add\",\"args\": {\"b\": 3,\"a\": 2}},\"thoughtSignature\": \"CikB0e2Kb/HMQc6i7UBRyFsYt3Py//kiN1i+ogTc09WPsRdhdlrPbqY0dQpYAdHtim8DpoYoaf6/9WaPOuM4ieoyrooxEGgr+rAl5vIIQ4mHHGPK3ES36kZb5fJGPx3mhtjks/+IGCakkpTqeVM5b8/uRyU+wFaI0KauqOwXHOhzt7euogp/AdHtim+wDPZH2rIZ9gMZsEEmpRPJB6D9vvfWb5DkLAc6lIG7AFW4Kzih+bkvgt96liwfadjYmkq/yepyTwMlArb+AA2NyudR0MgHxyh+l5BN/gxRZNmGhKfZprKbIPDiHstjnpJXZy136L25YwkcerUaVSUUi/bUUrScZW6IXQ==\"},{\"functionCall\": {\"name\": \"multiply\",\"args\": {\"b\": 3,\"a\": 2}}}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0,\"finishMessage\": \"Model generated function call(s).\"}],\"usageMetadata\": {\"promptTokenCount\": 121,\"candidatesTokenCount\": 36,\"totalTokenCount\": 196,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 121}],\"thoughtsTokenCount\": 39},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"9gcJaf-cE-uJz7IPu5TY2QE\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 1.227179416s + duration: 1.219170666s - id: 1 request: proto: HTTP/1.1 @@ -48,7 +48,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:streamGenerateContent?alt=sse method: POST response: @@ -56,10 +56,10 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"The sum of\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 181,\"candidatesTokenCount\": 3,\"totalTokenCount\": 184,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 181}]},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"XdH5aNS5Ha-4nsEPwLKM8Aw\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" 2 and 3 is 5 and the product of 2 and \"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 181,\"candidatesTokenCount\": 17,\"totalTokenCount\": 198,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 181}]},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"XdH5aNS5Ha-4nsEPwLKM8Aw\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"3 is 6.\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 181,\"candidatesTokenCount\": 22,\"totalTokenCount\": 203,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 181}]},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"XdH5aNS5Ha-4nsEPwLKM8Aw\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"The sum\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 181,\"candidatesTokenCount\": 2,\"totalTokenCount\": 183,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 181}]},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"-AcJaaKMKLDhz7IPovKDoQc\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" of 2 and 3 is 5, and the product of 2 and\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 181,\"candidatesTokenCount\": 19,\"totalTokenCount\": 200,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 181}]},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"-AcJaaKMKLDhz7IPovKDoQc\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" 3 is 6.\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 181,\"candidatesTokenCount\": 24,\"totalTokenCount\": 205,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 181}]},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"-AcJaaKMKLDhz7IPovKDoQc\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 611.819916ms + duration: 1.700229875s diff --git a/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/simple.yaml b/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/simple.yaml index e59819b93b4b9c967c23d30c2a5643443680515b..61b145b86106a29e757aa30c9d00d19037fb34bb 100644 --- a/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/simple.yaml +++ b/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/simple.yaml @@ -14,7 +14,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent method: POST response: @@ -42,21 +42,21 @@ interactions: "usageMetadata": { "promptTokenCount": 11, "candidatesTokenCount": 2, - "totalTokenCount": 51, + "totalTokenCount": 42, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 11 } ], - "thoughtsTokenCount": 38 + "thoughtsTokenCount": 29 }, "modelVersion": "gemini-2.5-flash", - "responseId": "VNH5aLz3OsyinsEP1JWGwAY" + "responseId": "6gcJafzNJPSHz7IPwvXNgAs" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 1.251824334s + duration: 2.003357083s diff --git a/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/simple_streaming.yaml b/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/simple_streaming.yaml index 5cddeaff04a9b4d23ea4e8f978a74eaa53797a88..aefe99af08bd7075da0dc36131ca53960248ba7a 100644 --- a/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/simple_streaming.yaml +++ b/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/simple_streaming.yaml @@ -17,7 +17,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:streamGenerateContent?alt=sse method: POST response: @@ -25,10 +25,10 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"Olá!\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 11,\"candidatesTokenCount\": 2,\"totalTokenCount\": 36,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 11}],\"thoughtsTokenCount\": 23},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"VtH5aOrPCKXe7M8PyIqmyAQ\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"Olá!\\n\\nIn Portuguese, \\\"hi\\\" is **Olá!**\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 11,\"candidatesTokenCount\": 14,\"totalTokenCount\": 49,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 11}],\"thoughtsTokenCount\": 24},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"6wcJab6wEJucz7IP3f6J4Qk\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 1.273950833s + duration: 835.455625ms diff --git a/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/tool.yaml b/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/tool.yaml index 9eb93b76f2d3196b3c586c23ee87074c7509242a..cac4526545ee2c0467c9bf73a2248a7df6f4aa0d 100644 --- a/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/tool.yaml +++ b/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/tool.yaml @@ -14,7 +14,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent method: POST response: @@ -33,10 +33,10 @@ interactions: "functionCall": { "name": "weather", "args": { - "location": "Florence,Italy" + "location": "Florence, Italy" } }, - "thoughtSignature": "Cq4CAdHtim/sCKoBA0iloUCbLJWtYGJ3Erj6sIXdg1uSnBCPSFzy/3AeL+OpNUxx+N1pYyE7i0pmxs4o2aws3AdQiEN3ATSeiIVjI9BSNXo32VsDtcGmKtB1Gd+p/3MJSh9BCfA1ob6StFyP6Fn7aUoXpPEzV0JN54wDGaBskFWVwXY3sSx7vNU4akaRYYATrg49z66uUqPN+j95C2d8dRYBJe7bJqYbLi4w96Wzl5gLpAURmMv/XlJrK33cf/69yTrxVmQ2nxIeP7ok710y5FIz1n3x1GmQ6ZsQsoJ6QfDLr3lmTFH0DP91MUYB0w28nJ/dMz61MYzOWPNsL1GgHce13+sQTfxLGli+7Tw9/aNXJkxlU9mBpRCdHrLJXLvT9dctSeQ0BzOrrmmFckp3sRs=" + "thoughtSignature": "CvYBAdHtim+VrL2UvucUTXguiAiFr1B+yVyHmXWGv262dyNf/DOFOwEVrAAoqSE8NbBv/nkGGVn7PkdDdEKEa+1uCDOMMa0K8FUj6zu3ZivA2JYeqY/ASmq6BnC8JMrvHObNh7KxKI7H7TJ4GzG7uoWUBuwTmmecQcN19f59Zf36Gekwa10X673O1v02WK4D2H+hGfnnNYauwrlMHjDYkruYSrb2u6QcEoLnASnW5WU9ESLGbZy0uqKMztlFvhDcoUCEPboy4p4KjUt0S/iEpjHc2bDjq+EqYS8icqu9zo2UeVREa6nPSOspkW0AGVedfMheSaeJHw4A" } ], "role": "model" @@ -49,38 +49,38 @@ interactions: "usageMetadata": { "promptTokenCount": 54, "candidatesTokenCount": 15, - "totalTokenCount": 134, + "totalTokenCount": 120, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 54 } ], - "thoughtsTokenCount": 65 + "thoughtsTokenCount": 51 }, "modelVersion": "gemini-2.5-flash", - "responseId": "V9H5aMaoC7b1kdUP5pDSgA0" + "responseId": "7QcJadHhA7zQz7IP_7Hy4AY" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 912.648167ms + duration: 1.571397s - id: 1 request: proto: HTTP/1.1 proto_major: 1 proto_minor: 1 - content_length: 722 + content_length: 723 host: generativelanguage.googleapis.com body: | - {"contents":[{"parts":[{"text":"What's the weather in Florence,Italy?"}],"role":"user"},{"parts":[{"functionCall":{"args":{"location":"Florence,Italy"},"id":"1","name":"weather"}}],"role":"model"},{"parts":[{"functionResponse":{"id":"1","name":"weather","response":{"result":"40 C"}}}],"role":"user"}],"generationConfig":{"maxOutputTokens":4000},"systemInstruction":{"parts":[{"text":"You are a helpful assistant"}],"role":"user"},"toolConfig":{"functionCallingConfig":{"mode":"AUTO"}},"tools":[{"functionDeclarations":[{"description":"Get weather information for a location","name":"weather","parameters":{"properties":{"location":{"description":"the city","type":"STRING"}},"required":["location"],"type":"OBJECT"}}]}]} + {"contents":[{"parts":[{"text":"What's the weather in Florence,Italy?"}],"role":"user"},{"parts":[{"functionCall":{"args":{"location":"Florence, Italy"},"id":"1","name":"weather"}}],"role":"model"},{"parts":[{"functionResponse":{"id":"1","name":"weather","response":{"result":"40 C"}}}],"role":"user"}],"generationConfig":{"maxOutputTokens":4000},"systemInstruction":{"parts":[{"text":"You are a helpful assistant"}],"role":"user"},"toolConfig":{"functionCallingConfig":{"mode":"AUTO"}},"tools":[{"functionDeclarations":[{"description":"Get weather information for a location","name":"weather","parameters":{"properties":{"location":{"description":"the city","type":"STRING"}},"required":["location"],"type":"OBJECT"}}]}]} headers: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent method: POST response: @@ -117,11 +117,11 @@ interactions: ] }, "modelVersion": "gemini-2.5-flash", - "responseId": "V9H5aPKVNI_i7M8P5667uQs" + "responseId": "7gcJadaCEfODz7IP5-D4uAo" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 754.80525ms + duration: 1.260155292s diff --git a/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/tool_streaming.yaml b/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/tool_streaming.yaml index a65c1f974ec07e73a7446c7d921148eefa4f42e6..2299795401727c522917a98af67bd834700dcdf4 100644 --- a/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/tool_streaming.yaml +++ b/providertests/testdata/TestGoogleCommon/gemini-2.5-flash/tool_streaming.yaml @@ -17,7 +17,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:streamGenerateContent?alt=sse method: POST response: @@ -25,13 +25,13 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"functionCall\": {\"name\": \"weather\",\"args\": {\"location\": \"Florence,Italy\"}},\"thoughtSignature\": \"CiQB0e2Kb4Uih6wsHsNHzVaCTSiEknpHAWo/Y2LppuXX62WFVvUKZwHR7YpvRMLI00XBxIkYFBQFyI9ft9S4puwuHmzSg9EU5lBWOTz4eMOHwAJGuUtSUUHDyP98v//thr+orBjyHiPkOhHyz1VnXX8Q199T7OUKqZkn2MoLviyfPJjwbffGkHFzthi3JhcKsQEB0e2KbwshEcdvkAdQZoyVIItStPrgx+Y6rv+wbMppDrPoiVyqCukwhOZpYaL6NB+LyZ2Ob2sniLjn+ORdk19bdACI8+Vw0j11gvFFoF0jE1xXi6dGmGAoUw16huMW54zbXLzdt1eXBCx4cqw1SyMRk1bY6InQVpA5/zlI7fqBkBqhAXSwbd7uP4AegrPsQqIz+ld4xrlxDRf4tUGitkBzJ5D6pBl33DL0McFgonD9lNo=\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0,\"finishMessage\": \"Model generated function call(s).\"}],\"usageMetadata\": {\"promptTokenCount\": 54,\"candidatesTokenCount\": 15,\"totalTokenCount\": 120,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 54}],\"thoughtsTokenCount\": 51},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"WNH5aM-NJ4n5nsEP-uOMuAg\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"functionCall\": {\"name\": \"weather\",\"args\": {\"location\": \"Florence,Italy\"}},\"thoughtSignature\": \"CiQB0e2Kbz2crqvruArjSlMqMOtnGgo1ZpJGsdxnVFpgkDXGtTEKYwHR7YpveubeGFUFl6exWyagY7U3zE+s9Y7i6IV2ATxSiAypzYLrsfgCAnE0VVv745LXwIuGhFLSVoJD/9OcE5nsgogT2c+MZekAXnunp1Ztd783HOezRYnCiNlm/PhtROWUGwrBAQHR7YpvE6Tr3ySQDr9r64anLJgaLwomXEzpEw2FqqYlneGDBv9hELi4tWMOq1BqdEkMgOv3lrG1pst4301q/Btd93SQYil7fCOaQELrQdaM9Rvj+qNNMuAv1E5QUSe+PUl/nFQGBiPdIRkm6vsT8k06Gj7RdDhON/o5ZD7b8ewDdpc0Net5w0TxFwWwtt6BqOeKPzUJUW+dbXIS35xQKFb6iz/DeTr2S6zTi6IhdAcyQOG5k6vUfoAz4kgjReFT+gc=\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0,\"finishMessage\": \"Model generated function call(s).\"}],\"usageMetadata\": {\"promptTokenCount\": 54,\"candidatesTokenCount\": 15,\"totalTokenCount\": 123,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 54}],\"thoughtsTokenCount\": 54},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"7wcJaa_5GJXlz7IPuaWZsAw\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 965.071ms + duration: 1.557144s - id: 1 request: proto: HTTP/1.1 @@ -48,7 +48,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:streamGenerateContent?alt=sse method: POST response: @@ -56,10 +56,10 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"The weather in Florence\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 84,\"candidatesTokenCount\": 4,\"totalTokenCount\": 88,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 84}]},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"WdH5aJyLHaDNnsEPrYb6kAs\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \", Italy is 40 C.\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 84,\"candidatesTokenCount\": 12,\"totalTokenCount\": 96,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 84}]},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"WdH5aJyLHaDNnsEPrYb6kAs\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"The weather in Florence\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 84,\"candidatesTokenCount\": 4,\"totalTokenCount\": 88,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 84}]},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"8QcJadawA56gz7IPnsmG-QY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \", Italy is 40 C.\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 84,\"candidatesTokenCount\": 12,\"totalTokenCount\": 96,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 84}]},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"8QcJadawA56gz7IPnsmG-QY\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 596.610958ms + duration: 1.100343625s diff --git a/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/multi_tool.yaml b/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/multi_tool.yaml index 2d9fcd375aa32712968fe6d90b4bb3c8f13738f3..12b3001846eec1b09473fee3b9aef9f25a017eeb 100644 --- a/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/multi_tool.yaml +++ b/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/multi_tool.yaml @@ -14,7 +14,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent method: POST response: @@ -37,14 +37,14 @@ interactions: "b": 3 } }, - "thoughtSignature": "CsoFAdHtim+KBwj8VhhtWPwHBKgsH6dtIfSN4UcLG1h1wVl+dlvTMhaJM6YG/Kk6nkH9eFwqxegt0E36kNDU0Bpvqu9I8HBczBdrHD88KH0J1dfJFlmAOPrpNQo9wCsGFYPNcMxWd4daJem3NseOfDV+M5dsbhjGT8HQ+g8ZAe02xHjPnaogeq5ehnVDwK1iEqTkhZ01916zrjpqkCI0g4Shecz5CMLXO9KWGv4uGqTPPtw8qr+WEUdz86jVsmIfehGL3wZYvu87BoUfAdapQMJKhl+jHf1NUHGTIrXpx+4ytQuI966SvC36SRj5SgfMiFHYz6Whf/dtD6733w2DfOD1V8ks8yp/r8qNQkXjZHQUXypbEBnW/snrtbNuRRF+l0V1vz9FaKcHL5QhVwLDsH9H//hVmtFs+UA79DPSJL/kqtdhyAewQ15MOU4IpeoUhoofGSEaT7zmji5/Tr2RT3bTIW0o6itpcKKHft9+jYWkAzXO4JN97ceWwJbA/wRTF9DrqPERbUDxsAZdLfPjJRwm+Cg6sjtZA8sPhdlHKVJrnM6LnyAVr9jGtgjNRcJRa0M3IrP64JJ1JHp+6Cpdi/jU6JdJ0s/awYgDg5OpEX8STUSMjqOoWCVBOsLEFj0VzRpa3ABbidMYj/enEdZ4jCGAVGxrXLAYxWf5CO+DXN6flUMAPMcD+LkaMhdROa6+q9Oe0uCLOGL2DT2xZof2FWw0vks2DzkVHGr/QQVWNZQdhIEQinGrQBaqgfw3jtxnZs+LYWAD5s2Hev+2BY/MqPCw3/yxxTbU+FFoA44AkbfW6eKlCHvoXXVaijZ/+M0t4pAtEkqKzEnk5HVi7aXcSj2nNR4DvpHifDOQ7zOZBumDU6EHYnFT9nJh/GjvUUKK0daXTc9IPwfxyeIn/0hAExQlWIlErjHoHtk8UU9OwLcNIpy7bH+VYDaFxNkb" + "thoughtSignature": "CpECAdHtim+6+kabSNJ55G1aHXgyrJEt4/hov4uGHkcSqzlgfBd4clna+c9UpSL1rvSqMOb2E8NohfunKGm4ZHHOX9X+dBKww0ekyLz+83CF28LbsOzDHrPtIiRYoDaL/75h/HzhboaPK+aunAUglNLxM/b5yrr2tT0jKvz4LzuymTYHCpzBCcoIecoeuT0RO/WaUsjB8CMRGxnigv2XtuFkBxxzk2OWPmhSM6KTeIQTVe0d3T4HjKe2L76XG1WeaV3weeMxeCyrqX4ycxH2fJ1h5cG5EONLNxqA9eHREWu/j5ABiOGxZv2ih6xU/xyo5apwpLAwVSYtyDKXiTH4T6Wp/V7t8E7Urj4smOABFupCATUl" }, { "functionCall": { "name": "multiply", "args": { - "b": 3, - "a": 2 + "a": 2, + "b": 3 } } } @@ -59,24 +59,24 @@ interactions: "usageMetadata": { "promptTokenCount": 125, "candidatesTokenCount": 36, - "totalTokenCount": 347, + "totalTokenCount": 234, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 125 } ], - "thoughtsTokenCount": 186 + "thoughtsTokenCount": 73 }, "modelVersion": "gemini-2.5-pro", - "responseId": "hNH5aIqjLcjz7M8PsbmN8AI" + "responseId": "DQkJadesHOWzqtsP98mO8Ao" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 5.258761542s + duration: 2.444643917s - id: 1 request: proto: HTTP/1.1 @@ -90,7 +90,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent method: POST response: @@ -106,7 +106,7 @@ interactions: "content": { "parts": [ { - "text": "The sum is 5 and the product is 6.\n" + "text": "The sum is 5 and the product is 6. \n" } ], "role": "model" @@ -127,11 +127,11 @@ interactions: ] }, "modelVersion": "gemini-2.5-pro", - "responseId": "h9H5aKLELY7gnsEP56C2iAs" + "responseId": "DwkJadePAt-kqtsP1JHw4Qo" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 3.176918083s + duration: 1.534345s diff --git a/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/multi_tool_streaming.yaml b/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/multi_tool_streaming.yaml index 7daade49ef716dc5445f8b306ad94ba385da0f33..c24392b3fc4d68a3b684524a37968ca162bdd09f 100644 --- a/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/multi_tool_streaming.yaml +++ b/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/multi_tool_streaming.yaml @@ -17,7 +17,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:streamGenerateContent?alt=sse method: POST response: @@ -25,13 +25,13 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"functionCall\": {\"name\": \"add\",\"args\": {\"b\": 3,\"a\": 2}},\"thoughtSignature\": \"CiQB0e2Kb57nv74mjLhshFKCmBXd6OPdPXW6hcvhQ0Ah+RTWpvUKXgHR7Ypv2muReT3X/CMDBYqroFimUxlMLj8fYkd6ItNVADJZgVAz8s+GPlUX/X5ek+s3AsQxCk8comKPDFK025fkkNswGveqOfToi4ZKID+OgZ1UnJvgO3XA+5RxoHMKkQEB0e2KbwMhww+0chgTKrKmtGlVJEulUm8CodC3QpNadxWRmO2leIYgJu65gZEFdgaY58heQAwB+UZC4KRU/sSazBaG7+whubHZqf1v0XA+N9OGuq7tMI98lV+Pu33+XfjdpT5LLe9yudqZCwdGJwA8l9YjTl+zNZfEul/8/rY90S/DFS2E+2NkYq64vIi4vdEyCpoBAdHtim8KQahce7ytBBjX/e/zYLHMXGXgLsQm21oILm01MwjnLaaqmYS/9eQlPyGaLU2KTvfsgwKlGoTlPpqJ9jetepn/Ry8fkiCTVaufSXI2MP+ybDOMYMM8gaRZOyuu2Bzpjm/+J4i0VpUKNNICQh3WcJzW5qR+p8RHoiFdROWg9/LnMqS6ql6cyrxhGMwv2wIV5W9YqgjT6QqGAQHR7YpvhVr/elrAHhKJgicP7Y531AVoH/l4eb+qOY+7hzQujMZYEj8MefRJqjuPdcDfG+RYaBpgek5S1p5cohl1XE/oAkHNQXgpfvFuL02t4H+AlHejTwuR1s2x2XRNQKK6C+3mWr4R5Q79FY09Ieq/BAkLtrZvo0qGRDKyegrXTh+6WKvuCoYBAdHtim8f7Qn30hkTiHPm65o5izhEee3Ln58hX0mnFoP1UwpM5esqheL4kxEKQpcanIRDCmtj45oGOfB6VF7MEWgEQCZJwrv8KoH4CCxQwsoxdySngnL3kAGn6wfy40LOGiIA0np3mGDqhU600bm8UKjx3gj50DHwzLEEadNT3wy41oQ9xbEKagHR7YpvRXJGf6R/nSrN0wiqiAxYH8S/3OkkvL37e4HpwqMUY/4fIneWqquAB9lgbsBBrD7LKXu09p18UsLZtSz8/eFhtFB0YTnwHQZjAE/DEAPxRgprpym3W5XKtPEr7YzKbyqbjwS6l1YKYgHR7YpvSe18xmCtimGx0eW40nwaeZpXJ2hJCaOL01kzIz8cYrFQ8FvflkkOOEYnHHVEI5Io5ZtNu27OQfDttIyI82/s9rgFwFHIFqELwJgrPTx44Vr+db9wbZJqT7JNbQHqClUB0e2Kb9ctFr54D8Y/7NH/rFW4LtfWxRWLIJtPukLCA2XPRjjMzs33V8gzxH6RefPIbVVZlUOS655vRt7xV+qKxz919n4Idmwh6/tvWam6h/sM62eyCocBAdHtim8KLIApG87MqfFodW/FiuP5wi4eCxaBS3HRjdd76dN60hnL9BfdA91b0h9REWlyB5PF69Ps0L3nMUTMzOLQz5JDeRepYnCNLwd5JydEKdb2wu3VZD5YCY2sOUwwJVYjvIx75JuxAroAKBz9xvNP4lQjqlAKcToY7jppmCDa1yrvxnPzCpQBAdHtim9yshTGhyOwsEUpmAEzPlt+7ZJZFaU7DVFcSPg5N/w6u0yS30HInOHFPlkgc+uqSbgbAQv1tYI5+9z8LwfRDwmJohix4A/Gb1Yclj05Rm90gPucBd7CQPFdXz/11Sk8T8WLU9X0IKEz3x78ywWHsBcFWR5RMjxTsLFXb9qAtuCdEv1hb41As2ywKCLE9Tp28wpoAdHtim8VRv1D+31h2K/XWrtGT+3yb4K9s6iuxUgcUml21PO+Equsi+B5rhL3L6bFS+JNZE4QNjHhxPbcd7HYkUCuaFrUf1eSopsoHX39sYC0XMrJEe4VLlIUkET2lf/XIl+DaPbhZUsKRQHR7Ypvf8F2YJBtTLptW4g4i/ZDbcr11MMyv64V2/EqZZEmHTtw9nBE6SMCmgmrWYcMvYSPMkUr4eYZYPZl9tvgmXG/kAoiAdHtim9aDszqnOeIs2xlNS4m/E0X/HX7v+VS8LtXfbBGGw==\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 121,\"candidatesTokenCount\": 18,\"totalTokenCount\": 424,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 121}],\"thoughtsTokenCount\": 285},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"itH5aJG_B8zqkdUPprP6mAs\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"functionCall\": {\"name\": \"multiply\",\"args\": {\"b\": 3,\"a\": 2}}}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0,\"finishMessage\": \"Model generated function call(s).\"}],\"usageMetadata\": {\"promptTokenCount\": 121,\"candidatesTokenCount\": 36,\"totalTokenCount\": 442,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 121}],\"thoughtsTokenCount\": 285},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"itH5aJG_B8zqkdUPprP6mAs\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"functionCall\": {\"name\": \"add\",\"args\": {\"a\": 2,\"b\": 3}},\"thoughtSignature\": \"CiQB0e2Kb7YEHMMkoQRSJ8gl7diEFXH31v+YNVPBgn7Qtq5Q9tAKXgHR7YpvCHB+KkeNMUCYvgK7uIfdunfNo6dC/sm2CTPUVk8Y9SsZst/Ipa15nFNzHnQU6lXU67A+gXcP7IgDthFY1p6SEuJN1Sgj9rwmCeEq6kPdII9o5gHfR25JqCcKhwEB0e2Kb5be8OfcikkDenpA8Tfej3kLugRApjKWRQC9ZoSk+H/3aRr+YSVBKSG3EKShFvAYvznsL4VuGsTHmISw+sHn4iqx2aHXfcvM/FonIXAhpFj+Rx9sVbPFKmvwVrJQSdkrP/oZsnik5QLU6YmZGQwq8nsDSGE+ehZyxt1sn31UmZ550nMKhwEB0e2Kb9Zfe/KOVtjjcxnNw4bWeoN8Ned3X7uc5ZGiHnJzANGTAD2LtJFZ3mx9eBg1KY8p8bE16ge4j0fYuqQ5KGdRZlFM2IRhZiZhU5hA3kqKHQ4d7Xl/l60vYaqWk1Ltq/buI8nNidBqPuL+eNEdmNnT+FBjqSs/qlJjwmsJIJv190jvNYYKcQHR7YpvTIinJMqJP1u8F3T5UbZWmkFxNCLaGcQaK0QrO/t/0LyGZ7PNxGI93hhH7ugwRTnY8bkhwHX9FxPN14iXH3BIH+zM6AtHujB/GflOnPuQA5ajiP4pFUVzDIkYvQ8zNF3s9RgXlidKinBjdRJqCmcB0e2KbxdxtRBpbJBkeMiGIkip38hrib1I5Av3Z6M6dZY9lYDfhiVkkrvKwH2jlHXoSuvvVKOODKn0zVjxDUiX44YwBW8g/pkHnXh75VV6hFHZrpMxrbY+zQrsyUc6GvZSaDfRQuwGCmUB0e2Kb3PgxUrdsmkoQoW9nR0cddrdGf7qXbsrfJcVNrYQSG98MyfrNE4dnCSv436w6vealuhuZ0sVzX+eJ60JZs/QbM+SBAu6lLq02ZI9EO9aLsRptu6qVKAMuPo21p4oo3AiPQqNAQHR7Ypvazjl2/Bd1fxqrgZoJX6D6cpjxbtFc/WUkG8DHVBgsNGIc6SuGZtpyGmBumS4Qqt5T9AKiqHZuDBpvT3lYxL/gdBTIhm9eV7Lpi4muJHXKBd5T3xJBtirPTKqYXipwY3pDJdVjmamtwwtPEweoGH8QhUlUun1TrCnKSmVeFUeQ5tsic0JmWHPLwpLAdHtim+u7mTVPrKiBQ19RuwEyvpVDukizW1OuKNuvk85x3lbXD0QKe7dlLDgOQ+QhCXgG9uJX7qgym3Vc07IXCesWLiZXexPp1DhCoIBAdHtim91yPaGEBRTahfNFiS4v6MCLHB25jpUB09aWVefv7uilMC8nzrW0QEbk0X/bdFw64ADiBOI0MqGM7iww/iQW+GkFgVT3O9TqY9vC0NeP93Eyl+eVQ+HiRSI3qfmcUfr8q4vHmkS3jYGxCKBKxblTgKojYhbXsk0mvoEt8Ce6wqAAQHR7Ypva//b8KLGbnZeCVZSY6H3673S0wLkv8AbX9QP+BFkqafi918kQ+Ilak7gl89tR1kHqywtuip3zw8iFA5NM/S7bt6wSqMhIBaasm/IaNLvnu4pyrY177iEiMslFe0dDnjwS6X2pscpN/uQONYOnFT2qex9JunYEmLYH0+8\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 121,\"candidatesTokenCount\": 18,\"totalTokenCount\": 371,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 121}],\"thoughtsTokenCount\": 232},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"fAkJaY3xA9zVz7IP4bms6Qk\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"functionCall\": {\"name\": \"multiply\",\"args\": {\"a\": 2,\"b\": 3}}}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0,\"finishMessage\": \"Model generated function call(s).\"}],\"usageMetadata\": {\"promptTokenCount\": 121,\"candidatesTokenCount\": 36,\"totalTokenCount\": 389,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 121}],\"thoughtsTokenCount\": 232},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"fAkJaY3xA9zVz7IP4bms6Qk\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 5.033293083s + duration: 3.95219825s - id: 1 request: proto: HTTP/1.1 @@ -48,7 +48,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:streamGenerateContent?alt=sse method: POST response: @@ -56,10 +56,10 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"The\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 181,\"candidatesTokenCount\": 1,\"totalTokenCount\": 182,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 181}]},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"kNH5aK-jF8vqkdUP0uSP-Aw\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" sum of 2 and 3 is 5 and the product is 6.\\n\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 181,\"candidatesTokenCount\": 18,\"totalTokenCount\": 199,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 181}]},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"kNH5aK-jF8vqkdUP0uSP-Aw\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 181,\"candidatesTokenCount\": 18,\"totalTokenCount\": 199,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 181}]},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"kNH5aK-jF8vqkdUP0uSP-Aw\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"The\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 181,\"candidatesTokenCount\": 1,\"totalTokenCount\": 182,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 181}]},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"fwkJacCiGJCHz7IPz96n6Qo\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" sum of 2 and 3 is 5 and the product is 6.\\n\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 181,\"candidatesTokenCount\": 18,\"totalTokenCount\": 199,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 181}]},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"fwkJacCiGJCHz7IPz96n6Qo\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 181,\"candidatesTokenCount\": 18,\"totalTokenCount\": 199,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 181}]},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"fwkJacCiGJCHz7IPz96n6Qo\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 3.445411166s + duration: 1.093789375s diff --git a/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/simple.yaml b/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/simple.yaml index b7b7093ccf509466742925c89277f11454c9f04f..3f549c7cd16f69d5f27405f763ee76f78103bf6d 100644 --- a/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/simple.yaml +++ b/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/simple.yaml @@ -14,7 +14,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent method: POST response: @@ -30,7 +30,7 @@ interactions: "content": { "parts": [ { - "text": "Of course!\n\nThe most common ways to say \"hi\" in Portuguese are:\n\n* **Olá** (This is like \"hello\" and works in any situation, formal or informal.)\n* **Oi** (This is more like \"hi\" and is very common and informal, especially in Brazil.)\n\nYou can also use a friendly greeting like:\n\n* **Tudo bem?** (Literally \"All good?\" but used to mean \"How are you?\")" + "text": "Of course!\n\nThe most common ways to say \"hi\" in Portuguese are:\n\n* **Olá** (This is the standard \"hello,\" and it works in any situation.)\n* **Oi** (This is a more informal and very common \"hi,\" especially in Brazil.)\n\nYou might also hear people greet each other with:\n\n* **Tudo bem?** (Which means \"How are you?\" or \"Is everything okay?\")" } ], "role": "model" @@ -41,22 +41,22 @@ interactions: ], "usageMetadata": { "promptTokenCount": 11, - "candidatesTokenCount": 100, - "totalTokenCount": 893, + "candidatesTokenCount": 94, + "totalTokenCount": 802, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 11 } ], - "thoughtsTokenCount": 782 + "thoughtsTokenCount": 697 }, "modelVersion": "gemini-2.5-pro", - "responseId": "Z9H5aM_PPKKBkdUP-OO7oAM" + "responseId": "AQgJabbjM5rQz7IPgq_yiAc" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 10.457368166s + duration: 8.976729125s diff --git a/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/simple_streaming.yaml b/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/simple_streaming.yaml index f9999350178e0d487e85caca70841a0fc5717025..8144a25b2e87d4a3a36e5ed2108d470c2ac9c14a 100644 --- a/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/simple_streaming.yaml +++ b/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/simple_streaming.yaml @@ -17,7 +17,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:streamGenerateContent?alt=sse method: POST response: @@ -25,10 +25,10 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"Of course! Here are the most common ways:\\n\\n* **Olá** (Hello) - This works in any situation,\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 11,\"candidatesTokenCount\": 26,\"totalTokenCount\": 840,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 11}],\"thoughtsTokenCount\": 803},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"adH5aP3PAq3d7M8PqtjQ2AI\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" formal or informal.\\n* **Oi** (Hi) - This is more informal and very common, especially in\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 11,\"candidatesTokenCount\": 50,\"totalTokenCount\": 864,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 11}],\"thoughtsTokenCount\": 803},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"adH5aP3PAq3d7M8PqtjQ2AI\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" Brazil.\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 11,\"candidatesTokenCount\": 52,\"totalTokenCount\": 866,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 11}],\"thoughtsTokenCount\": 803},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"adH5aP3PAq3d7M8PqtjQ2AI\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"Of course! The most common ways to say \\\"hi\\\" in Portuguese are:\\n\\n* **Olá** (Hello\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 11,\"candidatesTokenCount\": 24,\"totalTokenCount\": 972,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 11}],\"thoughtsTokenCount\": 937},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"AwgJaevdBYDVz7IPnYmg4AY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \") - This is a universal greeting that works in any situation, formal or informal.\\n* **Oi** (Hi) -\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 11,\"candidatesTokenCount\": 51,\"totalTokenCount\": 999,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 11}],\"thoughtsTokenCount\": 937},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"AwgJaevdBYDVz7IPnYmg4AY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" This is more informal and very common, especially in Brazil.\\n\\nYou can also use greetings that depend on the time of\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 11,\"candidatesTokenCount\": 75,\"totalTokenCount\": 1023,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 11}],\"thoughtsTokenCount\": 937},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"AwgJaevdBYDVz7IPnYmg4AY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" day:\\n\\n* **Bom dia** (Good morning)\\n* **Boa tarde** (Good afternoon)\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 11,\"candidatesTokenCount\": 99,\"totalTokenCount\": 1047,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 11}],\"thoughtsTokenCount\": 937},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"AwgJaevdBYDVz7IPnYmg4AY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"\\n* **Boa noite** (Good evening / Good night)\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 11,\"candidatesTokenCount\": 112,\"totalTokenCount\": 1060,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 11}],\"thoughtsTokenCount\": 937},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"AwgJaevdBYDVz7IPnYmg4AY\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 8.964147375s + duration: 8.933529709s diff --git a/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/tool.yaml b/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/tool.yaml index e2f5cc500fb2a862c284b9e10edba8e29709eac8..67e93be38eef9182fbe553a138d08e4245b37a6d 100644 --- a/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/tool.yaml +++ b/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/tool.yaml @@ -14,7 +14,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent method: POST response: @@ -36,7 +36,7 @@ interactions: "location": "Florence, Italy" } }, - "thoughtSignature": "CoUDAdHtim/bgtT9Odj2/r1QcjzgE9Zr7qHxmcWWEWix5kqp2At0qQunrv0dH5Lpnh6leBLIjYTZh9Zws11pzYaMxpo8FuY9ajBeG2xcYNkBtmCpNTwXNMODKv90J0jq6PM3RsddM4a0yqfcr8ES2PEtD6XY5KJBdtmcdgIZI6T0S03ITXOXfcwtAoOP5Jm0cdl2YmnvafVbJYCnNlZjuOvpGCMaJIsW8fG9lJZRJKDeg7v80t5sN91085qOP1ZdfhiXxOB/GumlRYO/u35IK3Me35wJI+oFCb1tFxEK7w6HrCBBXduvZqneGgwZyMH+clrRZ6euFhy5uF5xUJPPfeXxLJIw40x6l1bWjAmOtTtiQXFmTSYLerz1iZeFPnZxzbRz0Vr9k4kUBjEEppCgKHm/VN0dfsG0bmrRBIgkJ166xlhwZBJu6cic2Iabw50Sow/VLhzYCXuLQ7lfcL2g5s6arkIAEY62N9gIYpGNRWWh9qghP47ouM5cKzCe1WVWAHIXcs1XBrU=" + "thoughtSignature": "CoUDAdHtim8N4HKZPr0LvOdoOCBZCvZIDq+277VOB/Ee7dBu8J4m0pT+8u9m55SqUFvQcQVSxjJEIvR/o6eUzbeSKwJ9s9MgEnQoNXUktpSUuiJ7HJhdapcQnZbCRPrcs+zdqSQGdXHdpjRguIVDRG+r5GnD40lYk1AurV31uEe6Jpox1MIfPxNOLnhuVDwjhAv2zqW0e6hf9ZtmlXk6qtIoLOnFxRAAx2NqZYA22kkoA0s0DtSTAUDQTMr+NrXTbOELd3ZeVjLBsWutkYNwIRWAnzNJ1il3A8xbmEh8YL4Uy+nH48ROgams6PCuxtxTEyOk0sAOKQkfid1STQfDO3VAoB4ne7cgNDh80y1fAo/5cXSGkeMPLqgyZr2jeIx7lWWWDaOHw/ieZDTaJGInBy5blOEkWxKl8mKKgAbvALOEFCdVDwFN+maw17w/Y0FtKWgk8zrdsM8naF/mBtGkulhMDoqjB0XNcIihur24NuD8vyifQl+s7MkkdctYLxdSXVFhfiB5D8w=" } ], "role": "model" @@ -59,14 +59,14 @@ interactions: "thoughtsTokenCount": 93 }, "modelVersion": "gemini-2.5-pro", - "responseId": "dNH5aK6UFNX1kdUPluXGkAs" + "responseId": "DQgJaczjHfHAz7IPo92A4QY" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 3.179773083s + duration: 2.028702667s - id: 1 request: proto: HTTP/1.1 @@ -80,7 +80,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent method: POST response: @@ -96,7 +96,7 @@ interactions: "content": { "parts": [ { - "text": "The weather in Florence, Italy is 40 C. \n" + "text": "The weather in Florence, Italy is 40 degrees Celsius. \n" } ], "role": "model" @@ -107,8 +107,8 @@ interactions: ], "usageMetadata": { "promptTokenCount": 84, - "candidatesTokenCount": 12, - "totalTokenCount": 96, + "candidatesTokenCount": 13, + "totalTokenCount": 97, "promptTokensDetails": [ { "modality": "TEXT", @@ -117,11 +117,11 @@ interactions: ] }, "modelVersion": "gemini-2.5-pro", - "responseId": "d9H5aJKyGI3rnsEP9MvF6Qs" + "responseId": "DggJacXrMP2Hz7IP-sawqQ0" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 3.521672167s + duration: 1.309785584s diff --git a/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/tool_streaming.yaml b/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/tool_streaming.yaml index 4e6d2609223ca486b8b1d185981eba1b9d865fe0..a0d5a005c20056c231b0b6ea3acd4b64be11e47a 100644 --- a/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/tool_streaming.yaml +++ b/providertests/testdata/TestGoogleCommon/gemini-2.5-pro/tool_streaming.yaml @@ -17,7 +17,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:streamGenerateContent?alt=sse method: POST response: @@ -25,22 +25,22 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"functionCall\": {\"name\": \"weather\",\"args\": {\"location\": \"Florence,Italy\"}},\"thoughtSignature\": \"CiIB0e2Kbz0BLNkrLk7+No9WGlLTJZ+xMx9A1TxMe+Y6NonoCmcB0e2Kb706fnMCgK85NUwapXVlvHLfykeWH8MI5LgoV4MUsEHZYCpYIl727ErZ4RBQjtGmeXlj/azrhRNM/TvHMnk7zJYadvftZaTiGdRl9jKvlQe6/S7M6bSkxPlYp+lQo2ty1L2YCpwBAdHtim8LzZus032fdxYFzNkGGMGKtMP2tUDh99Z03MCvi+wxA8BNAb6TO+WBH9n4w811qYi6vtnx6CSEpNfmu69Gxg0mzzJcy18aftjQsIMI9I6s/Em67I0H5KvvJIIORVUQRJV79WxBxJosXKq6Qp0ouGnHDeu6amYE3gNkPa5avQ6ylcPFYxEFiocnnByI2+T5c/MfX0VMuhfJCn8B0e2Kb5mZWqcXceVRxrUEPnB9hIZ1Z1Fw0LsZu0mtQLIu5wrbKASt8tngqGH/Ih0JKjyhYCMMXQgZv/+SSD9aCrNuHVcuUT70gOAlh1+8GAVExQKK91LNOqzJQzPY3eDWmZeOaZzTClGndGvV5yei98NXpot/WLOSk+0vjOKRCogBAdHtim8NoLk4AU1mmgzvKhGBdd2+k40AXhi5/HdOH25mDEIu1aE2UYzGb5fWDHEBPk9kCLXboACayHmSUL5jn4vZGD6RGOeD8fLWkMZ9QkMHVIHqeJf6/bWWGpXJqyKJuPuVJr4Js942G2j0HuRZhjE/Pp0Juo1nZLPnCpXF/ocgNvajxnChSwp8AdHtim8NRblW7y2ldLbbnvLJxgEdlbXwFdIfCdhh9o/Z9bey8btecUY1RDywFlbieqveGpM7JYL44YqHx49mhiA6xMqNYSlBdjmyDGMCSRe2DqM3Q9tZlJsDU98Ram0r30EaaLbdegYMvxRRJQxfqwyUYWj6sBxnSIePmAo8AdHtim8/Dviufwa51o7mshU5jZE49QI8GXiYtII8ISmrhZp3U6FDPpyvnanR17ZVXQ4n78bmWk2hW6lUCiIB0e2Kb51t7bXCuEJajiqXKq10+LClxmq1MeDkr8I+kQyX\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 54,\"candidatesTokenCount\": 15,\"totalTokenCount\": 197,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 54}],\"thoughtsTokenCount\": 128},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"edH5aJCaLLH6nsEPqZGMqAY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 54,\"candidatesTokenCount\": 15,\"totalTokenCount\": 197,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 54}],\"thoughtsTokenCount\": 128},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"edH5aJCaLLH6nsEPqZGMqAY\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"functionCall\": {\"name\": \"weather\",\"args\": {\"location\": \"Florence, Italy\"}},\"thoughtSignature\": \"CiIB0e2Kb7ZcJkyUiaPtH3M3XggxlaO8JZtcKU9zLre7wKgQCmcB0e2Kb2HHioOSolufbR8pcO7tHiyzUuAt0Vqb4LlW+Tsams8t8fV+T0AdZB0/DS5Bs+r+HQQ7GmlMZWKnkD5vJ9hsVgwBYCTKNac3MRqX1+dpyLkds0/xz1HSWguzVr3SIRNoAjhjCocBAdHtim82kbjYM3Dq3Qt0NEXxM8EbhYC1KJSlX17jyJxBS1vHRhBntdFDNCI3zUPbGhoarro3rXP12N1scFycrb4Myge6i7GZe0sDjWdRCTSKVADuyilxlenEJfb5AnljkrhQoIFyx818hCCxm7X5mxY3RD3wms+53yj5Oyj/4ew5wEOSbp/LCoABAdHtim91iCFyONBMwXNE3JZlMZdLWjS0eGqZjcEPktz2HnnQBfuAVjqifSQ/lDWa0WRBNEU8JpPyOJ1lQNW7jWkpUwVP1lvAWQ6CgJfhMgjjhs4goAdM+UAA5JB7J07NUzCfhd7Ys5w6e9lETfKxT/mLJFjBTfq8fhuFqrGjPwwKjwEB0e2Kb6yOTeDKt+aXIpxo6OsQ+ZuMc1a7BrfFDWzEGh/OvCZWjZtRaL0tYxZTuJmtc4w7xOS9MCFyCba8Wqh4tUkS2WEt6d+h8YVuxJD7Xjilz4SLZD/pIVVsUZ57NEwEub3HuZ/5CVEmrPpS3l+FnSv9//nqX/VOInF+GEwOL7Q1JJlbcB0ju1a6bXtUPwpfAdHtim/b5wZO5F672H0vefXf7tdKQYVkDWLoDm1YWZL1bEPXl9HoCrjQT+tkGqp6qM9nvgVNIe0ln/zzDx7qo99ySIa8+2JHnCNp52v2g+NHI/O5C8GBCuKZ+9gudFM=\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0,\"finishMessage\": \"Model generated function call(s).\"}],\"usageMetadata\": {\"promptTokenCount\": 54,\"candidatesTokenCount\": 15,\"totalTokenCount\": 181,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 54}],\"thoughtsTokenCount\": 112},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"CAkJabHRHcvwqtsP2KaMkAc\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 3.057425792s + duration: 2.276958458s - id: 1 request: proto: HTTP/1.1 proto_major: 1 proto_minor: 1 - content_length: 722 + content_length: 723 host: generativelanguage.googleapis.com body: | - {"contents":[{"parts":[{"text":"What's the weather in Florence,Italy?"}],"role":"user"},{"parts":[{"functionCall":{"args":{"location":"Florence,Italy"},"id":"1","name":"weather"}}],"role":"model"},{"parts":[{"functionResponse":{"id":"1","name":"weather","response":{"result":"40 C"}}}],"role":"user"}],"generationConfig":{"maxOutputTokens":4000},"systemInstruction":{"parts":[{"text":"You are a helpful assistant"}],"role":"user"},"toolConfig":{"functionCallingConfig":{"mode":"AUTO"}},"tools":[{"functionDeclarations":[{"description":"Get weather information for a location","name":"weather","parameters":{"properties":{"location":{"description":"the city","type":"STRING"}},"required":["location"],"type":"OBJECT"}}]}]} + {"contents":[{"parts":[{"text":"What's the weather in Florence,Italy?"}],"role":"user"},{"parts":[{"functionCall":{"args":{"location":"Florence, Italy"},"id":"1","name":"weather"}}],"role":"model"},{"parts":[{"functionResponse":{"id":"1","name":"weather","response":{"result":"40 C"}}}],"role":"user"}],"generationConfig":{"maxOutputTokens":4000},"systemInstruction":{"parts":[{"text":"You are a helpful assistant"}],"role":"user"},"toolConfig":{"functionCallingConfig":{"mode":"AUTO"}},"tools":[{"functionDeclarations":[{"description":"Get weather information for a location","name":"weather","parameters":{"properties":{"location":{"description":"the city","type":"STRING"}},"required":["location"],"type":"OBJECT"}}]}]} form: alt: - sse @@ -48,7 +48,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:streamGenerateContent?alt=sse method: POST response: @@ -56,10 +56,10 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"The weather in Florence, Italy is 40 C.\",\"thoughtSignature\": \"CiIB0e2Kb56sxLRU03mYcZSclEd3sEuDNOhALD62B0KGHxFYCmcB0e2Kb+ghbxMMaV82lqir0eauJgRynLiu4qQd9yj+0pycTZ29YhNIr/WDsrDK/WHOdFO2pMleUHDx0tvOtpGDMkraX/dm4wWmufOU7X7JY/JwAzzJzyCWTWHl5VdSM5sBMeyzYayMCpwBAdHtim/sqOq26orx9LidxeQIl6psi5DopqlHlNiDzoMhQ9cElW01aJRwICHbhJVyuSeq4ZAIzgKZ9F5VVd27PsG+jfZu5nvsLVBiD3kNKx9EYoVNqiXBwyRD9z41ws45gFrgJDkb72kwZ3RWdVKhnIdd+AmKM0VeLHlrbCoDMS4s+s9qJOs7X1n5Q2kj3cr+Ac3ywIShC1GqdOpDCogBAdHtim+wjJ/Lt9GNO+nzU/A5kaePMu33H2JkvOjtJ2AO5vFBLtZozd/HN96L1mm8ci23VVhAyqeE4Fi5dHRRnnjMnjYJUAv+iGdotc3D0GglNNWzwF2AhWti3n4km100P+2/iNnGMwRnGc9yj1nHyeAUKeATFKlQn6kryoQ0AAP7y4Is5mu+ggqJAQHR7Ypv3wuCUWpQID2FttoYAxSX3+mj68ub92sx37TbBx1BnhP7xRsjhKRAgKe0jwBg1F65JRm93gC12kuhFY9HNYzJbkHp7uPbOwlu09x0reJ/ADZ8y0x3CQ1GUhtMn8TviCwqd0xhvWQBSN/LcX7xFrXJC863Go2Rc5X6ma/0fHFZNu9UYbkjCooBAdHtim8lf0ESA2Me6z3tLwXWw/FqoHM8toRP8dQkZbS5Tzt1c6x2eY8Jld1WEj1f358ZHGwClBx8KZ/CzQ3l1Qzr8xICaZIQ0euAhwPNqVCpAc4KzchVKt/09rrBj4FLQIUuc4YKL0qPSby13rg+9/v2GdccX+8ccpj6X8lQLIzwBI69E8hPWp+2CpgBAdHtim+sFWjG461P9CnczGAuQT1Tqg0XbVlyBdCpBlo6e30BaurGIeWCEOcbKui+LBVuu3GKtp+pqv+dUbUbT4DlwmDVyFqvDaM0mCAQecnErppQsc5C+YE6z1LWReheyriSrMn5Rdn7lL7WVfeGdZr/6fxTj3BlOgYb1m9ERNtgSXV2B/f7A3XUCvmhWtDjYBPiOjuVhg4KkwEB0e2Kb4rxYmYh+1JyBXYoTVKzbbDVntF9MhF1QnHw5SOPX8K35PDaJz40KHGxb57DTdYNnNClx7IAmLMCL5qDw/2wG6+uAP+3e0216KXHGeXQcTpZiZGuYGZUAgHoOD7gQa/1jfjsL0San5ukiW/UrTujI/uSM5SLlOfMdxLY6ljEHRaEJUA+Q/Qb2ixJek+RJjQKrQEB0e2Kb9cOXvEsHsB3FJemhDMqLpjaJfN2RxCNhotj8vvRx/s0LoT9pptx8uFT381mHFd4TYAujDWWuhm3pmYEultrifsvzmI/4tMsiIp9d2p2Gd+EfoYFZM6bCrwzOz3c/vARCDiQMBrXnhVtqt/Cm+F6xrY+EoAob7STNlrfxVDYNmvi6I9LvV8dQb+30ljuamBEe5lB4LZqYXz7z5UOctskS1BqkwZJzMNC2gqAAQHR7YpvAtO00MWKSEJ11C0llAJpdzfKY14sPFgXAWoBpJKes3OElywBKNH91m8Kzi6zQO9UVVYWGga/IGJIII9fzfUXVnTXAswMkMTr9xAIj8Z4v4znxZ5dI6QYLUbuh7P8ufb+Lbwrlp1C7qBELl3FqHptJ3HWZs58GPmyN6jSCicB0e2Kbxwoui+FrdfG/ptxdQpa/AzB+NRjqab1gKpMlOPSFZ2SdF8=\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 84,\"candidatesTokenCount\": 12,\"totalTokenCount\": 321,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 84}],\"thoughtsTokenCount\": 225},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"fNH5aPmlPNWsnsEPvpnKoAs\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"OK\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 84,\"candidatesTokenCount\": 1,\"totalTokenCount\": 85,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 84}]},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"CgkJaaLGNMegqtsPxZji8As\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \". I have the weather for Florence, Italy. The temperature is 40 degrees Celsius.\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 84,\"candidatesTokenCount\": 20,\"totalTokenCount\": 104,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 84}]},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"CgkJaaLGNMegqtsPxZji8As\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" \\n\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 84,\"candidatesTokenCount\": 20,\"totalTokenCount\": 104,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 84}]},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"CgkJaaLGNMegqtsPxZji8As\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 4.537089792s + duration: 1.4362325s diff --git a/providertests/testdata/TestGoogleCommon/vertex-claude-3-7-sonnet/simple.yaml b/providertests/testdata/TestGoogleCommon/vertex-claude-3-7-sonnet/simple.yaml index 881b3ff19fd3725f68f2235ecb5a5cd63e665e11..ec969bb3c3fbf5fe35629eb7bb40f9ac742b6fbe 100644 --- a/providertests/testdata/TestGoogleCommon/vertex-claude-3-7-sonnet/simple.yaml +++ b/providertests/testdata/TestGoogleCommon/vertex-claude-3-7-sonnet/simple.yaml @@ -24,10 +24,10 @@ interactions: proto_minor: 0 content_length: -1 uncompressed: true - body: '{"model":"claude-3-7-sonnet-20250219","id":"msg_vrtx_01RTPizSndQfkUH6eWrcFtk8","type":"message","role":"assistant","content":[{"type":"text","text":"Olá! Como você está? (This means \"Hi! How are you?\" in Portuguese.)"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":16,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":24}}' + body: '{"model":"claude-3-7-sonnet-20250219","id":"msg_vrtx_01E4ctksfNxnHxb8NL7AzY7L","type":"message","role":"assistant","content":[{"type":"text","text":"Olá! That''s \"hi\" in Portuguese. How can I help you today?"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":16,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":22}}' headers: Content-Type: - application/json status: 200 OK code: 200 - duration: 2.138460417s + duration: 1.867139833s diff --git a/providertests/testdata/TestGoogleCommon/vertex-claude-3-7-sonnet/simple_streaming.yaml b/providertests/testdata/TestGoogleCommon/vertex-claude-3-7-sonnet/simple_streaming.yaml index 2ad18e989dfda92e6cfd2da135211413e7f94b42..7ac3c3a076e49fbf1edccb0e6b61ae1c884ba3cc 100644 --- a/providertests/testdata/TestGoogleCommon/vertex-claude-3-7-sonnet/simple_streaming.yaml +++ b/providertests/testdata/TestGoogleCommon/vertex-claude-3-7-sonnet/simple_streaming.yaml @@ -26,29 +26,56 @@ interactions: uncompressed: true body: |+ event: message_start - data: {"type":"message_start","message":{"model":"claude-3-7-sonnet-20250219","id":"msg_vrtx_01UZhFsyrYaUuvRKEzxJ7FkK","type":"message","role":"assistant","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":16,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":5}} } + data: {"type":"message_start","message":{"model":"claude-3-7-sonnet-20250219","id":"msg_vrtx_011vbTX9zC2NZRQEamT4cSJf","type":"message","role":"assistant","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":16,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":4}} } event: ping data: {"type": "ping"} event: content_block_start - data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""} } + data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""} } event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Olá!"} } + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Olá!"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" Como"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" vai você"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"?\n\nThis"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" is a"}} + + event: content_block_delta + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" greeting"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" in Portuguese that"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" means"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" \"Hello! How are"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" you?\""} } event: content_block_stop - data: {"type":"content_block_stop","index":0 } + data: {"type":"content_block_stop","index":0 } event: message_delta - data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":7} } + data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":27} } event: message_stop - data: {"type":"message_stop" } + data: {"type":"message_stop" } headers: Content-Type: - text/event-stream; charset=utf-8 status: 200 OK code: 200 - duration: 1.311998834s + duration: 1.338077792s diff --git a/providertests/testdata/TestGoogleCommon/vertex-claude-3-7-sonnet/tool.yaml b/providertests/testdata/TestGoogleCommon/vertex-claude-3-7-sonnet/tool.yaml index a7a20089b0ce8ced8b6bcae4095e17724c318c71..0eb74d89f73743cc11fde8e6478689b423fbdc1e 100644 --- a/providertests/testdata/TestGoogleCommon/vertex-claude-3-7-sonnet/tool.yaml +++ b/providertests/testdata/TestGoogleCommon/vertex-claude-3-7-sonnet/tool.yaml @@ -24,21 +24,21 @@ interactions: proto_minor: 0 content_length: -1 uncompressed: true - body: '{"model":"claude-3-7-sonnet-20250219","id":"msg_vrtx_01HMPWEJiA8uwFGoNxfXG78Z","type":"message","role":"assistant","content":[{"type":"text","text":"I''ll check the current weather in Florence, Italy for you."},{"type":"tool_use","id":"toolu_vrtx_017DkoRKzJJVLa8p4HV1RdJp","name":"weather","input":{"location":"Florence,Italy"}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":394,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":67}}' + body: '{"model":"claude-3-7-sonnet-20250219","id":"msg_vrtx_013DoXQqRt9hn5cxD1GPCcbj","type":"message","role":"assistant","content":[{"type":"text","text":"I''ll get the current weather information for Florence, Italy for you."},{"type":"tool_use","id":"toolu_vrtx_01AbaFbEuoSmuk9UyZaC4byG","name":"weather","input":{"location":"Florence,Italy"}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":394,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":68}}' headers: Content-Type: - application/json status: 200 OK code: 200 - duration: 1.494068458s + duration: 1.495076667s - id: 1 request: proto: HTTP/1.1 proto_major: 1 proto_minor: 1 - content_length: 881 + content_length: 892 host: "" - body: '{"max_tokens":4000,"messages":[{"content":[{"text":"What''s the weather in Florence,Italy?","type":"text"}],"role":"user"},{"content":[{"text":"I''ll check the current weather in Florence, Italy for you.","type":"text"},{"id":"toolu_vrtx_017DkoRKzJJVLa8p4HV1RdJp","input":{"location":"Florence,Italy"},"name":"weather","type":"tool_use"}],"role":"assistant"},{"content":[{"tool_use_id":"toolu_vrtx_017DkoRKzJJVLa8p4HV1RdJp","content":[{"text":"40 C","type":"text"}],"type":"tool_result"}],"role":"user"}],"system":[{"text":"You are a helpful assistant","type":"text"}],"tool_choice":{"disable_parallel_tool_use":false,"type":"auto"},"tools":[{"input_schema":{"properties":{"location":{"description":"the city","type":"string"}},"required":["location"],"type":"object"},"name":"weather","description":"Get weather information for a location"}],"anthropic_version":"vertex-2023-10-16"}' + body: '{"max_tokens":4000,"messages":[{"content":[{"text":"What''s the weather in Florence,Italy?","type":"text"}],"role":"user"},{"content":[{"text":"I''ll get the current weather information for Florence, Italy for you.","type":"text"},{"id":"toolu_vrtx_01AbaFbEuoSmuk9UyZaC4byG","input":{"location":"Florence,Italy"},"name":"weather","type":"tool_use"}],"role":"assistant"},{"content":[{"tool_use_id":"toolu_vrtx_01AbaFbEuoSmuk9UyZaC4byG","content":[{"text":"40 C","type":"text"}],"type":"tool_result"}],"role":"user"}],"system":[{"text":"You are a helpful assistant","type":"text"}],"tool_choice":{"disable_parallel_tool_use":false,"type":"auto"},"tools":[{"input_schema":{"properties":{"location":{"description":"the city","type":"string"}},"required":["location"],"type":"object"},"name":"weather","description":"Get weather information for a location"}],"anthropic_version":"vertex-2023-10-16"}' headers: Accept: - application/json @@ -54,10 +54,10 @@ interactions: proto_minor: 0 content_length: -1 uncompressed: true - body: '{"model":"claude-3-7-sonnet-20250219","id":"msg_vrtx_01BJEBEdTy82Hb4nNAn5b1GE","type":"message","role":"assistant","content":[{"type":"text","text":"It''s currently 40°C (104°F) in Florence, Italy. That''s very hot! Make sure to stay hydrated and try to avoid being outside during the hottest parts of the day if possible."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":475,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":49}}' + body: '{"model":"claude-3-7-sonnet-20250219","id":"msg_vrtx_01MrnUMp85dMAcyhkjGeX2we","type":"message","role":"assistant","content":[{"type":"text","text":"The current temperature in Florence, Italy is 40°C (104°F), which is quite hot. If you''re planning to be outdoors, I recommend staying hydrated, wearing light clothing, and seeking shade when possible."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":476,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":51}}' headers: Content-Type: - application/json status: 200 OK code: 200 - duration: 1.508433666s + duration: 1.353360875s diff --git a/providertests/testdata/TestGoogleCommon/vertex-claude-3-7-sonnet/tool_streaming.yaml b/providertests/testdata/TestGoogleCommon/vertex-claude-3-7-sonnet/tool_streaming.yaml index 63d0a165034a3283428dd912ec7e21c3d9b56faf..d731ab8729e2f36a61b47489a7741e3b64e05a0f 100644 --- a/providertests/testdata/TestGoogleCommon/vertex-claude-3-7-sonnet/tool_streaming.yaml +++ b/providertests/testdata/TestGoogleCommon/vertex-claude-3-7-sonnet/tool_streaming.yaml @@ -26,7 +26,7 @@ interactions: uncompressed: true body: |+ event: message_start - data: {"type":"message_start","message":{"model":"claude-3-7-sonnet-20250219","id":"msg_vrtx_018pH9zeQy8MYJ3gttq4JD8x","type":"message","role":"assistant","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":394,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":5}} } + data: {"type":"message_start","message":{"model":"claude-3-7-sonnet-20250219","id":"msg_vrtx_015uS6fGm1egYvRuSAr5jmF8","type":"message","role":"assistant","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":394,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":3}} } event: ping data: {"type": "ping"} @@ -35,53 +35,59 @@ interactions: data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""} } event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"I'll check the current"} } + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"I'll check"} } event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" weather in"} } + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" the current weather in"} } event: content_block_delta data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" Florence, Italy for you"} } event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"."} } + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"."} } event: content_block_stop - data: {"type":"content_block_stop","index":0 } + data: {"type":"content_block_stop","index":0 } event: content_block_start - data: {"type":"content_block_start","index":1,"content_block":{"type":"tool_use","id":"toolu_vrtx_01QqhPGFZ4wcxFxZLX6rF6ht","name":"weather","input":{}} } + data: {"type":"content_block_start","index":1,"content_block":{"type":"tool_use","id":"toolu_vrtx_01HCzehdpw6xDu3CDVXSFHFh","name":"weather","input":{}} } event: content_block_delta - data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":""} } + data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":""} } event: content_block_delta - data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":"{\"loca"} } + data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":"{\"lo"} } event: content_block_delta - data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":"tion\": \"Fl"} } + data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":"cation\":"} } event: content_block_delta - data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":"orence,I"} } + data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":" \"F"} } event: content_block_delta - data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":"taly\"}"} } + data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":"loren"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":"ce,"} } + + event: content_block_delta + data: {"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":"Italy\"}"} } event: content_block_stop - data: {"type":"content_block_stop","index":1 } + data: {"type":"content_block_stop","index":1 } event: message_delta - data: {"type":"message_delta","delta":{"stop_reason":"tool_use","stop_sequence":null},"usage":{"output_tokens":67} } + data: {"type":"message_delta","delta":{"stop_reason":"tool_use","stop_sequence":null},"usage":{"output_tokens":67} } event: message_stop - data: {"type":"message_stop" } + data: {"type":"message_stop" } headers: Content-Type: - text/event-stream; charset=utf-8 status: 200 OK code: 200 - duration: 1.365237292s + duration: 1.281991291s - id: 1 request: proto: HTTP/1.1 @@ -89,7 +95,7 @@ interactions: proto_minor: 1 content_length: 895 host: "" - body: '{"max_tokens":4000,"messages":[{"content":[{"text":"What''s the weather in Florence,Italy?","type":"text"}],"role":"user"},{"content":[{"text":"I''ll check the current weather in Florence, Italy for you.","type":"text"},{"id":"toolu_vrtx_01QqhPGFZ4wcxFxZLX6rF6ht","input":{"location":"Florence,Italy"},"name":"weather","type":"tool_use"}],"role":"assistant"},{"content":[{"tool_use_id":"toolu_vrtx_01QqhPGFZ4wcxFxZLX6rF6ht","content":[{"text":"40 C","type":"text"}],"type":"tool_result"}],"role":"user"}],"system":[{"text":"You are a helpful assistant","type":"text"}],"tool_choice":{"disable_parallel_tool_use":false,"type":"auto"},"tools":[{"input_schema":{"properties":{"location":{"description":"the city","type":"string"}},"required":["location"],"type":"object"},"name":"weather","description":"Get weather information for a location"}],"stream":true,"anthropic_version":"vertex-2023-10-16"}' + body: '{"max_tokens":4000,"messages":[{"content":[{"text":"What''s the weather in Florence,Italy?","type":"text"}],"role":"user"},{"content":[{"text":"I''ll check the current weather in Florence, Italy for you.","type":"text"},{"id":"toolu_vrtx_01HCzehdpw6xDu3CDVXSFHFh","input":{"location":"Florence,Italy"},"name":"weather","type":"tool_use"}],"role":"assistant"},{"content":[{"tool_use_id":"toolu_vrtx_01HCzehdpw6xDu3CDVXSFHFh","content":[{"text":"40 C","type":"text"}],"type":"tool_result"}],"role":"user"}],"system":[{"text":"You are a helpful assistant","type":"text"}],"tool_choice":{"disable_parallel_tool_use":false,"type":"auto"},"tools":[{"input_schema":{"properties":{"location":{"description":"the city","type":"string"}},"required":["location"],"type":"object"},"name":"weather","description":"Get weather information for a location"}],"stream":true,"anthropic_version":"vertex-2023-10-16"}' headers: Accept: - application/json @@ -107,83 +113,71 @@ interactions: uncompressed: true body: |+ event: message_start - data: {"type":"message_start","message":{"model":"claude-3-7-sonnet-20250219","id":"msg_vrtx_01EsEHsrt9QdPFuhVgtfjum1","type":"message","role":"assistant","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":475,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":2}} } + data: {"type":"message_start","message":{"model":"claude-3-7-sonnet-20250219","id":"msg_vrtx_012cLcdjR2yjtxpzQjqjrHua","type":"message","role":"assistant","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":475,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":5}} } event: ping data: {"type": "ping"} event: content_block_start - data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""} } - - event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"It"}} - - event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"'s"} } - - event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" currently 40°C"} } - - event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" (104°F)"} } + data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""} } event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" in Florence, Italy."} } + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"The current temperature in"} } event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" That"} } + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" Florence, Italy is "} } event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"'s very"} } + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"40°C (104"} } event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" hot! If"} } + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"°F),"} } event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" you're there"} } + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" which is very"} } event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" or"} } + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" hot. If"} } event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" planning to"} } + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" you're in"} } event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" visit, I'd recommen"} } + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" Florence or"} } event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"d staying hydrated and trying"} } + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" planning to visit soon"} } event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" to avoi"} } + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":", I'd recommend staying"} } event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"d being"} } + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" hydrated and trying"} } event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" out"} } + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" to avoid extende"} } event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"doors during the hottest"} } + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"d periods outdoors during the"} } event: content_block_delta - data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" parts"} } + data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" hottest parts"} } event: content_block_delta data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" of the day."} } event: content_block_stop - data: {"type":"content_block_stop","index":0 } + data: {"type":"content_block_stop","index":0} event: message_delta - data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":57} } + data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":60} } event: message_stop - data: {"type":"message_stop" } + data: {"type":"message_stop" } headers: Content-Type: - text/event-stream; charset=utf-8 status: 200 OK code: 200 - duration: 772.506333ms + duration: 3.504416334s diff --git a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/multi_tool.yaml b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/multi_tool.yaml index 2d20be2115317edf5f3924b8a6528338a261dc34..528842e25cffffe7225dde5597da5da4c5ca8a55 100644 --- a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/multi_tool.yaml +++ b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/multi_tool.yaml @@ -14,7 +14,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://us-east5-aiplatform.googleapis.com/v1beta1/projects/fantasy-playground-472418/locations/us-east5/publishers/google/models/gemini-2.5-flash:generateContent method: POST response: @@ -34,11 +34,11 @@ interactions: "functionCall": { "name": "add", "args": { - "b": 3, - "a": 2 + "a": 2, + "b": 3 } }, - "thoughtSignature": "CuACAePx/153kf8ikIzjnbSUf9jLxFZAf53a2GQYy4mUIqUl077OLhKwcyMd2YnG1/umJQZK8aqE6kdtgJG7sqpuDFZuFmEOqjgc1O3MxE4S+TaBZSa5wS/KAA05t4aGvS8TpkEttdy3u6wfIv6y8LM8A7LHn04qC9gswllmAiZ9iQn72RDWDgS7o2/ciprExjiDQMkU+m5yk3eRkXm1ovs9oNDNoDqlTTJnN0jtu2YgYtsxB/mwKBdA3MjSKwsiuIVc5fJj8970xQrfEmsA94QSGUQ9MNCUkB6kAUsFt3wQQ07X/Q3bYmfyud0OP/dB9HIM4xyVkayDrrVkbAOKD/1u8nKMGkPA5G/0+DaDVU4ZAqhCRGQAtHYRWYhwUZ4DICXJAqhBk9iTLIHvglDMaw4sKDZHqIlVRNnjvsx4nOoirR2S2Wpm3mKoEmCPnFGcQwRV9yJNY5/JwDquRAcwU9q1ug==" + "thoughtSignature": "CqECAePx/16hu6jpQBsua/6D0znPjMbbAuwTIAxACow0BHlZjpuJ2bAGyr7Wo7paE6FNx84jcAd1AMLIJAWscUNukGCRiDORASgswHP16BSSB6jN5dLjTJ0UpUoxESXEW4U0iyrruAkortreKykTPMnW63wWjao8KQESbO/Q7g7WOQPGUzpmOCw9cvKt6I/DRZLjiJ1S8BmgEbc8ix2C4YBguza0iJ28V3ggewHiXumC3RxijchXLLkLx9Y5ww3XoJk1QaaWN3puEeWyVpEOQQJHa0pQVLYIp+IkQ0t0oe3jKDI05FBjn+h1lvbHoPuImyLtjUZFAMBqh76BWHQAYsfVUEzzSWplygLX0RP+NABj/9jDMK22/+DjBnBpEL1dv0lXvQ==" }, { "functionCall": { @@ -52,13 +52,13 @@ interactions: ] }, "finishReason": "STOP", - "avgLogprobs": -1.9749752044677735 + "avgLogprobs": -0.99647712707519531 } ], "usageMetadata": { "promptTokenCount": 60, "candidatesTokenCount": 10, - "totalTokenCount": 146, + "totalTokenCount": 140, "trafficType": "ON_DEMAND", "promptTokensDetails": [ { @@ -72,18 +72,18 @@ interactions: "tokenCount": 10 } ], - "thoughtsTokenCount": 76 + "thoughtsTokenCount": 70 }, "modelVersion": "gemini-2.5-flash", - "createTime": "2025-10-23T06:56:24.603477Z", - "responseId": "mNH5aNXqJMHDptQPtJigwQc" + "createTime": "2025-11-03T19:52:55.484773Z", + "responseId": "FwgJaaXLHe2iptQP__zTsAs" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 1.215592042s + duration: 1.145860833s - id: 1 request: proto: HTTP/1.1 @@ -97,7 +97,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://us-east5-aiplatform.googleapis.com/v1beta1/projects/fantasy-playground-472418/locations/us-east5/publishers/google/models/gemini-2.5-flash:generateContent method: POST response: @@ -114,19 +114,18 @@ interactions: "role": "model", "parts": [ { - "text": "2 + 3 = 5\n2 * 3 = 6", - "thoughtSignature": "CsoBAePx/154N3gpceO1Pxh1IXX13o0HK5ftN5BUuyjfGfQi/778zwB+y0XPP47mlVhcC8YrYbdY9OCdsch6wLFdr8GW2Q/X0G7wvo5uCO+rxBCPgj0EJaQ36dnavIrM78MnwNT8JTFuNiifUYDO2Eek5//VNoFkZsbTfR0u6pHlX8odsl2zTqkihtwNkeun9UVCAkOE1J2royE0NUdFe5YQk6cMn/LboPV2NKVDWZxjvV6hlwV27nBoFqiH0r6zRT9AiKi55oTDlvwADA==" + "text": "The sum of 2 and 3 is 5. The product of 2 and 3 is 6." } ] }, "finishReason": "STOP", - "avgLogprobs": -0.83015022277832029 + "avgLogprobs": -0.047055284182230629 } ], "usageMetadata": { "promptTokenCount": 76, - "candidatesTokenCount": 15, - "totalTokenCount": 136, + "candidatesTokenCount": 24, + "totalTokenCount": 100, "trafficType": "ON_DEMAND", "promptTokensDetails": [ { @@ -137,18 +136,17 @@ interactions: "candidatesTokensDetails": [ { "modality": "TEXT", - "tokenCount": 15 + "tokenCount": 24 } - ], - "thoughtsTokenCount": 45 + ] }, "modelVersion": "gemini-2.5-flash", - "createTime": "2025-10-23T06:56:25.801186Z", - "responseId": "mdH5aKLzMMqZptQPrcWIuQM" + "createTime": "2025-11-03T19:52:56.654104Z", + "responseId": "GAgJaZj2J4jK5OMPiMqt0Qg" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 1.129055042s + duration: 714.085958ms diff --git a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/multi_tool_streaming.yaml b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/multi_tool_streaming.yaml index 4084a7fdb08c004a732d6d4b6843aa829bdc75cb..9005a838f9dcd61a0f542fb27848c929e13d8dfd 100644 --- a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/multi_tool_streaming.yaml +++ b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/multi_tool_streaming.yaml @@ -17,7 +17,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://us-east5-aiplatform.googleapis.com/v1beta1/projects/fantasy-playground-472418/locations/us-east5/publishers/google/models/gemini-2.5-flash:streamGenerateContent?alt=sse method: POST response: @@ -25,13 +25,13 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"functionCall\": {\"name\": \"add\",\"args\": {\"a\": 2,\"b\": 3}},\"thoughtSignature\": \"Ci8B4/H/XjyuOgee7LpJYpRJHpOGMkGzHvGpWPF+MgqA7QzwZuX8oQg3ACg0PFB7UQpsAePx/143T9/D/yFC87UGCQANubpumR3Qev0eCIxUwuYK0PWzeQBNOVG3hT7OfGpnCYz7+rCn4D+eFYtOv+DfNGuNnrfXLU/NaWE56qZPyTsZbRcpeNbsqJBpoFAAthOt+BkgcnDoUUrRrc86CmIB4/H/XsWPHWZiN8O5jfSPelfimUn0hxxRTBeoyQxc4IyY+yUAWgCadZIDp93ZpG+Yv0U64V98tV6CSceelboz0J3+o3Cb5v40SA94bj789jqKHPwiFVKFb7FrQCKHFMVHzg==\"},{\"functionCall\": {\"name\": \"multiply\",\"args\": {\"a\": 2,\"b\": 3}}}]},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\": 57,\"candidatesTokenCount\": 10,\"totalTokenCount\": 105,\"trafficType\": \"ON_DEMAND\",\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 57}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 10}],\"thoughtsTokenCount\": 38},\"modelVersion\": \"gemini-2.5-flash\",\"createTime\": \"2025-10-23T06:56:27.169269Z\",\"responseId\": \"m9H5aLWqCvLEptQP_MqZuAw\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"functionCall\": {\"name\": \"add\",\"args\": {\"a\": 2,\"b\": 3}},\"thoughtSignature\": \"Ci8B4/H/Xh0HHuf8Ru7QjMXo2RHOUO+nBLn9rEjliTSTnGhUal/7EJGfeSpbcsz7QwpgAePx/17hV3eTgsKDYi4eoO1k3AOXUaW5mNFggBN8YKwi6Ga/nnj72ASWbUY5cgHWwRNYw8G+7VHS9MxuWQTWZ3xjlxmHNxSLUmisj//l4PBElDRkyR+CPl27hn5Ep9V0Cl0B4/H/XsPIkOqYZ7ohYzyq8m+HL8z7tNQJnIIS+gZJGBoYlIm7BLKAFUCvEeOh4/LMuwo/vKDHkodZCkkWnt3RHJ4FjtOXzSU+/BnFCyd5UzTGlz5LgQP6r6l4fxMKpQEB4/H/Xnzg231l6QUr950FU1uyEo3+dRA2A6MOh9mpgx6oNTfVZG5LX2h9ZGr/SShaCbFMrY1xM8I9qUE6PpvELcN2yO4da8uIcSxtUsOL0qbLXJ3DDg1hta1CRF1ycK9VkcH2KrhQJ4VMcyTnNbBkzCnW+gQQBAL7IDSIYRa5F/m2ucBHeK+/MB3gDWmdHR7GwSpNgcouIQjblRCuo8XYwrqSato=\"},{\"functionCall\": {\"name\": \"multiply\",\"args\": {\"a\": 2,\"b\": 3}}}]},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\": 57,\"candidatesTokenCount\": 10,\"totalTokenCount\": 146,\"trafficType\": \"ON_DEMAND\",\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 57}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 10}],\"thoughtsTokenCount\": 79},\"modelVersion\": \"gemini-2.5-flash\",\"createTime\": \"2025-11-03T19:52:57.649973Z\",\"responseId\": \"GQgJafXVJ6rGptQPx7S0-Ag\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 1.096928083s + duration: 1.348630167s - id: 1 request: proto: HTTP/1.1 @@ -48,7 +48,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://us-east5-aiplatform.googleapis.com/v1beta1/projects/fantasy-playground-472418/locations/us-east5/publishers/google/models/gemini-2.5-flash:streamGenerateContent?alt=sse method: POST response: @@ -56,10 +56,10 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \"The sum of\"}]}}],\"usageMetadata\": {\"trafficType\": \"ON_DEMAND\"},\"modelVersion\": \"gemini-2.5-flash\",\"createTime\": \"2025-10-23T06:56:28.255215Z\",\"responseId\": \"nNH5aO_JD6ryptQP-_6vMQ\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \" 2 and 3 is 5, and the product of 2 and 3\"}]}}],\"usageMetadata\": {\"trafficType\": \"ON_DEMAND\"},\"modelVersion\": \"gemini-2.5-flash\",\"createTime\": \"2025-10-23T06:56:28.255215Z\",\"responseId\": \"nNH5aO_JD6ryptQP-_6vMQ\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \" is 6.\"}]},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\": 73,\"candidatesTokenCount\": 25,\"totalTokenCount\": 98,\"trafficType\": \"ON_DEMAND\",\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 73}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 25}]},\"modelVersion\": \"gemini-2.5-flash\",\"createTime\": \"2025-10-23T06:56:28.255215Z\",\"responseId\": \"nNH5aO_JD6ryptQP-_6vMQ\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \"The sum of\"}]}}],\"usageMetadata\": {\"trafficType\": \"ON_DEMAND\"},\"modelVersion\": \"gemini-2.5-flash\",\"createTime\": \"2025-11-03T19:52:58.993078Z\",\"responseId\": \"GggJabbOPKDM5OMPxdqygAc\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \" 2 and 3 is 5.\\nThe product of 2 and 3 is 6\"}]}}],\"usageMetadata\": {\"trafficType\": \"ON_DEMAND\"},\"modelVersion\": \"gemini-2.5-flash\",\"createTime\": \"2025-11-03T19:52:58.993078Z\",\"responseId\": \"GggJabbOPKDM5OMPxdqygAc\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \".\"}]},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\": 73,\"candidatesTokenCount\": 25,\"totalTokenCount\": 98,\"trafficType\": \"ON_DEMAND\",\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 73}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 25}]},\"modelVersion\": \"gemini-2.5-flash\",\"createTime\": \"2025-11-03T19:52:58.993078Z\",\"responseId\": \"GggJabbOPKDM5OMPxdqygAc\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 501.976958ms + duration: 713.590167ms diff --git a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/simple.yaml b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/simple.yaml index 33dda73c378dde22d23675a9861326c70c9b62fb..11ca89abbe0ef711a64f47ac88a5de253457f238 100644 --- a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/simple.yaml +++ b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/simple.yaml @@ -14,7 +14,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://us-east5-aiplatform.googleapis.com/v1beta1/projects/fantasy-playground-472418/locations/us-east5/publishers/google/models/gemini-2.5-flash:generateContent method: POST response: @@ -31,18 +31,18 @@ interactions: "role": "model", "parts": [ { - "text": "Olá! (Oh-lah!)" + "text": "Olá!" } ] }, "finishReason": "STOP", - "avgLogprobs": -1.2647225516183036 + "avgLogprobs": -2.3644888401031494 } ], "usageMetadata": { "promptTokenCount": 9, - "candidatesTokenCount": 7, - "totalTokenCount": 43, + "candidatesTokenCount": 2, + "totalTokenCount": 38, "trafficType": "ON_DEMAND", "promptTokensDetails": [ { @@ -53,18 +53,18 @@ interactions: "candidatesTokensDetails": [ { "modality": "TEXT", - "tokenCount": 7 + "tokenCount": 2 } ], "thoughtsTokenCount": 27 }, "modelVersion": "gemini-2.5-flash", - "createTime": "2025-10-23T06:56:18.469078Z", - "responseId": "ktH5aNbQHOn1ptQPkf36wAU" + "createTime": "2025-11-03T19:52:49.131611Z", + "responseId": "EQgJaZuECPfyptQPiO7F0Qw" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 1.883201042s + duration: 1.398007208s diff --git a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/simple_streaming.yaml b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/simple_streaming.yaml index 6a66985409dc85e08a5bedd686c69b1246781a6c..d2636bc1b49ae4098a35029a7e534d5415f5341a 100644 --- a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/simple_streaming.yaml +++ b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/simple_streaming.yaml @@ -17,7 +17,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://us-east5-aiplatform.googleapis.com/v1beta1/projects/fantasy-playground-472418/locations/us-east5/publishers/google/models/gemini-2.5-flash:streamGenerateContent?alt=sse method: POST response: @@ -25,10 +25,10 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \"Olá!\"}]},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\": 9,\"candidatesTokenCount\": 2,\"totalTokenCount\": 37,\"trafficType\": \"ON_DEMAND\",\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 9}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 2}],\"thoughtsTokenCount\": 26},\"modelVersion\": \"gemini-2.5-flash\",\"createTime\": \"2025-10-23T06:56:19.541931Z\",\"responseId\": \"k9H5aOuJIcqZptQPrcWIuQM\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \"Olá!\"}]},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\": 9,\"candidatesTokenCount\": 2,\"totalTokenCount\": 37,\"trafficType\": \"ON_DEMAND\",\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 9}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 2}],\"thoughtsTokenCount\": 26},\"modelVersion\": \"gemini-2.5-flash\",\"createTime\": \"2025-11-03T19:52:50.051639Z\",\"responseId\": \"EggJabeTA8_PptQPo-GH8QQ\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 838.164042ms + duration: 1.190780917s diff --git a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/tool.yaml b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/tool.yaml index c81ef1d34688477293d6fb7849d85aa73307041c..f300f02ca769e1379fc4334d431e96b056395be1 100644 --- a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/tool.yaml +++ b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/tool.yaml @@ -14,7 +14,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://us-east5-aiplatform.googleapis.com/v1beta1/projects/fantasy-playground-472418/locations/us-east5/publishers/google/models/gemini-2.5-flash:generateContent method: POST response: @@ -37,18 +37,18 @@ interactions: "location": "Florence,Italy" } }, - "thoughtSignature": "CsICAePx/14z2/Y1LwOZuOEfW+8h7yERSI5lsHY/AqynX6oLR1OiF3GZPJApHAIv7Z1RJZJszK371HXJVUnVWQIM3RW5uHNhwqD5iiMhJKgEkC5R5b4LC4EzCzHSQKGXEuFEJKUhIjy36IZKGS8aChOGVs4Cx1g+wgYICstMVtF2Ny86IuYHKfE+KL9BAc6TYN8d5yQySsuPRmPKCHTMC5q/ZaL5muk+Y+2KBMNOb2pI0tM3JiJyl3m/iYn9ENTMOCtPW8WVnR/43SCjF8ECpJH4Ot19VC0DQarwkgj6G1Hb/kw+kypGLm+SXsjWB/nnfOrvjbysSPNKPWL2GJtjTI1aMt6VOE4m8FPTlOQXze4jr3XeiHcylNOoRvWF9t8hesLdmy8xnyKrwSKCH+nAn21yTHPhoYgc69k5gquSB7jztgU/mQ==" + "thoughtSignature": "CqoCAePx/17/8Q8KZZMun2Jh8nZkCjH+u0w5GCukRd4aSFxz4PI0YFXB/lvok+cVkxL3Fv0ZrP45+NDbGDDT+4Gf7lNe21zmmu3xQWaXmR+/EaYhuaHiFj8icU2IzVr0ra22AJ2SQFJNMB5g5Uu1TSJsYD1IkrB4NnkyudqlctBE1400PoB9wOzxM5kNtWseTLDw0a3XPgh0sV82nkHOyt8ogFkqNwIovTrvqQ+9HB0bTGqYk5U2XikPiCRzjJ9/g3CRzydE5eg6oLn7E5qR4WD25xOcHBki9RxITWSglwG3tYYDI8s/UG7eNc6aDiX72LL8xwEQMwOT6DQUzQanoQC7nlIqnHXas2eiq1zCkS7O6HGfuuXtcz0euBKxndi/3ESgzzQGKY8rCa065Q==" } ] }, "finishReason": "STOP", - "avgLogprobs": -2.8889617919921875 + "avgLogprobs": -1.3909281730651855 } ], "usageMetadata": { "promptTokenCount": 28, "candidatesTokenCount": 5, - "totalTokenCount": 101, + "totalTokenCount": 96, "trafficType": "ON_DEMAND", "promptTokensDetails": [ { @@ -62,18 +62,18 @@ interactions: "tokenCount": 5 } ], - "thoughtsTokenCount": 68 + "thoughtsTokenCount": 63 }, "modelVersion": "gemini-2.5-flash", - "createTime": "2025-10-23T06:56:20.673204Z", - "responseId": "lNH5aLSLKbHEptQP-Ob28Ak" + "createTime": "2025-11-03T19:52:51.509145Z", + "responseId": "EwgJadmJH9nEptQP9fCJyQY" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 835.350042ms + duration: 1.300916167s - id: 1 request: proto: HTTP/1.1 @@ -87,7 +87,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://us-east5-aiplatform.googleapis.com/v1beta1/projects/fantasy-playground-472418/locations/us-east5/publishers/google/models/gemini-2.5-flash:generateContent method: POST response: @@ -109,7 +109,7 @@ interactions: ] }, "finishReason": "STOP", - "avgLogprobs": -0.048118614233457126 + "avgLogprobs": -0.052264484075399548 } ], "usageMetadata": { @@ -131,12 +131,12 @@ interactions: ] }, "modelVersion": "gemini-2.5-flash", - "createTime": "2025-10-23T06:56:21.509020Z", - "responseId": "ldH5aNyIH6D5ptQPsI7YiQ0" + "createTime": "2025-11-03T19:52:52.815110Z", + "responseId": "FAgJaYbgMe2iptQP__zTsAs" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 1.159554792s + duration: 653.623083ms diff --git a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/tool_streaming.yaml b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/tool_streaming.yaml index 132a21f511944a1297657e7a9167bbdef8385417..a65c3fcbdcc85684b9ba71b41e348a00f836e26a 100644 --- a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/tool_streaming.yaml +++ b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-flash/tool_streaming.yaml @@ -17,7 +17,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://us-east5-aiplatform.googleapis.com/v1beta1/projects/fantasy-playground-472418/locations/us-east5/publishers/google/models/gemini-2.5-flash:streamGenerateContent?alt=sse method: POST response: @@ -25,13 +25,13 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"functionCall\": {\"name\": \"weather\",\"args\": {\"location\": \"Florence,Italy\"}},\"thoughtSignature\": \"CiwB4/H/XvlH08G061BPTdLFZQ/cL6v5RR0Oby+C1ix5VeIXKFWbifeGcrjzTgprAePx/17Qhrpr2LDauCV/W3P/z516lJHLGJ9WRHLyHL68Ys87p9FEo7RaIE79+dyA7dyh/xQXbGkPw4+RbojKamEd6TOTIJduKy2dL4tikBU432wW/l6ieQrkWVgpUyC35GhQWwUvXFpzoVMKegHj8f9e4baQx5XTsS6xxPTmwaBoDtoUSUFUzV6n91uRVMIVTV1CEylQAciPtdb+N+qY3P2PYoiIIRiFHdxvFAgSokJYLMWW4b2jlbeDOMGHUAJvpMosnDYSaPyIeUYC1ALMihEqF98m2L+M6C433oCttoXixbQ/KUkgClYB4/H/XjDlUAZqwxNT97oDxqYPySeZhflM0Iu0FNvOA8jvMA8HrFun6d79vs6N8cBYm+VP9AC2tkogjlwQv0hPSpbXDVMdA3YL6t2RwDN+Q97sFqS1kQ==\"}]},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\": 28,\"candidatesTokenCount\": 5,\"totalTokenCount\": 86,\"trafficType\": \"ON_DEMAND\",\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 28}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 5}],\"thoughtsTokenCount\": 53},\"modelVersion\": \"gemini-2.5-flash\",\"createTime\": \"2025-10-23T06:56:22.876583Z\",\"responseId\": \"ltH5aKfANfLEptQP_MqZuAw\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"functionCall\": {\"name\": \"weather\",\"args\": {\"location\": \"Florence,Italy\"}},\"thoughtSignature\": \"CiwB4/H/XoLNC0vlLlQ3Z7AvZDspjKBtqYC32OS0AJek8NgWRMLRDq4ts9ukywptAePx/158NrZYvvLkcnng0HhXE3aVsuj8O6ce8aXROHyLFjYQYiIjJAgM4MxhOzBQHDp/C/JlS8zbApRIUgzPBd18zn9EMHLvwyolL9htJZy6ckoZLN0HzzRf+TqsUsqOIzocYOMGZLYPiJ23bwp8AePx/15vctC0EUe65l6jBI220nF0o5F/rDOw3aAdJHyCeih0qGsGqI9Qwt6+iMntlZmV1dQVsxp4i7/zlMOk7HTDidrEL1D19rpdU3Pr/Enz3rseqqHOvDEXBriVho6sVuezQ7vxbu9HG25eW9NHZdvbgjycgYHgvs1fiwpDAePx/15sY6z0zjbVURUGT5nXTP1esG1077pS3yRV4Eo1aXR/bGDQwcweH9JZeudUwS5HcTOOgXZqKfS90YnxxlIKKQ==\"}]},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\": 28,\"candidatesTokenCount\": 5,\"totalTokenCount\": 84,\"trafficType\": \"ON_DEMAND\",\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 28}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 5}],\"thoughtsTokenCount\": 51},\"modelVersion\": \"gemini-2.5-flash\",\"createTime\": \"2025-11-03T19:52:53.713190Z\",\"responseId\": \"FQgJaebDK46IptQP5u6mqAI\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 830.580459ms + duration: 780.705833ms - id: 1 request: proto: HTTP/1.1 @@ -48,7 +48,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://us-east5-aiplatform.googleapis.com/v1beta1/projects/fantasy-playground-472418/locations/us-east5/publishers/google/models/gemini-2.5-flash:streamGenerateContent?alt=sse method: POST response: @@ -56,10 +56,10 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \"The weather in Florence, Italy\"}]}}],\"usageMetadata\": {\"trafficType\": \"ON_DEMAND\"},\"modelVersion\": \"gemini-2.5-flash\",\"createTime\": \"2025-10-23T06:56:23.704924Z\",\"responseId\": \"l9H5aJyDK6ryptQP-_6vMQ\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \" is 40 degrees Celsius.\"}]},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\": 38,\"candidatesTokenCount\": 13,\"totalTokenCount\": 51,\"trafficType\": \"ON_DEMAND\",\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 38}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 13}]},\"modelVersion\": \"gemini-2.5-flash\",\"createTime\": \"2025-10-23T06:56:23.704924Z\",\"responseId\": \"l9H5aJyDK6ryptQP-_6vMQ\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \"The\"}]}}],\"usageMetadata\": {\"trafficType\": \"ON_DEMAND\"},\"modelVersion\": \"gemini-2.5-flash\",\"createTime\": \"2025-11-03T19:52:54.512780Z\",\"responseId\": \"FggJaYymH6DM5OMPxdqygAc\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \" weather in Florence, Italy is 40 degrees Celsius.\"}]},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\": 38,\"candidatesTokenCount\": 13,\"totalTokenCount\": 51,\"trafficType\": \"ON_DEMAND\",\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 38}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 13}]},\"modelVersion\": \"gemini-2.5-flash\",\"createTime\": \"2025-11-03T19:52:54.512780Z\",\"responseId\": \"FggJaYymH6DM5OMPxdqygAc\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 521.369167ms + duration: 710.076125ms diff --git a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/multi_tool.yaml b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/multi_tool.yaml index 24b82e40b5446db5cddeeee2238166f84006441e..e7ed9c800423357ff74f98f4cbc660d74a6a36c1 100644 --- a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/multi_tool.yaml +++ b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/multi_tool.yaml @@ -14,7 +14,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://us-east5-aiplatform.googleapis.com/v1beta1/projects/fantasy-playground-472418/locations/us-east5/publishers/google/models/gemini-2.5-pro:generateContent method: POST response: @@ -38,27 +38,27 @@ interactions: "b": 3 } }, - "thoughtSignature": "CvIGAePx/14SkHhFE9nSX3tF/UUvEyMSIydpEPiedFizUyl12h1UWiXnKK/2KRCeTzCPnlf63nU3gkBYSR4VK3AcDgWD2P8wffTD09sY4ofwSBsb6ryX7/h66mtf0s/K+AVm9bT7/u4vT2nBrghELUoq+Oc1xbYXUfbS61L17gseMmc5mxrjJTwqWrV1oc0XkyzBad6LEDp8rZBuQP7yj4mGeaJyY6SchHJBKPfPVK1tweHnkrvxLpLlDzyNL0iYeYhKXtsdeCa94KlMpH/yU9FoGemcSUHH4gaOoDBPP3E70eHCi/bgLvd9ktEaY7Mvv/GD167aEpuWN+hyXgKvRAQLcuuXVrH9I+nDEaZ9H9jVTvZjMnGT8GrooMWBvOrVp9gDPZBT+qXqAfh+v8VK2olKLy8wpc+y1SNUEJpC3HmlAkLLwFlT6CpG7qYvYX4fios1YYlnNMAI5m/GRGgy8uvxNLQtTXckzduT5uB2LtMyymbhNohbP16yveBu7SZcWHxyC6SjQuB9ztNY1t9dvXJmBxrj/jNZ9t1s5BtAX9WmRnIvyRA9ZnyxEtqvRuT1yxmfSN0JCTtrnAuZxm+tm3PfSXeXtQuaAqY7sZ8SSkzfxf51H8FjymvZzVTr4CmPHZlxqouLD0WUrvR4m+f1QWhENMvMfes0N+9PCwUmjr7sdfcwMlKXppLAhZu3i5sXb8NrOyP/IaQh1Z45De1Q1RIGRJjb7SXOaZza39jbunGVX2GneRoFG0cYbOTwFiDHJ/m9+zN2aXBDmOkPuhBVP35Gq4W6RyQmaFLfrNhV6hQTKLRr3Cqc83V1UxjdR096ZPKlyhgZ2Jm6J+nKiMYlBmPssUJONHRvfHlFNPCUlyDXezzslqfAmuhabeQAVrwk7BhWkluO8DpjWyr7fy+qdW+j2Q50d8CIFOZS+vH4BnmGEKUBDq/6LlEGpLHMrQ6p9domxkFWCUzh0AkeNASc/RXqsi3tGbkWlw8dTaCIEnxdTOeKjrggttp/Bj7rIbHMJIMwhJn0l5gV22eUuv2fmtJhZr2pzOi8RWPI+SRPiIz8WXeLFheeZCJc2WYzAF+Hf7P4vZREZu9T+Cyiiqa8aZV41vE/w73R1Jyi0Na08pwZUbEyxZzkCAeT9FykRHe/NPSVpSflslaarfMgPMfEPg+9cib+" + "thoughtSignature": "CvQCAePx/14NVLo2aFENXN4pX/kIk4bZ+IIn9SuGEcAodTztmaxrh2n1PlLJ2/ahqKl6yf4+5ePV1sDDDPThVhBFNHHlpI4V64pGAIpFRkpvz/Xr9FNvIf/6q6sCfpEOv0YAZs0tbFI9uWJkENhgaTd7iJBKIxlKCyWxIMtIez4bV7QTk0I7sQriQojCQgN+IK0Gmuy5GI5OUSyrfjjz6FOnNc4fNAy+05QgKHKuCBCXSeu5pB15zKV5XQFC5JhwL46h0nvW+h21F8OzQnKLMyRZoZauHd7xJXStNn3Hs0KTSgeuDgzEG9KbMd+xUHQST0mI3Ve2Uj25yVmSp/na4/LhuVM/k7ad2IkmDfhPDbZKiF6rKb1ScPgAFp6FxOyLATAWg3kv1sVF+LdeeS6Of+4xJpS/gB/DGNhfvupvaIxo6N/UTKys0NdIIVUcQiVO8zsfQ9MlUhhzxN01qOVis1gnmEw1ou+S30yHwlSe2F15fX/5crr1" }, { "functionCall": { "name": "multiply", "args": { - "b": 3, - "a": 2 + "a": 2, + "b": 3 } } } ] }, "finishReason": "STOP", - "avgLogprobs": -0.68308839797973631 + "avgLogprobs": -0.84448261260986324 } ], "usageMetadata": { "promptTokenCount": 60, "candidatesTokenCount": 10, - "totalTokenCount": 300, + "totalTokenCount": 163, "trafficType": "ON_DEMAND", "promptTokensDetails": [ { @@ -72,18 +72,18 @@ interactions: "tokenCount": 10 } ], - "thoughtsTokenCount": 230 + "thoughtsTokenCount": 93 }, "modelVersion": "gemini-2.5-pro", - "createTime": "2025-10-23T06:56:55.716370Z", - "responseId": "t9H5aNLcK6ryptQP-_6vMQ" + "createTime": "2025-11-03T19:53:25.624359Z", + "responseId": "NQgJaeeNJsKN0ekP4f-yiAg" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 4.090130167s + duration: 2.020324083s - id: 1 request: proto: HTTP/1.1 @@ -97,7 +97,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://us-east5-aiplatform.googleapis.com/v1beta1/projects/fantasy-playground-472418/locations/us-east5/publishers/google/models/gemini-2.5-pro:generateContent method: POST response: @@ -115,18 +115,18 @@ interactions: "parts": [ { "text": "The sum of 2 and 3 is 5, and the product is 6.", - "thoughtSignature": "CtsIAePx/154bFPH9VHqinXcUV/n+fOBQz6u2MwnVRN+B0rYpcxkRaES1pXRfXkG2PomQeDzSqc4MXjv7eDsfJksXytwk8qxnvcGnkB/BkRXTKTNuageqAfft5yp+Jag2TDHqIUS8vthxuzFZf59t1TuTdB2NfOv3Of1DU6i7fafJ12ZWFq0PQJVtscAKYIDx3NhoAE7Q+vyGEQAKSDYKU3qxgvMXNE478pLsDr2nr6PpWva+uzFUQMlqUT4ye87x+WVkZ8nvYv4wwDwh+jfDbYH0xng6C5Um1BF27IY9H3PxV9BP46Og76rP62TsoLk4sl/vGYaz84XLu1Rg9WcO+Bc5RxEl5HLpPO7pxp5Nu1DR5aT199QYqb1vuMcaR3mLoHTPEHWpkL4lQivbwWJOPWXGxO8DLTmsrO9d3G1xidSavJ5x4JM980KIHMUvhAwNI3J3PnPWG1W66o8FTOEcNkdCv5uGFlYJVRxUpFy9EuQTytduTBdni2MNkRDlcwZTXZ+hTdH28Kfrs+VpXusYk4I4pLYS6f2JX2cCWWSE1o8rzZWqNOQpR/aKmxS2w1fV98OVSFyoF9ixedITXCBgWPigt1PsrXCsBaZAZLDQmJ3SxosPYAHvCuwfxA5VicxYdXCFga/So8pSqlDkv+48UNegPPC4FW5h9TBW7ejN/lNj0/6OfENpJQfHC7Rz+3GvU+OZiPKUL3JL1ayDot+aWsTZsM/PH/6ieO0EvSeW4FAyYML5Nux0VXnyIyvuRn66OBCbCkwZFOn+7nBzpmqi1LO0goAJJ6/hVyEtxtvTEDS/9C+d6KNamEQ+MC3Sao2OL8Ml+2LgvemMznqCOPoo/yO0hD3UVIhSyT4yI8HpBVbYtv+ikKK7+iVKGNYE74BDfeLUzWKm3eEnxPlfASiCtzF3oHtgoPn/cDQO4RW1uKUY8gKTtTLlhixk3Uk+0FkelkN0poolzVuunRpmY18UvpUytIZo8jIFj9hwnXIINPWSXU7lndZqgkdWhak3emm1lqmKHBBCXawd3wTO3YIQPhzPvTJZAcRQwMaaI2U/xgzdIN4bcYEeGPSj/+H0+m2ogW+BA6PF+nBp5vgH5naPsQJzuaRMnHx9axZRL9aeJvQXr9qF8XWCtAX1dTeA56UDyJNceML7wFPh5UxNEAAIrFZcLNuGh4L4XY9J9T0gtX45rWXHBV+qFvODJZ8V8eNI/oB6kKf1H+aw+P15nrg1Whn+8seKpherWhmmFTT+nozfz56slDbZ0vMCoLvXn8WDcsq/2Cn5/NC0ayoxznzXGBeN7oSgL5OEmt9ZIWOjmQ0h1j49Bmnovf+i4jPNfsNRxSWY0XntMmrH/X+4kUypK+AxHUn83+2wYsU06zNlgnViMuR2W3Qu6lvtFFVBSj/k34XMfsYx/p6bqN4NPtgB/rhYvb6EkHx4Z2LBFFF+R+dVl6pK5jsaP66vX8i6imoAjzUpzpZYLZcJCTjDLY=" + "thoughtSignature": "CqsNAePx/16/pqADpCNjDOOvLZbYVBpeVUlFAyTZKsEyT8DVHG76t20d/hKlJfZ4NIr1Oc0V+kQ/fv+znM8rYTOTxQ8+lc31vZigNu93zEG/4WYYKo/Knnd0xvX9edO3P4rqe5QnaN93gnAsZVbDamxyJ7m5rx4gvHOA3A1qsfQaeWvYfXnwOy/KEs98QpHi7o0RMZIdiJM0jbqaE3n47pWdVeiV7BpFkJ+nLvykhUFQx7Bkx3ilBqddXdubQZdoln0oK4FRcTDOPbGg8/bFRkCJDRaBk3a0yVRa4AbfYghHx+v2HPiksngtCmbOUBcItJXz4CO71QkXKmFKT9FdBYeYEjf6pOwXpmhvdy8rQnywhJ2kI7I7aCUOe8iKuV7EyZHHOdUyz5KN5tmXcJKYn2BlY9sFsdjtxm1KYwS8JBiz98gqrkrjl6VSQvLX9u3lZB8oj+iTbw1lDJGyzGhQBD9YFAkhWrsBWwvIVdGa5t9FyNsQ6De/twjoI0ocX9oZb5TAnqeHLtUeHieamR6P3b82dMhDbZ0aAQueeeirI4SauaekhBtA9sj9NzILaTwbEHIdQC2rdQoAknjfmRkWTnuU4z0MhxVAcMcNqLDqRJbm+SXJ+XU8njKs0ohHxw/Otalaw5SxDqYq5SNZytGCUGCYf27C4uBC24NtB6n3Dwgm/3JD1EkMtL9isL0EVwkm2Ii3BFANk/AH2iiePw6SxFdChEfuHPtSGHA4jxT4wRWLkd2V5BK7+ZM6QPmwc6caH0J041X96xyt7bbaQtIf81vt2B2ANggSTPZ+chVAA2PWgkOlNcT+h/Tts1fgsWLUcya0gDL7ICMZG/EuA3TheiILeL6zwTBNWMjozByGTchimLao+lxDaUvZ+CwQFxDuTH/QTaYBGk3n9RXktdxwcAnP6n7Nyww7YfHx3JGpuYwY4aV69hCqkew+zbKEkJTwewhewxbRrB17YevUV+HK2c3vODT7ZgwAqgEdmByc+bCPwaj8UPpqhqvnPNAt9Vk6zHT/7S0o2ondpGuQ5EHn3WH83QgEWVC5AfHbP3d/l3o+xa7VHSfmomz5ESC2vTtvp06bIbrmxTnK3/I19m2VOECTPuE5zGDiPWo/EK0KGXJroTus2qObABwcVTyB/PevaKTllAQoAgeOS1M49xRHNA7jkKkWxVYrB/HzcKERlh8KJFlY3VeA5/oY24lax3GL0Ov7nUnn0o85nTN+4kWCcTlY6LZspr3kV43C2DW0X9hbcELPSV+d4m03JLpQLg+Hr35BMRCCPcDuOnmRVpuqqrxYOJQGz/DO5rBDY4yG0d41YQANlUEzBC3T5aHAflNUMEfFhYvwPb27NPF7c135C+WsIf8MJx27ILllURqhbmtgkxhWLPqlVY+hV4OTzHqnCncf+ztsLGp5Fi/KPD0txLU5v3nTOO8TgMu6AwikMpK9+ceLvjEpqrGtcB1ReZVnOeYKvC21OElIRlkz9n8KJIFqVd35LJA09ycQ74ZeIyraEEMWqKd+0/wpsmEBmnOJJhZ55pnilrUG+hovKrWhwyE8IuC2OzHnw8NcZ2IInCO89rnWFqf/NcSu9fEuMoK1ER0HTQKSyxCHm2C8024UooKjntWFO+65EcBms1KKedjfph5XRdFkM9ZqqCK0EwI21prrs55zNe3mAk+makMVfw8SgPNqrwck6d+yg6iAqnQIWs4d0iSxsuJTTVCWrxcLXEMI24XI+dIU44N2B3ApJOo54irAcFircjnpH0d3/qlG4+3qZXpuZFHIbSMrnIW7Jopgu8VOqomNeW8CEWWArKzcajx77PVbn6esYuFGN5ofCWJ+prfkxmmcxKnaYf0g/oTEfiTjbrYDDTnUngtGfDDvdrs1opJtAUpnnPWPp9sbWlxK4tfjUwOEexuJ5deHgXBYmXN8ox/89S0MTR3DulbMf/wgWVIkflRsvs2mWFOPmP/+kv0bf9IXUyUzW8oS+MqjPNLZ7PMknePMc3MFYpDpLLnsYqAWknSFUPWAbNQw+pLcUrZNgAM/xHI1HzhCQ094k+Bb1knP7i8yUJcLXew/DKHuSSclmtNdmoqf8s7uj7iUoxs8V+weGseCodm9PMtaEx25bIlBP+dgE8DVsoySvUWni4VtEis4pUTGQ7gVqgMkagYFDvW0F1ZL5BFxbAL9LcS0r+LbpH3WIfpdjTCI5/IxjpAcNaZ6vAbmVcFbTYI8zykO5DeZYdjqmFpAMSucEvBNWiRPa6ABcDkyA7eTAb148GE8VuPSDXWW" } ] }, "finishReason": "STOP", - "avgLogprobs": -1.6167781227513363 + "avgLogprobs": -1.8039343984503495 } ], "usageMetadata": { "promptTokenCount": 76, "candidatesTokenCount": 19, - "totalTokenCount": 396, + "totalTokenCount": 573, "trafficType": "ON_DEMAND", "promptTokensDetails": [ { @@ -140,15 +140,15 @@ interactions: "tokenCount": 19 } ], - "thoughtsTokenCount": 301 + "thoughtsTokenCount": 478 }, "modelVersion": "gemini-2.5-pro", - "createTime": "2025-10-23T06:56:59.999110Z", - "responseId": "u9H5aMb9PKD5ptQPsI7YiQ0" + "createTime": "2025-11-03T19:53:27.675592Z", + "responseId": "NwgJaYieKbGC0ekP-bXkSA" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 5.075507708s + duration: 6.285962458s diff --git a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/multi_tool_streaming.yaml b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/multi_tool_streaming.yaml index c6923b3466d25cc229ce1d48bb6388e61dd4aa77..fcdb46ab7c746dec86052d0ad5a95531eeb296bf 100644 --- a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/multi_tool_streaming.yaml +++ b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/multi_tool_streaming.yaml @@ -17,7 +17,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://us-east5-aiplatform.googleapis.com/v1beta1/projects/fantasy-playground-472418/locations/us-east5/publishers/google/models/gemini-2.5-pro:streamGenerateContent?alt=sse method: POST response: @@ -25,13 +25,13 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"functionCall\": {\"name\": \"add\",\"args\": {\"a\": 2,\"b\": 3}},\"thoughtSignature\": \"CiQB4/H/XgQAcXu85WneoGBRKOpeHj0vTklm62USpUddzxZPPLoKXgHj8f9eRUdyVNG1O8Vp4mjOWASvJe/hnO2R7E419QoQB9wL0mqpFa3bC0Ms9zWWHp7S4un46VSIbmd3W/jopqwPDev4hQxsMvhlwbPNZ5eF5bIIKKaOMVv5vcmvFWoKawHj8f9eUrqUzNrwVAJzpRGt+Z7cav1doL0DCW59c06QmgXdcDmTdIX436bdU8yG/Jn8gLfaA7mAOKR+C40/rsjaXpkN+SsQZfL/PU7UCCQvFX+utGUqBwDMGskTfSRZvvQjQTiGldElpP4oCocBAePx/17J+F3vQacIiy1DFbbLNVOstVJEBAnO5z+pniBktLDZOKW1n/8llyTjgSfu9p5t+AzitLEsdb4gdDs5kzRFeglMheIcyLq3+jeOkBklhYkg30b0XZ42c+NUKPj3MN7OkhIyGiYHS5QfLsnXKEeN/h/+EixGq3iKoFMWZDuAsBewbIBDCqgBAePx/17PxUt1XslgsF3qwthx62owqkHzGOYLYy07mGOcXLsFhsu0SxNowKP8X9BFHpfPy7f/5/TPzKS4EDRiwVQeNcW7ngB726QS54Kmlp1wVc0fozejv2CiMCGSPkCFX2CSKrWpb6WY25FbJC7G/6TpC7bg9Hl6sswf/UGlx1/bYoFs0qsMjuPJawOLEaV/5i8SiqXoNvwwqdI/9CoAkt0vMpTabUx8CtgBAePx/14VIfF1svGPHCOsnNOiECbcYfyXvW0hH2myrxAihs8wh++yOaa5Qd16rJyOmVsALu0utjvJuJbDbauY0WOVPGrvHvvAqNSX7CImrlPXjo+uM9TJRlnfk4fS+LgHjEm/3WevSgNALvQSVNwxR9OFqHzGrclY1dyQX1KopfO+Np+Q6lq0UWQrrXTx5iSdScz6mqfNeGT8Htcti/L8t/y1//TS6GAONi71KIr3sHuWYGjFQKAVf9EsKowOANdJcmqiWCp9+aFzpX+DRA1t0A+Y/5YylAQXCkIB4/H/Xt4MOLiYgKHOwz8wYMLC1aWabrDS13VEoVz8mGPnvpbFsEvshPcb0GZS1e1fcIkvgaLBhcFRDYwBFlxBQL0=\"},{\"functionCall\": {\"name\": \"multiply\",\"args\": {\"a\": 2,\"b\": 3}}}]},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\": 57,\"candidatesTokenCount\": 10,\"totalTokenCount\": 236,\"trafficType\": \"ON_DEMAND\",\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 57}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 10}],\"thoughtsTokenCount\": 169},\"modelVersion\": \"gemini-2.5-pro\",\"createTime\": \"2025-10-23T06:57:05.167720Z\",\"responseId\": \"wdH5aKieCrHEptQP-Ob28Ak\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"functionCall\": {\"name\": \"add\",\"args\": {\"a\": 2,\"b\": 3}},\"thoughtSignature\": \"CiQB4/H/XlX6NEE2oZemlkg67NxoKoJB5NoayjE5vi7trpqjHVUKXgHj8f9eB6K+z0Pl4dvATaGSyM3TPl0Ss2E68unSJJBQZlzT3epePny9LoODM1eSIS30esNvQYFWw8+AKSL4Dh7TrAF/wAXObu0B5EAxiisuNdpDpSNvoEmPYL8XwWEKawHj8f9ePJLfhHJqWosCkZwiGo/yuq3rNlyAYM+RpSTaT8sZ6TqgG5pqp8tzahjrBVMe8zc1I303Xj0fNeYyIK4GyXzva+kUzYv/Itnc/EEDDFHb9CnOsb7Q9UDiVIvbyn6Q0BIHHWtoJ8pWCocBAePx/14/qMNWbsiLE2J6ETDqka11adZo0yr8opBcpZqrrXLW0LCllKWrOucvFDJR2MrF+gO4RBZaR0xqT1bUPacWsYCD9fym+k2O/6mTQQCZr0dQv2z4ebrTpIJ3B3EgS90RToimlDHmUi6mv3sco9MHSOu+Cw/hFR5RCYodgJLNqsg5Bu/ECisB4/H/XqsC8CxNVguMHOF29sfs0UjX7aXTUL2oH5fq9qd3jukcEs2WH04x\"},{\"functionCall\": {\"name\": \"multiply\",\"args\": {\"a\": 2,\"b\": 3}}}]},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\": 57,\"candidatesTokenCount\": 10,\"totalTokenCount\": 145,\"trafficType\": \"ON_DEMAND\",\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 57}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 10}],\"thoughtsTokenCount\": 78},\"modelVersion\": \"gemini-2.5-pro\",\"createTime\": \"2025-11-03T19:53:34.206944Z\",\"responseId\": \"PggJaeDQDNOM0ekPpsvo4Qk\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 3.020269292s + duration: 1.962946083s - id: 1 request: proto: HTTP/1.1 @@ -48,7 +48,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://us-east5-aiplatform.googleapis.com/v1beta1/projects/fantasy-playground-472418/locations/us-east5/publishers/google/models/gemini-2.5-pro:streamGenerateContent?alt=sse method: POST response: @@ -56,10 +56,10 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \"The sum of 2 and 3 is 5, and the product is 6.\",\"thoughtSignature\": \"CiIB4/H/XuqOIBIeEbsjSAQFNssL8DW8i38s/pGkh/wrji/6CmMB4/H/Xtr2CkY2+DgKDRCXzRSyIiViWVfzPYzWFvFZjklzwLs7z/RitrewOTYnv7yelrs+ut2Y+FuI6RvDNRYlN7SG8OVBDyyDeCwumyZsW2maZGfq79JOV87NszIzszwdndQKbwHj8f9eQbg0MvA96ZIAwWu+z++vKamUeAx2AaLoBzTnCqdxQQax2RL+/w3iRrR7+dQ4A1cjsoQ/JcMF1NJs66JBP3kvmMcTejiCsv3gyaG2psBpyRN3TjWGMAH+P6EHbYB4iwcfpTY+8xjp34MpAQqdAQHj8f9e759GLlCPcBfF3B7udebCaTL1DFnQdpd0GYpvoVaksBKX+NRoSfumOVP7wuyj9qq96WHXizD2Te1U/l3+wnal73r8ONKWSha/QEwII63Nel3m2um7wAZLRFTLHtJQSkINYNtpRXFQ+5F/Dep9Uh/l4kiv/1LCW+glX6YNkzWOYwHaOLKxucACRs3LHeskm+sqCqCmAfBWMUIKlAEB4/H/XvwLk0os758loEMT/aLUkdOgHx3YURoMD+lIC4aHroU0gajMAD+1D/C5b//pAT/nKGp8JcFnNKwDYU8Ckf1KJS+xqQdckhlJWwQGZOOlpCKVzwZ5YW3vRXUQ20cbXIXtdbI48gJmH/K639Ptjh2+G33vJP+YVTHEdo6PwZf1Ypq9r4YyrotKX139iCAW2MjYCt4BAePx/14FAEqPjY5o+hFp2wrlj9xyLihYAXE+u8xbbH9sCFc6lY2vtGjoWR3nEe9/83oyNoUM9piM2V9LQsznmYTB+GsVFIkUCqVmQwBe6lgFHhR3pLGiggel42Ou9JQfhjROHZsv30pmn74+uWzlb/IhZ1g7F6CRNCpKXyIcucFek9qYiNTarqxZhvb+BD7t8GT2sC6xJTAEh3x2Q67AjM/QOGLoO+HgjVWMmcRld5U4pxcR9BRytmthym5gd0DcknQEl8SbNjmiB9RYluCmrRD90ZLbJ9IrB5rV1sfECrIBAePx/17U61rja323csLvLACgx6DDNUS1nT/vq0Sw2JFhZ8cs58kKA38hYAldyMFZU/UlXV/kAsdxkVL4NxUg1cplYKd94mRN85ACsEjDWLTkrgSmt3NO1dq6A2FwT0tVly0/fdZO+DrZ3Qrn4Kgv8dIe6PQXOWieiVazxs7eBEtD9ZX2Os7cj2Jmnd9QO2hv1Z7IVCUxWKeU5wf4RTl5JiRn1athzRVpsgfAHfOkdWsaKwqpAQHj8f9edkr6y9NB31IBu8UqU83M/ssH3yqoluC+iJrP19OkZIGVRiDliKBFCW5z2wRhoj9OnqrtfeiIAchcZNfUBWxALRIZotgiemozDTl9lHY7r/wst5tnlrMoNCGhjxLIJ8AbFwtCpED/OaMxisop8QTnRftghOJsDJ8rqprgpOOHq82buKUoVqO8ie2vcxkyW++/VjEOnselrYAHjqA9HR2ZPSH7SSc=\"}]},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\": 73,\"candidatesTokenCount\": 19,\"totalTokenCount\": 328,\"trafficType\": \"ON_DEMAND\",\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 73}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 19}],\"thoughtsTokenCount\": 236},\"modelVersion\": \"gemini-2.5-pro\",\"createTime\": \"2025-10-23T06:57:08.169231Z\",\"responseId\": \"xNH5aI-qCoXwptQPy7WwqA0\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \"The sum of 2 and 3 is 5, and the product is 6.\",\"thoughtSignature\": \"CiIB4/H/XkgskiftxblvQtKnaPUHwvpnvRtARLh1flSf7S2BCl8B4/H/Xkgf7tGXREzzma36SRJHlASZky6tFTEZfTo04rNp3O304Z4XJKxvetB9Apc4LJlnPR4kLT3Hq04gT1iI7WQTAY2JuYBzy2brHXtjxJz0KudJW4/N1hqXWRL+QwpxAePx/14hN0ASU+jC3AIyPntWG7uCSqldtzR1LcaoiDZinJI9wWVAn35Xp2fncHkXwNw1evHWVBz0YpiCN480PTCDoc0UNUb1VBWuGsWEIf6fpZEtnV8/GICelQcKKLar6OGrFoVdLL4jz2sBuK9jr6YKowEB4/H/Xto+8y0rvZp0VUCldJa/91+1OuLOFzut+CXNb5M62mCr5AJB65XVbO21IABwGOFDl3dPDP38ZcAceJpkmpAX/7WeucrqmoFffvuC477sQDEmHVBLzxKruLsjqAYLoqBM8n1KnY8CZX8P3ZrTvT/oIXJ1LQFjnT2x4tK9V37cCdL/Lawvyy7fCeIk7tWRD8zXRrOg28Q00ML0W5jthnXTClwB4/H/XgOmDHX55PIa/4SMObXQ4OEckzh9abY8hlOro32dOQ15cW0Qfeosx7ObdN/adp4/VSs6wg65b3rh/PXEZlyVnIeI44o0YwQIXwHQkrEqqrlBUf9N0wC9HQryAQHj8f9ewEmxVrUbCU9E761sRSfvV7/XNV/cid6fx9wwpaYK2kc3eK0r2aLIq2L6EwiGf9pFb8hNJnhn7/vnfGagzjadqVxFt8n3/dKh84IFkkZgTOcn7SqBf77pnHtn3SUpmf/r4ggmG++SlPaOsEQjVZvc+2Y7PHQ0keXv0tE8hs8ZpTvDC00cq8xdc7tImJu/z2G0bwYv4x0kndllQZVlqcNQs0mGHJr+5Zilxf5xh0RDCNs8WvyqZiFTbnWu76tHM1wO2XtB6TXdEs3RReOXX8qmdQAM2NLVhjvaCEVmTmBp0HRCwx+eMPVRa1zYxrpwCucBAePx/148F/6p2sv6iMgFQBXFqLOA+OE5FUNm4eUqZWNZYStFTQbI4A6ANxXPvbcbAv7DtY61cHZDhPyrkp9zLSo5zGA7fols0Dk9tz6C6SwdzcGWOkG4SSyNQsgmJmSYY7S4mm5e+hXmPg4N/yjyIUMa6kDPxfrPpDIqMtvXh6dVt4IVrWdjC7unM/9vB0OW4s2TMuyyK089iPonII2TxR0bx8aYH0GU3tjFWlszfdEQUQYuoMPlMAovvj7nPiE9cUV+706GXcRNvYesvq/dACB3aWoBGmT3l42D+JlCWc9vWcwFCamxCvIBAePx/17Noj7zoFFWRobA84QHd65l4kLllJB9IAzxynk/2eYYoJe5ybYGCLaWzw/vuEnOQ4/y9dBLRgqxEfo+a3QEWPXWS4snWJX9tG5f0ZuODH77uEqTV3saT25LN4Y0K9b0/tQBBheR+ohkG5r/DJKALIMNGSKfYetMssNOtx4up03sNJymzp2ehf/kj//G5Yq975i3VHerCihiPwq0jNzXLx04giKUkiaM9D9kvSmbp0UnBaQGZvWg+/YXzcx1T+5wur1GURYRX4T+sO0h0JMtHzz3loL4DCdMgIknHkG//knFjSjOuYA4O9r+4gLmslQ=\"}]},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\": 73,\"candidatesTokenCount\": 19,\"totalTokenCount\": 345,\"trafficType\": \"ON_DEMAND\",\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 73}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 19}],\"thoughtsTokenCount\": 253},\"modelVersion\": \"gemini-2.5-pro\",\"createTime\": \"2025-11-03T19:53:36.159221Z\",\"responseId\": \"QAgJafXbCeGA0ekPtcmwmA0\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 3.008985s + duration: 3.375502417s diff --git a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/simple.yaml b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/simple.yaml index ab3a9c08cd364434d67775321b268e1dd9b243d9..20f979c7473a07d890556a2b7c789423f82a7c9e 100644 --- a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/simple.yaml +++ b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/simple.yaml @@ -14,7 +14,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://us-east5-aiplatform.googleapis.com/v1beta1/projects/fantasy-playground-472418/locations/us-east5/publishers/google/models/gemini-2.5-pro:generateContent method: POST response: @@ -31,18 +31,18 @@ interactions: "role": "model", "parts": [ { - "text": "Of course!\n\nThe most common way to say \"hi\" in Portuguese is:\n\n**Oi**\n\nYou can also use:\n\n**Olá** (which is like \"hello\")" + "text": "Of course! Here are the most common ways:\n\n* **Oi** (This is the most common and informal, like \"hi\")\n* **Olá** (This is like \"hello\" and can be used in both formal and informal situations)\n\nYou can also combine them with \"how are you?\":\n\n* **Oi, tudo bem?** (Hi, how are you?)" } ] }, "finishReason": "STOP", - "avgLogprobs": -2.3780706305252877 + "avgLogprobs": -1.3811639073383377 } ], "usageMetadata": { "promptTokenCount": 9, - "candidatesTokenCount": 38, - "totalTokenCount": 720, + "candidatesTokenCount": 83, + "totalTokenCount": 811, "trafficType": "ON_DEMAND", "promptTokensDetails": [ { @@ -53,18 +53,18 @@ interactions: "candidatesTokensDetails": [ { "modality": "TEXT", - "tokenCount": 38 + "tokenCount": 83 } ], - "thoughtsTokenCount": 673 + "thoughtsTokenCount": 719 }, "modelVersion": "gemini-2.5-pro", - "createTime": "2025-10-23T06:56:29.134156Z", - "responseId": "ndH5aIyYCLHEptQP-Ob28Ak" + "createTime": "2025-11-03T19:52:59.997761Z", + "responseId": "GwgJaYHzPNnEptQP9fCJyQY" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 7.471405083s + duration: 9.378146209s diff --git a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/simple_streaming.yaml b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/simple_streaming.yaml index 8e14cfe7de1d6739d28e34a8868b76ebacb07d47..4cc01b799705afefc94a4c7ea0290b9f6f058d68 100644 --- a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/simple_streaming.yaml +++ b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/simple_streaming.yaml @@ -17,7 +17,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://us-east5-aiplatform.googleapis.com/v1beta1/projects/fantasy-playground-472418/locations/us-east5/publishers/google/models/gemini-2.5-pro:streamGenerateContent?alt=sse method: POST response: @@ -25,10 +25,10 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \"Of course!\\n\\nThe most common way is:\\n\\n* **Oi**\\n\\nYou can also say:\\n\\n* **Olá** (This is slightly more formal, like \\\"hello\\\")\\n\\nOften, you'll hear them combined with \\\"how are you?\\\":\\n\\n* **Oi, tudo bem?** (\"}]}}],\"usageMetadata\": {\"trafficType\": \"ON_DEMAND\"},\"modelVersion\": \"gemini-2.5-pro\",\"createTime\": \"2025-10-23T06:56:36.845945Z\",\"responseId\": \"pNH5aPnQM4XwptQPy7WwqA0\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \"Hi, how are you?)\"}]},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\": 9,\"candidatesTokenCount\": 72,\"totalTokenCount\": 890,\"trafficType\": \"ON_DEMAND\",\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 9}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 72}],\"thoughtsTokenCount\": 809},\"modelVersion\": \"gemini-2.5-pro\",\"createTime\": \"2025-10-23T06:56:36.845945Z\",\"responseId\": \"pNH5aPnQM4XwptQPy7WwqA0\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \"Of course! The most common ways to say \\\"hi\\\" in Portuguese are:\\n\\n* **Oi** (more informal, like \\\"hi\\\")\\n* **Olá** (a bit more formal, like \\\"hello\\\")\\n\\nYou might also hear people greet each other with **Tudo bem?**, which means \\\"How\"}]}}],\"usageMetadata\": {\"trafficType\": \"ON_DEMAND\"},\"modelVersion\": \"gemini-2.5-pro\",\"createTime\": \"2025-11-03T19:53:10.259251Z\",\"responseId\": \"JggJabPpD9KK0ekP6b_N-Q0\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \" are you?\\\" or \\\"Is everything well?\\\".\"}]},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\": 9,\"candidatesTokenCount\": 74,\"totalTokenCount\": 733,\"trafficType\": \"ON_DEMAND\",\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 9}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 74}],\"thoughtsTokenCount\": 650},\"modelVersion\": \"gemini-2.5-pro\",\"createTime\": \"2025-11-03T19:53:10.259251Z\",\"responseId\": \"JggJabPpD9KK0ekP6b_N-Q0\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 9.024153875s + duration: 7.995516459s diff --git a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/tool.yaml b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/tool.yaml index 350eb8be4c0709916efd4be651d1314a52cf88e3..ad189c61500844ff80da07e100f85c22b37613f5 100644 --- a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/tool.yaml +++ b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/tool.yaml @@ -14,7 +14,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://us-east5-aiplatform.googleapis.com/v1beta1/projects/fantasy-playground-472418/locations/us-east5/publishers/google/models/gemini-2.5-pro:generateContent method: POST response: @@ -37,18 +37,18 @@ interactions: "location": "Florence, Italy" } }, - "thoughtSignature": "CsQDAePx/16BSTox7w915NWGeZDiCcadqyQOruFo69gjDNj2kp4g8LWDvvqodBi8WkgyhBQCwvQFUOs/UuJDUgabzKp22DWPBpri/c9PH56m7Ss1siHb9d0ETRVWu5d4+Z3cU1iu1/OJy8a4zskJICrRSg8WU8euc2C1qPSHsM0KoFDMPNCluTO4+/BKef19qKEByzGP126OHQPcL498iUIB3dq9suqF4inMw0wQ81J5Cn4+68ckU2fMbvPQpKqmZfzF0y68MwvPH0RWhl1CWiOeIC0tzI/flCWNQJKAB2q+RoK5D3zr1gFQ8QP/cfwet6VW16ajcnmYH7F9Df4/H01iV/aQ5A9M5IRBcwed97whvZraqQFefMQNSru4PeiXygp0cYYbrMQ3+5fntpqhIviNg7oxexnd5jcZhaNZOYD4OIJt6+CPkZXzBtzc9BE9UwCcnJzWRyvHSgDH7zl/xudo8/p4KleUVaD+rzO3f54UtOAV/zd+Fd8qyoqAb2BpLS8czoKP9KVCnFbNizZgno7oTgi8dUkgAtPNUzL4SbDrgNQTKkNDzpfKd8OOmvxo3YVgrXGSeI1fonHIOGf0eMmmzvd+AUY=" + "thoughtSignature": "CowEAePx/16C696DNWj4PuxMNS0zO6v+tdCJF1yJnn07eZuEPLPnvQ6p+oyw3hrynhBTBfnV4DLp94IKgX2qrApBR+CmZ3tqxhvwAG3luoBPWFlXTHfTGClpOrLI3Un76DOTzl3LCtmclum3o8kXE4V5PmRCeO2WXfLnwdy/hxs86ksrxyN6Y5edf1q/9tfu4PIJU+DpsJ7dNO6VZ5Lg0+FHxmVbXJq6Gpe/0FlwCXqolzyPeKMfhcTFUQtjr99pmS4rHWLDIF2ftwUBWzZembLj24OF+vWikxaWRcojZ5rh3KTluf+czMQWbGmmZUOsuRiOd84J/n1HDkqJ9RRGXSOrbiHpRasvNaMbLG6ufvkPSKm++DYe+tVmx40dwbr7hStfhAgKyNcBjRctIj9lHFlX1jczygVAxsv+6DK6UjEgZNWKtzkecZTzJWCzwLoQqpa56DD9eiMvq2Btfw47SxRkRTbQTOyJvPGVPBqaJksU2qOOprUdCqVCcxbJJfcFcVrTRiz1TNVTs89U1JiWm71RBJqXQBgLYYfryqSJ6E6lAlejy+7nc0q6YPleHC+4K3XyL2I5Q5HUwoEjEHnMCYAe+J68ztkjRablCHICIWJI08O+Ii9hgF9wIEkoZlA2A3deHYWfDh1mMjdZEZ2IibwroGaRaSq6AOJUyfWL9GgJb3/OnNWhpw6MlLV0Ol4=" } ] }, "finishReason": "STOP", - "avgLogprobs": -1.9075927734375 + "avgLogprobs": -0.95030345916748049 } ], "usageMetadata": { "promptTokenCount": 28, "candidatesTokenCount": 5, - "totalTokenCount": 128, + "totalTokenCount": 155, "trafficType": "ON_DEMAND", "promptTokensDetails": [ { @@ -62,18 +62,18 @@ interactions: "tokenCount": 5 } ], - "thoughtsTokenCount": 95 + "thoughtsTokenCount": 122 }, "modelVersion": "gemini-2.5-pro", - "createTime": "2025-10-23T06:56:46.277788Z", - "responseId": "rtH5aJz6EOn1ptQPkf36wAU" + "createTime": "2025-11-03T19:53:18.064499Z", + "responseId": "LggJafP3A62G0ekP9tjQmAk" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 1.957397917s + duration: 2.300412708s - id: 1 request: proto: HTTP/1.1 @@ -87,7 +87,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://us-east5-aiplatform.googleapis.com/v1beta1/projects/fantasy-playground-472418/locations/us-east5/publishers/google/models/gemini-2.5-pro:generateContent method: POST response: @@ -104,18 +104,18 @@ interactions: "role": "model", "parts": [ { - "text": "The weather in Florence, Italy is 40 C.\n" + "text": "The weather in Florence, Italy is 40 degrees Celsius. \n" } ] }, "finishReason": "STOP", - "avgLogprobs": -0.1211475684092595 + "avgLogprobs": -0.077328896522521978 } ], "usageMetadata": { "promptTokenCount": 38, - "candidatesTokenCount": 13, - "totalTokenCount": 51, + "candidatesTokenCount": 15, + "totalTokenCount": 53, "trafficType": "ON_DEMAND", "promptTokensDetails": [ { @@ -126,17 +126,17 @@ interactions: "candidatesTokensDetails": [ { "modality": "TEXT", - "tokenCount": 13 + "tokenCount": 15 } ] }, "modelVersion": "gemini-2.5-pro", - "createTime": "2025-10-23T06:56:48.759113Z", - "responseId": "sNH5aMmqLsHDptQPtJigwQc" + "createTime": "2025-11-03T19:53:20.397608Z", + "responseId": "MAgJaaiiGNGE0ekPn_2gsAo" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 1.759973041s + duration: 1.349412417s diff --git a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/tool_streaming.yaml b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/tool_streaming.yaml index af9bb9a308690f6d7e79855fa1074a088ca083e5..b03b6da16541c483e8ea7ff40bdd689bf64fcfdd 100644 --- a/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/tool_streaming.yaml +++ b/providertests/testdata/TestGoogleCommon/vertex-gemini-2-5-pro/tool_streaming.yaml @@ -17,7 +17,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://us-east5-aiplatform.googleapis.com/v1beta1/projects/fantasy-playground-472418/locations/us-east5/publishers/google/models/gemini-2.5-pro:streamGenerateContent?alt=sse method: POST response: @@ -25,22 +25,22 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"functionCall\": {\"name\": \"weather\",\"args\": {\"location\": \"Florence,Italy\"}},\"thoughtSignature\": \"CiQB4/H/XiVd2Ca1mefZ0aLYQnjMBFig65C/dnUtnFkZT4xoiHcKZwHj8f9e8rbVyC3ickntc16RBwRCl6Hh2xBWIL3GUMzy8jYc98uqDcFh9QAEOZXme0vga0w2aHw39rXSHZ61/CJrooMWZa9OSbi6FaSnkJjkrD2y0T2zYx4uAtUnUQlsm6NFY0TjuTwKZAHj8f9eeb8p5DuPp6/oQ1Ldul8Sh0pLWZweoB2kCNqo32qtlnsuVTaNI7YdySX/KlfX7retiXWWUnMFUr9Q0Vy5gtZSoeGB24j9TSt6Y06DOIxQGklBqgEU35B+vPPVJxv54ZQKuwEB4/H/Xi45y/8RIM8hdYJecYG8FkidK5eBV1V41wvCFAw7NnqUyKWAg9EB6I3MdoGXm8xZJVRZVSQ5YYoEfr/109ig3ac0hTOkkmhAEkO9TywD4gKAsNPPGbN5SEDaIKbmXHSu4JZo9qZM4DxNuQafRPXlcIK2tQf2cYz7dZQPakHF90zcCkSjCwGfveIA1lxyZrmuUymAVATkols0V6thSDPWAIg9RqvEwBwJM84Y8ngcH8WlV/bJWU8YCpEBAePx/14EHisTU5veThMq0WqAP0YTTgX7lC2Sf0KC983R4kVAk1gZfX9dV3r80Fh5sGpA6enSJ9IVSfXEmK2L8J8Fz6uYZuxxR/+ON1zbsW+qhmWlLyk4c9dAevD4X5ggrFLB4vef4u9TG4Pt76xWiKscZ3ksGNqNb79AMn3cALCSNIht8mZb2hEtJoq1KgttMAr5AQHj8f9e075jP5UhjdIS5xaZmAMvBE1/xSc0FQYiHOCt+ANGOoDrFQNYDDgnwv3hftQ6d6XJ+ZY3lKeeazpZNP3LEZKK26UfkcKEr8NXSXY/E5QmcNnl9B/zEg3CHNOaudceUDEYJ+AVb52oNWK1AWEs1zE0Xv8u0Eu7LmIIljlUTuNB5KejB2SapZKH9AJjrG0+Xkj5iPHiQXMlmwKR5tXnxQ84DDZARw8icYLvXGcjgKlRjb4yZEGoBg4kZ55MGDrYML6l1NNYkhdU9zztHoK9LpYN6VWy7bAmN/zYdGYcjT+qrkjajRgruUCDIL+X6BnZnAfXk2oEkQqAAgHj8f9e4A41922IOEm/ITVmO7ACrhtZTskqgZTJVGun5tLrcr1RPjcTr1Qc0TRlY6cV2v8CtZhqndD1fZyqXm+Uk8JlACQ3F6y2sUyeEyaOFzAOk6zp163goJmjYQq5o1LO4QaPPm1nRj7kRj9Op9/EdjKzbT5/UCv92uEZXQPe8jhRL7d0eVO1oWetqIfMrCiBnOn8SAlettm+UBaHob8P8jeSbh31odyCtdiujkba3qJRaiHiCw6hSttLqqVdtU5JVhImtlaP+AcZNVGrHX9XoqBzJZj8B7rGivLy3jxEDKXUSQcXIIcmgGxLvP7ropYurfZlsOzAcW/WAWpPq2AKwgIB4/H/Xvo30nvn8/Jxv1E88kh9AVzNp0K+grX1rne/jeYy6KFLuo86C6rCS5zpf6dtvYVHfTsogYdppukK92rpDkKkCb1JzpkHEtcGRXmV0aLS2w69f4OpCfzlTBztZTpN2g5HWH7gD4fuDutPDYTYGqishkOkzhshDJWWRv8lBexq2yUl58a5AlyS2CSwa4BYT9GNF5AEJywImkJL5lUxCh4hISJVxZqO550zXiZoHcJJVMqcgaA4w0sBfy4jFjB6werEz9mYjo34wyBhj286XcYWfOw98myot4vSEWwhF9amVikwHl3meV5gQ8iKuyEG6C9dkEXmGwUf9ywca4vit/F9SGKKc7CC7lUiGqvLSDW6r+TzO2sY59E0sfcE4K4/N7766mSJWCOQwK2pgleuzglopb8zXY+PvYNuXhQ+BsGrCtkBAePx/17EUMUCjtZhMxfoeotAHmAm1Qz+syfxTkH5u87SlvGxtgxnAuu1h3VKUZzVe8hSCMUsoXfsqXroG3UjX/TJFm5yMPqNFYuurXkfjRX9N8IWDyqiz1lOvR5R0pMSMiUX/WHOYH2Efaukz0M2aoigvjH1FI4a/Z2zA2uE14lxq1SQOuI5QEwWKf1NXY8JZ1AhVEp4VUODtwc/DoxCC/hwFhk5hKkz+W1/3o/gAlkU5OeWdDF4KZ74yYFDCpPuPEtvvFqF+3amQMo2dRwcpQsof5x0+xyQgg==\"}]},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\": 28,\"candidatesTokenCount\": 5,\"totalTokenCount\": 340,\"trafficType\": \"ON_DEMAND\",\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 28}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 5}],\"thoughtsTokenCount\": 307},\"modelVersion\": \"gemini-2.5-pro\",\"createTime\": \"2025-10-23T06:56:50.220833Z\",\"responseId\": \"stH5aKG9DcqZptQPrcWIuQM\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"functionCall\": {\"name\": \"weather\",\"args\": {\"location\": \"Florence, Italy\"}},\"thoughtSignature\": \"CiIB4/H/XhZZB0TWHec65qEVyQd4IhQI1EuGj8UuZOSqmXpwCmUB4/H/Xp7XOoeqoXHg6gFPm5mPOWzYFWJ8qbgh7Tt5LXBCcVzseHowg0EXsdXs1ZK97zzIHdvtxQ0OpQYwD3WFq5gRglkFSLs83xgOUTBMC3ayrFTlwFeYVk6Yf3zRXDIqeyaY/ApjAePx/14PSFyzAMtm0iEc7+8DX+XQEoCQqdWmqMeNEkpg/1x5S24YbebsFyqTN4BBFPffReNltuHil4h3adPMjAJiK7d/CpwB8reGhx/+7CV7557Mzlq4xEXCljbbQm9ftvB8CqcBAePx/17y3TuQan7rDijjgOrPi36IXyaun+bR/oPcv+Xuv7aWlNa2VmUwhy3jwZ2rzeoxmVtjAx4Fqima1/56KFNufuEtStUZNXsMo1EcKEiIVIMoJrGD+6lsahyYM+M0gmbMnh6gG4fFXv2h4VMK8WW/V5Gctk0CovjA4l3xMrsFw8eWvAdJILs559N+Na8kK5NFItZmI3Q6wDXphCMacV2dLVgvKSsKqAEB4/H/Xt1bMyb5Lf3GLBshtvvq4UeI3DskQ87pM4Tn7Z0xVysuXLUBcWCtEwkzLDCLIQwpiW69GuulFU1mNNofFhzk/xcLApFnJ/b55sqEkJ31JU4EtSz1flNY70fkLDJDmwRXZ2MCFNE22SK0ndOv8rDPhOvAQ7uCC73sAkoQQTzLkCU+pAuAizzx96N2cijmEPM7LbcshBvg8NGfWuU/5OGcU2Xq1NcKNwHj8f9estCUriipiaQSNt2sVM8cx3ngVIK0dYpOZDb2Pb/JjqODMCWctM/PvdJDQE0MgUng/Rc=\"}]},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\": 28,\"candidatesTokenCount\": 5,\"totalTokenCount\": 140,\"trafficType\": \"ON_DEMAND\",\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 28}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 5}],\"thoughtsTokenCount\": 107},\"modelVersion\": \"gemini-2.5-pro\",\"createTime\": \"2025-11-03T19:53:21.976448Z\",\"responseId\": \"MQgJacDMO_eS0ekPq9DjiA4\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 3.985236916s + duration: 2.198163459s - id: 1 request: proto: HTTP/1.1 proto_major: 1 proto_minor: 1 - content_length: 722 + content_length: 723 host: us-east5-aiplatform.googleapis.com body: | - {"contents":[{"parts":[{"text":"What's the weather in Florence,Italy?"}],"role":"user"},{"parts":[{"functionCall":{"args":{"location":"Florence,Italy"},"id":"1","name":"weather"}}],"role":"model"},{"parts":[{"functionResponse":{"id":"1","name":"weather","response":{"result":"40 C"}}}],"role":"user"}],"generationConfig":{"maxOutputTokens":4000},"systemInstruction":{"parts":[{"text":"You are a helpful assistant"}],"role":"user"},"toolConfig":{"functionCallingConfig":{"mode":"AUTO"}},"tools":[{"functionDeclarations":[{"description":"Get weather information for a location","name":"weather","parameters":{"properties":{"location":{"description":"the city","type":"STRING"}},"required":["location"],"type":"OBJECT"}}]}]} + {"contents":[{"parts":[{"text":"What's the weather in Florence,Italy?"}],"role":"user"},{"parts":[{"functionCall":{"args":{"location":"Florence, Italy"},"id":"1","name":"weather"}}],"role":"model"},{"parts":[{"functionResponse":{"id":"1","name":"weather","response":{"result":"40 C"}}}],"role":"user"}],"generationConfig":{"maxOutputTokens":4000},"systemInstruction":{"parts":[{"text":"You are a helpful assistant"}],"role":"user"},"toolConfig":{"functionCallingConfig":{"mode":"AUTO"}},"tools":[{"functionDeclarations":[{"description":"Get weather information for a location","name":"weather","parameters":{"properties":{"location":{"description":"the city","type":"STRING"}},"required":["location"],"type":"OBJECT"}}]}]} form: alt: - sse @@ -48,7 +48,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://us-east5-aiplatform.googleapis.com/v1beta1/projects/fantasy-playground-472418/locations/us-east5/publishers/google/models/gemini-2.5-pro:streamGenerateContent?alt=sse method: POST response: @@ -56,10 +56,10 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \"The weather in Florence\"}]}}],\"usageMetadata\": {\"trafficType\": \"ON_DEMAND\"},\"modelVersion\": \"gemini-2.5-pro\",\"createTime\": \"2025-10-23T06:56:54.192162Z\",\"responseId\": \"ttH5aKLdC_LEptQP_MqZuAw\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \", Italy is 40 degrees Celsius. \\n\"}]},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\": 38,\"candidatesTokenCount\": 15,\"totalTokenCount\": 53,\"trafficType\": \"ON_DEMAND\",\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 38}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 15}]},\"modelVersion\": \"gemini-2.5-pro\",\"createTime\": \"2025-10-23T06:56:54.192162Z\",\"responseId\": \"ttH5aKLdC_LEptQP_MqZuAw\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \"The weather in Florence\"}]}}],\"usageMetadata\": {\"trafficType\": \"ON_DEMAND\"},\"modelVersion\": \"gemini-2.5-pro\",\"createTime\": \"2025-11-03T19:53:24.181679Z\",\"responseId\": \"NAgJaa-LC--B0ekPkrjFqA8\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"role\": \"model\",\"parts\": [{\"text\": \", Italy is 40 degrees Celsius. \\n\"}]},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\": 38,\"candidatesTokenCount\": 15,\"totalTokenCount\": 53,\"trafficType\": \"ON_DEMAND\",\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 38}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 15}]},\"modelVersion\": \"gemini-2.5-pro\",\"createTime\": \"2025-11-03T19:53:24.181679Z\",\"responseId\": \"NAgJaa-LC--B0ekPkrjFqA8\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 1.02386s + duration: 1.139946417s diff --git a/providertests/testdata/TestGoogleThinking/gemini-2.5-flash/thinking-streaming.yaml b/providertests/testdata/TestGoogleThinking/gemini-2.5-flash/thinking-streaming.yaml index 8d335d2790dafc50983c434db30bd4c1dd310bff..3067441c29c5372530ff9c097be5c5b88e8a2cc7 100644 --- a/providertests/testdata/TestGoogleThinking/gemini-2.5-flash/thinking-streaming.yaml +++ b/providertests/testdata/TestGoogleThinking/gemini-2.5-flash/thinking-streaming.yaml @@ -17,7 +17,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:streamGenerateContent?alt=sse method: POST response: @@ -25,22 +25,22 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"**Querying Weather Data**\\n\\nI'm ready to query the weather tool now. My plan is to input \\\"Florence, Italy\\\" as the location, based on the user's request. I'll pass that location to the tool and expect weather data in response.\\n\\n\\n\",\"thought\": true}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 54,\"totalTokenCount\": 105,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 54}],\"thoughtsTokenCount\": 51},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"kNn5aN2wEczXvdIP053f0AE\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"functionCall\": {\"name\": \"weather\",\"args\": {\"location\": \"Florence, Italy\"}},\"thoughtSignature\": \"CikB0e2Kb4LhbEW+bno+g0avcBVT72K/jrl7SHLNSzpvehMq0dFuukNMSApwAdHtim9oE+9UuZVsIfU7F0iJ2uDjbyQ4/n7iBhOK0DglXXf0NaMXZ55kajoo7qPGExtaignwaxA5BeypkEvGBa5pPT4hdnlnLKLiUuDq51OHryjhVr365l31xL6b6DgQcSJ1Wh8dacD/4ZEiY1SHLwqmAQHR7Ypv/W6j/0drQh5idhsZVVbwxE8wM1dVOtfJnpyjAqV4TJPkbmuXBB6+1HL0x/BY6UAgk8Apbyf7yvjC2Les3AFP5wsc9TPIqRpPAmqlSsL+CT31kh5jXwVYHLeMlj0+kvbT9N7jzPSxzrIfiGDt+JjPBuhou6aUWf1NUqd6jowxfewjfoKh/ku5engRpQNF6KBCZTXztf7+pE72NnByHM0ocpY=\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0,\"finishMessage\": \"Model generated function call(s).\"}],\"usageMetadata\": {\"promptTokenCount\": 54,\"candidatesTokenCount\": 14,\"totalTokenCount\": 119,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 54}],\"thoughtsTokenCount\": 51},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"kNn5aN2wEczXvdIP053f0AE\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"**Obtain Weather Information**\\n\\nI've determined that the user is requesting weather data for Florence, Italy. To fulfill this, I'm setting up a call to the 'weather' tool. My approach is to pass \\\"Florence, Italy\\\" directly as the tool's `location` argument. The execution of this should provide the necessary forecast.\\n\\n\\n\",\"thought\": true}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 54,\"totalTokenCount\": 104,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 54}],\"thoughtsTokenCount\": 50},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"VAgJac7_KP-Cz7IPkNbj8AM\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"functionCall\": {\"name\": \"weather\",\"args\": {\"location\": \"Florence, Italy\"}},\"thoughtSignature\": \"CiQB0e2Kb8PlQ1xttw+62OLkdtWjI6TWRZh8b9qS/VT05kd8Ha0KZwHR7YpvQf3lmZCOuET4YbFxLuwXLuMu3HZ2jzf18ygViyHTycSgWJpj6wLv7fsIPOgDAClIM50cArZ8SL14unjA0SZr0bC83cRVkr366deJ57t7woE7NbmDRvvC2Ww7Zp4dwBQQM/8KrwEB0e2KbxifnDjOKb7MjLsifVm/yX34wfvONANctV/pHkix8Inu0T4R91HZuuddKV2hA7wsdJc/Z5Lq77aDDMcVCTiXo4+6ua+J7zdMa/CrarF9xmYX60MaQU5/BkoCsGY5YEuyiL3GsnRqI/YZYUZjVihthA+pm2scVOAKSL9JvDvccxrLMhgbAVe3J/vXtzqrwKKnOMSDmY6N5l2hg0yPPTBR+GW2/kK8KvOo5xzK\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0,\"finishMessage\": \"Model generated function call(s).\"}],\"usageMetadata\": {\"promptTokenCount\": 54,\"candidatesTokenCount\": 14,\"totalTokenCount\": 118,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 54}],\"thoughtsTokenCount\": 50},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"VAgJac7_KP-Cz7IPkNbj8AM\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 1.633302125s + duration: 1.941407333s - id: 1 request: proto: HTTP/1.1 proto_major: 1 proto_minor: 1 - content_length: 1222 + content_length: 1214 host: generativelanguage.googleapis.com body: | - {"contents":[{"parts":[{"text":"What's the weather in Florence, Italy?"}],"role":"user"},{"parts":[{"functionCall":{"args":{"location":"Florence, Italy"},"id":"1","name":"weather"},"thoughtSignature":"CikB0e2Kb4LhbEW+bno+g0avcBVT72K/jrl7SHLNSzpvehMq0dFuukNMSApwAdHtim9oE+9UuZVsIfU7F0iJ2uDjbyQ4/n7iBhOK0DglXXf0NaMXZ55kajoo7qPGExtaignwaxA5BeypkEvGBa5pPT4hdnlnLKLiUuDq51OHryjhVr365l31xL6b6DgQcSJ1Wh8dacD/4ZEiY1SHLwqmAQHR7Ypv/W6j/0drQh5idhsZVVbwxE8wM1dVOtfJnpyjAqV4TJPkbmuXBB6+1HL0x/BY6UAgk8Apbyf7yvjC2Les3AFP5wsc9TPIqRpPAmqlSsL+CT31kh5jXwVYHLeMlj0+kvbT9N7jzPSxzrIfiGDt+JjPBuhou6aUWf1NUqd6jowxfewjfoKh/ku5engRpQNF6KBCZTXztf7+pE72NnByHM0ocpY="}],"role":"model"},{"parts":[{"functionResponse":{"id":"1","name":"weather","response":{"result":"40 C"}}}],"role":"user"}],"generationConfig":{"thinkingConfig":{"includeThoughts":true,"thinkingBudget":128}},"systemInstruction":{"parts":[{"text":"You are a helpful assistant"}],"role":"user"},"toolConfig":{"functionCallingConfig":{"mode":"AUTO"}},"tools":[{"functionDeclarations":[{"description":"Get weather information for a location","name":"weather","parameters":{"properties":{"location":{"description":"the city","type":"STRING"}},"required":["location"],"type":"OBJECT"}}]}]} + {"contents":[{"parts":[{"text":"What's the weather in Florence, Italy?"}],"role":"user"},{"parts":[{"functionCall":{"args":{"location":"Florence, Italy"},"id":"1","name":"weather"},"thoughtSignature":"CiQB0e2Kb8PlQ1xttw+62OLkdtWjI6TWRZh8b9qS/VT05kd8Ha0KZwHR7YpvQf3lmZCOuET4YbFxLuwXLuMu3HZ2jzf18ygViyHTycSgWJpj6wLv7fsIPOgDAClIM50cArZ8SL14unjA0SZr0bC83cRVkr366deJ57t7woE7NbmDRvvC2Ww7Zp4dwBQQM/8KrwEB0e2KbxifnDjOKb7MjLsifVm/yX34wfvONANctV/pHkix8Inu0T4R91HZuuddKV2hA7wsdJc/Z5Lq77aDDMcVCTiXo4+6ua+J7zdMa/CrarF9xmYX60MaQU5/BkoCsGY5YEuyiL3GsnRqI/YZYUZjVihthA+pm2scVOAKSL9JvDvccxrLMhgbAVe3J/vXtzqrwKKnOMSDmY6N5l2hg0yPPTBR+GW2/kK8KvOo5xzK"}],"role":"model"},{"parts":[{"functionResponse":{"id":"1","name":"weather","response":{"result":"40 C"}}}],"role":"user"}],"generationConfig":{"thinkingConfig":{"includeThoughts":true,"thinkingBudget":128}},"systemInstruction":{"parts":[{"text":"You are a helpful assistant"}],"role":"user"},"toolConfig":{"functionCallingConfig":{"mode":"AUTO"}},"tools":[{"functionDeclarations":[{"description":"Get weather information for a location","name":"weather","parameters":{"properties":{"location":{"description":"the city","type":"STRING"}},"required":["location"],"type":"OBJECT"}}]}]} form: alt: - sse @@ -48,7 +48,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:streamGenerateContent?alt=sse method: POST response: @@ -56,10 +56,10 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"The\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 133,\"candidatesTokenCount\": 1,\"totalTokenCount\": 134,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 133}]},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"kdn5aJTAOb6V28oP0uCC8QI\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \" weather in Florence, Italy is 40 C.\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 133,\"candidatesTokenCount\": 12,\"totalTokenCount\": 145,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 133}]},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"kdn5aJTAOb6V28oP0uCC8QI\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"The weather in Florence\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 132,\"candidatesTokenCount\": 4,\"totalTokenCount\": 136,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 132}]},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"VggJad_YM__Uz7IPzNqI8AY\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \", Italy is 40 C.\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 132,\"candidatesTokenCount\": 12,\"totalTokenCount\": 144,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 132}]},\"modelVersion\": \"gemini-2.5-flash\",\"responseId\": \"VggJad_YM__Uz7IPzNqI8AY\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 715.224792ms + duration: 830.511167ms diff --git a/providertests/testdata/TestGoogleThinking/gemini-2.5-flash/thinking.yaml b/providertests/testdata/TestGoogleThinking/gemini-2.5-flash/thinking.yaml index 8df862f1e07a7e065f4d5a240727e085d8cd8bd0..f48d1dc16c9a99ab3f1aef9b34c09cb7086aea7c 100644 --- a/providertests/testdata/TestGoogleThinking/gemini-2.5-flash/thinking.yaml +++ b/providertests/testdata/TestGoogleThinking/gemini-2.5-flash/thinking.yaml @@ -14,7 +14,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent method: POST response: @@ -30,7 +30,7 @@ interactions: "content": { "parts": [ { - "text": "**Analyzing the Request: Weather in Florence**\n\nOkay, so the user wants the weather forecast for Florence, Italy. That's straightforward enough. The \"weather\" tool is the obvious choice here – it's designed specifically for this kind of query. Now, I just need to figure out the right way to use the tool. It looks like it needs a \"location\" argument, which makes perfect sense. And since the user explicitly mentioned \"Florence, Italy,\" that's the location I should provide. So, to get the information, I'll call the \"weather\" tool and pass in `location='Florence, Italy'`. Should be a quick and easy retrieval!\n", + "text": "**Processing a Weather Inquiry**\n\nOkay, so someone's asking for the weather. Specifically, they want to know the conditions in \"Florence, Italy\". Right, I get it. The `weather` tool is the perfect resource for this. I need to make sure I supply it with the correct `location` parameter. Let me see, that's straightforward enough: \"Florence, Italy\" needs to be passed directly to the `weather` tool as the `location`. That should be all it takes to get them the weather information they're looking for. Easy peasy.\n", "thought": true }, { @@ -40,7 +40,7 @@ interactions: "location": "Florence, Italy" } }, - "thoughtSignature": "CqcCAdHtim+w7Zjxo3b6l9LJXbVvkFXVwAc85VHZldttwHx3G4FKSfN61k8WbpQjZArax2N/4C5HtNmYKM7mkzpmqxmR8wiJ9+o5QuG+L6EB6/gs3p0cnJR0tYrt0e/N6uvVasA8wF0DK1GehZ4WPRR6XbQ1fx66s1t2Pi4y0ri70XEa6QgE+TxaGDVg6KOm73GCVVp2IifpSorSF0hmgLboLqPHL5IVgWXbGnr9+0t25KqY04v01BAK04QY3Lmdr4Xr+jxjoCBeCSL7xS/K8zPTl94QtwdWiNqsqK/X5IcGDcz7rlLOLkv76IurHs9+JfPtAcGjZgWO5ZyW5Mf31O8cW4O/9QDYwRTSuBfmY3/dPjUj0Ijk2tHVJkqmmCZ5xe2M7UOWxdV2Kg==" + "thoughtSignature": "CvYBAdHtim+r4pwvSzMD/Aa47oeAg6vLs//D5qB7buLxjadu+G2D8/R0OG5BbKoIl9STM65l/6ETZA5NxOxaKyEQmKQK9Wg319kKYLoWyA0vVr2lOa+yEDCNHam2FzEUpS/+5xL/AcTIuk7LGTdGdzf306tz8cOGvt5grdEIzl3G5xAaT/YIp/0mboeKkLS5gMRFibvX+q7/QuI49iNfzO6UPD3O4il9yeue8JsN1zjuVP7O0qbThAiMKQaFBJ/7XzRTwPY6mlKCaYS/SWB3vo3Vd/5eeUOZj1WQymKNt9WQHeGjOChZEBRdoyUTsIJNULD3rwuDgim+" } ], "role": "model" @@ -53,24 +53,24 @@ interactions: "usageMetadata": { "promptTokenCount": 54, "candidatesTokenCount": 15, - "totalTokenCount": 131, + "totalTokenCount": 120, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 54 } ], - "thoughtsTokenCount": 62 + "thoughtsTokenCount": 51 }, "modelVersion": "gemini-2.5-flash", - "responseId": "jtn5aJa6OuayvdIPornA0Q4" + "responseId": "UwgJaZTvAoidz7IPpOCG6QY" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 2.3995905s + duration: 2.398826334s - id: 1 request: proto: HTTP/1.1 @@ -84,7 +84,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent method: POST response: @@ -100,7 +100,7 @@ interactions: "content": { "parts": [ { - "text": "The weather in Florence, Italy is 40 degrees Celsius." + "text": "The weather in Florence, Italy is 40 C." } ], "role": "model" @@ -111,8 +111,8 @@ interactions: ], "usageMetadata": { "promptTokenCount": 84, - "candidatesTokenCount": 13, - "totalTokenCount": 97, + "candidatesTokenCount": 12, + "totalTokenCount": 96, "promptTokensDetails": [ { "modality": "TEXT", @@ -121,11 +121,11 @@ interactions: ] }, "modelVersion": "gemini-2.5-flash", - "responseId": "j9n5aPLXJ5uP28oPi-aP0QE" + "responseId": "UwgJaYDyOaThz7IP97CwgAc" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 506.190917ms + duration: 952.694ms diff --git a/providertests/testdata/TestGoogleThinking/gemini-2.5-pro/thinking-streaming.yaml b/providertests/testdata/TestGoogleThinking/gemini-2.5-pro/thinking-streaming.yaml index 8b922a35b402caf8f33dc01ccbaec5cfbc847a2b..8132c3c17a78e9885c89830aaf48d068df7ddb8c 100644 --- a/providertests/testdata/TestGoogleThinking/gemini-2.5-pro/thinking-streaming.yaml +++ b/providertests/testdata/TestGoogleThinking/gemini-2.5-pro/thinking-streaming.yaml @@ -17,7 +17,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:streamGenerateContent?alt=sse method: POST response: @@ -25,13 +25,13 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"**Identifying Location Details**\\n\\nI've homed in on the user's request. It's a clear weather query targeting \\\"Florence, Italy\\\". The `weather.get_weather` function looks like the right tool, readily accepting a `location` parameter.\\n\\n\\n\",\"thought\": true}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 54,\"totalTokenCount\": 121,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 54}],\"thoughtsTokenCount\": 67},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"3tn5aKLZDtWq28oPr-2tqQ0\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"functionCall\": {\"name\": \"weather\",\"args\": {\"location\": \"Florence, Italy\"}},\"thoughtSignature\": \"CiIB0e2Kb1FLqBI/wxGNT0RKCf68VTc3ZwRnJ8Uh74FlZRASCmcB0e2Kb2SLzqSsLuj9ZxB7klrblvPhd9xN2XCswmvhOYfh0inSyhO6jRCJ+FMbyNS/3GAStARhxhHE3MVqA6apDOui0uUpUXBSiWugKid3MMigbb3w5Atxi46VRyxI/SH5bqxzpxL6CocBAdHtim/5hLaIc7hPhvoJrnfaFJIPt1o4aDhQU0Tr1pokGWe4h/iYQPNg8PYAPLDIttANib1/Lw9qChOxCAFm/JmppKB/z4gm/lIXqN/aebKziVWyYic6NLShEApycsTzFGw0yJel33OJJla3Mm7G6znOsR0Xc3w49PsX3oyjzW7GzgmJE0IwCnAB0e2Kbz+1WoP+7u1l+n7kwIXVvczL1b0MgaacTwapFVCR/ykH8xnY6NCkElpVBhwPdR/6si/YEy66Cej3SG3mXLeRo5VVYLkipwPkqV4trldlzK0E6oPHCf7nT9dYFjqWFdidrYWAGUXQxSlt+EtI\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0,\"finishMessage\": \"Model generated function call(s).\"}],\"usageMetadata\": {\"promptTokenCount\": 54,\"candidatesTokenCount\": 14,\"totalTokenCount\": 135,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 54}],\"thoughtsTokenCount\": 67},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"3tn5aKLZDtWq28oPr-2tqQ0\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"**Determining Weather Location**\\n\\nI've homed in on the user's request. It's a clear weather query targeting \\\"Florence, Italy.\\\" This directly triggers the `weather.get_weather` function. The key is the `location` parameter, which is easily set to \\\"Florence, Italy\\\".\\n\\n\\n\",\"thought\": true}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 54,\"totalTokenCount\": 121,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 54}],\"thoughtsTokenCount\": 67},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"hAkJaeFW9IfPsg_C9c2ACw\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"functionCall\": {\"name\": \"weather\",\"args\": {\"location\": \"Florence, Italy\"}},\"thoughtSignature\": \"CiIB0e2KbyCfx1Z1RKkF6sHVGHTNjP3RfJVvbB2c3VXwURzoCmcB0e2Kby2As26sswW6FC3Viyj7C4KCMGBg0CzeZ1exOmHoBI+beWVEQkkJjaWIt+tahvCbytKtiCVbpMiJ1ahWtYv3H7UEahkL4PAJB51RVdijk5/p5wQzrivdSZNfJlPNVha/wuXpCocBAdHtim883J+t+t3gG4ZOoZFXa1/m37O2QO0ZCVjKsZjwrjFopVJ7pDBX5NlY0c8dBtV7d03eyYr1B4mrQX7Mzn69/qZdzXwl0TyD50iYlY/7gnkz5UvVpViDaP6/iolbtHL26EjN57L81KT97tdda/SwEqwVJuN38QQOHXC2Ku6u2TFpZUd2CnAB0e2Kb5HwqXMp8QpDRCrUG60zY5e8lY1jQWgHZjfXe0k6uZ+VZIMm3oZFG/PyhwRYm4vPNqWwurROkBxPwqrLGmoEb6fYn6Cs+5zKhHoiRdis4hyeqDc9pCUmruG7ts3D5CYlgJI7Z1/Wa+zI8act\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0,\"finishMessage\": \"Model generated function call(s).\"}],\"usageMetadata\": {\"promptTokenCount\": 54,\"candidatesTokenCount\": 14,\"totalTokenCount\": 135,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 54}],\"thoughtsTokenCount\": 67},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"hAkJaeFW9IfPsg_C9c2ACw\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 2.969825209s + duration: 5.630713958s - id: 1 request: proto: HTTP/1.1 @@ -40,7 +40,7 @@ interactions: content_length: 1310 host: generativelanguage.googleapis.com body: | - {"contents":[{"parts":[{"text":"What's the weather in Florence, Italy?"}],"role":"user"},{"parts":[{"functionCall":{"args":{"location":"Florence, Italy"},"id":"1","name":"weather"},"thoughtSignature":"CiIB0e2Kb1FLqBI/wxGNT0RKCf68VTc3ZwRnJ8Uh74FlZRASCmcB0e2Kb2SLzqSsLuj9ZxB7klrblvPhd9xN2XCswmvhOYfh0inSyhO6jRCJ+FMbyNS/3GAStARhxhHE3MVqA6apDOui0uUpUXBSiWugKid3MMigbb3w5Atxi46VRyxI/SH5bqxzpxL6CocBAdHtim/5hLaIc7hPhvoJrnfaFJIPt1o4aDhQU0Tr1pokGWe4h/iYQPNg8PYAPLDIttANib1/Lw9qChOxCAFm/JmppKB/z4gm/lIXqN/aebKziVWyYic6NLShEApycsTzFGw0yJel33OJJla3Mm7G6znOsR0Xc3w49PsX3oyjzW7GzgmJE0IwCnAB0e2Kbz+1WoP+7u1l+n7kwIXVvczL1b0MgaacTwapFVCR/ykH8xnY6NCkElpVBhwPdR/6si/YEy66Cej3SG3mXLeRo5VVYLkipwPkqV4trldlzK0E6oPHCf7nT9dYFjqWFdidrYWAGUXQxSlt+EtI"}],"role":"model"},{"parts":[{"functionResponse":{"id":"1","name":"weather","response":{"result":"40 C"}}}],"role":"user"}],"generationConfig":{"thinkingConfig":{"includeThoughts":true,"thinkingBudget":128}},"systemInstruction":{"parts":[{"text":"You are a helpful assistant"}],"role":"user"},"toolConfig":{"functionCallingConfig":{"mode":"AUTO"}},"tools":[{"functionDeclarations":[{"description":"Get weather information for a location","name":"weather","parameters":{"properties":{"location":{"description":"the city","type":"STRING"}},"required":["location"],"type":"OBJECT"}}]}]} + {"contents":[{"parts":[{"text":"What's the weather in Florence, Italy?"}],"role":"user"},{"parts":[{"functionCall":{"args":{"location":"Florence, Italy"},"id":"1","name":"weather"},"thoughtSignature":"CiIB0e2KbyCfx1Z1RKkF6sHVGHTNjP3RfJVvbB2c3VXwURzoCmcB0e2Kby2As26sswW6FC3Viyj7C4KCMGBg0CzeZ1exOmHoBI+beWVEQkkJjaWIt+tahvCbytKtiCVbpMiJ1ahWtYv3H7UEahkL4PAJB51RVdijk5/p5wQzrivdSZNfJlPNVha/wuXpCocBAdHtim883J+t+t3gG4ZOoZFXa1/m37O2QO0ZCVjKsZjwrjFopVJ7pDBX5NlY0c8dBtV7d03eyYr1B4mrQX7Mzn69/qZdzXwl0TyD50iYlY/7gnkz5UvVpViDaP6/iolbtHL26EjN57L81KT97tdda/SwEqwVJuN38QQOHXC2Ku6u2TFpZUd2CnAB0e2Kb5HwqXMp8QpDRCrUG60zY5e8lY1jQWgHZjfXe0k6uZ+VZIMm3oZFG/PyhwRYm4vPNqWwurROkBxPwqrLGmoEb6fYn6Cs+5zKhHoiRdis4hyeqDc9pCUmruG7ts3D5CYlgJI7Z1/Wa+zI8act"}],"role":"model"},{"parts":[{"functionResponse":{"id":"1","name":"weather","response":{"result":"40 C"}}}],"role":"user"}],"generationConfig":{"thinkingConfig":{"includeThoughts":true,"thinkingBudget":128}},"systemInstruction":{"parts":[{"text":"You are a helpful assistant"}],"role":"user"},"toolConfig":{"functionCallingConfig":{"mode":"AUTO"}},"tools":[{"functionDeclarations":[{"description":"Get weather information for a location","name":"weather","parameters":{"properties":{"location":{"description":"the city","type":"STRING"}},"required":["location"],"type":"OBJECT"}}]}]} form: alt: - sse @@ -48,7 +48,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:streamGenerateContent?alt=sse method: POST response: @@ -56,10 +56,10 @@ interactions: proto_major: 2 proto_minor: 0 content_length: -1 - body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"It\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 149,\"candidatesTokenCount\": 1,\"totalTokenCount\": 150,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 149}]},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"4Nn5aLX8I73WvdIPsMqa4QM\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"'s 40 C in Florence, Italy. \\n\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 149,\"candidatesTokenCount\": 12,\"totalTokenCount\": 161,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 149}]},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"4Nn5aLX8I73WvdIPsMqa4QM\"}\r\n\r\n" + body: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"The weather in Florence\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 149,\"candidatesTokenCount\": 4,\"totalTokenCount\": 153,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 149}]},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"hwkJaZnjD6GsmtkPo_HziAg\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \", Italy is 40 degrees Celsius.\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 149,\"candidatesTokenCount\": 13,\"totalTokenCount\": 162,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 149}]},\"modelVersion\": \"gemini-2.5-pro\",\"responseId\": \"hwkJaZnjD6GsmtkPo_HziAg\"}\r\n\r\n" headers: Content-Type: - text/event-stream status: 200 OK code: 200 - duration: 1.020048125s + duration: 1.976438916s diff --git a/providertests/testdata/TestGoogleThinking/gemini-2.5-pro/thinking.yaml b/providertests/testdata/TestGoogleThinking/gemini-2.5-pro/thinking.yaml index cc19b897e59ab591c6f8bf0102e95a50f4fb3fed..93242cca0cdb27ff16348419fffec589ad227668 100644 --- a/providertests/testdata/TestGoogleThinking/gemini-2.5-pro/thinking.yaml +++ b/providertests/testdata/TestGoogleThinking/gemini-2.5-pro/thinking.yaml @@ -14,7 +14,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent method: POST response: @@ -30,7 +30,7 @@ interactions: "content": { "parts": [ { - "text": "**Getting the Weather in Florence**\n\nOkay, so I'm thinking about the weather, specifically in Florence, Italy. That immediately clicks - I know I've got a function, `weather.get_weather`, that's designed for exactly this kind of query. It takes a `location` parameter, which is perfect. Therefore, I'll set that `location` parameter to \"Florence, Italy\", and that should be all I need to get the forecast.\n", + "text": "**Thinking about Weather in Florence**\n\nOkay, so I'm trying to figure out the weather in Florence, Italy. That immediately makes me think of my `weather.get_weather` function. It's the perfect tool for this task. I know it's designed to give me the current conditions, and that's precisely what I'm after. Now, the `get_weather` function, like any good API call, needs specific parameters to work. In this case, I need to provide it with a `location`. Luckily, the user has given me exactly what I need: \"Florence, Italy\". That's perfect. Time to feed that into the function and get some weather data!\n", "thought": true }, { @@ -40,7 +40,7 @@ interactions: "location": "Florence, Italy" } }, - "thoughtSignature": "Cp4CAdHtim8JgCsNhv84SCzZ8bo/kRaAn5bY0cEQ0mfo7nl3GCS7sRlN2T7G4P/Epnwc7/9wbdFzcvcdaqNgWk1flXACXm4QluykEizpys7U+TyP8I2vaUUDIl4Tii0yBZNwjaJxmYp0yb5E9LjpsuEFolG0Ao2vqoJar/0XgY5bzViogURnnUHqVzP2euy5PJEdAd+rOqz1hnK4lCumsNfF5vrkx8aeyGL99C1Eu1/ZETTU7TSnVht+z+4qlysMOlhx4ko0anJ5MWzjewwrZBFkMPgzzw0zVmsHZg9d4t0Hnhmk6Ft7Ge6JOhvI54NgL8MkiviZNvIYT6iHNRqSd71uYeCdCdiw9UJCwASXvbRIv/ktz6OZKrlGld61RP1BXw==" + "thoughtSignature": "CpUCAdHtim9UGVogupwPjEF0fV0+J6hlvZgmWKm2F8vODxdWDQn0sHeqH52T3A7eVFc3qq1mgbgKexwBwUY+LaJS6qmkEp/BQp+YhKn+KkADS5m9uSkVYtQHrSpr6w1PXOeZHKL9S4fda1Tw3wp486PgTNd0UI4P0XI0aJOWzT6QY4Zq54e7xt2Ju7+hocGRFBPS9nZbMajRNZW5rgelw9MWeLAed0Kl+7gxL931NKSOf7pN2VJR8QYo8V5bSy7NKSE12qFRb0HeHJW62RSO9CVDzjljtN8mFMgEdmAJOYZ902x19NzAZRTLs+/shIW1llcXc2kEllhblFKzRoKpFRI65l4iLIjS6HhG5zyqthmp9c6girWfRQ==" } ], "role": "model" @@ -53,24 +53,24 @@ interactions: "usageMetadata": { "promptTokenCount": 54, "candidatesTokenCount": 15, - "totalTokenCount": 135, + "totalTokenCount": 133, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 54 } ], - "thoughtsTokenCount": 66 + "thoughtsTokenCount": 64 }, "modelVersion": "gemini-2.5-pro", - "responseId": "29n5aPKhFJrivdIPhYnAuQE" + "responseId": "WggJafeCDKugz7IPnKO9kQk" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 3.824523542s + duration: 3.181730208s - id: 1 request: proto: HTTP/1.1 @@ -84,7 +84,7 @@ interactions: Content-Type: - application/json User-Agent: - - google-genai-sdk/1.29.0 gl-go/go1.25.1 + - google-genai-sdk/1.33.0 gl-go/go1.25.0 url: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent method: POST response: @@ -121,11 +121,11 @@ interactions: ] }, "modelVersion": "gemini-2.5-pro", - "responseId": "3Nn5aMLPIMahxN8P5c69gQc" + "responseId": "XAgJafLaKoiFz7IPguH2iA4" } headers: Content-Type: - application/json; charset=UTF-8 status: 200 OK code: 200 - duration: 1.228113333s + duration: 2.508655625s