diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index e37caf57b..040420154 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -64,6 +64,7 @@ jobs: GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }} ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} run: | + set -o pipefail go test -timeout=20m -race -v -json -coverprofile=coverage-${{ steps.go-version.outputs.version }}.out ./... | tee test-results-${{ steps.go-version.outputs.version }}.ndjson - name: Upload test results uses: actions/upload-artifact@v4 @@ -80,7 +81,6 @@ jobs: runs-on: ubuntu-latest permissions: contents: read - pull-requests: write steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 diff --git a/.github/workflows/examples.yaml b/.github/workflows/examples.yaml index a19578844..800a6b5d3 100644 --- a/.github/workflows/examples.yaml +++ b/.github/workflows/examples.yaml @@ -44,5 +44,4 @@ jobs: run: | cd examples/${{ matrix.example }} echo "Building ${{ matrix.example }}" - go mod tidy - go build -o /dev/null . \ No newline at end of file + go build -mod=readonly -o /dev/null . \ No newline at end of file diff --git a/.github/workflows/publish-docs.yaml b/.github/workflows/publish-docs.yaml index b0d08a803..4cb4c2e05 100644 --- a/.github/workflows/publish-docs.yaml +++ b/.github/workflows/publish-docs.yaml @@ -13,7 +13,6 @@ permissions: contents: read pages: write id-token: write - pull-requests: write # Allow only one concurrent deployment concurrency: @@ -74,19 +73,3 @@ jobs: artifact_name: github-pages preview: ${{ github.ref != 'refs/heads/main-vxcontrol' }} - - name: Comment PR - if: | - github.event_name == 'pull_request' && - (github.ref == 'refs/heads/docs-test' || - startsWith(github.ref, 'refs/heads/docs/')) - uses: actions/github-script@v7 - with: - script: | - const url = '${{ steps.deployment.outputs.page_url }}'; - const message = `📚 Documentation preview available at: ${url}`; - github.rest.issues.createComment({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - body: message - }); diff --git a/.golangci.yaml b/.golangci.yaml index a047d5134..11dd65de9 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -36,14 +36,6 @@ linters: gosec: excludes: - G115 - # G703/G704: gosec's taint-analysis engine flags any function parameter - # of a matching type (e.g. a file path or URL string) as tainted based - # solely on its type, not on whether it actually originates from - # untrusted input. This produces widespread false positives in library - # code where callers pass in paths/URLs directly (see - # https://github.com/securego/gosec/issues/1500). - - G703 - - G704 exhaustive: default-signifies-exhaustive: true exclusions: @@ -53,6 +45,24 @@ linters: - common-false-positives - legacy - std-error-handling + rules: + # The stub is a proxy: forwarding the request it received is its purpose. + - path: httputil/transport_test\.go + linters: + - gosec + text: G704 + # url.Parse taints the helper, but what reaches os.Open is the name + # os.CreateTemp chose, which the URL cannot influence. + - path: documentloaders/whisper\.go + linters: + - gosec + text: G703 + # Fetching the endpoint its caller configured is what this client does; + # a url.URL parameter is a taint source by declaration. + - path: vectorstores/qdrant/rest\.go + linters: + - gosec + text: G704 paths: - internal - vectorstores/bedrockknowledgebases diff --git a/Makefile b/Makefile index f5538c0e1..9c1a6e444 100644 --- a/Makefile +++ b/Makefile @@ -108,7 +108,7 @@ clean-lint-cache: .PHONY: build-examples build-examples: for example in $(shell find ./examples -mindepth 1 -maxdepth 1 -type d); do \ - (cd $$example; echo Build $$example; go mod tidy; go build -o /dev/null) || exit 1; done + (cd $$example; echo Build $$example; go build -mod=readonly -o /dev/null) || exit 1; done .PHONY: update-examples update-examples: diff --git a/agents/conversational_test.go b/agents/conversational_test.go index b2f138e1f..f9110f5b6 100644 --- a/agents/conversational_test.go +++ b/agents/conversational_test.go @@ -2,10 +2,7 @@ package agents import ( "context" - "os" - "path/filepath" "regexp" - "strings" "testing" "github.com/vxcontrol/langchaingo/chains" @@ -18,24 +15,13 @@ import ( "github.com/stretchr/testify/require" ) -// hasExistingRecording checks if a httprr recording exists for this test -func hasExistingRecording(t *testing.T) bool { - testName := strings.ReplaceAll(t.Name(), "/", "_") - testName = strings.ReplaceAll(testName, " ", "_") - recordingPath := filepath.Join("testdata", testName+".httprr") - _, err := os.Stat(recordingPath) - return err == nil -} - func TestConversationalWithMemory(t *testing.T) { - t.Parallel() - - // Skip if no recording available and no credentials - if !hasExistingRecording(t) { - t.Skip("No httprr recording available. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") rr := httprr.OpenForTest(t, httputil.DefaultTransport) + if !rr.Recording() { + t.Parallel() + } // Configure OpenAI client with httprr opts := []openai.Option{ openai.WithModel("gpt-4o"), @@ -58,22 +44,10 @@ func TestConversationalWithMemory(t *testing.T) { ctx := context.Background() _, err = chains.Run(ctx, executor, "Hi! my name is Bob and the year I was born is 1987") - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) res, err := chains.Run(t.Context(), executor, "What is the year I was born times 34") - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) expectedRe := "67,?558" if !regexp.MustCompile(expectedRe).MatchString(res) { t.Errorf("result does not contain the crrect answer '67558', got: %s", res) diff --git a/agents/executor_test.go b/agents/executor_test.go index 6983407a5..58766a076 100644 --- a/agents/executor_test.go +++ b/agents/executor_test.go @@ -79,15 +79,14 @@ func TestExecutorWithErrorHandler(t *testing.T) { } func TestExecutorWithMRKLAgent(t *testing.T) { - t.Parallel() ctx := t.Context() - // Skip if no recording available and no credentials - if !hasExistingRecording(t) { - t.Skip("No httprr recording available. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") rr := httprr.OpenForTest(t, http.DefaultTransport) + if !rr.Recording() { + t.Parallel() + } // Configure OpenAI client with httprr opts := []openai.Option{ @@ -118,13 +117,7 @@ func TestExecutorWithMRKLAgent(t *testing.T) { require.NoError(t, err) result, err := chains.Run(ctx, a, "What is 5 plus 3? Please calculate this.") //nolint:lll - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) t.Logf("MRKL Agent response: %s", result) // Simple calculation: 5 + 3 = 8 @@ -132,15 +125,14 @@ func TestExecutorWithMRKLAgent(t *testing.T) { } func TestExecutorWithOpenAIFunctionAgent(t *testing.T) { - t.Parallel() ctx := t.Context() - // Skip if no recording available and no credentials - if !hasExistingRecording(t) { - t.Skip("No httprr recording available. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") rr := httprr.OpenForTest(t, http.DefaultTransport) + if !rr.Recording() { + t.Parallel() + } // Configure OpenAI client with httprr opts := []openai.Option{ @@ -178,13 +170,7 @@ func TestExecutorWithOpenAIFunctionAgent(t *testing.T) { require.NoError(t, err) result, err := chains.Run(ctx, e, "when was the Go programming language tagged version 1.0?") //nolint:lll - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) t.Logf("Result: %s", result) diff --git a/agents/openai_functions_agent_test.go b/agents/openai_functions_agent_test.go index 8ae6ed71f..623a50953 100644 --- a/agents/openai_functions_agent_test.go +++ b/agents/openai_functions_agent_test.go @@ -2,8 +2,6 @@ package agents_test import ( "net/http" - "os" - "path/filepath" "strings" "testing" @@ -18,25 +16,15 @@ import ( "github.com/stretchr/testify/require" ) -// hasExistingRecording checks if a httprr recording exists for this test -func hasExistingRecording(t *testing.T) bool { - testName := strings.ReplaceAll(t.Name(), "/", "_") - testName = strings.ReplaceAll(testName, " ", "_") - recordingPath := filepath.Join("testdata", testName+".httprr") - _, err := os.Stat(recordingPath) - return err == nil -} - func TestOpenAIFunctionsAgentWithHTTPRR(t *testing.T) { - t.Parallel() ctx := t.Context() - // Skip if no recording available and no credentials - if !hasExistingRecording(t) { - t.Skip("No httprr recording available. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") rr := httprr.OpenForTest(t, http.DefaultTransport) + if !rr.Recording() { + t.Parallel() + } // Configure OpenAI client with httprr opts := []openai.Option{ @@ -68,10 +56,6 @@ func TestOpenAIFunctionsAgentWithHTTPRR(t *testing.T) { // Run a simple calculation result, err := chains.Run(ctx, executor, "What is 15 multiplied by 4?") if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } t.Fatal(err) } @@ -84,15 +68,14 @@ func TestOpenAIFunctionsAgentWithHTTPRR(t *testing.T) { } func TestOpenAIFunctionsAgentComplexCalculation(t *testing.T) { - t.Parallel() ctx := t.Context() - // Skip if no recording available and no credentials - if !hasExistingRecording(t) { - t.Skip("No httprr recording available. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") rr := httprr.OpenForTest(t, http.DefaultTransport) + if !rr.Recording() { + t.Parallel() + } // Configure OpenAI client with httprr opts := []openai.Option{ @@ -128,10 +111,6 @@ func TestOpenAIFunctionsAgentComplexCalculation(t *testing.T) { // Run a more complex calculation result, err := chains.Run(ctx, executor, "If I have 3 groups of 7 items, and I add 9 more items, how many items do I have in total?") if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } t.Fatalf("failed to run agent: %v", err) } t.Logf("Agent response: %s", result) diff --git a/agents/testdata/TestConversationalWithMemory.httprr b/agents/testdata/TestConversationalWithMemory.httprr index 755a75073..da70fd7a9 100644 --- a/agents/testdata/TestConversationalWithMemory.httprr +++ b/agents/testdata/TestConversationalWithMemory.httprr @@ -1,5 +1,5 @@ httprr trace v1 -2253 1791 +2253 1775 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 11:34:14 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 1036 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -67,7 +67,7 @@ X-Request-Id: req_d26779296341482991e77f86e14a3ecd "service_tier": "default", "system_fingerprint": "fp_deacdd5f6f" } -2459 1674 +2459 1658 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -84,7 +84,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 11:34:16 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 481 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -135,7 +135,7 @@ X-Request-Id: req_c25a675b6c844e45abcc89b4d11cadb5 "service_tier": "default", "system_fingerprint": "fp_deacdd5f6f" } -2562 1706 +2562 1690 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -152,7 +152,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 11:34:18 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 735 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/agents/testdata/TestExecutorWithMRKLAgent.httprr b/agents/testdata/TestExecutorWithMRKLAgent.httprr index 4459080ca..4962c1ccc 100644 --- a/agents/testdata/TestExecutorWithMRKLAgent.httprr +++ b/agents/testdata/TestExecutorWithMRKLAgent.httprr @@ -1,5 +1,5 @@ httprr trace v1 -1276 1722 +1276 1706 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 11:36:31 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 1349 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -67,7 +67,7 @@ X-Request-Id: req_af502bd24da948b99ae29d0f6d6eaf1d "service_tier": "default", "system_fingerprint": null } -1435 1634 +1435 1618 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -84,7 +84,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 11:36:33 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 747 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/agents/testdata/TestExecutorWithOpenAIFunctionAgent.httprr b/agents/testdata/TestExecutorWithOpenAIFunctionAgent.httprr index eee7b2f02..2a9792cb0 100644 --- a/agents/testdata/TestExecutorWithOpenAIFunctionAgent.httprr +++ b/agents/testdata/TestExecutorWithOpenAIFunctionAgent.httprr @@ -1,5 +1,5 @@ httprr trace v1 -1176 1913 +1176 1897 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 11:36:31 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 1138 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -453,7 +453,7 @@ X-Xss-Protection: 1; mode=block "10": "https://serpapi.com/search.json?device=desktop&engine=google&gl=us&google_domain=google.com&hl=en&q=Go+programming+language+version+1.0+release+date&start=90" } } -}1619 1647 +}1619 1631 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -470,7 +470,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 11:36:36 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 759 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/agents/testdata/TestOpenAIFunctionsAgentComplexCalculation.httprr b/agents/testdata/TestOpenAIFunctionsAgentComplexCalculation.httprr index 0ea2b4cb2..e63b6117d 100644 --- a/agents/testdata/TestOpenAIFunctionsAgentComplexCalculation.httprr +++ b/agents/testdata/TestOpenAIFunctionsAgentComplexCalculation.httprr @@ -1,5 +1,5 @@ httprr trace v1 -839 2073 +839 2057 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 11:36:32 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 2110 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/agents/testdata/TestOpenAIFunctionsAgentWithHTTPRR.httprr b/agents/testdata/TestOpenAIFunctionsAgentWithHTTPRR.httprr index 4ae798ef2..218be60e8 100644 --- a/agents/testdata/TestOpenAIFunctionsAgentWithHTTPRR.httprr +++ b/agents/testdata/TestOpenAIFunctionsAgentWithHTTPRR.httprr @@ -1,5 +1,5 @@ httprr trace v1 -738 1879 +738 1863 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 11:36:30 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 608 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -77,7 +77,7 @@ X-Request-Id: req_176d0b02c64e43499a56aedc6739ba74 "service_tier": "default", "system_fingerprint": "fp_deacdd5f6f" } -996 1625 +996 1609 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -94,7 +94,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 11:36:32 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 365 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/chains/api_test.go b/chains/api_test.go index dae3a05b8..6e667a397 100644 --- a/chains/api_test.go +++ b/chains/api_test.go @@ -44,8 +44,6 @@ freezinglevel_height Instant meters Altitude above sea level of the 0°C level visibility Instant meters Viewing distance in meters. Influenced by low clouds, humidity and aerosols. Maximum visibility is approximately 24 km.` func TestAPI(t *testing.T) { - t.Skip("Temporarily skipping due to httprr format issue") - t.Parallel() ctx := t.Context() httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") @@ -60,6 +58,7 @@ func TestAPI(t *testing.T) { } opts := []openai.Option{ + openai.WithModel("gpt-4.1-nano"), openai.WithHTTPClient(rr.Client()), } if rr.Replaying() { diff --git a/chains/constitution/constitutional_test.go b/chains/constitution/constitutional_test.go index b1472855d..2c7dcc11a 100644 --- a/chains/constitution/constitutional_test.go +++ b/chains/constitution/constitutional_test.go @@ -3,8 +3,6 @@ package constitution import ( "fmt" "net/http" - "os" - "path/filepath" "strings" "testing" @@ -16,15 +14,6 @@ import ( "github.com/stretchr/testify/require" ) -// hasExistingRecording checks if a httprr recording exists for this test -func hasExistingRecording(t *testing.T) bool { - testName := strings.ReplaceAll(t.Name(), "/", "_") - testName = strings.ReplaceAll(testName, " ", "_") - recordingPath := filepath.Join("testdata", testName+".httprr") - _, err := os.Stat(recordingPath) - return err == nil -} - func TestConstitutionCritiqueParsing(t *testing.T) { textOne := ` This text is bad. @@ -48,17 +37,15 @@ func TestConstitutionCritiqueParsing(t *testing.T) { } func TestConstitutionalChain(t *testing.T) { - t.Parallel() ctx := t.Context() httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") - // Skip if no recording available and no credentials - if !hasExistingRecording(t) { - t.Skip("No httprr recording available. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - rr := httprr.OpenForTest(t, http.DefaultTransport) + if !rr.Recording() { + t.Parallel() + } opts := []openai.Option{ + openai.WithModel("gpt-4.1-nano"), openai.WithHTTPClient(rr.Client()), } if rr.Replaying() { @@ -86,11 +73,5 @@ func TestConstitutionalChain(t *testing.T) { ), }, nil) _, err = c.Call(ctx, map[string]any{"question": "What is the meaning of life?"}) - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) } diff --git a/chains/constitution/testdata/TestConstitutionalChain.httprr b/chains/constitution/testdata/TestConstitutionalChain.httprr index a2399fc68..c20262df4 100644 --- a/chains/constitution/testdata/TestConstitutionalChain.httprr +++ b/chains/constitution/testdata/TestConstitutionalChain.httprr @@ -1,5 +1,5 @@ httprr trace v1 -279 2266 +279 2250 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:10:20 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 1023 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -67,7 +67,7 @@ X-Request-Id: req_62ebca9f6e0e4e42af0cd60944eba9fe "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -5573 2010 +5573 1994 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -84,7 +84,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:10:23 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 974 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/chains/constitutional_test.go b/chains/constitutional_test.go index 44556c5da..fb7f2d21c 100644 --- a/chains/constitutional_test.go +++ b/chains/constitutional_test.go @@ -48,6 +48,7 @@ func TestConstitutionalChainBasic(t *testing.T) { } opts := []openai.Option{ + openai.WithModel("gpt-4.1-nano"), openai.WithHTTPClient(rr.Client()), } diff --git a/chains/conversation_test.go b/chains/conversation_test.go index dd82094c8..14a3af156 100644 --- a/chains/conversation_test.go +++ b/chains/conversation_test.go @@ -33,6 +33,7 @@ func TestConversation(t *testing.T) { } opts := []openai.Option{ + openai.WithModel("gpt-4.1-nano"), openai.WithHTTPClient(rr.Client()), } @@ -113,6 +114,7 @@ func TestConversationWithChatLLM(t *testing.T) { } opts := []openai.Option{ + openai.WithModel("gpt-4.1-nano"), openai.WithHTTPClient(rr.Client()), } diff --git a/chains/conversational_retrieval_qa_test.go b/chains/conversational_retrieval_qa_test.go index 8534eff01..293f49357 100644 --- a/chains/conversational_retrieval_qa_test.go +++ b/chains/conversational_retrieval_qa_test.go @@ -65,7 +65,13 @@ func createOpenAILLMForConversationalRetrievalQA(t *testing.T) *openai.LLM { httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") rr := httprr.OpenForTest(t, http.DefaultTransport) + if !rr.Recording() { + t.Parallel() + } opts := []openai.Option{ + // gpt-4.1-nano answers the follow-up with "not mentioned": it does not infer + // from the context that Ketanji Brown Jackson succeeds Justice Stephen Breyer. + openai.WithModel("gpt-4.1-mini"), openai.WithHTTPClient(rr.Client()), } if !rr.Recording() { @@ -77,9 +83,6 @@ func createOpenAILLMForConversationalRetrievalQA(t *testing.T) *openai.LLM { } func TestConversationalRetrievalQA(t *testing.T) { - t.Skip("Test currently fails; see #415") - t.Parallel() - ctx := t.Context() llm := createOpenAILLMForConversationalRetrievalQA(t) @@ -104,9 +107,6 @@ func TestConversationalRetrievalQA(t *testing.T) { } func TestConversationalRetrievalQAWithReturnMessages(t *testing.T) { - t.Skip("Test currently fails; see #415") - t.Parallel() - ctx := t.Context() llm := createOpenAILLMForConversationalRetrievalQA(t) @@ -131,9 +131,6 @@ func TestConversationalRetrievalQAWithReturnMessages(t *testing.T) { } func TestConversationalRetrievalQAFromLLM(t *testing.T) { - t.Skip("Test currently fails; see #415") - t.Parallel() - ctx := t.Context() r := testConversationalRetriever{} @@ -150,9 +147,6 @@ func TestConversationalRetrievalQAFromLLM(t *testing.T) { } func TestConversationalRetrievalQAFromLLMWithConversationTokenBuffer(t *testing.T) { - t.Skip("Test currently fails; see #415") - t.Parallel() - ctx := t.Context() r := testConversationalRetriever{} diff --git a/chains/llm_math_test.go b/chains/llm_math_test.go index eaf3e187a..d9b1f26d9 100644 --- a/chains/llm_math_test.go +++ b/chains/llm_math_test.go @@ -22,6 +22,7 @@ func TestLLMMath(t *testing.T) { } opts := []openai.Option{ + openai.WithModel("gpt-4.1-nano"), openai.WithHTTPClient(rr.Client()), } diff --git a/chains/llm_test.go b/chains/llm_test.go index 72d337b82..795c63a32 100644 --- a/chains/llm_test.go +++ b/chains/llm_test.go @@ -1,10 +1,6 @@ package chains import ( - "fmt" - "net/http" - "os" - "path/filepath" "strings" "testing" @@ -18,39 +14,6 @@ import ( "github.com/stretchr/testify/require" ) -type transportWithAPIKey struct { - Key string - Transport http.RoundTripper -} - -func (t *transportWithAPIKey) RoundTrip(req *http.Request) (*http.Response, error) { - rt := t.Transport - if rt == nil { - rt = http.DefaultTransport - if rt == nil { - return nil, fmt.Errorf("no Transport specified or available") - } - } - - newReq := *req - if t.Key != "" { - args := newReq.URL.Query() - args.Set("key", t.Key) - newReq.URL.RawQuery = args.Encode() - } - - return rt.RoundTrip(&newReq) -} - -// hasExistingRecording checks if a httprr recording exists for this test -func hasExistingRecording(t *testing.T) bool { - testName := strings.ReplaceAll(t.Name(), "/", "_") - testName = strings.ReplaceAll(testName, " ", "_") - recordingPath := filepath.Join("testdata", testName+".httprr") - _, err := os.Stat(recordingPath) - return err == nil -} - func TestLLMChain(t *testing.T) { ctx := t.Context() httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") @@ -63,7 +26,7 @@ func TestLLMChain(t *testing.T) { } var opts []openai.Option - opts = append(opts, openai.WithHTTPClient(rr.Client())) + opts = append(opts, openai.WithModel("gpt-4.1-nano"), openai.WithHTTPClient(rr.Client())) // Use test token when replaying if rr.Replaying() { @@ -113,34 +76,19 @@ func TestLLMChainWithGoogleAI(t *testing.T) { ctx := t.Context() httprr.SkipIfNoCredentialsAndRecordingMissing(t, "GOOGLE_API_KEY") - // Skip if no recording available and no credentials - if !hasExistingRecording(t) { - t.Skip("No httprr recording available. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - - // Create httprr with API key transport wrapper - // This is necessary because the Google API library doesn't add the API key - // when a custom HTTP client is provided via WithHTTPClient - transport := &transportWithAPIKey{ - Key: os.Getenv("GOOGLE_API_KEY"), - Transport: httputil.DefaultTransport, - } - rr := httprr.OpenForTest(t, transport) + rr := httprr.OpenForTest(t, httputil.DefaultTransport) defer rr.Close() - - // Scrub API key for security in recordings - rr.ScrubReq(func(req *http.Request) error { - q := req.URL.Query() - if q.Get("key") != "" { - q.Set("key", "test-api-key") - req.URL.RawQuery = q.Encode() - } - return nil - }) + if !rr.Recording() { + t.Parallel() + } // Configure client with httprr var opts []googleai.Option - opts = append(opts, googleai.WithRest(), googleai.WithHTTPClient(rr.Client())) + opts = append(opts, + googleai.WithRest(), + googleai.WithHTTPClient(rr.Client()), + googleai.WithDefaultModel("gemini-2.5-flash"), + ) // Avoid issue with different view of request bodies for Google AI SDK rr.ScrubReq(httprr.JsonCompactScrubBody) @@ -148,8 +96,6 @@ func TestLLMChainWithGoogleAI(t *testing.T) { if rr.Replaying() { // Use test credentials during replay opts = append(opts, googleai.WithAPIKey("test-api-key")) - // It needs to be set here because the client goes through WithHTTPClient - transport.Key = "test-api-key" } model, err := googleai.New(ctx, opts...) @@ -163,20 +109,11 @@ func TestLLMChainWithGoogleAI(t *testing.T) { chain := NewLLMChain(model, prompt) - // chains tramples over defaults for options, so setting these options - // explicitly is required until https://github.com/tmc/langchaingo/issues/626 - // is fully resolved. result, err := Predict(ctx, chain, map[string]any{ "country": "France", }, ) - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) require.True(t, strings.Contains(result, "Paris")) } diff --git a/chains/map_rerank_documents.go b/chains/map_rerank_documents.go index a7be51c05..79c528c41 100644 --- a/chains/map_rerank_documents.go +++ b/chains/map_rerank_documents.go @@ -4,11 +4,13 @@ import ( "context" "fmt" "maps" + "regexp" "sort" "strconv" + "strings" + "github.com/vxcontrol/langchaingo/llms" "github.com/vxcontrol/langchaingo/memory" - "github.com/vxcontrol/langchaingo/outputparser" "github.com/vxcontrol/langchaingo/schema" ) @@ -16,8 +18,12 @@ const ( _mapRerankDocumentsDefaultDocumentTemplate = "{{.page_content}}" _mapRerankDocumentsDefaultRankKey = "score" _mapRerankDocumentsDefaultAnswerKey = "answer" + _mapRerankAnswerLabel = "Helpful Answer:" ) +// _mapRerankScoreRE matches the "Score:" line that ends an answer. +var _mapRerankScoreRE = regexp.MustCompile(`(?m)^[ \t]*Score:[ \t]*(\d*)`) + type MapRerankDocuments struct { // Chain used to rerank the documents. LLMChain *LLMChain @@ -51,8 +57,7 @@ var _ Chain = MapRerankDocuments{} // NewMapRerankDocuments creates a new map rerank documents chain. func NewMapRerankDocuments(mapRerankLLMChain *LLMChain) *MapRerankDocuments { - mapRerankRE := `\s*(?P.*?)\nScore: (?P.*)` - mapRerankLLMChain.OutputParser = outputparser.NewRegexParser(mapRerankRE) + mapRerankLLMChain.OutputParser = mapRerankOutputParser{} return &MapRerankDocuments{ LLMChain: mapRerankLLMChain, @@ -95,25 +100,34 @@ func (c MapRerankDocuments) Call(ctx context.Context, values map[string]any, opt } outputs[i] = c.parseMapResults(rankedAnswer) - } - - sort.Slice(outputs, func(i, j int) bool { - curr, err := strconv.Atoi(outputs[i][c.RankKey].(string)) - if err != nil { - return false - } - - compare, err := strconv.Atoi(outputs[j][c.RankKey].(string)) - if err != nil { - return true + if _, ok := outputs[i][c.RankKey]; !ok { + return nil, fmt.Errorf("%w: the map result has no %q key to rank by", ErrInvalidOutputValues, c.RankKey) } + } - return curr > compare + // A stable sort keeps the document order among equal scores. + sort.SliceStable(outputs, func(i, j int) bool { + return c.score(outputs[i]) > c.score(outputs[j]) }) return c.formatOutputs(outputs), nil } +// score returns the rank of a map result. A result without an integer score, +// or with an empty answer, ranks as 0, the score the prompt asks for when the +// context does not answer the question. +func (c MapRerankDocuments) score(output map[string]any) int { + if answer, ok := output[c.AnswerKey].(string); ok && strings.TrimSpace(answer) == "" { + return 0 + } + s, _ := output[c.RankKey].(string) + score, err := strconv.Atoi(strings.TrimSpace(s)) + if err != nil { + return 0 + } + return score +} + // getInputVariable returns the input variable name to use for the LLM chain. func (c MapRerankDocuments) getInputVariable(givenInputName string, chainInputVariables []string) string { if len(chainInputVariables) == 1 { @@ -203,3 +217,45 @@ func (c MapRerankDocuments) GetOutputKeys() []string { func (c MapRerankDocuments) GetMemory() schema.Memory { //nolint:ireturn return memory.NewSimple() } + +// mapRerankOutputParser parses the answer and the score of one document. An +// output without a "Score:" line, such as a plain "I don't know.", is kept as +// the answer with an empty score, which ranks as 0, so one such document does +// not fail the whole chain. +type mapRerankOutputParser struct{} + +var _ schema.OutputParser[any] = mapRerankOutputParser{} + +// GetFormatInstructions returns instructions on the expected output format. +func (p mapRerankOutputParser) GetFormatInstructions() string { + return "Your output should be an answer followed by a line \"Score: [score between 0 and 100]\"." +} + +// Parse parses the output of an LLM into the answer and the score. The answer +// may span lines and ends at the first "Score:" line; whatever precedes the +// prompt's "Helpful Answer:" label, such as the question the model repeated, +// is not part of it. +func (p mapRerankOutputParser) Parse(text string) (any, error) { + answer, score := text, "" + if match := _mapRerankScoreRE.FindStringSubmatchIndex(text); match != nil { + answer, score = text[:match[0]], text[match[2]:match[3]] + } + if i := strings.LastIndex(answer, _mapRerankAnswerLabel); i >= 0 { + answer = answer[i+len(_mapRerankAnswerLabel):] + } + + return map[string]string{ + _mapRerankDocumentsDefaultAnswerKey: strings.TrimSpace(answer), + _mapRerankDocumentsDefaultRankKey: score, + }, nil +} + +// ParseWithPrompt does the same as Parse. +func (p mapRerankOutputParser) ParseWithPrompt(text string, _ llms.PromptValue) (any, error) { + return p.Parse(text) +} + +// Type returns the type of the parser. +func (p mapRerankOutputParser) Type() string { + return "map_rerank_parser" +} diff --git a/chains/map_rerank_documents_test.go b/chains/map_rerank_documents_test.go index 1782a00b9..29016a673 100644 --- a/chains/map_rerank_documents_test.go +++ b/chains/map_rerank_documents_test.go @@ -1,6 +1,8 @@ package chains import ( + "fmt" + "slices" "testing" "github.com/vxcontrol/langchaingo/prompts" @@ -57,14 +59,139 @@ func TestMapRerankDocumentsCall(t *testing.T) { require.Error(t, err) - // Test that an error is returned if the score cannot be processed. + // Test that scores that cannot be processed rank as 0 and keep the document order. mapRerankDocumentsChain.ReturnIntermediateSteps = false docs = []schema.Document{ {PageContent: "Test Low\nScore:"}, {PageContent: "Test High\nScore:"}, } - _, err = Run(ctx, mapRerankDocumentsChain, docs) + answer, err = Run(ctx, mapRerankDocumentsChain, docs) - require.Error(t, err) + require.NoError(t, err) + require.Equal(t, "Test Low", answer) +} + +func TestMapRerankOutputParser(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + text string + answer string + score string + }{ + {name: "answer and score", text: "Test High\nScore: 100", answer: "Test High", score: "100"}, + {name: "blank line before score", text: "The lion is Leo.\n\nScore: 100", answer: "The lion is Leo.", score: "100"}, + {name: "multiline answer", text: "Leo is a lion.\nHe is brave.\nScore: 90", answer: "Leo is a lion.\nHe is brave.", score: "90"}, + {name: "helpful answer label", text: "Helpful Answer: Leo\nScore: 100", answer: "Leo", score: "100"}, + {name: "repeated question", text: "Question: Who?\nHelpful Answer: Leo\nScore: 100", answer: "Leo", score: "100"}, + {name: "padded score", text: " Leo \nScore: 85 \n", answer: "Leo", score: "85"}, + {name: "carriage return", text: "Leo\r\nScore: 70", answer: "Leo", score: "70"}, + {name: "further example", text: "Leo\nScore: 100\nQuestion: Why?\nHelpful Answer: No\nScore: 0", answer: "Leo", score: "100"}, + {name: "score is not a number", text: "Leo\nScore: N/A", answer: "Leo", score: ""}, + {name: "no score line", text: "I don't know.", answer: "I don't know.", score: ""}, + {name: "no score line with label", text: "Question: Who?\nHelpful Answer: I don't know.\n", answer: "I don't know.", score: ""}, + {name: "score inside a line", text: "The final Score: 3\nScore: 80", answer: "The final Score: 3", score: "80"}, + {name: "last label wins", text: "Helpful Answer: a\nHelpful Answer: b\nScore: 50", answer: "b", score: "50"}, + {name: "score before the answer", text: "Score: 100\nHelpful Answer: Leo", answer: "", score: "100"}, + } + + parser := mapRerankOutputParser{} + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + + parsed, err := parser.ParseWithPrompt(tt.text, nil) + require.NoError(t, err) + require.Equal(t, map[string]string{"answer": tt.answer, "score": tt.score}, parsed) + }) + } +} + +func TestMapRerankDocumentsUnscoredAnswerRanksZero(t *testing.T) { + t.Parallel() + ctx := t.Context() + + mapRerankLLMChain := NewLLMChain( + &testLanguageModel{}, + prompts.NewPromptTemplate("{{.context}}", []string{"context"}), + ) + mapRerankDocumentsChain := NewMapRerankDocuments(mapRerankLLMChain) + mapRerankDocumentsChain.ReturnIntermediateSteps = true + + docs := []schema.Document{ + {PageContent: "I don't know."}, + {PageContent: "Other\nScore: 50"}, + {PageContent: "Leo\nScore: 100 "}, + } + + result, err := Call(ctx, mapRerankDocumentsChain, map[string]any{"input_documents": docs}) + require.NoError(t, err) + require.Equal(t, "Leo", result["text"]) + require.Equal(t, []map[string]any{ + {"answer": "Leo", "score": "100"}, + {"answer": "Other", "score": "50"}, + {"answer": "I don't know.", "score": ""}, + }, result[_intermediateStepsOutputKey]) +} + +func TestMapRerankDocumentsStableRanking(t *testing.T) { + t.Parallel() + ctx := t.Context() + + mapRerankLLMChain := NewLLMChain( + &testLanguageModel{}, + prompts.NewPromptTemplate("{{.context}}", []string{"context"}), + ) + mapRerankDocumentsChain := NewMapRerankDocuments(mapRerankLLMChain) + mapRerankDocumentsChain.ReturnIntermediateSteps = true + + // Enough documents for the sort to leave insertion sort, with repeated scores. + scores := []string{"50", "100", "0", "100", "50", "0"} + docs := make([]schema.Document, 0, 60) + byScore := map[string][]map[string]any{} + for i := range 60 { + score := scores[i%len(scores)] + answer := fmt.Sprintf("answer %02d", i) + docs = append(docs, schema.Document{PageContent: answer + "\nScore: " + score}) + byScore[score] = append(byScore[score], map[string]any{"answer": answer, "score": score}) + } + expected := slices.Concat(byScore["100"], byScore["50"], byScore["0"]) + + result, err := Call(ctx, mapRerankDocumentsChain, map[string]any{"input_documents": docs}) + require.NoError(t, err) + require.Equal(t, "answer 01", result["text"]) + require.Equal(t, expected, result[_intermediateStepsOutputKey]) +} + +func TestMapRerankDocumentsScore(t *testing.T) { + t.Parallel() + + c := MapRerankDocuments{RankKey: "score", AnswerKey: "answer"} + require.Equal(t, 42, c.score(map[string]any{"score": " 42 "})) + require.Equal(t, 42, c.score(map[string]any{"answer": "Leo", "score": "42"})) + require.Equal(t, 0, c.score(map[string]any{"answer": " ", "score": "100"})) + require.Equal(t, 0, c.score(map[string]any{"score": "high"})) + require.Equal(t, 0, c.score(map[string]any{"score": 42})) + require.Equal(t, 0, c.score(map[string]any{})) +} + +func TestMapRerankDocumentsRequiresTheRankKey(t *testing.T) { + t.Parallel() + + mapRerankLLMChain := NewLLMChain( + &testLanguageModel{}, + prompts.NewPromptTemplate("{{.context}}", []string{"context"}), + ) + mapRerankDocumentsChain := NewMapRerankDocuments(mapRerankLLMChain) + mapRerankDocumentsChain.RankKey = "confidence" + + docs := []schema.Document{ + {PageContent: "Low\nScore: 10"}, + {PageContent: "High\nScore: 100"}, + } + + _, err := Call(t.Context(), mapRerankDocumentsChain, map[string]any{"input_documents": docs}) + require.ErrorIs(t, err, ErrInvalidOutputValues) } diff --git a/chains/question_answering_test.go b/chains/question_answering_test.go index 770ac2bfb..09bec7c89 100644 --- a/chains/question_answering_test.go +++ b/chains/question_answering_test.go @@ -24,6 +24,7 @@ func createOpenAILLMForQA(t *testing.T) *openai.LLM { } opts := []openai.Option{ + openai.WithModel("gpt-4.1-nano"), openai.WithHTTPClient(rr.Client()), } @@ -82,8 +83,6 @@ func TestMapReduceQA(t *testing.T) { } func TestMapRerankQA(t *testing.T) { - t.Skip("Test currently fails; see #415") - t.Parallel() ctx := t.Context() llm := createOpenAILLMForQA(t) diff --git a/chains/retrieval_qa_test.go b/chains/retrieval_qa_test.go index dedb75277..4a9359e6a 100644 --- a/chains/retrieval_qa_test.go +++ b/chains/retrieval_qa_test.go @@ -37,6 +37,7 @@ func createOpenAILLMForRetrieval(t *testing.T) *openai.LLM { } opts := []openai.Option{ + openai.WithModel("gpt-4.1-nano"), openai.WithHTTPClient(rr.Client()), } diff --git a/chains/stuff_documents_test.go b/chains/stuff_documents_test.go index 3b0f22c54..79d446b17 100644 --- a/chains/stuff_documents_test.go +++ b/chains/stuff_documents_test.go @@ -25,6 +25,7 @@ func TestStuffDocuments(t *testing.T) { } opts := []openai.Option{ + openai.WithModel("gpt-4.1-nano"), openai.WithHTTPClient(rr.Client()), } diff --git a/chains/summarization_test.go b/chains/summarization_test.go index 7626c05cb..16d0fcedf 100644 --- a/chains/summarization_test.go +++ b/chains/summarization_test.go @@ -43,6 +43,7 @@ func createOpenAILLMForTest(t *testing.T) *openai.LLM { } opts := []openai.Option{ + openai.WithModel("gpt-4.1-nano"), openai.WithHTTPClient(rr.Client()), } diff --git a/chains/testdata/TestAPI.httprr b/chains/testdata/TestAPI.httprr new file mode 100644 index 000000000..cc8e8089a --- /dev/null +++ b/chains/testdata/TestAPI.httprr @@ -0,0 +1,155 @@ +httprr trace v1 +4702 1927 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 4499 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"You are given the API Documentation:\n\nBASE URL: https://api.open-meteo.com/\n\nAPI Documentation\nThe API endpoint /v1/forecast accepts a geographical coordinate, a list of weather variables and responds with a JSON hourly weather forecast for 7 days. Time always starts at 0:00 today and contains 168 hours. All URL parameters are listed below:\n\nParameter\tFormat\tRequired\tDefault\tDescription\nlatitude, longitude\tFloating point\tYes\t\tGeographical WGS84 coordinate of the location\nhourly\tString array\tNo\t\tA list of weather variables which should be returned. Values can be comma separated, or multiple \u0026hourly= parameter in the URL can be used.\ndaily\tString array\tNo\t\tA list of daily weather variable aggregations which should be returned. Values can be comma separated, or multiple \u0026daily= parameter in the URL can be used. If daily weather variables are specified, parameter timezone is required.\ncurrent_weather\tBool\tNo\tfalse\tInclude current weather conditions in the JSON output.\ntemperature_unit\tString\tNo\tcelsius\tIf fahrenheit is set, all temperature values are converted to Fahrenheit.\nwindspeed_unit\tString\tNo\tkmh\tOther wind speed speed units: ms, mph and kn\nprecipitation_unit\tString\tNo\tmm\tOther precipitation amount units: inch\ntimeformat\tString\tNo\tiso8601\tIf format unixtime is selected, all time values are returned in UNIX epoch time in seconds. Please note that all timestamp are in GMT+0! For daily values with unix timestamps, please apply utc_offset_seconds again to get the correct date.\ntimezone\tString\tNo\tGMT\tIf timezone is set, all timestamps are returned as local-time and data is returned starting at 00:00 local-time. Any time zone name from the time zone database is supported. If auto is set as a time zone, the coordinates will be automatically resolved to the local time zone.\npast_days\tInteger (0-2)\tNo\t0\tIf past_days is set, yesterday or the day before yesterday data are also returned.\nstart_date\nend_date\tString (yyyy-mm-dd)\tNo\t\tThe time interval to get weather data. A day must be specified as an ISO8601 date (e.g. 2022-06-30).\nmodels\tString array\tNo\tauto\tManually select one or more weather models. Per default, the best suitable weather models will be combined.\n\nHourly Parameter Definition\nThe parameter \u0026hourly= accepts the following values. Most weather variables are given as an instantaneous value for the indicated hour. Some variables like precipitation are calculated from the preceding hour as an average or sum.\n\nVariable\tValid time\tUnit\tDescription\ntemperature_2m\tInstant\t°C (°F)\tAir temperature at 2 meters above ground\nsnowfall\tPreceding hour sum\tcm (inch)\tSnowfall amount of the preceding hour in centimeters. For the water equivalent in millimeter, divide by 7. E.g. 7 cm snow = 10 mm precipitation water equivalent\nrain\tPreceding hour sum\tmm (inch)\tRain from large scale weather systems of the preceding hour in millimeter\nshowers\tPreceding hour sum\tmm (inch)\tShowers from convective precipitation in millimeters from the preceding hour\nweathercode\tInstant\tWMO code\tWeather condition as a numeric code. Follow WMO weather interpretation codes. See table below for details.\nsnow_depth\tInstant\tmeters\tSnow depth on the ground\nfreezinglevel_height\tInstant\tmeters\tAltitude above sea level of the 0°C level\nvisibility\tInstant\tmeters\tViewing distance in meters. Influenced by low clouds, humidity and aerosols. Maximum visibility is approximately 24 km.\n\nYour task is to construct a full API JSON object based on the provided input. The input could be a question that requires an API call for its answer, or a direct or indirect instruction to consume an API. The input will be unpredictable and could come from a user or an agent.\n\nYour goal is to create an API call that accurately reflects the intent of the input. Be sure to exclude any unnecessary data in the API call to ensure efficiency.\n\nInput: What is the weather like right now in Munich, Germany in degrees Fahrenheit?\n\nRespond with a JSON object.\n\n{\n \"method\": [the HTTP method for the API call, such as GET or POST],\n \"headers\": [object representing the HTTP headers required for the API call, always add a \"Content-Type\" header],\n \"url\": \t [full for the API call],\n \"body\": [object containing the data sent with the request, if needed]\n}"}],"temperature":0}HTTP/2.0 200 OK +Content-Length: 1100 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:05:28 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 1081 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149998930 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_af536f68c06d4cdfa17400ab829e1cc3 + +{ + "id": "chatcmpl-ERF4xWQ54eVWmLLRB8Wxo5YgXBTfD", + "object": "chat.completion", + "created": 1790161527, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "{\n \"method\": \"GET\",\n \"headers\": {\n \"Content-Type\": \"application/json\"\n },\n \"url\": \"https://api.open-meteo.com/v1/forecast?latitude=48.1351&longitude=11.5820¤t_weather=true&temperature_unit=fahrenheit&timezone=Europe/Berlin\",\n \"body\": {}\n}", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 962, + "completion_tokens": 79, + "total_tokens": 1041, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_6afed20c8d" +} +253 649 +GET https://api.open-meteo.com/v1/forecast?current_weather=true&latitude=48.1351&longitude=11.5820&temperature_unit=fahrenheit&timezone=Europe%2FBerlin HTTP/1.1 +Host: api.open-meteo.com +User-Agent: langchaingo-httprr +Content-Type: application/json + +HTTP/1.1 200 OK +Transfer-Encoding: chunked +Connection: keep-alive +Content-Type: application/json; charset=utf-8 +Date: Wed, 23 Sep 2026 11:05:29 GMT + +1e2 +{"latitude":48.14,"longitude":11.58,"generationtime_ms":0.11146068572998047,"utc_offset_seconds":7200,"timezone":"Europe/Berlin","timezone_abbreviation":"GMT+2","elevation":521.0,"current_weather_units":{"time":"iso8601","interval":"seconds","temperature":"°F","windspeed":"km/h","winddirection":"°","is_day":"","weathercode":"wmo code"},"current_weather":{"time":"2026-09-23T13:00","interval":900,"temperature":61.6,"windspeed":6.9,"winddirection":84,"is_day":1,"weathercode":0}} +0 + +5528 2058 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 5325 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"You are given the API Documentation:\n\nBASE URL: https://api.open-meteo.com/\n\nAPI Documentation\nThe API endpoint /v1/forecast accepts a geographical coordinate, a list of weather variables and responds with a JSON hourly weather forecast for 7 days. Time always starts at 0:00 today and contains 168 hours. All URL parameters are listed below:\n\nParameter\tFormat\tRequired\tDefault\tDescription\nlatitude, longitude\tFloating point\tYes\t\tGeographical WGS84 coordinate of the location\nhourly\tString array\tNo\t\tA list of weather variables which should be returned. Values can be comma separated, or multiple \u0026hourly= parameter in the URL can be used.\ndaily\tString array\tNo\t\tA list of daily weather variable aggregations which should be returned. Values can be comma separated, or multiple \u0026daily= parameter in the URL can be used. If daily weather variables are specified, parameter timezone is required.\ncurrent_weather\tBool\tNo\tfalse\tInclude current weather conditions in the JSON output.\ntemperature_unit\tString\tNo\tcelsius\tIf fahrenheit is set, all temperature values are converted to Fahrenheit.\nwindspeed_unit\tString\tNo\tkmh\tOther wind speed speed units: ms, mph and kn\nprecipitation_unit\tString\tNo\tmm\tOther precipitation amount units: inch\ntimeformat\tString\tNo\tiso8601\tIf format unixtime is selected, all time values are returned in UNIX epoch time in seconds. Please note that all timestamp are in GMT+0! For daily values with unix timestamps, please apply utc_offset_seconds again to get the correct date.\ntimezone\tString\tNo\tGMT\tIf timezone is set, all timestamps are returned as local-time and data is returned starting at 00:00 local-time. Any time zone name from the time zone database is supported. If auto is set as a time zone, the coordinates will be automatically resolved to the local time zone.\npast_days\tInteger (0-2)\tNo\t0\tIf past_days is set, yesterday or the day before yesterday data are also returned.\nstart_date\nend_date\tString (yyyy-mm-dd)\tNo\t\tThe time interval to get weather data. A day must be specified as an ISO8601 date (e.g. 2022-06-30).\nmodels\tString array\tNo\tauto\tManually select one or more weather models. Per default, the best suitable weather models will be combined.\n\nHourly Parameter Definition\nThe parameter \u0026hourly= accepts the following values. Most weather variables are given as an instantaneous value for the indicated hour. Some variables like precipitation are calculated from the preceding hour as an average or sum.\n\nVariable\tValid time\tUnit\tDescription\ntemperature_2m\tInstant\t°C (°F)\tAir temperature at 2 meters above ground\nsnowfall\tPreceding hour sum\tcm (inch)\tSnowfall amount of the preceding hour in centimeters. For the water equivalent in millimeter, divide by 7. E.g. 7 cm snow = 10 mm precipitation water equivalent\nrain\tPreceding hour sum\tmm (inch)\tRain from large scale weather systems of the preceding hour in millimeter\nshowers\tPreceding hour sum\tmm (inch)\tShowers from convective precipitation in millimeters from the preceding hour\nweathercode\tInstant\tWMO code\tWeather condition as a numeric code. Follow WMO weather interpretation codes. See table below for details.\nsnow_depth\tInstant\tmeters\tSnow depth on the ground\nfreezinglevel_height\tInstant\tmeters\tAltitude above sea level of the 0°C level\nvisibility\tInstant\tmeters\tViewing distance in meters. Influenced by low clouds, humidity and aerosols. Maximum visibility is approximately 24 km.\n\nYour task is to construct a full API JSON object based on the provided input. The input could be a question that requires an API call for its answer, or a direct or indirect instruction to consume an API. The input will be unpredictable and could come from a user or an agent.\n\nYour goal is to create an API call that accurately reflects the intent of the input. Be sure to exclude any unnecessary data in the API call to ensure efficiency.\n\nInput: What is the weather like right now in Munich, Germany in degrees Fahrenheit?\n\nRespond with a JSON object.\n\n{\n \"method\": [the HTTP method for the API call, such as GET or POST],\n \"headers\": [object representing the HTTP headers required for the API call, always add a \"Content-Type\" header],\n \"url\": \t [full for the API call],\n \"body\": [object containing the data sent with the request, if needed]\n}\nHere is the response from the API:\n\n{\"latitude\":48.14,\"longitude\":11.58,\"generationtime_ms\":0.11146068572998047,\"utc_offset_seconds\":7200,\"timezone\":\"Europe/Berlin\",\"timezone_abbreviation\":\"GMT+2\",\"elevation\":521.0,\"current_weather_units\":{\"time\":\"iso8601\",\"interval\":\"seconds\",\"temperature\":\"°F\",\"windspeed\":\"km/h\",\"winddirection\":\"°\",\"is_day\":\"\",\"weathercode\":\"wmo code\"},\"current_weather\":{\"time\":\"2026-09-23T13:00\",\"interval\":900,\"temperature\":61.6,\"windspeed\":6.9,\"winddirection\":84,\"is_day\":1,\"weathercode\":0}}\n\nNow, summarize this response. Your summary should reflect the original input and highlight the key information from the API response that answers or relates to that input. Try to make your summary concise, yet informative.\n\nSummary:"}],"temperature":0}HTTP/2.0 200 OK +Content-Length: 1231 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:05:32 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 1328 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149998742 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_d44f4f1fafaf4fd79c5b0144fd33f127 + +{ + "id": "chatcmpl-ERF51eps02jHnu4GKFD9xYaWzuVFe", + "object": "chat.completion", + "created": 1790161531, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "{\n \"method\": \"GET\",\n \"headers\": {\n \"Content-Type\": \"application/json\"\n },\n \"url\": \"https://api.open-meteo.com/v1/forecast?latitude=48.14&longitude=11.58¤t_weather=true&temperature_unit=fahrenheit&timezone=Europe/Berlin\",\n \"body\": null\n}\n\nSummary: The current weather in Munich, Germany, is approximately 62°F with a windspeed of about 7 km/h, based on the latest available data.", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 1156, + "completion_tokens": 111, + "total_tokens": 1267, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_6afed20c8d" +} diff --git a/chains/testdata/TestConstitutionalChainBasic.httprr b/chains/testdata/TestConstitutionalChainBasic.httprr index 4d44760f7..17d208e25 100644 --- a/chains/testdata/TestConstitutionalChainBasic.httprr +++ b/chains/testdata/TestConstitutionalChainBasic.httprr @@ -1,5 +1,5 @@ httprr trace v1 -279 2111 +279 2095 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:10:54 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 1182 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -67,7 +67,7 @@ X-Request-Id: req_30989395ee5145efba17fb2908c645e8 "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -5420 1879 +5420 1863 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -84,7 +84,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:10:56 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 510 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/chains/testdata/TestConversation.httprr b/chains/testdata/TestConversation.httprr index f89b6c939..750538aed 100644 --- a/chains/testdata/TestConversation.httprr +++ b/chains/testdata/TestConversation.httprr @@ -1,5 +1,5 @@ httprr trace v1 -550 1664 +550 1648 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:10:57 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 435 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -67,7 +67,7 @@ X-Request-Id: req_c080b93441a74fbcb184222818aea779 "service_tier": "default", "system_fingerprint": "fp_fe84ea9799" } -636 1623 +636 1607 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -84,7 +84,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:10:59 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 224 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/chains/testdata/TestConversationWithChatLLM.httprr b/chains/testdata/TestConversationWithChatLLM.httprr index b592f8b04..79b72e4a0 100644 --- a/chains/testdata/TestConversationWithChatLLM.httprr +++ b/chains/testdata/TestConversationWithChatLLM.httprr @@ -1,5 +1,5 @@ httprr trace v1 -550 1757 +550 1741 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:05 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 428 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -67,7 +67,7 @@ X-Request-Id: req_57a451cf7eae4f10996783c99331cf0b "service_tier": "default", "system_fingerprint": "fp_fe84ea9799" } -728 1743 +728 1727 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -84,7 +84,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:06 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 371 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -135,7 +135,7 @@ X-Request-Id: req_e7d87af6ac0b4ed1ad55aa8acdcd26b8 "service_tier": "default", "system_fingerprint": "fp_fe84ea9799" } -910 1845 +910 1829 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -152,7 +152,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:08 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 591 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/chains/testdata/TestConversationalRetrievalQA.httprr b/chains/testdata/TestConversationalRetrievalQA.httprr new file mode 100644 index 000000000..cb4d81633 --- /dev/null +++ b/chains/testdata/TestConversationalRetrievalQA.httprr @@ -0,0 +1,208 @@ +httprr trace v1 +4468 1896 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 4265 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-mini","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eTonight. I call on the Senate to: Pass the Freedom to Vote Act. Pass the John Lewis Voting Rights Act. And while you're at it, pass the Disclose Act so Americans can know who is funding our elections. \n\nTonight, I'd like to honor someone who has dedicated his life to serve this country: Justice Stephen Breyer—an Army veteran, Constitutional scholar, and retiring Justice of the United States Supreme Court. Justice Breyer, thank you for your service. \n\nOne of the most serious constitutional responsibilities a President has is nominating someone to serve on the United States Supreme Court. \n\nAnd I did that 4 days ago, when I nominated Circuit Court of Appeals Judge Ketanji Brown Jackson. One of our nation's top legal minds, who will continue Justice Breyer's legacy of excellence.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eA former top litigator in private practice. A former federal public defender. And from a family of public school educators and police officers. A consensus builder. Since she's been nominated, she's received a broad range of support—from the Fraternal Order of Police to former judges appointed by Democrats and Republicans. \n\nAnd if we are to advance liberty and justice, we need to secure the Border and fix the immigration system. \n\nWe can do both. At our border, we've installed new technology like cutting-edge scanners to better detect drug smuggling. \n\nWe've set up joint patrols with Mexico and Guatemala to catch more human traffickers. \n\nWe're putting in place dedicated immigration judges so families fleeing persecution and violence can have their cases heard faster. \n\nWe're securing commitments and supporting partners in South and Central America to host more refugees and secure their own borders.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eAnd for our LGBTQ+ Americans, let's finally get the bipartisan Equality Act to my desk. The onslaught of state laws targeting transgender Americans and their families is wrong. \n\nAs I said last year, especially to our younger transgender Americans, I will always have your back as your President, so you can be yourself and reach your God-given potential. \n\nWhile it often appears that we never agree, that isn't true. I signed 80 bipartisan bills into law last year. From preventing government shutdowns to protecting Asian-Americans from still-too-common hate crimes to reforming military justice. \n\nAnd soon, we'll strengthen the Violence Against Women Act that I first wrote three decades ago. It is important for us to show the nation that we can come together and do big things. \n\nSo tonight I'm offering a Unity Agenda for the Nation. Four big things we can do together. \n\nFirst, beat the opioid epidemic.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eTonight, I'm announcing a crackdown on these companies overcharging American businesses and consumers. \n\nAnd as Wall Street firms take over more nursing homes, quality in those homes has gone down and costs have gone up. \n\nThat ends on my watch. \n\nMedicare is going to set higher standards for nursing homes and make sure your loved ones get the care they deserve and expect. \n\nWe'll also cut costs and keep the economy going strong by giving workers a fair shot, provide more training and apprenticeships, hire them based on their skills not degrees. \n\nLet's pass the Paycheck Fairness Act and paid leave. \n\nRaise the minimum wage to $15 an hour and extend the Child Tax Credit, so no one has to raise a family in poverty. \n\nLet's increase Pell Grants and increase our historic support of HBCUs, and invest in what Jill—our First Lady who teaches full-time—calls America's best-kept secret: community colleges.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What did the president say about Ketanji Brown Jackson\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 1070 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:17:03 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 652 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999005 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_60c2980393df46958fde37bbb0ebb72a + +{ + "id": "chatcmpl-ERFGAW4G7Q1gs8Tr2DhJyf0cJz0vt", + "object": "chat.completion", + "created": 1790162222, + "model": "gpt-4.1-mini-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "The president said that he nominated Circuit Court of Appeals Judge Ketanji Brown Jackson to the United States Supreme Court four days ago. He described her as one of the nation's top legal minds who will continue Justice Stephen Breyer's legacy of excellence.", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 804, + "completion_tokens": 49, + "total_tokens": 853, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_46ce4fdcea" +} +832 1737 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 630 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-mini","messages":[{"role":"user","content":"Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question, in its original language.\n\nChat History:\nHuman: What did the president say about Ketanji Brown Jackson\nAI: The president said that he nominated Circuit Court of Appeals Judge Ketanji Brown Jackson to the United States Supreme Court four days ago. He described her as one of the nation's top legal minds who will continue Justice Stephen Breyer's legacy of excellence.\nFollow Up Input: Did he mention who she succeeded\nStandalone question:"}]}HTTP/2.0 200 OK +Content-Length: 912 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:17:05 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 488 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999857 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_f0672638e6494302b576109dffbe38c9 + +{ + "id": "chatcmpl-ERFGCiwWsQK0X3eSbthYBIOTLSmlS", + "object": "chat.completion", + "created": 1790162224, + "model": "gpt-4.1-mini-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "Did the president mention whom Ketanji Brown Jackson is succeeding on the United States Supreme Court?", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 116, + "completion_tokens": 19, + "total_tokens": 135, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_6050bec882" +} +4664 1763 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 4461 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-mini","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eTonight. I call on the Senate to: Pass the Freedom to Vote Act. Pass the John Lewis Voting Rights Act. And while you're at it, pass the Disclose Act so Americans can know who is funding our elections. \n\nTonight, I'd like to honor someone who has dedicated his life to serve this country: Justice Stephen Breyer—an Army veteran, Constitutional scholar, and retiring Justice of the United States Supreme Court. Justice Breyer, thank you for your service. \n\nOne of the most serious constitutional responsibilities a President has is nominating someone to serve on the United States Supreme Court. \n\nAnd I did that 4 days ago, when I nominated Circuit Court of Appeals Judge Ketanji Brown Jackson. One of our nation's top legal minds, who will continue Justice Breyer's legacy of excellence.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eA former top litigator in private practice. A former federal public defender. And from a family of public school educators and police officers. A consensus builder. Since she's been nominated, she's received a broad range of support—from the Fraternal Order of Police to former judges appointed by Democrats and Republicans. \\n\\nAnd if we are to advance liberty and justice, we need to secure the Border and fix the immigration system. \\n\\nWe can do both. At our border, we've installed new technology like cutting-edge scanners to better detect drug smuggling. \\n\\nWe've set up joint patrols with Mexico and Guatemala to catch more human traffickers. \\n\\nWe're putting in place dedicated immigration judges so families fleeing persecution and violence can have their cases heard faster. \\n\\nWe're securing commitments and supporting partners in South and Central America to host more refugees and secure their own borders.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eMadam Speaker, Madam Vice President, our First Lady and Second Gentleman. Members of Congress and the Cabinet. Justices of the Supreme Court. My fellow Americans. \n\nLast year COVID-19 kept us apart. This year we are finally together again. \n\nTonight, we meet as Democrats Republicans and Independents. But most importantly as Americans. \n\nWith a duty to one another to the American people to the Constitution. \n\nAnd with an unwavering resolve that freedom will always triumph over tyranny. \n\nSix days ago, Russia's Vladimir Putin sought to shake the foundations of the free world thinking he could make it bend to his menacing ways. But he badly miscalculated. \n\nHe thought he could roll into Ukraine and the world would roll over. Instead he met a wall of strength he never imagined. \n\nHe met the Ukrainian people. \n\nFrom President Zelenskyy to every Ukrainian, their fearlessness, their courage, their determination, inspires the world\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eAs Ohio Senator Sherrod Brown says, 'It's time to bury the label 'Rust Belt.' \\n\\nIt's time. \\n\\nBut with all the bright spots in our economy, record job growth and higher wages, too many families are struggling to keep up with the bills. \\n\\nInflation is robbing them of the gains they might otherwise feel. \\n\\nI get it. That's why my top priority is getting prices under control. \\n\\nLook, our economy roared back faster than most predicted, but the pandemic meant that businesses had a hard time hiring enough workers to keep up production in their factories. \\n\\nThe pandemic also disrupted global supply chains. \\n\\nWhen factories close, it takes longer to make goods and get them from the warehouse to the store, and prices go up. \\n\\nLook at cars. \\n\\nLast year, there weren't enough semiconductors to make all the cars that people wanted to buy. \\n\\nAnd guess what, prices of automobiles went up. \\n\\nSo—we have a choice. \\n\\nOne way to fight inflation is to drive down wages and make Americans poorer.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\nQuestion: Did the president mention whom Ketanji Brown Jackson is succeeding on the United States Supreme Court?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 938 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:17:06 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 458 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149998960 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_182d1584c70f4533a15ed4195809a87b + +{ + "id": "chatcmpl-ERFGE036zohAYSu3ITn0goSMM030m", + "object": "chat.completion", + "created": 1790162226, + "model": "gpt-4.1-mini-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "Yes, the president mentioned that Ketanji Brown Jackson is succeeding Justice Stephen Breyer on the United States Supreme Court.", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 883, + "completion_tokens": 24, + "total_tokens": 907, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_46ce4fdcea" +} diff --git a/chains/testdata/TestConversationalRetrievalQAFromLLM.httprr b/chains/testdata/TestConversationalRetrievalQAFromLLM.httprr new file mode 100644 index 000000000..73213a94a --- /dev/null +++ b/chains/testdata/TestConversationalRetrievalQAFromLLM.httprr @@ -0,0 +1,208 @@ +httprr trace v1 +4468 1888 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 4265 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-mini","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eTonight. I call on the Senate to: Pass the Freedom to Vote Act. Pass the John Lewis Voting Rights Act. And while you're at it, pass the Disclose Act so Americans can know who is funding our elections. \n\nTonight, I'd like to honor someone who has dedicated his life to serve this country: Justice Stephen Breyer—an Army veteran, Constitutional scholar, and retiring Justice of the United States Supreme Court. Justice Breyer, thank you for your service. \n\nOne of the most serious constitutional responsibilities a President has is nominating someone to serve on the United States Supreme Court. \n\nAnd I did that 4 days ago, when I nominated Circuit Court of Appeals Judge Ketanji Brown Jackson. One of our nation's top legal minds, who will continue Justice Breyer's legacy of excellence.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eA former top litigator in private practice. A former federal public defender. And from a family of public school educators and police officers. A consensus builder. Since she's been nominated, she's received a broad range of support—from the Fraternal Order of Police to former judges appointed by Democrats and Republicans. \n\nAnd if we are to advance liberty and justice, we need to secure the Border and fix the immigration system. \n\nWe can do both. At our border, we've installed new technology like cutting-edge scanners to better detect drug smuggling. \n\nWe've set up joint patrols with Mexico and Guatemala to catch more human traffickers. \n\nWe're putting in place dedicated immigration judges so families fleeing persecution and violence can have their cases heard faster. \n\nWe're securing commitments and supporting partners in South and Central America to host more refugees and secure their own borders.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eAnd for our LGBTQ+ Americans, let's finally get the bipartisan Equality Act to my desk. The onslaught of state laws targeting transgender Americans and their families is wrong. \n\nAs I said last year, especially to our younger transgender Americans, I will always have your back as your President, so you can be yourself and reach your God-given potential. \n\nWhile it often appears that we never agree, that isn't true. I signed 80 bipartisan bills into law last year. From preventing government shutdowns to protecting Asian-Americans from still-too-common hate crimes to reforming military justice. \n\nAnd soon, we'll strengthen the Violence Against Women Act that I first wrote three decades ago. It is important for us to show the nation that we can come together and do big things. \n\nSo tonight I'm offering a Unity Agenda for the Nation. Four big things we can do together. \n\nFirst, beat the opioid epidemic.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eTonight, I'm announcing a crackdown on these companies overcharging American businesses and consumers. \n\nAnd as Wall Street firms take over more nursing homes, quality in those homes has gone down and costs have gone up. \n\nThat ends on my watch. \n\nMedicare is going to set higher standards for nursing homes and make sure your loved ones get the care they deserve and expect. \n\nWe'll also cut costs and keep the economy going strong by giving workers a fair shot, provide more training and apprenticeships, hire them based on their skills not degrees. \n\nLet's pass the Paycheck Fairness Act and paid leave. \n\nRaise the minimum wage to $15 an hour and extend the Child Tax Credit, so no one has to raise a family in poverty. \n\nLet's increase Pell Grants and increase our historic support of HBCUs, and invest in what Jill—our First Lady who teaches full-time—calls America's best-kept secret: community colleges.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What did the president say about Ketanji Brown Jackson\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 1062 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:17:14 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 704 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999005 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_c2ec61af4d4144ad81cc16a3d9ade68f + +{ + "id": "chatcmpl-ERFGLJlI46GmoQk9W3Xb8ttfksDK1", + "object": "chat.completion", + "created": 1790162233, + "model": "gpt-4.1-mini-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "The president said that he nominated Circuit Court of Appeals Judge Ketanji Brown Jackson to the United States Supreme Court four days ago. He described her as one of the nation's top legal minds who will continue Justice Breyer's legacy of excellence.", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 804, + "completion_tokens": 48, + "total_tokens": 852, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_46ce4fdcea" +} +824 1698 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 622 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-mini","messages":[{"role":"user","content":"Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question, in its original language.\n\nChat History:\nHuman: What did the president say about Ketanji Brown Jackson\nAI: The president said that he nominated Circuit Court of Appeals Judge Ketanji Brown Jackson to the United States Supreme Court four days ago. He described her as one of the nation's top legal minds who will continue Justice Breyer's legacy of excellence.\nFollow Up Input: Did he mention who she succeeded\nStandalone question:"}]}HTTP/2.0 200 OK +Content-Length: 873 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:17:16 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 422 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999860 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_41a44ba0ffb149289062aa0c08970102 + +{ + "id": "chatcmpl-ERFGNyj5bffZuwxCJvj48dFNz6zhk", + "object": "chat.completion", + "created": 1790162235, + "model": "gpt-4.1-mini-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "Did the president mention whom Ketanji Brown Jackson succeeded?", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 115, + "completion_tokens": 12, + "total_tokens": 127, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_46ce4fdcea" +} +4625 1785 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 4422 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-mini","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eTonight. I call on the Senate to: Pass the Freedom to Vote Act. Pass the John Lewis Voting Rights Act. And while you're at it, pass the Disclose Act so Americans can know who is funding our elections. \n\nTonight, I'd like to honor someone who has dedicated his life to serve this country: Justice Stephen Breyer—an Army veteran, Constitutional scholar, and retiring Justice of the United States Supreme Court. Justice Breyer, thank you for your service. \n\nOne of the most serious constitutional responsibilities a President has is nominating someone to serve on the United States Supreme Court. \n\nAnd I did that 4 days ago, when I nominated Circuit Court of Appeals Judge Ketanji Brown Jackson. One of our nation's top legal minds, who will continue Justice Breyer's legacy of excellence.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eA former top litigator in private practice. A former federal public defender. And from a family of public school educators and police officers. A consensus builder. Since she's been nominated, she's received a broad range of support—from the Fraternal Order of Police to former judges appointed by Democrats and Republicans. \\n\\nAnd if we are to advance liberty and justice, we need to secure the Border and fix the immigration system. \\n\\nWe can do both. At our border, we've installed new technology like cutting-edge scanners to better detect drug smuggling. \\n\\nWe've set up joint patrols with Mexico and Guatemala to catch more human traffickers. \\n\\nWe're putting in place dedicated immigration judges so families fleeing persecution and violence can have their cases heard faster. \\n\\nWe're securing commitments and supporting partners in South and Central America to host more refugees and secure their own borders.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eMadam Speaker, Madam Vice President, our First Lady and Second Gentleman. Members of Congress and the Cabinet. Justices of the Supreme Court. My fellow Americans. \n\nLast year COVID-19 kept us apart. This year we are finally together again. \n\nTonight, we meet as Democrats Republicans and Independents. But most importantly as Americans. \n\nWith a duty to one another to the American people to the Constitution. \n\nAnd with an unwavering resolve that freedom will always triumph over tyranny. \n\nSix days ago, Russia's Vladimir Putin sought to shake the foundations of the free world thinking he could make it bend to his menacing ways. But he badly miscalculated. \n\nHe thought he could roll into Ukraine and the world would roll over. Instead he met a wall of strength he never imagined. \n\nHe met the Ukrainian people. \n\nFrom President Zelenskyy to every Ukrainian, their fearlessness, their courage, their determination, inspires the world\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eAs Ohio Senator Sherrod Brown says, 'It's time to bury the label 'Rust Belt.' \\n\\nIt's time. \\n\\nBut with all the bright spots in our economy, record job growth and higher wages, too many families are struggling to keep up with the bills. \\n\\nInflation is robbing them of the gains they might otherwise feel. \\n\\nI get it. That's why my top priority is getting prices under control. \\n\\nLook, our economy roared back faster than most predicted, but the pandemic meant that businesses had a hard time hiring enough workers to keep up production in their factories. \\n\\nThe pandemic also disrupted global supply chains. \\n\\nWhen factories close, it takes longer to make goods and get them from the warehouse to the store, and prices go up. \\n\\nLook at cars. \\n\\nLast year, there weren't enough semiconductors to make all the cars that people wanted to buy. \\n\\nAnd guess what, prices of automobiles went up. \\n\\nSo—we have a choice. \\n\\nOne way to fight inflation is to drive down wages and make Americans poorer.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\nQuestion: Did the president mention whom Ketanji Brown Jackson succeeded?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 960 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:17:18 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 595 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149998972 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_4b13be1bc20c48a7aa59c6d7d60c41ec + +{ + "id": "chatcmpl-ERFGPznmAzlAYWkwvkyg2vQwnq7g2", + "object": "chat.completion", + "created": 1790162237, + "model": "gpt-4.1-mini-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "Yes, the president mentioned that Ketanji Brown Jackson will continue Justice Stephen Breyer's legacy, implying that she is succeeding Justice Breyer.", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 876, + "completion_tokens": 29, + "total_tokens": 905, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_46ce4fdcea" +} diff --git a/chains/testdata/TestConversationalRetrievalQAFromLLMWithConversationTokenBuffer.httprr b/chains/testdata/TestConversationalRetrievalQAFromLLMWithConversationTokenBuffer.httprr new file mode 100644 index 000000000..333b4449a --- /dev/null +++ b/chains/testdata/TestConversationalRetrievalQAFromLLMWithConversationTokenBuffer.httprr @@ -0,0 +1,208 @@ +httprr trace v1 +4468 1896 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 4265 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-mini","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eTonight. I call on the Senate to: Pass the Freedom to Vote Act. Pass the John Lewis Voting Rights Act. And while you're at it, pass the Disclose Act so Americans can know who is funding our elections. \n\nTonight, I'd like to honor someone who has dedicated his life to serve this country: Justice Stephen Breyer—an Army veteran, Constitutional scholar, and retiring Justice of the United States Supreme Court. Justice Breyer, thank you for your service. \n\nOne of the most serious constitutional responsibilities a President has is nominating someone to serve on the United States Supreme Court. \n\nAnd I did that 4 days ago, when I nominated Circuit Court of Appeals Judge Ketanji Brown Jackson. One of our nation's top legal minds, who will continue Justice Breyer's legacy of excellence.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eA former top litigator in private practice. A former federal public defender. And from a family of public school educators and police officers. A consensus builder. Since she's been nominated, she's received a broad range of support—from the Fraternal Order of Police to former judges appointed by Democrats and Republicans. \n\nAnd if we are to advance liberty and justice, we need to secure the Border and fix the immigration system. \n\nWe can do both. At our border, we've installed new technology like cutting-edge scanners to better detect drug smuggling. \n\nWe've set up joint patrols with Mexico and Guatemala to catch more human traffickers. \n\nWe're putting in place dedicated immigration judges so families fleeing persecution and violence can have their cases heard faster. \n\nWe're securing commitments and supporting partners in South and Central America to host more refugees and secure their own borders.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eAnd for our LGBTQ+ Americans, let's finally get the bipartisan Equality Act to my desk. The onslaught of state laws targeting transgender Americans and their families is wrong. \n\nAs I said last year, especially to our younger transgender Americans, I will always have your back as your President, so you can be yourself and reach your God-given potential. \n\nWhile it often appears that we never agree, that isn't true. I signed 80 bipartisan bills into law last year. From preventing government shutdowns to protecting Asian-Americans from still-too-common hate crimes to reforming military justice. \n\nAnd soon, we'll strengthen the Violence Against Women Act that I first wrote three decades ago. It is important for us to show the nation that we can come together and do big things. \n\nSo tonight I'm offering a Unity Agenda for the Nation. Four big things we can do together. \n\nFirst, beat the opioid epidemic.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eTonight, I'm announcing a crackdown on these companies overcharging American businesses and consumers. \n\nAnd as Wall Street firms take over more nursing homes, quality in those homes has gone down and costs have gone up. \n\nThat ends on my watch. \n\nMedicare is going to set higher standards for nursing homes and make sure your loved ones get the care they deserve and expect. \n\nWe'll also cut costs and keep the economy going strong by giving workers a fair shot, provide more training and apprenticeships, hire them based on their skills not degrees. \n\nLet's pass the Paycheck Fairness Act and paid leave. \n\nRaise the minimum wage to $15 an hour and extend the Child Tax Credit, so no one has to raise a family in poverty. \n\nLet's increase Pell Grants and increase our historic support of HBCUs, and invest in what Jill—our First Lady who teaches full-time—calls America's best-kept secret: community colleges.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What did the president say about Ketanji Brown Jackson\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 1070 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:17:20 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 777 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999005 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_8987b4ac34044a79be2412a50a29820d + +{ + "id": "chatcmpl-ERFGR7I1y3kdPloh1drNMoLtuGpTi", + "object": "chat.completion", + "created": 1790162239, + "model": "gpt-4.1-mini-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "The president said that he nominated Circuit Court of Appeals Judge Ketanji Brown Jackson to the United States Supreme Court four days ago. He described her as one of the nation's top legal minds who will continue Justice Stephen Breyer's legacy of excellence.", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 804, + "completion_tokens": 49, + "total_tokens": 853, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_46ce4fdcea" +} +832 1736 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 630 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-mini","messages":[{"role":"user","content":"Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question, in its original language.\n\nChat History:\nHuman: What did the president say about Ketanji Brown Jackson\nAI: The president said that he nominated Circuit Court of Appeals Judge Ketanji Brown Jackson to the United States Supreme Court four days ago. He described her as one of the nation's top legal minds who will continue Justice Stephen Breyer's legacy of excellence.\nFollow Up Input: Did he mention who she succeeded\nStandalone question:"}]}HTTP/2.0 200 OK +Content-Length: 911 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:17:21 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 533 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999857 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_ec70b50ffc6144e08e0135c9b3dd7bf4 + +{ + "id": "chatcmpl-ERFGTVZreaNDjTYJUpn5S7aVMGPnL", + "object": "chat.completion", + "created": 1790162241, + "model": "gpt-4.1-mini-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "Did the president mention whom Ketanji Brown Jackson will succeed on the United States Supreme Court?", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 116, + "completion_tokens": 19, + "total_tokens": 135, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_6050bec882" +} +4663 1821 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 4460 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-mini","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eTonight. I call on the Senate to: Pass the Freedom to Vote Act. Pass the John Lewis Voting Rights Act. And while you're at it, pass the Disclose Act so Americans can know who is funding our elections. \n\nTonight, I'd like to honor someone who has dedicated his life to serve this country: Justice Stephen Breyer—an Army veteran, Constitutional scholar, and retiring Justice of the United States Supreme Court. Justice Breyer, thank you for your service. \n\nOne of the most serious constitutional responsibilities a President has is nominating someone to serve on the United States Supreme Court. \n\nAnd I did that 4 days ago, when I nominated Circuit Court of Appeals Judge Ketanji Brown Jackson. One of our nation's top legal minds, who will continue Justice Breyer's legacy of excellence.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eA former top litigator in private practice. A former federal public defender. And from a family of public school educators and police officers. A consensus builder. Since she's been nominated, she's received a broad range of support—from the Fraternal Order of Police to former judges appointed by Democrats and Republicans. \\n\\nAnd if we are to advance liberty and justice, we need to secure the Border and fix the immigration system. \\n\\nWe can do both. At our border, we've installed new technology like cutting-edge scanners to better detect drug smuggling. \\n\\nWe've set up joint patrols with Mexico and Guatemala to catch more human traffickers. \\n\\nWe're putting in place dedicated immigration judges so families fleeing persecution and violence can have their cases heard faster. \\n\\nWe're securing commitments and supporting partners in South and Central America to host more refugees and secure their own borders.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eMadam Speaker, Madam Vice President, our First Lady and Second Gentleman. Members of Congress and the Cabinet. Justices of the Supreme Court. My fellow Americans. \n\nLast year COVID-19 kept us apart. This year we are finally together again. \n\nTonight, we meet as Democrats Republicans and Independents. But most importantly as Americans. \n\nWith a duty to one another to the American people to the Constitution. \n\nAnd with an unwavering resolve that freedom will always triumph over tyranny. \n\nSix days ago, Russia's Vladimir Putin sought to shake the foundations of the free world thinking he could make it bend to his menacing ways. But he badly miscalculated. \n\nHe thought he could roll into Ukraine and the world would roll over. Instead he met a wall of strength he never imagined. \n\nHe met the Ukrainian people. \n\nFrom President Zelenskyy to every Ukrainian, their fearlessness, their courage, their determination, inspires the world\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eAs Ohio Senator Sherrod Brown says, 'It's time to bury the label 'Rust Belt.' \\n\\nIt's time. \\n\\nBut with all the bright spots in our economy, record job growth and higher wages, too many families are struggling to keep up with the bills. \\n\\nInflation is robbing them of the gains they might otherwise feel. \\n\\nI get it. That's why my top priority is getting prices under control. \\n\\nLook, our economy roared back faster than most predicted, but the pandemic meant that businesses had a hard time hiring enough workers to keep up production in their factories. \\n\\nThe pandemic also disrupted global supply chains. \\n\\nWhen factories close, it takes longer to make goods and get them from the warehouse to the store, and prices go up. \\n\\nLook at cars. \\n\\nLast year, there weren't enough semiconductors to make all the cars that people wanted to buy. \\n\\nAnd guess what, prices of automobiles went up. \\n\\nSo—we have a choice. \\n\\nOne way to fight inflation is to drive down wages and make Americans poorer.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\nQuestion: Did the president mention whom Ketanji Brown Jackson will succeed on the United States Supreme Court?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 996 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:17:23 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 531 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149998960 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_df9f452ab2dc47cfa9f6d9dcd72a9e60 + +{ + "id": "chatcmpl-ERFGVsGFLhTUnoGkBwWona1l33FDb", + "object": "chat.completion", + "created": 1790162243, + "model": "gpt-4.1-mini-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "Yes, the president mentioned that Ketanji Brown Jackson will continue Justice Stephen Breyer's legacy, indicating that she will succeed Justice Breyer on the United States Supreme Court.", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 883, + "completion_tokens": 35, + "total_tokens": 918, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_46ce4fdcea" +} diff --git a/chains/testdata/TestConversationalRetrievalQAWithReturnMessages.httprr b/chains/testdata/TestConversationalRetrievalQAWithReturnMessages.httprr new file mode 100644 index 000000000..6812aa537 --- /dev/null +++ b/chains/testdata/TestConversationalRetrievalQAWithReturnMessages.httprr @@ -0,0 +1,208 @@ +httprr trace v1 +4468 1896 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 4265 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-mini","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eTonight. I call on the Senate to: Pass the Freedom to Vote Act. Pass the John Lewis Voting Rights Act. And while you're at it, pass the Disclose Act so Americans can know who is funding our elections. \n\nTonight, I'd like to honor someone who has dedicated his life to serve this country: Justice Stephen Breyer—an Army veteran, Constitutional scholar, and retiring Justice of the United States Supreme Court. Justice Breyer, thank you for your service. \n\nOne of the most serious constitutional responsibilities a President has is nominating someone to serve on the United States Supreme Court. \n\nAnd I did that 4 days ago, when I nominated Circuit Court of Appeals Judge Ketanji Brown Jackson. One of our nation's top legal minds, who will continue Justice Breyer's legacy of excellence.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eA former top litigator in private practice. A former federal public defender. And from a family of public school educators and police officers. A consensus builder. Since she's been nominated, she's received a broad range of support—from the Fraternal Order of Police to former judges appointed by Democrats and Republicans. \n\nAnd if we are to advance liberty and justice, we need to secure the Border and fix the immigration system. \n\nWe can do both. At our border, we've installed new technology like cutting-edge scanners to better detect drug smuggling. \n\nWe've set up joint patrols with Mexico and Guatemala to catch more human traffickers. \n\nWe're putting in place dedicated immigration judges so families fleeing persecution and violence can have their cases heard faster. \n\nWe're securing commitments and supporting partners in South and Central America to host more refugees and secure their own borders.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eAnd for our LGBTQ+ Americans, let's finally get the bipartisan Equality Act to my desk. The onslaught of state laws targeting transgender Americans and their families is wrong. \n\nAs I said last year, especially to our younger transgender Americans, I will always have your back as your President, so you can be yourself and reach your God-given potential. \n\nWhile it often appears that we never agree, that isn't true. I signed 80 bipartisan bills into law last year. From preventing government shutdowns to protecting Asian-Americans from still-too-common hate crimes to reforming military justice. \n\nAnd soon, we'll strengthen the Violence Against Women Act that I first wrote three decades ago. It is important for us to show the nation that we can come together and do big things. \n\nSo tonight I'm offering a Unity Agenda for the Nation. Four big things we can do together. \n\nFirst, beat the opioid epidemic.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eTonight, I'm announcing a crackdown on these companies overcharging American businesses and consumers. \n\nAnd as Wall Street firms take over more nursing homes, quality in those homes has gone down and costs have gone up. \n\nThat ends on my watch. \n\nMedicare is going to set higher standards for nursing homes and make sure your loved ones get the care they deserve and expect. \n\nWe'll also cut costs and keep the economy going strong by giving workers a fair shot, provide more training and apprenticeships, hire them based on their skills not degrees. \n\nLet's pass the Paycheck Fairness Act and paid leave. \n\nRaise the minimum wage to $15 an hour and extend the Child Tax Credit, so no one has to raise a family in poverty. \n\nLet's increase Pell Grants and increase our historic support of HBCUs, and invest in what Jill—our First Lady who teaches full-time—calls America's best-kept secret: community colleges.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What did the president say about Ketanji Brown Jackson\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 1070 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:17:08 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 812 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999005 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_0a8ef0c5928f41798dea92cfedf9cba5 + +{ + "id": "chatcmpl-ERFGGpypiCyHD2XZGVy3oOJR9Koib", + "object": "chat.completion", + "created": 1790162228, + "model": "gpt-4.1-mini-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "The president said that he nominated Circuit Court of Appeals Judge Ketanji Brown Jackson to the United States Supreme Court four days ago. He described her as one of the nation's top legal minds who will continue Justice Stephen Breyer's legacy of excellence.", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 804, + "completion_tokens": 49, + "total_tokens": 853, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_46ce4fdcea" +} +832 1732 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 630 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-mini","messages":[{"role":"user","content":"Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question, in its original language.\n\nChat History:\nHuman: What did the president say about Ketanji Brown Jackson\nAI: The president said that he nominated Circuit Court of Appeals Judge Ketanji Brown Jackson to the United States Supreme Court four days ago. He described her as one of the nation's top legal minds who will continue Justice Stephen Breyer's legacy of excellence.\nFollow Up Input: Did he mention who she succeeded\nStandalone question:"}]}HTTP/2.0 200 OK +Content-Length: 907 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:17:10 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 570 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999857 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_c798e331ad5e4a6c8a96ce91303309d4 + +{ + "id": "chatcmpl-ERFGIPoQCmNdRhec83DMw7HIab0EY", + "object": "chat.completion", + "created": 1790162230, + "model": "gpt-4.1-mini-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "Did the president mention who Ketanji Brown Jackson succeeded on the United States Supreme Court?", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 116, + "completion_tokens": 18, + "total_tokens": 134, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_6050bec882" +} +4659 1822 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 4456 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-mini","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eTonight. I call on the Senate to: Pass the Freedom to Vote Act. Pass the John Lewis Voting Rights Act. And while you're at it, pass the Disclose Act so Americans can know who is funding our elections. \n\nTonight, I'd like to honor someone who has dedicated his life to serve this country: Justice Stephen Breyer—an Army veteran, Constitutional scholar, and retiring Justice of the United States Supreme Court. Justice Breyer, thank you for your service. \n\nOne of the most serious constitutional responsibilities a President has is nominating someone to serve on the United States Supreme Court. \n\nAnd I did that 4 days ago, when I nominated Circuit Court of Appeals Judge Ketanji Brown Jackson. One of our nation's top legal minds, who will continue Justice Breyer's legacy of excellence.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eA former top litigator in private practice. A former federal public defender. And from a family of public school educators and police officers. A consensus builder. Since she's been nominated, she's received a broad range of support—from the Fraternal Order of Police to former judges appointed by Democrats and Republicans. \\n\\nAnd if we are to advance liberty and justice, we need to secure the Border and fix the immigration system. \\n\\nWe can do both. At our border, we've installed new technology like cutting-edge scanners to better detect drug smuggling. \\n\\nWe've set up joint patrols with Mexico and Guatemala to catch more human traffickers. \\n\\nWe're putting in place dedicated immigration judges so families fleeing persecution and violence can have their cases heard faster. \\n\\nWe're securing commitments and supporting partners in South and Central America to host more refugees and secure their own borders.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eMadam Speaker, Madam Vice President, our First Lady and Second Gentleman. Members of Congress and the Cabinet. Justices of the Supreme Court. My fellow Americans. \n\nLast year COVID-19 kept us apart. This year we are finally together again. \n\nTonight, we meet as Democrats Republicans and Independents. But most importantly as Americans. \n\nWith a duty to one another to the American people to the Constitution. \n\nAnd with an unwavering resolve that freedom will always triumph over tyranny. \n\nSix days ago, Russia's Vladimir Putin sought to shake the foundations of the free world thinking he could make it bend to his menacing ways. But he badly miscalculated. \n\nHe thought he could roll into Ukraine and the world would roll over. Instead he met a wall of strength he never imagined. \n\nHe met the Ukrainian people. \n\nFrom President Zelenskyy to every Ukrainian, their fearlessness, their courage, their determination, inspires the world\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eAs Ohio Senator Sherrod Brown says, 'It's time to bury the label 'Rust Belt.' \\n\\nIt's time. \\n\\nBut with all the bright spots in our economy, record job growth and higher wages, too many families are struggling to keep up with the bills. \\n\\nInflation is robbing them of the gains they might otherwise feel. \\n\\nI get it. That's why my top priority is getting prices under control. \\n\\nLook, our economy roared back faster than most predicted, but the pandemic meant that businesses had a hard time hiring enough workers to keep up production in their factories. \\n\\nThe pandemic also disrupted global supply chains. \\n\\nWhen factories close, it takes longer to make goods and get them from the warehouse to the store, and prices go up. \\n\\nLook at cars. \\n\\nLast year, there weren't enough semiconductors to make all the cars that people wanted to buy. \\n\\nAnd guess what, prices of automobiles went up. \\n\\nSo—we have a choice. \\n\\nOne way to fight inflation is to drive down wages and make Americans poorer.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\nQuestion: Did the president mention who Ketanji Brown Jackson succeeded on the United States Supreme Court?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 997 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:17:12 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 634 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149998962 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_10020c391adf4774a988a32b2b21c51e + +{ + "id": "chatcmpl-ERFGKy5e866ZXjFCgp4QY2VqGSXXk", + "object": "chat.completion", + "created": 1790162232, + "model": "gpt-4.1-mini-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "Yes, the president mentioned that Ketanji Brown Jackson will continue Justice Stephen Breyer's legacy, indicating that she is succeeding Justice Breyer on the United States Supreme Court.", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 882, + "completion_tokens": 35, + "total_tokens": 917, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_46ce4fdcea" +} diff --git a/chains/testdata/TestLLMChain.httprr b/chains/testdata/TestLLMChain.httprr index caf8a4b46..3d273a808 100644 --- a/chains/testdata/TestLLMChain.httprr +++ b/chains/testdata/TestLLMChain.httprr @@ -1,5 +1,5 @@ httprr trace v1 -296 1637 +296 1621 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:11 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 230 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/chains/testdata/TestLLMChainWithGoogleAI.httprr b/chains/testdata/TestLLMChainWithGoogleAI.httprr index 2db6185dc..c89c0f1ca 100644 --- a/chains/testdata/TestLLMChainWithGoogleAI.httprr +++ b/chains/testdata/TestLLMChainWithGoogleAI.httprr @@ -1,25 +1,26 @@ httprr trace v1 -814 1541 -POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=test-api-key HTTP/1.1 +759 1016 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 477 +Content-Length: 439 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.24.0 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What is the capital of France"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"temperature":0.5,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK -Content-Length: 1162 +{"contents":[{"parts":[{"text":"What is the capital of France"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 605 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: application/json; charset=UTF-8 -Date: Thu, 22 Jan 2026 21:11:14 GMT +Date: Wed, 23 Sep 2026 09:29:43 GMT Server: scaffolding on HTTPServer2 -Server-Timing: gfet4t7; dur=415 +Server-Timing: gfet4t7; dur=465 Vary: Origin Vary: X-Origin Vary: Referer X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN +X-Gemini-Service-Tier: standard X-Xss-Protection: 0 { @@ -28,50 +29,28 @@ X-Xss-Protection: 0 "content": { "parts": [ { - "text": "The capital of France is **Paris**.\n" + "text": "The capital of France is **Paris**." } ], "role": "model" }, "finishReason": "STOP", - "safetyRatings": [ - { - "category": "HARM_CATEGORY_HATE_SPEECH", - "probability": "NEGLIGIBLE" - }, - { - "category": "HARM_CATEGORY_DANGEROUS_CONTENT", - "probability": "NEGLIGIBLE" - }, - { - "category": "HARM_CATEGORY_HARASSMENT", - "probability": "NEGLIGIBLE" - }, - { - "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", - "probability": "NEGLIGIBLE" - } - ], - "avgLogprobs": -0.0259782075881958 + "index": 0 } ], "usageMetadata": { - "promptTokenCount": 6, - "candidatesTokenCount": 9, - "totalTokenCount": 15, + "promptTokenCount": 7, + "candidatesTokenCount": 8, + "totalTokenCount": 33, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 6 + "tokenCount": 7 } ], - "candidatesTokensDetails": [ - { - "modality": "TEXT", - "tokenCount": 9 - } - ] + "thoughtsTokenCount": 18, + "serviceTier": "standard" }, - "modelVersion": "gemini-2.0-flash", - "responseId": "cZJyaabxNM_QjMcPl_6ZyA8" + "modelVersion": "gemini-2.5-flash", + "responseId": "B5yzarrPJKOrxN8PhPm14AI" } diff --git a/chains/testdata/TestLLMMath.httprr b/chains/testdata/TestLLMMath.httprr index c8e74c98b..ea830186f 100644 --- a/chains/testdata/TestLLMMath.httprr +++ b/chains/testdata/TestLLMMath.httprr @@ -1,5 +1,5 @@ httprr trace v1 -698 1750 +698 1734 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:10 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 646 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/chains/testdata/TestMapReduceQA.httprr b/chains/testdata/TestMapReduceQA.httprr index 3a62e493d..19f0f9aaa 100644 --- a/chains/testdata/TestMapReduceQA.httprr +++ b/chains/testdata/TestMapReduceQA.httprr @@ -1,5 +1,5 @@ httprr trace v1 -912 1631 +912 1615 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:34 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 156 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -67,7 +67,7 @@ X-Request-Id: req_ff564b24538b40cca3599465a4b06cda "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -813 1704 +813 1688 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -84,7 +84,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:34 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 222 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -135,7 +135,7 @@ X-Request-Id: req_6b618442dc224dec8737d774b8f342b1 "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -810 1691 +810 1675 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -152,7 +152,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:34 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 280 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -203,7 +203,7 @@ X-Request-Id: req_5f4b3f21c44046c7a8e28df09fb24950 "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -833 1704 +833 1688 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -220,7 +220,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:34 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 297 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -271,7 +271,7 @@ X-Request-Id: req_a7dd85a3d25c4ee7be05e5e487141792 "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -748 1683 +748 1667 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -288,7 +288,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:34 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 356 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -339,7 +339,7 @@ X-Request-Id: req_1882c182579048c9b703413ea16b7095 "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -957 1667 +957 1651 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -356,7 +356,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:35 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 232 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -407,7 +407,7 @@ X-Request-Id: req_db291d449f4b420586b5fe4ff1045070 "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -780 1667 +780 1651 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -424,7 +424,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:35 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 367 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -475,7 +475,7 @@ X-Request-Id: req_71f179a844f2465baa14fc7284c2d14b "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -833 1718 +833 1702 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -492,7 +492,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:35 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 346 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -543,7 +543,7 @@ X-Request-Id: req_976e7eb43ad64f489c919cb718aa44eb "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -993 1766 +993 1750 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -560,7 +560,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:35 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 464 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -611,7 +611,7 @@ X-Request-Id: req_7106ef00e4174a3780f569e6f76dbcc5 "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -967 1750 +967 1734 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -628,7 +628,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:35 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 437 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -679,7 +679,7 @@ X-Request-Id: req_bc131077299a4405820f55fa53d1b617 "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -828 1679 +828 1663 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -696,7 +696,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:37 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 261 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -747,7 +747,7 @@ X-Request-Id: req_fd9c0bcf7bb046c78e8ae258adbad086 "service_tier": "default", "system_fingerprint": "fp_7f8eb7d1f9" } -740 1706 +740 1690 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -764,7 +764,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:37 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 335 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -815,7 +815,7 @@ X-Request-Id: req_79c0c643aa3245119e076b60caa9fe98 "service_tier": "default", "system_fingerprint": "fp_fe84ea9799" } -676 1685 +676 1669 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -832,7 +832,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:37 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 371 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -883,7 +883,7 @@ X-Request-Id: req_a2ef86416b9a470c8a43a7a616196dd1 "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -2892 1636 +2892 1620 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -900,7 +900,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:38 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 176 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/chains/testdata/TestMapReduceSummarization.httprr b/chains/testdata/TestMapReduceSummarization.httprr index 754d5d099..f8433449b 100644 --- a/chains/testdata/TestMapReduceSummarization.httprr +++ b/chains/testdata/TestMapReduceSummarization.httprr @@ -1,5 +1,5 @@ httprr trace v1 -673 1710 +673 1694 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:12:16 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 287 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -67,7 +67,7 @@ X-Request-Id: req_c0a7599ca70c4443aad7ac6400f74ab1 "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -775 1711 +775 1695 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -84,7 +84,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:12:16 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 310 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -135,7 +135,7 @@ X-Request-Id: req_6a6fc8a9fa0247d88def7a1e649f42cf "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -676 1744 +676 1728 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -152,7 +152,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:12:16 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 371 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -203,7 +203,7 @@ X-Request-Id: req_1280b6cd3f69467390035e2b89222b07 "service_tier": "default", "system_fingerprint": "fp_7f8eb7d1f9" } -696 1750 +696 1734 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -220,7 +220,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:12:16 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 355 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -271,7 +271,7 @@ X-Request-Id: req_cbdd69bdf18b495c83e6d9e223cc7e81 "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -611 1744 +611 1728 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -288,7 +288,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:12:16 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 385 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -339,7 +339,7 @@ X-Request-Id: req_47958f07e05648e488639b2d9ed4c46b "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -643 1754 +643 1738 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -356,7 +356,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:12:17 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 357 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -407,7 +407,7 @@ X-Request-Id: req_050b04406f4442b78fefe6ec6e45a905 "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -820 1726 +820 1710 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -424,7 +424,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:12:17 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 359 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -475,7 +475,7 @@ X-Request-Id: req_2926ae26a12f49dca36b73dcc1280dee "service_tier": "default", "system_fingerprint": "fp_7f8eb7d1f9" } -856 1798 +856 1782 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -492,7 +492,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:12:17 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 411 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -543,7 +543,7 @@ X-Request-Id: req_4e521affd8024775bd4deef58cdad40b "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -696 1782 +696 1766 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -560,7 +560,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:12:17 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 376 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -611,7 +611,7 @@ X-Request-Id: req_d7621ba943d0484b93ab468bbf6344c7 "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -830 1783 +830 1767 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -628,7 +628,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:12:18 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 422 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -679,7 +679,7 @@ X-Request-Id: req_ee8f531e4aaf4e928e6c879809951735 "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -539 1726 +539 1710 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -696,7 +696,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:12:19 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 325 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -747,7 +747,7 @@ X-Request-Id: req_996f1cbbbd6b4d4ebb32b6aeb274fd33 "service_tier": "default", "system_fingerprint": "fp_fe84ea9799" } -691 1763 +691 1747 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -764,7 +764,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:12:19 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 370 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -815,7 +815,7 @@ X-Request-Id: req_2a4ed55a698049ccb1ab3a6b4fd6d593 "service_tier": "default", "system_fingerprint": "fp_7f8eb7d1f9" } -603 1789 +603 1773 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -832,7 +832,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:12:19 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 531 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -883,7 +883,7 @@ X-Request-Id: req_cfaad0a44e5943e7878839b706a01365 "service_tier": "default", "system_fingerprint": "fp_fe84ea9799" } -3433 2091 +3433 2075 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -900,7 +900,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:12:21 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 844 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/chains/testdata/TestMapRerankQA.httprr b/chains/testdata/TestMapRerankQA.httprr new file mode 100644 index 000000000..21a20806e --- /dev/null +++ b/chains/testdata/TestMapRerankQA.httprr @@ -0,0 +1,898 @@ +httprr trace v1 +1901 1679 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 1698 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\nIn addition to giving an answer, also return a score of how fully it answered the user's question. This should be in the following format:\nQuestion: [question here]\nHelpful Answer: [answer here]\nScore: [score between 0 and 100]\nHow to determine the score:\n- Higher is a better answer\n- Better responds fully to the asked question, with sufficient level of detail\n- If you do not know the answer based on the context, that should be a score of 0\n- Don't be overconfident!\nExample #1\nContext:\n---------\nApples are red\n---------\nQuestion: what color are apples?\nHelpful Answer: red\nScore: 100\nExample #2\nContext:\n---------\nit was night and the witness forgot his glasses. he was not sure if it was a sports car or an suv\n---------\nQuestion: what type was the car?\nHelpful Answer: a sports car or an suv\nScore: 60\nExample #3\nContext:\n---------\nPears are either red or orange\n---------\nQuestion: what color are apples?\nHelpful Answer: This document does not answer the question\nScore: 0\nBegin!\nContext:\n---------\nOnce upon a time, in a charming little village nestled deep within the enchanted forest, lived a small mouse named Oliver. Oliver was unlike the other mice in the village. While they scurried and chattered happily amongst themselves, Oliver felt a longing for something more, a yearning for adventure and new friendships beyond the familiar mouse tunnels.\n---------\nQuestion: What is the name of the lion?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 854 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:40:56 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 639 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999600 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_43aca7b35a1848bdbfb1dc3857daa92d + +{ + "id": "chatcmpl-ERFdH0noyQq0chdVIDIx3AYvFNgXt", + "object": "chat.completion", + "created": 1790163655, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "I don't know the name of the lion.\nScore: 0", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 362, + "completion_tokens": 13, + "total_tokens": 375, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_0b80e335b8" +} +1881 1736 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 1678 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\nIn addition to giving an answer, also return a score of how fully it answered the user's question. This should be in the following format:\nQuestion: [question here]\nHelpful Answer: [answer here]\nScore: [score between 0 and 100]\nHow to determine the score:\n- Higher is a better answer\n- Better responds fully to the asked question, with sufficient level of detail\n- If you do not know the answer based on the context, that should be a score of 0\n- Don't be overconfident!\nExample #1\nContext:\n---------\nApples are red\n---------\nQuestion: what color are apples?\nHelpful Answer: red\nScore: 100\nExample #2\nContext:\n---------\nit was night and the witness forgot his glasses. he was not sure if it was a sports car or an suv\n---------\nQuestion: what type was the car?\nHelpful Answer: a sports car or an suv\nScore: 60\nExample #3\nContext:\n---------\nPears are either red or orange\n---------\nQuestion: what color are apples?\nHelpful Answer: This document does not answer the question\nScore: 0\nBegin!\nContext:\n---------\nOne sunny morning, as the golden rays of the sun danced through the treetops, Oliver decided it was time to embark on a grand journey to find new friends who shared his thirst for excitement. With a determined gleam in his eye, he packed a tiny satchel filled with cheese, a sturdy walking stick, and bid farewell to his mouse friends.\n---------\nQuestion: What is the name of the lion?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 911 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:40:58 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 657 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999605 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_70eea1acacce48c8bda17f4afa866865 + +{ + "id": "chatcmpl-ERFdJ3pgKasGiRMesrtQwfA4bWjwR", + "object": "chat.completion", + "created": 1790163657, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "Helpful Answer: The context does not mention a lion, so I do not know the name of any lion.\nScore: 0", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 367, + "completion_tokens": 26, + "total_tokens": 393, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_0b80e335b8" +} +1878 1659 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 1675 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\nIn addition to giving an answer, also return a score of how fully it answered the user's question. This should be in the following format:\nQuestion: [question here]\nHelpful Answer: [answer here]\nScore: [score between 0 and 100]\nHow to determine the score:\n- Higher is a better answer\n- Better responds fully to the asked question, with sufficient level of detail\n- If you do not know the answer based on the context, that should be a score of 0\n- Don't be overconfident!\nExample #1\nContext:\n---------\nApples are red\n---------\nQuestion: what color are apples?\nHelpful Answer: red\nScore: 100\nExample #2\nContext:\n---------\nit was night and the witness forgot his glasses. he was not sure if it was a sports car or an suv\n---------\nQuestion: what type was the car?\nHelpful Answer: a sports car or an suv\nScore: 60\nExample #3\nContext:\n---------\nPears are either red or orange\n---------\nQuestion: what color are apples?\nHelpful Answer: This document does not answer the question\nScore: 0\nBegin!\nContext:\n---------\nVenturing deeper into the forest, Oliver's heart raced with anticipation. His tiny paws crunched on fallen leaves as he journeyed through the dense undergrowth, marveling at the vibrant flora and listening to the whimsical songs of birds. It was then that he stumbled upon a clearing where a small pond shimmered under the sunlight.\n---------\nQuestion: What is the name of the lion?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 834 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:41:00 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 423 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999605 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_3a039dd41b48470f943b59592f5ddeed + +{ + "id": "chatcmpl-ERFdLYkQ0N5CbSHpjbtkhSTXMJOyu", + "object": "chat.completion", + "created": 1790163659, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "I don't know. \nScore: 0", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 361, + "completion_tokens": 9, + "total_tokens": 370, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_0b80e335b8" +} +1980 1693 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 1777 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\nIn addition to giving an answer, also return a score of how fully it answered the user's question. This should be in the following format:\nQuestion: [question here]\nHelpful Answer: [answer here]\nScore: [score between 0 and 100]\nHow to determine the score:\n- Higher is a better answer\n- Better responds fully to the asked question, with sufficient level of detail\n- If you do not know the answer based on the context, that should be a score of 0\n- Don't be overconfident!\nExample #1\nContext:\n---------\nApples are red\n---------\nQuestion: what color are apples?\nHelpful Answer: red\nScore: 100\nExample #2\nContext:\n---------\nit was night and the witness forgot his glasses. he was not sure if it was a sports car or an suv\n---------\nQuestion: what type was the car?\nHelpful Answer: a sports car or an suv\nScore: 60\nExample #3\nContext:\n---------\nPears are either red or orange\n---------\nQuestion: what color are apples?\nHelpful Answer: This document does not answer the question\nScore: 0\nBegin!\nContext:\n---------\nAs Oliver approached the pond, he noticed a majestic lion drinking from the water's edge. The lion, named Leo, had a regal presence and a gentle smile. Oliver's heart fluttered with excitement at the thought of making friends with such a magnificent creature.\n\n\"Hello there, noble lion! My name is Oliver, and I'm on a quest to find new friends. Might you be interested in joining me?\" Oliver squeaked, his voice filled with hope.\n---------\nQuestion: What is the name of the lion?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 868 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:41:02 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 841 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999580 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_5e28a5e566744e5087487c1ba82dc42e + +{ + "id": "chatcmpl-ERFdN198uwfynrQotpmYENrKebCSq", + "object": "chat.completion", + "created": 1790163661, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "Helpful Answer: The name of the lion is Leo. \nScore: 100", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 387, + "completion_tokens": 16, + "total_tokens": 403, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_0b80e335b8" +} +1816 1677 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 1613 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\nIn addition to giving an answer, also return a score of how fully it answered the user's question. This should be in the following format:\nQuestion: [question here]\nHelpful Answer: [answer here]\nScore: [score between 0 and 100]\nHow to determine the score:\n- Higher is a better answer\n- Better responds fully to the asked question, with sufficient level of detail\n- If you do not know the answer based on the context, that should be a score of 0\n- Don't be overconfident!\nExample #1\nContext:\n---------\nApples are red\n---------\nQuestion: what color are apples?\nHelpful Answer: red\nScore: 100\nExample #2\nContext:\n---------\nit was night and the witness forgot his glasses. he was not sure if it was a sports car or an suv\n---------\nQuestion: what type was the car?\nHelpful Answer: a sports car or an suv\nScore: 60\nExample #3\nContext:\n---------\nPears are either red or orange\n---------\nQuestion: what color are apples?\nHelpful Answer: This document does not answer the question\nScore: 0\nBegin!\nContext:\n---------\nLeo raised his magnificent head, his golden eyes sparkling with curiosity. \"Greetings, Oliver! I must admit, I've never met a mouse with such courage. I would be honored to accompany you on your noble quest. Together, we shall forge an unbreakable bond of friendship!\"\n---------\nQuestion: What is the name of the lion?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 852 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:41:04 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 752 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999622 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_6c15cc6b52cf4994b7921021597f3816 + +{ + "id": "chatcmpl-ERFdQO87SvZTnXn6FAX8UbBuO57T6", + "object": "chat.completion", + "created": 1790163664, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "The name of the lion is Leo. \nScore: 100", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 351, + "completion_tokens": 13, + "total_tokens": 364, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_0b80e335b8" +} +1848 1659 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 1645 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\nIn addition to giving an answer, also return a score of how fully it answered the user's question. This should be in the following format:\nQuestion: [question here]\nHelpful Answer: [answer here]\nScore: [score between 0 and 100]\nHow to determine the score:\n- Higher is a better answer\n- Better responds fully to the asked question, with sufficient level of detail\n- If you do not know the answer based on the context, that should be a score of 0\n- Don't be overconfident!\nExample #1\nContext:\n---------\nApples are red\n---------\nQuestion: what color are apples?\nHelpful Answer: red\nScore: 100\nExample #2\nContext:\n---------\nit was night and the witness forgot his glasses. he was not sure if it was a sports car or an suv\n---------\nQuestion: what type was the car?\nHelpful Answer: a sports car or an suv\nScore: 60\nExample #3\nContext:\n---------\nPears are either red or orange\n---------\nQuestion: what color are apples?\nHelpful Answer: This document does not answer the question\nScore: 0\nBegin!\nContext:\n---------\nWith Leo by his side, Oliver's adventure took on a new dimension. The unlikely duo traversed verdant meadows, climbed towering trees, and braved treacherous rivers. Along their journey, they encountered a whimsical frog named Freddie, who was a skilled hopper and an expert in finding hidden treasures.\n---------\nQuestion: What is the name of the lion?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 834 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:41:06 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 555 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999612 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_f153ad4d61224e5696b902ce070ac09e + +{ + "id": "chatcmpl-ERFdS3srivkMsUfFJVvRFzG5whU20", + "object": "chat.completion", + "created": 1790163666, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "I don't know. \nScore: 0", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 357, + "completion_tokens": 9, + "total_tokens": 366, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_0b80e335b8" +} +2061 1759 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 1858 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\nIn addition to giving an answer, also return a score of how fully it answered the user's question. This should be in the following format:\nQuestion: [question here]\nHelpful Answer: [answer here]\nScore: [score between 0 and 100]\nHow to determine the score:\n- Higher is a better answer\n- Better responds fully to the asked question, with sufficient level of detail\n- If you do not know the answer based on the context, that should be a score of 0\n- Don't be overconfident!\nExample #1\nContext:\n---------\nApples are red\n---------\nQuestion: what color are apples?\nHelpful Answer: red\nScore: 100\nExample #2\nContext:\n---------\nit was night and the witness forgot his glasses. he was not sure if it was a sports car or an suv\n---------\nQuestion: what type was the car?\nHelpful Answer: a sports car or an suv\nScore: 60\nExample #3\nContext:\n---------\nPears are either red or orange\n---------\nQuestion: what color are apples?\nHelpful Answer: This document does not answer the question\nScore: 0\nBegin!\nContext:\n---------\nFreddie, with his emerald-green skin and mischievous grin, eagerly joined their quest. \"Ribbit! Oliver, my dear fellow, it seems that fate has brought us together. Allow me to lend my amphibious skills to our merry group. Together, we shall make quite the team!\"\n\nWith Oliver, Leo, and Freddie united, their bond grew stronger with each passing day. They shared laughter, sang songs, and told tales around the campfire. Oliver had finally found the true meaning of friendship, and his heart was filled with joy.\n---------\nQuestion: What is the name of the lion?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 934 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:41:08 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 718 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999560 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_d180e83734a543d5b04c16df63827e06 + +{ + "id": "chatcmpl-ERFdUErWMfog6TH72CKxskUM85k4b", + "object": "chat.completion", + "created": 1790163668, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "Question: What is the name of the lion?\nHelpful Answer: The provided context does not mention the name of a lion.\nScore: 0", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 407, + "completion_tokens": 29, + "total_tokens": 436, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_0b80e335b8" +} +2025 1657 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 1822 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\nIn addition to giving an answer, also return a score of how fully it answered the user's question. This should be in the following format:\nQuestion: [question here]\nHelpful Answer: [answer here]\nScore: [score between 0 and 100]\nHow to determine the score:\n- Higher is a better answer\n- Better responds fully to the asked question, with sufficient level of detail\n- If you do not know the answer based on the context, that should be a score of 0\n- Don't be overconfident!\nExample #1\nContext:\n---------\nApples are red\n---------\nQuestion: what color are apples?\nHelpful Answer: red\nScore: 100\nExample #2\nContext:\n---------\nit was night and the witness forgot his glasses. he was not sure if it was a sports car or an suv\n---------\nQuestion: what type was the car?\nHelpful Answer: a sports car or an suv\nScore: 60\nExample #3\nContext:\n---------\nPears are either red or orange\n---------\nQuestion: what color are apples?\nHelpful Answer: This document does not answer the question\nScore: 0\nBegin!\nContext:\n---------\nBut their adventure was far from over. As they ventured deeper into the forest, they stumbled upon a towering volcano, spewing molten lava into the sky. From the fiery depths emerged a fearsome lava monster, its fiery eyes glaring with malevolence.\n\nOliver, Leo, and Freddie stood face to face with the menacing creature, their hearts pounding with a mixture of fear and determination. Oliver's quick wit came to the forefront, and he hatched a plan to defeat the lava monster.\n---------\nQuestion: What is the name of the lion?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 832 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:41:10 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 565 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999570 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_dd695ef61f6945d08d3bf811953660be + +{ + "id": "chatcmpl-ERFdW96p7RpstWqj2wbnNxJXDep7b", + "object": "chat.completion", + "created": 1790163670, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "I don't know.\nScore: 0", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 394, + "completion_tokens": 8, + "total_tokens": 402, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_0b80e335b8" +} +1901 1961 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 1698 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\nIn addition to giving an answer, also return a score of how fully it answered the user's question. This should be in the following format:\nQuestion: [question here]\nHelpful Answer: [answer here]\nScore: [score between 0 and 100]\nHow to determine the score:\n- Higher is a better answer\n- Better responds fully to the asked question, with sufficient level of detail\n- If you do not know the answer based on the context, that should be a score of 0\n- Don't be overconfident!\nExample #1\nContext:\n---------\nApples are red\n---------\nQuestion: what color are apples?\nHelpful Answer: red\nScore: 100\nExample #2\nContext:\n---------\nit was night and the witness forgot his glasses. he was not sure if it was a sports car or an suv\n---------\nQuestion: what type was the car?\nHelpful Answer: a sports car or an suv\nScore: 60\nExample #3\nContext:\n---------\nPears are either red or orange\n---------\nQuestion: what color are apples?\nHelpful Answer: This document does not answer the question\nScore: 0\nBegin!\nContext:\n---------\n\"Listen, my friends! We must work together, combining our unique strengths and abilities,\" Oliver declared with conviction. \"Leo, with your strength and courage, distract the monster while Freddie and I search for its vulnerable spot. Freddie, your agility and quick reflexes will guide us through the treacherous terrain. Together, we shall triumph!\"\n---------\nQuestion: What is the name of the lion?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 1134 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:41:13 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 1481 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999602 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_4f54c2c0a714485f8dc202def7ef7015 + +{ + "id": "chatcmpl-ERFdYgNbHoMvMtyBPbnrVYzTVhJkJ", + "object": "chat.completion", + "created": 1790163672, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "I don't know. The text mentions a character named Leo, who is implied to be a lion because of the context (\"Leo\" and the qualities of strength and courage typically associated with a lion,\" but this is an assumption). However, the context does not explicitly state Leo's species or name the lion specifically. \nScore: 0", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 364, + "completion_tokens": 67, + "total_tokens": 431, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_0b80e335b8" +} +2035 1731 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 1832 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\nIn addition to giving an answer, also return a score of how fully it answered the user's question. This should be in the following format:\nQuestion: [question here]\nHelpful Answer: [answer here]\nScore: [score between 0 and 100]\nHow to determine the score:\n- Higher is a better answer\n- Better responds fully to the asked question, with sufficient level of detail\n- If you do not know the answer based on the context, that should be a score of 0\n- Don't be overconfident!\nExample #1\nContext:\n---------\nApples are red\n---------\nQuestion: what color are apples?\nHelpful Answer: red\nScore: 100\nExample #2\nContext:\n---------\nit was night and the witness forgot his glasses. he was not sure if it was a sports car or an suv\n---------\nQuestion: what type was the car?\nHelpful Answer: a sports car or an suv\nScore: 60\nExample #3\nContext:\n---------\nPears are either red or orange\n---------\nQuestion: what color are apples?\nHelpful Answer: This document does not answer the question\nScore: 0\nBegin!\nContext:\n---------\nAnd so, the courageous trio battled the lava monster. Leo roared, drawing the monster's attention, while Freddie and Oliver scurried through the maze of fiery rocks, narrowly dodging molten lava. Finally, they discovered the creature's weak spot—a tiny gem embedded in its chest.\n\nWith their combined efforts, they struck the vulnerable spot, causing the monster to crumble and dissolve into a cascade of ash. The forest rejoiced, as the once-threatening presence was banished forever.\n---------\nQuestion: What is the name of the lion?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 906 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:41:15 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 633 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999565 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_a6211e3e8cc847c8900ab7ddcf4a85d4 + +{ + "id": "chatcmpl-ERFdaNVchEyeWKgeSI8hfzy3KvqlY", + "object": "chat.completion", + "created": 1790163674, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "Question: What is the name of the lion? \nHelpful Answer: The lion's name is Leo. \nScore: 100", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 392, + "completion_tokens": 26, + "total_tokens": 418, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_0b80e335b8" +} +1808 1774 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 1605 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\nIn addition to giving an answer, also return a score of how fully it answered the user's question. This should be in the following format:\nQuestion: [question here]\nHelpful Answer: [answer here]\nScore: [score between 0 and 100]\nHow to determine the score:\n- Higher is a better answer\n- Better responds fully to the asked question, with sufficient level of detail\n- If you do not know the answer based on the context, that should be a score of 0\n- Don't be overconfident!\nExample #1\nContext:\n---------\nApples are red\n---------\nQuestion: what color are apples?\nHelpful Answer: red\nScore: 100\nExample #2\nContext:\n---------\nit was night and the witness forgot his glasses. he was not sure if it was a sports car or an suv\n---------\nQuestion: what type was the car?\nHelpful Answer: a sports car or an suv\nScore: 60\nExample #3\nContext:\n---------\nPears are either red or orange\n---------\nQuestion: what color are apples?\nHelpful Answer: This document does not answer the question\nScore: 0\nBegin!\nContext:\n---------\nAs Oliver, Leo, and Freddie emerged victorious, the animals of the enchanted forest gathered to celebrate their bravery. The mouse who had set out on a journey to find new friends had not only discovered the true meaning of friendship but had also become a hero.\n---------\nQuestion: What is the name of the lion?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 949 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:41:17 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 854 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999622 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_eccb90afe72d4e61bb431541e8cd521e + +{ + "id": "chatcmpl-ERFdcK6wE9r65W1qVKg0QnsWbTFT8", + "object": "chat.completion", + "created": 1790163676, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "The context does not mention any lion's name. \nHelpful Answer: The name of the lion is not provided in the given information. \nScore: 0", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 346, + "completion_tokens": 32, + "total_tokens": 378, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_0b80e335b8" +} +1896 1712 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 1693 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\nIn addition to giving an answer, also return a score of how fully it answered the user's question. This should be in the following format:\nQuestion: [question here]\nHelpful Answer: [answer here]\nScore: [score between 0 and 100]\nHow to determine the score:\n- Higher is a better answer\n- Better responds fully to the asked question, with sufficient level of detail\n- If you do not know the answer based on the context, that should be a score of 0\n- Don't be overconfident!\nExample #1\nContext:\n---------\nApples are red\n---------\nQuestion: what color are apples?\nHelpful Answer: red\nScore: 100\nExample #2\nContext:\n---------\nit was night and the witness forgot his glasses. he was not sure if it was a sports car or an suv\n---------\nQuestion: what type was the car?\nHelpful Answer: a sports car or an suv\nScore: 60\nExample #3\nContext:\n---------\nPears are either red or orange\n---------\nQuestion: what color are apples?\nHelpful Answer: This document does not answer the question\nScore: 0\nBegin!\nContext:\n---------\nFrom that day forward, Oliver, Leo, and Freddie became inseparable companions, sharing their tales of triumph and inspiring others with their courage and kindness. Their adventures continued, and their friendships blossomed, reminding everyone in the enchanted forest that no matter how small or different you may be, true friendship knows no bounds.\n---------\nQuestion: What is the name of the lion?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 887 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:41:19 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 560 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999600 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_1826180cfd2e4b00a571af47e9deed20 + +{ + "id": "chatcmpl-ERFdemKQfYAWirQuqtzVfcJcH9Mvx", + "object": "chat.completion", + "created": 1790163678, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "I do not know the name of the lion based on the provided context.\n\nScore: 0", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 358, + "completion_tokens": 19, + "total_tokens": 377, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_0b80e335b8" +} +1744 1702 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 1541 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\nIn addition to giving an answer, also return a score of how fully it answered the user's question. This should be in the following format:\nQuestion: [question here]\nHelpful Answer: [answer here]\nScore: [score between 0 and 100]\nHow to determine the score:\n- Higher is a better answer\n- Better responds fully to the asked question, with sufficient level of detail\n- If you do not know the answer based on the context, that should be a score of 0\n- Don't be overconfident!\nExample #1\nContext:\n---------\nApples are red\n---------\nQuestion: what color are apples?\nHelpful Answer: red\nScore: 100\nExample #2\nContext:\n---------\nit was night and the witness forgot his glasses. he was not sure if it was a sports car or an suv\n---------\nQuestion: what type was the car?\nHelpful Answer: a sports car or an suv\nScore: 60\nExample #3\nContext:\n---------\nPears are either red or orange\n---------\nQuestion: what color are apples?\nHelpful Answer: This document does not answer the question\nScore: 0\nBegin!\nContext:\n---------\nAnd so, Oliver's story, filled with magic, friendship, and bravery, spread far and wide, becoming a timeless legend, whispered by generations of forest dwellers, enchanting both young and old alike.\n---------\nQuestion: What is the name of the lion?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 876 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 11:41:27 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 7136 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999640 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_037b75f792ef452692c88e97f8efe64f + +{ + "id": "chatcmpl-ERFdg7QAv1ECGNvilMFQHOU2lhDHi", + "object": "chat.completion", + "created": 1790163680, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "I don't know the answer based on the provided context. \nScore: 0", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 336, + "completion_tokens": 16, + "total_tokens": 352, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_0b80e335b8" +} diff --git a/chains/testdata/TestRefineQA.httprr b/chains/testdata/TestRefineQA.httprr index c524dd119..90ba592ee 100644 --- a/chains/testdata/TestRefineQA.httprr +++ b/chains/testdata/TestRefineQA.httprr @@ -1,5 +1,5 @@ httprr trace v1 -849 1621 +849 1605 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:15 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 153 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -67,7 +67,7 @@ X-Request-Id: req_23d053eac51d4829a04885bca9908ec4 "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -995 1685 +995 1669 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -84,7 +84,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:17 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 353 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -135,7 +135,7 @@ X-Request-Id: req_466184182e354b4fba8e56e394a089fa "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -1055 1685 +1055 1669 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -152,7 +152,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:18 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 324 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -203,7 +203,7 @@ X-Request-Id: req_69cd51d4adbd43f0b88a2bd347b16bd8 "service_tier": "default", "system_fingerprint": "fp_7f8eb7d1f9" } -1157 1631 +1157 1615 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -220,7 +220,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:20 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 242 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -271,7 +271,7 @@ X-Request-Id: req_65032217542e44799196cc4ff04a9c24 "service_tier": "default", "system_fingerprint": "fp_7f8eb7d1f9" } -940 1631 +940 1615 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -288,7 +288,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:21 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 214 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -339,7 +339,7 @@ X-Request-Id: req_5115847e8c2843fc97887e6d1a998ddc "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -972 1631 +972 1615 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -356,7 +356,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:22 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 194 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -407,7 +407,7 @@ X-Request-Id: req_0ec31d8e63f049968b322632169874c7 "service_tier": "default", "system_fingerprint": "fp_fe84ea9799" } -1185 1631 +1185 1615 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -424,7 +424,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:24 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 282 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -475,7 +475,7 @@ X-Request-Id: req_71debcfa24fd40b29a50cb48e5f399be "service_tier": "default", "system_fingerprint": "fp_7f8eb7d1f9" } -1149 1631 +1149 1615 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -492,7 +492,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:25 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 229 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -543,7 +543,7 @@ X-Request-Id: req_fcca0359346e4cbd80c51726afea8581 "service_tier": "default", "system_fingerprint": "fp_fe84ea9799" } -1025 1631 +1025 1615 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -560,7 +560,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:27 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 166 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -611,7 +611,7 @@ X-Request-Id: req_2398797159f649c5bcf51a430a3f6c86 "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -1159 1631 +1159 1615 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -628,7 +628,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:28 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 218 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -679,7 +679,7 @@ X-Request-Id: req_592dc34a61fc4d71adf9daed83c7d573 "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -932 1631 +932 1615 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -696,7 +696,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:29 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 143 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -747,7 +747,7 @@ X-Request-Id: req_5f38a40c30a14708bc8d73bd29830e9a "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -1020 1631 +1020 1615 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -764,7 +764,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:31 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 223 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -815,7 +815,7 @@ X-Request-Id: req_42dc5b16ace64fd4a11c216bd957f73a "service_tier": "default", "system_fingerprint": "fp_fe84ea9799" } -868 1631 +868 1615 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -832,7 +832,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:32 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 235 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/chains/testdata/TestRefineSummarization.httprr b/chains/testdata/TestRefineSummarization.httprr index 3f481ae62..b4b5b8242 100644 --- a/chains/testdata/TestRefineSummarization.httprr +++ b/chains/testdata/TestRefineSummarization.httprr @@ -1,5 +1,5 @@ httprr trace v1 -696 1729 +696 1713 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:46 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 317 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -67,7 +67,7 @@ X-Request-Id: req_38657f7c59364503b7bd7d360c4610a2 "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -1107 1811 +1107 1795 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -84,7 +84,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:48 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 496 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -135,7 +135,7 @@ X-Request-Id: req_658cf445887f4e56b206f9e50c78241a "service_tier": "default", "system_fingerprint": "fp_fe84ea9799" } -1184 1907 +1184 1891 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -152,7 +152,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:50 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 653 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -203,7 +203,7 @@ X-Request-Id: req_ff22b2dcb2644da09f1cf9be900d499e "service_tier": "default", "system_fingerprint": "fp_fe84ea9799" } -1383 2000 +1383 1984 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -220,7 +220,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:52 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 965 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -271,7 +271,7 @@ X-Request-Id: req_fd50f679eb4e48f3aa9766cbb95b0086 "service_tier": "default", "system_fingerprint": "fp_fe84ea9799" } -1312 2131 +1312 2115 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -288,7 +288,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:54 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 791 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -339,7 +339,7 @@ X-Request-Id: req_f9ce4ff032ed4dfda540a39413030adc "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -1474 2195 +1474 2179 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -356,7 +356,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:56 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 1015 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -407,7 +407,7 @@ X-Request-Id: req_80ae1d364e6c4141b3db695c6ac14c53 "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -1749 2322 +1749 2306 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -424,7 +424,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:59 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 1925 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -475,7 +475,7 @@ X-Request-Id: req_91043f5ae83b4f0c86a95c20a286e112 "service_tier": "default", "system_fingerprint": "fp_7f8eb7d1f9" } -1840 2448 +1840 2432 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -492,7 +492,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:12:02 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 1404 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -543,7 +543,7 @@ X-Request-Id: req_2d1ddbf2de5f454c884a1dab691bf01e "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -1842 2522 +1842 2506 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -560,7 +560,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:12:04 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 1259 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -611,7 +611,7 @@ X-Request-Id: req_fdaa66007df046aa99943944dd66567e "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -2050 2441 +2050 2425 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -628,7 +628,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:12:07 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 1630 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -679,7 +679,7 @@ X-Request-Id: req_0e80bbd0edf04ce289895c9cfef26acb "service_tier": "default", "system_fingerprint": "fp_f0bc439dc3" } -1742 2215 +1742 2199 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -696,7 +696,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:12:09 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 1005 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -747,7 +747,7 @@ X-Request-Id: req_97a0a00d7c964693bc5197d52c9e5291 "service_tier": "default", "system_fingerprint": "fp_fe84ea9799" } -1604 2329 +1604 2313 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -764,7 +764,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:12:12 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 1152 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -815,7 +815,7 @@ X-Request-Id: req_2000d90bb895432ab86a908a2711013a "service_tier": "default", "system_fingerprint": "fp_7f8eb7d1f9" } -1566 2440 +1566 2424 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -832,7 +832,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:12:14 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 1503 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/chains/testdata/TestRetrievalQA.httprr b/chains/testdata/TestRetrievalQA.httprr index 1add5c56d..e22d552be 100644 --- a/chains/testdata/TestRetrievalQA.httprr +++ b/chains/testdata/TestRetrievalQA.httprr @@ -1,5 +1,5 @@ httprr trace v1 -522 1652 +522 1636 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:40 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 278 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/chains/testdata/TestRetrievalQAFromLLM.httprr b/chains/testdata/TestRetrievalQAFromLLM.httprr index 1a2b7cd75..a6b279410 100644 --- a/chains/testdata/TestRetrievalQAFromLLM.httprr +++ b/chains/testdata/TestRetrievalQAFromLLM.httprr @@ -1,5 +1,5 @@ httprr trace v1 -679 1616 +679 1600 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:41 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 196 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/chains/testdata/TestStuffDocuments.httprr b/chains/testdata/TestStuffDocuments.httprr index f3ed69ce1..5ed77cad7 100644 --- a/chains/testdata/TestStuffDocuments.httprr +++ b/chains/testdata/TestStuffDocuments.httprr @@ -1,5 +1,5 @@ httprr trace v1 -561 1756 +561 1740 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:43 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 408 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/chains/testdata/TestStuffSummarization.httprr b/chains/testdata/TestStuffSummarization.httprr index d26a85468..df0a22b9c 100644 --- a/chains/testdata/TestStuffSummarization.httprr +++ b/chains/testdata/TestStuffSummarization.httprr @@ -1,5 +1,5 @@ httprr trace v1 -6236 2029 +6236 2013 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 21:11:45 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 699 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/doc.go b/doc.go index de232ac38..1f4fc9403 100644 --- a/doc.go +++ b/doc.go @@ -161,11 +161,13 @@ // // Streaming responses: // -// stream, err := llm.GenerateContentStream(ctx, messages) -// for stream.Next() { -// chunk := stream.Value() -// fmt.Print(chunk.Choices[0].Content) -// } +// _, err := llm.GenerateContent(ctx, messages, +// llms.WithStreamingFunc(func(ctx context.Context, chunk streaming.Chunk) error { +// if chunk.Type == streaming.ChunkTypeText { +// fmt.Print(chunk.Content) +// } +// return nil +// })) // // Function calling: // diff --git a/docs/docs/getting-started/guide-chat.mdx b/docs/docs/getting-started/guide-chat.mdx index 4cc004920..18d6f568c 100644 --- a/docs/docs/getting-started/guide-chat.mdx +++ b/docs/docs/getting-started/guide-chat.mdx @@ -329,6 +329,7 @@ if err != nil { agent, err := agents.Initialize( llm, []tools.Tool{calculator, search}, + agents.ZeroShotReactDescription, agents.WithMaxIterations(5), ) if err != nil { diff --git a/docs/docs/getting-started/guide-gemini.mdx b/docs/docs/getting-started/guide-gemini.mdx index f077bab2c..c51c8f7b0 100644 --- a/docs/docs/getting-started/guide-gemini.mdx +++ b/docs/docs/getting-started/guide-gemini.mdx @@ -64,7 +64,7 @@ llm, err := googleai.New(ctx, - **Thinking**: on thinking-capable Gemini models, control reasoning per call with `llms.WithReasoning` (Gemini 3.x maps effort to a thinking level; 2.5 uses a token budget). `llms.WithReasoningDisabled()` turns thinking off where the model allows it. - **Structured output**: request schema-constrained JSON with `llms.WithStructuredOutput` — see the [googleai-structured-output-example](https://github.com/vxcontrol/langchaingo/tree/main-vxcontrol/examples/googleai-structured-output-example). -- **Vertex AI**: to run Gemini through Google Cloud Vertex AI instead of the AI Studio endpoint, use the `llms/googleai/vertex` package with `vertex.New(ctx, googleai.WithCloudProject(...), googleai.WithCloudLocation(...))`. +- **Vertex AI**: to run Gemini through Google Cloud Vertex AI instead of the AI Studio endpoint, use the `llms/googleai/vertex` package with `vertex.New(ctx, googleai.WithCloudProject(...), googleai.WithCloudLocation(...))`. Note that `llms.WithReasoningDisabled()` succeeds on this door only for models whose thinking is off unless asked for, where omitting the instruction is enough to disable it. On a model that thinks by default the door returns an error rather than pretending: the SDK it is pinned to has no field to carry the instruction. Use the AI Studio door when you need to turn thinking off on such a model. See [Configure LLM Providers](../how-to/configure-llm-providers.md) for the full set of options. diff --git a/docs/docs/how-to/configure-llm-providers.md b/docs/docs/how-to/configure-llm-providers.md index 606c20229..6c78e1bc2 100644 --- a/docs/docs/how-to/configure-llm-providers.md +++ b/docs/docs/how-to/configure-llm-providers.md @@ -164,7 +164,7 @@ llm, err := huggingface.New(huggingface.WithToken("your-hf-token")) ```go llm, err := huggingface.New( - huggingface.WithModel("microsoft/DialoGPT-medium"), + huggingface.WithModel("meta-llama/Llama-3.1-8B-Instruct"), huggingface.WithToken("your-hf-token"), ) ``` diff --git a/docs/docs/modules/model_io/models/llms/Integrations/bedrock.mdx b/docs/docs/modules/model_io/models/llms/Integrations/bedrock.mdx index 59238b5da..9be4ac46f 100644 --- a/docs/docs/modules/model_io/models/llms/Integrations/bedrock.mdx +++ b/docs/docs/modules/model_io/models/llms/Integrations/bedrock.mdx @@ -33,8 +33,11 @@ it explicitly with `bedrock.WithModelProvider`. Useful options: -- `bedrock.WithConverseAPI()` — use the unified Converse API (required for tool use, - structured output, and reasoning on supported models). +- `bedrock.WithConverseAPI()` — use the unified Converse API. Claude models support + tool use and reasoning on the default InvokeModel path as well; for every other + provider those features are only available through Converse. Structured output + works on both paths for the Claude models Bedrock serves it for (Opus 4.6 and 4.5, + Sonnet 4.6 and 4.5, Haiku 4.5). - `bedrock.WithAutomaticCaching()` — enable Anthropic prompt caching on supported Claude models. - `bedrock.WithClient(...)` — supply a preconfigured `*bedrockruntime.Client`. diff --git a/docs/docs/modules/model_io/models/llms/Integrations/groq.mdx b/docs/docs/modules/model_io/models/llms/Integrations/groq.mdx index 3471e17cf..9cceb760d 100644 --- a/docs/docs/modules/model_io/models/llms/Integrations/groq.mdx +++ b/docs/docs/modules/model_io/models/llms/Integrations/groq.mdx @@ -16,7 +16,7 @@ URL — no separate provider package is required. ## Prerequisites -- Go installed on your machine (version 1.24 or higher recommended). +- Go installed on your machine (version 1.26 or higher recommended). - A valid Groq API key. Obtain it by creating an account on the Groq platform and generating a new token. ## Installation diff --git a/docs/docs/modules/model_io/models/llms/Integrations/ollama.mdx b/docs/docs/modules/model_io/models/llms/Integrations/ollama.mdx index 8906cd825..7d3f32535 100644 --- a/docs/docs/modules/model_io/models/llms/Integrations/ollama.mdx +++ b/docs/docs/modules/model_io/models/llms/Integrations/ollama.mdx @@ -28,7 +28,10 @@ llm, err = ollama.New( ``` Ollama supports schema-constrained output through its native `format` field, wired -up by the provider-neutral `llms.WithStructuredOutput` option. +up by the provider-neutral `llms.WithStructuredOutput` option. Ollama Cloud ignores +that field, so a schema there is refused unless the client sets +`ollama.WithCloudStructuredOutputFallback()`: the schema then travels in the prompt +and the answer is validated locally. For a full walkthrough, see the [Ollama quickstart](/docs/getting-started/guide-ollama). diff --git a/docs/docs/modules/model_io/models/llms/index.mdx b/docs/docs/modules/model_io/models/llms/index.mdx index 603529fe3..4c6c386bc 100644 --- a/docs/docs/modules/model_io/models/llms/index.mdx +++ b/docs/docs/modules/model_io/models/llms/index.mdx @@ -72,5 +72,6 @@ Options passed to `GenerateContent` (or `llms.GenerateFromSinglePrompt`) work ac - **Structured output**: `llms.WithStructuredOutput` requests schema-constrained JSON and validates the response against your schema. - **Streaming**: `llms.WithStreamingFunc` receives a `streaming.Chunk` per token. - **Tools / function calling**: `llms.WithTools`. +- **Truncation**: `llms.WithFailOnTruncation` turns an answer cut short by the output-token limit into a typed error instead of a silently shortened result; the partial answer is returned alongside it, and `ContentChoice.Truncated` carries the same signal without the option. diff --git a/docs/docs/tutorials/code-reviewer.md b/docs/docs/tutorials/code-reviewer.md index e457b4e95..9454bc264 100644 --- a/docs/docs/tutorials/code-reviewer.md +++ b/docs/docs/tutorials/code-reviewer.md @@ -387,7 +387,7 @@ func (r NoGlobalVarsRule) Check(node ast.Node, fset *token.FileSet) []Issue { Create `Dockerfile`: ```dockerfile -FROM golang:1.24-alpine AS builder +FROM golang:1.26-alpine AS builder WORKDIR /app COPY . . RUN go build -o code-reviewer diff --git a/docs/docs/tutorials/smart-documentation.md b/docs/docs/tutorials/smart-documentation.md index 71d760fac..e4ef1c2fd 100644 --- a/docs/docs/tutorials/smart-documentation.md +++ b/docs/docs/tutorials/smart-documentation.md @@ -1238,7 +1238,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: - go-version: 1.24 + go-version: 1.26 - name: Generate Documentation env: diff --git a/embeddings/bedrock/bedrock.go b/embeddings/bedrock/bedrock.go index 2884d67f7..9439ee0c4 100644 --- a/embeddings/bedrock/bedrock.go +++ b/embeddings/bedrock/bedrock.go @@ -42,15 +42,15 @@ func (b *Bedrock) EmbedDocuments(ctx context.Context, texts []string) ([][]float provider := getProvider(b.ModelID) allEmbeds := make([][]float32, 0, len(texts)) - var embeddings [][]float32 + var embs [][]float32 var err error for _, batch := range batchedTexts { switch provider { case "amazon": - embeddings, err = FetchAmazonTextEmbeddings(ctx, b.client, b.ModelID, batch) + embs, err = FetchAmazonTextEmbeddings(ctx, b.client, b.ModelID, batch) case "cohere": - embeddings, err = FetchCohereTextEmbeddings(ctx, b.client, b.ModelID, batch, CohereInputTypeText) + embs, err = FetchCohereTextEmbeddings(ctx, b.client, b.ModelID, batch, CohereInputTypeText) default: err = errors.New("unsupported text embedding provider: " + provider) } @@ -58,7 +58,10 @@ func (b *Bedrock) EmbedDocuments(ctx context.Context, texts []string) ([][]float if err != nil { return nil, err } - allEmbeds = append(allEmbeds, embeddings...) + if err := embeddings.CheckEmbeddings(embs, len(batch)); err != nil { + return nil, err + } + allEmbeds = append(allEmbeds, embs...) } return allEmbeds, nil } @@ -66,14 +69,14 @@ func (b *Bedrock) EmbedDocuments(ctx context.Context, texts []string) ([][]float // EmbedQuery implements embeddings.Embedder // and generates an embedding for the supplied text. func (b *Bedrock) EmbedQuery(ctx context.Context, text string) ([]float32, error) { - var embeddings [][]float32 + var embs [][]float32 var err error switch provider := getProvider(b.ModelID); provider { case "amazon": - embeddings, err = FetchAmazonTextEmbeddings(ctx, b.client, b.ModelID, []string{text}) + embs, err = FetchAmazonTextEmbeddings(ctx, b.client, b.ModelID, []string{text}) case "cohere": - embeddings, err = FetchCohereTextEmbeddings(ctx, b.client, b.ModelID, []string{text}, CohereInputTypeQuery) + embs, err = FetchCohereTextEmbeddings(ctx, b.client, b.ModelID, []string{text}, CohereInputTypeQuery) default: err = errors.New("unsupported text embedding provider: " + provider) } @@ -81,7 +84,11 @@ func (b *Bedrock) EmbedQuery(ctx context.Context, text string) ([]float32, error if err != nil { return nil, err } - return embeddings[0], nil + if len(embs) == 0 { + return nil, embeddings.ErrNoEmbedding + } + + return embs[0], nil } var _ embeddings.Embedder = &Bedrock{} diff --git a/embeddings/bedrock/bedrock_test.go b/embeddings/bedrock/bedrock_test.go index 42a69985d..84b764933 100644 --- a/embeddings/bedrock/bedrock_test.go +++ b/embeddings/bedrock/bedrock_test.go @@ -14,16 +14,14 @@ import ( "github.com/stretchr/testify/require" ) +const replayRegion = "us-east-1" + func setUpTestWithTransport(rr *httprr.RecordReplay) (*bedrockruntime.Client, error) { // Configure request scrubbing to remove dynamic AWS headers rr.ScrubReq(func(req *http.Request) error { req.Header.Del("Amz-Sdk-Invocation-Id") req.Header.Del("Amz-Sdk-Request") req.Header.Del("X-Amz-Date") - // Scrub the actual AWS signature to make it reproducible - if auth := req.Header.Get("Authorization"); auth != "" { - req.Header.Set("Authorization", "AWS4-HMAC-SHA256 test-api-key") - } return nil }) @@ -37,9 +35,10 @@ func setUpTestWithTransport(rr *httprr.RecordReplay) (*bedrockruntime.Client, er // When replaying, provide fake credentials to avoid IMDS calls if !rr.Recording() { - cfgOpts = append(cfgOpts, config.WithCredentialsProvider( - &fakeCredentialsProvider{}, - )) + cfgOpts = append(cfgOpts, + config.WithRegion(replayRegion), + config.WithCredentialsProvider(&fakeCredentialsProvider{}), + ) } cfg, err := config.LoadDefaultConfig(context.Background(), cfgOpts...) @@ -47,7 +46,9 @@ func setUpTestWithTransport(rr *httprr.RecordReplay) (*bedrockruntime.Client, er return nil, err } - client := bedrockruntime.NewFromConfig(cfg) + client := bedrockruntime.NewFromConfig(cfg, func(o *bedrockruntime.Options) { + o.AuthSchemePreference = []string{"sigv4"} + }) return client, nil } diff --git a/embeddings/bedrock/short_response_test.go b/embeddings/bedrock/short_response_test.go new file mode 100644 index 000000000..7c1f40822 --- /dev/null +++ b/embeddings/bedrock/short_response_test.go @@ -0,0 +1,78 @@ +package bedrock_test + +import ( + "io" + "net/http" + "strings" + "testing" + + "github.com/vxcontrol/langchaingo/embeddings" + "github.com/vxcontrol/langchaingo/embeddings/bedrock" + + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/bedrockruntime" + "github.com/stretchr/testify/require" +) + +type roundTripperFunc func(*http.Request) (*http.Response, error) + +func (f roundTripperFunc) RoundTrip(req *http.Request) (*http.Response, error) { return f(req) } + +func embedderAnswering(t *testing.T, body string) *bedrock.Bedrock { + t.Helper() + + httpClient := &http.Client{Transport: roundTripperFunc(func(req *http.Request) (*http.Response, error) { + return &http.Response{ + StatusCode: http.StatusOK, + Header: http.Header{"Content-Type": []string{"application/json"}}, + Body: io.NopCloser(strings.NewReader(body)), + Request: req, + }, nil + })} + + cfg, err := config.LoadDefaultConfig(t.Context(), + config.WithHTTPClient(httpClient), + config.WithRegion(replayRegion), + config.WithCredentialsProvider(&fakeCredentialsProvider{}), + ) + require.NoError(t, err) + + client := bedrockruntime.NewFromConfig(cfg, func(o *bedrockruntime.Options) { + o.AuthSchemePreference = []string{"sigv4"} + }) + + b, err := bedrock.NewBedrock(bedrock.WithClient(client), bedrock.WithModel(bedrock.ModelCohereEn)) + require.NoError(t, err) + + return b +} + +func TestEmbedQueryRefusesAnAnswerWithoutVectors(t *testing.T) { + t.Parallel() + + b := embedderAnswering(t, `{"response_type":"embeddings_floats","embeddings":[]}`) + + emb, err := b.EmbedQuery(t.Context(), "hi") + require.ErrorIs(t, err, embeddings.ErrNoEmbedding) + require.Nil(t, emb) +} + +func TestEmbedDocumentsRefusesAShortAnswer(t *testing.T) { + t.Parallel() + + b := embedderAnswering(t, `{"response_type":"embeddings_floats","embeddings":[[0.1]]}`) + + emb, err := b.EmbedDocuments(t.Context(), []string{"one", "two"}) + require.ErrorIs(t, err, embeddings.ErrShortEmbedding) + require.Nil(t, emb) +} + +func TestEmbedDocumentsKeepsAFullAnswer(t *testing.T) { + t.Parallel() + + b := embedderAnswering(t, `{"response_type":"embeddings_floats","embeddings":[[0.1],[0.2]]}`) + + emb, err := b.EmbedDocuments(t.Context(), []string{"one", "two"}) + require.NoError(t, err) + require.Len(t, emb, 2) +} diff --git a/embeddings/embedding.go b/embeddings/embedding.go index 57e986e80..6a49281d4 100644 --- a/embeddings/embedding.go +++ b/embeddings/embedding.go @@ -2,12 +2,30 @@ package embeddings import ( "context" + "errors" "fmt" "strings" "github.com/vxcontrol/langchaingo/internal/sliceutil" ) +var ( + ErrNoEmbedding = errors.New("embeddings: the client returned no vector for the query") + ErrShortEmbedding = errors.New("embeddings: the client returned fewer vectors than inputs") +) + +// CheckEmbeddings reports whether the client answered every input with a vector. +func CheckEmbeddings(embs [][]float32, inputs int) error { + if len(embs) == 0 { + return ErrNoEmbedding + } + if len(embs) != inputs { + return fmt.Errorf("%w: %d for %d inputs", ErrShortEmbedding, len(embs), inputs) + } + + return nil +} + // NewEmbedder creates a new Embedder from the given EmbedderClient, with // some options that affect how embedding will be done. func NewEmbedder(client EmbedderClient, opts ...Option) (*EmbedderImpl, error) { @@ -62,6 +80,9 @@ func (ei *EmbedderImpl) EmbedQuery(ctx context.Context, text string) ([]float32, if err != nil { return nil, fmt.Errorf("error embedding query: %w", err) } + if len(emb) == 0 { + return nil, ErrNoEmbedding + } return emb[0], nil } @@ -106,6 +127,9 @@ func BatchedEmbed(ctx context.Context, embedder EmbedderClient, texts []string, if err != nil { return nil, fmt.Errorf("error embedding batch: %w", err) } + if err := CheckEmbeddings(curBatchEmbeddings, len(batch)); err != nil { + return nil, err + } emb = append(emb, curBatchEmbeddings...) } diff --git a/embeddings/embedding_test.go b/embeddings/embedding_test.go index 15549852f..86c414c2c 100644 --- a/embeddings/embedding_test.go +++ b/embeddings/embedding_test.go @@ -1,9 +1,11 @@ package embeddings import ( + "context" "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestBatchTexts(t *testing.T) { @@ -60,3 +62,18 @@ func TestBatchTexts(t *testing.T) { assert.Equal(t, tc.expected, BatchTexts(tc.texts, tc.batchSize)) } } + +func TestEmbedQueryRefusesAnAnswerWithoutAVector(t *testing.T) { + t.Parallel() + + client := EmbedderClientFunc(func(context.Context, []string) ([][]float32, error) { + return [][]float32{}, nil + }) + e, err := NewEmbedder(client) + require.NoError(t, err) + + got, err := e.EmbedQuery(context.Background(), "hello") + + require.ErrorIs(t, err, ErrNoEmbedding) + assert.Nil(t, got) +} diff --git a/embeddings/jina/jina.go b/embeddings/jina/jina.go index 8a8effc01..3cebe8d1e 100644 --- a/embeddings/jina/jina.go +++ b/embeddings/jina/jina.go @@ -12,6 +12,11 @@ import ( "github.com/vxcontrol/langchaingo/embeddings" ) +var ( + ErrEmptyEmbeddings = errors.New("jina: the vendor returned no embeddings") + ErrShortEmbeddings = errors.New("jina: fewer embeddings than inputs") +) + type Jina struct { Model string InputText []string @@ -20,6 +25,8 @@ type Jina struct { APIBaseURL string APIKey string client *http.Client + + batchSizeFromCaller bool } type EmbeddingRequest struct { @@ -120,6 +127,13 @@ func (j *Jina) CreateEmbedding(ctx context.Context, texts []string) ([][]float32 return nil, err } + if len(embeddingResponse.Data) == 0 { + return nil, ErrEmptyEmbeddings + } + if len(embeddingResponse.Data) != len(texts) { + return nil, ErrShortEmbeddings + } + embs := make([][]float32, 0, len(embeddingResponse.Data)) for _, data := range embeddingResponse.Data { embs = append(embs, data.Embedding) diff --git a/embeddings/jina/jina_unit_test.go b/embeddings/jina/jina_unit_test.go index e5242b798..ae8e86566 100644 --- a/embeddings/jina/jina_unit_test.go +++ b/embeddings/jina/jina_unit_test.go @@ -1,9 +1,12 @@ package jina import ( + "encoding/json" + "fmt" "net/http" "net/http/httptest" "os" + "strings" "testing" "github.com/stretchr/testify/assert" @@ -115,7 +118,7 @@ func TestNewJina(t *testing.T) { //nolint:funlen // comprehensive test WithBatchSize(256), }, check: func(t *testing.T, j *Jina) { - assert.Equal(t, 512, j.BatchSize) // Batch size is overridden by model + assert.Equal(t, 256, j.BatchSize) }, }, { @@ -317,3 +320,37 @@ func TestApplyOptions(t *testing.T) { } }) } + +func TestTheCallersBatchSizeReachesTheWire(t *testing.T) { + var batches [][]string + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + var req EmbeddingRequest + require.NoError(t, json.NewDecoder(r.Body).Decode(&req)) + batches = append(batches, req.Input) + + items := make([]string, 0, len(req.Input)) + for i := range req.Input { + items = append(items, fmt.Sprintf(`{"object":"embedding","index":%d,"embedding":[0.1,0.2]}`, i)) + } + w.Header().Set("Content-Type", "application/json") + fmt.Fprintf(w, `{"model":%q,"object":"list","data":[%s]}`, req.Model, strings.Join(items, ",")) + })) + defer server.Close() + + j, err := NewJina( + WithAPIBaseURL(server.URL), + WithAPIKey("test-key"), + WithModel(BaseModel), + WithBatchSize(2), + ) + require.NoError(t, err) + + emb, err := j.EmbedDocuments(t.Context(), []string{"a", "b", "c", "d", "e"}) + require.NoError(t, err) + assert.Len(t, emb, 5) + + require.Len(t, batches, 3, "batch size 2 over five texts is three requests; the model dimension would make it one") + assert.Equal(t, []string{"a", "b"}, batches[0]) + assert.Equal(t, []string{"c", "d"}, batches[1]) + assert.Equal(t, []string{"e"}, batches[2]) +} diff --git a/embeddings/jina/options.go b/embeddings/jina/options.go index cfa9ae4b1..79b132d3a 100644 --- a/embeddings/jina/options.go +++ b/embeddings/jina/options.go @@ -38,6 +38,7 @@ func WithStripNewLines(stripNewLines bool) Option { func WithBatchSize(batchSize int) Option { return func(p *Jina) { p.BatchSize = batchSize + p.batchSizeFromCaller = true } } @@ -82,9 +83,9 @@ func applyOptions(opts ...Option) *Jina { opt(o) } - // verify if model exists in the map - if _, ok := _models[o.Model]; ok { - o.BatchSize = _models[o.Model] + // _models holds vector dimensions, not batch sizes. + if size, ok := _models[o.Model]; ok && !o.batchSizeFromCaller { + o.BatchSize = size } return o diff --git a/embeddings/jina/short_response_test.go b/embeddings/jina/short_response_test.go new file mode 100644 index 000000000..e0420021b --- /dev/null +++ b/embeddings/jina/short_response_test.go @@ -0,0 +1,54 @@ +package jina + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func embedAgainst(t *testing.T, body string, inputs ...string) ([][]float32, error) { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, body) + })) + t.Cleanup(srv.Close) + + j, err := NewJina(WithAPIBaseURL(srv.URL), WithAPIKey("k")) + require.NoError(t, err) + return j.CreateEmbedding(context.Background(), inputs) +} + +func TestAnEmptyEmbeddingListIsAFailure(t *testing.T) { + t.Parallel() + + got, err := embedAgainst(t, `{"data":[]}`, "one") + + require.ErrorIs(t, err, ErrEmptyEmbeddings) + assert.Nil(t, got, "a caller that gets an error must not also get a slice to index") +} + +func TestFewerEmbeddingsThanInputsIsAFailure(t *testing.T) { + t.Parallel() + + got, err := embedAgainst(t, `{"data":[{"embedding":[0.1,0.2]}]}`, "one", "two") + + require.ErrorIs(t, err, ErrShortEmbeddings) + assert.Nil(t, got) +} + +func TestOneEmbeddingPerInputIsTheHappyPath(t *testing.T) { + t.Parallel() + + got, err := embedAgainst(t, `{"data":[{"embedding":[0.1,0.2]},{"embedding":[0.3,0.4]}]}`, "one", "two") + + require.NoError(t, err) + require.Len(t, got, 2) + assert.InDelta(t, float32(0.3), got[1][0], 1e-6) +} diff --git a/embeddings/short_response_test.go b/embeddings/short_response_test.go new file mode 100644 index 000000000..b4aef8114 --- /dev/null +++ b/embeddings/short_response_test.go @@ -0,0 +1,48 @@ +package embeddings + +import ( + "context" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestBatchedEmbedRefusesAnAnswerWithoutVectors(t *testing.T) { + t.Parallel() + + client := EmbedderClientFunc(func(context.Context, []string) ([][]float32, error) { + return [][]float32{}, nil + }) + + emb, err := BatchedEmbed(t.Context(), client, []string{"one"}, 8) + require.ErrorIs(t, err, ErrNoEmbedding) + require.Nil(t, emb) +} + +func TestBatchedEmbedRefusesAShortBatch(t *testing.T) { + t.Parallel() + + client := EmbedderClientFunc(func(_ context.Context, texts []string) ([][]float32, error) { + return [][]float32{{0.1}}, nil + }) + + emb, err := BatchedEmbed(t.Context(), client, []string{"one", "two"}, 8) + require.ErrorIs(t, err, ErrShortEmbedding) + require.Nil(t, emb) +} + +func TestBatchedEmbedKeepsEveryVectorOfAFullAnswer(t *testing.T) { + t.Parallel() + + client := EmbedderClientFunc(func(_ context.Context, texts []string) ([][]float32, error) { + out := make([][]float32, 0, len(texts)) + for range texts { + out = append(out, []float32{0.1}) + } + return out, nil + }) + + emb, err := BatchedEmbed(t.Context(), client, []string{"one", "two", "three"}, 2) + require.NoError(t, err) + require.Len(t, emb, 3) +} diff --git a/embeddings/testdata/TestOpenaiEmbeddings.httprr b/embeddings/testdata/TestOpenaiEmbeddings.httprr index 7ca7dca57..fd12b0f3e 100644 --- a/embeddings/testdata/TestOpenaiEmbeddings.httprr +++ b/embeddings/testdata/TestOpenaiEmbeddings.httprr @@ -1,5 +1,5 @@ httprr trace v1 -254 34427 +254 34411 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 12:24:42 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 47 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -1586,7 +1586,7 @@ X-Request-Id: req_e9160a76366a45ec96272d7efc180583 "total_tokens": 3 } } -286 101104 +286 101088 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -1605,7 +1605,7 @@ Date: Thu, 22 Jan 2026 12:24:44 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 49 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/embeddings/testdata/TestOpenaiEmbeddingsQueryVsDocuments.httprr b/embeddings/testdata/TestOpenaiEmbeddingsQueryVsDocuments.httprr index bb5315c1f..4b575edd8 100644 --- a/embeddings/testdata/TestOpenaiEmbeddingsQueryVsDocuments.httprr +++ b/embeddings/testdata/TestOpenaiEmbeddingsQueryVsDocuments.httprr @@ -1,5 +1,5 @@ httprr trace v1 -250 34440 +250 34424 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 12:24:49 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 42 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -1586,7 +1586,7 @@ X-Request-Id: req_baf740aef97c465685ec1769739ef810 "total_tokens": 2 } } -250 34440 +250 34424 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -1605,7 +1605,7 @@ Date: Thu, 22 Jan 2026 12:24:51 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 41 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/embeddings/testdata/TestOpenaiEmbeddingsWithOptions.httprr b/embeddings/testdata/TestOpenaiEmbeddingsWithOptions.httprr index 529256497..05bf3a39f 100644 --- a/embeddings/testdata/TestOpenaiEmbeddingsWithOptions.httprr +++ b/embeddings/testdata/TestOpenaiEmbeddingsWithOptions.httprr @@ -1,5 +1,5 @@ httprr trace v1 -254 34427 +254 34411 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 12:24:57 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 39 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -1586,7 +1586,7 @@ X-Request-Id: req_83908fbab98a4fb79c9f33ce86324ddc "total_tokens": 3 } } -253 34388 +253 34372 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -1605,7 +1605,7 @@ Date: Thu, 22 Jan 2026 12:24:59 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 178 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/embeddings/voyageai/options.go b/embeddings/voyageai/options.go index 0380ce147..3db4acf7b 100644 --- a/embeddings/voyageai/options.go +++ b/embeddings/voyageai/options.go @@ -4,6 +4,7 @@ import ( "errors" "net/http" "os" + "strings" "github.com/vxcontrol/langchaingo/httputil" ) @@ -47,6 +48,14 @@ func WithStripNewLines(stripNewLines bool) Option { } } +// WithBaseURL is an option for pointing the embedder at another deployment, +// such as a gateway that serves the VoyageAI API under a path prefix. +func WithBaseURL(baseURL string) Option { + return func(v *VoyageAI) { + v.baseURL = strings.TrimSuffix(baseURL, "/") + } +} + // WithBatchSize is an option for specifying the batch size. func WithBatchSize(batchSize int) Option { return func(v *VoyageAI) { diff --git a/embeddings/voyageai/short_response_test.go b/embeddings/voyageai/short_response_test.go new file mode 100644 index 000000000..729285887 --- /dev/null +++ b/embeddings/voyageai/short_response_test.go @@ -0,0 +1,57 @@ +package voyageai + +import ( + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/vxcontrol/langchaingo/embeddings" + + "github.com/stretchr/testify/require" +) + +func embedderAnswering(t *testing.T, body string) *VoyageAI { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, body) + })) + t.Cleanup(srv.Close) + + v, err := NewVoyageAI(WithToken("t"), WithBaseURL(srv.URL)) + require.NoError(t, err) + + return v +} + +func TestEmbedQueryRefusesAnAnswerWithoutVectors(t *testing.T) { + t.Parallel() + + v := embedderAnswering(t, `{"data":[]}`) + + emb, err := v.EmbedQuery(t.Context(), "hi") + require.ErrorIs(t, err, embeddings.ErrNoEmbedding) + require.Nil(t, emb) +} + +func TestEmbedDocumentsRefusesAShortAnswer(t *testing.T) { + t.Parallel() + + v := embedderAnswering(t, `{"data":[{"embedding":[0.1]}]}`) + + emb, err := v.EmbedDocuments(t.Context(), []string{"one", "two"}) + require.ErrorIs(t, err, embeddings.ErrShortEmbedding) + require.Nil(t, emb) +} + +func TestEmbedDocumentsKeepsAFullAnswer(t *testing.T) { + t.Parallel() + + v := embedderAnswering(t, `{"data":[{"embedding":[0.1]},{"embedding":[0.2]}]}`) + + emb, err := v.EmbedDocuments(t.Context(), []string{"one", "two"}) + require.NoError(t, err) + require.Len(t, emb, 2) +} diff --git a/embeddings/voyageai/voyageai.go b/embeddings/voyageai/voyageai.go index 9d6479234..e46c02253 100644 --- a/embeddings/voyageai/voyageai.go +++ b/embeddings/voyageai/voyageai.go @@ -51,7 +51,7 @@ func (v *VoyageAI) EmbedDocuments(ctx context.Context, texts []string) ([][]floa v.BatchSize, ) - embeddings := make([][]float32, 0, len(texts)) + embs := make([][]float32, 0, len(texts)) for _, batch := range batchedTexts { req := embedDocumentsRequest{ Model: v.Model, @@ -74,11 +74,16 @@ func (v *VoyageAI) EmbedDocuments(ctx context.Context, texts []string) ([][]floa return nil, err } + batchEmbs := make([][]float32, 0, len(batch)) for _, data := range embeddingResp.Data { - embeddings = append(embeddings, data.Embedding) + batchEmbs = append(batchEmbs, data.Embedding) } + if err := embeddings.CheckEmbeddings(batchEmbs, len(batch)); err != nil { + return nil, err + } + embs = append(embs, batchEmbs...) } - return embeddings, nil + return embs, nil } type embedQueryRequest struct { @@ -108,6 +113,10 @@ func (v *VoyageAI) EmbedQuery(ctx context.Context, text string) ([]float32, erro if err := json.NewDecoder(resp.Body).Decode(&embeddingResp); err != nil { return nil, err } + if len(embeddingResp.Data) == 0 { + return nil, embeddings.ErrNoEmbedding + } + return embeddingResp.Data[0].Embedding, nil } diff --git a/embeddings/voyageai/voyageai_unit_test.go b/embeddings/voyageai/voyageai_unit_test.go index 13c9e6913..660dfb929 100644 --- a/embeddings/voyageai/voyageai_unit_test.go +++ b/embeddings/voyageai/voyageai_unit_test.go @@ -2,6 +2,7 @@ package voyageai import ( "net/http" + "net/http/httptest" "os" "testing" @@ -280,3 +281,21 @@ func TestApplyOptions(t *testing.T) { assert.NotNil(t, v.client) }) } + +func TestTheCallersBaseURLReachesTheRequest(t *testing.T) { + var gotPath string + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + gotPath = r.URL.Path + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"data":[{"embedding":[0.1,0.2]}]}`)) + })) + defer server.Close() + + v, err := NewVoyageAI(WithBaseURL(server.URL+"/voyageai/"), WithToken("test-token")) + require.NoError(t, err) + + emb, err := v.EmbedQuery(t.Context(), "hello") + require.NoError(t, err, "the request must reach the caller's base URL, not api.voyageai.com") + assert.Equal(t, []float32{0.1, 0.2}, emb) + assert.Equal(t, "/voyageai/embeddings", gotPath, "the path prefix survives and the trailing slash is not doubled") +} diff --git a/examples/anthropic-completion-example/anthropic_completion_example.go b/examples/anthropic-completion-example/anthropic_completion_example.go index 986ca6575..24339d289 100644 --- a/examples/anthropic-completion-example/anthropic_completion_example.go +++ b/examples/anthropic-completion-example/anthropic_completion_example.go @@ -12,7 +12,7 @@ import ( func main() { llm, err := anthropic.New( - anthropic.WithModel("claude-3-5-sonnet-20240620"), + anthropic.WithModel("claude-sonnet-4-5"), ) if err != nil { log.Fatal(err) diff --git a/examples/anthropic-extended-capabilities/README.md b/examples/anthropic-extended-capabilities/README.md index 4d33670c3..33c484e48 100644 --- a/examples/anthropic-extended-capabilities/README.md +++ b/examples/anthropic-extended-capabilities/README.md @@ -26,7 +26,7 @@ go run . // Enable both capabilities together opts := []llms.CallOption{ // Extended thinking for complex reasoning - llms.WithThinkingMode(llms.ThinkingModeHigh), + llms.WithReasoning(llms.ReasoningHigh, 0), // Extended output for up to 128K tokens anthropic.WithExtendedOutput(), diff --git a/examples/anthropic-interleaved-thinking/README.md b/examples/anthropic-interleaved-thinking/README.md index 1bb5f8ded..d1e3c0fcd 100644 --- a/examples/anthropic-interleaved-thinking/README.md +++ b/examples/anthropic-interleaved-thinking/README.md @@ -32,7 +32,7 @@ go run . // Enable interleaved thinking for tool use opts := []llms.CallOption{ // Thinking mode for reasoning - llms.WithThinkingMode(llms.ThinkingModeMedium), + llms.WithReasoning(llms.ReasoningMedium, 0), // Enable interleaved thinking beta feature anthropic.WithInterleavedThinking(), @@ -64,6 +64,6 @@ The example displays detailed token usage: ## Requirements -- Claude 3.7 Sonnet model (`claude-3-7-sonnet-20250219`) +- Claude Sonnet 4.5 model (`claude-sonnet-4-5`) - Valid Anthropic API key - Interleaved thinking feature access \ No newline at end of file diff --git a/examples/anthropic-vision-example/anthropic_vision_example.go b/examples/anthropic-vision-example/anthropic_vision_example.go index ae13c14ab..1fc10628b 100644 --- a/examples/anthropic-vision-example/anthropic_vision_example.go +++ b/examples/anthropic-vision-example/anthropic_vision_example.go @@ -15,7 +15,7 @@ var image []byte func main() { llm, err := anthropic.New( - anthropic.WithModel("claude-3-5-sonnet-20240620"), + anthropic.WithModel("claude-sonnet-4-5"), ) if err != nil { log.Fatal(err) diff --git a/examples/deepseek-completion-example/deepseek-completion-example.go b/examples/deepseek-completion-example/deepseek-completion-example.go index 702fadade..5677c19c4 100644 --- a/examples/deepseek-completion-example/deepseek-completion-example.go +++ b/examples/deepseek-completion-example/deepseek-completion-example.go @@ -15,7 +15,7 @@ func main() { // Per the official DeepSeek API documentation (https://api-docs.deepseek.com/), // please note that all API calls must be configured to use the DeepSeek base URL instead of the OpenAI endpoint. llm, err := openai.New( - openai.WithModel("deepseek-reasoner"), + openai.WithModel("deepseek-v4-flash"), openai.WithBaseURL("https://api.deepseek.com"), ) if err != nil { diff --git a/examples/googleai-caching-example/README.md b/examples/googleai-caching-example/README.md index 04269b971..969a419d3 100644 --- a/examples/googleai-caching-example/README.md +++ b/examples/googleai-caching-example/README.md @@ -14,7 +14,7 @@ and reuse them across multiple requests. This can significantly reduce: ## Requirements - Minimum cacheable content: **32,768 tokens** (~24,000 words) -- Supported models: gemini-2.0-flash-exp and other Gemini 2.0+ models +- Supported models: gemini-2.5-pro and other Gemini 2.0+ models - Google API key ## How It Works @@ -70,7 +70,7 @@ Caching is particularly valuable when: ```go cached, err := helper.CreateCachedContent( ctx, - "gemini-2.0-flash-exp", // Model name + "gemini-2.5-pro", // Model name messages, // Content to cache 1*time.Hour, // TTL "my-cache-name", // Display name diff --git a/examples/groq-completion-example/README.md b/examples/groq-completion-example/README.md index ce1b63f6f..4af6d803a 100644 --- a/examples/groq-completion-example/README.md +++ b/examples/groq-completion-example/README.md @@ -9,7 +9,7 @@ Hello there! 👋 This example demonstrates how to use the Groq API with LangCha 2. **Groq LLM Configuration**: - It sets up a Large Language Model (LLM) client using Groq's API, which is compatible with the OpenAI interface. - - The model used is "llama3-8b-8192", a powerful language model hosted by Groq. + - The model used is "moonshotai/kimi-k2-instruct", hosted by Groq. 3. **Text Generation**: - The example prompts the model to "Write a long poem about how golang is a fantastic language." diff --git a/examples/huggingface-llm-example/README.md b/examples/huggingface-llm-example/README.md index f9da956ed..70c418af6 100644 --- a/examples/huggingface-llm-example/README.md +++ b/examples/huggingface-llm-example/README.md @@ -10,7 +10,7 @@ This example demonstrates how to use the LangChain Go library to interact with H 2. **Generates Text**: - The script sends a prompt to the language model asking for a company name that makes colorful socks. - - It demonstrates how to use different generation options like specifying a model (in this case, "gpt2"). + - It demonstrates how to use different generation options like specifying a model (in this case, "meta-llama/Llama-3.1-8B-Instruct"). 3. **Handles Responses**: - The generated text is printed to the console. diff --git a/examples/huggingface-llm-example/huggingface_example.go b/examples/huggingface-llm-example/huggingface_example.go index 0e4323899..d9f050b50 100644 --- a/examples/huggingface-llm-example/huggingface_example.go +++ b/examples/huggingface-llm-example/huggingface_example.go @@ -26,7 +26,7 @@ func main() { // Or override default model to another one generateOptions := []llms.CallOption{ - llms.WithModel("gpt2"), + llms.WithModel("meta-llama/Llama-3.1-8B-Instruct"), // llms.WithTopK(10), // llms.WithTopP(0.95), // llms.WithSeed(13), diff --git a/examples/json-mode-example/json_mode_example.go b/examples/json-mode-example/json_mode_example.go index ca4c30acd..38b7a7af9 100644 --- a/examples/json-mode-example/json_mode_example.go +++ b/examples/json-mode-example/json_mode_example.go @@ -42,7 +42,7 @@ func initBackend(ctx context.Context) (llms.Model, error) { case "ollama": return ollama.New(ollama.WithModel("mistral")) case "anthropic": - return anthropic.New(anthropic.WithModel("claude-3-5-sonnet-20240620")) + return anthropic.New(anthropic.WithModel("claude-sonnet-4-5")) case "googleai": return googleai.New(ctx, googleai.WithDefaultModel("gemini-1.5-flash")) default: diff --git a/examples/mistral-completion-example/README.md b/examples/mistral-completion-example/README.md index 923d7bc32..f05ff64cb 100644 --- a/examples/mistral-completion-example/README.md +++ b/examples/mistral-completion-example/README.md @@ -6,7 +6,7 @@ This example demonstrates how to generate text completions using the Mistral AI ## What This Example Does -1. **Setup**: The code initializes a Mistral language model using the `mistral.New()` function, specifying the "open-mistral-7b" model. +1. **Setup**: The code initializes a Mistral language model using the `mistral.New()` function, specifying the "ministral-8b-latest" model. 2. **Streaming Completion**: - It generates a completion for the question "Who was the first man to walk on the moon?" diff --git a/examples/mistral-completion-example/mistral_completion_example.go b/examples/mistral-completion-example/mistral_completion_example.go index 6abaefabc..dcbcb81d0 100644 --- a/examples/mistral-completion-example/mistral_completion_example.go +++ b/examples/mistral-completion-example/mistral_completion_example.go @@ -11,7 +11,7 @@ import ( ) func main() { - llm, err := mistral.New(mistral.WithModel("open-mistral-7b")) + llm, err := mistral.New(mistral.WithModel("ministral-8b-latest")) if err != nil { log.Fatal(err) } diff --git a/examples/mistral-summarization-example/mistral_summarization_example.go b/examples/mistral-summarization-example/mistral_summarization_example.go index 39e9331ea..fe2b7ee5d 100644 --- a/examples/mistral-summarization-example/mistral_summarization_example.go +++ b/examples/mistral-summarization-example/mistral_summarization_example.go @@ -14,7 +14,7 @@ import ( func main() { ctx := context.Background() - llm, err := mistral.New(mistral.WithAPIKey("API_KEY_GOES_HERE"), mistral.WithModel("open-mistral-7b")) + llm, err := mistral.New(mistral.WithAPIKey("API_KEY_GOES_HERE"), mistral.WithModel("ministral-8b-latest")) if err != nil { log.Fatal(err) } diff --git a/examples/perplexity-completion-example/README.md b/examples/perplexity-completion-example/README.md index 346737caf..0db7e36f2 100644 --- a/examples/perplexity-completion-example/README.md +++ b/examples/perplexity-completion-example/README.md @@ -9,7 +9,7 @@ Hello there! 👋 This example demonstrates how to use the Perplexity API with L 2. **Perplexity LLM Configuration**: - It sets up a Large Language Model (LLM) client using Perplexity's API, which is compatible with the OpenAI interface. - - The model used is "llama-3.1-sonar-large-128k-online", a powerful language model hosted by Perplexity. + - The model used is "sonar-pro", a search-grounded model hosted by Perplexity. 3. **Text Generation**: - The example prompts the model to "What is a prime number?" diff --git a/examples/perplexity-completion-example/perplexity_completion_example.go b/examples/perplexity-completion-example/perplexity_completion_example.go index 34b4cbd31..c4112df05 100644 --- a/examples/perplexity-completion-example/perplexity_completion_example.go +++ b/examples/perplexity-completion-example/perplexity_completion_example.go @@ -23,7 +23,7 @@ func main() { llm, err := openai.New( // Supported models: https://docs.perplexity.ai/docs/model-cards - openai.WithModel("llama-3.1-sonar-large-128k-online"), + openai.WithModel("sonar-pro"), openai.WithBaseURL("https://api.perplexity.ai"), openai.WithToken(apiKey), ) diff --git a/go.mod b/go.mod index edae345ed..5877c3fe1 100644 --- a/go.mod +++ b/go.mod @@ -53,7 +53,6 @@ require ( // Cloud platforms and AI services require ( cloud.google.com/go/aiplatform v1.85.0 - cloud.google.com/go/vertexai v0.12.0 github.com/aws/aws-sdk-go-v2 v1.41.5 github.com/aws/aws-sdk-go-v2/config v1.32.10 github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.52.4 @@ -120,12 +119,12 @@ require ( require ( cloud.google.com/go v0.121.0 // indirect cloud.google.com/go/alloydb v1.14.0 // indirect - cloud.google.com/go/auth v0.16.2 // indirect + cloud.google.com/go/auth v0.16.2 cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect cloud.google.com/go/compute/metadata v0.9.0 // indirect cloud.google.com/go/iam v1.5.2 // indirect cloud.google.com/go/longrunning v0.6.7 // indirect - github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 // indirect + github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 github.com/aws/aws-sdk-go-v2/credentials v1.19.10 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.18 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21 // indirect diff --git a/go.sum b/go.sum index 1c9d75882..435aaf718 100644 --- a/go.sum +++ b/go.sum @@ -19,8 +19,6 @@ cloud.google.com/go/iam v1.5.2 h1:qgFRAGEmd8z6dJ/qyEchAuL9jpswyODjA2lS+w234g8= cloud.google.com/go/iam v1.5.2/go.mod h1:SE1vg0N81zQqLzQEwxL2WI6yhetBdbNQuTvIKCSkUHE= cloud.google.com/go/longrunning v0.6.7 h1:IGtfDWHhQCgCjwQjV9iiLnUta9LBCo8R9QmAFsS/PrE= cloud.google.com/go/longrunning v0.6.7/go.mod h1:EAFV3IZAKmM56TyiE6VAP3VoTzhZzySwI/YI1s/nRsY= -cloud.google.com/go/vertexai v0.12.0 h1:zTadEo/CtsoyRXNx3uGCncoWAP1H2HakGqwznt+iMo8= -cloud.google.com/go/vertexai v0.12.0/go.mod h1:8u+d0TsvBfAAd2x5R6GMgbYhsLgo3J7lmP4bR8g2ig8= dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= diff --git a/internal/devtools/normalize-recordings/main.go b/internal/devtools/normalize-recordings/main.go index 444faa5f2..8208e3a6d 100644 --- a/internal/devtools/normalize-recordings/main.go +++ b/internal/devtools/normalize-recordings/main.go @@ -25,7 +25,7 @@ func main() { if err != nil { log.Fatal(err) } - + // Also check common test directories testDirs := []string{ "chains/testdata", @@ -33,14 +33,14 @@ func main() { "vectorstores/*/testdata", "embeddings/*/testdata", } - + for _, pattern := range testDirs { matches, err := filepath.Glob(pattern + "/*.httprr") if err == nil { recordings = append(recordings, matches...) } } - + // Deduplicate seen := make(map[string]bool) var unique []string @@ -51,14 +51,14 @@ func main() { } } recordings = unique - + if len(recordings) == 0 { fmt.Println("No .httprr files found") return } - + fmt.Printf("Found %d .httprr files\n", len(recordings)) - + for _, file := range recordings { if err := normalizeRecording(file); err != nil { log.Printf("Error processing %s: %v", file, err) @@ -72,34 +72,34 @@ func normalizeRecording(filename string) error { if err != nil { return err } - + // Check if it's a valid httprr file if !strings.HasPrefix(string(content), "httprr trace v1\n") { return fmt.Errorf("not a valid httprr trace file") } - + originalContent := string(content) normalized := normalizeHTTPRRFile(originalContent) - + if normalized == originalContent { if *verbose { fmt.Printf("No changes needed for %s\n", filename) } return nil } - + if *dryRun { fmt.Printf("Would update %s:\n", filename) // Show a sample of changes showChanges(originalContent, normalized) return nil } - + // Write the normalized content back if err := os.WriteFile(filename, []byte(normalized), 0644); err != nil { return err } - + fmt.Printf("Updated %s\n", filename) return nil } @@ -109,10 +109,10 @@ func normalizeHTTPRRFile(content string) string { if len(lines) < 2 || lines[0] != "httprr trace v1" { return content // Not a valid httprr file } - + var result strings.Builder result.WriteString("httprr trace v1\n") - + i := 1 for i < len(lines) { // Skip empty lines @@ -120,56 +120,56 @@ func normalizeHTTPRRFile(content string) string { i++ continue } - + // Parse the byte count line (e.g., "773 1369") parts := strings.Fields(lines[i]) if len(parts) != 2 { // Malformed, return original return content } - + reqBytes, err1 := strconv.Atoi(parts[0]) respBytes, err2 := strconv.Atoi(parts[1]) if err1 != nil || err2 != nil { return content // Malformed } - + i++ // Move past the count line - + // Extract the request and response based on byte counts startPos := strings.Index(content[strings.Index(content, lines[i]):], lines[i]) if startPos < 0 { return content } - + // Find the actual position in the full content fullPos := 0 for j := 0; j < i && j < len(lines); j++ { fullPos += len(lines[j]) + 1 // +1 for newline } - + remaining := content[fullPos:] if len(remaining) < reqBytes+respBytes { return content // Not enough data } - + request := remaining[:reqBytes] - response := remaining[reqBytes:reqBytes+respBytes] - + response := remaining[reqBytes : reqBytes+respBytes] + // Normalize the request and response normalizedReq := normalizeContent(request) normalizedResp := normalizeContent(response) - + // Write the updated byte counts and data result.WriteString(fmt.Sprintf("%d %d\n", len(normalizedReq), len(normalizedResp))) result.WriteString(normalizedReq) result.WriteString(normalizedResp) - + // Move to the next record // We need to find where we are in the lines array after consuming the bytes consumed := reqBytes + respBytes pos := fullPos + consumed - + // Find which line we're on now currentPos := 0 for j := 0; j < len(lines); j++ { @@ -179,12 +179,12 @@ func normalizeHTTPRRFile(content string) string { } currentPos += len(lines[j]) + 1 } - + if i >= len(lines)-1 { break } } - + return result.String() } @@ -192,19 +192,18 @@ func normalizeContent(content string) string { // Normalize x-goog-api-client header googClientPattern := regexp.MustCompile(`(x-goog-api-client: )gl-go/[\d.]+ gccl/v?[\d.]+ genai-go/[\d.]+ gapic/[\d.]+ gax/[\d.]+`) content = googClientPattern.ReplaceAllString(content, "${1}gl-go/X.X.X gccl/X.X.X genai-go/X.X.X gapic/X.X.X gax/X.X.X") - + // Normalize other version patterns in x-goog-api-client googClientVersionPattern := regexp.MustCompile(`(x-goog-api-client: [^\r\n]*)/v?\d+\.\d+(\.\d+)?`) content = googClientVersionPattern.ReplaceAllString(content, "${1}/X.X.X") - - // Normalize x-amz-user-agent header + amzPattern := regexp.MustCompile(`(x-amz-user-agent: [^\r\n]*)\bv?\d+\.\d+(\.\d+)?(-[a-zA-Z0-9.]+)?`) content = amzPattern.ReplaceAllString(content, "${1}X.X.X") - + // Normalize Go version in various headers goVersionPattern := regexp.MustCompile(`\bgo\d+\.\d+(\.\d+)?\b`) content = goVersionPattern.ReplaceAllString(content, "goX.X.X") - + return content } @@ -212,10 +211,10 @@ func showChanges(original, normalized string) { // Show first few differences origLines := strings.Split(original, "\n") normLines := strings.Split(normalized, "\n") - + shown := 0 maxShow := 5 - + for i := 0; i < len(origLines) && i < len(normLines); i++ { if origLines[i] != normLines[i] && shown < maxShow { fmt.Printf(" Line %d:\n", i+1) @@ -224,8 +223,8 @@ func showChanges(original, normalized string) { shown++ } } - + if shown == maxShow { fmt.Println(" ... (more changes)") } -} \ No newline at end of file +} diff --git a/internal/httprr/README.md b/internal/httprr/README.md index 9da62db6c..3cb6e7f09 100644 --- a/internal/httprr/README.md +++ b/internal/httprr/README.md @@ -232,6 +232,17 @@ go test ./pkg -httprecord=. -run TestSpecificFunction go test ./... -httprecord="TestOpenAI.*" ``` +### Recording Through a Gateway + +The Google AI helper in `llms/googleai/googleai_test.go` reaches the vendor through whatever base URL `GOOGLE_BASE_URL` names, so its fixtures can be re-recorded with a proxy key when no direct vendor key is at hand. The cache tests in the same package build their own recorders and ignore the variable, so re-recording those still needs a direct vendor key: + +```bash +GOOGLE_API_KEY= GOOGLE_BASE_URL=https://gateway.example/gemini \ + go test ./llms/googleai/ -httprecord=. -run TestGoogleAIWithTools +``` + +The recorded request still carries the vendor URL, because the rewrite happens below the recorder. Proxy-added `X-Litellm-*` response headers are scrubbed, one of which reports the key's accumulated spend; `TestRecordingsCarryNoProxyHeaders` fails if any reaches `testdata/`. + ### Running with Recorded Data ```bash diff --git a/internal/httprr/gateway_headers_test.go b/internal/httprr/gateway_headers_test.go new file mode 100644 index 000000000..cffd5d28b --- /dev/null +++ b/internal/httprr/gateway_headers_test.go @@ -0,0 +1,92 @@ +package httprr + +import ( + "bytes" + "io" + "io/fs" + "net/http" + "os" + "path/filepath" + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +type gatewayRoundTripper struct{} + +func (gatewayRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + return &http.Response{ + StatusCode: http.StatusOK, + Proto: "HTTP/1.1", + ProtoMajor: 1, + ProtoMinor: 1, + Header: http.Header{ + "Content-Type": []string{"application/json"}, + "X-Litellm-Key-Spend": []string{"3783.008359056675"}, + "X-Litellm-Model-Id": []string{"6915d127a6e7"}, + }, + Body: io.NopCloser(strings.NewReader(`{"ok":true}`)), + ContentLength: 11, + Request: req, + }, nil +} + +func repositoryRoot(t *testing.T) string { + t.Helper() + + dir, err := os.Getwd() + require.NoError(t, err) + for { + if _, err := os.Stat(filepath.Join(dir, "go.mod")); err == nil { + return dir + } + parent := filepath.Dir(dir) + require.NotEqual(t, parent, dir, "go.mod not found above %s", dir) + dir = parent + } +} + +func TestNoRecordingInThisRepositoryCarriesGatewayHeaders(t *testing.T) { + root := repositoryRoot(t) + scanned := 0 + + require.NoError(t, filepath.WalkDir(root, func(path string, entry fs.DirEntry, err error) error { + if err != nil || entry.IsDir() || filepath.Ext(path) != ".httprr" { + return err //nolint:wrapcheck // the walk reports its own error unchanged + } + data, err := os.ReadFile(path) + if err != nil { + return err //nolint:wrapcheck // the walk reports its own error unchanged + } + scanned++ + name, _ := filepath.Rel(root, path) + assert.NotContains(t, strings.ToLower(string(data)), "x-litellm-", + "%s carries the gateway's headers: they hold the key's spend and the deployment id", name) + return nil + })) + assert.Positive(t, scanned, "the sweep found no recordings at all, so it proves nothing") +} + +func TestTheRecorderStripsGatewayHeadersFromAResponse(t *testing.T) { + path := filepath.Join(t.TempDir(), "gateway.httprr") + defer setRecordForTesting(".*")() + + rr, err := Open(path, gatewayRoundTripper{}) + require.NoError(t, err) + require.True(t, rr.Recording()) + + client := &http.Client{Transport: rr} + resp, err := client.Post("https://bedrock-runtime.us-east-1.amazonaws.com/model/x/invoke", + "application/json", bytes.NewReader([]byte(`{}`))) + require.NoError(t, err) + require.NoError(t, resp.Body.Close()) + require.NoError(t, rr.Close()) + + recorded, err := os.ReadFile(path) + require.NoError(t, err) + assert.Contains(t, string(recorded), "Content-Type", "the recording kept the ordinary headers") + assert.NotContains(t, strings.ToLower(string(recorded)), "x-litellm-", + "a recording made through the gateway must not keep its headers") +} diff --git a/internal/httprr/normalization_test.go b/internal/httprr/normalization_test.go index 5b174afbc..ab0d9761d 100644 --- a/internal/httprr/normalization_test.go +++ b/internal/httprr/normalization_test.go @@ -1,7 +1,9 @@ package httprr import ( - "regexp" + "net/http" + "path/filepath" + "strings" "testing" ) @@ -14,23 +16,43 @@ func TestNormalizeGoogleAPIClientHeader(t *testing.T) { { name: "Google API client header with versions", input: "gl-go/1.24.4 gccl/v0.15.1 genai-go/0.15.1 gapic/0.7.0 gax/2.14.1 rest/UNKNOWN", - expected: "gl-go/X.XX.X gccl/vX.XX.X genai-go/X.XX.X gapic/X.X.X gax/X.XX.X rest/UNKNOWN", + expected: "gl-go/X.XX.X gccl/vX.XX.X genai-go/X.XX.X gapic/X.XX.X gax/X.XX.X rest/UNKNOWN", }, { name: "Google API client header with different versions", input: "gl-go/1.24.6 gccl/v0.15.2 genai-go/0.16.0 gapic/0.8.1 gax/2.15.0 rest/UNKNOWN", - expected: "gl-go/X.XX.X gccl/vX.XX.X genai-go/X.XX.X gapic/X.X.X gax/X.XX.X rest/UNKNOWN", + expected: "gl-go/X.XX.X gccl/vX.XX.X genai-go/X.XX.X gapic/X.XX.X gax/X.XX.X rest/UNKNOWN", }, { name: "Mixed version formats", input: "client/1.2 sdk/v3.4.5 lib/0.1.0-beta rest/UNKNOWN", - expected: "client/X.X sdk/vX.X.X lib/X.X.X-beta rest/UNKNOWN", + expected: "client/X.X sdk/vX.XX.X lib/X.XX.X-beta rest/UNKNOWN", }, { name: "No versions", input: "client/unknown sdk/latest rest/UNKNOWN", expected: "client/unknown sdk/latest rest/UNKNOWN", }, + { + name: "Go toolchain version carries a go prefix", + input: "google-genai-sdk/1.29.0 gl-go/go1.26.5", + expected: "google-genai-sdk/X.XX.X gl-go/goX.XX.X", + }, + { + name: "A newer patch of the same toolchain normalizes the same way", + input: "google-genai-sdk/1.29.0 gl-go/go1.26.7", + expected: "google-genai-sdk/X.XX.X gl-go/goX.XX.X", + }, + { + name: "A two-digit patch normalizes to the same shape as a one-digit one", + input: "google-genai-sdk/1.29.0 gl-go/go1.26.10", + expected: "google-genai-sdk/X.XX.X gl-go/goX.XX.X", + }, + { + name: "A two-digit minor normalizes the same way too", + input: "google-genai-sdk/1.29.0 gl-go/go1.100.2", + expected: "google-genai-sdk/X.XX.X gl-go/goX.XX.X", + }, } for _, tt := range tests { @@ -39,10 +61,6 @@ func TestNormalizeGoogleAPIClientHeader(t *testing.T) { if result != tt.expected { t.Errorf("normalizeGoogleAPIClientHeader(%q) = %q, want %q", tt.input, result, tt.expected) } - // Verify byte count is preserved - if len(result) != len(tt.input) { - t.Errorf("Byte count not preserved: input len=%d, result len=%d", len(tt.input), len(result)) - } }) } } @@ -110,57 +128,33 @@ func TestVersionNormalizationConsistency(t *testing.T) { } func TestOpenAIProjectHeaderScrubbing(t *testing.T) { - tests := []struct { - name string - input string - expected string - }{ - { - name: "Remove OpenAI-Project header", - input: `POST /v1/chat/completions HTTP/1.1 -Host: api.openai.com -User-Agent: Go-http-client/1.1 -Authorization: Bearer sk-test -openai-project: proj-123456789 -Content-Type: application/json - -{"model":"gpt-4"}`, - expected: `POST /v1/chat/completions HTTP/1.1 -Host: api.openai.com -User-Agent: langchaingo-httprr -Authorization: Bearer sk-test -Content-Type: application/json - -{"model":"gpt-4"}`, - }, - { - name: "No OpenAI-Project header present", - input: `POST /v1/chat/completions HTTP/1.1 -Host: api.openai.com -User-Agent: Go-http-client/1.1 -Authorization: Bearer sk-test -Content-Type: application/json - -{"model":"gpt-4"}`, - expected: `POST /v1/chat/completions HTTP/1.1 -Host: api.openai.com -User-Agent: langchaingo-httprr -Authorization: Bearer sk-test -Content-Type: application/json + rr, err := create(filepath.Join(t.TempDir(), "scrub.httprr"), http.DefaultTransport) + if err != nil { + t.Fatalf("create() error: %v", err) + } + t.Cleanup(func() { _ = rr.Close() }) -{"model":"gpt-4"}`, - }, + req, err := http.NewRequest(http.MethodPost, "https://api.openai.com/v1/chat/completions", + strings.NewReader(`{"model":"gpt-4"}`)) + if err != nil { + t.Fatalf("NewRequest() error: %v", err) } + req.Header.Set("Authorization", "Bearer sk-test") + req.Header.Set("openai-project", "proj-123456789") + req.Header.Set("User-Agent", "Go-http-client/1.1") - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - // This simulates what happens in reqWire during request serialization - result := regexp.MustCompile(`(?m)^User-Agent: .*$`).ReplaceAllString(tt.input, "User-Agent: langchaingo-httprr") - result = regexp.MustCompile(`(?m)^openai-project: .*\n`).ReplaceAllString(result, "") + wire, err := rr.reqWire(req) + if err != nil { + t.Fatalf("reqWire() error: %v", err) + } - if result != tt.expected { - t.Errorf("OpenAI-Project header scrubbing failed:\nGot:\n%s\n\nExpected:\n%s", result, tt.expected) - } - }) + if strings.Contains(strings.ToLower(wire), "openai-project") { + t.Errorf("the project header must not reach the cassette match key:\n%s", wire) + } + if strings.Contains(wire, "Go-http-client") { + t.Errorf("the user agent must be normalized in the match key:\n%s", wire) + } + if !strings.Contains(wire, `{"model":"gpt-4"}`) { + t.Errorf("the body must survive scrubbing:\n%s", wire) } } diff --git a/internal/httprr/rr.go b/internal/httprr/rr.go index a93d2c661..3716c5fa2 100644 --- a/internal/httprr/rr.go +++ b/internal/httprr/rr.go @@ -474,7 +474,20 @@ func (rr *RecordReplay) RoundTrip(req *http.Request) (*http.Response, error) { if rr.real == nil { return nil, fmt.Errorf("httprr: no transport configured") } - resp, err := rr.real.RoundTrip(req) + // The transport may still read the request body after RoundTrip returns: + // when the response comes first, RoundTrip ends while the transport's write + // loop reads the body on. Give it a body of its own, so rereading req below + // for the recording does not race with that read. The shallow copy shares + // the header map and the URL, so what the transport adds there in place is + // recorded; a field it reassigns on its own copy is not, as in replay. + realReq := req + if body, ok := req.Body.(*Body); ok { + data := body.Data + realReq = req.WithContext(req.Context()) + realReq.Body = &Body{Data: data} + realReq.GetBody = func() (io.ReadCloser, error) { return &Body{Data: data}, nil } + } + resp, err := rr.real.RoundTrip(realReq) if err != nil { return nil, err } @@ -585,7 +598,7 @@ func (rr *RecordReplay) reqWire(req *http.Request) (string, error) { result = regexp.MustCompile(`(?m)^User-Agent: .*$`).ReplaceAllString(result, "User-Agent: langchaingo-httprr") // Remove OpenAI-Project header for consistency across recordings - result = regexp.MustCompile(`(?m)^openai-project: .*\n`).ReplaceAllString(result, "") + result = regexp.MustCompile(`(?mi)^openai-project: .*\n`).ReplaceAllString(result, "") // Normalize x-goog-api-client header with version information result = regexp.MustCompile(`(?m)^x-goog-api-client: (.*)$`).ReplaceAllStringFunc(result, func(match string) string { @@ -993,24 +1006,19 @@ func hasExistingRecording(t *testing.T) bool { return uncompressedErr == nil || compressedErr == nil } -// normalizeGoogleAPIClientHeader normalizes version information in the x-goog-api-client header -// to avoid test failures when dependencies are updated. It preserves the exact byte count -// by padding with spaces to maintain httprr recording integrity. -// -// Example input: "gl-go/1.24.4 gccl/v0.15.1 genai-go/0.15.1 gapic/0.7.0 gax/2.14.1 rest/UNKNOWN" -// Example output: "gl-go/X.XX.X gccl/vX.XX.X genai-go/X.XX.X gapic/X.X.X gax/X.XX.X rest/UNKNOWN" func normalizeGoogleAPIClientHeader(header string) string { - originalLen := len(header) - - // Replace each version segment while preserving its length - versionPattern := regexp.MustCompile(`(/v?)(\d+\.\d+(?:\.\d+)?)`) + versionPattern := regexp.MustCompile(`(/v?(?:go)?)(\d+\.\d+(?:\.\d+)?)`) normalized := versionPattern.ReplaceAllStringFunc(header, func(match string) string { - // Find the slash and optional 'v' slashIdx := strings.Index(match, "/") prefix := match[:slashIdx+1] - if strings.HasPrefix(match[slashIdx+1:], "v") { + rest := match[slashIdx+1:] + if strings.HasPrefix(rest, "v") { prefix += "v" + rest = rest[1:] + } + if strings.HasPrefix(rest, "go") { + prefix += "go" } // Calculate how many characters we need for the version part @@ -1037,24 +1045,7 @@ func normalizeGoogleAPIClientHeader(header string) string { replacement = strings.Repeat("X", xBefore) + "." + strings.Repeat("X", xAfter) } case 2: - // Format: X.X.X, X.XX.X, etc. - // Distribute X's around the dots fairly - switch versionLen { - case 5: - replacement = "X.X.X" - case 6: - replacement = "X.XX.X" - case 7: - replacement = "X.XX.XX" - default: - // Generic case: distribute evenly - segLen := (versionLen - 2) / 3 - remainder := (versionLen - 2) % 3 - seg1 := segLen + min(1, remainder) - seg2 := segLen + min(1, max(0, remainder-1)) - seg3 := segLen - replacement = strings.Repeat("X", seg1) + "." + strings.Repeat("X", seg2) + "." + strings.Repeat("X", seg3) - } + replacement = "X.XX.X" default: // More than 2 dots or other format, just preserve length with X's replacement = strings.Repeat("X", versionLen) @@ -1063,13 +1054,6 @@ func normalizeGoogleAPIClientHeader(header string) string { return prefix + replacement }) - // Ensure the result has the exact same length - if len(normalized) < originalLen { - normalized += strings.Repeat(" ", originalLen-len(normalized)) - } else if len(normalized) > originalLen { - normalized = normalized[:originalLen] - } - return normalized } @@ -1186,6 +1170,8 @@ func getDefaultRequestScrubbers() []func(*http.Request) error { // getDefaultResponseScrubbers returns the default response scrubbing functions to remove // sensitive headers and tracing information from response recordings. +const gatewayHeaderPrefix = "x-litellm-" + func getDefaultResponseScrubbers() []func(*bytes.Buffer) error { return []func(*bytes.Buffer) error{ func(buf *bytes.Buffer) error { @@ -1199,6 +1185,12 @@ func getDefaultResponseScrubbers() []func(*bytes.Buffer) error { resp.Header.Del("Cf-Ray") resp.Header.Del("cf-ray") + for name := range resp.Header { + if strings.HasPrefix(strings.ToLower(name), gatewayHeaderPrefix) { + resp.Header.Del(name) + } + } + // Remove Set-Cookie headers (session tokens, etc.) resp.Header.Del("Set-Cookie") resp.Header.Del("set-cookie") @@ -1210,6 +1202,9 @@ func getDefaultResponseScrubbers() []func(*bytes.Buffer) error { if resp.Header.Get("openai-organization") != "" { resp.Header.Set("openai-organization", "lcgo-tst") } + if resp.Header.Get("Openai-Project") != "" { + resp.Header.Set("Openai-Project", "proj_lcgo-tst") + } // Re-serialize the response buf.Reset() diff --git a/internal/httprr/rr_test.go b/internal/httprr/rr_test.go index 7a3eb32fc..38517b21f 100644 --- a/internal/httprr/rr_test.go +++ b/internal/httprr/rr_test.go @@ -75,6 +75,59 @@ func doRefresh(b *bytes.Buffer) error { return nil } +// lateBodyTransport answers at once and leaves the request body to be read +// afterwards, as net/http's transport does when the response arrives before its +// write loop has sent the whole body. +type lateBodyTransport struct { + body chan io.ReadCloser +} + +func (l lateBodyTransport) RoundTrip(req *http.Request) (*http.Response, error) { + l.body <- req.Body + return &http.Response{ + StatusCode: http.StatusOK, + Proto: "HTTP/1.1", + ProtoMajor: 1, + ProtoMinor: 1, + Header: http.Header{}, + Body: io.NopCloser(strings.NewReader("early")), + Request: req, + }, nil +} + +// TestRecordLeavesTheTransportItsOwnBody pins that recording never touches the +// body the transport may still be sending after RoundTrip returns. The recorder +// used to reread that same body for the cassette, which raced with the +// transport's write loop under -race and left it a drained body. +func TestRecordLeavesTheTransportItsOwnBody(t *testing.T) { + t.Parallel() + + transport := lateBodyTransport{body: make(chan io.ReadCloser, 1)} + rr, err := create(t.TempDir()+"/rr", transport) + if err != nil { + t.Fatal(err) + } + defer rr.Close() + + req, err := http.NewRequestWithContext(t.Context(), http.MethodPost, "http://example.invalid/", strings.NewReader("payload")) + if err != nil { + t.Fatal(err) + } + resp, err := rr.RoundTrip(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + + sent, err := io.ReadAll(<-transport.body) + if err != nil { + t.Fatal(err) + } + if string(sent) != "payload" { + t.Fatalf("transport sent %q, want %q", sent, "payload") + } +} + func TestRecordReplay(t *testing.T) { t.Parallel() dir := t.TempDir() diff --git a/internal/httprr/rr_unit_test.go b/internal/httprr/rr_unit_test.go index e6c6ae852..42a6f5b96 100644 --- a/internal/httprr/rr_unit_test.go +++ b/internal/httprr/rr_unit_test.go @@ -159,7 +159,7 @@ func TestScrubReqResp(t *testing.T) { } func TestRecordingFlag(t *testing.T) { - t.Parallel() + // Cannot run in parallel because it modifies global record flag tests := []struct { name string @@ -293,6 +293,7 @@ func TestDefaultResponseScrubbers(t *testing.T) { resp.Header.Set("Cf-Ray", "123456789-ABC") resp.Header.Set("Set-Cookie", "session=secret") resp.Header.Set("Openai-Organization", "org-123") + resp.Header.Set("Openai-Project", "proj_real-secret") // Serialize response var buf bytes.Buffer @@ -311,6 +312,7 @@ func TestDefaultResponseScrubbers(t *testing.T) { assert.Empty(t, scrubbedResp.Header.Get("Cf-Ray")) assert.Empty(t, scrubbedResp.Header.Get("Set-Cookie")) assert.Equal(t, "lcgo-tst", scrubbedResp.Header.Get("Openai-Organization")) + assert.Equal(t, "proj_lcgo-tst", scrubbedResp.Header.Get("Openai-Project")) } func TestEmbeddingJSONFormatter(t *testing.T) { diff --git a/internal/imageutil/download_test.go b/internal/imageutil/download_test.go index c58b5e41b..719cd3b56 100644 --- a/internal/imageutil/download_test.go +++ b/internal/imageutil/download_test.go @@ -2,7 +2,6 @@ package imageutil import ( "net/http" - "os" "path/filepath" "testing" @@ -12,17 +11,16 @@ import ( "github.com/stretchr/testify/require" ) +// requireHttprrRecording replays the test's recording, or records it when +// -httprecord matches its file. The URLs are public, so a recording run needs +// no credentials; without one and without a recording the test skips. func requireHttprrRecording(t *testing.T) *httprr.RecordReplay { t.Helper() - // Check if we have httprr recording - testName := httprr.CleanFileName(t.Name()) - httprrFile := filepath.Join("testdata", testName+".httprr") - httprrGzFile := httprrFile + ".gz" - if _, err := os.Stat(httprrFile); os.IsNotExist(err) { - if _, err := os.Stat(httprrGzFile); os.IsNotExist(err) { - t.Skip("No httprr recording available for external HTTP calls") - } + recording, err := httprr.Recording(filepath.Join("testdata", httprr.CleanFileName(t.Name())+".httprr")) + require.NoError(t, err) + if !recording { + httprr.SkipIfNoCredentialsAndRecordingMissing(t) } rr := httprr.OpenForTest(t, http.DefaultTransport) @@ -42,7 +40,7 @@ func TestDownloadImageData_Integration(t *testing.T) { }() // Test downloading a PNG image - imageType, data, err := DownloadImageData("https://via.placeholder.com/150/FF0000/FFFFFF?text=Test") + imageType, data, err := DownloadImageData("https://placehold.co/150x150/FF0000/FFFFFF.png?text=Test") require.NoError(t, err) require.Equal(t, "png", imageType) require.NotEmpty(t, data) @@ -61,27 +59,17 @@ func TestDownloadImageData_JPEG(t *testing.T) { }() // Test downloading a JPEG image - imageType, data, err := DownloadImageData("https://via.placeholder.com/150.jpg") + imageType, data, err := DownloadImageData("https://placehold.co/150.jpg") require.NoError(t, err) require.Equal(t, "jpeg", imageType) require.NotEmpty(t, data) } func TestDownloadImageData_InvalidURL_Integration(t *testing.T) { - // Setup HTTP record/replay - rr := requireHttprrRecording(t) - defer rr.Close() - - // Replace httputil.DefaultClient with httprr client - oldClient := httputil.DefaultClient - httputil.DefaultClient = rr.Client() - defer func() { - httputil.DefaultClient = oldClient - }() - - // Test with invalid URL + // A URL without a scheme is rejected by the transport before any + // connection is made, so this needs no recording. _, _, err := DownloadImageData("not-a-valid-url") - require.Error(t, err) + require.ErrorContains(t, err, "unsupported protocol scheme") } func TestDownloadImageData_NotFound(t *testing.T) { @@ -96,8 +84,8 @@ func TestDownloadImageData_NotFound(t *testing.T) { httputil.DefaultClient = oldClient }() - // Test with 404 response - imageType, data, err := DownloadImageData("https://httpbin.org/status/404") + // Test with a 404 response that carries an HTML error page + imageType, data, err := DownloadImageData("https://httpbin.org/image/missing") require.NoError(t, err) // The function doesn't check status codes require.NotEqual(t, "png", imageType) // Likely to be "html" or similar require.NotEmpty(t, data) diff --git a/internal/imageutil/testdata/TestDownloadImageData_Integration.httprr b/internal/imageutil/testdata/TestDownloadImageData_Integration.httprr new file mode 100644 index 000000000..0b84c2e13 Binary files /dev/null and b/internal/imageutil/testdata/TestDownloadImageData_Integration.httprr differ diff --git a/internal/imageutil/testdata/TestDownloadImageData_InvalidMimeType.httprr b/internal/imageutil/testdata/TestDownloadImageData_InvalidMimeType.httprr new file mode 100644 index 000000000..d029f39a8 --- /dev/null +++ b/internal/imageutil/testdata/TestDownloadImageData_InvalidMimeType.httprr @@ -0,0 +1,16 @@ +httprr trace v1 +97 229 +GET https://httpbin.org/robots.txt HTTP/1.1 +Host: httpbin.org +User-Agent: langchaingo-httprr + +HTTP/2.0 200 OK +Content-Length: 30 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Origin: * +Content-Type: text/plain +Date: Wed, 23 Sep 2026 11:01:15 GMT +Server: gunicorn/19.9.0 + +User-agent: * +Disallow: /deny diff --git a/internal/imageutil/testdata/TestDownloadImageData_JPEG.httprr b/internal/imageutil/testdata/TestDownloadImageData_JPEG.httprr new file mode 100644 index 000000000..35fa3476d Binary files /dev/null and b/internal/imageutil/testdata/TestDownloadImageData_JPEG.httprr differ diff --git a/internal/imageutil/testdata/TestDownloadImageData_NotFound.httprr b/internal/imageutil/testdata/TestDownloadImageData_NotFound.httprr new file mode 100644 index 000000000..61fcf22f5 --- /dev/null +++ b/internal/imageutil/testdata/TestDownloadImageData_NotFound.httprr @@ -0,0 +1,18 @@ +httprr trace v1 +100 439 +GET https://httpbin.org/image/missing HTTP/1.1 +Host: httpbin.org +User-Agent: langchaingo-httprr + +HTTP/2.0 404 Not Found +Content-Length: 233 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Origin: * +Content-Type: text/html +Date: Wed, 23 Sep 2026 11:01:14 GMT +Server: gunicorn/19.9.0 + + +404 Not Found +

Not Found

+

The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.

diff --git a/internal/numutil/num.go b/internal/numutil/num.go new file mode 100644 index 000000000..0bd2181d2 --- /dev/null +++ b/internal/numutil/num.go @@ -0,0 +1,14 @@ +package numutil + +import "math" + +func SaturateInt32(i int) int32 { + switch { + case i > math.MaxInt32: + return math.MaxInt32 + case i < math.MinInt32: + return math.MinInt32 + default: + return int32(i) + } +} diff --git a/internal/numutil/num_test.go b/internal/numutil/num_test.go new file mode 100644 index 000000000..ce4dc09c9 --- /dev/null +++ b/internal/numutil/num_test.go @@ -0,0 +1,29 @@ +package numutil_test + +import ( + "math" + "testing" + + "github.com/vxcontrol/langchaingo/internal/numutil" +) + +func TestSaturateInt32ClampsInsteadOfWrapping(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + in int + want int32 + }{ + {"above the ceiling", 3_000_000_000, math.MaxInt32}, + {"exactly the ceiling", math.MaxInt32, math.MaxInt32}, + {"one below the ceiling", math.MaxInt32 - 1, math.MaxInt32 - 1}, + {"below the floor", -3_000_000_000, math.MinInt32}, + {"ordinary", 16384, 16384}, + {"zero", 0, 0}, + } { + if got := numutil.SaturateInt32(tc.in); got != tc.want { + t.Errorf("%s: SaturateInt32(%d) = %d, want %d", tc.name, tc.in, got, tc.want) + } + } +} diff --git a/internal/testutil/testctr/testctr.go b/internal/testutil/testctr/testctr.go index 586ac3154..f6c306137 100644 --- a/internal/testutil/testctr/testctr.go +++ b/internal/testutil/testctr/testctr.go @@ -71,8 +71,8 @@ func EnsureTestEnv() int { // Set DOCKER_HOST if using non-standard Docker socket paths (Colima, Lima, etc.) // This works around testcontainers bug where it doesn't properly detect non-standard sockets - if dockerHost != "" && (strings.Contains(dockerHost, "colima") || - strings.Contains(dockerHost, ".lima") || + if dockerHost != "" && (strings.Contains(dockerHost, "colima") || + strings.Contains(dockerHost, ".lima") || !strings.Contains(dockerHost, "/var/run/docker.sock")) { os.Setenv("DOCKER_HOST", dockerHost) if verbose { @@ -98,15 +98,15 @@ func EnsureTestEnv() int { // Set the testcontainers Docker socket override if not already set // This tells testcontainers where to find the actual Docker socket if os.Getenv("TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE") == "" { - dockerSocket := "/var/run/docker.sock" // default - + dockerSocket := "/var/run/docker.sock" // default + // For Colima and other non-standard setups, extract socket path from DOCKER_HOST if dockerHost := os.Getenv("DOCKER_HOST"); dockerHost != "" { if strings.HasPrefix(dockerHost, "unix://") { dockerSocket = strings.TrimPrefix(dockerHost, "unix://") } } - + os.Setenv("TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE", dockerSocket) if verbose { fmt.Fprintf(os.Stderr, "testctr: Set TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=%s\n", dockerSocket) diff --git a/internal/toolcall/arguments.go b/internal/toolcall/arguments.go new file mode 100644 index 000000000..e243745b8 --- /dev/null +++ b/internal/toolcall/arguments.go @@ -0,0 +1,92 @@ +// Package toolcall decodes the arguments a model sent with a tool call. +package toolcall + +import ( + "encoding/json" + "errors" + "fmt" + "strings" +) + +// ErrNotAnObject reports arguments that are not a JSON object. +var ErrNotAnObject = errors.New("toolcall: arguments are not a JSON object") + +// Field is one argument, carrying the key order the model sent. +type Field struct { + Key string + Value any +} + +// DecodeFields decodes tool call arguments, keeping the order of the keys and +// the exact value of integers wider than float64 can hold. +func DecodeFields(raw string) ([]Field, error) { + dec := json.NewDecoder(strings.NewReader(raw)) + dec.UseNumber() + + open, err := dec.Token() + if err != nil { + return nil, err + } + if delim, ok := open.(json.Delim); !ok || delim != '{' { + return nil, fmt.Errorf("%w: %s", ErrNotAnObject, raw) + } + + var fields []Field + for dec.More() { + key, err := dec.Token() + if err != nil { + return nil, err + } + name, ok := key.(string) + if !ok { + return nil, fmt.Errorf("%w: %s", ErrNotAnObject, raw) + } + var value any + if err := dec.Decode(&value); err != nil { + return nil, err + } + fields = append(fields, Field{Key: name, Value: exactNumbers(value)}) + } + if _, err := dec.Token(); err != nil { + return nil, err + } + + return fields, nil +} + +// Decode decodes tool call arguments into a map, keeping integers exact. +func Decode(raw string) (map[string]any, error) { + fields, err := DecodeFields(raw) + if err != nil { + return nil, err + } + + arguments := make(map[string]any, len(fields)) + for _, field := range fields { + arguments[field.Key] = field.Value + } + + return arguments, nil +} + +func exactNumbers(value any) any { + switch typed := value.(type) { + case map[string]any: + for key, item := range typed { + typed[key] = exactNumbers(item) + } + case []any: + for i, item := range typed { + typed[i] = exactNumbers(item) + } + case json.Number: + if whole, err := typed.Int64(); err == nil { + return whole + } + if fraction, err := typed.Float64(); err == nil { + return fraction + } + } + + return value +} diff --git a/internal/toolcall/arguments_test.go b/internal/toolcall/arguments_test.go new file mode 100644 index 000000000..bf8899fb9 --- /dev/null +++ b/internal/toolcall/arguments_test.go @@ -0,0 +1,47 @@ +package toolcall_test + +import ( + "testing" + + "github.com/vxcontrol/langchaingo/internal/toolcall" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestDecodeKeepsAnIntegerWiderThanFloat64(t *testing.T) { + t.Parallel() + + args, err := toolcall.Decode(`{"id":9007199254740993,"nested":{"amount":12345678901234567}}`) + require.NoError(t, err) + assert.Equal(t, int64(9007199254740993), args["id"]) + assert.Equal(t, int64(12345678901234567), args["nested"].(map[string]any)["amount"]) +} + +func TestDecodeFieldsKeepsTheOrderTheModelSent(t *testing.T) { + t.Parallel() + + fields, err := toolcall.DecodeFields(`{"zebra":1,"alpha":2,"middle":3}`) + require.NoError(t, err) + require.Len(t, fields, 3) + assert.Equal(t, []string{"zebra", "alpha", "middle"}, + []string{fields[0].Key, fields[1].Key, fields[2].Key}) +} + +func TestDecodeRefusesArgumentsThatAreNotAnObject(t *testing.T) { + t.Parallel() + + _, err := toolcall.Decode(`[1,2,3]`) + require.ErrorIs(t, err, toolcall.ErrNotAnObject) +} + +func TestDecodeKeepsFractionsAndStrings(t *testing.T) { + t.Parallel() + + args, err := toolcall.Decode(`{"ratio":0.5,"name":"x","flag":true,"list":[1,2]}`) + require.NoError(t, err) + assert.InDelta(t, 0.5, args["ratio"], 0) + assert.Equal(t, "x", args["name"]) + assert.Equal(t, true, args["flag"]) + assert.Equal(t, []any{int64(1), int64(2)}, args["list"]) +} diff --git a/llms/anthropic/anthropic_test.go b/llms/anthropic/anthropic_test.go index 19c44fbde..696356f36 100644 --- a/llms/anthropic/anthropic_test.go +++ b/llms/anthropic/anthropic_test.go @@ -60,6 +60,20 @@ func TestAnthropic_Refusal(t *testing.T) { assert.Equal(t, 7, refusal.OutputTokens, "billed output tokens must be preserved") }) + t.Run("refusal carries the cached input it was billed for", func(t *testing.T) { + t.Parallel() + _, err := generateAgainst(t, `{"id":"m","type":"message","role":"assistant","model":"claude-fable-5",`+ + `"content":[],"stop_reason":"refusal",`+ + `"usage":{"input_tokens":13,"output_tokens":4,`+ + `"cache_creation_input_tokens":300,"cache_read_input_tokens":3602}}`) + var refusal *anthropic.ErrModelRefusal + require.ErrorAs(t, err, &refusal) + assert.Equal(t, 300, refusal.CacheCreationInputTokens) + assert.Equal(t, 3602, refusal.CacheReadInputTokens) + assert.Equal(t, 3915, refusal.InputTokens+refusal.CacheCreationInputTokens+refusal.CacheReadInputTokens, + "the whole prompt must be recoverable from the error") + }) + t.Run("empty refusal is a refusal, not an empty response", func(t *testing.T) { t.Parallel() _, err := generateAgainst(t, `{"id":"m","type":"message","role":"assistant","model":"claude-fable-5",`+ diff --git a/llms/anthropic/anthropic_thinking_test.go b/llms/anthropic/anthropic_thinking_test.go index a69cd6def..398abbd2d 100644 --- a/llms/anthropic/anthropic_thinking_test.go +++ b/llms/anthropic/anthropic_thinking_test.go @@ -8,6 +8,7 @@ import ( "net/http/httptest" "os" "strings" + "sync/atomic" "testing" "github.com/stretchr/testify/assert" @@ -15,6 +16,7 @@ import ( "github.com/vxcontrol/langchaingo/internal/httprr" "github.com/vxcontrol/langchaingo/llms" "github.com/vxcontrol/langchaingo/llms/anthropic" + "github.com/vxcontrol/langchaingo/llms/reasoning" "github.com/vxcontrol/langchaingo/llms/streaming" ) @@ -850,10 +852,10 @@ func TestAnthropic_AdaptiveThinkingRequest(t *testing.T) { assert.Equal(t, "high", outputConfig["effort"]) }) - t.Run("xhigh effort flows through to output_config", func(t *testing.T) { + t.Run("xhigh flows through where the generation takes it", func(t *testing.T) { t.Parallel() - payload, _ := captureMessagesRequest(t, + payload, _ := captureMessagesRequestModel(t, "claude-opus-4-7", llms.WithAdaptiveReasoning(llms.ReasoningXHigh), llms.WithMaxTokens(4096), ) @@ -861,6 +863,19 @@ func TestAnthropic_AdaptiveThinkingRequest(t *testing.T) { outputConfig, _ := payload["output_config"].(map[string]any) assert.Equal(t, "xhigh", outputConfig["effort"]) }) + + t.Run("xhigh is lowered where the generation does not", func(t *testing.T) { + t.Parallel() + + payload, _ := captureMessagesRequestModel(t, "claude-opus-4-6", + llms.WithAdaptiveReasoning(llms.ReasoningXHigh), + llms.WithMaxTokens(4096), + ) + + outputConfig, _ := payload["output_config"].(map[string]any) + assert.Equal(t, "high", outputConfig["effort"], + "xhigh must step down to the highest level below it, not up to max") + }) } // An explicit ReasoningOn with no effort/tokens must not reach the API as an @@ -895,19 +910,49 @@ func TestAnthropic_BudgetThinkingRequest(t *testing.T) { _, hasDisplay := thinking["display"] assert.False(t, hasDisplay, "budget thinking has no display field") - _, hasOutputConfig := payload["output_config"] - assert.False(t, hasOutputConfig, "budget thinking has no output_config") + outputConfig, _ := payload["output_config"].(map[string]any) + assert.Equal(t, "medium", outputConfig["effort"], + "Opus 4.6 accepts an effort alongside its budget") - // Budget thinking pins temperature to 1.0 and drops top_p — the API rejects - // temperature and top_p together. assert.EqualValues(t, 1.0, payload["temperature"]) _, hasTopP := payload["top_p"] assert.False(t, hasTopP, "budget thinking must drop top_p") assert.EqualValues(t, 4096, payload["max_tokens"]) // max(budget*2, maxTokens) } -// Haiku 4.5 rejects temperature and top_p together; without thinking the SDK must -// send at most one (keeping temperature) rather than both. +func TestAnthropic_AnswerLimitSurvivesInterleavedThinking(t *testing.T) { + t.Parallel() + + tool := llms.Tool{Type: "function", Function: &llms.FunctionDefinition{ + Name: "get_weather", Description: "weather", + Parameters: map[string]any{"type": "object", "properties": map[string]any{}}, + }} + budgeted := func(extra ...llms.CallOption) []llms.CallOption { + return append([]llms.CallOption{llms.WithReasoning("", 4096), llms.WithMaxTokens(512)}, extra...) + } + + for _, tc := range []struct { + name string + opts []llms.CallOption + wantBeta bool + want float64 + }{ + {"tools put the beta on the wire", budgeted(llms.WithTools([]llms.Tool{tool})), true, 512}, + {"the caller asks for interleaving without tools", budgeted(anthropic.WithInterleavedThinking()), true, 512}, + {"no interleaving, the vendor checks the pair", budgeted(), false, 2048}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + payload, header := captureMessagesRequestModel(t, "claude-sonnet-4-5", tc.opts...) + gotBeta := strings.Contains(header.Get("anthropic-beta"), "interleaved-thinking-2025-05-14") + require.Equal(t, tc.wantBeta, gotBeta, "beta header: %q", header.Get("anthropic-beta")) + require.Equal(t, float64(1024), payload["thinking"].(map[string]any)["budget_tokens"]) + require.Equal(t, tc.want, payload["max_tokens"]) + }) + } +} + func TestAnthropic_Haiku45MutuallyExclusiveSampling(t *testing.T) { t.Parallel() @@ -922,8 +967,6 @@ func TestAnthropic_Haiku45MutuallyExclusiveSampling(t *testing.T) { assert.False(t, hasTopP, "Haiku 4.5 must not send top_p together with temperature") } -// Opus 4.5 uses budget thinking but also honors effort, so the budget path must -// carry output_config.effort instead of dropping it. func TestAnthropic_BudgetEffortForOpus45(t *testing.T) { t.Parallel() @@ -1000,3 +1043,435 @@ func TestAnthropic_InterleavedThinkingBetaHeader(t *testing.T) { assert.NotContains(t, header.Get("anthropic-beta"), "interleaved-thinking") }) } + +func captureAssistantReplay(t *testing.T, parts []llms.ContentPart) []any { + t.Helper() + + var body []byte + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + body, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"id":"m","type":"message","role":"assistant","model":"claude-sonnet-5",` + + `"content":[{"type":"text","text":"ok"}],"stop_reason":"end_turn","usage":{"input_tokens":1,"output_tokens":1}}`)) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New( + anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), + anthropic.WithModel("claude-sonnet-5"), + ) + require.NoError(t, err) + + messages := []llms.MessageContent{ + {Role: llms.ChatMessageTypeHuman, Parts: []llms.ContentPart{llms.TextPart("hi")}}, + {Role: llms.ChatMessageTypeAI, Parts: parts}, + {Role: llms.ChatMessageTypeHuman, Parts: []llms.ContentPart{llms.TextPart("continue")}}, + } + _, err = llm.GenerateContent(t.Context(), messages) + require.NoError(t, err) + + var payload struct { + Messages []struct { + Content []any `json:"content"` + } `json:"messages"` + } + require.NoError(t, json.Unmarshal(body, &payload)) + require.Len(t, payload.Messages, 3) + return payload.Messages[1].Content +} + +func thinkingBlocks(blocks []any) []map[string]any { + var out []map[string]any + for _, b := range blocks { + if m, ok := b.(map[string]any); ok && m["type"] == "thinking" { + out = append(out, m) + } + } + return out +} + +func TestAnthropic_AssistantPrefill(t *testing.T) { + t.Parallel() + + prefilled := []llms.MessageContent{ + {Role: llms.ChatMessageTypeHuman, Parts: []llms.ContentPart{llms.TextPart("hi")}}, + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{llms.TextPart("The answer is")}}, + } + + newLLM := func(t *testing.T, model string) (*anthropic.LLM, *atomic.Int32) { + t.Helper() + var hits atomic.Int32 + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + hits.Add(1) + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"id":"m","type":"message","role":"assistant","model":"` + model + `",` + + `"content":[{"type":"text","text":"ok"}],"stop_reason":"end_turn",` + + `"usage":{"input_tokens":1,"output_tokens":1}}`)) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New( + anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), + anthropic.WithModel(model), + ) + require.NoError(t, err) + return llm, &hits + } + + t.Run("rejected on 4.6 and later without a round trip", func(t *testing.T) { + t.Parallel() + + llm, hits := newLLM(t, "claude-opus-4-6") + _, err := llm.GenerateContent(t.Context(), prefilled) + + var unsupported *anthropic.ErrAssistantPrefillUnsupported + require.ErrorAs(t, err, &unsupported) + require.Equal(t, "claude-opus-4-6", unsupported.Model) + require.Zero(t, hits.Load(), "the request must not be sent") + }) + + t.Run("still allowed on the 4.5 generation", func(t *testing.T) { + t.Parallel() + + llm, hits := newLLM(t, "claude-sonnet-4-5") + _, err := llm.GenerateContent(t.Context(), prefilled) + + require.NoError(t, err) + require.Equal(t, int32(1), hits.Load()) + }) + + t.Run("a trailing user turn is untouched on 4.6 and later", func(t *testing.T) { + t.Parallel() + + llm, hits := newLLM(t, "claude-sonnet-5") + _, err := llm.GenerateContent(t.Context(), []llms.MessageContent{ + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{llms.TextPart("earlier turn")}}, + {Role: llms.ChatMessageTypeHuman, Parts: []llms.ContentPart{llms.TextPart("and now?")}}, + }) + + require.NoError(t, err) + require.Equal(t, int32(1), hits.Load()) + }) +} + +func TestAnthropic_ForcedToolChoiceWithBudgetThinking(t *testing.T) { + t.Parallel() + + tools := []llms.Tool{{ + Type: "function", + Function: &llms.FunctionDefinition{ + Name: "get_weather", + Parameters: map[string]any{"type": "object", "properties": map[string]any{}}, + }, + }} + messages := []llms.MessageContent{ + {Role: llms.ChatMessageTypeHuman, Parts: []llms.ContentPart{llms.TextPart("weather?")}}, + } + + newLLM := func(t *testing.T, model string) (*anthropic.LLM, *atomic.Int32) { + t.Helper() + var hits atomic.Int32 + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + hits.Add(1) + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"id":"m","type":"message","role":"assistant","model":"` + model + `",` + + `"content":[{"type":"text","text":"ok"}],"stop_reason":"end_turn",` + + `"usage":{"input_tokens":1,"output_tokens":1}}`)) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New( + anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), + anthropic.WithModel(model), + ) + require.NoError(t, err) + return llm, &hits + } + + t.Run("budget thinking rejects a forced tool choice without a round trip", func(t *testing.T) { + t.Parallel() + + llm, hits := newLLM(t, "claude-sonnet-4-5") + _, err := llm.GenerateContent(t.Context(), messages, + llms.WithReasoning(llms.ReasoningMedium, 0), + llms.WithTools(tools), + llms.WithToolChoice(map[string]any{"type": "any"}), + ) + + var conflict *anthropic.ErrForcedToolUseWithThinking + require.ErrorAs(t, err, &conflict) + require.Equal(t, "claude-sonnet-4-5", conflict.Model) + require.Zero(t, hits.Load(), "the request must not be sent") + }) + + t.Run("adaptive thinking allows a forced tool choice", func(t *testing.T) { + t.Parallel() + + llm, hits := newLLM(t, "claude-sonnet-5") + _, err := llm.GenerateContent(t.Context(), messages, + llms.WithReasoning(llms.ReasoningMedium, 0), + llms.WithTools(tools), + llms.WithToolChoice(map[string]any{"type": "tool", "name": "get_weather"}), + ) + + require.NoError(t, err) + require.Equal(t, int32(1), hits.Load()) + }) + + t.Run("budget thinking allows auto", func(t *testing.T) { + t.Parallel() + + llm, hits := newLLM(t, "claude-sonnet-4-5") + _, err := llm.GenerateContent(t.Context(), messages, + llms.WithReasoning(llms.ReasoningMedium, 0), + llms.WithTools(tools), + llms.WithToolChoice(map[string]any{"type": "auto"}), + ) + + require.NoError(t, err) + require.Equal(t, int32(1), hits.Load()) + }) +} + +func TestAnthropic_OmittedThinkingResponseKeepsSignature(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"id":"m","type":"message","role":"assistant","model":"claude-sonnet-5",` + + `"content":[{"type":"thinking","thinking":"","signature":"sig-only"},{"type":"text","text":"ok"}],` + + `"stop_reason":"end_turn","usage":{"input_tokens":1,"output_tokens":1}}`)) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New( + anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), + anthropic.WithModel("claude-sonnet-5"), + ) + require.NoError(t, err) + + resp, err := llm.GenerateContent(t.Context(), []llms.MessageContent{ + {Role: llms.ChatMessageTypeHuman, Parts: []llms.ContentPart{llms.TextPart("hi")}}, + }) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + require.NotNil(t, resp.Choices[0].Reasoning, + "a block with an empty thinking field still carries the signature the next turn must replay") + require.Equal(t, "sig-only", string(resp.Choices[0].Reasoning.Signature)) + require.Empty(t, resp.Choices[0].Reasoning.Content) +} + +func TestAnthropic_ThinkingReplayNeverOmitsRequiredField(t *testing.T) { + t.Parallel() + + t.Run("a block carrying only a signature keeps the required field", func(t *testing.T) { + t.Parallel() + + blocks := captureAssistantReplay(t, []llms.ContentPart{ + llms.TextContent{ + Text: "answer", + Reasoning: &reasoning.ContentReasoning{Signature: []byte("sig-only")}, + }, + }) + + emitted := thinkingBlocks(blocks) + require.Len(t, emitted, 1) + require.Contains(t, emitted[0], "thinking", + "the thinking field is required even when the model returned no text for it") + require.Equal(t, "", emitted[0]["thinking"]) + require.Equal(t, "sig-only", emitted[0]["signature"]) + }) + + t.Run("every thinking block of the turn is replayed in order", func(t *testing.T) { + t.Parallel() + + blocks := captureAssistantReplay(t, []llms.ContentPart{ + llms.TextContent{ + Reasoning: &reasoning.ContentReasoning{Signature: []byte("sig-only")}, + }, + llms.TextContent{ + Text: "answer", + Reasoning: &reasoning.ContentReasoning{Content: "real thinking", Signature: []byte("sig")}, + }, + }) + + emitted := thinkingBlocks(blocks) + require.Len(t, emitted, 2) + require.Equal(t, "", emitted[0]["thinking"]) + require.Equal(t, "sig-only", emitted[0]["signature"]) + require.Equal(t, "real thinking", emitted[1]["thinking"]) + + require.Len(t, blocks, 3) + last, ok := blocks[2].(map[string]any) + require.True(t, ok) + require.Equal(t, "text", last["type"]) + }) + + t.Run("thinking text always reaches the wire", func(t *testing.T) { + t.Parallel() + + blocks := captureAssistantReplay(t, []llms.ContentPart{ + llms.TextContent{ + Text: "answer", + Reasoning: &reasoning.ContentReasoning{Content: "step one", Signature: []byte("sig")}, + }, + }) + + emitted := thinkingBlocks(blocks) + require.Len(t, emitted, 1) + require.Equal(t, "step one", emitted[0]["thinking"]) + require.Equal(t, "sig", emitted[0]["signature"]) + }) +} + +func TestBudgetThinkingDoesNotPinTemperatureOnAModelThatRejectsIt(t *testing.T) { + t.Parallel() + + t.Run("a model that rejects sampling gets no temperature", func(t *testing.T) { + t.Parallel() + payload, _ := captureMessagesRequestModel(t, "claude-mythos-preview", + llms.WithReasoning(llms.ReasoningMedium, 2048)) + + thinking, ok := payload["thinking"].(map[string]any) + require.True(t, ok, "budget thinking must reach the wire, got %v", payload) + require.Equal(t, "enabled", thinking["type"]) + require.NotContains(t, payload, "temperature", + "a model listed as rejecting sampling must not be sent temperature, got %v", payload) + }) + + t.Run("a model that accepts sampling still gets the required pin", func(t *testing.T) { + t.Parallel() + payload, _ := captureMessagesRequestModel(t, "claude-opus-4-6", + llms.WithReasoning(llms.ReasoningMedium, 2048)) + + thinking, ok := payload["thinking"].(map[string]any) + require.True(t, ok, "budget thinking must reach the wire, got %v", payload) + require.Equal(t, "enabled", thinking["type"]) + require.InDelta(t, 1.0, payload["temperature"], 0.0001) + }) +} + +func TestUnversionedAliasRunsItsTiersMechanism(t *testing.T) { + t.Parallel() + + t.Run("an adaptive tier alias runs adaptive thinking", func(t *testing.T) { + t.Parallel() + payload, _ := captureMessagesRequestModel(t, "claude-opus-latest", + llms.WithReasoning(llms.ReasoningHigh, 0), llms.WithTemperature(0.3)) + + thinking, ok := payload["thinking"].(map[string]any) + require.True(t, ok, "thinking must reach the wire, got %v", payload) + require.Equal(t, "adaptive", thinking["type"]) + require.NotContains(t, payload, "temperature", + "an adaptive-only model must not be sent temperature, got %v", payload) + }) + + t.Run("a budget tier alias keeps budget thinking", func(t *testing.T) { + t.Parallel() + payload, _ := captureMessagesRequestModel(t, "claude-haiku-latest", + llms.WithReasoning(llms.ReasoningHigh, 2048)) + + thinking, ok := payload["thinking"].(map[string]any) + require.True(t, ok, "thinking must reach the wire, got %v", payload) + require.Equal(t, "enabled", thinking["type"]) + }) +} + +func TestTopKReachesTheWireAndYieldsToThinking(t *testing.T) { + t.Parallel() + + t.Run("plain request carries it", func(t *testing.T) { + t.Parallel() + + body, _ := captureMessagesRequestModel(t, "claude-sonnet-4-5", llms.WithTopK(20)) + if body["top_k"] != float64(20) { + t.Fatalf("top_k must reach the wire, got body: %v", body) + } + }) + + t.Run("thinking unsets it", func(t *testing.T) { + t.Parallel() + + body, _ := captureMessagesRequestModel(t, "claude-sonnet-4-5", + llms.WithTopK(20), llms.WithReasoning(llms.ReasoningNone, 1100)) + if _, ok := body["top_k"]; ok { + t.Fatalf("the vendor answers `top_k` must be unset when thinking is enabled; got body: %v", body) + } + }) + + t.Run("adaptive thinking unsets it too", func(t *testing.T) { + t.Parallel() + + body, _ := captureMessagesRequestModel(t, "claude-sonnet-5", + llms.WithTopK(20), llms.WithReasoning(llms.ReasoningHigh, 0)) + if _, ok := body["top_k"]; ok { + t.Fatalf("adaptive thinking is thinking, so top_k must stay off the wire; got body: %v", body) + } + }) + + t.Run("a model that rejects sampling never gets it", func(t *testing.T) { + t.Parallel() + + body, _ := captureMessagesRequestModel(t, "claude-sonnet-5", llms.WithTopK(20)) + if _, ok := body["top_k"]; ok { + t.Fatalf("claude-sonnet-5 rejects sampling params, got body: %v", body) + } + }) +} + +func TestFastModeTravelsWithItsBetaHeader(t *testing.T) { + t.Parallel() + + t.Run("asked", func(t *testing.T) { + t.Parallel() + + body, header := captureMessagesRequestModel(t, "claude-opus-5", llms.WithInferenceSpeed("fast")) + if body["speed"] != "fast" { + t.Fatalf("the speed field must reach the wire, got body: %v", body) + } + if !strings.Contains(header.Get("Anthropic-Beta"), "fast-mode-2026-02-01") { + t.Fatalf("the beta header must ride along, got: %q", header.Get("Anthropic-Beta")) + } + }) + + t.Run("not asked", func(t *testing.T) { + t.Parallel() + + body, header := captureMessagesRequestModel(t, "claude-opus-5") + if _, ok := body["speed"]; ok { + t.Fatalf("an unset speed must stay off the wire, got body: %v", body) + } + if strings.Contains(header.Get("Anthropic-Beta"), "fast-mode") { + t.Fatalf("the beta header must stay off too, got: %q", header.Get("Anthropic-Beta")) + } + }) +} + +func TestTheServedSpeedReachesTheCaller(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"id":"msg_test","type":"message","role":"assistant",` + + `"model":"claude-opus-5","content":[{"type":"text","text":"ok"}],"stop_reason":"end_turn",` + + `"usage":{"input_tokens":1,"output_tokens":1,"speed":"standard"}}`)) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New(anthropic.WithToken("test-key"), anthropic.WithBaseURL(srv.URL), + anthropic.WithModel("claude-opus-4-6")) + require.NoError(t, err) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{{Role: llms.ChatMessageTypeHuman, Parts: []llms.ContentPart{llms.TextPart("hi")}}}, + llms.WithInferenceSpeed("fast")) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + + assert.Equal(t, "standard", resp.Choices[0].GenerationInfo["InferenceSpeed"], + "a model that quietly serves the standard speed must be visible to the caller") +} diff --git a/llms/anthropic/anthropicllm.go b/llms/anthropic/anthropicllm.go index 2e8d96641..e84047e56 100644 --- a/llms/anthropic/anthropicllm.go +++ b/llms/anthropic/anthropicllm.go @@ -8,6 +8,7 @@ import ( "fmt" "os" "regexp" + "slices" "strings" "time" @@ -30,33 +31,8 @@ var ( ErrUnsupportedContentType = errors.New("unsupported content type") ) -// ErrModelRefusal is returned when the model declines to respond (Anthropic -// stop_reason "refusal"), e.g. a creative model such as Claude Fable 5 hitting a -// content boundary. It is distinct from an empty or failed response; any refusal -// text the model returned is in Message. Category and Explanation carry the API's -// stop_details so callers can pick a fallback by classifier; InputTokens and -// OutputTokens preserve billed usage (a refusal is still billed for what ran). -type ErrModelRefusal struct { - Message string - Category string - Explanation string - InputTokens int - OutputTokens int -} - -func (e *ErrModelRefusal) Error() string { - msg := "anthropic: model refused to respond" - if e.Category != "" { - msg += " (" + e.Category + ")" - } - if e.Explanation != "" { - msg += " (" + e.Explanation + ")" - } - if e.Message != "" { - msg += ": " + e.Message - } - return msg -} +// ErrModelRefusal is the shared refusal error, aliased for callers of this door. +type ErrModelRefusal = llms.ErrModelRefusal const ( RoleUser = "user" @@ -96,15 +72,20 @@ func New(opts ...Option) (*LLM, error) { } func newClientFromOptions(options *options) (*anthropicclient.Client, error) { - if len(options.token) == 0 { + if options.federation == nil && len(options.token) == 0 { return nil, ErrMissingToken } - return anthropicclient.New(options.token, options.model, options.baseURL, + clientOptions := []anthropicclient.Option{ anthropicclient.WithHTTPClient(options.httpClient), anthropicclient.WithLegacyTextCompletionsAPI(options.useLegacyTextCompletionsAPI), anthropicclient.WithAnthropicBetaHeader(options.anthropicBetaHeader), - ) + } + if options.federation != nil { + clientOptions = append(clientOptions, anthropicclient.WithFederation(*options.federation)) + } + + return anthropicclient.New(options.token, options.model, options.baseURL, clientOptions...) } // Call requests a completion for the given prompt. @@ -143,6 +124,9 @@ func (o *LLM) GenerateContent(ctx context.Context, messages []llms.MessageConten } func generateCompletionsContent(ctx context.Context, o *LLM, messages []llms.MessageContent, opts *llms.CallOptions) (*llms.ContentResponse, error) { //nolint:lll + if err := opts.ValidateReasoning(); err != nil { + return nil, err + } if len(messages) == 0 || len(messages[0].Parts) == 0 { return nil, ErrEmptyResponse } @@ -168,17 +152,32 @@ func generateCompletionsContent(ctx context.Context, o *LLM, messages []llms.Mes return nil, fmt.Errorf("anthropic: failed to create completion: %w", err) } + warn := &llms.Warnings{} + completionsModel := o.client.EffectiveModel(opts.GetModel()) + reportAnthropicCompletions(warn, completionsModel, *opts) + reportAnthropicCompletionsMessages(warn, completionsModel, messages) + resp := &llms.ContentResponse{ Choices: []*llms.ContentChoice{ { - Content: result.Text, + Content: result.Text, + StopReason: result.StopReason, + Truncated: llms.IsTruncated(result.StopReason), }, }, + Warnings: warn.List(), + } + if err := llms.CheckTruncation(resp, *opts); err != nil { + return resp, err } return resp, nil } func generateMessagesContent(ctx context.Context, o *LLM, messages []llms.MessageContent, opts *llms.CallOptions) (*llms.ContentResponse, error) { //nolint:lll,funlen,cyclop + if err := opts.ValidateReasoning(); err != nil { + return nil, err + } + chatMessages, systemPrompt, err := processMessages(messages) if err != nil { return nil, fmt.Errorf("anthropic: failed to process messages: %w", err) @@ -203,20 +202,26 @@ func generateMessagesContent(ctx context.Context, o *LLM, messages []llms.Messag Display: "summarized", } outputConfig = &anthropicclient.OutputConfig{ - Effort: string(opts.Reasoning.GetEffort(opts.GetMaxTokens())), + Effort: reasoning.ClaudeClampEffort(model, string(opts.Reasoning.GetEffort(opts.GetMaxTokens())), reasoning.ProviderAnthropic), } - } else { + } else if budget := reasoning.ClaudeClampBudget(model, + opts.Reasoning.GetTokens(opts.GetMaxTokens())); budget > 0 { thinking = &anthropicclient.ThinkingPayload{ Type: "enabled", - Budget: opts.Reasoning.GetTokens(opts.GetMaxTokens()), + Budget: budget, } // Some budget-thinking models (Opus 4.5) also honor effort; without this // the caller's effort is silently dropped on the budget path. - if reasoning.ClaudeSupportsEffortWithBudget(model) { + if reasoning.ClaudeSupportsEffortWithBudget(model, reasoning.ProviderAnthropic) { outputConfig = &anthropicclient.OutputConfig{ - Effort: string(opts.Reasoning.GetEffort(opts.GetMaxTokens())), + Effort: reasoning.ClaudeClampEffort(model, string(opts.Reasoning.GetEffort(opts.GetMaxTokens())), reasoning.ProviderAnthropic), } } + } else { + return nil, &reasoning.ErrEffortHasNoBudget{ + Model: model, + Effort: string(opts.Reasoning.GetEffort(opts.GetMaxTokens())), + } } case llms.ReasoningOff: switch reasoning.ResolveOff(model, reasoning.ProviderAnthropic) { //nolint:exhaustive // only Claude-relevant wires are handled; others are a no-op @@ -227,6 +232,14 @@ func generateMessagesContent(ctx context.Context, o *LLM, messages []llms.Messag } } + if thinking != nil && thinking.Type == "enabled" && llms.ForcesToolUse(opts.ToolChoice) { + return nil, &ErrForcedToolUseWithThinking{Model: model} + } + + if reasoning.ClaudeRejectsAssistantPrefill(model) && llms.HasAssistantPrefill(messages) { + return nil, &ErrAssistantPrefillUnsupported{Model: model} + } + // Structured output rides in output_config.format, merged with any effort set // above (the two are independent). The schema constrains the final text only. if outputConfig, err = applyAnthropicStructuredOutput(opts, model, messages, outputConfig); err != nil { @@ -261,28 +274,41 @@ func generateMessagesContent(ctx context.Context, o *LLM, messages []llms.Messag } } - // Thinking constrains sampling params: the API rejects temperature and top_p - // together, and requires temperature=1.0 with budget thinking. So pin - // temperature and drop top_p for budget; drop both for adaptive (which - // rejects sampling params outright). - temperature, topP, maxTokens := opts.Temperature, opts.TopP, opts.GetMaxTokens() + warn := &llms.Warnings{} + temperature, topP, topK, maxTokens := opts.Temperature, opts.TopP, opts.TopK, opts.GetMaxTokens() switch { case thinking != nil && thinking.Type == "adaptive": temperature = nil topP = nil + topK = nil case thinking != nil && thinking.Type == "enabled" && thinking.Budget > 0: - temperature = getFloatPointer(1.0) - topP = nil - maxTokens = max(thinking.Budget*2, maxTokens) // 2x the budget for thinking + keepTopP := topP != nil && opts.Temperature == nil && + reasoning.ClaudeKeepsTopPWhileThinking(model, *topP) + switch { + case reasoning.ClaudeRejectsSampling(model), keepTopP: + temperature = nil + default: + temperature = getFloatPointer(1.0) + } + if !keepTopP { + topP = nil + } + topK = nil + if !slices.Contains(betaHeaders, anthropicInterleavedThinkingBeta) || + !reasoning.ClaudeInterleavesOnBudget(model) { + maxTokens = reasoning.ClaudeMaxTokensForBudget(thinking.Budget, maxTokens) + } case reasoning.ClaudeRejectsSampling(model): // Adaptive-only models reject sampling params even without thinking. temperature = nil topP = nil + topK = nil case reasoning.ClaudeMutuallyExclusiveSampling(model) && temperature != nil && topP != nil: - // Haiku 4.5 rejects temperature and top_p together; keep temperature. topP = nil } + reportAnthropicSampling(warn, model, *opts, thinking, outputConfig, temperature, topP, topK, maxTokens) + result, err := o.client.CreateMessage(ctx, &anthropicclient.MessageRequest{ Model: opts.GetModel(), Messages: chatMessages, @@ -291,8 +317,10 @@ func generateMessagesContent(ctx context.Context, o *LLM, messages []llms.Messag StopWords: opts.StopWords, Temperature: temperature, TopP: topP, + TopK: topK, + Speed: opts.InferenceSpeed, Tools: tools, - ToolChoice: opts.ToolChoice, + ToolChoice: anthropicToolChoice(opts.ToolChoice), Thinking: thinking, OutputConfig: outputConfig, BetaHeaders: betaHeaders, @@ -300,11 +328,25 @@ func generateMessagesContent(ctx context.Context, o *LLM, messages []llms.Messag }) if err != nil { // The closing callback is emitted once by GenerateContent's deferred handler. - return nil, fmt.Errorf("anthropic: failed to create message: %w", err) + wrapped := fmt.Errorf("anthropic: failed to create message: %w", err) + if result == nil { + return nil, wrapped + } + partial, buildErr := processAnthropicResponse(result, warn) + if buildErr != nil { + return nil, wrapped + } + if truncated := llms.CheckTruncation(partial, *opts); truncated != nil { + return partial, errors.Join(wrapped, truncated) + } + return partial, wrapped } - response, err := processAnthropicResponse(result) + response, err := processAnthropicResponse(result, warn) if err != nil { - return nil, err + return response, err + } + if err := llms.CheckTruncation(response, *opts); err != nil { + return response, err } // When structured output was requested, validate the final text against the // original schema. The response is returned alongside the typed error so the @@ -326,62 +368,45 @@ func anthropicTextContent(contents []anthropicclient.Content) string { return b.String() } +func anthropicRefusal(result *anthropicclient.MessageResponsePayload) *ErrModelRefusal { + refusal := &ErrModelRefusal{ + Provider: "anthropic", + Message: anthropicTextContent(result.Content), + InputTokens: result.Usage.InputTokens, + OutputTokens: result.Usage.OutputTokens, + CacheCreationInputTokens: result.Usage.CacheCreationInputTokens, + CacheReadInputTokens: result.Usage.CacheReadInputTokens, + } + if result.StopDetails != nil { + refusal.Category = result.StopDetails.Category + refusal.Explanation = result.StopDetails.Explanation + } + return refusal +} + // processAnthropicResponse converts Anthropic API response to standard ContentResponse -func processAnthropicResponse(result *anthropicclient.MessageResponsePayload) (*llms.ContentResponse, error) { +func processAnthropicResponse( + result *anthropicclient.MessageResponsePayload, warn *llms.Warnings, +) (*llms.ContentResponse, error) { if result == nil { return nil, ErrEmptyResponse } - // A refusal is a distinct outcome from an empty/failed response: surface it as a - // typed error carrying any text the model returned, so callers can tell "the - // model declined" from "no response" (an empty refusal would otherwise look empty). - if result.StopReason == "refusal" { - refusal := &ErrModelRefusal{ - Message: anthropicTextContent(result.Content), - InputTokens: result.Usage.InputTokens, - OutputTokens: result.Usage.OutputTokens, - } - if result.StopDetails != nil { - refusal.Category = result.StopDetails.Category - refusal.Explanation = result.StopDetails.Explanation - } - return nil, refusal - } - if len(result.Content) == 0 { + if len(result.Content) == 0 && result.StopReason == "" { return nil, ErrEmptyResponse } - // Extract ALL thinking content, signature - // According to Anthropic docs, there's ONE thinking block per response - var reasoningContent strings.Builder - var signature []byte - - for _, content := range result.Content { - switch cv := content.(type) { - case *anthropicclient.ThinkingContent: - reasoningContent.WriteString(cv.Thinking) - if len(cv.Signature) > 0 { - signature = []byte(cv.Signature) - } - } - } - - // Create reasoning object - var contentReasoning *reasoning.ContentReasoning - if reasoningContent.Len() > 0 || len(signature) > 0 { - contentReasoning = &reasoning.ContentReasoning{ - Content: reasoningContent.String(), - Signature: signature, - } - } - - // Process content blocks to collect text and tool calls + var thoughts reasoning.Collector var toolCalls []llms.ToolCall - var textContent string + var textContent strings.Builder for _, content := range result.Content { switch cv := content.(type) { + case *anthropicclient.ThinkingContent: + thoughts.Thought(cv.Thinking, []byte(cv.Signature)) + case *anthropicclient.RedactedThinkingContent: + thoughts.Encrypted([]byte(cv.Data)) case *anthropicclient.TextContent: - textContent = cv.Text + textContent.WriteString(cv.Text) case *anthropicclient.ToolUseContent: argumentsJSON, err := json.Marshal(cv.Input) if err != nil { @@ -396,27 +421,31 @@ func processAnthropicResponse(result *anthropicclient.MessageResponsePayload) (* }, } toolCalls = append(toolCalls, toolCall) + thoughts.ToolCall() } } + contentReasoning := thoughts.Reasoning() // Build response choice - reasoning ALWAYS goes to choice, not tool calls choice := &llms.ContentChoice{ - Content: textContent, + Content: textContent.String(), Reasoning: contentReasoning, // Always in choice for Anthropic ToolCalls: toolCalls, StopReason: result.StopReason, + Truncated: llms.IsTruncated(result.StopReason), GenerationInfo: map[string]any{ // Standardized field names for cross-provider compatibility "PromptTokens": result.Usage.InputTokens + result.Usage.CacheCreationInputTokens + result.Usage.CacheReadInputTokens, "CompletionTokens": result.Usage.OutputTokens, "TotalTokens": result.Usage.InputTokens + result.Usage.CacheCreationInputTokens + result.Usage.CacheReadInputTokens + result.Usage.OutputTokens, - "ReasoningTokens": 0, // Reasoning tokens are not included in the usage metrics + "ReasoningTokens": result.Usage.OutputTokensDetails.ThinkingTokens, "PromptCachedTokens": result.Usage.CacheReadInputTokens, "CacheReadInputTokens": result.Usage.CacheReadInputTokens, "CacheCreationInputTokens": result.Usage.CacheCreationInputTokens, // Special fields for Anthropic cache creation "CacheCreationEphemeral5mInputTokens": result.Usage.CacheCreation.Ephemeral5mInputTokens, "CacheCreationEphemeral1hInputTokens": result.Usage.CacheCreation.Ephemeral1hInputTokens, + "InferenceSpeed": result.Usage.Speed, // Special fields for Anthropic "InputTokens": result.Usage.InputTokens, "OutputTokens": result.Usage.OutputTokens, @@ -424,9 +453,11 @@ func processAnthropicResponse(result *anthropicclient.MessageResponsePayload) (* }, } - return &llms.ContentResponse{ - Choices: []*llms.ContentChoice{choice}, - }, nil + response := &llms.ContentResponse{Choices: []*llms.ContentChoice{choice}, Warnings: warn.List()} + if result.StopReason == "refusal" { + return response, anthropicRefusal(result) + } + return response, nil } func toolsToTools(tools []llms.Tool) []anthropicclient.Tool { @@ -797,32 +828,26 @@ func handleHumanMessage(msg llms.MessageContent) (anthropicclient.ChatMessage, e } func handleAIMessage(msg llms.MessageContent) (anthropicclient.ChatMessage, error) { - message := anthropicclient.ChatMessage{ - Role: RoleAssistant, - Content: []anthropicclient.Content{}, - } - - // The API requires the thinking block to lead the assistant turn, before any - // text or tool_use. Emit it first regardless of where the caller placed the - // reasoning-bearing part among msg.Parts. + var thoughts []reasoning.Block + toolCalls := 0 for _, part := range msg.Parts { - p, ok := part.(llms.TextContent) - if !ok || p.Reasoning == nil { - continue - } - if len(p.Reasoning.Content) > 0 || len(p.Reasoning.Signature) > 0 { - thinkingBlock := &anthropicclient.ThinkingContent{ - Type: "thinking", - Thinking: p.Reasoning.Content, - } - if len(p.Reasoning.Signature) > 0 { - thinkingBlock.Signature = string(p.Reasoning.Signature) + switch p := part.(type) { + case llms.TextContent: + thoughts = append(thoughts, p.Reasoning.Sequence()...) + case llms.ToolCall: + if p.FunctionCall != nil { + toolCalls++ } - message.Content = append(message.Content, thinkingBlock) } - break // one thinking block per assistant turn + } + placed := reasoning.GroupByToolCalls(thoughts, toolCalls) + + message := anthropicclient.ChatMessage{ + Role: RoleAssistant, + Content: thinkingContents(placed[0]), } + emitted := 0 for _, part := range msg.Parts { switch p := part.(type) { case llms.TextContent: @@ -841,7 +866,9 @@ func handleAIMessage(msg llms.MessageContent) (anthropicclient.ChatMessage, erro } var inputStruct map[string]interface{} - if err := json.Unmarshal([]byte(p.FunctionCall.Arguments), &inputStruct); err != nil { + dec := json.NewDecoder(strings.NewReader(p.FunctionCall.Arguments)) + dec.UseNumber() + if err := dec.Decode(&inputStruct); err != nil { err = fmt.Errorf("anthropic: failed to unmarshal tool call arguments: %w", err) return anthropicclient.ChatMessage{}, err } @@ -853,6 +880,8 @@ func handleAIMessage(msg llms.MessageContent) (anthropicclient.ChatMessage, erro Input: inputStruct, } message.Content = append(message.Content, toolUse) + emitted++ + message.Content = append(message.Content, thinkingContents(placed[emitted])...) default: return anthropicclient.ChatMessage{}, fmt.Errorf("anthropic: %w for AI message", ErrInvalidContentType) } @@ -861,6 +890,25 @@ func handleAIMessage(msg llms.MessageContent) (anthropicclient.ChatMessage, erro return message, nil } +func thinkingContents(blocks []reasoning.Block) []anthropicclient.Content { + contents := []anthropicclient.Content{} + for _, block := range blocks { + if block.Redacted != nil { + contents = append(contents, &anthropicclient.RedactedThinkingContent{ + Type: anthropicclient.EventTypeRedactedThinking, + Data: string(block.Redacted), + }) + continue + } + thinking := &anthropicclient.ThinkingContent{Type: "thinking", Thinking: block.Text} + if len(block.Signature) > 0 { + thinking.Signature = string(block.Signature) + } + contents = append(contents, thinking) + } + return contents +} + type ToolResult struct { Type string `json:"type"` ToolUseID string `json:"tool_use_id"` @@ -868,21 +916,29 @@ type ToolResult struct { } func handleToolMessage(msg llms.MessageContent) (anthropicclient.ChatMessage, error) { - if toolCallResponse, ok := msg.Parts[0].(llms.ToolCallResponse); ok { - toolContent := &anthropicclient.ToolResultContent{ + results := make([]anthropicclient.Content, 0, len(msg.Parts)) + for _, part := range msg.Parts { + toolCallResponse, ok := part.(llms.ToolCallResponse) + if !ok { + return anthropicclient.ChatMessage{}, fmt.Errorf("anthropic: %w for tool message", ErrInvalidContentType) + } + results = append(results, &anthropicclient.ToolResultContent{ Type: "tool_result", ToolUseID: toolCallResponse.ToolCallID, Content: toolCallResponse.Content, - } - - return anthropicclient.ChatMessage{ - Role: RoleUser, - Content: []anthropicclient.Content{toolContent}, - }, nil + }) + } + if len(results) == 0 { + return anthropicclient.ChatMessage{}, fmt.Errorf("anthropic: %w for tool message", ErrInvalidContentType) } - return anthropicclient.ChatMessage{}, fmt.Errorf("anthropic: %w for tool message", ErrInvalidContentType) + return anthropicclient.ChatMessage{Role: RoleUser, Content: results}, nil } +const ( + anthropicFastModeBeta = "fast-mode-2026-02-01" + anthropicInterleavedThinkingBeta = "interleaved-thinking-2025-05-14" +) + // extractBetaHeaders extracts beta headers from call options. thinking is the // mechanism actually resolved for this request (nil when no thinking), so the // interleaved-thinking beta keys off the real wire shape rather than the caller's @@ -904,7 +960,11 @@ func extractBetaHeaders(opts *llms.CallOptions, thinking *anthropicclient.Thinki // Budget thinking + tools needs the interleaved-thinking beta; adaptive // thinking interleaves natively and needs no header. if thinking != nil && thinking.Type == "enabled" && len(opts.Tools) > 0 { - betaHeaders = appendIfMissing(betaHeaders, "interleaved-thinking-2025-05-14") + betaHeaders = appendIfMissing(betaHeaders, anthropicInterleavedThinkingBeta) + } + + if opts.InferenceSpeed != nil { + betaHeaders = appendIfMissing(betaHeaders, anthropicFastModeBeta) } return betaHeaders @@ -934,7 +994,7 @@ func applyAnthropicStructuredOutput( Reason: "model predates the output_config.format JSON Schema mode", } } - if anthropicHasAssistantPrefill(messages) { + if llms.HasAssistantPrefill(messages) { return nil, &llms.ErrStructuredOutputConflict{ Provider: providerAnthropic, Detail: "structured output is incompatible with assistant message prefilling", @@ -955,15 +1015,6 @@ func applyAnthropicStructuredOutput( return cfg, nil } -// anthropicHasAssistantPrefill reports whether the last message is an assistant -// turn, i.e. a prefilled response, which Anthropic rejects with structured output. -func anthropicHasAssistantPrefill(messages []llms.MessageContent) bool { - if len(messages) == 0 { - return false - } - return messages[len(messages)-1].Role == llms.ChatMessageTypeAI -} - // validateAnthropicStructuredOutput validates the concatenation of all final text // blocks against the original schema, but only for a normal-final turn. A tool_use // or max_tokens/refusal turn is intermediate/aborted and is not validated. On a @@ -1004,3 +1055,18 @@ func appendIfMissing(slice []string, val string) []string { func getFloatPointer(f float64) *float64 { return &f } + +func anthropicToolChoice(choice any) any { + switch kind, name := llms.ClassifyToolChoice(choice); kind { + case llms.ToolChoiceNamed: + return anthropicclient.ToolChoice{Type: "tool", Name: name} + case llms.ToolChoiceAny: + return anthropicclient.ToolChoice{Type: "any"} + case llms.ToolChoiceAuto: + return anthropicclient.ToolChoice{Type: "auto"} + case llms.ToolChoiceNone: + return anthropicclient.ToolChoice{Type: "none"} + default: + return choice + } +} diff --git a/llms/anthropic/anthropicllm_option.go b/llms/anthropic/anthropicllm_option.go index 8f9fda7b4..2f1df3f1b 100644 --- a/llms/anthropic/anthropicllm_option.go +++ b/llms/anthropic/anthropicllm_option.go @@ -12,8 +12,27 @@ const ( // when using the Anthropic Sonnet 3.5 model. const MaxTokensAnthropicSonnet35 = "max-tokens-3-5-sonnet-2024-07-15" //nolint:gosec // This is not a sensitive value. +// FederationConfig names the federation rule a workload exchanges its identity +// token under, and where that token comes from. +type FederationConfig = anthropicclient.FederationConfig + +// AssertionSource yields the identity token to exchange. It is called for every +// exchange, not once per client. +type AssertionSource = anthropicclient.AssertionSource + +// AssertionFromFile reads the identity token from path on every exchange. +func AssertionFromFile(path string) AssertionSource { + return anthropicclient.AssertionFromFile(path) +} + +// AssertionFromString yields a fixed identity token. +func AssertionFromString(assertion string) AssertionSource { + return anthropicclient.AssertionFromString(assertion) +} + type options struct { token string + federation *FederationConfig model string baseURL string httpClient anthropicclient.Doer @@ -37,6 +56,15 @@ func WithToken(token string) Option { } } +// WithFederation authenticates with short-lived tokens exchanged from the +// workload's identity provider, instead of a static API key. It replaces +// WithToken and the ANTHROPIC_API_KEY environment variable. +func WithFederation(cfg FederationConfig) Option { + return func(opts *options) { + opts.federation = &cfg + } +} + // WithModel passes the Anthropic model to the client. func WithModel(model string) Option { return func(opts *options) { diff --git a/llms/anthropic/anthropicllm_test.go b/llms/anthropic/anthropicllm_test.go index 32671cec6..8207493f3 100644 --- a/llms/anthropic/anthropicllm_test.go +++ b/llms/anthropic/anthropicllm_test.go @@ -1,12 +1,14 @@ package anthropic import ( + "context" "encoding/json" "errors" "io" "net/http" "net/http/httptest" "os" + "strings" "testing" "github.com/stretchr/testify/assert" @@ -760,3 +762,74 @@ func TestAnthropic_StructuredOutputResponseValidation(t *testing.T) { require.True(t, errors.As(err, &ve), "enum case mismatch must fail, got %v", err) }) } + +func TestSamplingParamsNeverBothOnTheWire(t *testing.T) { + t.Parallel() + + const resp = `{"id":"x","type":"message","role":"assistant","model":"m",` + + `"content":[{"type":"text","text":"ok"}],"stop_reason":"end_turn",` + + `"usage":{"input_tokens":1,"output_tokens":1}}` + + for _, model := range []string{ + "claude-haiku-4-5-20251001", + "claude-sonnet-4-5-20250929", + "claude-opus-4-5-20251101", + "claude-sonnet-4-6", + "claude-opus-4-6", + } { + t.Run(model, func(t *testing.T) { + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, resp) + })) + defer srv.Close() + + llm, err := New(WithBaseURL(srv.URL), WithToken("t"), WithModel(model)) + if err != nil { + t.Fatalf("New() error: %v", err) + } + if _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithTemperature(0.5), llms.WithTopP(0.9)); err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + if strings.Contains(body, `"temperature"`) && strings.Contains(body, `"top_p"`) { + t.Fatalf("both sampling params reached the wire: %s", body) + } + if !strings.Contains(body, `"temperature"`) { + t.Fatalf("these models take a temperature, so dropping both params must not pass: %s", body) + } + }) + } +} + +func TestBudgetEffortForOpus45OnTheAnthropicPath(t *testing.T) { + t.Parallel() + + const resp = `{"id":"x","type":"message","role":"assistant","model":"m",` + + `"content":[{"type":"text","text":"ok"}],"stop_reason":"end_turn",` + + `"usage":{"input_tokens":1,"output_tokens":1}}` + + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, resp) + })) + defer srv.Close() + + llm, err := New(WithBaseURL(srv.URL), WithToken("t"), WithModel("claude-opus-4-5-20251101")) + require.NoError(t, err) + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithReasoning(llms.ReasoningHigh, 0), llms.WithMaxTokens(8000)) + require.NoError(t, err) + + assert.Contains(t, body, `"type":"enabled"`, "Opus 4.5 is budget-only") + assert.Contains(t, body, `"output_config":{"effort":"high"}`, + "the first-party API takes the effort alongside a budget here") +} diff --git a/llms/anthropic/budget_floor_test.go b/llms/anthropic/budget_floor_test.go new file mode 100644 index 000000000..a8d2cddef --- /dev/null +++ b/llms/anthropic/budget_floor_test.go @@ -0,0 +1,41 @@ +package anthropic_test + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func TestBudgetNeverFallsBelowTheVendorFloor(t *testing.T) { + t.Parallel() + + // 1535 is the last max-tokens whose two-thirds cut lands below the floor. + for _, tc := range []struct { + maxTokens int + effort llms.ReasoningEffort + }{ + {512, llms.ReasoningLow}, + {512, llms.ReasoningHigh}, + {1024, llms.ReasoningLow}, + {1535, llms.ReasoningLow}, + {1535, llms.ReasoningHigh}, + {1536, llms.ReasoningLow}, + {4096, llms.ReasoningHigh}, + } { + p, _ := captureMessagesRequestModel(t, "claude-sonnet-4-5", + llms.WithMaxTokens(tc.maxTokens), llms.WithReasoning(tc.effort, 0)) + + thinking, ok := p["thinking"].(map[string]any) + require.True(t, ok, "maxTokens=%d effort=%s: no thinking block", tc.maxTokens, tc.effort) + budget, _ := thinking["budget_tokens"].(float64) + maxTokens, _ := p["max_tokens"].(float64) + + assert.GreaterOrEqual(t, int(budget), 1024, + "maxTokens=%d effort=%s: budget below the vendor floor", tc.maxTokens, tc.effort) + assert.Less(t, budget, maxTokens, + "maxTokens=%d effort=%s: budget must leave room for the answer", tc.maxTokens, tc.effort) + } +} diff --git a/llms/anthropic/budget_interleaving_test.go b/llms/anthropic/budget_interleaving_test.go new file mode 100644 index 000000000..8bdfd38be --- /dev/null +++ b/llms/anthropic/budget_interleaving_test.go @@ -0,0 +1,44 @@ +package anthropic_test + +import ( + "testing" + + "github.com/stretchr/testify/assert" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func TestABudgetAboveTheAnswerLimitNeedsRealInterleaving(t *testing.T) { + t.Parallel() + + tools := llms.WithTools([]llms.Tool{{Type: "function", Function: &llms.FunctionDefinition{ + Name: "f", Parameters: map[string]any{"type": "object"}, + }}}) + budget := llms.WithReasoning("", 1024) + + for _, tc := range []struct { + model string + want float64 + }{ + {"claude-haiku-4-5", 2048}, + {"claude-opus-4-6", 2048}, + {"claude-sonnet-4-5", 1000}, + {"claude-opus-4-5", 1000}, + {"claude-sonnet-4-6", 1000}, + } { + body, header := captureMessagesRequestModel(t, tc.model, llms.WithMaxTokens(1000), budget, tools) + assert.Equal(t, tc.want, body["max_tokens"], tc.model) + assert.Contains(t, header.Get("Anthropic-Beta"), "interleaved-thinking-2025-05-14", tc.model) + } + + body, _ := captureMessagesRequestModel(t, "claude-haiku-4-5", llms.WithMaxTokens(1000), budget) + assert.Equal(t, float64(2048), body["max_tokens"], "without tools the budget rule was already kept") + + for _, model := range []string{"claude-opus-4", "claude-opus-4-0", "claude-sonnet-4-20250514", "anthropic.claude-opus-4-1-20250805-v1:0"} { + assert.True(t, reasoning.ClaudeInterleavesOnBudget(model), model) + } + for _, model := range []string{"claude-haiku-4-5", "claude-opus-4-6", "claude-opus-4-7", "claude-3-7-sonnet", "claude-mythos-preview"} { + assert.False(t, reasoning.ClaudeInterleavesOnBudget(model), model) + } +} diff --git a/llms/anthropic/effort_as_budget_test.go b/llms/anthropic/effort_as_budget_test.go new file mode 100644 index 000000000..e908be0b8 --- /dev/null +++ b/llms/anthropic/effort_as_budget_test.go @@ -0,0 +1,36 @@ +package anthropic_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func TestAnEffortThatTravelledAsTheBudgetIsCalledASubstitution(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, llms.WithMaxTokens(8192), llms.WithReasoning(llms.ReasoningMedium, 0)) + + found := warningsFor(resp.Warnings, "WithReasoning") + require.Len(t, found, 1, "one warning for one ask: %v", resp.Warnings) + require.Equal(t, llms.WarningSubstitute, found[0].Kind) + require.Equal(t, "medium", found[0].Asked) + require.Contains(t, found[0].Sent, "tokens") +} + +func TestAnEffortAnExplicitBudgetOverrodeIsCalledALoss(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, llms.WithMaxTokens(8192), llms.WithReasoning(llms.ReasoningMedium, 2048)) + + var dropped *llms.Warning + for _, w := range warningsFor(resp.Warnings, "WithReasoning") { + if w.Kind == llms.WarningDrop { + dropped = &w + } + } + require.NotNil(t, dropped, "the effort went nowhere unreported: %v", resp.Warnings) + require.Equal(t, "medium", dropped.Asked) +} diff --git a/llms/anthropic/errors.go b/llms/anthropic/errors.go index e70a071ab..8ef513014 100644 --- a/llms/anthropic/errors.go +++ b/llms/anthropic/errors.go @@ -4,6 +4,7 @@ import ( "strings" "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" ) // errorMapping represents a mapping from error patterns to error codes. @@ -78,3 +79,9 @@ func MapError(err error) error { mapper := llms.NewErrorMapper("anthropic") return mapper.Map(err) } + +// ErrAssistantPrefillUnsupported reports that the model rejects a conversation +// ending with an assistant turn. +type ErrAssistantPrefillUnsupported = reasoning.ErrAssistantPrefillUnsupported + +type ErrForcedToolUseWithThinking = reasoning.ErrForcedToolUseWithThinking diff --git a/llms/anthropic/federation_test.go b/llms/anthropic/federation_test.go new file mode 100644 index 000000000..4abc831f1 --- /dev/null +++ b/llms/anthropic/federation_test.go @@ -0,0 +1,89 @@ +package anthropic + +import ( + "context" + "encoding/json" + "net/http" + "net/http/httptest" + "sync" + "testing" + + "github.com/stretchr/testify/require" + "github.com/vxcontrol/langchaingo/llms" +) + +func federatedTestServer(t *testing.T) (*httptest.Server, func() (int, []string)) { + t.Helper() + + var ( + mu sync.Mutex + exchanges int + auth []string + ) + + mux := http.NewServeMux() + mux.HandleFunc("/v1/oauth/token", func(w http.ResponseWriter, _ *http.Request) { + mu.Lock() + exchanges++ + mu.Unlock() + + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"access_token":"sk-ant-oat01-minted","token_type":"Bearer","expires_in":3600}`)) + }) + mux.HandleFunc("/v1/messages", func(w http.ResponseWriter, r *http.Request) { + mu.Lock() + auth = append(auth, r.Header.Get("Authorization")+"|"+r.Header.Get("x-api-key")) + mu.Unlock() + + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(map[string]any{ + "id": "msg_1", "type": "message", "role": "assistant", "model": "claude-sonnet-5", + "content": []map[string]any{{"type": "text", "text": "ok"}}, + "stop_reason": "end_turn", + "usage": map[string]any{"input_tokens": 1, "output_tokens": 1}, + }) + }) + + srv := httptest.NewServer(mux) + t.Cleanup(srv.Close) + + return srv, func() (int, []string) { + mu.Lock() + defer mu.Unlock() + return exchanges, append([]string(nil), auth...) + } +} + +func TestFederationReachesTheWireWithoutAnAPIKey(t *testing.T) { + t.Setenv(tokenEnvVarName, "") + + srv, observed := federatedTestServer(t) + + llm, err := New( + WithBaseURL(srv.URL+"/v1"), + WithModel("claude-sonnet-5"), + WithFederation(FederationConfig{ + RuleID: "fdrl_rule", + OrganizationID: "org", + ServiceAccountID: "svac_account", + Assertion: AssertionFromString("jwt"), + }), + ) + require.NoError(t, err, "federation must stand in for the API key") + + _, err = llm.GenerateContent(context.Background(), []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "hi"), + }, llms.WithMaxTokens(16)) + require.NoError(t, err) + + exchanges, auth := observed() + require.Equal(t, 1, exchanges) + require.Equal(t, []string{"Bearer sk-ant-oat01-minted|"}, auth) +} + +func TestMissingTokenStillFailsWithoutFederation(t *testing.T) { + t.Setenv(tokenEnvVarName, "") + + _, err := New(WithBaseURL("https://example.invalid/v1")) + require.ErrorIs(t, err, ErrMissingToken) +} diff --git a/llms/anthropic/internal/anthropicclient/anthropicclient.go b/llms/anthropic/internal/anthropicclient/anthropicclient.go index f6b572dea..50ad392fa 100644 --- a/llms/anthropic/internal/anthropicclient/anthropicclient.go +++ b/llms/anthropic/internal/anthropicclient/anthropicclient.go @@ -6,9 +6,11 @@ import ( "encoding/json" "errors" "fmt" + "io" "net/http" "slices" "strings" + "time" "github.com/vxcontrol/langchaingo/httputil" "github.com/vxcontrol/langchaingo/llms/streaming" @@ -25,7 +27,7 @@ var ErrEmptyResponse = errors.New("empty response") // Client is a client for the Anthropic API. type Client struct { - token string + auth authorizer Model string baseURL string @@ -75,11 +77,23 @@ func WithAnthropicBetaHeader(val string) Option { } } +// WithFederation authenticates with short-lived tokens exchanged from the +// workload's identity provider, instead of a static API key. +func WithFederation(cfg FederationConfig) Option { + return func(c *Client) error { + if err := cfg.validate(); err != nil { + return err + } + c.auth = &federatedAuth{cfg: cfg, client: c, now: time.Now} + return nil + } +} + // New returns a new Anthropic client. func New(token string, model string, baseURL string, opts ...Option) (*Client, error) { c := &Client{ Model: model, - token: token, + auth: staticKey(token), baseURL: strings.TrimSuffix(baseURL, "/"), httpClient: httputil.DefaultClient, } @@ -125,7 +139,8 @@ type CompletionRequest struct { // Completion is a completion. type Completion struct { - Text string `json:"text"` + Text string `json:"text"` + StopReason string `json:"stop_reason"` } // CreateCompletion creates a completion. @@ -144,7 +159,8 @@ func (c *Client) CreateCompletion(ctx context.Context, r *CompletionRequest) (*C return nil, err } return &Completion{ - Text: resp.Completion, + Text: resp.Completion, + StopReason: resp.StopReason, }, nil } @@ -155,6 +171,8 @@ type MessageRequest struct { Temperature *float64 `json:"temperature,omitempty"` MaxTokens *int `json:"max_tokens,omitempty"` TopP *float64 `json:"top_p,omitempty"` + TopK *int `json:"top_k,omitempty"` + Speed *string `json:"speed,omitempty"` Tools []Tool `json:"tools,omitempty"` ToolChoice any `json:"tool_choice,omitempty"` StopWords []string `json:"stop_sequences,omitempty"` @@ -177,6 +195,8 @@ func (c *Client) CreateMessage(ctx context.Context, r *MessageRequest) (*Message MaxTokens: r.MaxTokens, StopWords: r.StopWords, TopP: r.TopP, + TopK: r.TopK, + Speed: r.Speed, Tools: r.Tools, ToolChoice: r.ToolChoice, Stream: r.Stream, @@ -185,14 +205,16 @@ func (c *Client) CreateMessage(ctx context.Context, r *MessageRequest) (*Message OutputConfig: r.OutputConfig, }, r.BetaHeaders) if err != nil { - return nil, err + return resp, err } return resp, nil } -func (c *Client) setHeaders(req *http.Request, betaHeaders []string) { +func (c *Client) setHeaders(ctx context.Context, req *http.Request, betaHeaders []string) error { req.Header.Set("Content-Type", "application/json") - req.Header.Set("x-api-key", c.token) //nolint:canonicalheader + if err := c.auth.authorize(ctx, req); err != nil { + return err + } // This is necessary as per https://docs.anthropic.com/en/api/versioning // If this changes frequently enough we should expose it as an option.. @@ -218,6 +240,8 @@ func (c *Client) setHeaders(req *http.Request, betaHeaders []string) { if len(validHeaders) > 0 { req.Header.Set("anthropic-beta", strings.Join(validHeaders, ",")) // nolint:canonicalheader } + + return nil } func (c *Client) do(ctx context.Context, path string, payloadBytes []byte) (*http.Response, error) { @@ -225,18 +249,26 @@ func (c *Client) do(ctx context.Context, path string, payloadBytes []byte) (*htt } func (c *Client) doWithHeaders(ctx context.Context, path string, payloadBytes []byte, betaHeaders []string) (*http.Response, error) { + return c.request(ctx, http.MethodPost, path, bytes.NewReader(payloadBytes), betaHeaders) +} + +func (c *Client) request( + ctx context.Context, method, path string, body io.Reader, betaHeaders []string, +) (*http.Response, error) { if c.baseURL == "" { c.baseURL = DefaultBaseURL } url := c.baseURL + path - req, err := http.NewRequestWithContext(ctx, http.MethodPost, url, bytes.NewReader(payloadBytes)) + req, err := http.NewRequestWithContext(ctx, method, url, body) if err != nil { return nil, fmt.Errorf("create request: %w", err) } - c.setHeaders(req, betaHeaders) + if err := c.setHeaders(ctx, req, betaHeaders); err != nil { + return nil, err + } resp, err := c.httpClient.Do(req) if err != nil { diff --git a/llms/anthropic/internal/anthropicclient/auth.go b/llms/anthropic/internal/anthropicclient/auth.go new file mode 100644 index 000000000..e1ae26944 --- /dev/null +++ b/llms/anthropic/internal/anthropicclient/auth.go @@ -0,0 +1,17 @@ +package anthropicclient + +import ( + "context" + "net/http" +) + +type authorizer interface { + authorize(ctx context.Context, req *http.Request) error +} + +type staticKey string + +func (k staticKey) authorize(_ context.Context, req *http.Request) error { + req.Header.Set("x-api-key", string(k)) //nolint:canonicalheader + return nil +} diff --git a/llms/anthropic/internal/anthropicclient/completions.go b/llms/anthropic/internal/anthropicclient/completions.go index 335ad0657..816bf8331 100644 --- a/llms/anthropic/internal/anthropicclient/completions.go +++ b/llms/anthropic/internal/anthropicclient/completions.go @@ -6,7 +6,6 @@ import ( "context" "encoding/json" "fmt" - "log" "net/http" "strings" @@ -97,6 +96,7 @@ type CompletionEvent struct { func parseStreamingCompletionResponse(ctx context.Context, r *http.Response, payload *completionPayload) (*CompletionResponsePayload, error) { // nolint:lll scanner := bufio.NewScanner(r.Body) + scanner.Buffer(make([]byte, 0, initialStreamBuffer), maxStreamLine) responseChan := make(chan CompletionEvent) go func() { defer close(responseChan) @@ -118,7 +118,7 @@ func parseStreamingCompletionResponse(ctx context.Context, r *http.Response, pay responseChan <- CompletionEvent{Response: streamPayload, Err: nil} } if err := scanner.Err(); err != nil { - log.Println("issue scanning response:", err) + responseChan <- CompletionEvent{Response: nil, Err: fmt.Errorf("failed to read stream: %w", err)} } }() // Parse response @@ -137,6 +137,9 @@ func parseStreamingCompletionResponse(ctx context.Context, r *http.Response, pay } lastResponse = streamResponse.Response } + if lastResponse == nil { + return nil, ErrEmptyResponse + } response.Model = lastResponse.Model response.LogID = lastResponse.LogID response.Stop = lastResponse.Stop diff --git a/llms/anthropic/internal/anthropicclient/completions_stream_test.go b/llms/anthropic/internal/anthropicclient/completions_stream_test.go new file mode 100644 index 000000000..1ef3f5650 --- /dev/null +++ b/llms/anthropic/internal/anthropicclient/completions_stream_test.go @@ -0,0 +1,49 @@ +package anthropicclient + +import ( + "context" + "io" + "net/http" + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func legacyStream(t *testing.T, body string) (*CompletionResponsePayload, error) { + t.Helper() + resp := &http.Response{Body: io.NopCloser(strings.NewReader(body))} + return parseStreamingCompletionResponse(context.Background(), resp, &completionPayload{}) +} + +func TestALegacyLineLongerThanTheDefaultBufferSurvives(t *testing.T) { + t.Parallel() + + answer := strings.Repeat("x", 200*1024) + got, err := legacyStream(t, `data: {"completion":"`+answer+`","model":"claude-2"}`+"\n") + + require.NoError(t, err) + require.NotNil(t, got) + assert.Equal(t, answer, got.Completion, "a line over the 64KiB default must not be truncated") +} + +func TestALegacyStreamWithNoEventsIsAnError(t *testing.T) { + t.Parallel() + + got, err := legacyStream(t, ": keep-alive\n\n") + + require.ErrorIs(t, err, ErrEmptyResponse) + assert.Nil(t, got) +} + +func TestALegacyLineOverTheCeilingReportsTheFailure(t *testing.T) { + t.Parallel() + + got, err := legacyStream(t, `data: {"completion":"`+strings.Repeat("x", maxStreamLine+1)+`"}`+"\n") + + require.ErrorContains(t, err, "failed to read stream", + "the read failure must reach the caller by name, not as an empty-response error") + require.NotErrorIs(t, err, ErrEmptyResponse) + assert.Nil(t, got) +} diff --git a/llms/anthropic/internal/anthropicclient/federation.go b/llms/anthropic/internal/anthropicclient/federation.go new file mode 100644 index 000000000..85754210e --- /dev/null +++ b/llms/anthropic/internal/anthropicclient/federation.go @@ -0,0 +1,183 @@ +package anthropicclient + +import ( + "bytes" + "context" + "encoding/json" + "errors" + "fmt" + "net/http" + "os" + "strings" + "sync" + "time" +) + +const ( + jwtBearerGrantType = "urn:ietf:params:oauth:grant-type:jwt-bearer" + tokenExchangePath = "/oauth/token" + tokenRefreshSkew = 60 * time.Second +) + +// ErrFederationIncomplete is returned when a federation config omits a field the +// token exchange requires. +var ErrFederationIncomplete = errors.New("federation config is incomplete") + +// AssertionSource yields the identity token to exchange. It is called for every +// exchange, not once per client. +type AssertionSource func(ctx context.Context) (string, error) + +// AssertionFromFile reads the identity token from path on every exchange. +func AssertionFromFile(path string) AssertionSource { + return func(context.Context) (string, error) { + body, err := os.ReadFile(path) + if err != nil { + return "", fmt.Errorf("read identity token: %w", err) + } + return strings.TrimSpace(string(body)), nil + } +} + +// AssertionFromString yields a fixed identity token. +func AssertionFromString(assertion string) AssertionSource { + return func(context.Context) (string, error) { return assertion, nil } +} + +// FederationConfig names the federation rule a workload exchanges its identity +// token under, and where that token comes from. +type FederationConfig struct { + RuleID string + OrganizationID string + ServiceAccountID string + // WorkspaceID scopes the minted token; the literal "default" names the + // organization's default workspace. Omitted from the exchange when empty. + WorkspaceID string + Assertion AssertionSource +} + +func (cfg FederationConfig) validate() error { + missing := []string{} + if cfg.RuleID == "" { + missing = append(missing, "rule id") + } + if cfg.OrganizationID == "" { + missing = append(missing, "organization id") + } + if cfg.ServiceAccountID == "" { + missing = append(missing, "service account id") + } + if cfg.Assertion == nil { + missing = append(missing, "assertion source") + } + if len(missing) > 0 { + return fmt.Errorf("%w: missing %s", ErrFederationIncomplete, strings.Join(missing, ", ")) + } + return nil +} + +type federatedAuth struct { + cfg FederationConfig + client *Client + now func() time.Time + + mu sync.Mutex + token string + expiresAt time.Time +} + +func (f *federatedAuth) authorize(ctx context.Context, req *http.Request) error { + token, err := f.accessToken(ctx) + if err != nil { + return err + } + req.Header.Set("Authorization", "Bearer "+token) + return nil +} + +func (f *federatedAuth) accessToken(ctx context.Context) (string, error) { + f.mu.Lock() + defer f.mu.Unlock() + + if f.token != "" && f.now().Add(tokenRefreshSkew).Before(f.expiresAt) { + return f.token, nil + } + + assertion, err := f.cfg.Assertion(ctx) + if err != nil { + return "", err + } + if assertion == "" { + return "", fmt.Errorf("%w: assertion source returned an empty token", ErrFederationIncomplete) + } + + token, lifetime, err := f.exchange(ctx, assertion) + if err != nil { + return "", err + } + + f.token = token + f.expiresAt = f.now().Add(lifetime) + return token, nil +} + +type tokenExchangePayload struct { + GrantType string `json:"grant_type"` + Assertion string `json:"assertion"` + FederationRuleID string `json:"federation_rule_id"` + OrganizationID string `json:"organization_id"` + ServiceAccountID string `json:"service_account_id"` + WorkspaceID string `json:"workspace_id,omitempty"` +} + +type tokenExchangeResponse struct { + AccessToken string `json:"access_token"` + TokenType string `json:"token_type"` + ExpiresIn int `json:"expires_in"` + Scope string `json:"scope"` +} + +func (f *federatedAuth) exchange(ctx context.Context, assertion string) (string, time.Duration, error) { + payload, err := json.Marshal(tokenExchangePayload{ + GrantType: jwtBearerGrantType, + Assertion: assertion, + FederationRuleID: f.cfg.RuleID, + OrganizationID: f.cfg.OrganizationID, + ServiceAccountID: f.cfg.ServiceAccountID, + WorkspaceID: f.cfg.WorkspaceID, + }) + if err != nil { + return "", 0, fmt.Errorf("marshal token exchange: %w", err) + } + + base := f.client.baseURL + if base == "" { + base = DefaultBaseURL + } + + url := base + tokenExchangePath + req, err := http.NewRequestWithContext(ctx, http.MethodPost, url, bytes.NewReader(payload)) + if err != nil { + return "", 0, fmt.Errorf("create token exchange request: %w", err) + } + req.Header.Set("Content-Type", "application/json") + + resp, err := f.client.httpClient.Do(req) + if err != nil { + return "", 0, fmt.Errorf("send token exchange request: %w", err) + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return "", 0, fmt.Errorf("token exchange failed: %w", f.client.decodeError(resp)) + } + + var exchanged tokenExchangeResponse + if err := json.NewDecoder(resp.Body).Decode(&exchanged); err != nil { + return "", 0, fmt.Errorf("decode token exchange: %w", err) + } + if exchanged.AccessToken == "" { + return "", 0, errors.New("token exchange returned an empty access token") + } + + return exchanged.AccessToken, time.Duration(exchanged.ExpiresIn) * time.Second, nil +} diff --git a/llms/anthropic/internal/anthropicclient/federation_test.go b/llms/anthropic/internal/anthropicclient/federation_test.go new file mode 100644 index 000000000..0f28c2cf7 --- /dev/null +++ b/llms/anthropic/internal/anthropicclient/federation_test.go @@ -0,0 +1,292 @@ +package anthropicclient + +import ( + "context" + "encoding/json" + "net/http" + "net/http/httptest" + "os" + "path/filepath" + "sync" + "testing" + "time" + + "github.com/stretchr/testify/require" +) + +type federationStub struct { + mu sync.Mutex + + exchanges int + assertions []string + authHeaders []string + apiKeyHeaders []string + payloads []tokenExchangePayload + + lifetime int + exchangeStatus int + server *httptest.Server +} + +func newFederationStub(t *testing.T) *federationStub { + t.Helper() + + s := &federationStub{lifetime: 3600, exchangeStatus: http.StatusOK} + mux := http.NewServeMux() + mux.HandleFunc("/v1/oauth/token", func(w http.ResponseWriter, r *http.Request) { + s.mu.Lock() + defer s.mu.Unlock() + + var payload tokenExchangePayload + require.NoError(t, json.NewDecoder(r.Body).Decode(&payload)) + s.exchanges++ + s.assertions = append(s.assertions, payload.Assertion) + s.payloads = append(s.payloads, payload) + + if s.exchangeStatus != http.StatusOK { + w.WriteHeader(s.exchangeStatus) + _, _ = w.Write([]byte(`{"error":{"type":"authentication_error","message":"Authentication failed"}}`)) + return + } + + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(tokenExchangeResponse{ + AccessToken: "sk-ant-oat01-" + payload.Assertion, + TokenType: "Bearer", + ExpiresIn: s.lifetime, + Scope: "workspace:inference", + }) + }) + mux.HandleFunc("/v1/models", func(w http.ResponseWriter, r *http.Request) { + s.mu.Lock() + s.authHeaders = append(s.authHeaders, r.Header.Get("Authorization")) + s.apiKeyHeaders = append(s.apiKeyHeaders, r.Header.Get("x-api-key")) + s.mu.Unlock() + + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"data":[]}`)) + }) + + s.server = httptest.NewServer(mux) + t.Cleanup(s.server.Close) + return s +} + +func (s *federationStub) counts() (exchanges int, assertions, auth, apiKey []string) { + s.mu.Lock() + defer s.mu.Unlock() + return s.exchanges, append([]string(nil), s.assertions...), + append([]string(nil), s.authHeaders...), append([]string(nil), s.apiKeyHeaders...) +} + +func (s *federationStub) client(t *testing.T, cfg FederationConfig) (*Client, *federatedAuth) { + t.Helper() + + c, err := New("", "claude-sonnet-5", s.server.URL+"/v1", WithFederation(cfg)) + require.NoError(t, err) + + auth, ok := c.auth.(*federatedAuth) + require.True(t, ok, "federation must install the federated authorizer") + return c, auth +} + +func fixedAssertion(value string) AssertionSource { + return AssertionFromString(value) +} + +func TestFederationSendsBearerInsteadOfAPIKey(t *testing.T) { + t.Parallel() + + stub := newFederationStub(t) + c, _ := stub.client(t, FederationConfig{ + RuleID: "fdrl_rule", + OrganizationID: "11111111-1111-1111-1111-111111111111", + ServiceAccountID: "svac_account", + WorkspaceID: "wrkspc_one", + Assertion: fixedAssertion("jwt-one"), + }) + + resp, err := c.request(context.Background(), http.MethodGet, "/models", http.NoBody, nil) + require.NoError(t, err) + require.NoError(t, resp.Body.Close()) + + exchanges, _, auth, apiKey := stub.counts() + require.Equal(t, 1, exchanges) + require.Equal(t, []string{"Bearer sk-ant-oat01-jwt-one"}, auth) + require.Equal(t, []string{""}, apiKey, "a federated request must not carry the static key header") + + stub.mu.Lock() + sent := stub.payloads[0] + stub.mu.Unlock() + require.Equal(t, jwtBearerGrantType, sent.GrantType) + require.Equal(t, "fdrl_rule", sent.FederationRuleID) + require.Equal(t, "11111111-1111-1111-1111-111111111111", sent.OrganizationID) + require.Equal(t, "svac_account", sent.ServiceAccountID) + require.Equal(t, "wrkspc_one", sent.WorkspaceID) +} + +func TestFederationOmitsWorkspaceWhenUnset(t *testing.T) { + t.Parallel() + + stub := newFederationStub(t) + c, _ := stub.client(t, FederationConfig{ + RuleID: "fdrl_rule", + OrganizationID: "org", + ServiceAccountID: "svac_account", + Assertion: fixedAssertion("jwt"), + }) + + resp, err := c.request(context.Background(), http.MethodGet, "/models", http.NoBody, nil) + require.NoError(t, err) + require.NoError(t, resp.Body.Close()) + + stub.mu.Lock() + raw, err := json.Marshal(stub.payloads[0]) + stub.mu.Unlock() + require.NoError(t, err) + + var body map[string]any + require.NoError(t, json.Unmarshal(raw, &body)) + _, present := body["workspace_id"] + require.False(t, present, "an unset workspace must stay off the exchange body") +} + +func TestFederationReusesTokenUntilItNearsExpiry(t *testing.T) { + t.Parallel() + + stub := newFederationStub(t) + c, auth := stub.client(t, FederationConfig{ + RuleID: "fdrl_rule", + OrganizationID: "org", + ServiceAccountID: "svac_account", + Assertion: fixedAssertion("jwt"), + }) + + now := time.Now() + auth.now = func() time.Time { return now } + + for range 3 { + resp, err := c.request(context.Background(), http.MethodGet, "/models", http.NoBody, nil) + require.NoError(t, err) + require.NoError(t, resp.Body.Close()) + } + + exchanges, _, _, _ := stub.counts() + require.Equal(t, 1, exchanges, "a live token must be reused rather than exchanged again") +} + +func TestFederationRefreshesWithAFreshAssertion(t *testing.T) { + t.Parallel() + + dir := t.TempDir() + path := filepath.Join(dir, "token") + require.NoError(t, os.WriteFile(path, []byte("jwt-first\n"), 0o600)) + + stub := newFederationStub(t) + c, auth := stub.client(t, FederationConfig{ + RuleID: "fdrl_rule", + OrganizationID: "org", + ServiceAccountID: "svac_account", + Assertion: AssertionFromFile(path), + }) + + now := time.Now() + auth.now = func() time.Time { return now } + + resp, err := c.request(context.Background(), http.MethodGet, "/models", http.NoBody, nil) + require.NoError(t, err) + require.NoError(t, resp.Body.Close()) + + require.NoError(t, os.WriteFile(path, []byte("jwt-second\n"), 0o600)) + now = now.Add(time.Duration(stub.lifetime) * time.Second) + + resp, err = c.request(context.Background(), http.MethodGet, "/models", http.NoBody, nil) + require.NoError(t, err) + require.NoError(t, resp.Body.Close()) + + exchanges, assertions, auths, _ := stub.counts() + require.Equal(t, 2, exchanges, "an expired token must be exchanged again") + require.Equal(t, []string{"jwt-first", "jwt-second"}, assertions, + "each exchange must re-read the assertion source") + require.Equal(t, []string{"Bearer sk-ant-oat01-jwt-first", "Bearer sk-ant-oat01-jwt-second"}, auths) +} + +func TestFederationExchangesOnceUnderConcurrency(t *testing.T) { + t.Parallel() + + stub := newFederationStub(t) + c, _ := stub.client(t, FederationConfig{ + RuleID: "fdrl_rule", + OrganizationID: "org", + ServiceAccountID: "svac_account", + Assertion: fixedAssertion("jwt"), + }) + + var wg sync.WaitGroup + for range 8 { + wg.Add(1) + go func() { + defer wg.Done() + resp, err := c.request(context.Background(), http.MethodGet, "/models", http.NoBody, nil) + if err == nil { + _ = resp.Body.Close() + } + }() + } + wg.Wait() + + exchanges, _, auths, _ := stub.counts() + require.Equal(t, 1, exchanges, "concurrent callers must share one exchange, not race two") + require.Len(t, auths, 8) +} + +func TestFederationReportsExchangeFailure(t *testing.T) { + t.Parallel() + + stub := newFederationStub(t) + stub.exchangeStatus = http.StatusUnauthorized + + c, _ := stub.client(t, FederationConfig{ + RuleID: "fdrl_rule", + OrganizationID: "org", + ServiceAccountID: "svac_account", + Assertion: fixedAssertion("jwt"), + }) + + _, err := c.request(context.Background(), http.MethodGet, "/models", http.NoBody, nil) + require.Error(t, err) + require.Contains(t, err.Error(), "token exchange failed") + require.Contains(t, err.Error(), "Authentication failed") + + _, _, auths, _ := stub.counts() + require.Empty(t, auths, "a failed exchange must not send the downstream request") +} + +func TestFederationRejectsIncompleteConfig(t *testing.T) { + t.Parallel() + + _, err := New("", "claude-sonnet-5", "https://example.invalid/v1", WithFederation(FederationConfig{ + RuleID: "fdrl_rule", + })) + require.ErrorIs(t, err, ErrFederationIncomplete) + require.Contains(t, err.Error(), "organization id") + require.Contains(t, err.Error(), "service account id") + require.Contains(t, err.Error(), "assertion source") +} + +func TestStaticKeyStillSendsAPIKeyHeader(t *testing.T) { + t.Parallel() + + stub := newFederationStub(t) + c, err := New("sk-ant-static", "claude-sonnet-5", stub.server.URL+"/v1") + require.NoError(t, err) + + resp, err := c.request(context.Background(), http.MethodGet, "/models", http.NoBody, nil) + require.NoError(t, err) + require.NoError(t, resp.Body.Close()) + + exchanges, _, auths, apiKey := stub.counts() + require.Zero(t, exchanges, "a static key must not trigger a token exchange") + require.Equal(t, []string{"sk-ant-static"}, apiKey) + require.Equal(t, []string{""}, auths) +} diff --git a/llms/anthropic/internal/anthropicclient/messages.go b/llms/anthropic/internal/anthropicclient/messages.go index cada6f6ca..e7ea15004 100644 --- a/llms/anthropic/internal/anthropicclient/messages.go +++ b/llms/anthropic/internal/anthropicclient/messages.go @@ -42,13 +42,12 @@ var ( ErrInvalidFieldType = fmt.Errorf("invalid field type") ) -// For correct using thinking events, use this guide: -// https://docs.anthropic.com/en/docs/build-with-claude/extended-thinking -// In this implementation, we don't send the thinking block to the server. const ( EventTypeText = "text" EventTypeToolUse = "tool_use" EventTypeThinking = "thinking" + + EventTypeRedactedThinking = "redacted_thinking" ) const ( @@ -95,6 +94,8 @@ type messagePayload struct { Stream bool `json:"stream,omitempty"` Temperature *float64 `json:"temperature,omitempty"` TopP *float64 `json:"top_p,omitempty"` + TopK *int `json:"top_k,omitempty"` + Speed *string `json:"speed,omitempty"` Tools []Tool `json:"tools,omitempty"` ToolChoice any `json:"tool_choice,omitempty"` @@ -112,6 +113,11 @@ type Tool struct { CacheControl *CacheControl `json:"cache_control,omitempty"` } +type ToolChoice struct { + Type string `json:"type"` + Name string `json:"name,omitempty"` +} + // CacheControl represents Anthropic's prompt caching configuration. type CacheControl struct { Type string `json:"type"` @@ -161,10 +167,21 @@ type ImageSource struct { type ThinkingContent struct { Type string `json:"type"` - Thinking string `json:"thinking,omitempty"` + Thinking string `json:"thinking"` Signature string `json:"signature,omitempty"` } +// RedactedThinkingContent is reasoning the vendor encrypted. The data field is +// opaque and travels back to the vendor unchanged. +type RedactedThinkingContent struct { + Type string `json:"type"` + Data string `json:"data"` +} + +func (rtc RedactedThinkingContent) GetType() string { + return EventTypeRedactedThinking +} + func (tc ThinkingContent) GetType() string { return tc.Type } @@ -193,12 +210,13 @@ func (tuc *ToolUseContent) DecodeStream() error { return nil } - err := json.Unmarshal([]byte(tuc.rawStreamInput), &tuc.Input) - if err != nil { - return err - } + return decodeExactNumbers([]byte(tuc.rawStreamInput), &tuc.Input) +} - return nil +func decodeExactNumbers(data []byte, v any) error { + dec := json.NewDecoder(bytes.NewReader(data)) + dec.UseNumber() + return dec.Decode(v) } func (tuc ToolUseContent) GetType() string { @@ -242,7 +260,11 @@ type MessageResponsePayload struct { Ephemeral5mInputTokens int `json:"ephemeral_5m_input_tokens,omitempty"` Ephemeral1hInputTokens int `json:"ephemeral_1h_input_tokens,omitempty"` } `json:"cache_creation,omitempty"` + OutputTokensDetails struct { + ThinkingTokens int `json:"thinking_tokens,omitempty"` + } `json:"output_tokens_details,omitempty"` ServiceTier string `json:"service_tier,omitempty"` + Speed string `json:"speed,omitempty"` } `json:"usage"` } @@ -286,7 +308,7 @@ func parseContentBlock(raw []byte) (Content, error) { return tc, nil case EventTypeToolUse: tuc := &ToolUseContent{} - if err := json.Unmarshal(raw, tuc); err != nil { + if err := decodeExactNumbers(raw, tuc); err != nil { return nil, err } return tuc, nil @@ -296,6 +318,12 @@ func parseContentBlock(raw []byte) (Content, error) { return nil, err } return thc, nil + case EventTypeRedactedThinking: + rtc := &RedactedThinkingContent{} + if err := json.Unmarshal(raw, rtc); err != nil { + return nil, err + } + return rtc, nil default: return nil, fmt.Errorf("unknown content type: %s\n%v", typeStruct.Type, string(raw)) //nolint:err113 } @@ -369,12 +397,18 @@ type MessageEvent struct { Err error } +const ( + initialStreamBuffer = 64 * 1024 + maxStreamLine = 8 * 1024 * 1024 +) + func parseStreamingMessageResponse( ctx context.Context, r *http.Response, payload *messagePayload, ) (*MessageResponsePayload, error) { scanner := bufio.NewScanner(r.Body) + scanner.Buffer(make([]byte, 0, initialStreamBuffer), maxStreamLine) eventChan := make(chan MessageEvent) go func() { @@ -402,24 +436,30 @@ func parseStreamingMessageResponse( data := strings.TrimPrefix(line, "data: ") event, err := parseStreamEvent(data) if err != nil { - eventChan <- MessageEvent{Response: nil, Err: fmt.Errorf("failed to parse stream event: %w", err)} + partial := response + eventChan <- MessageEvent{Response: &partial, Err: fmt.Errorf("failed to parse stream event: %w", err)} return } response, err = processStreamEvent(ctx, event, payload, response, eventChan) if err != nil { - eventChan <- MessageEvent{Response: nil, Err: fmt.Errorf("failed to process stream event: %w", err)} + partial := response + eventChan <- MessageEvent{Response: &partial, Err: fmt.Errorf("failed to process stream event: %w", err)} return } } if err := scanner.Err(); err != nil { - eventChan <- MessageEvent{Response: nil, Err: fmt.Errorf("issue scanning response: %w", err)} + partial := response + eventChan <- MessageEvent{Response: &partial, Err: fmt.Errorf("issue scanning response: %w", err)} } }() var lastResponse *MessageResponsePayload for event := range eventChan { if event.Err != nil { - return nil, event.Err + if event.Response != nil { + lastResponse = event.Response + } + return lastResponse, event.Err } lastResponse = event.Response } @@ -492,7 +532,8 @@ func processStreamEvent(ctx context.Context, event map[string]interface{}, paylo case "ping": // Nothing to do here case "error": - eventChan <- MessageEvent{Response: nil, Err: fmt.Errorf("received error event: %v", event)} + partial := response + eventChan <- MessageEvent{Response: &partial, Err: fmt.Errorf("received error event: %v", event)} default: log.Printf("unknown event type: %s - %v", eventType, event) } @@ -568,6 +609,11 @@ func handleContentBlockStartEvent(event map[string]interface{}, response Message Thinking: getString(cb, "thinking"), Signature: getString(cb, "signature"), }) + case EventTypeRedactedThinking: + response.Content = append(response.Content, &RedactedThinkingContent{ + Type: eventType, + Data: getString(cb, "data"), + }) default: return response, fmt.Errorf("unknown content block type: %s", eventType) } @@ -775,6 +821,11 @@ func handleMessageDeltaEvent(event map[string]interface{}, response MessageRespo if cacheReadTokens, err := getFloat64(usage, "cache_read_input_tokens"); err == nil { response.Usage.CacheReadInputTokens = int(cacheReadTokens) } + if details, ok := usage["output_tokens_details"].(map[string]interface{}); ok { + if thinkingTokens, err := getFloat64(details, "thinking_tokens"); err == nil { + response.Usage.OutputTokensDetails.ThinkingTokens = int(thinkingTokens) + } + } return response, nil } diff --git a/llms/anthropic/internal/anthropicclient/models.go b/llms/anthropic/internal/anthropicclient/models.go new file mode 100644 index 000000000..8deac7dd1 --- /dev/null +++ b/llms/anthropic/internal/anthropicclient/models.go @@ -0,0 +1,100 @@ +package anthropicclient + +import ( + "context" + "encoding/json" + "fmt" + "net/http" + "net/url" + "strconv" + "time" +) + +type ModelCapability struct { + Supported bool `json:"supported"` +} + +type ModelEffortCapability struct { + Supported bool `json:"supported"` + Low ModelCapability `json:"low"` + Medium ModelCapability `json:"medium"` + High ModelCapability `json:"high"` + XHigh ModelCapability `json:"xhigh"` + Max ModelCapability `json:"max"` +} + +type ModelThinkingTypes struct { + Enabled ModelCapability `json:"enabled"` + Adaptive ModelCapability `json:"adaptive"` +} + +type ModelThinkingCapability struct { + Supported bool `json:"supported"` + Types ModelThinkingTypes `json:"types"` +} + +type ModelCapabilities struct { + Batch ModelCapability `json:"batch"` + Citations ModelCapability `json:"citations"` + CodeExecution ModelCapability `json:"code_execution"` + ContextManagement ModelCapability `json:"context_management"` + Effort ModelEffortCapability `json:"effort"` + ImageInput ModelCapability `json:"image_input"` + PDFInput ModelCapability `json:"pdf_input"` + StructuredOutputs ModelCapability `json:"structured_outputs"` + Thinking ModelThinkingCapability `json:"thinking"` +} + +type ModelInfo struct { + Type string `json:"type"` + ID string `json:"id"` + DisplayName string `json:"display_name"` + CreatedAt time.Time `json:"created_at"` + MaxInputTokens int `json:"max_input_tokens"` + MaxTokens int `json:"max_tokens"` + Capabilities *ModelCapabilities `json:"capabilities"` +} + +type ModelsRequest struct { + Limit int + AfterID string +} + +type ModelsResponsePayload struct { + Data []ModelInfo `json:"data"` + HasMore bool `json:"has_more"` + FirstID string `json:"first_id"` + LastID string `json:"last_id"` +} + +func (c *Client) ListModels(ctx context.Context, r *ModelsRequest) (*ModelsResponsePayload, error) { + path := "/models" + if r != nil { + q := url.Values{} + if r.Limit > 0 { + q.Set("limit", strconv.Itoa(r.Limit)) + } + if r.AfterID != "" { + q.Set("after_id", r.AfterID) + } + if len(q) > 0 { + path += "?" + q.Encode() + } + } + + resp, err := c.request(ctx, http.MethodGet, path, http.NoBody, nil) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return nil, c.decodeError(resp) + } + + var payload ModelsResponsePayload + if err := json.NewDecoder(resp.Body).Decode(&payload); err != nil { + return nil, fmt.Errorf("decode models response: %w", err) + } + return &payload, nil +} diff --git a/llms/anthropic/legacy_completions_warning_test.go b/llms/anthropic/legacy_completions_warning_test.go new file mode 100644 index 000000000..0e09007c9 --- /dev/null +++ b/llms/anthropic/legacy_completions_warning_test.go @@ -0,0 +1,62 @@ +package anthropic_test + +import ( + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/anthropic" +) + +func legacyCompletionsLLM(t *testing.T) *anthropic.LLM { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"completion":"ok","stop_reason":"stop_sequence"}`) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New( + anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), + anthropic.WithModel("claude-2.1"), + anthropic.WithLegacyTextCompletionsAPI(), + ) + require.NoError(t, err) + return llm +} + +func TestTheLegacyAnthropicPathReportsWhatItCannotCarry(t *testing.T) { + t.Parallel() + + resp, err := legacyCompletionsLLM(t).GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithTopK(40), llms.WithSeed(7), llms.WithN(2), + llms.WithJSONMode(), llms.WithReasoning(llms.ReasoningHigh, 0), + llms.WithTools([]llms.Tool{{Type: "function", Function: &llms.FunctionDefinition{Name: "f"}}}), + ) + require.NoError(t, err) + + got := warningsByOption(resp.Warnings) + for _, option := range []string{ + "WithTopK", "WithSeed", "WithN", "WithJSONMode", "WithReasoning", "WithTools", + } { + require.Contains(t, got, option, "the legacy request has no field for it: %v", resp.Warnings) + } +} + +func TestTheLegacyAnthropicPathRefusesAnEffortItCannotName(t *testing.T) { + t.Parallel() + + _, err := legacyCompletionsLLM(t).GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithReasoning("enormous", 0)) + + require.Error(t, err, "an effort no door records must not reach the network") +} diff --git a/llms/anthropic/legacy_messages_warning_test.go b/llms/anthropic/legacy_messages_warning_test.go new file mode 100644 index 000000000..3f15d7fe3 --- /dev/null +++ b/llms/anthropic/legacy_messages_warning_test.go @@ -0,0 +1,36 @@ +package anthropic_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func TestTheLegacyAnthropicPathReportsTheMessagesItThrowsAway(t *testing.T) { + t.Parallel() + + resp, err := legacyCompletionsLLM(t).GenerateContent(t.Context(), []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "one", "two"), + llms.TextParts(llms.ChatMessageTypeHuman, "three"), + }) + require.NoError(t, err) + + w, ok := warningsByOption(resp.Warnings)["messages"] + require.True(t, ok, "two of three parts went nowhere unreported: %v", resp.Warnings) + require.Equal(t, llms.WarningClamp, w.Kind) + require.Equal(t, "3 parts", w.Asked) + require.Equal(t, "1 part", w.Sent) +} + +func TestASingleMessagePartOnTheLegacyPathIsNotReported(t *testing.T) { + t.Parallel() + + resp, err := legacyCompletionsLLM(t).GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "one")}) + require.NoError(t, err) + + require.NotContains(t, warningsByOption(resp.Warnings), "messages", + "the whole prompt travelled: %v", resp.Warnings) +} diff --git a/llms/anthropic/long_stream_line_test.go b/llms/anthropic/long_stream_line_test.go new file mode 100644 index 000000000..af5695a8b --- /dev/null +++ b/llms/anthropic/long_stream_line_test.go @@ -0,0 +1,53 @@ +package anthropic_test + +import ( + "context" + "fmt" + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/anthropic" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func TestAStreamedLineLongerThanTheDefaultBufferSurvives(t *testing.T) { + t.Parallel() + + long := strings.Repeat("a", 200*1024) + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "text/event-stream") + _, _ = io.WriteString(w, "event: message_start\ndata: {\"type\":\"message_start\",\"message\":"+ + "{\"id\":\"msg_1\",\"type\":\"message\",\"role\":\"assistant\",\"model\":\"claude-haiku-4-5\","+ + "\"content\":[],\"stop_reason\":null,\"usage\":{\"input_tokens\":1,\"output_tokens\":1}}}\n\n") + _, _ = io.WriteString(w, "event: content_block_start\ndata: {\"type\":\"content_block_start\","+ + "\"index\":0,\"content_block\":{\"type\":\"text\",\"text\":\"\"}}\n\n") + _, _ = fmt.Fprintf(w, "event: content_block_delta\ndata: {\"type\":\"content_block_delta\","+ + "\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":%q}}\n\n", long) + _, _ = io.WriteString(w, "event: content_block_stop\ndata: {\"type\":\"content_block_stop\",\"index\":0}\n\n") + _, _ = io.WriteString(w, "event: message_delta\ndata: {\"type\":\"message_delta\","+ + "\"delta\":{\"stop_reason\":\"end_turn\"},\"usage\":{\"output_tokens\":9}}\n\n") + _, _ = io.WriteString(w, "event: message_stop\ndata: {\"type\":\"message_stop\"}\n\n") + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New(anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), anthropic.WithModel("claude-haiku-4-5")) + require.NoError(t, err) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + + require.NoError(t, err, "a long line must not end the stream") + require.Len(t, resp.Choices, 1) + assert.Len(t, resp.Choices[0].Content, len(long)) +} diff --git a/llms/anthropic/models.go b/llms/anthropic/models.go new file mode 100644 index 000000000..cc5edc858 --- /dev/null +++ b/llms/anthropic/models.go @@ -0,0 +1,122 @@ +package anthropic + +import ( + "context" + "time" + + "github.com/vxcontrol/langchaingo/llms/anthropic/internal/anthropicclient" +) + +type ModelFeatures struct { + Batch bool + Citations bool + CodeExecution bool + ContextManagement bool + ImageInput bool + PDFInput bool + StructuredOutputs bool +} + +// ModelInfo is one model from the vendor's listing. A false CapabilitiesReported +// means the record carried no capabilities object at all — read the other fields +// as unknown there, not as unsupported. +type ModelInfo struct { + ID string + DisplayName string + CreatedAt time.Time + MaxInputTokens int + MaxTokens int + CapabilitiesReported bool + EffortSupported bool + EffortLevels []string + ThinkingSupported bool + ThinkingTypes []string + Features ModelFeatures +} + +// ListModelsRequest selects one page of the listing. Limit 0 takes the vendor's +// default page size. +type ListModelsRequest struct { + Limit int + AfterID string +} + +// ListModelsResponse is one page of the listing. HasMore true means further +// models exist beyond LastID; pass it as the next request's AfterID. +type ListModelsResponse struct { + Models []ModelInfo + HasMore bool + LastID string +} + +func (o *LLM) ListModels(ctx context.Context, req ListModelsRequest) (ListModelsResponse, error) { + payload, err := o.client.ListModels(ctx, &anthropicclient.ModelsRequest{ + Limit: req.Limit, + AfterID: req.AfterID, + }) + if err != nil { + return ListModelsResponse{}, err + } + + models := make([]ModelInfo, 0, len(payload.Data)) + for _, m := range payload.Data { + models = append(models, modelInfoFrom(m)) + } + return ListModelsResponse{Models: models, HasMore: payload.HasMore, LastID: payload.LastID}, nil +} + +func modelInfoFrom(m anthropicclient.ModelInfo) ModelInfo { + info := ModelInfo{ + ID: m.ID, + DisplayName: m.DisplayName, + CreatedAt: m.CreatedAt, + MaxInputTokens: m.MaxInputTokens, + MaxTokens: m.MaxTokens, + } + + c := m.Capabilities + if c == nil { + return info + } + + info.CapabilitiesReported = true + info.EffortSupported = c.Effort.Supported + info.ThinkingSupported = c.Thinking.Supported + info.Features = ModelFeatures{ + Batch: c.Batch.Supported, + Citations: c.Citations.Supported, + CodeExecution: c.CodeExecution.Supported, + ContextManagement: c.ContextManagement.Supported, + ImageInput: c.ImageInput.Supported, + PDFInput: c.PDFInput.Supported, + StructuredOutputs: c.StructuredOutputs.Supported, + } + + levels := []struct { + name string + flag anthropicclient.ModelCapability + }{ + {"low", c.Effort.Low}, {"medium", c.Effort.Medium}, {"high", c.Effort.High}, + {"xhigh", c.Effort.XHigh}, {"max", c.Effort.Max}, + } + info.EffortLevels = make([]string, 0, len(levels)) + for _, lv := range levels { + if lv.flag.Supported { + info.EffortLevels = append(info.EffortLevels, lv.name) + } + } + + types := []struct { + name string + flag anthropicclient.ModelCapability + }{ + {"enabled", c.Thinking.Types.Enabled}, {"adaptive", c.Thinking.Types.Adaptive}, + } + info.ThinkingTypes = make([]string, 0, len(types)) + for _, ty := range types { + if ty.flag.Supported { + info.ThinkingTypes = append(info.ThinkingTypes, ty.name) + } + } + return info +} diff --git a/llms/anthropic/models_test.go b/llms/anthropic/models_test.go new file mode 100644 index 000000000..3a7f64e60 --- /dev/null +++ b/llms/anthropic/models_test.go @@ -0,0 +1,161 @@ +package anthropic_test + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/vxcontrol/langchaingo/llms/anthropic" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +type listingCall struct { + method string + path string + rawQuery string +} + +func serveListing(t *testing.T, status int, body string) (*anthropic.LLM, *listingCall) { + t.Helper() + + seen := new(listingCall) + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + seen.method, seen.path, seen.rawQuery = r.Method, r.URL.Path, r.URL.RawQuery + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(status) + _, _ = io.WriteString(w, body) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New(anthropic.WithToken("test"), anthropic.WithBaseURL(srv.URL)) + require.NoError(t, err) + return llm, seen +} + +const vendorSonnet46 = `{"data":[{"type":"model","id":"claude-sonnet-4-6",` + + `"display_name":"Claude Sonnet 4.6","created_at":"2026-02-04T00:00:00Z",` + + `"max_input_tokens":1000000,"max_tokens":128000,"capabilities":{` + + `"batch":{"supported":true},"citations":{"supported":true},` + + `"code_execution":{"supported":true},"context_management":{"supported":true},` + + `"image_input":{"supported":true},"pdf_input":{"supported":true},` + + `"structured_outputs":{"supported":true},` + + `"effort":{"supported":true,"low":{"supported":true},"medium":{"supported":true},` + + `"high":{"supported":true},"xhigh":{"supported":false},"max":{"supported":true}},` + + `"thinking":{"supported":true,"types":{"enabled":{"supported":true},` + + `"adaptive":{"supported":true}}}}}],"has_more":false,"first_id":"claude-sonnet-4-6",` + + `"last_id":"claude-sonnet-4-6"}` + +func TestTheListingCarriesEveryCapabilityTheVendorReports(t *testing.T) { + t.Parallel() + + llm, _ := serveListing(t, http.StatusOK, vendorSonnet46) + + resp, err := llm.ListModels(context.Background(), anthropic.ListModelsRequest{}) + require.NoError(t, err) + require.Len(t, resp.Models, 1) + + m := resp.Models[0] + assert.Equal(t, "claude-sonnet-4-6", m.ID) + assert.Equal(t, "Claude Sonnet 4.6", m.DisplayName) + assert.Equal(t, 2026, m.CreatedAt.Year()) + assert.Equal(t, 1000000, m.MaxInputTokens) + assert.Equal(t, 128000, m.MaxTokens) + assert.True(t, m.CapabilitiesReported) + assert.True(t, m.EffortSupported) + assert.Equal(t, []string{"low", "medium", "high", "max"}, m.EffortLevels) + assert.True(t, m.ThinkingSupported) + assert.Equal(t, []string{"enabled", "adaptive"}, m.ThinkingTypes) + assert.True(t, m.Features.StructuredOutputs) + assert.True(t, m.Features.ContextManagement) + assert.False(t, resp.HasMore) + assert.Equal(t, "claude-sonnet-4-6", resp.LastID) +} + +func TestAModelOffTheEffortScaleReportsNoLevels(t *testing.T) { + t.Parallel() + + const body = `{"data":[{"type":"model","id":"claude-haiku-4-5-20251001",` + + `"max_input_tokens":200000,"max_tokens":64000,"capabilities":{` + + `"effort":{"supported":false,"low":{"supported":false},"medium":{"supported":false},` + + `"high":{"supported":false},"xhigh":{"supported":false},"max":{"supported":false}},` + + `"thinking":{"supported":true,"types":{"enabled":{"supported":true},` + + `"adaptive":{"supported":false}}}}}],"has_more":false}` + + llm, _ := serveListing(t, http.StatusOK, body) + + resp, err := llm.ListModels(context.Background(), anthropic.ListModelsRequest{}) + require.NoError(t, err) + require.Len(t, resp.Models, 1) + + m := resp.Models[0] + assert.True(t, m.CapabilitiesReported) + assert.False(t, m.EffortSupported) + assert.Empty(t, m.EffortLevels) + assert.True(t, m.ThinkingSupported) + assert.Equal(t, []string{"enabled"}, m.ThinkingTypes) +} + +func TestARecordWithoutCapabilitiesIsNotReadAsUnsupported(t *testing.T) { + t.Parallel() + + const body = `{"data":[{"type":"model","id":"claude-newborn-9",` + + `"display_name":"Claude Newborn 9"}],"has_more":false}` + + llm, _ := serveListing(t, http.StatusOK, body) + + resp, err := llm.ListModels(context.Background(), anthropic.ListModelsRequest{}) + require.NoError(t, err) + require.Len(t, resp.Models, 1) + + m := resp.Models[0] + assert.Equal(t, "claude-newborn-9", m.ID) + assert.False(t, m.CapabilitiesReported, + "the vendor said nothing about this model, which is not the same as saying nothing is supported") + assert.Empty(t, m.EffortLevels) + assert.Empty(t, m.ThinkingTypes) +} + +func TestTheListingIsFetchedWithAGetAndTheRequestedPage(t *testing.T) { + t.Parallel() + + llm, seen := serveListing(t, http.StatusOK, vendorSonnet46) + + _, err := llm.ListModels(context.Background(), anthropic.ListModelsRequest{ + Limit: 1000, + AfterID: "claude-opus-5", + }) + require.NoError(t, err) + + assert.Equal(t, http.MethodGet, seen.method) + assert.Equal(t, "/models", seen.path) + assert.Equal(t, "after_id=claude-opus-5&limit=1000", seen.rawQuery) +} + +func TestAnUnpagedListingSendsNoQuery(t *testing.T) { + t.Parallel() + + llm, seen := serveListing(t, http.StatusOK, vendorSonnet46) + + _, err := llm.ListModels(context.Background(), anthropic.ListModelsRequest{}) + require.NoError(t, err) + assert.Empty(t, seen.rawQuery) +} + +func TestARefusedListingSurfacesTheVendorMessage(t *testing.T) { + t.Parallel() + + const body = `{"type":"error","error":{"type":"authentication_error",` + + `"message":"invalid x-api-key"}}` + + llm, _ := serveListing(t, http.StatusUnauthorized, body) + + _, err := llm.ListModels(context.Background(), anthropic.ListModelsRequest{}) + require.Error(t, err) + assert.Contains(t, err.Error(), "invalid x-api-key") + assert.Contains(t, err.Error(), "401") +} diff --git a/llms/anthropic/options.go b/llms/anthropic/options.go index fba09c256..99dd17968 100644 --- a/llms/anthropic/options.go +++ b/llms/anthropic/options.go @@ -55,7 +55,7 @@ func WithExtendedOutput() llms.CallOption { // // llm.GenerateContent(ctx, messages, // llms.WithTools(tools), -// llms.WithThinkingMode(llms.ThinkingModeMedium), +// llms.WithReasoning(llms.ReasoningMedium, 0), // anthropic.WithInterleavedThinking(), // ) func WithInterleavedThinking() llms.CallOption { @@ -65,9 +65,9 @@ func WithInterleavedThinking() llms.CallOption { } // Add to existing headers if present if existing, ok := opts.Metadata["anthropic:beta_headers"].([]string); ok { - opts.Metadata["anthropic:beta_headers"] = append(existing, "interleaved-thinking-2025-05-14") + opts.Metadata["anthropic:beta_headers"] = append(existing, anthropicInterleavedThinkingBeta) } else { - opts.Metadata["anthropic:beta_headers"] = []string{"interleaved-thinking-2025-05-14"} + opts.Metadata["anthropic:beta_headers"] = []string{anthropicInterleavedThinkingBeta} } } } diff --git a/llms/anthropic/partial_stream_error_test.go b/llms/anthropic/partial_stream_error_test.go new file mode 100644 index 000000000..343813dfa --- /dev/null +++ b/llms/anthropic/partial_stream_error_test.go @@ -0,0 +1,82 @@ +package anthropic_test + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/anthropic" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +const deliveredThenBroken = `event: message_start +data: {"type":"message_start","message":{"id":"msg_1","type":"message","role":"assistant","model":"claude-haiku-4-5","content":[],"stop_reason":null,"usage":{"input_tokens":10,"output_tokens":1}}} + +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":"sixty rooms are free"}} + +` + +func streamThenFail(t *testing.T, tail string) (*llms.ContentResponse, error) { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "text/event-stream") + _, _ = io.WriteString(w, deliveredThenBroken+tail) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New(anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), anthropic.WithModel("claude-haiku-4-5")) + require.NoError(t, err) + + return llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) +} + +func TestTextAlreadyDeliveredSurvivesAVendorErrorEvent(t *testing.T) { + t.Parallel() + + resp, err := streamThenFail(t, `event: error +data: {"type":"error","error":{"type":"overloaded_error","message":"overloaded"}} +`) + + require.Error(t, err) + require.NotNil(t, resp, "text already handed to the consumer must travel with the error") + require.NotEmpty(t, resp.Choices) + assert.Equal(t, "sixty rooms are free", resp.Choices[0].Content) +} + +func TestTextAlreadyDeliveredSurvivesAMalformedEvent(t *testing.T) { + t.Parallel() + + resp, err := streamThenFail(t, "data: {not json at all\n") + + require.Error(t, err) + require.NotNil(t, resp, "one unreadable event must not discard the answer so far") + require.NotEmpty(t, resp.Choices) + assert.Equal(t, "sixty rooms are free", resp.Choices[0].Content) +} + +func TestTextAlreadyDeliveredSurvivesAnOversizedLine(t *testing.T) { + t.Parallel() + + resp, err := streamThenFail(t, "data: "+strings.Repeat("x", 9*1024*1024)+"\n") + + require.Error(t, err) + require.NotNil(t, resp, "a line the scanner cannot hold must not discard the answer so far") + require.NotEmpty(t, resp.Choices) + assert.Equal(t, "sixty rooms are free", resp.Choices[0].Content) +} diff --git a/llms/anthropic/partial_stream_test.go b/llms/anthropic/partial_stream_test.go new file mode 100644 index 000000000..549840d51 --- /dev/null +++ b/llms/anthropic/partial_stream_test.go @@ -0,0 +1,77 @@ +package anthropic_test + +import ( + "context" + "errors" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/anthropic" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func TestAConsumerThatGivesUpStillGetsWhatArrived(t *testing.T) { + t.Parallel() + + const events = `event: message_start +data: {"type":"message_start","message":{"id":"msg_1","type":"message","role":"assistant","model":"claude-haiku-4-5","content":[],"stop_reason":null,"usage":{"input_tokens":10,"output_tokens":1}}} + +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":"sixty "}} + +event: content_block_delta +data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"rooms "}} + +event: content_block_delta +data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"are free"}} + +event: content_block_stop +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":9}} + +event: message_stop +data: {"type":"message_stop"} +` + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "text/event-stream") + _, _ = io.WriteString(w, events) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New(anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), anthropic.WithModel("claude-haiku-4-5")) + require.NoError(t, err) + + gaveUp := errors.New("consumer gave up") + delivered := 0 + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, + llms.WithMaxTokens(64), + llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type != streaming.ChunkTypeText { + return nil + } + delivered++ + if delivered == 2 { + return gaveUp + } + return nil + })) + + require.ErrorIs(t, err, gaveUp) + require.NotNil(t, resp, "the text already delivered must travel with the error") + require.Len(t, resp.Choices, 1) + assert.Equal(t, "sixty rooms ", resp.Choices[0].Content) +} diff --git a/llms/anthropic/reasoning_tokens_test.go b/llms/anthropic/reasoning_tokens_test.go new file mode 100644 index 000000000..3e7a44da0 --- /dev/null +++ b/llms/anthropic/reasoning_tokens_test.go @@ -0,0 +1,102 @@ +package anthropic_test + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/anthropic" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func answeringLLM(t *testing.T, contentType, body string) *anthropic.LLM { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", contentType) + _, _ = io.WriteString(w, body) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New( + anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), + anthropic.WithModel("claude-sonnet-4-5")) + require.NoError(t, err) + return llm +} + +func TestReasoningTokensReachTheCaller(t *testing.T) { + t.Parallel() + + ask := []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")} + + t.Run("the whole answer carries the count", func(t *testing.T) { + t.Parallel() + + llm := answeringLLM(t, "application/json", `{"id":"msg_1","type":"message","role":"assistant", + "model":"claude-sonnet-4-5", + "content":[{"type":"thinking","thinking":"counting","signature":"c2ln"}, + {"type":"text","text":"391"}], + "stop_reason":"end_turn", + "usage":{"input_tokens":55,"output_tokens":352, + "output_tokens_details":{"thinking_tokens":169}}}`) + + resp, err := llm.GenerateContent(context.Background(), ask, llms.WithMaxTokens(2048)) + require.NoError(t, err) + + assert.Equal(t, 169, resp.Choices[0].GenerationInfo["ReasoningTokens"]) + assert.Equal(t, 352, resp.Choices[0].GenerationInfo["CompletionTokens"]) + }) + + t.Run("a streamed answer carries the same count", func(t *testing.T) { + t.Parallel() + + llm := answeringLLM(t, "text/event-stream", `event: message_start +data: {"type":"message_start","message":{"id":"msg_2","type":"message","role":"assistant","model":"claude-sonnet-4-5","content":[],"stop_reason":null,"usage":{"input_tokens":55,"output_tokens":1}}} + +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":"391"}} + +event: content_block_stop +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":352,"output_tokens_details":{"thinking_tokens":169}}} + +event: message_stop +data: {"type":"message_stop"} +`) + + resp, err := llm.GenerateContent(context.Background(), ask, + llms.WithMaxTokens(2048), + llms.WithStreamingFunc(func(_ context.Context, _ streaming.Chunk) error { return nil })) + require.NoError(t, err) + + assert.Equal(t, 169, resp.Choices[0].GenerationInfo["ReasoningTokens"]) + }) + + t.Run("an answer without thinking reports none", func(t *testing.T) { + t.Parallel() + + llm := answeringLLM(t, "application/json", `{"id":"msg_3","type":"message","role":"assistant", + "model":"claude-sonnet-4-5","content":[{"type":"text","text":"ready"}], + "stop_reason":"end_turn", + "usage":{"input_tokens":16,"output_tokens":4, + "output_tokens_details":{"thinking_tokens":0}}}`) + + resp, err := llm.GenerateContent(context.Background(), ask, llms.WithMaxTokens(2048)) + require.NoError(t, err) + + assert.Equal(t, 0, resp.Choices[0].GenerationInfo["ReasoningTokens"]) + }) +} diff --git a/llms/anthropic/reasoning_validation_test.go b/llms/anthropic/reasoning_validation_test.go new file mode 100644 index 000000000..40ed28d0a --- /dev/null +++ b/llms/anthropic/reasoning_validation_test.go @@ -0,0 +1,45 @@ +package anthropic_test + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "sync/atomic" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/anthropic" +) + +func TestAnUnknownEffortIsRefusedBeforeTheRequestIsSent(t *testing.T) { + t.Parallel() + + var calls atomic.Int32 + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + calls.Add(1) + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"x","type":"message","role":"assistant","model":"m", + "content":[{"type":"text","text":"ok"}],"stop_reason":"end_turn", + "usage":{"input_tokens":1,"output_tokens":1}}`) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New(anthropic.WithToken("test-key"), anthropic.WithBaseURL(srv.URL), + anthropic.WithModel("claude-haiku-4-5")) + require.NoError(t, err) + + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithReasoning("banana", 0)) + + var apiErr *llms.Error + require.ErrorAs(t, err, &apiErr) + assert.Equal(t, llms.ErrCodeInvalidRequest, apiErr.Code) + assert.Contains(t, apiErr.Message, "banana") + assert.Zero(t, calls.Load(), "an effort no door accepts must not cost a request") +} diff --git a/llms/anthropic/redacted_thinking_wire_test.go b/llms/anthropic/redacted_thinking_wire_test.go new file mode 100644 index 000000000..e28003039 --- /dev/null +++ b/llms/anthropic/redacted_thinking_wire_test.go @@ -0,0 +1,184 @@ +package anthropic_test + +import ( + "context" + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/anthropic" + "github.com/vxcontrol/langchaingo/llms/reasoning" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func TestAnEncryptedThoughtArrivesAndTravelsBack(t *testing.T) { + t.Parallel() + + const encrypted = "EqQBCgIYAhIM1gbcDa9GJwZA2b" + + t.Run("the answer survives a block the door cannot read", func(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"msg_test","type":"message","role":"assistant",`+ + `"model":"claude-opus-4-6","content":[`+ + `{"type":"redacted_thinking","data":"`+encrypted+`"},`+ + `{"type":"text","text":"sixty rooms are free"}],`+ + `"stop_reason":"end_turn","usage":{"input_tokens":1,"output_tokens":1}}`) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New(anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), anthropic.WithModel("claude-opus-4-6")) + require.NoError(t, err) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{{ + Role: llms.ChatMessageTypeHuman, + Parts: []llms.ContentPart{llms.TextPart("how many rooms are free?")}, + }}, llms.WithMaxTokens(64)) + require.NoError(t, err, "a block the door cannot read must not cost the caller the answer") + require.Len(t, resp.Choices, 1) + + assert.Equal(t, "sixty rooms are free", resp.Choices[0].Content) + require.NotNil(t, resp.Choices[0].Reasoning, "the encrypted half is still reasoning") + assert.Equal(t, []reasoning.Block{{Redacted: []byte(encrypted)}}, resp.Choices[0].Reasoning.Sequence()) + assert.False(t, resp.Choices[0].Reasoning.IsEmpty(), + "a turn carrying an encrypted thought is not an empty one") + }) + + t.Run("the block goes back to the vendor unchanged", func(t *testing.T) { + t.Parallel() + + var body []byte + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + body, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"msg_test","type":"message","role":"assistant",`+ + `"model":"claude-opus-4-6","content":[{"type":"text","text":"ok"}],`+ + `"stop_reason":"end_turn","usage":{"input_tokens":1,"output_tokens":1}}`) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New(anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), anthropic.WithModel("claude-opus-4-6")) + require.NoError(t, err) + + _, err = llm.GenerateContent(context.Background(), []llms.MessageContent{ + {Role: llms.ChatMessageTypeHuman, Parts: []llms.ContentPart{llms.TextPart("hi")}}, + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.TextPartWithReasoning("", reasoning.FromBlocks([]reasoning.Block{{Redacted: []byte(encrypted)}})), + }}, + {Role: llms.ChatMessageTypeHuman, Parts: []llms.ContentPart{llms.TextPart("and now?")}}, + }, llms.WithMaxTokens(64)) + require.NoError(t, err) + + var payload struct { + Messages []struct { + Role string `json:"role"` + Content []map[string]any `json:"content"` + } `json:"messages"` + } + require.NoError(t, json.Unmarshal(body, &payload)) + + var blocks []map[string]any + for _, m := range payload.Messages { + if m.Role == "assistant" { + blocks = append(blocks, m.Content...) + } + } + assert.Equal(t, []map[string]any{{"type": "redacted_thinking", "data": encrypted}}, blocks, + "the encrypted thought goes back exactly as it came, and nothing else rides with it") + }) +} + +func redactedThinkingStream(t *testing.T, encrypted string) *httptest.Server { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "text/event-stream") + _, _ = io.WriteString(w, "event: message_start\ndata: {\"type\":\"message_start\",\"message\":"+ + "{\"id\":\"msg_1\",\"type\":\"message\",\"role\":\"assistant\",\"model\":\"claude-opus-4-6\","+ + "\"content\":[],\"stop_reason\":null,\"usage\":{\"input_tokens\":1,\"output_tokens\":1}}}\n\n") + _, _ = io.WriteString(w, "event: content_block_start\ndata: {\"type\":\"content_block_start\","+ + "\"index\":0,\"content_block\":{\"type\":\"redacted_thinking\",\"data\":\""+encrypted+"\"}}\n\n") + _, _ = io.WriteString(w, "event: content_block_stop\ndata: {\"type\":\"content_block_stop\",\"index\":0}\n\n") + _, _ = io.WriteString(w, "event: content_block_start\ndata: {\"type\":\"content_block_start\","+ + "\"index\":1,\"content_block\":{\"type\":\"text\",\"text\":\"\"}}\n\n") + _, _ = io.WriteString(w, "event: content_block_delta\ndata: {\"type\":\"content_block_delta\","+ + "\"index\":1,\"delta\":{\"type\":\"text_delta\",\"text\":\"sixty rooms are free\"}}\n\n") + _, _ = io.WriteString(w, "event: content_block_stop\ndata: {\"type\":\"content_block_stop\",\"index\":1}\n\n") + _, _ = io.WriteString(w, "event: message_delta\ndata: {\"type\":\"message_delta\","+ + "\"delta\":{\"stop_reason\":\"end_turn\"},\"usage\":{\"output_tokens\":9}}\n\n") + _, _ = io.WriteString(w, "event: message_stop\ndata: {\"type\":\"message_stop\"}\n\n") + })) + t.Cleanup(srv.Close) + return srv +} + +func TestAStreamedEncryptedThoughtDoesNotCostTheAnswer(t *testing.T) { + t.Parallel() + + const encrypted = "EqQBCgIYAhIM1gbcDa9GJwZA2b" + + srv := redactedThinkingStream(t, encrypted) + + llm, err := anthropic.New(anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), anthropic.WithModel("claude-opus-4-6")) + require.NoError(t, err) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{{ + Role: llms.ChatMessageTypeHuman, + Parts: []llms.ContentPart{llms.TextPart("how many rooms are free?")}, + }}, + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + require.NoError(t, err, "a streamed block the door cannot read must not cost the caller the answer") + require.Len(t, resp.Choices, 1) + + assert.Equal(t, "sixty rooms are free", resp.Choices[0].Content) + require.NotNil(t, resp.Choices[0].Reasoning, "the encrypted half is still reasoning on the streamed leg") + assert.Equal(t, []reasoning.Block{{Redacted: []byte(encrypted)}}, resp.Choices[0].Reasoning.Sequence()) + assert.False(t, resp.Choices[0].Reasoning.IsEmpty()) +} + +func TestTwoEncryptedBlocksGoBackAsTwo(t *testing.T) { + t.Parallel() + + var body []byte + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + body, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"msg_test","type":"message","role":"assistant",`+ + `"model":"claude-opus-4-6","content":[{"type":"text","text":"ok"}],`+ + `"stop_reason":"end_turn","usage":{"input_tokens":1,"output_tokens":1}}`) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New(anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), anthropic.WithModel("claude-opus-4-6")) + require.NoError(t, err) + + _, err = llm.GenerateContent(context.Background(), []llms.MessageContent{ + {Role: llms.ChatMessageTypeHuman, Parts: []llms.ContentPart{llms.TextPart("hi")}}, + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{llms.TextContent{ + Text: "answer", + Reasoning: reasoning.FromBlocks([]reasoning.Block{{Redacted: []byte("first")}, {Redacted: []byte("second")}}), + }}}, + {Role: llms.ChatMessageTypeHuman, Parts: []llms.ContentPart{llms.TextPart("and now?")}}, + }, llms.WithMaxTokens(64)) + require.NoError(t, err) + + assert.Equal(t, 2, strings.Count(string(body), `"type":"redacted_thinking"`), + "two encrypted blocks must reach the vendor as two") +} diff --git a/llms/anthropic/refusal_test.go b/llms/anthropic/refusal_test.go new file mode 100644 index 000000000..e1d66ff02 --- /dev/null +++ b/llms/anthropic/refusal_test.go @@ -0,0 +1,129 @@ +package anthropic_test + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/anthropic" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func TestARefusalTravelsWithTheResponseOnThePrimaryDoor(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"msg_x","type":"message","role":"assistant","model":"claude-opus-4-6", + "content":[{"type":"text","text":"I can't help with that."}],"stop_reason":"refusal", + "stop_details":{"category":"policy","explanation":"declined by policy"}, + "usage":{"input_tokens":11,"output_tokens":7}}`) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New(anthropic.WithToken("test-key"), anthropic.WithBaseURL(srv.URL), + anthropic.WithModel("claude-opus-4-6")) + require.NoError(t, err) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + + var refusal *llms.ErrModelRefusal + require.ErrorAs(t, err, &refusal) + assert.Equal(t, "I can't help with that.", refusal.Message) + assert.Equal(t, 11, refusal.InputTokens) + assert.Equal(t, 7, refusal.OutputTokens) + + require.NotNil(t, resp, "the response travels with the error so usage survives") + require.NotEmpty(t, resp.Choices) + assert.Equal(t, "refusal", resp.Choices[0].StopReason) +} + +func TestAStreamedRefusalAlsoTravelsWithItsResponse(t *testing.T) { + t.Parallel() + + const events = `event: message_start +data: {"type":"message_start","message":{"id":"msg_1","type":"message","role":"assistant","model":"claude-haiku-4-5","content":[],"stop_reason":null,"usage":{"input_tokens":11,"output_tokens":1}}} + +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":"I can't help with that."}} + +event: content_block_stop +data: {"type":"content_block_stop","index":0} + +event: message_delta +data: {"type":"message_delta","delta":{"stop_reason":"refusal","stop_sequence":null},"usage":{"output_tokens":7}} + +event: message_stop +data: {"type":"message_stop"} +` + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "text/event-stream") + _, _ = io.WriteString(w, events) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New(anthropic.WithToken("test-key"), anthropic.WithBaseURL(srv.URL), + anthropic.WithModel("claude-haiku-4-5")) + require.NoError(t, err) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + + var refusal *llms.ErrModelRefusal + require.ErrorAs(t, err, &refusal) + assert.Equal(t, "I can't help with that.", refusal.Message) + + require.NotNil(t, resp, "the streamed door must answer a refusal the same way") + require.NotEmpty(t, resp.Choices) + assert.Equal(t, "refusal", resp.Choices[0].StopReason) +} + +func TestARefusalKeepsTheCacheBreakdownAndTheServiceTier(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"msg_x","type":"message","role":"assistant","model":"claude-opus-4-6", + "content":[{"type":"text","text":"I can't help with that."}],"stop_reason":"refusal", + "usage":{"input_tokens":11,"output_tokens":7,"cache_read_input_tokens":3, + "cache_creation_input_tokens":9, + "cache_creation":{"ephemeral_5m_input_tokens":4,"ephemeral_1h_input_tokens":5}, + "service_tier":"priority","speed":"fast"}}`) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New(anthropic.WithToken("test-key"), anthropic.WithBaseURL(srv.URL), + anthropic.WithModel("claude-opus-4-6")) + require.NoError(t, err) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + + var refusal *llms.ErrModelRefusal + require.ErrorAs(t, err, &refusal) + assert.Equal(t, 9, refusal.CacheCreationInputTokens) + assert.Equal(t, 3, refusal.CacheReadInputTokens) + + require.NotNil(t, resp) + require.NotEmpty(t, resp.Choices) + info := resp.Choices[0].GenerationInfo + assert.Equal(t, 4, info["CacheCreationEphemeral5mInputTokens"]) + assert.Equal(t, 5, info["CacheCreationEphemeral1hInputTokens"]) + assert.Equal(t, "priority", info["ServiceTier"]) + assert.Equal(t, "fast", info["InferenceSpeed"]) +} diff --git a/llms/anthropic/response_folding_test.go b/llms/anthropic/response_folding_test.go new file mode 100644 index 000000000..f53a95bff --- /dev/null +++ b/llms/anthropic/response_folding_test.go @@ -0,0 +1,120 @@ +package anthropic + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +// serveAnthropic's returned pointer holds the request body only once +// GenerateContent has returned. +func serveAnthropic(t *testing.T, response string) (*httptest.Server, *string) { + t.Helper() + + sent := new(string) + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + *sent = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, response) + })) + t.Cleanup(srv.Close) + + return srv, sent +} + +func TestEveryTextBlockOfATurnReachesTheChoice(t *testing.T) { + t.Parallel() + + const resp = `{"id":"x","type":"message","role":"assistant","model":"m","content":[` + + `{"type":"text","text":"17 * 23 = "},` + + `{"type":"tool_use","id":"t1","name":"calc","input":{"expr":"17*23"}},` + + `{"type":"text","text":"391."}],` + + `"stop_reason":"end_turn","usage":{"input_tokens":1,"output_tokens":1}}` + + srv, _ := serveAnthropic(t, resp) + + llm, err := New(WithBaseURL(srv.URL), WithToken("t"), WithModel("claude-sonnet-4-5-20250929")) + require.NoError(t, err) + + got, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + require.NoError(t, err) + + assert.Equal(t, "17 * 23 = 391.", got.Choices[0].Content, + "a turn that resumes text after a tool call must keep both segments") + assert.Len(t, got.Choices[0].ToolCalls, 1) +} + +func TestAnEffortWithNoBudgetIsRefused(t *testing.T) { + t.Parallel() + + const resp = `{"id":"x","type":"message","role":"assistant","model":"m",` + + `"content":[{"type":"text","text":"ok"}],"stop_reason":"end_turn",` + + `"usage":{"input_tokens":1,"output_tokens":1}}` + + srv, sent := serveAnthropic(t, resp) + + llm, err := New(WithBaseURL(srv.URL), WithToken("t"), WithModel("claude-sonnet-4-5-20250929")) + require.NoError(t, err) + + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithReasoning(llms.ReasoningMinimal, 0)) + + var refused *reasoning.ErrEffortHasNoBudget + require.ErrorAs(t, err, &refused) + assert.Equal(t, string(llms.ReasoningMinimal), refused.Effort) + assert.Empty(t, *sent, "the refusal must land before the request leaves") +} + +func TestAnEffortWithNoBudgetStillTravelsWhenTokensAreExplicit(t *testing.T) { + t.Parallel() + + const resp = `{"id":"x","type":"message","role":"assistant","model":"m",` + + `"content":[{"type":"text","text":"ok"}],"stop_reason":"end_turn",` + + `"usage":{"input_tokens":1,"output_tokens":1}}` + + srv, sent := serveAnthropic(t, resp) + + llm, err := New(WithBaseURL(srv.URL), WithToken("t"), WithModel("claude-sonnet-4-5-20250929")) + require.NoError(t, err) + + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithReasoning(llms.ReasoningEffort("minimal"), 2048), llms.WithMaxTokens(8000)) + require.NoError(t, err) + + assert.Contains(t, *sent, `"budget_tokens":2048`, + "an explicit budget answers the question the effort could not") +} + +func TestABudgetedEffortStillSendsThinking(t *testing.T) { + t.Parallel() + + const resp = `{"id":"x","type":"message","role":"assistant","model":"m",` + + `"content":[{"type":"text","text":"ok"}],"stop_reason":"end_turn",` + + `"usage":{"input_tokens":1,"output_tokens":1}}` + + srv, sent := serveAnthropic(t, resp) + + llm, err := New(WithBaseURL(srv.URL), WithToken("t"), WithModel("claude-sonnet-4-5-20250929")) + require.NoError(t, err) + + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithReasoning(llms.ReasoningHigh, 0), llms.WithMaxTokens(8000)) + require.NoError(t, err) + + assert.Contains(t, *sent, `"type":"enabled"`) + require.False(t, strings.Contains(*sent, `"budget_tokens":0`), + "a mapped effort must carry a positive budget") +} diff --git a/llms/anthropic/sampling_warnings.go b/llms/anthropic/sampling_warnings.go new file mode 100644 index 000000000..92ec670e4 --- /dev/null +++ b/llms/anthropic/sampling_warnings.go @@ -0,0 +1,201 @@ +package anthropic + +import ( + "strconv" + "strings" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/anthropic/internal/anthropicclient" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func reportAnthropicUnread(warn *llms.Warnings, model string, opts llms.CallOptions) { + const unread = "the door builds no field for it" + + warn.AddUnreadExtraBody(model, opts, extraBodyUnread) + warn.AddUnreadOptions(model, opts, unread, "WithTopK") +} + +func reportAnthropicEffort( + warn *llms.Warnings, model string, opts llms.CallOptions, + thinking *anthropicclient.ThinkingPayload, outputConfig *anthropicclient.OutputConfig, +) { + cfg := opts.Reasoning + if cfg == nil || cfg.Effort == "" || cfg.Effort == llms.ReasoningNone { + return + } + asked := string(cfg.Effort) + sent := "" + if outputConfig != nil { + sent = outputConfig.Effort + } + sentBudget := 0 + if thinking != nil { + sentBudget = thinking.Budget + } + switch { + case sent == "" && thinking != nil: + reportAnthropicEffortAsBudget(warn, model, asked, cfg, sentBudget) + case sent == "": + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithReasoning", Model: model, + Asked: asked, Reason: "the door puts no thinking on the request for this model", + }) + case !strings.EqualFold(asked, sent): + warn.Add(llms.Warning{ + Kind: llms.WarningClamp, Option: "WithReasoning", Model: model, + Asked: asked, Sent: sent, + Reason: "the door sends only the efforts it records this model as accepting", + }) + } +} + +func reportAnthropicEffortAsBudget( + warn *llms.Warnings, model, asked string, cfg *llms.ReasoningConfig, sentBudget int, +) { + if sentBudget <= 0 { + return + } + if cfg.HasExplicitTokens() { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithReasoning", Model: model, + Asked: asked, + Reason: "the door sends the budget this model takes and has no field for the effort", + }) + return + } + warn.Add(llms.Warning{ + Kind: llms.WarningSubstitute, Option: "WithReasoning", Model: model, + Asked: asked, Sent: strconv.Itoa(sentBudget) + " tokens", + Reason: "the door turns the effort into the thinking budget this model takes", + }) +} + +func reportAnthropicMechanism(warn *llms.Warnings, model string, opts llms.CallOptions, thinking *anthropicclient.ThinkingPayload) { + cfg := opts.Reasoning + if cfg == nil || !cfg.Adaptive || thinking == nil || thinking.Type == "adaptive" { + return + } + warn.Add(llms.Warning{ + Kind: llms.WarningSubstitute, Option: "WithAdaptiveReasoning", Model: model, + Asked: "adaptive", Sent: thinking.Type, + Reason: "the door takes the thinking mechanism from the model, not from the preference", + }) +} + +func reportAnthropicBudget(warn *llms.Warnings, model string, opts llms.CallOptions, thinking *anthropicclient.ThinkingPayload) { + cfg := opts.Reasoning + if cfg == nil || !cfg.HasExplicitTokens() { + return + } + sent := 0 + if thinking != nil { + sent = thinking.Budget + } + if sent == cfg.Tokens { + return + } + if sent <= 0 { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithReasoning", Model: model, + Asked: strconv.Itoa(cfg.Tokens) + " tokens", + Reason: "the door sends no thinking budget on this model", + }) + return + } + warn.Add(llms.Warning{ + Kind: llms.WarningClamp, Option: "WithReasoning", Model: model, + Asked: strconv.Itoa(cfg.Tokens) + " tokens", Sent: strconv.Itoa(sent) + " tokens", + Reason: "the thinking budget is capped by the answer limit and by what the model records", + }) +} + +func reportAnthropicSampling( + warn *llms.Warnings, model string, opts llms.CallOptions, + thinking *anthropicclient.ThinkingPayload, outputConfig *anthropicclient.OutputConfig, + temperature, topP *float64, topK *int, maxTokens int, +) { + reportAnthropicUnread(warn, model, opts) + reportAnthropicBudget(warn, model, opts, thinking) + reportAnthropicMechanism(warn, model, opts, thinking) + reportAnthropicEffort(warn, model, opts, thinking, outputConfig) + + reason := anthropicSamplingReason(model, thinking) + warn.AddFloatChange("WithTemperature", model, reason, opts.Temperature, temperature) + warn.AddFloatChange("WithTopP", model, reason, opts.TopP, topP) + if opts.TopK != nil && *opts.TopK != 0 { + warn.AddIntChange("WithTopK", model, reason, opts.TopK, topK) + } + + if asked := opts.GetMaxTokens(); asked > 0 && maxTokens != asked { + warn.Add(llms.Warning{ + Kind: llms.WarningClamp, Option: "WithMaxTokens", Model: model, + Asked: strconv.Itoa(asked), Sent: strconv.Itoa(maxTokens), + Reason: "the answer limit was raised to leave room for the thinking budget", + }) + } +} + +func anthropicSamplingReason(model string, thinking *anthropicclient.ThinkingPayload) string { + switch { + case reasoning.ClaudeRejectsSampling(model): + return "the model rejects sampling parameters" + case thinking != nil && thinking.Type == "adaptive": + return "adaptive thinking takes no sampling parameters" + case thinking != nil && thinking.Type == "enabled": + return "the model refuses sampling while thinking" + default: + return "the model does not accept this combination of sampling parameters" + } +} + +const extraBodyUnread = "the door builds its request through a vendor SDK and has nowhere to merge them" + +func reportAnthropicCompletionsMessages(warn *llms.Warnings, model string, messages []llms.MessageContent) { + total := 0 + for _, m := range messages { + total += len(m.Parts) + } + if total <= 1 { + return + } + warn.Add(llms.Warning{ + Kind: llms.WarningClamp, Option: "messages", Model: model, + Asked: strconv.Itoa(total) + " parts", Sent: "1 part", + Reason: "the legacy path sends the first part of the first message as the whole prompt", + }) +} + +func reportAnthropicCompletions(warn *llms.Warnings, model string, opts llms.CallOptions) { + const unread = "the legacy text-completions request has no field for it" + + warn.AddUnreadExtraBody(model, opts, extraBodyUnread) + warn.AddUnreadOptions(model, opts, unread) + + drop := func(option, asked string) { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: option, Model: model, + Asked: asked, Reason: unread, + }) + } + if len(opts.Tools) > 0 { + drop("WithTools", strconv.Itoa(len(opts.Tools))+" tools") + } + if kind, name := llms.ClassifyToolChoice(opts.ToolChoice); kind != llms.ToolChoiceUnset { + asked := name + if asked == "" { + asked = kind.String() + } + drop("WithToolChoice", asked) + } + if opts.StructuredOutput != nil { + drop("WithStructuredOutput", opts.StructuredOutput.Name) + } + if cfg := opts.Reasoning; cfg != nil && cfg.ResolveMode() != llms.ReasoningDefault { + asked := string(cfg.GetEffort(opts.GetMaxTokens())) + if cfg.HasExplicitTokens() { + asked = strconv.Itoa(cfg.Tokens) + " tokens" + } + drop("WithReasoning", asked) + } +} diff --git a/llms/anthropic/sampling_warnings_test.go b/llms/anthropic/sampling_warnings_test.go new file mode 100644 index 000000000..d6ee48cb2 --- /dev/null +++ b/llms/anthropic/sampling_warnings_test.go @@ -0,0 +1,238 @@ +package anthropic_test + +import ( + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/require" + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/anthropic" +) + +const warningsTestModel = "claude-sonnet-4-5" + +func generateForWarnings(t *testing.T, callOpts ...llms.CallOption) *llms.ContentResponse { + t.Helper() + return generateForModel(t, warningsTestModel, callOpts...) +} + +func generateForModel(t *testing.T, model string, callOpts ...llms.CallOption) *llms.ContentResponse { + t.Helper() + + resp, _ := generateForModelSending(t, model, callOpts...) + return resp +} + +func generateForModelSending( + t *testing.T, model string, callOpts ...llms.CallOption, +) (*llms.ContentResponse, map[string]any) { + t.Helper() + + var body []byte + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + body, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"id":"msg_test","type":"message","role":"assistant",` + + `"model":"` + model + `","content":[{"type":"text","text":"ok"}],` + + `"stop_reason":"end_turn","usage":{"input_tokens":1,"output_tokens":1}}`)) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New( + anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), + anthropic.WithModel(model), + ) + require.NoError(t, err) + + messages := []llms.MessageContent{{ + Role: llms.ChatMessageTypeHuman, + Parts: []llms.ContentPart{llms.TextPart("hi")}, + }} + resp, err := llm.GenerateContent(t.Context(), messages, callOpts...) + require.NoError(t, err) + var sent map[string]any + require.NoError(t, json.Unmarshal(body, &sent)) + return resp, sent +} + +func warningsByOption(warnings []llms.Warning) map[string]llms.Warning { + byOption := make(map[string]llms.Warning, len(warnings)) + for _, w := range warnings { + byOption[w.Option] = w + } + return byOption +} + +func warningsFor(warnings []llms.Warning, option string) []llms.Warning { + var found []llms.Warning + for _, w := range warnings { + if w.Option == option { + found = append(found, w) + } + } + return found +} + +func TestThinkingTakesTheSamplingParamsAndSaysSo(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, + llms.WithReasoning(llms.ReasoningMedium, 4096), + llms.WithMaxTokens(4096), + llms.WithTemperature(0.2), + llms.WithTopP(0.9), + llms.WithTopK(40), + ) + + got := warningsByOption(resp.Warnings) + + temperature, ok := got["WithTemperature"] + require.True(t, ok, "no temperature warning in %v", resp.Warnings) + require.Equal(t, llms.WarningSubstitute, temperature.Kind) + require.Equal(t, "0.2", temperature.Asked) + require.Equal(t, "1", temperature.Sent) + + for _, option := range []string{"WithTopP", "WithTopK"} { + w, ok := got[option] + require.True(t, ok, "no %s warning in %v", option, resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Empty(t, w.Sent) + } + + require.NotContains(t, got, "WithMaxTokens", + "the answer limit fits the budget here, so nothing should be raised") +} + +func TestAnAnswerLimitRaisedForTheBudgetIsReported(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, + llms.WithReasoning(llms.ReasoningMedium, 4096), + llms.WithMaxTokens(1000), + ) + + limit, ok := warningsByOption(resp.Warnings)["WithMaxTokens"] + require.True(t, ok, "no max-tokens warning in %v", resp.Warnings) + require.Equal(t, llms.WarningClamp, limit.Kind) + require.Equal(t, "1000", limit.Asked) + require.Equal(t, "2048", limit.Sent) +} + +func TestARequestThatKeepsItsSamplingCarriesNoWarnings(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, + llms.WithTemperature(0.2), + llms.WithMaxTokens(4096), + ) + require.Empty(t, resp.Warnings) +} + +func TestOptionsThisDoorBuildsNoFieldForAreReported(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, + llms.WithMinP(0.05), llms.WithRepetitionPenalty(1.1), + llms.WithFrequencyPenalty(0.7), llms.WithPresencePenalty(0.25), + llms.WithN(3), llms.WithCandidateCount(2), + llms.WithLogProbs(true), llms.WithTopLogProbs(4), + ) + + got := warningsByOption(resp.Warnings) + for option, asked := range map[string]string{ + "WithMinP": "0.05", "WithRepetitionPenalty": "1.1", + "WithFrequencyPenalty": "0.7", "WithPresencePenalty": "0.25", + "WithN": "3", "WithCandidateCount": "2", + "WithLogProbs": "true", "WithTopLogProbs": "4", + } { + w, ok := got[option] + require.True(t, ok, "no %s warning in %v", option, resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, asked, w.Asked) + } +} + +func TestAThinkingBudgetCutToFitTheAnswerLimitIsReported(t *testing.T) { + t.Parallel() + + resp, sent := generateForModelSending(t, warningsTestModel, + llms.WithMaxTokens(4096), llms.WithReasoning(llms.ReasoningMedium, 30000)) + + var clamp *llms.Warning + for _, w := range warningsFor(resp.Warnings, "WithReasoning") { + if w.Kind == llms.WarningClamp { + clamp = &w + } + } + require.NotNil(t, clamp, "no budget clamp in %v", resp.Warnings) + require.Equal(t, "30000 tokens", clamp.Asked) + require.Equal(t, "2730 tokens", clamp.Sent) + + thinking, ok := sent["thinking"].(map[string]any) + require.True(t, ok, "no thinking on the wire: %v", sent) + require.EqualValues(t, 2730, thinking["budget_tokens"], "the warning reports the budget the request carries") +} + +func TestAThinkingMechanismTheModelDoesNotOfferIsReported(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, llms.WithAdaptiveReasoning(llms.ReasoningHigh)) + + w, ok := warningsByOption(resp.Warnings)["WithAdaptiveReasoning"] + require.True(t, ok, "no mechanism warning in %v", resp.Warnings) + require.Equal(t, llms.WarningSubstitute, w.Kind) + require.Equal(t, "adaptive", w.Asked) + require.Equal(t, "enabled", w.Sent) +} + +func TestAskingForWhatTheDoorAlreadyDoesIsNotALoss(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, + llms.WithMaxTokens(4096), + llms.WithLogProbs(false), llms.WithN(1), llms.WithCandidateCount(1), + llms.WithTopLogProbs(0), llms.WithFrequencyPenalty(0), + ) + + require.Empty(t, resp.Warnings, + "a single choice with no logprobs and no penalty is what the door sends anyway") +} + +func TestAnEffortLoweredToWhatTheModelTakesIsReported(t *testing.T) { + t.Parallel() + + resp := generateForModel(t, "claude-sonnet-4-6", + llms.WithMaxTokens(8192), llms.WithAdaptiveReasoning(llms.ReasoningXHigh)) + + w, ok := warningsByOption(resp.Warnings)["WithReasoning"] + require.True(t, ok, "no reasoning warning in %v", resp.Warnings) + require.Equal(t, llms.WarningClamp, w.Kind) + require.Equal(t, "xhigh", w.Asked) + require.Equal(t, "high", w.Sent) +} + +func TestAskingForJSONOnADoorThatSendsNoneIsReported(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, llms.WithJSONMode()) + + w, ok := warningsByOption(resp.Warnings)["WithJSONMode"] + require.True(t, ok, "no json-mode warning in %v", resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, "true", w.Asked) +} + +func TestExtraBodyThisDoorCannotMergeIsReported(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, llms.WithExtraBody(map[string]any{"enable_thinking": false, "chat_template_kwargs": map[string]any{}})) + + w, ok := warningsByOption(resp.Warnings)["WithExtraBody"] + require.True(t, ok, "no extra-body warning in %v", resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, "chat_template_kwargs, enable_thinking", w.Asked) +} diff --git a/llms/anthropic/structured_output_warning_test.go b/llms/anthropic/structured_output_warning_test.go new file mode 100644 index 000000000..b65f5d0ee --- /dev/null +++ b/llms/anthropic/structured_output_warning_test.go @@ -0,0 +1,47 @@ +package anthropic_test + +import ( + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/anthropic" +) + +func TestASchemaThatReachesTheAnthropicWireIsNotReportedAsLost(t *testing.T) { + t.Parallel() + + const schema = `{"type":"object","properties":{"answer":{"type":"string"}},` + + `"required":["answer"],"additionalProperties":false}` + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"m","type":"message","role":"assistant",`+ + `"model":"claude-sonnet-4-5","content":[{"type":"text","text":"{\"answer\":\"ok\"}"}],`+ + `"stop_reason":"end_turn","usage":{"input_tokens":1,"output_tokens":1}}`) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New( + anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), + anthropic.WithModel("claude-sonnet-4-5"), + ) + require.NoError(t, err) + + resp, err := llm.GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStructuredOutput(llms.StructuredOutputConfig{ + Name: "s", Schema: json.RawMessage(schema), + })) + require.NoError(t, err) + + require.NotContains(t, warningsByOption(resp.Warnings), "WithJSONMode", + "the schema reached the wire: %v", resp.Warnings) +} diff --git a/llms/anthropic/thinking_blocks_test.go b/llms/anthropic/thinking_blocks_test.go new file mode 100644 index 000000000..95c4774e5 --- /dev/null +++ b/llms/anthropic/thinking_blocks_test.go @@ -0,0 +1,241 @@ +package anthropic_test + +import ( + "context" + "encoding/json" + "fmt" + "io" + "net/http" + "net/http/httptest" + "strings" + "sync" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/anthropic" + "github.com/vxcontrol/langchaingo/llms/reasoning" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +type cannedMessages struct { + mu sync.Mutex + responses []string + requests [][]byte +} + +func (c *cannedMessages) serve(t *testing.T) *anthropic.LLM { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + body, _ := io.ReadAll(r.Body) + c.mu.Lock() + c.requests = append(c.requests, body) + answer := c.responses[min(len(c.requests), len(c.responses))-1] + c.mu.Unlock() + if strings.HasPrefix(answer, "event:") { + w.Header().Set("Content-Type", "text/event-stream") + } else { + w.Header().Set("Content-Type", "application/json") + } + _, _ = io.WriteString(w, answer) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New(anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), anthropic.WithModel("claude-fable-5-1")) + require.NoError(t, err) + return llm +} + +func (c *cannedMessages) assistantContent(t *testing.T, request int) []map[string]any { + t.Helper() + + var payload struct { + Messages []struct { + Role string `json:"role"` + Content []map[string]any `json:"content"` + } `json:"messages"` + } + require.NoError(t, json.Unmarshal(c.requests[request], &payload)) + for _, m := range payload.Messages { + if m.Role == "assistant" { + return m.Content + } + } + t.Fatalf("request %d carries no assistant turn", request) + return nil +} + +func messageWith(content string) string { + return `{"id":"msg_1","type":"message","role":"assistant","model":"claude-fable-5-1",` + + `"content":[` + content + `],"stop_reason":"tool_use","usage":{"input_tokens":1,"output_tokens":1}}` +} + +func thinkingJSON(text, signature string) string { + return fmt.Sprintf(`{"type":"thinking","thinking":%q,"signature":%q}`, text, signature) +} + +func toolUseJSON(id string) string { + return fmt.Sprintf(`{"type":"tool_use","id":%q,"name":"lookup","input":{"q":%q}}`, id, id) +} + +func askWithTool(t *testing.T, llm *anthropic.LLM, opts ...llms.CallOption) *llms.ContentChoice { + t.Helper() + + resp, err := llm.GenerateContent(context.Background(), []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "look it up"), + }, append(opts, llms.WithMaxTokens(64), llms.WithTools([]llms.Tool{lookupTool()}))...) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + return resp.Choices[0] +} + +func lookupTool() llms.Tool { + return llms.Tool{Type: "function", Function: &llms.FunctionDefinition{ + Name: "lookup", + Parameters: map[string]any{"type": "object", "properties": map[string]any{"q": map[string]any{"type": "string"}}}, + }} +} + +// replayTurn mirrors the turn pentagi builds from a choice: one text part +// carrying the reasoning, then the tool calls. +func replayTurn(t *testing.T, llm *anthropic.LLM, choice *llms.ContentChoice) { + t.Helper() + + turn := make([]llms.ContentPart, 0, 1+len(choice.ToolCalls)) + turn = append(turn, llms.TextPartWithReasoning(choice.Content, choice.Reasoning)) + results := make([]llms.ContentPart, 0, len(choice.ToolCalls)) + for _, call := range choice.ToolCalls { + turn = append(turn, call) + results = append(results, llms.ToolCallResponse{ToolCallID: call.ID, Name: call.FunctionCall.Name, Content: "done"}) + } + _, err := llm.GenerateContent(context.Background(), []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "look it up"), + {Role: llms.ChatMessageTypeAI, Parts: turn}, + {Role: llms.ChatMessageTypeTool, Parts: results}, + }, llms.WithMaxTokens(64), llms.WithTools([]llms.Tool{lookupTool()})) + require.NoError(t, err) +} + +func TestEveryThinkingBlockOfAResponseKeepsItsSignature(t *testing.T) { + t.Parallel() + + canned := &cannedMessages{responses: []string{messageWith( + thinkingJSON("", "sig-reasoning") + "," + thinkingJSON("checking the index", "sig-update") + "," + toolUseJSON("A"), + )}} + choice := askWithTool(t, canned.serve(t)) + + assert.Equal(t, []reasoning.Block{ + {Signature: []byte("sig-reasoning")}, + {Text: "checking the index", Signature: []byte("sig-update")}, + }, choice.Reasoning.Sequence()) + assert.Equal(t, "checking the index", choice.Reasoning.Content) + assert.Empty(t, choice.Reasoning.Signature, "no single signature covers two blocks") +} + +func TestAThinkingBlockBetweenToolCallsKnowsItsPlace(t *testing.T) { + t.Parallel() + + canned := &cannedMessages{responses: []string{messageWith( + thinkingJSON("plan", "s1") + "," + toolUseJSON("A") + "," + + thinkingJSON("next", "s2") + "," + `{"type":"redacted_thinking","data":"opaque"}` + "," + toolUseJSON("B"), + )}} + choice := askWithTool(t, canned.serve(t)) + + assert.Equal(t, []reasoning.Block{ + {Text: "plan", Signature: []byte("s1")}, + {Text: "next", Signature: []byte("s2"), AfterToolCalls: 1}, + {Redacted: []byte("opaque"), AfterToolCalls: 1}, + }, choice.Reasoning.Sequence()) +} + +func TestAStreamedResponseKeepsEachBlockWithItsOwnSignature(t *testing.T) { + t.Parallel() + + event := func(name, data string) string { return "event: " + name + "\ndata: " + data + "\n\n" } + stream := event("message_start", `{"type":"message_start","message":{"id":"msg_1","type":"message","role":"assistant",`+ + `"model":"claude-fable-5-1","content":[],"stop_reason":null,"usage":{"input_tokens":1,"output_tokens":1}}}`) + + event("content_block_start", `{"type":"content_block_start","index":0,"content_block":{"type":"thinking","thinking":""}}`) + + event("content_block_delta", `{"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":"first "}}`) + + event("content_block_delta", `{"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":"thought"}}`) + + event("content_block_delta", `{"type":"content_block_delta","index":0,"delta":{"type":"signature_delta","signature":"s1"}}`) + + event("content_block_stop", `{"type":"content_block_stop","index":0}`) + + event("content_block_start", `{"type":"content_block_start","index":1,"content_block":{"type":"thinking","thinking":""}}`) + + event("content_block_delta", `{"type":"content_block_delta","index":1,"delta":{"type":"thinking_delta","thinking":"second"}}`) + + event("content_block_delta", `{"type":"content_block_delta","index":1,"delta":{"type":"signature_delta","signature":"s2"}}`) + + event("content_block_stop", `{"type":"content_block_stop","index":1}`) + + event("content_block_start", `{"type":"content_block_start","index":2,"content_block":{"type":"tool_use","id":"A","name":"lookup","input":{}}}`) + + event("content_block_delta", `{"type":"content_block_delta","index":2,"delta":{"type":"input_json_delta","partial_json":"{\"q\":\"A\"}"}}`) + + event("content_block_stop", `{"type":"content_block_stop","index":2}`) + + event("message_delta", `{"type":"message_delta","delta":{"stop_reason":"tool_use"},"usage":{"output_tokens":9}}`) + + event("message_stop", `{"type":"message_stop"}`) + + canned := &cannedMessages{responses: []string{stream}} + choice := askWithTool(t, canned.serve(t), + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + + assert.Equal(t, []reasoning.Block{ + {Text: "first thought", Signature: []byte("s1")}, + {Text: "second", Signature: []byte("s2")}, + }, choice.Reasoning.Sequence()) +} + +func TestAReplayedTurnGoesBackAsTheVendorSentIt(t *testing.T) { + t.Parallel() + + for name, original := range map[string][]string{ + "reasoning and a progress update before one call": { + thinkingJSON("", "sig-reasoning"), thinkingJSON("checking the index", "sig-update"), toolUseJSON("A"), + }, + "an update before each of two calls": { + thinkingJSON("plan", "s1"), toolUseJSON("A"), thinkingJSON("", "s2"), toolUseJSON("B"), + }, + "an update cut off after the last call": { + thinkingJSON("plan", "s1"), toolUseJSON("A"), thinkingJSON("", "s2"), + }, + "an encrypted block between signed ones": { + thinkingJSON("a", "s1"), `{"type":"redacted_thinking","data":"opaque"}`, thinkingJSON("b", "s2"), toolUseJSON("A"), + }, + } { + t.Run(name, func(t *testing.T) { + t.Parallel() + + canned := &cannedMessages{responses: []string{messageWith(strings.Join(original, ",")), messageWith(`{"type":"text","text":"ok"}`)}} + llm := canned.serve(t) + replayTurn(t, llm, askWithTool(t, llm)) + + var want []map[string]any + require.NoError(t, json.Unmarshal([]byte("["+strings.Join(original, ",")+"]"), &want)) + assert.Equal(t, want, canned.assistantContent(t, 1)) + }) + } +} + +func TestTheTurnOpensWithItsReasoningWhateverThePartOrder(t *testing.T) { + t.Parallel() + + canned := &cannedMessages{responses: []string{messageWith(`{"type":"text","text":"ok"}`)}} + thought := reasoning.FromBlocks([]reasoning.Block{ + {Text: "plan", Signature: []byte("s1")}, + {Signature: []byte("s2"), AfterToolCalls: 1}, + }) + _, err := canned.serve(t).GenerateContent(context.Background(), []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "look it up"), + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.ToolCall{ID: "A", Type: "function", FunctionCall: &llms.FunctionCall{Name: "lookup", Arguments: `{"q":"A"}`}}, + llms.TextPartWithReasoning("working", thought), + }}, + {Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{ + llms.ToolCallResponse{ToolCallID: "A", Name: "lookup", Content: "done"}, + }}, + }, llms.WithMaxTokens(64), llms.WithTools([]llms.Tool{lookupTool()})) + require.NoError(t, err) + + var want []map[string]any + require.NoError(t, json.Unmarshal([]byte("["+thinkingJSON("plan", "s1")+","+toolUseJSON("A")+","+ + thinkingJSON("", "s2")+`,{"type":"text","text":"working"}]`), &want)) + assert.Equal(t, want, canned.assistantContent(t, 0)) +} diff --git a/llms/anthropic/thinking_top_p_wire_test.go b/llms/anthropic/thinking_top_p_wire_test.go new file mode 100644 index 000000000..bf1715907 --- /dev/null +++ b/llms/anthropic/thinking_top_p_wire_test.go @@ -0,0 +1,63 @@ +package anthropic_test + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/vxcontrol/langchaingo/llms" +) + +func TestThinkingKeepsTopPAboveTheFloor(t *testing.T) { + t.Parallel() + + budget := func(extra ...llms.CallOption) []llms.CallOption { + return append([]llms.CallOption{ + llms.WithReasoning(llms.ReasoningNone, 1024), llms.WithMaxTokens(4096), + }, extra...) + } + adaptive := func(extra ...llms.CallOption) []llms.CallOption { + return append([]llms.CallOption{ + llms.WithReasoning(llms.ReasoningHigh, 0), llms.WithMaxTokens(4096), + }, extra...) + } + + for _, tc := range []struct { + name string + model string + opts []llms.CallOption + wantTopP any + wantTemp any + }{ + {"budget: top_p above the floor displaces the pinned temperature", "claude-sonnet-4-5", + budget(llms.WithTopP(0.97)), 0.97, nil}, + {"budget: exactly at the floor", "claude-sonnet-4-5", + budget(llms.WithTopP(0.95)), 0.95, nil}, + {"budget: below the floor is stripped, temperature stays", "claude-sonnet-4-5", + budget(llms.WithTopP(0.5)), nil, 1.0}, + {"budget: caller set both — temperature wins", "claude-sonnet-4-5", + budget(llms.WithTopP(0.97), llms.WithTemperature(0.3)), nil, 1.0}, + {"budget: without top_p the pinned temperature stays", "claude-sonnet-4-5", + budget(), nil, 1.0}, + {"4.6 on the budget path: top_p above the floor reaches the wire", "claude-opus-4-6", + adaptive(llms.WithTopP(0.97)), 0.97, nil}, + {"4.6 on the budget path: below the floor is stripped", "claude-opus-4-6", + adaptive(llms.WithTopP(0.5)), nil, 1.0}, + {"model without sampling gets neither", "claude-sonnet-5", + adaptive(llms.WithTopP(0.97)), nil, nil}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + body, _ := captureMessagesRequestModel(t, tc.model, tc.opts...) + if tc.wantTopP == nil { + assert.NotContains(t, body, "top_p") + } else { + assert.Equal(t, tc.wantTopP, body["top_p"]) + } + if tc.wantTemp == nil { + assert.NotContains(t, body, "temperature") + } else { + assert.Equal(t, tc.wantTemp, body["temperature"]) + } + }) + } +} diff --git a/llms/anthropic/tool_args_precision_test.go b/llms/anthropic/tool_args_precision_test.go new file mode 100644 index 000000000..405e537d4 --- /dev/null +++ b/llms/anthropic/tool_args_precision_test.go @@ -0,0 +1,128 @@ +package anthropic_test + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/anthropic" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +const bigToolArgument = "10000000000000001" + +func TestAnAnsweredToolCallKeepsEveryDigitTheVendorSent(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"msg_test","type":"message","role":"assistant",`+ + `"model":"claude-opus-4-6","content":[`+ + `{"type":"tool_use","id":"toolu_1","name":"charge",`+ + `"input":{"account":`+bigToolArgument+`}}],`+ + `"stop_reason":"tool_use","usage":{"input_tokens":1,"output_tokens":1}}`) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New(anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), anthropic.WithModel("claude-opus-4-6")) + require.NoError(t, err) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "charge that account")}, + llms.WithMaxTokens(64)) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + require.Len(t, resp.Choices[0].ToolCalls, 1) + + assert.Contains(t, resp.Choices[0].ToolCalls[0].FunctionCall.Arguments, bigToolArgument) +} + +func TestAReplayedToolCallCarriesTheSameDigitsBack(t *testing.T) { + t.Parallel() + + var body []byte + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + body, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"msg_test","type":"message","role":"assistant",`+ + `"model":"claude-opus-4-6","content":[{"type":"text","text":"done"}],`+ + `"stop_reason":"end_turn","usage":{"input_tokens":1,"output_tokens":1}}`) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New(anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), anthropic.WithModel("claude-opus-4-6")) + require.NoError(t, err) + + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "charge that account"), + { + Role: llms.ChatMessageTypeAI, + Parts: []llms.ContentPart{llms.ToolCall{ + ID: "toolu_1", + Type: "function", + FunctionCall: &llms.FunctionCall{ + Name: "charge", + Arguments: `{"account":` + bigToolArgument + `}`, + }, + }}, + }, + llms.TextParts(llms.ChatMessageTypeHuman, "did it go through?"), + }, llms.WithMaxTokens(64)) + require.NoError(t, err) + + assert.Contains(t, string(body), bigToolArgument) +} + +func TestAStreamedToolCallKeepsTheDigitsItsDeltasSpelledOut(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "text/event-stream") + _, _ = io.WriteString(w, "event: message_start\ndata: {\"type\":\"message_start\",\"message\":"+ + "{\"id\":\"msg_1\",\"type\":\"message\",\"role\":\"assistant\",\"model\":\"claude-opus-4-6\","+ + "\"content\":[],\"stop_reason\":null,\"usage\":{\"input_tokens\":1,\"output_tokens\":1}}}\n\n") + _, _ = io.WriteString(w, "event: content_block_start\ndata: {\"type\":\"content_block_start\","+ + "\"index\":0,\"content_block\":{\"type\":\"tool_use\",\"id\":\"toolu_1\","+ + "\"name\":\"charge\",\"input\":{}}}\n\n") + _, _ = io.WriteString(w, "event: content_block_delta\ndata: {\"type\":\"content_block_delta\","+ + "\"index\":0,\"delta\":{\"type\":\"input_json_delta\","+ + "\"partial_json\":\"{\\\"account\\\":"+bigToolArgument+"}\"}}\n\n") + _, _ = io.WriteString(w, "event: content_block_stop\ndata: {\"type\":\"content_block_stop\",\"index\":0}\n\n") + _, _ = io.WriteString(w, "event: message_delta\ndata: {\"type\":\"message_delta\","+ + "\"delta\":{\"stop_reason\":\"tool_use\"},\"usage\":{\"output_tokens\":9}}\n\n") + _, _ = io.WriteString(w, "event: message_stop\ndata: {\"type\":\"message_stop\"}\n\n") + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New(anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), anthropic.WithModel("claude-opus-4-6")) + require.NoError(t, err) + + var streamed []string + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "charge that account")}, + llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.ToolCall.Arguments != "" { + streamed = append(streamed, chunk.ToolCall.Arguments) + } + return nil + })) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + require.Len(t, resp.Choices[0].ToolCalls, 1) + + assert.Contains(t, resp.Choices[0].ToolCalls[0].FunctionCall.Arguments, bigToolArgument) + require.NotEmpty(t, streamed, "the door must hand the caller the call it assembled") + assert.Contains(t, streamed[len(streamed)-1], bigToolArgument) +} diff --git a/llms/anthropic/tool_choice_wire_test.go b/llms/anthropic/tool_choice_wire_test.go new file mode 100644 index 000000000..f526b7713 --- /dev/null +++ b/llms/anthropic/tool_choice_wire_test.go @@ -0,0 +1,193 @@ +package anthropic_test + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/anthropic" +) + +func TestToolChoiceReachesTheWireInTheMessagesSpelling(t *testing.T) { + t.Parallel() + + tool := llms.Tool{ + Type: "function", + Function: &llms.FunctionDefinition{ + Name: "get_weather", + Description: "weather", + Parameters: map[string]any{"type": "object", "properties": map[string]any{}}, + }, + } + + for _, tc := range []struct { + name string + choice any + want map[string]any + }{ + { + "named in the Anthropic spelling", + llms.ToolChoice{Type: "tool", Function: &llms.FunctionReference{Name: "get_weather"}}, + map[string]any{"type": "tool", "name": "get_weather"}, + }, + { + "named as a raw map", + map[string]any{"type": "tool", "name": "get_weather"}, + map[string]any{"type": "tool", "name": "get_weather"}, + }, + { + "named in the OpenAI spelling", + llms.ToolChoice{Type: "function", Function: &llms.FunctionReference{Name: "get_weather"}}, + map[string]any{"type": "tool", "name": "get_weather"}, + }, + { + "any tool", + llms.ToolChoice{Type: "any"}, + map[string]any{"type": "any"}, + }, + { + "required, the OpenAI spelling of any tool", + "required", + map[string]any{"type": "any"}, + }, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + payload, _ := captureMessagesRequest(t, + llms.WithTools([]llms.Tool{tool}), + llms.WithToolChoice(tc.choice), + llms.WithMaxTokens(64)) + + assert.Equal(t, tc.want, payload["tool_choice"]) + }) + } + + for _, tc := range []struct { + name string + choice any + want map[string]any + }{ + {"auto as a raw map", map[string]any{"type": "auto"}, map[string]any{"type": "auto"}}, + {"auto as a bare string", "auto", map[string]any{"type": "auto"}}, + {"auto as a struct", llms.ToolChoice{Type: "auto"}, map[string]any{"type": "auto"}}, + {"none as a bare string", "none", map[string]any{"type": "none"}}, + {"none as a struct", llms.ToolChoice{Type: "none"}, map[string]any{"type": "none"}}, + } { + t.Run("a choice the model owns reaches the wire as an object: "+tc.name, func(t *testing.T) { + t.Parallel() + + payload, _ := captureMessagesRequest(t, + llms.WithTools([]llms.Tool{tool}), + llms.WithToolChoice(tc.choice), + llms.WithMaxTokens(64)) + + assert.Equal(t, tc.want, payload["tool_choice"]) + }) + } + + t.Run("no choice sends no field", func(t *testing.T) { + t.Parallel() + + payload, _ := captureMessagesRequest(t, + llms.WithTools([]llms.Tool{tool}), llms.WithMaxTokens(64)) + + _, present := payload["tool_choice"] + assert.False(t, present) + }) +} + +func TestAFinishedTurnWithNoBlockIsAnAnswer(t *testing.T) { + t.Parallel() + + tool := llms.Tool{ + Type: "function", + Function: &llms.FunctionDefinition{ + Name: "get_weather", + Description: "weather", + Parameters: map[string]any{"type": "object", "properties": map[string]any{}}, + }, + } + + answer := func(t *testing.T, body string) (*llms.ContentResponse, error) { + t.Helper() + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, body) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New(anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), anthropic.WithModel("claude-haiku-4-5")) + require.NoError(t, err) + + return llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithTools([]llms.Tool{tool}), + llms.WithToolChoice("none"), + llms.WithMaxTokens(512)) + } + + t.Run("no block but a stop reason answers", func(t *testing.T) { + t.Parallel() + + resp, err := answer(t, `{"id":"msg_1","type":"message","role":"assistant", + "model":"claude-haiku-4-5","content":[],"stop_reason":"end_turn", + "usage":{"input_tokens":550,"output_tokens":9}}`) + + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + assert.Empty(t, resp.Choices[0].Content) + assert.Equal(t, "end_turn", resp.Choices[0].StopReason) + assert.Equal(t, 9, resp.Choices[0].GenerationInfo["CompletionTokens"]) + }) + + t.Run("no block and no stop reason is still empty", func(t *testing.T) { + t.Parallel() + + _, err := answer(t, `{"id":"msg_2","type":"message","role":"assistant", + "model":"claude-haiku-4-5","content":[],"stop_reason":"", + "usage":{"input_tokens":1,"output_tokens":0}}`) + + require.ErrorIs(t, err, anthropic.ErrEmptyResponse) + }) +} + +func TestFableTakesAForcedToolChoiceWithoutThinking(t *testing.T) { + t.Parallel() + + const reply = `{"id":"x","type":"message","role":"assistant","model":"m",` + + `"content":[{"type":"text","text":"ok"}],"stop_reason":"end_turn",` + + `"usage":{"input_tokens":1,"output_tokens":1}}` + + var sent string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + sent = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, reply) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New(anthropic.WithToken("test"), anthropic.WithBaseURL(srv.URL), + anthropic.WithModel("claude-fable-5")) + require.NoError(t, err) + + tool := llms.Tool{Type: "function", Function: &llms.FunctionDefinition{ + Name: "calc", Description: "multiply", + Parameters: map[string]any{"type": "object", "properties": map[string]any{}}, + }} + + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "17*23?")}, + llms.WithTools([]llms.Tool{tool}), llms.WithToolChoice("any")) + require.NoError(t, err, "the vendor answers 200 with a tool call for any, auto and a named "+ + "tool on this model, so a local refusal would take away working behaviour") + assert.Contains(t, sent, `"tool_choice":{"type":"any"}`) +} diff --git a/llms/anthropic/tool_results_test.go b/llms/anthropic/tool_results_test.go new file mode 100644 index 000000000..bac7ef10b --- /dev/null +++ b/llms/anthropic/tool_results_test.go @@ -0,0 +1,65 @@ +package anthropic_test + +import ( + "context" + "encoding/json" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/anthropic" +) + +func TestEveryToolResultOfOneMessageReachesTheVendor(t *testing.T) { + t.Parallel() + + canned := &cannedMessages{responses: []string{messageWith(`{"type":"text","text":"ok"}`)}} + _, err := canned.serve(t).GenerateContent(context.Background(), []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "look both up"), + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.ToolCall{ID: "a", Type: "function", FunctionCall: &llms.FunctionCall{Name: "lookup", Arguments: "{}"}}, + llms.ToolCall{ID: "b", Type: "function", FunctionCall: &llms.FunctionCall{Name: "lookup", Arguments: "{}"}}, + }}, + {Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{ + llms.ToolCallResponse{ToolCallID: "a", Name: "lookup", Content: "1"}, + llms.ToolCallResponse{ToolCallID: "b", Name: "lookup", Content: "2"}, + }}, + }, llms.WithTools([]llms.Tool{lookupTool()})) + require.NoError(t, err) + + var payload struct { + Messages []struct { + Role string `json:"role"` + Content []map[string]any `json:"content"` + } `json:"messages"` + } + require.NoError(t, json.Unmarshal(canned.requests[0], &payload)) + last := payload.Messages[len(payload.Messages)-1] + ids := make([]any, 0, len(last.Content)) + for _, block := range last.Content { + ids = append(ids, block["tool_use_id"]) + } + assert.Equal(t, "user", last.Role) + assert.Equal(t, []any{"a", "b"}, ids) +} + +func TestAToolMessageWithANonResultPartIsRefusedBeforeTheRequest(t *testing.T) { + t.Parallel() + + canned := &cannedMessages{responses: []string{messageWith(`{"type":"text","text":"ok"}`)}} + _, err := canned.serve(t).GenerateContent(context.Background(), []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "look it up"), + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.ToolCall{ID: "a", Type: "function", FunctionCall: &llms.FunctionCall{Name: "lookup", Arguments: "{}"}}, + }}, + {Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{ + llms.ToolCallResponse{ToolCallID: "a", Name: "lookup", Content: "1"}, + llms.TextContent{Text: "note for the model"}, + }}, + }, llms.WithTools([]llms.Tool{lookupTool()})) + + require.ErrorIs(t, err, anthropic.ErrInvalidContentType) + assert.Empty(t, canned.requests, "the refusal comes before the request") +} diff --git a/llms/anthropic/truncation_partial_test.go b/llms/anthropic/truncation_partial_test.go new file mode 100644 index 000000000..05a719d3d --- /dev/null +++ b/llms/anthropic/truncation_partial_test.go @@ -0,0 +1,73 @@ +package anthropic_test + +import ( + "context" + "errors" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/anthropic" + "github.com/vxcontrol/langchaingo/llms/streaming" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +const truncatedThenBroken = deliveredThenBroken + `event: message_delta +data: {"type":"message_delta","delta":{"stop_reason":"max_tokens"},"usage":{"output_tokens":4}} + +event: error +data: {"type":"error","error":{"type":"overloaded_error","message":"overloaded"}} +` + +func truncatedStreamThenError(t *testing.T, call ...llms.CallOption) (*llms.ContentResponse, error) { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "text/event-stream") + _, _ = io.WriteString(w, truncatedThenBroken) + })) + t.Cleanup(srv.Close) + + llm, err := anthropic.New(anthropic.WithToken("test-key"), + anthropic.WithBaseURL(srv.URL), anthropic.WithModel("claude-haiku-4-5")) + require.NoError(t, err) + + options := append([]llms.CallOption{ + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil }), + }, call...) + + return llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, + options...) +} + +func TestAPartialAnswerStillAnswersTheTruncationQuestion(t *testing.T) { + t.Parallel() + + resp, err := truncatedStreamThenError(t, llms.WithFailOnTruncation()) + + require.Error(t, err) + require.NotNil(t, resp, "the text already delivered must travel with the error") + + var apiErr *llms.Error + require.True(t, errors.As(err, &apiErr), "the truncation error is reachable: %v", err) + assert.Equal(t, llms.ErrCodeTruncated, apiErr.Code) + assert.Contains(t, err.Error(), "overloaded", "the vendor error is kept alongside it") +} + +func TestAPartialAnswerIsSilentWhenTruncationWasNotAsked(t *testing.T) { + t.Parallel() + + _, err := truncatedStreamThenError(t) + + require.Error(t, err) + var apiErr *llms.Error + if errors.As(err, &apiErr) { + assert.NotEqual(t, llms.ErrCodeTruncated, apiErr.Code) + } +} diff --git a/llms/anthropic/truncation_test.go b/llms/anthropic/truncation_test.go new file mode 100644 index 000000000..94c63a86e --- /dev/null +++ b/llms/anthropic/truncation_test.go @@ -0,0 +1,146 @@ +package anthropic + +import ( + "context" + "fmt" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/vxcontrol/langchaingo/llms" +) + +func truncationLLM(t *testing.T, stopReason string) *LLM { + t.Helper() + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = fmt.Fprintf(w, `{"id":"x","type":"message","role":"assistant","model":"claude-3-5-sonnet-latest", + "content":[{"type":"text","text":"half an ans"}],"stop_reason":%q, + "usage":{"input_tokens":1,"output_tokens":1}}`, stopReason) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithBaseURL(srv.URL), WithToken("unit-test-token"), WithModel("claude-3-5-sonnet-latest")) + if err != nil { + t.Fatalf("New: %v", err) + } + return llm +} + +func TestTruncationIsDerivedWithoutRewritingStopReason(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + stopReason string + wantTruncated bool + }{ + {"out of budget", "max_tokens", true}, + {"finished on its own", "end_turn", false}, + {"hit a stop sequence", "stop_sequence", false}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + llm := truncationLLM(t, tc.stopReason) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + if err != nil { + t.Fatalf("GenerateContent: %v", err) + } + if got := resp.Choices[0].Truncated; got != tc.wantTruncated { + t.Fatalf("Truncated = %v, want %v", got, tc.wantTruncated) + } + if got := resp.Choices[0].StopReason; got != tc.stopReason { + t.Fatalf("StopReason = %q, want the vendor's own %q", got, tc.stopReason) + } + }) + } +} + +func TestFailOnTruncationKeepsThePartialAnswer(t *testing.T) { + t.Parallel() + + llm := truncationLLM(t, "max_tokens") + msgs := []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")} + + resp, err := llm.GenerateContent(context.Background(), msgs, llms.WithFailOnTruncation()) + if err == nil { + t.Fatal("want an error once the caller opted in") + } + if !llms.IsTruncatedError(err) { + t.Fatalf("want a truncation error, got %v", err) + } + if resp == nil || resp.Choices[0].Content != "half an ans" { + t.Fatalf("want the partial answer alongside the error, got %+v", resp) + } + + if _, err := llm.GenerateContent(context.Background(), msgs); err != nil { + t.Fatalf("without the option the same response must stay a success: %v", err) + } +} + +func legacyCompletionsLLM(t *testing.T, stopReason string) *LLM { + t.Helper() + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = fmt.Fprintf(w, `{"completion":"half an ans","model":"claude-2.1","stop_reason":%q}`, stopReason) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithBaseURL(srv.URL), WithToken("unit-test-token"), + WithModel("claude-2.1"), WithLegacyTextCompletionsAPI()) + if err != nil { + t.Fatalf("New: %v", err) + } + return llm +} + +func TestLegacyCompletionsReportTruncation(t *testing.T) { + t.Parallel() + + msgs := []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")} + + t.Run("the stop reason reaches the choice", func(t *testing.T) { + t.Parallel() + resp, err := legacyCompletionsLLM(t, "max_tokens").GenerateContent(context.Background(), msgs) + if err != nil { + t.Fatalf("GenerateContent: %v", err) + } + if got := resp.Choices[0].StopReason; got != "max_tokens" { + t.Errorf("StopReason = %q, want %q", got, "max_tokens") + } + if !resp.Choices[0].Truncated { + t.Error("a max_tokens stop must mark the choice truncated") + } + }) + + t.Run("finishing on its own is not truncation", func(t *testing.T) { + t.Parallel() + resp, err := legacyCompletionsLLM(t, "stop_sequence").GenerateContent(context.Background(), msgs) + if err != nil { + t.Fatalf("GenerateContent: %v", err) + } + if resp.Choices[0].Truncated { + t.Error("a stop_sequence stop must not mark the choice truncated") + } + }) + + t.Run("failing on truncation keeps the partial answer", func(t *testing.T) { + t.Parallel() + resp, err := legacyCompletionsLLM(t, "max_tokens").GenerateContent(context.Background(), msgs, + llms.WithFailOnTruncation()) + if err == nil { + t.Fatal("WithFailOnTruncation must fail on a truncated legacy completion") + } + if !llms.IsTruncatedError(err) { + t.Errorf("the error must stay recognizable as truncation, got %v", err) + } + if resp == nil || resp.Choices[0].Content != "half an ans" { + t.Errorf("the partial answer must travel with the error, got %v", resp) + } + }) +} diff --git a/llms/anthropic/unread_parity_test.go b/llms/anthropic/unread_parity_test.go new file mode 100644 index 000000000..ab54d3011 --- /dev/null +++ b/llms/anthropic/unread_parity_test.go @@ -0,0 +1,25 @@ +package anthropic_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func TestTheAnthropicDoorReportsTheOptionsItNeverReads(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, + llms.WithSeed(7), llms.WithVerbosity("low"), + llms.WithMinLength(10), llms.WithMaxLength(20), + llms.WithResponseMIMEType("application/json")) + + got := warningsByOption(resp.Warnings) + for _, option := range []string{ + "WithSeed", "WithVerbosity", "WithMinLength", "WithMaxLength", "WithResponseMIMEType", + } { + require.Contains(t, got, option, "the request has no field for it: %v", resp.Warnings) + } +} diff --git a/llms/bedrock/README.md b/llms/bedrock/README.md index c3084fc58..8c1ada230 100644 --- a/llms/bedrock/README.md +++ b/llms/bedrock/README.md @@ -46,8 +46,10 @@ graph TB **Legacy API** (InvokeModel/InvokeModelWithResponseStream): - Direct access to model-specific features - Anthropic cache_control format support -- Broader model compatibility -- **Use when**: Model not supported by Converse API +- Narrower model compatibility: seven provider families are implemented — ai21, amazon, + nova, anthropic, cohere, meta and deepseek. Any other model id answers + "unsupported provider" on this path +- **Use when**: a provider-specific field has no Converse equivalent **Converse API** (Converse/ConverseStream): - Unified interface across all models @@ -75,7 +77,7 @@ flowchart LR **Challenge**: Anthropic's prompt caching requires manual cache control wrappers on client side. -**Solution**: Automatic cache point insertion for Claude 4.x models. +**Solution**: Automatic cache point insertion for Claude 4.x and 5.x models. ```mermaid sequenceDiagram @@ -98,7 +100,9 @@ sequenceDiagram ``` **Implementation**: -- `supportsCaching()`: Pattern matching on model ID (`claude-opus-4`, `claude-sonnet-4`, `claude-haiku-4`) +- `supportsCaching()`: Pattern matching on model ID (`claude-opus-4`, `claude-sonnet-4`, + `claude-haiku-4`, `claude-opus-5`, `claude-sonnet-5`, `claude-haiku-5`, `claude-fable-5`, + `claude-mythos-5`) - `applyAutomaticCaching()`: Adds `CacheControl{Type: "ephemeral", TTL: "5m"}` to last cacheable message (assistant or tool response) - **Why last message?** Caches conversation history before new user input - **TTL Options**: 5 minutes (default) or 1 hour (configurable via `EphemeralCacheOneHour()`) @@ -186,14 +190,31 @@ if err != nil { ### Models Supporting Reasoning -**Converse API**: -- Claude: Fable 5, Opus 5/4.8/4.7/4.6/4.5, Sonnet 5/4.6/4.5, Haiku 4.5 -- DeepSeek R1 -- OpenAI GPT OSS (120B, 20B) -- Moonshot Kimi K2-Thinking +A reasoning request only reaches the wire for families that have a thinking +configuration on this platform. The rest carry nothing. + +**Converse API** — a thinking configuration is sent for: +- Claude: Fable 5, Opus 5/4.8/4.7/4.6/4.5, Sonnet 5/4.6/4.5, Haiku 4.5 — `thinking` + in `additionalModelRequestFields`, adaptive or budget (see below) +- Amazon Nova 2 Lite — `reasoningConfig` in `additionalModelRequestFields`. + Nova 2 Pro, Micro and Sonic do not get it +- xAI Grok 4.x — `reasoning.effort` in `additionalModelRequestFields` +- OpenAI GPT OSS 120B and 20B — `reasoning_effort` in `additionalModelRequestFields` + +**Legacy API** (InvokeModel) — a thinking configuration is sent for: +- Claude: Fable 5, Opus 5/4.8/4.7/4.6/4.5, Sonnet 5/4.6/4.5, Haiku 4.5 — `thinking` in the + Anthropic body +- Amazon Nova 2 Lite — `reasoningConfig` inside `inferenceConfig` + +**Reasoning models that take no configuration here**: Moonshot Kimi K2-Thinking, +MiniMax M2/M2.1/M2.5, DeepSeek R1, NVIDIA Nemotron 3 Super, Qwen3 32B, Magistral +Small. AWS documents no reasoning field for them, so a `WithReasoning` call on them +changes nothing on the wire. -**Legacy API** (InvokeModel): -- Claude: Opus 5/4.8/4.7/4.6/4.5, Sonnet 5/4.6/4.5, Haiku 4.5 +**Z-AI GLM 4.7/4.7 Flash/5** are not reasoning models here: their AWS model cards +document neither reasoning nor a field that controls it, `ReasoningSupportFor` +reports them as not reasoning, and a `WithReasoning` call on them changes nothing +on the wire. **How the wire shape is resolved** @@ -202,23 +223,37 @@ thinking from the model via the shared `llms/reasoning` capability tables (the s source of truth used by the first-party Anthropic provider): - **Adaptive-only** (Opus 4.7/4.8/5, Sonnet 5, Fable 5): `thinking.type=adaptive` + - `output_config.effort`; budget thinking and sampling params are rejected. Opus 5, + `output_config.effort`; budget thinking and sampling params are rejected. Bedrock + serves `xhigh` on Opus 5 only and `max` on Opus 5, Opus 4.6 and Sonnet 4.6; a higher + effort on any other Claude model is lowered to the top level it takes, with a warning. Opus 5, Sonnet 5, and Fable 5 think by default (Opus 5 is a breaking change from Opus 4.8, - which defaults off); on Bedrock a default-on model cannot be explicitly disabled - (always-on there), while Opus 4.7/4.8 default off, so omitting thinking already - yields off. + which defaults off). `WithReasoningDisabled()` sends `thinking.type=disabled` to + Opus 5 and Sonnet 5 and no effort beside it; Fable 5 cannot be disabled. Opus 4.7/4.8 + default off, so omitting thinking already yields off. - **Adaptive + budget** (Opus 4.6, Sonnet 4.6): either mechanism; caller preference honored. - **Budget-only** (Opus 4.5, Sonnet 4.5, Haiku 4.5): `thinking.type=enabled` + - `budget_tokens`; Opus 4.5 also honors `output_config.effort`. - -Non-Claude reasoning models (DeepSeek R1, GPT OSS, Kimi K2-Thinking) use budget -thinking through the Converse API. `WithReasoningDisabled()` returns a typed -`ErrReasoningOffUnsupported` for always-on Bedrock models. + `budget_tokens`. Opus 4.6 and Sonnet 4.6 also carry `output_config.effort` on + this path; Opus 4.5 accepts it on the first-party API but rejects it here, so + this door does not send it. + +Nova 2 carries `type` plus `maxReasoningEffort` (low/medium/high) on both paths, and +its top effort clears `maxTokens`, `temperature` and `topP`, which Nova refuses +beside it. Grok carries an effort and nothing else. GPT OSS carries only +`reasoning_effort`: `low`, `medium` or `high`; `minimal` rises to `low`, `xhigh` and +`max` fall to `high`. `WithReasoningDisabled()` returns a typed +`ErrReasoningOffUnsupported` for a model whose thinking cannot be turned off, such as +Fable, Mythos, GPT OSS or DeepSeek R1. ## Structured Output The provider-neutral `llms.WithStructuredOutput` is supported on both API paths for -Anthropic models: the final response is guaranteed to be a single JSON value +the Claude models Bedrock serves it for — Opus 4.6 and 4.5, Sonnet 4.6 and 4.5, Haiku +4.5; any other Claude model returns a typed `ErrStructuredOutputUnsupported` before +the request. On the Converse API the other families get it only where their AWS model +card lists structured outputs — among them DeepSeek V3.1 and V3.2, GPT OSS, Qwen3, +Mistral Large 3, GLM, Kimi, MiniMax and Nemotron. Nova, Llama and every model whose +card is silent return the same typed error. The final response is guaranteed to be a +single JSON value matching the supplied JSON Schema (Draft 2020-12), validated locally against the original schema. @@ -240,41 +275,50 @@ resp, err := llm.GenerateContent(ctx, messages, **Requirements and behavior**: - Every object node must set `additionalProperties: false` — Bedrock rejects a schema that omits it. The SDK enforces this locally with a typed `ErrStructuredOutputConfig` before the request is sent. -- Only Anthropic models are supported on the legacy path; a non-Anthropic legacy model returns a typed unsupported-path error. Converse is not restricted to Claude — any model AWS advertises as supporting Structured Outputs works. +- Only Anthropic models are supported on the legacy path; a non-Anthropic legacy model returns a typed unsupported-path error. Converse is not restricted to Claude — a model whose AWS model card lists Structured Outputs gets it; any other returns the typed unsupported error. - Only the final normal turn (`end_turn`/`stop_sequence`) is validated; a `tool_use`/`max_tokens`/guardrail/filtered turn is not treated as final JSON. - The response `StopReason` is surfaced on `ContentChoice.StopReason` (Converse now transfers it from the response/`MessageStopEvent`). **Why these models?** -Extended thinking/reasoning capabilities are model-specific features. DeepSeek R1, OpenAI OSS, and Moonshot models provide reasoning through the Converse API, while Anthropic models support both APIs. +Extended thinking/reasoning capabilities are model-specific features. OpenAI OSS, Moonshot and MiniMax models provide reasoning through the Converse API, while Anthropic models support both APIs. ### Message Structure with Reasoning ```mermaid flowchart TB A[AI Message with Reasoning] --> B{Legacy or Converse?} - B -->|Legacy API| C[Add thinking blocks
BEFORE text content] - B -->|Converse API| D[Add ReasoningContent blocks
with signature] + B -->|Legacy API| C[thinking and redacted_thinking blocks] + B -->|Converse API| D[reasoningContent blocks] C --> E[anthropicTextGenerationInputContent array] D --> F[types.ContentBlock array] ``` **Why order matters?** -Anthropic API spec requires thinking blocks before text blocks in assistant messages. +A response can carry several reasoning blocks, each signed on its own, with encrypted +blocks among them, and the vendor wants the blocks of the last assistant turn back +unchanged and in its order. Both paths put every block back where the vendor put it: +the blocks that came before any tool call open the turn, and a block that followed a +tool call follows that call again. ### Signature Preservation -**Challenge**: Reasoning signatures must round-trip through conversations. - -**Solution**: Store in `reasoning.ContentReasoning.Signature` field, re-insert on next turn. +Every block keeps its own signature. `reasoning.ContentReasoning` carries the blocks in +`Blocks`, in the vendor's order; a reasoning made of a single unencrypted block that came +before any tool call keeps the classic `Content` and `Signature` fields instead. +`Sequence()` reads both shapes. `Content` joins +the readable text of every block for display and is not what travels back when `Blocks` +is set, so hand the reasoning back as it came: ```go -// Receive -choice.Reasoning.Signature = []byte(...) +// Receive: every block with its signature and place +for _, block := range choice.Reasoning.Sequence() { + _ = block.Signature +} // Send back -llms.TextPartWithReasoning(content, reasoning) +llms.TextPartWithReasoning(choice.Content, choice.Reasoning) ``` ## Message Processing Pipeline @@ -492,9 +536,10 @@ Tool arguments arrive in chunks: ### When to Use Legacy vs Converse API **Use Legacy API**: -- Model doesn't support Converse API - Need Anthropic-specific cache_control format - Debugging provider-specific issues +- Note that this path implements seven provider families only; Converse serves every + model in `models_list.go` **Use Converse API**: - Default for new implementations @@ -505,14 +550,19 @@ Tool arguments arrive in chunks: ### Adding Caching Support **Criteria**: -1. Model must support Anthropic prompt caching (currently only Claude 4.x) +1. Model must support Anthropic prompt caching (Claude 4.x and 5.x) 2. Add pattern to `supportsCaching()` in `bedrockllm.go`: ```go cachingPatterns := []string{ "claude-opus-4", "claude-sonnet-4", "claude-haiku-4", - "claude-new-4", // Add new model pattern + "claude-opus-5", + "claude-sonnet-5", + "claude-haiku-5", + "claude-fable-5", + "claude-mythos-5", + "claude-new-5", // Add new model pattern } ``` 3. Ensure model supports minimum 1024 tokens threshold for cache activation @@ -749,31 +799,36 @@ _(Schema-constrained structured output itself is already implemented — see the ## Supported Model Matrix -Structured Output and Caching apply to Anthropic (Claude) models. See `models_list.go` -for the exact model IDs. +Caching applies to Anthropic (Claude) models. See `models_list.go` for the exact +model IDs. | Provider | Tool Calling | Reasoning | Streaming | Multimodal | Caching | Structured Output | |----------|-------------|-----------|-----------|------------|---------|-------------------| -| Claude Fable 5 | ✅ | ✅ (always-on) | ✅ | ✅ | ✅ | ✅ | -| Claude Opus 5/4.8/4.7/4.6/4.5 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| Claude Sonnet 5/4.6/4.5 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| Claude Fable 5 | ✅ | ✅ (always-on) | ✅ | ✅ | ✅ | ❌ | +| Claude Opus 5/4.8/4.7 | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | +| Claude Opus 4.6/4.5 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| Claude Sonnet 5 | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | +| Claude Sonnet 4.6/4.5 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | Claude Haiku 4.5 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| Nova 2/Pro/Lite/Micro | ✅ | ❌ | ✅ | ✅ | ❌ | Converse native* | -| Llama 4 / 3.x | Limited | ❌ | ✅ | ✅ | ❌ | Converse native* | +| Nova 2 Lite | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | +| Nova 2 Pro/Micro | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | +| Nova Pro/Lite/Micro | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | +| Llama 4 / 3.x | Limited | ❌ | ✅ | ✅ | ❌ | ❌ | | DeepSeek V3.2 | ✅ | ❌ | ✅ | ❌ | ❌ | Converse native* | -| DeepSeek R1 | ❌ | ✅ | ✅ | ❌ | ❌ | Converse native* | +| DeepSeek R1 | ❌ | ✅ (always-on) | ✅ | ❌ | ❌ | ❌ | | OpenAI GPT (OSS) | ✅ | ✅ | ✅ | ❌ | ❌ | Converse native* | | Qwen3 | Varies** | ❌ | ✅ | Some | ❌ | Converse native* | | Mistral | ✅*** | ❌ | ✅ | Some | ❌ | Converse native* | | Moonshot Kimi | ✅**** | ✅ | ✅ | Some | ❌ | Converse native* | -| MiniMax M2/M2.1/M2.5 | ✅ | ❌ | ✅ | ❌ | ❌ | Converse native* | -| GLM-4.7/4.7-Flash/5 | ❌***** | ✅ (GLM-5) | ✅ | ❌ | ❌ | Converse native* | -| NVIDIA Nemotron 3 Super | ✅ | ✅ | ✅ | ❌ | ❌ | Converse native* | +| MiniMax M2/M2.1/M2.5 | ✅ | ✅ (always-on) | ✅ | ❌ | ❌ | Converse native* | +| GLM-4.7/4.7-Flash/5 | ❌***** | ❌ | ✅ | ❌ | ❌ | Converse native* | +| NVIDIA Nemotron 3 Super | ✅ | ❌****** | ✅ | ❌ | ❌ | Converse native* | -*Converse native: structured output is passed via AWS `OutputConfig.TextFormat`; support depends on what AWS advertises for the model at the time. The legacy InvokeModel structured-output path is implemented for Anthropic only. +*Converse native: structured output is passed via AWS `OutputConfig.TextFormat`; only for the models whose AWS model card lists Structured Outputs. The legacy InvokeModel structured-output path is implemented for Anthropic only. **Qwen3: Most models support tools, except Qwen3-VL (unstable in streaming) ***Mistral: Large 3 and Large 2402 support tools, Magistral Small 2509 does not ****Moonshot: K2.5 supports tools, K2-Thinking is unstable in streaming -*****GLM models: Backend incompatibility with Converse API tool format (requires string instead of JSON) +*****GLM models: Backend incompatibility with Converse API tool format (requires string instead of JSON) +******Nemotron 3 Super reasons on its own, but this door sends it no thinking instruction: it belongs to no family that has one on Bedrock, so `ResolveMechanism` returns none and a reasoning request on it is a no-op here. See `models_list.go` for the complete model list and detailed capabilities. diff --git a/llms/bedrock/bedrockllm.go b/llms/bedrock/bedrockllm.go index 2578fac88..0aa2317ab 100644 --- a/llms/bedrock/bedrockllm.go +++ b/llms/bedrock/bedrockllm.go @@ -2,13 +2,13 @@ package bedrock import ( "context" - "encoding/json" "errors" "fmt" "strings" "time" "github.com/vxcontrol/langchaingo/callbacks" + "github.com/vxcontrol/langchaingo/internal/toolcall" "github.com/vxcontrol/langchaingo/llms" "github.com/vxcontrol/langchaingo/llms/bedrock/internal/bedrockclient" @@ -18,6 +18,10 @@ import ( const defaultModel = ModelAnthropicClaudeHaiku45 +func decodeToolArguments(raw string) (map[string]any, error) { + return toolcall.Decode(raw) +} + // LLM is a Bedrock LLM implementation. type LLM struct { modelID string @@ -108,13 +112,32 @@ func (l *LLM) GenerateContent(ctx context.Context, messages []llms.MessageConten return nil, err } + if err := opts.ValidateReasoning(); err != nil { + return nil, err + } + + if err := checkAnthropicTurnLimits(&opts, messages); err != nil { + return nil, err + } + // Use Converse API if enabled if l.useConverseAPI { - return l.generateContentWithConverseAPI(ctx, messages, opts) + resp, err = l.generateContentWithConverseAPI(ctx, messages, opts) + } else { + resp, err = l.generateContentWithLegacyAPI(ctx, messages, opts) + } + if resp != nil { + resp.Warnings = append(resp.Warnings, unreadBedrockOptions(opts.GetModel(), l.useConverseAPI, opts)...) + } + if err != nil { + return resp, err + } + + if err = llms.CheckTruncation(resp, opts); err != nil { + return resp, err } - // Use legacy implementation - return l.generateContentWithLegacyAPI(ctx, messages, opts) + return resp, nil } // generateContentWithConverseAPI uses the unified Converse API @@ -137,6 +160,7 @@ func (l *LLM) generateContentWithConverseAPI(ctx context.Context, messages []llm ModelID: opts.GetModel(), Messages: m, Tools: opts.Tools, + ToolChoice: opts.ToolChoice, StreamingFunc: opts.StreamingFunc, ReasoningConfig: opts.Reasoning, EnableCaching: enableCaching, @@ -153,6 +177,9 @@ func (l *LLM) generateContentWithConverseAPI(ctx context.Context, messages []llm if opts.TopP != nil { input.TopP = opts.TopP } + if opts.TopK != nil { + input.TopK = opts.TopK + } if len(opts.StopWords) > 0 { input.StopSequences = opts.StopWords } @@ -232,9 +259,11 @@ func processMessagesWithCaching(messages []llms.MessageContent, autoCaching bool } var arguments map[string]any if part.FunctionCall.Arguments != "" { - if err := json.Unmarshal([]byte(part.FunctionCall.Arguments), &arguments); err != nil { + decoded, err := decodeToolArguments(part.FunctionCall.Arguments) + if err != nil { return nil, fmt.Errorf("failed to unmarshal tool call arguments: %w", err) } + arguments = decoded } bedrockMsgs = append(bedrockMsgs, bedrockclient.Message{ Role: m.Role, @@ -363,3 +392,7 @@ func (l *LLM) supportsCaching(modelID string) bool { } var _ llms.Model = (*LLM)(nil) + +func checkAnthropicTurnLimits(opts *llms.CallOptions, messages []llms.MessageContent) error { + return llms.CheckClaudeTurnLimits(opts.GetModel(), *opts, messages) +} diff --git a/llms/bedrock/bedrockllm_test.go b/llms/bedrock/bedrockllm_test.go index fe4d93677..c72c5a462 100644 --- a/llms/bedrock/bedrockllm_test.go +++ b/llms/bedrock/bedrockllm_test.go @@ -35,15 +35,40 @@ func setUpTestWithTransport(rr *httprr.RecordReplay) (*bedrockruntime.Client, er } cfg, err := config.LoadDefaultConfig(context.Background(), - config.WithHTTPClient(httpClient)) + append([]func(*config.LoadOptions) error{config.WithHTTPClient(httpClient)}, + replayCredentials(rr.Recording())...)...) if err != nil { return nil, err } - client := bedrockruntime.NewFromConfig(cfg) + client := bedrockruntime.NewFromConfig(cfg, replayClientOptions(rr.Recording())...) return client, nil } +const replayRegion = "us-east-1" + +func replayCredentials(recording bool) []func(*config.LoadOptions) error { + if recording { + return nil + } + return []func(*config.LoadOptions) error{ + config.WithRegion(replayRegion), + config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider( + "replay-access-key", "replay-secret-key", "")), + } +} + +func replayClientOptions(recording bool) []func(*bedrockruntime.Options) { + if recording { + return nil + } + return []func(*bedrockruntime.Options){signWithSigV4} +} + +func signWithSigV4(o *bedrockruntime.Options) { + o.AuthSchemePreference = []string{"sigv4"} +} + func TestAmazonOutputConverseAPI(t *testing.T) { //nolint:funlen ctx := t.Context() @@ -228,10 +253,6 @@ func TestAmazonOutputLegacyAPI(t *testing.T) { resp, err := llm.GenerateContent(ctx, msgs, llms.WithModel(model), llms.WithMaxTokens(512)) if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } t.Fatal(err) } for i, choice := range resp.Choices { @@ -706,10 +727,6 @@ func TestAmazonNova(t *testing.T) { resp, err := llm.GenerateContent(ctx, msgs, llms.WithModel(model), llms.WithMaxTokens(4096)) if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } t.Fatal(err) } for i, choice := range resp.Choices { @@ -774,10 +791,6 @@ func TestAmazonNovaImage(t *testing.T) { resp, err := llm.GenerateContent(ctx, msgs, llms.WithModel(model), llms.WithMaxTokens(4096)) if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } t.Fatal(err) } for i, choice := range resp.Choices { @@ -1131,7 +1144,7 @@ func TestAmazonReasoningConverseAPI(t *testing.T) { for _, model := range reasoningModels { t.Logf("Testing reasoning with model: %s", model) - err := testReasoningWorkflow(ctx, t, llm, model, nil) + err := testReasoningWorkflow(ctx, t, llm, model, nil, false) if err != nil { t.Errorf("Reasoning failed for model %s: %v", model, err) } @@ -1168,7 +1181,7 @@ func TestAmazonReasoningLegacyAPI(t *testing.T) { for _, model := range reasoningModels { t.Logf("Testing reasoning with model: %s", model) - err := testReasoningWorkflow(ctx, t, llm, model, nil) + err := testReasoningWorkflow(ctx, t, llm, model, nil, true) if err != nil { t.Errorf("Reasoning failed for model %s: %v", model, err) } @@ -1223,7 +1236,7 @@ func TestAmazonReasoningStreamingConverseAPI(t *testing.T) { return nil } - err := testReasoningWorkflow(ctx, t, llm, model, streamingValidator) + err := testReasoningWorkflow(ctx, t, llm, model, streamingValidator, false) if err != nil { t.Errorf("Streaming reasoning failed for model %s: %v", model, err) } @@ -1267,7 +1280,7 @@ func TestAmazonReasoningStreamingLegacyAPI(t *testing.T) { return nil } - err := testReasoningWorkflow(ctx, t, llm, model, streamingValidator) + err := testReasoningWorkflow(ctx, t, llm, model, streamingValidator, true) if err != nil { t.Errorf("Streaming reasoning failed for model %s: %v", model, err) } @@ -1280,6 +1293,7 @@ func testReasoningWorkflow( //nolint:funlen llm *bedrock.LLM, model string, streamingValidator func(reasoningChunks []string) error, + countsThinkingTokens bool, ) error { t.Logf("Testing reasoning workflow for model: %s", model) @@ -1362,6 +1376,22 @@ func testReasoningWorkflow( //nolint:funlen return fmt.Errorf("empty reasoning content") } + reasoningTokens, hasReasoningTokens := choice.GenerationInfo["ReasoningTokens"] + switch { + case countsThinkingTokens: + if got, ok := reasoningTokens.(int); !ok || got <= 0 { + return fmt.Errorf("an answer that reasoned must report ReasoningTokens as an int, got %#v", + reasoningTokens) + } + case hasReasoningTokens: + return fmt.Errorf("this door's usage carries no thinking count, so none must be invented, got %#v", + reasoningTokens) + } + if got, ok := choice.GenerationInfo["CompletionTokens"].(int); !ok || got <= 0 { + return fmt.Errorf("an answer that reasoned must report CompletionTokens as an int, got %#v", + choice.GenerationInfo["CompletionTokens"]) + } + t.Logf("Reasoning workflow completed successfully for model: %s", model) return nil } @@ -2834,6 +2864,8 @@ func TestAmazonAutomaticCachingLegacyAPI(t *testing.T) { //nolint:funlen t.Logf("Turn 2 Response: %s", resp2.Choices[0].Content) + requireUsageAddsUp(t, resp2.Choices[0].GenerationInfo) + // Turn 3: Continue conversation - automatic caching should apply messages = append(messages, llms.MessageContent{ @@ -3007,6 +3039,8 @@ func TestAmazonAutomaticCachingConverseAPI(t *testing.T) { //nolint:funlen t.Logf("Turn 2 Response: %s", resp2.Choices[0].Content) + requireUsageAddsUp(t, resp2.Choices[0].GenerationInfo) + // Turn 3: Continue conversation - automatic caching should apply messages = append(messages, llms.MessageContent{ @@ -3103,7 +3137,7 @@ func TestCreateClientWithLongLeavingCredentials(t *testing.T) { secretKey := os.Getenv("AWS_SECRET_ACCESS_KEY") sessionToken := os.Getenv("AWS_SESSION_TOKEN") - opts := []func(*config.LoadOptions) error{ + opts := append([]func(*config.LoadOptions) error{ config.WithHTTPClient(httpClient), config.WithRegion(region), config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider( @@ -3111,14 +3145,14 @@ func TestCreateClientWithLongLeavingCredentials(t *testing.T) { secretKey, sessionToken, )), - } + }, replayCredentials(rr.Recording())...) cfg, err := config.LoadDefaultConfig(ctx, opts...) if err != nil { t.Fatal(err) } - client := bedrockruntime.NewFromConfig(cfg) + client := bedrockruntime.NewFromConfig(cfg, replayClientOptions(rr.Recording())...) llm, err := bedrock.New(bedrock.WithClient(client), bedrock.WithConverseAPI()) if err != nil { @@ -3138,6 +3172,16 @@ func TestCreateClientWithLongLeavingCredentials(t *testing.T) { t.Logf("Response: %s", resp) } +type authHeaderTap struct { + next http.RoundTripper + authorization string +} + +func (tap *authHeaderTap) RoundTrip(req *http.Request) (*http.Response, error) { + tap.authorization = req.Header.Get("Authorization") + return tap.next.RoundTrip(req) +} + // TestCreateClientWithBearerTokenCredentials tests creating a client with bearer token credentials. func TestCreateClientWithBearerTokenCredentials(t *testing.T) { ctx := t.Context() @@ -3160,12 +3204,16 @@ func TestCreateClientWithBearerTokenCredentials(t *testing.T) { return nil }) + tap := &authHeaderTap{next: rr} httpClient := &http.Client{ - Transport: rr, + Transport: tap, } region := os.Getenv("AWS_REGION") bearerToken := os.Getenv("AWS_BEDROCK_BEARER_TOKEN") + if !rr.Recording() { + region, bearerToken = replayRegion, "replay-bearer-token" + } opts := []func(*config.LoadOptions) error{ config.WithHTTPClient(httpClient), @@ -3175,6 +3223,7 @@ func TestCreateClientWithBearerTokenCredentials(t *testing.T) { Value: bearerToken, }, }), + config.WithAuthSchemePreference("httpBearerAuth"), } cfg, err := config.LoadDefaultConfig(ctx, opts...) @@ -3182,7 +3231,10 @@ func TestCreateClientWithBearerTokenCredentials(t *testing.T) { t.Fatal(err) } - client := bedrockruntime.NewFromConfig(cfg) + client := bedrockruntime.NewFromConfig(cfg, func(o *bedrockruntime.Options) { + o.BearerAuthTokenProvider = bearer.StaticTokenProvider{Token: bearer.Token{Value: bearerToken}} + o.AuthSchemePreference = []string{"httpBearerAuth"} + }) llm, err := bedrock.New(bedrock.WithClient(client), bedrock.WithConverseAPI()) if err != nil { @@ -3199,5 +3251,37 @@ func TestCreateClientWithBearerTokenCredentials(t *testing.T) { t.Fatal("Expected non-empty response") } - t.Logf("Response: %s", resp) + if got, want := tap.authorization, "Bearer "+bearerToken; got != want { + t.Errorf("the request carried a %q credential, not the configured bearer token", + strings.SplitN(got, " ", 2)[0]) + } +} + +func requireUsageAddsUp(t *testing.T, info map[string]any) { + t.Helper() + + prompt, ok := info["PromptTokens"].(int) + if !ok { + t.Fatalf("PromptTokens missing or not int: %#v", info["PromptTokens"]) + } + completion, ok := info["CompletionTokens"].(int) + if !ok { + t.Fatalf("CompletionTokens missing or not int: %#v", info["CompletionTokens"]) + } + cached, _ := info["CacheReadInputTokens"].(int) + created, _ := info["CacheCreationInputTokens"].(int) + if cached+created == 0 { + t.Fatalf("this recording carries no cache tokens, so it cannot show whether they are counted: %#v", info) + } + total, ok := info["TotalTokens"].(int) + if !ok { + total = prompt + completion + } + if prompt+completion != total { + t.Errorf("PromptTokens(%d) + CompletionTokens(%d) = %d, but TotalTokens = %d;"+ + " cache read %d, cache creation %d", prompt, completion, prompt+completion, total, cached, created) + } + if prompt <= cached+created { + t.Errorf("PromptTokens(%d) does not count the cached input (read %d, created %d)", prompt, cached, created) + } } diff --git a/llms/bedrock/budget_floor_test.go b/llms/bedrock/budget_floor_test.go new file mode 100644 index 000000000..2f797ab95 --- /dev/null +++ b/llms/bedrock/budget_floor_test.go @@ -0,0 +1,149 @@ +package bedrock_test + +import ( + "context" + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +const claudeBudgetModel = "anthropic.claude-sonnet-4-5-20250929-v1:0" + +// 1535 is the last max-tokens whose two-thirds cut lands below the floor. +var budgetCases = []struct { + maxTokens int + effort llms.ReasoningEffort +}{ + {512, llms.ReasoningLow}, + {512, llms.ReasoningHigh}, + {1024, llms.ReasoningLow}, + {1535, llms.ReasoningLow}, + {1535, llms.ReasoningHigh}, + {1536, llms.ReasoningLow}, + {4096, llms.ReasoningHigh}, +} + +func TestLegacyBudgetNeverFallsBelowTheVendorFloor(t *testing.T) { + t.Parallel() + + const resp = `{"id":"x","type":"message","role":"assistant","model":"m",` + + `"content":[{"type":"text","text":"ok"}],"stop_reason":"end_turn",` + + `"usage":{"input_tokens":1,"output_tokens":1}}` + + for _, tc := range budgetCases { + llm, sent := legacyLLMCapturing(t, resp, bedrock.WithModel(claudeBudgetModel)) + + _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithMaxTokens(tc.maxTokens), llms.WithReasoning(tc.effort, 0)) + require.NoError(t, err) + + var got struct { + MaxTokens int `json:"max_tokens"` + Thinking struct { + BudgetTokens int `json:"budget_tokens"` + } `json:"thinking"` + } + require.NoError(t, json.Unmarshal([]byte(*sent), &got)) + + assert.GreaterOrEqual(t, got.Thinking.BudgetTokens, 1024, + "maxTokens=%d effort=%s: budget below the vendor floor", tc.maxTokens, tc.effort) + assert.Less(t, got.Thinking.BudgetTokens, got.MaxTokens, + "maxTokens=%d effort=%s: budget must leave room for the answer", tc.maxTokens, tc.effort) + } +} + +func TestConverseBudgetNeverFallsBelowTheVendorFloor(t *testing.T) { + t.Parallel() + + const answer = `{"output":{"message":{"role":"assistant","content":[{"text":"ok"}]}},` + + `"stopReason":"end_turn","usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}` + + for _, tc := range budgetCases { + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, answer) + })) + + llm := bedrockLLMAgainst(t, srv, bedrock.WithModel(claudeBudgetModel), bedrock.WithConverseAPI()) + _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithMaxTokens(tc.maxTokens), llms.WithReasoning(tc.effort, 0)) + srv.Close() + require.NoError(t, err) + + var got struct { + InferenceConfig struct { + MaxTokens int `json:"maxTokens"` + } `json:"inferenceConfig"` + Fields struct { + Thinking struct { + BudgetTokens int `json:"budget_tokens"` + } `json:"thinking"` + } `json:"additionalModelRequestFields"` + } + require.NoError(t, json.Unmarshal([]byte(body), &got)) + + assert.GreaterOrEqual(t, got.Fields.Thinking.BudgetTokens, 1024, + "maxTokens=%d effort=%s: budget below the vendor floor", tc.maxTokens, tc.effort) + assert.Less(t, got.Fields.Thinking.BudgetTokens, got.InferenceConfig.MaxTokens, + "maxTokens=%d effort=%s: budget must leave room for the answer", tc.maxTokens, tc.effort) + } +} + +func TestLegacyRefusesAnEffortWithNoBudget(t *testing.T) { + t.Parallel() + + const resp = `{"id":"x","type":"message","role":"assistant","model":"m",` + + `"content":[{"type":"text","text":"ok"}],"stop_reason":"end_turn",` + + `"usage":{"input_tokens":1,"output_tokens":1}}` + + llm, sent := legacyLLMCapturing(t, resp, bedrock.WithModel(claudeBudgetModel)) + + _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithMaxTokens(8000), llms.WithReasoning(llms.ReasoningMinimal, 0)) + + var refused *reasoning.ErrEffortHasNoBudget + require.ErrorAs(t, err, &refused) + assert.Equal(t, string(llms.ReasoningMinimal), refused.Effort) + assert.Empty(t, *sent, "the refusal must land before the request leaves") +} + +func TestConverseRefusesAnEffortWithNoBudget(t *testing.T) { + t.Parallel() + + const answer = `{"output":{"message":{"role":"assistant","content":[{"text":"ok"}]}},` + + `"stopReason":"end_turn","usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}` + + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, answer) + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, bedrock.WithModel(claudeBudgetModel), bedrock.WithConverseAPI()) + _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithMaxTokens(8000), llms.WithReasoning(llms.ReasoningMinimal, 0)) + + var refused *reasoning.ErrEffortHasNoBudget + require.ErrorAs(t, err, &refused) + assert.Equal(t, string(llms.ReasoningMinimal), refused.Effort) + assert.Empty(t, body, "the refusal must land before the request leaves") +} diff --git a/llms/bedrock/converse_image_test.go b/llms/bedrock/converse_image_test.go new file mode 100644 index 000000000..c1a8a2bef --- /dev/null +++ b/llms/bedrock/converse_image_test.go @@ -0,0 +1,91 @@ +package bedrock_test + +import ( + "context" + "encoding/base64" + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" + "github.com/vxcontrol/langchaingo/llms/bedrock/internal/bedrockclient" +) + +func TestConverseSendsAPictureAsAPicture(t *testing.T) { + t.Parallel() + + jpeg := []byte{0xFF, 0xD8, 0xFF, 0xE0, 0x00, 0x10} + + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"output":{"message":{"role":"assistant","content":[{"text":"ok"}]}},`+ + `"stopReason":"end_turn","usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}`) + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, + bedrock.WithModel("amazon.nova-lite-v1:0"), bedrock.WithConverseAPI()) + + _, err := llm.GenerateContent(context.Background(), []llms.MessageContent{{ + Role: llms.ChatMessageTypeHuman, + Parts: []llms.ContentPart{ + llms.TextPart("what is on this picture?"), + llms.BinaryPart("image/jpeg", jpeg), + }, + }}) + require.NoError(t, err) + + var payload struct { + Messages []struct { + Content []map[string]any `json:"content"` + } `json:"messages"` + } + require.NoError(t, json.Unmarshal([]byte(body), &payload)) + + var image map[string]any + for _, m := range payload.Messages { + for _, block := range m.Content { + if got, ok := block["image"].(map[string]any); ok { + image = got + } + } + } + require.NotNil(t, image, "the picture must reach the wire as an image block, not as text") + assert.Equal(t, "jpeg", image["format"], "the mime type decides the format the vendor is told") + + source, ok := image["source"].(map[string]any) + require.True(t, ok, "an image block carries its source") + assert.Equal(t, base64.StdEncoding.EncodeToString(jpeg), source["bytes"], + "the bytes travel unchanged, not as a text block full of replacement runes") +} + +func TestConverseRefusesAPictureItCannotName(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"output":{"message":{"role":"assistant","content":[{"text":"ok"}]}},`+ + `"stopReason":"end_turn","usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}`) + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, + bedrock.WithModel("amazon.nova-lite-v1:0"), bedrock.WithConverseAPI()) + + _, err := llm.GenerateContent(context.Background(), []llms.MessageContent{{ + Role: llms.ChatMessageTypeHuman, + Parts: []llms.ContentPart{llms.BinaryPart("image/heic", []byte{0x00, 0x01})}, + }}) + require.ErrorIs(t, err, bedrockclient.ErrUnsupportedImageFormat, + "the door must refuse it by name; the SDK's own validation error would prove nothing about this guard") +} diff --git a/llms/bedrock/converse_max_tokens_test.go b/llms/bedrock/converse_max_tokens_test.go new file mode 100644 index 000000000..777094903 --- /dev/null +++ b/llms/bedrock/converse_max_tokens_test.go @@ -0,0 +1,65 @@ +package bedrock_test + +import ( + "context" + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" +) + +func converseInferenceConfig(t *testing.T, opts ...llms.CallOption) map[string]any { + t.Helper() + + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"output":{"message":{"role":"assistant","content":[{"text":"ok"}]}},`+ + `"stopReason":"end_turn","usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}`) + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, + bedrock.WithModel("amazon.nova-lite-v1:0"), bedrock.WithConverseAPI()) + + _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, opts...) + require.NoError(t, err) + + var payload struct { + InferenceConfig map[string]any `json:"inferenceConfig"` + } + require.NoError(t, json.Unmarshal([]byte(body), &payload)) + return payload.InferenceConfig +} + +func TestConverseLeavesOutATokenLimitTheVendorWouldReject(t *testing.T) { + t.Parallel() + + t.Run("a limit of zero is left out", func(t *testing.T) { + t.Parallel() + + config := converseInferenceConfig(t, llms.WithMaxTokens(0)) + + _, present := config["maxTokens"] + assert.False(t, present, + "the vendor accepts a minimum of 1 and defaults to the model's maximum when the field is absent") + }) + + t.Run("a limit the caller set travels", func(t *testing.T) { + t.Parallel() + + config := converseInferenceConfig(t, llms.WithMaxTokens(64)) + + assert.Equal(t, float64(64), config["maxTokens"]) + }) +} diff --git a/llms/bedrock/converse_mechanism_warning_test.go b/llms/bedrock/converse_mechanism_warning_test.go new file mode 100644 index 000000000..92992318e --- /dev/null +++ b/llms/bedrock/converse_mechanism_warning_test.go @@ -0,0 +1,63 @@ +package bedrock_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" +) + +func TestAMechanismTheConverseDoorPickedInsteadOfAdaptiveIsReported(t *testing.T) { + t.Parallel() + + for _, family := range []struct { + name string + model string + sent string + }{ + {"nova", "amazon.nova-2-lite-v1:0", "effort"}, + {"grok", "xai.grok-4-v1:0", "effort"}, + {"gpt-oss", "openai.gpt-oss-120b-1:0", "effort"}, + {"claude on a budget", "anthropic.claude-sonnet-4-5-v1:0", "enabled"}, + } { + t.Run(family.name, func(t *testing.T) { + t.Parallel() + + resp := bedrockWarningsFor(t, converseAnswer, + []bedrock.Option{bedrock.WithModel(family.model), bedrock.WithConverseAPI()}, + llms.WithAdaptiveReasoning(llms.ReasoningHigh)) + + w, ok := bedrockWarningsByOption(resp.Warnings)["WithAdaptiveReasoning"] + require.True(t, ok, "the door picked the mechanism unreported: %v", resp.Warnings) + require.Equal(t, llms.WarningSubstitute, w.Kind) + require.Equal(t, "adaptive", w.Asked) + require.Equal(t, family.sent, w.Sent) + }) + } +} + +func TestDelegatedDepthOnConverseIsNotReportedAsAPickedMechanism(t *testing.T) { + t.Parallel() + + for _, family := range []struct { + name string + model string + }{ + {"nova", "amazon.nova-2-lite-v1:0"}, + {"grok", "xai.grok-4-v1:0"}, + {"gpt-oss", "openai.gpt-oss-120b-1:0"}, + } { + t.Run(family.name, func(t *testing.T) { + t.Parallel() + + resp := bedrockWarningsFor(t, converseAnswer, + []bedrock.Option{bedrock.WithModel(family.model), bedrock.WithConverseAPI()}, + llms.WithAdaptiveReasoning("")) + + require.NotContains(t, bedrockWarningsByOption(resp.Warnings), "WithAdaptiveReasoning", + "the wire settles no depth, so the vendor picks it: %v", resp.Warnings) + }) + } +} diff --git a/llms/bedrock/converse_partial_stream_test.go b/llms/bedrock/converse_partial_stream_test.go new file mode 100644 index 000000000..460959a98 --- /dev/null +++ b/llms/bedrock/converse_partial_stream_test.go @@ -0,0 +1,90 @@ +package bedrock_test + +import ( + "context" + "errors" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func TestConverseStreamKeepsWhatArrivedWhenTheConsumerGivesUp(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/vnd.amazon.eventstream") + enc := eventstream.NewEncoder() + writeConverseEvent(t, w, enc, "messageStart", `{"role":"assistant"}`) + writeConverseEvent(t, w, enc, "contentBlockDelta", + `{"contentBlockIndex":0,"delta":{"text":"sixty "}}`) + writeConverseEvent(t, w, enc, "contentBlockDelta", + `{"contentBlockIndex":0,"delta":{"text":"rooms "}}`) + writeConverseEvent(t, w, enc, "contentBlockDelta", + `{"contentBlockIndex":0,"delta":{"text":"are free"}}`) + writeConverseEvent(t, w, enc, "contentBlockStop", `{"contentBlockIndex":0}`) + writeConverseEvent(t, w, enc, "messageStop", `{"stopReason":"end_turn"}`) + writeConverseEvent(t, w, enc, "metadata", + `{"usage":{"inputTokens":10,"outputTokens":9,"totalTokens":19}}`) + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, + bedrock.WithModel("anthropic.claude-sonnet-4-5-20250929-v1:0"), bedrock.WithConverseAPI()) + + gaveUp := errors.New("consumer gave up") + delivered := 0 + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, + llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type != streaming.ChunkTypeText { + return nil + } + delivered++ + if delivered == 2 { + return gaveUp + } + return nil + })) + + require.ErrorIs(t, err, gaveUp) + require.NotNil(t, resp, "the text already delivered must travel with the error") + require.Len(t, resp.Choices, 1) + assert.Equal(t, "sixty rooms ", resp.Choices[0].Content) +} + +func TestConverseStreamKeepsWhatArrivedWhenTheTransportBreaks(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/vnd.amazon.eventstream") + enc := eventstream.NewEncoder() + writeConverseEvent(t, w, enc, "messageStart", `{"role":"assistant"}`) + writeConverseEvent(t, w, enc, "contentBlockDelta", + `{"contentBlockIndex":0,"delta":{"text":"sixty rooms are free"}}`) + _, _ = w.Write([]byte("not an event stream frame at all")) + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, + bedrock.WithModel("anthropic.claude-sonnet-4-5-20250929-v1:0"), bedrock.WithConverseAPI()) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + + require.Error(t, err, "a broken frame must not look like a completed answer") + require.NotNil(t, resp, "the text already delivered must travel with the error") + require.Len(t, resp.Choices, 1) + assert.Equal(t, "sixty rooms are free", resp.Choices[0].Content) +} diff --git a/llms/bedrock/converse_stream_test.go b/llms/bedrock/converse_stream_test.go new file mode 100644 index 000000000..ec11f3251 --- /dev/null +++ b/llms/bedrock/converse_stream_test.go @@ -0,0 +1,95 @@ +package bedrock_test + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func writeConverseEvent(t *testing.T, w io.Writer, enc *eventstream.Encoder, event, payload string) { + t.Helper() + + require.NoError(t, enc.Encode(w, eventstream.Message{ + Headers: eventstream.Headers{ + {Name: ":message-type", Value: eventstream.StringValue("event")}, + {Name: ":event-type", Value: eventstream.StringValue(event)}, + {Name: ":content-type", Value: eventstream.StringValue("application/json")}, + }, + Payload: []byte(payload), + })) +} + +func converseStreamLLM(t *testing.T, stopReason string) *bedrock.LLM { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/vnd.amazon.eventstream") + enc := eventstream.NewEncoder() + writeConverseEvent(t, w, enc, "messageStart", `{"role":"assistant"}`) + writeConverseEvent(t, w, enc, "contentBlockDelta", + `{"contentBlockIndex":0,"delta":{"text":"half an ans"}}`) + writeConverseEvent(t, w, enc, "contentBlockStop", `{"contentBlockIndex":0}`) + writeConverseEvent(t, w, enc, "messageStop", `{"stopReason":"`+stopReason+`"}`) + writeConverseEvent(t, w, enc, "metadata", + `{"usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}`) + })) + t.Cleanup(srv.Close) + + return bedrockLLMAgainst(t, srv, + bedrock.WithModel("anthropic.claude-sonnet-4-5-20250929-v1:0"), bedrock.WithConverseAPI()) +} + +func streamedTurn(t *testing.T, stopReason string, extra ...llms.CallOption) (*llms.ContentResponse, error) { + t.Helper() + + opts := append([]llms.CallOption{ + llms.WithStreamingFunc(func(_ context.Context, _ streaming.Chunk) error { return nil }), + }, extra...) + + return converseStreamLLM(t, stopReason).GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, opts...) +} + +func TestConverseStreamReportsTruncation(t *testing.T) { + t.Parallel() + + t.Run("the stop reason reaches the choice", func(t *testing.T) { + t.Parallel() + got, err := streamedTurn(t, "max_tokens") + require.NoError(t, err) + + choice := got.Choices[0] + assert.Equal(t, "max_tokens", choice.StopReason) + assert.True(t, choice.Truncated, "a max_tokens stop marks the choice truncated") + assert.Equal(t, "half an ans", choice.Content) + }) + + t.Run("finishing on its own is not truncation", func(t *testing.T) { + t.Parallel() + got, err := streamedTurn(t, "end_turn") + require.NoError(t, err) + + assert.Equal(t, "end_turn", got.Choices[0].StopReason) + assert.False(t, got.Choices[0].Truncated) + }) + + t.Run("failing on truncation reaches the streamed answer too", func(t *testing.T) { + t.Parallel() + got, err := streamedTurn(t, "max_tokens", llms.WithFailOnTruncation()) + require.Error(t, err) + assert.True(t, llms.IsTruncatedError(err)) + require.NotNil(t, got) + assert.Equal(t, "half an ans", got.Choices[0].Content) + }) +} diff --git a/llms/bedrock/converse_stream_tools_test.go b/llms/bedrock/converse_stream_tools_test.go new file mode 100644 index 000000000..7a55df7fd --- /dev/null +++ b/llms/bedrock/converse_stream_tools_test.go @@ -0,0 +1,106 @@ +package bedrock_test + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func TestConverseStreamKeepsToolCallsApart(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/vnd.amazon.eventstream") + enc := eventstream.NewEncoder() + writeConverseEvent(t, w, enc, "messageStart", `{"role":"assistant"}`) + + writeConverseEvent(t, w, enc, "contentBlockStart", + `{"contentBlockIndex":0,"start":{"toolUse":{"toolUseId":"id-a","name":"alpha"}}}`) + writeConverseEvent(t, w, enc, "contentBlockStart", + `{"contentBlockIndex":1,"start":{"toolUse":{"toolUseId":"id-b","name":"beta"}}}`) + + writeConverseEvent(t, w, enc, "contentBlockDelta", + `{"contentBlockIndex":0,"delta":{"toolUse":{"input":"{\"a\":"}}}`) + writeConverseEvent(t, w, enc, "contentBlockDelta", + `{"contentBlockIndex":1,"delta":{"toolUse":{"input":"{\"b\":"}}}`) + writeConverseEvent(t, w, enc, "contentBlockDelta", + `{"contentBlockIndex":0,"delta":{"toolUse":{"input":"1}"}}}`) + writeConverseEvent(t, w, enc, "contentBlockDelta", + `{"contentBlockIndex":1,"delta":{"toolUse":{"input":"2}"}}}`) + + writeConverseEvent(t, w, enc, "contentBlockStop", `{"contentBlockIndex":0}`) + writeConverseEvent(t, w, enc, "contentBlockStop", `{"contentBlockIndex":1}`) + writeConverseEvent(t, w, enc, "messageStop", `{"stopReason":"tool_use"}`) + writeConverseEvent(t, w, enc, "metadata", + `{"usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}`) + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, + bedrock.WithModel("anthropic.claude-sonnet-4-5-20250929-v1:0"), bedrock.WithConverseAPI()) + + var streamed []streaming.ToolCall + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type == streaming.ChunkTypeToolCall { + streamed = append(streamed, chunk.ToolCall) + } + return nil + })) + require.NoError(t, err) + + got := map[string]string{} + for _, call := range resp.Choices[0].ToolCalls { + require.NotNil(t, call.FunctionCall) + got[call.FunctionCall.Name] = call.FunctionCall.Arguments + } + + assert.Len(t, resp.Choices[0].ToolCalls, 2) + assert.Equal(t, `{"a":1}`, got["alpha"]) + assert.Equal(t, `{"b":2}`, got["beta"]) + assert.Len(t, streamed, 2) +} + +func TestConverseStreamToolCallWithoutABlockIndex(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/vnd.amazon.eventstream") + enc := eventstream.NewEncoder() + writeConverseEvent(t, w, enc, "messageStart", `{"role":"assistant"}`) + writeConverseEvent(t, w, enc, "contentBlockStart", + `{"start":{"toolUse":{"toolUseId":"id-a","name":"alpha"}}}`) + writeConverseEvent(t, w, enc, "contentBlockDelta", + `{"delta":{"toolUse":{"input":"{\"a\":1}"}}}`) + writeConverseEvent(t, w, enc, "contentBlockStop", `{}`) + writeConverseEvent(t, w, enc, "messageStop", `{"stopReason":"tool_use"}`) + writeConverseEvent(t, w, enc, "metadata", + `{"usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}`) + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, + bedrock.WithModel("anthropic.claude-sonnet-4-5-20250929-v1:0"), bedrock.WithConverseAPI()) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStreamingFunc(func(_ context.Context, _ streaming.Chunk) error { return nil })) + require.NoError(t, err) + + require.Len(t, resp.Choices[0].ToolCalls, 1) + require.NotNil(t, resp.Choices[0].ToolCalls[0].FunctionCall) + assert.Equal(t, `{"a":1}`, resp.Choices[0].ToolCalls[0].FunctionCall.Arguments) +} diff --git a/llms/bedrock/converse_stream_usage_test.go b/llms/bedrock/converse_stream_usage_test.go new file mode 100644 index 000000000..3384d2db8 --- /dev/null +++ b/llms/bedrock/converse_stream_usage_test.go @@ -0,0 +1,54 @@ +package bedrock_test + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func TestConverseStreamReportsTheSameCountersAsTheWholeAnswer(t *testing.T) { + t.Parallel() + + const usage = `{"usage":{"inputTokens":13,"outputTokens":304,"totalTokens":3919,` + + `"cacheReadInputTokens":3602,"cacheWriteInputTokens":300}}` + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/vnd.amazon.eventstream") + enc := eventstream.NewEncoder() + writeConverseEvent(t, w, enc, "messageStart", `{"role":"assistant"}`) + writeConverseEvent(t, w, enc, "contentBlockDelta", + `{"contentBlockIndex":0,"delta":{"text":"ok"}}`) + writeConverseEvent(t, w, enc, "contentBlockStop", `{"contentBlockIndex":0}`) + writeConverseEvent(t, w, enc, "messageStop", `{"stopReason":"end_turn"}`) + writeConverseEvent(t, w, enc, "metadata", usage) + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, + bedrock.WithModel("anthropic.claude-sonnet-4-5-20250929-v1:0"), bedrock.WithConverseAPI()) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStreamingFunc(func(_ context.Context, _ streaming.Chunk) error { return nil })) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + + info := resp.Choices[0].GenerationInfo + assert.Equal(t, 304, info["CompletionTokens"]) + assert.Equal(t, 3919, info["TotalTokens"]) + assert.Equal(t, 3602, info["CacheReadInputTokens"]) + assert.Equal(t, 3602, info["PromptCachedTokens"]) + assert.Equal(t, 300, info["CacheCreationInputTokens"]) + assert.Equal(t, 3915, info["PromptTokens"]) +} diff --git a/llms/bedrock/converse_thinking_blocks_test.go b/llms/bedrock/converse_thinking_blocks_test.go new file mode 100644 index 000000000..cd639bc71 --- /dev/null +++ b/llms/bedrock/converse_thinking_blocks_test.go @@ -0,0 +1,298 @@ +package bedrock_test + +import ( + "context" + "encoding/base64" + "encoding/json" + "fmt" + "io" + "net/http" + "net/http/httptest" + "strings" + "sync" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" + "github.com/vxcontrol/langchaingo/llms/reasoning" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +const converseClaude = "anthropic.claude-sonnet-4-5-20250929-v1:0" + +type converseRecorder struct { + mu sync.Mutex + responses []string + requests [][]byte +} + +func (c *converseRecorder) serve(t *testing.T) *bedrock.LLM { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + body, _ := io.ReadAll(r.Body) + c.mu.Lock() + c.requests = append(c.requests, body) + answer := c.responses[min(len(c.requests), len(c.responses))-1] + c.mu.Unlock() + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, answer) + })) + t.Cleanup(srv.Close) + + return bedrockLLMAgainst(t, srv, bedrock.WithModel(converseClaude), bedrock.WithConverseAPI()) +} + +func converseReply(blocks ...string) string { + return `{"output":{"message":{"role":"assistant","content":[` + strings.Join(blocks, ",") + `]}},` + + `"stopReason":"tool_use","usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}` +} + +func converseThought(text, signature string) string { + return fmt.Sprintf(`{"reasoningContent":{"reasoningText":{"text":%q,"signature":%q}}}`, text, signature) +} + +func converseEncrypted(data string) string { + return fmt.Sprintf(`{"reasoningContent":{"redactedContent":%q}}`, base64.StdEncoding.EncodeToString([]byte(data))) +} + +func converseToolUse(id string) string { + return fmt.Sprintf(`{"toolUse":{"toolUseId":%q,"name":"lookup","input":{"q":%q}}}`, id, id) +} + +func converseShape(t *testing.T, content []map[string]any) []string { + t.Helper() + + shape := make([]string, 0, len(content)) + for _, block := range content { + switch { + case block["reasoningContent"] != nil: + thought, _ := block["reasoningContent"].(map[string]any) + if text, ok := thought["reasoningText"].(map[string]any); ok { + shape = append(shape, fmt.Sprintf("thought %v/%v", text["text"], text["signature"])) + } else { + shape = append(shape, fmt.Sprintf("encrypted %v", thought["redactedContent"])) + } + case block["toolUse"] != nil: + use, _ := block["toolUse"].(map[string]any) + shape = append(shape, fmt.Sprintf("tool %v", use["toolUseId"])) + case block["text"] != nil: + shape = append(shape, fmt.Sprintf("text %v", block["text"])) + default: + t.Fatalf("unexpected content block %v", block) + } + } + return shape +} + +func (c *converseRecorder) replayedAssistant(t *testing.T, request int) []string { + t.Helper() + + var payload struct { + Messages []struct { + Role string `json:"role"` + Content []map[string]any `json:"content"` + } `json:"messages"` + } + require.NoError(t, json.Unmarshal(c.requests[request], &payload)) + for _, m := range payload.Messages { + if m.Role == "assistant" { + return converseShape(t, m.Content) + } + } + t.Fatalf("request %d carries no assistant turn", request) + return nil +} + +func lookupTools() []llms.Tool { + return []llms.Tool{{Type: "function", Function: &llms.FunctionDefinition{ + Name: "lookup", + Parameters: map[string]any{"type": "object", "properties": map[string]any{"q": map[string]any{"type": "string"}}}, + }}} +} + +func askConverse(t *testing.T, llm *bedrock.LLM, opts ...llms.CallOption) *llms.ContentChoice { + t.Helper() + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "look it up")}, + append(opts, llms.WithTools(lookupTools()))...) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + return resp.Choices[0] +} + +func TestConverseKeepsEveryReasoningBlockWithItsSignature(t *testing.T) { + t.Parallel() + + rec := &converseRecorder{responses: []string{converseReply( + converseThought("", "sig-reasoning"), converseThought("checking the index", "sig-update"), converseToolUse("A"), + )}} + choice := askConverse(t, rec.serve(t)) + + assert.Equal(t, []reasoning.Block{ + {Text: "", Signature: []byte("sig-reasoning")}, + {Text: "checking the index", Signature: []byte("sig-update")}, + }, choice.Reasoning.Sequence()) + assert.Empty(t, choice.Reasoning.Signature, "no single signature covers two blocks") +} + +func TestConverseNotesWhereEachReasoningBlockSat(t *testing.T) { + t.Parallel() + + rec := &converseRecorder{responses: []string{converseReply( + converseThought("plan", "s1"), converseToolUse("A"), + converseThought("next", "s2"), converseEncrypted("opaque"), converseToolUse("B"), + )}} + choice := askConverse(t, rec.serve(t)) + + assert.Equal(t, []reasoning.Block{ + {Text: "plan", Signature: []byte("s1")}, + {Text: "next", Signature: []byte("s2"), AfterToolCalls: 1}, + {Redacted: []byte("opaque"), AfterToolCalls: 1}, + }, choice.Reasoning.Sequence()) +} + +func TestTheConverseStreamKeepsEachBlockWithItsOwnSignature(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/vnd.amazon.eventstream") + enc := eventstream.NewEncoder() + delta := func(index int, payload string) { + writeConverseEvent(t, w, enc, "contentBlockDelta", + fmt.Sprintf(`{"contentBlockIndex":%d,"delta":%s}`, index, payload)) + } + stop := func(index int) { + writeConverseEvent(t, w, enc, "contentBlockStop", fmt.Sprintf(`{"contentBlockIndex":%d}`, index)) + } + + writeConverseEvent(t, w, enc, "messageStart", `{"role":"assistant"}`) + delta(0, `{"reasoningContent":{"text":"first "}}`) + delta(0, `{"reasoningContent":{"text":"thought"}}`) + delta(0, `{"reasoningContent":{"signature":"s1"}}`) + stop(0) + delta(1, `{"reasoningContent":{"text":"second"}}`) + delta(1, `{"reasoningContent":{"signature":"s2"}}`) + stop(1) + writeConverseEvent(t, w, enc, "contentBlockStart", + `{"contentBlockIndex":2,"start":{"toolUse":{"toolUseId":"A","name":"lookup"}}}`) + delta(2, `{"toolUse":{"input":"{\"q\":\"A\"}"}}`) + stop(2) + delta(3, `{"reasoningContent":{"signature":"s3"}}`) + stop(3) + writeConverseEvent(t, w, enc, "messageStop", `{"stopReason":"max_tokens"}`) + writeConverseEvent(t, w, enc, "metadata", `{"usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}`) + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, bedrock.WithModel(converseClaude), bedrock.WithConverseAPI()) + choice := askConverse(t, llm, llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + + assert.Equal(t, []reasoning.Block{ + {Text: "first thought", Signature: []byte("s1")}, + {Text: "second", Signature: []byte("s2")}, + {Signature: []byte("s3"), AfterToolCalls: 1}, + }, choice.Reasoning.Sequence()) +} + +func TestAReplayedConverseTurnGoesBackAsTheVendorSentIt(t *testing.T) { + t.Parallel() + + for name, original := range map[string][]string{ + "reasoning and a progress update before one call": { + converseThought("", "sig-reasoning"), converseThought("checking the index", "sig-update"), converseToolUse("A"), + }, + "an update before each of two calls": { + converseThought("plan", "s1"), converseToolUse("A"), converseThought("", "s2"), converseToolUse("B"), + }, + "an update cut off after the last call": { + converseThought("plan", "s1"), converseToolUse("A"), converseThought("", "s2"), + }, + "an encrypted block between signed ones": { + converseThought("a", "s1"), converseEncrypted("opaque"), converseThought("b", "s2"), converseToolUse("A"), + }, + } { + t.Run(name, func(t *testing.T) { + t.Parallel() + + rec := &converseRecorder{responses: []string{ + converseReply(original...), + `{"output":{"message":{"role":"assistant","content":[{"text":"ok"}]}},"stopReason":"end_turn"}`, + }} + llm := rec.serve(t) + choice := askConverse(t, llm) + + turn := []llms.ContentPart{llms.TextPartWithReasoning(choice.Content, choice.Reasoning)} + results := make([]llms.ContentPart, 0, len(choice.ToolCalls)) + for _, call := range choice.ToolCalls { + turn = append(turn, call) + results = append(results, llms.ToolCallResponse{ToolCallID: call.ID, Name: "lookup", Content: "done"}) + } + _, err := llm.GenerateContent(context.Background(), []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "look it up"), + {Role: llms.ChatMessageTypeAI, Parts: turn}, + {Role: llms.ChatMessageTypeTool, Parts: results}, + }, llms.WithTools(lookupTools())) + require.NoError(t, err) + + var sent []map[string]any + require.NoError(t, json.Unmarshal([]byte("["+strings.Join(original, ",")+"]"), &sent)) + assert.Equal(t, converseShape(t, sent), rec.replayedAssistant(t, 1)) + }) + } +} + +func TestAMergedConverseTurnKeepsTheReasoningOfEveryPart(t *testing.T) { + t.Parallel() + + first := reasoning.FromBlocks([]reasoning.Block{{Text: "one", Signature: []byte("s1")}}) + second := reasoning.FromBlocks([]reasoning.Block{{Text: "two", Signature: []byte("s2")}}) + + callA := llms.ToolCall{ID: "A", Type: "function", FunctionCall: &llms.FunctionCall{Name: "lookup", Arguments: `{"q":"A"}`}} + both := []string{"thought one/s1", "thought two/s2", "text t1", "text t2", "tool A"} + + for name, tc := range map[string]struct { + turn []llms.MessageContent + want []string + }{ + "two parts of one message": {turn: []llms.MessageContent{{Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.TextPartWithReasoning("t1", first), + llms.TextPartWithReasoning("t2", second), + callA, + }}}, want: both}, + "two consecutive messages": {turn: []llms.MessageContent{ + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{llms.TextPartWithReasoning("t1", first)}}, + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{llms.TextPartWithReasoning("t2", second), callA}}, + }, want: both}, + "a tool call ahead of the reasoning part": {turn: []llms.MessageContent{ + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{callA, llms.TextPartWithReasoning("t1", first)}}, + }, want: []string{"thought one/s1", "text t1", "tool A"}}, + "an empty reasoning ahead of a real one": {turn: []llms.MessageContent{{Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.TextPartWithReasoning("t1", &reasoning.ContentReasoning{}), + llms.TextPartWithReasoning("t2", second), + callA, + }}}, want: []string{"thought two/s2", "text t1", "text t2", "tool A"}}, + } { + t.Run(name, func(t *testing.T) { + t.Parallel() + + rec := &converseRecorder{responses: []string{ + `{"output":{"message":{"role":"assistant","content":[{"text":"ok"}]}},"stopReason":"end_turn"}`, + }} + history := append([]llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "look it up")}, tc.turn...) + history = append(history, llms.MessageContent{Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{ + llms.ToolCallResponse{ToolCallID: "A", Name: "lookup", Content: "done"}, + }}) + _, err := rec.serve(t).GenerateContent(context.Background(), history, llms.WithTools(lookupTools())) + require.NoError(t, err) + + assert.Equal(t, tc.want, rec.replayedAssistant(t, 0)) + }) + } +} diff --git a/llms/bedrock/converse_tool_choice_warning_test.go b/llms/bedrock/converse_tool_choice_warning_test.go new file mode 100644 index 000000000..069907079 --- /dev/null +++ b/llms/bedrock/converse_tool_choice_warning_test.go @@ -0,0 +1,26 @@ +package bedrock_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" +) + +func TestAskingForNoToolOnConverseIsNotReportedAsLosingTheTools(t *testing.T) { + t.Parallel() + + tool := llms.Tool{Type: "function", Function: &llms.FunctionDefinition{ + Name: "get_weather", Description: "weather", + Parameters: map[string]any{"type": "object", "properties": map[string]any{}}, + }} + + resp := bedrockWarningsFor(t, converseAnswer, + []bedrock.Option{bedrock.WithModel("amazon.nova-lite-v1:0"), bedrock.WithConverseAPI()}, + llms.WithTools([]llms.Tool{tool}), llms.WithToolChoice("none")) + + require.NotContains(t, bedrockWarningsByOption(resp.Warnings), "WithTools", + "the caller asked for no tool, so the empty config is the answer: %v", resp.Warnings) +} diff --git a/llms/bedrock/converse_tool_config_test.go b/llms/bedrock/converse_tool_config_test.go new file mode 100644 index 000000000..d6fc0a147 --- /dev/null +++ b/llms/bedrock/converse_tool_config_test.go @@ -0,0 +1,93 @@ +package bedrock_test + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" +) + +func converseAgentTurnOnWire(t *testing.T, choice any) string { + t.Helper() + + const answer = `{"output":{"message":{"role":"assistant","content":[{"text":"ok"}]}},` + + `"stopReason":"end_turn","usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}` + + tool := llms.Tool{ + Type: "function", + Function: &llms.FunctionDefinition{ + Name: "get_weather", + Description: "weather", + Parameters: map[string]any{"type": "object", "properties": map[string]any{}}, + }, + } + + history := []llms.MessageContent{ + {Role: llms.ChatMessageTypeHuman, Parts: []llms.ContentPart{ + llms.TextContent{Text: "what is the weather in Paris?"}, + }}, + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.ToolCall{ID: "call_1", Type: "function", FunctionCall: &llms.FunctionCall{ + Name: "get_weather", + Arguments: `{"city":"Paris"}`, + }}, + }}, + {Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{ + llms.ToolCallResponse{ToolCallID: "call_1", Name: "get_weather", Content: "20C"}, + }}, + } + + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, answer) + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, + bedrock.WithModel("amazon.nova-lite-v1:0"), bedrock.WithConverseAPI()) + + opts := []llms.CallOption{llms.WithTools([]llms.Tool{tool})} + if choice != nil { + opts = append(opts, llms.WithToolChoice(choice)) + } + if _, err := llm.GenerateContent(context.Background(), history, opts...); err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + return body +} + +func TestConverseKeepsToolsWhenTheHistoryCarriesToolBlocks(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + choice any + }{ + {"none as a bare string", "none"}, + {"none as a struct", llms.ToolChoice{Type: "none"}}, + {"none as a raw map", map[string]any{"type": "none"}}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + body := converseAgentTurnOnWire(t, tc.choice) + if !strings.Contains(body, `"toolConfig"`) { + t.Fatalf("a turn carrying tool blocks needs toolConfig, got body: %s", body) + } + if !strings.Contains(body, `"get_weather"`) { + t.Fatalf("toolConfig must carry the caller's tools, got body: %s", body) + } + if !strings.Contains(body, `"auto":{}`) { + t.Fatalf("converse has no none, so the choice degrades to auto, got body: %s", body) + } + }) + } +} diff --git a/llms/bedrock/converse_top_k_test.go b/llms/bedrock/converse_top_k_test.go new file mode 100644 index 000000000..74291a16b --- /dev/null +++ b/llms/bedrock/converse_top_k_test.go @@ -0,0 +1,42 @@ +package bedrock_test + +import ( + "context" + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" +) + +func TestTheTopKPassedToTheLLMReachesTheConverseRequest(t *testing.T) { + t.Parallel() + + var body []byte + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + body, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, converseAnswer) + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, + bedrock.WithModel("anthropic.claude-haiku-4-5-20251001-v1:0"), bedrock.WithConverseAPI()) + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, + llms.WithTopK(40)) + require.NoError(t, err) + + var sent struct { + Fields map[string]any `json:"additionalModelRequestFields"` + } + require.NoError(t, json.Unmarshal(body, &sent)) + assert.Equal(t, map[string]any{"top_k": float64(40)}, sent.Fields) + assert.Empty(t, resp.Warnings) +} diff --git a/llms/bedrock/converse_turn_shape_test.go b/llms/bedrock/converse_turn_shape_test.go new file mode 100644 index 000000000..35c685ad3 --- /dev/null +++ b/llms/bedrock/converse_turn_shape_test.go @@ -0,0 +1,177 @@ +package bedrock_test + +import ( + "context" + "encoding/json" + "fmt" + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +type wireTurn struct { + Role string `json:"role"` + Content []map[string]any `json:"content"` +} + +func converseTurns(t *testing.T, messages []llms.MessageContent) []wireTurn { + t.Helper() + + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"output":{"message":{"role":"assistant","content":[{"text":"ok"}]}},`+ + `"stopReason":"end_turn","usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}`) + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, + bedrock.WithModel("amazon.nova-lite-v1:0"), bedrock.WithConverseAPI()) + _, err := llm.GenerateContent(context.Background(), messages) + require.NoError(t, err) + + var payload struct { + Messages []wireTurn `json:"messages"` + } + require.NoError(t, json.Unmarshal([]byte(body), &payload)) + return payload.Messages +} + +func TestOneHumanTurnReachesConverseAsOneMessage(t *testing.T) { + t.Parallel() + + turns := converseTurns(t, []llms.MessageContent{{ + Role: llms.ChatMessageTypeHuman, + Parts: []llms.ContentPart{ + llms.TextPart("what is on this picture?"), + llms.BinaryPart("image/jpeg", []byte{0xFF, 0xD8}), + llms.TextPart("and how many rooms are free?"), + }, + }}) + + require.Len(t, turns, 1, "one turn the caller wrote is one message on the wire, as on the legacy door") + assert.Equal(t, "user", turns[0].Role) + require.Len(t, turns[0].Content, 3, "every part of that turn travels, in the order it was written") + assert.Contains(t, turns[0].Content[0], "text") + assert.Contains(t, turns[0].Content[1], "image") + assert.Contains(t, turns[0].Content[2], "text") +} + +func turnShapes(turns []wireTurn) []string { + shapes := make([]string, 0, len(turns)) + for _, turn := range turns { + blocks := make([]string, 0, len(turn.Content)) + for _, block := range turn.Content { + switch { + case block["text"] != nil: + blocks = append(blocks, fmt.Sprintf("text %v", block["text"])) + case block["cachePoint"] != nil: + blocks = append(blocks, "cache") + case block["toolUse"] != nil: + use, _ := block["toolUse"].(map[string]any) + blocks = append(blocks, fmt.Sprintf("tool %v", use["toolUseId"])) + case block["reasoningContent"] != nil: + thought, _ := block["reasoningContent"].(map[string]any) + text, _ := thought["reasoningText"].(map[string]any) + blocks = append(blocks, fmt.Sprintf("thought %v/%v", text["text"], text["signature"])) + default: + blocks = append(blocks, fmt.Sprintf("%v", block)) + } + } + shapes = append(shapes, turn.Role+": "+strings.Join(blocks, ", ")) + } + return shapes +} + +func TestAnEmptyAssistantTurnNeverReachesConverse(t *testing.T) { + t.Parallel() + + first := llms.TextParts(llms.ChatMessageTypeHuman, "first") + second := llms.TextParts(llms.ChatMessageTypeHuman, "second") + thought := reasoning.FromBlocks([]reasoning.Block{{Text: "plan", Signature: []byte("s1")}}) + + for name, tc := range map[string]struct { + history []llms.MessageContent + want []string + }{ + "an empty text": { + history: []llms.MessageContent{first, {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{llms.TextContent{}}}, second}, + want: []string{"user: text first, text second"}, + }, + "a turn with no parts": { + history: []llms.MessageContent{first, {Role: llms.ChatMessageTypeAI}, second}, + want: []string{"user: text first, text second"}, + }, + "an empty text with a cache marker": { + history: []llms.MessageContent{ + first, + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + bedrock.WithCacheControl(llms.TextContent{}, bedrock.EphemeralCache()), + }}, + second, + llms.TextParts(llms.ChatMessageTypeAI, "answer"), + llms.TextParts(llms.ChatMessageTypeHuman, "third"), + }, + want: []string{"user: text first, text second", "assistant: text answer", "user: text third, cache"}, + }, + "thinking alone": { + history: []llms.MessageContent{first, {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.TextPartWithReasoning("", thought), + }}, second}, + want: []string{"user: text first", "assistant: thought plan/s1", "user: text second"}, + }, + "a tool call alone": { + history: []llms.MessageContent{first, {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.ToolCall{ID: "A", Type: "function", FunctionCall: &llms.FunctionCall{Name: "lookup", Arguments: `{"q":"A"}`}}, + }}, second}, + want: []string{"user: text first", "assistant: tool A", "user: text second"}, + }, + "an empty user text with a cache marker": { + history: []llms.MessageContent{ + {Role: llms.ChatMessageTypeHuman, Parts: []llms.ContentPart{ + llms.TextPart("first"), + bedrock.WithCacheControl(llms.TextContent{}, bedrock.EphemeralCache()), + }}, + llms.TextParts(llms.ChatMessageTypeAI, "answer"), + second, + }, + want: []string{"user: text first, cache", "assistant: text answer", "user: text second, cache"}, + }, + } { + t.Run(name, func(t *testing.T) { + t.Parallel() + + assert.Equal(t, tc.want, turnShapes(converseTurns(t, tc.history))) + }) + } +} + +func TestAnAssistantTurnKeepsEveryTextItCarried(t *testing.T) { + t.Parallel() + + turns := converseTurns(t, []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "hi"), + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.TextPart("first I checked the ledger"), + llms.TextPart("sixty rooms are free"), + }}, + llms.TextParts(llms.ChatMessageTypeHuman, "thanks"), + }) + + require.Len(t, turns, 3) + assert.Equal(t, "assistant", turns[1].Role) + require.Len(t, turns[1].Content, 2, "a second text in the same turn is not dropped") + assert.Equal(t, "first I checked the ledger", turns[1].Content[0]["text"]) + assert.Equal(t, "sixty rooms are free", turns[1].Content[1]["text"]) +} diff --git a/llms/bedrock/effort_as_budget_test.go b/llms/bedrock/effort_as_budget_test.go new file mode 100644 index 000000000..6705c09e5 --- /dev/null +++ b/llms/bedrock/effort_as_budget_test.go @@ -0,0 +1,83 @@ +package bedrock_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" +) + +func bedrockWarningsFound(warnings []llms.Warning, option string) []llms.Warning { + var found []llms.Warning + for _, w := range warnings { + if w.Option == option { + found = append(found, w) + } + } + return found +} + +func TestBothBedrockDoorsCallTheEffortTurnedIntoABudgetASubstitution(t *testing.T) { + t.Parallel() + + for _, door := range []struct { + name string + answer string + opts []bedrock.Option + }{ + {"legacy", legacyAnswer, []bedrock.Option{ + bedrock.WithModel("anthropic.claude-sonnet-4-5-v1:0"), + }}, + {"converse", converseAnswer, []bedrock.Option{ + bedrock.WithModel("anthropic.claude-sonnet-4-5-v1:0"), bedrock.WithConverseAPI(), + }}, + } { + t.Run(door.name, func(t *testing.T) { + t.Parallel() + + resp := bedrockWarningsFor(t, door.answer, door.opts, + llms.WithMaxTokens(8192), llms.WithReasoning(llms.ReasoningMedium, 0)) + + found := bedrockWarningsFound(resp.Warnings, "WithReasoning") + require.Len(t, found, 1, "one warning for one ask: %v", resp.Warnings) + require.Equal(t, llms.WarningSubstitute, found[0].Kind) + require.Equal(t, "medium", found[0].Asked) + require.Contains(t, found[0].Sent, "tokens") + }) + } +} + +func TestBothBedrockDoorsCallTheEffortAnExplicitBudgetOverrodeALoss(t *testing.T) { + t.Parallel() + + for _, door := range []struct { + name string + answer string + opts []bedrock.Option + }{ + {"legacy", legacyAnswer, []bedrock.Option{ + bedrock.WithModel("anthropic.claude-sonnet-4-5-v1:0"), + }}, + {"converse", converseAnswer, []bedrock.Option{ + bedrock.WithModel("anthropic.claude-sonnet-4-5-v1:0"), bedrock.WithConverseAPI(), + }}, + } { + t.Run(door.name, func(t *testing.T) { + t.Parallel() + + resp := bedrockWarningsFor(t, door.answer, door.opts, + llms.WithMaxTokens(8192), llms.WithReasoning(llms.ReasoningMedium, 2048)) + + var dropped *llms.Warning + for _, w := range bedrockWarningsFound(resp.Warnings, "WithReasoning") { + if w.Kind == llms.WarningDrop { + dropped = &w + } + } + require.NotNil(t, dropped, "the effort went nowhere unreported: %v", resp.Warnings) + require.Equal(t, "medium", dropped.Asked) + }) + } +} diff --git a/llms/bedrock/internal/bedrockclient/adaptive_delegation_test.go b/llms/bedrock/internal/bedrockclient/adaptive_delegation_test.go new file mode 100644 index 000000000..5968ac53b --- /dev/null +++ b/llms/bedrock/internal/bedrockclient/adaptive_delegation_test.go @@ -0,0 +1,41 @@ +package bedrockclient + +import ( + "testing" + + "github.com/vxcontrol/langchaingo/llms" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func converseFieldsFor(t *testing.T, model string, cfg *llms.ReasoningConfig) *ConverseInput { + t.Helper() + + limit := 4096 + return &ConverseInput{ + ModelID: model, + Messages: []Message{{Role: llms.ChatMessageTypeHuman, Type: "text", Content: "hi"}}, + MaxTokens: &limit, + ReasoningConfig: cfg, + } +} + +func TestNovaTakesTheDelegationInsteadOfTheTopEffort(t *testing.T) { + t.Parallel() + + client := NewConverseClient(nil) + built, err := client.buildConverseInput( + converseFieldsFor(t, "amazon.nova-2-lite-v1:0", &llms.ReasoningConfig{Adaptive: true})) + require.NoError(t, err) + + require.NotNil(t, built.AdditionalModelRequestFields) + raw, err := built.AdditionalModelRequestFields.MarshalSmithyDocument() + require.NoError(t, err) + + assert.Contains(t, string(raw), `"type":"enabled"`) + assert.NotContains(t, string(raw), "maxReasoningEffort", + "the caller left the depth to the vendor") + require.NotNil(t, built.InferenceConfig.MaxTokens, + "the top effort clears the sampling limits; a delegation must not") +} diff --git a/llms/bedrock/internal/bedrockclient/bedrockclient.go b/llms/bedrock/internal/bedrockclient/bedrockclient.go index 45cafd9b9..a1be984c3 100644 --- a/llms/bedrock/internal/bedrockclient/bedrockclient.go +++ b/llms/bedrock/internal/bedrockclient/bedrockclient.go @@ -3,6 +3,7 @@ package bedrockclient import ( "context" "errors" + "strconv" "strings" "github.com/vxcontrol/langchaingo/llms" @@ -114,24 +115,39 @@ func (c *Client) CreateCompletion(ctx context.Context, Reason: "legacy InvokeModel structured output is only implemented for Anthropic models; use the Converse API for other providers", } } + if options.Reasoning.ResolveMode() == llms.ReasoningOff && + reasoning.ResolveOff(modelID, reasoning.ProviderBedrock) == reasoning.OffUnsupported { + return nil, &reasoning.ErrReasoningOffUnsupported{Model: modelID} + } + warn := &llms.Warnings{} + reportLegacyOptions(warn, provider, modelID, options) + + var ( + resp *llms.ContentResponse + err error + ) switch provider { case "ai21": - return createAi21Completion(ctx, c.client, modelID, messages, options) + resp, err = createAi21Completion(ctx, c.client, modelID, messages, options, warn) case "amazon": - return createAmazonCompletion(ctx, c.client, modelID, messages, options) + resp, err = createAmazonCompletion(ctx, c.client, modelID, messages, options, warn) case "nova": - return createNovaCompletion(ctx, c.client, modelID, messages, options) + resp, err = createNovaCompletion(ctx, c.client, modelID, messages, options, warn) case "anthropic": - return createAnthropicCompletion(ctx, c.client, modelID, messages, options) + resp, err = createAnthropicCompletion(ctx, c.client, modelID, messages, options, warn) case "cohere": - return createCohereCompletion(ctx, c.client, modelID, messages, options) + resp, err = createCohereCompletion(ctx, c.client, modelID, messages, options, warn) case "meta": - return createMetaCompletion(ctx, c.client, modelID, messages, options) + resp, err = createMetaCompletion(ctx, c.client, modelID, messages, options, warn) case "deepseek": - return createDeepSeekCompletion(ctx, c.client, modelID, messages, options) + resp, err = createDeepSeekCompletion(ctx, c.client, modelID, messages, options, warn) default: return nil, errors.New("unsupported provider") } + if resp != nil { + resp.Warnings = warn.List() + } + return resp, err } // Helper function to process input text chat @@ -157,6 +173,28 @@ func processInputMessagesGeneric(messages []Message) string { return sb.String() } +func IsAi21Jamba(modelID string) bool { + return strings.Contains(modelID, "jamba") +} + +func IsCohereCommandR(modelID string) bool { + return strings.Contains(modelID, "command-r") +} + +func maxTokensOnTheWire( + warn *llms.Warnings, modelID string, options llms.CallOptions, defaultValue int, +) int { + sent := getMaxTokens(options.GetMaxTokens(), defaultValue) + if asked := options.MaxTokens; asked != nil && *asked <= 0 && sent != *asked { + warn.Add(llms.Warning{ + Kind: llms.WarningSubstitute, Option: "WithMaxTokens", Model: modelID, + Asked: strconv.Itoa(*asked), Sent: strconv.Itoa(sent), + Reason: "the legacy payload has to name an answer limit, so the door named one", + }) + } + return sent +} + func getMaxTokens(maxTokens, defaultValue int) int { if maxTokens <= 0 { return defaultValue diff --git a/llms/bedrock/internal/bedrockclient/bedrockclient_converse.go b/llms/bedrock/internal/bedrockclient/bedrockclient_converse.go index 595b953f2..db1b0bb13 100644 --- a/llms/bedrock/internal/bedrockclient/bedrockclient_converse.go +++ b/llms/bedrock/internal/bedrockclient/bedrockclient_converse.go @@ -4,9 +4,13 @@ import ( "bytes" "context" "encoding/json" + "errors" "fmt" + "maps" + "slices" "strings" + "github.com/vxcontrol/langchaingo/internal/numutil" "github.com/vxcontrol/langchaingo/llms" "github.com/vxcontrol/langchaingo/llms/reasoning" "github.com/vxcontrol/langchaingo/llms/streaming" @@ -42,14 +46,20 @@ func (c *ConverseClient) CreateCompletionConverse(ctx context.Context, input *Co return nil, fmt.Errorf("failed to build converse input: %w", err) } + warn := &llms.Warnings{} + reportConverseInput(warn, input, converseInput) + var resp *llms.ContentResponse if input.StreamingFunc != nil { resp, err = c.handleStreamingResponse(ctx, converseInput, input.StreamingFunc) } else { resp, err = c.handleNonStreamingResponse(ctx, converseInput) } + if resp != nil { + resp.Warnings = warn.List() + } if err != nil { - return nil, err + return resp, err } if err := validateConverseStructuredOutput(input, resp); err != nil { return resp, err @@ -64,8 +74,10 @@ type ConverseInput struct { MaxTokens *int Temperature *float64 TopP *float64 + TopK *int StopSequences []string Tools []llms.Tool + ToolChoice any StreamingFunc streaming.Callback ReasoningConfig *llms.ReasoningConfig EnableCaching bool @@ -89,6 +101,28 @@ type converseOutputConfig struct { type converseAdditionalModelRequestFields struct { Thinking *converseThinkingPayload `json:"thinking,omitempty" document:"thinking,omitempty"` OutputConfig *converseOutputConfig `json:"output_config,omitempty" document:"output_config,omitempty"` + TopK *int `json:"top_k,omitempty" document:"top_k,omitempty"` +} + +type converseNovaReasoningConfig struct { + Type string `json:"type" document:"type"` + MaxReasoningEffort string `json:"maxReasoningEffort,omitempty" document:"maxReasoningEffort,omitempty"` +} + +type converseNovaFields struct { + ReasoningConfig *converseNovaReasoningConfig `json:"reasoningConfig,omitempty" document:"reasoningConfig,omitempty"` +} + +type converseGrokReasoning struct { + Effort string `json:"effort,omitempty" document:"effort,omitempty"` +} + +type converseGrokFields struct { + Reasoning *converseGrokReasoning `json:"reasoning,omitempty" document:"reasoning,omitempty"` +} + +type converseGptOssFields struct { + ReasoningEffort string `json:"reasoning_effort" document:"reasoning_effort"` } // buildConverseInput converts our input to AWS Converse format @@ -101,8 +135,8 @@ func (c *ConverseClient) buildConverseInput(input *ConverseInput) (*bedrockrunti // Build inference configuration inferenceConfig := &types.InferenceConfiguration{} - if input.MaxTokens != nil { - inferenceConfig.MaxTokens = aws.Int32(int32(*input.MaxTokens)) + if input.MaxTokens != nil && *input.MaxTokens > 0 { + inferenceConfig.MaxTokens = aws.Int32(numutil.SaturateInt32(*input.MaxTokens)) } if input.Temperature != nil { inferenceConfig.Temperature = aws.Float32(float32(*input.Temperature)) @@ -139,9 +173,9 @@ func (c *ConverseClient) buildConverseInput(input *ConverseInput) (*bedrockrunti converseInput.System = systemPrompts } - // Add tool configuration if tools are provided - if len(input.Tools) > 0 { - toolConfig, err := c.convertToolsToToolConfig(input.Tools) + kind, _ := llms.ClassifyToolChoice(input.ToolChoice) + if len(input.Tools) > 0 && (kind != llms.ToolChoiceNone || carriesToolBlocks(converseMessages)) { + toolConfig, err := c.convertToolsToToolConfig(input.Tools, input.ToolChoice) if err != nil { return nil, fmt.Errorf("failed to convert tools: %w", err) } @@ -149,55 +183,105 @@ func (c *ConverseClient) buildConverseInput(input *ConverseInput) (*bedrockrunti } // Add additional model fields + additionalModelFields := converseAdditionalModelRequestFields{} + var familyFields any switch input.ReasoningConfig.ResolveMode() { case llms.ReasoningOn: - additionalModelFields := converseAdditionalModelRequestFields{} + maxTokens := 0 // Use 0 to let it use default maxTokens + if input.MaxTokens != nil { + maxTokens = *input.MaxTokens + } setAdaptive := func() { - effort := input.ReasoningConfig.GetEffort(0) + effort := reasoning.ClaudeClampEffort(input.ModelID, string(input.ReasoningConfig.GetEffort(maxTokens)), reasoning.ProviderBedrock) additionalModelFields.Thinking = &converseThinkingPayload{Type: "adaptive", Display: "summarized"} - additionalModelFields.OutputConfig = &converseOutputConfig{Effort: string(effort)} + additionalModelFields.OutputConfig = &converseOutputConfig{Effort: effort} // Adaptive models reject sampling params. inferenceConfig.Temperature = nil inferenceConfig.TopP = nil } - setBudget := func() { - maxTokens := 0 // Use 0 to let it use default maxTokens - if input.MaxTokens != nil { - maxTokens = *input.MaxTokens + setBudget := func() error { + tokens := reasoning.ClaudeClampBudget(input.ModelID, input.ReasoningConfig.GetTokens(maxTokens)) + if tokens <= 0 { + return &reasoning.ErrEffortHasNoBudget{ + Model: input.ModelID, + Effort: string(input.ReasoningConfig.GetEffort(maxTokens)), + } } - if tokens := input.ReasoningConfig.GetTokens(maxTokens); tokens > 0 { - additionalModelFields.Thinking = &converseThinkingPayload{Type: "enabled", BudgetTokens: tokens} - // Budget thinking requires temperature=1.0 and rejects top_p. + additionalModelFields.Thinking = &converseThinkingPayload{Type: "enabled", BudgetTokens: tokens} + if reasoning.ClaudeSupportsEffortWithBudget(input.ModelID, reasoning.ProviderBedrock) { + effort := reasoning.ClaudeClampEffort(input.ModelID, string(input.ReasoningConfig.GetEffort(maxTokens)), reasoning.ProviderBedrock) + additionalModelFields.OutputConfig = &converseOutputConfig{Effort: effort} + } + if isAnthropicModelID(input.ModelID) { + keepTopP := input.Temperature == nil && inferenceConfig.TopP != nil && + reasoning.ClaudeKeepsTopPWhileThinking(input.ModelID, float64(*inferenceConfig.TopP)) inferenceConfig.Temperature = aws.Float32(1.0) + if keepTopP { + inferenceConfig.Temperature = nil + } else { + inferenceConfig.TopP = nil + } + } + return nil + } + setNova := func() { + if input.ReasoningConfig.DelegatesDepth() { + familyFields = converseNovaFields{ + ReasoningConfig: &converseNovaReasoningConfig{Type: "enabled"}, + } + return + } + effort := reasoning.NovaEffort(string(input.ReasoningConfig.GetEffort(maxTokens))) + familyFields = converseNovaFields{ + ReasoningConfig: &converseNovaReasoningConfig{Type: "enabled", MaxReasoningEffort: effort}, + } + if reasoning.NovaClearsInferenceConfigAt(effort) { + inferenceConfig.MaxTokens = nil + inferenceConfig.Temperature = nil inferenceConfig.TopP = nil } } - switch { - case reasoning.ClaudeSupportsThinking(input.ModelID): - // Known thinking Claude: the model, not the flag, picks the mechanism. - if reasoning.ResolveClaudeAdaptive(input.ModelID, input.ReasoningConfig.Adaptive) { - setAdaptive() - } else { - setBudget() + setGrok := func() { + if input.ReasoningConfig.DelegatesDepth() { + familyFields = converseGrokFields{Reasoning: &converseGrokReasoning{}} + return + } + effort := reasoning.GrokEffort(input.ModelID, string(input.ReasoningConfig.GetEffort(maxTokens))) + familyFields = converseGrokFields{Reasoning: &converseGrokReasoning{Effort: effort}} + } + setGptOss := func() { + if input.ReasoningConfig.DelegatesDepth() { + return + } + if effort := reasoning.GptOssEffort(string(input.ReasoningConfig.GetEffort(maxTokens))); effort != "" { + familyFields = converseGptOssFields{ReasoningEffort: effort} } - case input.ReasoningConfig.Adaptive && isAnthropicModelID(input.ModelID) && - !reasoning.ClaudePredatesAdaptive(input.ModelID): - // Unclassified — assumed newer than the table — Claude generation with an - // explicit adaptive request. Known pre-adaptive families are excluded so - // adaptive is never sent to a model (e.g. claude-3-5-haiku) that rejects it. + } + switch reasoning.ResolveMechanism(input.ModelID, input.ReasoningConfig.Adaptive, + isAnthropicModelID(input.ModelID), c.supportsReasoning(input.ModelID)) { + case reasoning.MechanismAdaptive: setAdaptive() - case c.supportsReasoning(input.ModelID): - // Non-Claude reasoning model (gpt-oss, kimi): budget thinking. - setBudget() + case reasoning.MechanismBudget: + if err := setBudget(); err != nil { + return nil, err + } + case reasoning.MechanismNovaReasoningConfig: + setNova() + case reasoning.MechanismGrokEffort: + setGrok() + case reasoning.MechanismGptOssEffort: + setGptOss() } if additionalModelFields.Thinking != nil { - converseInput.AdditionalModelRequestFields = document.NewLazyDocument(additionalModelFields) + if budget := additionalModelFields.Thinking.BudgetTokens; budget > 0 { + ceiling := reasoning.ClaudeMaxTokensForBudget(budget, maxTokens) + inferenceConfig.MaxTokens = aws.Int32(numutil.SaturateInt32(ceiling)) + } } case llms.ReasoningOff: switch reasoning.ResolveOff(input.ModelID, reasoning.ProviderBedrock) { case reasoning.OffDisableClaude: - fields := converseAdditionalModelRequestFields{Thinking: &converseThinkingPayload{Type: "disabled"}} - converseInput.AdditionalModelRequestFields = document.NewLazyDocument(fields) + additionalModelFields.Thinking = &converseThinkingPayload{Type: "disabled"} case reasoning.OffUnsupported: return nil, &reasoning.ErrReasoningOffUnsupported{Model: input.ModelID} } @@ -208,6 +292,22 @@ func (c *ConverseClient) buildConverseInput(input *ConverseInput) (*bedrockrunti inferenceConfig.Temperature = nil inferenceConfig.TopP = nil } + if reasoning.ClaudeMutuallyExclusiveSampling(input.ModelID) && + inferenceConfig.Temperature != nil && inferenceConfig.TopP != nil { + inferenceConfig.TopP = nil + } + + if input.TopK != nil && isAnthropicModelID(input.ModelID) && + additionalModelFields.Thinking == nil && + !reasoning.ClaudeRejectsSampling(input.ModelID) { + additionalModelFields.TopK = input.TopK + } + switch { + case familyFields != nil: + converseInput.AdditionalModelRequestFields = document.NewLazyDocument(familyFields) + case additionalModelFields != converseAdditionalModelRequestFields{}: + converseInput.AdditionalModelRequestFields = document.NewLazyDocument(additionalModelFields) + } // Native AWS structured output rides on the top-level OutputConfig.TextFormat, // independent of the provider-specific reasoning fields above. @@ -220,24 +320,19 @@ func (c *ConverseClient) buildConverseInput(input *ConverseInput) (*bedrockrunti // aiMessageAccumulator accumulates consecutive AI messages into a single assistant message type aiMessageAccumulator struct { - textContent string - reasoning *reasoning.ContentReasoning + textBlocks []string + thoughts []reasoning.Block toolUseBlocks []types.ContentBlock cacheControl *CacheControl - hasAnyContent bool } // addTextContent adds text content to the accumulator func (a *aiMessageAccumulator) addTextContent(content string, reasoningContent *reasoning.ContentReasoning) { - if a.textContent == "" { - a.textContent = content + if content != "" { + a.textBlocks = append(a.textBlocks, content) } - if a.reasoning == nil && reasoningContent != nil { - a.reasoning = reasoningContent - } - - a.hasAnyContent = true + a.thoughts = append(a.thoughts, reasoningContent.Sequence()...) } // addToolUse adds a tool use block to the accumulator @@ -254,7 +349,6 @@ func (a *aiMessageAccumulator) addToolUse(toolCall *ToolCall) error { }, }) - a.hasAnyContent = true return nil } @@ -267,28 +361,17 @@ func (a *aiMessageAccumulator) setCacheControl(cacheControl *CacheControl) { // build creates a Converse Message from accumulated data func (a *aiMessageAccumulator) build() types.Message { - content := make([]types.ContentBlock, 0) - - // Add reasoning content if present - if a.reasoning != nil && (a.reasoning.Content != "" || len(a.reasoning.Signature) > 0) { - reasoningBlock := types.ReasoningContentBlockMemberReasoningText{ - Value: types.ReasoningTextBlock{ - Text: ptrStringOrNil(a.reasoning.Content), - Signature: ptrStringOrNil(string(a.reasoning.Signature)), - }, - } - content = append(content, &types.ContentBlockMemberReasoningContent{ - Value: &reasoningBlock, - }) - } + placed := reasoning.GroupByToolCalls(a.thoughts, len(a.toolUseBlocks)) + content := converseReasoningBlocks(placed[0]) - // Add text content if present - if a.textContent != "" { - content = append(content, &types.ContentBlockMemberText{Value: a.textContent}) + for _, text := range a.textBlocks { + content = append(content, &types.ContentBlockMemberText{Value: text}) } - // Add all tool use blocks - content = append(content, a.toolUseBlocks...) + for i, toolUse := range a.toolUseBlocks { + content = append(content, toolUse) + content = append(content, converseReasoningBlocks(placed[i+1])...) + } // Add cache point if needed if a.cacheControl != nil { @@ -311,18 +394,38 @@ func (a *aiMessageAccumulator) build() types.Message { } } +func converseReasoningBlocks(blocks []reasoning.Block) []types.ContentBlock { + content := make([]types.ContentBlock, 0, len(blocks)) + for _, block := range blocks { + if block.Redacted != nil { + content = append(content, &types.ContentBlockMemberReasoningContent{ + Value: &types.ReasoningContentBlockMemberRedactedContent{Value: block.Redacted}, + }) + continue + } + content = append(content, &types.ContentBlockMemberReasoningContent{ + Value: &types.ReasoningContentBlockMemberReasoningText{ + Value: types.ReasoningTextBlock{ + Text: aws.String(block.Text), + Signature: ptrStringOrNil(string(block.Signature)), + }, + }, + }) + } + return content +} + // reset clears the accumulator func (a *aiMessageAccumulator) reset() { - a.textContent = "" - a.reasoning = nil + a.textBlocks = nil + a.thoughts = nil a.toolUseBlocks = nil a.cacheControl = nil - a.hasAnyContent = false } // isEmpty returns true if no content has been accumulated func (a *aiMessageAccumulator) isEmpty() bool { - return !a.hasAnyContent + return len(a.textBlocks) == 0 && len(a.thoughts) == 0 && len(a.toolUseBlocks) == 0 } // toolResultAccumulator accumulates consecutive tool result messages into a single user message @@ -382,8 +485,8 @@ func (c *ConverseClient) convertMessages(messages []Message) ([]types.Message, [ flushAI := func() error { if !aiAccum.isEmpty() { converseMessages = append(converseMessages, aiAccum.build()) - aiAccum.reset() } + aiAccum.reset() return nil } @@ -396,6 +499,17 @@ func (c *ConverseClient) convertMessages(messages []Message) ([]types.Message, [ return nil } + var humanBlocks []types.ContentBlock + flushHuman := func() { + if len(humanBlocks) > 0 { + converseMessages = append(converseMessages, types.Message{ + Role: types.ConversationRoleUser, + Content: humanBlocks, + }) + humanBlocks = nil + } + } + for i, msg := range messages { switch msg.Role { case llms.ChatMessageTypeSystem: @@ -413,7 +527,6 @@ func (c *ConverseClient) convertMessages(messages []Message) ([]types.Message, [ return nil, nil, err } - // Convert and add user message directly converseMsg, err := c.convertUserOrAssistantMessage(msg) if err != nil { return nil, nil, err @@ -421,7 +534,11 @@ func (c *ConverseClient) convertMessages(messages []Message) ([]types.Message, [ if msg.CacheControl != nil { converseMsg.Content = append(converseMsg.Content, c.createCachePointBlock(msg.CacheControl)) } - converseMessages = append(converseMessages, converseMsg) + humanBlocks = append(humanBlocks, converseMsg.Content...) + + if nextSpeakingRole(messages, i) != llms.ChatMessageTypeHuman { + flushHuman() + } case llms.ChatMessageTypeAI: // Flush tool results if any before processing AI message @@ -518,7 +635,24 @@ func (c *ConverseClient) addCachePointToMessages(messages []types.Message) { }) } -// convertUserOrAssistantMessage converts user or assistant messages +func nextSpeakingRole(messages []Message, from int) llms.ChatMessageType { + for _, msg := range messages[from+1:] { + if msg.Role != llms.ChatMessageTypeSystem && !isEmptyAssistantPart(msg) { + return msg.Role + } + } + + return "" +} + +func isEmptyAssistantPart(msg Message) bool { + return msg.Role == llms.ChatMessageTypeAI && msg.ToolCall == nil && msg.Content == "" && + len(msg.Reasoning.Sequence()) == 0 +} + +// ErrUnsupportedImageFormat reports a MIME type Converse has no image format for. +var ErrUnsupportedImageFormat = errors.New("bedrock: unsupported image mime type") + func (c *ConverseClient) convertUserOrAssistantMessage(msg Message) (types.Message, error) { var role types.ConversationRole if msg.Role == llms.ChatMessageTypeHuman { @@ -529,24 +663,19 @@ func (c *ConverseClient) convertUserOrAssistantMessage(msg Message) (types.Messa var contentBlocks []types.ContentBlock - // For AI messages with reasoning, add reasoning blocks first - if msg.Role == llms.ChatMessageTypeAI && msg.Reasoning != nil { - // Add thinking block if present - if msg.Reasoning.Content != "" || len(msg.Reasoning.Signature) > 0 { - reasoningBlock := types.ReasoningContentBlockMemberReasoningText{ - Value: types.ReasoningTextBlock{ - Text: ptrStringOrNil(msg.Reasoning.Content), - Signature: ptrStringOrNil(string(msg.Reasoning.Signature)), - }, - } - contentBlocks = append(contentBlocks, &types.ContentBlockMemberReasoningContent{ - Value: &reasoningBlock, - }) + switch { + case msg.Type == AnthropicMessageTypeImage && msg.Content != "": + format := mimeTypeToFormat(msg.MimeType) + if format == "" { + return types.Message{}, fmt.Errorf("%w: %s", ErrUnsupportedImageFormat, msg.MimeType) } - } - - // Handle text content - if msg.Content != "" { + contentBlocks = append(contentBlocks, &types.ContentBlockMemberImage{ + Value: types.ImageBlock{ + Format: types.ImageFormat(format), + Source: &types.ImageSourceMemberBytes{Value: []byte(msg.Content)}, + }, + }) + case msg.Content != "": contentBlocks = append(contentBlocks, &types.ContentBlockMemberText{ Value: msg.Content, }) @@ -593,7 +722,7 @@ func (c *ConverseClient) convertToolCallInput(args any) (any, error) { } // convertToolsToToolConfig converts llms.Tool to Converse ToolConfiguration -func (c *ConverseClient) convertToolsToToolConfig(tools []llms.Tool) (*types.ToolConfiguration, error) { +func (c *ConverseClient) convertToolsToToolConfig(tools []llms.Tool, choice any) (*types.ToolConfiguration, error) { var converseTools []types.Tool for _, tool := range tools { @@ -624,10 +753,56 @@ func (c *ConverseClient) convertToolsToToolConfig(tools []llms.Tool) (*types.Too return &types.ToolConfiguration{ Tools: converseTools, - ToolChoice: &types.ToolChoiceMemberAuto{}, + ToolChoice: converseToolChoice(choice), }, nil } +// converseToolChoice carries the caller's choice to the wire. An unset or +// unrecognized choice leaves the decision to the model. +func carriesToolBlocks(messages []types.Message) bool { + for _, message := range messages { + for _, block := range message.Content { + switch block.(type) { + case *types.ContentBlockMemberToolUse, *types.ContentBlockMemberToolResult: + return true + } + } + } + return false +} + +func converseToolChoice(choice any) types.ToolChoice { + switch kind, name := llms.ClassifyToolChoice(choice); kind { + case llms.ToolChoiceNamed: + return &types.ToolChoiceMemberTool{Value: types.SpecificToolChoice{Name: &name}} + case llms.ToolChoiceAny: + return &types.ToolChoiceMemberAny{} + default: + return &types.ToolChoiceMemberAuto{} + } +} + +type converseToolCallBuilder struct { + id string + name string + arguments strings.Builder +} + +func (b *converseToolCallBuilder) streamingCall() streaming.ToolCall { + return streaming.ToolCall{ID: b.id, Name: b.name, Arguments: b.arguments.String()} +} + +func (b *converseToolCallBuilder) toolCall() llms.ToolCall { + return llms.ToolCall{ + ID: b.id, + Type: "function", + FunctionCall: &llms.FunctionCall{ + Name: b.name, + Arguments: b.arguments.String(), + }, + } +} + // handleNonStreamingResponse handles non-streaming responses func (c *ConverseClient) handleNonStreamingResponse(ctx context.Context, input *bedrockruntime.ConverseInput) (*llms.ContentResponse, error) { response, err := c.client.Converse(ctx, input) @@ -661,19 +836,49 @@ func (c *ConverseClient) handleStreamingResponse(ctx context.Context, input *bed } // processStreamingResponse processes streaming events +func deliverToolCall( + ctx context.Context, callback streaming.Callback, builder *converseToolCallBuilder, +) (llms.ToolCall, error) { + if callback != nil { + chunk := streaming.Chunk{Type: streaming.ChunkTypeToolCall, ToolCall: builder.streamingCall()} + if err := callback(ctx, chunk); err != nil { + return llms.ToolCall{}, err + } + } + + return builder.toolCall(), nil +} + +func salvageToolCalls( + ctx context.Context, callback streaming.Callback, pending map[int32]*converseToolCallBuilder, +) ([]llms.ToolCall, error) { + calls := make([]llms.ToolCall, 0, len(pending)) + for _, index := range slices.Sorted(maps.Keys(pending)) { + call, err := deliverToolCall(ctx, callback, pending[index]) + if err != nil { + return calls, err + } + calls = append(calls, call) + } + + return calls, nil +} + func (c *ConverseClient) processStreamingResponse(ctx context.Context, response *bedrockruntime.ConverseStreamOutput, callback streaming.Callback) (*llms.ContentResponse, error) { var fullContent strings.Builder - var reasoningContent strings.Builder - var signature bytes.Buffer + var reasoningDeltas converseReasoningStream var toolCalls []llms.ToolCall var stopReason string - currentToolCalls := make(map[string]*streaming.ToolCall) // Track streaming tool calls by ID + var streamErr error + var usage *types.TokenUsage + currentToolCalls := make(map[int32]*converseToolCallBuilder) // Track streaming tool calls by content block index defer streaming.CallWithDone(ctx, callback) stream := response.GetStream() defer stream.Close() +DoStream: for event := range stream.Events() { switch e := event.(type) { case *types.ConverseStreamOutputMemberContentBlockDelta: @@ -687,37 +892,26 @@ func (c *ConverseClient) processStreamingResponse(ctx context.Context, response Content: delta.Value, } if err := callback(ctx, chunk); err != nil { - return nil, err + streamErr = err + break DoStream } } case *types.ContentBlockDeltaMemberReasoningContent: - if callback != nil { - switch block := delta.Value.(type) { - case *types.ReasoningContentBlockDeltaMemberText: - reasoningContent.WriteString(block.Value) - chunk := streaming.Chunk{ - Type: streaming.ChunkTypeReasoning, - Reasoning: &reasoning.ContentReasoning{Content: block.Value}, - } - if err := callback(ctx, chunk); err != nil { - return nil, err - } - case *types.ReasoningContentBlockDeltaMemberSignature: - if len(block.Value) > 0 { - signature.WriteString(block.Value) - } + text := reasoningDeltas.add(aws.ToInt32(e.Value.ContentBlockIndex), delta.Value) + if text != "" && callback != nil { + chunk := streaming.Chunk{ + Type: streaming.ChunkTypeReasoning, + Reasoning: &reasoning.ContentReasoning{Content: text}, + } + if err := callback(ctx, chunk); err != nil { + streamErr = err + break DoStream } } case *types.ContentBlockDeltaMemberToolUse: - // Handle tool use delta (accumulate input arguments) if delta.Value.Input != nil { - // delta.Value.Input is already a partial JSON string - inputStr := *delta.Value.Input - - // Find the active tool call and accumulate arguments - for _, toolCall := range currentToolCalls { - toolCall.Arguments += inputStr - break // Only one active tool call at a time typically + if builder, ok := currentToolCalls[aws.ToInt32(e.Value.ContentBlockIndex)]; ok { + builder.arguments.WriteString(*delta.Value.Input) } } } @@ -725,97 +919,109 @@ func (c *ConverseClient) processStreamingResponse(ctx context.Context, response case *types.ConverseStreamOutputMemberContentBlockStart: if e.Value.Start != nil { if toolUse, ok := e.Value.Start.(*types.ContentBlockStartMemberToolUse); ok { - // Create streaming tool call, arguments will come through delta events - toolCall := &streaming.ToolCall{ - ID: *toolUse.Value.ToolUseId, - Name: *toolUse.Value.Name, - Arguments: "", + reasoningDeltas.toolCall(aws.ToInt32(e.Value.ContentBlockIndex)) + currentToolCalls[aws.ToInt32(e.Value.ContentBlockIndex)] = &converseToolCallBuilder{ + id: aws.ToString(toolUse.Value.ToolUseId), + name: aws.ToString(toolUse.Value.Name), } - - currentToolCalls[*toolUse.Value.ToolUseId] = toolCall - - // Don't send chunk here, will send complete one in ContentBlockStop } } case *types.ConverseStreamOutputMemberContentBlockStop: - // Handle tool call completion - for _, toolCall := range currentToolCalls { - // Send complete tool call through streaming - if callback != nil { - streamChunk := streaming.Chunk{ - Type: streaming.ChunkTypeToolCall, - ToolCall: *toolCall, - } - if err := callback(ctx, streamChunk); err != nil { - return nil, err - } - } - - // Convert streaming tool call to final llms.ToolCall - finalToolCall := llms.ToolCall{ - ID: toolCall.ID, - Type: "function", - FunctionCall: &llms.FunctionCall{ - Name: toolCall.Name, - Arguments: toolCall.Arguments, - }, + index := aws.ToInt32(e.Value.ContentBlockIndex) + if builder, ok := currentToolCalls[index]; ok { + delete(currentToolCalls, index) + call, err := deliverToolCall(ctx, callback, builder) + if err != nil { + streamErr = err + break DoStream } - toolCalls = append(toolCalls, finalToolCall) + toolCalls = append(toolCalls, call) } - // Clear current tool calls after completion - currentToolCalls = make(map[string]*streaming.ToolCall) case *types.ConverseStreamOutputMemberMessageStop: // The terminal event carries the stop reason (end_turn, tool_use, // max_tokens, guardrail_intervened, content_filtered, ...). stopReason = string(e.Value.StopReason) // Stream completed - ensure any remaining tool calls are added - for _, toolCall := range currentToolCalls { - finalToolCall := llms.ToolCall{ - ID: toolCall.ID, - Type: "function", - FunctionCall: &llms.FunctionCall{ - Name: toolCall.Name, - Arguments: toolCall.Arguments, - }, - } - toolCalls = append(toolCalls, finalToolCall) + salvaged, err := salvageToolCalls(ctx, callback, currentToolCalls) + toolCalls = append(toolCalls, salvaged...) + currentToolCalls = nil + if err != nil { + streamErr = err + break DoStream } + case *types.ConverseStreamOutputMemberMetadata: + usage = e.Value.Usage } } if err := stream.Err(); err != nil { - return nil, fmt.Errorf("stream error: %w", err) - } - - var sig []byte - if signature.Len() > 0 { - sig = signature.Bytes() + streamErr = fmt.Errorf("stream error: %w", err) } choice := &llms.ContentChoice{ Content: fullContent.String(), ToolCalls: toolCalls, GenerationInfo: make(map[string]any), - Reasoning: c.processReasoning(reasoningContent.String(), sig), + Reasoning: reasoningDeltas.result(), StopReason: stopReason, + Truncated: llms.IsTruncated(stopReason), } + applyConverseUsage(choice.GenerationInfo, usage) result := &llms.ContentResponse{ Choices: []*llms.ContentChoice{choice}, } - return result, nil + return result, streamErr } -func (c *ConverseClient) processReasoning(reasoningContent string, signature []byte) *reasoning.ContentReasoning { - if reasoningContent == "" && len(signature) == 0 { - return nil +func applyConverseUsage(info map[string]any, usage *types.TokenUsage) { + if info == nil || usage == nil { + return } - return &reasoning.ContentReasoning{ - Content: reasoningContent, - Signature: signature, + var promptTokens int + if usage.InputTokens != nil { + info["input_tokens"] = int(*usage.InputTokens) + promptTokens += int(*usage.InputTokens) + } + if usage.OutputTokens != nil { + info["output_tokens"] = int(*usage.OutputTokens) + info["CompletionTokens"] = int(*usage.OutputTokens) + } + if usage.TotalTokens != nil { + info["total_tokens"] = int(*usage.TotalTokens) + info["TotalTokens"] = int(*usage.TotalTokens) } + if usage.CacheReadInputTokens != nil { + info["cacheReadInputTokens"] = int(*usage.CacheReadInputTokens) + info["CacheReadInputTokens"] = int(*usage.CacheReadInputTokens) + info["PromptCachedTokens"] = int(*usage.CacheReadInputTokens) + promptTokens += int(*usage.CacheReadInputTokens) + } + if usage.CacheWriteInputTokens != nil { + info["cacheWriteInputTokens"] = int(*usage.CacheWriteInputTokens) + info["CacheCreationInputTokens"] = int(*usage.CacheWriteInputTokens) + promptTokens += int(*usage.CacheWriteInputTokens) + } + info["PromptTokens"] = promptTokens +} + +type converseReasoningStream struct { + streamedReasoning +} + +func (a *converseReasoningStream) add(index int32, delta types.ReasoningContentBlockDelta) (readableText string) { + switch block := delta.(type) { + case *types.ReasoningContentBlockDeltaMemberText: + a.text(index, block.Value) + return block.Value + case *types.ReasoningContentBlockDeltaMemberSignature: + a.signature(index, block.Value) + case *types.ReasoningContentBlockDeltaMemberRedactedContent: + a.encrypted(index, block.Value) + } + return "" } // convertConverseResponse converts Converse response to ContentResponse @@ -827,6 +1033,7 @@ func (c *ConverseClient) convertConverseResponse(response *bedrockruntime.Conver choice := &llms.ContentChoice{ GenerationInfo: make(map[string]any), } + var thoughts reasoning.Collector // Handle different output types switch output := response.Output.(type) { @@ -861,55 +1068,30 @@ func (c *ConverseClient) convertConverseResponse(response *bedrockruntime.Conver }, } choice.ToolCalls = append(choice.ToolCalls, toolCall) + thoughts.ToolCall() case *types.ContentBlockMemberReasoningContent: - // The block.Value is of type ReasoningContentBlock switch content := block.Value.(type) { case *types.ReasoningContentBlockMemberReasoningText: - reasoningText := "" - if content.Value.Text != nil { - reasoningText = *content.Value.Text - } var sig []byte if content.Value.Signature != nil { sig = []byte(*content.Value.Signature) } - choice.Reasoning = c.processReasoning(reasoningText, sig) + thoughts.Thought(aws.ToString(content.Value.Text), sig) + case *types.ReasoningContentBlockMemberRedactedContent: + thoughts.Encrypted(content.Value) } } } - } + choice.Reasoning = thoughts.Reasoning() // The stop reason lives on the response, not inside types.Message. Surfacing it // distinguishes end_turn from tool_use, max_tokens, guardrail_intervened, // content_filtered and malformed-output states. choice.StopReason = string(response.StopReason) + choice.Truncated = llms.IsTruncated(string(response.StopReason)) - // Add usage information - if response.Usage != nil { - if response.Usage.InputTokens != nil { - choice.GenerationInfo["input_tokens"] = *response.Usage.InputTokens - choice.GenerationInfo["PromptTokens"] = *response.Usage.InputTokens - } - if response.Usage.OutputTokens != nil { - choice.GenerationInfo["output_tokens"] = *response.Usage.OutputTokens - choice.GenerationInfo["CompletionTokens"] = *response.Usage.OutputTokens - } - if response.Usage.TotalTokens != nil { - choice.GenerationInfo["total_tokens"] = *response.Usage.TotalTokens - choice.GenerationInfo["TotalTokens"] = *response.Usage.TotalTokens - } - // Add cache metrics if available - if response.Usage.CacheReadInputTokens != nil { - choice.GenerationInfo["cacheReadInputTokens"] = *response.Usage.CacheReadInputTokens - choice.GenerationInfo["CacheReadInputTokens"] = *response.Usage.CacheReadInputTokens - choice.GenerationInfo["PromptCachedTokens"] = *response.Usage.CacheReadInputTokens - } - if response.Usage.CacheWriteInputTokens != nil { - choice.GenerationInfo["cacheWriteInputTokens"] = *response.Usage.CacheWriteInputTokens - choice.GenerationInfo["CacheCreationInputTokens"] = *response.Usage.CacheWriteInputTokens - } - } + applyConverseUsage(choice.GenerationInfo, response.Usage) return &llms.ContentResponse{ Choices: []*llms.ContentChoice{choice}, @@ -918,29 +1100,8 @@ func (c *ConverseClient) convertConverseResponse(response *bedrockruntime.Conver // Helper methods for model detection -// supportsReasoning checks if the model supports reasoning func (c *ConverseClient) supportsReasoning(modelID string) bool { - // Claude 4+ and select non-Claude models support reasoning. - reasoningModels := []string{ - "anthropic.claude-fable-5", - "anthropic.claude-sonnet-5", - "anthropic.claude-opus-5", - "anthropic.claude-opus-4-", - "anthropic.claude-sonnet-4-", - "anthropic.claude-haiku-4-", - "openai.gpt-oss-120b", - "openai.gpt-oss-20b", - "moonshot.kimi-k2-thinking", - "minimax.minimax-m2.5", - "minimax.minimax-m2.1", - } - - for _, model := range reasoningModels { - if strings.Contains(modelID, model) { - return true - } - } - return false + return reasoning.IsReasoningModel(modelID) } // isAnthropicModelID reports whether the Bedrock model ID belongs to the Claude diff --git a/llms/bedrock/internal/bedrockclient/bedrockclient_converse_test.go b/llms/bedrock/internal/bedrockclient/bedrockclient_converse_test.go index 1d6ca780b..b75dc5860 100644 --- a/llms/bedrock/internal/bedrockclient/bedrockclient_converse_test.go +++ b/llms/bedrock/internal/bedrockclient/bedrockclient_converse_test.go @@ -3,6 +3,7 @@ package bedrockclient import ( "context" "encoding/json" + "math" "testing" "github.com/aws/aws-sdk-go-v2/service/bedrockruntime" @@ -10,6 +11,7 @@ import ( "github.com/aws/aws-sdk-go-v2/service/bedrockruntime/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" "github.com/vxcontrol/langchaingo/llms" "github.com/vxcontrol/langchaingo/llms/reasoning" ) @@ -225,9 +227,16 @@ func TestConverseClient_ModelDetection(t *testing.T) { assert.True(t, client.supportsReasoning("us.anthropic.claude-sonnet-4-5-20250929-v1:0")) assert.True(t, client.supportsReasoning("minimax.minimax-m2.5")) assert.True(t, client.supportsReasoning("minimax.minimax-m2.1")) - assert.False(t, client.supportsReasoning("minimax.minimax-m2")) + assert.True(t, client.supportsReasoning("minimax.minimax-m2")) + assert.True(t, client.supportsReasoning("us.deepseek.r1-v1:0")) + assert.True(t, client.supportsReasoning("deepseek.v3.2")) + assert.True(t, client.supportsReasoning("zai.glm-4.7")) + assert.True(t, client.supportsReasoning("moonshotai.kimi-k2.5")) + assert.True(t, client.supportsReasoning("us.amazon.nova-2-lite-v1:0")) assert.False(t, client.supportsReasoning("us.amazon.nova-pro-v1:0")) assert.False(t, client.supportsReasoning("anthropic.claude-3-sonnet-20240229-v1:0")) + assert.False(t, client.supportsReasoning("meta.llama3-70b-instruct-v1:0")) + assert.False(t, client.supportsReasoning("cohere.command-r-plus-v1:0")) } func TestConverseClient_InferenceConfiguration(t *testing.T) { @@ -335,44 +344,44 @@ func TestConverseClient_AdaptiveReasoning(t *testing.T) { } func TestConverseClient_ReasoningOffDefaultOnSendsDisabled(t *testing.T) { - t.Skip("Skipping test due to model not being available") - - mockClient := &MockBedrockRuntimeClient{} - client := NewConverseClient(mockClient) - - var capturedInput *bedrockruntime.ConverseInput - mockClient.On("Converse", mock.Anything, mock.MatchedBy(func(input *bedrockruntime.ConverseInput) bool { - capturedInput = input - return true - }), mock.Anything).Return(&bedrockruntime.ConverseOutput{ - Output: &types.ConverseOutputMemberMessage{ - Value: types.Message{ - Role: types.ConversationRoleAssistant, - Content: []types.ContentBlock{&types.ContentBlockMemberText{Value: "ok"}}, - }, - }, - }, nil) - - input := &ConverseInput{ - ModelID: "us.anthropic.claude-sonnet-5-v1:0", // thinks by default - Messages: []Message{{Role: llms.ChatMessageTypeHuman, Content: "Hello", Type: "text"}}, - MaxTokens: ptr(2000), - ReasoningConfig: &llms.ReasoningConfig{Mode: llms.ReasoningOff}, - } + for _, model := range []string{"us.anthropic.claude-sonnet-5-v1:0", "us.anthropic.claude-opus-5-v1:0"} { + t.Run(model, func(t *testing.T) { + mockClient := &MockBedrockRuntimeClient{} + client := NewConverseClient(mockClient) + + var capturedInput *bedrockruntime.ConverseInput + mockClient.On("Converse", mock.Anything, mock.MatchedBy(func(input *bedrockruntime.ConverseInput) bool { + capturedInput = input + return true + }), mock.Anything).Return(&bedrockruntime.ConverseOutput{ + Output: &types.ConverseOutputMemberMessage{ + Value: types.Message{ + Role: types.ConversationRoleAssistant, + Content: []types.ContentBlock{&types.ContentBlockMemberText{Value: "ok"}}, + }, + }, + }, nil) - _, err := client.CreateCompletionConverse(t.Context(), input) - assert.NoError(t, err) + input := &ConverseInput{ + ModelID: model, + Messages: []Message{{Role: llms.ChatMessageTypeHuman, Content: "Hello", Type: "text"}}, + MaxTokens: ptr(2000), + ReasoningConfig: &llms.ReasoningConfig{Mode: llms.ReasoningOff, Effort: llms.ReasoningXHigh}, + } - if !assert.NotNil(t, capturedInput.AdditionalModelRequestFields) { - return + _, err := client.CreateCompletionConverse(t.Context(), input) + require.NoError(t, err) + + require.NotNil(t, capturedInput.AdditionalModelRequestFields) + raw, err := capturedInput.AdditionalModelRequestFields.MarshalSmithyDocument() + require.NoError(t, err) + var fields map[string]any + require.NoError(t, json.Unmarshal(raw, &fields)) + assert.Equal(t, map[string]any{"type": "disabled"}, fields["thinking"]) + assert.NotContains(t, fields, "output_config", "Opus 5 rejects xhigh and max next to disabled thinking") + mockClient.AssertExpectations(t) + }) } - raw, err := capturedInput.AdditionalModelRequestFields.MarshalSmithyDocument() - assert.NoError(t, err) - var fields map[string]any - assert.NoError(t, json.Unmarshal(raw, &fields)) - thinking, _ := fields["thinking"].(map[string]any) - assert.Equal(t, "disabled", thinking["type"]) - mockClient.AssertExpectations(t) } func TestConverseClient_ReasoningOffDefaultOffOmits(t *testing.T) { @@ -472,8 +481,9 @@ func TestConverseClient_BudgetReasoning(t *testing.T) { assert.True(t, ok && budget > 0, "budget thinking must carry a positive token budget") _, hasDisplay := thinking["display"] assert.False(t, hasDisplay, "budget thinking has no display field") - _, hasOutputConfig := fields["output_config"] - assert.False(t, hasOutputConfig, "budget thinking has no output_config") + outputConfig, _ := fields["output_config"].(map[string]any) + assert.Equal(t, "medium", outputConfig["effort"], + "Opus 4.6 accepts an effort alongside its budget") mockClient.AssertExpectations(t) } @@ -519,7 +529,7 @@ func TestConverseClient_AdaptiveReasoningNewModelFamily(t *testing.T) { thinking, _ := fields["thinking"].(map[string]any) assert.Equal(t, "adaptive", thinking["type"]) outputConfig, _ := fields["output_config"].(map[string]any) - assert.Equal(t, "xhigh", outputConfig["effort"]) + assert.Equal(t, "high", outputConfig["effort"], "Bedrock serves xhigh on Opus 5 only") mockClient.AssertExpectations(t) } @@ -586,8 +596,6 @@ func TestConverseClient_AdaptiveReasoningNonAnthropicModel(t *testing.T) { }, }, nil) - // Adaptive is an Anthropic request shape; other reasoning-capable models - // fall back to budget thinking. input := &ConverseInput{ ModelID: "openai.gpt-oss-120b-1:0", Messages: []Message{{Role: llms.ChatMessageTypeHuman, Content: "Hello", Type: "text"}}, @@ -600,23 +608,50 @@ func TestConverseClient_AdaptiveReasoningNonAnthropicModel(t *testing.T) { assert.NoError(t, err) assert.NotNil(t, capturedInput.InferenceConfig.Temperature, "sampling params stay when adaptive is not applied") - - if !assert.NotNil(t, capturedInput.AdditionalModelRequestFields) { - return - } + require.NotNil(t, capturedInput.AdditionalModelRequestFields) raw, err := capturedInput.AdditionalModelRequestFields.MarshalSmithyDocument() - assert.NoError(t, err) + require.NoError(t, err) var fields map[string]any - assert.NoError(t, json.Unmarshal(raw, &fields)) + require.NoError(t, json.Unmarshal(raw, &fields)) + assert.Equal(t, map[string]any{"reasoning_effort": "high"}, fields, + "an Anthropic request shape does not travel to another vendor") +} - thinking, _ := fields["thinking"].(map[string]any) - assert.Equal(t, "enabled", thinking["type"]) - budget, ok := thinking["budget_tokens"].(float64) - assert.True(t, ok && budget > 0, "fallback must carry a positive token budget") - _, hasOutputConfig := fields["output_config"] - assert.False(t, hasOutputConfig, "budget fallback has no output_config") +func TestConverseClient_AdaptiveReasoningModelWithoutMechanism(t *testing.T) { + mockClient := &MockBedrockRuntimeClient{} + client := NewConverseClient(mockClient) - mockClient.AssertExpectations(t) + var capturedInput *bedrockruntime.ConverseInput + mockClient.On("Converse", mock.Anything, mock.MatchedBy(func(input *bedrockruntime.ConverseInput) bool { + capturedInput = input + return true + }), mock.Anything).Return(&bedrockruntime.ConverseOutput{ + Output: &types.ConverseOutputMemberMessage{ + Value: types.Message{ + Role: types.ConversationRoleAssistant, + Content: []types.ContentBlock{&types.ContentBlockMemberText{Value: "ok"}}, + }, + }, + }, nil) + + input := &ConverseInput{ + ModelID: "qwen.qwen3-32b-v1:0", + Messages: []Message{{Role: llms.ChatMessageTypeHuman, Content: "Hello", Type: "text"}}, + MaxTokens: ptr(2000), + Temperature: ptr(0.8), + TopP: ptr(0.9), + ReasoningConfig: &llms.ReasoningConfig{Effort: llms.ReasoningHigh, Adaptive: true}, + } + + _, err := client.CreateCompletionConverse(t.Context(), input) + require.NoError(t, err) + + assert.Nil(t, capturedInput.AdditionalModelRequestFields, + "an Anthropic request shape does not travel to another vendor") + require.NotNil(t, capturedInput.InferenceConfig.Temperature, "the caller's temperature must survive") + assert.InDelta(t, 0.8, *capturedInput.InferenceConfig.Temperature, 0.0001) + require.NotNil(t, capturedInput.InferenceConfig.TopP, "the caller's top_p must survive") + assert.InDelta(t, 0.9, *capturedInput.InferenceConfig.TopP, 0.0001) } func TestConverseClient_AdaptiveReasoningPreAdaptiveModelGated(t *testing.T) { @@ -992,3 +1027,458 @@ func TestConvertMessages_MultipleToolCallVariants(t *testing.T) { }) } } + +func TestConverseClient_AdaptiveEffortDerivedFromMaxTokens(t *testing.T) { + mockClient := &MockBedrockRuntimeClient{} + client := NewConverseClient(mockClient) + + var capturedInput *bedrockruntime.ConverseInput + mockClient.On("Converse", mock.Anything, mock.MatchedBy(func(input *bedrockruntime.ConverseInput) bool { + capturedInput = input + return true + }), mock.Anything).Return(&bedrockruntime.ConverseOutput{ + Output: &types.ConverseOutputMemberMessage{ + Value: types.Message{ + Role: types.ConversationRoleAssistant, + Content: []types.ContentBlock{&types.ContentBlockMemberText{Value: "ok"}}, + }, + }, + }, nil) + + input := &ConverseInput{ + ModelID: "us.anthropic.claude-sonnet-5", + Messages: []Message{{Role: llms.ChatMessageTypeHuman, Content: "Hello", Type: "text"}}, + MaxTokens: ptr(32000), + ReasoningConfig: &llms.ReasoningConfig{Mode: llms.ReasoningOn, Tokens: 5000}, + } + + _, err := client.CreateCompletionConverse(t.Context(), input) + assert.NoError(t, err) + + if !assert.NotNil(t, capturedInput.AdditionalModelRequestFields) { + return + } + raw, err := capturedInput.AdditionalModelRequestFields.MarshalSmithyDocument() + assert.NoError(t, err) + var fields map[string]any + assert.NoError(t, json.Unmarshal(raw, &fields)) + + outputConfig, _ := fields["output_config"].(map[string]any) + assert.Equal(t, string(llms.ReasoningLow), outputConfig["effort"], + "5000 of 32000 max tokens is a low effort; deriving from a substituted default would say medium") +} + +func TestConverseClient_NoBudgetEffortForOpus45OnBedrock(t *testing.T) { + mockClient := &MockBedrockRuntimeClient{} + client := NewConverseClient(mockClient) + + var capturedInput *bedrockruntime.ConverseInput + mockClient.On("Converse", mock.Anything, mock.MatchedBy(func(input *bedrockruntime.ConverseInput) bool { + capturedInput = input + return true + }), mock.Anything).Return(&bedrockruntime.ConverseOutput{ + Output: &types.ConverseOutputMemberMessage{ + Value: types.Message{ + Role: types.ConversationRoleAssistant, + Content: []types.ContentBlock{&types.ContentBlockMemberText{Value: "ok"}}, + }, + }, + }, nil) + + input := &ConverseInput{ + ModelID: "us.anthropic.claude-opus-4-5-20251101-v1:0", + Messages: []Message{{Role: llms.ChatMessageTypeHuman, Content: "Hello", Type: "text"}}, + MaxTokens: ptr(8000), + ReasoningConfig: &llms.ReasoningConfig{Mode: llms.ReasoningOn, Effort: llms.ReasoningHigh}, + } + + _, err := client.CreateCompletionConverse(t.Context(), input) + assert.NoError(t, err) + + if !assert.NotNil(t, capturedInput.AdditionalModelRequestFields) { + return + } + raw, err := capturedInput.AdditionalModelRequestFields.MarshalSmithyDocument() + assert.NoError(t, err) + var fields map[string]any + assert.NoError(t, json.Unmarshal(raw, &fields)) + + thinking, _ := fields["thinking"].(map[string]any) + assert.Equal(t, "enabled", thinking["type"], "Opus 4.5 is budget-only") + _, hasOutputConfig := fields["output_config"] + assert.False(t, hasOutputConfig, "Bedrock rejects output_config.effort on Opus 4.5") +} + +func TestConverseClient_DropsTopPWhenBothSamplingParamsSet(t *testing.T) { + for _, model := range []string{ + "us.anthropic.claude-haiku-4-5-20251001-v1:0", + "us.anthropic.claude-sonnet-4-5-20250929-v1:0", + "us.anthropic.claude-opus-4-5-20251101-v1:0", + "us.anthropic.claude-sonnet-4-6", + "us.anthropic.claude-opus-4-6-v1", + } { + t.Run(model, func(t *testing.T) { + client := NewConverseClient(&MockBedrockRuntimeClient{}) + temp, topP := 0.5, 0.9 + got, err := client.buildConverseInput(&ConverseInput{ + ModelID: model, + Messages: []Message{{Role: llms.ChatMessageTypeHuman, Content: "hi", Type: "text"}}, + Temperature: &temp, + TopP: &topP, + }) + require.NoError(t, err) + cfg := got.InferenceConfig + require.NotNil(t, cfg) + require.NotNil(t, cfg.Temperature, + "%s takes a temperature; dropping both params would satisfy a not-both assertion", model) + assert.InDelta(t, 0.5, *cfg.Temperature, 0.0001, "the caller's temperature must survive for %s", model) + assert.Nil(t, cfg.TopP, "top_p is the one that goes for %s", model) + }) + } +} + +func TestConverseMaxTokensSaturatesInsteadOfWrapping(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + in int + want int32 + }{ + {"ordinary", 16384, 16384}, + {"exactly the ceiling", math.MaxInt32, math.MaxInt32}, + {"above the ceiling", math.MaxInt32 + 1, math.MaxInt32}, + {"far above the ceiling", 3_000_000_000, math.MaxInt32}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + maxTokens := tc.in + got, err := NewConverseClient(&MockBedrockRuntimeClient{}).buildConverseInput(&ConverseInput{ + ModelID: "anthropic.claude-3-sonnet-20240229-v1:0", + Messages: []Message{{Role: llms.ChatMessageTypeHuman, Content: "hi", Type: "text"}}, + MaxTokens: &maxTokens, + }) + require.NoError(t, err) + require.NotNil(t, got.InferenceConfig.MaxTokens) + assert.Equal(t, tc.want, *got.InferenceConfig.MaxTokens) + }) + } +} + +func TestConverseBudgetPinsTemperatureOnlyForClaude(t *testing.T) { + t.Parallel() + + build := func(t *testing.T, model string) *types.InferenceConfiguration { + t.Helper() + temp, topP, maxTokens := 0.2, 0.9, 8192 + got, err := NewConverseClient(&MockBedrockRuntimeClient{}).buildConverseInput(&ConverseInput{ + ModelID: model, + Messages: []Message{{Role: llms.ChatMessageTypeHuman, Content: "hi", Type: "text"}}, + Temperature: &temp, + TopP: &topP, + MaxTokens: &maxTokens, + ReasoningConfig: &llms.ReasoningConfig{Mode: llms.ReasoningOn, Tokens: 2048}, + }) + require.NoError(t, err) + require.NotNil(t, got.InferenceConfig) + return got.InferenceConfig + } + + t.Run("a Claude model takes the pin the mechanism requires", func(t *testing.T) { + t.Parallel() + cfg := build(t, "us.anthropic.claude-sonnet-4-5-v1:0") + require.NotNil(t, cfg.Temperature) + assert.InDelta(t, 1.0, *cfg.Temperature, 0.0001) + }) + + t.Run("a non-Claude reasoning model keeps the caller's sampling", func(t *testing.T) { + t.Parallel() + cfg := build(t, "openai.gpt-oss-120b-1:0") + require.NotNil(t, cfg.Temperature, "the caller's temperature must survive") + assert.InDelta(t, 0.2, *cfg.Temperature, 0.0001) + }) +} + +func TestConverseClient_NonClaudeThinkersTakeNoThinkingConfiguration(t *testing.T) { + for _, modelID := range []string{ + "us.deepseek.r1-v1:0", + "qwen.qwen3-32b-v1:0", + "mistral.magistral-small-2509", + "zai.glm-4.7", + "zai.glm-4.7-flash", + "zai.glm-5", + "minimax.minimax-m2.5", + "minimax.minimax-m2.1", + "minimax.minimax-m2", + "moonshot.kimi-k2-thinking", + "nvidia.nemotron-super-3-120b", + } { + t.Run(modelID, func(t *testing.T) { + mockClient := &MockBedrockRuntimeClient{} + client := NewConverseClient(mockClient) + + var capturedInput *bedrockruntime.ConverseInput + mockClient.On("Converse", mock.Anything, mock.MatchedBy(func(input *bedrockruntime.ConverseInput) bool { + capturedInput = input + return true + }), mock.Anything).Return(&bedrockruntime.ConverseOutput{ + Output: &types.ConverseOutputMemberMessage{ + Value: types.Message{ + Role: types.ConversationRoleAssistant, + Content: []types.ContentBlock{&types.ContentBlockMemberText{Value: "ok"}}, + }, + }, + }, nil) + + input := &ConverseInput{ + ModelID: modelID, + Messages: []Message{{Role: llms.ChatMessageTypeHuman, Content: "Hello", Type: "text"}}, + MaxTokens: ptr(8000), + ReasoningConfig: &llms.ReasoningConfig{Effort: llms.ReasoningMedium}, + } + + _, err := client.CreateCompletionConverse(t.Context(), input) + require.NoError(t, err) + + assert.Nil(t, capturedInput.AdditionalModelRequestFields, + "only a family with a documented mechanism carries one") + require.NotNil(t, capturedInput.InferenceConfig.MaxTokens) + assert.EqualValues(t, 8000, *capturedInput.InferenceConfig.MaxTokens, + "no foreign budget rule raises the caller ceiling") + }) + } +} + +func TestConverseClient_DeepSeekTakesNoThinkingConfiguration(t *testing.T) { + mockClient := &MockBedrockRuntimeClient{} + client := NewConverseClient(mockClient) + + var capturedInput *bedrockruntime.ConverseInput + mockClient.On("Converse", mock.Anything, mock.MatchedBy(func(input *bedrockruntime.ConverseInput) bool { + capturedInput = input + return true + }), mock.Anything).Return(&bedrockruntime.ConverseOutput{ + Output: &types.ConverseOutputMemberMessage{ + Value: types.Message{ + Role: types.ConversationRoleAssistant, + Content: []types.ContentBlock{&types.ContentBlockMemberText{Value: "ok"}}, + }, + }, + }, nil) + + input := &ConverseInput{ + ModelID: "us.deepseek.r1-v1:0", + Messages: []Message{{Role: llms.ChatMessageTypeHuman, Content: "Hello", Type: "text"}}, + MaxTokens: ptr(4096), + ReasoningConfig: &llms.ReasoningConfig{Effort: llms.ReasoningHigh}, + } + + _, err := client.CreateCompletionConverse(t.Context(), input) + require.NoError(t, err) + + assert.Nil(t, capturedInput.AdditionalModelRequestFields, + "the model reasons on its own and answers 400 to a thinking configuration") + require.NotNil(t, capturedInput.InferenceConfig.MaxTokens) + assert.EqualValues(t, 4096, *capturedInput.InferenceConfig.MaxTokens, + "no foreign budget rule raises the caller ceiling") +} + +// novaConverseFields runs one reasoning request through the client and returns the +// additionalModelRequestFields it built, plus the inference config it settled on. +func novaConverseFields(t *testing.T, modelID string, cfg *llms.ReasoningConfig, + temperature, topP *float64, +) (map[string]any, *types.InferenceConfiguration) { + t.Helper() + + mockClient := &MockBedrockRuntimeClient{} + client := NewConverseClient(mockClient) + + var capturedInput *bedrockruntime.ConverseInput + mockClient.On("Converse", mock.Anything, mock.MatchedBy(func(input *bedrockruntime.ConverseInput) bool { + capturedInput = input + return true + }), mock.Anything).Return(&bedrockruntime.ConverseOutput{ + Output: &types.ConverseOutputMemberMessage{ + Value: types.Message{ + Role: types.ConversationRoleAssistant, + Content: []types.ContentBlock{&types.ContentBlockMemberText{Value: "ok"}}, + }, + }, + }, nil) + + input := &ConverseInput{ + ModelID: modelID, + Messages: []Message{{Role: llms.ChatMessageTypeHuman, Content: "Hello", Type: "text"}}, + MaxTokens: ptr(8000), + Temperature: temperature, + TopP: topP, + ReasoningConfig: cfg, + } + + _, err := client.CreateCompletionConverse(t.Context(), input) + require.NoError(t, err) + require.NotNil(t, capturedInput.AdditionalModelRequestFields) + + raw, err := capturedInput.AdditionalModelRequestFields.MarshalSmithyDocument() + require.NoError(t, err) + var fields map[string]any + require.NoError(t, json.Unmarshal(raw, &fields)) + + return fields, capturedInput.InferenceConfig +} + +func TestConverseNovaSendsReasoningConfigNotThinking(t *testing.T) { + fields, cfg := novaConverseFields(t, "us.amazon.nova-2-lite-v1:0", + &llms.ReasoningConfig{Effort: llms.ReasoningMedium}, nil, nil) + + assert.Nil(t, fields["thinking"], + "Bedrock answers a thinking key on Nova with extraneous key [thinking] is not permitted") + + rc, _ := fields["reasoningConfig"].(map[string]any) + require.NotNil(t, rc, "Nova carries its reasoning in reasoningConfig") + assert.Equal(t, "enabled", rc["type"]) + assert.Equal(t, "medium", rc["maxReasoningEffort"]) + + require.NotNil(t, cfg) + assert.EqualValues(t, 8000, *cfg.MaxTokens, + "AWS unsets maxTokens only at the top effort; below it the caller's ceiling stands") +} + +func TestConverseNovaClampsEffortAndDropsSamplingAtHigh(t *testing.T) { + temperature, topP := 0.4, 0.9 + fields, cfg := novaConverseFields(t, "us.amazon.nova-2-lite-v1:0", + &llms.ReasoningConfig{Effort: llms.ReasoningMax}, &temperature, &topP) + + rc, _ := fields["reasoningConfig"].(map[string]any) + require.NotNil(t, rc) + assert.Equal(t, "high", rc["maxReasoningEffort"], "Nova takes only low, medium and high") + + require.NotNil(t, cfg) + assert.Nil(t, cfg.Temperature, "Nova rejects sampling params at the top effort") + assert.Nil(t, cfg.TopP) + assert.Nil(t, cfg.MaxTokens, "the same rule unsets maxTokens at the top effort") +} + +func TestConverseNovaKeepsMaxTokensBelowTopEffort(t *testing.T) { + for _, effort := range []llms.ReasoningEffort{llms.ReasoningLow, llms.ReasoningMedium} { + t.Run(string(effort), func(t *testing.T) { + temperature, topP := 0.4, 0.9 + _, cfg := novaConverseFields(t, "us.amazon.nova-2-lite-v1:0", + &llms.ReasoningConfig{Effort: effort}, &temperature, &topP) + + require.NotNil(t, cfg) + require.NotNil(t, cfg.MaxTokens, "dropping the ceiling here silently voids WithMaxTokens") + assert.EqualValues(t, 8000, *cfg.MaxTokens) + assert.NotNil(t, cfg.Temperature, "sampling is refused only at the top effort") + assert.NotNil(t, cfg.TopP) + }) + } +} + +func TestConverseGrokSendsReasoningEffort(t *testing.T) { + fields, _ := novaConverseFields(t, "us.xai.grok-4.6", + &llms.ReasoningConfig{Effort: llms.ReasoningMax}, nil, nil) + + assert.Nil(t, fields["thinking"], "Grok carries no thinking object") + + r, _ := fields["reasoning"].(map[string]any) + require.NotNil(t, r, "Grok carries its effort in a reasoning object") + assert.Equal(t, "xhigh", r["effort"], "4.6 gained xhigh") +} + +func TestConverseClient_RedactedReasoningReachesTheCaller(t *testing.T) { + mockClient := &MockBedrockRuntimeClient{} + client := NewConverseClient(mockClient) + encrypted := []byte{0xDE, 0xAD, 0xBE, 0xEF} + + mockClient.On("Converse", mock.Anything, mock.Anything, mock.Anything).Return(&bedrockruntime.ConverseOutput{ + Output: &types.ConverseOutputMemberMessage{ + Value: types.Message{ + Role: types.ConversationRoleAssistant, + Content: []types.ContentBlock{ + &types.ContentBlockMemberReasoningContent{ + Value: &types.ReasoningContentBlockMemberRedactedContent{Value: encrypted}, + }, + &types.ContentBlockMemberText{Value: "answer"}, + }, + }, + }, + }, nil) + + resp, err := client.CreateCompletionConverse(t.Context(), &ConverseInput{ + ModelID: "us.anthropic.claude-sonnet-4-5-20250929-v1:0", + Messages: []Message{{Role: llms.ChatMessageTypeHuman, Content: "Hello", Type: "text"}}, + }) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + require.NotNil(t, resp.Choices[0].Reasoning, "the vendor returned a thought, encrypted or not") + assert.Equal(t, []reasoning.Block{{Redacted: encrypted}}, resp.Choices[0].Reasoning.Sequence()) + assert.False(t, resp.Choices[0].Reasoning.HasContent(), "encrypted bytes are not readable thinking") +} + +func TestConverseClient_RedactedReasoningTravelsBack(t *testing.T) { + mockClient := &MockBedrockRuntimeClient{} + client := NewConverseClient(mockClient) + encrypted := []byte{0x01, 0x02, 0x03} + + var capturedInput *bedrockruntime.ConverseInput + mockClient.On("Converse", mock.Anything, mock.MatchedBy(func(input *bedrockruntime.ConverseInput) bool { + capturedInput = input + return true + }), mock.Anything).Return(&bedrockruntime.ConverseOutput{ + Output: &types.ConverseOutputMemberMessage{ + Value: types.Message{ + Role: types.ConversationRoleAssistant, + Content: []types.ContentBlock{&types.ContentBlockMemberText{Value: "ok"}}, + }, + }, + }, nil) + + _, err := client.CreateCompletionConverse(t.Context(), &ConverseInput{ + ModelID: "us.anthropic.claude-sonnet-4-5-20250929-v1:0", + Messages: []Message{ + {Role: llms.ChatMessageTypeHuman, Content: "Hello", Type: "text"}, + { + Role: llms.ChatMessageTypeAI, + Content: "answer", + Type: "text", + Reasoning: reasoning.FromBlocks([]reasoning.Block{{Redacted: encrypted}}), + }, + {Role: llms.ChatMessageTypeHuman, Content: "And now?", Type: "text"}, + }, + }) + require.NoError(t, err) + + var got []byte + for _, msg := range capturedInput.Messages { + for _, block := range msg.Content { + reasoningBlock, ok := block.(*types.ContentBlockMemberReasoningContent) + if !ok { + continue + } + if redacted, ok := reasoningBlock.Value.(*types.ReasoningContentBlockMemberRedactedContent); ok { + got = redacted.Value + } + } + } + assert.Equal(t, encrypted, got, "the replayed turn carries the encrypted block unchanged") +} + +func TestConverseReasoningStreamKeepsEachBlockApart(t *testing.T) { + t.Parallel() + + var acc converseReasoningStream + assert.Equal(t, "first", acc.add(0, &types.ReasoningContentBlockDeltaMemberText{Value: "first"})) + assert.Empty(t, acc.add(0, &types.ReasoningContentBlockDeltaMemberSignature{Value: "s1"})) + assert.Empty(t, acc.add(1, &types.ReasoningContentBlockDeltaMemberRedactedContent{Value: []byte{0x07, 0x08}})) + assert.Empty(t, acc.add(1, &types.ReasoningContentBlockDeltaMemberRedactedContent{Value: []byte{0x09}})) + acc.toolCall(2) + assert.Equal(t, "second", acc.add(3, &types.ReasoningContentBlockDeltaMemberText{Value: "second"})) + assert.Empty(t, acc.add(3, &types.ReasoningContentBlockDeltaMemberSignature{Value: "s2"})) + + assert.Equal(t, []reasoning.Block{ + {Text: "first", Signature: []byte("s1")}, + {Redacted: []byte{0x07, 0x08, 0x09}}, + {Text: "second", Signature: []byte("s2"), AfterToolCalls: 1}, + }, acc.result().Sequence()) +} diff --git a/llms/bedrock/internal/bedrockclient/bedrockclient_integration_test.go b/llms/bedrock/internal/bedrockclient/bedrockclient_integration_test.go index 03c10f36b..4c7f44434 100644 --- a/llms/bedrock/internal/bedrockclient/bedrockclient_integration_test.go +++ b/llms/bedrock/internal/bedrockclient/bedrockclient_integration_test.go @@ -175,16 +175,7 @@ func TestClient_CreateCompletion(t *testing.T) { }, }, StopReason: AnthropicCompletionReasonEndTurn, - Usage: struct { - InputTokens int32 `json:"input_tokens"` - OutputTokens int32 `json:"output_tokens"` - CacheCreationInputTokens int32 `json:"cache_creation_input_tokens,omitempty"` - CacheReadInputTokens int32 `json:"cache_read_input_tokens,omitempty"` - CacheCreation struct { - Ephemeral5mInputTokens int32 `json:"ephemeral_5m_input_tokens,omitempty"` - Ephemeral1hInputTokens int32 `json:"ephemeral_1h_input_tokens,omitempty"` - } `json:"cache_creation,omitempty"` - }{ + Usage: anthropicUsage{ InputTokens: 10, OutputTokens: 5, }, @@ -438,26 +429,11 @@ func TestClient_CreateCompletion_Streaming(t *testing.T) { chunks := []streamingCompletionResponseChunk{ { Type: "message_start", - Message: struct { - ID string `json:"id"` - Type string `json:"type"` - Role string `json:"role"` - Content []any `json:"content"` - Model string `json:"model"` - StopReason any `json:"stop_reason"` - StopSequence any `json:"stop_sequence"` - Usage struct { - InputTokens int32 `json:"input_tokens"` - OutputTokens int32 `json:"output_tokens"` - } `json:"usage"` - }{ + Message: anthropicStreamMessage{ ID: "msg-123", Type: "message", Role: "assistant", - Usage: struct { - InputTokens int32 `json:"input_tokens"` - OutputTokens int32 `json:"output_tokens"` - }{ + Usage: anthropicUsage{ InputTokens: 10, }, }, @@ -511,9 +487,7 @@ func TestClient_CreateCompletion_Streaming(t *testing.T) { }{ StopReason: AnthropicCompletionReasonEndTurn, }, - Usage: struct { - OutputTokens int32 `json:"output_tokens"` - }{ + Usage: anthropicUsage{ OutputTokens: 15, }, }, diff --git a/llms/bedrock/internal/bedrockclient/bedrockclient_test.go b/llms/bedrock/internal/bedrockclient/bedrockclient_test.go index a0b8ad634..461e86e1c 100644 --- a/llms/bedrock/internal/bedrockclient/bedrockclient_test.go +++ b/llms/bedrock/internal/bedrockclient/bedrockclient_test.go @@ -437,7 +437,8 @@ func TestGetAnthropicInputContent(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - result := getAnthropicInputContent(tt.message) + result, err := getAnthropicInputContent(tt.message) + require.NoError(t, err) tt.validate(t, result) }) } @@ -674,16 +675,7 @@ func TestAnthropicResponseParsing(t *testing.T) { }, StopReason: AnthropicCompletionReasonEndTurn, StopSequence: "", - Usage: struct { - InputTokens int32 `json:"input_tokens"` - OutputTokens int32 `json:"output_tokens"` - CacheCreationInputTokens int32 `json:"cache_creation_input_tokens,omitempty"` - CacheReadInputTokens int32 `json:"cache_read_input_tokens,omitempty"` - CacheCreation struct { - Ephemeral5mInputTokens int32 `json:"ephemeral_5m_input_tokens,omitempty"` - Ephemeral1hInputTokens int32 `json:"ephemeral_1h_input_tokens,omitempty"` - } `json:"cache_creation,omitempty"` - }{ + Usage: anthropicUsage{ InputTokens: 10, OutputTokens: 15, }, @@ -745,27 +737,12 @@ func TestAnthropicStreamingResponseChunk(t *testing.T) { name: "message_start chunk", chunk: streamingCompletionResponseChunk{ Type: "message_start", - Message: struct { - ID string `json:"id"` - Type string `json:"type"` - Role string `json:"role"` - Content []any `json:"content"` - Model string `json:"model"` - StopReason any `json:"stop_reason"` - StopSequence any `json:"stop_sequence"` - Usage struct { - InputTokens int32 `json:"input_tokens"` - OutputTokens int32 `json:"output_tokens"` - } `json:"usage"` - }{ + Message: anthropicStreamMessage{ ID: "msg-123", Type: "message", Role: "assistant", Model: "claude-3", - Usage: struct { - InputTokens int32 `json:"input_tokens"` - OutputTokens int32 `json:"output_tokens"` - }{ + Usage: anthropicUsage{ InputTokens: 25, }, }, @@ -805,9 +782,7 @@ func TestAnthropicStreamingResponseChunk(t *testing.T) { }{ StopReason: AnthropicCompletionReasonEndTurn, }, - Usage: struct { - OutputTokens int32 `json:"output_tokens"` - }{ + Usage: anthropicUsage{ OutputTokens: 12, }, }, diff --git a/llms/bedrock/internal/bedrockclient/bedrockclient_util.go b/llms/bedrock/internal/bedrockclient/bedrockclient_util.go index bf0f96746..ce5621970 100644 --- a/llms/bedrock/internal/bedrockclient/bedrockclient_util.go +++ b/llms/bedrock/internal/bedrockclient/bedrockclient_util.go @@ -1,6 +1,8 @@ package bedrockclient import ( + "bytes" + "encoding/json" "reflect" "github.com/aws/aws-sdk-go-v2/aws" @@ -97,15 +99,26 @@ func isSimpleType(t reflect.Type) bool { } // applyConverseStructuredOutput sets the native Converse OutputConfig.TextFormat -// from a per-call schema. Converse Structured Outputs is not Claude-only, so there -// is no local model gate here — an unsupported model surfaces as the provider 4xx. -// The AWS JsonSchemaDefinition.Schema field is a JSON string, so the raw schema is -// passed as-is with no second encoding. +// from a per-call schema. func applyConverseStructuredOutput(input *ConverseInput, converseInput *bedrockruntime.ConverseInput) error { so := input.StructuredOutput if so == nil { return nil } + if isAnthropicModelID(input.ModelID) && !reasoning.ClaudeSupportsStructuredOutputOnBedrock(input.ModelID) { + return &llms.ErrStructuredOutputUnsupported{ + Provider: providerBedrock, + Model: input.ModelID, + Reason: bedrockClaudeStructuredOutputReason, + } + } + if !isAnthropicModelID(input.ModelID) && !reasoning.BedrockSupportsStructuredOutput(input.ModelID) { + return &llms.ErrStructuredOutputUnsupported{ + Provider: providerBedrock, + Model: input.ModelID, + Reason: bedrockModelCardStructuredOutputReason, + } + } // Bedrock rejects an object schema that omits additionalProperties:false; // surface that documented, locally-detectable requirement as a typed error. if err := structuredoutput.RequireClosedObjects(so.Schema); err != nil { @@ -126,18 +139,22 @@ func applyConverseStructuredOutput(input *ConverseInput, converseInput *bedrockr return nil } +const ( + bedrockClaudeStructuredOutputReason = "Amazon Bedrock serves structured output for this Claude model on neither API" + bedrockModelCardStructuredOutputReason = "the model's Amazon Bedrock model card does not list structured outputs" +) + // applyAnthropicStructuredOutput folds a per-call schema into the legacy Anthropic -// output_config.format, preserving any effort already set. A known-legacy model that -// predates structured output is rejected with a typed error before the request. +// output_config.format, preserving any effort already set. func applyAnthropicStructuredOutput(input *anthropicTextGenerationInput, modelID string, so *llms.StructuredOutputConfig) error { if so == nil { return nil } - if !reasoning.ClaudeSupportsStructuredOutput(modelID) { + if !reasoning.ClaudeSupportsStructuredOutputOnBedrock(modelID) { return &llms.ErrStructuredOutputUnsupported{ Provider: providerBedrock, Model: modelID, - Reason: "model predates the output_config.format JSON Schema mode", + Reason: bedrockClaudeStructuredOutputReason, } } // Bedrock rejects an object schema that omits additionalProperties:false; @@ -182,3 +199,9 @@ func validateStructuredResponse(so *llms.StructuredOutputConfig, model string, r } return nil } + +func decodeExactNumbers(payload []byte, into any) error { + decoder := json.NewDecoder(bytes.NewReader(payload)) + decoder.UseNumber() + return decoder.Decode(into) +} diff --git a/llms/bedrock/internal/bedrockclient/bedrockclient_util_test.go b/llms/bedrock/internal/bedrockclient/bedrockclient_util_test.go index bea6e9b8a..eaa076c5e 100644 --- a/llms/bedrock/internal/bedrockclient/bedrockclient_util_test.go +++ b/llms/bedrock/internal/bedrockclient/bedrockclient_util_test.go @@ -3,6 +3,7 @@ package bedrockclient import ( "context" "errors" + "slices" "testing" "github.com/aws/aws-sdk-go-v2/service/bedrockruntime" @@ -207,7 +208,7 @@ func TestConverse_StructuredOutput_CoexistsWithReasoning(t *testing.T) { }), mock.Anything).Return(textOutput(`{"answer":"ok"}`, types.StopReasonEndTurn), nil) input := &ConverseInput{ - ModelID: "anthropic.claude-sonnet-5-v1:0", + ModelID: "anthropic.claude-opus-4-6-v1", Messages: []Message{{Role: llms.ChatMessageTypeHuman, Content: "hi", Type: "text"}}, ReasoningConfig: &llms.ReasoningConfig{Mode: llms.ReasoningOn, Adaptive: true, Effort: llms.ReasoningHigh}, StructuredOutput: soConfig(), @@ -307,3 +308,100 @@ func TestLegacyAnthropic_StructuredOutput_UnsupportedModel(t *testing.T) { var unsup *llms.ErrStructuredOutputUnsupported require.True(t, errors.As(err, &unsup), "legacy 3.x must be unsupported, got %v", err) } + +var ( + claudeWithoutStructuredOutputOnBedrock = []string{ + "us.anthropic.claude-opus-4-7", "us.anthropic.claude-opus-4-8", "us.anthropic.claude-opus-5", + "us.anthropic.claude-sonnet-5", "us.anthropic.claude-fable-5", "us.anthropic.claude-fable-5-1", + "anthropic.claude-3-sonnet-20240229-v1:0", + } + claudeWithStructuredOutputOnBedrock = []string{ + "us.anthropic.claude-opus-4-6-v1", "us.anthropic.claude-sonnet-4-6", "global.anthropic.claude-sonnet-4-6", + "anthropic.claude-sonnet-4-6", "anthropic.claude-sonnet-4-5-20250929-v1:0", + "us.anthropic.claude-opus-4-5-20251101-v1:0", "global.anthropic.claude-haiku-4-5-20251001-v1:0", + } +) + +func TestConverse_StructuredOutput_FollowsBedrocksClaudeList(t *testing.T) { + for _, model := range claudeWithoutStructuredOutputOnBedrock { + mockClient := &MockBedrockRuntimeClient{} + _, err := NewConverseClient(mockClient).CreateCompletionConverse(t.Context(), &ConverseInput{ + ModelID: model, + Messages: []Message{{Role: llms.ChatMessageTypeHuman, Content: "hi", Type: "text"}}, + StructuredOutput: soConfig(), + }) + var unsup *llms.ErrStructuredOutputUnsupported + require.ErrorAs(t, err, &unsup, model) + mockClient.AssertNotCalled(t, "Converse") + } + + for _, model := range append(slices.Clone(claudeWithStructuredOutputOnBedrock), "openai.gpt-oss-120b-1:0") { + mockClient := &MockBedrockRuntimeClient{} + var captured *bedrockruntime.ConverseInput + mockClient.On("Converse", mock.Anything, mock.MatchedBy(func(in *bedrockruntime.ConverseInput) bool { + captured = in + return true + }), mock.Anything).Return(textOutput(`{"answer":"ok"}`, types.StopReasonEndTurn), nil) + + _, err := NewConverseClient(mockClient).CreateCompletionConverse(t.Context(), &ConverseInput{ + ModelID: model, + Messages: []Message{{Role: llms.ChatMessageTypeHuman, Content: "hi", Type: "text"}}, + StructuredOutput: soConfig(), + }) + require.NoError(t, err, model) + require.NotNil(t, captured.OutputConfig, model) + } +} + +func TestConverse_StructuredOutput_FollowsTheModelCards(t *testing.T) { + for _, model := range []string{ + "us.amazon.nova-pro-v1:0", "us.amazon.nova-2-lite-v1:0", "us.meta.llama3-3-70b-instruct-v1:0", + "us.meta.llama4-maverick-17b-instruct-v1:0", "us.deepseek.r1-v1:0", "qwen.qwen3-vl-235b-a22b", + "mistral.mistral-large-2402-v1:0", + } { + mockClient := &MockBedrockRuntimeClient{} + _, err := NewConverseClient(mockClient).CreateCompletionConverse(t.Context(), &ConverseInput{ + ModelID: model, + Messages: []Message{{Role: llms.ChatMessageTypeHuman, Content: "hi", Type: "text"}}, + StructuredOutput: soConfig(), + }) + var unsup *llms.ErrStructuredOutputUnsupported + require.ErrorAs(t, err, &unsup, model) + mockClient.AssertNotCalled(t, "Converse") + } + + for _, model := range []string{ + "deepseek.v3.2", "qwen.qwen3-coder-next", "us-gov.nvidia.nemotron-nano-3-30b", + "mistral.mistral-large-3-675b-instruct", "zai.glm-5", + } { + mockClient := &MockBedrockRuntimeClient{} + var captured *bedrockruntime.ConverseInput + mockClient.On("Converse", mock.Anything, mock.MatchedBy(func(in *bedrockruntime.ConverseInput) bool { + captured = in + return true + }), mock.Anything).Return(textOutput(`{"answer":"ok"}`, types.StopReasonEndTurn), nil) + + _, err := NewConverseClient(mockClient).CreateCompletionConverse(t.Context(), &ConverseInput{ + ModelID: model, + Messages: []Message{{Role: llms.ChatMessageTypeHuman, Content: "hi", Type: "text"}}, + StructuredOutput: soConfig(), + }) + require.NoError(t, err, model) + require.NotNil(t, captured.OutputConfig, model) + } +} + +func TestLegacyAnthropic_StructuredOutput_FollowsBedrocksClaudeList(t *testing.T) { + t.Parallel() + + for _, model := range claudeWithoutStructuredOutputOnBedrock { + err := applyAnthropicStructuredOutput(&anthropicTextGenerationInput{}, model, soConfig()) + var unsup *llms.ErrStructuredOutputUnsupported + require.ErrorAs(t, err, &unsup, model) + } + for _, model := range claudeWithStructuredOutputOnBedrock { + input := anthropicTextGenerationInput{} + require.NoError(t, applyAnthropicStructuredOutput(&input, model, soConfig()), model) + require.NotNil(t, input.OutputConfig, model) + } +} diff --git a/llms/bedrock/internal/bedrockclient/converse_top_k_test.go b/llms/bedrock/internal/bedrockclient/converse_top_k_test.go new file mode 100644 index 000000000..21d330516 --- /dev/null +++ b/llms/bedrock/internal/bedrockclient/converse_top_k_test.go @@ -0,0 +1,104 @@ +package bedrockclient + +import ( + "encoding/json" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func additionalFields(t *testing.T, in *ConverseInput) map[string]any { + t.Helper() + + got, err := NewConverseClient(&MockBedrockRuntimeClient{}).buildConverseInput(in) + require.NoError(t, err) + if got.AdditionalModelRequestFields == nil { + return nil + } + raw, err := got.AdditionalModelRequestFields.MarshalSmithyDocument() + require.NoError(t, err) + var fields map[string]any + require.NoError(t, json.Unmarshal(raw, &fields)) + return fields +} + +func humanTurn() []Message { + return []Message{{Role: llms.ChatMessageTypeHuman, Content: "hi", Type: "text"}} +} + +func TestConverseCarriesTheTopKTheCallerAskedFor(t *testing.T) { + t.Parallel() + + topK := 40 + fields := additionalFields(t, &ConverseInput{ + ModelID: "us.anthropic.claude-haiku-4-5-20251001-v1:0", + Messages: humanTurn(), + TopK: &topK, + }) + + require.NotNil(t, fields, "a caller that named top_k gets additional model fields") + assert.EqualValues(t, 40, fields["top_k"], + "the vendor takes top_k beside thinking, and the legacy door already sends it") +} + +func TestConverseDropsTopKWhileThinking(t *testing.T) { + t.Parallel() + + topK, budget := 40, 2048 + fields := additionalFields(t, &ConverseInput{ + ModelID: "us.anthropic.claude-sonnet-4-5-20250929-v1:0", + Messages: humanTurn(), + TopK: &topK, + MaxTokens: &[]int{8192}[0], + ReasoningConfig: &llms.ReasoningConfig{Tokens: budget}, + }) + + require.NotNil(t, fields) + assert.Contains(t, fields, "thinking", "the request is a thinking one") + assert.NotContains(t, fields, "top_k", + "budget thinking rejects top_k, exactly as the legacy door already handles it") +} + +func TestConverseSendsNoAdditionalFieldsWhenTheCallerNamedNothing(t *testing.T) { + t.Parallel() + + fields := additionalFields(t, &ConverseInput{ + ModelID: "us.anthropic.claude-haiku-4-5-20251001-v1:0", + Messages: humanTurn(), + }) + + assert.Nil(t, fields, "a bare request must not grow a field the caller never named") +} + +func TestConverseKeepsTheNovaShapeWhenTopKIsNamed(t *testing.T) { + t.Parallel() + + topK := 40 + fields := additionalFields(t, &ConverseInput{ + ModelID: "us.amazon.nova-2-lite-v1:0", + Messages: humanTurn(), + TopK: &topK, + ReasoningConfig: &llms.ReasoningConfig{Effort: llms.ReasoningHigh}, + }) + + require.NotNil(t, fields) + assert.Contains(t, fields, "reasoningConfig", "nova keeps its own shape") + assert.NotContains(t, fields, "top_k", "top_k is an anthropic field, not a nova one") +} + +func TestConverseSendsNoTopKToAFamilyThatDoesNotDocumentIt(t *testing.T) { + t.Parallel() + + topK := 40 + fields := additionalFields(t, &ConverseInput{ + ModelID: "meta.llama3-70b-instruct-v1:0", + Messages: humanTurn(), + TopK: &topK, + }) + + assert.Nil(t, fields, + "top_k in additionalModelRequestFields is an anthropic field; inventing it elsewhere is a guess") +} diff --git a/llms/bedrock/internal/bedrockclient/converse_warnings.go b/llms/bedrock/internal/bedrockclient/converse_warnings.go new file mode 100644 index 000000000..ab5d909d6 --- /dev/null +++ b/llms/bedrock/internal/bedrockclient/converse_warnings.go @@ -0,0 +1,190 @@ +package bedrockclient + +import ( + "encoding/json" + "strconv" + + "github.com/aws/aws-sdk-go-v2/service/bedrockruntime" + "github.com/aws/aws-sdk-go-v2/service/bedrockruntime/types" + + "github.com/vxcontrol/langchaingo/llms" +) + +func reportConverseInput(warn *llms.Warnings, input *ConverseInput, built *bedrockruntime.ConverseInput) { + if built == nil { + return + } + model := input.ModelID + const ( + omitted = "the door left it off the converse request" + different = "the door put a different value on the converse request" + ) + + cfg := built.InferenceConfig + if input.Temperature != nil { + sent := (*float32)(nil) + if cfg != nil { + sent = cfg.Temperature + } + reportConverseFloat(warn, "WithTemperature", model, float32(*input.Temperature), sent) + } + if input.TopP != nil { + sent := (*float32)(nil) + if cfg != nil { + sent = cfg.TopP + } + reportConverseFloat(warn, "WithTopP", model, float32(*input.TopP), sent) + } + if input.MaxTokens != nil && *input.MaxTokens > 0 { + var sent *int32 + if cfg != nil { + sent = cfg.MaxTokens + } + switch { + case sent == nil: + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithMaxTokens", Model: model, + Asked: strconv.Itoa(*input.MaxTokens), Reason: omitted, + }) + case int(*sent) != *input.MaxTokens: + warn.Add(llms.Warning{ + Kind: llms.WarningClamp, Option: "WithMaxTokens", Model: model, + Asked: strconv.Itoa(*input.MaxTokens), Sent: strconv.FormatInt(int64(*sent), 10), + Reason: different, + }) + } + } + if len(input.StopSequences) > 0 && (cfg == nil || len(cfg.StopSequences) == 0) { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithStopWords", Model: model, + Asked: strconv.Itoa(len(input.StopSequences)) + " words", Reason: omitted, + }) + } + if input.TopK != nil && *input.TopK != 0 && !converseCarriesTopK(built) { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithTopK", Model: model, + Asked: strconv.Itoa(*input.TopK), Reason: omitted, + }) + } + if cfg := input.ReasoningConfig; cfg != nil && cfg.Effort != "" && cfg.Effort != llms.ReasoningNone { + sent, thinkingSent := converseEffortOnTheWire(built) + reportEffortClamp(warn, model, string(cfg.Effort), sent, thinkingSent, + cfg, converseThinkingBudget(built)) + } + choice, _ := llms.ClassifyToolChoice(input.ToolChoice) + if choice == llms.ToolChoiceNone && + built.ToolConfig != nil && built.ToolConfig.ToolChoice != nil { + if _, auto := built.ToolConfig.ToolChoice.(*types.ToolChoiceMemberAuto); auto { + warn.Add(llms.Warning{ + Kind: llms.WarningSubstitute, Option: "WithToolChoice", Model: model, + Asked: "none", Sent: "auto", + Reason: "the door builds no none for the converse tool config", + }) + } + } + reportMechanismSwap(warn, model, input.ReasoningConfig, converseMechanismOnTheWire(built)) + if cfg := input.ReasoningConfig; cfg != nil && cfg.HasExplicitTokens() { + reportThinkingBudget(warn, model, cfg.Tokens, converseThinkingBudget(built)) + } +} + +func converseAdditionalFields(built *bedrockruntime.ConverseInput) map[string]any { + if built.AdditionalModelRequestFields == nil { + return nil + } + raw, err := built.AdditionalModelRequestFields.MarshalSmithyDocument() + if err != nil { + return nil + } + var fields map[string]any + if err := json.Unmarshal(raw, &fields); err != nil { + return nil + } + return fields +} + +// converseEffortOnTheWire reads the effort from every shape this door writes. +func converseEffortOnTheWire(built *bedrockruntime.ConverseInput) (string, bool) { + fields := converseAdditionalFields(built) + if effort, ok := fields["reasoning_effort"].(string); ok { + return effort, true + } + nested := func(key, effortKey string) (string, bool) { + block, ok := fields[key].(map[string]any) + if !ok { + return "", false + } + effort, _ := block[effortKey].(string) + return effort, true + } + for _, shape := range []struct{ key, effortKey string }{ + {"output_config", "effort"}, + {"reasoningConfig", "maxReasoningEffort"}, + {"reasoning", "effort"}, + } { + if effort, present := nested(shape.key, shape.effortKey); present { + return effort, true + } + } + _, thinking := fields["thinking"] + return "", thinking +} + +func converseMechanismOnTheWire(built *bedrockruntime.ConverseInput) string { + fields := converseAdditionalFields(built) + if thinking, ok := fields["thinking"].(map[string]any); ok { + sentType, _ := thinking["type"].(string) + return sentType + } + if effort, _ := fields["reasoning_effort"].(string); effort != "" { + return "effort" + } + for _, shape := range []struct{ key, effortKey string }{ + {"reasoningConfig", "maxReasoningEffort"}, + {"reasoning", "effort"}, + } { + block, ok := fields[shape.key].(map[string]any) + if !ok { + continue + } + if effort, _ := block[shape.effortKey].(string); effort != "" { + return "effort" + } + return "" + } + return "" +} + +func converseCarriesTopK(built *bedrockruntime.ConverseInput) bool { + _, carried := converseAdditionalFields(built)["top_k"] + return carried +} + +func converseThinkingBudget(built *bedrockruntime.ConverseInput) int { + thinking, ok := converseAdditionalFields(built)["thinking"].(map[string]any) + if !ok { + return 0 + } + budget, ok := thinking["budget_tokens"].(float64) + if !ok { + return 0 + } + return int(budget) +} + +func reportConverseFloat(warn *llms.Warnings, option, model string, asked float32, sent *float32) { + render := func(v float32) string { return strconv.FormatFloat(float64(v), 'g', -1, 32) } + switch { + case sent == nil: + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: option, Model: model, + Asked: render(asked), Reason: "the door left it off the converse request", + }) + case *sent != asked: + warn.Add(llms.Warning{ + Kind: llms.WarningSubstitute, Option: option, Model: model, + Asked: render(asked), Sent: render(*sent), + Reason: "the door put a different value on the converse request", + }) + } +} diff --git a/llms/bedrock/internal/bedrockclient/converse_warnings_test.go b/llms/bedrock/internal/bedrockclient/converse_warnings_test.go new file mode 100644 index 000000000..e57c402a2 --- /dev/null +++ b/llms/bedrock/internal/bedrockclient/converse_warnings_test.go @@ -0,0 +1,310 @@ +package bedrockclient + +import ( + "context" + "encoding/json" + "testing" + + "github.com/aws/aws-sdk-go-v2/service/bedrockruntime" + "github.com/aws/aws-sdk-go-v2/service/bedrockruntime/types" + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func converseCall(t *testing.T, in *ConverseInput) *llms.ContentResponse { + t.Helper() + + resp, _ := converseCallSending(t, in) + return resp +} + +func converseCallSending(t *testing.T, in *ConverseInput) (*llms.ContentResponse, *bedrockruntime.ConverseInput) { + t.Helper() + + mockClient := &MockBedrockRuntimeClient{} + mockClient.On("Converse", mock.Anything, mock.Anything, mock.Anything).Return( + &bedrockruntime.ConverseOutput{ + Output: &types.ConverseOutputMemberMessage{ + Value: types.Message{ + Role: types.ConversationRoleAssistant, + Content: []types.ContentBlock{&types.ContentBlockMemberText{Value: "hi"}}, + }, + }, + StopReason: types.StopReasonEndTurn, + }, nil) + + resp, err := NewConverseClient(mockClient).CreateCompletionConverse(context.Background(), in) + require.NoError(t, err) + mockClient.AssertNumberOfCalls(t, "Converse", 1) + sent, ok := mockClient.Calls[0].Arguments.Get(1).(*bedrockruntime.ConverseInput) + require.True(t, ok, "the door must hand the SDK a converse input") + return resp, sent +} + +func sentAdditionalFields(t *testing.T, sent *bedrockruntime.ConverseInput) map[string]any { + t.Helper() + + if sent.AdditionalModelRequestFields == nil { + return nil + } + raw, err := sent.AdditionalModelRequestFields.MarshalSmithyDocument() + require.NoError(t, err) + var fields map[string]any + require.NoError(t, json.Unmarshal(raw, &fields)) + return fields +} + +func converseWarningsByOption(warnings []llms.Warning) map[string]llms.Warning { + byOption := make(map[string]llms.Warning, len(warnings)) + for _, w := range warnings { + byOption[w.Option] = w + } + return byOption +} + +func TestConverseReportsTheSamplingBudgetThinkingReshapes(t *testing.T) { + t.Parallel() + + temperature, topP, maxTokens := 0.2, 0.9, 1000 + resp, sent := converseCallSending(t, &ConverseInput{ + Messages: humanTurn(), + ModelID: "us.anthropic.claude-sonnet-4-5-v1:0", + Temperature: &temperature, + TopP: &topP, + MaxTokens: &maxTokens, + ReasoningConfig: &llms.ReasoningConfig{Mode: llms.ReasoningOn, Effort: llms.ReasoningMedium}, + }) + + got := converseWarningsByOption(resp.Warnings) + + temp, ok := got["WithTemperature"] + require.True(t, ok, "no temperature warning in %v", resp.Warnings) + require.Equal(t, llms.WarningSubstitute, temp.Kind) + require.Equal(t, "0.2", temp.Asked) + require.Equal(t, "1", temp.Sent) + + tp, ok := got["WithTopP"] + require.True(t, ok, "no top-p warning in %v", resp.Warnings) + require.Equal(t, llms.WarningDrop, tp.Kind) + require.Empty(t, tp.Sent) + + limit, ok := got["WithMaxTokens"] + require.True(t, ok, "no max-tokens warning in %v", resp.Warnings) + require.Equal(t, llms.WarningClamp, limit.Kind) + require.Equal(t, "1000", limit.Asked) + require.Equal(t, "2048", limit.Sent) + require.NotNil(t, sent.InferenceConfig.MaxTokens) + require.EqualValues(t, 2048, *sent.InferenceConfig.MaxTokens, "the warning reports the limit the request carries") +} + +func TestConverseReportsTopPDroppedForTemperature(t *testing.T) { + t.Parallel() + + temperature, topP, maxTokens := 0.2, 0.9, 1000 + resp := converseCall(t, &ConverseInput{ + Messages: humanTurn(), + ModelID: "us.anthropic.claude-sonnet-4-5-v1:0", + Temperature: &temperature, + TopP: &topP, + MaxTokens: &maxTokens, + }) + + got := converseWarningsByOption(resp.Warnings) + tp, ok := got["WithTopP"] + require.True(t, ok, "no top-p warning in %v", resp.Warnings) + require.Equal(t, llms.WarningDrop, tp.Kind) + require.Equal(t, "0.9", tp.Asked) + require.NotContains(t, got, "WithTemperature", "the temperature this model keeps is not a loss") +} + +func TestConverseCarriesAPlainRequestWithoutWarnings(t *testing.T) { + t.Parallel() + + temperature, maxTokens := 0.2, 1000 + resp := converseCall(t, &ConverseInput{ + Messages: humanTurn(), + ModelID: "us.anthropic.claude-sonnet-4-5-v1:0", + Temperature: &temperature, + MaxTokens: &maxTokens, + }) + + require.Empty(t, resp.Warnings) +} + +func TestConverseReportsATopKThatNeverReachesTheRequest(t *testing.T) { + t.Parallel() + + topK := 40 + resp := converseCall(t, &ConverseInput{ + Messages: humanTurn(), + ModelID: "us.anthropic.claude-sonnet-4-5-v1:0", + TopK: &topK, + ReasoningConfig: &llms.ReasoningConfig{Mode: llms.ReasoningOn, Effort: llms.ReasoningMedium}, + }) + + w, ok := converseWarningsByOption(resp.Warnings)["WithTopK"] + require.True(t, ok, "no top-k warning in %v", resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, "40", w.Asked) +} + +func TestConverseStaysSilentOnATopKItCarries(t *testing.T) { + t.Parallel() + + topK := 40 + resp := converseCall(t, &ConverseInput{ + Messages: humanTurn(), + ModelID: "us.anthropic.claude-sonnet-4-5-v1:0", + TopK: &topK, + }) + + require.NotContains(t, converseWarningsByOption(resp.Warnings), "WithTopK") +} + +func TestConverseStaysSilentOnATopPItCarries(t *testing.T) { + t.Parallel() + + topP, maxTokens := 0.9, 1000 + resp, sent := converseCallSending(t, &ConverseInput{ + Messages: humanTurn(), + ModelID: "us.anthropic.claude-sonnet-4-5-v1:0", + TopP: &topP, + MaxTokens: &maxTokens, + }) + + require.NotNil(t, sent.InferenceConfig.TopP, "a lone top_p stays on the request") + require.InDelta(t, topP, *sent.InferenceConfig.TopP, 1e-6) + require.Empty(t, resp.Warnings) +} + +func TestConverseReportsAThinkingBudgetItCut(t *testing.T) { + t.Parallel() + + maxTokens := 4096 + resp, sent := converseCallSending(t, &ConverseInput{ + Messages: humanTurn(), + ModelID: "us.anthropic.claude-sonnet-4-5-v1:0", + MaxTokens: &maxTokens, + ReasoningConfig: &llms.ReasoningConfig{Mode: llms.ReasoningOn, Tokens: 30000}, + }) + + w, ok := converseWarningsByOption(resp.Warnings)["WithReasoning"] + require.True(t, ok, "no reasoning warning in %v", resp.Warnings) + require.Equal(t, llms.WarningClamp, w.Kind) + require.Equal(t, "30000 tokens", w.Asked) + require.Equal(t, "2730 tokens", w.Sent) + require.Equal(t, map[string]any{"type": "enabled", "budget_tokens": float64(2730)}, + sentAdditionalFields(t, sent)["thinking"], "the warning reports the budget the request carries") +} + +func TestConverseReportsAnEffortItLowered(t *testing.T) { + t.Parallel() + + maxTokens := 8000 + resp := converseCall(t, &ConverseInput{ + Messages: humanTurn(), + ModelID: "anthropic.claude-opus-4-6-v1:0", + MaxTokens: &maxTokens, + ReasoningConfig: &llms.ReasoningConfig{Mode: llms.ReasoningOn, Effort: llms.ReasoningXHigh}, + }) + + w, ok := converseWarningsByOption(resp.Warnings)["WithReasoning"] + require.True(t, ok, "no reasoning warning in %v", resp.Warnings) + require.Equal(t, llms.WarningClamp, w.Kind) + require.Equal(t, "xhigh", w.Asked) + require.Equal(t, "high", w.Sent) +} + +func TestConverseReportsAToolChoiceItTurnsIntoAuto(t *testing.T) { + t.Parallel() + + resp := converseCall(t, &ConverseInput{ + Messages: []Message{ + {Role: llms.ChatMessageTypeHuman, Content: "hi", Type: "text"}, + {Role: llms.ChatMessageTypeAI, Type: "tool_use", ToolCall: &ToolCall{ + ID: "t1", Name: "get_weather", Arguments: map[string]any{}, + }}, + {Role: llms.ChatMessageTypeTool, Type: "tool_result", ToolResult: &ToolResult{ + ToolCallID: "t1", ToolName: "get_weather", Content: "sunny", + }}, + }, + ModelID: "anthropic.claude-sonnet-4-5-v1:0", + Tools: []llms.Tool{{Type: "function", Function: &llms.FunctionDefinition{Name: "get_weather"}}}, + ToolChoice: "none", + }) + + w, ok := converseWarningsByOption(resp.Warnings)["WithToolChoice"] + require.True(t, ok, "no tool-choice warning in %v", resp.Warnings) + require.Equal(t, llms.WarningSubstitute, w.Kind) + require.Equal(t, "none", w.Asked) + require.Equal(t, "auto", w.Sent) +} + +func TestConverseReadsTheEffortEveryFamilyWritesItsOwnWay(t *testing.T) { + t.Parallel() + + maxTokens := 8192 + for _, tc := range []struct { + model string + effort llms.ReasoningEffort + wire map[string]any + want *llms.Warning + }{ + {"us.amazon.nova-2-lite-v1:0", llms.ReasoningHigh, map[string]any{ + "reasoningConfig": map[string]any{"type": "enabled", "maxReasoningEffort": "high"}, + }, nil}, + {"us.xai.grok-4.3", llms.ReasoningMax, map[string]any{ + "reasoning": map[string]any{"effort": "xhigh"}, + }, &llms.Warning{ + Kind: llms.WarningClamp, Option: "WithReasoning", Asked: "max", Sent: "xhigh", + }}, + {"openai.gpt-oss-120b-1:0", llms.ReasoningLow, map[string]any{"reasoning_effort": "low"}, nil}, + {"openai.gpt-oss-20b-1:0", llms.ReasoningMax, map[string]any{"reasoning_effort": "high"}, &llms.Warning{ + Kind: llms.WarningClamp, Option: "WithReasoning", Asked: "max", Sent: "high", + }}, + } { + t.Run(tc.model, func(t *testing.T) { + t.Parallel() + + resp, sent := converseCallSending(t, &ConverseInput{ + Messages: humanTurn(), + ModelID: tc.model, + MaxTokens: &maxTokens, + ReasoningConfig: &llms.ReasoningConfig{Mode: llms.ReasoningOn, Effort: tc.effort}, + }) + + require.Equal(t, tc.wire, sentAdditionalFields(t, sent), "the family's own shape carries the effort") + got, ok := converseWarningsByOption(resp.Warnings)["WithReasoning"] + if tc.want == nil { + require.False(t, ok, "the effort reached the wire, so nothing was lost: %v", resp.Warnings) + return + } + require.True(t, ok, "no reasoning warning in %v", resp.Warnings) + require.Equal(t, tc.want.Kind, got.Kind) + require.Equal(t, tc.want.Asked, got.Asked) + require.Equal(t, tc.want.Sent, got.Sent) + }) + } +} + +func TestConverseReportsAMechanismTheModelDoesNotOffer(t *testing.T) { + t.Parallel() + + maxTokens := 8192 + resp := converseCall(t, &ConverseInput{ + Messages: humanTurn(), + ModelID: "us.anthropic.claude-sonnet-4-5-v1:0", + MaxTokens: &maxTokens, + ReasoningConfig: &llms.ReasoningConfig{ + Mode: llms.ReasoningOn, Effort: llms.ReasoningHigh, Adaptive: true, + }, + }) + + w, ok := converseWarningsByOption(resp.Warnings)["WithAdaptiveReasoning"] + require.True(t, ok, "no mechanism warning in %v", resp.Warnings) + require.Equal(t, llms.WarningSubstitute, w.Kind) + require.Equal(t, "adaptive", w.Asked) + require.Equal(t, "enabled", w.Sent) +} diff --git a/llms/bedrock/internal/bedrockclient/gpt_oss_reasoning_test.go b/llms/bedrock/internal/bedrockclient/gpt_oss_reasoning_test.go new file mode 100644 index 000000000..4506540f7 --- /dev/null +++ b/llms/bedrock/internal/bedrockclient/gpt_oss_reasoning_test.go @@ -0,0 +1,97 @@ +package bedrockclient + +import ( + "encoding/json" + "testing" + + "github.com/aws/aws-sdk-go-v2/service/bedrockruntime" + "github.com/aws/aws-sdk-go-v2/service/bedrockruntime/types" + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" +) + +func TestConverseRefusesToTurnGptOssReasoningOffUnderEveryDocumentedID(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "openai.gpt-oss-120b-1:0", "openai.gpt-oss-20b-1:0", + "us-gov.openai.gpt-oss-120b-1:0", "us-gov.openai.gpt-oss-20b-1:0", + } { + t.Run(model, func(t *testing.T) { + t.Parallel() + + mockClient := &MockBedrockRuntimeClient{} + mockClient.On("Converse", mock.Anything, mock.Anything, mock.Anything).Return(&bedrockruntime.ConverseOutput{ + Output: &types.ConverseOutputMemberMessage{Value: types.Message{ + Role: types.ConversationRoleAssistant, + Content: []types.ContentBlock{&types.ContentBlockMemberText{Value: "ok"}}, + }}, + }, nil).Maybe() + _, err := NewConverseClient(mockClient).CreateCompletionConverse(t.Context(), &ConverseInput{ + ModelID: model, + Messages: humanTurn(), + ReasoningConfig: &llms.ReasoningConfig{Mode: llms.ReasoningOff}, + }) + + var offErr *reasoning.ErrReasoningOffUnsupported + require.ErrorAs(t, err, &offErr, "the door sends this model a reasoning level, so off must not pass silently") + mockClient.AssertNotCalled(t, "Converse") + }) + } +} + +func TestConverseSendsGptOssTheReasoningEffortItDocuments(t *testing.T) { + t.Parallel() + + on := func(effort llms.ReasoningEffort) *llms.ReasoningConfig { + return &llms.ReasoningConfig{Mode: llms.ReasoningOn, Effort: effort} + } + for _, model := range []string{"openai.gpt-oss-120b-1:0", "openai.gpt-oss-20b-1:0"} { + for _, tc := range []struct { + name string + cfg *llms.ReasoningConfig + want map[string]any + }{ + {"low", on(llms.ReasoningLow), map[string]any{"reasoning_effort": "low"}}, + {"medium", on(llms.ReasoningMedium), map[string]any{"reasoning_effort": "medium"}}, + {"high", on(llms.ReasoningHigh), map[string]any{"reasoning_effort": "high"}}, + {"minimal rises to the lowest level", on(llms.ReasoningMinimal), map[string]any{"reasoning_effort": "low"}}, + {"xhigh falls to the highest level", on(llms.ReasoningXHigh), map[string]any{"reasoning_effort": "high"}}, + {"max falls to the highest level", on(llms.ReasoningMax), map[string]any{"reasoning_effort": "high"}}, + {"a budget picks the level", &llms.ReasoningConfig{Tokens: 3000}, map[string]any{"reasoning_effort": "high"}}, + {"delegated depth leaves the level to the model", &llms.ReasoningConfig{Adaptive: true}, nil}, + {"unset reasoning sends nothing", nil, nil}, + } { + t.Run(model+"/"+tc.name, func(t *testing.T) { + t.Parallel() + + temperature, maxTokens := 0.3, 4096 + got, err := NewConverseClient(&MockBedrockRuntimeClient{}).buildConverseInput(&ConverseInput{ + ModelID: model, + Messages: humanTurn(), + Temperature: &temperature, + MaxTokens: &maxTokens, + ReasoningConfig: tc.cfg, + }) + require.NoError(t, err) + + var fields map[string]any + if got.AdditionalModelRequestFields != nil { + raw, err := got.AdditionalModelRequestFields.MarshalSmithyDocument() + require.NoError(t, err) + require.NoError(t, json.Unmarshal(raw, &fields)) + } + assert.Equal(t, tc.want, fields) + + require.NotNil(t, got.InferenceConfig.Temperature, "gpt-oss takes sampling while it reasons") + assert.InDelta(t, temperature, *got.InferenceConfig.Temperature, 0.0001) + require.NotNil(t, got.InferenceConfig.MaxTokens) + assert.EqualValues(t, maxTokens, *got.InferenceConfig.MaxTokens) + }) + } + } +} diff --git a/llms/bedrock/internal/bedrockclient/nova_reasoning_only_test.go b/llms/bedrock/internal/bedrockclient/nova_reasoning_only_test.go new file mode 100644 index 000000000..4c268c7d3 --- /dev/null +++ b/llms/bedrock/internal/bedrockclient/nova_reasoning_only_test.go @@ -0,0 +1,57 @@ +package bedrockclient + +import ( + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" + + "github.com/aws/aws-sdk-go-v2/credentials" + "github.com/aws/aws-sdk-go-v2/service/bedrockruntime" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestAnAnswerMadeOnlyOfReasoningIsStillAnAnswer(t *testing.T) { + t.Parallel() + + block := &novaReasoningContentOutput{} + block.ReasoningText.Text = "thinking" + content, thought := splitNovaReasoning([]novaOutputContent{{ReasoningContent: block}}) + require.Empty(t, content) + require.NotNil(t, thought, "the vendor did answer: with a thought and nothing else") + assert.Equal(t, "thinking", thought.Content) +} + +func TestAnEmptyAnswerIsStillAnError(t *testing.T) { + t.Parallel() + + content, thought := splitNovaReasoning(nil) + assert.Empty(t, content) + assert.Nil(t, thought) + var _ *reasoning.ContentReasoning = thought +} + +func TestANovaTurnOfPureReasoningIsNotAnError(t *testing.T) { + t.Parallel() + + client := bedrockruntime.New(bedrockruntime.Options{ + Region: "us-east-1", + Credentials: credentials.NewStaticCredentialsProvider("k", "s", ""), + RetryMaxAttempts: 1, + HTTPClient: &cannedTransport{body: `{"output":{"message":{"content":[` + + `{"reasoningContent":{"reasoningText":{"text":"thinking"}}}` + + `],"role":"assistant"}},"stopReason":"end_turn",` + + `"usage":{"inputTokens":1,"outputTokens":2}}`}, + }) + + resp, err := createNovaCompletion(t.Context(), client, "amazon.nova-2-lite-v1:0", + []Message{{Role: llms.ChatMessageTypeHuman, Content: "hi", Type: "text"}}, + llms.CallOptions{}, &llms.Warnings{}) + require.NoError(t, err, "a thought with no text is still an answer, not a missing one") + require.Len(t, resp.Choices, 1) + require.NotNil(t, resp.Choices[0].Reasoning) + assert.Equal(t, "thinking", resp.Choices[0].Reasoning.Content) + assert.Equal(t, "end_turn", resp.Choices[0].StopReason) +} diff --git a/llms/bedrock/internal/bedrockclient/nova_stream_reasoning_test.go b/llms/bedrock/internal/bedrockclient/nova_stream_reasoning_test.go new file mode 100644 index 000000000..1d4297119 --- /dev/null +++ b/llms/bedrock/internal/bedrockclient/nova_stream_reasoning_test.go @@ -0,0 +1,35 @@ +package bedrockclient + +import ( + "encoding/json" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestTheNovaStreamReadsAReasoningDelta(t *testing.T) { + t.Parallel() + + var chunk novaStreamingResponseChunk + require.NoError(t, json.Unmarshal( + []byte(`{"contentBlockDelta":{"delta":{"reasoningContent":{"text":"thinking"}}}}`), &chunk)) + + require.NotNil(t, chunk.ContentBlockDelta.Delta.ReasoningContent, + "the vendor sends the thought in this shape; ignoring it drops the thought") + assert.Equal(t, "thinking", chunk.ContentBlockDelta.Delta.ReasoningContent.Text) + assert.Empty(t, chunk.ContentBlockDelta.Delta.Text) +} + +func TestTheLegacyStreamReadsAnEncryptedBlock(t *testing.T) { + t.Parallel() + + var chunk streamingCompletionResponseChunk + require.NoError(t, json.Unmarshal( + []byte(`{"type":"content_block_start","content_block":{"type":"redacted_thinking","data":"deadbeef"}}`), + &chunk)) + + assert.Equal(t, "redacted_thinking", chunk.ContentBlock.Type) + assert.Equal(t, "deadbeef", chunk.ContentBlock.Data, + "without this field the encrypted thought has nowhere to land") +} diff --git a/llms/bedrock/internal/bedrockclient/provider_ai21.go b/llms/bedrock/internal/bedrockclient/provider_ai21.go index 24805ef01..5d771d97f 100644 --- a/llms/bedrock/internal/bedrockclient/provider_ai21.go +++ b/llms/bedrock/internal/bedrockclient/provider_ai21.go @@ -152,10 +152,10 @@ func getAi21Role(role llms.ChatMessageType) (string, error) { } } -func createAi21Completion(ctx context.Context, client *bedrockruntime.Client, modelID string, messages []Message, options llms.CallOptions) (*llms.ContentResponse, error) { +func createAi21Completion(ctx context.Context, client *bedrockruntime.Client, modelID string, messages []Message, options llms.CallOptions, warn *llms.Warnings) (*llms.ContentResponse, error) { // Check if this is a Jamba model (use messages API) - if strings.Contains(modelID, "jamba") { - return createAi21JambaCompletion(ctx, client, modelID, messages, options) + if IsAi21Jamba(modelID) { + return createAi21JambaCompletion(ctx, client, modelID, messages, options, warn) } // Legacy J2 models (use prompt API) @@ -164,7 +164,7 @@ func createAi21Completion(ctx context.Context, client *bedrockruntime.Client, mo Prompt: txt, Temperature: options.GetTemperature(), TopP: options.GetTopP(), - MaxTokens: getMaxTokens(options.GetMaxTokens(), 2048), + MaxTokens: maxTokensOnTheWire(warn, modelID, options, 2048), StopSequences: options.StopWords, CountPenalty: struct { Scale float64 `json:"scale"` @@ -216,14 +216,15 @@ func createAi21Completion(ctx context.Context, client *bedrockruntime.Client, mo choices[i] = &llms.ContentChoice{ Content: completion.Data.Text, StopReason: completion.FinishReason.Reason, + Truncated: llms.IsTruncated(completion.FinishReason.Reason), GenerationInfo: map[string]any{ "id": output.ID, - "input_tokens": int32(len(output.Prompt.Tokens)), - "output_tokens": int32(len(completion.Data.Tokens)), + "input_tokens": len(output.Prompt.Tokens), + "output_tokens": len(completion.Data.Tokens), // Standardized field names for cross-provider compatibility - "PromptTokens": int32(len(output.Prompt.Tokens)), - "CompletionTokens": int32(len(completion.Data.Tokens)), - "TotalTokens": int32(len(output.Prompt.Tokens)) + int32(len(completion.Data.Tokens)), + "PromptTokens": len(output.Prompt.Tokens), + "CompletionTokens": len(completion.Data.Tokens), + "TotalTokens": len(output.Prompt.Tokens) + len(completion.Data.Tokens), }, } } @@ -231,7 +232,7 @@ func createAi21Completion(ctx context.Context, client *bedrockruntime.Client, mo return &llms.ContentResponse{Choices: choices}, nil } -func createAi21JambaCompletion(ctx context.Context, client *bedrockruntime.Client, modelID string, messages []Message, options llms.CallOptions) (*llms.ContentResponse, error) { +func createAi21JambaCompletion(ctx context.Context, client *bedrockruntime.Client, modelID string, messages []Message, options llms.CallOptions, warn *llms.Warnings) (*llms.ContentResponse, error) { jambaMessages := make([]struct { Role string `json:"role"` Content string `json:"content"` @@ -248,7 +249,7 @@ func createAi21JambaCompletion(ctx context.Context, client *bedrockruntime.Clien inputContent := ai21JambaInput{ Messages: jambaMessages, - MaxTokens: getMaxTokens(options.GetMaxTokens(), 4096), + MaxTokens: maxTokensOnTheWire(warn, modelID, options, 4096), Temperature: options.GetTemperature(), TopP: options.GetTopP(), Stop: options.StopWords, @@ -293,10 +294,14 @@ func createAi21JambaCompletion(ctx context.Context, client *bedrockruntime.Clien choices[i] = &llms.ContentChoice{ Content: choice.Message.Content, StopReason: choice.FinishReason, + Truncated: llms.IsTruncated(choice.FinishReason), GenerationInfo: map[string]any{ - "id": output.ID, - "input_tokens": output.Usage.PromptTokens, - "output_tokens": output.Usage.CompletionTokens, + "id": output.ID, + "input_tokens": int(output.Usage.PromptTokens), + "output_tokens": int(output.Usage.CompletionTokens), + "PromptTokens": int(output.Usage.PromptTokens), + "CompletionTokens": int(output.Usage.CompletionTokens), + "TotalTokens": int(output.Usage.TotalTokens), }, } } @@ -317,50 +322,58 @@ func parseAi21StreamingResponse(ctx context.Context, client *bedrockruntime.Clie defer streaming.CallWithDone(ctx, options.StreamingFunc) //nolint:errcheck contentchoices := []*llms.ContentChoice{{GenerationInfo: map[string]any{}}} + var streamedContent strings.Builder + var streamErr error + +DoStream: for e := range stream.Events() { if err = stream.Err(); err != nil { - return nil, err + streamErr = err + break DoStream } if v, ok := e.(*types.ResponseStreamMemberChunk); ok { var resp ai21StreamingResponseChunk err := json.NewDecoder(bytes.NewReader(v.Value.Bytes)).Decode(&resp) if err != nil { - return nil, err + streamErr = err + break DoStream } // Send text chunk if available if resp.Text != "" { + streamedContent.WriteString(resp.Text) if err = streaming.CallWithText(ctx, options.StreamingFunc, resp.Text); err != nil { - return nil, err + streamErr = err + break DoStream } - contentchoices[0].Content += resp.Text } // Set completion reason if resp.FinishReason != "" { contentchoices[0].StopReason = resp.FinishReason + contentchoices[0].Truncated = llms.IsTruncated(resp.FinishReason) } // Set token counts if available if resp.Usage.PromptTokens > 0 { contentchoices[0].GenerationInfo["input_tokens"] = resp.Usage.PromptTokens - contentchoices[0].GenerationInfo["PromptTokens"] = resp.Usage.PromptTokens + contentchoices[0].GenerationInfo["PromptTokens"] = int(resp.Usage.PromptTokens) } if resp.Usage.CompletionTokens > 0 { contentchoices[0].GenerationInfo["output_tokens"] = resp.Usage.CompletionTokens - contentchoices[0].GenerationInfo["CompletionTokens"] = resp.Usage.CompletionTokens + contentchoices[0].GenerationInfo["CompletionTokens"] = int(resp.Usage.CompletionTokens) } if resp.Usage.PromptTokens > 0 || resp.Usage.CompletionTokens > 0 { - contentchoices[0].GenerationInfo["TotalTokens"] = resp.Usage.PromptTokens + resp.Usage.CompletionTokens + contentchoices[0].GenerationInfo["TotalTokens"] = int(resp.Usage.PromptTokens) + int(resp.Usage.CompletionTokens) } } } if err = stream.Err(); err != nil { - return nil, err + streamErr = err } - return &llms.ContentResponse{ - Choices: contentchoices, - }, nil + contentchoices[0].Content = streamedContent.String() + + return &llms.ContentResponse{Choices: contentchoices}, streamErr } diff --git a/llms/bedrock/internal/bedrockclient/provider_amazon.go b/llms/bedrock/internal/bedrockclient/provider_amazon.go index 251cb85c1..203818209 100644 --- a/llms/bedrock/internal/bedrockclient/provider_amazon.go +++ b/llms/bedrock/internal/bedrockclient/provider_amazon.go @@ -5,6 +5,7 @@ import ( "context" "encoding/json" "errors" + "strings" "github.com/vxcontrol/langchaingo/llms" "github.com/vxcontrol/langchaingo/llms/streaming" @@ -75,13 +76,14 @@ func createAmazonCompletion(ctx context.Context, modelID string, messages []Message, options llms.CallOptions, + warn *llms.Warnings, ) (*llms.ContentResponse, error) { txt := processInputMessagesGeneric(messages) inputContent := amazonTextGenerationInput{ InputText: txt, TextGenerationConfig: amazonTextGenerationConfigInput{ - MaxTokens: getMaxTokens(options.GetMaxTokens(), 512), + MaxTokens: maxTokensOnTheWire(warn, modelID, options, 512), TopP: options.GetTopP(), Temperature: options.GetTemperature(), StopSequences: options.StopWords, @@ -130,13 +132,14 @@ func createAmazonCompletion(ctx context.Context, contentChoices[i] = &llms.ContentChoice{ Content: result.OutputText, StopReason: result.CompletionReason, + Truncated: llms.IsTruncated(result.CompletionReason), GenerationInfo: map[string]any{ "input_tokens": output.InputTextTokenCount, "output_tokens": result.TokenCount, // Standardized field names for cross-provider compatibility - "PromptTokens": output.InputTextTokenCount, - "CompletionTokens": result.TokenCount, - "TotalTokens": output.InputTextTokenCount + result.TokenCount, + "PromptTokens": int(output.InputTextTokenCount), + "CompletionTokens": int(result.TokenCount), + "TotalTokens": int(output.InputTextTokenCount) + int(result.TokenCount), }, } } @@ -159,50 +162,58 @@ func parseAmazonStreamingResponse(ctx context.Context, client *bedrockruntime.Cl defer streaming.CallWithDone(ctx, options.StreamingFunc) //nolint:errcheck contentchoices := []*llms.ContentChoice{{GenerationInfo: map[string]any{}}} + var streamedContent strings.Builder + var streamErr error + +DoStream: for e := range stream.Events() { if err = stream.Err(); err != nil { - return nil, err + streamErr = err + break DoStream } if v, ok := e.(*types.ResponseStreamMemberChunk); ok { var resp amazonStreamingResponseChunk err := json.NewDecoder(bytes.NewReader(v.Value.Bytes)).Decode(&resp) if err != nil { - return nil, err + streamErr = err + break DoStream } // Send text chunk if available if resp.OutputText != "" { + streamedContent.WriteString(resp.OutputText) if err = streaming.CallWithText(ctx, options.StreamingFunc, resp.OutputText); err != nil { - return nil, err + streamErr = err + break DoStream } - contentchoices[0].Content += resp.OutputText } // Set completion reason if resp.CompletionReason != "" { contentchoices[0].StopReason = resp.CompletionReason + contentchoices[0].Truncated = llms.IsTruncated(resp.CompletionReason) } // Set token counts if resp.InputTextTokenCount > 0 { contentchoices[0].GenerationInfo["input_tokens"] = resp.InputTextTokenCount - contentchoices[0].GenerationInfo["PromptTokens"] = resp.InputTextTokenCount + contentchoices[0].GenerationInfo["PromptTokens"] = int(resp.InputTextTokenCount) } if resp.OutputTextTokenCount > 0 { contentchoices[0].GenerationInfo["output_tokens"] = resp.OutputTextTokenCount - contentchoices[0].GenerationInfo["CompletionTokens"] = resp.OutputTextTokenCount + contentchoices[0].GenerationInfo["CompletionTokens"] = int(resp.OutputTextTokenCount) } if resp.InputTextTokenCount > 0 || resp.OutputTextTokenCount > 0 { - contentchoices[0].GenerationInfo["TotalTokens"] = resp.InputTextTokenCount + resp.OutputTextTokenCount + contentchoices[0].GenerationInfo["TotalTokens"] = int(resp.InputTextTokenCount) + int(resp.OutputTextTokenCount) } } } if err = stream.Err(); err != nil { - return nil, err + streamErr = err } - return &llms.ContentResponse{ - Choices: contentchoices, - }, nil + contentchoices[0].Content = streamedContent.String() + + return &llms.ContentResponse{Choices: contentchoices}, streamErr } diff --git a/llms/bedrock/internal/bedrockclient/provider_anthropic.go b/llms/bedrock/internal/bedrockclient/provider_anthropic.go index 33f8550f8..eb0723ae7 100644 --- a/llms/bedrock/internal/bedrockclient/provider_anthropic.go +++ b/llms/bedrock/internal/bedrockclient/provider_anthropic.go @@ -58,6 +58,18 @@ type anthropicTextGenerationInputContent struct { CacheControl *anthropicCacheControl `json:"cache_control,omitempty"` } +func (c anthropicTextGenerationInputContent) MarshalJSON() ([]byte, error) { + type alias anthropicTextGenerationInputContent + if c.Type != "thinking" || c.Thinking != "" { + return json.Marshal(alias(c)) + } + return json.Marshal(struct { + Type string `json:"type"` + Thinking string `json:"thinking"` + Signature string `json:"signature,omitempty"` + }{Type: c.Type, Signature: c.Signature}) +} + type anthropicCacheControl struct { Type string `json:"type"` TTL string `json:"ttl,omitempty"` @@ -94,7 +106,8 @@ type anthropicTextGenerationInput struct { // Sequences that will cause the model to stop generating tokens. Optional StopSequences []string `json:"stop_sequences,omitempty"` // Tools available for the model to use. Optional - Tools []anthropicTool `json:"tools,omitempty"` + Tools []anthropicTool `json:"tools,omitempty"` + ToolChoice any `json:"tool_choice,omitempty"` // Thinking configuration for reasoning models. Optional Thinking *anthropicThinkingPayload `json:"thinking,omitempty"` // OutputConfig carries the adaptive-thinking effort. It is a top-level @@ -144,17 +157,28 @@ type anthropicTextGenerationOutput struct { // One of: ["end_turn", "max_tokens", "stop_sequence", "tool_use"] StopReason string `json:"stop_reason"` // Which custom stop sequence was matched, if any. - StopSequence string `json:"stop_sequence"` - Usage struct { - InputTokens int32 `json:"input_tokens"` - OutputTokens int32 `json:"output_tokens"` - CacheCreationInputTokens int32 `json:"cache_creation_input_tokens,omitempty"` - CacheReadInputTokens int32 `json:"cache_read_input_tokens,omitempty"` - CacheCreation struct { - Ephemeral5mInputTokens int32 `json:"ephemeral_5m_input_tokens,omitempty"` - Ephemeral1hInputTokens int32 `json:"ephemeral_1h_input_tokens,omitempty"` - } `json:"cache_creation,omitempty"` - } `json:"usage"` + StopSequence string `json:"stop_sequence"` + StopDetails *anthropicStopDetails `json:"stop_details,omitempty"` + Usage anthropicUsage `json:"usage"` +} + +type anthropicStopDetails struct { + Category string `json:"category,omitempty"` + Explanation string `json:"explanation,omitempty"` +} + +type anthropicUsage struct { + InputTokens int32 `json:"input_tokens"` + OutputTokens int32 `json:"output_tokens"` + CacheCreationInputTokens int32 `json:"cache_creation_input_tokens,omitempty"` + CacheReadInputTokens int32 `json:"cache_read_input_tokens,omitempty"` + CacheCreation struct { + Ephemeral5mInputTokens int32 `json:"ephemeral_5m_input_tokens,omitempty"` + Ephemeral1hInputTokens int32 `json:"ephemeral_1h_input_tokens,omitempty"` + } `json:"cache_creation,omitempty"` + OutputTokensDetails struct { + ThinkingTokens int32 `json:"thinking_tokens,omitempty"` + } `json:"output_tokens_details,omitempty"` } type anthropicContentBlock struct { @@ -200,6 +224,7 @@ func createAnthropicCompletion(ctx context.Context, modelID string, messages []Message, options llms.CallOptions, + warn *llms.Warnings, ) (*llms.ContentResponse, error) { inputContents, systemPrompt, err := processInputMessagesAnthropic(messages) if err != nil { @@ -221,9 +246,10 @@ func createAnthropicCompletion(ctx context.Context, system = systemPrompt } + maxTokens := maxTokensOnTheWire(warn, modelID, options, 2048) input := anthropicTextGenerationInput{ AnthropicVersion: AnthropicLatestVersion, - MaxTokens: getMaxTokens(options.GetMaxTokens(), 2048), + MaxTokens: maxTokens, System: system, Messages: inputContents, Temperature: options.GetTemperature(), @@ -231,11 +257,15 @@ func createAnthropicCompletion(ctx context.Context, TopK: options.GetTopK(), StopSequences: options.StopWords, Tools: tools, + ToolChoice: anthropicToolChoiceOnWire(options.ToolChoice), } - if err := applyAnthropicReasoning(&input, options.Reasoning, modelID, options.GetMaxTokens()); err != nil { + if err := applyAnthropicReasoning(&input, options.Reasoning, modelID, maxTokens); err != nil { return nil, err } + if input.Thinking != nil { + input.MaxTokens = reasoning.ClaudeMaxTokensForBudget(input.Thinking.BudgetTokens, input.MaxTokens) + } // Structured output rides in output_config.format, merged with any effort set // by applyAnthropicReasoning (the two are independent). @@ -243,6 +273,8 @@ func createAnthropicCompletion(ctx context.Context, return nil, err } + reportLegacyAnthropic(warn, modelID, options, &input) + body, err := json.Marshal(input) if err != nil { return nil, err @@ -257,7 +289,7 @@ func createAnthropicCompletion(ctx context.Context, } streamResp, err := parseStreamingCompletionResponse(ctx, client, modelInput, options) if err != nil { - return nil, err + return streamResp, err } // Validate the assembled stream too — a structured-output guarantee must // hold on both API paths. @@ -279,7 +311,7 @@ func createAnthropicCompletion(ctx context.Context, } var output anthropicTextGenerationOutput - err = json.Unmarshal(resp.Body, &output) + err = decodeExactNumbers(resp.Body, &output) if err != nil { return nil, err } @@ -292,8 +324,7 @@ func createAnthropicCompletion(ctx context.Context, // Group content blocks by type for this choice var textContent string - var reasoningContent string - var signature []byte + var thoughts reasoning.Collector var toolCalls []llms.ToolCall for _, c := range output.Content { @@ -301,10 +332,9 @@ func createAnthropicCompletion(ctx context.Context, case "text": textContent += c.Text case "thinking": - reasoningContent += c.Thinking - if len(c.Signature) > 0 { - signature = []byte(c.Signature) - } + thoughts.Thought(c.Thinking, []byte(c.Signature)) + case "redacted_thinking": + thoughts.Encrypted([]byte(c.Data)) case "tool_use": argumentsJSON, err := json.Marshal(c.Input) if err != nil { @@ -318,49 +348,107 @@ func createAnthropicCompletion(ctx context.Context, Arguments: string(argumentsJSON), }, }) + thoughts.ToolCall() } } // Create single choice with all content choice := &llms.ContentChoice{ - Content: textContent, - Reasoning: processReasoning(reasoningContent, signature), - ToolCalls: toolCalls, - StopReason: output.StopReason, - GenerationInfo: map[string]any{ - "input_tokens": output.Usage.InputTokens, - "output_tokens": output.Usage.OutputTokens, - "PromptTokens": output.Usage.InputTokens, - "CompletionTokens": output.Usage.OutputTokens, - "TotalTokens": output.Usage.InputTokens + output.Usage.OutputTokens, - // Cache metrics - "CacheReadInputTokens": output.Usage.CacheReadInputTokens, - "CacheCreationInputTokens": output.Usage.CacheCreationInputTokens, - "CacheCreationEphemeral5mInputTokens": output.Usage.CacheCreation.Ephemeral5mInputTokens, - "CacheCreationEphemeral1hInputTokens": output.Usage.CacheCreation.Ephemeral1hInputTokens, - "PromptCachedTokens": output.Usage.CacheReadInputTokens, - }, - } + Content: textContent, + Reasoning: thoughts.Reasoning(), + ToolCalls: toolCalls, + StopReason: output.StopReason, + Truncated: llms.IsTruncated(output.StopReason), + GenerationInfo: map[string]any{}, + } + applyAnthropicUsage(choice.GenerationInfo, output.Usage) Contentchoices = append(Contentchoices, choice) contentResp := &llms.ContentResponse{ Choices: Contentchoices, } + if output.StopReason == "refusal" { + refusal := &llms.ErrModelRefusal{ + Provider: "bedrock", + Message: textContent, + InputTokens: int(output.Usage.InputTokens), + OutputTokens: int(output.Usage.OutputTokens), + CacheCreationInputTokens: int(output.Usage.CacheCreationInputTokens), + CacheReadInputTokens: int(output.Usage.CacheReadInputTokens), + } + if output.StopDetails != nil { + refusal.Category = output.StopDetails.Category + refusal.Explanation = output.StopDetails.Explanation + } + return contentResp, refusal + } if err := validateStructuredResponse(options.StructuredOutput, modelID, contentResp); err != nil { return contentResp, err } return contentResp, nil } -func processReasoning(reasoningContent string, signature []byte) *reasoning.ContentReasoning { - if reasoningContent == "" && len(signature) == 0 { +func anthropicToolChoiceOnWire(choice any) any { + switch kind, name := llms.ClassifyToolChoice(choice); kind { + case llms.ToolChoiceNamed: + return map[string]any{"type": "tool", "name": name} + case llms.ToolChoiceAny: + return map[string]any{"type": "any"} + case llms.ToolChoiceAuto: + return map[string]any{"type": "auto"} + case llms.ToolChoiceNone: + return map[string]any{"type": "none"} + default: return nil } +} - return &reasoning.ContentReasoning{ - Content: reasoningContent, - Signature: signature, +func mergeAnthropicUsage(into anthropicUsage, updates ...anthropicUsage) anthropicUsage { + for _, u := range updates { + if u.InputTokens != 0 { + into.InputTokens = u.InputTokens + } + if u.OutputTokens != 0 { + into.OutputTokens = u.OutputTokens + } + if u.CacheCreationInputTokens != 0 { + into.CacheCreationInputTokens = u.CacheCreationInputTokens + } + if u.CacheReadInputTokens != 0 { + into.CacheReadInputTokens = u.CacheReadInputTokens + } + if u.CacheCreation.Ephemeral5mInputTokens != 0 { + into.CacheCreation.Ephemeral5mInputTokens = u.CacheCreation.Ephemeral5mInputTokens + } + if u.CacheCreation.Ephemeral1hInputTokens != 0 { + into.CacheCreation.Ephemeral1hInputTokens = u.CacheCreation.Ephemeral1hInputTokens + } + if u.OutputTokensDetails.ThinkingTokens != 0 { + into.OutputTokensDetails.ThinkingTokens = u.OutputTokensDetails.ThinkingTokens + } } + return into +} + +func applyAnthropicUsage(info map[string]any, usage anthropicUsage) { + if info == nil { + return + } + + promptTokens := int(usage.InputTokens) + + int(usage.CacheCreationInputTokens) + int(usage.CacheReadInputTokens) + + info["input_tokens"] = int(usage.InputTokens) + info["output_tokens"] = int(usage.OutputTokens) + info["PromptTokens"] = promptTokens + info["CompletionTokens"] = int(usage.OutputTokens) + info["TotalTokens"] = promptTokens + int(usage.OutputTokens) + info["CacheReadInputTokens"] = int(usage.CacheReadInputTokens) + info["CacheCreationInputTokens"] = int(usage.CacheCreationInputTokens) + info["CacheCreationEphemeral5mInputTokens"] = int(usage.CacheCreation.Ephemeral5mInputTokens) + info["CacheCreationEphemeral1hInputTokens"] = int(usage.CacheCreation.Ephemeral1hInputTokens) + info["PromptCachedTokens"] = int(usage.CacheReadInputTokens) + info["ReasoningTokens"] = int(usage.OutputTokensDetails.ThinkingTokens) } type streamingCompletionResponseChunk struct { @@ -380,6 +468,7 @@ type streamingCompletionResponseChunk struct { ID string `json:"id"` Name string `json:"name"` Input map[string]any `json:"input"` + Data string `json:"data"` } `json:"content_block"` AmazonBedrockInvocationMetrics struct { InputTokenCount int32 `json:"inputTokenCount"` @@ -387,22 +476,19 @@ type streamingCompletionResponseChunk struct { InvocationLatency int32 `json:"invocationLatency"` FirstByteLatency int32 `json:"firstByteLatency"` } `json:"amazon-bedrock-invocationMetrics"` - Usage struct { - OutputTokens int32 `json:"output_tokens"` - } `json:"usage"` - Message struct { - ID string `json:"id"` - Type string `json:"type"` - Role string `json:"role"` - Content []any `json:"content"` - Model string `json:"model"` - StopReason any `json:"stop_reason"` - StopSequence any `json:"stop_sequence"` - Usage struct { - InputTokens int32 `json:"input_tokens"` - OutputTokens int32 `json:"output_tokens"` - } `json:"usage"` - } `json:"message"` + Usage anthropicUsage `json:"usage"` + Message anthropicStreamMessage `json:"message"` +} + +type anthropicStreamMessage struct { + ID string `json:"id"` + Type string `json:"type"` + Role string `json:"role"` + Content []any `json:"content"` + Model string `json:"model"` + StopReason any `json:"stop_reason"` + StopSequence any `json:"stop_sequence"` + Usage anthropicUsage `json:"usage"` } func parseStreamingCompletionResponse(ctx context.Context, client *bedrockruntime.Client, modelInput *bedrockruntime.InvokeModelWithResponseStreamInput, options llms.CallOptions) (*llms.ContentResponse, error) { @@ -418,59 +504,66 @@ func parseStreamingCompletionResponse(ctx context.Context, client *bedrockruntim defer streaming.CallWithDone(ctx, options.StreamingFunc) //nolint:errcheck contentchoices := []*llms.ContentChoice{{GenerationInfo: map[string]any{}}} + var usage anthropicUsage + var streamedContent strings.Builder var currentToolCall *streaming.ToolCall var toolCalls []llms.ToolCall - var signature strings.Builder + var thoughts streamedReasoning + var streamErr error + +DoStream: for e := range stream.Events() { if err = stream.Err(); err != nil { - return nil, err + streamErr = err + break DoStream } if v, ok := e.(*types.ResponseStreamMemberChunk); ok { var resp streamingCompletionResponseChunk - err := json.NewDecoder(bytes.NewReader(v.Value.Bytes)).Decode(&resp) - if err != nil { - return nil, err + if err := json.NewDecoder(bytes.NewReader(v.Value.Bytes)).Decode(&resp); err != nil { + streamErr = err + break DoStream } switch resp.Type { case "message_start": - contentchoices[0].GenerationInfo["input_tokens"] = resp.Message.Usage.InputTokens - contentchoices[0].GenerationInfo["PromptTokens"] = resp.Message.Usage.InputTokens - contentchoices[0].GenerationInfo["TotalTokens"] = resp.Message.Usage.InputTokens + usage = mergeAnthropicUsage(usage, resp.Message.Usage, resp.Usage) + applyAnthropicUsage(contentchoices[0].GenerationInfo, usage) case "content_block_start": - if resp.ContentBlock.Type == "tool_use" { + switch resp.ContentBlock.Type { + case "tool_use": + thoughts.toolCall(int32(resp.Index)) currentToolCall = &streaming.ToolCall{ ID: resp.ContentBlock.ID, Name: resp.ContentBlock.Name, } + case "redacted_thinking": + thoughts.encrypted(int32(resp.Index), []byte(resp.ContentBlock.Data)) } case "content_block_delta": switch resp.Delta.Type { case "text_delta": + streamedContent.WriteString(resp.Delta.Text) if err = streaming.CallWithText(ctx, options.StreamingFunc, resp.Delta.Text); err != nil { - return nil, err + streamErr = err + break DoStream } - contentchoices[0].Content += resp.Delta.Text case "thinking_delta": + thoughts.signature(int32(resp.Index), resp.Delta.Signature) if resp.Delta.Thinking != "" { + thoughts.text(int32(resp.Index), resp.Delta.Thinking) chunk := streaming.Chunk{ Type: streaming.ChunkTypeReasoning, Reasoning: &reasoning.ContentReasoning{Content: resp.Delta.Thinking}, } if err = options.StreamingFunc(ctx, chunk); err != nil { - return nil, err + streamErr = err + break DoStream } - contentchoices[0].Reasoning = appendReasoning(contentchoices[0].Reasoning, resp.Delta.Thinking) - } - if resp.Delta.Signature != "" { - signature.WriteString(resp.Delta.Signature) } case "signature_delta": - if resp.Delta.Signature != "" { - signature.WriteString(resp.Delta.Signature) - } + thoughts.signature(int32(resp.Index), resp.Delta.Signature) case "input_json_delta": if currentToolCall != nil { // Bedrock already sends deltas in PartialJSON, not full accumulated JSON @@ -483,7 +576,8 @@ func parseStreamingCompletionResponse(ctx context.Context, client *bedrockruntim if delta != "" { deltaToolCall := streaming.NewToolCall(currentToolCall.ID, currentToolCall.Name, delta) if err = streaming.CallWithToolCall(ctx, options.StreamingFunc, deltaToolCall); err != nil { - return nil, err + streamErr = err + break DoStream } } } @@ -503,43 +597,37 @@ func parseStreamingCompletionResponse(ctx context.Context, client *bedrockruntim } case "message_delta": contentchoices[0].StopReason = resp.Delta.StopReason - inputTokens := resp.Message.Usage.InputTokens - outputTokens := resp.Message.Usage.OutputTokens - if inputTokens == 0 { - if v, ok := contentchoices[0].GenerationInfo["input_tokens"].(int32); ok { - inputTokens = v - } - } - contentchoices[0].GenerationInfo["output_tokens"] = outputTokens - contentchoices[0].GenerationInfo["CompletionTokens"] = outputTokens - contentchoices[0].GenerationInfo["TotalTokens"] = inputTokens + outputTokens + contentchoices[0].Truncated = llms.IsTruncated(resp.Delta.StopReason) + usage = mergeAnthropicUsage(usage, resp.Message.Usage, resp.Usage) + applyAnthropicUsage(contentchoices[0].GenerationInfo, usage) } } } if err = stream.Err(); err != nil { - return nil, err + streamErr = err } // Add tool calls to the final response contentchoices[0].ToolCalls = toolCalls - - // Add signature to reasoning if accumulated - if signature.Len() > 0 && contentchoices[0].Reasoning != nil { - contentchoices[0].Reasoning.Signature = []byte(signature.String()) - } - - return &llms.ContentResponse{ - Choices: contentchoices, - }, nil -} - -func appendReasoning(reasoning *reasoning.ContentReasoning, reasoningContent string) *reasoning.ContentReasoning { - if reasoning == nil { - return processReasoning(reasoningContent, nil) + contentchoices[0].Reasoning = thoughts.result() + + contentchoices[0].Content = streamedContent.String() + + response := &llms.ContentResponse{Choices: contentchoices} + if streamErr != nil { + return response, streamErr + } + if contentchoices[0].StopReason == "refusal" { + return response, &llms.ErrModelRefusal{ + Provider: "bedrock", + Message: streamedContent.String(), + InputTokens: int(usage.InputTokens), + OutputTokens: int(usage.OutputTokens), + CacheCreationInputTokens: int(usage.CacheCreationInputTokens), + CacheReadInputTokens: int(usage.CacheReadInputTokens), + } } - - reasoning.Content += reasoningContent - return reasoning + return response, nil } // process the input messages to anthropic supported input @@ -574,32 +662,46 @@ func processInputMessagesAnthropic(messages []Message) ([]*anthropicTextGenerati return nil, "", errors.New("multiple system prompts") } for _, message := range chunk { - c := getAnthropicInputContent(message) - if c.Type != AnthropicMessageTypeText { + if message.Type != AnthropicMessageTypeText { return nil, "", errors.New("system prompt must be text") } + c, err := getAnthropicInputContent(message) + if err != nil { + return nil, "", err + } systemPrompt += c.Text } continue } - content := make([]anthropicTextGenerationInputContent, 0, len(chunk)) + var thoughts []reasoning.Block + toolUses := 0 for _, message := range chunk { - // For AI messages with reasoning, add thinking blocks before text - if message.Role == llms.ChatMessageTypeAI && message.Reasoning != nil { - // Add thinking block if present - if message.Reasoning.Content != "" || len(message.Reasoning.Signature) > 0 { - thinkingBlock := anthropicTextGenerationInputContent{ - Type: "thinking", - Thinking: message.Reasoning.Content, - } - if len(message.Reasoning.Signature) > 0 { - thinkingBlock.Signature = string(message.Reasoning.Signature) - } - content = append(content, thinkingBlock) - } + if message.Role == llms.ChatMessageTypeAI { + thoughts = append(thoughts, message.Reasoning.Sequence()...) + } + if message.Type == AnthropicMessageTypeToolUse { + toolUses++ + } + } + placed := reasoning.GroupByToolCalls(thoughts, toolUses) + + content := make([]anthropicTextGenerationInputContent, 0, len(chunk)+len(thoughts)) + content = appendAnthropicThinking(content, placed[0]) + emitted := 0 + for _, message := range chunk { + if message.Type == AnthropicMessageTypeText && message.Content == "" { + moveCacheMarkBack(content, message.CacheControl) + continue + } + block, err := getAnthropicInputContent(message) + if err != nil { + return nil, "", err + } + content = append(content, block) + if message.Type == AnthropicMessageTypeToolUse { + emitted++ + content = appendAnthropicThinking(content, placed[emitted]) } - // Add regular content (text, tool_use, tool_result, etc.) - content = append(content, getAnthropicInputContent(message)) } inputContents = append(inputContents, &anthropicTextGenerationInputMessage{ Role: role, @@ -609,6 +711,23 @@ func processInputMessagesAnthropic(messages []Message) ([]*anthropicTextGenerati return inputContents, systemPrompt, nil } +func appendAnthropicThinking( + content []anthropicTextGenerationInputContent, blocks []reasoning.Block, +) []anthropicTextGenerationInputContent { + for _, block := range blocks { + if block.Redacted != nil { + content = append(content, anthropicTextGenerationInputContent{Type: "redacted_thinking", Data: string(block.Redacted)}) + continue + } + content = append(content, anthropicTextGenerationInputContent{ + Type: "thinking", + Thinking: block.Text, + Signature: string(block.Signature), + }) + } + return content +} + // process the role of the message to anthropic supported role. func getAnthropicRole(role llms.ChatMessageType) (string, error) { switch role { @@ -631,7 +750,23 @@ func getAnthropicRole(role llms.ChatMessageType) (string, error) { } } -func getAnthropicInputContent(message Message) anthropicTextGenerationInputContent { +func moveCacheMarkBack(content []anthropicTextGenerationInputContent, mark *CacheControl) { + if mark == nil { + return + } + for i := len(content) - 1; i >= 0; i-- { + switch content[i].Type { + case "thinking", "redacted_thinking": + continue + } + if content[i].CacheControl == nil { + content[i].CacheControl = &anthropicCacheControl{Type: mark.Type, TTL: mark.TTL} + } + return + } +} + +func getAnthropicInputContent(message Message) (anthropicTextGenerationInputContent, error) { var c anthropicTextGenerationInputContent switch message.Type { case AnthropicMessageTypeText: @@ -646,6 +781,10 @@ func getAnthropicInputContent(message Message) anthropicTextGenerationInputConte } } case AnthropicMessageTypeImage: + if mimeTypeToFormat(message.MimeType) == "" { + return anthropicTextGenerationInputContent{}, + fmt.Errorf("%w: %s", ErrUnsupportedImageFormat, message.MimeType) + } c = anthropicTextGenerationInputContent{ Type: message.Type, Source: &anthropicBinGenerationInputSource{ @@ -678,7 +817,8 @@ func getAnthropicInputContent(message Message) anthropicTextGenerationInputConte } } } - return c + + return c, nil } // applyAnthropicReasoning resolves the thinking mechanism from the model via the @@ -688,79 +828,67 @@ func getAnthropicInputContent(message Message) anthropicTextGenerationInputConte func applyAnthropicReasoning( input *anthropicTextGenerationInput, cfg *llms.ReasoningConfig, modelID string, maxTokens int, ) error { + callerTemperature := input.Temperature // Adaptive-only models reject sampling params even without thinking. if reasoning.ClaudeRejectsSampling(modelID) { input.Temperature = 0 input.TopP = 0 input.TopK = 0 } + if reasoning.ClaudeMutuallyExclusiveSampling(modelID) && input.Temperature != 0 && input.TopP != 0 { + input.TopP = 0 + } switch cfg.ResolveMode() { case llms.ReasoningDefault: return nil case llms.ReasoningOff: - switch reasoning.ResolveOff(modelID, reasoning.ProviderBedrock) { - case reasoning.OffDisableClaude: + if reasoning.ResolveOff(modelID, reasoning.ProviderBedrock) == reasoning.OffDisableClaude { input.Thinking = &anthropicThinkingPayload{Type: "disabled"} - case reasoning.OffUnsupported: - return &reasoning.ErrReasoningOffUnsupported{Model: modelID} } return nil } setAdaptive := func() { input.Thinking = &anthropicThinkingPayload{Type: "adaptive", Display: "summarized"} - input.OutputConfig = &anthropicOutputConfig{Effort: string(cfg.GetEffort(maxTokens))} + input.OutputConfig = &anthropicOutputConfig{Effort: reasoning.ClaudeClampEffort(modelID, string(cfg.GetEffort(maxTokens)), reasoning.ProviderBedrock)} input.Temperature = 0 input.TopP = 0 input.TopK = 0 } - setBudget := func() { - mt := maxTokens - if mt == 0 { - mt = 2048 + setBudget := func() error { + tokens := reasoning.ClaudeClampBudget(modelID, cfg.GetTokens(maxTokens)) + if tokens <= 0 { + return &reasoning.ErrEffortHasNoBudget{Model: modelID, Effort: string(cfg.GetEffort(maxTokens))} + } + input.Thinking = &anthropicThinkingPayload{Type: "enabled", BudgetTokens: tokens} + if reasoning.ClaudeSupportsEffortWithBudget(modelID, reasoning.ProviderBedrock) { + input.OutputConfig = &anthropicOutputConfig{Effort: reasoning.ClaudeClampEffort(modelID, string(cfg.GetEffort(maxTokens)), reasoning.ProviderBedrock)} } - if tokens := cfg.GetTokens(mt); tokens > 0 { - input.Thinking = &anthropicThinkingPayload{Type: "enabled", BudgetTokens: tokens} - // Budget thinking requires temperature=1.0 and rejects top_p/top_k. + keepTopP := callerTemperature == 0 && + reasoning.ClaudeKeepsTopPWhileThinking(modelID, input.TopP) + switch { + case reasoning.ClaudeRejectsSampling(modelID), keepTopP: + input.Temperature = 0 + default: input.Temperature = 1.0 + } + if !keepTopP { input.TopP = 0 - input.TopK = 0 } + input.TopK = 0 + return nil } - switch { - case reasoning.ClaudeSupportsThinking(modelID): - // Known thinking Claude: the model, not the flag, picks the mechanism. - if reasoning.ResolveClaudeAdaptive(modelID, cfg.Adaptive) { - setAdaptive() - } else { - setBudget() - } - case cfg.Adaptive && !reasoning.ClaudePredatesAdaptive(modelID): - // Unclassified — assumed newer than the table — Claude generation with an - // explicit adaptive request. Known pre-adaptive families are excluded so - // adaptive is never sent to a model that would reject it with a 400; those - // fall through to the budget gate below (or send no thinking at all). + switch reasoning.ResolveMechanism(modelID, cfg.Adaptive, true, supportsAnthropicReasoning(modelID)) { + case reasoning.MechanismAdaptive: setAdaptive() - case supportsAnthropicReasoning(modelID): - setBudget() + case reasoning.MechanismBudget: + return setBudget() } return nil } -// supportsAnthropicReasoning checks if the model supports reasoning func supportsAnthropicReasoning(modelID string) bool { - reasoningModels := []string{ - "anthropic.claude-opus-4-", - "anthropic.claude-sonnet-4-", - "anthropic.claude-haiku-4-", - } - - for _, model := range reasoningModels { - if strings.Contains(modelID, model) { - return true - } - } - return false + return reasoning.IsReasoningModel(modelID) } diff --git a/llms/bedrock/internal/bedrockclient/provider_anthropic_reasoning_test.go b/llms/bedrock/internal/bedrockclient/provider_anthropic_reasoning_test.go index ef57f695c..67ceb456b 100644 --- a/llms/bedrock/internal/bedrockclient/provider_anthropic_reasoning_test.go +++ b/llms/bedrock/internal/bedrockclient/provider_anthropic_reasoning_test.go @@ -7,7 +7,6 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/vxcontrol/langchaingo/llms" - "github.com/vxcontrol/langchaingo/llms/reasoning" ) func marshalAnthropicInput(t *testing.T, input anthropicTextGenerationInput) map[string]any { @@ -41,7 +40,7 @@ func TestApplyAnthropicReasoning_Adaptive(t *testing.T) { assert.False(t, hasBudget, "adaptive thinking must not carry a token budget") outputConfig, _ := fields["output_config"].(map[string]any) - assert.Equal(t, "xhigh", outputConfig["effort"]) + assert.Equal(t, "high", outputConfig["effort"], "Bedrock serves xhigh on Opus 5 only") for _, key := range []string{"temperature", "top_p", "top_k"} { _, has := fields[key] @@ -89,6 +88,23 @@ func TestApplyAnthropicReasoning_AdaptiveEmptyEffortDefaultsToHigh(t *testing.T) assert.Equal(t, "high", input.OutputConfig.Effort) } +func TestApplyAnthropicReasoning_NoBudgetEffortForOpus45OnBedrock(t *testing.T) { + t.Parallel() + + input := anthropicTextGenerationInput{MaxTokens: 8000} + applyAnthropicReasoning(&input, + &llms.ReasoningConfig{Mode: llms.ReasoningOn, Effort: llms.ReasoningHigh}, + "us.anthropic.claude-opus-4-5-20251101-v1:0", 8000) + + fields := marshalAnthropicInput(t, input) + + thinking, _ := fields["thinking"].(map[string]any) + assert.Equal(t, "enabled", thinking["type"], "Opus 4.5 is budget-only") + + _, hasOutputConfig := fields["output_config"] + assert.False(t, hasOutputConfig, "Bedrock rejects output_config.effort on Opus 4.5") +} + func TestApplyAnthropicReasoning_Budget(t *testing.T) { t.Parallel() @@ -110,11 +126,10 @@ func TestApplyAnthropicReasoning_Budget(t *testing.T) { _, hasDisplay := thinking["display"] assert.False(t, hasDisplay, "budget thinking has no display field") - _, hasOutputConfig := fields["output_config"] - assert.False(t, hasOutputConfig, "budget thinking has no output_config") + outputConfig, _ := fields["output_config"].(map[string]any) + assert.Equal(t, "medium", outputConfig["effort"], + "Opus 4.6 accepts an effort alongside its budget") - // Budget thinking pins temperature to 1.0 and drops top_p/top_k — the API - // rejects temperature != 1 and top_p/top_k with thinking enabled. assert.EqualValues(t, 1.0, fields["temperature"]) _, hasTopP := fields["top_p"] assert.False(t, hasTopP, "budget thinking drops top_p") @@ -189,23 +204,20 @@ func TestApplyAnthropicReasoning_AdaptiveOnBudgetOnlyDowngrades(t *testing.T) { func TestApplyAnthropicReasoning_OffDefaultOnSendsDisabled(t *testing.T) { t.Parallel() - t.Skip("Skipping test due to model not being available") + for _, model := range []string{"us.anthropic.claude-sonnet-5-v1:0", "us.anthropic.claude-opus-5-v1:0"} { + t.Run(model, func(t *testing.T) { + t.Parallel() - // Sonnet 5 thinks by default, so an explicit off must send thinking:{disabled}. - input := anthropicTextGenerationInput{MaxTokens: 2048} - err := applyAnthropicReasoning(&input, - &llms.ReasoningConfig{Mode: llms.ReasoningOff}, - "us.anthropic.claude-sonnet-5-v1:0", 2048) - - require.NoError(t, err) - require.NotNil(t, input.Thinking) - assert.Equal(t, "disabled", input.Thinking.Type) + input := anthropicTextGenerationInput{MaxTokens: 2048} + err := applyAnthropicReasoning(&input, + &llms.ReasoningConfig{Mode: llms.ReasoningOff, Effort: llms.ReasoningXHigh}, model, 2048) + require.NoError(t, err) - fields := marshalAnthropicInput(t, input) - thinking, _ := fields["thinking"].(map[string]any) - assert.Equal(t, "disabled", thinking["type"]) - _, hasBudget := thinking["budget_tokens"] - assert.False(t, hasBudget, "disabled thinking carries no budget") + fields := marshalAnthropicInput(t, input) + assert.Equal(t, map[string]any{"type": "disabled"}, fields["thinking"]) + assert.NotContains(t, fields, "output_config", "Opus 5 rejects xhigh and max next to disabled thinking") + }) + } } func TestApplyAnthropicReasoning_OffDefaultOffOmits(t *testing.T) { @@ -221,16 +233,114 @@ func TestApplyAnthropicReasoning_OffDefaultOffOmits(t *testing.T) { assert.Nil(t, input.Thinking, "off on a default-off model omits thinking") } -func TestApplyAnthropicReasoning_OffAlwaysOnErrors(t *testing.T) { +func TestApplyAnthropicReasoning_OffAlwaysOnSendsNoThinking(t *testing.T) { t.Parallel() - // Fable 5 cannot disable thinking; an explicit off is a typed error, not a silent send. input := anthropicTextGenerationInput{MaxTokens: 2048} err := applyAnthropicReasoning(&input, &llms.ReasoningConfig{Mode: llms.ReasoningOff}, "us.anthropic.claude-fable-5-v1:0", 2048) - var offErr *reasoning.ErrReasoningOffUnsupported - require.ErrorAs(t, err, &offErr) - assert.Nil(t, input.Thinking) + require.NoError(t, err) + assert.Nil(t, input.Thinking, + "the refusal belongs to the door, which turns the call away before this payload is built") +} + +func TestApplyAnthropicReasoning_DropsTopPWhenBothSamplingParamsSet(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "us.anthropic.claude-haiku-4-5-20251001-v1:0", + "us.anthropic.claude-sonnet-4-5-20250929-v1:0", + "us.anthropic.claude-opus-4-5-20251101-v1:0", + "us.anthropic.claude-sonnet-4-6", + "us.anthropic.claude-opus-4-6-v1", + } { + t.Run(model, func(t *testing.T) { + input := anthropicTextGenerationInput{MaxTokens: 2048, Temperature: 0.5, TopP: 0.9} + require.NoError(t, applyAnthropicReasoning(&input, &llms.ReasoningConfig{}, model, 2048)) + fields := marshalAnthropicInput(t, input) + _, hasTemp := fields["temperature"] + _, hasTopP := fields["top_p"] + require.True(t, hasTemp, + "the model takes a temperature; dropping both params would satisfy a not-both assertion: %v", fields) + assert.False(t, hasTopP, "top_p is the one that goes: %v", fields) + }) + } +} + +func TestApplyAnthropicReasoning_BudgetKeepsTheSamplingRefusal(t *testing.T) { + t.Parallel() + + input := anthropicTextGenerationInput{MaxTokens: 4096, Temperature: 0.8, TopP: 0.9, TopK: 40} + applyAnthropicReasoning(&input, + &llms.ReasoningConfig{Effort: llms.ReasoningMedium, Tokens: 2048}, + "anthropic.claude-mythos-preview-v1:0", 4096) + + fields := marshalAnthropicInput(t, input) + + thinking, _ := fields["thinking"].(map[string]any) + assert.Equal(t, "enabled", thinking["type"], "budget thinking must reach the wire") + _, hasTemperature := fields["temperature"] + assert.False(t, hasTemperature, + "a model listed as rejecting sampling must not be handed temperature back by the budget path") +} + +func TestApplyAnthropicReasoning_BudgetStillPinsWhereSamplingIsAccepted(t *testing.T) { + t.Parallel() + + input := anthropicTextGenerationInput{MaxTokens: 4096, Temperature: 0.8, TopP: 0.9, TopK: 40} + applyAnthropicReasoning(&input, + &llms.ReasoningConfig{Effort: llms.ReasoningMedium, Tokens: 2048}, + "anthropic.claude-opus-4-6-v1:0", 4096) + + fields := marshalAnthropicInput(t, input) + + thinking, _ := fields["thinking"].(map[string]any) + assert.Equal(t, "enabled", thinking["type"]) + assert.InDelta(t, 1.0, fields["temperature"], 0.0001) +} + +func TestApplyAnthropicReasoning_UnsetMaxTokensUsesTheSharedDefault(t *testing.T) { + t.Parallel() + + cfg := &llms.ReasoningConfig{Effort: llms.ReasoningMedium} + input := anthropicTextGenerationInput{} + applyAnthropicReasoning(&input, cfg, "anthropic.claude-sonnet-4-5-v1:0", 0) + + fields := marshalAnthropicInput(t, input) + thinking, ok := fields["thinking"].(map[string]any) + require.True(t, ok, "budget thinking must reach the wire, got %v", fields) + + want := cfg.GetTokens(0) + assert.InDelta(t, float64(want), thinking["budget_tokens"], 0.5, + "an unset max-tokens must fall back to the same number every other caller gets") +} + +func TestApplyAnthropicReasoning_ReachesTheClaude5Generation(t *testing.T) { + t.Parallel() + + for _, modelID := range []string{ + "us.anthropic.claude-sonnet-5-v1:0", + "us.anthropic.claude-opus-5-v1:0", + "us.anthropic.claude-fable-5-v1:0", + } { + t.Run(modelID, func(t *testing.T) { + t.Parallel() + + input := anthropicTextGenerationInput{MaxTokens: 8000} + applyAnthropicReasoning(&input, + &llms.ReasoningConfig{Effort: llms.ReasoningMedium}, + modelID, 8000) + + fields := marshalAnthropicInput(t, input) + thinking, _ := fields["thinking"].(map[string]any) + require.NotNil(t, thinking, "legacy door asks this model to think") + assert.Equal(t, "adaptive", thinking["type"]) + assert.Equal(t, "summarized", thinking["display"]) + + outputConfig, _ := fields["output_config"].(map[string]any) + assert.Equal(t, "medium", outputConfig["effort"]) + }) + } } diff --git a/llms/bedrock/internal/bedrockclient/provider_cohere.go b/llms/bedrock/internal/bedrockclient/provider_cohere.go index 60ff85ae3..0e132e06b 100644 --- a/llms/bedrock/internal/bedrockclient/provider_cohere.go +++ b/llms/bedrock/internal/bedrockclient/provider_cohere.go @@ -123,10 +123,11 @@ func createCohereCompletion(ctx context.Context, modelID string, messages []Message, options llms.CallOptions, + warn *llms.Warnings, ) (*llms.ContentResponse, error) { // Check if this is a Command R model - if strings.Contains(modelID, "command-r") { - return createCohereCommandRCompletion(ctx, client, modelID, messages, options) + if IsCohereCommandR(modelID) { + return createCohereCommandRCompletion(ctx, client, modelID, messages, options, warn) } // Legacy models (command-text-v14, command-light-text-v14) @@ -137,7 +138,7 @@ func createCohereCompletion(ctx context.Context, Temperature: options.GetTemperature(), P: options.GetTopP(), K: options.GetTopK(), - MaxTokens: getMaxTokens(options.GetMaxTokens(), 20), + MaxTokens: maxTokensOnTheWire(warn, modelID, options, 20), StopSequences: options.StopWords, NumGenerations: options.GetCandidateCount(), } @@ -181,6 +182,7 @@ func createCohereCompletion(ctx context.Context, choices[i] = &llms.ContentChoice{ Content: gen.Text, StopReason: gen.FinishReason, + Truncated: llms.IsTruncated(gen.FinishReason), GenerationInfo: map[string]any{ "generation_id": gen.ID, "index": i, @@ -198,6 +200,7 @@ func createCohereCommandRCompletion(ctx context.Context, modelID string, messages []Message, options llms.CallOptions, + warn *llms.Warnings, ) (*llms.ContentResponse, error) { // Convert messages to Cohere format var currentMessage string @@ -232,7 +235,7 @@ func createCohereCommandRCompletion(ctx context.Context, input := &cohereCommandRInput{ Message: currentMessage, ChatHistory: chatHistory, - MaxTokens: getMaxTokens(options.GetMaxTokens(), 512), + MaxTokens: maxTokensOnTheWire(warn, modelID, options, 512), Temperature: options.GetTemperature(), P: options.GetTopP(), K: options.GetTopK(), @@ -276,6 +279,7 @@ func createCohereCommandRCompletion(ctx context.Context, { Content: output.Text, StopReason: output.FinishReason, + Truncated: llms.IsTruncated(output.FinishReason), GenerationInfo: map[string]any{ "id": output.ID, }, @@ -300,29 +304,37 @@ func parseCohereStreamingResponse(ctx context.Context, client *bedrockruntime.Cl defer streaming.CallWithDone(ctx, options.StreamingFunc) //nolint:errcheck contentchoices := []*llms.ContentChoice{{GenerationInfo: map[string]any{}}} + var streamedContent strings.Builder + var streamErr error + +DoStream: for e := range stream.Events() { if err = stream.Err(); err != nil { - return nil, err + streamErr = err + break DoStream } if v, ok := e.(*types.ResponseStreamMemberChunk); ok { var resp cohereStreamingResponseChunk err := json.NewDecoder(bytes.NewReader(v.Value.Bytes)).Decode(&resp) if err != nil { - return nil, err + streamErr = err + break DoStream } // Send text chunk if available if resp.Text != "" { + streamedContent.WriteString(resp.Text) if err = streaming.CallWithText(ctx, options.StreamingFunc, resp.Text); err != nil { - return nil, err + streamErr = err + break DoStream } - contentchoices[0].Content += resp.Text } // Set completion reason if resp.FinishReason != "" { contentchoices[0].StopReason = resp.FinishReason + contentchoices[0].Truncated = llms.IsTruncated(resp.FinishReason) } // Set generation info @@ -332,10 +344,10 @@ func parseCohereStreamingResponse(ctx context.Context, client *bedrockruntime.Cl } } if err = stream.Err(); err != nil { - return nil, err + streamErr = err } - return &llms.ContentResponse{ - Choices: contentchoices, - }, nil + contentchoices[0].Content = streamedContent.String() + + return &llms.ContentResponse{Choices: contentchoices}, streamErr } diff --git a/llms/bedrock/internal/bedrockclient/provider_deepseek.go b/llms/bedrock/internal/bedrockclient/provider_deepseek.go index ca784bf62..7673f0d99 100644 --- a/llms/bedrock/internal/bedrockclient/provider_deepseek.go +++ b/llms/bedrock/internal/bedrockclient/provider_deepseek.go @@ -42,6 +42,7 @@ func createDeepSeekCompletion(ctx context.Context, modelID string, messages []Message, options llms.CallOptions, + warn *llms.Warnings, ) (*llms.ContentResponse, error) { // Format prompt with DeepSeek-R1 required formatting prompt := formatDeepSeekPrompt(messages) @@ -50,7 +51,7 @@ func createDeepSeekCompletion(ctx context.Context, Prompt: prompt, Temperature: options.GetTemperature(), TopP: options.GetTopP(), - MaxTokens: getMaxTokens(options.GetMaxTokens(), 512), + MaxTokens: maxTokensOnTheWire(warn, modelID, options, 512), Stop: options.StopWords, } @@ -92,6 +93,7 @@ func createDeepSeekCompletion(ctx context.Context, choices = append(choices, &llms.ContentChoice{ Content: choice.Text, StopReason: choice.StopReason, + Truncated: llms.IsTruncated(choice.StopReason), }) } @@ -146,35 +148,43 @@ func parseDeepSeekStreamingResponse(ctx context.Context, client *bedrockruntime. defer streaming.CallWithDone(ctx, options.StreamingFunc) //nolint:errcheck contentchoices := []*llms.ContentChoice{{GenerationInfo: map[string]any{}}} + var streamedContent strings.Builder + var streamErr error + +DoStream: for e := range stream.Events() { if err = stream.Err(); err != nil { - return nil, err + streamErr = err + break DoStream } if v, ok := e.(*types.ResponseStreamMemberChunk); ok { var resp deepSeekStreamingResponseChunk err := json.NewDecoder(bytes.NewReader(v.Value.Bytes)).Decode(&resp) if err != nil { - return nil, err + streamErr = err + break DoStream } if len(resp.Choices) > 0 && resp.Choices[0].Text != "" { + streamedContent.WriteString(resp.Choices[0].Text) if err = streaming.CallWithText(ctx, options.StreamingFunc, resp.Choices[0].Text); err != nil { - return nil, err + streamErr = err + break DoStream } - contentchoices[0].Content += resp.Choices[0].Text } if len(resp.Choices) > 0 && resp.Choices[0].StopReason != "" { contentchoices[0].StopReason = resp.Choices[0].StopReason + contentchoices[0].Truncated = llms.IsTruncated(resp.Choices[0].StopReason) } } } if err = stream.Err(); err != nil { - return nil, err + streamErr = err } - return &llms.ContentResponse{ - Choices: contentchoices, - }, nil + contentchoices[0].Content = streamedContent.String() + + return &llms.ContentResponse{Choices: contentchoices}, streamErr } diff --git a/llms/bedrock/internal/bedrockclient/provider_meta.go b/llms/bedrock/internal/bedrockclient/provider_meta.go index 30fb664cc..0ada34a0d 100644 --- a/llms/bedrock/internal/bedrockclient/provider_meta.go +++ b/llms/bedrock/internal/bedrockclient/provider_meta.go @@ -5,6 +5,7 @@ import ( "context" "encoding/json" "errors" + "strings" "github.com/vxcontrol/langchaingo/llms" "github.com/vxcontrol/langchaingo/llms/streaming" @@ -68,6 +69,7 @@ func createMetaCompletion(ctx context.Context, modelID string, messages []Message, options llms.CallOptions, + warn *llms.Warnings, ) (*llms.ContentResponse, error) { txt := processInputMessagesGeneric(messages) @@ -75,7 +77,7 @@ func createMetaCompletion(ctx context.Context, Prompt: txt, Temperature: options.GetTemperature(), TopP: options.GetTopP(), - MaxGenLen: getMaxTokens(options.GetMaxTokens(), 512), + MaxGenLen: maxTokensOnTheWire(warn, modelID, options, 512), } body, err := json.Marshal(input) @@ -117,13 +119,14 @@ func createMetaCompletion(ctx context.Context, { Content: output.Generation, StopReason: output.StopReason, + Truncated: llms.IsTruncated(output.StopReason), GenerationInfo: map[string]any{ "input_tokens": output.PromptTokenCount, "output_tokens": output.GenerationTokenCount, // Standardized field names for cross-provider compatibility - "PromptTokens": output.PromptTokenCount, - "CompletionTokens": output.GenerationTokenCount, - "TotalTokens": output.PromptTokenCount + output.GenerationTokenCount, + "PromptTokens": int(output.PromptTokenCount), + "CompletionTokens": int(output.GenerationTokenCount), + "TotalTokens": int(output.PromptTokenCount) + int(output.GenerationTokenCount), }, }, }, @@ -143,50 +146,60 @@ func parseMetaStreamingResponse(ctx context.Context, client *bedrockruntime.Clie defer streaming.CallWithDone(ctx, options.StreamingFunc) //nolint:errcheck contentchoices := []*llms.ContentChoice{{GenerationInfo: map[string]any{}}} + var streamedContent strings.Builder + var streamErr error + +DoStream: for e := range stream.Events() { if err = stream.Err(); err != nil { - return nil, err + streamErr = err + break DoStream } if v, ok := e.(*types.ResponseStreamMemberChunk); ok { var resp metaStreamingResponseChunk err := json.NewDecoder(bytes.NewReader(v.Value.Bytes)).Decode(&resp) if err != nil { - return nil, err + streamErr = err + break DoStream } // Send text chunk if available if resp.Generation != "" { + streamedContent.WriteString(resp.Generation) if err = streaming.CallWithText(ctx, options.StreamingFunc, resp.Generation); err != nil { - return nil, err + streamErr = err + break DoStream } - contentchoices[0].Content += resp.Generation } // Set completion reason if resp.StopReason != "" { contentchoices[0].StopReason = resp.StopReason + contentchoices[0].Truncated = llms.IsTruncated(resp.StopReason) } // Set token counts if resp.PromptTokenCount > 0 { contentchoices[0].GenerationInfo["input_tokens"] = resp.PromptTokenCount - contentchoices[0].GenerationInfo["PromptTokens"] = resp.PromptTokenCount + contentchoices[0].GenerationInfo["PromptTokens"] = int(resp.PromptTokenCount) } if resp.GenerationTokenCount > 0 { contentchoices[0].GenerationInfo["output_tokens"] = resp.GenerationTokenCount - contentchoices[0].GenerationInfo["CompletionTokens"] = resp.GenerationTokenCount + contentchoices[0].GenerationInfo["CompletionTokens"] = int(resp.GenerationTokenCount) } - if resp.PromptTokenCount > 0 || resp.GenerationTokenCount > 0 { - contentchoices[0].GenerationInfo["TotalTokens"] = resp.PromptTokenCount + resp.GenerationTokenCount + prompt, _ := contentchoices[0].GenerationInfo["PromptTokens"].(int) + completion, _ := contentchoices[0].GenerationInfo["CompletionTokens"].(int) + if prompt > 0 || completion > 0 { + contentchoices[0].GenerationInfo["TotalTokens"] = prompt + completion } } } if err = stream.Err(); err != nil { - return nil, err + streamErr = err } - return &llms.ContentResponse{ - Choices: contentchoices, - }, nil + contentchoices[0].Content = streamedContent.String() + + return &llms.ContentResponse{Choices: contentchoices}, streamErr } diff --git a/llms/bedrock/internal/bedrockclient/provider_nova.go b/llms/bedrock/internal/bedrockclient/provider_nova.go index e18c2f677..789e17188 100644 --- a/llms/bedrock/internal/bedrockclient/provider_nova.go +++ b/llms/bedrock/internal/bedrockclient/provider_nova.go @@ -5,8 +5,11 @@ import ( "context" "encoding/json" "errors" + "fmt" + "strings" "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" "github.com/vxcontrol/langchaingo/llms/streaming" "github.com/aws/aws-sdk-go-v2/aws" @@ -61,6 +64,11 @@ type novaSystemPrompt struct { Text string `json:"text,omitempty"` } +type novaReasoningConfigInput struct { + Type string `json:"type,omitempty"` + MaxReasoningEffort string `json:"maxReasoningEffort,omitempty"` +} + // novaInferenceConfigInput is the input for the text generation configuration for Amazon Nova Models. type novaInferenceConfigInput struct { // The maximum number of tokens to generate per result. Optional, default = 512 @@ -71,7 +79,8 @@ type novaInferenceConfigInput struct { Temperature float64 `json:"temperature,omitempty"` // Specify a character sequence to indicate where the model should stop. // Currently only supports: ["|", "User:"] - StopSequences []string `json:"stopSequences,omitempty"` + StopSequences []string `json:"stopSequences,omitempty"` + ReasoningConfig *novaReasoningConfigInput `json:"reasoningConfig,omitempty"` } // novaTextGenerationInput is the input for the text generation for Amazon Nova Models. @@ -84,14 +93,23 @@ type novaTextGenerationInput struct { System []*novaSystemPrompt `json:"system,omitempty"` } +type novaOutputContent struct { + Text string `json:"text"` + ReasoningContent *novaReasoningContentOutput `json:"reasoningContent"` +} + +type novaReasoningContentOutput struct { + ReasoningText struct { + Text string `json:"text"` + } `json:"reasoningText"` +} + // novaTextGenerationOutput is the output for the text generation for Amazon Nova Models. type novaTextGenerationOutput struct { Output struct { Message struct { - Content []struct { - Text string `json:"text"` - } `json:"content"` - Role string `json:"role"` + Content []novaOutputContent `json:"content"` + Role string `json:"role"` } `json:"message"` } `json:"output"` StopReason string `json:"stopReason"` @@ -108,22 +126,24 @@ type novaTextGenerationOutput struct { type novaStreamingResponseChunk struct { ContentBlockDelta struct { Delta struct { - Text string `json:"text"` + Text string `json:"text"` + ReasoningContent *struct { + Text string `json:"text"` + } `json:"reasoningContent"` } `json:"delta"` } `json:"contentBlockDelta"` MessageStart struct { - Role string `json:"role"` - Usage struct { - InputTokens int32 `json:"inputTokens"` - } `json:"usage"` + Role string `json:"role"` } `json:"messageStart"` - MessageDelta struct { + MessageStop struct { StopReason string `json:"stopReason"` - Usage struct { + } `json:"messageStop"` + Metadata struct { + Usage struct { + InputTokens int32 `json:"inputTokens"` OutputTokens int32 `json:"outputTokens"` } `json:"usage"` - } `json:"messageDelta"` - MessageStop struct{} `json:"messageStop"` + } `json:"metadata"` } // Finish reason for Nova models @@ -147,20 +167,54 @@ const ( NovaMessageTypeImage = "image" ) -func novaInputToJSON(inputContents []*novaTextGenerationInputMessage, systemPrompt string, options llms.CallOptions) ([]byte, error) { +func novaInputToJSON(inputContents []*novaTextGenerationInputMessage, systemPrompt, modelID string, + options llms.CallOptions, warn *llms.Warnings, +) ([]byte, error) { + inferenceConfig := novaInferenceConfigInput{ + MaxTokens: options.GetMaxTokens(), + Temperature: options.GetTemperature(), + TopP: options.GetTopP(), + StopSequences: options.StopWords, + } + if options.Reasoning.ResolveMode() == llms.ReasoningOn && reasoning.IsNovaReasoningModel(modelID) { + effort := reasoning.NovaEffort(string(options.Reasoning.GetEffort(options.GetMaxTokens()))) + inferenceConfig.ReasoningConfig = &novaReasoningConfigInput{Type: "enabled", MaxReasoningEffort: effort} + if reasoning.NovaClearsInferenceConfigAt(effort) { + inferenceConfig.MaxTokens = 0 + inferenceConfig.Temperature = 0 + inferenceConfig.TopP = 0 + } + reportNovaReasoning(warn, modelID, options, effort) + } else if options.Reasoning.ResolveMode() == llms.ReasoningOn { + reportThinkingUnsupported(warn, modelID, options.Reasoning) + } + input := novaTextGenerationInput{ - Messages: inputContents, - InferenceConfig: novaInferenceConfigInput{ - MaxTokens: options.GetMaxTokens(), - Temperature: options.GetTemperature(), - TopP: options.GetTopP(), - StopSequences: options.StopWords, - }, - System: []*novaSystemPrompt{{Text: systemPrompt}}, + Messages: inputContents, + InferenceConfig: inferenceConfig, + } + if systemPrompt != "" { + input.System = []*novaSystemPrompt{{Text: systemPrompt}} } return json.Marshal(input) } +func splitNovaReasoning(blocks []novaOutputContent) ([]novaOutputContent, *reasoning.ContentReasoning) { + answers := make([]novaOutputContent, 0, len(blocks)) + var thought string + for _, block := range blocks { + if block.ReasoningContent == nil { + answers = append(answers, block) + continue + } + thought += block.ReasoningContent.ReasoningText.Text + } + if thought == "" { + return answers, nil + } + return answers, &reasoning.ContentReasoning{Content: thought} +} + func parseNovaResponseBody(body []byte) (*novaTextGenerationOutput, error) { var output novaTextGenerationOutput err := json.Unmarshal(body, &output) @@ -172,13 +226,14 @@ func createNovaCompletion(ctx context.Context, modelID string, messages []Message, options llms.CallOptions, + warn *llms.Warnings, ) (*llms.ContentResponse, error) { inputContents, systemPrompt, err := processInputMessagesNova(messages) if err != nil { return nil, err } - body, err := novaInputToJSON(inputContents, systemPrompt, options) + body, err := novaInputToJSON(inputContents, systemPrompt, modelID, options, warn) if err != nil { return nil, err } @@ -209,8 +264,8 @@ func createNovaCompletion(ctx context.Context, return nil, err } - content := output.Output.Message.Content - if len(content) == 0 { + content, contentReasoning := splitNovaReasoning(output.Output.Message.Content) + if len(content) == 0 && contentReasoning == nil { return nil, errors.New("no results") } else if stopReason := output.StopReason; stopReason != NovaCompletionReasonEndTurn && stopReason != NovaCompletionReasonStopSequence && @@ -218,18 +273,23 @@ func createNovaCompletion(ctx context.Context, stopReason != NovaCompletionReasonContentFiltered { return nil, errors.New("completed due to " + stopReason + ". Maybe try increasing max tokens") } + if len(content) == 0 { + content = []novaOutputContent{{}} + } Contentchoices := make([]*llms.ContentChoice, len(content)) for i, c := range content { Contentchoices[i] = &llms.ContentChoice{ Content: c.Text, + Reasoning: contentReasoning, StopReason: output.StopReason, + Truncated: llms.IsTruncated(output.StopReason), GenerationInfo: map[string]any{ "input_tokens": output.Usage.InputTokens, "output_tokens": output.Usage.OutputTokens, // Standardized field names for cross-provider compatibility - "PromptTokens": output.Usage.InputTokens, - "CompletionTokens": output.Usage.OutputTokens, - "TotalTokens": output.Usage.InputTokens + output.Usage.OutputTokens, + "PromptTokens": int(output.Usage.InputTokens), + "CompletionTokens": int(output.Usage.OutputTokens), + "TotalTokens": int(output.Usage.InputTokens) + int(output.Usage.OutputTokens), }, } } @@ -270,14 +330,21 @@ func processInputMessagesNova(messages []Message) ([]*novaTextGenerationInputMes return nil, "", errors.New("multiple system prompts") } for _, message := range chunk { - c := getNovaInputContent(message) + c, err := getNovaInputContent(message) + if err != nil { + return nil, "", err + } systemPrompt += c.Text } continue } content := make([]novaTextGenerationInputContent, 0, len(chunk)) for _, message := range chunk { - content = append(content, getNovaInputContent(message)) + c, err := getNovaInputContent(message) + if err != nil { + return nil, "", err + } + content = append(content, c) } inputContents = append(inputContents, &novaTextGenerationInputMessage{ Role: role, @@ -307,22 +374,27 @@ func getNovaRole(role llms.ChatMessageType) (string, error) { } } -func getNovaInputContent(message Message) novaTextGenerationInputContent { +func getNovaInputContent(message Message) (novaTextGenerationInputContent, error) { var c novaTextGenerationInputContent if message.Type == NovaMessageTypeText { c = novaTextGenerationInputContent{ Text: message.Content, } } else if message.Type == NovaMessageTypeImage { + format := mimeTypeToFormat(message.MimeType) + if format == "" { + return novaTextGenerationInputContent{}, + fmt.Errorf("%w: %s", ErrUnsupportedImageFormat, message.MimeType) + } c = novaTextGenerationInputContent{} c.Image = &novaImageInput{ - Format: mimeTypeToFormat(message.MimeType), + Format: format, Source: novaBinGenerationInputSource{ Bytes: []byte(message.Content), }, } } - return c + return c, nil } func mimeTypeToFormat(mimeType string) string { @@ -353,50 +425,73 @@ func parseNovaStreamingResponse(ctx context.Context, client *bedrockruntime.Clie defer streaming.CallWithDone(ctx, options.StreamingFunc) //nolint:errcheck contentchoices := []*llms.ContentChoice{{GenerationInfo: map[string]any{}}} + var streamedContent strings.Builder + var streamedThought strings.Builder + var streamErr error + +DoStream: for e := range stream.Events() { if err = stream.Err(); err != nil { - return nil, err + streamErr = err + break DoStream } if v, ok := e.(*types.ResponseStreamMemberChunk); ok { var resp novaStreamingResponseChunk err := json.NewDecoder(bytes.NewReader(v.Value.Bytes)).Decode(&resp) if err != nil { - return nil, err + streamErr = err + break DoStream + } + + if thought := resp.ContentBlockDelta.Delta.ReasoningContent; thought != nil && thought.Text != "" { + streamedThought.WriteString(thought.Text) + chunk := streaming.Chunk{ + Type: streaming.ChunkTypeReasoning, + Reasoning: &reasoning.ContentReasoning{Content: thought.Text}, + } + if err = options.StreamingFunc(ctx, chunk); err != nil { + streamErr = err + break DoStream + } } // Check for content delta (text chunks) if resp.ContentBlockDelta.Delta.Text != "" { + streamedContent.WriteString(resp.ContentBlockDelta.Delta.Text) if err = streaming.CallWithText(ctx, options.StreamingFunc, resp.ContentBlockDelta.Delta.Text); err != nil { - return nil, err + streamErr = err + break DoStream } - contentchoices[0].Content += resp.ContentBlockDelta.Delta.Text } - // Check for message start (contains input tokens) - if resp.MessageStart.Usage.InputTokens > 0 { - contentchoices[0].GenerationInfo["input_tokens"] = resp.MessageStart.Usage.InputTokens - contentchoices[0].GenerationInfo["PromptTokens"] = resp.MessageStart.Usage.InputTokens + if resp.MessageStop.StopReason != "" { + contentchoices[0].StopReason = resp.MessageStop.StopReason + contentchoices[0].Truncated = llms.IsTruncated(resp.MessageStop.StopReason) } - - // Check for message delta (contains stop reason and output tokens) - if resp.MessageDelta.StopReason != "" { - contentchoices[0].StopReason = resp.MessageDelta.StopReason + if resp.Metadata.Usage.InputTokens > 0 { + contentchoices[0].GenerationInfo["input_tokens"] = resp.Metadata.Usage.InputTokens + contentchoices[0].GenerationInfo["PromptTokens"] = int(resp.Metadata.Usage.InputTokens) } - if resp.MessageDelta.Usage.OutputTokens > 0 { - contentchoices[0].GenerationInfo["output_tokens"] = resp.MessageDelta.Usage.OutputTokens - contentchoices[0].GenerationInfo["CompletionTokens"] = resp.MessageDelta.Usage.OutputTokens + if resp.Metadata.Usage.OutputTokens > 0 { + contentchoices[0].GenerationInfo["output_tokens"] = resp.Metadata.Usage.OutputTokens + contentchoices[0].GenerationInfo["CompletionTokens"] = int(resp.Metadata.Usage.OutputTokens) } - if resp.MessageStart.Usage.InputTokens > 0 || resp.MessageDelta.Usage.OutputTokens > 0 { - contentchoices[0].GenerationInfo["TotalTokens"] = resp.MessageStart.Usage.InputTokens + resp.MessageDelta.Usage.OutputTokens + prompt, _ := contentchoices[0].GenerationInfo["PromptTokens"].(int) + completion, _ := contentchoices[0].GenerationInfo["CompletionTokens"].(int) + if prompt > 0 || completion > 0 { + contentchoices[0].GenerationInfo["TotalTokens"] = prompt + completion } } } if err = stream.Err(); err != nil { - return nil, err + streamErr = err } - return &llms.ContentResponse{ - Choices: contentchoices, - }, nil + contentchoices[0].Content = streamedContent.String() + if streamedThought.Len() > 0 { + contentchoices[0].Reasoning = &reasoning.ContentReasoning{Content: streamedThought.String()} + } + + return &llms.ContentResponse{Choices: contentchoices}, streamErr } diff --git a/llms/bedrock/internal/bedrockclient/reasoning_off_test.go b/llms/bedrock/internal/bedrockclient/reasoning_off_test.go new file mode 100644 index 000000000..d9d541fbf --- /dev/null +++ b/llms/bedrock/internal/bedrockclient/reasoning_off_test.go @@ -0,0 +1,125 @@ +package bedrockclient + +import ( + "context" + "net/http" + "sync/atomic" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/credentials" + "github.com/aws/aws-sdk-go-v2/service/bedrockruntime" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +type countingTransport struct{ seen *int32 } + +func (c *countingTransport) Do(req *http.Request) (*http.Response, error) { + atomic.AddInt32(c.seen, 1) + return &http.Response{ + StatusCode: http.StatusOK, + Body: http.NoBody, + Header: http.Header{}, + Request: req, + }, nil +} + +func legacyClientCounting(seen *int32) *Client { + return &Client{client: bedrockruntime.New(bedrockruntime.Options{ + Region: "us-east-1", + Credentials: credentials.NewStaticCredentialsProvider("k", "s", ""), + HTTPClient: &countingTransport{seen: seen}, + RetryMaxAttempts: 1, + })} +} + +func offCall(t *testing.T, model string) (int32, error) { + t.Helper() + + var seen int32 + _, err := legacyClientCounting(&seen).CreateCompletion(context.Background(), model, + []Message{{Role: llms.ChatMessageTypeHuman, Content: "hi", Type: "text"}}, + llms.CallOptions{Model: aws.String(model), Reasoning: &llms.ReasoningConfig{Mode: llms.ReasoningOff}}, + ) + return atomic.LoadInt32(&seen), err +} + +func TestTheLegacyDoorRefusesAnUndisableableThinking(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "us.deepseek.r1-v1:0", + "us.anthropic.claude-fable-5-1", + } { + t.Run(model, func(t *testing.T) { + t.Parallel() + + seen, err := offCall(t, model) + + var offErr *reasoning.ErrReasoningOffUnsupported + require.ErrorAs(t, err, &offErr, + "the Converse door refuses this model; the default door must refuse it too") + assert.Zero(t, seen, "the refusal must come before the request leaves") + }) + } +} + +func TestTheLegacyDoorServesAnOffThatOmittingAlreadyMeans(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "meta.llama3-70b-instruct-v1:0", + "us.amazon.nova-2-lite-v1:0", + } { + t.Run(model, func(t *testing.T) { + t.Parallel() + + _, err := offCall(t, model) + + var offErr *reasoning.ErrReasoningOffUnsupported + if err != nil { + require.NotErrorAs(t, err, &offErr, + "omitting the field already means off here, so the caller loses nothing") + } + }) + } +} + +func TestTheLegacyDoorSendsTheOffADefaultOnClaudeAccepts(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "us.anthropic.claude-sonnet-5-v1:0", + "us.anthropic.claude-opus-5-v1:0", + } { + t.Run(model, func(t *testing.T) { + t.Parallel() + + seen, err := offCall(t, model) + + var offErr *reasoning.ErrReasoningOffUnsupported + require.NotErrorAs(t, err, &offErr, "Bedrock documents thinking disabled for this model") + assert.Positive(t, seen, "the call must reach the vendor") + }) + } +} + +func TestTheLegacyDoorLeavesACallThatSaidNothingAboutThinkingAlone(t *testing.T) { + t.Parallel() + + model := "us.anthropic.claude-sonnet-5-v1:0" + var seen int32 + _, err := legacyClientCounting(&seen).CreateCompletion(context.Background(), model, + []Message{{Role: llms.ChatMessageTypeHuman, Content: "hi", Type: "text"}}, + llms.CallOptions{Model: aws.String(model)}, + ) + + var offErr *reasoning.ErrReasoningOffUnsupported + require.NotErrorAs(t, err, &offErr, + "a caller who said nothing about thinking asked for nothing that could be refused") + assert.Positive(t, atomic.LoadInt32(&seen), "the call must reach the vendor") +} diff --git a/llms/bedrock/internal/bedrockclient/reasoning_replay_test.go b/llms/bedrock/internal/bedrockclient/reasoning_replay_test.go new file mode 100644 index 000000000..b540068e1 --- /dev/null +++ b/llms/bedrock/internal/bedrockclient/reasoning_replay_test.go @@ -0,0 +1,47 @@ +package bedrockclient + +import ( + "testing" + + "github.com/aws/aws-sdk-go-v2/service/bedrockruntime/types" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func reasoningTextOf(t *testing.T, blocks []types.ContentBlock) types.ReasoningTextBlock { + t.Helper() + + for _, block := range blocks { + wrapper, ok := block.(*types.ContentBlockMemberReasoningContent) + if !ok { + continue + } + text, ok := wrapper.Value.(*types.ReasoningContentBlockMemberReasoningText) + require.True(t, ok, "the reasoning block must carry reasoningText") + return text.Value + } + + t.Fatal("no reasoning block was emitted") + return types.ReasoningTextBlock{} +} + +func TestSignatureOnlyReasoningKeepsTheTextField(t *testing.T) { + t.Parallel() + + signatureOnly := &reasoning.ContentReasoning{Signature: []byte("sig-only")} + + t.Run("accumulated message", func(t *testing.T) { + t.Parallel() + + acc := &aiMessageAccumulator{} + acc.addTextContent("", signatureOnly) + + block := reasoningTextOf(t, acc.build().Content) + require.NotNil(t, block.Text) + assert.Empty(t, *block.Text) + require.NotNil(t, block.Signature) + assert.Equal(t, "sig-only", *block.Signature) + }) +} diff --git a/llms/bedrock/internal/bedrockclient/reasoning_stream.go b/llms/bedrock/internal/bedrockclient/reasoning_stream.go new file mode 100644 index 000000000..e87c31501 --- /dev/null +++ b/llms/bedrock/internal/bedrockclient/reasoning_stream.go @@ -0,0 +1,66 @@ +package bedrockclient + +import ( + "bytes" + "maps" + "slices" + "strings" + + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +type streamedBlock struct { + toolCall bool + text strings.Builder + signature bytes.Buffer + redacted []byte +} + +type streamedReasoning struct { + blocks map[int32]*streamedBlock +} + +func (s *streamedReasoning) at(index int32) *streamedBlock { + if s.blocks == nil { + s.blocks = make(map[int32]*streamedBlock) + } + block, ok := s.blocks[index] + if !ok { + block = &streamedBlock{} + s.blocks[index] = block + } + return block +} + +func (s *streamedReasoning) text(index int32, text string) { + s.at(index).text.WriteString(text) +} + +func (s *streamedReasoning) signature(index int32, signature string) { + s.at(index).signature.WriteString(signature) +} + +func (s *streamedReasoning) encrypted(index int32, data []byte) { + block := s.at(index) + block.redacted = append(block.redacted, data...) +} + +func (s *streamedReasoning) toolCall(index int32) { + s.at(index).toolCall = true +} + +func (s *streamedReasoning) result() *reasoning.ContentReasoning { + var thoughts reasoning.Collector + for _, index := range slices.Sorted(maps.Keys(s.blocks)) { + block := s.blocks[index] + switch { + case block.redacted != nil: + thoughts.Encrypted(block.redacted) + case block.text.Len() > 0 || block.signature.Len() > 0: + thoughts.Thought(block.text.String(), bytes.Clone(block.signature.Bytes())) + case block.toolCall: + thoughts.ToolCall() + } + } + return thoughts.Reasoning() +} diff --git a/llms/bedrock/internal/bedrockclient/thinking_blocks_test.go b/llms/bedrock/internal/bedrockclient/thinking_blocks_test.go new file mode 100644 index 000000000..140c6f790 --- /dev/null +++ b/llms/bedrock/internal/bedrockclient/thinking_blocks_test.go @@ -0,0 +1,75 @@ +package bedrockclient + +import ( + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestTwoEncryptedBlocksTravelBackAsTwo(t *testing.T) { + t.Parallel() + + messages := []Message{ + {Role: llms.ChatMessageTypeHuman, Content: "hi", Type: "text"}, + { + Role: llms.ChatMessageTypeAI, Content: "answer", Type: "text", + Reasoning: reasoning.FromBlocks([]reasoning.Block{{Redacted: []byte{0x01}}, {Redacted: []byte{0x02}}}), + }, + } + + contents, _, err := processInputMessagesAnthropic(messages) + require.NoError(t, err) + + blocks := 0 + for _, message := range contents { + for _, block := range message.Content { + if block.Type == "redacted_thinking" { + blocks++ + } + } + } + assert.Equal(t, 2, blocks, "merging them would leave nothing to split on the way back") +} + +func TestASystemMessageDoesNotSplitTwoHumanTurns(t *testing.T) { + t.Parallel() + + client := NewConverseClient(nil) + built, err := client.buildConverseInput(&ConverseInput{ + ModelID: "us.anthropic.claude-haiku-4-5-v1:0", + Messages: []Message{ + {Role: llms.ChatMessageTypeHuman, Content: "first", Type: "text"}, + {Role: llms.ChatMessageTypeSystem, Content: "be brief", Type: "text"}, + {Role: llms.ChatMessageTypeHuman, Content: "second", Type: "text"}, + }, + }) + require.NoError(t, err) + + require.Len(t, built.Messages, 1, "the vendor refuses two user turns in a row") + assert.Len(t, built.Messages[0].Content, 2, "both human blocks stay in that one turn") +} + +func TestALegacyImageFormatTheVendorRefusesIsCaughtBeforeTheWire(t *testing.T) { + t.Parallel() + + _, _, err := processInputMessagesAnthropic([]Message{{ + Role: llms.ChatMessageTypeHuman, Type: AnthropicMessageTypeImage, + MimeType: "image/heic", Content: "x", + }}) + require.ErrorIs(t, err, ErrUnsupportedImageFormat) +} + +func TestALegacyImageFormatTheVendorTakesStillTravels(t *testing.T) { + t.Parallel() + + contents, _, err := processInputMessagesAnthropic([]Message{{ + Role: llms.ChatMessageTypeHuman, Type: AnthropicMessageTypeImage, + MimeType: "image/png", Content: "x", + }}) + require.NoError(t, err) + require.NotEmpty(t, contents) +} diff --git a/llms/bedrock/internal/bedrockclient/thinking_replay_test.go b/llms/bedrock/internal/bedrockclient/thinking_replay_test.go new file mode 100644 index 000000000..a166c1e79 --- /dev/null +++ b/llms/bedrock/internal/bedrockclient/thinking_replay_test.go @@ -0,0 +1,62 @@ +package bedrockclient + +import ( + "encoding/json" + "strings" + "testing" +) + +func TestSignatureOnlyThinkingBlockKeepsItsField(t *testing.T) { + t.Parallel() + + body, err := json.Marshal(anthropicTextGenerationInputContent{ + Type: "thinking", + Signature: "sig-abc", + }) + if err != nil { + t.Fatalf("marshal: %v", err) + } + if !strings.Contains(string(body), `"thinking":""`) { + t.Errorf("a signature-only thinking block must still carry the field, got %s", body) + } + if !strings.Contains(string(body), `"signature":"sig-abc"`) { + t.Errorf("the signature must survive, got %s", body) + } +} + +func TestOtherBlocksDoNotGainAThinkingField(t *testing.T) { + t.Parallel() + + for _, blockType := range []string{"text", "image", "tool_use", "tool_result"} { + t.Run(blockType, func(t *testing.T) { + t.Parallel() + body, err := json.Marshal(anthropicTextGenerationInputContent{ + Type: blockType, + Text: "hi", + }) + if err != nil { + t.Fatalf("marshal: %v", err) + } + if strings.Contains(string(body), `"thinking"`) { + t.Errorf("a %s block must not carry a thinking field, got %s", blockType, body) + } + }) + } +} + +func TestThinkingBlockKeepsItsFieldOrder(t *testing.T) { + t.Parallel() + + body, err := json.Marshal(anthropicTextGenerationInputContent{ + Type: "thinking", + Thinking: "reasoned", + Signature: "sig-abc", + }) + if err != nil { + t.Fatalf("marshal: %v", err) + } + const want = `{"type":"thinking","thinking":"reasoned","signature":"sig-abc"}` + if string(body) != want { + t.Errorf("recorded requests are matched byte for byte, so the order is part of the contract:\ngot %s\nwant %s", body, want) + } +} diff --git a/llms/bedrock/internal/bedrockclient/thinking_streams_test.go b/llms/bedrock/internal/bedrockclient/thinking_streams_test.go new file mode 100644 index 000000000..c6826e114 --- /dev/null +++ b/llms/bedrock/internal/bedrockclient/thinking_streams_test.go @@ -0,0 +1,56 @@ +package bedrockclient + +import ( + "context" + "errors" + "testing" + + "github.com/vxcontrol/langchaingo/llms/streaming" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func pendingToolCalls() map[int32]*converseToolCallBuilder { + return map[int32]*converseToolCallBuilder{ + 1: {id: "call_2", name: "second"}, + 0: {id: "call_1", name: "first"}, + } +} + +func TestASalvagedToolCallReachesTheConsumerToo(t *testing.T) { + t.Parallel() + + var delivered []string + calls, err := salvageToolCalls(t.Context(), + func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type == streaming.ChunkTypeToolCall { + delivered = append(delivered, chunk.ToolCall.Name) + } + return nil + }, pendingToolCalls()) + + require.NoError(t, err) + require.Len(t, calls, 2, "the final answer keeps both salvaged calls") + assert.Equal(t, []string{"first", "second"}, delivered, + "an agent living on chunks must see the calls the answer carries, in block order") +} + +func TestAConsumerThatRefusesASalvagedCallStopsTheSalvage(t *testing.T) { + t.Parallel() + + gaveUp := errors.New("the consumer gave up") + calls, err := salvageToolCalls(t.Context(), + func(context.Context, streaming.Chunk) error { return gaveUp }, pendingToolCalls()) + + require.ErrorIs(t, err, gaveUp) + assert.Empty(t, calls) +} + +func TestASalvageWithoutAConsumerStillFillsTheAnswer(t *testing.T) { + t.Parallel() + + calls, err := salvageToolCalls(t.Context(), nil, pendingToolCalls()) + require.NoError(t, err) + assert.Len(t, calls, 2) +} diff --git a/llms/bedrock/internal/bedrockclient/thinking_top_p_test.go b/llms/bedrock/internal/bedrockclient/thinking_top_p_test.go new file mode 100644 index 000000000..47e9648cd --- /dev/null +++ b/llms/bedrock/internal/bedrockclient/thinking_top_p_test.go @@ -0,0 +1,76 @@ +package bedrockclient + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/vxcontrol/langchaingo/llms" +) + +func TestLegacyThinkingKeepsTopPAboveTheFloor(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + model string + topP float64 + temp float64 + want float64 + }{ + {"above the floor reaches the wire", "anthropic.claude-sonnet-4-5-v1:0", 0.97, 0, 0.97}, + {"caller set both — top_p is dropped", "anthropic.claude-sonnet-4-5-v1:0", 0.97, 0.3, 0}, + {"exactly at the floor reaches the wire", "anthropic.claude-sonnet-4-5-v1:0", 0.95, 0, 0.95}, + {"below the floor is stripped", "anthropic.claude-sonnet-4-5-v1:0", 0.5, 0, 0}, + {"model without sampling does not get it", "anthropic.claude-sonnet-5-v1:0", 0.97, 0, 0}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + input := anthropicTextGenerationInput{MaxTokens: 4096, TopP: tc.topP, Temperature: tc.temp} + require.NoError(t, applyAnthropicReasoning(&input, + &llms.ReasoningConfig{Tokens: 1024}, tc.model, 4096)) + assert.InDelta(t, tc.want, input.TopP, 1e-9) + }) + } +} + +func TestConverseThinkingKeepsTopPAboveTheFloor(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + model string + topP float64 + temp *float64 + want *float32 + }{ + {"above the floor reaches the wire", "anthropic.claude-sonnet-4-5-v1:0", 0.97, nil, ptr(float32(0.97))}, + {"caller set both — top_p is dropped", "anthropic.claude-sonnet-4-5-v1:0", 0.97, ptr(0.3), nil}, + {"below the floor is stripped", "anthropic.claude-sonnet-4-5-v1:0", 0.5, nil, nil}, + { + "below the floor is stripped where both params may travel together", + "anthropic.claude-sonnet-4-20250514-v1:0", 0.5, nil, nil, + }, + {"model without sampling does not get it", "anthropic.claude-sonnet-5-v1:0", 0.97, nil, nil}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + client := NewConverseClient(&MockBedrockRuntimeClient{}) + built, err := client.buildConverseInput(&ConverseInput{ + ModelID: tc.model, + Messages: []Message{{Role: llms.ChatMessageTypeHuman, Content: "hi", Type: "text"}}, + MaxTokens: ptr(4096), + TopP: ptr(tc.topP), + Temperature: tc.temp, + ReasoningConfig: &llms.ReasoningConfig{Tokens: 1024}, + }) + require.NoError(t, err) + if tc.want == nil { + assert.Nil(t, built.InferenceConfig.TopP) + return + } + require.NotNil(t, built.InferenceConfig.TopP) + assert.InDelta(t, *tc.want, *built.InferenceConfig.TopP, 1e-6) + }) + } +} diff --git a/llms/bedrock/internal/bedrockclient/truncation_test.go b/llms/bedrock/internal/bedrockclient/truncation_test.go new file mode 100644 index 000000000..3707fbf72 --- /dev/null +++ b/llms/bedrock/internal/bedrockclient/truncation_test.go @@ -0,0 +1,88 @@ +package bedrockclient + +import ( + "testing" + + "github.com/aws/aws-sdk-go-v2/service/bedrockruntime" + "github.com/aws/aws-sdk-go-v2/service/bedrockruntime/types" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" + "github.com/vxcontrol/langchaingo/llms" +) + +func TestEveryFamilySpellsTruncationInAWayWeRecognise(t *testing.T) { + t.Parallel() + + for _, reason := range []string{ + AmazonCompletionReasonMaxTokens, + AnthropicCompletionReasonMaxTokens, + Ai21CompletionReasonLength, + CohereCompletionReasonMaxTokens, + MetaCompletionReasonLength, + NovaCompletionReasonMaxTokens, + string(types.StopReasonMaxTokens), + } { + assert.True(t, llms.IsTruncated(reason), "%q means the output limit was reached", reason) + } + + for _, reason := range []string{ + AmazonCompletionReasonFinish, + AmazonCompletionReasonContentFiltered, + AnthropicCompletionReasonEndTurn, + AnthropicCompletionReasonStopSequence, + Ai21CompletionReasonStop, + Ai21CompletionReasonEndOfText, + CohereCompletionReasonComplete, + CohereCompletionReasonError, + CohereCompletionReasonErrorToxic, + MetaCompletionReasonStop, + NovaCompletionReasonEndTurn, + NovaCompletionReasonStopSequence, + NovaCompletionReasonContentFiltered, + string(types.StopReasonEndTurn), + string(types.StopReasonToolUse), + string(types.StopReasonStopSequence), + string(types.StopReasonGuardrailIntervened), + } { + assert.False(t, llms.IsTruncated(reason), "%q does not mean truncation", reason) + } +} + +func TestConverseReportsTruncation(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + stopReason types.StopReason + wantTruncated bool + }{ + {"out of budget", types.StopReasonMaxTokens, true}, + {"finished on its own", types.StopReasonEndTurn, false}, + {"asked for a tool", types.StopReasonToolUse, false}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + mockClient := &MockBedrockRuntimeClient{} + mockClient.On("Converse", mock.Anything, mock.Anything, mock.Anything).Return( + &bedrockruntime.ConverseOutput{ + StopReason: tc.stopReason, + Output: &types.ConverseOutputMemberMessage{ + Value: types.Message{ + Role: types.ConversationRoleAssistant, + Content: []types.ContentBlock{&types.ContentBlockMemberText{Value: "half an ans"}}, + }, + }, + }, nil) + + resp, err := NewConverseClient(mockClient).CreateCompletionConverse(t.Context(), &ConverseInput{ + ModelID: "anthropic.claude-3-sonnet-20240229-v1:0", + Messages: []Message{{Role: llms.ChatMessageTypeHuman, Content: "hi", Type: "text"}}, + }) + require.NoError(t, err) + assert.Equal(t, tc.wantTruncated, resp.Choices[0].Truncated) + assert.Equal(t, string(tc.stopReason), resp.Choices[0].StopReason) + }) + } +} diff --git a/llms/bedrock/internal/bedrockclient/warnings.go b/llms/bedrock/internal/bedrockclient/warnings.go new file mode 100644 index 000000000..932dd98d1 --- /dev/null +++ b/llms/bedrock/internal/bedrockclient/warnings.go @@ -0,0 +1,260 @@ +package bedrockclient + +import ( + "strconv" + "strings" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +// A provider is listed here only where its own payload struct has the field — +// not where the vendor supports the option. +var ( + legacyCarriesTools = map[string]bool{"anthropic": true} + legacyCarriesTopK = map[string]bool{"anthropic": true, "cohere": true} + legacyCarriesStopWords = map[string]bool{"meta": false} + legacyCarriesThinking = map[string]bool{"anthropic": true, "nova": true} +) + +func reportLegacyOptions(warn *llms.Warnings, provider, modelID string, options llms.CallOptions) { + reason := "the legacy " + provider + " payload has no field for it" + + if !legacyCarriesTools[provider] { + if len(options.Tools) > 0 { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithTools", Model: modelID, + Asked: strconv.Itoa(len(options.Tools)) + " tools", Reason: reason, + }) + } + if kind, name := llms.ClassifyToolChoice(options.ToolChoice); kind != llms.ToolChoiceUnset { + asked := name + if asked == "" { + asked = "kind " + strconv.Itoa(int(kind)) + } + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithToolChoice", Model: modelID, + Asked: asked, Reason: reason, + }) + } + } + if !legacyCarriesTopK[provider] && options.TopK != nil && *options.TopK != 0 { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithTopK", Model: modelID, + Asked: strconv.Itoa(*options.TopK), Reason: reason, + }) + } + if carries, known := legacyCarriesStopWords[provider]; known && !carries && len(options.StopWords) > 0 { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithStopWords", Model: modelID, + Asked: strings.Join(options.StopWords, ","), Reason: reason, + }) + } + if !legacyCarriesThinking[provider] && options.Reasoning.ResolveMode() == llms.ReasoningOn { + reportThinkingUnsupported(warn, modelID, options.Reasoning) + } +} + +func reportThinkingUnsupported(warn *llms.Warnings, modelID string, cfg *llms.ReasoningConfig) { + asked := "thinking" + switch { + case cfg.HasExplicitTokens(): + asked = strconv.Itoa(cfg.Tokens) + " tokens" + case cfg.Effort != "": + asked = string(cfg.Effort) + } + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithReasoning", Model: modelID, + Asked: asked, Reason: "the door puts no thinking on the request for this model", + }) +} + +func reportLegacyAnthropic( + warn *llms.Warnings, modelID string, options llms.CallOptions, input *anthropicTextGenerationInput, +) { + const reshaped = "the door reshaped the legacy anthropic payload for this model" + + if options.Temperature != nil { + reportLegacyFloat(warn, "WithTemperature", modelID, reshaped, *options.Temperature, input.Temperature) + } + if options.TopP != nil { + reportLegacyFloat(warn, "WithTopP", modelID, reshaped, *options.TopP, input.TopP) + } + if options.TopK != nil && *options.TopK != 0 && input.TopK != *options.TopK { + reportLegacyInt(warn, "WithTopK", modelID, reshaped, *options.TopK, input.TopK) + } + if options.MaxTokens != nil && *options.MaxTokens > 0 && input.MaxTokens != *options.MaxTokens { + reportLegacyInt(warn, "WithMaxTokens", modelID, reshaped, *options.MaxTokens, input.MaxTokens) + } + if cfg := options.Reasoning; cfg != nil && cfg.Effort != "" && cfg.Effort != llms.ReasoningNone { + sent := "" + if input.OutputConfig != nil { + sent = input.OutputConfig.Effort + } + sentBudget := 0 + if input.Thinking != nil { + sentBudget = input.Thinking.BudgetTokens + } + reportEffortClamp(warn, modelID, string(cfg.Effort), sent, input.Thinking != nil, cfg, sentBudget) + } + if input.Thinking != nil { + reportMechanismSwap(warn, modelID, options.Reasoning, input.Thinking.Type) + } + if cfg := options.Reasoning; cfg != nil && cfg.HasExplicitTokens() { + sent := 0 + if input.Thinking != nil { + sent = input.Thinking.BudgetTokens + } + reportThinkingBudget(warn, modelID, cfg.Tokens, sent) + } + if cfg := options.Reasoning; cfg.ResolveMode() == llms.ReasoningOn && input.Thinking == nil && + cfg.Effort == "" && !cfg.HasExplicitTokens() { + reportThinkingUnsupported(warn, modelID, cfg) + } + if len(options.StopWords) > 0 && len(input.StopSequences) == 0 { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithStopWords", Model: modelID, + Asked: strings.Join(options.StopWords, ","), Reason: reshaped, + }) + } +} + +func reportLegacyFloat(warn *llms.Warnings, option, modelID, reason string, asked, sent float64) { + if asked == sent { + return + } + render := func(v float64) string { return strconv.FormatFloat(v, 'g', -1, 64) } + if sent == 0 { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: option, Model: modelID, + Asked: render(asked), Reason: reason, + }) + return + } + warn.Add(llms.Warning{ + Kind: llms.WarningSubstitute, Option: option, Model: modelID, + Asked: render(asked), Sent: render(sent), Reason: reason, + }) +} + +func reportLegacyInt(warn *llms.Warnings, option, modelID, reason string, asked, sent int) { + if sent == 0 { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: option, Model: modelID, + Asked: strconv.Itoa(asked), Reason: reason, + }) + return + } + warn.Add(llms.Warning{ + Kind: llms.WarningClamp, Option: option, Model: modelID, + Asked: strconv.Itoa(asked), Sent: strconv.Itoa(sent), Reason: reason, + }) +} + +func reportThinkingBudget(warn *llms.Warnings, modelID string, asked, sent int) { + if asked <= 0 || sent == asked { + return + } + if sent <= 0 { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithReasoning", Model: modelID, + Asked: strconv.Itoa(asked) + " tokens", + Reason: "the door puts no thinking budget on the request for this model", + }) + return + } + warn.Add(llms.Warning{ + Kind: llms.WarningClamp, Option: "WithReasoning", Model: modelID, + Asked: strconv.Itoa(asked) + " tokens", Sent: strconv.Itoa(sent) + " tokens", + Reason: "the thinking budget is capped by the answer limit and by what the model records", + }) +} + +func reportEffortClamp( + warn *llms.Warnings, modelID, asked, sent string, + thinkingSent bool, cfg *llms.ReasoningConfig, sentBudget int, +) { + switch { + case sent == "" && thinkingSent: + reportEffortAsBudget(warn, modelID, asked, cfg, sentBudget) + case sent == "": + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithReasoning", Model: modelID, + Asked: asked, Reason: "the door puts no thinking on the request for this model", + }) + case !strings.EqualFold(asked, sent): + warn.Add(llms.Warning{ + Kind: llms.WarningClamp, Option: "WithReasoning", Model: modelID, + Asked: asked, Sent: sent, + Reason: "the door sends only the efforts it records this model as accepting", + }) + } +} + +func reportEffortAsBudget( + warn *llms.Warnings, modelID, asked string, cfg *llms.ReasoningConfig, sentBudget int, +) { + if sentBudget <= 0 { + return + } + if cfg != nil && cfg.HasExplicitTokens() { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithReasoning", Model: modelID, + Asked: asked, + Reason: "the door sends the budget this model takes and has no field for the effort", + }) + return + } + warn.Add(llms.Warning{ + Kind: llms.WarningSubstitute, Option: "WithReasoning", Model: modelID, + Asked: asked, Sent: strconv.Itoa(sentBudget) + " tokens", + Reason: "the door turns the effort into the thinking budget this model takes", + }) +} + +func reportMechanismSwap(warn *llms.Warnings, modelID string, cfg *llms.ReasoningConfig, sentType string) { + if cfg == nil || !cfg.Adaptive || sentType == "" || sentType == "adaptive" { + return + } + warn.Add(llms.Warning{ + Kind: llms.WarningSubstitute, Option: "WithAdaptiveReasoning", Model: modelID, + Asked: "adaptive", Sent: sentType, + Reason: "the door takes the thinking mechanism from the model, not from the preference", + }) +} + +func reportNovaReasoning(warn *llms.Warnings, modelID string, options llms.CallOptions, effort string) { + const cleared = "the nova request drops the sampling values at this reasoning effort" + + if cfg := options.Reasoning; cfg != nil && cfg.HasExplicitTokens() { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithReasoning", Model: modelID, + Asked: strconv.Itoa(cfg.Tokens) + " tokens", + Reason: "nova takes a reasoning effort, so a token budget has nowhere to go", + }) + } + if effort != "" { + reportMechanismSwap(warn, modelID, options.Reasoning, "effort") + } + if !reasoning.NovaClearsInferenceConfigAt(effort) { + return + } + if options.MaxTokens != nil && *options.MaxTokens > 0 { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithMaxTokens", Model: modelID, + Asked: strconv.Itoa(*options.MaxTokens), Reason: cleared, + }) + } + reportLegacyFloatDrop(warn, "WithTemperature", modelID, cleared, options.Temperature) + reportLegacyFloatDrop(warn, "WithTopP", modelID, cleared, options.TopP) +} + +func reportLegacyFloatDrop(warn *llms.Warnings, option, modelID, reason string, asked *float64) { + if asked == nil { + return + } + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: option, Model: modelID, + Asked: strconv.FormatFloat(*asked, 'g', -1, 64), Reason: reason, + }) +} diff --git a/llms/bedrock/internal/bedrockclient/warnings_test.go b/llms/bedrock/internal/bedrockclient/warnings_test.go new file mode 100644 index 000000000..5c4c5a9e4 --- /dev/null +++ b/llms/bedrock/internal/bedrockclient/warnings_test.go @@ -0,0 +1,201 @@ +package bedrockclient + +import ( + "context" + "io" + "net/http" + "strings" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/credentials" + "github.com/aws/aws-sdk-go-v2/service/bedrockruntime" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +type cannedTransport struct{ body string } + +func (c *cannedTransport) Do(req *http.Request) (*http.Response, error) { + return &http.Response{ + StatusCode: http.StatusOK, + Body: io.NopCloser(strings.NewReader(c.body)), + Header: http.Header{"Content-Type": []string{"application/json"}}, + Request: req, + }, nil +} + +func legacyClientAnswering(body string) *Client { + return &Client{client: bedrockruntime.New(bedrockruntime.Options{ + Region: "us-east-1", + Credentials: credentials.NewStaticCredentialsProvider("k", "s", ""), + HTTPClient: &cannedTransport{body: body}, + RetryMaxAttempts: 1, + })} +} + +func legacyCall(t *testing.T, model string, options llms.CallOptions) *llms.ContentResponse { + t.Helper() + return legacyCallAnswering(t, model, `{"generation":"hi","stop_reason":"stop"}`, options) +} + +func legacyCallAnswering(t *testing.T, model, body string, options llms.CallOptions) *llms.ContentResponse { + t.Helper() + + options.Model = aws.String(model) + resp, err := legacyClientAnswering(body). + CreateCompletion(context.Background(), model, + []Message{{Role: llms.ChatMessageTypeHuman, Content: "hi", Type: "text"}}, options) + require.NoError(t, err) + return resp +} + +const anthropicLegacyBody = `{"id":"msg_1","type":"message","role":"assistant",` + + `"content":[{"type":"text","text":"hi"}],"stop_reason":"end_turn",` + + `"usage":{"input_tokens":1,"output_tokens":1}}` + +func legacyWarningsByOption(warnings []llms.Warning) map[string]llms.Warning { + byOption := make(map[string]llms.Warning, len(warnings)) + for _, w := range warnings { + byOption[w.Option] = w + } + return byOption +} + +func TestALegacyPayloadWithoutAFieldReportsWhatItDropped(t *testing.T) { + t.Parallel() + + const model = "meta.llama3-70b-instruct-v1:0" + topK := 40 + resp := legacyCall(t, model, llms.CallOptions{ + TopK: &topK, + StopWords: []string{"STOP"}, + Tools: []llms.Tool{{Type: "function", Function: &llms.FunctionDefinition{Name: "get_weather"}}}, + ToolChoice: llms.ToolChoice{ + Type: "function", Function: &llms.FunctionReference{Name: "get_weather"}, + }, + }) + + got := legacyWarningsByOption(resp.Warnings) + for option, asked := range map[string]string{ + "WithTopK": "40", "WithStopWords": "STOP", + "WithTools": "1 tools", "WithToolChoice": "get_weather", + } { + w, ok := got[option] + require.True(t, ok, "no %s warning in %v", option, resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, asked, w.Asked) + require.Equal(t, model, w.Model) + } +} + +func TestACallThatAskedForNothingCarriesNoWarnings(t *testing.T) { + t.Parallel() + + resp := legacyCall(t, "meta.llama3-70b-instruct-v1:0", llms.CallOptions{}) + require.Empty(t, resp.Warnings) +} + +func TestAPayloadThatCarriesTopKReportsNoTopKLoss(t *testing.T) { + t.Parallel() + + topK := 40 + cohere := legacyClientAnswering(`{"generations":[{"text":"hi","finish_reason":"COMPLETE"}]}`) + got, err := cohere.CreateCompletion(context.Background(), "cohere.command-text-v14", + []Message{{Role: llms.ChatMessageTypeHuman, Content: "hi", Type: "text"}}, + llms.CallOptions{Model: aws.String("cohere.command-text-v14"), TopK: &topK}) + require.NoError(t, err) + require.NotContains(t, legacyWarningsByOption(got.Warnings), "WithTopK") +} + +func TestTheLegacyAnthropicPayloadReportsWhatThinkingReshaped(t *testing.T) { + t.Parallel() + + const model = "us.anthropic.claude-sonnet-4-5-v1:0" + temperature, topP, topK, maxTokens := 0.2, 0.9, 40, 1000 + resp := legacyCallAnswering(t, model, anthropicLegacyBody, llms.CallOptions{ + Temperature: &temperature, + TopP: &topP, + TopK: &topK, + MaxTokens: &maxTokens, + Reasoning: &llms.ReasoningConfig{Mode: llms.ReasoningOn, Tokens: 4000}, + }) + + got := legacyWarningsByOption(resp.Warnings) + for option, sent := range map[string]string{ + "WithTemperature": "1", "WithTopP": "", "WithTopK": "", "WithMaxTokens": "2048", + } { + w, ok := got[option] + require.True(t, ok, "no %s warning in %v", option, resp.Warnings) + require.Equal(t, model, w.Model) + require.Equal(t, sent, w.Sent, option) + } +} + +func TestALegacyAnthropicCallThatKeepsItsValuesReportsNothing(t *testing.T) { + t.Parallel() + + temperature, maxTokens := 0.2, 1000 + resp := legacyCallAnswering(t, "us.anthropic.claude-sonnet-4-5-v1:0", anthropicLegacyBody, llms.CallOptions{ + Temperature: &temperature, + MaxTokens: &maxTokens, + }) + + require.Empty(t, resp.Warnings) +} + +func TestTheLegacyDoorReportsAThinkingBudgetItCut(t *testing.T) { + t.Parallel() + + const model = "us.anthropic.claude-sonnet-4-5-v1:0" + maxTokens := 4096 + resp := legacyCallAnswering(t, model, anthropicLegacyBody, llms.CallOptions{ + MaxTokens: &maxTokens, + Reasoning: &llms.ReasoningConfig{Mode: llms.ReasoningOn, Tokens: 30000}, + }) + + w, ok := legacyWarningsByOption(resp.Warnings)["WithReasoning"] + require.True(t, ok, "no reasoning warning in %v", resp.Warnings) + require.Equal(t, llms.WarningClamp, w.Kind) + require.Equal(t, "30000 tokens", w.Asked) + require.Equal(t, "2730 tokens", w.Sent) +} + +func TestTheLegacyDoorReportsAnEffortItLowered(t *testing.T) { + t.Parallel() + + const model = "anthropic.claude-opus-4-6-v1:0" + maxTokens := 8000 + resp := legacyCallAnswering(t, model, anthropicLegacyBody, llms.CallOptions{ + MaxTokens: &maxTokens, + Reasoning: &llms.ReasoningConfig{Mode: llms.ReasoningOn, Effort: llms.ReasoningXHigh}, + }) + + w, ok := legacyWarningsByOption(resp.Warnings)["WithReasoning"] + require.True(t, ok, "no reasoning warning in %v", resp.Warnings) + require.Equal(t, llms.WarningClamp, w.Kind) + require.Equal(t, "xhigh", w.Asked) + require.Equal(t, "high", w.Sent) +} + +func TestTheLegacyNovaPathReportsWhatItDrops(t *testing.T) { + t.Parallel() + + const novaAnswer = `{"output":{"message":{"role":"assistant","content":[{"text":"ok"}]}},` + + `"stopReason":"end_turn","usage":{"inputTokens":1,"outputTokens":1}}` + + const model = "us.amazon.nova-2-lite-v1:0" + temperature, maxTokens := 0.2, 8192 + resp := legacyCallAnswering(t, model, novaAnswer, llms.CallOptions{ + Temperature: &temperature, + MaxTokens: &maxTokens, + Reasoning: &llms.ReasoningConfig{Mode: llms.ReasoningOn, Effort: llms.ReasoningHigh, Tokens: 4096}, + }) + + got := legacyWarningsByOption(resp.Warnings) + w, ok := got["WithReasoning"] + require.True(t, ok, "no reasoning warning in %v", resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, "4096 tokens", w.Asked) +} diff --git a/llms/bedrock/legacy_counter_type_test.go b/llms/bedrock/legacy_counter_type_test.go new file mode 100644 index 000000000..c944a8267 --- /dev/null +++ b/llms/bedrock/legacy_counter_type_test.go @@ -0,0 +1,139 @@ +package bedrock_test + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +type counterCase struct { + name string + model string + whole string + chunks []string + stop string +} + +var wantCounters = map[string]int{"PromptTokens": 5, "CompletionTokens": 3, "TotalTokens": 8} + +func legacyCounterFamilies() []counterCase { + return []counterCase{ + { + name: "amazon", + stop: "FINISH", + model: "amazon.titan-text-express-v1", + whole: `{"inputTextTokenCount":5,"results":[{"tokenCount":3,"outputText":"ok",` + + `"completionReason":"FINISH"}]}`, + chunks: []string{ + `{"outputText":"ok","index":0,"completionReason":"FINISH",` + + `"inputTextTokenCount":5,"outputTextTokenCount":3}`, + }, + }, + { + name: "meta", + stop: "stop", + model: "meta.llama3-70b-instruct-v1:0", + whole: `{"generation":"ok","prompt_token_count":5,"generation_token_count":3,"stop_reason":"stop"}`, + chunks: []string{ + `{"generation":"o","prompt_token_count":5,"generation_token_count":1,"stop_reason":null}`, + `{"generation":"k","prompt_token_count":null,"generation_token_count":3,"stop_reason":"stop"}`, + }, + }, + { + name: "ai21", + stop: "stop", + model: "ai21.jamba-1-5-large-v1:0", + whole: `{"id":"x","choices":[{"index":0,"message":{"role":"assistant","content":"ok"},` + + `"finish_reason":"stop"}],"usage":{"prompt_tokens":5,"completion_tokens":3,` + + `"total_tokens":8},"model":"ai21.jamba-1-5-large-v1:0"}`, + chunks: []string{ + `{"text":"ok","finish_reason":"stop","index":0,` + + `"usage":{"prompt_tokens":5,"completion_tokens":3}}`, + }, + }, + { + name: "nova", + stop: "end_turn", + model: "amazon.nova-pro-v1:0", + whole: `{"output":{"message":{"role":"assistant","content":[{"text":"ok"}]}},` + + `"stopReason":"end_turn","usage":{"inputTokens":5,"outputTokens":3,"totalTokens":8}}`, + chunks: []string{ + `{"messageStart":{"role":"assistant"}}`, + `{"contentBlockDelta":{"delta":{"text":"ok"},"contentBlockIndex":0}}`, + `{"contentBlockStop":{"contentBlockIndex":0}}`, + `{"messageStop":{"stopReason":"end_turn"}}`, + `{"metadata":{"usage":{"inputTokens":5,"outputTokens":3,` + + `"cacheReadInputTokenCount":0,"cacheWriteInputTokenCount":0},"metrics":{}}}`, + }, + }, + } +} + +func TestEveryLegacyFamilyReportsCountersAsInt(t *testing.T) { + t.Parallel() + + for _, tc := range legacyCounterFamilies() { + t.Run(tc.name+"/whole answer", func(t *testing.T) { + t.Parallel() + + llm := truncationLLMWithBody(t, tc.whole, bedrock.WithModel(tc.model)) + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + + assertCounters(t, resp.Choices[0].GenerationInfo) + }) + + t.Run(tc.name+"/streamed", func(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/vnd.amazon.eventstream") + enc := eventstream.NewEncoder() + for _, chunk := range tc.chunks { + writeLegacyChunk(t, w, enc, chunk) + } + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, bedrock.WithModel(tc.model)) + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + + assertCounters(t, resp.Choices[0].GenerationInfo) + assert.Equal(t, tc.stop, resp.Choices[0].StopReason, + "the reason the vendor gave for stopping reaches the caller on the streamed path too") + }) + } +} + +func assertCounters(t *testing.T, info map[string]any) { + t.Helper() + + for key, want := range wantCounters { + value, present := info[key] + if !assert.True(t, present, "%s is missing from the generation info", key) { + continue + } + got, ok := value.(int) + if !assert.True(t, ok, "%s must be an int, as the Claude doors report it, got %#v", key, value) { + continue + } + assert.Equal(t, want, got, "%s carries the number the vendor sent", key) + } +} diff --git a/llms/bedrock/legacy_image_test.go b/llms/bedrock/legacy_image_test.go new file mode 100644 index 000000000..5b68693b5 --- /dev/null +++ b/llms/bedrock/legacy_image_test.go @@ -0,0 +1,117 @@ +package bedrock_test + +import ( + "context" + "encoding/base64" + "encoding/json" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" + "github.com/vxcontrol/langchaingo/llms/bedrock/internal/bedrockclient" +) + +const novaAnswer = `{"output":{"message":{"content":[{"text":"ok"}]}},"stopReason":"end_turn",` + + `"usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}` + +func TestTheLegacyNovaDoorSendsAPictureAsAPicture(t *testing.T) { + t.Parallel() + + jpeg := []byte{0xFF, 0xD8, 0xFF, 0xE0, 0x00, 0x10} + + llm, sent := legacyLLMCapturing(t, novaAnswer, bedrock.WithModel("amazon.nova-lite-v1:0")) + + _, err := llm.GenerateContent(context.Background(), []llms.MessageContent{{ + Role: llms.ChatMessageTypeHuman, + Parts: []llms.ContentPart{ + llms.TextPart("what is on this picture?"), + llms.BinaryPart("image/jpeg", jpeg), + }, + }}) + require.NoError(t, err) + + var payload struct { + Messages []struct { + Content []struct { + Image *struct { + Format string `json:"format"` + Source struct { + Bytes string `json:"bytes"` + } `json:"source"` + } `json:"image"` + } `json:"content"` + } `json:"messages"` + } + require.NoError(t, json.Unmarshal([]byte(*sent), &payload)) + + var found bool + for _, m := range payload.Messages { + for _, block := range m.Content { + if block.Image == nil { + continue + } + found = true + assert.Equal(t, "jpeg", block.Image.Format, + "the mime type decides the format the vendor is told") + assert.Equal(t, base64.StdEncoding.EncodeToString(jpeg), block.Image.Source.Bytes, + "the bytes travel unchanged") + } + } + require.True(t, found, "the picture must reach the wire as an image block") +} + +func TestTheLegacyNovaDoorRefusesAPictureItCannotName(t *testing.T) { + t.Parallel() + + llm, sent := legacyLLMCapturing(t, novaAnswer, bedrock.WithModel("amazon.nova-lite-v1:0")) + + _, err := llm.GenerateContent(context.Background(), []llms.MessageContent{{ + Role: llms.ChatMessageTypeHuman, + Parts: []llms.ContentPart{llms.BinaryPart("image/heic", []byte{0x00, 0x01})}, + }}) + + require.ErrorIs(t, err, bedrockclient.ErrUnsupportedImageFormat, + "the legacy door must refuse by name what its Converse sibling refuses") + assert.Empty(t, *sent, "an image the door cannot name must not reach the vendor at all") +} + +func TestTheLegacyNovaDoorLeavesOutASystemPromptNobodyWrote(t *testing.T) { + t.Parallel() + + llm, sent := legacyLLMCapturing(t, novaAnswer, bedrock.WithModel("amazon.nova-lite-v1:0")) + + _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}) + require.NoError(t, err) + + var payload map[string]any + require.NoError(t, json.Unmarshal([]byte(*sent), &payload)) + + _, present := payload["system"] + assert.False(t, present, + "an absent system prompt leaves the key off the wire, as it does on the Converse door") +} + +func TestTheLegacyNovaDoorSendsASystemPromptSomebodyWrote(t *testing.T) { + t.Parallel() + + llm, sent := legacyLLMCapturing(t, novaAnswer, bedrock.WithModel("amazon.nova-lite-v1:0")) + + _, err := llm.GenerateContent(context.Background(), []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeSystem, "you are a hotel receptionist"), + llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?"), + }) + require.NoError(t, err) + + var payload struct { + System []struct { + Text string `json:"text"` + } `json:"system"` + } + require.NoError(t, json.Unmarshal([]byte(*sent), &payload)) + require.Len(t, payload.System, 1) + assert.Equal(t, "you are a hotel receptionist", payload.System[0].Text) +} diff --git a/llms/bedrock/legacy_max_tokens_warning_test.go b/llms/bedrock/legacy_max_tokens_warning_test.go new file mode 100644 index 000000000..fa534d899 --- /dev/null +++ b/llms/bedrock/legacy_max_tokens_warning_test.go @@ -0,0 +1,51 @@ +package bedrock_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" +) + +func TestAnAnswerLimitTheLegacyDoorNamedItselfIsReported(t *testing.T) { + t.Parallel() + + const cohereAnswer = `{"generations":[{"text":"ok","finish_reason":"COMPLETE"}]}` + + for _, payload := range []struct { + name string + model string + answer string + sent string + }{ + {"anthropic", "anthropic.claude-sonnet-4-5-v1:0", legacyAnswer, "2048"}, + {"cohere", "cohere.command-text-v14", cohereAnswer, "20"}, + } { + t.Run(payload.name, func(t *testing.T) { + t.Parallel() + + resp := bedrockWarningsFor(t, payload.answer, + []bedrock.Option{bedrock.WithModel(payload.model)}, + llms.WithMaxTokens(0)) + + w, ok := bedrockWarningsByOption(resp.Warnings)["WithMaxTokens"] + require.True(t, ok, "the door named a limit the caller did not: %v", resp.Warnings) + require.Equal(t, llms.WarningSubstitute, w.Kind) + require.Equal(t, "0", w.Asked) + require.Equal(t, payload.sent, w.Sent) + }) + } +} + +func TestALimitTheLegacyDoorCarriesAsAskedIsNotReported(t *testing.T) { + t.Parallel() + + resp := bedrockWarningsFor(t, legacyAnswer, + []bedrock.Option{bedrock.WithModel("anthropic.claude-sonnet-4-5-v1:0")}, + llms.WithMaxTokens(1024)) + + require.NotContains(t, bedrockWarningsByOption(resp.Warnings), "WithMaxTokens", + "the limit travelled as asked: %v", resp.Warnings) +} diff --git a/llms/bedrock/legacy_nova_reasoning_test.go b/llms/bedrock/legacy_nova_reasoning_test.go new file mode 100644 index 000000000..be58c7f95 --- /dev/null +++ b/llms/bedrock/legacy_nova_reasoning_test.go @@ -0,0 +1,105 @@ +package bedrock_test + +import ( + "context" + "encoding/json" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" +) + +func novaLegacyInferenceConfig(t *testing.T, opts ...llms.CallOption) map[string]any { + t.Helper() + return novaLegacyInferenceConfigOf(t, "us.amazon.nova-2-lite-v1:0", opts...) +} + +func novaLegacyInferenceConfigOf(t *testing.T, model string, opts ...llms.CallOption) map[string]any { + t.Helper() + + const answer = `{"output":{"message":{"role":"assistant","content":[{"text":"ok"}]}},` + + `"stopReason":"end_turn","usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}` + + llm, sent := legacyLLMCapturing(t, answer, bedrock.WithModel(model)) + + _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, opts...) + require.NoError(t, err) + + var payload struct { + InferenceConfig map[string]any `json:"inferenceConfig"` + } + require.NoError(t, json.Unmarshal([]byte(*sent), &payload)) + return payload.InferenceConfig +} + +func TestTheLegacyNovaPathCarriesTheThinkingItWasAskedFor(t *testing.T) { + t.Parallel() + + t.Run("an asked-for effort reaches the wire", func(t *testing.T) { + t.Parallel() + + config := novaLegacyInferenceConfig(t, + llms.WithMaxTokens(512), llms.WithReasoning(llms.ReasoningMedium, 0)) + + assert.Equal(t, map[string]any{"type": "enabled", "maxReasoningEffort": "medium"}, + config["reasoningConfig"], + "the Invoke schema carries reasoningConfig inside inferenceConfig") + }) + + t.Run("the top effort clears the sampling Nova refuses beside it", func(t *testing.T) { + t.Parallel() + + config := novaLegacyInferenceConfig(t, + llms.WithMaxTokens(512), llms.WithTemperature(0.4), llms.WithTopP(0.9), + llms.WithReasoning(llms.ReasoningHigh, 0)) + + assert.Equal(t, map[string]any{"type": "enabled", "maxReasoningEffort": "high"}, + config["reasoningConfig"]) + assert.NotContains(t, config, "maxTokens") + assert.NotContains(t, config, "temperature") + assert.NotContains(t, config, "topP") + }) + + t.Run("a call that asked for nothing carries no reasoning", func(t *testing.T) { + t.Parallel() + + config := novaLegacyInferenceConfig(t, llms.WithMaxTokens(512)) + + assert.NotContains(t, config, "reasoningConfig") + }) + + t.Run("a nova outside the reasoning family is not told to think", func(t *testing.T) { + t.Parallel() + + config := novaLegacyInferenceConfigOf(t, "us.amazon.nova-lite-v1:0", + llms.WithMaxTokens(512), llms.WithReasoning(llms.ReasoningMedium, 0)) + + assert.NotContains(t, config, "reasoningConfig", + "the door that carries the field on Converse is the same one that carries it here") + }) +} + +func TestTheLegacyNovaPathReadsTheThinkingItAskedFor(t *testing.T) { + t.Parallel() + + const answer = `{"output":{"message":{"role":"assistant","content":[` + + `{"reasoningContent":{"reasoningText":{"text":"[REDACTED]"}}},` + + `{"text":"sixty rooms are free"}]}},` + + `"stopReason":"end_turn","usage":{"inputTokens":10,"outputTokens":9,"totalTokens":19}}` + + llm, _ := legacyLLMCapturing(t, answer, bedrock.WithModel("us.amazon.nova-2-lite-v1:0")) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, + llms.WithMaxTokens(512), llms.WithReasoning(llms.ReasoningMedium, 0)) + require.NoError(t, err) + + require.Len(t, resp.Choices, 1, "a thinking block is not an answer and must not become an empty choice") + assert.Equal(t, "sixty rooms are free", resp.Choices[0].Content) + require.NotNil(t, resp.Choices[0].Reasoning, "the door asked for thinking and must carry what came back") + assert.Equal(t, "[REDACTED]", resp.Choices[0].Reasoning.Content) +} diff --git a/llms/bedrock/legacy_partial_stream_test.go b/llms/bedrock/legacy_partial_stream_test.go new file mode 100644 index 000000000..0aa4bf9be --- /dev/null +++ b/llms/bedrock/legacy_partial_stream_test.go @@ -0,0 +1,67 @@ +package bedrock_test + +import ( + "context" + "errors" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func legacyStreamOfThreeWords(t *testing.T) *httptest.Server { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/vnd.amazon.eventstream") + enc := eventstream.NewEncoder() + writeLegacyChunk(t, w, enc, `{"type":"message_start","message":{"id":"x","type":"message",`+ + `"role":"assistant","model":"m","content":[],"stop_reason":null,`+ + `"usage":{"input_tokens":10,"output_tokens":1}}}`) + for _, text := range []string{"sixty ", "rooms ", "are free"} { + writeLegacyChunk(t, w, enc, `{"type":"content_block_delta","index":0,`+ + `"delta":{"type":"text_delta","text":"`+text+`"}}`) + } + writeLegacyChunk(t, w, enc, `{"type":"message_delta","delta":{"stop_reason":"end_turn"},`+ + `"usage":{"output_tokens":9}}`) + })) + t.Cleanup(srv.Close) + return srv +} + +func TestLegacyStreamKeepsWhatArrivedWhenTheConsumerGivesUp(t *testing.T) { + t.Parallel() + + llm := bedrockLLMAgainst(t, legacyStreamOfThreeWords(t), + bedrock.WithModel("anthropic.claude-sonnet-4-5-20250929-v1:0")) + + gaveUp := errors.New("consumer gave up") + delivered := 0 + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, + llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type != streaming.ChunkTypeText { + return nil + } + delivered++ + if delivered == 2 { + return gaveUp + } + return nil + })) + + require.ErrorIs(t, err, gaveUp) + require.NotNil(t, resp, "the text already delivered must travel with the error") + require.Len(t, resp.Choices, 1) + assert.Equal(t, "sixty rooms ", resp.Choices[0].Content, + "the chunk the consumer refused was still handed to it, so it belongs in the answer") +} diff --git a/llms/bedrock/legacy_payload_shape_warning_test.go b/llms/bedrock/legacy_payload_shape_warning_test.go new file mode 100644 index 000000000..93d061498 --- /dev/null +++ b/llms/bedrock/legacy_payload_shape_warning_test.go @@ -0,0 +1,54 @@ +package bedrock_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" +) + +func TestOneProviderWithTwoPayloadShapesIsReportedByShape(t *testing.T) { + t.Parallel() + + const jambaAnswer = `{"id":"x","choices":[{"index":0,"message":{"role":"assistant","content":"ok"},` + + `"finish_reason":"stop"}],"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}` + const commandRAnswer = `{"text":"ok","finish_reason":"COMPLETE","generation_id":"g"}` + + for _, shape := range []struct { + name string + model string + answer string + lost []string + carried []string + }{ + { + name: "jamba has no penalty field", model: "ai21.jamba-1-5-large-v1:0", answer: jambaAnswer, + lost: []string{"WithFrequencyPenalty", "WithPresencePenalty", "WithRepetitionPenalty"}, + carried: []string{"WithCandidateCount"}, + }, + { + name: "command-r has no num_generations", model: "cohere.command-r-v1:0", answer: commandRAnswer, + lost: []string{"WithCandidateCount"}, + carried: nil, + }, + } { + t.Run(shape.name, func(t *testing.T) { + t.Parallel() + + resp := bedrockWarningsFor(t, shape.answer, + []bedrock.Option{bedrock.WithModel(shape.model)}, + llms.WithRepetitionPenalty(1.1), llms.WithFrequencyPenalty(0.3), + llms.WithPresencePenalty(0.7), llms.WithCandidateCount(3)) + + got := bedrockWarningsByOption(resp.Warnings) + for _, option := range shape.lost { + require.Contains(t, got, option, "this payload has no field for it: %v", resp.Warnings) + } + for _, option := range shape.carried { + require.NotContains(t, got, option, "this payload carries it: %v", resp.Warnings) + } + }) + } +} diff --git a/llms/bedrock/legacy_redacted_thinking_test.go b/llms/bedrock/legacy_redacted_thinking_test.go new file mode 100644 index 000000000..dbd998a79 --- /dev/null +++ b/llms/bedrock/legacy_redacted_thinking_test.go @@ -0,0 +1,77 @@ +package bedrock_test + +import ( + "context" + "encoding/json" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func TestTheLegacyPathCarriesTheEncryptedThought(t *testing.T) { + t.Parallel() + + const ( + encrypted = "EqQBCgIYAhIM1gbcDa9GJwZA2b" + model = "anthropic.claude-sonnet-4-5-20250929-v1:0" + ) + + t.Run("it arrives with the answer", func(t *testing.T) { + t.Parallel() + + llm, _ := legacyLLMCapturing(t, `{"id":"x","type":"message","role":"assistant","model":"m",`+ + `"content":[{"type":"redacted_thinking","data":"`+encrypted+`"},`+ + `{"type":"text","text":"sixty rooms are free"}],"stop_reason":"end_turn",`+ + `"usage":{"input_tokens":1,"output_tokens":1}}`, bedrock.WithModel(model)) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + + assert.Equal(t, "sixty rooms are free", resp.Choices[0].Content) + require.NotNil(t, resp.Choices[0].Reasoning, + "a turn carrying an encrypted thought is not a turn without thought") + assert.Equal(t, []reasoning.Block{{Redacted: []byte(encrypted)}}, resp.Choices[0].Reasoning.Sequence()) + }) + + t.Run("it goes back to the vendor unchanged", func(t *testing.T) { + t.Parallel() + + llm, sent := legacyLLMCapturing(t, `{"id":"x","type":"message","role":"assistant","model":"m",`+ + `"content":[{"type":"text","text":"ok"}],"stop_reason":"end_turn",`+ + `"usage":{"input_tokens":1,"output_tokens":1}}`, bedrock.WithModel(model)) + + _, err := llm.GenerateContent(context.Background(), []llms.MessageContent{ + {Role: llms.ChatMessageTypeHuman, Parts: []llms.ContentPart{llms.TextPart("hi")}}, + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.TextPartWithReasoning("", reasoning.FromBlocks([]reasoning.Block{{Redacted: []byte(encrypted)}})), + }}, + {Role: llms.ChatMessageTypeHuman, Parts: []llms.ContentPart{llms.TextPart("and now?")}}, + }) + require.NoError(t, err) + + var payload struct { + Messages []struct { + Role string `json:"role"` + Content []map[string]any `json:"content"` + } `json:"messages"` + } + require.NoError(t, json.Unmarshal([]byte(*sent), &payload)) + + var blocks []map[string]any + for _, m := range payload.Messages { + if m.Role == "assistant" { + blocks = append(blocks, m.Content...) + } + } + require.NotEmpty(t, blocks, "the assistant turn must reach the wire") + assert.Contains(t, blocks, map[string]any{"type": "redacted_thinking", "data": encrypted}, + "the encrypted thought goes back exactly as it came, as the Converse path already does") + }) +} diff --git a/llms/bedrock/legacy_stream_usage_test.go b/llms/bedrock/legacy_stream_usage_test.go new file mode 100644 index 000000000..0c4a9d61b --- /dev/null +++ b/llms/bedrock/legacy_stream_usage_test.go @@ -0,0 +1,75 @@ +package bedrock_test + +import ( + "context" + "encoding/base64" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func TestLegacyStreamReportsTheSameCountersAsTheWholeAnswer(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/vnd.amazon.eventstream") + enc := eventstream.NewEncoder() + + writeLegacyChunk(t, w, enc, `{"type":"message_start","message":{"id":"x","type":"message",`+ + `"role":"assistant","model":"m","content":[],"stop_reason":null,`+ + `"usage":{"input_tokens":13,"cache_creation_input_tokens":300,"cache_read_input_tokens":3602,`+ + `"output_tokens":1}}}`) + writeLegacyChunk(t, w, enc, `{"type":"content_block_delta","index":0,`+ + `"delta":{"type":"text_delta","text":"ok"}}`) + writeLegacyChunk(t, w, enc, `{"type":"message_delta","delta":{"stop_reason":"end_turn"},`+ + `"usage":{"output_tokens":304,"output_tokens_details":{"thinking_tokens":178}}}`) + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, bedrock.WithModel("anthropic.claude-sonnet-4-5-20250929-v1:0")) + + got, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + require.NoError(t, err) + require.Len(t, got.Choices, 1) + + info := got.Choices[0].GenerationInfo + assert.Equal(t, 13, info["input_tokens"]) + assert.Equal(t, 3915, info["PromptTokens"]) + assert.Equal(t, 304, info["CompletionTokens"]) + assert.Equal(t, 4219, info["TotalTokens"]) + assert.Equal(t, 3602, info["CacheReadInputTokens"]) + assert.Equal(t, 3602, info["PromptCachedTokens"]) + assert.Equal(t, 300, info["CacheCreationInputTokens"]) + assert.Equal(t, 178, info["ReasoningTokens"]) +} + +func writeLegacyChunk(t *testing.T, w io.Writer, enc *eventstream.Encoder, payload string) { + t.Helper() + + inner := `{"bytes":"` + base64Encode(payload) + `"}` + require.NoError(t, enc.Encode(w, eventstream.Message{ + Headers: eventstream.Headers{ + {Name: ":message-type", Value: eventstream.StringValue("event")}, + {Name: ":event-type", Value: eventstream.StringValue("chunk")}, + {Name: ":content-type", Value: eventstream.StringValue("application/json")}, + }, + Payload: []byte(inner), + })) + if f, ok := w.(http.Flusher); ok { + f.Flush() + } +} + +func base64Encode(s string) string { return base64.StdEncoding.EncodeToString([]byte(s)) } diff --git a/llms/bedrock/legacy_thinking_blocks_test.go b/llms/bedrock/legacy_thinking_blocks_test.go new file mode 100644 index 000000000..1fc002565 --- /dev/null +++ b/llms/bedrock/legacy_thinking_blocks_test.go @@ -0,0 +1,342 @@ +package bedrock_test + +import ( + "context" + "encoding/json" + "fmt" + "io" + "net/http" + "net/http/httptest" + "strings" + "sync" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" + "github.com/vxcontrol/langchaingo/llms/reasoning" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +type legacyRecorder struct { + mu sync.Mutex + responses []string + requests [][]byte +} + +func (l *legacyRecorder) serve(t *testing.T) *bedrock.LLM { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + body, _ := io.ReadAll(r.Body) + l.mu.Lock() + l.requests = append(l.requests, body) + answer := l.responses[min(len(l.requests), len(l.responses))-1] + l.mu.Unlock() + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, answer) + })) + t.Cleanup(srv.Close) + + return bedrockLLMAgainst(t, srv, bedrock.WithModel(converseClaude)) +} + +func (l *legacyRecorder) replayedAssistant(t *testing.T, request int) []string { + t.Helper() + + var payload struct { + Messages []struct { + Role string `json:"role"` + Content []map[string]any `json:"content"` + } `json:"messages"` + } + require.NoError(t, json.Unmarshal(l.requests[request], &payload)) + for _, m := range payload.Messages { + if m.Role == "assistant" { + return legacyShape(m.Content) + } + } + t.Fatalf("request %d carries no assistant turn", request) + return nil +} + +func legacyShape(content []map[string]any) []string { + shape := make([]string, 0, len(content)) + for _, block := range content { + switch block["type"] { + case "thinking": + shape = append(shape, fmt.Sprintf("thought %v/%v", block["thinking"], block["signature"])) + case "redacted_thinking": + shape = append(shape, fmt.Sprintf("encrypted %v", block["data"])) + case "tool_use": + shape = append(shape, fmt.Sprintf("tool %v", block["id"])) + default: + shape = append(shape, fmt.Sprintf("%v %v", block["type"], block["text"])) + } + } + return shape +} + +func legacyReply(blocks ...string) string { + return `{"id":"msg_1","type":"message","role":"assistant","model":"m","content":[` + strings.Join(blocks, ",") + + `],"stop_reason":"tool_use","usage":{"input_tokens":1,"output_tokens":1}}` +} + +func legacyThought(text, signature string) string { + return fmt.Sprintf(`{"type":"thinking","thinking":%q,"signature":%q}`, text, signature) +} + +func legacyToolUse(id string) string { + return fmt.Sprintf(`{"type":"tool_use","id":%q,"name":"lookup","input":{"q":%q}}`, id, id) +} + +func TestTheLegacyDoorKeepsEveryThinkingBlockWithItsSignature(t *testing.T) { + t.Parallel() + + rec := &legacyRecorder{responses: []string{legacyReply( + legacyThought("", "sig-reasoning"), legacyThought("checking the index", "sig-update"), legacyToolUse("A"), + )}} + choice := askConverse(t, rec.serve(t)) + + assert.Equal(t, []reasoning.Block{ + {Signature: []byte("sig-reasoning")}, + {Text: "checking the index", Signature: []byte("sig-update")}, + }, choice.Reasoning.Sequence()) +} + +func TestTheLegacyDoorNotesWhereEachThinkingBlockSat(t *testing.T) { + t.Parallel() + + rec := &legacyRecorder{responses: []string{legacyReply( + legacyThought("plan", "s1"), legacyToolUse("A"), + legacyThought("next", "s2"), `{"type":"redacted_thinking","data":"opaque"}`, legacyToolUse("B"), + )}} + choice := askConverse(t, rec.serve(t)) + + assert.Equal(t, []reasoning.Block{ + {Text: "plan", Signature: []byte("s1")}, + {Text: "next", Signature: []byte("s2"), AfterToolCalls: 1}, + {Redacted: []byte("opaque"), AfterToolCalls: 1}, + }, choice.Reasoning.Sequence()) +} + +func TestTheLegacyStreamKeepsEachBlockWithItsOwnSignature(t *testing.T) { + t.Parallel() + + chunks := []string{ + `{"type":"message_start","message":{"usage":{"input_tokens":1,"output_tokens":0}}}`, + `{"type":"content_block_start","index":0,"content_block":{"type":"thinking"}}`, + `{"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":"first "}}`, + `{"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":"thought"}}`, + `{"type":"content_block_delta","index":0,"delta":{"type":"signature_delta","signature":"s1"}}`, + `{"type":"content_block_stop","index":0}`, + `{"type":"content_block_start","index":1,"content_block":{"type":"redacted_thinking","data":"opaque"}}`, + `{"type":"content_block_stop","index":1}`, + `{"type":"content_block_start","index":2,"content_block":{"type":"thinking"}}`, + `{"type":"content_block_delta","index":2,"delta":{"type":"thinking_delta","thinking":"second"}}`, + `{"type":"content_block_delta","index":2,"delta":{"type":"signature_delta","signature":"s2"}}`, + `{"type":"content_block_stop","index":2}`, + `{"type":"content_block_start","index":3,"content_block":{"type":"tool_use","id":"A","name":"lookup","input":{}}}`, + `{"type":"content_block_delta","index":3,"delta":{"type":"input_json_delta","partial_json":"{\"q\":\"A\"}"}}`, + `{"type":"content_block_stop","index":3}`, + `{"type":"content_block_start","index":4,"content_block":{"type":"thinking"}}`, + `{"type":"content_block_delta","index":4,"delta":{"type":"signature_delta","signature":"s3"}}`, + `{"type":"content_block_stop","index":4}`, + `{"type":"message_delta","delta":{"stop_reason":"max_tokens"},"message":{"usage":{"input_tokens":1,"output_tokens":1}}}`, + `{"type":"message_stop"}`, + } + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/vnd.amazon.eventstream") + enc := eventstream.NewEncoder() + for _, chunk := range chunks { + writeBedrockChunk(t, w, enc, chunk) + } + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, bedrock.WithModel(converseClaude)) + choice := askConverse(t, llm, llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + + assert.Equal(t, []reasoning.Block{ + {Text: "first thought", Signature: []byte("s1")}, + {Redacted: []byte("opaque")}, + {Text: "second", Signature: []byte("s2")}, + {Signature: []byte("s3"), AfterToolCalls: 1}, + }, choice.Reasoning.Sequence()) +} + +func TestAReplayedLegacyTurnGoesBackAsTheVendorSentIt(t *testing.T) { + t.Parallel() + + for name, original := range map[string][]string{ + "reasoning and a progress update before one call": { + legacyThought("", "sig-reasoning"), legacyThought("checking the index", "sig-update"), + `{"type":"text","text":"working"}`, legacyToolUse("A"), + }, + "an update before each of two calls": { + legacyThought("plan", "s1"), `{"type":"text","text":"working"}`, legacyToolUse("A"), + legacyThought("", "s2"), legacyToolUse("B"), + }, + "an update cut off after the last call": { + legacyThought("plan", "s1"), `{"type":"text","text":"working"}`, legacyToolUse("A"), legacyThought("", "s2"), + }, + "a call with no text around it": { + legacyThought("plan", "s1"), legacyToolUse("A"), + }, + "an encrypted block between signed ones": { + legacyThought("a", "s1"), `{"type":"redacted_thinking","data":"opaque"}`, legacyThought("b", "s2"), + `{"type":"text","text":"working"}`, legacyToolUse("A"), + }, + } { + t.Run(name, func(t *testing.T) { + t.Parallel() + + rec := &legacyRecorder{responses: []string{ + legacyReply(original...), + `{"id":"msg_2","type":"message","role":"assistant","model":"m","content":[{"type":"text","text":"ok"}],` + + `"stop_reason":"end_turn","usage":{"input_tokens":1,"output_tokens":1}}`, + }} + llm := rec.serve(t) + choice := askConverse(t, llm) + + turn := []llms.ContentPart{llms.TextPartWithReasoning(choice.Content, choice.Reasoning)} + results := make([]llms.ContentPart, 0, len(choice.ToolCalls)) + for _, call := range choice.ToolCalls { + turn = append(turn, call) + results = append(results, llms.ToolCallResponse{ToolCallID: call.ID, Name: "lookup", Content: "done"}) + } + _, err := llm.GenerateContent(context.Background(), []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "look it up"), + {Role: llms.ChatMessageTypeAI, Parts: turn}, + {Role: llms.ChatMessageTypeTool, Parts: results}, + }, llms.WithTools(lookupTools())) + require.NoError(t, err) + + var sent []map[string]any + require.NoError(t, json.Unmarshal([]byte("["+strings.Join(original, ",")+"]"), &sent)) + assert.Equal(t, legacyShape(sent), rec.replayedAssistant(t, 1)) + }) + } +} + +func TestTheLegacyDoorOpensTheTurnWithItsReasoningWhateverThePartOrder(t *testing.T) { + t.Parallel() + + rec := &legacyRecorder{responses: []string{ + `{"id":"msg_2","type":"message","role":"assistant","model":"m","content":[{"type":"text","text":"ok"}],` + + `"stop_reason":"end_turn","usage":{"input_tokens":1,"output_tokens":1}}`, + }} + thought := reasoning.FromBlocks([]reasoning.Block{ + {Text: "plan", Signature: []byte("s1")}, + {Signature: []byte("s2"), AfterToolCalls: 1}, + }) + _, err := rec.serve(t).GenerateContent(context.Background(), []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "look it up"), + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.ToolCall{ID: "A", Type: "function", FunctionCall: &llms.FunctionCall{Name: "lookup", Arguments: `{"q":"A"}`}}, + llms.TextPartWithReasoning("working", thought), + }}, + {Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{ + llms.ToolCallResponse{ToolCallID: "A", Name: "lookup", Content: "done"}, + }}, + }, llms.WithTools(lookupTools())) + require.NoError(t, err) + + assert.Equal(t, []string{"thought plan/s1", "tool A", "thought /s2", "text working"}, rec.replayedAssistant(t, 0)) +} + +func TestAnEmptyCachedTextNeverReachesTheLegacyPayload(t *testing.T) { + t.Parallel() + + thought := reasoning.FromBlocks([]reasoning.Block{{Text: "plan", Signature: []byte("s1")}}) + answer := `{"id":"msg_2","type":"message","role":"assistant","model":"m","content":[{"type":"text","text":"ok"}],` + + `"stop_reason":"end_turn","usage":{"input_tokens":1,"output_tokens":1}}` + + auto := &legacyRecorder{responses: []string{answer}} + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + body, _ := io.ReadAll(r.Body) + auto.mu.Lock() + auto.requests = append(auto.requests, body) + auto.mu.Unlock() + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, answer) + })) + t.Cleanup(srv.Close) + llm := bedrockLLMAgainst(t, srv, bedrock.WithModel(converseClaude), bedrock.WithAutomaticCaching()) + _, err := llm.GenerateContent(context.Background(), []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "first"), + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{llms.TextPartWithReasoning("", thought)}}, + llms.TextParts(llms.ChatMessageTypeHuman, "second"), + }) + require.NoError(t, err) + assert.Equal(t, []string{"thought plan/s1"}, auto.replayedAssistant(t, 0)) + assert.NotContains(t, string(auto.requests[0]), "cache_control", + "a thinking block cannot carry the marker, so it goes with the empty text") + + explicit := &legacyRecorder{responses: []string{answer}} + _, err = explicit.serve(t).GenerateContent(context.Background(), []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "look it up"), + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.ToolCall{ID: "A", Type: "function", FunctionCall: &llms.FunctionCall{Name: "lookup", Arguments: `{"q":"A"}`}}, + bedrock.WithCacheControl(llms.TextContent{}, bedrock.EphemeralCache()), + }}, + {Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{ + llms.ToolCallResponse{ToolCallID: "A", Name: "lookup", Content: "done"}, + }}, + }, llms.WithTools(lookupTools())) + require.NoError(t, err) + + var payload struct { + Messages []struct { + Role string `json:"role"` + Content []map[string]any `json:"content"` + } `json:"messages"` + } + require.NoError(t, json.Unmarshal(explicit.requests[0], &payload)) + assistant := payload.Messages[1].Content + require.Len(t, assistant, 1) + assert.Equal(t, "tool_use", assistant[0]["type"]) + assert.NotNil(t, assistant[0]["cache_control"], "the marker moves to the block before the empty text") +} + +func TestTheMovedCacheMarkWalksPastThinkingAndKeepsItsTTL(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + last reasoning.Block + shape string + }{ + {reasoning.Block{Text: "next", Signature: []byte("s2"), AfterToolCalls: 1}, "thought next/s2"}, + {reasoning.Block{Redacted: []byte("opaque"), AfterToolCalls: 1}, "encrypted opaque"}, + } { + thought := reasoning.FromBlocks([]reasoning.Block{{Text: "plan", Signature: []byte("s1")}, tc.last}) + rec := &legacyRecorder{responses: []string{`{"id":"msg_2","type":"message","role":"assistant","model":"m",` + + `"content":[{"type":"text","text":"ok"}],"stop_reason":"end_turn","usage":{"input_tokens":1,"output_tokens":1}}`}} + _, err := rec.serve(t).GenerateContent(context.Background(), []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "look it up"), + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.ToolCall{ID: "A", Type: "function", FunctionCall: &llms.FunctionCall{Name: "lookup", Arguments: `{"q":"A"}`}}, + bedrock.WithCacheControl(llms.TextPartWithReasoning("", thought), bedrock.EphemeralCacheOneHour()), + }}, + {Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{ + llms.ToolCallResponse{ToolCallID: "A", Name: "lookup", Content: "done"}, + }}, + }, llms.WithTools(lookupTools())) + require.NoError(t, err, tc.shape) + + var payload struct { + Messages []struct { + Content []map[string]any `json:"content"` + } `json:"messages"` + } + require.NoError(t, json.Unmarshal(rec.requests[0], &payload)) + assistant := payload.Messages[1].Content + require.Equal(t, []string{"thought plan/s1", "tool A", tc.shape}, legacyShape(assistant)) + assert.Equal(t, map[string]any{"type": "ephemeral", "ttl": "1h"}, assistant[1]["cache_control"], tc.shape) + assert.Nil(t, assistant[2]["cache_control"], tc.shape) + } +} diff --git a/llms/bedrock/legacy_thinking_parity_test.go b/llms/bedrock/legacy_thinking_parity_test.go new file mode 100644 index 000000000..090ca6d6f --- /dev/null +++ b/llms/bedrock/legacy_thinking_parity_test.go @@ -0,0 +1,56 @@ +package bedrock_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" +) + +func TestAClaudeThatCannotThinkSaysSoOnTheLegacyDoor(t *testing.T) { + t.Parallel() + + resp := bedrockWarningsFor(t, legacyAnswer, + []bedrock.Option{bedrock.WithModel("anthropic.claude-instant-v1")}, + llms.WithAdaptiveReasoning("")) + + w, ok := bedrockWarningsByOption(resp.Warnings)["WithReasoning"] + require.True(t, ok, "the ask to think went nowhere unreported: %v", resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, "thinking", w.Asked) +} + +func TestBothNovaDoorsReportTheMechanismTheyPicked(t *testing.T) { + t.Parallel() + + const novaAnswer = `{"output":{"message":{"role":"assistant","content":[{"text":"ok"}]}},` + + `"stopReason":"end_turn","usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}` + + for _, door := range []struct { + name string + opts []bedrock.Option + }{ + {"legacy", []bedrock.Option{bedrock.WithModel("amazon.nova-2-lite-v1:0")}}, + {"converse", []bedrock.Option{ + bedrock.WithModel("amazon.nova-2-lite-v1:0"), bedrock.WithConverseAPI(), + }}, + } { + t.Run(door.name, func(t *testing.T) { + t.Parallel() + + answer := novaAnswer + if door.name == "converse" { + answer = converseAnswer + } + resp := bedrockWarningsFor(t, answer, door.opts, + llms.WithAdaptiveReasoning(llms.ReasoningHigh)) + + w, ok := bedrockWarningsByOption(resp.Warnings)["WithAdaptiveReasoning"] + require.True(t, ok, "the door picked the mechanism unreported: %v", resp.Warnings) + require.Equal(t, llms.WarningSubstitute, w.Kind) + require.Equal(t, "adaptive", w.Asked) + }) + } +} diff --git a/llms/bedrock/legacy_thinking_test.go b/llms/bedrock/legacy_thinking_test.go new file mode 100644 index 000000000..08b59a9b1 --- /dev/null +++ b/llms/bedrock/legacy_thinking_test.go @@ -0,0 +1,205 @@ +package bedrock_test + +import ( + "context" + "encoding/base64" + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream" + "github.com/aws/aws-sdk-go-v2/credentials" + "github.com/aws/aws-sdk-go-v2/service/bedrockruntime" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func legacyLLMCapturing(t *testing.T, body string, opts ...bedrock.Option) (*bedrock.LLM, *string) { + t.Helper() + + sent := new(string) + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + *sent = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, body) + })) + t.Cleanup(srv.Close) + + return bedrockLLMAgainst(t, srv, opts...), sent +} + +func bedrockLLMAgainst(t *testing.T, srv *httptest.Server, opts ...bedrock.Option) *bedrock.LLM { + t.Helper() + + client := bedrockruntime.NewFromConfig(aws.Config{ + Region: "us-east-1", + Credentials: credentials.NewStaticCredentialsProvider("unit", "test", ""), + }, func(o *bedrockruntime.Options) { + o.BaseEndpoint = aws.String(srv.URL) + }, signWithSigV4) + + llm, err := bedrock.New(append([]bedrock.Option{bedrock.WithClient(client)}, opts...)...) + require.NoError(t, err) + return llm +} + +func TestLegacyBudgetStaysBelowMaxTokens(t *testing.T) { + t.Parallel() + + const resp = `{"id":"x","type":"message","role":"assistant","model":"m",` + + `"content":[{"type":"text","text":"ok"}],"stop_reason":"end_turn",` + + `"usage":{"input_tokens":1,"output_tokens":1}}` + + llm, sent := legacyLLMCapturing(t, resp, + bedrock.WithModel("anthropic.claude-sonnet-4-5-20250929-v1:0")) + + _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithMaxTokens(0), llms.WithReasoning(llms.ReasoningLow, 0)) + require.NoError(t, err) + + var got struct { + MaxTokens int `json:"max_tokens"` + Thinking struct { + BudgetTokens int `json:"budget_tokens"` + } `json:"thinking"` + } + require.NoError(t, json.Unmarshal([]byte(*sent), &got)) + + assert.Positive(t, got.Thinking.BudgetTokens, "budget thinking must carry a budget") + assert.Less(t, got.Thinking.BudgetTokens, got.MaxTokens, + "a missing max-tokens must be substituted once, not twice with different values") +} + +func TestLegacyBudgetThinkingReachesEveryBudgetGeneration(t *testing.T) { + t.Parallel() + + const resp = `{"id":"x","type":"message","role":"assistant","model":"m",` + + `"content":[{"type":"text","text":"ok"}],"stop_reason":"end_turn",` + + `"usage":{"input_tokens":1,"output_tokens":1}}` + + for _, model := range []string{ + "anthropic.claude-3-7-sonnet-20250219-v1:0", + "us.anthropic.claude-3-7-sonnet-20250219-v1:0", + "anthropic.claude-opus-4-20250514-v1:0", + "anthropic.claude-sonnet-4-20250514-v1:0", + "anthropic.claude-sonnet-4-5-20250929-v1:0", + } { + t.Run(model, func(t *testing.T) { + t.Parallel() + + llm, sent := legacyLLMCapturing(t, resp, bedrock.WithModel(model)) + + _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithReasoning(llms.ReasoningLow, 0)) + require.NoError(t, err) + + var got struct { + Temperature float64 `json:"temperature"` + Thinking *struct { + Type string `json:"type"` + BudgetTokens int `json:"budget_tokens"` + } `json:"thinking"` + OutputConfig *struct { + Effort string `json:"effort"` + } `json:"output_config"` + } + require.NoError(t, json.Unmarshal([]byte(*sent), &got)) + + require.NotNil(t, got.Thinking, "budget generation must receive a thinking block") + assert.Equal(t, "enabled", got.Thinking.Type) + assert.Positive(t, got.Thinking.BudgetTokens) + assert.InDelta(t, 1.0, got.Temperature, 1e-9, + "budget thinking runs at temperature 1") + assert.Nil(t, got.OutputConfig, + "a budget-only generation takes no effort alongside the budget") + }) + } +} + +func writeBedrockChunk(t *testing.T, w io.Writer, enc *eventstream.Encoder, chunk string) { + t.Helper() + + envelope, err := json.Marshal(map[string]string{ + "bytes": base64.StdEncoding.EncodeToString([]byte(chunk)), + }) + require.NoError(t, err) + + require.NoError(t, enc.Encode(w, eventstream.Message{ + Headers: eventstream.Headers{ + {Name: ":message-type", Value: eventstream.StringValue("event")}, + {Name: ":event-type", Value: eventstream.StringValue("chunk")}, + {Name: ":content-type", Value: eventstream.StringValue("application/json")}, + }, + Payload: envelope, + })) +} + +func TestLegacyStreamKeepsASignatureOnlyThinkingBlock(t *testing.T) { + t.Parallel() + + chunks := []string{ + `{"type":"message_start","message":{"usage":{"input_tokens":1,"output_tokens":0}}}`, + `{"type":"content_block_start","content_block":{"type":"thinking"}}`, + `{"type":"content_block_delta","delta":{"type":"signature_delta","signature":"sig-only"}}`, + `{"type":"content_block_stop"}`, + `{"type":"content_block_delta","delta":{"type":"text_delta","text":"ok"}}`, + `{"type":"message_delta","delta":{"stop_reason":"end_turn"},"message":{"usage":{"input_tokens":1,"output_tokens":1}}}`, + `{"type":"message_stop"}`, + } + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/vnd.amazon.eventstream") + enc := eventstream.NewEncoder() + for _, chunk := range chunks { + writeBedrockChunk(t, w, enc, chunk) + } + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, bedrock.WithModel("anthropic.claude-sonnet-4-5-20250929-v1:0")) + + got, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStreamingFunc(func(_ context.Context, _ streaming.Chunk) error { return nil })) + require.NoError(t, err) + + choice := got.Choices[0] + require.NotNil(t, choice.Reasoning, + "a thinking block that arrived as a signature alone must survive, as it does off the stream") + assert.Equal(t, "sig-only", string(choice.Reasoning.Signature)) +} + +func TestLegacyPromptTokensCountTheCachedInput(t *testing.T) { + t.Parallel() + + const resp = `{"id":"x","type":"message","role":"assistant","model":"m",` + + `"content":[{"type":"text","text":"ok"}],"stop_reason":"end_turn",` + + `"usage":{"input_tokens":13,"output_tokens":4,` + + `"cache_creation_input_tokens":300,"cache_read_input_tokens":3602}}` + + llm, _ := legacyLLMCapturing(t, resp, + bedrock.WithModel("anthropic.claude-sonnet-4-5-20250929-v1:0")) + + got, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + require.NoError(t, err) + require.Len(t, got.Choices, 1) + + info := got.Choices[0].GenerationInfo + assert.Equal(t, 13, info["input_tokens"], + "the vendor's own field reports the uncached input alone") + assert.Equal(t, 3915, info["PromptTokens"], + "the standardized field must count the cached input the request was billed for") + assert.Equal(t, 3919, info["TotalTokens"]) +} diff --git a/llms/bedrock/legacy_thinking_warning_test.go b/llms/bedrock/legacy_thinking_warning_test.go new file mode 100644 index 000000000..bddf98d2b --- /dev/null +++ b/llms/bedrock/legacy_thinking_warning_test.go @@ -0,0 +1,57 @@ +package bedrock_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" +) + +func TestThinkingNoLegacyPayloadCarriesIsReported(t *testing.T) { + t.Parallel() + + const novaAnswer = `{"output":{"message":{"role":"assistant","content":[{"text":"ok"}]}},` + + `"stopReason":"end_turn","usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}` + const metaAnswer = `{"generation":"ok","stop_reason":"stop","prompt_token_count":1,` + + `"generation_token_count":1}` + + for _, door := range []struct { + name string + model string + answer string + }{ + {"nova without reasoning", "amazon.nova-lite-v1:0", novaAnswer}, + {"a payload with no thinking field at all", "meta.llama3-8b-instruct-v1:0", metaAnswer}, + } { + t.Run(door.name, func(t *testing.T) { + t.Parallel() + + resp := bedrockWarningsFor(t, door.answer, + []bedrock.Option{bedrock.WithModel(door.model)}, + llms.WithReasoning(llms.ReasoningHigh, 0)) + + w, ok := bedrockWarningsByOption(resp.Warnings)["WithReasoning"] + require.True(t, ok, "the ask to think went nowhere unreported: %v", resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, "high", w.Asked) + }) + } +} + +func TestANovaModelThatThinksReportsNoLostThinking(t *testing.T) { + t.Parallel() + + const novaAnswer = `{"output":{"message":{"role":"assistant","content":[{"text":"ok"}]}},` + + `"stopReason":"end_turn","usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}` + + resp := bedrockWarningsFor(t, novaAnswer, + []bedrock.Option{bedrock.WithModel("amazon.nova-2-lite-v1:0")}, + llms.WithReasoning(llms.ReasoningHigh, 0)) + + w, ok := bedrockWarningsByOption(resp.Warnings)["WithReasoning"] + if ok { + require.NotEqual(t, llms.WarningDrop, w.Kind, "the effort reached the wire: %v", resp.Warnings) + } +} diff --git a/llms/bedrock/legacy_tool_choice_test.go b/llms/bedrock/legacy_tool_choice_test.go new file mode 100644 index 000000000..08204ff1e --- /dev/null +++ b/llms/bedrock/legacy_tool_choice_test.go @@ -0,0 +1,80 @@ +package bedrock_test + +import ( + "context" + "encoding/json" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" +) + +func TestLegacyDoorCarriesTheToolChoice(t *testing.T) { + t.Parallel() + + const answer = `{"id":"x","type":"message","role":"assistant","model":"m",` + + `"content":[{"type":"text","text":"ok"}],"stop_reason":"end_turn",` + + `"usage":{"input_tokens":1,"output_tokens":1}}` + + tool := llms.Tool{ + Type: "function", + Function: &llms.FunctionDefinition{ + Name: "get_weather", + Description: "weather", + Parameters: map[string]any{"type": "object", "properties": map[string]any{}}, + }, + } + + choiceOnWire := func(t *testing.T, choice any) any { + t.Helper() + + llm, sent := legacyLLMCapturing(t, answer, + bedrock.WithModel("anthropic.claude-sonnet-4-5-20250929-v1:0")) + + opts := []llms.CallOption{llms.WithTools([]llms.Tool{tool})} + if choice != nil { + opts = append(opts, llms.WithToolChoice(choice)) + } + _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, opts...) + require.NoError(t, err) + + var body map[string]any + require.NoError(t, json.Unmarshal([]byte(*sent), &body)) + return body["tool_choice"] + } + + for _, tc := range []struct { + name string + choice any + want any + }{ + { + "named in the Anthropic spelling", + llms.ToolChoice{Type: "tool", Function: &llms.FunctionReference{Name: "get_weather"}}, + map[string]any{"type": "tool", "name": "get_weather"}, + }, + { + "named in the OpenAI spelling", + llms.ToolChoice{Type: "function", Function: &llms.FunctionReference{Name: "get_weather"}}, + map[string]any{"type": "tool", "name": "get_weather"}, + }, + {"any tool", llms.ToolChoice{Type: "any"}, map[string]any{"type": "any"}}, + {"required", "required", map[string]any{"type": "any"}}, + {"auto", "auto", map[string]any{"type": "auto"}}, + {"none", "none", map[string]any{"type": "none"}}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + assert.Equal(t, tc.want, choiceOnWire(t, tc.choice)) + }) + } + + t.Run("no choice sends no field", func(t *testing.T) { + t.Parallel() + assert.Nil(t, choiceOnWire(t, nil)) + }) +} diff --git a/llms/bedrock/llmtest_converse_test.go b/llms/bedrock/llmtest_converse_test.go new file mode 100644 index 000000000..6eeb30f16 --- /dev/null +++ b/llms/bedrock/llmtest_converse_test.go @@ -0,0 +1,147 @@ +package bedrock_test + +import ( + "net/http" + "net/url" + "os" + "path/filepath" + "strings" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/bedrockruntime" + "github.com/aws/smithy-go/auth/bearer" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/internal/httprr" + "github.com/vxcontrol/langchaingo/llms/bedrock" + "github.com/vxcontrol/langchaingo/testing/llmtest" +) + +const awsBedrockHost = "bedrock-runtime.us-east-1.amazonaws.com" + +func conformanceClient(t *testing.T, rr *httprr.RecordReplay) *bedrockruntime.Client { + t.Helper() + + base := os.Getenv("BEDROCK_PASSTHROUGH_URL") + prefix := "" + if base != "" { + parsed, err := url.Parse(base) + require.NoError(t, err, "BEDROCK_PASSTHROUGH_URL must be a URL") + prefix = strings.TrimSuffix(parsed.Path, "/") + } + + rr.ScrubReq(func(req *http.Request) error { + req.Header.Del("Amz-Sdk-Invocation-Id") + req.Header.Del("Amz-Sdk-Request") + req.Header.Del("X-Amz-Date") + req.Header.Del("Authorization") + req.URL.Scheme = "https" + req.URL.Host = awsBedrockHost + req.URL.Path = strings.TrimPrefix(req.URL.Path, prefix) + req.URL.RawPath = "" + req.Host = awsBedrockHost + return nil + }) + + httpClient := &http.Client{Transport: rr} + + if !rr.Recording() { + cfg, err := config.LoadDefaultConfig(t.Context(), + append([]func(*config.LoadOptions) error{config.WithHTTPClient(httpClient)}, + replayCredentials(false)...)...) + require.NoError(t, err) + return bedrockruntime.NewFromConfig(cfg, replayClientOptions(false)...) + } + + key := os.Getenv("BEDROCK_PASSTHROUGH_KEY") + require.NotEmpty(t, base, "recording needs BEDROCK_PASSTHROUGH_URL") + require.NotEmpty(t, key, "recording needs BEDROCK_PASSTHROUGH_KEY") + + cfg, err := config.LoadDefaultConfig(t.Context(), + config.WithHTTPClient(httpClient), config.WithRegion(replayRegion)) + require.NoError(t, err) + + return bedrockruntime.NewFromConfig(cfg, func(o *bedrockruntime.Options) { + o.BaseEndpoint = aws.String(base) + o.BearerAuthTokenProvider = bearer.StaticTokenProvider{Token: bearer.Token{Value: key}} + o.AuthSchemePreference = []string{"httpBearerAuth"} + }) +} + +func TestLLMConverse(t *testing.T) { + cassette := filepath.Join("testdata", "TestLLMConverse.httprr") + recording, err := httprr.Recording(cassette) + if err != nil { + t.Fatal(err) + } + if _, statErr := os.Stat(cassette); statErr != nil && !recording { + t.Skip("no httprr recording for TestLLMConverse; re-run with -httprecord=. and a gateway key") + } + + rr := httprr.OpenForTest(t, http.DefaultTransport) + // llmtest drives parallel subtests, which resume only after this function + // returns; a deferred Close would shut the recorder before they run. + t.Cleanup(func() { + if closeErr := rr.Close(); closeErr != nil { + t.Errorf("closing the recording: %v", closeErr) + } + }) + + llm, err := bedrock.New(bedrock.WithClient(conformanceClient(t, rr)), + bedrock.WithModel(bedrock.ModelAnthropicClaudeHaiku45), bedrock.WithConverseAPI()) + if err != nil { + t.Fatalf("Failed to create Bedrock LLM: %v", err) + } + + llmtest.TestLLM(t, llm) +} + +func TestTheConformanceRecordingsAddressTheVendor(t *testing.T) { + t.Parallel() + + for _, name := range []string{"TestLLM.httprr", "TestLLMConverse.httprr"} { + t.Run(name, func(t *testing.T) { + t.Parallel() + + recorded, err := os.ReadFile(filepath.Join("testdata", name)) + if err != nil { + t.Skipf("no recording for %s yet", name) + } + + requests := 0 + for _, line := range strings.Split(string(recorded), "\n") { + switch { + case strings.HasPrefix(line, "POST "): + requests++ + require.Contains(t, line, awsBedrockHost, + "a recording made through a gateway must be stored under the vendor's own address") + case strings.HasPrefix(line, "Authorization:"): + require.Fail(t, "the recording carries a credential header") + } + } + require.NotZero(t, requests, "the recording must hold at least one request") + }) + } +} + +func TestTheConformanceRecordingsCoverStreaming(t *testing.T) { + t.Parallel() + + for name, streamPath := range map[string]string{ + "TestLLM.httprr": "/invoke-with-response-stream", + "TestLLMConverse.httprr": "/converse-stream", + } { + t.Run(name, func(t *testing.T) { + t.Parallel() + + recorded, err := os.ReadFile(filepath.Join("testdata", name)) + if err != nil { + t.Skipf("no recording for %s yet", name) + } + require.Contains(t, string(recorded), streamPath, + "the suite streams on this door, so the recording has to carry a streamed turn") + }) + } +} diff --git a/llms/bedrock/llmtest_test.go b/llms/bedrock/llmtest_test.go index 830044c6f..b4dd1623a 100644 --- a/llms/bedrock/llmtest_test.go +++ b/llms/bedrock/llmtest_test.go @@ -1,20 +1,37 @@ -package bedrock +package bedrock_test import ( + "net/http" "os" + "path/filepath" "testing" + "github.com/vxcontrol/langchaingo/internal/httprr" + "github.com/vxcontrol/langchaingo/llms/bedrock" "github.com/vxcontrol/langchaingo/testing/llmtest" ) func TestLLM(t *testing.T) { - if os.Getenv("AWS_REGION") == "" { - t.Skip("AWS_REGION not set") + cassette := filepath.Join("testdata", "TestLLM.httprr") + recording, err := httprr.Recording(cassette) + if err != nil { + t.Fatal(err) + } + if _, statErr := os.Stat(cassette); statErr != nil && !recording { + t.Skip("no httprr recording for TestLLM; re-run with -httprecord=. and a gateway key") } - llm, err := New( - WithModel(ModelAnthropicClaudeHaiku45), - ) + rr := httprr.OpenForTest(t, http.DefaultTransport) + // llmtest drives parallel subtests, which resume only after this function + // returns; a deferred Close would shut the recorder before they run. + t.Cleanup(func() { + if closeErr := rr.Close(); closeErr != nil { + t.Errorf("closing the recording: %v", closeErr) + } + }) + + llm, err := bedrock.New(bedrock.WithClient(conformanceClient(t, rr)), + bedrock.WithModel(bedrock.ModelAnthropicClaudeHaiku45)) if err != nil { t.Fatalf("Failed to create Bedrock LLM: %v", err) } diff --git a/llms/bedrock/models_list.go b/llms/bedrock/models_list.go index 034c10d74..8293b9bd6 100644 --- a/llms/bedrock/models_list.go +++ b/llms/bedrock/models_list.go @@ -45,8 +45,7 @@ const ( // Claude Opus 5 is Anthropic's model for complex agentic coding and enterprise work, succeeding // Opus 4.8. Adaptive thinking is on by default (a breaking change from Opus 4.8, which defaulted - // off) but, unlike Fable 5/Mythos 5, it still accepts an explicit disable. Supports adaptive - // thinking only: budget thinking and sampling params are rejected. + // off). Supports adaptive thinking only: budget thinking and sampling params are rejected. // // Max tokens: 1M // Languages: English, French, Modern Standard Arabic, Mandarin Chinese, Hindi, Spanish, Portuguese, Korean, Japanese, German, Russian, Polish, and other languages. @@ -70,8 +69,7 @@ const ( // Claude Sonnet 5 is Anthropic's most capable Sonnet, built for coding, agents, and professional // work at scale with near-Opus intelligence at Sonnet cost. Adaptive thinking is on by default; - // budget thinking and non-default sampling params are rejected. On Bedrock, adaptive thinking is - // always on and cannot be disabled, unlike the Anthropic API where it accepts an explicit disable. + // budget thinking and non-default sampling params are rejected. // // Max tokens: 1M // Languages: English, French, Modern Standard Arabic, Mandarin Chinese, Hindi, Spanish, Portuguese, Korean, Japanese, German, Russian, Polish, and other languages. diff --git a/llms/bedrock/provider_families_test.go b/llms/bedrock/provider_families_test.go new file mode 100644 index 000000000..894f94782 --- /dev/null +++ b/llms/bedrock/provider_families_test.go @@ -0,0 +1,189 @@ +package bedrock_test + +import ( + "context" + "errors" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +type familyCase struct { + name string + model string + whole string + chunks []string + wantText string + wantReason string + hasCounters bool +} + +func nonClaudeFamilies() []familyCase { + return []familyCase{ + { + name: "amazon", + hasCounters: true, + model: "amazon.titan-text-express-v1", + whole: `{"inputTextTokenCount":5,"results":[{"tokenCount":3,"outputText":"sixty rooms",` + + `"completionReason":"LENGTH"}]}`, + chunks: []string{ + `{"outputText":"sixty ","index":0}`, + `{"outputText":"rooms","index":1,"completionReason":"LENGTH"}`, + }, + wantText: "sixty rooms", + wantReason: "LENGTH", + }, + { + name: "meta", + hasCounters: true, + model: "meta.llama3-70b-instruct-v1:0", + whole: `{"generation":"sixty rooms","prompt_token_count":5,"generation_token_count":3,"stop_reason":"length"}`, + chunks: []string{`{"generation":"sixty "}`, `{"generation":"rooms","stop_reason":"length"}`}, + wantText: "sixty rooms", + wantReason: "length", + }, + { + name: "cohere", + model: "cohere.command-text-v14", + whole: `{"id":"x","generations":[{"id":"g","text":"sixty rooms","finish_reason":"MAX_TOKENS"}],` + + `"text":"","finish_reason":""}`, + chunks: []string{ + `{"text":"sixty ","is_finished":false}`, + `{"text":"rooms","finish_reason":"MAX_TOKENS","is_finished":true}`, + }, + wantText: "sixty rooms", + wantReason: "MAX_TOKENS", + }, + { + name: "ai21", + hasCounters: true, + model: "ai21.jamba-1-5-large-v1:0", + whole: `{"id":"x","choices":[{"index":0,"message":{"role":"assistant","content":"sixty rooms"},` + + `"finish_reason":"length"}],"usage":{"prompt_tokens":5,"completion_tokens":3,"total_tokens":8}}`, + chunks: []string{ + `{"text":"sixty ","index":0}`, + `{"text":"rooms","index":1,"finish_reason":"length"}`, + }, + wantText: "sixty rooms", + wantReason: "length", + }, + { + name: "deepseek", + model: "us.deepseek.r1-v1:0", + whole: `{"choices":[{"text":"sixty rooms","stop_reason":"length"}]}`, + chunks: []string{`{"choices":[{"text":"sixty "}]}`, `{"choices":[{"text":"rooms","stop_reason":"length"}]}`}, + wantText: "sixty rooms", + wantReason: "length", + }, + { + name: "nova", + hasCounters: true, + model: "us.amazon.nova-pro-v1:0", + whole: `{"output":{"message":{"content":[{"text":"sixty rooms"}],"role":"assistant"}},` + + `"stopReason":"max_tokens","usage":{"inputTokens":5,"outputTokens":3,"totalTokens":8}}`, + chunks: []string{ + `{"contentBlockDelta":{"delta":{"text":"sixty "}}}`, + `{"contentBlockDelta":{"delta":{"text":"rooms"}}}`, + `{"messageStop":{"stopReason":"max_tokens"}}`, + `{"metadata":{"usage":{"inputTokens":5,"outputTokens":3}}}`, + }, + wantText: "sixty rooms", + wantReason: "max_tokens", + }, + } +} + +func TestANonClaudeFamilyReportsTruncationAndKeepsItsWholeAnswer(t *testing.T) { + t.Parallel() + + for _, tc := range nonClaudeFamilies() { + t.Run(tc.name+"/whole answer", func(t *testing.T) { + t.Parallel() + + llm := truncationLLMWithBody(t, tc.whole, bedrock.WithModel(tc.model)) + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + + assert.Equal(t, tc.wantText, resp.Choices[0].Content) + assert.Equal(t, tc.wantReason, resp.Choices[0].StopReason) + assert.True(t, resp.Choices[0].Truncated, + "a stop reason meaning the output limit must set Truncated") + + if tc.hasCounters { + for _, key := range []string{"PromptTokens", "CompletionTokens"} { + _, ok := resp.Choices[0].GenerationInfo[key].(int) + assert.True(t, ok, "%s must be an int, as the Claude doors report it, got %#v", + key, resp.Choices[0].GenerationInfo[key]) + } + } + }) + + t.Run(tc.name+"/consumer gives up mid-stream", func(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/vnd.amazon.eventstream") + enc := eventstream.NewEncoder() + for _, chunk := range tc.chunks { + writeLegacyChunk(t, w, enc, chunk) + } + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, bedrock.WithModel(tc.model)) + gaveUp := errors.New("consumer gave up") + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, + llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type == streaming.ChunkTypeText { + return gaveUp + } + return nil + })) + + require.ErrorIs(t, err, gaveUp) + require.NotNil(t, resp, "the text already handed to the consumer must travel with the error") + require.Len(t, resp.Choices, 1) + assert.NotEmpty(t, resp.Choices[0].Content, + "the chunk the consumer refused was still delivered, so it belongs in the answer") + }) + + t.Run(tc.name+"/streamed answer", func(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/vnd.amazon.eventstream") + enc := eventstream.NewEncoder() + for _, chunk := range tc.chunks { + writeLegacyChunk(t, w, enc, chunk) + } + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, bedrock.WithModel(tc.model)) + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + + assert.Equal(t, tc.wantText, resp.Choices[0].Content, + "every delta belongs in the assembled answer") + assert.True(t, resp.Choices[0].Truncated, + "the streamed stop reason must set Truncated too") + }) + } +} diff --git a/llms/bedrock/refusal_test.go b/llms/bedrock/refusal_test.go new file mode 100644 index 000000000..e3cb1899a --- /dev/null +++ b/llms/bedrock/refusal_test.go @@ -0,0 +1,79 @@ +package bedrock_test + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func TestLegacyRefusalReachesTheCallerAsATypedError(t *testing.T) { + t.Parallel() + + const resp = `{"id":"x","type":"message","role":"assistant","model":"m",` + + `"content":[{"type":"text","text":"I can't help with that."}],` + + `"stop_reason":"refusal",` + + `"stop_details":{"category":"cyber","explanation":"content boundary"},` + + `"usage":{"input_tokens":11,"output_tokens":7,"cache_creation_input_tokens":3,"cache_read_input_tokens":5}}` + + llm, _ := legacyLLMCapturing(t, resp, bedrock.WithModel(claudeBudgetModel)) + got, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + + var refusal *llms.ErrModelRefusal + require.ErrorAs(t, err, &refusal) + assert.Equal(t, "I can't help with that.", refusal.Message) + assert.Equal(t, "cyber", refusal.Category, "stop_details must survive the door") + assert.Equal(t, "content boundary", refusal.Explanation) + assert.Equal(t, 11, refusal.InputTokens) + assert.Equal(t, 7, refusal.OutputTokens) + assert.Equal(t, 3, refusal.CacheCreationInputTokens) + assert.Equal(t, 5, refusal.CacheReadInputTokens) + + require.NotNil(t, got, "the response travels with the error so usage survives") +} + +func TestLegacyStreamRefusalIsNotMistakenForAnAnswer(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/vnd.amazon.eventstream") + enc := eventstream.NewEncoder() + + writeLegacyChunk(t, w, enc, `{"type":"message_start","message":{"id":"x","type":"message",`+ + `"role":"assistant","model":"m","content":[],"stop_reason":null,`+ + `"usage":{"input_tokens":11,"output_tokens":1}}}`) + writeLegacyChunk(t, w, enc, `{"type":"content_block_delta","index":0,`+ + `"delta":{"type":"text_delta","text":"I can't help with that."}}`) + writeLegacyChunk(t, w, enc, `{"type":"message_delta","delta":{"stop_reason":"refusal"},`+ + `"usage":{"output_tokens":7}}`) + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, bedrock.WithModel("anthropic.claude-sonnet-4-5-20250929-v1:0")) + + got, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + + var refusal *llms.ErrModelRefusal + require.ErrorAs(t, err, &refusal, "a streamed refusal must not look like a normal answer") + assert.Equal(t, "I can't help with that.", refusal.Message) + assert.Equal(t, 11, refusal.InputTokens) + assert.Equal(t, 7, refusal.OutputTokens) + + require.NotNil(t, got, "the response travels with the error so usage survives") + require.Len(t, got.Choices, 1) + assert.Equal(t, "refusal", got.Choices[0].StopReason) +} diff --git a/llms/bedrock/replay_signing_test.go b/llms/bedrock/replay_signing_test.go new file mode 100644 index 000000000..9ed2effda --- /dev/null +++ b/llms/bedrock/replay_signing_test.go @@ -0,0 +1,53 @@ +package bedrock_test + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/bedrockruntime" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" +) + +func TestAStrayBearerTokenDoesNotResignTheReplay(t *testing.T) { + t.Setenv("AWS_BEARER_TOKEN_BEDROCK", "someone-elses-token") + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, legacyAnswer) + })) + t.Cleanup(srv.Close) + + tap := &authHeaderTap{next: http.DefaultTransport} + cfg, err := config.LoadDefaultConfig(t.Context(), + append([]func(*config.LoadOptions) error{ + config.WithHTTPClient(&http.Client{Transport: tap}), + }, replayCredentials(false)...)...) + require.NoError(t, err) + + client := bedrockruntime.NewFromConfig(cfg, + append(replayClientOptions(false), func(o *bedrockruntime.Options) { + o.BaseEndpoint = aws.String(srv.URL) + })...) + + llm, err := bedrock.New(bedrock.WithClient(client), + bedrock.WithModel("anthropic.claude-sonnet-4-5-20250929-v1:0")) + require.NoError(t, err) + + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}) + require.NoError(t, err) + + assert.Equal(t, "AWS4-HMAC-SHA256", strings.SplitN(tap.authorization, " ", 2)[0], + "a bearer token in the environment must not change how a replayed request is signed") +} diff --git a/llms/bedrock/structured_output_warning_test.go b/llms/bedrock/structured_output_warning_test.go new file mode 100644 index 000000000..e60b5a1a5 --- /dev/null +++ b/llms/bedrock/structured_output_warning_test.go @@ -0,0 +1,52 @@ +package bedrock_test + +import ( + "encoding/json" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" +) + +const warnSchema = `{"type":"object","properties":{"answer":{"type":"string"}},` + + `"required":["answer"],"additionalProperties":false}` + +const ( + legacySchemaAnswer = `{"id":"x","type":"message","role":"assistant","model":"m",` + + `"content":[{"type":"text","text":"{\"answer\":\"ok\"}"}],"stop_reason":"end_turn",` + + `"usage":{"input_tokens":1,"output_tokens":1}}` + converseSchemaAnswer = `{"output":{"message":{"role":"assistant",` + + `"content":[{"text":"{\"answer\":\"ok\"}"}]}},` + + `"stopReason":"end_turn","usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}` +) + +func TestASchemaThatReachesTheBedrockWireIsNotReportedAsLost(t *testing.T) { + t.Parallel() + + for _, door := range []struct { + name string + answer string + opts []bedrock.Option + }{ + {"legacy", legacySchemaAnswer, []bedrock.Option{ + bedrock.WithModel("anthropic.claude-sonnet-4-5-v1:0"), + }}, + {"converse", converseSchemaAnswer, []bedrock.Option{ + bedrock.WithModel("anthropic.claude-sonnet-4-5-v1:0"), bedrock.WithConverseAPI(), + }}, + } { + t.Run(door.name, func(t *testing.T) { + t.Parallel() + + resp := bedrockWarningsFor(t, door.answer, door.opts, + llms.WithStructuredOutput(llms.StructuredOutputConfig{ + Name: "s", Schema: json.RawMessage(warnSchema), + })) + + require.NotContains(t, bedrockWarningsByOption(resp.Warnings), "WithJSONMode", + "the schema reached the wire: %v", resp.Warnings) + }) + } +} diff --git a/llms/bedrock/testdata/TestAmazonReasoningConverseAPI.httprr b/llms/bedrock/testdata/TestAmazonReasoningConverseAPI.httprr index 2d2bd8ecd..20bed00ea 100644 --- a/llms/bedrock/testdata/TestAmazonReasoningConverseAPI.httprr +++ b/llms/bedrock/testdata/TestAmazonReasoningConverseAPI.httprr @@ -1,33 +1,33 @@ httprr trace v1 -545 1430 +581 1155 POST https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-opus-4-6-v1/converse HTTP/1.1 Host: bedrock-runtime.us-east-1.amazonaws.com User-Agent: langchaingo-httprr -Content-Length: 256 +Content-Length: 292 Authorization: AWS4-HMAC-SHA256 test-api-key Content-Type: application/json -{"additionalModelRequestFields":{"thinking":{"type":"enabled","budget_tokens":1024}},"inferenceConfig":{"maxTokens":4096,"temperature":1},"messages":[{"content":[{"text":"Think step by step: What is 17 * 23? Show your reasoning process."}],"role":"user"}]}HTTP/2.0 200 OK -Content-Length: 1264 +{"additionalModelRequestFields":{"thinking":{"type":"enabled","budget_tokens":1024},"output_config":{"effort":"medium"}},"inferenceConfig":{"maxTokens":4096,"temperature":1},"messages":[{"content":[{"text":"Think step by step: What is 17 * 23? Show your reasoning process."}],"role":"user"}]}HTTP/2.0 200 OK +Content-Length: 990 Content-Type: application/json -Date: Thu, 16 Jul 2026 18:29:07 GMT -X-Amzn-Requestid: 3b4f0217-70f7-4d74-a031-9f4dbf9cb5b3 +Date: Sat, 05 Sep 2026 13:42:41 GMT +X-Amzn-Requestid: d788dd54-c92b-4fa7-be8b-eec05cbc1e48 -{"metrics":{"latencyMs":3664},"output":{"message":{"content":[{"reasoningContent":{"reasoningText":{"signature":"EscCCmUIDxABGAIqQDJS2G4yZ/CZG6CwqRftvWjwY6HEs/XNY2FYgz/i/yYxqqHXKQTDcDwNEollV9MONMnxNpe/qJUoKX8uoG9gDqIyD2NsYXVkZS1vcHVzLTQtNjgAQgh0aGlua2luZxIMGmeH2R012vreRL4eGgztELcr79aosU/uoT4iMO876ZFvokZRRic0dftYpYZm+ArUXNwgkx91b9THthVbHR8UAnKzb5fG24N92fDX1iqPAecgS2GBTweEPinFbVQJ3hT3L6GWAezns6KzSducA8K4OUrKIw8IB36yB3Hxbm8djPpm6Ah72zoTtY7YStDM/jQfeE017oFS1qKc+jN46bTIzUpueYjvlOHmo4a4Xm3eB2yvBYlMDoLDRYQm2WsDIV1PoeCYhztYn3wRsfFZvOW2STdgyHMSGvAUqGAT5ljnGAE=","text":"I need to calculate 17 * 23.\n\nLet me break this down step by step:\n\n17 * 23 = 17 * (20 + 3)\n= 17 * 20 + 17 * 3\n= 340 + 51\n= 391"}}},{"text":"# Calculating 17 × 23\n\n## Breaking it down step by step:\n\nI'll use the distributive property to split this into easier parts:\n\n**17 × 23 = 17 × (20 + 3)**\n\n**Step 1:** 17 × 20 = 340\n\n**Step 2:** 17 × 3 = 51\n\n**Step 3:** Add the results: 340 + 51 = **391**\n\n## Answer: 17 × 23 = **391**"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"cacheReadInputTokenCount":0,"cacheReadInputTokens":0,"cacheWriteInputTokenCount":0,"cacheWriteInputTokens":0,"inputTokens":55,"outputTokens":200,"serverToolUsage":{},"totalTokens":255}}544 1430 +{"metrics":{"latencyMs":2389},"output":{"message":{"content":[{"reasoningContent":{"reasoningText":{"signature":"EoACCnMIERABGAIqQME+TEpO2D3HoKnFhKXb96DYRR1GDrnN6CWc+EHlOz3fQyYrrg4msVsS9b8kGMJmZUqcKuCAUDuZI8Jcnz+pmM0yD2NsYXVkZS1vcHVzLTQtNjgAQgh0aGlua2luZ1oMOTUwNzI0MTA2OTcyEgw8fuFw+SPzPtKlxIYaDDLWzTPl+wy1KKuH4yIwqWCt6QXUsoMj2gj7AFlx5w4/F+StKznuq4sX5S6Y12ejmFI3xy9I+KFad56/EsI0KjtuDgkXm3j/Ng8Jby+afgA9gkNfjvVcArVIbYVA7Mxas2CZ98chewdaqpC6hfG9j4sL4yS3IEwfmbvlBhgB","text":"17 * 23 = 17 * 20 + 17 * 3 = 340 + 51 = 391"}}},{"text":"## Calculating 17 × 23\n\n**Breaking it down using the distributive property:**\n\n17 × 23 = 17 × (20 + 3)\n\n**Step 1:** 17 × 20 = 340\n\n**Step 2:** 17 × 3 = 51\n\n**Step 3:** Add the results: 340 + 51 = **391**"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"cacheReadInputTokenCount":0,"cacheReadInputTokens":0,"cacheWriteInputTokenCount":0,"cacheWriteInputTokens":0,"inputTokens":55,"outputTokens":136,"serverToolUsage":{},"totalTokens":191}}580 1475 POST https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-sonnet-4-6/converse HTTP/1.1 Host: bedrock-runtime.us-east-1.amazonaws.com User-Agent: langchaingo-httprr -Content-Length: 256 +Content-Length: 292 Authorization: AWS4-HMAC-SHA256 test-api-key Content-Type: application/json -{"additionalModelRequestFields":{"thinking":{"type":"enabled","budget_tokens":1024}},"inferenceConfig":{"maxTokens":4096,"temperature":1},"messages":[{"content":[{"text":"Think step by step: What is 17 * 23? Show your reasoning process."}],"role":"user"}]}HTTP/2.0 200 OK -Content-Length: 1264 +{"additionalModelRequestFields":{"thinking":{"type":"enabled","budget_tokens":1024},"output_config":{"effort":"medium"}},"inferenceConfig":{"maxTokens":4096,"temperature":1},"messages":[{"content":[{"text":"Think step by step: What is 17 * 23? Show your reasoning process."}],"role":"user"}]}HTTP/2.0 200 OK +Content-Length: 1309 Content-Type: application/json -Date: Thu, 16 Jul 2026 18:29:12 GMT -X-Amzn-Requestid: 998bc66a-9830-4177-b5ff-a542d8d6b23e +Date: Sat, 05 Sep 2026 13:42:45 GMT +X-Amzn-Requestid: e60ec1c4-e229-4b2d-838e-532c20d2d3e8 -{"metrics":{"latencyMs":3948},"output":{"message":{"content":[{"reasoningContent":{"reasoningText":{"signature":"EpMCCmcIDxABGAIqQN5oZ2H+jxOLvhrtwjkFbJgMNpfToY5q5/O8E8q/wsUdO72bG1QCSyQte6bbFH4rumBUzC4qXe6grPqa/FiBpHQyEWNsYXVkZS1zb25uZXQtNC02OABCCHRoaW5raW5nEgwD+t6Ba82zEb22ooYaDIPFfJZQK0EEceR33yIwSlrC4aoGJXyja6zoBgzb1uddzTWa2XSQbQoNp+SsYk/k5BxFnpXVtTQcPuRKDzZRKlo2IaklGXrFl4U0WJEw4xwTiqLa/npwYNuR9GQ+GJR/2rNlZIANTDGmBtt/dMofAlIISuJ1tpoDgXQPvrWgLUH5v5v94b3IcL67uVD67ShMKa/XhGZ7Nqk054UYAQ==","text":"17 * 23\n\nI'll break this down:\n17 * 23 = 17 * 20 + 17 * 3\n= 340 + 51\n= 391"}}},{"text":"## Calculating 17 × 23\n\n### Breaking It Down\n\nI'll decompose 23 into easier parts: **20 + 3**\n\n**Step 1:** 17 × 20\n- 17 × 2 = 34\n- 34 × 10 = **340**\n\n**Step 2:** 17 × 3\n- 17 × 3 = **51**\n\n**Step 3:** Add the results\n- 340 + 51 = **391**\n\n### Verification (using a different split)\nBreaking 17 into **10 + 7**:\n- 10 × 23 = 230\n- 7 × 23 = 161\n- 230 + 161 = **391** ✓\n\n### Answer: 17 × 23 = **391**"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"cacheReadInputTokenCount":0,"cacheReadInputTokens":0,"cacheWriteInputTokenCount":0,"cacheWriteInputTokens":0,"inputTokens":55,"outputTokens":253,"serverToolUsage":{},"totalTokens":308}}558 2002 +{"metrics":{"latencyMs":3189},"output":{"message":{"content":[{"reasoningContent":{"reasoningText":{"signature":"EoMCCnUIERABGAIqQME+TEpO2D3HoKnFhKXb96DYRR1GDrnN6CWc+EHlOz3fQyYrrg4msVsS9b8kGMJmZUqcKuCAUDuZI8Jcnz+pmM0yEWNsYXVkZS1zb25uZXQtNC02OABCCHRoaW5raW5nWgw5NTA3MjQxMDY5NzISDMo/LAgmkOS/36cW5RoMQ5H533FIPp2SyBpRIjBF5bnVdgfZ+T4EOCg/OCMOA+zdJwz1K8Fu2sIyBNHz73hdEz1z+9pqz5iNg1WDdGgqPL9AqNhUkjazlCeLL93O4iMufeG7syuhgqFgcIkmFKPBH62TywtWyQqBnOEzuHxizfMKn4E55nNiTAa1xhgB","text":"17 * 23\n\n= 17 * 20 + 17 * 3\n= 340 + 51\n= 391"}}},{"text":"## Calculating 17 × 23\n\n### Breaking It Down\n\nI'll use the **distributive property** to make this easier:\n\n**Split 23 into (20 + 3):**\n\n$$17 \\times 23 = 17 \\times (20 + 3)$$\n\n### Step-by-Step\n\n| Step | Calculation | Result |\n|------|------------|--------|\n| 1 | 17 × 20 | 340 |\n| 2 | 17 × 3 | 51 |\n| 3 | 340 + 51 | **391** |\n\n### Answer\n\n$$17 \\times 23 = \\boxed{391}$$\n\n### Quick Verification\nUsing another split — **(10 + 7) × 23:**\n- 10 × 23 = 230\n- 7 × 23 = 161\n- 230 + 161 = **391** ✅"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"cacheReadInputTokenCount":0,"cacheReadInputTokens":0,"cacheWriteInputTokenCount":0,"cacheWriteInputTokens":0,"inputTokens":55,"outputTokens":271,"serverToolUsage":{},"totalTokens":326}}558 1998 POST https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-opus-4-5-20251101-v1%3A0/converse HTTP/1.1 Host: bedrock-runtime.us-east-1.amazonaws.com User-Agent: langchaingo-httprr @@ -36,12 +36,12 @@ Authorization: AWS4-HMAC-SHA256 test-api-key Content-Type: application/json {"additionalModelRequestFields":{"thinking":{"type":"enabled","budget_tokens":1024}},"inferenceConfig":{"maxTokens":4096,"temperature":1},"messages":[{"content":[{"text":"Think step by step: What is 17 * 23? Show your reasoning process."}],"role":"user"}]}HTTP/2.0 200 OK -Content-Length: 1836 +Content-Length: 1832 Content-Type: application/json -Date: Thu, 16 Jul 2026 18:29:18 GMT -X-Amzn-Requestid: dbfeeb5d-9454-4473-8eaf-80f59f4314df +Date: Sat, 05 Sep 2026 13:42:51 GMT +X-Amzn-Requestid: b1ba1a31-3596-4700-b6dd-2248f56652a4 -{"metrics":{"latencyMs":4669},"output":{"message":{"content":[{"reasoningContent":{"reasoningText":{"signature":"ErsECm4IDxABGAIqQH69Dv17/3nuqkw6XmAYcjMqZunNkAu8T2ORfcdNfldbgylOkuBEpjt57v3YCkKIOLj+d2KzXhjNeoTDGKb9CrwyGGNsYXVkZS1vcHVzLTQtNS0yMDI1MTEwMTgAQgh0aGlua2luZxIMxPSYASp5EaV9V7fiGgxh5zipqEHxbnhJDv0iMCGWHkVe8s7H6E1GQFz1/9LDjq4J5SeQtF+U3sZc43oK/taRDCqrtF5wDsVRR3iyair6AhRN8Q1xJoIdbPwgOL7eSMNMUWJkCI2OivGlG2EGlyjsjju24WdAnu2J/qY1zThV8ciHhzSETEluuyJBNGb3V4il5Lm9XQDnEOBkj2E8Z+/OYNPlca5eRsMalezn5tEPxwtpAazBo14SouS10V/5CIHyU9Dr9ivG3/yxXQgYJIl3YdZoZSuI16/g9DYOhSVSwoe1bDZBBgsWJd0ayhG/DYY0pVfBEI/h1hDmp75oIrbeB/IQ9y6aKGEpwbrMC2+1OCcRTFmjpLMUfA87TP77i5pHUnA4hpnMeAEq3VUu8m5ahkqoivsILTlUP5QFAJ+N0UHAMg+ZLwRHqRKG4bBGpHEoIZG8HcqcwHkY48YDcnZIrszA7Wzp+CAj6AG2qKi05y86OdjVrMkqqBcfmAjcsgUjVFO0bxOxkrD4MuTNbkgiyE3M67x6RE3ZubEaGcI1v3RoWMzjQBcV7bURjjSzqjaaD4tjQLbp0kO446k6zW+cBFf5ub4s59OU9BgB","text":"I need to calculate 17 * 23. Let me break this down step by step.\n\nI can use the standard multiplication method or break it into easier parts.\n\nMethod 1: Breaking down the numbers\n17 * 23 = 17 * (20 + 3)\n= 17 * 20 + 17 * 3\n= 340 + 51\n= 391\n\nLet me verify with another approach:\n17 * 23 = (20 - 3) * 23\n= 20 * 23 - 3 * 23\n= 460 - 69\n= 391\n\nYes, the answer is 391."}}},{"text":"# Calculating 17 × 23\n\n## Step-by-Step Solution\n\nI'll break this into smaller, easier calculations:\n\n**17 × 23 = 17 × (20 + 3)**\n\n**Step 1:** Calculate 17 × 20\n- 17 × 20 = 340\n\n**Step 2:** Calculate 17 × 3\n- 17 × 3 = 51\n\n**Step 3:** Add the results\n- 340 + 51 = **391**\n\n## Answer: 391"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"cacheReadInputTokenCount":0,"cacheReadInputTokens":0,"cacheWriteInputTokenCount":0,"cacheWriteInputTokens":0,"inputTokens":55,"outputTokens":291,"serverToolUsage":{},"totalTokens":346}}559 2189 +{"metrics":{"latencyMs":4449},"output":{"message":{"content":[{"reasoningContent":{"reasoningText":{"signature":"ErkECnwIERABGAIqQAV346vmIWs0ncCnAQMI+xWUHGyA5ttwdkjgaCzpJ5WVHsQKACcPCzxwvskFBjbMWMsLxrfVcg6oFp/JQIY1SzgyGGNsYXVkZS1vcHVzLTQtNS0yMDI1MTEwMTgAQgh0aGlua2luZ1oMOTUwNzI0MTA2OTcyEgx7n/NU1NGwrqPsO5saDJz3/U8EAM2gd+SeSCIwOiNbJDtNISjDbjulJwDCGWqBhUiJskNfLm50CoGmdCP5JDRT2xe8cfhg7nXMvTbCKuoCY/+Z2y8jtj7NJmqZlcWGv1ki6amNj0aKYtd8VnRgdM68UiU8NbhiVa7e5PMMSzSnDgkx4a6e1CuP0RdZQzzr4/nwG7nHpFTaaU6fvu8JA6+udgTviOJCAtOzBSi7TIkfp+FsQtIq72wPmc3e+VAuJrAeyBq1Q+Q9KEfiJL/gnLYCdr5RajLjEXyGNrsT3itcTMRw2QakycUTjs6YkAfjsYQILVzH0A5O3KzDuXhwARc/AOJOw6ZxJfnLGGm2lPfnKMVsimziNdkIH9t5sjodGMImygFo8tXC2TbQmnhFI7mEh+armDtp/3YOQn/6tRgUTp8S298gaevTWWVltv9Iai2z/4q/7/LjSQEvB3glqsgfCSzs415SsQmNPS9Ph7oYQYpgyGJhmxph9InpvoujMoY1tNAcQiKAkgvezXSxc2v6KkV+3Iy20PGU0Q3JiJQWCSAnxKIGXxfaQF+NqXrBHv3juI6gYjFf32EYAQ==","text":"I need to calculate 17 * 23 step by step.\n\nI can break this down in a few ways. Let me use the standard multiplication method.\n\n17 * 23\n\nI can think of this as:\n17 * 23 = 17 * (20 + 3)\n= 17 * 20 + 17 * 3\n= 340 + 51\n= 391\n\nLet me verify by doing it another way:\n17 * 23 = (10 + 7) * 23\n= 10 * 23 + 7 * 23\n= 230 + 161\n= 391\n\nYes, the answer is 391."}}},{"text":"# Calculating 17 × 23\n\n## Breaking it down\n\nI'll split this into easier parts using the distributive property:\n\n**17 × 23 = 17 × (20 + 3)**\n\n## Step-by-step:\n\n1. **17 × 20** = 17 × 2 × 10 = 34 × 10 = **340**\n\n2. **17 × 3** = **51**\n\n3. **Add the results:** 340 + 51 = **391**\n\n## Answer: **391**"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"cacheReadInputTokenCount":0,"cacheReadInputTokens":0,"cacheWriteInputTokenCount":0,"cacheWriteInputTokens":0,"inputTokens":55,"outputTokens":301,"serverToolUsage":{},"totalTokens":356}}559 1933 POST https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-haiku-4-5-20251001-v1%3A0/converse HTTP/1.1 Host: bedrock-runtime.us-east-1.amazonaws.com User-Agent: langchaingo-httprr @@ -50,12 +50,12 @@ Authorization: AWS4-HMAC-SHA256 test-api-key Content-Type: application/json {"additionalModelRequestFields":{"thinking":{"type":"enabled","budget_tokens":1024}},"inferenceConfig":{"maxTokens":4096,"temperature":1},"messages":[{"content":[{"text":"Think step by step: What is 17 * 23? Show your reasoning process."}],"role":"user"}]}HTTP/2.0 200 OK -Content-Length: 2023 +Content-Length: 1767 Content-Type: application/json -Date: Thu, 16 Jul 2026 18:29:22 GMT -X-Amzn-Requestid: 0d6937b1-271a-43ac-944f-0f1b93e5c6ea +Date: Sat, 05 Sep 2026 13:42:54 GMT +X-Amzn-Requestid: b692b49a-5ec3-4e08-a7c3-8ef4f796df83 -{"metrics":{"latencyMs":2553},"output":{"message":{"content":[{"reasoningContent":{"reasoningText":{"signature":"EuYECkgIDxABGAIqQAGUae0GPrUk5ej2JtYhN9+H81Vh2YWI6hns7Lw/FBj6PizKuYuI9C2295Ux2lrchA5MbxXt6Krz0U/GlBW5SDYSDBC0kt2kTJJkeZPM+hoMYqZk+q67dWrSBXaXIjAmXZ658ZEAN1/enNA0U4EnH+C4VwynK4+Dk+qv2R6NdZBFNsSkKPowwGC4FnMRq8YqywO5f/Us+59SH9bVLTcgI/FWhVYTzZN12nTe1FPNods0TufRdBWt8HoI3Z9VvCv9XZz7RLLHKSyRnx7Ut8Vk/LfRxn1pjlZnX3JwYcN3GGqkZmLEGLP9EiIb/rlzRFMl9mCgqbTQL03dlBzGx/W7iOrFEDPlH2oBXYBt0V3jUlCs+QkjPj6k508SsTRg3z+pUz7eCckByUUDoIcm5+h/nDy2QhcZ0D+/QUGR+AaZk/KabvKw5R1uTVlPqfDxeIQ7gosXX0vfislo8EdN7UjotvzxfSKxbTZrcEpYtc60cNYwMqZDzPGUlYyP1tiv3ZUK6UO1Z9oI5bCoLvKiMvuQLicYzReHFjpPXgURcY8+knVJ9+af8Z+pOEr7rtC2pVEVA09EkZxHlwkA6RuoY6iw7H8JgvZ4WuRUFD09CxMuoOcuHqmZkWh5ZXldrvryRMBX5zMNBW/pHNPucjwESHmZSyaKBPjRWY8hjcr4KEK6n2KWVKbmatEIlOSyTNHS5oSoTXjIV0CsJYPTckvXIkwVUkFBgWup0dtEjvjGzOBH9tmYSluQ0DoHQT6Y05S4N36w6mjwB/FPIgRbguZoay3R+r0itDzCHbzveuC7PCoYAQ==","text":"I need to calculate 17 * 23. Let me work through this step by step.\n\nMethod 1: Using the distributive property\n17 * 23 = 17 * (20 + 3)\n= 17 * 20 + 17 * 3\n= 340 + 51\n= 391\n\nLet me verify this with another method.\n\nMethod 2: Breaking it down differently\n17 * 23 = (10 + 7) * 23\n= 10 * 23 + 7 * 23\n= 230 + 161\n= 391\n\nMethod 3: Traditional multiplication\n 23\n× 17\n----\n 161 (23 * 7)\n 230 (23 * 10)\n----\n 391\n\nAll three methods give me 391."}}},{"text":"# Calculating 17 × 23\n\nI'll break this into simpler pieces:\n\n## Method 1: Decompose 23\n17 × 23 = 17 × (20 + 3)\n\n- 17 × 20 = 340\n- 17 × 3 = 51\n- **340 + 51 = 391**\n\n## Method 2: Verify with standard multiplication\n```\n 23\n ×17\n ----\n 161 (23 × 7)\n 230 (23 × 10)\n ----\n 391\n```\n\n**Answer: 17 × 23 = 391**"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"cacheReadInputTokenCount":0,"cacheReadInputTokens":0,"cacheWriteInputTokenCount":0,"cacheWriteInputTokens":0,"inputTokens":55,"outputTokens":361,"serverToolUsage":{},"totalTokens":416}}560 2033 +{"metrics":{"latencyMs":2221},"output":{"message":{"content":[{"reasoningContent":{"reasoningText":{"signature":"EoEECoQBCBEQARgCKkBG+3oEtUgF3wuuPMNxtwezB9wE19GCOSQeR3BzbUW0kiX35ilM1gfnGmOhd9XuXb+i3jzWIBS01BS9pt8BtV0SMhljbGF1ZGUtaGFpa3UtNC01LTIwMjUxMDAxOABCCHRoaW5raW5nWgw5NTA3MjQxMDY5NzKoAd248NQGEgwDvf1QEVyTHVlQRY0aDJzS2vkfbm7qwsrO5yIw1wI0O4vtlJ//UYEh0Regn05XBcz5kz2X/TTJoYLPSlGuqXc3BWCGcn6ZxsDRJPKPKqkCgnRIbIjEBnBJrkYie9qBgn8PUX+GSuElrYJXAY0nk/dMbovGyJHp6y628nWIWkeLXfuAYuTvGQOItDrPFXZjSw1Sg4Ccr/5sSiU43sqHPcJ9MyFgya4vr5kF/Kkizd6ottiBydpag8yQRtgf8nTVNQIzCVC6rTWNkRFB45Ff85VYUSn0+BSXEMCKJr1K8G0IueYs0mE4MZblXVRKN0+IVZScj1LWsO0kz7cu9BBvq6ACTO2qMg/7m4BtEDzAwyZlYD8l7iaqYgkkM+Huo/o9Lk22B6znF5yYLkHemzto/Acv6j72E6JtINLZKtk7duiQ8ksTfgMYtXHU9gzfthibn4XFxXjj7IzyslwQigzpLd9HePsGWYJywtXPsunHYWkm8AWwhnRy8h0pGAE=","text":"I need to calculate 17 * 23. Let me do this step by step.\n\nMethod 1: Breaking it down\n17 * 23 = 17 * (20 + 3)\n= 17 * 20 + 17 * 3\n= 340 + 51\n= 391\n\nLet me verify this another way:\n17 * 23 = (20 - 3) * 23\n= 20 * 23 - 3 * 23\n= 460 - 69\n= 391\n\nBoth methods give 391, so that's correct."}}},{"text":"# Calculating 17 × 23\n\n## Method: Break it into simpler parts\n\nI'll decompose 23 into 20 + 3:\n\n**17 × 23 = 17 × (20 + 3)**\n\n**Step 1:** Multiply 17 by 20\n- 17 × 20 = 340\n\n**Step 2:** Multiply 17 by 3\n- 17 × 3 = 51\n\n**Step 3:** Add the results\n- 340 + 51 = **391**\n\n## Verification:\nI can check this using a different decomposition (20 - 3) × 23:\n- 20 × 23 = 460\n- 3 × 23 = 69\n- 460 - 69 = 391 ✓\n\n**Answer: 17 × 23 = 391**"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"cacheReadInputTokenCount":0,"cacheReadInputTokens":0,"inputTokens":55,"outputTokens":361,"serverToolUsage":{},"totalTokens":416}}560 2502 POST https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-sonnet-4-5-20250929-v1%3A0/converse HTTP/1.1 Host: bedrock-runtime.us-east-1.amazonaws.com User-Agent: langchaingo-httprr @@ -64,79 +64,79 @@ Authorization: AWS4-HMAC-SHA256 test-api-key Content-Type: application/json {"additionalModelRequestFields":{"thinking":{"type":"enabled","budget_tokens":1024}},"inferenceConfig":{"maxTokens":4096,"temperature":1},"messages":[{"content":[{"text":"Think step by step: What is 17 * 23? Show your reasoning process."}],"role":"user"}]}HTTP/2.0 200 OK -Content-Length: 1867 +Content-Length: 2336 Content-Type: application/json -Date: Thu, 16 Jul 2026 18:29:28 GMT -X-Amzn-Requestid: 1ebcbac4-3fd2-48c6-bd24-320a41a158f9 +Date: Sat, 05 Sep 2026 13:43:02 GMT +X-Amzn-Requestid: 9875b674-cf06-4155-a7d7-db7774f58cb6 -{"metrics":{"latencyMs":5528},"output":{"message":{"content":[{"reasoningContent":{"reasoningText":{"signature":"Ep8ECnAIDxABGAIqQMj6RbVKkCCiYbKA0WWTmxq2uamkXdupFS4FHcU1D/FFy8jOhPn8q41s/OrOYl79+Zx7QD9Bd3Dd/+VrepAoi/YyGmNsYXVkZS1zb25uZXQtNC01LTIwMjUwOTI5OABCCHRoaW5raW5nEgy9nu5iYk+17NUjsbsaDDChrcnpOjCq3hM7UiIwWgWBHcQm8/Aig1nOUuw71nDH66YGNv/en6Tcv7ldewD+yxifa7lb9te2Ln1kON4/KtwCACgzwAAqms/7++Dinp9ElY6cYJr7p0xs1W9stSR2hiJRmfLNZYmhGk8nkhN2luwN77GTKqyv4a8dldy113kzXt4bubbeBZzkaVrWPRxB7dpoYr5dW//XPu6KjgDr5riyJmaDV1ltaqkfyaZBZMohJHdX8apoftS5WiwJtHKeBOMiK4ItZH4yuqKvoUZncVGoimk4SV5T0mb2UaH5mOeRMHNojmK647Dit7J90e3pJYLYt8Ua+Bh7BSPzlaHWX5XwphQ4YoeF8957O3pbLlsTOLPEriUD8A+KV3jIid2/jnU1SWMWOJxEu+LzxmemMi5T5/sDP6ND/VogrDX0mGsVCCgEurl5Ina0cE3O9LS/zvI4r7eikUhrX45p/2vic8JqKPbk9WwbyO5kc1Wdyd96MNw2t1CFkTsfh19hAmXTWJcyKrSPeugt7Ny/yyJVCZR7zxdQ9sU1toBBliMxGAE=","text":"I need to calculate 17 * 23.\n\nLet me break this down using the distributive property:\n\n17 * 23 = 17 * (20 + 3)\n = (17 * 20) + (17 * 3)\n = 340 + 51\n = 391\n\nLet me verify this another way:\n23 * 17 = 23 * (10 + 7)\n = (23 * 10) + (23 * 7)\n = 230 + 161\n = 391\n\nGood, both methods give the same answer."}}},{"text":"# Calculating 17 × 23\n\nI'll break this down using the distributive property:\n\n## Method: Split 23 into (20 + 3)\n\n**17 × 23 = 17 × (20 + 3)**\n\nNow I can calculate each part:\n\n1. **17 × 20 = 340**\n - (17 × 2 = 34, then add a zero)\n\n2. **17 × 3 = 51**\n - (10 × 3 = 30, and 7 × 3 = 21, so 30 + 21 = 51)\n\n3. **Add them together:**\n - 340 + 51 = **391**\n\n## Answer: 17 × 23 = 391"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"cacheReadInputTokenCount":0,"cacheReadInputTokens":0,"cacheWriteInputTokenCount":0,"cacheWriteInputTokens":0,"inputTokens":55,"outputTokens":340,"serverToolUsage":{},"totalTokens":395}}539 1508 +{"metrics":{"latencyMs":6418},"output":{"message":{"content":[{"reasoningContent":{"reasoningText":{"signature":"EswFCn4IERABGAIqQIOXECXE6Au6c2Nrgtv6m3kZZ51gDvnzsk3VDdMxIrZuja16LGz5S8/ea/ZyZR3cKJ4YZwcW+aHmEbUMPmOLX5wyGmNsYXVkZS1zb25uZXQtNC01LTIwMjUwOTI5OABCCHRoaW5raW5nWgw5NTA3MjQxMDY5NzISDAsxeyrpfZn2vo3dAxoMMGQRId8PYAqbWx8xIjDR3ORMZy7g7GBqc786H27Be6N/Awbch2Bozjn3bfKHYLg40LyMoWmcPSwtK8W+1fwq+wP0R7XheZNVYTeL0U9gHuqNCN6vUgq9NuHwCBJ2DELRznZfIHSfEfQq7xdPgEPenc5G8dNs1LHBlD4g+K3+G2wazN3k6Z6q/gB7T8u2s4qGWupAwrqd9GfXJcPcgrsAVFl0hmhw953VrIXA1/QvBl3AGJtyXUzpZm2AvSLLteiYQVSXY00V4MK1IdecUpZpTrifYT2pM8CEqqlw3HPcb74F+uedni7WTUPKLJV4h+6QPA5Xm2FiN7gZEulfnOeovvBm9YHNIBX6/wuriV5lmu0BGHJTSCfSPrqEeuMLexCCKvjcGCK3YCbgKonpsO4iHOi/XhMxGuOHMcjRvxnzbRZu9g4UWovVkVlUQfPkUwnVJSh76C8oMzgi8Fz/g4LJOaU2XqY40vb3J0LBlhn1+YXGAzLPoj0AnjjwaNcTzXBuxXfHBks9bV0nFo7djhQlZmQrTwyYLtv9tyzzuglq9A7ExEuu4nSThZMa8nQzgKdggR0V/f5TjbjHhPQS99ynqVRJaAHFl75Jbi0/3I6i1ket2BmDMNRNf78vJ9go8gcqfyivWJs0Lkc6zYZ6IRR60czKVnixzc0zG4qHZmcdOYx5qEqpVEEGG9PnFsTvQ9D18DV0lg8qOVnRLYNBhuLz5sYU2eGi7I3nGAOj7p4rVQTvIZEIngRCmJEeifMYAQ==","text":"I need to calculate 17 * 23. Let me break this down step by step.\n\nI can use the distributive property to make this easier:\n17 * 23 = 17 * (20 + 3)\n = (17 * 20) + (17 * 3)\n\nFirst part: 17 * 20\n17 * 20 = 17 * 2 * 10 = 34 * 10 = 340\n\nSecond part: 17 * 3\n17 * 3 = 51\n\nNow add them together:\n340 + 51 = 391\n\nLet me verify this another way:\n23 * 17 = 23 * (10 + 7)\n = (23 * 10) + (23 * 7)\n = 230 + (23 * 7)\n\n23 * 7 = 161\n230 + 161 = 391\n\nGood, I get the same answer both ways."}}},{"text":"# Calculating 17 × 23\n\nI'll break this into easier parts using the distributive property:\n\n## Method: Break 23 into (20 + 3)\n\n**17 × 23 = 17 × (20 + 3)**\n\n### Step 1: Calculate 17 × 20\n- 17 × 20 = 340\n\n### Step 2: Calculate 17 × 3\n- 17 × 3 = 51\n\n### Step 3: Add the results\n- 340 + 51 = **391**\n\n## Verification (alternative method):\nBreaking 17 into (10 + 7):\n- 23 × 10 = 230\n- 23 × 7 = 161\n- 230 + 161 = **391** ✓\n\n**Answer: 17 × 23 = 391**"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"cacheReadInputTokenCount":0,"cacheReadInputTokens":0,"cacheWriteInputTokenCount":0,"cacheWriteInputTokens":0,"inputTokens":55,"outputTokens":454,"serverToolUsage":{},"totalTokens":509}}500 1398 POST https://bedrock-runtime.us-east-1.amazonaws.com/model/openai.gpt-oss-120b-1%3A0/converse HTTP/1.1 Host: bedrock-runtime.us-east-1.amazonaws.com User-Agent: langchaingo-httprr -Content-Length: 256 +Content-Length: 217 Authorization: AWS4-HMAC-SHA256 test-api-key Content-Type: application/json -{"additionalModelRequestFields":{"thinking":{"type":"enabled","budget_tokens":1024}},"inferenceConfig":{"maxTokens":4096,"temperature":1},"messages":[{"content":[{"text":"Think step by step: What is 17 * 23? Show your reasoning process."}],"role":"user"}]}HTTP/2.0 200 OK -Content-Length: 1342 +{"additionalModelRequestFields":{"reasoning_effort":"medium"},"inferenceConfig":{"maxTokens":4096},"messages":[{"content":[{"text":"Think step by step: What is 17 * 23? Show your reasoning process."}],"role":"user"}]}HTTP/2.0 200 OK +Content-Length: 1232 Content-Type: application/json -Date: Thu, 16 Jul 2026 18:29:32 GMT -X-Amzn-Requestid: a9240575-cac3-4dd8-8c42-48d54db9cf46 +Date: Mon, 14 Sep 2026 23:51:21 GMT +X-Amzn-Requestid: bc7de550-dbb0-4d29-a01b-27dfc88ac601 -{"metrics":{"latencyMs":2105},"output":{"message":{"content":[{"reasoningContent":{"reasoningText":{"text":"User asks to think step by step: compute 17 * 23. Show reasoning. Simple multiplication. Provide detailed steps: do 17*20=340, 17*3=51, sum 391. Or use distributive property. Show maybe long multiplication. Provide answer 391."}}},{"text":"**Step‑by‑step multiplication**\n\nWe want to find \n\n\\[\n17 \\times 23.\n\\]\n\nThe easiest way is to use the distributive (area) property of multiplication:\n\n\\[\n23 = 20 + 3.\n\\]\n\nSo\n\n\\[\n17 \\times 23 = 17 \\times (20 + 3) = (17 \\times 20) + (17 \\times 3).\n\\]\n\nNow compute each part:\n\n1. **\\(17 \\times 20\\)** \n Multiply 17 by 2, then add a zero (because of the factor 10). \n \\(17 \\times 2 = 34\\), so \\(17 \\times 20 = 340\\).\n\n2. **\\(17 \\times 3\\)** \n \\(17 \\times 3 = 51\\).\n\nAdd the two results:\n\n\\[\n340 + 51 = 391.\n\\]\n\n---\n\n**Alternative long‑multiplication view**\n\n```\n 17\n × 23\n -----\n 51 ← 17 × 3 (units place)\n+ 340 ← 17 × 20 (tens place, shifted one place left)\n -----\n 391\n```\n\nBoth methods give the same product.\n\n\\[\n\\boxed{391}\n\\]"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"inputTokens":85,"outputTokens":346,"serverToolUsage":{},"totalTokens":431}}538 2844 +{"metrics":{"latencyMs":1979},"output":{"message":{"content":[{"reasoningContent":{"reasoningText":{"text":"User asks: \"Think step by step: What is 17 * 23? Show your reasoning process.\" So we need to compute multiplication, step-by-step explanation. 17*23 = (20+3)*17? Actually 23*17 = 23*10 + 23*7 = 230 + 161 = 391. Or 17*20 + 17*3 = 340 + 51 = 391. Provide reasoning. They want step-by-step. So answer: 391. Provide explanation."}}},{"text":"**Step‑by‑step multiplication**\n\nWe want \\(17 \\times 23\\).\n\n1. **Break one number into tens and ones** \n Write 23 as \\(20 + 3\\).\n\n2. **Distribute the multiplication over the sum** \n \\[\n 17 \\times 23 = 17 \\times (20 + 3) = 17 \\times 20 + 17 \\times 3\n \\]\n\n3. **Multiply each part** \n * \\(17 \\times 20 = 340\\) (because \\(17 \\times 2 = 34\\), then add a zero) \n * \\(17 \\times 3 = 51\\) (because \\(10 \\times 3 = 30\\) and \\(7 \\times 3 = 21\\); \\(30 + 21 = 51\\))\n\n4. **Add the two results together** \n \\[\n 340 + 51 = 391\n \\]\n\nTherefore,\n\n\\[\n\\boxed{17 \\times 23 = 391}\n\\]"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"inputTokens":85,"outputTokens":346,"serverToolUsage":{},"totalTokens":431}}499 3594 POST https://bedrock-runtime.us-east-1.amazonaws.com/model/openai.gpt-oss-20b-1%3A0/converse HTTP/1.1 Host: bedrock-runtime.us-east-1.amazonaws.com User-Agent: langchaingo-httprr -Content-Length: 256 +Content-Length: 217 Authorization: AWS4-HMAC-SHA256 test-api-key Content-Type: application/json -{"additionalModelRequestFields":{"thinking":{"type":"enabled","budget_tokens":1024}},"inferenceConfig":{"maxTokens":4096,"temperature":1},"messages":[{"content":[{"text":"Think step by step: What is 17 * 23? Show your reasoning process."}],"role":"user"}]}HTTP/2.0 200 OK -Content-Length: 2678 +{"additionalModelRequestFields":{"reasoning_effort":"medium"},"inferenceConfig":{"maxTokens":4096},"messages":[{"content":[{"text":"Think step by step: What is 17 * 23? Show your reasoning process."}],"role":"user"}]}HTTP/2.0 200 OK +Content-Length: 3428 Content-Type: application/json -Date: Thu, 16 Jul 2026 18:29:37 GMT -X-Amzn-Requestid: 29405f92-229a-48d6-99ad-c1eabf1483ad +Date: Mon, 14 Sep 2026 23:51:27 GMT +X-Amzn-Requestid: c5dfd7af-d3d3-4a0a-8c13-758129da41c3 -{"metrics":{"latencyMs":3747},"output":{"message":{"content":[{"reasoningContent":{"reasoningText":{"text":"We need to show step-by-step reasoning for multiplying 17 by 23. Provide the multiplication method, maybe break into parts: 17*20 + 17*3 = 340 + 51 = 391. Alternatively do long multiplication. Provide explanation. Simple."}}},{"text":"Sure! Let’s walk through multiplying \\(17\\) by \\(23\\) step by step. There’s a few ways you can do it, but I’ll show two common methods: (1) breaking the multiplication into smaller parts using the distributive property, and (2) the standard long‑multiplication format. Either way, you’ll end up with the same answer.\n\n---\n\n## 1. Distributive Property (Breaking it into Pieces)\n\nThe distributive property says you can split one number into pieces, multiply each piece by the other number, and then add the results. \n\nHere, write \\(23\\) as \\(20 + 3\\):\n\n\\[\n17 \\times 23 \\;=\\; 17 \\times (20 + 3)\n\\]\n\nNow distribute the multiplication:\n\n\\[\n17 \\times (20 + 3) = (17 \\times 20) + (17 \\times 3)\n\\]\n\nCompute each part:\n\n1. **\\(17 \\times 20\\)** \n \\(20\\) is \\(2 \\times 10\\). \n \\(17 \\times 20 = 17 \\times 2 \\times 10 = 34 \\times 10 = 340\\).\n\n2. **\\(17 \\times 3\\)** \n \\(17 \\times 3 = 51\\).\n\nNow add the two partial products:\n\n\\[\n340 + 51 = 391\n\\]\n\nSo,\n\n\\[\n\\boxed{17 \\times 23 = 391}\n\\]\n\n---\n\n## 2. Standard Long Multiplication\n\nLet’s do the classic “carry‑over” multiplication.\n\n```\n 17\n × 23\n ------\n 51 ← 17 × 3 (the ones place)\n 340 ← 17 × 20 (the tens place, shifted one position left)\n ------\n 391\n```\n\nStep‑by‑step:\n\n1. **Multiply the ones digit of the bottom number (3) by the entire top number (17).** \n \\(3 × 17 = 51\\). Write this under the line.\n\n2. **Multiply the tens digit of the bottom number (2) by the entire top number (17).** \n Since that digit is actually “20” (2 in the tens place), you multiply \\(17 × 2 = 34\\) and then shift it left one place (multiply by 10), getting \\(340\\). Write this above the 51, offset to the left by one column.\n\n3. **Add the two partial results:**\n\n \\(340 + 51 = 391\\).\n\n---\n\n### Quick Check\n\nYou can always double‑check by using a different grouping: \n\\(17 \\times 23 = 23 \\times 17\\). \nDoing the same steps with the numbers reversed gives the same result, confirming the calculation.\n\n---\n\nSo either method shows the same clean answer: **391**."}],"role":"assistant"}},"stopReason":"end_turn","usage":{"inputTokens":85,"outputTokens":678,"serverToolUsage":{},"totalTokens":763}}539 2785 +{"metrics":{"latencyMs":5181},"output":{"message":{"content":[{"reasoningContent":{"reasoningText":{"text":"We need to compute 17 * 23. Show reasoning process: likely mention multiplication, possible breakdown, maybe prime factorization, etc.\n\nWe should explain step by step, perhaps using long multiplication approach or using distributive property: 17*23 = 17*(20+3) = 17*20 + 17*3 = 340 + 51 = 391. Provide reasoning. Then maybe alternative methods: cross multiplication, or using calculator. Provide step by step explanation.\n\nGiven the instruction: \"Think step by step: What is 17 * 23? Show your reasoning process.\" We need to show reasoning. Possibly use different methods.\n\nThe answer: 391.\n\nWe can also verify by other method: 23*10=230; 23*7=161; sum=391.\n\nWe could also compute using long multiplication.\n\nThus the output will detail the calculation.\n\nGiven the question, user expects step-by-step reasoning. We can answer with reasoning.\n\nThus we produce the solution."}}},{"text":"Sure! Let’s work through the multiplication of 17 by 23 step by step, using a couple of different approaches so you can see the reasoning from multiple angles.\n\n---\n\n## 1️⃣ Shift‑and‑Add (Distributed Property)\n\nThe distributive law of multiplication over addition says:\n\\[\na \\times (b + c) = a \\times b + a \\times c\n\\]\n\n### Step 1: Break 23 into 20 + 3\n\\[\n17 \\times 23 = 17 \\times (20 + 3)\n\\]\n\n### Step 2: Apply the distributive law\n\\[\n= 17 \\times 20 + 17 \\times 3\n\\]\n\n### Step 3: Compute each product\n- \\(17 \\times 20 = 17 \\times 2 \\times 10 = 34 \\times 10 = 340\\)\n- \\(17 \\times 3 = 51\\) (just standard multiplication or “7 + 14 + 21”! )\n\n### Step 4: Add the two results\n\\[\n340 + 51 = 391\n\\]\n\n**Answer:** \\(17 \\times 23 = 391\\).\n\n---\n\n## 2️⃣ Traditional Long Multiplication\n\nWrite the numbers vertically and multiply digit by digit.\n\n```\n 17\n × 23\n ------\n 51 ← 17 × 3 (units place)\n 340 ← 17 × 20 (tens place, shift one position left)\n ------\n 391\n```\n\n- Multiply 7 (units of 17) by 3 → 21, write 1, carry 2.\n- Multiply 1 (tens of 17) by 3 → 3, add carry 2 → 5 → write 51.\n- Multiply 7 by 2 → 14, write 4, carry 1.\n- Multiply 1 by 2 → 2, add carry 1 → 3 → write 340.\n- Add 51 + 340 → 391.\n\n---\n\n## 3️⃣ Quick Check Using Base‑10 Slots\n\nTreat 17 and 23 as “10‑plus” numbers:\n\n- 17 = 10 + 7 \n- 23 = 20 + 3\n\nThen multiply each pair:\n\n| Multiply | Result |\n|-----------|--------|\n| \\(10 \\times 20\\) | 200 |\n| \\(10 \\times 3\\) | 30 |\n| \\(7 \\times 20\\) | 140 |\n| \\(7 \\times 3\\) | 21 |\n| **Sum** | 200 + 30 + 140 + 21 = **391** |\n\n---\n\n## 4️⃣ Cross‑Multiplication Confirmation (Optional)\n\nUse the identity \\((a+b)(c+d) = ac+ad+bc+bd\\):\n\n- \\(a = 10\\), \\(b = 7\\); \\(c = 20\\), \\(d = 3\\).\n\n\\[\n(10+7)(20+3) = 10\\!\\times\\!20 + 10\\!\\times\\!3 + 7\\!\\times\\!20 + 7\\!\\times\\!3\n= 200 + 30 + 140 + 21 = 391\n\\]\n\nSame result!\n\n---\n\n### Final Result\n\\[\n\\boxed{391}\n\\]\n\nThe number 391 is the product of 17 and 23. If you want to double‑check, just plug it back into the original statement: \\(391 ÷ 17 ≈ 23\\)."}],"role":"assistant"}},"stopReason":"end_turn","usage":{"inputTokens":85,"outputTokens":987,"serverToolUsage":{},"totalTokens":1072}}439 1544 POST https://bedrock-runtime.us-east-1.amazonaws.com/model/moonshot.kimi-k2-thinking/converse HTTP/1.1 Host: bedrock-runtime.us-east-1.amazonaws.com User-Agent: langchaingo-httprr -Content-Length: 256 +Content-Length: 156 Authorization: AWS4-HMAC-SHA256 test-api-key Content-Type: application/json -{"additionalModelRequestFields":{"thinking":{"type":"enabled","budget_tokens":1024}},"inferenceConfig":{"maxTokens":4096,"temperature":1},"messages":[{"content":[{"text":"Think step by step: What is 17 * 23? Show your reasoning process."}],"role":"user"}]}HTTP/2.0 200 OK -Content-Length: 2619 +{"inferenceConfig":{"maxTokens":4096},"messages":[{"content":[{"text":"Think step by step: What is 17 * 23? Show your reasoning process."}],"role":"user"}]}HTTP/2.0 200 OK +Content-Length: 1378 Content-Type: application/json -Date: Thu, 16 Jul 2026 18:29:45 GMT -X-Amzn-Requestid: 96460c17-c440-4672-9731-adf3e56a39ff +Date: Sat, 05 Sep 2026 13:43:15 GMT +X-Amzn-Requestid: 4d751a0c-da36-4f69-9368-8ef51d1b345c -{"metrics":{"latencyMs":7512},"output":{"message":{"content":[{"reasoningContent":{"reasoningText":{"text":" The user gives a simple multiplication problem: 17 * 23. Need to step by step. Must think step by step, showing reasoning. So produce a solution with steps, perhaps using standard multiplication algorithm or using distributive property or something like that. Let's break down: 17 * 23 = ?\n\nWe can compute directly: 17*20 = 340, 17*3 = 51, sum = 391. Or use FOIL: (20-3)*(20+3) = 20^2 - 3^2 = 400 - 9 = 391? Wait 17 is not 20-3; 23 is 20+3. Actually 17 = 20 - 3, 23 = 20 + 3. Multiply: (20 - 3)*(20 + 3) = 20^2 - 3^2 = 400 - 9 = 391. Indeed.\n\nAlternatively, we can do long multiplication: 17 * 23. Multiply 17 by 3 = 51, write 51. Multiply 17 by 20 = 340. Add: 51 + 340 = 391.\n\nAlternatively, break 23 as 10+10+3: 17*10 = 170, plus another 170 = 340, plus 51 = 391.\n\nWe need to show reasoning step by step. So we can give a short explanation.\n\nThus answer: 391.\n\nWe must show the reasoning in a step-by-step fashion.\n\nPotential answer:\n\nStep 1: Break 23 into 20 + 3.\n\nStep 2: Compute 17 * 20 = 340.\n\nStep 3: Compute 17 * 3 = 51.\n\nStep 4: Add the results: 340 + 51 = 391.\n\nAlternatively, use difference of squares: 17 = 20 - 3, 23 = 20 + 3; product = 20^2 - 3^2 = 400 - 9 = 391.\n\nThus answer is 391.\n\nWe must also mention that 17 * 23 = 391.\n\nThus answer: 391 (with reasoning).\n\nWe need to ensure we include step-by-step reasoning. Let's elaborate: Show each step.\n\nPotential answer:\n\n- Write 23 as 20 + 3.\n\n- Then 17 * (20 + 3) = 17*20 + 17*3.\n\n- 17*20 = 340.\n\n- 17*3 = 51.\n\n- Add: 340 + 51 = 391.\n\nThus answer is 391.\n\nAlternatively, using the difference of squares: (20 - 3)*(20 + 3) = 400 - 9 = 391.\n\nThus answer: 391.\n\nThus final answer: 391.\n\nWill produce answer with reasoning."}}},{"text":" **Step‑by‑step solution**\n\n1. **Break one factor into a convenient sum** \n \\[\n 23 = 20 + 3\n \\]\n\n2. **Use the distributive property** \n \\[\n 17 \\times 23 = 17 \\times (20 + 3) = 17\\times 20 + 17\\times 3\n \\]\n\n3. **Compute each term** \n - \\(17 \\times 20 = 340\\) \n - \\(17 \\times 3 = 51\\)\n\n4. **Add the partial results** \n \\[\n 340 + 51 = 391\n \\]\n\n5. **Conclusion** \n \\[\n \\boxed{391}\n \\]\n\n*(A quick check using the difference‑of‑squares identity also works: \n\\(17 = 20-3\\) and \\(23 = 20+3\\), so \\((20-3)(20+3)=20^{2}-3^{2}=400-9=391\\).)*"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"inputTokens":46,"outputTokens":817,"serverToolUsage":{},"totalTokens":863}}534 2272 +{"metrics":{"latencyMs":3187},"output":{"message":{"content":[{"reasoningContent":{"reasoningText":{"text":" We need to calculate 17 * 23. Let me think step by step.\n\nMethod 1: Direct multiplication\nWe can multiply 17 by 23 directly:\n17 × 23 = ?\n\nLet's break it down:\n17 × 20 = 340\n17 × 3 = 51\n340 + 51 = 391\n\nSo 17 × 23 = 391\n\nMethod 2: Using the distributive property\n17 × 23 = 17 × (20 + 3) = 17×20 + 17×3 = 340 + 51 = 391\n\nMethod 3: Using the formula (a+b)(a-b) = a² - b²\nWe can write 17 × 23 as (20-3) × (20+3) = 20² - 3² = 400 - 9 = 391\n\nLet me verify:\n17 × 23 = 391\nCheck: 391 ÷ 17 = 23? 17×20 = 340, 391-340 = 51, 51÷17 = 3, so 20+3 = 23. ✓\n\nThe answer is 391."}}},{"text":" **Step-by-step reasoning:**\n\n1. **Break down the multiplication:** I can use the distributive property to make this easier.\n - 23 = 20 + 3\n - So 17 × 23 = 17 × (20 + 3)\n\n2. **Multiply separately:**\n - 17 × 20 = 340\n - 17 × 3 = 51\n\n3. **Add the results:**\n - 340 + 51 = 391\n\n**Verification using an alternative method:**\nI can also use the difference of squares formula: (a - b)(a + b) = a² - b²\n- 17 × 23 = (20 - 3) × (20 + 3) = 20² - 3² = 400 - 9 = 391\n\n**Answer: 17 × 23 = 391**"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"inputTokens":25,"outputTokens":436,"serverToolUsage":{},"totalTokens":461}}434 1991 POST https://bedrock-runtime.us-east-1.amazonaws.com/model/minimax.minimax-m2.5/converse HTTP/1.1 Host: bedrock-runtime.us-east-1.amazonaws.com User-Agent: langchaingo-httprr -Content-Length: 256 +Content-Length: 156 Authorization: AWS4-HMAC-SHA256 test-api-key Content-Type: application/json -{"additionalModelRequestFields":{"thinking":{"type":"enabled","budget_tokens":1024}},"inferenceConfig":{"maxTokens":4096,"temperature":1},"messages":[{"content":[{"text":"Think step by step: What is 17 * 23? Show your reasoning process."}],"role":"user"}]}HTTP/2.0 200 OK -Content-Length: 2106 +{"inferenceConfig":{"maxTokens":4096},"messages":[{"content":[{"text":"Think step by step: What is 17 * 23? Show your reasoning process."}],"role":"user"}]}HTTP/2.0 200 OK +Content-Length: 1825 Content-Type: application/json -Date: Thu, 16 Jul 2026 18:30:04 GMT -X-Amzn-Requestid: e3f94de0-0db9-421e-8816-9d446cdaba2e +Date: Sat, 05 Sep 2026 13:43:20 GMT +X-Amzn-Requestid: 6e54d6df-1676-4ebb-b2d2-2708c0f7af25 -{"metrics":{"latencyMs":17340},"output":{"message":{"content":[{"reasoningContent":{"reasoningText":{"text":"The user asks: \"Think step by step: What is 17 * 23? Show your reasoning process.\"\n\nThe user wants to compute 17*23. That's 391? Check: 17 * 23: 10*23 = 230, 7*23 = 161 -> sum 391. Yes, 17*23=391.\n\nBut they ask: \"Think step by step: What is 17 * 23? Show your reasoning process.\"\n\nThus I must provide step-by-step reasoning. Provide arithmetic steps. Must follow policy: It's a straightforward arithmetic. There's no disallowed content. It's an allowed request.\n\nThus answer: 391 with reasoning.\n\nI need to show step-by-step: 17 * 23 = (20 - 3)*(17)? Or perhaps break down as 17*(20+3)? Compute 17*20=340, 17*3=51, sum =391. Or break as 23*17 = 23*10 + 23*7 = 230+161 = 391. Show that.\n\nThus produce answer.\n\nOk. Let's include maybe an alternative reasoning using distributive property, etc.\n\nOne might convert 23 as 20+3.\n\nCompute 17*20 = 340, 17*3 = 51, sum = 391.\n\nAlternatively compute 23*10 = 230, 23*7 = 161, add 230+161=391.\n\nThus answer = 391.\n\nThus final output should be a nicely formatted explanation.\n\nThe user wants \"Think step by step: What is 17 * 23? Show your reasoning process.\"\n\nTherefore, I'd create something like:\n\n- Write 23 as 20+3.\n- Multiply 17*20 = 340.\n- Multiply 17*3 = 51.\n- Add: 340+51 = 391.\n\nThus answer: 391.\n\nThat's easy.\n\nWill output final.\n"}}},{"text":"\n\n**Step‑by‑step reasoning**\n\nTo compute \\(17 \\times 23\\) we can break one of the numbers into a sum that’s easy to multiply:\n\n1. Write \\(23\\) as \\(20 + 3\\).\n\n2. Multiply \\(17\\) by each part:\n - \\(17 \\times 20 = 340\\) (because \\(17 \\times 2 = 34\\), then add a zero)\n - \\(17 \\times 3 = 51\\) (because \\(10 \\times 3 = 30\\) and \\(7 \\times 3 = 21\\), \\(30+21=51\\))\n\n3. Add the two partial products:\n \\[\n 340 + 51 = 391\n \\]\n\nSo,\n\\[\n\\boxed{17 \\times 23 = 391}\n\\]"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"inputTokens":56,"outputTokens":569,"serverToolUsage":{},"totalTokens":625}}534 6540 +{"metrics":{"latencyMs":3697},"output":{"message":{"content":[{"reasoningContent":{"reasoningText":{"text":"The user asks: \"Think step by step: What is 17 * 23? Show your reasoning process.\"\n\nWe need to show step-by-step multiplication.\n\nWe can answer: Use distribution: 17*23 = 17*(20+3) = 17*20 + 17*3 = 340 + 51 = 391. Or do standard algorithm.\n\nThe user wants reasoning.\n\nWe can also break down: 20*23 = 460, subtract 3*23 = 69. Then 460-69 = 391. Equivalent.\n\nThus answer: 391.\n\nWe can add explanation.\n\nGiven the conversation, we need to abide by the policy: it's a simple arithmetic request. Safe.\n\nThus respond accordingly. Show step-by-step.\n\nWrite answer: 391.\n\nWe must include reasoning, but final answer must be included? The user didn't ask for just answer but also reasoning; we can give both.\n\nThus answer: 391.\n\nNow write the answer.\n\nWe'll follow guidelines: no extra text beyond answer and reasoning. Use appropriate formatting. Provide clear steps in plain English. Nothing else.\n\nMake sure to consider the user likely expects step by step.\n\nThus finalize.\n"}}},{"text":"\n\nTo find \\(17 \\times 23\\), we can break the multiplication into easier pieces.\n\n1. **Rewrite 23 as 20 + 3** \n \\[\n 17 \\times 23 = 17 \\times (20 + 3)\n \\]\n\n2. **Apply the distributive property** \n \\[\n 17 \\times (20 + 3) = 17 \\times 20 \\;+\\; 17 \\times 3\n \\]\n\n3. **Compute each term** \n - \\(17 \\times 20 = 340\\) (since \\(17 \\times 2 = 34\\) and add a zero). \n - \\(17 \\times 3 = 51\\) (because \\(17 + 17 + 17 = 51\\)).\n\n4. **Add the two results** \n \\[\n 340 + 51 = 391\n \\]\n\n\\[\n\\boxed{391}\n\\]"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"inputTokens":56,"outputTokens":439,"serverToolUsage":{},"totalTokens":495}}434 3676 POST https://bedrock-runtime.us-east-1.amazonaws.com/model/minimax.minimax-m2.1/converse HTTP/1.1 Host: bedrock-runtime.us-east-1.amazonaws.com User-Agent: langchaingo-httprr -Content-Length: 256 +Content-Length: 156 Authorization: AWS4-HMAC-SHA256 test-api-key Content-Type: application/json -{"additionalModelRequestFields":{"thinking":{"type":"enabled","budget_tokens":1024}},"inferenceConfig":{"maxTokens":4096,"temperature":1},"messages":[{"content":[{"text":"Think step by step: What is 17 * 23? Show your reasoning process."}],"role":"user"}]}HTTP/2.0 200 OK -Content-Length: 6374 +{"inferenceConfig":{"maxTokens":4096},"messages":[{"content":[{"text":"Think step by step: What is 17 * 23? Show your reasoning process."}],"role":"user"}]}HTTP/2.0 200 OK +Content-Length: 3510 Content-Type: application/json -Date: Thu, 16 Jul 2026 18:31:26 GMT -X-Amzn-Requestid: b4a91c67-c26a-42e8-9a27-0df8dac3b572 +Date: Sat, 05 Sep 2026 13:43:28 GMT +X-Amzn-Requestid: a1cf25f9-53ab-4dc0-a017-61a138dbde83 -{"metrics":{"latencyMs":81202},"output":{"message":{"content":[{"reasoningContent":{"reasoningText":{"text":"I need to find out what 17 times 23 is. I should think step by step to make sure I get it right.\n\nFirst, I know that multiplication is repeated addition. So, 17 times 23 means adding 17 to itself 23 times. But that might take a while, so there should be a smarter way.\n\nI could break it down. For example, I can split one of the numbers into smaller parts. Let me see, 17 times 23. I know that 17 is close to 10 and 7, and 23 is close to 20 and 3. But I should think in terms of place values.\n\nI can think of it as (20 - 3) times 17, but that might be messy. Better to use the distributive property.\n\nLet me write it out: 17 * 23.\n\nI can do 10*23 = 230, and then 7*23 = 161. Then add them together.\n\nLet me calculate that.\n\n10 times 23 is 230.\n\n7 times 23: 7*20 = 140, and 7*3 = 21, so 140 + 21 = 161.\n\nNow, 230 + 161. 230 + 160 = 390, plus 1 is 391? No, 161 is 160 + 1, but I'm adding 230 + 161.\n\n230 + 100 = 330, then 330 + 60 = 390, then 390 + 1 = 391? I think I'm confusing myself.\n\nBetter: 230 + 161.\n\n230 + 160 = 390, and then 390 + 1 = 391, but 161 is 160 + 1, so yes, that seems right.\n\n230 + 161: add hundreds: 200 + 100 = 300, then tens: 30 + 60 = 90, so 300 + 90 = 390, then units: 0 + 1 = 1, so 391.\n\nYes.\n\nSo, 17 * 23 = 391.\n\nBut let me double-check with another method.\n\nI can do 17 * 20 = 340, and 17 * 3 = 51, then add them.\n\n17 * 20 = 340.\n\n17 * 3: 10*3=30, 7*3=21, 30+21=51.\n\nNow, 340 + 51 = 340 + 50 = 390, plus 1 is 391.\n\nSame answer.\n\nI could use the box method or something.\n\nAnother way: 17 * 23.\n\nLet me think of 23 * 17.\n\nSame thing.\n\n20 * 17 = 340, 3 * 17 = 51, 340 + 51 = 391.\n\nOr, using columns.\n\n 23\nx 17\n----\n\nFirst, 7 * 23: 7*3=21, write down 1, carry over 2.\n\n7*2=14, plus 2 is 16, so 161. But since it's single digit, it's 161.\n\nThen, 1 * 23, but since it's the tens place, it's actually 10 * 23, so 230.\n\nIn multiplication, when you multiply by the tens digit, you shift left.\n\nSo, 23\n\nx 17\n\nFirst: 7 * 23 = 161\n\nThen, 10 * 23 = 230, but when you write it, you shift it one position to the left, so it's like 230, but written as 23 with a zero or shifted.\n\nStandard way:\n\nWrite it as:\n\n 23\n\nx 17\n\n-----\n\n 161 (7 * 23)\n\n+230 (10 * 23, but since it's 1 in tens place, it's 230? No)\n\nActually, the second row is 1 * 23, but the 1 is in the tens place, so it's 10 * 23 = 230. When you multiply, for the tens digit, you put a zero or shift left.\n\nSo:\n\n 23\n\nx 17\n\n------\n\n 161 <- 7 × 23\n\n+ 230 <- 10 × 23 (since 17 has 1 in tens place, it's 10 times)\n\nBut 230 is written with a zero: 230\n\nNow add: 161 + 230.\n\n161 + 230: 100 + 200 = 300, 60 + 30 = 90, 1 + 0 = 1, so 391.\n\n160 + 230 = 390, plus 1 is 391.\n\nSince 161 + 230 = 391.\n\nNow, is 17 * 23 really 391?\n\nI think I know that 20 * 17 = 340, but 23 is 3 more than 20, so 17*3=51, so 340+51=391.\n\nSimilarly, 17*20=340, 17*3=51, total 391.\n\nOr, 23*17: 23*10=230, 23*7=161, 230+161=391.\n\nAnother way: 17*25 = 425, but 25 is 2 more than 23, so 17*2=34 less, so 425 - 34 = 391.\n\n425 - 34: 425 - 30 = 395, minus 4 is 391? 425 - 30 = 395, then 395 - 4 = 391. Yes.\n\nOr, 17*24 = 17*25 - 17 = 425 - 17 = 408, but 24 is 1 more than 23? No, 23 is less.\n\n17*24=408, but I need 23, which is 1 less, so 17*1=17 less, 408-17=391.\n\nAgain 391.\n\nSo, I'm confident it's 391.\n\nBut let me do a quick addition: 17+17=34, and so on, but that's inefficient.\n\nI can think of it as (20*23) - (3*23) = 460 - 69.\n\n20*23=460.\n\n3*23=69.\n\n460 - 69 = 391.\n\nBecause 460 - 70 = 390, but since 69 is 1 less, 390 + 1 = 391? No.\n\n460 - 69: 460 - 60 = 400, minus 9 is 391. Or 460 - 70 = 390, but 69 is 1 less than 70, so I subtracted 1 too much, so add back 1, 390 + 1 = 391.\n\nYes.\n\nAll ways lead to 391.\n\nSo, the answer should be 391.\n\nBut just to be thorough, I can look for patterns or something, but multiplication is fundamental.\n\nOr, I know that 17 and 23 are both prime, but that doesn't help for multiplication.\n\nOr, 17*25=425, as I had.\n\n17*20=340, 17*3=51, 340+51=391.\n\nI think I've confirmed it multiple times.\n\nSo, 17 times 23"}}},{"text":"\n\nTo find 17 × 23, we can break down the multiplication using the distributive property. This means splitting one of the numbers and multiplying each part separately, then adding the results.\n\nMethod 1: Split 17 into 10 and 7 \n- 10 × 23 = 230 \n- 7 × 23 = 161 \n- Add the results: 230 + 161 = 391 \n\nMethod 2: Split 23 into 20 and 3 \n- 17 × 20 = 340 \n- 17 × 3 = 51 \n- Add the results: 340 + 51 = 391 \n\nMethod 3: Use the box method (traditional column multiplication) \n1. **Set up the problem:** \n ```\n 23 \n × 17 \n ----- \n ```\n2. **Multiply the units digit (7) of 17 by 23:** \n - 7 × 23 = 161 \n - Write 161 below. \n ```\n 23 \n × 17 \n ----- \n 161 ← 7 × 23 \n ```\n3. **Multiply the tens digit (1) of 17 by 23:** \n - Since it is in the tens place, it represents 10 × 23 = 230. Shift one position left (or add a zero) to get 230. \n ```\n 23 \n × 17 \n ----- \n 161 \n 230 ← 10 × 23 (shifted left) \n ```\n4. **Add the results:** \n ```\n 161 \n + 230 \n ----- \n 391 \n ```\n\n**Verification with alternative methods:** \n- **20 × 23 approach:** 20 × 23 = 460, but since 17 is 3 less than 20, subtract 17 × 3 = 51 from 460: 460 - 51 = 409. (Incorrect, due to miscalculation; correction: 460 - 51 = 409 is wrong because 460 - 50 = 410, minus 1 more is 409, but 51 is 50 + 1, so 460 - 51 = 409. However, this should equal 17 × 23, but 20 × 23 is not directly related as 17 = 20 - 3. Correct adjustment: (20 - 3) × 23 = 20×23 - 3×23 = 460 - 69 = 391.) \n- **17 × 25 approach:** 17 × 25 = 425 (since 15 × 25 = 375, 2 × 25 = 50, 375 + 50 = 425). Since 23 is 2 less than 25, subtract 17 × 2 = 34: 425 - 34 = 391. \n- **23 × 17 approach:** Same as Method 2, yielding 391. \n\nAll methods consistently result in 391. Therefore, 17 × 23 = 391.\n\n**Final Answer:** \n\\[ \\boxed{391} \\]"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"inputTokens":56,"outputTokens":2207,"serverToolUsage":{},"totalTokens":2263}} \ No newline at end of file +{"metrics":{"latencyMs":7307},"output":{"message":{"content":[{"reasoningContent":{"reasoningText":{"text":"The user asks: \"Think step by step: What is 17 * 23? Show your reasoning process.\"\n\nWe need to produce a step-by-step answer showing the reasoning process for multiplying 17 * 23. The user wants the reasoning process. We should comply. The user is not asking for any disallowed content. So we can produce the answer.\n\nWe need to follow the policy: Provide a step-by-step solution. The answer is straightforward: 17 * 23 = 391. But they want reasoning process. So we can show the multiplication algorithm, perhaps using distributive property: 17 * 23 = 17 * (20 + 3) = 17*20 + 17*3 = 340 + 51 = 391. Or show standard multiplication: 23 * 17 = (20+3)*17.\n\nWe can also show the steps of the algorithm: 23 * 7 = 161, then 23 * 10 = 230, sum = 391.\n\nWe can also show the repeated addition method: 17 + 23 etc.\n\nBut the simplest is the distributive method: 17 * 23 = 17 * (20+3) = 340 + 51 = 391.\n\nThus answer is 391.\n\nWe can also show the steps:\n\n- Multiply 23 by 7: 23*7 = 161.\n- Multiply 23 by 10: 23*10 = 230.\n- Add: 161 + 230 = 391.\n\nOr using the other method:\n\n- Multiply 17 by 20: 17*20 = 340.\n- Multiply 17 by 3: 17*3 = 51.\n- Add: 340+51 = 391.\n\nThus answer is 391.\n\nWe should present in a clear step-by-step format.\n\nThe user didn't request any special formatting, but we can use bullet points or numbered steps.\n\nThus we can respond:\n\nFirst approach: Using distributive property.\n\nSecond approach: Using standard multiplication algorithm.\n\nThen final answer.\n\nWe need to ensure we show reasoning.\n\nWe'll produce the answer in a helpful manner.\n\nNow, the answer: 391.\n\nThus final answer: 391.\n\nNow, we should produce the final answer.\n"}}},{"text":"\n\nHere’s a step‑by‑step reasoning process for multiplying \\(17 \\times 23\\).\n\n---\n\n## Approach 1: Use the distributive property \n\nWrite 23 as a sum of a tens‑part and a ones‑part: \n\n\\[\n23 = 20 + 3\n\\]\n\nThen apply the distributive law \\(a(b+c)=ab+ac\\):\n\n\\[\n\\begin{aligned}\n17 \\times 23 \n&= 17 \\times (20 + 3) \\\\\n&= (17 \\times 20) + (17 \\times 3)\n\\end{aligned}\n\\]\n\nNow compute each product:\n\n* \\(17 \\times 20 = 340\\) (because \\(17 \\times 2 = 34\\), then add a zero)\n* \\(17 \\times 3 = 51\\)\n\nAdd the two results:\n\n\\[\n340 + 51 = 391\n\\]\n\n---\n\n## Approach 2: Standard multiplication algorithm \n\nSet up the multiplication vertically and multiply by each digit of the second number.\n\n\\[\n\\begin{array}{r}\n\\ \\ \\ 17\\\\\n\\times 23\\\\ \\hline\n\\end{array}\n\\]\n\n1. **Multiply by the ones digit (3):** \\(3 \\times 7 = 21\\) → write down **1**, carry **2**. \n \\(3 \\times 1 = 3\\); add the carry: \\(3 + 2 = 5\\). \n So the first partial product is **51**.\n\n2. **Multiply by the tens digit (2):** because it’s in the tens place, we first place a zero as a placeholder.\n\n - \\(2 \\times 7 = 14\\) → write down **4**, carry **1**. \n - \\(2 \\times 1 = 2\\); add the carry: \\(2 + 1 = 3\\). \n So the second partial product is **340** (the zero is already placed).\n\n3. **Add the partial products:** \n\n\\[\n\\begin{array}{r}\n\\ \\ \\ 51\\\\\n+340\\\\ \\hline\n\\ \\ 391\n\\end{array}\n\\]\n\n---\n\n### Final Answer\n\\[\n\\boxed{17 \\times 23 = 391}\n\\]"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"inputTokens":56,"outputTokens":914,"serverToolUsage":{},"totalTokens":970}} \ No newline at end of file diff --git a/llms/bedrock/testdata/TestAmazonReasoningLegacyAPI.httprr b/llms/bedrock/testdata/TestAmazonReasoningLegacyAPI.httprr index b70ab705e..d8acd5677 100644 --- a/llms/bedrock/testdata/TestAmazonReasoningLegacyAPI.httprr +++ b/llms/bedrock/testdata/TestAmazonReasoningLegacyAPI.httprr @@ -1,5 +1,5 @@ httprr trace v1 -572 2256 +572 2489 POST https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-opus-4-5-20251101-v1%3A0/invoke HTTP/1.1 Host: bedrock-runtime.us-east-1.amazonaws.com User-Agent: langchaingo-httprr @@ -9,17 +9,17 @@ Authorization: AWS4-HMAC-SHA256 test-api-key Content-Type: application/json {"anthropic_version":"bedrock-2023-05-31","max_tokens":4096,"messages":[{"role":"user","content":[{"type":"text","text":"Think step by step: What is 17 * 23? Show your reasoning process."}]}],"temperature":1,"thinking":{"type":"enabled","budget_tokens":1024}}HTTP/2.0 200 OK -Content-Length: 1874 +Content-Length: 2107 Content-Type: application/json -Date: Thu, 16 Jul 2026 10:32:53 GMT +Date: Fri, 21 Aug 2026 00:34:54 GMT X-Amzn-Bedrock-Cache-Read-Input-Token-Count: 0 X-Amzn-Bedrock-Cache-Write-Input-Token-Count: 0 X-Amzn-Bedrock-Input-Token-Count: 55 -X-Amzn-Bedrock-Invocation-Latency: 4139 -X-Amzn-Bedrock-Output-Token-Count: 287 -X-Amzn-Requestid: 201f0617-4742-4070-9e26-50b59e2f46a5 +X-Amzn-Bedrock-Invocation-Latency: 7684 +X-Amzn-Bedrock-Output-Token-Count: 352 +X-Amzn-Requestid: de64385e-0107-4214-861a-ff59e0565dab -{"model":"claude-opus-4-5-20251101","id":"msg_bdrk_01MpqbXXcoPzQeD62qkbmPgW","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"I need to calculate 17 * 23. Let me do this step by step.\n\nMethod 1: Breaking it down\n17 * 23 = 17 * (20 + 3)\n= 17 * 20 + 17 * 3\n= 340 + 51\n= 391\n\nLet me verify with another method.\n\nMethod 2: Breaking down differently\n17 * 23 = (10 + 7) * 23\n= 10 * 23 + 7 * 23\n= 230 + 161\n= 391\n\nBoth methods give 391, so that's the answer.","signature":"EpYECm4IDxABGAIqQGv7Af6kjI1vHTW9OE5xfaki22NXgC6zWzCKH//HlFgaqte5szAd33qZ+oj139S9F36w7VB8R6c22Wd/jqhkCAwyGGNsYXVkZS1vcHVzLTQtNS0yMDI1MTEwMTgAQgh0aGlua2luZxIMi/HOy5vBu5PqTuZmGgzNgySQMYsiiZM/0okiMMxIn6JduQvMbMm5B2NU3Svjm0f1k/5cktaC7hAbaQh4K6Xd89g4WbYBRfr7us5GXCrVAvvN8X8x7r2OS0PdwQmILPcCH29bXhCOUq/0NVJNEbagHCI6So8O/Kgo1D4WsAxbm/dvgLSfsXoma0HarVYBarfl2AIerXg/3Gu2Q026rSBKJ/oNhbiy2OBB+i4Hh7kYyF8b0e7eymzCfmZ1jU+e/6cU7/U+brNREG7O50pAGxjajcNvkXjolnwmv5XYK1gw9QM0x24vQ3+/mPhL8NS/+Fr3ka0YAHluz7kXWknakuALCyjoNMaX7gpNE7JJy7uvXupap2iBEeXuls/IU/0mhyJO+cOZzRcjCIoHS2E8A+ZikgMdB1LmpndmBs8gzZGYF6S31cP9E4oGsO/MQkDSsF3ze7sjrfhxzqm8NRfr9QThFQ/Ux41EmrofITn6m67Aieci+4SYAr1yaSXpv9ll/O57SB/eQvsDuzWFWQUJso+d+FGN12ZU9L0RPOebBluegtqz2vsqGAE="},{"type":"text","text":"# Calculating 17 × 23\n\n## Step-by-Step Solution\n\nI'll break this into smaller, easier multiplications:\n\n**17 × 23 = 17 × (20 + 3)**\n\n**Step 1:** Calculate 17 × 20\n- 17 × 20 = 340\n\n**Step 2:** Calculate 17 × 3\n- 17 × 3 = 51\n\n**Step 3:** Add the results\n- 340 + 51 = **391**\n\n## Answer: 391"}],"stop_reason":"end_turn","stop_sequence":null,"stop_details":null,"usage":{"input_tokens":55,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":287,"output_tokens_details":{"thinking_tokens":154}}}574 2857 +{"model":"claude-opus-4-5-20251101","id":"msg_bdrk_017UTXap4VsUrBjAFCoif2Ji","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"I need to calculate 17 * 23. Let me do this step by step.\n\nI can break this down using the distributive property.\n\nMethod 1: Break down 23\n17 * 23 = 17 * (20 + 3)\n= 17 * 20 + 17 * 3\n= 340 + 51\n= 391\n\nLet me verify with another method.\n\nMethod 2: Break down 17\n17 * 23 = (10 + 7) * 23\n= 10 * 23 + 7 * 23\n= 230 + 161\n= 391\n\nBoth methods give 391, so the answer is 391.","signature":"Er8ECm4IERABGAIqQCeKDTppmbScQYuFZXlTY3X8t4dTMv8Qsaueko7rRkBiftNobxgxA20BrqK/3gYqIY3curDYmuHz3FtCru0jMPMyGGNsYXVkZS1vcHVzLTQtNS0yMDI1MTEwMTgAQgh0aGlua2luZxIMnkZbrnBUbExRpeM6Ggzs8rAvo5O6poxHRSAiMHmsbyz/0XaWWcuztsok6y+yMlT9PlJa+Zsuxzi/4CgAMyyNX67IyABAJ9Nper20HSr+AhphfzXDRXyyAVgAqsbh3xCFV8EoMJ3S+GlS6SwzCPS7VJBrABcC3EaDxHdscG8F+gFeCZRRIDE6cGBC5K9pesoAxhPz1aN/bp34DZn3cbvL4XVEBqYH/NH0ZgzLxW8ySWyfjmMmQJD8gB/+xFsJNKKdA9zOvVGJ9WonqSXGqr6rW9Ape38bqVGqZTfJqxcaIby09adUdGJsXXdlJZ4+ryFSU8YquqpEMQTdnazK4aJPg4ZQnqKTaD+y5oP5SIwX28Se0EhUa9fzb4xxKa/qqew9rDFBnpSOd8y7Upm6oGwZ6dn7P99xN5JZstEcl5IaE/rG5kybAP+uoHY4Jcq2smciWZ2cbvk/asg931Aj+/tP/Kkbf1gCHWt/i/GVaRnX+AkFkxGcDyZzdvyJV9QNG3SD3qCzz/7jzml3icIhYnCwYKv/gsCKOL0yDu1s2oRhUEsCXs8H3+frNCA+P2UHECuXpsMWv1YP0Mp6P/JGb15HwbLtt7QGLJZKmTp1xvIYAQ=="},{"type":"text","text":"# Calculating 17 × 23\n\n## Step-by-Step Solution\n\nI'll break this into simpler parts using the distributive property.\n\n**Breaking down 23 into (20 + 3):**\n\n17 × 23 = 17 × (20 + 3)\n\n**Calculate each part:**\n- 17 × 20 = 340\n- 17 × 3 = 51\n\n**Add the results:**\n340 + 51 = **391**\n\n## Verification\n\nI can check by breaking down 17 instead:\n- 10 × 23 = 230\n- 7 × 23 = 161\n- 230 + 161 = **391** ✓\n\nThe answer is **391**."}],"stop_reason":"end_turn","stop_sequence":null,"stop_details":null,"usage":{"input_tokens":55,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":352,"output_tokens_details":{"thinking_tokens":169}}}574 2917 POST https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-sonnet-4-5-20250929-v1%3A0/invoke HTTP/1.1 Host: bedrock-runtime.us-east-1.amazonaws.com User-Agent: langchaingo-httprr @@ -29,14 +29,14 @@ Authorization: AWS4-HMAC-SHA256 test-api-key Content-Type: application/json {"anthropic_version":"bedrock-2023-05-31","max_tokens":4096,"messages":[{"role":"user","content":[{"type":"text","text":"Think step by step: What is 17 * 23? Show your reasoning process."}]}],"temperature":1,"thinking":{"type":"enabled","budget_tokens":1024}}HTTP/2.0 200 OK -Content-Length: 2475 +Content-Length: 2535 Content-Type: application/json -Date: Thu, 16 Jul 2026 10:33:00 GMT +Date: Fri, 21 Aug 2026 00:35:02 GMT X-Amzn-Bedrock-Cache-Read-Input-Token-Count: 0 X-Amzn-Bedrock-Cache-Write-Input-Token-Count: 0 X-Amzn-Bedrock-Input-Token-Count: 55 -X-Amzn-Bedrock-Invocation-Latency: 5783 -X-Amzn-Bedrock-Output-Token-Count: 429 -X-Amzn-Requestid: 7592d99b-9d94-4dc0-b212-3994f3c15151 +X-Amzn-Bedrock-Invocation-Latency: 5973 +X-Amzn-Bedrock-Output-Token-Count: 496 +X-Amzn-Requestid: c4f05bb6-451c-4f54-9e0b-7dd010a9fce9 -{"model":"claude-sonnet-4-5-20250929","id":"msg_bdrk_01QH2GTUN7GM3CCkQUNw2EdZ","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"I need to calculate 17 × 23. Let me break this down step by step.\n\nI'll use the distributive property to make this easier:\n17 × 23 = 17 × (20 + 3)\n = (17 × 20) + (17 × 3)\n\nFirst, let me calculate 17 × 20:\n17 × 20 = 17 × 2 × 10\n = 34 × 10\n = 340\n\nNext, let me calculate 17 × 3:\n17 × 3 = 51\n\nNow I add them together:\n340 + 51 = 391\n\nLet me verify this with another method - the standard multiplication:\n 23\n × 17\n ----\n 161 (23 × 7)\n 230 (23 × 10)\n ----\n 391\n\nYes, 17 × 23 = 391","signature":"EuAFCnAIDxABGAIqQEDvlN0GrJBhkxgTAM8DzJnSaUR2UAjeBxxgAdjUb+XaHaxryuSBQ3/hcpPhFo4YvFBOyhEl/9gjTFb6SQinQkIyGmNsYXVkZS1zb25uZXQtNC01LTIwMjUwOTI5OABCCHRoaW5raW5nEgwKocDqhg2dhEhVa4IaDF7ZnJFHOKDGTXzUUCIw1h8g8YNycbk5Ju+LClAAYS8guWXSU9LpvNorCoOfc7HgUZKP2eZ1rEkMRcqb5eJoKp0EKOr4mgVSV/JI1KBrN6jH/jsvJ0ETqm+unRJOmdiyN/P00YIS0r54ooL4UfOE1/5IUzhuUJa2VjPjlbg+U6Svg5TrJqJnqzySRjchniowWWJHAkJ0yZ/h+QTd3SpR5hW0jdS7PDQNNzm7024sdtzXS6bC0RrVeZYVKnmCd1bdFjrim3YtCKPJCeym0kZGliWw70+YzO/bOFRtvnJmkR03AX3u6OWQ60umTnca8Yi69/2l5tVNvWpQhGRVobEPYFUq4jZXZMNRf1kpEc6PEp4ucP5RWPtc2OpfHZal0+HDS75cxJVFprnl5ysMmNfgVqYu7YNfZ80pwwvjEphK49YDmPfq2ba6qZNJbuNhtwBiIdqfuSoc0nndYKDC9fM7tSgevVUC6UxXeRpIl7B7/ICSrVK18AcIm9ofaupjovw5Uc9c6JZy7y/zytCa7ATmZYUDxpblNMtFZKeneW0JQbt8Qm7XuylcaDVAXK1faoZI7Xcg/Q9tlnJPOT/LLWQ4PNmL+TCWMi7IDsD2wnGZ3hMbQX9EvglXl3L1OZUtmf4wAL+f11y02Ai9vzrvm51Bjrh9UNWIG9a+pnk+FGfAFwGRPgwJmDLMeZtv+ZxWS1CJWZc90lxuqsVmJLHruGvp4CMIAC0C1F12mpkdXB/j2zKgAjIHeQxZdX1B8qHb846QtQ935qEdHQAHGWkt0f9I8TAXnn8lKTK7BNw36fuYtxgB"},{"type":"text","text":"# Calculating 17 × 23\n\nI'll break this down using the distributive property:\n\n## Step 1: Break down 23\n23 = 20 + 3\n\nSo: 17 × 23 = 17 × (20 + 3)\n\n## Step 2: Distribute the multiplication\n17 × (20 + 3) = (17 × 20) + (17 × 3)\n\n## Step 3: Calculate each part\n**17 × 20:**\n- 17 × 2 = 34\n- 34 × 10 = 340\n\n**17 × 3:**\n- 17 × 3 = 51\n\n## Step 4: Add the results\n340 + 51 = **391**\n\n**Answer: 17 × 23 = 391**"}],"stop_reason":"end_turn","stop_sequence":null,"stop_details":null,"usage":{"input_tokens":55,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":429,"output_tokens_details":{"thinking_tokens":228}}} \ No newline at end of file +{"model":"claude-sonnet-4-5-20250929","id":"msg_bdrk_01Vv6v1sPM54Rsn1VsMax761","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"I need to calculate 17 * 23. Let me break this down step by step.\n\nI can use the distributive property to make this easier:\n17 * 23 = 17 * (20 + 3)\n = (17 * 20) + (17 * 3)\n\nLet me calculate each part:\n- 17 * 20 = 17 * 2 * 10 = 34 * 10 = 340\n- 17 * 3 = 51\n\nNow add them together:\n340 + 51 = 391\n\nLet me verify this another way:\n23 * 17 = 23 * (10 + 7)\n = (23 * 10) + (23 * 7)\n = 230 + (23 * 7)\n\n23 * 7 = (20 * 7) + (3 * 7) = 140 + 21 = 161\n\nSo: 230 + 161 = 391\n\nBoth methods give me 391, so that's correct.","signature":"EuAFCnAIERABGAIqQOChIkfnAQm6/H+PkDC9epXmKF9nrHi6nqOaGyiXVXWnIymiTuT+Mq5bH9Q6XZ3W4WSrRaXWOwcqcFU6bTFBaRMyGmNsYXVkZS1zb25uZXQtNC01LTIwMjUwOTI5OABCCHRoaW5raW5nEgw0h6Wm99cEe+mIeW8aDH9nIQHiO6G6XXP4liIwpYtafRDyVWCclVvgJ1NJzWspg5clw5kEbseOoHMkT9V/EKwRLtWDGnErF8ZtWF64Kp0EMzYe8nG85/Wio01eB/Olfx/YQN3wRxmpNENr+D0d+RU8Y1Mpxkhx0A5wSuWxj6huA2ZXdnc328sSoJan16p4u2UisOTuv2PQ9sYRkI6q/US5IwuI4qabnPEl9gBqtmF6a92Zlnnrp9vC+jBAlxfjyO6OSdOJqooeiPNMgnKH6gerqZGEHGcTmsPIzUvYOqQUrKDB5+AoFuHB+H40IwqHbcyre1v2kFggVGRoQtVQML0XSw74e9+VbYvdKgTvcUbbiStuA9lUNBb9J4FOLHD4NDVHEju/gDG37+Ihrshu8g203jpxQKrOlXa/OC4E9OHNVjdpuqkKExCS95yZeM3eKhNqJdvtr1tH9X4yKoczAmrdC4C4gjrvcmpEMgxcUqSa9lvoPQoOTYC+R0tA3755hF+RmpyBqKY4SuevXu+5IrmTOmqVB5u04LzyjzjXa8mi/IPFMrs9pqKObGpcpVwF6pyO3I8N1PkDGbc80e707iTttvhr28ro++z6PN3yd9KSK66S/MEmwivgZebcXVq9uOXBaWxju1LLFWJN70jalt8m4aweuMFiFB9Pvsw1dcQp1EOc1huk3uwNMvLzZUjtli5g3IYxwOXGVxw17igKxcwfg5xM1dwS/D+hHASEg97UlANHjFHEHQI3f0QPWfYeJifuUzcxT2IUC4WVmSHQnmUr6UZDUWCwtkfpk/neq2PW01Dy0riJzvauwV/oRxgB"},{"type":"text","text":"# Calculating 17 × 23\n\nI'll break this down using the distributive property:\n\n## Method: Split 23 into 20 + 3\n\n**17 × 23 = 17 × (20 + 3)**\n\n### Step 1: Calculate 17 × 20\n- 17 × 20 = 17 × 2 × 10\n- 17 × 2 = 34\n- 34 × 10 = **340**\n\n### Step 2: Calculate 17 × 3\n- 17 × 3 = **51**\n\n### Step 3: Add the results\n- 340 + 51 = **391**\n\n## Answer: 17 × 23 = **391**\n\n---\n\n**Verification** (using another approach):\n- 23 × 10 = 230\n- 23 × 7 = 161\n- 230 + 161 = 391 ✓"}],"stop_reason":"end_turn","stop_sequence":null,"stop_details":null,"usage":{"input_tokens":55,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":496,"output_tokens_details":{"thinking_tokens":261}}} \ No newline at end of file diff --git a/llms/bedrock/testdata/TestAmazonReasoningStreamingConverseAPI.httprr b/llms/bedrock/testdata/TestAmazonReasoningStreamingConverseAPI.httprr index f4d6aca51..34cae4636 100644 Binary files a/llms/bedrock/testdata/TestAmazonReasoningStreamingConverseAPI.httprr and b/llms/bedrock/testdata/TestAmazonReasoningStreamingConverseAPI.httprr differ diff --git a/llms/bedrock/testdata/TestAmazonReasoningStreamingLegacyAPI.httprr b/llms/bedrock/testdata/TestAmazonReasoningStreamingLegacyAPI.httprr index a4c7fbd57..83749ecfe 100644 Binary files a/llms/bedrock/testdata/TestAmazonReasoningStreamingLegacyAPI.httprr and b/llms/bedrock/testdata/TestAmazonReasoningStreamingLegacyAPI.httprr differ diff --git a/llms/bedrock/testdata/TestLLM.httprr b/llms/bedrock/testdata/TestLLM.httprr new file mode 100644 index 000000000..a15a1d4ec Binary files /dev/null and b/llms/bedrock/testdata/TestLLM.httprr differ diff --git a/llms/bedrock/testdata/TestLLMConverse.httprr b/llms/bedrock/testdata/TestLLMConverse.httprr new file mode 100644 index 000000000..93f177371 Binary files /dev/null and b/llms/bedrock/testdata/TestLLMConverse.httprr differ diff --git a/llms/bedrock/tool_args_precision_test.go b/llms/bedrock/tool_args_precision_test.go new file mode 100644 index 000000000..fd38282a4 --- /dev/null +++ b/llms/bedrock/tool_args_precision_test.go @@ -0,0 +1,97 @@ +package bedrock_test + +import ( + "context" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" +) + +const bigToolArgument = "10000000000000001" + +func toolCallTurn(arguments string) []llms.MessageContent { + return []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "book the room"), + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.ToolCall{ + ID: "t1", + Type: "function", + FunctionCall: &llms.FunctionCall{Name: "book", Arguments: arguments}, + }, + }}, + {Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{ + llms.ToolCallResponse{ToolCallID: "t1", Name: "book", Content: "done"}, + }}, + } +} + +const converseAnswer = `{"output":{"message":{"role":"assistant","content":[{"text":"ok"}]}},` + + `"stopReason":"end_turn","usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}` + +const legacyAnswer = `{"id":"x","type":"message","role":"assistant","model":"m",` + + `"content":[{"type":"text","text":"ok"}],"stop_reason":"end_turn",` + + `"usage":{"input_tokens":1,"output_tokens":1}}` + +func TestToolArgumentsKeepTheirPrecisionOnConverse(t *testing.T) { + t.Parallel() + + llm, sent := legacyLLMCapturing(t, converseAnswer, + bedrock.WithModel("amazon.nova-lite-v1:0"), bedrock.WithConverseAPI()) + + _, err := llm.GenerateContent(context.Background(), + toolCallTurn(`{"id":`+bigToolArgument+`}`)) + require.NoError(t, err) + + assert.Contains(t, *sent, `"id":`+bigToolArgument, + "the integer the model chose reaches the vendor as a number, with every digit it had") +} + +func TestToolArgumentsKeepTheirPrecisionOnTheLegacyDoor(t *testing.T) { + t.Parallel() + + llm, sent := legacyLLMCapturing(t, legacyAnswer, + bedrock.WithModel("anthropic.claude-sonnet-4-5-20250929-v1:0")) + + _, err := llm.GenerateContent(context.Background(), + toolCallTurn(`{"id":`+bigToolArgument+`}`)) + require.NoError(t, err) + + assert.Contains(t, *sent, `"id":`+bigToolArgument, + "the legacy door carries the same integer as its Converse sibling") +} + +func TestAFractionalToolArgumentStaysFractional(t *testing.T) { + t.Parallel() + + llm, sent := legacyLLMCapturing(t, converseAnswer, + bedrock.WithModel("amazon.nova-lite-v1:0"), bedrock.WithConverseAPI()) + + _, err := llm.GenerateContent(context.Background(), toolCallTurn(`{"rate":1.5}`)) + require.NoError(t, err) + + assert.Contains(t, *sent, `"rate":1.5`, "a fraction must not be rounded into an integer") +} + +func TestAToolArgumentInTheAnswerKeepsItsPrecision(t *testing.T) { + t.Parallel() + + answer := `{"id":"x","type":"message","role":"assistant","model":"m",` + + `"content":[{"type":"tool_use","id":"t1","name":"book","input":{"id":` + bigToolArgument + `}}],` + + `"stop_reason":"tool_use","usage":{"input_tokens":1,"output_tokens":1}}` + + llm, _ := legacyLLMCapturing(t, answer, + bedrock.WithModel("anthropic.claude-sonnet-4-5-20250929-v1:0")) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "book the room")}) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + require.Len(t, resp.Choices[0].ToolCalls, 1) + + assert.Contains(t, resp.Choices[0].ToolCalls[0].FunctionCall.Arguments, `"id":`+bigToolArgument, + "the integer the model chose reaches the caller as a number, with every digit it had") +} diff --git a/llms/bedrock/tool_choice_notation_test.go b/llms/bedrock/tool_choice_notation_test.go new file mode 100644 index 000000000..42570a1e4 --- /dev/null +++ b/llms/bedrock/tool_choice_notation_test.go @@ -0,0 +1,130 @@ +package bedrock_test + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" +) + +func converseChoiceOnWire(t *testing.T, choice any) string { + t.Helper() + + const answer = `{"output":{"message":{"role":"assistant","content":[{"text":"ok"}]}},` + + `"stopReason":"end_turn","usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}` + + tool := llms.Tool{ + Type: "function", + Function: &llms.FunctionDefinition{ + Name: "get_weather", + Description: "weather", + Parameters: map[string]any{"type": "object", "properties": map[string]any{}}, + }, + } + + var body string + { + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, answer) + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, + bedrock.WithModel("amazon.nova-lite-v1:0"), bedrock.WithConverseAPI()) + + opts := []llms.CallOption{llms.WithTools([]llms.Tool{tool})} + if choice != nil { + opts = append(opts, llms.WithToolChoice(choice)) + } + if _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, opts...); err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + return body + } +} + +func TestConverseKeepsAForcedChoiceInEveryNotation(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + choice any + want string + }{ + { + "named in the Anthropic spelling", + llms.ToolChoice{Type: "tool", Function: &llms.FunctionReference{Name: "get_weather"}}, + `"toolChoice":{"tool":{"name":"get_weather"}}`, + }, + { + "named in the OpenAI spelling", + llms.ToolChoice{Type: "function", Function: &llms.FunctionReference{Name: "get_weather"}}, + `"toolChoice":{"tool":{"name":"get_weather"}}`, + }, + { + "named as a raw OpenAI map", + map[string]any{"type": "function", "function": map[string]any{"name": "get_weather"}}, + `"toolChoice":{"tool":{"name":"get_weather"}}`, + }, + { + "any tool", + llms.ToolChoice{Type: "any"}, + `"toolChoice":{"any":{}}`, + }, + { + "required, the OpenAI spelling of any tool", + "required", + `"toolChoice":{"any":{}}`, + }, + { + "an unset choice stays with the model", + nil, + `"toolChoice":{"auto":{}}`, + }, + { + "an explicit auto stays with the model", + llms.ToolChoice{Type: "auto"}, + `"toolChoice":{"auto":{}}`, + }, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + body := converseChoiceOnWire(t, tc.choice) + if !strings.Contains(body, tc.want) { + t.Fatalf("wire must carry %s, got body: %s", tc.want, body) + } + }) + } +} + +func TestConverseOffersNoToolWhenTheCallerForbidsThem(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + choice any + }{ + {"none as a bare string", "none"}, + {"none as a struct", llms.ToolChoice{Type: "none"}}, + {"none as a raw map", map[string]any{"type": "none"}}, + } { + t.Run("forbidding tools offers the model none: "+tc.name, func(t *testing.T) { + t.Parallel() + + body := converseChoiceOnWire(t, tc.choice) + if strings.Contains(body, `"toolConfig"`) { + t.Fatalf("a forbidden tool must not be offered at all, got body: %s", body) + } + }) + } +} diff --git a/llms/bedrock/tool_choice_wire_test.go b/llms/bedrock/tool_choice_wire_test.go new file mode 100644 index 000000000..be00bd680 --- /dev/null +++ b/llms/bedrock/tool_choice_wire_test.go @@ -0,0 +1,101 @@ +package bedrock_test + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" +) + +func TestConverseCarriesTheToolChoice(t *testing.T) { + t.Parallel() + + const answer = `{"output":{"message":{"role":"assistant","content":[{"text":"ok"}]}},` + + `"stopReason":"end_turn","usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}` + + tool := llms.Tool{ + Type: "function", + Function: &llms.FunctionDefinition{ + Name: "get_weather", + Description: "weather", + Parameters: map[string]any{"type": "object", "properties": map[string]any{}}, + }, + } + + capture := func(t *testing.T, choice any) string { + t.Helper() + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, answer) + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, + bedrock.WithModel("amazon.nova-lite-v1:0"), bedrock.WithConverseAPI()) + + opts := []llms.CallOption{llms.WithTools([]llms.Tool{tool})} + if choice != nil { + opts = append(opts, llms.WithToolChoice(choice)) + } + if _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, opts...); err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + return body + } + + t.Run("a named tool reaches the wire", func(t *testing.T) { + body := capture(t, llms.ToolChoice{ + Type: "tool", + Function: &llms.FunctionReference{Name: "get_weather"}, + }) + if !strings.Contains(body, `"tool":{"name":"get_weather"}`) { + t.Fatalf("named choice must reach the wire, got body: %s", body) + } + }) + + t.Run("any tool reaches the wire", func(t *testing.T) { + body := capture(t, llms.ToolChoice{Type: "any"}) + if !strings.Contains(body, `"any":{}`) { + t.Fatalf("forced choice must reach the wire, got body: %s", body) + } + }) + + t.Run("an unset choice still leaves it to the model", func(t *testing.T) { + body := capture(t, nil) + if !strings.Contains(body, `"auto":{}`) { + t.Fatalf("an unset choice must stay auto, got body: %s", body) + } + }) +} + +func TestForcedToolName(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + choice any + want string + forced bool + }{ + {"named tool", llms.ToolChoice{Type: "tool", Function: &llms.FunctionReference{Name: "f"}}, "f", true}, + {"pointer", &llms.ToolChoice{Type: "tool", Function: &llms.FunctionReference{Name: "g"}}, "g", true}, + {"any", llms.ToolChoice{Type: "any"}, "", true}, + {"map with function", map[string]any{"type": "tool", "function": map[string]any{"name": "h"}}, "h", true}, + {"auto", llms.ToolChoice{Type: "auto"}, "", false}, + {"nil", nil, "", false}, + } { + name, forced := llms.ForcedToolName(tc.choice) + if name != tc.want || forced != tc.forced { + t.Errorf("%s: ForcedToolName() = (%q, %v), want (%q, %v)", tc.name, name, forced, tc.want, tc.forced) + } + } +} diff --git a/llms/bedrock/truncation_test.go b/llms/bedrock/truncation_test.go new file mode 100644 index 000000000..11fa62e92 --- /dev/null +++ b/llms/bedrock/truncation_test.go @@ -0,0 +1,221 @@ +package bedrock_test + +import ( + "context" + "fmt" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/credentials" + "github.com/aws/aws-sdk-go-v2/service/bedrockruntime" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" +) + +func truncationLLM(t *testing.T, stopReason string) *bedrock.LLM { + t.Helper() + return truncationLLMWithBody(t, + fmt.Sprintf(`{"output":{"message":{"role":"assistant","content":[{"text":"half an ans"}]}},"stopReason":%q,"usage":{"inputTokens":1,"outputTokens":1,"totalTokens":2}}`, stopReason), + bedrock.WithModel("anthropic.claude-3-sonnet-20240229-v1:0"), bedrock.WithConverseAPI()) +} + +func truncationLLMWithBody(t *testing.T, body string, opts ...bedrock.Option) *bedrock.LLM { + t.Helper() + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, body) + })) + t.Cleanup(srv.Close) + + client := bedrockruntime.NewFromConfig(aws.Config{ + Region: "us-east-1", + Credentials: credentials.NewStaticCredentialsProvider("unit", "test", ""), + }, func(o *bedrockruntime.Options) { + o.BaseEndpoint = aws.String(srv.URL) + }, signWithSigV4) + + llm, err := bedrock.New(append([]bedrock.Option{bedrock.WithClient(client)}, opts...)...) + if err != nil { + t.Fatalf("New: %v", err) + } + return llm +} + +func TestTruncationIsDerivedWithoutRewritingStopReason(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + stopReason string + wantTruncated bool + }{ + {"out of budget", "max_tokens", true}, + {"finished on its own", "end_turn", false}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + llm := truncationLLM(t, tc.stopReason) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + if err != nil { + t.Fatalf("GenerateContent: %v", err) + } + if got := resp.Choices[0].Truncated; got != tc.wantTruncated { + t.Fatalf("Truncated = %v, want %v", got, tc.wantTruncated) + } + if got := resp.Choices[0].StopReason; got != tc.stopReason { + t.Fatalf("StopReason = %q, want the vendor's own %q", got, tc.stopReason) + } + }) + } +} + +func TestFailOnTruncationKeepsThePartialAnswer(t *testing.T) { + t.Parallel() + + llm := truncationLLM(t, "max_tokens") + msgs := []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")} + + resp, err := llm.GenerateContent(context.Background(), msgs, llms.WithFailOnTruncation()) + if err == nil { + t.Fatal("want an error once the caller opted in") + } + if !llms.IsTruncatedError(err) { + t.Fatalf("want a truncation error, got %v", err) + } + if resp == nil || resp.Choices[0].Content != "half an ans" { + t.Fatalf("want the partial answer alongside the error, got %+v", resp) + } + + if _, err := llm.GenerateContent(context.Background(), msgs); err != nil { + t.Fatalf("without the option the same response must stay a success: %v", err) + } +} + +type legacyTruncationCase struct { + name string + model string + body string + wantStop string + wantTruncated bool +} + +func legacyTruncationCases() []legacyTruncationCase { + return []legacyTruncationCase{ + { + name: "anthropic out of budget", + model: "anthropic.claude-3-sonnet-20240229-v1:0", + body: `{"type":"message","role":"assistant","content":[{"type":"text","text":"half an ans"}],` + + `"stop_reason":"max_tokens","usage":{"input_tokens":1,"output_tokens":1}}`, + wantStop: "max_tokens", wantTruncated: true, + }, + { + name: "anthropic finished on its own", + model: "anthropic.claude-3-sonnet-20240229-v1:0", + body: `{"type":"message","role":"assistant","content":[{"type":"text","text":"a whole answer"}],` + + `"stop_reason":"end_turn","usage":{"input_tokens":1,"output_tokens":1}}`, + wantStop: "end_turn", wantTruncated: false, + }, + { + name: "amazon spells it LENGTH", + model: "amazon.titan-text-express-v1", + body: `{"inputTextTokenCount":1,"results":[{"tokenCount":1,"outputText":"half an ans","completionReason":"LENGTH"}]}`, + wantStop: "LENGTH", wantTruncated: true, + }, + { + name: "amazon spells finishing FINISH", + model: "amazon.titan-text-express-v1", + body: `{"inputTextTokenCount":1,"results":[{"tokenCount":1,"outputText":"a whole answer","completionReason":"FINISH"}]}`, + wantStop: "FINISH", wantTruncated: false, + }, + { + name: "ai21 out of budget", + model: "ai21.j2-ultra-v1", + body: `{"prompt":{"tokens":[]},"completions":[{"data":{"text":"half an ans","tokens":[]},"finishReason":{"reason":"length"}}]}`, + wantStop: "length", wantTruncated: true, + }, + { + name: "ai21 finished on its own", + model: "ai21.j2-ultra-v1", + body: `{"prompt":{"tokens":[]},"completions":[{"data":{"text":"a whole answer","tokens":[]},"finishReason":{"reason":"endoftext"}}]}`, + wantStop: "endoftext", wantTruncated: false, + }, + { + name: "ai21 jamba out of budget", + model: "ai21.jamba-1-5-large-v1:0", + body: `{"id":"x","choices":[{"index":0,"message":{"role":"assistant","content":"half an ans"},"finish_reason":"length"}],"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`, + wantStop: "length", wantTruncated: true, + }, + { + name: "cohere spells it MAX_TOKENS", + model: "cohere.command-text-v14", + body: `{"id":"x","generations":[{"id":"g","index":0,"finish_reason":"MAX_TOKENS","text":"half an ans"}]}`, + wantStop: "MAX_TOKENS", wantTruncated: true, + }, + { + name: "cohere command-r out of budget", + model: "cohere.command-r-v1:0", + body: `{"id":"x","text":"half an ans","finish_reason":"MAX_TOKENS"}`, + wantStop: "MAX_TOKENS", wantTruncated: true, + }, + { + name: "cohere command-r finished on its own", + model: "cohere.command-r-v1:0", + body: `{"id":"x","text":"a whole answer","finish_reason":"COMPLETE"}`, + wantStop: "COMPLETE", wantTruncated: false, + }, + { + name: "meta out of budget", + model: "meta.llama3-8b-instruct-v1:0", + body: `{"generation":"half an ans","prompt_token_count":1,"generation_token_count":1,"stop_reason":"length"}`, + wantStop: "length", wantTruncated: true, + }, + { + name: "nova out of budget", + model: "amazon.nova-lite-v1:0", + body: `{"output":{"message":{"content":[{"text":"half an ans"}],"role":"assistant"}},"stopReason":"max_tokens","usage":{"inputTokens":1,"outputTokens":1}}`, + wantStop: "max_tokens", wantTruncated: true, + }, + { + name: "nova finished on its own", + model: "amazon.nova-lite-v1:0", + body: `{"output":{"message":{"content":[{"text":"a whole answer"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"inputTokens":1,"outputTokens":1}}`, + wantStop: "end_turn", wantTruncated: false, + }, + { + name: "deepseek out of budget", + model: "deepseek.r1-v1:0", + body: `{"choices":[{"text":"half an ans","stop_reason":"length"}]}`, + wantStop: "length", wantTruncated: true, + }, + } +} + +func TestTruncationOnTheLegacyDoor(t *testing.T) { + t.Parallel() + + for _, tc := range legacyTruncationCases() { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + llm := truncationLLMWithBody(t, tc.body, bedrock.WithModel(tc.model)) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + if err != nil { + t.Fatalf("GenerateContent: %v", err) + } + if got := resp.Choices[0].Truncated; got != tc.wantTruncated { + t.Fatalf("Truncated = %v, want %v", got, tc.wantTruncated) + } + if got := resp.Choices[0].StopReason; got != tc.wantStop { + t.Fatalf("StopReason = %q, want the vendor's own %q", got, tc.wantStop) + } + }) + } +} diff --git a/llms/bedrock/turn_limits_test.go b/llms/bedrock/turn_limits_test.go new file mode 100644 index 000000000..254e9d896 --- /dev/null +++ b/llms/bedrock/turn_limits_test.go @@ -0,0 +1,95 @@ +package bedrock_test + +import ( + "context" + "errors" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func turnLimitMessages(last llms.ChatMessageType) []llms.MessageContent { + msgs := []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")} + if last == llms.ChatMessageTypeAI { + msgs = append(msgs, llms.TextParts(llms.ChatMessageTypeAI, "half an ")) + } + return msgs +} + +func TestBedrockRefusesTheSameTurnsAsThePrimaryDoor(t *testing.T) { + t.Parallel() + + for _, converse := range []bool{false, true} { + name := "invoke-model" + opts := []bedrock.Option{} + if converse { + name = "converse" + opts = append(opts, bedrock.WithConverseAPI()) + } + + t.Run(name+"/assistant prefill is refused before the request", func(t *testing.T) { + t.Parallel() + llm := truncationLLMWithBody(t, `{}`, + append([]bedrock.Option{bedrock.WithModel("us.anthropic.claude-opus-4-6-v1:0")}, opts...)...) + _, err := llm.GenerateContent(context.Background(), turnLimitMessages(llms.ChatMessageTypeAI)) + var target *reasoning.ErrAssistantPrefillUnsupported + if !errors.As(err, &target) { + t.Errorf("want ErrAssistantPrefillUnsupported, got %v", err) + } + }) + + t.Run(name+"/a forced tool with manual thinking is refused", func(t *testing.T) { + t.Parallel() + llm := truncationLLMWithBody(t, `{}`, + append([]bedrock.Option{bedrock.WithModel("us.anthropic.claude-sonnet-4-5-v1:0")}, opts...)...) + _, err := llm.GenerateContent(context.Background(), turnLimitMessages(llms.ChatMessageTypeHuman), + llms.WithReasoning(llms.ReasoningMedium, 2048), + llms.WithToolChoice(llms.ToolChoice{Type: "any"})) + var target *reasoning.ErrForcedToolUseWithThinking + if !errors.As(err, &target) { + t.Errorf("want ErrForcedToolUseWithThinking, got %v", err) + } + }) + + t.Run(name+"/a forced tool with a manual budget is refused on a generation that also does adaptive", func(t *testing.T) { + t.Parallel() + llm := truncationLLMWithBody(t, `{}`, + append([]bedrock.Option{bedrock.WithModel("us.anthropic.claude-opus-4-6-v1:0")}, opts...)...) + _, err := llm.GenerateContent(context.Background(), turnLimitMessages(llms.ChatMessageTypeHuman), + llms.WithReasoning(llms.ReasoningMedium, 2048), + llms.WithToolChoice(llms.ToolChoice{Type: "any"})) + var target *reasoning.ErrForcedToolUseWithThinking + if !errors.As(err, &target) { + t.Errorf("this door sends the budget itself, so the rule holds even off a budget-only generation: %v", err) + } + }) + + t.Run(name+"/a forced tool with adaptive thinking is allowed", func(t *testing.T) { + t.Parallel() + llm := truncationLLMWithBody(t, `{}`, + append([]bedrock.Option{bedrock.WithModel("us.anthropic.claude-sonnet-5-v1:0")}, opts...)...) + _, err := llm.GenerateContent(context.Background(), turnLimitMessages(llms.ChatMessageTypeHuman), + llms.WithAdaptiveReasoning(llms.ReasoningMedium), + llms.WithToolChoice(llms.ToolChoice{Type: "any"})) + var target *reasoning.ErrForcedToolUseWithThinking + if errors.As(err, &target) { + t.Errorf("adaptive thinking carries no manual budget, so the rule must not fire: %v", err) + } + }) + + t.Run(name+"/a non-Claude family is not refused for the same turn", func(t *testing.T) { + t.Parallel() + llm := truncationLLMWithBody(t, `{}`, + append([]bedrock.Option{bedrock.WithModel("us.amazon.nova-pro-v1:0")}, opts...)...) + _, err := llm.GenerateContent(context.Background(), turnLimitMessages(llms.ChatMessageTypeHuman), + llms.WithReasoning(llms.ReasoningMedium, 2048), + llms.WithToolChoice(llms.ToolChoice{Type: "any"})) + var target *reasoning.ErrForcedToolUseWithThinking + if errors.As(err, &target) { + t.Errorf("the Claude-only rule refused a family that never carries a thinking payload: %v", err) + } + }) + } +} diff --git a/llms/bedrock/unread_parity_test.go b/llms/bedrock/unread_parity_test.go new file mode 100644 index 000000000..b87bdad0b --- /dev/null +++ b/llms/bedrock/unread_parity_test.go @@ -0,0 +1,43 @@ +package bedrock_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" +) + +func TestBothBedrockDoorsReportTheOptionsNeitherReads(t *testing.T) { + t.Parallel() + + for _, door := range []struct { + name string + answer string + opts []bedrock.Option + }{ + {"legacy", legacyAnswer, []bedrock.Option{ + bedrock.WithModel("anthropic.claude-sonnet-4-5-v1:0"), + }}, + {"converse", converseAnswer, []bedrock.Option{ + bedrock.WithModel("anthropic.claude-sonnet-4-5-v1:0"), bedrock.WithConverseAPI(), + }}, + } { + t.Run(door.name, func(t *testing.T) { + t.Parallel() + + resp := bedrockWarningsFor(t, door.answer, door.opts, + llms.WithSeed(7), llms.WithVerbosity("low"), + llms.WithMinLength(10), llms.WithMaxLength(20), + llms.WithResponseMIMEType("application/json")) + + got := bedrockWarningsByOption(resp.Warnings) + for _, option := range []string{ + "WithSeed", "WithVerbosity", "WithMinLength", "WithMaxLength", "WithResponseMIMEType", + } { + require.Contains(t, got, option, "the request has no field for it: %v", resp.Warnings) + } + }) + } +} diff --git a/llms/bedrock/warnings.go b/llms/bedrock/warnings.go new file mode 100644 index 000000000..be62d29f7 --- /dev/null +++ b/llms/bedrock/warnings.go @@ -0,0 +1,42 @@ +package bedrock + +import ( + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock/internal/bedrockclient" +) + +func legacyCarriesPenalties(model string) bool { + return bedrockclient.GetProvider(model) == "ai21" && !bedrockclient.IsAi21Jamba(model) +} + +func legacyCarriesCandidateCount(model string) bool { + switch bedrockclient.GetProvider(model) { + case "ai21": + return true + case "cohere": + return !bedrockclient.IsCohereCommandR(model) + } + return false +} + +func unreadBedrockOptions(model string, converse bool, opts llms.CallOptions) []llms.Warning { + const unread = "the bedrock request for this model has no field for it" + + carried := []string{"WithTopK"} + if !converse { + if legacyCarriesPenalties(model) { + carried = append(carried, + "WithRepetitionPenalty", "WithFrequencyPenalty", "WithPresencePenalty") + } + if legacyCarriesCandidateCount(model) { + carried = append(carried, "WithCandidateCount") + } + } + + var warn llms.Warnings + warn.AddUnreadExtraBody(model, opts, extraBodyUnread) + warn.AddUnreadOptions(model, opts, unread, carried...) + return warn.List() +} + +const extraBodyUnread = "the door builds its request through a vendor SDK and has nowhere to merge them" diff --git a/llms/bedrock/warnings_test.go b/llms/bedrock/warnings_test.go new file mode 100644 index 000000000..d162759a1 --- /dev/null +++ b/llms/bedrock/warnings_test.go @@ -0,0 +1,184 @@ +package bedrock_test + +import ( + "context" + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/bedrock" +) + +func bedrockWarningsFor(t *testing.T, answer string, opts []bedrock.Option, call ...llms.CallOption) *llms.ContentResponse { + t.Helper() + + resp, _ := bedrockWarningsSending(t, answer, opts, call...) + return resp +} + +func bedrockWarningsSending( + t *testing.T, answer string, opts []bedrock.Option, call ...llms.CallOption, +) (*llms.ContentResponse, map[string]any) { + t.Helper() + + var body []byte + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + body, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, answer) + })) + t.Cleanup(srv.Close) + + llm := bedrockLLMAgainst(t, srv, opts...) + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, call...) + require.NoError(t, err) + var sent map[string]any + require.NoError(t, json.Unmarshal(body, &sent)) + return resp, sent +} + +func bedrockWarningsByOption(warnings []llms.Warning) map[string]llms.Warning { + byOption := make(map[string]llms.Warning, len(warnings)) + for _, w := range warnings { + byOption[w.Option] = w + } + return byOption +} + +func TestOptionsNeitherBedrockRequestCarriesAreReported(t *testing.T) { + t.Parallel() + + call := []llms.CallOption{ + llms.WithMaxTokens(1024), + llms.WithMinP(0.05), llms.WithRepetitionPenalty(1.1), + llms.WithFrequencyPenalty(0.3), llms.WithPresencePenalty(0.7), + llms.WithN(2), llms.WithCandidateCount(3), + llms.WithLogProbs(true), llms.WithTopLogProbs(5), + } + want := map[string]string{ + "WithMinP": "0.05", "WithRepetitionPenalty": "1.1", + "WithFrequencyPenalty": "0.3", "WithPresencePenalty": "0.7", + "WithN": "2", "WithCandidateCount": "3", + "WithLogProbs": "true", "WithTopLogProbs": "5", + } + + for _, door := range []struct { + name string + answer string + opts []bedrock.Option + }{ + {"legacy", legacyAnswer, []bedrock.Option{bedrock.WithModel("anthropic.claude-sonnet-4-5-v1:0")}}, + {"converse", converseAnswer, []bedrock.Option{ + bedrock.WithModel("anthropic.claude-sonnet-4-5-v1:0"), bedrock.WithConverseAPI(), + }}, + } { + t.Run(door.name, func(t *testing.T) { + t.Parallel() + + got := bedrockWarningsByOption(bedrockWarningsFor(t, door.answer, door.opts, call...).Warnings) + for option, asked := range want { + w, ok := got[option] + require.True(t, ok, "no %s warning on the %s door", option, door.name) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, asked, w.Asked) + } + }) + } +} + +func TestABedrockCallThatSetsNothingExtraCarriesNoSuchWarnings(t *testing.T) { + t.Parallel() + + resp := bedrockWarningsFor(t, legacyAnswer, + []bedrock.Option{bedrock.WithModel("anthropic.claude-sonnet-4-5-v1:0")}, + llms.WithMaxTokens(1024)) + + require.Empty(t, resp.Warnings) +} + +func TestAPayloadThatCarriesThePenaltiesReportsNoLoss(t *testing.T) { + t.Parallel() + + const ai21Answer = `{"completions":[{"data":{"text":"ok"},"finishReason":{"reason":"endoftext"}}]}` + + resp, sent := bedrockWarningsSending(t, ai21Answer, + []bedrock.Option{bedrock.WithModel("ai21.j2-ultra-v1")}, + llms.WithRepetitionPenalty(1.1), llms.WithFrequencyPenalty(0.3), + llms.WithPresencePenalty(0.7), llms.WithCandidateCount(3), + llms.WithMinP(0.05), + ) + + got := bedrockWarningsByOption(resp.Warnings) + for _, option := range []string{ + "WithRepetitionPenalty", "WithFrequencyPenalty", "WithPresencePenalty", "WithCandidateCount", + } { + require.NotContains(t, got, option, "the ai21 payload carries it: %v", resp.Warnings) + } + require.Contains(t, got, "WithMinP", "no payload carries min-p") + + for field, want := range map[string]any{ + "countPenalty": map[string]any{"scale": 1.1}, + "frequencyPenalty": map[string]any{"scale": 0.3}, + "presencePenalty": map[string]any{"scale": 0.7}, + "numResults": float64(3), + } { + require.Equal(t, want, sent[field], "%s on the ai21 payload", field) + } +} + +func TestTheConversePathReportsWhatTheLegacyPayloadWouldHaveCarried(t *testing.T) { + t.Parallel() + + resp := bedrockWarningsFor(t, converseAnswer, + []bedrock.Option{bedrock.WithModel("ai21.jamba-1-5-large-v1:0"), bedrock.WithConverseAPI()}, + llms.WithFrequencyPenalty(0.3), llms.WithCandidateCount(3), + ) + + got := bedrockWarningsByOption(resp.Warnings) + require.Contains(t, got, "WithFrequencyPenalty", "ConverseInput has no penalty field") + require.Contains(t, got, "WithCandidateCount", "ConverseInput has no candidate-count field") +} + +func TestAskingForJSONOnBedrockIsReported(t *testing.T) { + t.Parallel() + + resp := bedrockWarningsFor(t, legacyAnswer, + []bedrock.Option{bedrock.WithModel("anthropic.claude-sonnet-4-5-v1:0")}, + llms.WithJSONMode()) + + w, ok := bedrockWarningsByOption(resp.Warnings)["WithJSONMode"] + require.True(t, ok, "no json-mode warning in %v", resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) +} + +func TestExtraBodyNeitherBedrockDoorCanMergeIsReported(t *testing.T) { + t.Parallel() + + for _, door := range []struct { + name string + answer string + opts []bedrock.Option + }{ + {"legacy", legacyAnswer, []bedrock.Option{bedrock.WithModel("anthropic.claude-sonnet-4-5-v1:0")}}, + {"converse", converseAnswer, []bedrock.Option{ + bedrock.WithModel("anthropic.claude-sonnet-4-5-v1:0"), bedrock.WithConverseAPI(), + }}, + } { + t.Run(door.name, func(t *testing.T) { + t.Parallel() + + got := bedrockWarningsByOption(bedrockWarningsFor(t, door.answer, door.opts, + llms.WithExtraBody(map[string]any{"enable_thinking": false, "chat_template_kwargs": map[string]any{}})).Warnings) + w, ok := got["WithExtraBody"] + require.True(t, ok, "no extra-body warning on the %s door", door.name) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, "chat_template_kwargs, enable_thinking", w.Asked) + }) + } +} diff --git a/llms/cache/cache.go b/llms/cache/cache.go index 137082a92..085b64d50 100644 --- a/llms/cache/cache.go +++ b/llms/cache/cache.go @@ -65,11 +65,11 @@ func (c *Cacher) GenerateContent(ctx context.Context, messages []llms.MessageCon if len(response.Choices) > 0 { // only stream the first choice. if err := streaming.CallWithText(ctx, opts.StreamingFunc, response.Choices[0].Content); err != nil { - return nil, err + return response, err } } if err := streaming.CallWithDone(ctx, opts.StreamingFunc); err != nil { - return nil, err + return response, err } return response, nil @@ -77,14 +77,25 @@ func (c *Cacher) GenerateContent(ctx context.Context, messages []llms.MessageCon response, err := c.llm.GenerateContent(ctx, messages, options...) if err != nil { - return nil, err + return response, err } - c.cache.Put(ctx, key, response) + // The key encodes only the options that carry JSON, so a hit can serve a call + // that set different ones. + c.cache.Put(ctx, key, withoutWarnings(response)) return response, nil } +func withoutWarnings(response *llms.ContentResponse) *llms.ContentResponse { + if response == nil || len(response.Warnings) == 0 { + return response + } + stored := *response + stored.Warnings = nil + return &stored +} + // hashKeyForCache is a helper function that generates a unique key for a given // set of messages and call options. func hashKeyForCache(messages []llms.MessageContent, opts llms.CallOptions) (string, error) { diff --git a/llms/cache/cache_test.go b/llms/cache/cache_test.go index 5178ece0f..17ab2beb9 100644 --- a/llms/cache/cache_test.go +++ b/llms/cache/cache_test.go @@ -2,6 +2,7 @@ package cache import ( "context" + "errors" "testing" "github.com/vxcontrol/langchaingo/llms" @@ -174,3 +175,51 @@ func TestCache_Call_Streaming(t *testing.T) { rq.True(stream) rq.True(streamDone) } + +func TestAWarmCacheReturnsItsAnswerWhenTheConsumerGivesUp(t *testing.T) { + t.Parallel() + + answer := &llms.ContentResponse{ + Choices: []*llms.ContentChoice{{Content: "sixty rooms are free"}}, + } + llm := New(newMockLLM(answer, nil), newMockCache()) + msgs := []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")} + + _, err := llm.GenerateContent(context.Background(), msgs) + require.NoError(t, err, "the first call fills the cache") + + gaveUp := errors.New("consumer gave up") + resp, err := llm.GenerateContent(context.Background(), msgs, + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return gaveUp })) + + require.ErrorIs(t, err, gaveUp) + require.NotNil(t, resp, "the cached answer exists whether or not the consumer wanted it streamed") + require.Len(t, resp.Choices, 1) + require.Equal(t, "sixty rooms are free", resp.Choices[0].Content) +} + +func TestACachedAnswerDoesNotCarryTheFirstCallsWarnings(t *testing.T) { + t.Parallel() + + answer := &llms.ContentResponse{ + Choices: []*llms.ContentChoice{{Content: "sixty rooms are free"}}, + Warnings: []llms.Warning{{ + Kind: llms.WarningDrop, Option: "WithStreamingFunc", Model: "m", + Asked: "a callback", Reason: "the door builds no field for it", + }}, + } + inner := newMockLLM(answer, nil) + llm := New(inner, newMockCache()) + msgs := []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")} + + first, err := llm.GenerateContent(context.Background(), msgs, + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + require.NoError(t, err) + require.Len(t, first.Warnings, 1, "the call that reached the door keeps its own warning") + + second, err := llm.GenerateContent(context.Background(), msgs) + require.NoError(t, err) + require.Equal(t, 1, inner.called, "the second call is a cache hit") + require.Empty(t, second.Warnings, + "a caller that passed no streaming callback must not be told one was dropped") +} diff --git a/llms/cache/truncation_test.go b/llms/cache/truncation_test.go new file mode 100644 index 000000000..6d8a358c1 --- /dev/null +++ b/llms/cache/truncation_test.go @@ -0,0 +1,29 @@ +package cache + +import ( + "testing" + + "github.com/stretchr/testify/require" + "github.com/vxcontrol/langchaingo/llms" +) + +func TestPartialAnswerTravelsWithTheError(t *testing.T) { + t.Parallel() + + partial := &llms.ContentResponse{Choices: []*llms.ContentChoice{{ + Content: "half an answ", + StopReason: "length", + Truncated: true, + }}} + llm := newMockLLM(partial, llms.NewError(llms.ErrCodeTruncated, "", "stopped at the output token limit")) + backend := newMockCache() + + resp, err := New(llm, backend).GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + + require.Error(t, err) + require.NotNil(t, resp, "the partial answer must reach the caller alongside the error") + require.Equal(t, "half an answ", resp.Choices[0].Content) + require.True(t, resp.Choices[0].Truncated) + require.Zero(t, backend.puts, "a failed generation must not be cached") +} diff --git a/llms/count_tokens.go b/llms/count_tokens.go index 844a3a1ab..3960a7977 100644 --- a/llms/count_tokens.go +++ b/llms/count_tokens.go @@ -2,6 +2,7 @@ package llms import ( "log" + "strings" "github.com/pkoukk/tiktoken-go" ) @@ -62,6 +63,11 @@ var modelToContextSize = map[string]int{ // GetModelContextSize gets the max number of tokens for a language model. If the model // name isn't recognized the default value 2048 is returned. +// +// Deprecated: the table it reads covers only GPT-3.5, GPT-4, GPT-4o and the +// legacy completion models, so every current model falls through to 2048 — +// orders of magnitude below its real window. Ask the provider for the window, +// or carry it in your own configuration. func GetModelContextSize(model string) int { contextSize, ok := modelToContextSize[model] if !ok { @@ -70,20 +76,41 @@ func GetModelContextSize(model string) int { return contextSize } -// CountTokens gets the number of tokens the text contains. +// CountTokens gets the number of tokens the text contains. A model tiktoken +// maps to an encoding is counted with that encoding; any other model, the empty +// name included, gets an approximation of one token per four runes. No fallback +// encoding is tried: tiktoken-go has no "gpt2" encoding, and each encoding it +// has is downloaded on first use, which would make the count depend on the +// network. func CountTokens(model, text string) int { e, err := tiktoken.EncodingForModel(model) if err != nil { - e, err = tiktoken.GetEncoding("gpt2") - if err != nil { - log.Printf("[WARN] Failed to calculate number of tokens for model, falling back to approximate count") - return len([]rune(text)) / _tokenApproximation + if tiktokenMapsModel(model) { + log.Printf("[WARN] Failed to load the token encoding for model %s, falling back to approximate count: %v", + model, err) } + return len([]rune(text)) / _tokenApproximation } return len(e.Encode(text, nil, nil)) } +// tiktokenMapsModel reports whether tiktoken names an encoding for the model. +func tiktokenMapsModel(model string) bool { + if _, ok := tiktoken.MODEL_TO_ENCODING[model]; ok { + return true + } + for prefix := range tiktoken.MODEL_PREFIX_TO_ENCODING { + if strings.HasPrefix(model, prefix) { + return true + } + } + return false +} + // CalculateMaxTokens calculates the max number of tokens that could be added to a text. +// +// Deprecated: it derives the budget from GetModelContextSize, which no longer +// recognizes current models. func CalculateMaxTokens(model, text string) int { return GetModelContextSize(model) - CountTokens(model, text) } diff --git a/llms/count_tokens_test.go b/llms/count_tokens_test.go index 7faa5abe6..067d87b5f 100644 --- a/llms/count_tokens_test.go +++ b/llms/count_tokens_test.go @@ -1,8 +1,13 @@ package llms import ( + "bytes" + "errors" + "log" + "sync/atomic" "testing" + "github.com/pkoukk/tiktoken-go" "github.com/stretchr/testify/assert" ) @@ -13,6 +18,43 @@ func TestCountTokens(t *testing.T) { assert.Equal(t, expectedNumTokens, numTokens) } +// failingBpeLoader stands in for the download of an encoding. +type failingBpeLoader struct { + calls atomic.Int32 +} + +func (l *failingBpeLoader) LoadTiktokenBpe(string) (map[string]int, error) { + l.calls.Add(1) + return nil, errors.New("encoding download disabled") +} + +// TestCountTokensApproximation swaps the package-wide tiktoken loader and log +// output, so it does not run in parallel. +func TestCountTokensApproximation(t *testing.T) { + loader := &failingBpeLoader{} + tiktoken.SetBpeLoader(loader) + var logs bytes.Buffer + logWriter := log.Writer() + log.SetOutput(&logs) + t.Cleanup(func() { + tiktoken.SetBpeLoader(tiktoken.NewDefaultBpeLoader()) + log.SetOutput(logWriter) + }) + + text := "naïve café" // 10 runes in 12 bytes + + // A model tiktoken does not map is approximated without a download or a warning. + assert.Equal(t, 2, CountTokens("", text)) + assert.Equal(t, 2, CountTokens("claude-sonnet-4", text)) + assert.Zero(t, loader.calls.Load()) + assert.Empty(t, logs.String()) + + // A mapped model whose encoding cannot be loaded is approximated with a warning. + assert.Equal(t, 2, CountTokens("text-davinci-001", text)) + assert.Equal(t, int32(1), loader.calls.Load()) + assert.Contains(t, logs.String(), "[WARN] Failed to load the token encoding for model text-davinci-001") +} + func TestGetModelContextSize(t *testing.T) { t.Parallel() tests := []struct { diff --git a/llms/errors.go b/llms/errors.go index c9fc2beed..6ed8eaa8b 100644 --- a/llms/errors.go +++ b/llms/errors.go @@ -45,6 +45,9 @@ const ( // ErrCodeNotImplemented indicates a feature is not implemented. ErrCodeNotImplemented ErrorCode = "not_implemented" + + // ErrCodeTruncated indicates generation stopped at the output token limit. + ErrCodeTruncated ErrorCode = "truncated" ) // Error represents a standardized error from an LLM provider. @@ -185,6 +188,13 @@ func IsNotImplementedError(err error) bool { return errors.As(err, &e) && e.Code == ErrCodeNotImplemented } +// IsTruncatedError returns true if the error reports an answer that stopped at +// the output token limit. +func IsTruncatedError(err error) bool { + var e *Error + return errors.As(err, &e) && e.Code == ErrCodeTruncated +} + // Common error variables for easy comparison. var ( // ErrAuthentication is returned when authentication fails. @@ -216,4 +226,42 @@ var ( // ErrNotImplemented is returned when a feature is not implemented. ErrNotImplemented = &Error{Code: ErrCodeNotImplemented} + + // ErrTruncated is returned when an answer stopped at the output token limit. + ErrTruncated = &Error{Code: ErrCodeTruncated} ) + +// ErrModelRefusal is returned when the model declines to respond rather than +// failing: Anthropic reports it as stop_reason "refusal", OpenAI as a refusal +// message under Structured Outputs. It is distinct from an empty or failed +// response; any refusal text the model returned is in Message. Category and +// Explanation carry the vendor's classification where it sends one. InputTokens +// counts only the uncached input: the whole billed prompt is the sum of the +// three input counts. +type ErrModelRefusal struct { + Provider string + Message string + Category string + Explanation string + InputTokens int + OutputTokens int + CacheCreationInputTokens int + CacheReadInputTokens int +} + +func (e *ErrModelRefusal) Error() string { + msg := "model refused to respond" + if e.Provider != "" { + msg = e.Provider + ": " + msg + } + if e.Category != "" { + msg += " (" + e.Category + ")" + } + if e.Explanation != "" { + msg += " (" + e.Explanation + ")" + } + if e.Message != "" { + msg += ": " + e.Message + } + return msg +} diff --git a/llms/fake/fakellm.go b/llms/fake/fakellm.go index 456a5ef5b..011a12acb 100644 --- a/llms/fake/fakellm.go +++ b/llms/fake/fakellm.go @@ -3,9 +3,11 @@ package fake import ( "context" "errors" + "strings" "sync" "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" ) type LLM struct { @@ -22,11 +24,10 @@ func NewFakeLLM(responses []string) *LLM { } // GenerateContent generate fake content. -func (f *LLM) GenerateContent(_ context.Context, _ []llms.MessageContent, _ ...llms.CallOption) (*llms.ContentResponse, error) { +func (f *LLM) GenerateContent(ctx context.Context, _ []llms.MessageContent, options ...llms.CallOption) (*llms.ContentResponse, error) { f.mu.Lock() - defer f.mu.Unlock() - if len(f.responses) == 0 { + f.mu.Unlock() return nil, errors.New("no responses configured") } if f.index >= len(f.responses) { @@ -34,6 +35,25 @@ func (f *LLM) GenerateContent(_ context.Context, _ []llms.MessageContent, _ ...l } response := f.responses[f.index] f.index++ + f.mu.Unlock() + + opts := llms.CallOptions{} + for _, opt := range options { + opt(&opts) + } + if opts.StreamingFunc != nil { + var sent strings.Builder + for _, part := range strings.SplitAfter(response, " ") { + sent.WriteString(part) + if err := streaming.CallWithText(ctx, opts.StreamingFunc, part); err != nil { + return partialResponse(sent.String()), err + } + } + if err := streaming.CallWithDone(ctx, opts.StreamingFunc); err != nil { + return partialResponse(sent.String()), err + } + } + return &llms.ContentResponse{ Choices: []*llms.ContentChoice{{Content: response}}, }, nil @@ -64,3 +84,9 @@ func (f *LLM) AddResponse(response string) { f.responses = append(f.responses, response) f.mu.Unlock() } + +func partialResponse(content string) *llms.ContentResponse { + return &llms.ContentResponse{ + Choices: []*llms.ContentChoice{{Content: content}}, + } +} diff --git a/llms/fake/llmtest_test.go b/llms/fake/llmtest_test.go index c5c3600cd..a734a15ba 100644 --- a/llms/fake/llmtest_test.go +++ b/llms/fake/llmtest_test.go @@ -35,5 +35,5 @@ func TestLLM(t *testing.T) { llm := NewFakeLLM(responses) // Test basic functionality only - llmtest.TestLLM(t, llm) + llmtest.TestLLM(t, llm, llmtest.WithoutToolCalls()) } diff --git a/llms/fake/stream_cancel_test.go b/llms/fake/stream_cancel_test.go new file mode 100644 index 000000000..b84ba7708 --- /dev/null +++ b/llms/fake/stream_cancel_test.go @@ -0,0 +1,55 @@ +package fake_test + +import ( + "context" + "errors" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/fake" + "github.com/vxcontrol/langchaingo/llms/streaming" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +var errGaveUp = errors.New("the consumer gave up") + +func TestAConsumerThatGivesUpStillGetsWhatArrived(t *testing.T) { + t.Parallel() + + llm := fake.NewFakeLLM([]string{"sixty rooms are free"}) + + delivered := 0 + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, + llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type != streaming.ChunkTypeText { + return nil + } + delivered++ + if delivered == 2 { + return errGaveUp + } + return nil + })) + + require.ErrorIs(t, err, errGaveUp) + require.NotNil(t, resp, "a real door hands back the text it collected; the fake must too") + require.NotEmpty(t, resp.Choices) + assert.Equal(t, "sixty rooms ", resp.Choices[0].Content) +} + +func TestAStreamNobodyInterruptsStillReturnsEverything(t *testing.T) { + t.Parallel() + + llm := fake.NewFakeLLM([]string{"sixty rooms are free"}) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + + require.NoError(t, err) + require.NotEmpty(t, resp.Choices) + assert.Equal(t, "sixty rooms are free", resp.Choices[0].Content) +} diff --git a/llms/generatecontent.go b/llms/generatecontent.go index b6698538a..895f20e9a 100644 --- a/llms/generatecontent.go +++ b/llms/generatecontent.go @@ -150,6 +150,10 @@ func (ToolCallResponse) isPart() {} // It can potentially return multiple content choices. type ContentResponse struct { Choices []*ContentChoice + + // Warnings lists the caller options this request lost, clamped or replaced. + // An empty list is not a promise that every option reached the vendor. + Warnings []Warning } // ContentChoice is one of the response choices returned by GenerateContent @@ -161,6 +165,10 @@ type ContentChoice struct { // StopReason is the reason the model stopped generating output. StopReason string + // Truncated reports whether generation stopped at the output token limit, + // derived from StopReason, which keeps the vendor's own spelling. + Truncated bool + // GenerationInfo is arbitrary information the model adds to the response. GenerationInfo map[string]any diff --git a/llms/googleai/README.md b/llms/googleai/README.md index d07f58e6c..4883b66f4 100644 --- a/llms/googleai/README.md +++ b/llms/googleai/README.md @@ -7,16 +7,17 @@ This directory contains langchaingo provider for Google's models. * In the `palm` directory: provider for the legacy PaLM models. Both the `googleai` and `vertex` providers give access to Gemini-family -multi-modal LLMs. The code between these providers was historically very similar, -and most of the `vertex` package used to be code-generated from the `googleai` -package. +multi-modal LLMs, and both now run on one SDK, `google.golang.org/genai`, which +reaches either backend from the same client. -That generator is now **obsolete and must not be run**: the two packages target -different SDKs — `googleai` uses `google.golang.org/genai` while `vertex` uses -`cloud.google.com/go/vertexai/genai` — so their sources have legitimately -diverged. The `vertex` package is now **hand-maintained**. The former generator at -`llms/googleai/internal/cmd/generate-vertex.go` exits with an error explaining -this; migrating `vertex` onto the unified SDK is tracked as separate future work. +The `vertex` package is therefore a thin wrapper: it fixes the backend to Vertex +AI, takes the cloud project and location from options or from +`GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION`, and refuses to start without +them. Every capability — generation, streaming, tools, thinking, structured +output, embeddings — comes from the `googleai` door, so the two cannot drift +apart. The package used to carry its own copy of that adapter on the deprecated +`cloud.google.com/go/vertexai/genai` SDK, along with a code generator; both are +gone. ---- diff --git a/llms/googleai/adaptive_delegation_test.go b/llms/googleai/adaptive_delegation_test.go new file mode 100644 index 000000000..474425cf8 --- /dev/null +++ b/llms/googleai/adaptive_delegation_test.go @@ -0,0 +1,61 @@ +package googleai + +import ( + "testing" + + "github.com/vxcontrol/langchaingo/llms" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "google.golang.org/genai" +) + +func TestNoFamilyInventsADepthTheCallerHandedToTheVendor(t *testing.T) { + t.Parallel() + + for model, carriesBudget := range map[string]bool{ + "gemma-4-27b-it": false, + "gemini-3.5-flash": false, + "gemini-2.5-flash": true, // its dynamic budget of -1 IS "the vendor decides" + } { + t.Run(model, func(t *testing.T) { + t.Parallel() + + config, err := resolveThinkingConfig(model, &llms.ReasoningConfig{Adaptive: true}, 0) + require.NoError(t, err) + require.NotNil(t, config) + assert.Empty(t, config.ThinkingLevel, "%s: the level is the vendor's to choose", model) + assert.True(t, config.IncludeThoughts) + + if carriesBudget { + require.NotNil(t, config.ThinkingBudget) + assert.Equal(t, int32(-1), *config.ThinkingBudget) + return + } + assert.Nil(t, config.ThinkingBudget, + "%s takes a level, so a budget is a depth it never asked for", model) + }) + } +} + +func TestAnEffortTheCallerNamedStillPicksTheLevel(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + effort llms.ReasoningEffort + want genai.ThinkingLevel + why string + }{ + {"gemini-3.5-flash", llms.ReasoningLow, genai.ThinkingLevelLow, "a named effort is a depth the caller chose"}, + {"gemma-4-27b-it", llms.ReasoningHigh, genai.ThinkingLevelHigh, "a named effort is a depth the caller chose"}, + {"gemma-4-27b-it", llms.ReasoningLow, genai.ThinkingLevelHigh, "this family only switches thinking on, and on is HIGH"}, + } { + config, err := resolveThinkingConfig(tc.model, + &llms.ReasoningConfig{Adaptive: true, Effort: tc.effort}, 0) + require.NoError(t, err) + require.NotNil(t, config) + assert.Equal(t, tc.want, config.ThinkingLevel, "%s %s: %s", tc.model, tc.effort, tc.why) + assert.Nil(t, config.ThinkingBudget, "%s takes a level, not a budget", tc.model) + } +} diff --git a/llms/googleai/blocked_prompt_test.go b/llms/googleai/blocked_prompt_test.go new file mode 100644 index 000000000..ef64f2720 --- /dev/null +++ b/llms/googleai/blocked_prompt_test.go @@ -0,0 +1,45 @@ +package googleai + +import ( + "bytes" + "context" + "io" + "net/http" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +type blockedPrompt struct{} + +func (blockedPrompt) RoundTrip(r *http.Request) (*http.Response, error) { + const body = `{"candidates":[],"promptFeedback":{"blockReason":"SAFETY",` + + `"blockReasonMessage":"the prompt was rejected by the safety filter"}}` + return &http.Response{ + StatusCode: http.StatusOK, + Header: http.Header{"Content-Type": []string{"application/json"}}, + Body: io.NopCloser(bytes.NewReader([]byte(body))), + Request: r, + }, nil +} + +func TestABlockedPromptIsNamedOnTheWholeAnswerPathToo(t *testing.T) { + t.Parallel() + + llm, err := New(context.Background(), + WithAPIKey("unit-test-key"), WithRest(), + WithDefaultModel("gemini-2.5-flash"), + WithHTTPClient(&http.Client{Transport: blockedPrompt{}})) + require.NoError(t, err) + + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + + var apiErr *llms.Error + require.ErrorAs(t, err, &apiErr, "a blocked prompt must not read as an empty response") + assert.Equal(t, llms.ErrCodeContentFilter, apiErr.Code) + assert.Contains(t, apiErr.Message, "SAFETY") +} diff --git a/llms/googleai/credentials.go b/llms/googleai/credentials.go new file mode 100644 index 000000000..a83c60fea --- /dev/null +++ b/llms/googleai/credentials.go @@ -0,0 +1,27 @@ +package googleai + +import ( + "fmt" + + "cloud.google.com/go/auth" + "cloud.google.com/go/auth/credentials" +) + +const cloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform" + +func (o *Options) detectCredentials() (*auth.Credentials, error) { + if o.credentialsFile == "" && len(o.credentialsJSON) == 0 { + return nil, nil //nolint:nilnil // no credentials named is not an error + } + + detected, err := credentials.DetectDefault(&credentials.DetectOptions{ + CredentialsFile: o.credentialsFile, + CredentialsJSON: o.credentialsJSON, + Scopes: []string{cloudPlatformScope}, + }) + if err != nil { + return nil, fmt.Errorf("googleai: the credentials the caller named cannot be read: %w", err) + } + + return detected, nil +} diff --git a/llms/googleai/credentials_test.go b/llms/googleai/credentials_test.go new file mode 100644 index 000000000..ad62c1b5a --- /dev/null +++ b/llms/googleai/credentials_test.go @@ -0,0 +1,61 @@ +package googleai + +import ( + "os" + "path/filepath" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +const refreshTokenCredentials = `{"type":"authorized_user","client_id":"id.apps.googleusercontent.com",` + + `"client_secret":"secret","refresh_token":"token"}` + +func credentialsFile(t *testing.T) string { + t.Helper() + + path := filepath.Join(t.TempDir(), "credentials.json") + require.NoError(t, os.WriteFile(path, []byte(refreshTokenCredentials), 0o600)) + + return path +} + +func TestTheCallerCanNameACredentialsFile(t *testing.T) { + t.Parallel() + + client, err := New(t.Context(), + WithCloudProject("p"), WithCloudLocation("europe-west4"), + WithCredentialsFile(credentialsFile(t))) + require.NoError(t, err, "a service account is how the Vertex backend is authenticated") + require.NotNil(t, client) +} + +func TestTheCallerCanHandOverCredentialsJSON(t *testing.T) { + t.Parallel() + + client, err := New(t.Context(), + WithCloudProject("p"), WithCloudLocation("europe-west4"), + WithCredentialsJSON([]byte(refreshTokenCredentials))) + require.NoError(t, err) + require.NotNil(t, client) +} + +func TestCredentialsThatCannotBeReadAreReportedToTheCaller(t *testing.T) { + t.Parallel() + + _, err := New(t.Context(), + WithCloudProject("p"), WithCloudLocation("europe-west4"), + WithCredentialsFile(filepath.Join(t.TempDir(), "missing.json"))) + require.Error(t, err) + assert.Contains(t, err.Error(), "cannot be read") +} + +func TestACallerWhoNamedNoCredentialsKeepsTheDefaultChain(t *testing.T) { + t.Parallel() + + options := DefaultOptions() + detected, err := options.detectCredentials() + require.NoError(t, err) + assert.Nil(t, detected, "application default credentials stay in charge") +} diff --git a/llms/googleai/embed_short_response_test.go b/llms/googleai/embed_short_response_test.go new file mode 100644 index 000000000..cef27be80 --- /dev/null +++ b/llms/googleai/embed_short_response_test.go @@ -0,0 +1,57 @@ +package googleai + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func embedAgainst(t *testing.T, body string, inputs ...string) ([][]float32, error) { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, body) + })) + t.Cleanup(srv.Close) + + llm, err := New(context.Background(), + WithAPIKey("k"), + WithDefaultEmbeddingModel("text-embedding-004"), + WithHTTPClient(&http.Client{Transport: &toLocalServer{host: srv.Listener.Addr().String()}})) + require.NoError(t, err) + return llm.CreateEmbedding(context.Background(), inputs) +} + +func TestAnEmptyEmbeddingListIsAFailure(t *testing.T) { + t.Parallel() + + got, err := embedAgainst(t, `{"embeddings":[]}`, "one") + + require.ErrorIs(t, err, ErrEmptyEmbeddings) + assert.Nil(t, got, "a caller that gets an error must not also get a slice to index") +} + +func TestFewerEmbeddingsThanInputsIsAFailure(t *testing.T) { + t.Parallel() + + got, err := embedAgainst(t, `{"embeddings":[{"values":[0.1,0.2]}]}`, "one", "two") + + require.ErrorIs(t, err, ErrShortEmbeddings) + assert.Nil(t, got) +} + +func TestOneEmbeddingPerInputIsTheHappyPath(t *testing.T) { + t.Parallel() + + got, err := embedAgainst(t, `{"embeddings":[{"values":[0.1,0.2]},{"values":[0.3,0.4]}]}`, "one", "two") + + require.NoError(t, err) + require.Len(t, got, 2) + assert.InDelta(t, float32(0.3), got[1][0], 1e-6) +} diff --git a/llms/googleai/embeddings.go b/llms/googleai/embeddings.go index 3b559b174..422289890 100644 --- a/llms/googleai/embeddings.go +++ b/llms/googleai/embeddings.go @@ -2,11 +2,17 @@ package googleai import ( "context" + "errors" "fmt" "google.golang.org/genai" ) +var ( + ErrEmptyEmbeddings = errors.New("googleai: the vendor returned no embeddings") + ErrShortEmbeddings = errors.New("googleai: fewer embeddings than inputs") +) + // CreateEmbedding creates embeddings from texts. func (g *GoogleAI) CreateEmbedding(ctx context.Context, texts []string) ([][]float32, error) { if len(texts) == 0 { @@ -31,6 +37,13 @@ func (g *GoogleAI) CreateEmbedding(ctx context.Context, texts []string) ([][]flo results = append(results, batchResults...) } + if len(results) == 0 { + return nil, ErrEmptyEmbeddings + } + if len(results) != len(texts) { + return nil, ErrShortEmbeddings + } + return results, nil } diff --git a/llms/googleai/empty_stream_test.go b/llms/googleai/empty_stream_test.go new file mode 100644 index 000000000..af6af9a45 --- /dev/null +++ b/llms/googleai/empty_stream_test.go @@ -0,0 +1,120 @@ +package googleai + +import ( + "bytes" + "context" + "errors" + "io" + "net/http" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +type emptyStream struct{} + +func (emptyStream) RoundTrip(r *http.Request) (*http.Response, error) { + return &http.Response{ + StatusCode: http.StatusOK, + Header: http.Header{"Content-Type": []string{"text/event-stream"}}, + Body: io.NopCloser(bytes.NewReader(nil)), + Request: r, + }, nil +} + +func TestStreamWithoutCandidatesIsNotASilentSuccess(t *testing.T) { + t.Parallel() + + llm, err := New(context.Background(), + WithAPIKey("unit-test-key"), WithRest(), + WithDefaultModel("gemini-2.5-flash"), + WithHTTPClient(&http.Client{Transport: emptyStream{}})) + require.NoError(t, err) + + msgs := []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")} + sink := func(context.Context, streaming.Chunk) error { return nil } + + resp, err := llm.GenerateContent(context.Background(), msgs, + llms.WithMaxTokens(24), llms.WithStreamingFunc(sink)) + + require.Error(t, err, "an empty answer with no stop reason must not look like a success") + var apiErr *llms.Error + require.ErrorAs(t, err, &apiErr) + assert.Equal(t, llms.ErrCodeTokenLimit, apiErr.Code) + require.NotNil(t, resp) + assert.Empty(t, resp.Choices[0].Content) +} + +type failedStream struct{} + +func (failedStream) RoundTrip(r *http.Request) (*http.Response, error) { + body := `{"error":{"code":429,"message":"Resource has been exhausted (e.g. check quota).","status":"RESOURCE_EXHAUSTED"}}` + return &http.Response{ + StatusCode: http.StatusTooManyRequests, + Header: http.Header{"Content-Type": []string{"application/json"}}, + Body: io.NopCloser(bytes.NewReader([]byte(body))), + Request: r, + }, nil +} + +func TestARealStreamErrorIsNotBlamedOnTheBudget(t *testing.T) { + t.Parallel() + + llm, err := New(context.Background(), + WithAPIKey("unit-test-key"), WithRest(), + WithDefaultModel("gemini-2.5-flash"), + WithHTTPClient(&http.Client{Transport: failedStream{}})) + require.NoError(t, err) + + msgs := []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")} + sink := func(context.Context, streaming.Chunk) error { return nil } + + _, err = llm.GenerateContent(context.Background(), msgs, + llms.WithMaxTokens(24), llms.WithStreamingFunc(sink)) + + require.Error(t, err) + assert.Contains(t, err.Error(), "429", + "a stream that failed HTTP must surface its own error, not a budget guess") + var apiErr *llms.Error + if errors.As(err, &apiErr) { + assert.NotEqual(t, llms.ErrCodeTokenLimit, apiErr.Code, + "a set max_tokens must not mask the real stream failure") + } +} + +type blockedPromptStream struct{} + +func (blockedPromptStream) RoundTrip(r *http.Request) (*http.Response, error) { + const event = "data: {\"promptFeedback\":{\"blockReason\":\"SAFETY\"," + + "\"blockReasonMessage\":\"the prompt was rejected\"},\"candidates\":[]}\n\n" + return &http.Response{ + StatusCode: http.StatusOK, + Header: http.Header{"Content-Type": []string{"text/event-stream"}}, + Body: io.NopCloser(bytes.NewReader([]byte(event))), + Request: r, + }, nil +} + +func TestABlockedPromptIsNotBlamedOnTheBudget(t *testing.T) { + t.Parallel() + + llm, err := New(context.Background(), + WithRest(), WithAPIKey("test-key"), WithDefaultModel("gemini-2.5-flash"), + WithHTTPClient(&http.Client{Transport: blockedPromptStream{}})) + require.NoError(t, err) + + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithMaxTokens(16384), + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + + var apiErr *llms.Error + require.ErrorAs(t, err, &apiErr) + assert.Equal(t, llms.ErrCodeContentFilter, apiErr.Code, + "a blocked prompt must not be reported as a budget that is too small") + assert.Contains(t, apiErr.Message, "SAFETY") +} diff --git a/llms/googleai/googleai.go b/llms/googleai/googleai.go index 5a7111904..4a403fcc1 100644 --- a/llms/googleai/googleai.go +++ b/llms/googleai/googleai.go @@ -10,9 +10,12 @@ import ( "errors" "fmt" "io" + "slices" "strings" "github.com/vxcontrol/langchaingo/internal/imageutil" + "github.com/vxcontrol/langchaingo/internal/numutil" + "github.com/vxcontrol/langchaingo/internal/toolcall" "github.com/vxcontrol/langchaingo/llms" "github.com/vxcontrol/langchaingo/llms/reasoning" "github.com/vxcontrol/langchaingo/llms/streaming" @@ -103,32 +106,21 @@ func (g *GoogleAI) GenerateContent( Model: getStringPointer(g.opts.DefaultModel), CandidateCount: getIntPointer(g.opts.DefaultCandidateCount), MaxTokens: getIntPointer(g.opts.DefaultMaxTokens), - TopP: getFloatPointer(g.opts.DefaultTopP), - TopK: getIntPointer(g.opts.DefaultTopK), + } + if g.opts.topPFromCaller || g.opts.DefaultTopP != 0 { + opts.TopP = getFloatPointer(g.opts.DefaultTopP) + } + if g.opts.topKFromCaller || g.opts.DefaultTopK != 0 { + opts.TopK = getIntPointer(g.opts.DefaultTopK) } for _, opt := range options { opt(&opts) } - - // Default temperature only when the caller left it unset; an explicit value is - // preserved. - if opts.Temperature == nil { - opts.Temperature = getFloatPointer(resolveTemperature(opts.GetModel(), g.opts.DefaultTemperature)) + if temperature, ok := g.opts.defaultTemperature(); ok && opts.Temperature == nil { + opts.Temperature = &temperature } - // Build generation config - temperature := convertToFloat32Pointer(opts.Temperature) - topP := convertToFloat32Pointer(opts.TopP) - topK := convertIntToFloat32Pointer(opts.TopK) - - config := &genai.GenerateContentConfig{ - CandidateCount: convertToInt32(opts.CandidateCount), - MaxOutputTokens: convertToInt32(opts.MaxTokens), - Temperature: temperature, - TopP: topP, - TopK: topK, - StopSequences: opts.StopWords, - } + config := newGenerationConfig(opts) // Check for cached content if opts.Metadata != nil { @@ -159,6 +151,9 @@ func (g *GoogleAI) GenerateContent( } config.Tools = tools } + if toolConfig := googleToolConfig(opts.ToolChoice); toolConfig != nil { + config.ToolConfig = toolConfig + } // Add safety settings config.SafetySettings = []*genai.SafetySetting{ @@ -180,6 +175,9 @@ func (g *GoogleAI) GenerateContent( }, } + warn := &llms.Warnings{} + reportGoogleAIOptions(warn, opts.GetModel(), opts, tc) + var response *llms.ContentResponse if len(messages) == 1 { @@ -191,8 +189,15 @@ func (g *GoogleAI) GenerateContent( } else { response, err = g.generateFromMessages(ctx, opts.GetModel(), messages, config, &opts) } + if response != nil { + response.Warnings = warn.List() + } if err != nil { - return nil, err + return response, err + } + + if err := llms.CheckTruncation(response, opts); err != nil { + return response, err } // When structured output was requested, validate each normal-final candidate @@ -251,19 +256,11 @@ func applyGoogleResponseFormat(config *genai.GenerateContentConfig, opts *llms.C // outcomes keep their prior semantics and are not validated as final JSON. func validateGoogleStructuredOutput(opts *llms.CallOptions, resp *llms.ContentResponse) error { so := opts.StructuredOutput - if so == nil || resp == nil { + if so == nil { return nil } - model := opts.GetModel() - for i, choice := range resp.Choices { - if choice.StopReason != string(genai.FinishReasonStop) { - continue - } - if err := structuredoutput.Validate(so.Schema, providerGoogleAI, model, i, choice.StopReason, choice.Content); err != nil { - return err - } - } - return nil + return structuredoutput.ValidateFinalChoices( + so.Schema, providerGoogleAI, opts.GetModel(), string(genai.FinishReasonStop), resp) } func (g *GoogleAI) generateFromSingleMessage( @@ -320,6 +317,9 @@ func (g *GoogleAI) generateFromMessages( if systemInstruction != nil { config.SystemInstruction = systemInstruction } + if reasoning.GeminiUsesThinkingLevel(model) { + signCurrentTurn(contents) + } if opts.StreamingFunc == nil { resp, err := g.client.Models.GenerateContent(ctx, model, contents, config) @@ -332,6 +332,37 @@ func (g *GoogleAI) generateFromMessages( return g.generateStreamingContent(ctx, model, contents, config, opts) } +// geminiSignaturePlaceholder is the value Google documents for a function call +// whose history holds no signature, such as one carried over from another model. +const geminiSignaturePlaceholder = "skip_thought_signature_validator" + +// signCurrentTurn gives the first function call of each model step in the current +// turn the placeholder when it has no signature. +func signCurrentTurn(contents []*genai.Content) { + start := -1 + for i, content := range contents { + if content.Role == RoleUser && slices.ContainsFunc(content.Parts, func(part *genai.Part) bool { + return part.FunctionResponse == nil + }) { + start = i + } + } + for _, content := range contents[start+1:] { + if content.Role != RoleModel { + continue + } + for _, part := range content.Parts { + if part.FunctionCall == nil { + continue + } + if len(part.ThoughtSignature) == 0 { + part.ThoughtSignature = []byte(geminiSignaturePlaceholder) + } + break + } + } +} + func (g *GoogleAI) generateStreamingContent( ctx context.Context, model string, @@ -349,24 +380,17 @@ func (g *GoogleAI) generateStreamingContent( var thoughtSignature []byte var lastUsageMetadata *genai.GenerateContentResponseUsageMetadata var lastCandidate *genai.Candidate + var blockReason *genai.GenerateContentResponsePromptFeedback var streamErr error - // Trying to keep the same ID for the same tool call name - toolCallIDs := make(map[string]string) - ensureStreamFunctionCallID := func(name, id string) string { - if rid, ok := toolCallIDs[name]; id == "" && ok { - return rid - } - toolCallIDs[name] = ensureFunctionCallID(id) - return toolCallIDs[name] - } - for chunk, err := range iter { if err != nil { - return nil, fmt.Errorf("error generating content: %w", err) + streamErr = fmt.Errorf("error generating content: %w", err) + goto StreamEnd } if chunk == nil { - return nil, fmt.Errorf("unexpected case: chunk is nil") + streamErr = errors.New("unexpected case: chunk is nil") + goto StreamEnd } // Capture usage metadata from each chunk (last one will be the final) @@ -374,6 +398,10 @@ func (g *GoogleAI) generateStreamingContent( lastUsageMetadata = chunk.UsageMetadata } + if fb := chunk.PromptFeedback; fb != nil && fb.BlockReason != "" { + blockReason = fb + } + if len(chunk.Candidates) == 0 { continue } @@ -416,7 +444,7 @@ func (g *GoogleAI) generateStreamingContent( if part.FunctionCall != nil { b, _ := json.Marshal(part.FunctionCall.Args) toolCall := llms.ToolCall{ - ID: ensureStreamFunctionCallID(part.FunctionCall.Name, part.FunctionCall.ID), + ID: ensureFunctionCallID(part.FunctionCall.ID), FunctionCall: &llms.FunctionCall{ Name: part.FunctionCall.Name, Arguments: string(b), @@ -470,13 +498,7 @@ StreamEnd: metadata["PromptCachedTokens"] = int(lastUsageMetadata.CachedContentTokenCount) metadata["CacheReadInputTokens"] = int(lastUsageMetadata.CachedContentTokenCount) - // Cache-related token information (if available) - if lastUsageMetadata.CachedContentTokenCount > 0 { - metadata["CacheCreationInputTokens"] = max(int(lastUsageMetadata.PromptTokenCount-lastUsageMetadata.CachedContentTokenCount), 0) - metadata["PromptTokens"] = metadata["CacheCreationInputTokens"] // Google AI includes cached tokens in the prompt count - } else { - metadata["CacheCreationInputTokens"] = 0 - } + metadata["CacheCreationInputTokens"] = 0 } // Carry the finish reason so structured-output validation runs on a normal @@ -492,19 +514,24 @@ StreamEnd: Reasoning: choiceReasoning, ToolCalls: accumulatedToolCalls, StopReason: stopReason, + Truncated: llms.IsTruncated(stopReason), GenerationInfo: metadata, }}, } - // A callback that returned an error stopped the stream early; surface it - // (matching the other providers) instead of masking it as a success. if streamErr != nil { return resp, streamErr } + if err := checkEmptyStream(lastCandidate, blockReason, resp.Choices[0], opts); err != nil { + return resp, err + } return resp, nil } func convertResponse(resp *genai.GenerateContentResponse) (*llms.ContentResponse, error) { if len(resp.Candidates) == 0 { + if err := blockedPromptError(resp.PromptFeedback); err != nil { + return nil, err + } return nil, ErrNoContentInResponse } @@ -593,7 +620,6 @@ func convertResponse(resp *genai.GenerateContentResponse) (*llms.ContentResponse metadata["ReasoningTokens"] = int(usage.ThoughtsTokenCount) metadata["PromptCachedTokens"] = int(usage.CachedContentTokenCount) metadata["CacheReadInputTokens"] = int(usage.CachedContentTokenCount) - // Google AI does not provide cache creation information, always 0 metadata["CacheCreationInputTokens"] = 0 } @@ -601,6 +627,7 @@ func convertResponse(resp *genai.GenerateContentResponse) (*llms.ContentResponse Content: content.String(), Reasoning: choiceReasoning, StopReason: string(candidate.FinishReason), + Truncated: llms.IsTruncated(string(candidate.FinishReason)), GenerationInfo: metadata, ToolCalls: toolCalls, }) @@ -663,17 +690,18 @@ func convertParts(parts []llms.ContentPart) ([]*genai.Part, error) { if err != nil { return nil, err } + // The download names only the image subtype, such as "png". genaiPart = &genai.Part{ InlineData: &genai.Blob{ - MIMEType: typ, + MIMEType: "image/" + typ, Data: data, }, } case llms.ToolCall: fc := p.FunctionCall - var argsMap map[string]any - if err := json.Unmarshal([]byte(fc.Arguments), &argsMap); err != nil { + argsMap, err := toolcall.Decode(fc.Arguments) + if err != nil { return nil, err } genaiPart = &genai.Part{ @@ -736,6 +764,31 @@ func convertContent(content llms.MessageContent) (*genai.Content, error) { }, nil } +func googleToolConfig(choice any) *genai.ToolConfig { + var ( + mode genai.FunctionCallingConfigMode + allowed []string + ) + switch kind, name := llms.ClassifyToolChoice(choice); kind { + case llms.ToolChoiceNamed: + mode, allowed = genai.FunctionCallingConfigModeAny, []string{name} + case llms.ToolChoiceAny: + mode = genai.FunctionCallingConfigModeAny + case llms.ToolChoiceAuto: + mode = genai.FunctionCallingConfigModeAuto + case llms.ToolChoiceNone: + mode = genai.FunctionCallingConfigModeNone + case llms.ToolChoiceUnset: + return nil + } + return &genai.ToolConfig{ + FunctionCallingConfig: &genai.FunctionCallingConfig{ + Mode: mode, + AllowedFunctionNames: allowed, + }, + } +} + func convertTools(tools []llms.Tool) ([]*genai.Tool, error) { if len(tools) == 0 { return nil, nil @@ -757,7 +810,11 @@ func convertTools(tools []llms.Tool) ([]*genai.Tool, error) { if err != nil { return nil, err } - genaiFuncDecl.Parameters = schema + // A schema that declares no properties is a function without + // arguments, which goes out as a declaration without parameters. + if len(schema.Properties) > 0 { + genaiFuncDecl.Parameters = schema + } functionDeclarations = append(functionDeclarations, genaiFuncDecl) } @@ -857,9 +914,6 @@ func convertToSchema(e any, topLevel bool, toolIndex int, propertyPath string) ( } schema.Properties[propName] = recSchema } - } else if schema.Type == genai.TypeObject && propertyPath == "" { - // For top-level object schemas without properties, this is an error - return nil, fmt.Errorf("tool [%d]: expected to find a map of properties", toolIndex) } if items, ok := eMap["items"]; ok { @@ -924,6 +978,11 @@ func convertToSchema(e any, topLevel bool, toolIndex int, propertyPath string) ( schema.Required = requiredSlice } + if topLevel && len(schema.Properties) == 0 && len(schema.Required) > 0 { + // A top-level schema that requires arguments must declare them + return nil, fmt.Errorf("tool [%d]: expected to find a map of properties", toolIndex) + } + return schema, nil } @@ -1025,6 +1084,20 @@ func getFloatPointer(f float64) *float64 { return &f } +func newGenerationConfig(opts llms.CallOptions) *genai.GenerateContentConfig { + return &genai.GenerateContentConfig{ + CandidateCount: convertToInt32(opts.CandidateCount), + MaxOutputTokens: convertToInt32(opts.MaxTokens), + Temperature: convertToFloat32Pointer(opts.Temperature), + TopP: convertToFloat32Pointer(opts.TopP), + TopK: convertIntToFloat32Pointer(opts.TopK), + StopSequences: opts.StopWords, + Seed: convertToInt32Pointer(opts.Seed), + FrequencyPenalty: convertToFloat32Pointer(opts.FrequencyPenalty), + PresencePenalty: convertToFloat32Pointer(opts.PresencePenalty), + } +} + func convertToFloat32Pointer(f *float64) *float32 { if f == nil { return nil @@ -1039,7 +1112,7 @@ func convertToInt32Pointer(i *int) *int32 { return nil } - i32 := int32(*i) + i32 := numutil.SaturateInt32(*i) return &i32 } @@ -1048,7 +1121,7 @@ func convertToInt32(i *int) int32 { return 0 } - return int32(*i) + return numutil.SaturateInt32(*i) } func convertIntToFloat32Pointer(i *int) *float32 { @@ -1060,39 +1133,41 @@ func convertIntToFloat32Pointer(i *int) *float32 { return &f32 } -// resolveTemperature returns the temperature to use when the caller left it -// unset. Gemini 3 defaults to 1.0, the value Google recommends (lower values can -// cause looping and degraded reasoning); other models keep the SDK-wide default. -func resolveTemperature(model string, defaultTemperature float64) float64 { - if reasoning.GeminiUsesThinkingLevel(model) { - return 1.0 - } - return defaultTemperature -} - // resolveThinkingConfig builds the Gemini thinking config for the reasoning mode. -// Off forces budget 0 on models that disable that way (Gemini 2.5 Flash), since -// omitting would not disable a default-on model; a model whose thinking cannot be -// disabled (Gemini 2.5 Pro, Gemini 3.x) returns a typed error before the request. +// Off forces budget 0 on models that disable that way, since omitting would not +// disable a default-on model; a model whose thinking cannot be disabled returns a +// typed error before the request. func resolveThinkingConfig(model string, cfg *llms.ReasoningConfig, maxTokens int) (*genai.ThinkingConfig, error) { switch cfg.ResolveMode() { case llms.ReasoningOn: + if !reasoning.GeminiSupportsThinking(model) { + return nil, nil + } + if cfg.DelegatesDepth() { + return adaptiveThinkingConfig(model), nil + } + if reasoning.GeminiTogglesThinkingByLevel(model) { + return &genai.ThinkingConfig{ThinkingLevel: genai.ThinkingLevelHigh, IncludeThoughts: true}, nil + } // An effort with no explicit token budget maps to the qualitative // thinking_level on Gemini 3.x (its native control, where thinking_budget is // deprecated); an explicit budget or a 2.5 model still uses thinking_budget. - if cfg.Tokens == 0 && reasoning.GeminiUsesThinkingLevel(model) { - if level := thinkingLevelForEffort(cfg.GetEffort(maxTokens)); level != "" { + if cfg.Tokens <= 0 && reasoning.GeminiUsesThinkingLevel(model) { + if level := thinkingLevelForEffort(model, cfg.GetEffort(maxTokens)); level != "" { return &genai.ThinkingConfig{ThinkingLevel: level, IncludeThoughts: true}, nil } } - if budget := int32(cfg.GetTokens(maxTokens)); budget > 0 { + if budget := geminiBudgetInRange(model, cfg.GetTokens(maxTokens)); budget > 0 { return &genai.ThinkingConfig{ThinkingBudget: &budget, IncludeThoughts: true}, nil } + return nil, &reasoning.ErrEffortHasNoBudget{Model: model, Effort: string(cfg.GetEffort(maxTokens))} case llms.ReasoningOff: switch reasoning.ResolveOff(model, reasoning.ProviderGoogleAI) { case reasoning.OffZeroBudget: zero := int32(0) return &genai.ThinkingConfig{ThinkingBudget: &zero}, nil + case reasoning.OffMinimalLevel: + return &genai.ThinkingConfig{ThinkingLevel: genai.ThinkingLevelMinimal}, nil case reasoning.OffUnsupported: return nil, &reasoning.ErrReasoningOffUnsupported{Model: model} } @@ -1100,11 +1175,78 @@ func resolveThinkingConfig(model string, cfg *llms.ReasoningConfig, maxTokens in return nil, nil } +const geminiDynamicBudget = -1 + +func adaptiveThinkingConfig(model string) *genai.ThinkingConfig { + if reasoning.GeminiUsesThinkingLevel(model) || reasoning.GeminiTogglesThinkingByLevel(model) { + return &genai.ThinkingConfig{IncludeThoughts: true} + } + dynamic := int32(geminiDynamicBudget) + return &genai.ThinkingConfig{ThinkingBudget: &dynamic, IncludeThoughts: true} +} + +func geminiBudgetInRange(model string, budget int) int32 { + minimum, maximum, known := reasoning.GeminiBudgetRange(model) + if !known || budget <= 0 { + return int32(budget) + } + return int32(min(max(budget, minimum), maximum)) +} + +// blockedPromptError reports a prompt that the prompt feedback names as blocked, +// or nil when nothing was blocked. +func blockedPromptError(feedback *genai.GenerateContentResponsePromptFeedback) error { + if feedback == nil || feedback.BlockReason == "" { + return nil + } + message := "the model returned no candidates: the prompt was blocked (" + string(feedback.BlockReason) + ")" + if feedback.BlockReasonMessage != "" { + message += ": " + feedback.BlockReasonMessage + } + return &llms.Error{ + Code: llms.ErrCodeContentFilter, + Message: message, + Provider: providerGoogleAI, + } +} + +// checkEmptyStream reports a stream that ended without an answer: a blocked +// prompt, or an output limit too small to start an answer. +func checkEmptyStream( + lastCandidate *genai.Candidate, + blockReason *genai.GenerateContentResponsePromptFeedback, + choice *llms.ContentChoice, + opts *llms.CallOptions, +) error { + if lastCandidate != nil { + return nil + } + if choice.Content != "" || len(choice.ToolCalls) > 0 { + return nil + } + if err := blockedPromptError(blockReason); err != nil { + return err + } + if opts == nil || opts.MaxTokens == nil || *opts.MaxTokens <= 0 { + return nil + } + return &llms.Error{ + Code: llms.ErrCodeTokenLimit, + Message: "the model returned no candidates: max_tokens is too small to start an answer", + Provider: providerGoogleAI, + } +} + // thinkingLevelForEffort maps a reasoning effort to a Gemini thinking_level. // xhigh/max collapse to HIGH (the top level); an unset effort returns empty so // the caller falls back to a budget or the model default. -func thinkingLevelForEffort(effort llms.ReasoningEffort) genai.ThinkingLevel { +func thinkingLevelForEffort(model string, effort llms.ReasoningEffort) genai.ThinkingLevel { switch effort { + case llms.ReasoningMinimal: + if reasoning.GeminiAcceptsMinimalLevel(model) { + return genai.ThinkingLevelMinimal + } + return genai.ThinkingLevelLow case llms.ReasoningLow: return genai.ThinkingLevelLow case llms.ReasoningMedium: diff --git a/llms/googleai/googleai_cache_test.go b/llms/googleai/googleai_cache_test.go index 272ddd5a1..023cc5812 100644 --- a/llms/googleai/googleai_cache_test.go +++ b/llms/googleai/googleai_cache_test.go @@ -1,6 +1,7 @@ package googleai import ( + "cmp" "context" "net/http" "os" @@ -86,7 +87,7 @@ func TestGoogleAI_ExplicitCaching(t *testing.T) { //nolint:funlen // Create caching helper with httprr client helper, err := NewCachingHelper(ctx, - WithAPIKey(apiKey), + WithAPIKey(cmp.Or(apiKey, "test-api-key")), WithRest(), WithHTTPClient(rr.Client()), ) @@ -141,7 +142,7 @@ You should always consider the following aspects in your reviews: // Use the cached content in a request client, err := New(ctx, - WithAPIKey(apiKey), + WithAPIKey(cmp.Or(apiKey, "test-api-key")), WithRest(), WithHTTPClient(rr.Client()), ) @@ -212,7 +213,7 @@ func TestGoogleAI_ImplicitCaching(t *testing.T) { ctx := t.Context() client, err := New(ctx, - WithAPIKey(apiKey), + WithAPIKey(cmp.Or(apiKey, "test-api-key")), WithRest(), WithHTTPClient(rr.Client()), ) @@ -302,7 +303,7 @@ func TestGoogleAI_ImplicitCaching_Streaming(t *testing.T) { //nolint:funlen ctx := t.Context() client, err := New(ctx, - WithAPIKey(apiKey), + WithAPIKey(cmp.Or(apiKey, "test-api-key")), WithRest(), WithHTTPClient(rr.Client()), ) @@ -419,7 +420,7 @@ func TestGoogleAI_ImplicitCaching_ConversationContinuation(t *testing.T) { //nol ctx := t.Context() client, err := New(ctx, - WithAPIKey(apiKey), + WithAPIKey(cmp.Or(apiKey, "test-api-key")), WithRest(), WithHTTPClient(rr.Client()), ) @@ -566,7 +567,7 @@ func TestGoogleAI_ImplicitCaching_ConversationContinuation_Streaming(t *testing. ctx := t.Context() client, err := New(ctx, - WithAPIKey(apiKey), + WithAPIKey(cmp.Or(apiKey, "test-api-key")), WithRest(), WithHTTPClient(rr.Client()), ) diff --git a/llms/googleai/googleai_core_unit_test.go b/llms/googleai/googleai_core_unit_test.go index 4c9c5951b..011404ce8 100644 --- a/llms/googleai/googleai_core_unit_test.go +++ b/llms/googleai/googleai_core_unit_test.go @@ -1034,32 +1034,86 @@ func TestThinkingConfig(t *testing.T) { // (pentagi backend/pkg/providers/gemini/models.yml). Keep this list in sync when // that catalog changes — the tests below assert wire-level thinking behavior for // every entry so a new model cannot silently miss reasoning coverage. +type disableWire int + +const ( + disableUnsupported disableWire = iota // WithReasoningDisabled must error before the request + disableZeroBudget // thinking_budget: 0 + disableOmit // no thinking config at all + disableMinimalLevel // thinking_level: "minimal" +) + var productionGeminiModels = []struct { name string - usesThinkingLevel bool // Gemini 3.x uses thinking_level; 2.5 / Gemma use thinking_budget - canDisable bool // false → WithReasoningDisabled must error before the request + usesThinkingLevel bool // Gemini 3.x uses thinking_level; 2.5 uses thinking_budget + togglesByLevel bool // on/off only, through thinking_level: high or minimal + disable disableWire }{ - {name: "gemini-3.5-flash", usesThinkingLevel: true, canDisable: false}, - {name: "gemini-3.1-pro-preview", usesThinkingLevel: true, canDisable: false}, - {name: "gemini-3.1-pro-preview-customtools", usesThinkingLevel: true, canDisable: false}, - {name: "gemini-3.1-flash-lite", usesThinkingLevel: true, canDisable: false}, - {name: "gemini-2.5-pro", usesThinkingLevel: false, canDisable: false}, - {name: "gemini-2.5-flash", usesThinkingLevel: false, canDisable: true}, - {name: "gemini-2.5-flash-lite", usesThinkingLevel: false, canDisable: true}, - {name: "gemma-4-31b-it", usesThinkingLevel: false, canDisable: true}, - {name: "gemma-4-26b-a4b-it", usesThinkingLevel: false, canDisable: true}, + {name: "gemini-3.8-flash", usesThinkingLevel: true, disable: disableUnsupported}, + {name: "gemini-3.7-flash", usesThinkingLevel: true, disable: disableUnsupported}, + {name: "gemini-3.6-flash", usesThinkingLevel: true, disable: disableMinimalLevel}, + {name: "gemini-3.5-flash", usesThinkingLevel: true, disable: disableMinimalLevel}, + {name: "gemini-3.5-flash-lite", usesThinkingLevel: true, disable: disableMinimalLevel}, + {name: "gemini-3.1-pro-preview", usesThinkingLevel: true, disable: disableUnsupported}, + {name: "gemini-3.1-pro-preview-customtools", usesThinkingLevel: true, disable: disableUnsupported}, + {name: "gemini-3.1-flash-lite", usesThinkingLevel: true, disable: disableMinimalLevel}, + {name: "gemini-3-flash-preview", usesThinkingLevel: true, disable: disableMinimalLevel}, + {name: "gemini-2.5-pro", usesThinkingLevel: false, disable: disableUnsupported}, + {name: "gemini-2.5-flash", usesThinkingLevel: false, disable: disableZeroBudget}, + {name: "gemini-2.5-flash-lite", usesThinkingLevel: false, disable: disableZeroBudget}, + {name: "gemma-4-31b-it", usesThinkingLevel: false, togglesByLevel: true, disable: disableMinimalLevel}, + {name: "gemma-4-26b-a4b-it", usesThinkingLevel: false, togglesByLevel: true, disable: disableMinimalLevel}, } -func TestResolveTemperature(t *testing.T) { +func TestDefaultTemperature(t *testing.T) { t.Parallel() - // Gemini 3 defaults to 1.0; everything else keeps the SDK default (0.5 here). - assert.Equal(t, 1.0, resolveTemperature("gemini-3.1-pro", 0.5)) - assert.Equal(t, 1.0, resolveTemperature("gemini-3-flash", 0.5)) - assert.Equal(t, 0.5, resolveTemperature("gemini-2.5-flash", 0.5)) - assert.Equal(t, 0.5, resolveTemperature("gemini-2.5-pro", 0.5)) + + _, ok := DefaultOptions().defaultTemperature() + assert.False(t, ok, "nothing configured leaves the model's own default") + + written := Options{DefaultTemperature: 0.5} + got, ok := written.defaultTemperature() + assert.True(t, ok) + assert.InDelta(t, 0.5, got, 1e-9) + + zero := DefaultOptions() + WithDefaultTemperature(0)(&zero) + got, ok = zero.defaultTemperature() + assert.True(t, ok, "a configured zero is a value") + assert.Zero(t, got) } -func TestResolveThinkingConfig(t *testing.T) { +func TestResolveThinkingConfigRefusesAnEffortThatMapsToNothing(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gemini-2.5-flash", "gemini-3-pro-preview"} { + tc, err := resolveThinkingConfig(model, + &llms.ReasoningConfig{Effort: "banana"}, 8000) + var budgetErr *reasoning.ErrEffortHasNoBudget + require.ErrorAs(t, err, &budgetErr, "an unknown effort on %s must not pass silently", model) + assert.Equal(t, "banana", budgetErr.Effort) + assert.Nil(t, tc) + } + + tc, err := resolveThinkingConfig("gemini-2.5-flash", + &llms.ReasoningConfig{Effort: llms.ReasoningMinimal}, 8000) + var budgetErr *reasoning.ErrEffortHasNoBudget + require.ErrorAs(t, err, &budgetErr, "minimal has no budget, and 2.5 has only budgets") + assert.Nil(t, tc) +} + +func TestResolveThinkingConfigClampsMinimalWhereTheModelRefusesIt(t *testing.T) { + t.Parallel() + + tc, err := resolveThinkingConfig("gemini-3-pro-preview", + &llms.ReasoningConfig{Effort: llms.ReasoningMinimal}, 8000) + require.NoError(t, err) + require.NotNil(t, tc) + assert.Equal(t, genai.ThinkingLevelLow, tc.ThinkingLevel) + assert.True(t, tc.IncludeThoughts) +} + +func TestResolveThinkingConfig(t *testing.T) { //nolint:funlen t.Parallel() t.Run("on with budget sends positive budget", func(t *testing.T) { @@ -1083,7 +1137,7 @@ func TestResolveThinkingConfig(t *testing.T) { }) t.Run("off on non-disablable model errors, no budget zero", func(t *testing.T) { - for _, model := range []string{"gemini-2.5-pro", "gemini-3.1-pro", "gemini-3-flash", "gemini-3.5-flash"} { + for _, model := range []string{"gemini-2.5-pro", "gemini-3.1-pro", "gemini-3.7-flash", "gemini-3.8-flash"} { tc, err := resolveThinkingConfig(model, &llms.ReasoningConfig{Mode: llms.ReasoningOff}, 1000) var offErr *reasoning.ErrReasoningOffUnsupported require.ErrorAs(t, err, &offErr, "off on %s must be unsupported", model) @@ -1120,6 +1174,27 @@ func TestResolveThinkingConfig(t *testing.T) { } }) + t.Run("minimal reaches the wire only where the model takes it", func(t *testing.T) { + for _, tc := range []struct { + model string + want genai.ThinkingLevel + }{ + {"gemini-3-flash-preview", genai.ThinkingLevelMinimal}, + {"gemini-3.1-flash-lite", genai.ThinkingLevelMinimal}, + {"gemini-3.5-flash", genai.ThinkingLevelMinimal}, + {"gemini-3.6-flash", genai.ThinkingLevelMinimal}, + {"gemini-3.1-pro-preview", genai.ThinkingLevelLow}, + {"gemini-3.7-flash", genai.ThinkingLevelLow}, + } { + got, err := resolveThinkingConfig(tc.model, + &llms.ReasoningConfig{Effort: llms.ReasoningMinimal}, 8192) + require.NoError(t, err) + require.NotNil(t, got) + assert.Equal(t, tc.want, got.ThinkingLevel, "model %s -> level", tc.model) + assert.Nil(t, got.ThinkingBudget, "level path must not also send a budget") + } + }) + t.Run("gemini 2.5 effort still uses a token budget", func(t *testing.T) { got, err := resolveThinkingConfig("gemini-2.5-flash", &llms.ReasoningConfig{Effort: llms.ReasoningHigh}, 8192) require.NoError(t, err) @@ -1136,6 +1211,16 @@ func TestResolveThinkingConfig(t *testing.T) { assert.Equal(t, int32(2048), *got.ThinkingBudget) assert.Equal(t, genai.ThinkingLevel(""), got.ThinkingLevel) }) + + t.Run("a non-positive budget is no budget at all on gemini 3.x", func(t *testing.T) { + for _, tokens := range []int{-5, -1} { + got, err := resolveThinkingConfig("gemini-3.1-pro", &llms.ReasoningConfig{Effort: llms.ReasoningLow, Tokens: tokens}, 8192) + require.NoError(t, err) + require.NotNil(t, got) + assert.Nil(t, got.ThinkingBudget, "tokens=%d must not reach the deprecated control", tokens) + assert.Equal(t, genai.ThinkingLevelLow, got.ThinkingLevel) + } + }) } // TestProductionGeminiModels_ThinkingConfig locks the wire-level thinking @@ -1145,7 +1230,7 @@ func TestResolveThinkingConfig(t *testing.T) { func TestProductionGeminiModels_ThinkingConfig(t *testing.T) { t.Parallel() - require.Len(t, productionGeminiModels, 9, "models.yml currently lists 9 models; update this table when the catalog changes") + require.Len(t, productionGeminiModels, 14, "models.yml currently lists 14 models; update this table when the catalog changes") for _, m := range productionGeminiModels { t.Run(m.name, func(t *testing.T) { @@ -1159,7 +1244,7 @@ func TestProductionGeminiModels_ThinkingConfig(t *testing.T) { support := llms.ReasoningSupportFor(m.name, reasoning.ProviderGoogleAI) assert.True(t, support.Supported) assert.True(t, support.Known, "production model %s should be a Known reasoning model", m.name) - assert.Equal(t, !m.canDisable, support.CannotDisable, + assert.Equal(t, m.disable == disableUnsupported, support.CannotDisable, "CannotDisable hint mismatch for %s", m.name) // Reasoning on with effort (no explicit token budget). @@ -1168,11 +1253,16 @@ func TestProductionGeminiModels_ThinkingConfig(t *testing.T) { require.NoError(t, err, "enable reasoning must succeed for %s", m.name) require.NotNil(t, tc, "enable reasoning must emit a ThinkingConfig for %s", m.name) assert.True(t, tc.IncludeThoughts) - if m.usesThinkingLevel { + switch { + case m.togglesByLevel: + assert.Equal(t, genai.ThinkingLevelHigh, tc.ThinkingLevel, + "%s enables through thinking_level high", m.name) + assert.Nil(t, tc.ThinkingBudget, "%s takes no thinking_budget", m.name) + case m.usesThinkingLevel: assert.Equal(t, genai.ThinkingLevelMedium, tc.ThinkingLevel, "%s should map effort→thinking_level", m.name) assert.Nil(t, tc.ThinkingBudget, "%s level path must not also send a budget", m.name) - } else { + default: require.NotNil(t, tc.ThinkingBudget, "%s should use thinking_budget", m.name) assert.Greater(t, *tc.ThinkingBudget, int32(0)) assert.Equal(t, genai.ThinkingLevel(""), tc.ThinkingLevel) @@ -1181,13 +1271,23 @@ func TestProductionGeminiModels_ThinkingConfig(t *testing.T) { // Explicit disable. offCfg := &llms.ReasoningConfig{Mode: llms.ReasoningOff} tcOff, err := resolveThinkingConfig(m.name, offCfg, 8192) - if m.canDisable { + switch m.disable { + case disableZeroBudget: require.NoError(t, err, "disable must succeed for %s", m.name) require.NotNil(t, tcOff) require.NotNil(t, tcOff.ThinkingBudget) assert.Equal(t, int32(0), *tcOff.ThinkingBudget) assert.False(t, tcOff.IncludeThoughts) - } else { + case disableMinimalLevel: + require.NoError(t, err, "disable must succeed for %s", m.name) + require.NotNil(t, tcOff) + assert.Equal(t, genai.ThinkingLevelMinimal, tcOff.ThinkingLevel) + assert.Nil(t, tcOff.ThinkingBudget, "%s takes no thinking_budget", m.name) + assert.False(t, tcOff.IncludeThoughts) + case disableOmit: + require.NoError(t, err, "disable must succeed for %s", m.name) + assert.Nil(t, tcOff, "%s is off unless asked, so disable sends nothing", m.name) + case disableUnsupported: var offErr *reasoning.ErrReasoningOffUnsupported require.ErrorAs(t, err, &offErr, "disable must be unsupported for %s", m.name) assert.Nil(t, tcOff) @@ -1200,3 +1300,34 @@ func TestProductionGeminiModels_ThinkingConfig(t *testing.T) { }) } } + +func TestGenerationConfigCarriesSeedAndPenalties(t *testing.T) { + t.Parallel() + + seed := 42 + freq := 0.7 + pres := -0.3 + cfg := newGenerationConfig(llms.CallOptions{ + Seed: &seed, + FrequencyPenalty: &freq, + PresencePenalty: &pres, + }) + + require.NotNil(t, cfg.Seed, "seed is a GenerationConfig field and must not be dropped") + assert.Equal(t, int32(42), *cfg.Seed) + require.NotNil(t, cfg.FrequencyPenalty) + assert.InDelta(t, 0.7, *cfg.FrequencyPenalty, 1e-6) + require.NotNil(t, cfg.PresencePenalty) + assert.InDelta(t, -0.3, *cfg.PresencePenalty, 1e-6) +} + +func TestGenerationConfigLeavesUnsetSamplingAlone(t *testing.T) { + t.Parallel() + + cfg := newGenerationConfig(llms.CallOptions{}) + + assert.Nil(t, cfg.Seed) + assert.Nil(t, cfg.FrequencyPenalty) + assert.Nil(t, cfg.PresencePenalty) + assert.Nil(t, cfg.Temperature) +} diff --git a/llms/googleai/googleai_test.go b/llms/googleai/googleai_test.go index 0ff209b73..da7fa9a43 100644 --- a/llms/googleai/googleai_test.go +++ b/llms/googleai/googleai_test.go @@ -1,10 +1,12 @@ package googleai import ( + "cmp" "context" "encoding/json" "net/http" "os" + "path/filepath" "strings" "testing" @@ -32,6 +34,7 @@ func newHTTPRRClient(t *testing.T, opts ...Option) *GoogleAI { transport = &httputil.ApiKeyTransport{ Transport: transport, APIKey: apiKey, + BaseURL: os.Getenv("GOOGLE_BASE_URL"), } } @@ -53,21 +56,10 @@ func newHTTPRRClient(t *testing.T, opts ...Option) *GoogleAI { // Configure client with httprr opts = append(opts, WithRest(), WithHTTPClient(rr.Client())) - // Add API key if available - if apiKey != "" { - opts = append(opts, WithAPIKey(apiKey)) - } else { - t.Skip("No API key found, skipping test") - } + opts = append(opts, WithAPIKey(cmp.Or(apiKey, "test-api-key"))) llm, err := New(t.Context(), opts...) - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) return llm } @@ -84,13 +76,7 @@ func TestGoogleAIGenerateContent(t *testing.T) { } resp, err := llm.GenerateContent(t.Context(), content) - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) require.NotNil(t, resp) assert.NotEmpty(t, resp.Choices) assert.Contains(t, resp.Choices[0].Content, "Paris") @@ -121,13 +107,7 @@ func TestGoogleAIGenerateContentWithMultipleMessages(t *testing.T) { } resp, err := llm.GenerateContent(t.Context(), content, llms.WithModel("gemini-2.5-flash")) - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) require.NotNil(t, resp) assert.NotEmpty(t, resp.Choices) assert.Contains(t, resp.Choices[0].Content, "Alice") @@ -152,13 +132,7 @@ func TestGoogleAIGenerateContentWithSystemMessage(t *testing.T) { } resp, err := llm.GenerateContent(t.Context(), content, llms.WithModel("gemini-2.5-flash")) - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) require.NotNil(t, resp) assert.NotEmpty(t, resp.Choices) } @@ -167,13 +141,7 @@ func TestGoogleAICall(t *testing.T) { llm := newHTTPRRClient(t) output, err := llm.Call(t.Context(), "What is 2 + 2?") - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) assert.NotEmpty(t, output) assert.Contains(t, output, "4") } @@ -184,13 +152,7 @@ func TestGoogleAICreateEmbedding(t *testing.T) { texts := []string{"hello world", "goodbye world", "hello world"} embeddings, err := llm.CreateEmbedding(t.Context(), texts) - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) assert.Len(t, embeddings, 3) assert.NotEmpty(t, embeddings[0]) assert.NotEmpty(t, embeddings[1]) @@ -216,13 +178,7 @@ func TestGoogleAIWithOptions(t *testing.T) { } resp, err := llm.GenerateContent(t.Context(), content) - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) require.NotNil(t, resp) assert.NotEmpty(t, resp.Choices) } @@ -259,13 +215,7 @@ func TestGoogleAIWithStreaming(t *testing.T) { }), ) - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) require.NotNil(t, resp) assert.True(t, streamDone, "Streaming should be done") assert.NotEmpty(t, resp.Choices) @@ -318,13 +268,7 @@ func TestGoogleAIWithTools(t *testing.T) { llms.WithTools(tools), ) - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) require.NotNil(t, resp) assert.NotEmpty(t, resp.Choices) @@ -433,13 +377,7 @@ func TestGoogleAIWithJSONMode(t *testing.T) { llms.WithJSONMode(), ) - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) require.NotNil(t, resp) assert.NotEmpty(t, resp.Choices) // Response should be valid JSON @@ -469,12 +407,7 @@ func TestGoogleAIStructuredOutput(t *testing.T) { //nolint:funlen // table of ht resp, err := llm.GenerateContent(t.Context(), content, llms.WithStructuredOutput(llms.StructuredOutputConfig{Name: "capital", Schema: schema})) - if err != nil { - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording missing. Hint: re-run with HTTPRR_RECORD=. to record") - } - require.NoError(t, err) - } + require.NoError(t, err) require.NotNil(t, resp) require.NotEmpty(t, resp.Choices) @@ -504,12 +437,7 @@ func TestGoogleAIStructuredOutput(t *testing.T) { //nolint:funlen // table of ht resp, err := llm.GenerateContent(t.Context(), content, llms.WithStructuredOutput(llms.StructuredOutputConfig{Name: "colors", Schema: schema})) - if err != nil { - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording missing. Hint: re-run with HTTPRR_RECORD=. to record") - } - require.NoError(t, err) - } + require.NoError(t, err) require.NotNil(t, resp) require.NotEmpty(t, resp.Choices) @@ -548,9 +476,7 @@ func TestGoogleAIStructuredOutput(t *testing.T) { //nolint:funlen // table of ht return nil }), ) - if err != nil { - require.NoError(t, err) - } + require.NoError(t, err) require.NotNil(t, resp) require.NotEmpty(t, resp.Choices) // The finish reason must be surfaced on the streamed choice. @@ -588,13 +514,7 @@ func TestGoogleAIErrorHandling(t *testing.T) { WithAPIKey("invalid-key"), WithHTTPClient(rr.Client()), ) - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) content := []llms.MessageContent{ { @@ -606,7 +526,11 @@ func TestGoogleAIErrorHandling(t *testing.T) { } _, err = llm.GenerateContent(t.Context(), content) - assert.Error(t, err) + require.Error(t, err) + require.NotContains(t, err.Error(), "cached HTTP response not found", + "the cassette must answer this request; a replay miss would satisfy a bare Error assertion") + require.Contains(t, strings.ToLower(err.Error()), "api key", + "the recorded rejection must reach the caller") } func TestGoogleAIMultiModalContent(t *testing.T) { @@ -614,13 +538,7 @@ func TestGoogleAIMultiModalContent(t *testing.T) { // Read the test image imageData, err := os.ReadFile("shared_test/testdata/parrot-icon.png") - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) content := []llms.MessageContent{ { @@ -638,13 +556,7 @@ func TestGoogleAIMultiModalContent(t *testing.T) { llms.WithModel("gemini-2.5-flash"), ) - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) require.NotNil(t, resp) assert.NotEmpty(t, resp.Choices) } @@ -660,13 +572,7 @@ func TestGoogleAIBatchEmbedding(t *testing.T) { embeddings, err := llm.CreateEmbedding(t.Context(), texts) - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) assert.Len(t, embeddings, 105) for i, emb := range embeddings { assert.NotEmpty(t, emb, "embedding at index %d should not be empty", i) @@ -688,13 +594,7 @@ func TestGoogleAIWithHarmThreshold(t *testing.T) { } resp, err := llm.GenerateContent(t.Context(), content) - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) require.NotNil(t, resp) assert.NotEmpty(t, resp.Choices) } @@ -737,13 +637,7 @@ func TestGoogleAIToolCallResponse(t *testing.T) { content, llms.WithTools(tools), ) - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) require.NotNil(t, resp1) // If tool was called, send back response @@ -775,13 +669,7 @@ func TestGoogleAIToolCallResponse(t *testing.T) { content, llms.WithTools(tools), ) - if err != nil { - // Check if this is a recording mismatch error - if strings.Contains(err.Error(), "cached HTTP response not found") { - t.Skip("Recording format has changed or is incompatible. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - require.NoError(t, err) - } + require.NoError(t, err) require.NotNil(t, resp2) assert.Contains(t, resp2.Choices[0].Content, "105") } @@ -871,3 +759,18 @@ func TestGoogleAIThinkingModels(t *testing.T) { } }) } + +func TestRecordingsCarryNoProxyHeaders(t *testing.T) { + t.Parallel() + + files, err := filepath.Glob("testdata/*.httprr") + require.NoError(t, err) + require.NotEmpty(t, files) + + for _, file := range files { + data, err := os.ReadFile(file) + require.NoError(t, err) + assert.False(t, strings.Contains(strings.ToLower(string(data)), "x-litellm-"), + "%s carries proxy headers", file) + } +} diff --git a/llms/googleai/googleai_unit_test.go b/llms/googleai/googleai_unit_test.go index e86c9c1c3..7cb69a6d1 100644 --- a/llms/googleai/googleai_unit_test.go +++ b/llms/googleai/googleai_unit_test.go @@ -1,15 +1,22 @@ package googleai import ( + "context" "encoding/json" "errors" + "io" + "math" + "net/http" + "net/http/httptest" "strings" "testing" "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" "google.golang.org/genai" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestNew(t *testing.T) { @@ -94,10 +101,10 @@ func TestDefaultOptions(t *testing.T) { assert.Equal(t, "gemini-2.5-flash", opts.DefaultModel) assert.Equal(t, "gemini-embedding-001", opts.DefaultEmbeddingModel) assert.Equal(t, 1, opts.DefaultCandidateCount) - assert.Equal(t, 2048, opts.DefaultMaxTokens) - assert.Equal(t, 0.5, opts.DefaultTemperature) - assert.Equal(t, 3, opts.DefaultTopK) - assert.Equal(t, 0.95, opts.DefaultTopP) + assert.Equal(t, llms.DefaultMaxTokens, opts.DefaultMaxTokens) + assert.Zero(t, opts.DefaultTemperature) + assert.Zero(t, opts.DefaultTopK) + assert.Zero(t, opts.DefaultTopP) assert.Equal(t, HarmBlockNone, opts.HarmThreshold) assert.Empty(t, opts.CloudProject) assert.Empty(t, opts.CloudLocation) @@ -140,7 +147,8 @@ func TestOptions(t *testing.T) { //nolint:funlen // comprehensive test //nolint: t.Run("WithRest", func(t *testing.T) { opts := &Options{} WithRest()(opts) - assert.Len(t, opts.ClientOptions, 1) + assert.Empty(t, opts.ClientOptions, + "the SDK speaks REST on every backend, so the option has nothing to add") }) t.Run("WithHTTPClient", func(t *testing.T) { @@ -354,24 +362,57 @@ func TestConvertTools(t *testing.T) { //nolint:funlen // comprehensive test //no assert.Nil(t, result) }) - t.Run("missing properties in parameters", func(t *testing.T) { - tools := []llms.Tool{ - { - Type: "function", - Function: &llms.FunctionDefinition{ - Name: "test", - Description: "test function", - Parameters: map[string]any{ - "type": "object", - // missing properties + t.Run("parameters without properties", func(t *testing.T) { + for name, params := range map[string]any{ + "no properties": map[string]any{"type": "object"}, + "empty properties": map[string]any{"type": "object", "properties": map[string]any{}}, + "no required properties": map[string]any{"type": "object", "required": []string{}}, + } { + t.Run(name, func(t *testing.T) { + result, err := convertTools([]llms.Tool{{ + Type: "function", + Function: &llms.FunctionDefinition{ + Name: "test", + Description: "test function", + Parameters: params, }, - }, + }}) + require.NoError(t, err) + require.Len(t, result, 1) + require.Len(t, result[0].FunctionDeclarations, 1) + assert.Equal(t, "test", result[0].FunctionDeclarations[0].Name) + assert.Nil(t, result[0].FunctionDeclarations[0].Parameters, + "a function without arguments goes out without parameters") + }) + } + }) + + t.Run("required properties that are never declared", func(t *testing.T) { + for name, params := range map[string]any{ + "no properties": map[string]any{ + "type": "object", + "required": []string{"location"}, + }, + "empty properties": map[string]any{ + "type": "object", + "properties": map[string]any{}, + "required": []string{"location"}, }, + } { + t.Run(name, func(t *testing.T) { + result, err := convertTools([]llms.Tool{{ + Type: "function", + Function: &llms.FunctionDefinition{ + Name: "test", + Description: "test function", + Parameters: params, + }, + }}) + require.Error(t, err) + assert.Contains(t, err.Error(), "expected to find a map of properties") + assert.Nil(t, result) + }) } - result, err := convertTools(tools) - assert.Error(t, err) - assert.Contains(t, err.Error(), "expected to find a map of properties") - assert.Nil(t, result) }) t.Run("valid function tool", func(t *testing.T) { @@ -578,6 +619,23 @@ func TestConvertTools(t *testing.T) { //nolint:funlen // comprehensive test //no }) } +func TestConvertPartsSendsAnImageLinkWithItsImageMIMEType(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "image/png") + _, _ = w.Write([]byte("png-bytes")) + })) + t.Cleanup(srv.Close) + + parts, err := convertParts([]llms.ContentPart{llms.ImageURLPart(srv.URL + "/parrot.png")}) + require.NoError(t, err) + require.Len(t, parts, 1) + require.NotNil(t, parts[0].InlineData) + assert.Equal(t, "image/png", parts[0].InlineData.MIMEType, "Gemini refuses a bare subtype such as png") + assert.Equal(t, []byte("png-bytes"), parts[0].InlineData.Data) +} + func TestFunctionCallIDWrappers(t *testing.T) { t.Run("ensureFunctionCallID", func(t *testing.T) { testCases := []struct { @@ -900,6 +958,22 @@ func TestValidateGoogleStructuredOutput(t *testing.T) { } }) + t.Run("a tool turn is not a final answer", func(t *testing.T) { + t.Parallel() + err := validateGoogleStructuredOutput(opts, mk(&llms.ContentChoice{ + Content: "", + StopReason: stop, + ToolCalls: []llms.ToolCall{{ + ID: "call_1", + Type: "function", + FunctionCall: &llms.FunctionCall{Name: "getWeather", Arguments: `{"city":"Paris"}`}, + }}, + })) + if err != nil { + t.Fatalf("a STOP turn carrying tool calls must not be validated as JSON: %v", err) + } + }) + t.Run("MAX_TOKENS is skipped", func(t *testing.T) { t.Parallel() err := validateGoogleStructuredOutput(opts, mk(&llms.ContentChoice{Content: `{"answer"`, StopReason: maxTok})) @@ -920,3 +994,221 @@ func TestValidateGoogleStructuredOutput(t *testing.T) { } }) } + +type stubStreamTransport struct{ body string } + +func (t stubStreamTransport) RoundTrip(*http.Request) (*http.Response, error) { + return &http.Response{ + StatusCode: http.StatusOK, + Header: http.Header{"Content-Type": []string{"text/event-stream"}}, + Body: io.NopCloser(strings.NewReader(t.body)), + }, nil +} + +func TestGenerateContentKeepsPartialResponseWhenStreamingFuncFails(t *testing.T) { + t.Parallel() + + chunk := `{"candidates":[{"content":{"parts":[{"text":"partial answer"}],` + + `"role":"model"},"finishReason":"STOP","index":0}]}` + llm, err := New(t.Context(), + WithAPIKey("test-api-key"), + WithRest(), + WithHTTPClient(&http.Client{Transport: stubStreamTransport{body: "data: " + chunk + "\n\n"}}), + ) + require.NoError(t, err) + + errAbort := errors.New("caller stopped the stream") + resp, err := llm.GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return errAbort }), + ) + + require.ErrorIs(t, err, errAbort) + require.NotNil(t, resp) + require.Equal(t, "partial answer", resp.Choices[0].Content) +} + +type captureTransport struct { + body []byte + resp string +} + +func (t *captureTransport) RoundTrip(r *http.Request) (*http.Response, error) { + if r.Body != nil { + t.body, _ = io.ReadAll(r.Body) + } + return &http.Response{ + StatusCode: http.StatusOK, + Header: http.Header{"Content-Type": []string{"application/json"}}, + Body: io.NopCloser(strings.NewReader(t.resp)), + }, nil +} + +func TestOnlyConfiguredSamplingReachesTheWire(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + opts []Option + call []llms.CallOption + want map[string]float64 + model string + }{ + {name: "gemini-3 with nothing configured", model: "gemini-3-flash", want: map[string]float64{}}, + {name: "gemini-2.5 with nothing configured", model: "gemini-2.5-flash", want: map[string]float64{}}, + { + name: "gemini-3 with a configured default", + model: "gemini-3-flash", + opts: []Option{WithDefaultTemperature(0.2)}, + want: map[string]float64{"temperature": 0.2}, + }, + { + name: "a configured zero temperature", + model: "gemini-2.5-flash", + opts: []Option{WithDefaultTemperature(0)}, + want: map[string]float64{"temperature": 0}, + }, + { + name: "a configured zero top_k", + model: "gemini-2.5-flash", + opts: []Option{WithDefaultTopK(0)}, + want: map[string]float64{"topK": 0}, + }, + { + name: "a configured zero top_p", + model: "gemini-2.5-flash", + opts: []Option{WithDefaultTopP(0)}, + want: map[string]float64{"topP": 0}, + }, + { + name: "configured top_k and top_p", + model: "gemini-2.5-flash", + opts: []Option{WithDefaultTopK(40), WithDefaultTopP(0.8)}, + want: map[string]float64{"topK": 40, "topP": 0.8}, + }, + { + name: "the call's own values win over the configured ones", + model: "gemini-2.5-flash", + opts: []Option{WithDefaultTemperature(0.2), WithDefaultTopK(40)}, + call: []llms.CallOption{llms.WithTemperature(0.7), llms.WithTopK(5), llms.WithTopP(0.5)}, + want: map[string]float64{"temperature": 0.7, "topK": 5, "topP": 0.5}, + }, + { + name: "a thinking gemini-3 call keeps the caller's sampling", + model: "gemini-3-flash", + call: []llms.CallOption{llms.WithTemperature(0.4), llms.WithTopP(0.8), llms.WithReasoning(llms.ReasoningHigh, 0)}, + want: map[string]float64{"temperature": 0.4, "topP": 0.8}, + }, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + rt := &captureTransport{ + resp: `{"candidates":[{"content":{"parts":[{"text":"ok"}],"role":"model"},` + + `"finishReason":"STOP","index":0}]}`, + } + opts := append([]Option{ + WithAPIKey("test-api-key"), + WithRest(), + WithDefaultModel(tc.model), + WithHTTPClient(&http.Client{Transport: rt}), + }, tc.opts...) + + llm, err := New(t.Context(), opts...) + require.NoError(t, err) + + _, err = llm.GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, tc.call...) + require.NoError(t, err) + + var payload struct { + GenerationConfig map[string]any `json:"generationConfig"` + } + require.NoError(t, json.Unmarshal(rt.body, &payload)) + got := map[string]float64{} + for _, field := range []string{"temperature", "topK", "topP"} { + if value, ok := payload.GenerationConfig[field].(float64); ok { + got[field] = value + } + } + assert.InDeltaMapValues(t, tc.want, got, 1e-6) + assert.Len(t, got, len(tc.want)) + }) + } +} + +func TestMaxTokensAboveInt32DoesNotGoNegative(t *testing.T) { + t.Parallel() + cases := []struct { + in int + want int32 + }{ + {16384, 16384}, + {math.MaxInt32, math.MaxInt32}, + {math.MaxInt32 + 1, math.MaxInt32}, + {3_000_000_000, math.MaxInt32}, + {math.MinInt32 - 1, math.MinInt32}, + } + for _, tc := range cases { + n := tc.in + if got := convertToInt32(&n); got != tc.want { + t.Errorf("convertToInt32(%d) = %d, want %d", tc.in, got, tc.want) + } + if got := convertToInt32Pointer(&n); got == nil || *got != tc.want { + t.Errorf("convertToInt32Pointer(%d) = %v, want %d", tc.in, got, tc.want) + } + } +} + +func TestWithEndpointFeedsBothDoors(t *testing.T) { + t.Parallel() + + opts := DefaultOptions() + WithEndpoint("https://llm.example.net/gemini")(&opts) + + assert.Equal(t, "https://llm.example.net/gemini", opts.BaseURL, + "the Gemini API client reads BaseURL") + assert.Len(t, opts.ClientOptions, 1, + "the vertex door reads the same endpoint out of ClientOptions") +} + +func TestTheCallersEndpointReachesTheRequest(t *testing.T) { + t.Parallel() + + var gotPath string + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + gotPath = r.URL.Path + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"candidates":[{"content":{"role":"model","parts":[{"text":"hi"}]},` + + `"finishReason":"STOP"}],"usageMetadata":{}}`)) + })) + defer server.Close() + + llm, err := New(t.Context(), WithAPIKey("test-key"), WithEndpoint(server.URL), WithDefaultModel("gemini-2.5-flash")) + require.NoError(t, err) + + _, err = llm.GenerateContent(t.Context(), []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "hello"), + }) + require.NoError(t, err) + assert.Contains(t, gotPath, "gemini-2.5-flash", + "the request must reach the caller's endpoint, not generativelanguage.googleapis.com") +} + +func TestNewRefusesTheOptionsThisDoorCannotCarry(t *testing.T) { + t.Parallel() + + for name, opt := range map[string]Option{ + "WithGRPCConn": WithGRPCConn(nil), + } { + t.Run(name, func(t *testing.T) { + t.Parallel() + _, err := New(t.Context(), WithAPIKey("test-key"), opt) + + var notHonored *ErrOptionNotHonored + require.ErrorAs(t, err, ¬Honored, + "an option the door drops must be refused, not ignored") + assert.Contains(t, notHonored.Options, name) + }) + } +} diff --git a/llms/googleai/internal/cmd/generate-vertex.go b/llms/googleai/internal/cmd/generate-vertex.go deleted file mode 100644 index 86b4fb504..000000000 --- a/llms/googleai/internal/cmd/generate-vertex.go +++ /dev/null @@ -1,23 +0,0 @@ -// Obsolete generator: the vertex package is now hand-maintained. -// -// It used to regenerate llms/googleai/vertex/vertex.go from googleai.go, but the -// two packages now target different SDKs (google.golang.org/genai for googleai vs -// cloud.google.com/go/vertexai/genai for vertex), so a mechanical rewrite of the -// old import no longer produces a compilable file. Running it would clobber the -// hand-written vertex code. It refuses to run rather than silently corrupt. -// -// nolint -package main - -import ( - "fmt" - "os" -) - -func main() { - fmt.Fprintln(os.Stderr, "generate-vertex is obsolete: the vertex package is hand-maintained.") - fmt.Fprintln(os.Stderr, "googleai uses google.golang.org/genai while vertex uses cloud.google.com/go/vertexai/genai;") - fmt.Fprintln(os.Stderr, "regenerating vertex.go from googleai.go would produce a file that does not compile.") - fmt.Fprintln(os.Stderr, "Edit llms/googleai/vertex/vertex.go by hand. See llms/googleai/README.md.") - os.Exit(1) -} diff --git a/llms/googleai/internal/palmclient/palmclient.go b/llms/googleai/internal/palmclient/palmclient.go index be067a02c..1b3a95e85 100644 --- a/llms/googleai/internal/palmclient/palmclient.go +++ b/llms/googleai/internal/palmclient/palmclient.go @@ -36,6 +36,7 @@ const ( type PaLMClient struct { client *aiplatform.PredictionClient projectID string + location string embeddingModelName string textModelName string chatModelName string @@ -68,6 +69,7 @@ func New(ctx context.Context, projectID, location string, opts ...Option) (*PaLM return &PaLMClient{ client: client, projectID: projectID, + location: location, embeddingModelName: pOpt.EmbeddingModelName, textModelName: pOpt.TextModelName, chatModelName: pOpt.ChatModelName, @@ -297,7 +299,7 @@ func (c *PaLMClient) batchPredict(ctx context.Context, model string, prompts []s instances = append(instances, structpb.NewStructValue(content)) } resp, err := c.client.Predict(ctx, &aiplatformpb.PredictRequest{ - Endpoint: c.projectLocationPublisherModelPath(c.projectID, "us-central1", "google", model), + Endpoint: c.projectLocationPublisherModelPath(c.projectID, c.location, "google", model), Instances: instances, Parameters: structpb.NewStructValue(mergedParams), }) @@ -336,7 +338,7 @@ func (c *PaLMClient) chat(ctx context.Context, r *ChatRequest) ([]*structpb.Valu structpb.NewStructValue(instance), } resp, err := c.client.Predict(ctx, &aiplatformpb.PredictRequest{ - Endpoint: c.projectLocationPublisherModelPath(c.projectID, "us-central1", "google", c.chatModelName), + Endpoint: c.projectLocationPublisherModelPath(c.projectID, c.location, "google", c.chatModelName), Instances: instances, Parameters: structpb.NewStructValue(mergedParams), }) diff --git a/llms/googleai/llmtest_test.go b/llms/googleai/llmtest_test.go index f499e4745..aa9a14f14 100644 --- a/llms/googleai/llmtest_test.go +++ b/llms/googleai/llmtest_test.go @@ -5,6 +5,7 @@ import ( "os" "testing" + "github.com/vxcontrol/langchaingo/llms" "github.com/vxcontrol/langchaingo/testing/llmtest" ) @@ -16,11 +17,16 @@ func TestLLM(t *testing.T) { ctx := context.Background() llm, err := New(ctx, WithAPIKey(os.Getenv("GOOGLE_API_KEY")), - WithDefaultModel("gemini-2.5-flash"), + WithDefaultModel("gemini-3.5-flash"), ) if err != nil { t.Fatalf("Failed to create Google AI LLM: %v", err) } - llmtest.TestLLM(t, llm) + // gemini-3.8-flash cannot stop thinking: it refuses the minimal level and + // reasoning off, and its thoughts count against the output budget. At its + // default level it spends up to about 160 tokens on thoughts, so the suite's + // 10- and 50-token answers end on MAX_TOKENS with no text unless the door + // declares room to think first. + llmtest.TestLLM(t, llm, llmtest.WithCallOptions(llms.WithMaxTokens(512))) } diff --git a/llms/googleai/models.go b/llms/googleai/models.go new file mode 100644 index 000000000..53cf8e9e3 --- /dev/null +++ b/llms/googleai/models.go @@ -0,0 +1,25 @@ +package googleai + +import ( + "context" + "fmt" + "strings" +) + +// ListModels returns the model ids the endpoint serves, with the resource +// prefix stripped so the names match the ones callers pass as a model. +func (g *GoogleAI) ListModels(ctx context.Context) ([]string, error) { + var ids []string + for model, err := range g.client.Models.All(ctx) { + if err != nil { + return nil, fmt.Errorf("googleai: list models: %w", err) + } + if model == nil { + continue + } + if id := strings.TrimPrefix(model.Name, "models/"); id != "" { + ids = append(ids, id) + } + } + return ids, nil +} diff --git a/llms/googleai/models_test.go b/llms/googleai/models_test.go new file mode 100644 index 000000000..1560c07b2 --- /dev/null +++ b/llms/googleai/models_test.go @@ -0,0 +1,48 @@ +package googleai + +import ( + "encoding/json" + "net/http" + "net/http/httptest" + "net/url" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +type redirectTransport struct{ host string } + +func (t redirectTransport) RoundTrip(req *http.Request) (*http.Response, error) { + to, err := url.Parse(t.host) + if err != nil { + return nil, err + } + req = req.Clone(req.Context()) + req.URL.Scheme, req.URL.Host, req.Host = to.Scheme, to.Host, to.Host + return http.DefaultTransport.RoundTrip(req) +} + +func TestListModelsStripsTheResourcePrefix(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(map[string]any{ + "models": []map[string]any{ + {"name": "models/gemini-3.8-flash"}, + {"name": "models/gemma-4-31b-it"}, + {"name": ""}, + }, + }) + })) + defer srv.Close() + + llm, err := New(t.Context(), WithRest(), WithAPIKey("test-key"), + WithHTTPClient(&http.Client{Transport: redirectTransport{host: srv.URL}})) + require.NoError(t, err) + + ids, err := llm.ListModels(t.Context()) + require.NoError(t, err) + assert.Equal(t, []string{"gemini-3.8-flash", "gemma-4-31b-it"}, ids) +} diff --git a/llms/googleai/new.go b/llms/googleai/new.go index 43377146e..6280d3705 100644 --- a/llms/googleai/new.go +++ b/llms/googleai/new.go @@ -4,7 +4,9 @@ package googleai import ( "context" + "fmt" "os" + "strings" "github.com/vxcontrol/langchaingo/callbacks" "github.com/vxcontrol/langchaingo/llms" @@ -59,6 +61,18 @@ func New(ctx context.Context, opts ...Option) (*GoogleAI, error) { } } + if len(clientOptions.unhonoredOnREST) > 0 { + return gi, &ErrOptionNotHonored{Options: clientOptions.unhonoredOnREST} + } + credentials, err := clientOptions.detectCredentials() + if err != nil { + return gi, err + } + config.Credentials = credentials + if clientOptions.BaseURL != "" { + config.HTTPOptions.BaseURL = clientOptions.BaseURL + } + client, err := genai.NewClient(ctx, config) if err != nil { return gi, err @@ -67,3 +81,15 @@ func New(ctx context.Context, opts ...Option) (*GoogleAI, error) { gi.client = client return gi, nil } + +// ErrOptionNotHonored reports options this door cannot carry. Shape the +// transport with WithHTTPClient. +type ErrOptionNotHonored struct { + Options []string +} + +func (e *ErrOptionNotHonored) Error() string { + return fmt.Sprintf( + "googleai: this client cannot honor %s; shape the transport with WithHTTPClient instead", + strings.Join(e.Options, ", ")) +} diff --git a/llms/googleai/option.go b/llms/googleai/option.go index b25038769..79b92afe3 100644 --- a/llms/googleai/option.go +++ b/llms/googleai/option.go @@ -7,7 +7,6 @@ import ( "github.com/vxcontrol/langchaingo/llms" - "cloud.google.com/go/vertexai/genai" "google.golang.org/api/option" "google.golang.org/grpc" ) @@ -28,6 +27,19 @@ type Options struct { HTTPClient *http.Client ClientOptions []option.ClientOption + + BaseURL string + + credentialsFile string + credentialsJSON []byte + + unhonoredOnREST []string + + // Set by the WithDefault* sampling options, so a configured zero still reaches + // the wire. + temperatureFromCaller bool + topKFromCaller bool + topPFromCaller bool } func DefaultOptions() Options { @@ -37,10 +49,7 @@ func DefaultOptions() Options { DefaultModel: "gemini-2.5-flash", DefaultEmbeddingModel: "gemini-embedding-001", DefaultCandidateCount: 1, - DefaultMaxTokens: 2048, - DefaultTemperature: 0.5, - DefaultTopK: 3, - DefaultTopP: 0.95, + DefaultMaxTokens: llms.DefaultMaxTokens, HarmThreshold: HarmBlockNone, } } @@ -73,6 +82,7 @@ func WithCredentialsJSON(credentialsJSON []byte) Option { if len(credentialsJSON) == 0 { return } + opts.credentialsJSON = credentialsJSON opts.ClientOptions = append(opts.ClientOptions, option.WithCredentialsJSON(credentialsJSON)) } } @@ -85,15 +95,15 @@ func WithCredentialsFile(credentialsFile string) Option { if credentialsFile == "" { return } + opts.credentialsFile = credentialsFile opts.ClientOptions = append(opts.ClientOptions, option.WithCredentialsFile(credentialsFile)) } } -// WithRest configures the client to use the REST API. +// WithRest is accepted for compatibility and does nothing: the Google GenAI SDK +// speaks REST on every backend, so there is no transport left to switch. func WithRest() Option { - return func(opts *Options) { - opts.ClientOptions = append(opts.ClientOptions, genai.WithREST()) - } + return func(*Options) {} } // WithGRPCClient append a ClientOption that uses the provided gRPC client to @@ -101,6 +111,7 @@ func WithRest() Option { // This is useful for gemini clients. func WithGRPCClient(grpcClient *grpc.ClientConn) Option { return func(opts *Options) { + opts.unhonoredOnREST = append(opts.unhonoredOnREST, "WithGRPCClient") opts.ClientOptions = append(opts.ClientOptions, option.WithGRPCConn(grpcClient)) } } @@ -110,6 +121,7 @@ func WithGRPCClient(grpcClient *grpc.ClientConn) Option { // This is useful for gemini clients. func WithEndpoint(endpoint string) Option { return func(opts *Options) { + opts.BaseURL = endpoint opts.ClientOptions = append(opts.ClientOptions, option.WithEndpoint(endpoint)) } } @@ -129,6 +141,7 @@ func WithHTTPClient(httpClient *http.Client) Option { // This is useful for testing embeddings in vertex clients. func WithGRPCConn(conn *grpc.ClientConn) Option { return func(opts *Options) { + opts.unhonoredOnREST = append(opts.unhonoredOnREST, "WithGRPCConn") opts.ClientOptions = append(opts.ClientOptions, option.WithGRPCConn(conn)) } } @@ -179,10 +192,12 @@ func WithDefaultMaxTokens(maxTokens int) Option { } } -// WithDefaultTemperature sets the maximum token count for the model. +// WithDefaultTemperature sets the sampling temperature used when a call does not +// set one of its own. func WithDefaultTemperature(defaultTemperature float64) Option { return func(opts *Options) { opts.DefaultTemperature = defaultTemperature + opts.temperatureFromCaller = true } } @@ -190,6 +205,7 @@ func WithDefaultTemperature(defaultTemperature float64) Option { func WithDefaultTopK(defaultTopK int) Option { return func(opts *Options) { opts.DefaultTopK = defaultTopK + opts.topKFromCaller = true } } @@ -197,6 +213,7 @@ func WithDefaultTopK(defaultTopK int) Option { func WithDefaultTopP(defaultTopP float64) Option { return func(opts *Options) { opts.DefaultTopP = defaultTopP + opts.topPFromCaller = true } } @@ -235,6 +252,12 @@ const ( HarmBlockNone HarmBlockThreshold = "BLOCK_NONE" ) +// defaultTemperature reports the temperature to send when a call sets none; false +// leaves the model's own default in force. +func (o Options) defaultTemperature() (float64, bool) { + return o.DefaultTemperature, o.temperatureFromCaller || o.DefaultTemperature != 0 +} + // helper to inspect incoming client options for auth options. func hasAuthOptions(opts []option.ClientOption) bool { for _, opt := range opts { diff --git a/llms/googleai/palm/palm_llm.go b/llms/googleai/palm/palm_llm.go index 0833d0a4d..6648fa316 100644 --- a/llms/googleai/palm/palm_llm.go +++ b/llms/googleai/palm/palm_llm.go @@ -120,5 +120,5 @@ func newClient(opts ...Option) (*palmclient.PaLMClient, error) { palmclient.WithClientOptions(options.clientOptions...), } - return palmclient.New(context.TODO(), options.location, options.projectID, palmOptions...) + return palmclient.New(context.TODO(), options.projectID, options.location, palmOptions...) } diff --git a/llms/googleai/palm/palm_llm_test.go b/llms/googleai/palm/palm_llm_test.go index 0742831ae..cff77c267 100644 --- a/llms/googleai/palm/palm_llm_test.go +++ b/llms/googleai/palm/palm_llm_test.go @@ -1,6 +1,9 @@ package palm import ( + "context" + "errors" + "net" "net/http" "os" "path/filepath" @@ -11,16 +14,23 @@ import ( "github.com/vxcontrol/langchaingo/internal/httprr" "github.com/vxcontrol/langchaingo/llms" + "cloud.google.com/go/aiplatform/apiv1/aiplatformpb" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "google.golang.org/grpc" ) func newPalmTestLLM(t *testing.T) *LLM { t.Helper() - // Always check for recordings first - prefer recordings over environment variables + // No recording exists or can be made for any test here: this client talks + // gRPC to Vertex AI (palmclient dials a gRPC connection pool and drops any + // HTTP client), and httprr records HTTP only. The text tests would fail live + // as well, since Google has retired text-bison, the PaLM text model they + // call; the embedding tests call text-embedding-005, which is not retired. if !hasExistingRecording(t) { - t.Skip("No httprr recording available. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") + t.Skip("this client talks gRPC to Vertex AI, which httprr cannot record, so no recording exists " + + "or can be made (the text tests also call text-bison, a retired PaLM model)") } // Temporarily unset Google API key environment variable to prevent bypass @@ -135,16 +145,54 @@ func TestPaLMWithOptions(t *testing.T) { assert.NotEmpty(t, resp.Choices) } +// TestPaLMRequestTarget pins where a request goes: the regional host of the +// location, and a model path under the project and the location. The request +// stops in an interceptor, so nothing leaves the process. +func TestPaLMRequestTarget(t *testing.T) { + t.Parallel() + + errStopped := errors.New("stopped before sending") + var target, resource string + intercept := func(_ context.Context, _ string, req, _ any, cc *grpc.ClientConn, + _ grpc.UnaryInvoker, _ ...grpc.CallOption, + ) error { + target = cc.Target() + if predict, ok := req.(*aiplatformpb.PredictRequest); ok { + resource = predict.GetEndpoint() + } + return errStopped + } + noDial := func(context.Context, string) (net.Conn, error) { + return nil, errStopped + } + + llm, err := New( + WithProjectID("my-project"), + WithLocation("europe-west4"), + WithAPIKey("test-api-key"), + WithGRPCDialOption(grpc.WithContextDialer(noDial)), + WithGRPCDialOption(grpc.WithChainUnaryInterceptor(intercept)), + ) + require.NoError(t, err) + + _, err = llm.CreateEmbedding(t.Context(), []string{"hello world"}) + require.ErrorIs(t, err, errStopped) + assert.Equal(t, "europe-west4-aiplatform.googleapis.com:443", target) + assert.Equal(t, "projects/my-project/locations/europe-west4/publishers/google/models/text-embedding-005", resource) +} + func TestPaLMErrorHandling(t *testing.T) { t.Parallel() // Test missing project ID - _, err := New(WithLocation("us-central1")) + // Empty values override GOOGLE_CLOUD_PROJECT and GOOGLE_CLOUD_LOCATION, so + // the result does not depend on the environment. + _, err := New(WithLocation("us-central1"), WithProjectID("")) assert.Error(t, err) assert.Equal(t, ErrMissingProjectID, err) // Test missing location - _, err = New(WithProjectID("test-project")) + _, err = New(WithProjectID("test-project"), WithLocation("")) assert.Error(t, err) assert.Equal(t, ErrMissingLocation, err) } diff --git a/llms/googleai/parallel_calls_stream_test.go b/llms/googleai/parallel_calls_stream_test.go new file mode 100644 index 000000000..e085d0cd2 --- /dev/null +++ b/llms/googleai/parallel_calls_stream_test.go @@ -0,0 +1,100 @@ +package googleai + +import ( + "context" + "net/http" + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func weatherCall(id, location string) string { + if id != "" { + id = `"id":"` + id + `",` + } + return `{"functionCall":{` + id + `"name":"get_weather","args":{"location":"` + location + `"}}}` +} + +func streamedCandidate(finish string, parts ...string) string { + return `data: {"candidates":[{"content":{"role":"model","parts":[` + strings.Join(parts, ",") + + `]},"finishReason":"` + finish + `","index":0}]}` + "\r\n\r\n" +} + +func TestParallelCallsOfOneFunctionGetTheirOwnIDs(t *testing.T) { + t.Parallel() + + paris, london := weatherCall("", "Paris"), weatherCall("", "London") + for _, tc := range []struct { + name string + body string + wantIDs []string + }{ + {name: "streamed in one chunk", body: streamedCandidate("STOP", paris, london)}, + {name: "streamed in two chunks", body: streamedCandidate("", paris) + streamedCandidate("STOP", london)}, + { + name: "streamed with the vendor's IDs", + body: streamedCandidate("", weatherCall("call-a", "Paris")) + + streamedCandidate("STOP", weatherCall("call-b", "London")), + wantIDs: []string{"call-a", "call-b"}, + }, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + llm, err := New(t.Context(), + WithAPIKey("unit-test-key"), WithRest(), + WithDefaultModel("gemini-2.5-flash"), + WithHTTPClient(&http.Client{Transport: stubStreamTransport{body: tc.body}})) + require.NoError(t, err) + + resp, err := llm.GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "weather in Paris and London?")}, + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + + requireOneIDPerCall(t, resp.Choices[0].ToolCalls, tc.wantIDs) + }) + } + + t.Run("whole answer", func(t *testing.T) { + t.Parallel() + + transport := &captureTransport{resp: `{"candidates":[{"content":{"role":"model","parts":[` + + paris + `,` + london + `]},"finishReason":"STOP","index":0}]}`} + llm, err := New(t.Context(), + WithAPIKey("unit-test-key"), WithRest(), + WithDefaultModel("gemini-2.5-flash"), + WithHTTPClient(&http.Client{Transport: transport})) + require.NoError(t, err) + + resp, err := llm.GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "weather in Paris and London?")}) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + + requireOneIDPerCall(t, resp.Choices[0].ToolCalls, nil) + }) +} + +func requireOneIDPerCall(t *testing.T, calls []llms.ToolCall, wantIDs []string) { + t.Helper() + + require.Len(t, calls, 2) + assert.JSONEq(t, `{"location":"Paris"}`, calls[0].FunctionCall.Arguments) + assert.JSONEq(t, `{"location":"London"}`, calls[1].FunctionCall.Arguments) + if wantIDs != nil { + assert.Equal(t, wantIDs, []string{calls[0].ID, calls[1].ID}) + return + } + for _, call := range calls { + assert.True(t, strings.HasPrefix(call.ID, GENERATED_FUNCTION_CALL_ID_PREFIX), call.ID) + } + assert.NotEqual(t, calls[0].ID, calls[1].ID, + "a tool result is matched to its call by ID, so two calls must never share one") +} diff --git a/llms/googleai/partial_stream_test.go b/llms/googleai/partial_stream_test.go new file mode 100644 index 000000000..fb4ee485c --- /dev/null +++ b/llms/googleai/partial_stream_test.go @@ -0,0 +1,55 @@ +package googleai + +import ( + "bytes" + "context" + "io" + "net/http" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +type deliverThenBreak struct{} + +func (deliverThenBreak) RoundTrip(r *http.Request) (*http.Response, error) { + const body = "data: {\"candidates\":[{\"content\":{\"parts\":[{\"text\":\"sixty rooms are free\"}]," + + "\"role\":\"model\"},\"index\":0}]}\r\n\r\n" + + "data: {not json at all\r\n\r\n" + return &http.Response{ + StatusCode: http.StatusOK, + Header: http.Header{"Content-Type": []string{"text/event-stream"}}, + Body: io.NopCloser(bytes.NewReader([]byte(body))), + Request: r, + }, nil +} + +func TestAStreamThatBreaksMidAnswerKeepsWhatArrived(t *testing.T) { + t.Parallel() + + llm, err := New(context.Background(), + WithAPIKey("unit-test-key"), WithRest(), + WithDefaultModel("gemini-2.5-flash"), + WithHTTPClient(&http.Client{Transport: deliverThenBreak{}})) + require.NoError(t, err) + + delivered := "" + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, + llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type == streaming.ChunkTypeText { + delivered += chunk.Content + } + return nil + })) + + require.Error(t, err, "a broken stream must not look like a success") + require.Equal(t, "sixty rooms are free", delivered, "the first chunk did reach the consumer") + require.NotNil(t, resp, "what reached the consumer must travel with the error") + require.NotEmpty(t, resp.Choices) + assert.Equal(t, "sixty rooms are free", resp.Choices[0].Content) +} diff --git a/llms/googleai/shared_test/shared_test.go b/llms/googleai/shared_test/shared_test.go index 291e8ec83..1ba117a06 100644 --- a/llms/googleai/shared_test/shared_test.go +++ b/llms/googleai/shared_test/shared_test.go @@ -8,6 +8,7 @@ import ( "io" "net" "net/http" + "net/http/httptest" "os" "path/filepath" "reflect" @@ -25,6 +26,7 @@ import ( "github.com/vxcontrol/langchaingo/llms/googleai/vertex" "github.com/vxcontrol/langchaingo/llms/streaming" + "cloud.google.com/go/auth/credentials" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -32,36 +34,35 @@ import ( func newGoogleAIClient(t *testing.T, opts ...googleai.Option) *googleai.GoogleAI { t.Helper() - // Always check for recordings first - prefer recordings over environment variables - if !hasExistingRecording(t) { - t.Skip("No httprr recording available. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") + // A test that brings its own HTTP client answers every request itself + if bringsOwnHTTPClient(opts) { + t.Parallel() + llm, err := googleai.New(t.Context(), append(opts, googleai.WithAPIKey("test-api-key"))...) + require.NoError(t, err) + return llm } - // Temporarily unset Google API key environment variable to prevent bypass - oldKey := os.Getenv("GOOGLE_API_KEY") - os.Unsetenv("GOOGLE_API_KEY") - t.Cleanup(func() { - if oldKey != "" { - os.Setenv("GOOGLE_API_KEY", oldKey) - } - }) + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "GOOGLE_API_KEY") - rr := httprr.OpenForTest(t, httputil.DefaultTransport) + rr := httprr.OpenForTest(t, http.DefaultTransport) + if !rr.Recording() { + t.Parallel() + } - // Scrub API key for security in recordings - rr.ScrubReq(func(req *http.Request) error { - q := req.URL.Query() - if q.Get("key") != "" { - q.Set("key", "test-api-key") - req.URL.RawQuery = q.Encode() - } - return nil - }) + // Avoid issue with different view of request bodies for Google AI SDK + rr.ScrubReq(httprr.JsonCompactScrubBody) + + apiKey := "test-api-key" + if rr.Recording() { + apiKey = os.Getenv("GOOGLE_API_KEY") + } - // Configure client with httprr and test credentials + // Configure client with httprr, pinned models and the key opts = append(opts, googleai.WithRest(), - googleai.WithAPIKey("test-api-key"), + googleai.WithDefaultModel(testModel), + googleai.WithDefaultEmbeddingModel(testEmbeddingModel), + googleai.WithAPIKey(apiKey), googleai.WithHTTPClient(rr.Client()), ) @@ -74,27 +75,43 @@ func newGoogleAIClient(t *testing.T, opts ...googleai.Option) *googleai.GoogleAI func newVertexClient(t *testing.T, opts ...googleai.Option) *vertex.Vertex { t.Helper() - // Always check for recordings first - prefer recordings over environment variables - if !hasExistingRecording(t) { - t.Skip("No httprr recording available. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") + cloud := []googleai.Option{ + googleai.WithCloudProject("test-project"), + googleai.WithCloudLocation("us-central1"), } - // Temporarily unset Google API key environment variable to prevent bypass - oldKey := os.Getenv("GOOGLE_API_KEY") - os.Unsetenv("GOOGLE_API_KEY") - t.Cleanup(func() { - if oldKey != "" { - os.Setenv("GOOGLE_API_KEY", oldKey) + // A test that brings its own HTTP client answers every request itself + if bringsOwnHTTPClient(opts) { + t.Parallel() + llm, err := vertex.New(t.Context(), append(opts, cloud...)...) + require.NoError(t, err) + return llm + } + + // A recorded cassette replays without credentials, and a replay miss fails. + // This helper cannot record one: genai sends no credentials over a + // caller-supplied HTTP client, so recording needs an ADC-authenticated transport. + if !hasExistingRecording(t) { + if !hasCloudCredentials() { + t.Skip("no Vertex AI cassette and no GCP project credentials " + + "(GOOGLE_CLOUD_PROJECT and application default credentials); this helper " + + "could not record one either, since genai sends no credentials over a caller-supplied HTTP client") } - }) + t.Skip("no Vertex AI cassette, and this helper cannot record one: genai sends no credentials " + + "over a caller-supplied HTTP client, so recording needs an ADC-authenticated transport") + } - rr := httprr.OpenForTest(t, httputil.DefaultTransport) + rr := httprr.OpenForTest(t, http.DefaultTransport) + if !rr.Recording() { + t.Parallel() + } - // Configure client with httprr and test credentials + // Configure client with httprr, pinned models and test credentials + opts = append(opts, cloud...) opts = append(opts, + googleai.WithDefaultModel(testModel), + googleai.WithDefaultEmbeddingModel(testEmbeddingModel), googleai.WithHTTPClient(rr.Client()), - googleai.WithCloudProject("test-project"), - googleai.WithCloudLocation("us-central1"), ) llm, err := vertex.New(t.Context(), opts...) @@ -103,12 +120,40 @@ func newVertexClient(t *testing.T, opts ...googleai.Option) *vertex.Vertex { return llm } +// Models the cassettes are recorded with. +const ( + testModel = "gemini-3.8-flash" + testEmbeddingModel = "gemini-embedding-001" +) + +// bringsOwnHTTPClient reports whether the options carry an HTTP client of the +// test's own, which needs neither a cassette nor credentials. +func bringsOwnHTTPClient(opts []googleai.Option) bool { + resolved := googleai.DefaultOptions() + for _, opt := range opts { + opt(&resolved) + } + return resolved.HTTPClient != nil +} + // hasExistingRecording checks if a httprr recording exists for this test func hasExistingRecording(t *testing.T) bool { - testName := strings.ReplaceAll(t.Name(), "/", "_") - testName = strings.ReplaceAll(testName, " ", "_") - recordingPath := filepath.Join("testdata", testName+".httprr") - _, err := os.Stat(recordingPath) + t.Helper() + path := filepath.Join("testdata", httprr.CleanFileName(t.Name())+".httprr") + _, err := os.Stat(path) + _, errGzip := os.Stat(path + ".gz") + return err == nil || errGzip == nil +} + +// hasCloudCredentials reports whether GOOGLE_CLOUD_PROJECT names a project and +// application default credentials can be found. +func hasCloudCredentials() bool { + if os.Getenv("GOOGLE_CLOUD_PROJECT") == "" { + return false + } + _, err := credentials.DetectDefault(&credentials.DetectOptions{ + Scopes: []string{"https://www.googleapis.com/auth/cloud-platform"}, + }) return err == nil } @@ -160,8 +205,6 @@ func TestGoogleAIShared(t *testing.T) { for idx := range testConfigs { c := testConfigs[idx] t.Run(fmt.Sprintf("%s-googleai", funcName(c.testFunc)), func(t *testing.T) { - t.Parallel() - c.testFunc(t, newGoogleAIClient(t, c.opts...)) }) } @@ -174,8 +217,6 @@ func TestVertexShared(t *testing.T) { for idx := range testConfigs { c := testConfigs[idx] t.Run(fmt.Sprintf("%s-vertex", funcName(c.testFunc)), func(t *testing.T) { - t.Parallel() - c.testFunc(t, newVertexClient(t, c.opts...)) }) } @@ -250,7 +291,7 @@ func testMultiContentTextChatSequence(t *testing.T, llm llms.Model) { }, } - resp, err := llm.GenerateContent(t.Context(), content, llms.WithModel("gemini-1.5-flash")) + resp, err := llm.GenerateContent(t.Context(), content, llms.WithModel(testModel)) require.NoError(t, err) assert.NotEmpty(t, resp.Choices) @@ -272,7 +313,7 @@ func testMultiContentWithSystemMessage(t *testing.T, llm llms.Model) { }, } - resp, err := llm.GenerateContent(t.Context(), content, llms.WithModel("gemini-1.5-flash")) + resp, err := llm.GenerateContent(t.Context(), content, llms.WithModel(testModel)) require.NoError(t, err) assert.NotEmpty(t, resp.Choices) @@ -283,10 +324,18 @@ func testMultiContentWithSystemMessage(t *testing.T, llm llms.Model) { func testMultiContentImageLink(t *testing.T, llm llms.Model) { t.Helper() + // The client downloads the linked image itself and sends it inline, so the + // link is served locally and a replay needs no network. + image, err := os.ReadFile(filepath.Join("testdata", "parrot-icon.png")) + require.NoError(t, err) + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "image/png") + _, _ = w.Write(image) + })) + t.Cleanup(srv.Close) + parts := []llms.ContentPart{ - llms.ImageURLPart( - "https://github.com/vxcontrol/langchaingo/blob/main/docs/static/img/parrot-icon.png?raw=true", - ), + llms.ImageURLPart(srv.URL + "/parrot-icon.png"), llms.TextPart("describe this image in detail"), } content := []llms.MessageContent{ @@ -299,7 +348,7 @@ func testMultiContentImageLink(t *testing.T, llm llms.Model) { resp, err := llm.GenerateContent( t.Context(), content, - llms.WithModel("gemini-2.0-flash"), + llms.WithModel(testModel), ) require.NoError(t, err) @@ -330,7 +379,7 @@ func testMultiContentImageBinary(t *testing.T, llm llms.Model) { resp, err := llm.GenerateContent( t.Context(), content, - llms.WithModel("gemini-2.0-flash"), + llms.WithModel(testModel), ) require.NoError(t, err) @@ -490,7 +539,7 @@ func testTools(t *testing.T, llm llms.Model) { assert.NotEmpty(t, resp.Choices) c1 = resp.Choices[0] - checkMatch(t, c1.Content, "(64 and sunny|64 degrees)") + checkMatch(t, c1.Content, "(64(°F)? and sunny|64 degrees)") assert.Contains(t, resp.Choices[0].GenerationInfo, "input_tokens") assert.Contains(t, resp.Choices[0].GenerationInfo, "output_tokens") assert.Contains(t, resp.Choices[0].GenerationInfo, "total_tokens") @@ -576,7 +625,7 @@ func testToolsWithInterfaceRequired(t *testing.T, llm llms.Model) { assert.NotEmpty(t, resp.Choices) c1 = resp.Choices[0] - checkMatch(t, c1.Content, "(64 and sunny|64 degrees)") + checkMatch(t, c1.Content, "(64(°F)? and sunny|64 degrees)") assert.Contains(t, resp.Choices[0].GenerationInfo, "input_tokens") assert.Contains(t, resp.Choices[0].GenerationInfo, "output_tokens") assert.Contains(t, resp.Choices[0].GenerationInfo, "total_tokens") @@ -605,14 +654,15 @@ func testMaxTokensSetting(t *testing.T, llm llms.Model) { assert.NotEmpty(t, resp.Choices) c1 := resp.Choices[0] - // TODO: Google genai models are returning "FinishReasonStop" instead of "MaxTokens". - assert.Regexp(t, "(?i)(MaxTokens|FinishReasonStop)", c1.StopReason) + // TODO: Google genai models may return "STOP" instead of "MAX_TOKENS". + assert.Regexp(t, "^(MAX_TOKENS|STOP)$", c1.StopReason) } // Now, try it again with a much larger MaxTokens setting and expect to - // finish successfully and generate a response. + // finish successfully and generate a response. The model's thoughts count + // against the setting too. { - resp, err := llm.GenerateContent(t.Context(), content, llms.WithMaxTokens(2048)) + resp, err := llm.GenerateContent(t.Context(), content, llms.WithMaxTokens(8192)) require.NoError(t, err) assert.NotEmpty(t, resp.Choices) diff --git a/llms/googleai/shared_test/testdata/TestGoogleAIShared-testCandidateCountSetting-googleai.httprr b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testCandidateCountSetting-googleai.httprr new file mode 100644 index 000000000..be2fb3bae --- /dev/null +++ b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testCandidateCountSetting-googleai.httprr @@ -0,0 +1,57 @@ +httprr trace v1 +775 1865 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 455 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"contents":[{"parts":[{"text":"Name five countries in Africa"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384,"temperature":1},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 1452 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Type: application/json; charset=UTF-8 +Date: Wed, 23 Sep 2026 11:12:09 GMT +Server: scaffolding on HTTPServer2 +Server-Timing: gfet4t7; dur=1249 +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Gemini-Service-Tier: standard +X-Xss-Protection: 0 + +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "Here are five countries in Africa:\n\n1. Nigeria\n2. Kenya\n3. Egypt\n4. South Africa\n5. Ghana", + "thoughtSignature": "EqwECqkEAWkUfROQDyZ0hgRKzp/A307o/CI27aIHz3I2CxuCfAhrOJSp1dVlLuOCdyWDEoprO9RexY8yW6/HWXaArEha63w6WDsY/2jg6tTRSNIpFAPnwfc2fg9+DXHUct/5IHZVsTZ1DaUdMMg8EMww0QVUM4pgO8/p2vR3dd1Xye0s4QhL6hxWjMrbmtFcOPB4UGGCU2YTMpn8m8WFZB9gyKVWY5DP9G5u8sDzzWWIAuBqVqR1SD25i9pl7VjMO8lxUNb2nxuWVh0jUB3qikaYI9RhI+q+0mHairp4QGkPrQwmVOtjJnOW0olHUuR75GEuFLAxuCWBFAtxSe9PQNZcucBMi47n7wp2RCvEXLOGhmD7HO3FXgfMnrUqKkPJHwtpYZ/ovUHh04Lo6hUpSPMrbaDydFsIbipDK8HUkt5WO3g9BSdRu481s28hR313IDN9Axc5cFweAO7UcTJ1tRBkYooTY3c8yuXzccXH9PrPicBADbVef1q7FIX01HKZMQM1kPdgt9DTAn544JzU5Biut9/UJw7PquwGJ9PhZYrgK4b0BjVWeN7kXTq+YEGS52iAh9DsrI3zygJ/5fnYwpbFVfPHnOseQCdEa1P/71hMI9wODQ4bzZn7+PZOjCwlYXY3BcGp+0TMTUG5TV8bu1Q289a6KdROXvpsxz6+ihFQ1ZlGCXKBU7qEmuDmyZy+s+2E3YtECBEJ/jTY5E9Otgb94cWC3SXHBDirdx7Y2w==" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 6, + "candidatesTokenCount": 28, + "totalTokenCount": 151, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 6 + } + ], + "thoughtsTokenCount": 117, + "serviceTier": "standard" + }, + "modelVersion": "gemini-3.8-flash", + "responseId": "CLSzarn1CpfynsEPg8aW8A0" +} diff --git a/llms/googleai/shared_test/testdata/TestGoogleAIShared-testEmbeddings-googleai.httprr b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testEmbeddings-googleai.httprr new file mode 100644 index 000000000..f31dd3177 --- /dev/null +++ b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testEmbeddings-googleai.httprr @@ -0,0 +1,9256 @@ +httprr trace v1 +617 201158 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:batchEmbedContents HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 290 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"requests":[{"content":{"parts":[{"text":"foo"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"parrot"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"foo"}],"role":"user"},"model":"models/gemini-embedding-001"}]}HTTP/2.0 200 OK +Content-Length: 200777 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Type: application/json; charset=UTF-8 +Date: Wed, 23 Sep 2026 11:12:06 GMT +Server: scaffolding on HTTPServer2 +Server-Timing: gfet4t7; dur=300 +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "embeddings": [ + { + "values": [ + 0.008687293, + -0.0005995523, + 0.017488128, + -0.067767285, + -0.0061500445, + 3.470041e-05, + -0.004729637, + 0.0058073006, + 0.03076559, + -0.0083383275, + 0.0077374442, + -0.044319317, + -0.03668121, + 0.014634102, + 0.104894705, + -0.011687661, + -0.012862615, + 0.011709252, + 0.015287733, + -0.034255635, + 0.0005121346, + -0.012760322, + 0.021096574, + -0.0056318603, + 0.006498022, + -0.0034005821, + 0.02133476, + 0.020159671, + 0.014046812, + 0.025498588, + -0.0007774919, + 0.004046043, + -0.008088746, + -0.024721028, + -0.01891392, + -0.0043858183, + 0.017453099, + -0.019527597, + 0.008012627, + -0.00197809, + -0.00598428, + 0.0032595566, + -0.019494237, + 0.012056208, + 0.00028665893, + -0.007286767, + 0.0059994394, + -0.024076596, + -0.0050734044, + 0.0047454024, + -0.0066968445, + -0.010518766, + -0.011218274, + -0.15235053, + -0.003994987, + 0.011060574, + -0.008045645, + 0.015620118, + 0.016561916, + 0.030029712, + -0.014314311, + 0.020052657, + -0.002120565, + -0.011984409, + -0.009346121, + 0.010684147, + -0.0046938476, + 0.025904069, + -0.017173946, + 0.021311343, + 0.01969403, + -0.0067657465, + -0.03320154, + -0.02235153, + -0.02382749, + 0.0036755153, + 0.00369162, + -0.006402991, + -0.027000522, + 0.03792506, + -0.0113652935, + 0.010817447, + -0.0013063228, + -0.005831651, + 0.018017195, + 0.007974958, + 0.022740874, + 0.00241138, + -0.007421409, + 0.0009808135, + 0.0009278593, + -0.00082564563, + -0.013920607, + -0.005594853, + -0.0008029837, + 0.004135705, + 0.017192911, + -0.012926841, + -0.029362565, + -0.008991143, + -0.010069888, + 0.002832829, + -0.01199004, + -0.0045435852, + -0.003897541, + -0.0075385002, + 0.0030093023, + -0.012940013, + -0.004085419, + -0.018461393, + 0.00833783, + 0.005771225, + -0.011611716, + 0.009975825, + 0.0029588023, + -0.18698391, + -0.013411251, + 0.009762766, + 0.008617569, + 0.016054373, + -0.005534795, + 0.012755129, + -0.0192076, + 0.0073138094, + 0.0009115203, + 0.023063488, + -0.023286233, + 0.011298807, + -0.001075817, + 0.0023190498, + 0.0038535318, + 0.0005834468, + 0.011501422, + 0.006702255, + 0.0062109283, + 0.02183751, + -0.032164596, + 0.019121049, + -0.0055775414, + 0.021821672, + -0.0036035548, + -0.009011843, + -0.022213923, + 0.0058157584, + 0.006074562, + 0.005068639, + -0.018747916, + -0.01970195, + 0.017120222, + -0.013320199, + -0.021279475, + 0.015190147, + 0.0253083, + -0.014097967, + -0.009909757, + -0.053273983, + -0.01906554, + 0.010277074, + -0.0066464352, + 0.013347818, + -0.006589539, + 0.008620761, + -0.002177168, + -0.0003507091, + 0.012762215, + 0.008973848, + -0.017079908, + 0.031663943, + 0.020444658, + 0.004901412, + 0.012096727, + 0.0102592185, + -0.0117244, + -0.0051103467, + 0.016173013, + 0.024313312, + -0.024164645, + -0.004551832, + 0.00061222084, + 0.005129755, + 0.0014223006, + 0.002995904, + 0.010437085, + 0.008957324, + -0.014226335, + -0.00858208, + -0.021446357, + -0.0025424985, + -0.012760826, + -0.0073461533, + 0.014100205, + -0.011371971, + -0.0072267917, + -0.006064865, + 0.020688552, + 0.006472284, + 0.00031394183, + 0.004539531, + 0.0041059568, + -0.006476568, + 0.032754947, + -0.009970065, + -0.01073267, + 0.003956176, + -0.0002989718, + -0.006135503, + 0.027761823, + -0.0027849567, + 0.012315016, + 0.017773582, + 0.012340351, + -0.027640266, + 0.016883355, + -0.024143461, + 0.021447303, + 0.003629593, + -0.014176364, + -0.020846942, + -0.0013734883, + -0.00506708, + -0.024184246, + -0.024940472, + -0.039107937, + 0.0056861923, + -0.005296446, + 0.010592748, + 0.004813534, + 0.00584702, + 0.0037388674, + 0.014751302, + -0.007833008, + 0.013772334, + -0.007289538, + 0.008347103, + -0.009325167, + 0.0030555413, + 0.0022530123, + 0.015573232, + -0.0061403112, + 0.014338322, + -0.020420594, + 0.0067883558, + 0.020518836, + 0.024063326, + 0.017427485, + -0.011109382, + -0.0018570129, + -0.021259252, + 0.006105089, + -0.021553349, + 0.02146669, + 0.0010082407, + -0.034753047, + -0.011069832, + -0.004126004, + -0.0005816653, + -0.0088055935, + 0.012430738, + 0.00035655912, + -0.024972728, + -0.019622268, + -0.0305486, + 0.00025767417, + -0.02089438, + 0.00015059317, + -0.009025982, + 0.0004761942, + 0.016839279, + -0.025694063, + -0.0044296975, + -0.00223397, + 0.009437991, + 0.0053606452, + -0.0048000184, + -0.0029385174, + -0.0032674097, + -0.13097695, + -0.008740567, + -0.013532031, + -0.022778507, + -0.02875414, + -0.004267425, + -0.008642789, + 0.012612438, + 0.021193268, + 0.016677273, + -0.0054723592, + -0.006210531, + 0.008814096, + -0.00092938077, + 0.010654507, + 0.01892029, + -0.0016280303, + -0.001700918, + -0.007964983, + -0.014993818, + 0.0057483455, + -0.0014383545, + -0.0085505415, + -0.005378245, + 0.005691154, + -0.0054322216, + -0.012698173, + -0.0007175664, + -0.0054551894, + 0.006930263, + -0.0051436294, + 0.007788823, + 0.008630878, + -0.01246759, + -0.00041031017, + 0.034430236, + -0.0010709311, + -0.012113111, + 0.009765108, + 0.008934989, + 0.0052047265, + 0.011344533, + -0.0015576839, + 0.0076825265, + -0.026515618, + 0.0009329524, + 0.014590517, + -0.027028766, + -0.01913089, + 0.02159703, + -0.025530176, + -0.014180738, + 0.0015316282, + 0.028312722, + 0.008969981, + 0.01636098, + 0.008516236, + -0.005187639, + -0.0032281978, + 0.0035057622, + 0.026580233, + -0.0011868782, + -0.007449761, + 0.007486185, + 0.0069418196, + -0.005742916, + -0.005400782, + 0.010856775, + 0.009548369, + 0.003226997, + 0.02420754, + -0.0077429977, + 0.0045912904, + -0.029369257, + -0.006270844, + 0.008312032, + 0.013096815, + -0.008833374, + 0.003186229, + 0.005816183, + 0.0021880534, + 0.0003931968, + 0.006865366, + 0.010002729, + -0.010185929, + 0.010563891, + 0.00212922, + 0.017728625, + 0.017483953, + -0.015023876, + 0.02049577, + 0.0007207393, + -0.029220348, + 0.0003938394, + -0.023995753, + -0.023114612, + -0.024813, + -0.0004727605, + -0.02131237, + 0.019992903, + -0.022018455, + -0.011245906, + 0.012603231, + -0.016052695, + 0.0063873124, + -0.0031213756, + -0.0026527708, + 0.010019001, + 0.0045374334, + 0.0061593726, + 0.0070362296, + -0.011049312, + -0.0009436636, + -0.018056205, + -0.0013992052, + 0.0034248752, + 0.005950456, + 0.020585394, + -0.018088175, + -0.008558077, + 0.0013266865, + -0.02649609, + -0.017061364, + 0.029099887, + -0.0071205674, + -0.007876009, + -0.0028450787, + -0.014287453, + -0.028108932, + -0.027767034, + -0.020211775, + 0.0127054285, + -0.005742255, + -0.02261303, + -0.008700159, + -0.014775517, + 0.0037119677, + 0.010950597, + 0.0239616, + 0.014615081, + -0.02370977, + -0.012224933, + 0.031222288, + 0.013874941, + 0.0006624498, + 0.008215657, + 0.016483659, + 0.011281578, + 0.011413039, + -0.023720248, + -0.021328518, + -0.015865006, + 0.00055274164, + 0.01500976, + -0.007229906, + 0.0038163138, + 0.009932837, + -0.021932326, + 0.006949902, + -0.02544569, + 0.006537318, + 0.0019705454, + 0.006958907, + -0.018024437, + 0.00567134, + -0.0050933743, + -0.0016354594, + -0.008876939, + 0.012070871, + 0.0018852351, + -0.0071650385, + 0.012203077, + -0.004173197, + -0.0047833505, + -0.0015536913, + 0.0030763065, + -0.0021329378, + 0.0037008463, + -0.020766912, + 0.026228014, + -0.0028039473, + -0.0081609255, + -0.01870959, + 0.0059181573, + -0.0018067501, + -0.003860282, + -0.00055790343, + -0.0073873242, + -0.00413714, + 0.0072153066, + 0.008891046, + -0.027005166, + 0.013543151, + 0.012353646, + -0.011079663, + 0.015625004, + 0.012731967, + 0.014032128, + -0.0012448762, + -0.016995478, + 0.01681567, + 0.007434244, + -0.017074956, + 0.011768046, + 0.02115411, + 0.003970481, + 0.0041958163, + -0.009169353, + 0.03898993, + -0.005237962, + 0.00011626366, + -0.0035541493, + 0.004878718, + -0.012272032, + 0.0043846844, + -0.008687135, + -0.00405254, + 0.007174887, + -0.0026679677, + 0.0025143574, + -0.028716821, + 0.00890444, + -0.006138646, + 0.010285583, + 0.019889217, + -0.008401767, + -0.012110083, + 0.025436498, + 0.0046592, + -0.009531749, + -0.028525548, + 0.011394783, + 0.024467498, + -0.0038581465, + 0.012530472, + 0.0076566734, + -0.002841675, + 0.0037038752, + 0.014615617, + 0.004762231, + 0.009002116, + -0.01245148, + -0.0073044873, + 0.022037944, + 0.032197755, + -0.0049000815, + -0.024018707, + -0.0037875383, + -0.0020812561, + -0.001972549, + 0.0027452414, + -0.0102813905, + 0.0061977524, + 0.0014802256, + 0.013255166, + 0.012226865, + -0.005501544, + -0.0072147488, + 0.0047980067, + 0.01125825, + -0.013410314, + -0.033505343, + -0.00041833645, + 0.033699498, + -0.0057157897, + 0.00429601, + 0.01877627, + -0.0050414144, + 0.03137162, + -0.12720929, + -0.004552171, + -0.0033405058, + -0.004955866, + 0.011527269, + -0.01758085, + -1.3478935e-06, + -0.014266126, + 0.0029667758, + -0.020139594, + 0.0037180695, + 0.020401116, + 0.0045658993, + 0.02065899, + -0.009741241, + -0.011483437, + -0.0133353695, + 0.009935322, + 0.010573445, + 0.006179922, + 0.01627513, + 0.011737903, + 0.003226013, + 0.022156741, + -0.018620929, + -0.01777529, + 0.008175604, + 0.0016045879, + -0.0029265038, + 0.0021788888, + 0.010028388, + -0.010622037, + 0.0003946121, + 0.011146568, + 0.009001273, + -0.0067314114, + -0.023070794, + -0.008757176, + -0.005538598, + 0.035726305, + -0.030223409, + -0.013083865, + 0.02403896, + 0.0012364216, + -0.022822661, + 0.0031923193, + 0.03859201, + -0.001968577, + -0.006411719, + 0.027751718, + -0.027976727, + -0.0020238843, + -0.015425944, + 0.008480097, + 0.01743972, + -0.03977096, + 0.002610674, + 0.02234449, + -0.020265289, + 0.02029537, + 0.0024829702, + 0.005901852, + -0.0102470815, + 0.018335385, + 0.017356101, + -0.005466808, + -0.0016111028, + 0.007029766, + 0.011143762, + -0.0051274584, + 0.02794184, + 0.0018588494, + 0.006535482, + 0.01384492, + -0.009647197, + 0.017071873, + 0.008974704, + 0.007221637, + -0.013603257, + 0.00540491, + -0.01196659, + -0.009878937, + -0.07751112, + 0.009982854, + 0.013531767, + -0.01750864, + -0.0058993297, + -0.010440269, + -0.007223993, + 0.0004057722, + 0.012643911, + -0.012247717, + -0.008788133, + 0.01751591, + -0.015608312, + 0.01685601, + 0.015184137, + -0.0039273747, + -0.015904171, + 0.013306926, + 0.003270806, + -0.003112624, + 0.015502476, + 0.0128690535, + 0.026035232, + 0.0069733867, + -0.0012709346, + 0.01779661, + 0.014128588, + 0.008355636, + 0.017721467, + -0.032423608, + 0.0040111355, + -0.109767415, + 0.01800147, + 0.011355999, + 0.01732263, + 0.011371235, + 0.0065964838, + 0.012508826, + 0.00875898, + -0.009659394, + -0.011641472, + 0.008994596, + -0.000541746, + -0.019262038, + 0.02257225, + 0.0037666305, + 0.1759314, + -0.011083732, + -0.011096129, + -0.0021755132, + 0.03005365, + -0.009839315, + -0.009082269, + -0.0021492261, + -0.011667841, + -0.0009459134, + 0.011013641, + -0.013615024, + 0.014298762, + -0.016583417, + 0.009037499, + 0.009999642, + -0.0069480594, + -0.015509829, + -0.036029406, + 0.012574708, + 0.012039721, + -0.01139339, + 0.028019309, + -0.011415676, + 0.019461382, + 0.02094867, + 0.0066629616, + -0.014232094, + -0.0019316599, + -0.0026851152, + 0.0018528218, + 0.011884893, + 0.023531225, + 0.026506547, + 0.019548418, + -0.026613288, + -0.058991373, + 0.013974939, + 0.041930024, + 0.015625289, + -0.0026592927, + -0.0022334908, + -0.035503462, + -0.0068886676, + 0.016730804, + -0.013184282, + -0.0054780557, + 0.006730944, + 0.011812617, + -0.0023940308, + 0.0040142424, + 0.017965924, + 0.006230427, + -0.012023672, + 0.01193248, + -0.00480636, + 0.013578558, + -0.01014002, + 0.002607888, + -0.023075152, + -0.020938518, + -0.006875862, + -0.010944789, + 0.0016648102, + -0.02866273, + -0.0062460005, + -0.0041332464, + -0.002419293, + -0.009879285, + -0.0011643772, + -0.011210249, + -0.0059280577, + 0.04624401, + 0.011034667, + -0.033948317, + 0.010635842, + -0.015743993, + -0.004884986, + 0.022342958, + -0.0046785534, + 0.012329268, + -0.0035886692, + 0.008836355, + 0.0012729478, + -0.0025380596, + 0.008947849, + -0.011649148, + -0.008452644, + -0.018643655, + 0.009240796, + -0.006998141, + 0.013581855, + 0.020466326, + 0.015995642, + 0.0047566146, + -0.009059944, + -0.0230155, + -0.00568377, + -0.006553409, + 0.00095187046, + 0.023107348, + -0.0033433698, + 0.004151198, + 0.008758634, + 0.005522271, + 0.00074491353, + 0.010456838, + 0.0018540412, + -0.0056753014, + 0.015488553, + -0.008577112, + 0.0073200883, + 0.029729836, + -0.0003803152, + -0.0075514945, + 0.011939851, + 0.013535546, + 0.01551645, + 0.0005487665, + 0.0015498119, + -0.0013686672, + -0.015682774, + -0.0006655467, + -0.018248186, + 0.007391832, + 0.031391453, + -0.008657709, + 0.007814712, + -0.0041959696, + -8.9730056e-05, + 0.00862867, + -0.013247852, + -0.00359875, + 0.0033425884, + -0.010817053, + -0.0024565854, + -0.0025616894, + 0.0063345213, + -0.018881122, + -0.0028153076, + -0.004178576, + 0.013227916, + -0.0009714555, + -0.003745339, + -0.0040984172, + 0.021268869, + -0.0036756753, + 0.0042561297, + 0.0073148203, + 0.020137565, + -0.020034134, + -0.0027910324, + -0.009887379, + -0.0074726143, + -0.0019888817, + 0.0076818876, + -3.5185767e-05, + -0.01259977, + 0.016189603, + -0.0033148054, + -0.0054394347, + -0.0130495, + 0.007845817, + -0.017973112, + -0.0072650826, + -0.0025931138, + -0.0111553725, + 0.009376972, + -0.0047410955, + 0.009441436, + 0.009923029, + -0.019664193, + 0.0036295184, + 0.012965504, + 0.0053555537, + -0.0067654955, + -0.028558359, + 0.013580956, + -0.0048293252, + 0.0029994557, + -0.0037350308, + 0.013576812, + -0.018575467, + 0.0013208555, + -0.010166264, + -0.005391491, + 0.0026590673, + -0.0019632545, + -0.018207865, + 0.015604931, + 0.01269651, + -0.014232606, + 0.015538605, + 0.011077022, + 0.011468066, + -2.5617703e-05, + -0.0059816977, + -0.0040265643, + -0.0095618, + 0.0059205433, + -0.004717566, + -0.0065576807, + -0.006179225, + -0.00048346032, + -0.0022051877, + 0.0038358844, + 0.0127531765, + -0.0022487887, + -0.0024102605, + 0.0039293002, + 0.006930553, + 0.023766395, + 0.012744543, + -0.008747719, + 0.00082147325, + -0.010755195, + -0.0101795355, + 0.025872659, + -0.010253086, + 0.0015751722, + 0.007285309, + -0.007482195, + 0.001578618, + -0.008217535, + 0.0019503374, + -2.9443578e-05, + 0.0016160882, + 0.013071392, + 0.00736983, + 0.012191658, + 0.00044877562, + 0.007949159, + -0.006756194, + 0.008867985, + 0.002330643, + 0.002464825, + 0.011418792, + 0.007812943, + 0.017862773, + -0.018558832, + 0.010283134, + 0.008645683, + 0.01330512, + -0.027024375, + -0.008063128, + 0.0077728815, + 0.0023448921, + -0.0019505746, + -0.021876818, + 0.0040953932, + -0.0021006765, + -0.0030211697, + 0.006367454, + 0.022272265, + 0.017458457, + -0.0072665988, + 0.012167716, + -0.003225298, + 0.0009803289, + -0.0038456817, + -0.005121437, + -0.011292835, + -0.0024890837, + -0.022529177, + -0.002943297, + 0.0054065115, + 0.016208753, + 0.0078538, + -0.006325404, + 0.0033352273, + 0.0032606563, + 0.0022635972, + 0.0058103786, + 0.0047208755, + -0.0010763096, + 0.0019977016, + 0.011211282, + 0.012099789, + 0.0058530592, + -0.0079528745, + -0.0022821457, + -0.015429311, + 0.002091637, + -0.012202914, + -0.005769598, + -4.9549937e-05, + -0.019219175, + -0.016427452, + -0.0124934, + 0.011391695, + 0.008626614, + 0.0038711757, + 0.008935884, + 0.005755672, + 0.0038448959, + 0.10203414, + -0.00491466, + 0.01911876, + -0.004106837, + -0.0031110372, + 0.00083937496, + -0.014227256, + 0.0070216944, + 0.019370308, + -0.015442503, + -0.012127851, + -0.003917447, + 0.0031005864, + -0.017422454, + 0.006015996, + 0.0040558344, + -6.778924e-05, + -0.010797539, + 0.018605713, + 0.0050685722, + -0.0026278528, + -0.00270912, + -0.013774137, + 0.0020730842, + 0.00738008, + -0.008515877, + -0.007146094, + -0.001406558, + -0.001264173, + 0.007721611, + 0.001030842, + 0.0016861404, + -0.0034692846, + 0.0007273634, + -0.013399225, + -0.020340467, + -0.0062097055, + 0.0073292735, + 0.026675716, + 0.00955875, + 0.015377012, + -0.009985699, + -0.005048428, + 0.00832004, + -0.0025997728, + 0.0018225466, + -0.017975392, + -0.0011290255, + -0.0060312785, + -0.0015739857, + 0.009935285, + 0.0049610613, + 0.0048964336, + -0.010850079, + -0.029929858, + -0.020901177, + 0.013625098, + -0.008362455, + 0.012223114, + -0.00550919, + -0.0056522265, + 0.0044907844, + 0.007421419, + 0.002716557, + 0.0025252753, + -0.017997548, + 0.0006915558, + 0.0025770622, + -0.013855779, + -0.012460083, + -0.0137106925, + 0.027582813, + -0.00047286818, + 0.014739756, + 0.04005512, + 0.016134534, + -0.013676932, + -0.0013754886, + -0.0072753164, + -0.0053872326, + 0.010810851, + -0.0044695656, + -0.0054093376, + -0.011447949, + -0.0034802065, + 0.00886274, + 0.0024936812, + -0.0016941471, + -0.0046303063, + -0.005115387, + 0.011388673, + -0.002602833, + 0.0015605927, + 0.0076540667, + 0.01495087, + 0.014479292, + 0.13426869, + -0.010343856, + -0.013991341, + -0.010159898, + -0.025989842, + -0.005845415, + 0.011808049, + 0.0009514725, + -0.008544427, + 0.008789091, + -0.0019632503, + 0.0074643474, + 0.009040342, + -0.0014615289, + -0.009654081, + -0.0045177573, + -0.004699992, + -0.0039853775, + -0.012154477, + 0.0049168468, + 0.016103074, + -0.0029735023, + -0.0032849067, + -0.011890683, + 0.023391783, + 0.001115073, + -0.007976776, + 0.0028829123, + -0.013872473, + 0.010126067, + 0.0038869805, + -0.005223845, + 0.0144363735, + -0.012691636, + 0.0033915986, + -0.0026844176, + 0.013726618, + 0.0050477516, + 0.008253508, + -0.008230563, + 0.009430952, + 0.009419306, + 0.009602341, + -0.006817221, + -0.011411092, + -5.3084113e-05, + -0.0051366547, + 0.025701798, + 0.0050504627, + 0.001863422, + -0.007653452, + -0.011191641, + 0.0018513721, + -0.005511763, + -0.003843674, + -0.014216934, + 0.007948217, + 0.010417587, + 0.0003743493, + -0.020185111, + 0.020256234, + 0.001604993, + 0.0050220755, + 0.0044933474, + 0.001094293, + -0.0070919646, + -0.004933035, + -0.014843117, + 0.0037880135, + -0.0016433855, + -0.0015997805, + 0.012379244, + -0.005374086, + -0.008613257, + -0.00308308, + 0.012005496, + 0.01219479, + 0.027671035, + 0.01966535, + 0.018461045, + 0.00016139045, + -0.01710834, + -0.0061272453, + -0.0009167629, + -0.0009247159, + -0.0041763783, + -0.0069067464, + 0.0269922, + 0.0013090636, + -0.009669332, + 0.02541561, + 0.0026287434, + 0.00438516, + 0.008517329, + -0.010393998, + -0.0006080028, + 0.0013368356, + -0.0067964206, + 0.006055294, + -0.0018739895, + 0.011661225, + 0.0006691963, + 0.0063973363, + 0.0052031865, + 0.0056542293, + -0.005343611, + -0.002528273, + -0.0099809095, + -0.0089971805, + -0.005067785, + -0.0045591523, + -0.001206469, + 0.004514228, + -0.015323275, + -0.0030214747, + -0.010772925, + 0.013496088, + 0.0002321004, + -0.008330514, + 0.0006543195, + -0.008927259, + -0.007080007, + -0.017847273, + -0.007852169, + 0.004867326, + 0.02114902, + 0.004206768, + 0.02426388, + 0.0031347352, + -0.012892525, + -0.0136010805, + -0.0021259983, + 0.0053054765, + -0.013394673, + -0.003549579, + 0.00056906993, + 0.0029023157, + 0.0055223512, + -0.03244142, + -0.0059293862, + 0.012482649, + -0.0053719017, + -0.0056271334, + 0.004663817, + 0.0038268266, + 0.009113935, + 0.012919591, + 0.010335849, + 0.019291041, + -0.027955465, + 0.0175151, + 0.002201153, + -0.018746039, + -0.0025196732, + -0.0060254936, + -0.0046358444, + -0.0043030255, + -0.0071517783, + 0.001981071, + -0.006623821, + 0.0062295506, + -0.06752047, + -0.0013635798, + -0.0082442155, + 0.010408489, + 0.0027342502, + -0.01580649, + 0.00072810904, + -0.00639373, + 0.0013875354, + 0.023504796, + -0.003944722, + -0.005825697, + 0.0039608637, + 0.00616855, + 0.01160933, + 0.0038453587, + -0.0030675516, + 0.016232373, + 0.0067002834, + -0.010276981, + -0.007333522, + -0.011839703, + -0.0075594834, + 0.011761927, + -0.0044737575, + 0.016663749, + -0.0012487443, + 0.015731106, + -0.018402008, + -0.0183839, + 0.0026329358, + 0.0011446407, + 0.013813632, + 0.0098859025, + 0.006023755, + -0.009067822, + 0.008725908, + -0.0130427135, + -0.018925047, + 0.0014232913, + 0.018175516, + -0.0026799976, + -0.008415098, + -0.006190411, + -0.015069961, + -0.012387894, + 0.014828759, + 0.003389344, + 0.006926882, + -0.007365336, + 0.00039667886, + -3.3663047e-05, + -0.014900065, + -0.003231955, + 0.011181726, + 0.005845175, + 0.018248007, + 0.0013438802, + 0.0020612935, + -0.013579148, + 0.027580371, + 0.017224563, + -0.0069170427, + 0.0012293892, + -0.013908563, + 0.009362261, + -4.4852834e-05, + 0.011255446, + 0.007963492, + 0.00599945, + 0.0085712075, + 0.017237164, + 0.0048445994, + -0.014030399, + -0.00011396099, + -0.0034294438, + 0.014459115, + -0.0043620956, + -0.0030048848, + -0.010300076, + 0.0048096916, + -0.0014136425, + 0.005238761, + 0.0006934089, + 0.011712095, + -0.02344152, + -0.0034592242, + -0.0012979321, + -0.0008097194, + 0.00024911689, + -0.008433209, + 0.01945377, + 0.0038686616, + 0.0073846136, + -0.0018593392, + -0.010089531, + -0.020803986, + 0.0017015274, + 0.01011945, + -0.005920297, + 0.00075382984, + -0.013361308, + -0.010457353, + 0.003709525, + -0.0020410046, + 0.009095445, + 0.0057571135, + 0.0073872292, + 0.0074922987, + 0.0042305817, + 0.0046910136, + 0.011337975, + 0.010771098, + 0.0055035288, + -0.0024431818, + -0.0034784204, + 0.0019023293, + 0.00074378995, + -0.0021880115, + -0.02343962, + -0.0045665954, + 0.004842072, + -0.007769299, + -0.01107295, + 0.01570419, + -0.011471096, + 0.0028621554, + -0.011788264, + 0.0024176063, + -0.0067343414, + 0.0036415146, + 0.009940857, + 0.010515336, + 0.0153192775, + -0.0055591646, + -0.0011023014, + 0.008124838, + 0.021870963, + -0.020843172, + -0.0076007135, + 0.019367531, + -0.016218679, + -0.00038258635, + -0.0008830315, + 0.00040922983, + 0.009032848, + -0.014394465, + 0.015315479, + -0.0048474, + 0.005155119, + -0.011130397, + -0.01709991, + 0.01525269, + 0.025027033, + -0.010582375, + -0.013208439, + -0.0022990992, + 0.013619277, + -0.0012467117, + -0.00423292, + 0.017739438, + 0.012879134, + 0.012289041, + -0.0028026896, + 0.0018197205, + -0.005789294, + -0.0013462343, + -0.0140815005, + 0.007697268, + -0.0073407823, + 0.015746001, + -0.014494718, + 0.002227598, + 0.0058589512, + -0.008022744, + 0.00032994995, + 0.016861351, + 0.007746557, + 0.0012076213, + -0.0014928118, + -0.027859742, + -0.007508688, + -0.0062162927, + 0.008185115, + -0.011211574, + -0.030456275, + -0.006595851, + -0.0043915994, + -0.004560805, + 0.0021029217, + -0.005901756, + -0.010120026, + 0.003870392, + -0.0065757125, + 0.007439931, + -0.007206456, + 0.009306462, + -0.011222527, + 0.0038380732, + 0.0041258056, + 0.0036614554, + 0.008943188, + 0.004447874, + 0.012172903, + -0.0027927645, + -0.10990407, + -0.0107053425, + -0.010982829, + 0.00026859544, + -0.011364037, + 0.002107165, + 0.0027699512, + -0.009688038, + 0.005025573, + -0.0030257965, + -0.029507438, + -0.010607273, + 0.0036587769, + -0.052284706, + 0.005750383, + 0.013304516, + 0.0056821113, + -0.00055684504, + -0.0124841295, + -0.014194956, + -0.009881316, + -0.004730288, + -0.010770149, + -0.003442465, + 0.0002029708, + -0.0048261397, + -0.009385183, + 0.013682417, + 0.0036431835, + -0.0036617871, + 0.0033700669, + -0.012511542, + -0.0040065665, + -0.00039073988, + -0.0001645874, + 0.0023828647, + -0.0035815707, + -0.02277364, + -0.13885239, + 0.0048258253, + -0.016727017, + -0.0035861162, + -0.0004357154, + 0.0076328944, + 0.0015466264, + 0.004704767, + 0.014394146, + 0.003662711, + -0.017604215, + -0.0095090605, + -0.010775129, + -0.020340193, + -0.006387117, + 0.008352139, + -0.008710415, + 0.012402521, + -0.0185954, + -0.00034902617, + -0.0139139695, + -0.00696644, + 0.0021379532, + 0.006596915, + -0.00443882, + 0.0092429025, + 0.008517412, + 0.016136743, + 0.011851472, + 0.0055892696, + 0.006454984, + -0.002844811, + 0.004111174, + -0.015119909, + 0.00046974185, + -0.008508248, + -0.0036962251, + 0.011149122, + -0.011589812, + 0.0005875099, + -0.0041049854, + -0.004684072, + -0.011526992, + 0.0011532112, + 0.0058752815, + 0.012508175, + 0.02132431, + 0.0082033025, + -0.010449682, + 0.013685048, + -0.005249225, + 0.007403782, + -0.00350363, + -0.00760309, + 0.0005340016, + 0.00059681403, + -0.0072446917, + 0.019734096, + 0.0081668, + -0.0026972305, + 0.011692245, + -0.016342698, + -0.0129035795, + -0.008587365, + 0.0061726817, + -0.011630305, + 0.0046947543, + 0.019354332, + -0.004189159, + 0.0331135, + 0.013813115, + 0.012493036, + -0.009233703, + 0.004784202, + 0.0072427946, + -0.0073105106, + -0.009735168, + 0.013644838, + 0.0047425316, + -0.011731725, + 0.020365646, + 0.00358893, + -0.0042011817, + 0.00843774, + 0.0004130545, + -0.004626026, + 0.01563459, + 0.017539307, + 0.0061307596, + -0.036535047, + 0.002856945, + 0.0010879508, + 0.006720774, + 0.011432691, + 0.0011208986, + -0.0014615881, + 0.0025266362, + 0.0029062033, + -0.0012071481, + -0.03364649, + 0.017724605, + 0.007882852, + -0.0008947685, + -0.0055972124, + 0.0043411045, + 0.0059209466, + -0.024726767, + 0.0022163335, + 0.017410137, + -0.012331643, + 0.00093629386, + 0.010155606, + 0.0071074655, + 0.017148903, + 0.0069656046, + -0.008216308, + -0.016422855, + -0.01051236, + 0.002277297, + 0.008514118, + -0.01104895, + 0.006501589, + -0.008281461, + -0.016874673, + -0.009701664, + -0.00534877, + -0.00083992106, + 0.008316926, + -0.011451599, + -0.009497453, + -0.0015088908, + 0.03155688, + 0.001647142, + 0.0062776566, + 0.014497768, + 0.0049836687, + 0.009408785, + -0.008823924, + -0.0006205365, + 0.017113376, + 0.026770512, + -0.02324921, + 0.005502053, + 0.016133603, + -0.01073965, + 0.01119444, + -0.005914867, + 0.0073784553, + 0.029522652, + 0.037033953, + -0.01011684, + -0.018632608, + 0.0071946904, + 0.0072457413, + 0.012746859, + -0.007071921, + 0.0008394189, + -5.1466977e-05, + -0.009039916, + -0.00839706, + -0.013037034, + -0.010557386, + 0.0042593433, + -0.010780316, + -0.020731559, + 0.0055720196, + -0.0074543073, + 0.021371728, + -0.012882052, + 0.020496717, + 0.011643548, + -0.009634179, + -0.00092866144, + 0.00483516, + -0.0083142165, + -0.021085694, + -0.010626112, + 0.006075356, + 0.0050198976, + 0.00070266397, + -0.014482145, + -0.013829435, + 0.024985164, + -0.0059741247, + -0.017689096, + 0.011286558, + 0.011150053, + 0.0019929903, + 0.010271928, + 0.004388811, + 0.0037919895, + 0.01137747, + 0.011752597, + 0.008246966, + -0.016166897, + -0.00929031, + 0.0016504466, + 0.003116734, + 0.016833946, + 0.008572729, + 0.011849296, + 0.004536235, + -0.0149264615, + -0.1220818, + -0.0068386863, + -0.011979482, + -0.0007432419, + 0.004312895, + 0.005471731, + -0.0030712036, + 0.0043197353, + 0.0010173935, + -0.0041594156, + -0.023357423, + -0.011802607, + -0.009341089, + 0.00080977683, + 0.006396491, + 0.007133644, + 0.009445247, + 0.0046809516, + -0.017313533, + -0.014050897, + -0.008909982, + 0.001399032, + 0.0005823391, + -0.0037739954, + -0.008802786, + -0.010101861, + 0.0005422452, + -0.0026704257, + -0.025089346, + -0.0015616232, + -0.00573369, + 0.009899661, + -0.011831669, + -0.0069454764, + -0.0136666875, + -0.004289939, + -0.0090006525, + 0.008795462, + -0.029714026, + -0.0105763795, + 0.0218584, + 0.009998341, + -0.011087116, + -0.0026374902, + -0.0047321855, + 0.014291109, + -0.018461676, + -0.0038414346, + -0.037691638, + -0.020409081, + 0.016592087, + 0.01226431, + -0.005693988, + -0.025787413, + -0.016990053, + -0.02508468, + 0.012653639, + -0.006535383, + -0.003179042, + 0.017017324, + -0.005512723, + -0.031306356, + -0.006355945, + 0.00906425, + 0.017586047, + 0.008144389, + -0.005161437, + 0.16480307, + -0.011086962, + 0.0038255285, + -0.0034155461, + -0.0022244893, + 0.0069111395, + 0.004945085, + -0.0015480005, + -0.019974647, + -0.017162047, + -0.011386591, + -0.0007254434, + -0.018195067, + -0.018254226, + 0.004978872, + 0.018840728, + 0.0018573047, + -0.004953671, + 0.014272468, + -0.0044418764, + -0.0054419185, + 0.005396661, + -0.0010648494, + -0.008385663, + 0.009492778, + -0.0036053853, + -0.007359148, + 0.0106931, + 0.019590788, + -0.011659043, + 0.005892998, + -0.010862912, + -0.022831047, + -0.004673795, + 0.00824299, + -0.0008459908, + -0.0014790132, + 0.012803555, + -0.0010869586, + 0.01929423, + 0.013099115, + 0.0041837185, + 0.0030553467, + -0.014001589, + -0.006455516, + -0.010406346, + -0.0104905525, + 0.0002410486, + -0.008702263, + 0.002118317, + -0.012232092, + 0.006574767, + -0.012062212, + -0.015584312, + -0.0021630656, + -0.011257759, + 0.011374717, + 0.007447821, + 0.0003595476, + 0.01140418, + -0.011829871, + 0.009773827, + 0.012263084, + 0.005297637, + -0.018520074, + 0.016378839, + -0.012936623, + -0.014232741, + 0.0042014606, + -0.14913663, + 0.012867319, + -0.00017956202, + -0.008277805, + -0.0124453865, + -0.020673662, + 0.015406676, + -0.020010436, + 0.00090116076, + -0.016393082, + -0.0041900394, + -0.0045637037, + 0.009775279, + 0.01950372, + -0.0068366355, + -0.012744289, + 0.016504377, + -0.0025944575, + 0.02002585, + 0.0081843035, + -0.0054818345, + 0.0037938312, + -0.021376, + -0.0149891535, + 0.006775467, + -0.002768766, + -0.022120709, + -0.0034067237, + -0.021241143, + 0.011849072, + -0.0086819185, + -0.00019697235, + -0.013666072, + 0.007943947, + 0.007627519, + 0.003599772, + -0.0076106023, + -0.0044981325, + 0.028816868, + -0.008739917, + 0.0072553093, + -0.0105119115, + 0.00381464, + 0.008035421, + 0.007950661, + 0.00068530365, + -0.009898741, + 0.0030974487, + 0.0141418995, + 0.009554195, + 0.006857026, + -0.0071131284, + -0.009802578, + -0.0040713213, + -0.021320116, + 0.019067012, + -0.0031912646, + -0.020890824, + 0.0057409694, + -0.0062651252, + -0.0060876664, + 0.012849065, + 0.0015726165, + -0.0061818906, + -0.010648872, + -0.0035371082, + 0.018041143, + -0.018159835, + 0.013423874, + 0.01530546, + 0.0008696444, + 0.01569375, + -0.0018156114, + -0.007845879, + -0.012982294, + 0.0018712338, + 0.0077399565, + 0.0014243987, + 0.01192824, + 0.014510453, + 0.0034112479, + 0.0016788311, + -0.009293432, + -0.007831967, + 0.024831, + -0.028713739, + -0.0032460599, + -0.022919618, + 0.008364606, + -0.00040217765, + 0.010126134, + 0.004853389, + 0.000106981985, + 0.0019262509, + 0.018024819, + -0.008974372, + -0.00042362008, + -0.009336357, + -0.013317186, + -0.0060473504, + 0.00867207, + -0.017213084, + -0.017611237, + -0.0037938196, + 0.009825168, + 0.004368983, + -0.01300473, + -0.008491524, + 0.032759387, + -0.0075073806, + 0.0042075575, + 0.0016422486, + -0.0041655507, + 0.012251472, + -0.02027894, + 0.0050726263, + -0.003914977, + -0.013095536, + 0.016692141, + -0.013846502, + 0.016801504, + -0.020000007, + 0.015780196, + 0.0029369884, + -0.0020020218, + 0.0158049, + -0.010142994, + -0.004979061, + 0.021189557, + -0.0005056278, + 0.014088399, + 0.0126800705, + -0.01594135, + -0.0011783603, + 0.015942859, + -0.001983587, + -0.0009188087, + 0.0038366695, + 0.027170043, + -0.005473774, + -0.00013074857, + 0.011682235, + 0.0078046597, + 0.0035562874, + 0.0022400073, + 0.012886119, + 0.0033455084, + 0.03412586, + -0.0035939931, + -0.019804811, + -0.001450045, + -0.013857072, + -0.01416591, + 0.019854646, + 0.013035945, + -0.004093718, + 0.0048802774, + 0.0053989785, + -0.023377517, + 0.013081268, + -0.020780435, + 0.013658499, + 0.005340897, + 0.00040710345, + 0.02445704, + -0.0033317, + -0.0125199575, + -0.021833785, + -0.018849034, + -0.029079506, + 0.0004898928, + 0.016391948, + 0.003809064, + -0.0039156214, + -0.010828612, + 0.010330856, + 0.008464947, + -0.0037880877, + -0.0057999217, + -0.07140847, + 0.01006003, + -0.0041445307, + 0.008266761, + -0.005311985, + -0.032335926, + 0.018721372, + 0.021439493, + -0.011798922, + -0.0029923597, + 0.01142312, + 0.011968102, + -0.03294722, + -0.015946968, + 0.009894799, + 0.006825522, + 0.0053546745, + -0.010055941, + 0.0052234195, + -0.010754163, + -0.003336235, + 0.012318369, + -0.017908657, + 0.0074471557, + -0.0114097, + -0.013081481, + 0.005639167, + 0.015740372, + 0.0063889986, + -0.014047661, + 0.009938355, + -0.028224077, + 0.01929915, + -0.01289041, + 0.0049364334, + -0.0015290666, + -0.004122525, + -0.025276305, + 0.012094333, + -0.06281338, + 0.0022735957, + -0.0074202325, + -0.14804429, + -0.011656587, + 0.010275289, + 0.0047942866, + -0.0005372271, + 0.0021211687, + -0.01737935, + 0.013022131, + 0.015445521, + -0.01059692, + -0.008912527, + 0.0017534903, + 0.00090704864, + 0.00051959534, + 0.007003877, + 0.010791395, + -0.0060087964, + -0.008744861, + -0.022330513, + 0.0028605298, + -0.010039402, + 0.0030042864, + 0.014352637, + 0.020213809, + -0.017128328, + 0.0004655207, + 0.019608269, + -0.0030722257, + 0.0057702, + -0.020816311, + 0.0004141264, + 0.015269294, + -0.012568678, + 0.008418415, + -0.00774437, + 0.012524267, + 0.015127165, + -0.00874009, + 0.003379087, + 0.0023810486, + -0.011831773, + 0.039992522, + 0.0051277997, + -0.024159433, + 0.007607922, + -0.12491869, + -0.00013385944, + 0.009971255, + 0.005127408, + -0.0008208937, + -0.010099312, + 0.014101599, + 0.15716882, + -0.011877222, + -0.030268941, + 0.0025665218, + 0.015236212, + -0.011099543, + 0.0019087215, + 0.007858789, + -0.0013265446, + 0.0014010714, + 0.007899191, + 0.032752316, + -0.0015167505, + -0.011594652, + -0.014391309, + 0.0013123996, + 0.00096725096, + 0.003517934, + -0.06024647, + -0.025745634, + -0.0056977593, + 0.010264575, + 0.009080434, + 0.0075298874, + -0.001963013, + -0.0061908956, + -0.0016231594, + -0.0065720626, + -0.008558385, + 0.010461489, + -0.022846729, + -0.0046567367, + 0.013467769, + 0.0049480903, + -0.016364824, + 0.00078728306, + 0.0036025462, + 0.0034704458, + -0.006989038, + -0.006119407, + 0.0027509741, + 0.008926168, + -0.008440965, + 0.014381893, + 0.0019435926, + 0.006236396, + 0.008456362, + -0.015502054, + -0.008109879, + 0.014042967, + -0.00610464, + 0.022108994, + -2.0368116e-05, + -0.011896909, + -0.011214614, + 0.015859647, + 0.014304203, + 0.002503301, + -0.005781656, + -0.018216772, + -0.005107332, + -0.023427503, + 0.012870557, + 0.008733462, + 0.003869639, + 0.007122562, + -0.00028245733, + -0.0012370315, + 0.007976467, + -0.0030053032, + -0.0003862554, + -0.009594697, + 0.004214132, + 0.015323344, + 0.0140319085, + -0.016783018, + 0.0040569003, + 0.0031370998, + 0.01255547, + 0.0081010945, + 0.004597608, + 0.014653819, + -0.010881919, + -0.0027400048, + 0.0029309564, + 0.015940081, + -0.010488371, + 0.010026694, + -0.00024988048, + -0.0018306287, + 0.011608754, + -0.006279168, + 0.005099627, + -0.0020300054, + 0.0025540227, + 0.020975113, + -0.0021214988, + -0.007980166, + -0.0020032811, + 0.001919213, + 0.015866177, + 0.0053089214, + 0.0011500912, + -0.037153643, + -0.007162554, + 0.005038172, + -0.0003459101, + -0.00029811554, + -0.0060949815, + 0.0067296852, + -0.0049952613, + -0.0045913495, + -0.0018282357, + -0.0128674125, + -0.0205871, + 3.29984e-05, + -0.027009554, + -0.008523808, + -0.0036094482, + -0.009514507, + -0.0027317356, + -0.000534841, + -0.00642137, + -0.00949954, + -0.0016902136, + 0.0042186053, + -0.0060009253, + 0.008955231, + 0.0042616385, + 0.0035597195, + 0.024822535, + 0.0038701766, + 0.009247778, + -0.0056363917, + -0.03028555, + -0.012261454, + 0.004808264, + 0.0034534174, + -0.008438677, + 0.022703392, + -0.010286755, + -0.0029985486, + -0.002029844, + 0.012189361, + 0.0022201708, + 0.024444278, + 0.008692711, + 0.00033321802, + -0.006918189, + -0.009906663, + -0.021065399, + 0.0017365889, + 0.0038714383, + -0.01146002, + -0.005695929, + 0.0136236455, + -0.012383124, + 0.0049548266, + -0.0019298265, + -0.009133705, + 0.0037257236, + -0.0034859076, + -0.009674609, + 0.0028380465, + -0.008408325, + -0.014348723, + -0.013032569, + 0.023641769, + -0.013026533, + -0.008958854, + 0.0086282, + 0.0011653292, + -0.00012710429, + 0.023304516, + 0.007536961, + -0.016121544, + 0.013512596, + 0.016179657, + 0.002764801, + 0.0055803484, + -0.008541389, + 0.014519642, + 0.013343512, + 0.025049152, + -0.020564495, + 0.0048943223, + -0.02374938, + 0.013459238, + -0.012726988, + 0.005789575, + 0.013163915, + 0.004431687, + -0.0029504322, + 0.0060082343, + -0.0016516849, + -0.011800513, + -0.029592216, + -0.013557013, + -0.013295235, + -0.030126525, + -0.0056508062, + -0.0023563, + -0.009020173, + -0.002678054, + -0.017446466, + -0.0094066225, + 0.00041972683, + -0.025415294, + 0.007893892, + 0.007615552, + 0.014444293, + -0.0055864854, + 0.007341343, + 0.0074760746, + 0.007633242, + 0.015048061, + 0.015688792, + -0.0055214004, + 0.0023507455, + -0.024353081, + -0.0023434556, + 0.014327491, + 0.0030884864, + -0.013537927, + 0.00884923, + -0.008928762, + -0.0040857736, + 0.009974, + 0.012013531, + -0.008256043, + 0.0064773154, + -0.0023738826, + 0.001223818, + -0.0068574455, + -0.00012896747, + -0.024541218, + 0.009534192, + 0.0042668683, + -0.02659646, + 0.0009719781, + -0.007945843, + 0.008536529, + 0.0022086427, + -0.0073247547, + 0.025194552, + -0.0019298686, + 0.002036343, + -0.017242644, + -0.015562206, + 0.0016967627, + 0.008603264, + 0.0029286486, + -0.003824279, + 0.013932157, + 0.00973954, + -0.012137794, + -0.003032404, + -0.019269783, + -0.009771541, + -0.0007226373, + 0.02475148, + 0.0141635435, + 0.007586969, + -0.016065214, + 0.0049573043, + -0.012032935, + -0.021324394, + 0.009315734, + 0.0064129615, + 0.00014927378, + 0.008744266, + 0.012062963, + -0.006985634, + 0.008508218, + -0.011440213, + 0.00964045, + 0.01133469, + 0.00032885643, + -0.0045522386, + -0.00053115684, + -0.020326342, + 0.021684296, + 0.0116345035, + -0.0022538928, + 0.0088677835, + 0.014596996, + -0.019113265, + 0.014480809, + 0.0007274648, + -0.01183125, + -0.011485111, + 0.007765621, + -0.0020268657, + -0.0075831646, + 0.0022482022, + -0.023872044, + 0.00085110904, + 0.014016346, + -0.0069766473, + 0.012382482, + -0.0087001575, + 0.009347098, + 0.01530687, + -0.021898897, + 0.017915156, + 0.011825634, + 0.0032218006, + -0.014515737, + 0.009235042, + 0.005054707, + -0.00023745962, + -0.004250935, + -0.009820677, + -0.013538797, + -0.0012116351, + -0.0017041988, + -0.01726087, + -0.008089675, + 0.0031626658, + -0.00048189415, + 0.0014024241, + 0.01950393, + 0.015587983, + 0.011090538, + -0.0016524532, + 0.0005236974, + -0.0058108545, + 0.004716844, + -0.02033461, + -0.0009877229, + 0.018212706, + -0.0093770325, + 0.003982428, + -0.00014444556, + 0.0062729325, + 0.014332167, + -0.0040719965, + -0.0061802776, + 0.020435235, + 0.011924934, + 0.00204727, + 0.01323204, + 0.002210462, + -0.009072813, + 0.0107627595, + 0.0007087078, + 0.008023027, + 0.017904492, + 0.0017127544, + 0.02589081, + 0.0038643256, + -0.02423307, + -0.00029195778, + 0.007995035, + -0.00452324, + -0.004220507, + -0.014414159, + -0.0031739096, + -0.010584775, + 0.0058303205, + -0.001338251, + 0.003273328, + -0.008009112, + -0.01257899, + 0.012357312, + -0.002497284, + -0.0009386429, + 0.012057635, + 0.0038349011, + 0.0038896233, + 0.0023437173, + -0.009286228, + -0.012549473, + 0.0029719395, + -0.007542319, + -0.0027664232, + -0.0067998264, + -0.021942759, + 0.002787046, + -0.01490971, + 0.009879314, + -0.0096436925, + -0.00020947852, + -0.020315733, + -0.00096788775, + -0.009413338, + -0.009304855, + -0.012167087, + 0.0020818643, + -0.0065099327, + -0.00909283, + 0.012888071, + 0.023298446, + 0.0064363447, + -0.013862118, + 0.0060772416, + -0.01475394, + 0.0044472455, + 0.017185934, + 0.019436602, + 0.009869137, + 0.018604781, + 0.025304424, + -0.010937892, + -0.002263634, + -0.0007122261, + -0.014629204, + 0.0034150542, + 0.019551098, + -0.008361577, + 0.0070153293, + -0.0011046828, + 0.015581956, + -0.0020440167, + -0.017529536, + 0.007713052, + 0.019167863, + 0.00826607, + -0.0058899964, + 0.020170985, + 0.0047977166, + 0.02247314, + -0.004310414, + -0.0007319175, + -0.016704394, + -0.007411759, + -0.0018499614, + -0.039994832, + 0.013458039, + -0.012305411, + 0.010976608, + -0.007559491, + -0.0075970194, + -0.00020227736, + 0.003145673, + 0.0058201402, + 0.0036488434, + 0.019020593, + -0.015467047, + -0.0036180092, + 0.019398516, + -0.0025742245, + 0.0028556206, + 0.0031409739, + -0.031577792, + -0.0050074644, + 0.007063734, + -0.020470826, + -0.033115704, + 0.009944245, + 0.004177662, + 0.024237374, + -0.0019437312, + -0.00014068873, + -0.002508166, + 0.01317239, + 0.008986462, + -0.010209303, + -0.007866712, + -0.020596353, + 5.369359e-06, + -0.0078058653, + -0.0012830403, + -0.044026587, + -0.005174016, + -0.03564344, + 0.0070926305, + -0.0019275427, + 0.0009810884, + -0.016606791, + 0.0074037476, + 0.0030123368, + -0.06546688, + 0.0034776453, + 0.011120295, + 0.01001797, + 0.019042116, + 0.008829632, + 0.0069338735, + -0.001874668, + -0.011883109, + -0.012681935, + -0.0067498176, + -0.014146643, + 0.014275228, + 0.0014637288, + -0.005445066, + -0.023291945, + -0.0005322656, + 0.0022733167, + 0.014369217, + -0.0020721909, + 0.006157031, + -0.008283586, + -0.0047913403, + 0.02477168, + 0.003429128, + -0.008460797, + -0.020280162, + 0.019304782, + -0.019682132, + 0.003928251, + -0.017428666, + -0.017602952, + -0.0022491468, + -0.0036273727, + -0.016352264, + 0.0048243003, + -0.000685208, + 0.012863391, + -0.014002882, + -0.006907873, + -0.009265254, + 0.006359435, + 0.010224605, + 0.016601833, + 0.016259989, + 0.008347795, + 0.005522605, + -0.011284972, + 0.0020927084, + -0.0020404204, + 0.009591119, + -0.008249789, + -0.020043658, + -0.013941785, + -0.0064011873, + 0.009890922, + 0.007117129, + 0.025140274, + 0.0005499107, + 0.0003483327, + -0.017478283, + 0.018341277, + 0.029016636, + 0.0064986465, + -0.0061193053, + 0.013072971, + 0.014585744, + -0.012353626, + -0.0027855241, + -0.013575549, + 0.015350145, + 0.009848926, + -0.008276763, + -0.0020121688, + 0.010690222, + -0.0008974336, + -0.0116546415, + -0.0031986532, + 0.0072288, + 0.025728708, + -0.0031249374, + -0.012022611, + -0.011825202, + -0.0037892296, + 0.013141322, + -0.0177478, + -0.0074130623, + 0.005900281, + -0.00014823642, + -0.007070036, + 0.0039716936, + -0.005940218, + 0.018813876, + 0.0015189631, + -0.0053166742, + 0.022962367, + 0.020992372, + 0.016011156, + -0.01592979, + 0.022691514, + -0.0010972809, + 0.0020522869, + -0.017457156, + -0.009170573, + 0.01099267, + -0.011785615, + 0.026530871, + -0.00424621, + 0.011758892, + -0.00812807, + -0.005622689, + 0.004409983, + -0.014283218, + -0.005247292, + -0.011156406, + -0.004226873, + 0.0074621635, + -0.019091593, + 0.028141344, + -0.021888386, + 0.013931055, + 0.007820985, + 0.0055479384, + -0.004856852, + -0.00091494055, + 0.010230342, + -0.011932342, + 0.006545128, + -0.016224056, + 0.0007627138, + 0.0006399727, + 0.0071868007, + 0.03527624, + -0.009639844, + -0.018593716, + -0.00810965, + -0.01663213, + -0.015932452, + -0.014552818, + 0.011083051, + 0.009902237, + 0.010028546, + 0.0030299977, + -0.013098521, + -0.0046565356, + -0.0006407657, + -0.015523613, + 0.026782611, + -0.010173317, + -0.01612395, + -0.01702718, + -0.0039600846, + 0.018101834, + 0.032301784, + 0.0037288303, + 0.010824948, + 0.0208349, + 0.011633866, + -0.009939591, + 0.013894606, + 0.019552313, + -0.017619614, + 0.019269021, + -0.009312429, + -0.025078297, + 0.00013920297, + -0.009347357, + 0.004537545, + 0.022204338, + -0.0034044806, + -0.010558622, + -0.009329347, + -0.0019748297, + 0.00063408585, + -0.012375084, + -0.0018504508, + 0.004881047, + -0.0067747557, + -0.00084659655, + 0.015039512, + 0.0010219413, + 0.0017379763, + 0.015433696, + 0.00058014237, + -0.012020118, + 0.010022584, + 0.015457851, + 0.002211423, + 0.0016565683, + -0.025139315, + -0.021459, + 0.014618809, + -0.012526605, + -0.00740274, + 0.0126809515, + -0.0019000167, + 0.00063539343, + -0.00874152, + 0.015430644, + -0.017658077, + 0.0075533343, + -0.006519918, + 0.024877325, + 0.009812779, + -0.006363789, + -0.012374389, + 0.02541616, + 0.18462649, + 0.11526792, + 0.0052508377, + -0.00044761703, + -0.009050153, + 0.010650732, + 0.006017416, + 0.00018005799, + 0.00072948664, + 0.009898978, + 0.0014497037, + -0.018939748, + 0.010775164, + -0.006832922, + -0.013447669, + -0.0062945806, + 0.012257294, + 0.009475258, + 0.007595337, + 0.02188573, + 0.0018472828, + 0.009045042, + 0.012031416, + -0.00010125814, + -0.009343504, + -0.0020236033, + 0.014092441, + 0.0013784328, + 0.0042546424, + -0.005959832, + 0.007853338, + -0.0016118246, + -0.0025447453, + -0.004571399, + -0.028379625, + -0.036430914, + -0.0010068644, + -0.0051855748, + 0.007776854, + -0.038226184, + 0.0037884333, + 0.010283509, + 0.0072484445, + 0.023919944, + 0.014086368, + -0.00018560025, + 0.0049170493, + 0.027068036, + -0.00013420933, + 0.01723212, + -0.013389953, + -0.0051003727, + -0.00021509852, + 0.003870666, + -0.013807452, + 0.0013561611, + 0.013875184, + 0.006023632, + 0.016822927, + -0.015518509, + 0.0020085021, + -0.008048276, + 0.0019628382, + -0.0040684436, + 0.008659485, + 0.0039245924, + 0.00551558, + -0.015371306, + -0.00023036181, + 0.005161187, + -0.013345614, + 0.025713902, + -0.009256881, + 0.008888726, + -0.013973488, + 0.0042819027, + 0.007903922, + 0.004387427, + -0.010834162, + -0.010718152, + -0.0060921633, + 0.003031888, + 0.0014104783, + 0.017205963, + -0.009245757, + 0.009622233, + 0.0075305286, + 0.026649052, + 0.13736066, + 0.008154462, + -0.015039281, + -0.026480269, + 0.008656098, + -0.020609986, + -0.015150655, + 0.04014752, + -0.007889611, + -0.0011135179, + -0.0036446534, + 0.006699304, + 0.015556202, + -0.0056945905, + -0.0024478137, + 0.0092476895, + 0.009735379, + 0.091599174, + 0.0056021, + 0.019278813, + -0.016272712, + -0.0046410807, + 0.0021075646, + 0.016959798, + 0.0029414953, + 0.011044458, + -0.025402395, + -0.008037845, + -0.023347871, + -0.002494339, + -0.10772318, + -0.0024528082, + -0.0043749413, + 0.0057320497, + 0.0024924239, + 0.012760386, + -0.015916904, + 0.00067064655, + 0.0026036748, + 0.016109236, + -0.004944883, + 0.009831449, + -0.004012239, + 0.0056276266, + -0.018037086, + 0.007668524, + -0.002150356, + -0.009240703, + -0.0008202475, + -0.005584652, + 0.005159349, + 0.0045460872, + -0.014059115, + 0.0019225504, + -0.02081118, + 0.024462216, + 0.004441734, + -0.010375391, + 0.035441678, + -0.017530851, + -0.003076986, + -0.0053605125, + -0.022472676, + -0.015271784, + -0.0030105538, + 0.008215176, + -0.0025740666, + 0.004725247, + 0.0098277535, + -0.0061249463, + -0.015420087, + -0.029296102, + 0.008803563, + -0.010486231, + 0.017584939, + -0.0052096215, + 0.0015289391, + 0.0026822183, + -0.028251667, + -0.008381831, + 0.04681397, + 0.007581115, + 0.002155509, + 0.0025120515, + -0.005222936, + -0.0050298213, + -0.018340815, + -0.00022215371, + 0.0017728354, + -0.0126045495, + 0.0075326613, + 0.037906498, + -0.016870866, + -0.0037684212, + 0.0011321992, + 0.0030101482, + 0.013378535, + -0.00073598267, + 0.0023051137, + 0.0004901167, + -0.003971311, + 0.014696972, + 0.007278988, + -0.027982445, + -0.016460788, + -0.00805061, + 0.013027491, + -0.0026496765, + -0.020936437, + -0.013776074, + 0.0026636526, + -0.019884296, + 0.013538218, + 0.13639618, + 0.0024809542, + -0.007800207, + 0.023744622, + -0.019822184, + -0.00086897163, + 0.029729152, + 0.009492779, + -0.018486612, + -0.019375246, + 0.00038948472, + -0.004129453, + 0.0067316787, + 0.004018186, + 0.015620979, + -0.021984767, + 0.023398893, + -0.0041534244, + 0.010622007, + -0.0062215254, + -0.0059538176, + 0.0053777047, + -0.020272952, + -0.013718726, + -0.021421202, + 0.0023063675, + 0.009612504, + 0.0043075345, + 0.0007069897, + -0.021300059, + 0.005849679, + 0.015077473, + 0.025122648, + -0.0032336756, + 0.009730938, + 0.0044975094, + -0.008755698, + 0.0002829777, + -0.010012715, + -0.00068603334, + -0.0074916887, + -0.00019677772, + 0.004458541, + -0.00085575925, + -0.021948466, + 0.18724197, + 0.014525507, + 0.00787517, + -0.015456176, + 0.0012082667, + 0.0047056684, + 0.009015966, + 0.007880215, + -0.0012981875, + -0.00782629, + -0.003325395, + -0.020542271, + 0.0057972404, + 0.005876524, + -0.00036326455, + 0.0063252975, + 0.021228516, + 0.007923697, + -0.0024084728, + 0.016469555, + 0.009583652, + 0.008255333, + -0.018780245, + -0.024231758, + -0.0091475155, + 0.010054853, + -0.008968434, + -0.003836989, + -0.022054574, + 0.014087555, + 0.0146886315, + 0.015563549, + 0.012121979, + 0.0020204158, + 0.0052181636, + -0.008518424, + -0.009113635, + 0.019491484, + 0.014242927, + -0.014301521, + 0.012048937, + 0.028247222, + 0.020285107, + -0.005643046, + -0.013249632, + -0.0009739255, + -0.014178617, + -0.010769364, + -0.0102847265, + -0.004491722, + 0.0133311935, + -0.004458599, + 0.011353515, + -0.019393787, + 0.0060032266, + -0.005040102, + -0.00056236185, + -0.00016347737, + -0.0054768613, + 0.0037522588, + -0.014941016, + 0.0060006403, + 0.0023957035, + -0.0047713965, + -0.0129385395, + -0.01941618, + -0.0048729368 + ] + }, + { + "values": [ + -0.011356372, + -0.0015643187, + 0.006940412, + -0.0695513, + -0.014277231, + -0.00608562, + -0.015253285, + 0.012397456, + -0.0020564406, + -0.019248847, + -0.0030593956, + -0.041422624, + -0.015534083, + -0.016901894, + 0.1339463, + -0.00835415, + -0.004246982, + 0.011757021, + -0.018239528, + -0.022059442, + -0.0056854556, + -0.0003631829, + 0.017896356, + 0.010943699, + -0.0039658127, + 0.027455948, + 0.024907239, + 0.017921174, + 0.045243092, + 0.031953923, + 0.010292475, + -0.0048823417, + -0.019748168, + 0.00962713, + -0.003926852, + 0.0026752716, + 0.020253617, + 0.0020435834, + -0.023919143, + 0.027034534, + -0.01121405, + 0.018636145, + 0.007251016, + 0.009069435, + -0.019695725, + 0.019772954, + -0.0074826246, + -0.01359191, + -0.029641947, + -0.00061863655, + -0.0012538084, + 0.0038108139, + -0.006884625, + -0.15040329, + 0.0011209773, + 0.00096220634, + -0.010824517, + 0.0053731203, + 0.010495687, + -0.03381177, + 0.0028314698, + -0.013522796, + 0.0020264755, + -0.007822112, + -0.0007320529, + -0.020087475, + 0.014569199, + 0.008258561, + 0.0063004615, + 0.008418023, + -0.015069067, + 0.010568622, + 0.00435969, + -0.021043504, + -0.019954255, + -0.022011595, + 0.021862756, + -0.032629866, + 0.009926206, + 0.048089348, + -0.0030809112, + -0.030644828, + 0.0011040508, + -0.022084821, + 0.034900762, + -0.014519243, + -0.022227632, + -0.005200174, + -0.019871647, + -0.016274001, + 0.0003527937, + -0.015329886, + 0.005245006, + 0.024773927, + 0.0024494678, + 0.006610645, + 0.027522156, + 5.930727e-05, + 0.0034106625, + 0.0040127966, + -0.019215174, + 0.008872746, + 0.0039984155, + -0.009922538, + -0.014564514, + -0.010792994, + 0.009118895, + -0.006617433, + -0.010620741, + 0.029610517, + -0.006490515, + -0.024592197, + 0.00016154787, + 0.0374456, + 0.0044641867, + -0.19257408, + 0.0044518868, + 0.016376976, + -0.021648701, + -0.006250822, + 0.0006244062, + 0.009241207, + 0.023044363, + -0.030791013, + -0.007211988, + 0.004745758, + -0.0093838805, + -0.025301026, + -0.0016691567, + 0.012205531, + 0.012647684, + -0.0010167366, + 0.012520264, + 0.019575004, + -0.021644857, + 0.034284946, + -0.0036405958, + 0.003536381, + -0.01221147, + 0.009759821, + 0.0075744367, + 0.009010747, + -0.00085691776, + 0.00092941226, + -0.0053795045, + -0.010510325, + -0.0041344967, + 0.020551285, + 0.003460281, + -0.017402556, + -0.016465869, + 0.0045980625, + 0.0038928867, + -0.036814794, + -0.004741056, + -0.07454537, + -0.0027222333, + 0.007792188, + -0.01524714, + 0.0058292695, + 0.003339585, + -0.0005464279, + -0.008375368, + 0.0021887554, + -0.0048998403, + -0.004632414, + 0.009825378, + 0.013426055, + 0.03206924, + 0.006843452, + -0.004680772, + 0.010776324, + -0.017129472, + -0.006650697, + -0.012053894, + -0.0037889888, + 0.007563951, + -0.0034586242, + -0.011546459, + 1.633877e-05, + -0.0019739259, + -0.018699413, + 0.022239283, + 0.013666541, + 0.016143514, + -0.015301619, + -0.023823874, + 0.031074166, + 0.0142057715, + -0.010149656, + -0.029914085, + -0.014722282, + 0.00953395, + -0.0031934795, + 0.021776384, + 0.00575583, + -0.011929125, + 0.012976054, + 0.0052890982, + 0.019452218, + 0.012004151, + -0.022617422, + -0.011497034, + 0.03584464, + 0.011971721, + -0.023311151, + 0.019762157, + -0.025777176, + 0.014609336, + 0.03711982, + 0.019867003, + -0.015308836, + 0.0079223635, + 0.011510751, + 0.023890875, + -0.0063841688, + 0.016726092, + -0.0031567654, + -0.012494147, + -0.003146224, + 0.0063380734, + 0.012161903, + -0.026212512, + -0.020376306, + -0.03560666, + -0.00083222665, + -0.0133408485, + -0.004425185, + 0.02108371, + 0.0077521657, + -0.0036927753, + 0.015750706, + 0.0014796691, + 0.008500428, + -0.0014056762, + 0.00336078, + 0.0017881293, + -0.015989428, + 0.034008704, + 0.018444784, + -0.014575025, + -0.023295037, + 0.010438134, + 0.028411075, + -0.0032395176, + -0.002999312, + 0.014894236, + -0.0018881249, + 0.0076644085, + 0.0001475084, + 0.0055446946, + 0.021953138, + 0.022924652, + -0.022466915, + -0.021613471, + -0.013855027, + -0.015609339, + 0.0068970816, + -0.0028976088, + -0.0063227084, + -0.004972264, + 0.011186241, + -0.013560266, + 0.019904397, + 0.0061026393, + -0.015844816, + 0.0102151595, + 0.016454188, + -0.030912794, + 0.010924869, + 0.016724518, + -0.009218195, + 0.008908378, + -0.008730701, + -0.006750726, + 0.0021124415, + -0.106467456, + 0.0020638192, + -0.005006098, + 0.0060224296, + 0.0056839506, + 0.0060745967, + 0.007621489, + 0.0072338884, + -0.002422019, + 0.013428669, + -0.0045873807, + 0.0043138424, + -0.017422881, + 0.01770088, + 0.011015609, + -0.000713468, + -0.014139174, + 0.0034440353, + 3.2150154e-05, + -0.049930714, + 0.02398744, + 0.00089083525, + -0.04630847, + 0.013554219, + 0.003895039, + 0.0016131033, + 0.007969721, + 0.03641974, + 0.0063746814, + -0.00759486, + 0.019922761, + -0.008358785, + 0.015578898, + 0.009683492, + 0.004518802, + -0.0169103, + 0.0044145444, + -0.006072572, + -0.0068779043, + -0.009900337, + -0.001055172, + -0.0063989325, + -0.012396371, + -0.006946078, + -0.016529784, + 0.0012409643, + 0.0056966455, + -0.022325704, + -0.014233502, + -0.014261781, + -0.008899122, + 0.0004212796, + -0.010937541, + -0.036249578, + 0.011125472, + -0.0026569073, + 0.048461277, + -0.013283592, + -0.024057794, + -0.0019321869, + 0.01201224, + 0.003911592, + 0.002456632, + -0.005347178, + 0.009491515, + -0.00897072, + 0.024522187, + 0.007720112, + -0.015002548, + -0.011283099, + -0.0050593847, + 0.0074890237, + -0.025346108, + 0.0037559886, + 0.002654471, + 0.0053346343, + 0.013926957, + 0.021774583, + -0.021284038, + 0.008051565, + 0.0174297, + 0.0015265369, + -0.015859796, + 0.016570542, + 0.015472477, + 0.013415663, + 0.0098487735, + -0.0122314105, + 0.0037345926, + 0.0076007335, + 0.03144872, + -0.0031300795, + 0.00463994, + 0.0117840925, + 0.005391251, + -0.0188709, + -0.004905558, + -0.003845376, + -0.01849524, + -0.015301668, + -0.016042594, + 0.006571145, + -0.0012803586, + 0.0047535175, + -0.025967386, + 0.007754579, + 0.0011995498, + 0.00020090271, + -0.0051516267, + -0.0047526616, + 0.02321675, + -0.004826954, + -0.0110527575, + 0.0013740935, + -0.00026974297, + 0.00024765776, + 0.01556319, + 0.027702842, + 0.02151037, + -0.016465958, + 0.0039781206, + 0.021894017, + 0.028636051, + -0.005563864, + 0.042026572, + -0.004045257, + -0.009650651, + 0.026554042, + -0.003220114, + 0.0022823836, + -0.03380792, + -0.018554622, + -0.023319522, + -0.022678532, + -0.005341519, + -0.01259934, + 0.035029422, + 0.01018737, + -0.0102407, + 0.008759709, + -0.023773616, + -0.009158278, + 0.019353177, + -0.01673253, + 0.0012347763, + 0.009630206, + 0.03201469, + 0.027485743, + -0.015405836, + -0.04631233, + 0.0062647667, + -0.009584867, + 0.031741206, + -0.00137693, + 0.021454006, + 0.013577893, + -0.0048466753, + 0.0069301357, + -0.005214651, + 0.0033585718, + -0.008341199, + 0.0060810004, + 0.0068276282, + 0.0065130005, + 0.008643305, + -0.0075367317, + -0.014641127, + 0.004067271, + 0.016193237, + 0.015292569, + 0.04051047, + 0.018874682, + 0.0038180475, + -0.020189617, + 0.011913462, + 0.0074097975, + -0.0043461625, + -0.00265419, + 0.0061055706, + 0.01133151, + 0.0013163623, + 0.001788866, + -0.007851912, + -0.00067473593, + -0.004289242, + -0.006348917, + 0.0071399515, + 0.01256274, + -0.0031403757, + 0.028730799, + 0.018974662, + 0.034301158, + 0.0053011645, + 0.0065644016, + 0.007436966, + 0.021405585, + -0.02164511, + -0.009620632, + 0.01676397, + -0.008920807, + -0.022074211, + 0.023301424, + -0.0032079106, + -0.0046090926, + -0.007064362, + 0.004536588, + 0.008722175, + 0.012887329, + 0.013396753, + 0.011746982, + -0.004835822, + -0.0026557052, + -0.02656728, + -0.0089153, + 0.02483804, + -0.01308985, + -0.004843113, + -0.00030795936, + -0.008598704, + 0.019603508, + 0.006118413, + -0.0037323073, + 0.02637432, + 0.009111949, + 0.006054353, + 0.0021408899, + -0.0071085487, + 0.017556095, + -0.005639557, + -0.037044205, + -0.0033567362, + 0.014252128, + -0.00039132568, + -0.01097906, + -0.0051748925, + 0.019075343, + 0.010544442, + 0.002551943, + 0.028937051, + 0.009977698, + 0.0065072626, + 7.385149e-05, + -0.007359984, + 0.007840405, + -0.0049444376, + -0.004852513, + 0.0007490805, + -0.023566239, + 0.011576171, + -0.010046397, + -0.011901409, + 0.005284072, + -0.013865245, + 0.031651136, + 0.013167191, + 0.037778236, + -0.016764404, + 0.026208172, + -0.007882218, + 0.017568093, + 0.010317533, + 0.017425437, + -0.002219533, + -0.0066865403, + 0.015200744, + 0.00047581297, + -0.0019332154, + -0.013776021, + 0.012714228, + -0.11892912, + 0.0041166907, + 0.002595623, + -0.0077322614, + -0.016093776, + -0.001642697, + -0.004954328, + 0.00084406044, + 0.004102406, + -0.010345683, + 0.01127017, + 0.0019149025, + -0.008549419, + -0.013363107, + -0.017550968, + -0.013187732, + 0.004123459, + -0.0041775503, + 0.016753728, + 0.003047445, + 0.004422253, + 0.024276758, + -0.014925454, + 0.031443365, + -0.012367492, + 0.01588069, + -0.0118648885, + 0.0006690838, + -0.004195132, + 0.023163866, + -0.032142922, + 0.012601654, + -0.003190937, + 0.0064007174, + -0.004301935, + -0.0031436787, + 0.0072370786, + 0.010492898, + 0.008509595, + -0.009273948, + -0.01048006, + 0.0005803389, + 0.0018534982, + -0.014552013, + -0.02806164, + 0.0004898866, + 0.009415889, + 0.0030072709, + 0.004941071, + 0.011133256, + -0.012912959, + 0.018219193, + 0.0046548015, + 0.0041264603, + 0.025492085, + -0.01736405, + 0.0047011897, + -0.006157784, + -0.041120082, + -0.0014350628, + -0.031127343, + -0.016746916, + 0.017445453, + -0.0052278214, + -0.000933122, + 0.008946297, + 0.008582351, + 0.014472826, + -0.0067351796, + -0.0008413602, + 0.0013419894, + -0.01283518, + 0.006898187, + 0.02043981, + -0.009029089, + 0.042770922, + 0.008724175, + 0.019683521, + -0.010175809, + 0.0025740822, + -0.014724838, + -0.012344782, + -0.06510453, + -0.012094456, + -0.018677339, + 0.019583933, + 0.006222171, + -0.0110567035, + 0.008144406, + -0.0064377766, + 0.01550932, + -0.0039772796, + 0.0033254914, + -0.0001436172, + 0.0285124, + -0.01995804, + -0.026183423, + 0.0042490596, + -0.010264241, + 0.009604565, + 0.01789298, + -0.0023681058, + -0.017027423, + -0.0053194496, + 0.023963483, + -0.026104815, + -0.010716933, + 0.0576653, + 0.00016998083, + -0.012690323, + 0.02107066, + -0.001930552, + -0.007828616, + -0.123642996, + 0.005778421, + 0.0033005832, + 0.01895601, + 0.02482674, + -0.030660117, + -0.021415126, + 0.0045565595, + -0.013043139, + 0.015605994, + 0.025615556, + -0.005619454, + -0.006808907, + 0.032819822, + -0.0016608462, + 0.1435261, + -0.015998596, + -0.013841714, + -0.0033281425, + -0.01534829, + 0.021911478, + -0.008518105, + 0.0037053246, + 0.022139728, + -0.01738206, + 0.0020401499, + -0.008615859, + -0.003597944, + 0.004162845, + -0.0028069245, + 0.025553549, + 0.015760368, + -0.022565369, + 0.018463278, + -0.007114361, + -0.0049034785, + -0.015232511, + -0.008038109, + -0.015196731, + 0.015569298, + 0.0114023555, + 0.0089955395, + 0.019144816, + -0.01616706, + 0.01188703, + -0.0003877326, + 0.0015636977, + -0.00848106, + -0.012874251, + -0.013807914, + -0.021204738, + -0.056561194, + 0.016762927, + 0.0052135885, + 0.016360197, + -0.004957109, + 0.0020465148, + 0.004266214, + -0.008714705, + 0.013819767, + -0.018437468, + 0.021831883, + 0.021854142, + -0.006207223, + -0.0075777997, + -0.004821457, + 0.029921867, + -0.01167932, + -0.011503468, + 0.0074332305, + -0.017403072, + 0.024281798, + 0.019173196, + -0.0059823673, + -0.013850229, + -0.024292627, + 0.0038239607, + 0.012407975, + 0.0033054827, + -0.025209635, + 0.0112229325, + -0.0053873905, + 0.004018981, + 0.0058250343, + -0.0058148494, + -0.024777751, + 0.009614165, + 0.033469845, + 0.009288712, + -0.018214568, + -0.013590706, + -0.010404369, + 0.010083641, + 0.008714085, + -0.0057286303, + -0.009627107, + 0.0041128453, + 0.015697256, + -0.0023713703, + -0.012743614, + 0.0014320165, + -0.017676286, + 0.014639154, + -0.0055330656, + 0.0046021948, + 0.010500406, + 0.014912364, + 0.014059079, + -0.011089829, + 0.0066507356, + -0.017289298, + -0.016567344, + -0.006567532, + -0.0025998591, + -0.006673591, + 0.013566785, + -0.0050410694, + -0.012857208, + 0.0031609214, + -0.0035217663, + -0.0053695217, + -0.00043204305, + -0.015910141, + 0.0059679984, + 0.010319783, + -0.006147567, + 0.017751645, + -0.007025656, + 0.01065498, + -0.006706778, + 0.01188064, + -0.005971546, + 0.016687432, + 0.007160189, + 0.015896833, + 0.009330132, + 0.016767507, + -0.010778362, + 0.0021337431, + 0.0068628658, + 0.015386222, + -0.0023464065, + 0.00011200165, + 0.001561151, + 0.0060842354, + 0.026389211, + 0.0031668348, + -0.004196732, + 0.01113189, + -0.0026966743, + -0.008025475, + -0.005868233, + 0.00044564568, + -0.0006434469, + -0.0008434213, + -0.014440215, + 0.020417403, + -0.005999354, + -0.010992055, + -0.0019912333, + 0.016951494, + -0.0063942918, + 0.0028636267, + 0.00018819951, + -0.0033800784, + -0.010059666, + -0.015698621, + -0.011071578, + -0.0104190465, + -0.014773434, + 0.017283667, + -0.0018774546, + -0.011928117, + 0.01006757, + 0.0034079389, + 0.0129263215, + -0.011793134, + -0.004564047, + -0.016569082, + 0.0029433877, + 0.0035817628, + 0.008942418, + -0.013224822, + 0.016400209, + 0.0039348295, + 0.017882299, + -0.014454026, + 0.016200565, + -0.0030958862, + -0.008608655, + -0.0075227264, + -0.01817981, + 0.018628841, + -0.016012974, + 0.0016343109, + -0.0014446508, + -0.007721128, + -5.2712567e-05, + -0.011465926, + 0.014293765, + 0.0027937996, + -0.014860384, + 0.010652724, + 0.00029150042, + -0.0020524675, + -0.003402988, + 0.0023475902, + -0.0035119506, + -0.010836365, + 0.0035472193, + 0.0016351377, + 0.004794468, + 0.011058052, + 0.010078212, + -0.0056504025, + -0.007514011, + 0.00019303964, + -0.0050007557, + -0.0057003996, + -0.004617908, + 0.015033327, + 0.009599419, + -0.009672616, + -0.014831479, + 0.0012446705, + 0.003027903, + 0.014438214, + 0.016069923, + 0.011828358, + 0.009265109, + 0.0059748064, + -0.0037470036, + 0.01736266, + -0.0034300634, + -0.0038624704, + 0.007469776, + 0.0026284698, + -0.010469661, + 0.011114164, + 0.0064538405, + 0.015512753, + -0.00095553626, + -0.0016856679, + -0.012497209, + -0.00090615405, + -0.002584962, + -0.012830038, + -0.0009892315, + -0.0054095765, + 0.01586925, + -0.0022410052, + 0.019982502, + 0.012175264, + -0.007365256, + -0.010359555, + -0.00049507717, + 0.0032378915, + -0.008724198, + 0.0046281097, + 0.007507714, + 0.008505038, + -0.008114849, + 0.00957432, + -0.007182417, + 0.009187998, + -0.0037966056, + -0.004423096, + -0.0070843096, + -0.023341706, + -0.013627857, + 0.005849084, + -0.008854424, + 0.008704619, + 0.015977703, + -0.0019682853, + 0.0030169643, + -0.0039936206, + 0.01268272, + 0.016087491, + -0.008827313, + -0.0027979272, + -0.008544625, + 0.0019520052, + -0.016682945, + 0.0048607867, + 0.008609042, + -0.004250315, + 0.0050311494, + 0.008817815, + 0.006093435, + 0.016372237, + 0.008161327, + -0.016976174, + 0.031415496, + -0.008080273, + -0.009593946, + -0.0024438566, + -0.013279224, + -0.01383943, + -0.0037277883, + -0.0051965625, + -0.00426908, + 0.009550029, + -0.014751446, + 0.022707487, + -0.0025195747, + 0.005491575, + -0.006499165, + 0.0150219165, + 0.012983108, + 0.101422116, + 0.02038069, + 0.002826284, + -0.0003142321, + 0.011135647, + 0.00496135, + 0.006396164, + 0.0024146824, + -0.010991748, + 0.0010179372, + -0.012686354, + -0.0045452313, + 0.003702823, + 0.0011676879, + 0.0060163736, + 0.0015398063, + -0.016070701, + -0.012163638, + -0.0009453638, + 0.008947219, + -0.021217266, + -0.0021715339, + 0.002422699, + -0.008896377, + 0.007559455, + -0.007397124, + 0.019267088, + 0.014789302, + -0.01538658, + -0.012409573, + 0.0073800753, + -0.001090143, + -0.0028410985, + 0.010382503, + -0.018319145, + 0.009088035, + -0.0042900136, + -0.0065580998, + -0.009691377, + 0.024114624, + 0.0018690065, + 0.014733644, + 0.013133902, + 0.0029589047, + -0.0049598413, + 0.016138937, + 0.0009210172, + 0.007663455, + -0.008443463, + -0.0034278536, + 0.0031944357, + -0.0073026135, + 0.0022137435, + -0.0067562754, + 0.014946001, + 0.0054829568, + -0.008352979, + 0.00059035956, + -0.009516653, + 0.009845465, + -0.011419963, + 0.03018058, + -0.009561157, + -0.00459755, + 0.0013397059, + -0.01072514, + -0.007903853, + 0.0026604026, + -0.0017963775, + -0.0030158476, + -0.0066208052, + 0.0023093177, + -0.0185054, + -0.007723769, + 0.06239071, + 0.0069241957, + 0.005030298, + -0.013303888, + -0.007328129, + -0.0037552929, + 0.0031871465, + 0.003826503, + 0.0066169268, + 0.010971261, + -0.007986408, + 0.015998749, + -0.008548901, + 0.0031258992, + -0.0042794193, + -0.0019940056, + 0.0057638674, + -0.008503342, + 0.012823108, + -0.001903884, + 0.00034405768, + -0.004424884, + 0.11750921, + 0.0069723376, + 0.012793923, + -0.0069096168, + 0.007368744, + -0.027595932, + 0.006801584, + -0.0018406522, + 0.0016094847, + 0.011161496, + 0.01523338, + 0.011080063, + -0.014898947, + -0.0127334455, + 0.011383597, + 0.016769666, + 0.019806406, + -0.0014382122, + -0.015582845, + 0.007862962, + -0.009499614, + -0.0062086238, + -0.004500516, + 0.003010534, + -0.007996973, + -0.007037702, + -0.011286064, + 0.010797696, + 0.009182343, + 0.0020672695, + -0.005928618, + -0.009528972, + -0.013006359, + -0.0043447143, + 0.016318537, + 0.003623171, + -0.003995226, + 0.0039176038, + 0.0025533456, + -0.011525062, + -0.01224477, + 0.00142075, + 0.0020915242, + 0.0061842175, + 0.006424448, + 0.018236239, + -0.0021679313, + 0.008749408, + 0.0047451463, + 0.00271675, + 0.014176586, + 0.0049292925, + 0.01895302, + -0.004364841, + -0.0015634445, + -0.005750165, + 0.014271159, + 0.0016055123, + 0.0013352999, + -0.010665248, + 0.009994458, + 0.004729093, + 0.0006639535, + 0.020387083, + -0.00027111755, + -0.002806072, + 0.012676165, + -0.0031055438, + 0.007773977, + 0.0044085016, + 0.0028795197, + 0.0015085295, + -0.005239737, + -0.0022851236, + 0.004544948, + 0.020543668, + -0.0004973897, + 0.006019356, + -0.0038709063, + -0.004925055, + 0.012280787, + -0.010409976, + 0.009849787, + 0.013980366, + -0.0049269916, + 0.00400925, + 0.007173347, + -0.008958894, + 2.8883871e-05, + -0.019485958, + -0.0041456134, + -0.00048042022, + -0.001442682, + -0.0073780315, + 0.008048321, + -0.013271332, + -0.0016764315, + -0.0030400304, + -0.016377347, + 0.0036891636, + 0.007309121, + 0.0009698794, + -0.00448744, + -0.01500505, + -0.00061686366, + 6.002056e-06, + -0.0048288424, + -0.009375897, + -0.0041622045, + 0.0025992966, + -0.01105402, + 0.007205045, + 0.009092777, + -0.008146023, + -0.029087698, + -0.022737654, + 0.0022613893, + 0.021596579, + 0.0007797678, + 0.0050032292, + 0.010670004, + 0.00892099, + 0.0045023463, + 0.0011227612, + -0.0059353723, + -0.025667088, + 0.007103246, + 0.008512785, + 0.008217834, + -0.005319804, + -0.022391751, + -0.003277246, + -0.0025659092, + -0.005787079, + 0.010438904, + -0.00087002455, + -0.006162343, + 0.008339329, + -0.004284775, + 0.0067608813, + -0.020251418, + 0.0013222358, + -0.00505756, + 0.0037129729, + 0.0117488885, + 0.008731698, + 0.016172303, + -0.00716583, + -0.0020553025, + -0.0046092253, + 0.011091136, + 0.010303905, + -0.014495731, + 0.012488779, + 0.009689488, + 0.005056248, + 0.012507027, + -0.00088312686, + 0.0047165067, + 3.3191678e-05, + 0.0298629, + -0.06558381, + -0.0018125258, + 0.010104355, + 0.008963818, + 0.014032566, + -0.0032648174, + 0.0051790085, + -0.005541017, + -0.005762411, + 0.0024045748, + 0.0035688002, + -0.013214886, + 0.0016156122, + -0.0039454494, + 0.0023993868, + 0.009144789, + -0.0044937106, + 0.008398206, + 0.008979539, + -0.022342881, + 0.0030292172, + 0.011465082, + -0.008539744, + -0.0067452495, + 0.0077833263, + 0.010819522, + -0.004244747, + 0.010267711, + -0.011449204, + 0.008702605, + 0.0014913284, + -0.0063862307, + 0.013581738, + 0.018514685, + -0.003477285, + -0.015383574, + 0.0077143414, + 0.0032435372, + -0.004404081, + 0.0025476022, + 0.015726482, + 0.0024092093, + -0.006251181, + 0.027659176, + 0.0018072281, + -0.0033422469, + 0.004122295, + 0.016544381, + 0.007432651, + -0.013423289, + 0.0027689121, + 0.01296443, + -0.0134475995, + 0.0031655214, + 0.00866742, + -0.0013830819, + 0.008612049, + -0.012117343, + -0.024765717, + -0.012244111, + 0.019135742, + 0.011098829, + 0.014013707, + 0.0074221804, + 0.010410473, + 0.0015747657, + -0.018223036, + -0.0039315424, + -0.014243723, + -0.009527003, + -0.0020352174, + -0.019936567, + -0.0037249534, + 0.012978739, + 0.00732354, + 0.006170066, + 0.02974821, + 0.004617653, + -0.0002349683, + 6.738755e-05, + -0.02236942, + 0.0053236284, + 0.01343414, + -0.0027949768, + 0.009585667, + 0.0040096436, + 0.005843248, + -0.015360071, + -0.012621519, + -0.010112942, + -0.007588127, + -0.0031147958, + -0.007303658, + 0.008348092, + -0.0046157716, + -0.009501203, + -0.006967342, + 0.019172251, + -0.005668679, + 0.0023192724, + -0.0056481464, + -0.025993198, + -0.013320168, + 0.004450028, + 0.00475665, + 0.025500374, + 0.009263475, + 0.0031119252, + 0.00857418, + 0.010782877, + -0.0012519512, + 0.0034667403, + -0.013315879, + 0.010426233, + 0.012024252, + 0.00633146, + 0.0027315153, + -0.0012317816, + 0.0037813396, + 0.0020300706, + -0.004488639, + 0.005781353, + 0.00708327, + -0.015691075, + -0.013856165, + -0.018574748, + 0.00556679, + 0.008587578, + 0.014013439, + -0.0064394497, + -0.0069337166, + 0.0007481732, + 0.0014673558, + 0.007848778, + -0.011635988, + 0.00883303, + 0.0060741715, + 0.010876757, + -0.019779956, + -0.003048116, + 0.005029053, + -0.0155362245, + 0.005436467, + -0.024668055, + -0.0014858446, + 0.0068347994, + -0.0075917025, + 0.005230983, + 0.01175935, + 0.005370316, + 0.007493626, + 0.0060610245, + 0.011141101, + -0.0017210112, + 0.0014999828, + 0.010699347, + 0.0017060483, + 0.0070972005, + -0.005693356, + -0.009742784, + 0.013947373, + 0.0116701685, + -0.00015574858, + 0.0013148187, + -0.0033268016, + -0.0018691265, + -0.011922007, + -0.012391552, + -0.013871254, + 0.0047475845, + -0.0067688115, + -0.004048173, + -0.0068092453, + 0.0059560766, + -0.0038216945, + 0.011658695, + -0.0061573777, + 0.0071037463, + 0.0049682274, + -0.0057519074, + -0.00493626, + 0.011038375, + 0.010261606, + 0.019157924, + 0.0032675012, + -0.005557396, + -0.0054859286, + -0.014682089, + -0.003713763, + 0.00302398, + -0.0034698087, + -0.00822479, + 0.0020835116, + -0.0026370136, + 0.011285221, + 0.0053296546, + 0.0027037263, + 0.0045874836, + 0.0032065706, + 0.019461848, + 0.0020178189, + 0.0042810133, + 0.013442214, + 0.013535111, + -0.026208503, + -0.0919708, + -0.006538505, + 0.012847424, + -0.0005733249, + -0.0024579482, + 0.0061556185, + -0.0059364843, + 0.009700727, + 0.0004962812, + 0.014255914, + 0.0050525377, + -0.002681042, + 0.006825144, + -0.036580157, + -0.012293352, + -0.0057225176, + -0.0040311213, + -0.0028888013, + -0.015968222, + -0.00043379856, + -0.014924266, + -0.005469992, + 0.005463158, + -0.007690889, + -0.010301344, + 0.0012545448, + -0.0048141894, + -0.0026093668, + 0.0009664697, + -0.021017153, + -0.007925938, + -0.00020614885, + 0.0069329143, + 0.009888484, + 0.022398837, + -0.015073376, + 0.020943824, + -0.0062514576, + -0.13811105, + -0.0043073324, + 0.009111375, + -0.011348116, + -0.005092325, + 8.13779e-05, + 0.0015907319, + 0.001812919, + -0.007400993, + 0.012676703, + -0.0052678483, + -0.01518028, + 0.0102824895, + 0.007768079, + -0.00019173081, + -0.008511988, + -0.017056452, + 0.018049896, + -0.018593492, + -0.0030755706, + -0.009841463, + 0.0036202897, + 2.8828123e-05, + 0.013948069, + 0.0029975616, + 0.011887778, + 0.001753242, + 0.013511007, + 0.011357323, + 0.007255591, + 0.0014352648, + -0.009609023, + 0.0066721607, + 0.0013452513, + -0.0013015171, + -0.016554173, + -0.000477319, + -0.00034014444, + 0.01021168, + 0.011834265, + 0.0013470801, + 0.008501089, + -0.002579616, + 0.0047647394, + 0.0003267029, + -0.002388494, + 0.0035989964, + -0.01012316, + -0.016738508, + -0.008221473, + -0.0019173862, + 0.0117944665, + -0.0021851654, + 0.012718421, + 0.01550017, + -0.0054182652, + 0.010975581, + 0.0037538796, + -0.009143739, + -0.01159798, + 0.007560022, + -0.0071972385, + 0.0055627683, + -0.01590772, + 0.008642704, + -0.002983823, + 0.004148672, + 0.014813948, + -0.018692393, + 0.0123193, + -0.012060761, + -0.005202946, + 0.0046789576, + -0.015709158, + -0.004611517, + -0.01111119, + -0.0019373174, + 0.0022099286, + -0.005834075, + -0.0073443805, + 0.016649898, + 0.0014263153, + -0.014470213, + -0.012046723, + 0.022456057, + -0.029066911, + -0.01443697, + 0.008737267, + -0.012662963, + -0.038223583, + -0.0118777305, + 0.020807466, + -0.02465047, + 0.024556803, + -0.005455939, + 0.012242296, + -0.02030365, + 0.026100913, + -0.015607705, + -0.006151712, + 0.02329279, + 0.022945115, + 0.005141159, + -0.014298363, + 0.032825664, + 0.0014995893, + -0.012085412, + -0.010903989, + 0.022049004, + -0.014125388, + -0.004207174, + 0.008693698, + 0.0037424471, + 0.00955282, + 0.0007954848, + 0.013096172, + -0.0049168803, + -0.0073077213, + -0.0065913415, + -0.008788376, + 0.025259383, + 0.012288681, + -0.012697742, + -0.010153135, + 0.0051828865, + 0.011520341, + -0.008073258, + -0.027368898, + -0.02378585, + 0.010149418, + -0.004705681, + 0.011219155, + 0.008814759, + -0.0023328357, + 0.0040222257, + 0.0070547345, + 0.012182371, + 0.0100328, + 0.0037624887, + -0.010053402, + 0.010422803, + -0.016011938, + -0.016688444, + 0.009760229, + -0.02187911, + -0.009949731, + 0.0003484824, + 0.0014590569, + 0.010483433, + -0.008910884, + 0.021269126, + -0.011330267, + -0.012289649, + -0.013649704, + 0.013825796, + -0.016098844, + 0.004146004, + 0.0065595834, + -0.009615857, + -0.0074197906, + -0.021701392, + -0.008045632, + -0.004130744, + 0.011271183, + -0.0089777345, + 0.027135903, + 0.013405503, + 0.00424445, + -0.007570184, + -0.015081019, + 0.006653264, + -0.009814373, + 0.013958528, + -0.0030711882, + -0.0070629083, + -0.0061539495, + 0.004914486, + -0.003511932, + 0.02149164, + 0.007990055, + -0.0010673914, + -0.010245537, + -0.008209581, + -0.006225728, + -0.013468233, + 0.003507063, + 0.006560747, + 0.01096477, + 0.03005956, + 0.009400259, + 0.012705503, + -0.0075436383, + -0.018008245, + 0.0019007132, + -0.030497842, + -0.005695619, + -0.0024457094, + 0.011371064, + 0.0046140198, + -0.03092403, + 0.0051771416, + 0.013330721, + -4.2826417e-05, + -0.12767436, + -0.0032723742, + -0.021861019, + -0.019750813, + -0.0020859148, + -0.0042517367, + 0.009677187, + -0.0056178104, + 0.010718959, + -0.0014920499, + -0.018460212, + -0.0013402299, + -0.008936666, + -0.003913393, + 0.0035308506, + 0.0039008076, + 0.008709347, + 0.004725216, + -0.021353658, + 0.009539658, + -0.019402673, + -0.012154475, + 0.0006329489, + 0.0037233098, + -0.0057586357, + -0.0009718514, + -0.0064921477, + 0.0035169094, + -0.01710177, + 0.012007454, + 0.005937916, + 0.0060299896, + -0.010373607, + -0.011888095, + -0.008351969, + -0.0030292056, + -0.0062756645, + -0.006430903, + 0.0039852047, + 0.009727105, + -0.019441903, + 0.010542806, + 0.013263166, + -0.004613792, + 0.025622334, + -0.013460396, + -0.02506914, + -0.025325324, + -0.007034412, + -0.008356502, + 0.011449218, + -0.025615036, + 0.011996695, + 0.019703504, + 0.012023787, + -0.014153357, + 0.005525593, + -0.006397523, + -0.012253444, + -0.013162658, + 0.0065461085, + -0.02738513, + -0.0076763504, + -0.011579679, + 0.006411238, + 0.00011579628, + 0.0043122414, + 0.16395473, + -0.012265059, + 0.0016417082, + 0.008685639, + -0.013789797, + 0.015318556, + 0.0101906555, + -0.0008726056, + -0.007200783, + -0.0029029858, + 0.0030573728, + 0.0011798473, + -0.0015085634, + -0.018768575, + 0.0017158478, + 0.014483149, + 0.0023082357, + -0.0076453467, + 0.018360868, + 0.0059894472, + 0.0066145454, + -0.005560423, + 0.019414745, + -0.010527103, + -0.0034324022, + 0.0043502846, + 0.004304309, + 0.012072933, + -0.008210283, + 0.0011498021, + 0.00847198, + -0.016396917, + -0.008098033, + -0.016095903, + 0.022808658, + 0.01449796, + -0.0153048495, + -0.024876492, + -0.0032803118, + 0.0020287593, + 0.00016879253, + -0.013876028, + -0.011154178, + -0.0051625916, + -0.021490192, + 0.005521968, + -0.0019219039, + -0.011812127, + 0.013305557, + 0.017729038, + -0.011591239, + 0.0061398805, + -0.005529866, + 0.0025249117, + 0.0045012203, + -0.016464416, + 0.0036085546, + 0.013348382, + -0.004769047, + -0.022728713, + -0.02021818, + 0.007765984, + -0.0075477664, + 0.0027208538, + 0.0040181307, + 0.017053291, + -0.017308367, + 0.0068646804, + 0.020120237, + -0.14609282, + 0.023575893, + -0.008173443, + -0.03219079, + -0.014556689, + 0.01621594, + 0.026092706, + 0.018891007, + -0.020376937, + 0.006439364, + -0.019361129, + 0.006944445, + 0.007685236, + 0.0052998047, + 0.0073420913, + 0.0032972558, + -0.019276947, + -0.0012951191, + 0.013305504, + 0.0024119585, + 0.0064360457, + 0.0109632565, + -0.005494658, + -0.007735993, + -0.003655456, + 0.00197781, + -0.026399082, + 0.0024187418, + -0.0074294135, + 0.0066785756, + -0.007056343, + 0.018833369, + 0.0016874367, + 0.002808692, + -0.0064166323, + 0.0002382836, + 0.0062249997, + -0.0075885216, + 0.01361679, + 0.0021009075, + -0.010718724, + -0.0045941477, + 0.006507263, + 0.028173307, + 0.001555771, + 0.006289748, + -0.013007942, + 0.008906672, + -0.019428035, + -0.0012262487, + 0.020655168, + -0.0057269833, + 0.010925094, + 0.0048505496, + -0.007932454, + 0.0046049724, + -0.004174678, + -0.024394818, + 0.004355319, + -0.004325747, + 0.02929942, + 0.03104016, + 0.0034029712, + 0.013061722, + -0.00028777335, + -0.021436924, + -0.0041704415, + -0.0105479825, + -0.01456486, + -0.0022237422, + 0.020174883, + -0.015554892, + 0.023269113, + 0.010604964, + 0.017374242, + 0.0009866995, + 0.00016653465, + -0.0011878184, + -0.0038126633, + 0.005345001, + 0.0016850592, + 0.0034345202, + 0.013271997, + 0.0013812752, + 0.02384595, + -0.034226775, + -0.005102307, + 0.003280196, + 0.010590988, + 0.0034874405, + 0.0030542486, + 0.020432966, + 0.018153964, + 0.00043373692, + -0.012946221, + -0.0029034063, + 0.0064025563, + 0.0056380923, + -0.0010775285, + -0.0051854765, + -0.005901813, + 0.00285813, + -0.0003738676, + 0.0005040641, + -0.0060641863, + -0.0061041894, + -0.004998575, + -0.011385906, + 0.0066778646, + -0.007506221, + 0.00027887645, + -0.00081552344, + 0.0006417145, + 0.0025586097, + -0.0025067194, + -0.0010522841, + 0.00948913, + 0.0009914908, + -0.025042191, + 0.00036177752, + 0.014268307, + -0.0009416385, + 0.022621734, + 0.0032021273, + 0.019750593, + -0.0038210007, + -0.0021938002, + 0.007304814, + -0.0015886652, + -0.0033389635, + -0.013533195, + 0.0154762175, + 0.023479138, + -0.0005463595, + -0.015056414, + -0.007905567, + 0.005804407, + 0.0027477315, + 0.0005209196, + -0.0031243192, + -0.002801726, + 0.001609389, + -0.016349733, + -0.007432889, + -0.008704614, + 0.0165091, + 0.007891008, + 0.032172948, + -0.018189268, + -0.022262748, + -0.011460947, + 0.013766013, + -0.003842907, + 0.004107959, + 0.009732589, + 0.0023269227, + -0.010880488, + 0.014125349, + 0.012088474, + -0.008894531, + -0.0071711177, + -0.01147621, + -6.830457e-06, + 0.0017904766, + 0.019848404, + -0.027736459, + -0.018101789, + 0.007562114, + -0.036879543, + -0.004275707, + -0.030746635, + 0.0075112786, + 0.006354375, + -0.011267438, + -0.016878592, + -0.026407989, + 0.0030534596, + 0.010057407, + 0.013045193, + -0.06608935, + 0.021950578, + 0.006742583, + 0.013598356, + -0.0033353881, + -0.0016799681, + 0.0028966677, + -0.0053826617, + -0.008237901, + -0.012169313, + 0.015502456, + 0.0010409239, + 0.002514572, + -0.03729489, + 0.013733669, + -0.014704507, + -0.00024449878, + 0.0016951663, + -0.025569605, + 0.009703081, + 0.0047599985, + 0.0037252244, + 0.013027276, + -0.000101702266, + 0.0076822005, + 0.001598326, + 0.015451042, + -0.008425146, + 0.010774381, + 0.0063350787, + 0.0036379236, + 0.006841654, + -0.0068488996, + -0.008352663, + 0.023199009, + -0.01503764, + -0.008638873, + 0.0067640203, + -0.004301552, + -0.09070569, + 0.005556958, + -0.014968662, + -0.11609382, + 0.0037963977, + 0.007321697, + 0.0016991039, + 0.012293771, + -0.013908481, + -0.032468308, + -0.00163809, + -0.0014135248, + 0.001268276, + -0.03641577, + -0.0129291145, + 0.007165365, + 0.00798795, + 0.008586053, + 0.013211236, + -0.015198531, + -0.010581446, + 0.008554716, + -0.016915502, + 0.0067772493, + -0.003629585, + -0.0004276997, + -0.0016309044, + -0.0028640104, + -0.010906592, + 0.002061815, + -0.0029706352, + 0.0041646976, + -0.0067357356, + 0.0036250434, + -0.013152665, + -0.0027372383, + 0.0078195715, + -0.012634958, + 0.0018124796, + 0.0024241675, + 0.012973193, + -0.01055834, + 0.00999343, + 0.016101407, + 0.008624181, + -0.0021043187, + -0.024917414, + 0.013248023, + -0.13193415, + -0.0050658635, + -0.00096883834, + -0.0022757337, + 0.0025982684, + 0.006587389, + 0.007727736, + 0.13633472, + -0.016904911, + -0.0060479073, + -0.0035111227, + -0.013581815, + 0.025965028, + 0.0021828446, + 0.0051499647, + -0.01597053, + -0.00012184, + 0.0066055143, + -0.0010619104, + 0.0029336778, + -0.034267187, + 0.0001446692, + 0.0010343201, + 0.008806524, + -0.003936286, + -0.057651717, + -0.0210148, + 0.0076803523, + 0.0072149867, + 0.007817021, + 0.020953702, + -0.0046199914, + 0.025745831, + -0.0037166933, + 0.0022606486, + 0.011903871, + 0.00764051, + -0.015948584, + -0.0052281185, + 0.01527515, + 0.0027027621, + 0.0064621386, + -0.028658753, + -0.008317713, + 0.011794476, + 0.007407979, + 0.0050561354, + -0.00480712, + 0.011068088, + -0.018701548, + -0.005694988, + -0.0062845605, + -0.011770742, + 0.012894761, + -0.003338168, + 0.017391823, + -0.010566756, + -0.019573955, + 0.0025518697, + -0.008194574, + -0.004358947, + -0.024430271, + 0.015682437, + 0.0033750457, + -0.0013428546, + 0.0026441067, + -0.0064418023, + 0.0012995155, + -0.009085858, + 0.00623006, + -0.004268671, + -0.008501764, + -0.009132051, + -0.0004247613, + -0.0007065355, + 0.010996784, + -0.006897666, + 0.016715206, + -0.007478832, + -0.009493207, + -0.019607155, + 0.015953027, + 0.0007468567, + 0.010617383, + -0.0047031087, + 0.024317281, + 0.016396288, + 0.0025953448, + 0.010081882, + 0.00088506006, + 0.00013557027, + -0.004131907, + 0.013685929, + 0.009633753, + 0.01500652, + -0.00524857, + -0.012946939, + 0.0014492463, + -0.0098173525, + -0.004784412, + 0.011927192, + -0.001477274, + -0.010040116, + -0.00025273854, + 0.007816421, + -0.02564008, + 0.008404923, + -0.013013989, + -0.009849701, + 0.0004801758, + 0.0030241502, + -0.015659286, + -0.01702993, + 0.012290889, + -0.007661914, + -0.028841836, + -0.0063579185, + -0.013024367, + 0.004544356, + 0.0063637714, + 0.00024194228, + 0.00055086514, + 0.0013617799, + -0.0130782565, + -0.0021114594, + -0.007370695, + -0.012256818, + -0.0030069086, + -0.0029390445, + 0.0034205578, + -0.004932014, + 0.0041746125, + 0.007831495, + 0.004745753, + 0.018727621, + 0.016691415, + 0.0082338825, + 0.00013736554, + 0.018877927, + -0.01932592, + -0.004881514, + 0.00596026, + -0.00948239, + -0.014454469, + 0.013364165, + 0.0031295847, + -0.00043968504, + -0.013691322, + -0.018957086, + -0.0018903649, + -0.010407005, + 0.0223039, + -0.008343137, + 0.0056352937, + -0.004204668, + 0.020694612, + -0.011903192, + 0.0055518267, + -0.012247888, + -0.0005543354, + 0.0012276962, + -0.03129326, + -0.013204311, + -0.0069654626, + 0.004110629, + 0.0018988556, + -0.010701709, + -0.00041397233, + 0.026626261, + -0.0024816662, + 0.017397085, + 0.011855655, + -0.025952961, + -0.00013907171, + 0.02148711, + 0.0047636386, + -0.01109743, + -0.013004783, + -0.0047308733, + -0.01492947, + -0.0030125661, + 0.012484072, + -0.0020693406, + -0.00874911, + -0.0045083226, + 0.0045682974, + 0.0013591321, + -0.012567444, + 0.0065643713, + 0.01151584, + 0.0043932823, + 0.007458598, + 0.0067669987, + 0.0021815358, + -0.015761897, + -0.0103775095, + -0.0006737975, + -0.034082398, + -0.015312308, + -0.0038634683, + -0.011659322, + -0.027276315, + 0.006560757, + 0.008514117, + 0.00080510945, + 0.0012126995, + -0.04659045, + -0.026385019, + -0.022362081, + 0.0030430174, + -0.01635798, + -0.008818578, + 0.009137726, + 0.015177128, + 0.014224717, + 0.0013936254, + 0.0147021925, + 0.005987445, + 0.013388185, + 0.01475495, + -0.005052887, + 0.009664066, + -0.0009181277, + 0.014781508, + -0.013526577, + -0.02943875, + 0.0028912998, + 0.015512078, + 0.01548547, + 0.00594984, + -0.003448391, + -0.012041029, + 0.00039174542, + 0.022618217, + 0.0031694295, + 0.0015042577, + 0.0139108375, + -0.00048904185, + -0.00709545, + 0.0050505823, + -0.005196223, + 0.0066084266, + 0.0056443107, + 0.0017777929, + -0.019806687, + -0.0066625653, + 0.0116061885, + -0.020602392, + 0.018083133, + 0.010631884, + 0.0020227178, + 0.00939747, + -0.011887385, + -0.015424872, + -0.013555754, + 0.006626821, + 0.006567099, + -0.0141840875, + -0.00072945835, + 0.008733422, + 0.017314384, + -0.017567988, + 0.005735904, + 0.0108691985, + -0.018090913, + -0.009033469, + -0.004354809, + 0.007349515, + -0.0034965998, + 0.0005995342, + 0.0041737896, + 0.016415117, + -0.023841372, + 0.02863038, + 0.0080764545, + 0.008713121, + -0.0055172527, + 0.00048344725, + -0.029084193, + 0.014295165, + 0.020282298, + 0.0018069778, + 0.00018922177, + 0.0043608737, + 0.009413494, + 0.0013398686, + 0.011900919, + -0.01334492, + 0.018225837, + 0.0065759355, + 0.014756475, + -0.015627258, + 0.005121912, + -0.00342673, + 0.007027138, + -0.008003567, + 0.005619166, + 0.01893856, + -0.006311037, + 0.011387209, + 0.013106465, + -0.015328255, + -0.027328271, + 0.00035129557, + 0.002703918, + 0.009508407, + 0.014759672, + -0.0148826, + -0.007999322, + -0.0064245365, + -0.009316741, + 0.0011463893, + -0.0052270587, + 0.006592267, + -0.019526634, + -0.0045114057, + -0.00199906, + 0.011120322, + 0.012702381, + -0.022901004, + -0.004832471, + 0.014614916, + -0.01254844, + 0.013893862, + 0.016458672, + 0.00391298, + -0.013711348, + -0.011291388, + -0.01797027, + 0.015478405, + -0.0019884123, + -0.027668148, + -0.0094685815, + -0.010987685, + 0.010816063, + -0.002257569, + -0.017419973, + 0.019132651, + -0.007949089, + -0.013637888, + -0.006601949, + 0.005721453, + -0.02379573, + -0.015107774, + 0.000827648, + 0.008267713, + -0.0023008035, + -0.00071427936, + -0.007620678, + -0.026668917, + -0.0025679728, + 0.00539084, + -0.00041505502, + 0.018125841, + -0.0023185415, + -0.001959203, + 0.01780675, + 0.013198909, + 0.013630213, + 0.0055280663, + -0.0036300211, + -0.0002464843, + -0.0056492793, + 0.012754539, + 0.021615349, + 0.009253455, + 0.02405524, + -0.017177217, + 0.010642492, + -0.015308109, + -0.009542661, + -0.000833572, + -0.014174831, + 0.005018272, + 0.003296041, + 0.013095051, + -0.023409612, + 0.00047311152, + 0.007688722, + -0.004337025, + 0.0013835045, + 0.020916976, + 0.005102789, + -0.0073390603, + -0.008935875, + 0.006792171, + -0.015721763, + 0.017373592, + -0.013285138, + 0.009878286, + 0.020951292, + 0.0106042065, + -0.0005776757, + -0.0019197308, + -0.0017159879, + -0.00599174, + 0.005471518, + 0.0064551365, + 0.0058827815, + 0.010008715, + 0.011489872, + -0.02066383, + 0.008540665, + -0.011731031, + -0.011898704, + -0.017767532, + 0.013667615, + -0.005760106, + 0.001253201, + 0.0005746465, + -0.0019817818, + 0.019706743, + 0.008433081, + 0.011804394, + -0.020133814, + 0.03641091, + -0.027303554, + 0.008452041, + 0.006401888, + -0.013735632, + 0.0026148157, + -0.009370535, + -0.0016878417, + 0.011272632, + 0.0030301472, + -0.00019941978, + -0.0045899153, + -0.005140114, + -0.0027080108, + -0.018940354, + 0.014875347, + -0.011097544, + 0.0034353477, + -0.0017932055, + -0.01183471, + -0.00072506396, + 0.003592544, + 0.0064291414, + -0.009708136, + 0.010044723, + -5.9229726e-05, + 0.0098290965, + 0.011223268, + 0.04678059, + -0.009277873, + -0.007071474, + 0.0060843625, + 0.013216747, + -0.012417011, + -0.0012162297, + 0.019898131, + -0.005373584, + -8.119103e-05, + 0.0043114247, + -0.0011471859, + -0.0028094694, + -0.030325877, + -0.0095623145, + 0.020488054, + 0.0063392892, + 0.00089007284, + -0.0038787527, + 0.015095955, + 0.012168425, + -0.036774307, + 0.0060712514, + 0.0066923467, + -0.0027519076, + 0.016343368, + 0.017046658, + -0.06018278, + 0.024136102, + -0.03271132, + -0.00089195115, + -0.007233744, + 0.014371361, + -0.015391557, + -0.0054119444, + -0.011534075, + -0.043763895, + -0.021084132, + 0.009892426, + -0.013187215, + -0.0017100254, + 0.0071345046, + 0.010185501, + -0.02593305, + 0.0036059956, + 0.014470709, + 0.0064841826, + 0.009312727, + -0.0003301155, + -0.00880405, + -0.001076309, + -0.0026867774, + 0.0014996664, + 0.0036342733, + 0.00056516204, + 0.007059131, + 0.006389875, + 0.004219338, + 0.0034318217, + -0.0034686918, + -0.010111063, + -0.009282044, + -0.030581577, + -0.004520889, + -0.000624491, + -0.022399958, + -0.023003975, + -0.012433072, + 0.017189395, + 0.013585114, + -0.0304631, + 0.0127828345, + -0.01274186, + -0.00017142596, + -0.0055936165, + 0.00057422294, + -0.016564945, + -0.013161659, + -0.012631962, + 0.0040874495, + 0.017586509, + 0.007860702, + -0.00781338, + -0.00402812, + -0.008823843, + -0.0011639427, + 0.0056213923, + 0.008984777, + -0.002634518, + 0.0076444205, + 0.0023419673, + -0.014419151, + -0.012223469, + 0.011954017, + 0.010746471, + 0.005880748, + -0.032038283, + -0.0148736285, + 0.035811022, + 0.012919037, + -0.0056549083, + 0.044470593, + -0.012538599, + -0.010340406, + -0.0022268326, + -0.012842829, + -0.0073204134, + -0.013681175, + -0.0015957396, + -0.008422009, + -0.024932502, + -0.0067749713, + 0.0011482356, + 0.0026804348, + -0.0036993918, + 0.02683617, + -0.012643262, + 0.009728097, + -0.017715624, + -0.01133747, + -0.00040934965, + -0.004586846, + 0.0005262303, + 0.0106172925, + 0.00092386676, + 0.0014580763, + 0.009832976, + -0.011659725, + -0.016588185, + 0.009424925, + -0.0084941145, + -0.008104089, + -0.0063538845, + 0.009804624, + -0.0036226192, + 0.017879888, + -0.015317865, + 0.0017703674, + -8.2676976e-05, + -0.0065688845, + 0.0028925277, + 0.0044032903, + -0.01343475, + -0.0050930446, + 0.0143930055, + -0.013336081, + 0.022012878, + -0.021042533, + 0.0054460294, + 0.008044309, + 0.008024621, + -0.035568677, + 0.012095182, + -0.0055649155, + -0.01558033, + -0.019907005, + 0.005652151, + 0.013198951, + 0.015089448, + 0.01184796, + 0.020870993, + 0.029595464, + 0.014271772, + 0.024094582, + -0.012662305, + -0.0074478276, + -0.0046362802, + -0.0017899332, + 0.014738007, + -0.020890582, + -0.004126307, + 0.0068059443, + 0.030005638, + -0.0072821975, + 0.008292348, + -0.014774941, + -0.0077116718, + -0.006816467, + 0.011596315, + -0.019413143, + 0.0030342953, + -0.0051642265, + -0.012659202, + 0.010063811, + -0.0029870872, + -0.004115996, + 0.014208923, + 0.01614997, + 0.0024534538, + -0.0022047404, + 0.014448579, + 0.0041148434, + 0.0031741038, + -0.011937213, + -0.009172848, + 0.012240861, + 0.03382827, + -0.0065687965, + 0.0026374268, + -0.00091634615, + 0.010849941, + -0.0056812977, + -0.011476668, + -0.0036018866, + -0.0080860555, + -0.0052597323, + -0.005817349, + 0.002384036, + -0.009850449, + -0.008503926, + -0.0026998343, + 0.0048841136, + -0.008389405, + 0.0065132943, + 0.01478617, + 0.018512676, + -0.005188306, + 0.010863864, + 0.004264593, + -0.0017736802, + 0.0036980829, + 0.006296403, + 0.0070669623, + 0.0010103788, + 0.0016335504, + -0.0043813237, + -0.02034541, + -0.01101814, + -0.02072721, + 0.013691136, + -0.0034674832, + 0.018606551, + 0.0019160492, + -0.010437091, + 0.021514481, + 0.0005177568, + -0.022549631, + -0.013479157, + 0.01631972, + 0.012263093, + -0.015381631, + -0.0018759436, + -0.0016669458, + 0.18101704, + 0.1093008, + -0.0108710285, + 0.020550566, + -0.0004615204, + 0.010845453, + -0.00071631087, + -0.011157918, + 0.013139791, + 0.010722269, + 0.01015012, + 0.011528534, + -0.013488796, + -0.0075844373, + 0.021426443, + 0.0016685755, + 0.009023883, + -0.016932875, + -0.004079776, + 0.018773092, + -0.009591782, + 0.020822706, + -0.0047686836, + -0.004376192, + -0.025941959, + -0.00968559, + 0.015453033, + -0.009474105, + 0.01777086, + 0.021874133, + -0.005394251, + 0.004637134, + -0.0031034655, + 0.0015372632, + -0.0035739064, + -0.014553905, + 0.008955991, + -0.027084304, + -0.014861365, + -0.018063093, + 0.002232104, + 0.001896838, + 0.017228644, + 0.0001912109, + 0.018728163, + 0.025772624, + -0.030454125, + 0.033822414, + -0.025602056, + 0.015668472, + 0.000357564, + -0.012912496, + 0.008604631, + -0.005770236, + -0.007211313, + -0.005036539, + 0.024395732, + 0.008251911, + -0.0029073078, + -0.00014043183, + 0.0068095187, + 0.0044959737, + -0.0028950186, + -0.00364373, + 0.01573795, + 0.0097384015, + 0.007902207, + 0.0027443352, + -0.01181232, + 0.007336599, + 0.0034208647, + 0.0037929153, + -0.0032592227, + -0.0075592967, + 0.0049634785, + 0.0052989223, + -0.0139496215, + -0.010396584, + -0.0041128877, + 0.012444102, + -0.0034853267, + 0.016723676, + -0.009892386, + 0.006908736, + -0.016373554, + -0.0035066758, + 0.0043744002, + 0.030439014, + 0.13673645, + -0.01449067, + -0.035831142, + -0.0071469275, + 0.003983547, + 0.008935565, + -0.0006057833, + 0.014232494, + -0.012279081, + -0.0034864042, + 0.009764002, + -0.00064953486, + 0.016928414, + 0.0037047043, + -0.0039219093, + -0.011147312, + -0.0007565764, + 0.06043088, + 0.014730864, + -0.0028320819, + 0.004314209, + -0.009144806, + -0.0195842, + 0.008564337, + 0.009610337, + -0.017522126, + -0.0066808276, + 0.0034532864, + -0.018006934, + -0.0074848556, + -0.10377555, + 0.014674993, + 0.00041515182, + -0.008717269, + -0.014613276, + 0.01603586, + -0.018056076, + -0.027579546, + 0.019698506, + -0.007743826, + 0.0025641185, + -0.0013436062, + 0.0063156, + 0.0101120565, + 0.0021566958, + -0.0006276306, + 0.026810342, + 0.012392, + -0.007230213, + 0.008414363, + 0.0016233688, + -0.009935457, + -0.0093064355, + 0.021927334, + -0.011682089, + 0.0053977408, + 0.012596382, + 0.0026636086, + 0.0048024086, + -0.0014210219, + 0.007881013, + -0.013922297, + -0.02060677, + -0.012090255, + -0.00072851434, + 0.024995003, + -0.0066314936, + -0.003192162, + 0.02593965, + -0.0015279023, + 0.015211616, + -0.0053264247, + 0.010392814, + -0.0043614563, + -0.0007705568, + -0.008130015, + 0.0110822255, + -0.009494609, + -0.027477294, + -0.00826606, + 0.059790347, + -0.010160074, + -0.002246985, + -0.009049423, + 0.006488232, + -0.0026865096, + -0.004623906, + -0.010079339, + -0.0032320565, + -0.0011942488, + 0.011252065, + 0.012684605, + -0.0047359727, + -0.005250555, + -0.017765958, + 0.022906708, + -0.007161605, + 0.01880367, + -0.03132898, + -0.017381331, + -0.005894936, + -0.013972651, + -0.0173399, + -0.011528493, + 0.010805341, + -0.00658849, + -0.015628157, + 0.002882566, + -0.00046419512, + -0.017889768, + -0.00928033, + -0.024536757, + 0.006910042, + 0.13299006, + 0.030297102, + 0.011923801, + 0.0022693628, + 0.019716391, + -0.00535604, + 0.0042631677, + -0.017034076, + 0.013830708, + -0.015626715, + 0.0044133235, + 0.0020316439, + -0.009778423, + 0.00599759, + 0.018428536, + -0.0034956133, + 0.022540363, + -0.0033667875, + -0.009051445, + -0.0071026543, + -0.007170854, + 0.0039230124, + 0.00046874772, + -0.0076848995, + -0.005771461, + 0.0030157624, + -0.00945153, + 0.019307122, + 0.010124799, + 0.0021277536, + 0.0056111943, + -0.027327025, + 0.03531855, + -0.003972401, + 0.007367267, + -0.0008687196, + 0.025464954, + -0.017492313, + 0.0011724007, + 0.011119176, + 0.0055753444, + 0.009724549, + -0.00079452706, + 0.009783027, + -0.043451395, + 0.19215001, + 0.012108807, + 0.01110689, + -0.009120394, + -0.011989611, + -0.012789174, + 0.011857606, + -0.003341848, + -0.017249674, + -0.0018639601, + 0.01596994, + 0.009982599, + 0.006601805, + -0.006021664, + -0.024381177, + -4.928325e-05, + 0.0022097847, + 0.0010614523, + 0.0040461323, + 0.01299665, + 0.014698813, + 0.0024938239, + 1.9120657e-07, + 0.015450025, + -0.0111248735, + 0.026375296, + -0.013739944, + 0.0030186323, + -0.012089039, + 0.0021721548, + 0.020440822, + 0.0072343224, + -0.0036756573, + 0.0052002096, + -0.00048423497, + -0.02623082, + 0.00081887055, + 0.012408545, + 0.0014850002, + -0.026908068, + -0.008914438, + 0.0077669616, + 0.013510153, + -0.0017403773, + -0.016019326, + -0.0037498416, + 0.0030504556, + 0.003478261, + 0.0019438358, + 0.022127846, + 0.005626139, + -0.012650384, + 0.02039129, + 0.018482514, + -0.01410989, + -0.020026313, + -0.0018702564, + -0.008208375, + -0.0037110934, + 0.015758459, + -0.009571421, + -0.0011474643, + -0.01657879, + 0.0024380854, + 0.030233009, + 0.0043924265, + 0.007002326 + ] + }, + { + "values": [ + 0.008687293, + -0.0005995523, + 0.017488128, + -0.067767285, + -0.0061500445, + 3.470041e-05, + -0.004729637, + 0.0058073006, + 0.03076559, + -0.0083383275, + 0.0077374442, + -0.044319317, + -0.03668121, + 0.014634102, + 0.104894705, + -0.011687661, + -0.012862615, + 0.011709252, + 0.015287733, + -0.034255635, + 0.0005121346, + -0.012760322, + 0.021096574, + -0.0056318603, + 0.006498022, + -0.0034005821, + 0.02133476, + 0.020159671, + 0.014046812, + 0.025498588, + -0.0007774919, + 0.004046043, + -0.008088746, + -0.024721028, + -0.01891392, + -0.0043858183, + 0.017453099, + -0.019527597, + 0.008012627, + -0.00197809, + -0.00598428, + 0.0032595566, + -0.019494237, + 0.012056208, + 0.00028665893, + -0.007286767, + 0.0059994394, + -0.024076596, + -0.0050734044, + 0.0047454024, + -0.0066968445, + -0.010518766, + -0.011218274, + -0.15235053, + -0.003994987, + 0.011060574, + -0.008045645, + 0.015620118, + 0.016561916, + 0.030029712, + -0.014314311, + 0.020052657, + -0.002120565, + -0.011984409, + -0.009346121, + 0.010684147, + -0.0046938476, + 0.025904069, + -0.017173946, + 0.021311343, + 0.01969403, + -0.0067657465, + -0.03320154, + -0.02235153, + -0.02382749, + 0.0036755153, + 0.00369162, + -0.006402991, + -0.027000522, + 0.03792506, + -0.0113652935, + 0.010817447, + -0.0013063228, + -0.005831651, + 0.018017195, + 0.007974958, + 0.022740874, + 0.00241138, + -0.007421409, + 0.0009808135, + 0.0009278593, + -0.00082564563, + -0.013920607, + -0.005594853, + -0.0008029837, + 0.004135705, + 0.017192911, + -0.012926841, + -0.029362565, + -0.008991143, + -0.010069888, + 0.002832829, + -0.01199004, + -0.0045435852, + -0.003897541, + -0.0075385002, + 0.0030093023, + -0.012940013, + -0.004085419, + -0.018461393, + 0.00833783, + 0.005771225, + -0.011611716, + 0.009975825, + 0.0029588023, + -0.18698391, + -0.013411251, + 0.009762766, + 0.008617569, + 0.016054373, + -0.005534795, + 0.012755129, + -0.0192076, + 0.0073138094, + 0.0009115203, + 0.023063488, + -0.023286233, + 0.011298807, + -0.001075817, + 0.0023190498, + 0.0038535318, + 0.0005834468, + 0.011501422, + 0.006702255, + 0.0062109283, + 0.02183751, + -0.032164596, + 0.019121049, + -0.0055775414, + 0.021821672, + -0.0036035548, + -0.009011843, + -0.022213923, + 0.0058157584, + 0.006074562, + 0.005068639, + -0.018747916, + -0.01970195, + 0.017120222, + -0.013320199, + -0.021279475, + 0.015190147, + 0.0253083, + -0.014097967, + -0.009909757, + -0.053273983, + -0.01906554, + 0.010277074, + -0.0066464352, + 0.013347818, + -0.006589539, + 0.008620761, + -0.002177168, + -0.0003507091, + 0.012762215, + 0.008973848, + -0.017079908, + 0.031663943, + 0.020444658, + 0.004901412, + 0.012096727, + 0.0102592185, + -0.0117244, + -0.0051103467, + 0.016173013, + 0.024313312, + -0.024164645, + -0.004551832, + 0.00061222084, + 0.005129755, + 0.0014223006, + 0.002995904, + 0.010437085, + 0.008957324, + -0.014226335, + -0.00858208, + -0.021446357, + -0.0025424985, + -0.012760826, + -0.0073461533, + 0.014100205, + -0.011371971, + -0.0072267917, + -0.006064865, + 0.020688552, + 0.006472284, + 0.00031394183, + 0.004539531, + 0.0041059568, + -0.006476568, + 0.032754947, + -0.009970065, + -0.01073267, + 0.003956176, + -0.0002989718, + -0.006135503, + 0.027761823, + -0.0027849567, + 0.012315016, + 0.017773582, + 0.012340351, + -0.027640266, + 0.016883355, + -0.024143461, + 0.021447303, + 0.003629593, + -0.014176364, + -0.020846942, + -0.0013734883, + -0.00506708, + -0.024184246, + -0.024940472, + -0.039107937, + 0.0056861923, + -0.005296446, + 0.010592748, + 0.004813534, + 0.00584702, + 0.0037388674, + 0.014751302, + -0.007833008, + 0.013772334, + -0.007289538, + 0.008347103, + -0.009325167, + 0.0030555413, + 0.0022530123, + 0.015573232, + -0.0061403112, + 0.014338322, + -0.020420594, + 0.0067883558, + 0.020518836, + 0.024063326, + 0.017427485, + -0.011109382, + -0.0018570129, + -0.021259252, + 0.006105089, + -0.021553349, + 0.02146669, + 0.0010082407, + -0.034753047, + -0.011069832, + -0.004126004, + -0.0005816653, + -0.0088055935, + 0.012430738, + 0.00035655912, + -0.024972728, + -0.019622268, + -0.0305486, + 0.00025767417, + -0.02089438, + 0.00015059317, + -0.009025982, + 0.0004761942, + 0.016839279, + -0.025694063, + -0.0044296975, + -0.00223397, + 0.009437991, + 0.0053606452, + -0.0048000184, + -0.0029385174, + -0.0032674097, + -0.13097695, + -0.008740567, + -0.013532031, + -0.022778507, + -0.02875414, + -0.004267425, + -0.008642789, + 0.012612438, + 0.021193268, + 0.016677273, + -0.0054723592, + -0.006210531, + 0.008814096, + -0.00092938077, + 0.010654507, + 0.01892029, + -0.0016280303, + -0.001700918, + -0.007964983, + -0.014993818, + 0.0057483455, + -0.0014383545, + -0.0085505415, + -0.005378245, + 0.005691154, + -0.0054322216, + -0.012698173, + -0.0007175664, + -0.0054551894, + 0.006930263, + -0.0051436294, + 0.007788823, + 0.008630878, + -0.01246759, + -0.00041031017, + 0.034430236, + -0.0010709311, + -0.012113111, + 0.009765108, + 0.008934989, + 0.0052047265, + 0.011344533, + -0.0015576839, + 0.0076825265, + -0.026515618, + 0.0009329524, + 0.014590517, + -0.027028766, + -0.01913089, + 0.02159703, + -0.025530176, + -0.014180738, + 0.0015316282, + 0.028312722, + 0.008969981, + 0.01636098, + 0.008516236, + -0.005187639, + -0.0032281978, + 0.0035057622, + 0.026580233, + -0.0011868782, + -0.007449761, + 0.007486185, + 0.0069418196, + -0.005742916, + -0.005400782, + 0.010856775, + 0.009548369, + 0.003226997, + 0.02420754, + -0.0077429977, + 0.0045912904, + -0.029369257, + -0.006270844, + 0.008312032, + 0.013096815, + -0.008833374, + 0.003186229, + 0.005816183, + 0.0021880534, + 0.0003931968, + 0.006865366, + 0.010002729, + -0.010185929, + 0.010563891, + 0.00212922, + 0.017728625, + 0.017483953, + -0.015023876, + 0.02049577, + 0.0007207393, + -0.029220348, + 0.0003938394, + -0.023995753, + -0.023114612, + -0.024813, + -0.0004727605, + -0.02131237, + 0.019992903, + -0.022018455, + -0.011245906, + 0.012603231, + -0.016052695, + 0.0063873124, + -0.0031213756, + -0.0026527708, + 0.010019001, + 0.0045374334, + 0.0061593726, + 0.0070362296, + -0.011049312, + -0.0009436636, + -0.018056205, + -0.0013992052, + 0.0034248752, + 0.005950456, + 0.020585394, + -0.018088175, + -0.008558077, + 0.0013266865, + -0.02649609, + -0.017061364, + 0.029099887, + -0.0071205674, + -0.007876009, + -0.0028450787, + -0.014287453, + -0.028108932, + -0.027767034, + -0.020211775, + 0.0127054285, + -0.005742255, + -0.02261303, + -0.008700159, + -0.014775517, + 0.0037119677, + 0.010950597, + 0.0239616, + 0.014615081, + -0.02370977, + -0.012224933, + 0.031222288, + 0.013874941, + 0.0006624498, + 0.008215657, + 0.016483659, + 0.011281578, + 0.011413039, + -0.023720248, + -0.021328518, + -0.015865006, + 0.00055274164, + 0.01500976, + -0.007229906, + 0.0038163138, + 0.009932837, + -0.021932326, + 0.006949902, + -0.02544569, + 0.006537318, + 0.0019705454, + 0.006958907, + -0.018024437, + 0.00567134, + -0.0050933743, + -0.0016354594, + -0.008876939, + 0.012070871, + 0.0018852351, + -0.0071650385, + 0.012203077, + -0.004173197, + -0.0047833505, + -0.0015536913, + 0.0030763065, + -0.0021329378, + 0.0037008463, + -0.020766912, + 0.026228014, + -0.0028039473, + -0.0081609255, + -0.01870959, + 0.0059181573, + -0.0018067501, + -0.003860282, + -0.00055790343, + -0.0073873242, + -0.00413714, + 0.0072153066, + 0.008891046, + -0.027005166, + 0.013543151, + 0.012353646, + -0.011079663, + 0.015625004, + 0.012731967, + 0.014032128, + -0.0012448762, + -0.016995478, + 0.01681567, + 0.007434244, + -0.017074956, + 0.011768046, + 0.02115411, + 0.003970481, + 0.0041958163, + -0.009169353, + 0.03898993, + -0.005237962, + 0.00011626366, + -0.0035541493, + 0.004878718, + -0.012272032, + 0.0043846844, + -0.008687135, + -0.00405254, + 0.007174887, + -0.0026679677, + 0.0025143574, + -0.028716821, + 0.00890444, + -0.006138646, + 0.010285583, + 0.019889217, + -0.008401767, + -0.012110083, + 0.025436498, + 0.0046592, + -0.009531749, + -0.028525548, + 0.011394783, + 0.024467498, + -0.0038581465, + 0.012530472, + 0.0076566734, + -0.002841675, + 0.0037038752, + 0.014615617, + 0.004762231, + 0.009002116, + -0.01245148, + -0.0073044873, + 0.022037944, + 0.032197755, + -0.0049000815, + -0.024018707, + -0.0037875383, + -0.0020812561, + -0.001972549, + 0.0027452414, + -0.0102813905, + 0.0061977524, + 0.0014802256, + 0.013255166, + 0.012226865, + -0.005501544, + -0.0072147488, + 0.0047980067, + 0.01125825, + -0.013410314, + -0.033505343, + -0.00041833645, + 0.033699498, + -0.0057157897, + 0.00429601, + 0.01877627, + -0.0050414144, + 0.03137162, + -0.12720929, + -0.004552171, + -0.0033405058, + -0.004955866, + 0.011527269, + -0.01758085, + -1.3478935e-06, + -0.014266126, + 0.0029667758, + -0.020139594, + 0.0037180695, + 0.020401116, + 0.0045658993, + 0.02065899, + -0.009741241, + -0.011483437, + -0.0133353695, + 0.009935322, + 0.010573445, + 0.006179922, + 0.01627513, + 0.011737903, + 0.003226013, + 0.022156741, + -0.018620929, + -0.01777529, + 0.008175604, + 0.0016045879, + -0.0029265038, + 0.0021788888, + 0.010028388, + -0.010622037, + 0.0003946121, + 0.011146568, + 0.009001273, + -0.0067314114, + -0.023070794, + -0.008757176, + -0.005538598, + 0.035726305, + -0.030223409, + -0.013083865, + 0.02403896, + 0.0012364216, + -0.022822661, + 0.0031923193, + 0.03859201, + -0.001968577, + -0.006411719, + 0.027751718, + -0.027976727, + -0.0020238843, + -0.015425944, + 0.008480097, + 0.01743972, + -0.03977096, + 0.002610674, + 0.02234449, + -0.020265289, + 0.02029537, + 0.0024829702, + 0.005901852, + -0.0102470815, + 0.018335385, + 0.017356101, + -0.005466808, + -0.0016111028, + 0.007029766, + 0.011143762, + -0.0051274584, + 0.02794184, + 0.0018588494, + 0.006535482, + 0.01384492, + -0.009647197, + 0.017071873, + 0.008974704, + 0.007221637, + -0.013603257, + 0.00540491, + -0.01196659, + -0.009878937, + -0.07751112, + 0.009982854, + 0.013531767, + -0.01750864, + -0.0058993297, + -0.010440269, + -0.007223993, + 0.0004057722, + 0.012643911, + -0.012247717, + -0.008788133, + 0.01751591, + -0.015608312, + 0.01685601, + 0.015184137, + -0.0039273747, + -0.015904171, + 0.013306926, + 0.003270806, + -0.003112624, + 0.015502476, + 0.0128690535, + 0.026035232, + 0.0069733867, + -0.0012709346, + 0.01779661, + 0.014128588, + 0.008355636, + 0.017721467, + -0.032423608, + 0.0040111355, + -0.109767415, + 0.01800147, + 0.011355999, + 0.01732263, + 0.011371235, + 0.0065964838, + 0.012508826, + 0.00875898, + -0.009659394, + -0.011641472, + 0.008994596, + -0.000541746, + -0.019262038, + 0.02257225, + 0.0037666305, + 0.1759314, + -0.011083732, + -0.011096129, + -0.0021755132, + 0.03005365, + -0.009839315, + -0.009082269, + -0.0021492261, + -0.011667841, + -0.0009459134, + 0.011013641, + -0.013615024, + 0.014298762, + -0.016583417, + 0.009037499, + 0.009999642, + -0.0069480594, + -0.015509829, + -0.036029406, + 0.012574708, + 0.012039721, + -0.01139339, + 0.028019309, + -0.011415676, + 0.019461382, + 0.02094867, + 0.0066629616, + -0.014232094, + -0.0019316599, + -0.0026851152, + 0.0018528218, + 0.011884893, + 0.023531225, + 0.026506547, + 0.019548418, + -0.026613288, + -0.058991373, + 0.013974939, + 0.041930024, + 0.015625289, + -0.0026592927, + -0.0022334908, + -0.035503462, + -0.0068886676, + 0.016730804, + -0.013184282, + -0.0054780557, + 0.006730944, + 0.011812617, + -0.0023940308, + 0.0040142424, + 0.017965924, + 0.006230427, + -0.012023672, + 0.01193248, + -0.00480636, + 0.013578558, + -0.01014002, + 0.002607888, + -0.023075152, + -0.020938518, + -0.006875862, + -0.010944789, + 0.0016648102, + -0.02866273, + -0.0062460005, + -0.0041332464, + -0.002419293, + -0.009879285, + -0.0011643772, + -0.011210249, + -0.0059280577, + 0.04624401, + 0.011034667, + -0.033948317, + 0.010635842, + -0.015743993, + -0.004884986, + 0.022342958, + -0.0046785534, + 0.012329268, + -0.0035886692, + 0.008836355, + 0.0012729478, + -0.0025380596, + 0.008947849, + -0.011649148, + -0.008452644, + -0.018643655, + 0.009240796, + -0.006998141, + 0.013581855, + 0.020466326, + 0.015995642, + 0.0047566146, + -0.009059944, + -0.0230155, + -0.00568377, + -0.006553409, + 0.00095187046, + 0.023107348, + -0.0033433698, + 0.004151198, + 0.008758634, + 0.005522271, + 0.00074491353, + 0.010456838, + 0.0018540412, + -0.0056753014, + 0.015488553, + -0.008577112, + 0.0073200883, + 0.029729836, + -0.0003803152, + -0.0075514945, + 0.011939851, + 0.013535546, + 0.01551645, + 0.0005487665, + 0.0015498119, + -0.0013686672, + -0.015682774, + -0.0006655467, + -0.018248186, + 0.007391832, + 0.031391453, + -0.008657709, + 0.007814712, + -0.0041959696, + -8.9730056e-05, + 0.00862867, + -0.013247852, + -0.00359875, + 0.0033425884, + -0.010817053, + -0.0024565854, + -0.0025616894, + 0.0063345213, + -0.018881122, + -0.0028153076, + -0.004178576, + 0.013227916, + -0.0009714555, + -0.003745339, + -0.0040984172, + 0.021268869, + -0.0036756753, + 0.0042561297, + 0.0073148203, + 0.020137565, + -0.020034134, + -0.0027910324, + -0.009887379, + -0.0074726143, + -0.0019888817, + 0.0076818876, + -3.5185767e-05, + -0.01259977, + 0.016189603, + -0.0033148054, + -0.0054394347, + -0.0130495, + 0.007845817, + -0.017973112, + -0.0072650826, + -0.0025931138, + -0.0111553725, + 0.009376972, + -0.0047410955, + 0.009441436, + 0.009923029, + -0.019664193, + 0.0036295184, + 0.012965504, + 0.0053555537, + -0.0067654955, + -0.028558359, + 0.013580956, + -0.0048293252, + 0.0029994557, + -0.0037350308, + 0.013576812, + -0.018575467, + 0.0013208555, + -0.010166264, + -0.005391491, + 0.0026590673, + -0.0019632545, + -0.018207865, + 0.015604931, + 0.01269651, + -0.014232606, + 0.015538605, + 0.011077022, + 0.011468066, + -2.5617703e-05, + -0.0059816977, + -0.0040265643, + -0.0095618, + 0.0059205433, + -0.004717566, + -0.0065576807, + -0.006179225, + -0.00048346032, + -0.0022051877, + 0.0038358844, + 0.0127531765, + -0.0022487887, + -0.0024102605, + 0.0039293002, + 0.006930553, + 0.023766395, + 0.012744543, + -0.008747719, + 0.00082147325, + -0.010755195, + -0.0101795355, + 0.025872659, + -0.010253086, + 0.0015751722, + 0.007285309, + -0.007482195, + 0.001578618, + -0.008217535, + 0.0019503374, + -2.9443578e-05, + 0.0016160882, + 0.013071392, + 0.00736983, + 0.012191658, + 0.00044877562, + 0.007949159, + -0.006756194, + 0.008867985, + 0.002330643, + 0.002464825, + 0.011418792, + 0.007812943, + 0.017862773, + -0.018558832, + 0.010283134, + 0.008645683, + 0.01330512, + -0.027024375, + -0.008063128, + 0.0077728815, + 0.0023448921, + -0.0019505746, + -0.021876818, + 0.0040953932, + -0.0021006765, + -0.0030211697, + 0.006367454, + 0.022272265, + 0.017458457, + -0.0072665988, + 0.012167716, + -0.003225298, + 0.0009803289, + -0.0038456817, + -0.005121437, + -0.011292835, + -0.0024890837, + -0.022529177, + -0.002943297, + 0.0054065115, + 0.016208753, + 0.0078538, + -0.006325404, + 0.0033352273, + 0.0032606563, + 0.0022635972, + 0.0058103786, + 0.0047208755, + -0.0010763096, + 0.0019977016, + 0.011211282, + 0.012099789, + 0.0058530592, + -0.0079528745, + -0.0022821457, + -0.015429311, + 0.002091637, + -0.012202914, + -0.005769598, + -4.9549937e-05, + -0.019219175, + -0.016427452, + -0.0124934, + 0.011391695, + 0.008626614, + 0.0038711757, + 0.008935884, + 0.005755672, + 0.0038448959, + 0.10203414, + -0.00491466, + 0.01911876, + -0.004106837, + -0.0031110372, + 0.00083937496, + -0.014227256, + 0.0070216944, + 0.019370308, + -0.015442503, + -0.012127851, + -0.003917447, + 0.0031005864, + -0.017422454, + 0.006015996, + 0.0040558344, + -6.778924e-05, + -0.010797539, + 0.018605713, + 0.0050685722, + -0.0026278528, + -0.00270912, + -0.013774137, + 0.0020730842, + 0.00738008, + -0.008515877, + -0.007146094, + -0.001406558, + -0.001264173, + 0.007721611, + 0.001030842, + 0.0016861404, + -0.0034692846, + 0.0007273634, + -0.013399225, + -0.020340467, + -0.0062097055, + 0.0073292735, + 0.026675716, + 0.00955875, + 0.015377012, + -0.009985699, + -0.005048428, + 0.00832004, + -0.0025997728, + 0.0018225466, + -0.017975392, + -0.0011290255, + -0.0060312785, + -0.0015739857, + 0.009935285, + 0.0049610613, + 0.0048964336, + -0.010850079, + -0.029929858, + -0.020901177, + 0.013625098, + -0.008362455, + 0.012223114, + -0.00550919, + -0.0056522265, + 0.0044907844, + 0.007421419, + 0.002716557, + 0.0025252753, + -0.017997548, + 0.0006915558, + 0.0025770622, + -0.013855779, + -0.012460083, + -0.0137106925, + 0.027582813, + -0.00047286818, + 0.014739756, + 0.04005512, + 0.016134534, + -0.013676932, + -0.0013754886, + -0.0072753164, + -0.0053872326, + 0.010810851, + -0.0044695656, + -0.0054093376, + -0.011447949, + -0.0034802065, + 0.00886274, + 0.0024936812, + -0.0016941471, + -0.0046303063, + -0.005115387, + 0.011388673, + -0.002602833, + 0.0015605927, + 0.0076540667, + 0.01495087, + 0.014479292, + 0.13426869, + -0.010343856, + -0.013991341, + -0.010159898, + -0.025989842, + -0.005845415, + 0.011808049, + 0.0009514725, + -0.008544427, + 0.008789091, + -0.0019632503, + 0.0074643474, + 0.009040342, + -0.0014615289, + -0.009654081, + -0.0045177573, + -0.004699992, + -0.0039853775, + -0.012154477, + 0.0049168468, + 0.016103074, + -0.0029735023, + -0.0032849067, + -0.011890683, + 0.023391783, + 0.001115073, + -0.007976776, + 0.0028829123, + -0.013872473, + 0.010126067, + 0.0038869805, + -0.005223845, + 0.0144363735, + -0.012691636, + 0.0033915986, + -0.0026844176, + 0.013726618, + 0.0050477516, + 0.008253508, + -0.008230563, + 0.009430952, + 0.009419306, + 0.009602341, + -0.006817221, + -0.011411092, + -5.3084113e-05, + -0.0051366547, + 0.025701798, + 0.0050504627, + 0.001863422, + -0.007653452, + -0.011191641, + 0.0018513721, + -0.005511763, + -0.003843674, + -0.014216934, + 0.007948217, + 0.010417587, + 0.0003743493, + -0.020185111, + 0.020256234, + 0.001604993, + 0.0050220755, + 0.0044933474, + 0.001094293, + -0.0070919646, + -0.004933035, + -0.014843117, + 0.0037880135, + -0.0016433855, + -0.0015997805, + 0.012379244, + -0.005374086, + -0.008613257, + -0.00308308, + 0.012005496, + 0.01219479, + 0.027671035, + 0.01966535, + 0.018461045, + 0.00016139045, + -0.01710834, + -0.0061272453, + -0.0009167629, + -0.0009247159, + -0.0041763783, + -0.0069067464, + 0.0269922, + 0.0013090636, + -0.009669332, + 0.02541561, + 0.0026287434, + 0.00438516, + 0.008517329, + -0.010393998, + -0.0006080028, + 0.0013368356, + -0.0067964206, + 0.006055294, + -0.0018739895, + 0.011661225, + 0.0006691963, + 0.0063973363, + 0.0052031865, + 0.0056542293, + -0.005343611, + -0.002528273, + -0.0099809095, + -0.0089971805, + -0.005067785, + -0.0045591523, + -0.001206469, + 0.004514228, + -0.015323275, + -0.0030214747, + -0.010772925, + 0.013496088, + 0.0002321004, + -0.008330514, + 0.0006543195, + -0.008927259, + -0.007080007, + -0.017847273, + -0.007852169, + 0.004867326, + 0.02114902, + 0.004206768, + 0.02426388, + 0.0031347352, + -0.012892525, + -0.0136010805, + -0.0021259983, + 0.0053054765, + -0.013394673, + -0.003549579, + 0.00056906993, + 0.0029023157, + 0.0055223512, + -0.03244142, + -0.0059293862, + 0.012482649, + -0.0053719017, + -0.0056271334, + 0.004663817, + 0.0038268266, + 0.009113935, + 0.012919591, + 0.010335849, + 0.019291041, + -0.027955465, + 0.0175151, + 0.002201153, + -0.018746039, + -0.0025196732, + -0.0060254936, + -0.0046358444, + -0.0043030255, + -0.0071517783, + 0.001981071, + -0.006623821, + 0.0062295506, + -0.06752047, + -0.0013635798, + -0.0082442155, + 0.010408489, + 0.0027342502, + -0.01580649, + 0.00072810904, + -0.00639373, + 0.0013875354, + 0.023504796, + -0.003944722, + -0.005825697, + 0.0039608637, + 0.00616855, + 0.01160933, + 0.0038453587, + -0.0030675516, + 0.016232373, + 0.0067002834, + -0.010276981, + -0.007333522, + -0.011839703, + -0.0075594834, + 0.011761927, + -0.0044737575, + 0.016663749, + -0.0012487443, + 0.015731106, + -0.018402008, + -0.0183839, + 0.0026329358, + 0.0011446407, + 0.013813632, + 0.0098859025, + 0.006023755, + -0.009067822, + 0.008725908, + -0.0130427135, + -0.018925047, + 0.0014232913, + 0.018175516, + -0.0026799976, + -0.008415098, + -0.006190411, + -0.015069961, + -0.012387894, + 0.014828759, + 0.003389344, + 0.006926882, + -0.007365336, + 0.00039667886, + -3.3663047e-05, + -0.014900065, + -0.003231955, + 0.011181726, + 0.005845175, + 0.018248007, + 0.0013438802, + 0.0020612935, + -0.013579148, + 0.027580371, + 0.017224563, + -0.0069170427, + 0.0012293892, + -0.013908563, + 0.009362261, + -4.4852834e-05, + 0.011255446, + 0.007963492, + 0.00599945, + 0.0085712075, + 0.017237164, + 0.0048445994, + -0.014030399, + -0.00011396099, + -0.0034294438, + 0.014459115, + -0.0043620956, + -0.0030048848, + -0.010300076, + 0.0048096916, + -0.0014136425, + 0.005238761, + 0.0006934089, + 0.011712095, + -0.02344152, + -0.0034592242, + -0.0012979321, + -0.0008097194, + 0.00024911689, + -0.008433209, + 0.01945377, + 0.0038686616, + 0.0073846136, + -0.0018593392, + -0.010089531, + -0.020803986, + 0.0017015274, + 0.01011945, + -0.005920297, + 0.00075382984, + -0.013361308, + -0.010457353, + 0.003709525, + -0.0020410046, + 0.009095445, + 0.0057571135, + 0.0073872292, + 0.0074922987, + 0.0042305817, + 0.0046910136, + 0.011337975, + 0.010771098, + 0.0055035288, + -0.0024431818, + -0.0034784204, + 0.0019023293, + 0.00074378995, + -0.0021880115, + -0.02343962, + -0.0045665954, + 0.004842072, + -0.007769299, + -0.01107295, + 0.01570419, + -0.011471096, + 0.0028621554, + -0.011788264, + 0.0024176063, + -0.0067343414, + 0.0036415146, + 0.009940857, + 0.010515336, + 0.0153192775, + -0.0055591646, + -0.0011023014, + 0.008124838, + 0.021870963, + -0.020843172, + -0.0076007135, + 0.019367531, + -0.016218679, + -0.00038258635, + -0.0008830315, + 0.00040922983, + 0.009032848, + -0.014394465, + 0.015315479, + -0.0048474, + 0.005155119, + -0.011130397, + -0.01709991, + 0.01525269, + 0.025027033, + -0.010582375, + -0.013208439, + -0.0022990992, + 0.013619277, + -0.0012467117, + -0.00423292, + 0.017739438, + 0.012879134, + 0.012289041, + -0.0028026896, + 0.0018197205, + -0.005789294, + -0.0013462343, + -0.0140815005, + 0.007697268, + -0.0073407823, + 0.015746001, + -0.014494718, + 0.002227598, + 0.0058589512, + -0.008022744, + 0.00032994995, + 0.016861351, + 0.007746557, + 0.0012076213, + -0.0014928118, + -0.027859742, + -0.007508688, + -0.0062162927, + 0.008185115, + -0.011211574, + -0.030456275, + -0.006595851, + -0.0043915994, + -0.004560805, + 0.0021029217, + -0.005901756, + -0.010120026, + 0.003870392, + -0.0065757125, + 0.007439931, + -0.007206456, + 0.009306462, + -0.011222527, + 0.0038380732, + 0.0041258056, + 0.0036614554, + 0.008943188, + 0.004447874, + 0.012172903, + -0.0027927645, + -0.10990407, + -0.0107053425, + -0.010982829, + 0.00026859544, + -0.011364037, + 0.002107165, + 0.0027699512, + -0.009688038, + 0.005025573, + -0.0030257965, + -0.029507438, + -0.010607273, + 0.0036587769, + -0.052284706, + 0.005750383, + 0.013304516, + 0.0056821113, + -0.00055684504, + -0.0124841295, + -0.014194956, + -0.009881316, + -0.004730288, + -0.010770149, + -0.003442465, + 0.0002029708, + -0.0048261397, + -0.009385183, + 0.013682417, + 0.0036431835, + -0.0036617871, + 0.0033700669, + -0.012511542, + -0.0040065665, + -0.00039073988, + -0.0001645874, + 0.0023828647, + -0.0035815707, + -0.02277364, + -0.13885239, + 0.0048258253, + -0.016727017, + -0.0035861162, + -0.0004357154, + 0.0076328944, + 0.0015466264, + 0.004704767, + 0.014394146, + 0.003662711, + -0.017604215, + -0.0095090605, + -0.010775129, + -0.020340193, + -0.006387117, + 0.008352139, + -0.008710415, + 0.012402521, + -0.0185954, + -0.00034902617, + -0.0139139695, + -0.00696644, + 0.0021379532, + 0.006596915, + -0.00443882, + 0.0092429025, + 0.008517412, + 0.016136743, + 0.011851472, + 0.0055892696, + 0.006454984, + -0.002844811, + 0.004111174, + -0.015119909, + 0.00046974185, + -0.008508248, + -0.0036962251, + 0.011149122, + -0.011589812, + 0.0005875099, + -0.0041049854, + -0.004684072, + -0.011526992, + 0.0011532112, + 0.0058752815, + 0.012508175, + 0.02132431, + 0.0082033025, + -0.010449682, + 0.013685048, + -0.005249225, + 0.007403782, + -0.00350363, + -0.00760309, + 0.0005340016, + 0.00059681403, + -0.0072446917, + 0.019734096, + 0.0081668, + -0.0026972305, + 0.011692245, + -0.016342698, + -0.0129035795, + -0.008587365, + 0.0061726817, + -0.011630305, + 0.0046947543, + 0.019354332, + -0.004189159, + 0.0331135, + 0.013813115, + 0.012493036, + -0.009233703, + 0.004784202, + 0.0072427946, + -0.0073105106, + -0.009735168, + 0.013644838, + 0.0047425316, + -0.011731725, + 0.020365646, + 0.00358893, + -0.0042011817, + 0.00843774, + 0.0004130545, + -0.004626026, + 0.01563459, + 0.017539307, + 0.0061307596, + -0.036535047, + 0.002856945, + 0.0010879508, + 0.006720774, + 0.011432691, + 0.0011208986, + -0.0014615881, + 0.0025266362, + 0.0029062033, + -0.0012071481, + -0.03364649, + 0.017724605, + 0.007882852, + -0.0008947685, + -0.0055972124, + 0.0043411045, + 0.0059209466, + -0.024726767, + 0.0022163335, + 0.017410137, + -0.012331643, + 0.00093629386, + 0.010155606, + 0.0071074655, + 0.017148903, + 0.0069656046, + -0.008216308, + -0.016422855, + -0.01051236, + 0.002277297, + 0.008514118, + -0.01104895, + 0.006501589, + -0.008281461, + -0.016874673, + -0.009701664, + -0.00534877, + -0.00083992106, + 0.008316926, + -0.011451599, + -0.009497453, + -0.0015088908, + 0.03155688, + 0.001647142, + 0.0062776566, + 0.014497768, + 0.0049836687, + 0.009408785, + -0.008823924, + -0.0006205365, + 0.017113376, + 0.026770512, + -0.02324921, + 0.005502053, + 0.016133603, + -0.01073965, + 0.01119444, + -0.005914867, + 0.0073784553, + 0.029522652, + 0.037033953, + -0.01011684, + -0.018632608, + 0.0071946904, + 0.0072457413, + 0.012746859, + -0.007071921, + 0.0008394189, + -5.1466977e-05, + -0.009039916, + -0.00839706, + -0.013037034, + -0.010557386, + 0.0042593433, + -0.010780316, + -0.020731559, + 0.0055720196, + -0.0074543073, + 0.021371728, + -0.012882052, + 0.020496717, + 0.011643548, + -0.009634179, + -0.00092866144, + 0.00483516, + -0.0083142165, + -0.021085694, + -0.010626112, + 0.006075356, + 0.0050198976, + 0.00070266397, + -0.014482145, + -0.013829435, + 0.024985164, + -0.0059741247, + -0.017689096, + 0.011286558, + 0.011150053, + 0.0019929903, + 0.010271928, + 0.004388811, + 0.0037919895, + 0.01137747, + 0.011752597, + 0.008246966, + -0.016166897, + -0.00929031, + 0.0016504466, + 0.003116734, + 0.016833946, + 0.008572729, + 0.011849296, + 0.004536235, + -0.0149264615, + -0.1220818, + -0.0068386863, + -0.011979482, + -0.0007432419, + 0.004312895, + 0.005471731, + -0.0030712036, + 0.0043197353, + 0.0010173935, + -0.0041594156, + -0.023357423, + -0.011802607, + -0.009341089, + 0.00080977683, + 0.006396491, + 0.007133644, + 0.009445247, + 0.0046809516, + -0.017313533, + -0.014050897, + -0.008909982, + 0.001399032, + 0.0005823391, + -0.0037739954, + -0.008802786, + -0.010101861, + 0.0005422452, + -0.0026704257, + -0.025089346, + -0.0015616232, + -0.00573369, + 0.009899661, + -0.011831669, + -0.0069454764, + -0.0136666875, + -0.004289939, + -0.0090006525, + 0.008795462, + -0.029714026, + -0.0105763795, + 0.0218584, + 0.009998341, + -0.011087116, + -0.0026374902, + -0.0047321855, + 0.014291109, + -0.018461676, + -0.0038414346, + -0.037691638, + -0.020409081, + 0.016592087, + 0.01226431, + -0.005693988, + -0.025787413, + -0.016990053, + -0.02508468, + 0.012653639, + -0.006535383, + -0.003179042, + 0.017017324, + -0.005512723, + -0.031306356, + -0.006355945, + 0.00906425, + 0.017586047, + 0.008144389, + -0.005161437, + 0.16480307, + -0.011086962, + 0.0038255285, + -0.0034155461, + -0.0022244893, + 0.0069111395, + 0.004945085, + -0.0015480005, + -0.019974647, + -0.017162047, + -0.011386591, + -0.0007254434, + -0.018195067, + -0.018254226, + 0.004978872, + 0.018840728, + 0.0018573047, + -0.004953671, + 0.014272468, + -0.0044418764, + -0.0054419185, + 0.005396661, + -0.0010648494, + -0.008385663, + 0.009492778, + -0.0036053853, + -0.007359148, + 0.0106931, + 0.019590788, + -0.011659043, + 0.005892998, + -0.010862912, + -0.022831047, + -0.004673795, + 0.00824299, + -0.0008459908, + -0.0014790132, + 0.012803555, + -0.0010869586, + 0.01929423, + 0.013099115, + 0.0041837185, + 0.0030553467, + -0.014001589, + -0.006455516, + -0.010406346, + -0.0104905525, + 0.0002410486, + -0.008702263, + 0.002118317, + -0.012232092, + 0.006574767, + -0.012062212, + -0.015584312, + -0.0021630656, + -0.011257759, + 0.011374717, + 0.007447821, + 0.0003595476, + 0.01140418, + -0.011829871, + 0.009773827, + 0.012263084, + 0.005297637, + -0.018520074, + 0.016378839, + -0.012936623, + -0.014232741, + 0.0042014606, + -0.14913663, + 0.012867319, + -0.00017956202, + -0.008277805, + -0.0124453865, + -0.020673662, + 0.015406676, + -0.020010436, + 0.00090116076, + -0.016393082, + -0.0041900394, + -0.0045637037, + 0.009775279, + 0.01950372, + -0.0068366355, + -0.012744289, + 0.016504377, + -0.0025944575, + 0.02002585, + 0.0081843035, + -0.0054818345, + 0.0037938312, + -0.021376, + -0.0149891535, + 0.006775467, + -0.002768766, + -0.022120709, + -0.0034067237, + -0.021241143, + 0.011849072, + -0.0086819185, + -0.00019697235, + -0.013666072, + 0.007943947, + 0.007627519, + 0.003599772, + -0.0076106023, + -0.0044981325, + 0.028816868, + -0.008739917, + 0.0072553093, + -0.0105119115, + 0.00381464, + 0.008035421, + 0.007950661, + 0.00068530365, + -0.009898741, + 0.0030974487, + 0.0141418995, + 0.009554195, + 0.006857026, + -0.0071131284, + -0.009802578, + -0.0040713213, + -0.021320116, + 0.019067012, + -0.0031912646, + -0.020890824, + 0.0057409694, + -0.0062651252, + -0.0060876664, + 0.012849065, + 0.0015726165, + -0.0061818906, + -0.010648872, + -0.0035371082, + 0.018041143, + -0.018159835, + 0.013423874, + 0.01530546, + 0.0008696444, + 0.01569375, + -0.0018156114, + -0.007845879, + -0.012982294, + 0.0018712338, + 0.0077399565, + 0.0014243987, + 0.01192824, + 0.014510453, + 0.0034112479, + 0.0016788311, + -0.009293432, + -0.007831967, + 0.024831, + -0.028713739, + -0.0032460599, + -0.022919618, + 0.008364606, + -0.00040217765, + 0.010126134, + 0.004853389, + 0.000106981985, + 0.0019262509, + 0.018024819, + -0.008974372, + -0.00042362008, + -0.009336357, + -0.013317186, + -0.0060473504, + 0.00867207, + -0.017213084, + -0.017611237, + -0.0037938196, + 0.009825168, + 0.004368983, + -0.01300473, + -0.008491524, + 0.032759387, + -0.0075073806, + 0.0042075575, + 0.0016422486, + -0.0041655507, + 0.012251472, + -0.02027894, + 0.0050726263, + -0.003914977, + -0.013095536, + 0.016692141, + -0.013846502, + 0.016801504, + -0.020000007, + 0.015780196, + 0.0029369884, + -0.0020020218, + 0.0158049, + -0.010142994, + -0.004979061, + 0.021189557, + -0.0005056278, + 0.014088399, + 0.0126800705, + -0.01594135, + -0.0011783603, + 0.015942859, + -0.001983587, + -0.0009188087, + 0.0038366695, + 0.027170043, + -0.005473774, + -0.00013074857, + 0.011682235, + 0.0078046597, + 0.0035562874, + 0.0022400073, + 0.012886119, + 0.0033455084, + 0.03412586, + -0.0035939931, + -0.019804811, + -0.001450045, + -0.013857072, + -0.01416591, + 0.019854646, + 0.013035945, + -0.004093718, + 0.0048802774, + 0.0053989785, + -0.023377517, + 0.013081268, + -0.020780435, + 0.013658499, + 0.005340897, + 0.00040710345, + 0.02445704, + -0.0033317, + -0.0125199575, + -0.021833785, + -0.018849034, + -0.029079506, + 0.0004898928, + 0.016391948, + 0.003809064, + -0.0039156214, + -0.010828612, + 0.010330856, + 0.008464947, + -0.0037880877, + -0.0057999217, + -0.07140847, + 0.01006003, + -0.0041445307, + 0.008266761, + -0.005311985, + -0.032335926, + 0.018721372, + 0.021439493, + -0.011798922, + -0.0029923597, + 0.01142312, + 0.011968102, + -0.03294722, + -0.015946968, + 0.009894799, + 0.006825522, + 0.0053546745, + -0.010055941, + 0.0052234195, + -0.010754163, + -0.003336235, + 0.012318369, + -0.017908657, + 0.0074471557, + -0.0114097, + -0.013081481, + 0.005639167, + 0.015740372, + 0.0063889986, + -0.014047661, + 0.009938355, + -0.028224077, + 0.01929915, + -0.01289041, + 0.0049364334, + -0.0015290666, + -0.004122525, + -0.025276305, + 0.012094333, + -0.06281338, + 0.0022735957, + -0.0074202325, + -0.14804429, + -0.011656587, + 0.010275289, + 0.0047942866, + -0.0005372271, + 0.0021211687, + -0.01737935, + 0.013022131, + 0.015445521, + -0.01059692, + -0.008912527, + 0.0017534903, + 0.00090704864, + 0.00051959534, + 0.007003877, + 0.010791395, + -0.0060087964, + -0.008744861, + -0.022330513, + 0.0028605298, + -0.010039402, + 0.0030042864, + 0.014352637, + 0.020213809, + -0.017128328, + 0.0004655207, + 0.019608269, + -0.0030722257, + 0.0057702, + -0.020816311, + 0.0004141264, + 0.015269294, + -0.012568678, + 0.008418415, + -0.00774437, + 0.012524267, + 0.015127165, + -0.00874009, + 0.003379087, + 0.0023810486, + -0.011831773, + 0.039992522, + 0.0051277997, + -0.024159433, + 0.007607922, + -0.12491869, + -0.00013385944, + 0.009971255, + 0.005127408, + -0.0008208937, + -0.010099312, + 0.014101599, + 0.15716882, + -0.011877222, + -0.030268941, + 0.0025665218, + 0.015236212, + -0.011099543, + 0.0019087215, + 0.007858789, + -0.0013265446, + 0.0014010714, + 0.007899191, + 0.032752316, + -0.0015167505, + -0.011594652, + -0.014391309, + 0.0013123996, + 0.00096725096, + 0.003517934, + -0.06024647, + -0.025745634, + -0.0056977593, + 0.010264575, + 0.009080434, + 0.0075298874, + -0.001963013, + -0.0061908956, + -0.0016231594, + -0.0065720626, + -0.008558385, + 0.010461489, + -0.022846729, + -0.0046567367, + 0.013467769, + 0.0049480903, + -0.016364824, + 0.00078728306, + 0.0036025462, + 0.0034704458, + -0.006989038, + -0.006119407, + 0.0027509741, + 0.008926168, + -0.008440965, + 0.014381893, + 0.0019435926, + 0.006236396, + 0.008456362, + -0.015502054, + -0.008109879, + 0.014042967, + -0.00610464, + 0.022108994, + -2.0368116e-05, + -0.011896909, + -0.011214614, + 0.015859647, + 0.014304203, + 0.002503301, + -0.005781656, + -0.018216772, + -0.005107332, + -0.023427503, + 0.012870557, + 0.008733462, + 0.003869639, + 0.007122562, + -0.00028245733, + -0.0012370315, + 0.007976467, + -0.0030053032, + -0.0003862554, + -0.009594697, + 0.004214132, + 0.015323344, + 0.0140319085, + -0.016783018, + 0.0040569003, + 0.0031370998, + 0.01255547, + 0.0081010945, + 0.004597608, + 0.014653819, + -0.010881919, + -0.0027400048, + 0.0029309564, + 0.015940081, + -0.010488371, + 0.010026694, + -0.00024988048, + -0.0018306287, + 0.011608754, + -0.006279168, + 0.005099627, + -0.0020300054, + 0.0025540227, + 0.020975113, + -0.0021214988, + -0.007980166, + -0.0020032811, + 0.001919213, + 0.015866177, + 0.0053089214, + 0.0011500912, + -0.037153643, + -0.007162554, + 0.005038172, + -0.0003459101, + -0.00029811554, + -0.0060949815, + 0.0067296852, + -0.0049952613, + -0.0045913495, + -0.0018282357, + -0.0128674125, + -0.0205871, + 3.29984e-05, + -0.027009554, + -0.008523808, + -0.0036094482, + -0.009514507, + -0.0027317356, + -0.000534841, + -0.00642137, + -0.00949954, + -0.0016902136, + 0.0042186053, + -0.0060009253, + 0.008955231, + 0.0042616385, + 0.0035597195, + 0.024822535, + 0.0038701766, + 0.009247778, + -0.0056363917, + -0.03028555, + -0.012261454, + 0.004808264, + 0.0034534174, + -0.008438677, + 0.022703392, + -0.010286755, + -0.0029985486, + -0.002029844, + 0.012189361, + 0.0022201708, + 0.024444278, + 0.008692711, + 0.00033321802, + -0.006918189, + -0.009906663, + -0.021065399, + 0.0017365889, + 0.0038714383, + -0.01146002, + -0.005695929, + 0.0136236455, + -0.012383124, + 0.0049548266, + -0.0019298265, + -0.009133705, + 0.0037257236, + -0.0034859076, + -0.009674609, + 0.0028380465, + -0.008408325, + -0.014348723, + -0.013032569, + 0.023641769, + -0.013026533, + -0.008958854, + 0.0086282, + 0.0011653292, + -0.00012710429, + 0.023304516, + 0.007536961, + -0.016121544, + 0.013512596, + 0.016179657, + 0.002764801, + 0.0055803484, + -0.008541389, + 0.014519642, + 0.013343512, + 0.025049152, + -0.020564495, + 0.0048943223, + -0.02374938, + 0.013459238, + -0.012726988, + 0.005789575, + 0.013163915, + 0.004431687, + -0.0029504322, + 0.0060082343, + -0.0016516849, + -0.011800513, + -0.029592216, + -0.013557013, + -0.013295235, + -0.030126525, + -0.0056508062, + -0.0023563, + -0.009020173, + -0.002678054, + -0.017446466, + -0.0094066225, + 0.00041972683, + -0.025415294, + 0.007893892, + 0.007615552, + 0.014444293, + -0.0055864854, + 0.007341343, + 0.0074760746, + 0.007633242, + 0.015048061, + 0.015688792, + -0.0055214004, + 0.0023507455, + -0.024353081, + -0.0023434556, + 0.014327491, + 0.0030884864, + -0.013537927, + 0.00884923, + -0.008928762, + -0.0040857736, + 0.009974, + 0.012013531, + -0.008256043, + 0.0064773154, + -0.0023738826, + 0.001223818, + -0.0068574455, + -0.00012896747, + -0.024541218, + 0.009534192, + 0.0042668683, + -0.02659646, + 0.0009719781, + -0.007945843, + 0.008536529, + 0.0022086427, + -0.0073247547, + 0.025194552, + -0.0019298686, + 0.002036343, + -0.017242644, + -0.015562206, + 0.0016967627, + 0.008603264, + 0.0029286486, + -0.003824279, + 0.013932157, + 0.00973954, + -0.012137794, + -0.003032404, + -0.019269783, + -0.009771541, + -0.0007226373, + 0.02475148, + 0.0141635435, + 0.007586969, + -0.016065214, + 0.0049573043, + -0.012032935, + -0.021324394, + 0.009315734, + 0.0064129615, + 0.00014927378, + 0.008744266, + 0.012062963, + -0.006985634, + 0.008508218, + -0.011440213, + 0.00964045, + 0.01133469, + 0.00032885643, + -0.0045522386, + -0.00053115684, + -0.020326342, + 0.021684296, + 0.0116345035, + -0.0022538928, + 0.0088677835, + 0.014596996, + -0.019113265, + 0.014480809, + 0.0007274648, + -0.01183125, + -0.011485111, + 0.007765621, + -0.0020268657, + -0.0075831646, + 0.0022482022, + -0.023872044, + 0.00085110904, + 0.014016346, + -0.0069766473, + 0.012382482, + -0.0087001575, + 0.009347098, + 0.01530687, + -0.021898897, + 0.017915156, + 0.011825634, + 0.0032218006, + -0.014515737, + 0.009235042, + 0.005054707, + -0.00023745962, + -0.004250935, + -0.009820677, + -0.013538797, + -0.0012116351, + -0.0017041988, + -0.01726087, + -0.008089675, + 0.0031626658, + -0.00048189415, + 0.0014024241, + 0.01950393, + 0.015587983, + 0.011090538, + -0.0016524532, + 0.0005236974, + -0.0058108545, + 0.004716844, + -0.02033461, + -0.0009877229, + 0.018212706, + -0.0093770325, + 0.003982428, + -0.00014444556, + 0.0062729325, + 0.014332167, + -0.0040719965, + -0.0061802776, + 0.020435235, + 0.011924934, + 0.00204727, + 0.01323204, + 0.002210462, + -0.009072813, + 0.0107627595, + 0.0007087078, + 0.008023027, + 0.017904492, + 0.0017127544, + 0.02589081, + 0.0038643256, + -0.02423307, + -0.00029195778, + 0.007995035, + -0.00452324, + -0.004220507, + -0.014414159, + -0.0031739096, + -0.010584775, + 0.0058303205, + -0.001338251, + 0.003273328, + -0.008009112, + -0.01257899, + 0.012357312, + -0.002497284, + -0.0009386429, + 0.012057635, + 0.0038349011, + 0.0038896233, + 0.0023437173, + -0.009286228, + -0.012549473, + 0.0029719395, + -0.007542319, + -0.0027664232, + -0.0067998264, + -0.021942759, + 0.002787046, + -0.01490971, + 0.009879314, + -0.0096436925, + -0.00020947852, + -0.020315733, + -0.00096788775, + -0.009413338, + -0.009304855, + -0.012167087, + 0.0020818643, + -0.0065099327, + -0.00909283, + 0.012888071, + 0.023298446, + 0.0064363447, + -0.013862118, + 0.0060772416, + -0.01475394, + 0.0044472455, + 0.017185934, + 0.019436602, + 0.009869137, + 0.018604781, + 0.025304424, + -0.010937892, + -0.002263634, + -0.0007122261, + -0.014629204, + 0.0034150542, + 0.019551098, + -0.008361577, + 0.0070153293, + -0.0011046828, + 0.015581956, + -0.0020440167, + -0.017529536, + 0.007713052, + 0.019167863, + 0.00826607, + -0.0058899964, + 0.020170985, + 0.0047977166, + 0.02247314, + -0.004310414, + -0.0007319175, + -0.016704394, + -0.007411759, + -0.0018499614, + -0.039994832, + 0.013458039, + -0.012305411, + 0.010976608, + -0.007559491, + -0.0075970194, + -0.00020227736, + 0.003145673, + 0.0058201402, + 0.0036488434, + 0.019020593, + -0.015467047, + -0.0036180092, + 0.019398516, + -0.0025742245, + 0.0028556206, + 0.0031409739, + -0.031577792, + -0.0050074644, + 0.007063734, + -0.020470826, + -0.033115704, + 0.009944245, + 0.004177662, + 0.024237374, + -0.0019437312, + -0.00014068873, + -0.002508166, + 0.01317239, + 0.008986462, + -0.010209303, + -0.007866712, + -0.020596353, + 5.369359e-06, + -0.0078058653, + -0.0012830403, + -0.044026587, + -0.005174016, + -0.03564344, + 0.0070926305, + -0.0019275427, + 0.0009810884, + -0.016606791, + 0.0074037476, + 0.0030123368, + -0.06546688, + 0.0034776453, + 0.011120295, + 0.01001797, + 0.019042116, + 0.008829632, + 0.0069338735, + -0.001874668, + -0.011883109, + -0.012681935, + -0.0067498176, + -0.014146643, + 0.014275228, + 0.0014637288, + -0.005445066, + -0.023291945, + -0.0005322656, + 0.0022733167, + 0.014369217, + -0.0020721909, + 0.006157031, + -0.008283586, + -0.0047913403, + 0.02477168, + 0.003429128, + -0.008460797, + -0.020280162, + 0.019304782, + -0.019682132, + 0.003928251, + -0.017428666, + -0.017602952, + -0.0022491468, + -0.0036273727, + -0.016352264, + 0.0048243003, + -0.000685208, + 0.012863391, + -0.014002882, + -0.006907873, + -0.009265254, + 0.006359435, + 0.010224605, + 0.016601833, + 0.016259989, + 0.008347795, + 0.005522605, + -0.011284972, + 0.0020927084, + -0.0020404204, + 0.009591119, + -0.008249789, + -0.020043658, + -0.013941785, + -0.0064011873, + 0.009890922, + 0.007117129, + 0.025140274, + 0.0005499107, + 0.0003483327, + -0.017478283, + 0.018341277, + 0.029016636, + 0.0064986465, + -0.0061193053, + 0.013072971, + 0.014585744, + -0.012353626, + -0.0027855241, + -0.013575549, + 0.015350145, + 0.009848926, + -0.008276763, + -0.0020121688, + 0.010690222, + -0.0008974336, + -0.0116546415, + -0.0031986532, + 0.0072288, + 0.025728708, + -0.0031249374, + -0.012022611, + -0.011825202, + -0.0037892296, + 0.013141322, + -0.0177478, + -0.0074130623, + 0.005900281, + -0.00014823642, + -0.007070036, + 0.0039716936, + -0.005940218, + 0.018813876, + 0.0015189631, + -0.0053166742, + 0.022962367, + 0.020992372, + 0.016011156, + -0.01592979, + 0.022691514, + -0.0010972809, + 0.0020522869, + -0.017457156, + -0.009170573, + 0.01099267, + -0.011785615, + 0.026530871, + -0.00424621, + 0.011758892, + -0.00812807, + -0.005622689, + 0.004409983, + -0.014283218, + -0.005247292, + -0.011156406, + -0.004226873, + 0.0074621635, + -0.019091593, + 0.028141344, + -0.021888386, + 0.013931055, + 0.007820985, + 0.0055479384, + -0.004856852, + -0.00091494055, + 0.010230342, + -0.011932342, + 0.006545128, + -0.016224056, + 0.0007627138, + 0.0006399727, + 0.0071868007, + 0.03527624, + -0.009639844, + -0.018593716, + -0.00810965, + -0.01663213, + -0.015932452, + -0.014552818, + 0.011083051, + 0.009902237, + 0.010028546, + 0.0030299977, + -0.013098521, + -0.0046565356, + -0.0006407657, + -0.015523613, + 0.026782611, + -0.010173317, + -0.01612395, + -0.01702718, + -0.0039600846, + 0.018101834, + 0.032301784, + 0.0037288303, + 0.010824948, + 0.0208349, + 0.011633866, + -0.009939591, + 0.013894606, + 0.019552313, + -0.017619614, + 0.019269021, + -0.009312429, + -0.025078297, + 0.00013920297, + -0.009347357, + 0.004537545, + 0.022204338, + -0.0034044806, + -0.010558622, + -0.009329347, + -0.0019748297, + 0.00063408585, + -0.012375084, + -0.0018504508, + 0.004881047, + -0.0067747557, + -0.00084659655, + 0.015039512, + 0.0010219413, + 0.0017379763, + 0.015433696, + 0.00058014237, + -0.012020118, + 0.010022584, + 0.015457851, + 0.002211423, + 0.0016565683, + -0.025139315, + -0.021459, + 0.014618809, + -0.012526605, + -0.00740274, + 0.0126809515, + -0.0019000167, + 0.00063539343, + -0.00874152, + 0.015430644, + -0.017658077, + 0.0075533343, + -0.006519918, + 0.024877325, + 0.009812779, + -0.006363789, + -0.012374389, + 0.02541616, + 0.18462649, + 0.11526792, + 0.0052508377, + -0.00044761703, + -0.009050153, + 0.010650732, + 0.006017416, + 0.00018005799, + 0.00072948664, + 0.009898978, + 0.0014497037, + -0.018939748, + 0.010775164, + -0.006832922, + -0.013447669, + -0.0062945806, + 0.012257294, + 0.009475258, + 0.007595337, + 0.02188573, + 0.0018472828, + 0.009045042, + 0.012031416, + -0.00010125814, + -0.009343504, + -0.0020236033, + 0.014092441, + 0.0013784328, + 0.0042546424, + -0.005959832, + 0.007853338, + -0.0016118246, + -0.0025447453, + -0.004571399, + -0.028379625, + -0.036430914, + -0.0010068644, + -0.0051855748, + 0.007776854, + -0.038226184, + 0.0037884333, + 0.010283509, + 0.0072484445, + 0.023919944, + 0.014086368, + -0.00018560025, + 0.0049170493, + 0.027068036, + -0.00013420933, + 0.01723212, + -0.013389953, + -0.0051003727, + -0.00021509852, + 0.003870666, + -0.013807452, + 0.0013561611, + 0.013875184, + 0.006023632, + 0.016822927, + -0.015518509, + 0.0020085021, + -0.008048276, + 0.0019628382, + -0.0040684436, + 0.008659485, + 0.0039245924, + 0.00551558, + -0.015371306, + -0.00023036181, + 0.005161187, + -0.013345614, + 0.025713902, + -0.009256881, + 0.008888726, + -0.013973488, + 0.0042819027, + 0.007903922, + 0.004387427, + -0.010834162, + -0.010718152, + -0.0060921633, + 0.003031888, + 0.0014104783, + 0.017205963, + -0.009245757, + 0.009622233, + 0.0075305286, + 0.026649052, + 0.13736066, + 0.008154462, + -0.015039281, + -0.026480269, + 0.008656098, + -0.020609986, + -0.015150655, + 0.04014752, + -0.007889611, + -0.0011135179, + -0.0036446534, + 0.006699304, + 0.015556202, + -0.0056945905, + -0.0024478137, + 0.0092476895, + 0.009735379, + 0.091599174, + 0.0056021, + 0.019278813, + -0.016272712, + -0.0046410807, + 0.0021075646, + 0.016959798, + 0.0029414953, + 0.011044458, + -0.025402395, + -0.008037845, + -0.023347871, + -0.002494339, + -0.10772318, + -0.0024528082, + -0.0043749413, + 0.0057320497, + 0.0024924239, + 0.012760386, + -0.015916904, + 0.00067064655, + 0.0026036748, + 0.016109236, + -0.004944883, + 0.009831449, + -0.004012239, + 0.0056276266, + -0.018037086, + 0.007668524, + -0.002150356, + -0.009240703, + -0.0008202475, + -0.005584652, + 0.005159349, + 0.0045460872, + -0.014059115, + 0.0019225504, + -0.02081118, + 0.024462216, + 0.004441734, + -0.010375391, + 0.035441678, + -0.017530851, + -0.003076986, + -0.0053605125, + -0.022472676, + -0.015271784, + -0.0030105538, + 0.008215176, + -0.0025740666, + 0.004725247, + 0.0098277535, + -0.0061249463, + -0.015420087, + -0.029296102, + 0.008803563, + -0.010486231, + 0.017584939, + -0.0052096215, + 0.0015289391, + 0.0026822183, + -0.028251667, + -0.008381831, + 0.04681397, + 0.007581115, + 0.002155509, + 0.0025120515, + -0.005222936, + -0.0050298213, + -0.018340815, + -0.00022215371, + 0.0017728354, + -0.0126045495, + 0.0075326613, + 0.037906498, + -0.016870866, + -0.0037684212, + 0.0011321992, + 0.0030101482, + 0.013378535, + -0.00073598267, + 0.0023051137, + 0.0004901167, + -0.003971311, + 0.014696972, + 0.007278988, + -0.027982445, + -0.016460788, + -0.00805061, + 0.013027491, + -0.0026496765, + -0.020936437, + -0.013776074, + 0.0026636526, + -0.019884296, + 0.013538218, + 0.13639618, + 0.0024809542, + -0.007800207, + 0.023744622, + -0.019822184, + -0.00086897163, + 0.029729152, + 0.009492779, + -0.018486612, + -0.019375246, + 0.00038948472, + -0.004129453, + 0.0067316787, + 0.004018186, + 0.015620979, + -0.021984767, + 0.023398893, + -0.0041534244, + 0.010622007, + -0.0062215254, + -0.0059538176, + 0.0053777047, + -0.020272952, + -0.013718726, + -0.021421202, + 0.0023063675, + 0.009612504, + 0.0043075345, + 0.0007069897, + -0.021300059, + 0.005849679, + 0.015077473, + 0.025122648, + -0.0032336756, + 0.009730938, + 0.0044975094, + -0.008755698, + 0.0002829777, + -0.010012715, + -0.00068603334, + -0.0074916887, + -0.00019677772, + 0.004458541, + -0.00085575925, + -0.021948466, + 0.18724197, + 0.014525507, + 0.00787517, + -0.015456176, + 0.0012082667, + 0.0047056684, + 0.009015966, + 0.007880215, + -0.0012981875, + -0.00782629, + -0.003325395, + -0.020542271, + 0.0057972404, + 0.005876524, + -0.00036326455, + 0.0063252975, + 0.021228516, + 0.007923697, + -0.0024084728, + 0.016469555, + 0.009583652, + 0.008255333, + -0.018780245, + -0.024231758, + -0.0091475155, + 0.010054853, + -0.008968434, + -0.003836989, + -0.022054574, + 0.014087555, + 0.0146886315, + 0.015563549, + 0.012121979, + 0.0020204158, + 0.0052181636, + -0.008518424, + -0.009113635, + 0.019491484, + 0.014242927, + -0.014301521, + 0.012048937, + 0.028247222, + 0.020285107, + -0.005643046, + -0.013249632, + -0.0009739255, + -0.014178617, + -0.010769364, + -0.0102847265, + -0.004491722, + 0.0133311935, + -0.004458599, + 0.011353515, + -0.019393787, + 0.0060032266, + -0.005040102, + -0.00056236185, + -0.00016347737, + -0.0054768613, + 0.0037522588, + -0.014941016, + 0.0060006403, + 0.0023957035, + -0.0047713965, + -0.0129385395, + -0.01941618, + -0.0048729368 + ] + } + ] +} diff --git a/llms/googleai/shared_test/testdata/TestGoogleAIShared-testGenerateFromSinglePrompt-googleai.httprr b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testGenerateFromSinglePrompt-googleai.httprr new file mode 100644 index 000000000..f72f9cf07 --- /dev/null +++ b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testGenerateFromSinglePrompt-googleai.httprr @@ -0,0 +1,57 @@ +httprr trace v1 +770 2544 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 450 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"contents":[{"parts":[{"text":"name all the planets in the solar system"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 2131 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Type: application/json; charset=UTF-8 +Date: Wed, 23 Sep 2026 11:11:43 GMT +Server: scaffolding on HTTPServer2 +Server-Timing: gfet4t7; dur=1694 +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Gemini-Service-Tier: standard +X-Xss-Protection: 0 + +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "There are **eight** officially recognized planets in our solar system. In order of their distance from the Sun, they are:\n\n1. **Mercury**\n2. **Venus**\n3. **Earth**\n4. **Mars**\n5. **Jupiter**\n6. **Saturn**\n7. **Uranus**\n8. **Neptune**\n\n*(Note: **Pluto** was classified as the ninth planet until 2006, when the International Astronomical Union reclassified it as a \"dwarf planet.\")*", + "thoughtSignature": "EskGCsYGAWkUfRN5P0rJAqhg+HP6e5hLO5EkQjUYWuQpaYpT9h51BIolwFGpCe6DQlOkXInrQHCs8kaHAEuU1VqNxbcUj3aIL6fguY0SxlClQhWMPWmzOLn3J/hi2rRsVk5o+B7J1h42tGOdAQ+C09eQTBEBn+rCOoW8abFS0a1qVz0ZKrhHnXQYBCoEvgf27FEkkG9mrxJz5Hz6vjsjrPoi09LK/mcdWFdsKLcdH0DtoepsIH8I9y+6HUnV6zEUE/K4Gq8bkxejg/lSLrhA/FqeKcOJn1B8R/NxhgS1kh18l4+9ygh0YEAxdngOAuoBwrw0lOpKeLujOqhp1YFNyK6FepOgihotmPs0zLu50/wnZbPvR6l3MN/8jfqfCWJilvTkt6z1BauksmRIMEyBgO3WTLScR0rGJAFtoW4ukfeoj57wHtAmr1OxJPcA/4gbJF33Um+uwFED3EYgkImxO1//1VLjOn0f2DiyIFCVnTe4z4sf4TQPkFTRyIQnI7vYD1ALIW5XdjorCqOu92vTV+4rIgK+9IkOkbXGwfHq89AT4oWnafnoXiV91wxavamrsSVSQnCzxPRAzm+ETPztg8pDpe+26lAIDiZJSk+hcGvQMdAEwCgVCI5EEsMCZCpKimMg8yqKaozZIcYeHvvSDmtFWgbVRPklw3I6e4UoebFqBb1PGYL/4oT8TD45bdjfFqkBcBurM9uXTkZG21FRVDmsORnc+CViZd3ZPFkwSf7L9svQIoXmXUlFPUE7mw6353c2tQjxE5SZZkeblNm6s+7xv+wg3/rYu4kk4qIYtc3bOwhEXO9A530QYuAoiAqbUmoZWk8skKH0Cx4AvVMZxFPiRLzOD7kTDNp4fkuv9YOuOzACbel4LAJHm828Jsgm9RDLqackSGjLv8sMEN52BY0a6ezMfOvTGJrLWHxSmWjV5hDyRRUJiJ3BTzte1CToOpbruwOJrZKnTM3vfP29Cg4atW0eDHKpbNieLzTaTQkcYvAj+FcNrclqJ7vk28fvFatMT6zhtzP796Cbdsiu2edVP8Cy5dSrAr8VQjIXpIysLhLsVOgQyQ0j3ZAqCxr32YOSAridOBTA/1ODU1AAopR53u+DPcI0gdzFyQ==" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 9, + "candidatesTokenCount": 115, + "totalTokenCount": 311, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 9 + } + ], + "thoughtsTokenCount": 187, + "serviceTier": "standard" + }, + "modelVersion": "gemini-3.8-flash", + "responseId": "7bOzasDOPLiUxN8PqZqo2Qo" +} diff --git a/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMaxTokensSetting-googleai.httprr b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMaxTokensSetting-googleai.httprr new file mode 100644 index 000000000..24aac9ab3 --- /dev/null +++ b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMaxTokensSetting-googleai.httprr @@ -0,0 +1,104 @@ +httprr trace v1 +792 850 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 472 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"contents":[{"parts":[{"text":"I'm a pomeranian"},{"text":"Describe my taxonomy, health and care"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":24},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 439 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Type: application/json; charset=UTF-8 +Date: Wed, 23 Sep 2026 11:12:11 GMT +Server: scaffolding on HTTPServer2 +Server-Timing: gfet4t7; dur=767 +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Gemini-Service-Tier: standard +X-Xss-Protection: 0 + +{ + "candidates": [ + { + "content": {}, + "finishReason": "MAX_TOKENS", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 14, + "totalTokenCount": 35, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 14 + } + ], + "thoughtsTokenCount": 21, + "serviceTier": "standard" + }, + "modelVersion": "gemini-3.8-flash", + "responseId": "CrSzauu5IPjwnsEP-8Hj8Ao" +} +794 10157 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 474 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"contents":[{"parts":[{"text":"I'm a pomeranian"},{"text":"Describe my taxonomy, health and care"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":8192},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 9744 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Type: application/json; charset=UTF-8 +Date: Wed, 23 Sep 2026 11:12:20 GMT +Server: scaffolding on HTTPServer2 +Server-Timing: gfet4t7; dur=8203 +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Gemini-Service-Tier: standard +X-Xss-Protection: 0 + +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "Hello, little puffball! Despite weighing in at a mere 3 to 7 pounds, you carry the heart and lineage of an Arctic sled dog. \n\nHere is a comprehensive breakdown of your taxonomy, health profile, and care requirements.\n\n---\n\n### 1. Taxonomy & Heritage\n\nScientifically, you belong to the domestic dog subspecies, but your specific lineage places you in the ancient **Spitz** family.\n\n* **Domain:** Eukaryota (Organisms with complex cells)\n* **Kingdom:** Animalia (Animals)\n* **Phylum:** Chordata (Vertebrates)\n* **Class:** Mammalia (Mammals)\n* **Order:** Carnivora (Carnivores)\n* **Family:** Canidae (Canines)\n* **Genus:** *Canis*\n* **Species:** *Canis lupus* (Wolf)\n* **Subspecies:** *Canis lupus familiaris* (Domestic Dog)\n* **Breed Group:** Toy Group (AKC), Spitz / Primitive types (FCI)\n\n**Origins:** You are named after the **Pomerania** region (now part of north-west Poland and north-east Germany). Your ancestors were much larger (around 30 lbs) working dogs used for herding and pulling sleds. You were bred down to companion size in the 19th century, popularized largely by Britain's Queen Victoria, who had her own prized kennel of small Pomeranians.\n\n---\n\n### 2. Health\n\nPomeranians are generally hardy and have a long lifespan, typically living **12 to 16 years**. However, because of your miniature size and Spitz genetics, you are prone to specific health conditions:\n\n* **Tracheal Collapse:** The cartilage rings in your windpipe can weaken and flatten, leading to a dry, harsh cough (often sounding like a goose honk). *Always walk on a harness, never a neck collar.*\n* **Luxating Patella:** A common issue in toy breeds where the kneecap slips out of its groove. It can range from mild to severe enough to require surgery.\n* **Dental Disease:** Because your jaw is so small, your 42 adult teeth are crowded together. This leads to rapid plaque buildup, gingivitis, and early tooth loss if not maintained.\n* **Alopecia X (\"Black Skin Disease\"):** A cosmetic, genetic condition common to Pomeranians that causes gradual hair loss and hyperpigmentation (darkening) of the skin.\n* **Hypoglycemia:** More common as a puppy, rapid drops in blood sugar can occur if you skip meals or over-exert yourself.\n* **Eye and Heart Issues:** Prone to dry eye, cataracts, and degenerative mitral valve disease (common in aging toy breeds).\n\n---\n\n### 3. Daily Care & Living Requirements\n\n#### Grooming (High Maintenance)\nYou have a famous **double coat** consisting of a dense, woolly undercoat and a long, straight outer coat.\n* **Brushing:** Requires thorough brushing 2–3 times a week (daily during seasonal sheds) using a slicker brush and metal comb to prevent painful matting down at the skin level.\n* **Never Shave:** Do not shave your double coat in the summer. The coat insulates you from heat just as it does from cold; shaving it can permanently ruin the texture and lead to Alopecia X.\n* **Teeth:** Daily tooth brushing with dog-safe enzymatic toothpaste is essential.\n\n#### Diet and Nutrition\n* **Metabolism:** You have a fast metabolism, but a tiny stomach. Feed high-quality food formulated for \"toy breeds\" (smaller kibble size is easier to chew).\n* **Weight Management:** Keep a strict eye on portions. Just one extra pound on a 5-pound dog is a 20% weight increase, putting immense stress on tiny knees and airways.\n\n#### Exercise and Training\n* **Physical Activity:** Moderate. Two 15- to 20-minute walks per day plus some indoor play are usually enough to burn your energy.\n* **Mental Stimulation:** Poms are exceptionally intelligent and curious. Puzzle toys, trick training, and agility courses keep you from getting bored.\n* **Vocalization:** You are a natural watchdog with a loud voice. Early training is needed to prevent alert-barking from turning into nuisance barking.\n* **Safety:** Your bones are delicate. Discourage jumping off high beds or couches (use pet stairs), and always supervise interactions with large dogs or predatory birds outside.", + "thoughtSignature": "EsYdCsMdAWkUfRPfYX5mGi+Z7YhZxdPv842om4Txd5M+8Gi02+LxomxWXt/cGnoGgje9Qpb319/Ram8fHPQ81EKdd8tKBSfoD16ZQ8NU/g7AhG0WwwG4fAovaTruT2J64zklFrhRSuIpmTm1cj/R8jn0KqollvZ1QGqZY4e9Dw8LqJZ0JZwQXVM+sWkwbH81Y840SIq4ZWGkvsTSJCQRXp1g5ViB9O0UnKBhAC/7oS1DGomHPnJ3Ph6uC/cDLz/bh/WA5glFlwPpsFExRoNbBvT6IbTzmDKNLHsB6FIT7+OAZCdhMHtv/39rEkyx2vvzquAbzKt8EgENcni49cFi+H4syPo7UZIKj4gzadzsDHt+ohyP+svOS84FPtEmQ/KTNUiStkEJVeLjwRGJoOYU9VViMqPs0GcO6sP5oC341eUW93T/a/IneGs724cwUBkYJ6wUXGzMekSfqVAaMcuNmXdGy24g1hR4chBTznT+VlZ1wkC28IDs4xu6v98nTkPGuURdBa981PL5gpm4kDKVlfCRsZmQ5ywLlombZNeNiuwlrPmDn207aDZNB45X0MyD7cV4/kRL9wiBc4/Rok1zBqua5F1aYeXRUSVs/yVT04At4Rli4j8Jatr9jFVDYuRTPRY2c7Zc55XKaReaJzHF+Jt29LFqCn+8UB0/b4LmsSm/DYgNKlLLiU6yBK2Wh4aF8hNqHprjOUwTODgOO/UGeK3g+O3oUxR8um2j6UF/QGS6KeE5USUOrppVwbS5LYSJopym8fnIZfySb2f6OeEOo+MHGzWM0IjPr0IVo4TB6rBQUE41N6vdhvXITg6KDxlytZXTjyxBGnVRa5XYO9Yh3U58LFQqrhjXUZtzi4n943lHVzQGqVLWNgIeE1PciyRV44QsGuaZvpC2NPt6ZOkiiEjC51NhpZSRo4rVeIz1VgfapcWShNPa9Jm0rh2mJn/RmeBHL3xPI+NizGlPnxTGyvyVBADrqt2A4j9JsRjGdG3AHhVysDcGRn4GirE6tVYkNdDXz9kkoZxQFP0ZfhLfei4P94WYXOoWi0nfWAjl+mVKz5rgeGjOv+1HvAExtB6BeIsAamTjKqM2+ALCKfmbkX5TjKgedzPlFghrP22wblHyUg0vj+iSS7bdgWOFU7R4N6e31Jsql3FTeiXxRsT+gMCiWhSvqjkiRIeZHvgUU/D/kuy8GV/T4YKz2qdNlop++nTUj/3j82DfloWeQjkXuhcYbUqKiGLsVQu4FiNnwh+ck1Z51uTZu3SVKL7Fd67aJld7Z5r+3rRYRUgE3+eKZx2huByjaLaICLLd5x4uziGYKBPb98/2HXfSmxlcEFkaqqqg836Bq7bWYMBRXSzncRu3l8OWCkqOTCAdKx5ZZAib/5X0FG+08vVQG0QTqCLdl/CdkLVq4g3NP1s2fa4Rr4LlvaqFlfsSWnUi24941m5XFRTTgh5i8wjkBYL+OrgOVQ2Hs9KPd4B92+tFHR9JSJf83ww9a/e4sey38EyOHw/NNjrU/cr4CB2ltXoaDsnMa9RBekaqAjxmq9jS0vBNBgBO24v82LiWTCuzDGtZ891vImjQYMro34TwptxqKVsUz4SJ2JsJgbkmf67uQGn5UYEPO142crKclp/FvMVJYPfl7dbvE6IWlN/5be+/X1SFaB6QFI4d7aY6M+geuwXHvEZtDFRL3M+n4zCFrIfXkCzTZC1anrefdG14xPcr8CoQYVSfSSYvXm4oVsqwQGX+5hNmwOLsMfdScVu6n5oumaC/BFhkgWRD8dg6zikotfiwGAjAqPSUXjSa4WWlObUsdf4QCtGnP7VSDaWThlOuSxRZaFlZEftvrQsLIuYYk8+6lQo9rDvQF7P+95+pCv9YagTr+a4fhq93txz3bvyrsekI4NAJbQ8rlFIz+v7xsIXORDAdp76HxkJn92c/u+61x38Yk9fnqrIihlCID5WU/9xWYQ4EJLpaEq61CxEZdXuzWmqfkv2sQG9R8pQtgb6sea5VN10NA4WnfhCAAxsGfPqvkhU+ryeG3OPl4oQz0PCa7kKWdcBFxO3Acr95Urq3FZgjN6296pAWVyyr6FgBqOtLKQQUIo+EgVl9Tn/uzBWzmlGhP9bsFqRFgPPGpZlZmW5Du/H5ZD8+JT9wb6w9T0a0idZS0xIY8DUIz30iVUuCDWXOuwZg730AUsvB1P5V8ltWgVGdrrmn0S3+EVtaD0ngVOUoRmGjJEaaRPE4R9KFCage+xxlkQSTfufxsbYrH4YNVb2lakPZJ/fPVRuTwd8pt+oyX7ZSiLalR1pOnOQ9YVV6Juflu22FzDCoqtoGnkKug6fd5+GMeK0+auG+Z5iRJzVMxdvErr2bUBLdpMzoGNFBHsoClIEhi+UDJ71Mxr7iva8Fj436XnEAgllT5pP1eXOffTv/eM+HV2cHgR9HPWMgzxHBxlknmkc0U+e6lcoDskwfDiEiAhwKc5zWXv6K0e6YK8GRs/5dsKVgDlDpCbTX1GcEsH957sLGNh5a+QqWaCPJFuuNMDyDA/2vdNAaLB/HSAkFHxa9jnSMcGvksILvcxO1FRBw9/HBubwndE/h0aXc7FqGzqoLm9VcTvncnhf/t2WmjCxpJCEUmaWu2kFVff0hZAAD2jG9HVLg6UdhJeyhEUZVt+EwGYhe2cj/reJDPeMDhd7V2F83V5DT0B/s4ax7TD+Ez0Bx31DkYtSCXaYKtVYPED8HkVeLti4rVkJE9uuNnSPUlsTE77p4c4bJYEIkQH9/bhCsZY6jv7mLAmRXDNHKWkFFW+yFl1dOVQEMgtDdGRMcSZqsDXTd9lH1ennFeXLAD5RIw7MvPOf+9CjcZtvRTIm4rcLmGhz3088qMFJsdHrLHuI2UnqDmULLumSQwiEn1vIA1vAufrXntwov3o0r+ue1gEjqTk2WtGbcpoC1wThwlDIcu/Hoa2R4PrNZDVYpZBHt2EqQQ/6gjnSU9kvQWk+zsb5bYNGnv2BhCtgMeTSNYErQBqhWb0kVCbrLL0UvzHIo+R0PEYeKKQmJXoZ0NkQXFMnnWsp2ipwRJAsOj6G8KwaSHz7fadI70pycGB8RAT8ld9jbRI8n2fiRB9tUZo6+ijv0nT7ONuwfYgdPIHoEaRay/z4b+fYqdba6fQ/EVm/UMf7PfoUyb3RKQIxOAGwm4ZN/AMlwIkDo7Ghc8zZgOq8M8NGmmMm7itkmObagoTy5hq7DMQjoS0KGYxW43IT8nOb1bhDVSQ9v6CBdU/1AbtXeBUgJ2LS3oM6uzKjvSCDRDlzNdgx3W7OAg/wvBmn8QCUlzt+QLv2dPWXA2InV7SgnTKQU2sVSkd0bSI26B0bXFN9kMP0N0Zvtr535AWdcabt5IYXQrQ9wJRNEPBqm8xLQqrOoUzOHRRzmEqen7pogM2apf8/rRGo/uHVD7Z149Kd9xWvyyQYkLTJ/HUz/5TSD6CSHqO4d3MWGDpigR1yHVTmv862PbVPHbIVbd/J3JxsbmMBoN1mfD1ogwkX4Hb+8cM3DwcLqpqb7UEmgQ0oTPyKndWSbi6/N7OWU/X0L7qp7GfpBN9381frOOjWPhPlHfO6C+oUb3ZFmUqIe7Ip2l1FUcXKlyXS/wsa8dzuR/+eSnPMZCunTqdv9n0uYVKBQ4+SIjzcZEm9zrgH4WNKmUtHqsTohBcDqyizaR9lzPoCSt0nrCXEgBYTPUipU903phI5WIe7oObioZVY0/0bF2guoFyXqlFfAvUjMJSTB9Q5OuyVkAS04na1XO+NPwSKLySdZ5JrsVb5vhLQDKu30LZ2Hs6lS+PlcnymKH9zoFHzMntXqj1a6qV6b1thhHSJ9uglSkiSIwxRVwjT7yfXLl7O0WMPUYJBlljwij6QGgUyRnZyKxav6COnrkQnyP2ddaG9hqJmdeDfaoWUVlnUoX/lqWGnlZwYNSummO1FzyhGVCxocx3tmgp3aJHYtwzwJrgJI0FGvlGLhZn4m55y3JlfeUefo1V9L+qVIBAXgxa+pFeIfYN6WDy2c7Hgc5KIU+0yaIRzg6SP33+ADPf8S5/3qIk3VdbckTGGgsclYSSvVC2RnYdUm2duPChG2hTZ+TZWR51wIDNiuQFjZYiieFp+V3dNKyG1oAmTENes1U99HPfTB/gGSRe3buDUVS4uK8CkqCl5J7b2F5CYIYsRFy1N+y5jwH7xYh/80yWzU2+ijyI9v8OSAzvTlsisnlJVpgkjsVNHtrDrIb3y7KZ78YjpXaZjZBX6Jv4Q6QYBLX40YD27d1tozVCYaGUFwMRp6ygVmPGZaa3nmP6uoDYJdiPMMDEOWNgN+sSTqwwtF0qAhvrge/25u5RtkZUoLQ3kH9kowjbLnb2JpAwJ82GmLrudJDf++NzwmpB/NlCof8nUe46OKSxuVfN+q+cYDIGQouBvEhAcQnvEzq4zCcuoJrBLNlF2WeFj47q7EZnM+lxA3ErVKU3PHITm75bjBFPkAuGHmzpmull6efeY19W7bhhs8SnzpOj98kA7GBRjx3wlOuZs9NHeePsYi+FJ4WjgI8NK2HH6ubEXoSGT7w8MBt7xFd0ItDQ+Fz9U2zo4ev7ajbttWY+p6m477ezWLKLZN9z0sz6BUJJTZk8vPBMCxphNjx2uUhB1HoUpX/V7lTAUVZrZPAnfskQXch4XktP2baS6HFT03v2FaokzOQ+UtAY7M53p3kogprEuC52RsDyGIzjFQN37EDFmsMc8HcQfoyje8QluTgLA/8gD4x1KkhByGnOdBONfux+VJ3Xvz0w8brb9a+LkYV1D3GD+etokDIpVxlAPg+be3ysi1O9rc4nYR7k41WqTSyqfMI2P43rxwe3EQ82toNzXK2HTt24tcUdlJg5XBefAzLbyVS4BzQC+9uK50XpC5+m6NgDV4G/rgv13phwVUzSzmcnE/fAec6J4HpaU9SPnCvY4cCNdqwiuL0hEGQx4lq5jNY1MxXI1GdOeu52Ht+dtId2BKPqYxRfh/5/wxXcvI5ZXBYT0ssySGbHkVyEcbGKBNuhODecp2TVvfD3ZiAKF27E4=" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 14, + "candidatesTokenCount": 973, + "totalTokenCount": 1901, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 14 + } + ], + "thoughtsTokenCount": 914, + "serviceTier": "standard" + }, + "modelVersion": "gemini-3.8-flash", + "responseId": "DLSzao2WE-jinsEP6I73iAw" +} diff --git a/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentImageBinary-googleai.httprr b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentImageBinary-googleai.httprr new file mode 100644 index 000000000..5acb6e5c1 --- /dev/null +++ b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentImageBinary-googleai.httprr @@ -0,0 +1,61 @@ +httprr trace v1 +47850 3714 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 47528 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"contents":[{"parts":[{"inlineData":{"data":"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAACXBIWXMAABYlAAAWJQFJUiTwAAAgAElEQVR4nOy9d1RT67f3+wBCCjVAeqWH3nvvYO9d7CgKiGDF3rsiqCAivSQhIfTee0dQBKT3DvZdzvnjjpWoe//OPfe+5z3n3pe9t8vxHWusLAhDJt/PmnM+ZQUgkEhYcAQQP6sNwJL/D2DBEUDAAMAmgCOAgDMAbAI4Agi4BIJNAEcAAfcAsAngCCDgJhg2ARwBBDwKBJsAjgACHgaFTQBHAAHPA8AmgCOAgCfCYBPAEUDAM8GwCeAIIOClELAJ4Agg4LVAsAngCCDgxXCwCeAIIODVoLAJ4Agg4OXQsAngCCDg/QCwCeAIIOANMbAJ4Agg4B1hsAngCCDgLZGwCeAIIOA9wbAJEPCGbHhTPGwCxM+NAfxUiKX/G8BCwADAJoAjgIAzAGwCOAIIuASCTQBHAAH3ALAJ4Agg4CYYNgEcAQQ8CgSbAI4AAh4GhU0ARwABzwPAJoAjgIAnwmATwBFAwDPBsAngCCDgpRCwCeAIIOC1QLAJ4Agg4MVwsAngCCDg1aCwCeAIIODl0LAJ4Agg4P0AsAngCCD+2RtioH+oP4T415d/6Pu/Jf8Pw0L8ZYLwTwBAAoEURyDFJZDiEggJJBKFQklKoSSlIaEkUeJI4Zeg75FAICWW+n8LC/FXCsLfFQBxBFJMHCGOQGAwaAZNSldL1soE42qHXeOB37wav3M9wWsjYdcG4tY1hLWeeDdHRRszjK6mDJ0qJS+PRiCRYssQEC2Ipf9FYCGWNAh/JwCE5Y04AjohkaR1teRc7RW9NhFPHabeOqUcfouZ9EyXG2fAj9fJjNfMSdTOTdHLSdbPSNJnv9SJesi8c07llA9t92aih6OioY6cMkMaI49GSkJpQVhHLfkvCAvxfzwI4O9S4kOljgRSVg6lqSbrZqt4fD/18SVVXoRWWaJeC9uoO9N8qM5+tMtltNtpuMN2qN1yrMt2st9pZtB5Zthlesh5rNuup86spdCghKvDe6n59IbyxUC61yaCk7WCuoosBoOGMPjeQsBC/DRB+BsAIIFAikkg5OXRJppyOzwJD0+qpD9itrH1e/OMBwrMhnIsx/JspqodZt64zHW5zryyn3nlsDDg8nHG/eO8x8c5jw+zbu9nXBfGnab6bUe7LIfazfqbTLtqjNtL9Eu5Wqxw9eun6FvX4DTUpaVloFZhyX9fWIj/g0H4GwAgLYnSpsnscyBEH1apvqnb98JoKMZ4LNl0gmcxlWk9W2a3+MrxfbfTQrvjYpPD+xb7T11OX6fcfvno+fWDx9cP7l8X3b4uuH6ed/k47/ph1uX9lPP8qNNkr93IG6u+JpOuGsO2Yr28JOb1M/SVbopUihQShYJ7A8RPo780ABJIpIIM2pkpf8uDVrab+XqfTs8BvYEThiPXjMcfmU1GmM2yrBdL7T6+cvjU5vSp2elLt/Mvky6/LLj89tHtty/uv336ro8ev3yC9PWjx5eP7p8W3RdnXGdGHMa6rQfazbsajFvL9csytKPDVA/uJmpry6Ell/53h4WAAUCgEDbKmJerlFrWM/uWa/VZafZbaQ1v0hs7Yjhx1mTqpulchNX7TNvPjQ5f25y/dLr8OuX2+1f33766//7lm/7ti/vvn91+++z++2f33z67//rJ/VeIBPcvH10/LTi/n3ScHbId6bbsbTN5VaVflafDS1QP9KOoqUmjvzfHsBD/6CD8RTOABBIphUZpYmUeWlNfLWf22DJ79TX69JgDNlrDa3VHd+iP+xhOnjCevW/xIcPuS7vz126nr0POX2dcvs67fl1w/bro8vW9y68fXH775PbrJ7ffPrn+/snl908uv310FeqXj85fPzh/WXT+MOswO2oz2mvV/cqsucawvFCHnah2/BjFyAQjJYNa8jjAQvyEACCRyGUIBF1WKkiNUGOr2m+n2WvK7DPVHLDVGnLQHl6uPbpFb8zbaDLIeOaRxftc209vHT722M+9tZ3ptJ3tsp1/Z78wZL845vBx0vHzrLOQh18EPPwCyfWXD26Co+vXD86fFxzfz9jPjNkM9Vq8eWXcUK1XUqjFSlE/eZpqbCqHloL7AeSS++GnAwBqfNHI1USFTCPlTntmn7N2v7v2oKf2oIf2kKcu5P59+uOHjSaCjKfDzEf45s1phvxnzKcX6Y/PUmNuKhfFaXeXGo+2WE50Ws/1270fsf8w5fh52unLrPOXBZcvi65fFt2F+rzg/mne9f2s4/yU3fiwZW+P2atWw8oq3excZnS8StAZkqGpHJQH4LFR5NJb4mcBQHD7R9KlJG+pk9ttNd55aPWt0xncqje0VXdok+7wNv0xb4PRgwYj+/THTht2hxsmXVPxWi5rpCyOlwZYKaCkCFZZoELPUBu5ev2VJoMNZuMdljPvbOcH7RdH7T5MOH6ccvo44/xx2uXTtNvHabcP027vp10XphymR61GBs26uoyaWg2KK5j8XNVYlsrxYIqBmZykNAoB9wPIpffGTwEAAolEo5B2ijKpxvS3rsye1Vp9W3QGduoOeukN7tYfPqA/6m0wvF9/6LRBz0OD2HOMFVZoeTSQlhAz1tNZvXy5vqY6QU7cVg/x+AyliafbVWTUV2Uy3GI+/tpyusd6rt92YdhuccT+/ZgjpHFngZwWxmynRyzHhsz6+ozbOw2rG7RyS9VZmSqPoxn7/Uma+rJISWiabMkjAwvxjwdAAomUQ6PWUxQqbZTfeaj3rtHo36rVt1u7b59en7fewBGDAR+9vgC97lCD4scaOz2kMWgRAABBQfpUoH8mnxfge5hMwC0DYK2dFOeBcnu67ptc/e5S4/4605FWi4k3VtM9NrO9NvMDdguD9ouDDu8H7T4M2b0fsp4ZtBgfNBvsN+nqNmx8pVtcy+QVqUTzlO9EMjYfINDVZZY8MrAQPwkAMmhJZzoh2kGX52lYuFK3ZQOze4d6zx6t7v3aXd46nce0X1/TrQ/XjjhDNlASl1omghIDZEUpn4N742Oijx3xVqURAQDa9GU3/QiNbK32dJ2OLP2uAsPeSpOhBtPxdsvpbpu5ftv5fvv5fvuFAbv3A3YfBm3mBywn+0xGeo3fvTNo7dSpbGZmVaolZCs/YSsFh5BX7sQqEiXhJIBYanv88wFAoFDyigpm+jqHVjgFrnW/ttYxdr150Radtp3M13uY7d5azac1mx5oFYdqXDuAV8Uvw0ojcTISeFkJU33N9as9bMz0CRi0KAAqBLHgfbhGlvbrdJ3XGXpvc/V7y4wGa03G28xnu60XBh0WBh0hDTkuDjm+H3ZYHLKZHjAf7TPue2fQ/lan5pVmfr06u1glgq90O57md5NkaIeRkoUHRpFL75B/MAAoNBpPIOgbGbiuXLF265ZtXjv27t11dP/OK7tXcPaa1PqpN55Rr7ypUfNEo+CR6rldOGU8QpmiqKlMYhDliBgkAYPASi9TkBRFigANyrJrAeSuAoOhMoOBcqORWuOJVovpTqu5Ptv3ow4fp10gTbl8mHRZnHR7P+X2cdpxYdx6bNikv8/gdZdOfYdGUbMqr1IlOk/lAYd+KZqyOYCgrCeDRMMTZMgl98k/FgBFPE7fyNBjxfJN27Zs2blt8/at23fvOhjgdzTw6J2ANdkXdavvq5SHqddEMsufa9w+glcjiCuTcMa6qvoaNBUShqSAJiugqFhJtJiYERMZHaI61WEx/9pyrtt6ccDm45jDp2mnLwsuX9+7/fLB7csHt8+Lbh/n3d/PenyY9fg077owazc+ado/bNDRy6x/o17SqppeqxxXrPw4nXYzher3gOK0HYfBo+EtNYil9sk/DQAJJDTxS6SQjC1M3VZ4rNmwduPWzavWrbGysbGwsty51+vc9Ss3bpxkPXSui2e+4ut05hv0V5mUcbS3rsTQsJIadKqpnrqZnpqxtoo+k6FMxFMVUH4H8J1NFl9nnb7MOf+y6PbbR4/fPnv89kWgzx6/fnL79aPrLx9cvrx3/Tzv/HHWGcoAU7ZjY2Z9IwYdA5p1XWol7SoZDYyECsazXMYdLj04hnbwNsV8JRZDgLbUwEL8I4LwlwAAiUbhiHgDMyNnT9cVa1eu2bB27ab17is8jExN9A0NNu/YevHG9dt3L3AjV3TkGY40m46+tpwbsJ7qtYqPUHe2kibKSqlRSHoayvpMNSaDroSXX+kkn8nR+bzg9PtHwVIIaF2Qx+9fPKHlQB/dBdZ3hvTe5euC8+dZ+49Tdh/GbeZGLEeHjHr7Ddr7NGq6VYs6GBmNtMRKangB5V469UIiPSCCuukMQc1UBhoVXeqgwUL8MwBAolA4Al7PyMDZ02X5mhWr161avX716vVrVqxd6eTu4rFqxSFfn+Arl69dP5GTvGKo1Wxu2Gpu1G5x0u7zrN14vzUrTmPbWnkjprQaVUaDhtFnynhtxmVw9BZmnf79d8/fv3pC1v/q8ftnSL9+dP36weXre+cvC45fFpy+zDl9mXH8NO3wcdxucdh6ZtB8tN+4b0D/dR+ztlu5sIOS1kxKqCFFFFMfZtMucWgnYugHHpHsvbAYIpwEkEvunH8IALJyctoGug6ujp5rlq9av3rtxnWrN6xZuW7Vmo1r123ZsGOv15Hj/v4nT1684F3Ed514Z744abcwaf9+yv7jrP3XRbv5MZumKqOY58wrwfSrwfSocI3GGrOPCy7//m8e//ar57/9slxw74cWRQvc7/zlvcvnRedPs06fZhw/Tdl/mLD7MGb/fsR2YcBypt9sYsh8aNj47YBOwzvVwtfk1GZcXA0+opT0MI9yhUc9mUA7EknbdJGsbCaHloGnh5FLbp6/PQAoKUklFWUbR1v3VZ6rN6xau3nd+m2bNmzdtGbTujWb127YtmnnPq8DRw4f8j964+r26gK78T6LmXH7+UmHDzMOH2fsP83Z/7Lo+NsH54/zjjOTDrNTTu8/uv72q9u//+r++1d34Y3/10/uv3x0/QqtAHX9+sFNAIDLxzmX99Mui2MOCwM2C702873Wsz1mU92m4/2mQ0Mmbwd0G96pF74hs5sUXlYrPCnF38snXkknn04h+8fQ9oZQ7PbgscrS8HppxFLb9+8NABKNUsThDEwNXVe4ea5dsXbTug3bN23etXXb7u3bdu/Yunv79j079x0+ePi4v2+gb8jtDfWFZkNdJpPDdnPjDu+nHT/OOH6cdfw05/TLotNvn1z+7avrv//q/u+/e/7brx6/fRW0vJ89foPc7/b1g+vX9y6CE7cv790+L7h9mHFZnHKZH3KY7bGa7TSffW02/cZkvNNouMegt0/3Va9mTZdK3mtKSpPci2rZ0FJFCIBM8hk2+Vgc+dBz6obLZG0XeUkMPC2AXHIH/10BkEAi0NJSapoaNk527qs8V6xdtXbL+k27tmzbu3PXgd37Dx/09vU5fMz3aFCA/+mT/kH+j26sqeIZvKs3GOmymRqwmRt1WBRg8H7G8cOs46d5p88Lzl8+QC7/FRrtcf/ti/uvn6Flz1/fu3xZcP485yQoe1w+TDm/n3CaH3aYG7Cb7baa7jSffmM23WE22WE80qnf36X7ukuj5i29sAPPa5WNrRd/VoF4WCx3O0/hcibhbCopIIl8JJq6O5TqGUQk68igpGAGkEtu4r8lAAg0SgGnaGRu7Oju7LF6+cp1q9Zv2bB59/adB3bv9dnv7efjE+h39ESA38njx06dOBp07Pr59YWxhp2Fev3NlmOdllO9NrODtvOjdgvjDh+mHD7OOH2adf60AA1rfv3g9stHt18+QTXPl0WXL/POX+adIetPOC6O2M/12872WE+9sZxqt5hoM51oM5nqMJ16Yzbxxni406C7S6e5S6XkNT6jTTKxaVlkjWhYuci9YuSNPNkLmdjTXHxgCvloHG1fBG3rPbLZZkUsQ0pCAl4nh1xyH//dAEBA1T9NiW5lb+Oy3NV9tceK9avWb92wZfe2XQd2HzjifSjgyJEgv6NB/n4njx07FXQkMCDo+DZOiEVrmnZ3mfFAvdlIu+X4W+upd7Yz/XZzw/YLYw4LE47vp5w+QFO8zp9mXT7NuXyadfk47fRh0unDtNPHGaf3447zQ7bTXZYTr8zGmozHGozHGozGGg3GWwzHXhmPvDEc6NJ7+06rvkspr0OW3bIsuh48qQIPS0VvFy67moc6nyF3mosLTCH7JVC8o2i7n9LXXSHruCmi5eARIeSS+/hvBoAEAiEJ1T/qNk52Lp4QAMvXr1y7df1mr627DnjtP3LA+9hhn0DfI4F+vieOHTsT5Hc66LD//qfXHKvi9Tpz9d6WGPfVmg02WYy8shx/Yz3ZbTvdazszYDc7ZD8/4rAwar8war846rA46jA/bDs3AGl+yHZ+yG6233ay03KsxXS0zmis3mis0XCs2WC01WD4lcHAG7133bqv32nXditlt0snNYlF1ICQCnCvGNzIF7ucI34uXe40V/E4i+CbSD4cQ9sfSdv5mOp4hIRXgxeKIpfcx38/AKRlZXQMdOxdHZy/A7Bmy/rNu7btPOC1x2ffft8Dh475+AQePXrCPyA4KPD8yb2+h0/6unEf6LVztV+lG3QWGHWVGvdWGw80mA01W460WY2+th7vtJ7ssprssZ7ssZrqsZrutprqspp4YzHebj7xymyiA9oVMN5uMdpkPFJrMNZgPP7KZKLDZKLTeLjT8F2nVkcXs6FbrbSLmt4uE98o+rQaPCgDtwrBtXyRi9kSZ9JlT3Dlj7Pxvskkn3jqwWjangjqpjtU/ZUKMnh4SBS55Fb+mwEgIyerb2Lo4Obk7OkCAbBu5ZpN6zbu3LJ9/86dB3fvObxv/1Fvb//DPseP+p0KOHrSb8OOrWtW2t4+rlsXp9nC0mlN02/P1H2Tr/+22LC7zLin0qyv1qy/3myw0Xyo2XyoxWyoxWy4WaBGk+F646Eaw6Faw+EG45Em05F6IwiARqOJ16YTXWZjfaZDvUZvurXqOxnFr3EZ7TIpLcte1oOwKnC3BFwvBJfzwMVs0TPpqBNc2eNsRf8U4tFE8uE48v4o6u5nNI8TJBVLDALeMYNcejf/nQCQlZMzNjcRAODqvspz+dqVqzet2bhj09Y927fvgwaC9hzat9dn/wG/Q4ePH9mxb6edi6OxidGBLUY5oTpN8RoNiVrNbM1Wnk5bhl5Htt7rXCMoJxQbd5ea9JQb91YY91Wa9FUZ91caDVQaDlQaDFToDZTrDVXqD9cajdQZjtQZjDQZjnYYjXabDA+Y9PYbtr7TLHlDSG8VT2oGL+rB0xrwqALcLgZXC8AVCABwJl3iBE8qMBXjz8L6JkMMHIql7I+kbH9EsfbCy+Ak4W2TiKV2898HAAmELEbOxNLM0d3ZydPFfaW759oVqzauWb9t42avrVt379i2Z+f2fTt3HPDy8t6zxWubs7uzuZW5nbPzls0rnl2wLH/GrI3WqI1l1idoNqZoN7O1W3g6bem67Zl6Hdm6r/MEmSHfoKfQ4F2RQW+Jfl+p/kC53mCl3nCV/mi94Wij4UiL4VCbQd9rne63Op09Oq3dGhWd1KxXqKQm8KIOPKkBDyvB3TJwsxhcLQSX88GFbHA2Q+wUHxHElQlgK/il4H0TSUfiKYdiKHufU9ZfI6tZyUnCuwWQS2/ovxUAVmYObk6O7s6uK9zcV3uuWLdq1aa167dt2LRj06adWzbt2rp1z451WzfauzhYWFq4erju2u+17+ih4KB17FuG1eHKlRHqVS/Ua6LV6yAStBqStZvZmi1czVa+1qsM7deZOp3Zej35+v3FegNlekMV+sPV+iN1huNtJuOvTYc7jfve6He+1mp9o1b3hlb2mpDTLsNpFXnZAJ7VgodV4F45uFUKrheBK/ngYh44nwOCM8EpvlgQV+o4W+FYCtY/hXBUwIB3NHXfc7KDN47IlIHnhhFLbei/EwCmVlAGcHR3dlnu6iZoA1ZuWL1m85p1W9at27Zh7ZZ1K9etsndxsLKx8lzh6bXPy//UscALZwLPHH14YXlRiEbVM5XyZ+oVERpVkerVUczaGM26eGZjkmYTS6s1VbsjXQBAof5AhcFwreFInfFIg9Fws+HIa5PhLrP+HpOeHoNXXVp1bxgl7fJZbUhOi2h8M4ish27/D6rA3XJwq0wAQAG4lAcu5oJzWeBMBjjJQwWlygVwFALYin7JBN8ksk8c2fslZdNtisl6RWkFNPx8acRSe/pvA4Cxpam9m6OjO9QHuy53dVvl4bl2xYr1q1ZuXLN83Uond2dLa0srWyuP1Z479u44HOATcDbw1OWzgRfOnj27P+WmSXkovTxUpTxMpfypckW4akWkWnWURm0Msz6B2Zyi2Z6m3Zml212o21+pP9xoPNJqOtRq0t9q8K5dv6fT6G23YXu3bkMXs/w1I6sVzWoCLxtAeC0IqwEh1eB+BVT/3CoFN4rBtcJvDJzPBmehJCB6gocK5MgFsOWFzcCRROLhWMr+F5SVwUSGqRxSGp4bRi65rf8eTbCRmam9s6ODm6OTh7PzcleoEFqz3GPtCpflbjaOthbWFlY2Vq4r3Dfs2ux1aM9Bf++jJ/yOB58Iungm4Oyxu+eX8+9olT1mlD5WLg1TqXiqWhHxDYC6BGZTimYrT7s9S+dNgW5XmV5vg1Ffm2nvK5OuNv32Vs3WV1pNb7RrXmuUddDz2vCpzRKxAveH1oCH1YL6pwLKALcFAAiTwOV8QRL4xoBYEBcdmCoXwFYUMIA/kkjxjqHsCiXbHcDj1aWR6KX/u8JC/C2GQW2d7R1doSTg6OHs4unqttLdycPFwtrS2MzYysbK2cNl1aa1m7y2bt+/c8+hPQf9vH2CjvqfPe57KjAg0Ov+OfvMBypFj+klYaplz9QqnqtVv2TWxGrWJDLrWcxGrlZzpk5Lvm5biU5Hjf6bJsOOVoPWVt26JtWKJkZxC6OwlZ7Vgkttlo5vEHleC0IE7n9QBR5UCgCoAHfKwK0SQRL4cyEEdcPgVJpYEA99nPODAeLheMrBaPLWeyTTDQoyWDT8/AjE3wTCpZwI0zbQsXaysXOxt3d1dHBzcvJwcXBzsrC1NDYxNrc0d3BxcFvpsQLqCqDOeIvXtp0Hdu312XfA3/tQgM/+o96Hj2y8c9448YFyephS7jO1whfqJTEaZQnM8mRmOYdZwdOoSmdW52hVFWhWl2nVVGnW1mlVNmgU1tGzawlpdZjUemRivVhsncjzGqjyge79QgCqwP1KCAAhA9/ygGA4CMIgF5zLgfLAmQyREzxkEFf2OEf+GBtiwCeeeDCGuOEqHlooKoeG1ggt9V8XFuIvC4CUtLS6loalnZWtk52ts72di4ODm7O1g62xuampuamVnbWDq5PLcje3lR6ea1asXAetFd24c/O2PTt2Hty1+9Ce3Yf2bd+384CPy/mLWo/v018+VmFFqHNfaqTHq2ckaWSw1LNS1XJ46nmZzNxc9dxCtexildxyRnYVnVdJZFdhkqqlYqtFn1eBZ9UgtBqEVH0DAGJAoPsCDIS10K3Sb/3Aj574fPa3nvgUX+IETzIwVeYYS8E3Ce+TQNz3nLDyNJ5hLIeQgv2H/OsTuHRrgaSkGMpKptbmNo62Ng62tk52lvbWxuYmRqZGplamFvYQGPbODo6uTs4eLm4r3D3WLF+5YfXazes2bN+4ccemTbu2bNy1fe2O9RsOW+0OZhy7Tr18X+nuE+XQSOVn0cqRCapRyarRbJU4nmpcunJcNiM2lxyTj48uUnxRLPmiVPxFhUREJQithMb7H1RCdf/D/8BAFcTAvcpvulsBbgva4pslf3QFF3J+dAWIIK50AEfBLwV3JAF34AXRM4hA1ZOBd40hltrff1EAoAeASkqSoMdAmFg72Ng42Ng42hqaGatoqDG1tYzNTcxtLCztraztbe2cHBzcnVwEk2UeazyXr1u5asPqlRtXr9qyZt3WDeu2bvTc5ezmr7I2mLz7CtX/DuNsqNKlcKWbUSp3Y1UeJCqFsBihXHoonxKaQQjNUXicJxlSIBpSBB6XiYRVgJBKaMDnQeW3yudhDaRHAgnPhVQIc4IQA6g5LoMwuFb8DQPhFMFpwTxxAEfBPwV3NJG4N5zocBCLU5GBP3QMsdQW/4sCgECi5BTktQ31LGwtLe2tLe2tNXW15RTk5RUU6coMbT1tI3NjC1tLG0dbOxd7qEMQThes9HBf7em+2tNj7fIV61at3rDWY6urzSGm7XGS+xnSukvUXbdoBx/Q/cMYJyMYwS/pF+OpV5LJ1zjE6zzc9XTMzSzEzRxwMx/cKgJ3S6G1bvfLIWdDAFQLrF8LQupASC2kx3XgcS0k4ctHteBh7bc+AWoPyqEWWdgbXBJMFQdDU8XoQGiqWN43CXcgkmS7S1GeIikBP1UXufRG/+sBgIB2hKkw1UwszSxsLc2sLVSZ6lIyMhIopKSsFI5IUNZQ1TXSM7E0sYLKIYgBaMrM09VluZsr1Bu4u6/09FyzwnmbveUhVUt/ol0QwfUMefUl8qYb1F33aAdDqUfDaceiqEGx5DNJ+GAW9hwXczEddSkLXMkF1wrAzUJwpxTy8R8ACL0u9H0dpNDvR+HJYwEbj2q+NQlCDKBsUPRtnDQ4U+R0+rITXFQgG+Ofgt1xH2e0CoMhoWEGEEtt9L/onmAimaRvZGBua2FiYcJQUUJLSn77EgolJSujiMfRlekaOpr6xgamVmYWdlZWjlCxZOtoa+1oZ+NkZ7/a1maPoakPxcyXaBVAtD9JdD5LXHGRvO4GZct9itdj2v5wyqEXZN844rEk+SCW7Cku6lyGyIVsaIHDtULIu7fLwN0/ASC85QsdD6kehAn0pB48afh2Hlr/nYRaqEy6X/kHBpeEFVHGt67AL0lh1yO82Xp5BaoUPDmAWGqv/+UAQKCQ0nKy6ppqJlamBqZGFDoVifrTNCr0sdUolKSktKwMBitPJJPoynQlNRVVdRVlNWW6KoPGpGnY0/wL7QoAACAASURBVA29qMY+BDNfgsUxonUg0eEUwfUccfkVytpb5M0PKDvDyHsiSN4viT4JCn4psoEc1Gm+WHAmNJJztQAa2LlVCt3IoQagWlD21IKwWhBWJzB9A3jaCOmJUA1/SIiBkASoYRC0y7fLwI0SQUUkWDt0JkP8ZJrsMZb8roeKFpswijTo4dLwYiHEUjv+rwSA4FnQOBJOz1hPz9iAQCb9379BAoGQgHZQIhAQDGiUpCRKUkpwgkai0TJEKZq9vMFegokP0cyPYBlAtDtBdDxDcr1IXnGNvO4Oacsj8o4npH2RxIMxuCOJ8v4smSAu8kw6ZNArBeBG0XcABA1AiPDeXw/ChEZv/AOAp01/0veLwoQgbBUe1X6ri34MGV0vFrlSIH0+W/5UGvbQc6zTAUWGgaykLPxoUeSSm/6vBAASqviVNVS09LTxJOL/7nslUEg5mpT6KqzhQbypL8HCn2R9nORwiuRyjuh5hbT6JnnjfcrWULJXBGlfFN47XvFostxxDvpUmtj5bGibi7AKEmYAqP4RlD0/bvNPG8GzJhDRAiLbQFQ7iOn8Q9GvwcsO8OIViHwFwlsgKn4w86wZuhLeinraggmtx9+vIt0sIV7MIfrFEtefJaiZYaQw8PYx5JK77i8EAAKFxCgqEClkjIL8f+PtKBkUTlNGawve5AjRXNAJ2J0gOp0luV8irbhOWX+PuuUxeecz4u4XBO9Y7NEkTABb6iRX/FwWtMj5WiE0kvMDgB9F/5MGEN4E+Tv+LWD3A94IyBgHmVPflDUFsiZB+jhIGwXcEcAeAEm9IO4tiO2Ejkk9osl9Min9xJReemKPUuxb5chXKqH1jFultOAMyrbrBF0nBUlZeK0EcumN91cBQPCxAGhpqLD5771dSh7NsFMw2k+08CVZ+hNtggRV0AWS5zXKmtuUTQ/JO54Sd78geguqoGMs6RNcieBMaNBGCMA9QQn0o/551gzd3RO7QeogyJwAubMgbw7kz4P8hT9UMA9dyZsHuXPQN2RPg4wJEf6YaNqoRNqoTNoYlj9G5o0wOMMqrEHV5F6N2C7m81fqIfXKl7Lp++5TjD2xijQpFDxVjFx67/0lABDW+v/99yIRGJqU1kacqQ/R3E84HERwCia6XyKvvklef5+yNYzsFUE8EIU7HK/olyIblIo8mwHN4wr74G89QC3k/ohmkNAF0kage3zeLChYgJS/APKEEpgegkHAQ97iNxgK5kUL5sXz56TzZvA5M9jMKYWMSVzaGIU3SuOM0NkDqin96om9GnHdGs871O9XKR2NpLkeJFC15JCScDmEhAH4H4cAgUTJomjWGMM9eKgV9idYBxEdzpDcLpBXXievv0vaEkLe8Yy49wXuUBzWN1kuMBV1Jl3kDwDKoRLocS1U7id2g7QR0ewpkDsDAZA3J5DA9392P2T6H0jMgXxIogVzqMI5xfw5XM4MJnNKLn1Cnj+hyB3Dpw7TOIOMlAGl5H7V+B6NF2/U71epnEymrw4gaJjLoeD9A0g4A/zPQ4BCYpSlNTdgTY8SzX0JlscJ9qdIrufIy6+S194hbn5E3v6EtDcS7x0LAXCcgz7NFz0vAODmdwCeNYL4N8u4g1LpY+jMSZHsaYiBnDmQOy/09zfrF37XH8lhHvqeXAgVkYI5VMGcZO4sOnsGlTW9LHNKij8uzxvHpo4SOCMU9hA1ZUApqU81pkv9WYvK5Uz6zutEfRd5BbIUPFOG+MlLoP+50Bg0zQpjtJ9g6kswDyDYnCA6niW5Xyatukna+IC8LZTkFUE4GIMT9sEQANnfMsCdMvCoGkS1oZO78ZxBhbQRyYxxsaxJkDMtAECYBL4DULAAihZA8YJo0aJY8eKyosVlhQtihXMieXMgZ/6bcmdBzqxo9izInhHLmEKlT0imTUjzxhW4ozj2CIklwCCxV+VFh/KdMvqRcLLTbhxZXQYNpwIkDMD/LAnIK0lrb8aaHMGb++OtgwgOp4luFwjLrxHX36NsfUzcFU448BIv7INP86GRUGgqQJABwupEo1+RErsorD5s6rBs+qhExjg02pMzA3JmIUNDza7gTp8/DwFQsiBeuihZ9l6u9INC2XtM2aJsyQK6YEE0Zx5kzX3DJmcWCBgQyZwSTZ8US58U408geWPy3DHF1FE8e5jCGqQl9CqFtdBPp1JX+OFVjDFoaTQ8U4aAM8B/OwSSGEkVNwWjg3hzf4J1IN7+FMEFmhUmrbtD3vSItOMpfn8U3idB4RhLGpoKyAKXC6BFnffKwZM62ag2SvxbYvI7fOqgfNqwTPooOmN8GTTiOQ2yZiAr5wjzgCAVFC+IlS7KVCziyz/gKj7gyj8QK96TyhcVixfE84RJQIBBzhz0xqwZSJnTIGNKhD8hkTaOThuX4Y4pcEYI7GFSUj8lvJUSzCNtOE/UsMbIKAoYgNfPIf8PkfDPKYGgFUSSSIqZnP4unJk/wfI43u4E0fkcyfMyee1t8saHxB1PCXtf4A/HKxxjyZxMWxYsAOB6MbhfLh5WQ4lqocd1kpLfkTgDRN4glj+KSR+XypxEZU2JZk2DbEE/IGyL8+dA4ZxI8QK6fJFU+Z5S8Z5aAR0pldAJXshA7vw3AKA8MPNnBkD6pEj6JFKQDeS4owrcMSx7mBDZTr2YTdl4kaTtpCClAD9tFwkD8N8CAI1UUJFmrlU0P0qwOIa3CSQ6nSF5CAZDNz4gbQ8j7YkkHorD+qfInuSJB2eBSwXQVMC9UtnH1fTnTcqxHfSkLhqrl546QOYOE3ij2PQx2cwJyawpRPa0eO4MIndWIm9uWf6caP7csvx5saIFmbJFgtD6ldCRUvmBUvFBsXhh2Z8ZyJ6D6iJIf2QDkYxJkD4pyp9Apo1LQglhFB/TRbpeSNn7iGK6DotlSKPgz+FDwhngfzcEKKSkPFrJXt7Em2Duh7c6TnA4BbUBK6+T190lbw0lej0neMdAA0FBXIkzGSIXoSVxIrcLMQ/K6M/qGC9blRI66ck9Suw+BmeAmjpEThshZoziMiew2ZMKOVPyOdOyOTPovFnJvDmJvDnxvDmxgnlE8YJs2QK2YpFWsUguf48rf48tWUALC6EfyhZgkP0nBrJmoGwgSAii/HEUf1w6bUI27h3ubjnZO4JiswOPV4E+lBt+3CLi/2cM/lElEFQ6o5FkI1n93ThzX7zVMWiBtEvw98WhIUSvcPzBl9ijifLHoWWhohdyweV80Rt52LtFjCfVSlHNyvEdjKQu5ZReBruPzhmg8YbI/FFS5jgla4KcPUnMnlbImZbLmcHkzUoJABDPmxPNmxPJn19WNC9bsiBfvCBdvIAqmBfN/X8A4BsDQgymvzMg6A34E1K8cZmkfoXQBsKxWLLbURJVWw4phYL7AQQMwH89BBISSEWmjNZmnOlRguUxou0JktNZosdl8ppbpE0PCTueEQ68xB1JUDjOkYQAyAGXcsWuZONv5iuHVCpFNqrFvlJN7FRh9aix3qmx+5Q5g1TeMDV9lJY5Ts+epGVPkrKnsNnTmNwZ+dwZ2dxZdO4sImdWDGqRhSNFP3rfP7v/XwGA2uLvDGROC9YXTQsbg2XpEwj+JCp1VOb5K+w5Ps3Dj0TVkkPLouDPpkfAGeC/CgACWh+qsRprDC2QhnYI2J8muF0krrxOXH+PtC2MsC8SfzgOG8CSOsmDlsRdyBa7lIG/lq18v1TpWa1aTCsz/jUzsYuZ3MNkvdNg9amwB2jcIRp/RClrTDlznJE5QcmcVMyaVMyeEmYD2ZwZqZwZkZwftY3A3P/i+P9UPxj4gYGwHJoQE5AgldKveC2fuv4cVc1CAdpcv+TZFfnP1D+rBBIsi5AhoJXdFIy8caZH8VaBRLtTRGgw9Cph7R3S1hDinnC8dwzUBwelIs5mgnNZohfSsZczlG8XKIdWqUc1ase+0ol/o534VjulR4f1jpncq5zST08dVEkfVc8cVc8cV8kcp2ZM4L5hMC2fNS2TNS2eNS2aPQ1VNZmC47eRH8EQEHT+/a4vtL5waOjH6JCwHBKOEWVMCicNUBlT6KQ+hZtF9A3nqcqmGLQcnAeQMAD/6xBIQFPCKKq1nMF+rOkRnEUA3uYE0VkwJbz6FnnTQ/Kup4QDUYJ10RzJ0+miwZkgOE3uAk/pRrbSgxK1iDqtmBbduHbd+Nd6SW/1WN06yT0aie+Uk/uUuEOq6SPM7FHNrDGNjDF6+hghYwKbOYnLnJTLnJTInJLInBIR1jNCBn6Y+18Y+POVP33DHwBAeUCMP4HmT6D4EyjWIOZWMXXzFbKKuTwaAw+PIuEM8L8OAVIKSTSS1duFM/XBW/gTbAIJTmcIbhdJK2+QN9ynbH9C3PsCf0QwHXYyTexsBjjLkwvmKF1JV75ToPqkWjOqUTe2VS+2XT/xjWFKt2FKj05Ct1p8j3JKnxpvUCNzRCtzVDtjVDV9lJ4xRkkfJ6dPKGZMyGdMSmVMIjOmJDKmRP/A4Pvd/Y87/Y+XP47CdDH9RyEkmC9D8Cek+BPojEl0Yq/8zWLK6pNkmp4cvIIaAZdA/5UQYJmy2ptxJj54c1+CNbQwDu9yDr/8KnHtXfKWx0SvCPyhWAXfJExQKvI0X+QMT+oUi3YuVflapuqDEmZ4rW50s35Mq0Fcu1FSpwmr2zihSzv2rVpCj1ryO3VOvwZ3kMkbUksbVkkfUeKP0vmjFP4oMX0cmjhLH5dOH0ekjy/LmBSBBBla5FtmEG6mmRbspxGmCOH59y9BErxL0AmI8yck+eOS/HEJ/rgUZ1jhbhltfTCFoi2LhOcHkP9fYvCP6wEEkleS1liraHyYYOqLtwgg2J4gOAUT3C8RVt8ibnpI3PmUcOAl1idBIYAjdZIvejoNcSqFeCZF5WKayq189dAK3ch6g6hmw5hW48QO05RO04RO/ejXzJi36vFdmknvNFJ6mZwB9dRBdd6QatqwctoII22Ewhsl8EYVeWOyvDFk2hiSPy6RPi6RPiGWPi6eMS6WMQkyJkHmD/3heKEEtAisnz4hxp9Yxh9fJrA+Km0MlTYmyx+XT+7DXcujuBwk4FVl4EEhBAzA/3sIZAiSKq7yRofwJkdwZv7QlLDDaYLrecIKaGEcadtj4t5I/KFYrF+ybGAqEnrUcwomKF45mK12JUPtQZHWsyrD53VGL5uN41rNkjosEjtMo9v1otq1Yt7oxL/VSuzRSunVZPUy2f3qqQPq3EFV7iCDO0RNHSaljuC4w/LcEWneqGzaqFTaKIo/iuaPIfhjIuljIunjIhASE2IZE2KZ48sgMMahzZbpE6Lp42LpkOnF+WMS/DGJtDGEwPoI3hiaN4rhjsjzRuVYg4p3SilrT5AwZCnxpb7FIP4p+mdmALQCmmqLMTiANz6MM/UlWEGDoUTnc3jPK0RoRuwR0SsC5x39fYswTzSIJXU8ln4qUe0CT+N2rmZomV54teGLeuPoZrP4NovEdrPYNqMXbTpR7VqxrzXj32ol9WinQBgwWb0a7D7BjMEAgzNA4wxSUwdJqUPY1GEcbxjDG5FKG5FOG5Xij0ryRyQFMKD4o8j0UVTGKBp6OYrijyEFpkdAGkWmjaG/aVQybVSKNyrHG5XnDitwh7HcUSxrgHAzl2KyHCut8O0BSrAQMAD/MQQoqA8mGMrpeOENvfEmPtDjUmxPkpzOQhMCq2+QN94nC1eGHknA+qfIBHGXBbHFj8UQjseoBrM0rmZo3ivQelJu+LzGJLLB7GWLeVyreUyLSWSzXmSLzss27Zh27fg3OolvdZK7tZN6oKIo+Z0aq1eZ1ctg9TFYfRROP5kzQEodwHEHsdwhed4QhjcsxxuWSxuR449K80cl04VIQCdCCV9K8b9f549Kpo3IpY3Ipw0r8CD3K0IADBF4QwRWH/F4JNXYXRHaSgYvGkXCAPxnIZBAILBMGc3NWIODBGMfaErYJojscJrkcg56XtB6wbqgPc+Jh+NxfsnyxzmSxznifrHyfi+UTiWoXeJp3sjSfFik96zCKLzaNKLONKrBNKrRJKJBP6JR70WLTlSbTvQr7dgOnYROnYS3OgldWoldmsnd6sk9KknvlFnv6Kx3NFYvhdNH4vQTOP3EVAgGfOoAnjuE5Q3JpQ3L8EfkeUPyacOYtGHptGFZgcvlecPyaZAwwnPekCJvSBF6y6Bi6iAeSizQzyFxhwgvX1H9wyiqRjLwoBACBuA/DYE4AoFRktZYpWhwAGfsQ7T0J1sHke1OkpzPEj2vktbcpWwOIe98Rj4Yi/NNUgzgyAamivslII88pwS+VDvHYl7ha97K0XpYrP+k3ORZlVl4jUl4jeGTaoNntfrPG3SfN+lCqaBVJ7ZdN65DL+61TvxrrcROZtJb9eRu1ZRuJVY3ndVDT3lHZfWSWL0kdi+Z3Uvk9BE5/QRuP447gOUO4LgDOB50VOQOYnmDwitYKGMM4r5pAM8VYjOAT+0npPYTU/tJnD4Ku4/C7qXGtNF2XyAytAUL5uBCCAn3AP8xAyBlKVAfbLgfZ3qYYOFPtA4i254gO54he16lrL5D2fSIuvMpef9Lsk8iIYCtEJgq5ZeEOByJ83uueipB4yJX62qG9u0cvQeFRmGlJqHlRiEV+iGV+mFVeuG1+s/r9SMb9SKbdKNadaPb9GLbdWPbteM6NONfM5M61ZI6VZPeqqR0KaV0M1IgDGjsd2T2OyLnHYXzjpLaR0ztI3L78dx+PA86Erj9BOEJdIS8Dl0XKhUSIbWPkNpL5PYRuH0UTh+V3Utlv6OweughxTSvYAKNKYOShjfQIOEm+F9DgEBK4tAUG4z+XrzxIZy5H8EykGgVSLY7RXa9RFl5k7bxIWX7E8qeF2TvOJI/CxfIkfNPWXbohfShJ4zAlxrnUjQvcTWvCxi4l29wr1D/bpHuvRKdh+U6YVX6z2oMIur0Iup0Ihq0XjTqRrfoRrdqR7dpxrzSiO9Qje9QT3itmvRGOalTKalTOfktI6WbxuqhsCHROD0UTg859R2J+00E7juc4ITI7SVyeol/+hIptZfIeUeC1ENOhd5FTn1HZb+jsnpo7B4a6x39aQVtSwBekSy1TAKaAIRTAQIeBfoBAFoOTTDC6HrhjQ4RzP2IloFky0CS3Smyy0WK503a2gf0LWE0r0jqwViybwoxgKN4jI089HLZvhD80XDVkwnq59jMK2maNzN1bucY3MnVv52rdztf+26RzsMyvaeVBhHVBs+r9cNrNCNqdZ7X675o1H7Zohndyoxt04hrU49/pZbYoZLQoZTUoZz0Wjn5jUrKW3rKWxqri8buonG6KZxuSmo3lQOJktpN5HSTUrsJnG6S4CX01W96RxYAA8HD6oaOgpdUdg9UYkFV1lvGw1z6Gm88Bgc9eRcGAAED8CMESEmkooa05ja84SGCqR/RPIBoAbXCJKfzVPdr9NV3aRtCaDsiaPuiyUcSSf4s4jGWtE8s8HqM3hdC849SP5WoeZ6tdZWvfTNL/1aWwe0cvZs52jfztO8WaT8q0Qkr139arve0QudZpfazaq2IWq3IBq2oRq3oJs2YZvW4VtX4NuWENqXEV8pJ7UpJ7YyUDiVWByPlDYP1hs7upLI7KamdNE4nLfUtORU6J3M6CamdpNS3ZI5Q0BUKu4vGeksXHMmsTjLrLRV6+ZbOgliisjpp7Lc0dicjtIDushUrpygJb6hHwAD8OQSydGmN9TgDIQDHCGZQJ0ByOgcBsOoObf0j+vZw2p4oyqF4sl8K0Z8l7xMv4RUmtus+9tBTlYBojdNJmhdTta7zdW9l6t3O1ruRrXMjW/NWnta9Ap0HRTohJTqhZdpPyrWeVmiGV2mF12hG1jFfNjCjGzRimlTjmlXiW5QTWpUS2xhJrxjJrxjJ7YyUdgarg87uoHFeU9mvqZw31NTv4rwhCUTmvKEIBJ2w39DYbyBaWJ1U9hsqS6DvJzT2G5rwe5JfMS68pJi7yUvKwkkA+b/LwD9zIky4M0aGIKm6UtHIm2DmSzTzJ5n6Ei0DiA7BVLcr9JV3GOseMbY9Y+yKpB2IIx9JJvml4I8mSu0LB9vvIPbcIx99rhoUp3EuSfOygIGbWbo3MnWuZTBvZDPv5Gjfy9N+UKgdUqIVWsp8UsZ8Uq7xrFI9opr5olbjZZ1adL1KTKNqfLNyQotSYgs9qZWW3EpNbqOmtFHZrwRqp3PaKexXFE4HWSAqp53EaSdyOkiClyThCbuDIhCN3UFld1BY7WSBKCzoInSFDf0QKruDHt+odDKUomUih5aCH6yChAH43gcroJVd5A0PEkwOk0x8iNBnCPiT7c6QXS7Tlt9mrHnA2BTG2PGcvj+WeiiBciSZ6JuM8Y4S335PZOs1zIFHdP8o1RNxasHJzIsc7Wt8net8nSs85tV05s1MzTvZWnfztB8UaD0q0gwpZj4uZT4tV4+oUIusUn1RrfayVjWmXiW+gZ7YSE9qpiY3U1nNJFYLmd1C5rRQOK1kTis5tZWQ2ob/LpJAxO/Hb1c4r4icNjL7FZXTRua0kVltJFYbKQUShdVG4rQRWW0UdisNUhv9ZRn9yFUS00gWagbgfgD502cAaEGELIpqg9HfTzA4QDA8QDA6TDD3I9ucpDhdpHncpK+6x1gfwtjyhLb7Be1ADM0nkeyXTPCJk/V6LLrhMmLnLYLPE0bAS9VTcRrnkrUup+pc5WlfSdW8wtW4zte8nal5J0vrXq7WgzzNh4XMx0XMJyXq4WVqkRVqUZWqUdVKMTVK8XX0hHpaYhM1uZnCaiKxmkjsJjKnhchpwaa2YLmtWG6bQK14XiuO24rnthIEwnKhl4LzNiK3jShABRK7jchuI7DaCGyIJQoHYoDAaaGwm6nsZmpKAz2ykLbjGB5PlVry9Iv4++gfWwIJ+mAU0UhWxwuntxentw8vaAZIVoEU+2C6+03GyjtKa+4x1j2kbQmleUVQvOMpvslk3ySFA88lNlwHGy9Ke90m+zxlBEQpn4xVO5fEvMTWvMjSuMhSv5qqcSNN7Xa66r0s9Qc5Go/y1EPy1Z8UqjwrVn5eqvyiXOllpVJMNSO+hpRYS0mqJ6U0kFgNRFYjjt2I4zQpcJvkeM2yvGYZXrMsv1kurUWe3yLPa1HgtSiktWDSWjC8VnleK4bXiklrxfJaFLmtuNSWb+K04NktOHYznt1M4jQTOc341GY8p5nAbiKyG8msBkoYn7x8u4IiSRL6eFY4DyB/bgAQSGiDvOZmrO4enO4+nIE3wdSXZBFAtjlFcblK97yptOoOY809xoYHtG2h1P0x1CNJFN8UwqFoyU13wapzousvyO+9R4HyQJTyqTjVc4nqwQnq5xJVL7FUrqYq3+Qx7qQr389UeZSlEpKtEprLeJJPDy+iR5bSosqUYyqV4qvICdWkpBpcSi2WXYdl18tzGjCcBgVuo0xao2RaAzqtEZnWiOQ3Sac3S6U3SaYLTtKaJfnfJJ3eLMNvkuE1K3KbMNwmTGqTArdRIbURw25UYEM4EVIbFXmN8rxGeeh6gwKnXpFVg7sVS3BYhZGUgTbHLXn8EX95/XMBQCElxJFyVEmV5Qq6giRgeABncpRkcYxsFUR2OEd3uUxffoO25h5j/UPG5hC613OadwLNL4XiE6+wI0R01QWw4hRiy0X8vjvUI2G0gBf0E9FKJ6OVTsfQzycoXUlWus5h3OYq3U1jPOQrPcpgPM6iheVQn+ZRIwppUSX02HJ6XAU1oYqYVIVLqVbk1Mqn1smm1slyG5C8+mVp9ai0ehS/XpzfIJ7eiExvRGU0iWY2LctsRGQ0IjKbJITKaJRMb5ROb5DhN6D4EDAyvEY0rxHJbZDlNiikNuBSGyAA0hox0Jca5Lj1GE6tbEqFzMUwRQsHOSlZeCs98icGQDAQJI2XpNljtHfh9Pbg9PdhjQ6TzP0pVscpdqcojueo7lepq27T1z2gb3xI3RpG2fuS6pNE8YnHej1BrLsG3E+AVadktl8m7rtN8gkhH3tGCYignnhBDo6mXoynXk2m3mTRb7Np97iUhzxKSDrlcSYpLIcQkYePKiTFlFASyvAJFYTkCmxKtSynRppbg+TViqfVifLrAL9OjF8nmlELMmpBej3IqBfLagCQ6gUSnjeCrIZlmfUSGfXiGfUiGfUi/HrAh44iafViafVoXoMMr16KVy+dVi+VVo9Iq0fw6lHcGhS7EhWXJ+l7HqOsIQUlAbgQQv6sAEDzwRg00URObzdefx9efy8OGhL1I1keh1phh2Ca62Xa8pv0Nffp6+7TNz+i7nhG3feScjCasDscveWe6Ipg4B4otv4MZscV4t4b+MP38b6PCQFPSSeek85GUS/Ekq4mkG4nk++kkO9xiI/ScCF8fFgGLjwLF5mLiy7AxhXLJ5YpJJfLsipQqVUSvGpRvsDxGbUgsxZk1kDKrgFZtSC7DuTU/6Hchj+UI0RCoMy6b0qvB+n1Iun1gF8nmlYvmlaHEBIFHasluJUIVql4BFdy0x4ZBTy8jx75EwMAbZBHKTJldHcRDQ6S9PcSDA7iTXyJ5sfIVieodmdozhfpntcYK+8woInhB7StodRdEeS9L4h7n2N2hCDWXQduJ4HncYlNZxW9LhH238Aduos9+gh/PIxwKpx4Lgp/ORZ7I4FwJxl7jyX/MFXuMVc+jCcfkS7/Iks2OlcmtkAqsVgyuXQZu0yEVwH4VSCjGjJ9VjXI/lfl1IK8uj9UIFC+QMIrubXflFMHKbtOgEQdpIw6kFErAhFVCzJqQEa1SFqlSGq5CLtE5OYzSVs3GSn4mULInxgABAopQ5HS2IjXP0TU20/Q34sz9CGYHiNYBpJsBFWQ62W6503Gylu0NXdoGx/StoVRvSLIe17gdj2T2nIfLD8HnPzAigDktmCF3Zex+68rHr6j4P8QeyJM8Uy4/PkohSsx8jfi5W4nyt5Pln3EkgnjSD7lSj3nI6KyELF5hosxvAAAIABJREFUqMQC0ZQiwC4FvHLArwAZVSCrCmRXgRyBcqtATjXIrQZ51SC/RuD7WkiFdQLVfn9ZAx3zf+g7GLkC5dQKckgtyKmBWMqqBhmVIK0cpJWC5FyR09eQ2gaCj5+BCyHkTwmABAIpiUUreyjoexP0DxB090CfKGzsS7A4TrI5SXU4S3W+SPW4Sl9xnbbqNnX9ffqWUNrOcOqeSKLXc8z2UMT66yKuQcD5KFgTiNp1XnHvZQXv65ijd+WPh2BOhckEh8tcfCF9PVr2VpzMvUTZR8lSYaxlT9hiz7hikRliMTmiiXkiKQWAUwx4ZSC9HGRWQL7PqxSoCuQLVQkKqkBRNSiq+abiWkjQSQ0oroaORTUQBpBqBRKc/0BCCENeLcitgaDKrgCZ5SC9BPAKwUsW8DqIJNMkUfC2AeRPCQA0HSaDoljI6e7H6+7D6ezGGuzHGfvgLQLI1ieo9mepTucprhep7pepy69R1t6hbQ6h73hK3R1J3v1ccddT2a33xVadBw5HgYO3yIbjkruCZfddkjt0XdbvrtTxh9InQ6XOPpW6/Fzq+kvknVjEgwSxx0kgNAU8ZYHnXPAyA8TngJQ8wCkAacUgoxRklYPcCpBfAQoqBL6vhE4KKkBRJSiuACWVoKQKUlkVKBWovBo6llVDV6BjNSir+aYSIR5CZmoFqoEoKqyCfn5uOcguARmFgJ8HQiPBpm0SWLgZQP6sACDQSBxTRnMLVtcLkrAVNvcjWwVRbc9QHM5RnS7QXC5Q3S9TVt2ibnxI3/aE7vWcujuSsCdccXsINBzkFASsDgKXQyKbApF7zskcuCR1+Lqk322ZwIfoU6HI88+QlyMkbkYtux8LHieCsCTwJBlEsMHLNJCQCZJzACcX8ApARhHIKgF5ZSC/HBSUC6xfDgrKQGEZKC4HJQKVVoCyClBeCSoqBKoEFVWg8oeqQZVAFdWgogaU1/wLFaUCWkqqoJ9WWAbySkBOAcjMBZx0cPeRiLUdEoWGR0WRPyUAEkgZoiTDVV5ri6LOTqzuHqz+foLRYZJZAMX6FNU2mOpwju50lupynrL8Gm3dXfrWUPquCPqeKOq+F4RdT2Q33RNZfgHY+wPL/cDZG2wNEt8bjDpwEXn42rJjt8WC7i07/UjsXKjYlXDRO1HgcRx4kgCeJoJnieAFG8SlgeQMwM4CvFyQngeyCiFf5peCwlJQVAKKhMcSUFIKSktBeRmoKIVUWQaqy0BNOaiuADUV0LG6UqAqUCvQtytVoKoSVFaAysrvhFSC8gpQVgb9tJJiUFgAcvJAdjbgpYHTwaJMbRQafqgW8ucDQEICekoKyVJWfaOC9nZFwcoIguEBoskRaFmE3RmoELI/TXE6S/a4TF11i7YxhLEjgr47ir43iuQVrrAtBA0NB50BNj7Aah/w9AHbTyzbd0784EXRo1dBwE2RE3fB6QfgQii4EQ4eRYOncSA8HlJEIohOBYlpgJUBUrMAPwe6H+cWgPwiUPhdxQKVFEF+LS8GlcWgqhhUF4OaUlBbBurKQUM5qC8HdWUCVYC6SlBfAeoFX6orB7XlECc1ZQIkKkBVOQRPVSmoLAXlRaCkEBTkgdxMkJUOXjwHXl6iJDIC7oYRPxsA0Mdoy6AUtKVV12G0tivq7MTp7SEY7IeWx5n6kqyDyDanoK2SDmcorucpy69S1z9kbA9X2h2ltDeaujsSv+uJ/JZ7y1ZfAc5BwNIbWOwByw+DnSfE9p9dduiCiO8VEHgDnLwNgh+Ay6HgTgQIjQbhseBZDHgSC6KSQSIXsNJAajrgZ4CMLJCdA3JzQX4eKMwHhXmgKA8U54GSPFCaD8oKQEU+qCoENcWgtgTUlYKGMtBYBprKoaNQTQL9+aSxDPo2ISG1pRA5NSXQT6guAhUFoCwPFGeD/AzAZ4Gnj4CrsxgGgxSHhoeX+o+C/KvoJwAA+uwwlAxFiuGBYW5V0N4OdQIG+7EG+/BGB4imRyEGbE+S7E6SnM6Q3S9Cz4zY+oyxK0p5TzR99wvirnDFHY9RG/4v9t7Dq80rz/9/g21Qoaj3ghBCIIFEk4TovRcB6nQwHdvY2AbTTDEYML25lyROHMeOK7bBuOBeYjt1JpPJzH6/3z2/9mf8ziMns7O7szuT2dnNTAznfZ7zgJEMl8/rftq9zx1zy+5D0g4YamCsQkEzKtrd67rcmnqxfQC7DqBjFN0TGJjB2BJmjmH2GGaP48gZvHcO5y7gwiVcuoQrl3D1Cq5fJWbl1eu4fR1r1wkDvbOMu8u4fxMPbuLRTTxZxbM1vFjDyzv47C5e3SP0+h5e3/13ukPo1V3i217exfO7eHYHz27/oCcrxLut38Dda1i5iCtn0dcBTciWjWOXPN81AFzPTKeIYn0DzYxgByuknKmtYWpruGE1vMh6XkybMG63MH63wHWekjB3SGyek5Yek1WelFUcFZYfYVcsMR0zpKJhZO1DQit01YitQkETKvegvgstvdi+H+1D6BxBzzgGJzEyh4klzBzGwgkcfw8ffYwLFwldvIBLF3DlU1y/jBuXsXqF0O0ruHMVd6/i/jWsX8f6Mh7ewLObeLmK12t4fdt1XcMblz7/UV+s4cs1fHn7B33u+tdXa/hsFS9WXLqF5zfx9AaeXMeja7h3Cbc/wbkjqLK7MZmeG07A850CwJNEInuR2SpveT49yM5QOZnEAulqtraKE1HLM2wTxe4SxbUL49v5KR2izD6xaUxqX5JVnPQvOyIpXxJUHuZULPhaJzYXDiGzk2DAUIO4KuQ3onwXGjvR0o0dfdgz4GJgDAMTGJ3F5AJmD2PpOE6fwYcf4sOP8NGHuHAOl8/j2idYvoCVT7F6CWuXcOcS7l/G+hU8uEpo/RoeL+PFDbxewRe38cUqoT/Y+pe38dVtfH0bX68S+pVL3/z4lc9v4bMbeHkDL5dduo4X1/DsCp5cxoOLWPkA80OIj97ks7F5kvSOAeBJInnzKOJk30CLKxCqYGsq2aFlbG0lJ6qJT7QFdgli23iJu4WpXaKsAXHRlNR5xN+5IHXO8yuWOJWH2aVzFOu4W8EAMjoQ1wxdFQzlyK5D5U40dqC1C2092N2HzkH0jGDoEMamMTWHuUUsHcWx4zhxEqdP46P38emHuHoO1z/GzY9x6xPcvoC1C7h3EeuX8MClh5fx6AqeXsWrZXy58oOhf+MSYeur+GoFv1rBty795hZ+s/KDvl3FN7fwxXW8uoZXV/Hqyg/67DJeXsLzi3j0Ma4fR2cTAuVbNtbJeb5bAHiSyN5kjsZHUcAIsjJVDpbayVI7iMJoeB1Xv50fs5Mfs4Mbv5Of1CHM6BHnDYtLJqWWabF9Vli6KCg/zKtYojtmPUvGkNePtN0/MlBBMFDRhuZObNuHnV3Y04d9/egbxvA4Dk1hZg4LCzh8GMeOEKWY907gk/dw5QNcO4vlD3HzI9w+h1XX9d55rH+CB5/g4UU8voSnl/D8Ml5fw9c3XIbusvXvbhHXr67ji6v49TK+v4nf/ZG+d33DN8v4/Ao+v4w3l1z6FJ9fwutLeHURLz/Bww9wdhzOPDcu23Njw8C7BIBrXZA3jyJNoiuL2UEWVpCNqbKziJSgkhPZSBylYWjmGrdxEnYJUjpFGb3C3CGRaVRkmRLZ54RlS9zyI6yyRR/79Kbig8jpJYpCMY2IrIa+Apm1qG5D815s70DbPuzuxr796B/CwVFMTGBmGgvzOLKAows4togPjuHSaVw9g+vv4eb7uPU+cXP9DO6cxf2PsP4RHpzH4wt4egHPL+DFRcJ8v7mG39zEb28Q+v4mvr6KF+fx5iK+u47/tUzon5Z/vLmB31zHV5fwxQV8cdGlCz/qPD4/j5cfYfUo5vbBGO5O9fL8+f8oP7feJQBIJJI3iR3qLcuhB1mYQWZGsJXojqlLWWHVrIg6bmQ9x9DMiWvjJ+3hpnXxs/YL8oeFJYdE1mmBc55fvsStWGKWzVNtE+6mA8juQfIulx+ohr4SufWo3I7mdmzbg7YO7OlCdx8G3zJwCDNTWJzFkTkcnsXxeXx8DJdP4OopXD+N5dO4eBwXjmHlDO5+gHtn8fAcnnyMp+fx/Dxh6K8+wZsL+Poyvr2G75fxu2X86jJensPTDwmD/v4y/s91l67hn6/hn5fxu2v45iK+PI+vP/lR5/9Fn3+EB8dxeQJtTgTLN20m0qOf/+/yM+rdAsCDTPLikAXR3oEl9CAzPdjCCLbR1Q6GtoyprWKF17L1DVxjKy9+JzdlLy+jh587yDcdFJRMCG0zwrIFIhmoWGKUzZKtE26mA8jqRuoeggF9LdEfyKpFRSta2rFjD3Z1YO8+9PZhaBCjw5gaw/wkDk9jaQqLkzg1h/NLuHQM147j6nGcW8KHC7h6DGuncfc9rL+Px2cJ+37xETFhv/4Yr8/hzXl8dQG/voxvL+GrT/DqIzz7AM/fw+cf4vuL+L+u4v9+q+v4X1cIK3/9AX79Mb79mLj++pzr6rr55kN8dhJ3F3CmD/Z0dx8fzw0ASO+USBQS3Z8qy/FVmmlKi8sJ2OkhDqamjBVWxYrcytY3cmK28RJ28VM7+Jl9/LwhYdGoyDwhsM8KnAuciiVW+SKjdJZsO+RuGkJOD5EPJG6Dfit0lUithaMZzTvRthu79qBzH/b3YKgfYwcwfRAL41g8hLkxLI7j5BTOLeDiEj5ewHuzOD1D3Nw8hjsncf8UHp7C4zN4+j5efIBXH+L1R3jzEWHWX5zDl+fwxYeE3b85i8/ew2dn8PlZ/PZj/PNF/L+X8P9dxf/+FA+P4dYsXp/Gd+fw3Uf4zVt9iN+cJfT1aTxewo0JjDcjLHDTO94Ue7c8wNueAJlOFhi8AwoYyhJmkJnpYoAZWsrSVrDCa1hRRCDEi9nBTdzNS9vHy9rPyz8gKBoTWacE9jlu6QKnfIlevuDjnPGwjKNwiIiF0vYgvgX6OkRVIaUGtiY0bsfONuzeg65O7O/GUC9G+zF1ALMjmHFpfhQnJnBmGqemcHKS4OH9GVxdwOph3DmG+8fw4ASenMLzM3j5Pl6dJcz9zft48wG+dOkr1/WL9/H5GcLQvziDb8/if3+M/+dT/P48Vmfx/hBuTeOL0/j+rEvv47fv4bv3iOtvzuCzw1ibwMV+VGZCxCG6Au+s3jkA3orKpQr0tIBCFwMWZpCVGWxnhjiZmgpmRC07qp5taGHFtXGS93DTu3jZ+/n5B/jF43zLFM8xyy1fYJUv0soWfBwzHpZDMA275exHWgcSd8DQgIhqIhzK3YqaZrTtwO527NuD3g4M7MPBHoz3Ezo0gMkhzAxj4SCOjOH4OE4ewqkJfDSFqzO4NY+1Rdw7jIfH8fQUXpzGq9M/GPrLk3hzGt+8j2/eI/Qr1/WbU/jiBN4cxxcniU9fn8DKDM4O4b39uHaQsPXvTuN3p/H7My6dxu9O4cvDWD+EtRGcaIMlwc3H+93Nht9RADwoJJqM6pdOCyxmKM1MpZWhsjLVNsIPhFWyI2pZ+gZ2TCs3YRc3dS8vs5uf2883jfDM43z7FL90jlu+yCpfpJfOeztmKJbxzQQDfQQDCW2IbkBEDfSulKC6CW3bsXcnutrRtxeDnRjpwsEujPVgog9TA5gdwuERHB/FqXFCZ8ZxfgLXp7EyhzsLuH8Yj47h+TF8dhyfnyIs+9FhPDmCr07j1+/hV2fw7Vudwq9O4qsTeHMMr47i2RLuzWJ5HOcG8EEvlg/i5QK+PY7vT+L3J/FPLn21iAdjuD2Mm/0YLINctHmL5zu6WPodBYAofvhQ2CpvWSZN+WNCrLIx1Q5maDmRDEQRyQA7djsnsZ2T1sHL7OXnDfJNI3zzOM82xSud45TNM8oWGWXzNOeMr3XCq2jEI7ffPX0fkncitgVRWxFeieQa2OrR3Izd29G5Ez270b8bg7sx3IGD+3CoG9N9WBjE0WGcHCWs//QY3h/FhXFcn8StKazNYn0ejxfwfBGvDuP1UeLT29PEp9+cxHdn8N0pfHcC350k9O0JfHUUXxzBmyU8n8f6FG6O4sIAzvXh2gE8ncLn8/hyHr9awK8X8GoK6yO4M4S7gzi/ByVxbjRf4oiBd1DvLgCeJDKFSeZqvQPyfZUltCAzLdjKCLExQ50MbTkrvJodVceMbmLF7eAktnPTOnlZBAO8whFOyTjPPsVxzrJLF9hli+zyeXbpLMM64Vs0Qsrtd8voJMqjsa2IrENYFYwVKKpBYwN2t6JzB3p2om8XBnZjaA+Bwfg+zPRisR/Hh3HqIE4fxKkRfDCMiyO4PoZbh3BnEuvTeDSD53PERH5/GjfGsTqBFwv4zUliUv/tMXx/nLh+dxS/PopvjuKrI3iziGezuD+BmyO4OIDzvbg5hMejeD5G6NkYHh7EvSHcG8CdfqzuR58NWn93D9K76ATeZQCIqiiVSeFH+QTk/+AH1FZ6qJ2hcTLCKliRNUxdPTO6hRO3g5PUzk3fx8/s5eUOcAtHeCXjPNskr3SWV77Ar1wSVi4KS+e4tklG8UFqXv/mzC4ktxMMRNVDU43ISmRUonIr2prQ2Yp929Hbhv07MdSOkT0Y68BsF4704fgATg7h1BBODuC9fnwyhOsHcesg7ozh/jgeTeLptMumR3F1hLg+m8GvDuO3R/H9EXx/GL9dwndL+M0SfrWIrxfwepaY9dcPYXUYV/twuQ839+PhEB4fwIMh3B8krP/eftzpxVoPPtqGuhQ3hq/HO1gSfacBIKqiZJIXnyow+AQWupyAmaG2MUKJzgAjvJIZRSQDLGMzN24HL3kPP20fL6OXlzfALRzmmcf49klu6ZygcklSeVhasSgpm+PbJ9nFIz55A5szupC0GzHbEFkPbTXCKpBYAUsNtjWgoxndrejZhv4dGNqJg7swsQdzXTjSg+N9ONmPE/043kvU6T8dxPIgVoaJbPX+KB4dwt1x3BjB1SFcHsTyEBHHfzWH75fw+0X8fgHfL+C3C/h2Dr+aw5cz+GwKzybw4CBWD+Daflzuwq0e3O/HwwGs78e9XkJ3u7DWidW9mC6FTu7uRX3n1ke86wC8LYx6cSiCaF9FAS3ITA+y0FU2eoiDrnExoKtl6us5xmZufBsvaTcvtZOX1cPL6+eaDvDMo3z7pLBsXlp52L/qiKLysKxsXmif5JSM+uYNemZ2uyfvdovZhqgGaGsQWoHwMmRXoqYWuxvR3YTeFvS3YnAbRtow2Y65vVjqxNEunOjFsW4c6cJ7PbjUixv9uDmA1UHcHSam8+VhXBvCtQF82odPe7DSjxfj+G4Gv5/FP83hd3PE/bcz+GYKXxzCZ2N4ehDrw1gbwHIXrnTgeifudGO9G+tduL8P9zpwZy/u7MGlVjSnQMDc8q6tlN4AwMUAsUyIKjT4KAppgQQDNJXNV+2kacpp4VX0qFqWoZ4d08yJJ2IhdloHJ7OHk7ufW3iAax7lO6al5Yvy6iOK6iOKiiVZ6RzBQPGob/4gKbN7U1K7i4FGggFVJUJLEVcKZzXa6tDdiN5G9DVhqAWj2zGxE3PtWNiDIx042onDnTjcgfc6cakH13txsw+r/VgewNUDBADXB3B1Pz7txvm9uLQPDwfx5Ri+n8I/TeP30/jtFL49hG/G8PkIXg7j6RAeDBDRzo1OXN2D5d2E0a934EEH7u3G3d1Yayc070S80o38jkVBGwD8UT7AoQiifAPyiCZxkNVXZaeFljI0FfTwqrexEMfYzI7fzkncxUndy83s5hIMDPEtYyLHtF/lkrLqiLLycEDFoqx0TmSf5JeMMfIHqen7PBJdfkDfgPBaqCsQXIqIUmRXoKEWnfXobcD+Rgw04WArpnZgtg2LO3G4HUfasdRO3JzZi086cG0frnXhQjcu9hHWf2MAN/bjeg8udeLCbkLL+/CoD18cwG/G8NtxfD+Ob0fx9QjeDOHlAJ70Yb0Ha/twcy+u7cL1nVjdiXvtuN+Ou+1Ya8OdNlxsQGsyOO9YOWgDgD8aDmKlEIUf9WNdyEpXO+ghpXRtBSOimqnbyjI0sGJauPHbOUlEf4Cb2cXL7eMVHRBaxmWls8rKxeDqw6rqw8rKRXnZnNQ+KSgZZeUO+KZ1kZJcDOgaEF5NMKB0IsSOpDJUVGFPLXrqsL8eQ40Ya8ZkK+a2Y2EHlnYQ1/kdOLwLJ9vxYTvO7cH7e3G2E1d6iIz25n7c6MFyJ67txaV2XNiFT3fiejtud+BJD74+gN8exK9H8OUgXvfjeS8ed+N+J9Y6cHM3ru3Ete24tYOw+zttWNuOtVbcbsGcBbFyd18vz3fnvL0NAP7dk+QYZG6ot3+mb7CFprLS1HZ6iJOuKaeHVzOjaliGepaxmUX4gZ2clN3sjE5ubq+gcFBsGZc7poPK59UVi6rKJWXloqJsTuacEplH2fkDvpndLga2E/lAeA3U5VA44G9DmAMFZWiuwv4aDG7F0FYcrMdkE2abMNeE6UZMNmK2BQutOLwDR3fi+E6c2oVze3GlCys9WOnGyj6s7MXNdsKmL27HRy043YhTdbi0Ha/78NshfNOPN734rAfP9uHRXtzfi9U9uLETV1pxtRnXm3GzGWvNuNOE+824VI3dyRCxtmzyJL8jmcAGAH8qFqKTOWov/3QfZYlPsJWmstNDHXRtOSOMqAsRtdGYJlZ8KyuxjZXSzknv4Gb18AuHJOYxuX0qqGxOVTEfXLEYXLmgKJ/zc0wJzAcJBjL2kZJ2b4ppddPVEXWhPzAQYkW6E/Xl6KzCYBUO1ODgVkzWYboeh7ZipAYTWzHbgPkWLG7Dke041oZTO3FuNzH3r3ZjtQsre7CyEzd3EoHN5R34qBEnanGkhshrP+vCr/bjq1683ocXe/FkDx7swZ12rO7AjRZcb8TVelyrx40GrNbjTj1u1eCkGZlB7j7Ud2VxxAYAf3pcKL5khsLLL9Un2OyrstHUNrrGydSUMcKqmBG1LF0dI7qRGdvCStjBSmlnp+/lZPUI8gelJaMB9kll6YyqfF5dtRhUvRBYMetvnxKbx3j5A4ysbu/k3R4xrZsi69zfMqB0QmaFwgKjDVYHdpWhrxzDlRirxkQNRqsxWIHhKkzWYLYO841YasaRFhxtwcltOL/LxcA+3N6D1TbCpm/txI02XN2GC004XYNjVbjQiGd78KtufNmJV7vxfDce78b9nbjTittNWGnEcj2u1uJyDa7UYrkGKzW4VYmD6QgXuFMo7wQDGwD8h0NDopJoMookwSfQ9AMDoQ56aBldW8mIqGHq6pgGggF2/DZWUhsrbS8nq0uQ1y8pGg6wjCsdU8Hlc0GVC4QfKJv3d85ILeN80wFOVo9P0h5KzHYPXYO7tgYhFQhyQG6FnxnBZqRbUW1HpxNDZRgpx2A59pcSOlCGQ1WYqcH8VszXYakBRxpxqgXnduDmLmJGX2vD7W24vR0rO3BjB6634FIDPqjG8TKcr8WD7fiyndCrXXi+Cw934H4L7jRgtQE3a3G9GpercKmS0JVK3KjARSvaouHP8ngXSqIbAPxno+NB8fTmUfg6b0UeTW1lqO00tYMeWsoMK2dGVjOittL1DQxjEyO2mZG4g5nczk7rFGb1SgqH5ObRQPtkUNlccPl8UOWisnIxoHTOzz4pKhrmZfcxU/Z6x7d5Gpo2hdcS/YHgUshtkFggKYG2BPkWNNnR7UC/E/0O9NnRa8OgE+MVmK7CTBXmarC4FYfrcKyOCHhubMe9HbjbgjstRC672opbLbjVjCt1+LAMJ2x434k7dfh8B77YgVc78LQVD5twvw53t2K1Bjcrcb0SV8txuRyXSgldsePDIjhC3GjvQF9sA4A/N0ZkkhebzAnxkmfQgkp8VDbfUAdNU8oIq2BGVDEia+j6OkZ0PSumiRG3jZG0k526l5fVJc7v9y8eVtoOBZXOEn6gaklZtRhQMedvmxAXjfBy9jPTOr0TdpKimz0itrppqtxUpVDa4WeF1ILAEsSbYTNjpxX7zdhvQa8ZPSUYsGHMiakyzFRgrgILVYSO1OBsPW62EADca8LdZtxx6XYDbtTicgU+tuOMBR85CFt/2Yw3LcT1aQMe1WG9FneqsFKBm2VYLsU1B2H6l2z41IpPLTiUCoN4k+8vPRnYAODPj5GHazMxK5AiTfZRFvu6YiGmxskMK2dEVDIiq+m6WoahnhnTyIxrYRCZ8W5u5j5x7v6A4uFA+4SyYjaoeiGoZklRsxRYNkswUDzCz+1npu3zTdzlFd3iEVW3WVPppi5DkBMKO8GApBjBRcgpQksRukrQX4KeYnQXY8CKUQcmS4mVCzPlmK3AfAWWqvDRVtyqx4N6rDfgfhPuNxJT/ko1litw1YmLNpy14KyViO9f1ONNA17W4elWPKrGvQqslWLViZt2LFtxzYKrZly24LIZ5wqwLQpB7M3Er/9zm+kGAD//SJG9Sb5iqiSJHljMVNsYGjtDSzDADK9kRFbRdbVs/VZWdD09tomZsI2dvIuf0SHO7fMvHg6wHyIYqFkKqjkS9LY8apuUFB8U5PWzM7roSe3eMa2kqPrNYTVuIZUILkOgncgKpGbIi2AwwVqEHSZ0m9BTRFz7inHQikM2TDkw7cRcKebLsFSBsxW4VY31Ojysx3o9EeHcqcJqOW6WYtmJS3Z8bCZ0w4nn1XhdgxdVeFqBh6VYd+CODbetuGXGjWIsF+FaEa4U4VIhTmXCEeTG8/H4BQdCGx7gLx4sT6I0xA2ny/O4QWaWykIPsTM0pSxtGUNbTg+vYkTV0HS1NH2dr7GBEd/MSdrBS+0Q5fTJiocVtonA8rnA6sNKok22EFA6LbOOS4sOCHL7OBmdrKR2WkwrSd/orq1FqIsB5Y8MiIugKkRyAarzsbcAPfnoysP+QgyXYNyCSQumrZi2YcaGBRvOOLFchUe1eFiLB7W4V467pVhzYsWBGzZcMeO8CZ+YCEN/5sRn5XhRhidOPLJpfIJTAAAgAElEQVTivhl3S7BahFuFuFmI5UJcK8C1fFzJw2gsogXuGwD8/KT+PYh4tFYoXZ4nDCgUKArZSjNDRSwdpWuILQS0iApaJLFwiGaoo8c0MuJaWIlt3LS94pw+/5JhhWNCUT4XSCQDC8qy2QD7pJ95VGwaFOT0cNM72Um7fGK3k6Iat4TXuodWQlWOYCcUNvibIS2GtBBhecjNRUMe9uQSDPQWYLgI40WYKMFkCaZKMF2COStOOrBcjodVeFqFh2VYt+OeDWs2rLhm92tFuFSAi3mElT+x4JUdL614UoJHRVg34U4BbudjJQ+3snEjC8vZWM7Bx2loVEHo+4vdN7zhAX7KeHmRWME0eb4goFgsyxfK8jmKIlawlR7ytlNWyogoZ0RVMw1bGcZ6RmwjM76Vk9TGz+iQ5u8PKDkY4JhSVMwHVs0Hls8pHFN+1nFJ8bA4v1+Q3cNN28tIavc2biPrXAwQKUE5VE4obQiwQFriLi5wC8hFdA5MOWjIwa5s9OViOB/jhThUiAkTJk2YKsaMmehkXXXiURmeumb3B2bcK8GdYqyaiAl+uQCX83ApB7fy8NiEz4rx0oSnhXiUj/t5uJuLtRzczsRKGm6l4WYarqVi3oAkgfsvdZHcBgA/ZbyoJFYgLbBQoLSKAopEfrl8SQ5PlssOKGSrrMQugrAyRmQVS1/Diq5jxBAMsIlYqI2f0SnNH5CbRxXOSUX5bEDZbIBz2t867lc8IikcEuf1C7K6OekdzMRd3rHbSYYGj4itm7U1bqFVbqoyN6WDcAXyEjdpASR5kOfB4PIGNdloz8ZgLkZzMZaH8XwcysdUAaYLcNSET81Yt+KpGY+LXBN8Ie7lYy0fK/m4kYfrubiWSUzz69l4losXeXiWg0dZeJCJ9XTcTcPtZKwm4VYCbiTgajzalFDQNv8it8tsAPBTxotCYgX4BhUJQpyiYIswwCSQ5fIlmTxRBleWx1KWMEMddGIbTTXLUMuKrmUS5dFGZnwLO6VdmN3jZxoKsI8rnFOK0hmFY0puPSQzj0qLhqWFg6LcXl5WFyd1LzOJYICib/SM3Lo5rHZTaJWbutxd6YDS4hZQ5OZXCGEhJIUINCG6AHn5qMtFVw5Gs3EoBxM5mMzBVA6mcrGYhwsmPDTh+dsJPo+w9fs5uJuD1RysZGM5g5jdl5OwloynGXiZgefpeJKKhym4n4w7CViLx2ocVmKxGotFLXIFbhTyL7AtsAHATxkvMoku8w428bVlohCHMNgiCCwiGBBn8vjpbFEmS57PUFnp4RUMXQ1LV8PU1bD0Wxkx9cyEFk56hyh3v6xkRO5iINAxJbcd8reMyYpH/EwHJPn94rw+QeY+dupeRsIu39jtXoZmUlT9lvCtmzRVW9Rlm5U294ASBBQjoATyEsjMCLC4BVnc9cXILURTLvqycCgDkxmYysBkJiaysJCLj3MJo3+Zg+dZeJyOR+l4kI676bibitupuJmM6zG4ZsTtODxMwIskvEjE0zg8isW6EXeNuGvAWhRWo3AlAvsCIPL+BZaDNgD4CYPlQfakib2D8vjh1RJtpZjwAzZhYDHfP58vyeLx07iCNI5fDktZzNKUsojaaA1TX8M01DKNDazknfysbmnhoNwyqrBPBjqmAuwTcuu4zDzqVzwiNQ2KC/rFOb38DIIBZkK7b1wb1dhK1jV6RtRu0VR4Btu3BJrdFWa3QLOb0opgG4Id7krH5kD7plCbe4IZtkJsz0V/Jg6lYTod0y4Y5jNxPhPrmXiZjuepeJaCxynEHL+ejHuJrjk+BjcNWNZhRY/1GDyNxfNoPDPgsR4PdLgfibvhWHPpaDDi2e6/vChoA4CfAoAnyZvrrczm62olUbVSbaWIcAU2gdLMlxfw/HK4wgyuMJ0rTuf65XICS1gaJzuyknAF+lpmXDMvbY8of7+s+IDcPqH4EQB/y7if+aBf0QFJ4ZCkcNDlB7rYqR3M5D30hJ3eMduIcCi8xiPESQq0eCrM7oFWBNmhciCkzC2kzD20fJOqbHNw6RaNY1Osxc1UjKY89GRiPBUzyZhOwXwqPkjFWgpeJuFVAp4n4mkinsTjkREPDLgbjTU9ViJwIwy3IrAWifUoPI7A0zA81uKhBuuhuO/S1WBU8928yb+0xvAGAD8NAC8mVZnB1ddJDPXiyBphRJUwrFSotgkDS3gBJq5fHleSzRWlcfmpHEE6xz+PE2Rmap3MqAqWsZ6TvJOX2ys1Dcqsh+SOKTkBwITcNuFvGfMvGfErGpYWDUsKBoQ5fdzMLnZaJyt5Nz2uzTu6hRq5laQpJwdZCQCUFqjsUJcipJxYR6SphKbSTVO5ObjSM7DMQ+0kMCguREsWBlIxlYTZRCwk4cMkIs55GYvX0XhhxLMYPDXgsQ4PInEvHHe0uK3Figa3QnFLgzuhWA/BIxWhh8F4qMR6IG4r0MmHiPJLq4duAPDTAKAyKPIkdnS92NgkNtSL9LXiiCqhtlwQ4hCorHxlMV9eyJXlcaU5XFEGV5jGEaazpZmcgHyO2sqOruNmdEry+/3MY3LbJOEB7JP+BAmTAZYxf/OorOSgX9GwuHBQmNvLJxjoYCe1M+K2++oaKWFVXiEOqtKyJdDiFuwC4Afrr0JYDcJq3LQ1bpoq99DKLcHlW9Slm6LsblnFqM5FRwZGkjEXj1NxRLj/WIfXUXilw4soPI/Ak1DCyh+ocT8E99S4E4QVJVaCsKLAmj/uyHBHjjU5ViS4IcQRLkpobj6/rMOGNwD4KePlSaLSKP5xTGOdKKZFEt0oNtSLdbWiyGqBtkKgcfLVVl6Qma8s5ilMXHkeV5bDFWcQiYEglSNO56jMvOQ2cd5+aclBf+uE3HpIbp8IcE7LnTOEH7AdklnGZCWjUtOwJK9fkN3Nzehkp+xmxu+gG5q8Imp8Qkp9lBZSoHlTkNUVApUTbeMfAKj9UTWbtFWbNZWbVOWbgkvdI23umcWozEVnGkaTcCQWV3R4Fo43YXitxUstnqvxNBCPA/EwCA8UuK/AXRlh+qv+WJHilhA3hbghwXU+rjJw0QfDLITwPH5JPYENAH4aABQaRRbLMtaL41olMc2St37AUCeMrBGEVwo0ZfxQJy/ETpCgLOEqTDx5PkeWy5FmcwUpHHESR1/Fz+mRFI/4WcZllnG5bSKgdCawbFbhnA4g6kITMvO4rGhUmj8oyukRZHbyUvewE9pYxmbfqK2+mjLfIDNVWbIl0Ew0yFTOHxjQuhgIdwEQXusWVuMWVu0WVukeWrEpuNxDWeoRat+UXOJuK8COdIwm4JweD7T4QoUvg/FKiRcBeOaPp/544odHEjwQYF2Au0LcEeE2B6s03GLgBhM3fLAMnKeiUe0mEVNIJCIb+NnNdwOA/3kAyH5GhrFOHLdNGtcijWsWxzSKjY2i6DqBrpYfWS2IqBKEVQg1RGLAU5l5ymJuYBFPXsgTp3G44XR1LjujU1x4QFp80I/wA+MBzhll6Wygc1bhnJHbp/ytBAN+BQfEOX3CrH2C1D28hDa2sYlYdB1WSQuyUhVFWxQlboEWtyA7sVxCVUbssg+tJqSpdnmDamLLpaYamiq30MpNqgqPoAqPoDJPtcMjxuxuKsCODEzHYzkMnynxlQxvJPhMghd+eC7BUz4esQmtc3CPhbs+WKPiNgkrW3BrC2664xZwVAlzCoXFo/4ySqIbHuCnjRfZmywKp+trXQBsk8RtF8e2iGIIDETR9QJDndBQJ9TVCiNrhNpyIZEY2LjBFo6yhCtJY9MDfPz09MRt4vxBP9MBP9OQn3nU3zGjcBIAEAw4CAZk1gmZaUSau1+c1SVM7+Am7WLHNDMMdayIaobaRpWbPPxNmxQl7oFW90AbsaEsuAzBFVBVIKQSoVVEUPQDD1XQVGwOqfBQV3ioCFdACnSQlPYtEZZN6SY0ZWIuFvdV+EKALxl4zcZnXLxg4pkvnnrhsQ8eUrDujvvuuOeOu8CaO1bdsQrcoGMh2S0pjUHjEU+P+NkteAOA/9HxIlFI7EDfyAphbKv0LQPxrdKYH8IhibFRYmwQRzeIjPVifY04okKkLRMQQZGN75fM9hV5cRQ++nJ+Xr8sf0BW0C8tPihzTCuI6d/FgGNG4ZgJsEz5F41K8wbEWd3CjE5Bym5ufCs7uoEVVcNU27zlpi2yQnf/4k0Ky2aFZXOgbZPSQWwkUJYhuJxYRRdSQSj07bV8S2i5Z0i5R0iZp9pJVjkpwQ5yoJ2ksHuoLJvjTe7bMnBCj2c8fOWJL8h4RcZLL7wg4/lmPAEeb8IjNzwE1oF7cGHghtvANTEGKn1iMji+XOrPbsEbAPxPDxlN7KW18aKbxcZWcWyrOK5VHNcijm0mGPhR4phGSXS9WL9VFFktiqgUassE0jimF4vqzaGqMtmZXX7ZvZLsHnHhkJ9tUuFyAgrnXKBzRmGfCrBO+heNSVxpgCijk5+6R5CwnR/dyNHVsELtNHmhpyTf3a/Q3a/IXVa8OcC8KcDiFmiBwkosGQp6C4OTiI5ccg92bAl2blY7PdUOT5XDQ+XYQvTU7O5+NjeRDXIzkoswlIprKnxOxtfAF8BrN7wAngPPgKcgSHgEPPgRg7ckXEpBZx8/LJvvw6Z6bCF65D+7Kf912giBfvKQ+fC81CaeoV4U3SyKbRHHt4riW4SxLRIXDIRDiHWJ8AmNEn29SFcrDisVCMJpJG8y2YssDGPENQrTOkQZXaK8/VLzQaIkaptR2mcC7dMB1skA66S8hMiDxTl9oswuYdpeYUKbyNjE09Vy1cVMWaqPJJkqSSdLsj2luVv8CjbLTG6yIsiKIC+Gwkw8Y0JhRaAVgTYE2tyUVnelzT3ItjnItllJXDcFWYlestL1NAo/M7Gqwmh3qzK7zSXilh9eeRIMvAFeAS9BkPDMxcC/YOCG+8AaHe9t82oZD4gq4lNplA0A3hV5uApB/imsiCqeoVFkbBTHNItiCRKEsS0igoHtkrjtkvjt0tjtkthtUmOzRN8gUhfzmf7ExipPEsmXR1XnsZPaBOkdoqxucf6gf8lYgGUy0DoRaB4lOmLFI7LCA9L8QUnOfklmtzi9U5S0UxjTTACgzGRxFD6+AirD34sd5M0N9eJHUkVGqiieLErylKZtkmS5SfMgLYCfiUDC37V8KLDELbBkc4B5i8L8dj2FixMzsflYUQxZMcQ2t8DqzalNns2Vm+dTcZNHAPA18DnwmRuBwVtvQARFbzFwI0hYVbsdOy7bfiokJJ3jw6J6/GPmAxse4K85cV6ko2ucHN1Wvq5OaGgUGhuFMU3CmGZhzA8MiON2SOJ2SGN3SI2tEkODKCCV48P1Ih66STxthSyOoBtr+CntoowuSU6vX8EB/5LxgJKxgKID/oUD0vz9krx+Sd6AX26fLKtbmrFPlLJLGNfM1deyFWksutibRCXaEYToFG82xYdH9RVSfcUkmsyTofRka7ZwI7fwDZsF8ZuEKZvEae6STPjluEvz3GX5brJCN5kJ/ibIXfI3QVYIeSECrNA2kNP3MCr30rrKPI9FYZVJOIG33uAzN7xw+yMG3AgM7pNxsc1n+oqmeiZYl8f3Zf1D5gMbAPz0UaOQ2ApvVTE7ooobUc2L2irQ1fMNDfzoRr6RwEAU2ypyMSAmGGiVRJQLBRo6yYt4LYlM2uJBoou81NmcxO2SjE5Z5j6/nD6/gmF5IWH9/vn7/XJ7JDndkpw+ac4PAIiTCQA4ulp2QBKTLvIm+ZDJNDLxhmRCW8ikLZ4kwr14kshUAgwvFsWbS/YRkn2lJJq/J0PpwdJ4ciI8ePotgjgPUfIWcbqbJIvYXSDNh59LsnwE29zidvgUjkrKJkUNvfQe5+aTOtzg4JkbwcDnwCs3PHcjsoLHP2KwFocP3pMffKRvPaI2mARMYr3oP9jBwxsA/HVL4iiyFFoocbQwJ6KaG1HLjazj6up5+ga+oZFwBS4GRLGtEmODSJHK8uH9q9mR4ksWamjRtcKUPdL0TmlmlzS71y93P6H8/X45rlk/Y584q9svq1ua3ilKaOPHEiEQx89I92ZTyd4EAGQfMtmbTKJSSFSKJ/nH043+pPFRifaFF5PkzSH7CEm+fiS6wpMZupmj28SPdxckQ5gBURaBgaZ8c+ZeZsW0pPFkYN2CrKGX2VXruZDm9mkA7lKIQOj129zADc/c8QRuD31xuZ85/5nx0HrUjhPqtGoJx8/7Hysf2ADgp48akQiTOaHeyiJGqJMdVs7VVnHCa9gRtZzIOm5UvSC6UWgkwiGBsUkYbhdwlTQS9V8dv+VBIpyA1sxNbBOndUjSOyUZXeKsbkk2MetLs7ul6XtFqbtFaXslGZ3StD3ixB2C2BaefitPrKNRGRQCAJ9/DQCFTCIT7oVE+dM/8B9uPFzyJJPINLIPl0zzI9GDtjAj3XnxbsI0+BcismZzfi+r6UjA7vOqpnPBVYdltSPsPS2eh/LdzyqwQiaioJcuDD5zI5BYcVCOP9fNvzJOPojcfTY0uVzElHhv/sfJBzYA+KsGjkyisigcjbfcyA/JloTa2ZpKmraKGV7DiajlRdXx9A08fRMvqpovi2F6sSj/9mnjRCZN9YtlGhsEyXtEKXuF6Z2izH3ijG5xZg+R+KbtESXtJJS8S5zUJkncJoxrFugq+AINjez7FgDiSvIirJ9EIbtEWD8BwJ+agH/A44//ifyjvIjfhe5PYuvdecnwy0NUDSm3i92wKOv7VN17Sb3rXHDjyYCts5KmHkZHLWkqw/09Da5JcY+OR2TcKPY4vh5+5E3M4hPd1IOofee1edtkfho61fcf48i9DQD+yoHzIBMPD+UJeMpIf1UOT1XmHVrhq6lgaStZ4dWsSMIb8ELMHJbsT4cEHmQyS+GjtXLidvASdwmSd4tS94pTO8RpnaK0TnFKuyipTZSwXRS/TRjfKkxo5cc1CcIsXJa/NzHZe5P/xfp/AOAH6//THsAFwH/2u5BIZB8yLcCToXdjx8M/f5O+lpLXxW48TDAwfCu070rw3vNBLe8Fbj0ia5gR7zrIG+rwXagjvVfuceoA6/CDqOOvjSdeGZae6abXo7ovhtn7FAFRTLLPz2/fGwD89w4fny/QhIZoYpXBhZxgh4+63FddQQ+tZGirWJoylthIp9CIhyz/ide6VlZLYuj6rey47dz4nQQGie3CxN3CpHZxQpsgfpsgoVUY2yKMayamf2M9X5nO8eF4eVJ+DH5+mP7/IgD+PAyexMEIdPUWRgw4iVAUbIqu987qYFVNSbo/UR28FTpyK6T/qrrromrPedXei+ru65rBm5qxFe3Mvchjzw2nXhvPvDGeeBV9+Jlh5pF+ZDWycjgwNJnjyyZqXz+7lf8n2vAA/6XhE0nERp0hJjpaG68IzuEqLT5Ku3ewwyfYSvdLpfmK/7PKoAeVRJNQVEV04uCZbZzYHfy4Nn7cDn7sdn5MCy+mkRvXzItt4sc2CY2N/IhSrlBLI3uTPShEHfY/AuC/lIBSSF5CT1bUZna8GzcJaqtn/DZa+m6m/aCw81zQwRXt6IrmwHLo/svqnk9Vg8vaifsRSy8NJz+POfMm5vSbmDNvjKffRB//zLD0TD//xHDgZmT9bHBEJteb+XfdJtsA4L8yfOQAuTw1JTkzLT0uNiYsOiQgWigy+opivfhh3j5CCtnrz8TBJB8SV+OtMtN1jSxDK8u4jR3TyjY2c6IbuIZ6bnQDN6aRZ2wU6Ov4AUksX56XJ4VE8iLayWSvPwHAf93OKL4kuj+Zqd/EToA4wz2sjJS43Te9nVE8wGs5FjB4NeTgimb4hmboWuj+S6ruT4IHL4fMrUedfmN873PjGULRJ98Yjr7UH36mn30UNbIS2bQQHGMWcP18/m4Z2ADgrx87MtUrVBNamJ9XVFCYmZZh1BukfhJvpheVSaHSyH/Jn9yDRPSV+eHewRZaeC1d18DUNTJ0DfSoWtexfHUEBvo6fngplxfsS/Iie1JJZCr5rf5NAvC3MQgyUTBlqD1Z8eAkQ5LlFl5JStlJT91Fz9zLqp3167moGrutHb8dNnwjZN/HQc2HZbtOKw6thB1+pjv1efSZL4ynXkcffakn9EK/8FQ3diei7aQ63iFiCLy2uKpPP7vFbwDgsjxP4hE3Hp5Ete7tzdv7nyQunx8fF2ezlFhKivJzsmOijQKukORJ8fBwlRr/sjchGke+ZKacIo5gaDNleocsspqjrfLVVvmE19Aja+kaG1MaS/diuQ5soZD/FQDE9P+Xhv5/+c9DZVPYkZs5SWAnQ5LjpqslZ3Yw0vcyUnbSTf2cbScC9l9Wj65qh2+Etr+vaFqSbT8u7z4fPLainb4Xfmgl7OBNzdS98KPP9SdeRR95YZh5pNt7NjSmWOBF/3usC72jHoBEJvvS6QKhUCKVCoRCBpNJplB+0stpdHq4VpuXk223WmwWc2FebrTewOXyyH/oSf3FIp4/TiUx2PRIXXhaQVySNTzK7K8tFqgLuAHJTIHGx4dPIYIfEpmw+LcTP/XfJQB/q8mVTPKkkmkSEid6EzcV/DTIC93jmr1zetmZHazkNkbuPo5zVNS45L/ztGLvh8qOj4L2nA3c93HQ/kshg1dCBz5V914MHryqnroTvvhEt/REP7euG7oaltcsZQi9/w730LxjAJDJRNRBpfrJZEaDITsrMy83NyszMyE+PkyrVQYF+QcEiCUSNofjS6dTvb3fUuHxRyKOCvD2FovFOp2uMD/PbrWUOeyldltRYX5iQpzMz4/q5fWH/45Gp4vFYolEQqPT/+wPxuPxUhISzSZTYUFeUkpsZHSoUi3n8Dhk6o91pB8m+3/DwN8YAJLrfUhUMl1O4SS4c9PASYOswD26jmrazy8a4GXsZSTvoifvoKXtotmG+TtPK4aWQ4ZvakZuacdXtZO3tROr2kMrmrGbmkO3tGM3w/o+DnV2+gdHMyk+Gx7gZ7V+OoMh8fNTKJXqkJCE+Pii/HyH3Wa32UqKinJzctJSUlJTUtJSU5KTEmNjYsIjIoKDg2QymUgkFgqFfIGALxAIRCKp1C9ErU5KTDAVFjjttjKno7KstLLMabdZCgvy4mJj5HI5k8VislkikVAbqomLiYmNMQYoFF4+Pv+x9RMuRaFQ5OVm2y3mEpMpPSnFEB6lDlRJBGIfX5+3E+fbRu8P+lMF0L9hIORJIlEYFGYIiZvkzssAPx3+Be4Jrb7mYYFtVFiwn5PZwUjdRc/Yw7CNCHafVQ5dDx1fC5u6F77wMGrpkW7pceTCg4jZu+GTq2GDn2oq+gNCkjhUHwoxg/ydpQG/fA/gQSIxWKyw8HCrzdbS0rJ161anw2EqLCwqKLCWlBSbTBlp6fGxcakpKcWmQrvV7LBa7FaLubiosCA/NzszKyM9MyPDdU3PzsrIy80xmQqtFrPdZnXarU67zUFcrWVOe3mp02m3FeTlJicmJickZGdmFBUWFBFvkp0QFy/1k1Ko1H9ZtPNHeYgHicxis6P1uhKTyW6zlBSZ0lKSYwyGCK0mVKWWSiTevv8qeCAM/Udbd339v2fdAZk4LpYZTOInbRJkgJ8BedGWuBaaY1xcNetXNimxHRSa+nl5vWzriLD5mHzgimp8VTt9P2L+YdThJ/rjzw3HnhuOPjMsPYocuxW27YjKWCKg87z+ilzrv1W/fAB8aDS9Xl9VWdnT3T3Q37+ttaWs1Jmbm5OTnVVUWJCXmxMfG2vQGzLS06zm4rcBvc1itlstDpul1G4tddjKHPYyh91pt9mtFktJUbEp31SQbyrIMxXkF+Tn5WZnZWdlmvLzLMVFdqvZZjZbioqtJcVvQSo2FeRkZ2ekpYeHh7PY7LfZ9hYPwvTJFIq3jw+TxRSLhFqtJiUpsbgw32GzlpgKU5KSYqOj9VFRuohIrTpEIhH50H08KeS3K3lc8iRRyV6+Xt50Hy8fqgfpr0niPf+cPEgkKpPMVHnykzYLMyHIgrx4c+ouZtkhcc2irGpWQmAwKi7o55mHBU1HZT2fBI2taKbvRsw90B15EnXshf7ES+Px54bFx7qJ+1Eth1XRRTwa32vLfxOxf5V+4QBQvKiBSmVlRUVTY0NZWanZbM7Py8lIT09OTs7MzMzPyc5MT8tITS0sICzPYbNaS4ptVsL6XQBYnTarw2qxmouJadnlENJTU1OSEpPi45Pi4xLj4xLi4uJijEaDIdpgiI+NSUlKSk9Nzc3KNBeZiJfbbTZzCRHU5+YkJycHBwczGEwWi8UXCKRSqTJIqdGERht0SYnxaSnJyYkJpvzcUoedACAhId5ojDNGxxqjY6MNkeFhikA5l8f1pft6+3p70bxobLrUT6JSKUM16iCVgsvneNN8PL1IW1xo/G3HkEqj0OVkjsGDn+7Oz0KAeVN8q7dtTLR1yX/rorxq1t9+SFR0QFA0yK+Yku75UDmyrJm+F7HwMPLwU92xF/rjL6OPPjcsPNaP3YnadkIdXyrkKXwJD/b30SH+JQOwxcODxWYnJCaWl5dnZKSFR4RrtNqoqMjo6OjExMTMjIzsrMzCgryGurqdbW11tbWWkuKC3FxzscnmMvqSoiJXGJSTlZGelpqSlJAQFxNj1OsNOr0+MkoXFamLitJHRkZFRISHhemidAnxcZnp6TlZWYV5uXarucxhL3c6yp2OUofNaikpLMhPTU7WRUVF63WJcbGpSYkZ6alZGenZGWlpqclxsTHxsTElpsJyp6MoPz8lMSEhNuatCMD0OkOkLjxUGxQU6B/gFxAk04SpE2PjM1PScjIys9LTY2OM2rBQuULG4XGo3l5/23K7h6tI5cWjsLVkbuwWfpq7X757dCOl5AC/Zl5Wu+BfOStzTkhKDggKB/jOcdH2kwEDV9RTd8LmH0YsPo468kx/5Lnh8FP91P2owZsRLSdUmS1+QhWN8na13M+dEvxiASC5ABBLJBkZGQmJiX5+fv6SLNQAAAlFSURBVAwWi8FiSaXS8LCwlOTk1JSU3Jyc2prqjo69DfUNJlNhenpqSnJyfh7BgKkgLy87KzM9PSU5OSE+Pi4mJlqvi3TZulajUatUQUHBSqUyUKEICAiIiIiwWCxbt25tamis37rVaScs/q0DcdqsZXabw2Y1FxcVFxQU5uXm5WRlZaQR75sUnxAfGx9jjInW66MiUxITSu22MoctPycrJTE+Ic5l/Uaj0aA36KOMBoNRb4iO1Bkj9fHRsalJydmZGfm5OUX5eYV5uSWmIpvZWmwqTkpJCgiS+zB8txA7U/7GQ0rxIfsKqWwNhW3wFKZuCiujFvRyq2b9th72r1mQlU9LrUR+zC0a5NfOyfo+VU3d084/jFx6EnX4mf7IM/38Y/2he1EDN8J3faTJ2Snzi6JTfEhbfm47+cUC8FYcDicwMJAnEFC8vEhkMolMpnp7iyUSXVRUclKSxWKpKC8vKChISEyMIT6M8fFx6WmpWenpaSkpyYkJ8TEx0TrC7rUaTZAy0F8mEwmFPB6PyWT60mg+vr4sDickNKS4uLizs7N9166ammqHzZ6bm1OQl+fKB0qKC/ILcrOzMtLSUpJTkpISE+LiYo16nS4iPEwTGhKiVoWqVGEaTawxurggv7q8zGYpzkxPTYqPjzNGGw06wsOEhYdrteFhYeFabYQmNEKr1UVExkQbkhMTMtNTc1xpek52VmFBQXFRsaXYUpBbEKYN+/OF179KJAqZ5EMiM0jeAgoriOKf5B1bw7EOiSsnpNVzfpVzUseEuGhIUNDHK58U7fpAMXIjdOZ++PyjyMWnusUnUTMPIsfWwvqXtW1nQ6wH5JpMNk34L1Xjn0W/aADIROeIQiE2TP2hivK2DyAUChITExwOe3ZOTnhERGRkZIzRGEOULGMS4mLjYmNjog36qChNaKhCoRCJRCwWy8vbm/RjDedt9Ybq7R0UHGyz2Rrq650OR15ubmpyakJCYlx8fFZGhtlUWJibm56SHB8XG23Q6aIiI11Wr1IFBcjlUolELBKJRSI/qTQ0JCQvO6umoryi1GEqyE1NSiReQGCnDQsN0YQQkKhVKnVwsDpYqQoOUqtUmlB1ZEQ4kXjEGGNdP7kxOkYfaYiJjs3KyMpIzghSKCle/w2bdMmEayWycNeKbpIXiS72DkpkxpdzTV1ix6i0bFJqHxMW9fNyOjn5PdzKCb/tRwJ7zqnHb2mm74XNPIiYuh8+vqYduBHWdU1TM69UpbBJlJ+zP/CLBuA/Fp3JjIuLKy4uNhqNUj8/P5ksPDzcQMT3Or3LVrUaTaBCwePxfGg0qpcXmUJ0Yv/4HUhkskAoTEtNrayoMBUWxhImaIyJjol2fSTGx6clJSXFxxujDVERhCmHhKgDAxUSqZTH5/P4PCIJVgZqtZpovT4jLa3MYasqc5aYCtNTU4wGfWSYVhOiClEFq4ODgpWBgQEBcplMKpFIRCKJRBIglwcFBqmDVVq1mnAL2rAwjVYRqOCL+Hwx31/hH6oKlcvl3jTvv+1SZNIfNyJ+XHtHopK9mRSmxEus9Q1KYkaaOLGlnIRKTnQZJ9LMCs1iquIYuhxuTp24djhg7ylV78chfZ+E7PsotO1MiKUvQK5j/qGk+7PoXQTAg0RisdmxcXEZ6elyuZxMoVC8vDhcrkKhUKvVKrU6IDBQKBT6+viQyOT/aJkQxcsrJDS0pKQkv6AgTKv1l8v95fLAIKVKpQoJUYeHaSPCwiLCtWEaTYharVAoeHy+L41GplJ9aLSQkJD0jPT8vLyiwsLyUkd1JTH3lxQVpCQm6HSRoaEhquAgRYDcTyoRCAQcDodGp3l7e1O9vChUKoVKpdFoAoHAXy5TKhTBAcogeaBYJPZl+L61SzKV7O3r40P3pXj9hMUdnj8dgB9aWhSyB4m82dXTIHmRvegUXzaVIfCiC7182FSKL9mD7EnyIvkyKQJ/nyAdIzyFo///2zuXniaiKABv6Jw771eftEVai7SAkSKElkQsBSQaIRWEEh/RFZuy4P+vzHR4VIUFiozQLzkhrMrkm+/03jvnnOFdrrWbX9zMluY9K7jji7xtjGMCRC/n8f3Zen22Xnd9P/Zb6brjulERN512PS8qWp2Xma4P07abzWan06k3GkEY2o5jOY7reX4QZLKZJ1NTM7Xa7Eyt9rRaKpX8IIg/UBl6pVrp949OB4N+/2hvb/fbl0/fv34+6O11O+svm4vzc/WZWrU4ORmGoeM4hmVFrRD6VcdefLWmbfqhn8lm8/l8JpMxbfuqNBbtT/7Vf7NTv+TAeVk6KsxpehQppVIplUoNax2XTYGiUppMTERXrtu65RlOaJiOPixfJGzCGDfDeZ7tur+XZkd/uTGGh+lqrTZdqdiue6nmuaC6bjtOEATpdOj50Q4q/iuaiOO67Vb77OzsdDDY2dnZ3t46Pvp4fHiw82ZzZXnpWXTeKAZBaNqWNlx8brqAeLA9OuFYZjQUf5/ojGEdOt4CxWP4Fz+jMEbmj+O4bij5srkjcRPGNAH+PnTDcH3fGGl9uyZGDt9xAgRh2O12T05Oer3e62G7xOH+h733b9farbl6PZfLWY49mpP/aehKS3TjfodBAvw5u1t1HyhdT2lavlDY2to82N/f6KxvDMvGW92NV2vtFwsLpWLRMB/JS/fl4QQJcH+sU5pWmJxstVqrq6vPF+ZXlpaWl5pRWa3RmCqXXc97AN/96rEFCXB/rDWRMJ2uVKuFQnTGLZeL09PRM9hSsej8fBohhAR4lBIYpmldzNnE3aCO646W2Ai5XwisAAk7x6ZfEuVPAvClq8Z52SEBkr8HhJAASAABVgAkgIBiC4QEEFCcAZAAAopDMBJAQPEUCAkgoHgMigQQUNQBkAACikIYEkBAUQlGAggoWiGQAAKKXiAkgICiGQ4JIKDoBkUCCCjaoZEAAop5ACSAgGIgBgkgoJgIQwIIKEYikQACiplgJIAAQ/FIoMY9DXgrRPL3gBASAAkgIKwASAABYQuEBBAQzgBIAAHhEIwEEBCeAiEBBITHoEgAAaEOgAQQEAphSAABoRKMBBAQWiGQAAJCLxASQEBohkMCCAjdoEgAAaEdGgkgIMwDIAEEhIEYJICAMBGGBBAQRiKRAALCTDASCOPIDMUjgYx3GvBWiOTvASHJQfgBd3SmfOFyFx0AAAAASUVORK5CYII=","mimeType":"image/png"}},{"text":"what does this image show? please use detail"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 3301 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Type: application/json; charset=UTF-8 +Date: Wed, 23 Sep 2026 11:12:05 GMT +Server: scaffolding on HTTPServer2 +Server-Timing: gfet4t7; dur=3534 +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Gemini-Service-Tier: standard +X-Xss-Protection: 0 + +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "The image displays a digital illustration of a brightly colored parrot in profile, facing left against a solid black background. The artwork has a smooth, softly shaded 3D style characteristic of the standard Apple emoji design for a parrot (🦜).\n\nKey details include:\n\n* **Head & Face:** The parrot has a rounded head featuring a sunny yellow face and cheeks, topped with a soft reddish-orange patch on the forehead. Its eye is round, glossy, and black with a subtle white reflection. The beak is large, curved downward, and dark slate gray.\n* **Body Plumage:** The neck, chest, underbelly, and legs are covered in smooth, vibrant green feathers.\n* **Wings:** The folded wing displays a multi-colored gradient, starting as bright lime green near the shoulder and blending seamlessly into warm golden yellow, orange, and a touch of vivid red toward the flight feather tips.\n* **Tail & Feet:** A short green tail extends behind the wingtips. It stands firmly on two dark gray, clawed feet (zygodactyl arrangement typical of parrots).", + "thoughtSignature": "EpYJCpMJAWkUfRNDreL+Cv/EYm8eSx/rNQPe6opZLQptujdlLUsN71eLGfkz+kGT5f+4ALccv1eKky9NRT3kI35ros4A2i4pmD4zfFsbnUCUKn4EU7j19hxIuQgl9+kXvByGBOdyxTdBWxH9U3Hm35t9HelZxwZmj0YFOLG9f4c+1jg77Anksi5yEBGbC8T6F/bAb/y9HG4BzGxzBgpxCJWU595d0pL618VqfyIY8/YuFtCNRj0yTloy3VoUQQmMwMkdaiCRJL4GiHLjwmvXwhXm+SK46l0W2FhjCtpBMpDYCYoNZoXx0Ni/XA4EnP7PuA/0j1aOAggceY5S4XxhIDRbz8LFpv8tI7L2WuCIlAyeumqozjrjhSM72YGZ3cro++r0hn3ZCRqLXolbcutKNlXV7UiV+eSL8xlT/kLDhF5CLJcEfbjS1fQCJrs2ncu5UgrMcHOe3E9Y+lP7fLXZ1IlSKwnJuzJn+hdO5b1vP3mTEPGZkt8d2ewEGqOfxBde49TFyrFy2sQIfFxr07QVd/t5Nbvmg9tmU+z2NAFqycfL5BfoWwYPYqi3kulTMeBgmdQVRv8idqxks+9y2gN5OaeEjQ8apx9/0WtsQ434j5I5TZhAi6EgWdwC8a5bd3UF20+TTrgnEZFMmTqSzmjKiCYYs6UlksZGpgKedQYwPcsyL1TRO5G0guK3bidaYWor12yMCuZQIikOU4unV4LgY4G/EhIoZv/9ODv5DP5YfQ4e+orZbWeK7cX+Pt5qAjj8ZD3sdQcbxwgxnMmCyn1J69DDV4nQ+lpW2fzss5VYMRO8dLKohf2bOd5Dhvp+kJpIdUuOIokqW2BX3c8QyWgLkBOjlFjjsq/w/VlAXB+vNmVcR0sWbiWnG6LgCv6rLNLZFGhedbtydmEAgK8YNhF8k10wxQ1vEl1ZBq2B+MfBS8CqVJOCuxAPqZ6KXl/KS5zcS0qKLIagXdnj/b72N7wNHJAPM5XERfbwOUAak3X6VkPy3Qs6uTVlktoBbn/iQN7wJubDNmjKeBYeQOKfIFyfdkjqMZcGmK1ApVvA+HeDXdRiKCxNUkZt3op4Xd+NQ0/P7UG46MQPUdFnDBRZtTOicupKo1IR9NlCaNDL2AATE74O2XHZES3Zap7Ah79bXBhjUhY2XYHVEJSxO4y+/ASp4mfsLdaT/uyLKrKGmQX1mnMHdvuGTDYs7f2Q6wpwsgQvtCy+3jBu0WLin1VdJpMF9MjaTAATFhxCKG1Z+oWsq3oHjCzjYgT+FEJ5TE8a4Y37up12JJ5Vo2iopalLj2JXpbxfH90huyz5fnB70KED1fYVZQPCPCgMCiHv/9AhvmSwuhg3pGxNHHRrZmRpotnRUdA3cWM2M2oBGbW2A1SgqbahrmcLPol3o5M3plaJx6huAjFBpBAJ6vFwoDAaggOZiqSoU64Kxh56v5OfJSew7NisDZF0/nnzJsTMtFbikpGA/JZ7BypGqFtikxl01OSON96toxw3EK7iwCNuckmKC0uWKI51zqvRw4ad3ij9WFDhwFEGrii6cHdXD2w0kTES3JN011Ek/vwdVQ==" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 1099, + "candidatesTokenCount": 221, + "totalTokenCount": 1582, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 10 + }, + { + "modality": "IMAGE", + "tokenCount": 1089 + } + ], + "thoughtsTokenCount": 262, + "serviceTier": "standard" + }, + "modelVersion": "gemini-3.8-flash", + "responseId": "ArSzatnNE8Gd3boPu4POmA0" +} diff --git a/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentImageLink-googleai.httprr b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentImageLink-googleai.httprr new file mode 100644 index 000000000..36e517f3e --- /dev/null +++ b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentImageLink-googleai.httprr @@ -0,0 +1,61 @@ +httprr trace v1 +47835 7475 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 47513 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"contents":[{"parts":[{"inlineData":{"data":"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAACXBIWXMAABYlAAAWJQFJUiTwAAAgAElEQVR4nOy9d1RT67f3+wBCCjVAeqWH3nvvYO9d7CgKiGDF3rsiqCAivSQhIfTee0dQBKT3DvZdzvnjjpWoe//OPfe+5z3n3pe9t8vxHWusLAhDJt/PmnM+ZQUgkEhYcAQQP6sNwJL/D2DBEUDAAMAmgCOAgDMAbAI4Agi4BIJNAEcAAfcAsAngCCDgJhg2ARwBBDwKBJsAjgACHgaFTQBHAAHPA8AmgCOAgCfCYBPAEUDAM8GwCeAIIOClELAJ4Agg4LVAsAngCCDgxXCwCeAIIODVoLAJ4Agg4OXQsAngCCDg/QCwCeAIIOANMbAJ4Agg4B1hsAngCCDgLZGwCeAIIOA9wbAJEPCGbHhTPGwCxM+NAfxUiKX/G8BCwADAJoAjgIAzAGwCOAIIuASCTQBHAAH3ALAJ4Agg4CYYNgEcAQQ8CgSbAI4AAh4GhU0ARwABzwPAJoAjgIAnwmATwBFAwDPBsAngCCDgpRCwCeAIIOC1QLAJ4Agg4MVwsAngCCDg1aCwCeAIIODl0LAJ4Agg4P0AsAngCCD+2RtioH+oP4T415d/6Pu/Jf8Pw0L8ZYLwTwBAAoEURyDFJZDiEggJJBKFQklKoSSlIaEkUeJI4Zeg75FAICWW+n8LC/FXCsLfFQBxBFJMHCGOQGAwaAZNSldL1soE42qHXeOB37wav3M9wWsjYdcG4tY1hLWeeDdHRRszjK6mDJ0qJS+PRiCRYssQEC2Ipf9FYCGWNAh/JwCE5Y04AjohkaR1teRc7RW9NhFPHabeOqUcfouZ9EyXG2fAj9fJjNfMSdTOTdHLSdbPSNJnv9SJesi8c07llA9t92aih6OioY6cMkMaI49GSkJpQVhHLfkvCAvxfzwI4O9S4kOljgRSVg6lqSbrZqt4fD/18SVVXoRWWaJeC9uoO9N8qM5+tMtltNtpuMN2qN1yrMt2st9pZtB5Zthlesh5rNuup86spdCghKvDe6n59IbyxUC61yaCk7WCuoosBoOGMPjeQsBC/DRB+BsAIIFAikkg5OXRJppyOzwJD0+qpD9itrH1e/OMBwrMhnIsx/JspqodZt64zHW5zryyn3nlsDDg8nHG/eO8x8c5jw+zbu9nXBfGnab6bUe7LIfazfqbTLtqjNtL9Eu5Wqxw9eun6FvX4DTUpaVloFZhyX9fWIj/g0H4GwAgLYnSpsnscyBEH1apvqnb98JoKMZ4LNl0gmcxlWk9W2a3+MrxfbfTQrvjYpPD+xb7T11OX6fcfvno+fWDx9cP7l8X3b4uuH6ed/k47/ph1uX9lPP8qNNkr93IG6u+JpOuGsO2Yr28JOb1M/SVbopUihQShYJ7A8RPo780ABJIpIIM2pkpf8uDVrab+XqfTs8BvYEThiPXjMcfmU1GmM2yrBdL7T6+cvjU5vSp2elLt/Mvky6/LLj89tHtty/uv336ro8ev3yC9PWjx5eP7p8W3RdnXGdGHMa6rQfazbsajFvL9csytKPDVA/uJmpry6Ell/53h4WAAUCgEDbKmJerlFrWM/uWa/VZafZbaQ1v0hs7Yjhx1mTqpulchNX7TNvPjQ5f25y/dLr8OuX2+1f33766//7lm/7ti/vvn91+++z++2f33z67//rJ/VeIBPcvH10/LTi/n3ScHbId6bbsbTN5VaVflafDS1QP9KOoqUmjvzfHsBD/6CD8RTOABBIphUZpYmUeWlNfLWf22DJ79TX69JgDNlrDa3VHd+iP+xhOnjCevW/xIcPuS7vz126nr0POX2dcvs67fl1w/bro8vW9y68fXH775PbrJ7ffPrn+/snl908uv310FeqXj85fPzh/WXT+MOswO2oz2mvV/cqsucawvFCHnah2/BjFyAQjJYNa8jjAQvyEACCRyGUIBF1WKkiNUGOr2m+n2WvK7DPVHLDVGnLQHl6uPbpFb8zbaDLIeOaRxftc209vHT722M+9tZ3ptJ3tsp1/Z78wZL845vBx0vHzrLOQh18EPPwCyfWXD26Co+vXD86fFxzfz9jPjNkM9Vq8eWXcUK1XUqjFSlE/eZpqbCqHloL7AeSS++GnAwBqfNHI1USFTCPlTntmn7N2v7v2oKf2oIf2kKcu5P59+uOHjSaCjKfDzEf45s1phvxnzKcX6Y/PUmNuKhfFaXeXGo+2WE50Ws/1270fsf8w5fh52unLrPOXBZcvi65fFt2F+rzg/mne9f2s4/yU3fiwZW+P2atWw8oq3excZnS8StAZkqGpHJQH4LFR5NJb4mcBQHD7R9KlJG+pk9ttNd55aPWt0xncqje0VXdok+7wNv0xb4PRgwYj+/THTht2hxsmXVPxWi5rpCyOlwZYKaCkCFZZoELPUBu5ev2VJoMNZuMdljPvbOcH7RdH7T5MOH6ccvo44/xx2uXTtNvHabcP027vp10XphymR61GBs26uoyaWg2KK5j8XNVYlsrxYIqBmZykNAoB9wPIpffGTwEAAolEo5B2ijKpxvS3rsye1Vp9W3QGduoOeukN7tYfPqA/6m0wvF9/6LRBz0OD2HOMFVZoeTSQlhAz1tNZvXy5vqY6QU7cVg/x+AyliafbVWTUV2Uy3GI+/tpyusd6rt92YdhuccT+/ZgjpHFngZwWxmynRyzHhsz6+ozbOw2rG7RyS9VZmSqPoxn7/Uma+rJISWiabMkjAwvxjwdAAomUQ6PWUxQqbZTfeaj3rtHo36rVt1u7b59en7fewBGDAR+9vgC97lCD4scaOz2kMWgRAABBQfpUoH8mnxfge5hMwC0DYK2dFOeBcnu67ptc/e5S4/4605FWi4k3VtM9NrO9NvMDdguD9ouDDu8H7T4M2b0fsp4ZtBgfNBvsN+nqNmx8pVtcy+QVqUTzlO9EMjYfINDVZZY8MrAQPwkAMmhJZzoh2kGX52lYuFK3ZQOze4d6zx6t7v3aXd46nce0X1/TrQ/XjjhDNlASl1omghIDZEUpn4N742Oijx3xVqURAQDa9GU3/QiNbK32dJ2OLP2uAsPeSpOhBtPxdsvpbpu5ftv5fvv5fvuFAbv3A3YfBm3mBywn+0xGeo3fvTNo7dSpbGZmVaolZCs/YSsFh5BX7sQqEiXhJIBYanv88wFAoFDyigpm+jqHVjgFrnW/ttYxdr150Radtp3M13uY7d5azac1mx5oFYdqXDuAV8Uvw0ojcTISeFkJU33N9as9bMz0CRi0KAAqBLHgfbhGlvbrdJ3XGXpvc/V7y4wGa03G28xnu60XBh0WBh0hDTkuDjm+H3ZYHLKZHjAf7TPue2fQ/lan5pVmfr06u1glgq90O57md5NkaIeRkoUHRpFL75B/MAAoNBpPIOgbGbiuXLF265ZtXjv27t11dP/OK7tXcPaa1PqpN55Rr7ypUfNEo+CR6rldOGU8QpmiqKlMYhDliBgkAYPASi9TkBRFigANyrJrAeSuAoOhMoOBcqORWuOJVovpTqu5Ptv3ow4fp10gTbl8mHRZnHR7P+X2cdpxYdx6bNikv8/gdZdOfYdGUbMqr1IlOk/lAYd+KZqyOYCgrCeDRMMTZMgl98k/FgBFPE7fyNBjxfJN27Zs2blt8/at23fvOhjgdzTw6J2ANdkXdavvq5SHqddEMsufa9w+glcjiCuTcMa6qvoaNBUShqSAJiugqFhJtJiYERMZHaI61WEx/9pyrtt6ccDm45jDp2mnLwsuX9+7/fLB7csHt8+Lbh/n3d/PenyY9fg077owazc+ado/bNDRy6x/o17SqppeqxxXrPw4nXYzher3gOK0HYfBo+EtNYil9sk/DQAJJDTxS6SQjC1M3VZ4rNmwduPWzavWrbGysbGwsty51+vc9Ss3bpxkPXSui2e+4ut05hv0V5mUcbS3rsTQsJIadKqpnrqZnpqxtoo+k6FMxFMVUH4H8J1NFl9nnb7MOf+y6PbbR4/fPnv89kWgzx6/fnL79aPrLx9cvrx3/Tzv/HHWGcoAU7ZjY2Z9IwYdA5p1XWol7SoZDYyECsazXMYdLj04hnbwNsV8JRZDgLbUwEL8I4LwlwAAiUbhiHgDMyNnT9cVa1eu2bB27ab17is8jExN9A0NNu/YevHG9dt3L3AjV3TkGY40m46+tpwbsJ7qtYqPUHe2kibKSqlRSHoayvpMNSaDroSXX+kkn8nR+bzg9PtHwVIIaF2Qx+9fPKHlQB/dBdZ3hvTe5euC8+dZ+49Tdh/GbeZGLEeHjHr7Ddr7NGq6VYs6GBmNtMRKangB5V469UIiPSCCuukMQc1UBhoVXeqgwUL8MwBAolA4Al7PyMDZ02X5mhWr161avX716vVrVqxd6eTu4rFqxSFfn+Arl69dP5GTvGKo1Wxu2Gpu1G5x0u7zrN14vzUrTmPbWnkjprQaVUaDhtFnynhtxmVw9BZmnf79d8/fv3pC1v/q8ftnSL9+dP36weXre+cvC45fFpy+zDl9mXH8NO3wcdxucdh6ZtB8tN+4b0D/dR+ztlu5sIOS1kxKqCFFFFMfZtMucWgnYugHHpHsvbAYIpwEkEvunH8IALJyctoGug6ujp5rlq9av3rtxnWrN6xZuW7Vmo1r123ZsGOv15Hj/v4nT1684F3Ed514Z744abcwaf9+yv7jrP3XRbv5MZumKqOY58wrwfSrwfSocI3GGrOPCy7//m8e//ar57/9slxw74cWRQvc7/zlvcvnRedPs06fZhw/Tdl/mLD7MGb/fsR2YcBypt9sYsh8aNj47YBOwzvVwtfk1GZcXA0+opT0MI9yhUc9mUA7EknbdJGsbCaHloGnh5FLbp6/PQAoKUklFWUbR1v3VZ6rN6xau3nd+m2bNmzdtGbTujWb127YtmnnPq8DRw4f8j964+r26gK78T6LmXH7+UmHDzMOH2fsP83Z/7Lo+NsH54/zjjOTDrNTTu8/uv72q9u//+r++1d34Y3/10/uv3x0/QqtAHX9+sFNAIDLxzmX99Mui2MOCwM2C702873Wsz1mU92m4/2mQ0Mmbwd0G96pF74hs5sUXlYrPCnF38snXkknn04h+8fQ9oZQ7PbgscrS8HppxFLb9+8NABKNUsThDEwNXVe4ea5dsXbTug3bN23etXXb7u3bdu/Yunv79j079x0+ePi4v2+gb8jtDfWFZkNdJpPDdnPjDu+nHT/OOH6cdfw05/TLotNvn1z+7avrv//q/u+/e/7brx6/fRW0vJ89foPc7/b1g+vX9y6CE7cv790+L7h9mHFZnHKZH3KY7bGa7TSffW02/cZkvNNouMegt0/3Va9mTZdK3mtKSpPci2rZ0FJFCIBM8hk2+Vgc+dBz6obLZG0XeUkMPC2AXHIH/10BkEAi0NJSapoaNk527qs8V6xdtXbL+k27tmzbu3PXgd37Dx/09vU5fMz3aFCA/+mT/kH+j26sqeIZvKs3GOmymRqwmRt1WBRg8H7G8cOs46d5p88Lzl8+QC7/FRrtcf/ti/uvn6Flz1/fu3xZcP485yQoe1w+TDm/n3CaH3aYG7Cb7baa7jSffmM23WE22WE80qnf36X7ukuj5i29sAPPa5WNrRd/VoF4WCx3O0/hcibhbCopIIl8JJq6O5TqGUQk68igpGAGkEtu4r8lAAg0SgGnaGRu7Oju7LF6+cp1q9Zv2bB59/adB3bv9dnv7efjE+h39ESA38njx06dOBp07Pr59YWxhp2Fev3NlmOdllO9NrODtvOjdgvjDh+mHD7OOH2adf60AA1rfv3g9stHt18+QTXPl0WXL/POX+adIetPOC6O2M/12872WE+9sZxqt5hoM51oM5nqMJ16Yzbxxni406C7S6e5S6XkNT6jTTKxaVlkjWhYuci9YuSNPNkLmdjTXHxgCvloHG1fBG3rPbLZZkUsQ0pCAl4nh1xyH//dAEBA1T9NiW5lb+Oy3NV9tceK9avWb92wZfe2XQd2HzjifSjgyJEgv6NB/n4njx07FXQkMCDo+DZOiEVrmnZ3mfFAvdlIu+X4W+upd7Yz/XZzw/YLYw4LE47vp5w+QFO8zp9mXT7NuXyadfk47fRh0unDtNPHGaf3447zQ7bTXZYTr8zGmozHGozHGozGGg3GWwzHXhmPvDEc6NJ7+06rvkspr0OW3bIsuh48qQIPS0VvFy67moc6nyF3mosLTCH7JVC8o2i7n9LXXSHruCmi5eARIeSS+/hvBoAEAiEJ1T/qNk52Lp4QAMvXr1y7df1mr627DnjtP3LA+9hhn0DfI4F+vieOHTsT5Hc66LD//qfXHKvi9Tpz9d6WGPfVmg02WYy8shx/Yz3ZbTvdazszYDc7ZD8/4rAwar8war846rA46jA/bDs3AGl+yHZ+yG6233ay03KsxXS0zmis3mis0XCs2WC01WD4lcHAG7133bqv32nXditlt0snNYlF1ICQCnCvGNzIF7ucI34uXe40V/E4i+CbSD4cQ9sfSdv5mOp4hIRXgxeKIpfcx38/AKRlZXQMdOxdHZy/A7Bmy/rNu7btPOC1x2ffft8Dh475+AQePXrCPyA4KPD8yb2+h0/6unEf6LVztV+lG3QWGHWVGvdWGw80mA01W460WY2+th7vtJ7ssprssZ7ssZrqsZrutprqspp4YzHebj7xymyiA9oVMN5uMdpkPFJrMNZgPP7KZKLDZKLTeLjT8F2nVkcXs6FbrbSLmt4uE98o+rQaPCgDtwrBtXyRi9kSZ9JlT3Dlj7Pxvskkn3jqwWjangjqpjtU/ZUKMnh4SBS55Fb+mwEgIyerb2Lo4Obk7OkCAbBu5ZpN6zbu3LJ9/86dB3fvObxv/1Fvb//DPseP+p0KOHrSb8OOrWtW2t4+rlsXp9nC0mlN02/P1H2Tr/+22LC7zLin0qyv1qy/3myw0Xyo2XyoxWyoxWy4WaBGk+F646Eaw6Faw+EG45Em05F6IwiARqOJ16YTXWZjfaZDvUZvurXqOxnFr3EZ7TIpLcte1oOwKnC3BFwvBJfzwMVs0TPpqBNc2eNsRf8U4tFE8uE48v4o6u5nNI8TJBVLDALeMYNcejf/nQCQlZMzNjcRAODqvspz+dqVqzet2bhj09Y927fvgwaC9hzat9dn/wG/Q4ePH9mxb6edi6OxidGBLUY5oTpN8RoNiVrNbM1Wnk5bhl5Htt7rXCMoJxQbd5ea9JQb91YY91Wa9FUZ91caDVQaDlQaDFToDZTrDVXqD9cajdQZjtQZjDQZjnYYjXabDA+Y9PYbtr7TLHlDSG8VT2oGL+rB0xrwqALcLgZXC8AVCABwJl3iBE8qMBXjz8L6JkMMHIql7I+kbH9EsfbCy+Ak4W2TiKV2898HAAmELEbOxNLM0d3ZydPFfaW759oVqzauWb9t42avrVt379i2Z+f2fTt3HPDy8t6zxWubs7uzuZW5nbPzls0rnl2wLH/GrI3WqI1l1idoNqZoN7O1W3g6bem67Zl6Hdm6r/MEmSHfoKfQ4F2RQW+Jfl+p/kC53mCl3nCV/mi94Wij4UiL4VCbQd9rne63Op09Oq3dGhWd1KxXqKQm8KIOPKkBDyvB3TJwsxhcLQSX88GFbHA2Q+wUHxHElQlgK/il4H0TSUfiKYdiKHufU9ZfI6tZyUnCuwWQS2/ovxUAVmYObk6O7s6uK9zcV3uuWLdq1aa167dt2LRj06adWzbt2rp1z451WzfauzhYWFq4erju2u+17+ih4KB17FuG1eHKlRHqVS/Ua6LV6yAStBqStZvZmi1czVa+1qsM7deZOp3Zej35+v3FegNlekMV+sPV+iN1huNtJuOvTYc7jfve6He+1mp9o1b3hlb2mpDTLsNpFXnZAJ7VgodV4F45uFUKrheBK/ngYh44nwOCM8EpvlgQV+o4W+FYCtY/hXBUwIB3NHXfc7KDN47IlIHnhhFLbei/EwCmVlAGcHR3dlnu6iZoA1ZuWL1m85p1W9at27Zh7ZZ1K9etsndxsLKx8lzh6bXPy//UscALZwLPHH14YXlRiEbVM5XyZ+oVERpVkerVUczaGM26eGZjkmYTS6s1VbsjXQBAof5AhcFwreFInfFIg9Fws+HIa5PhLrP+HpOeHoNXXVp1bxgl7fJZbUhOi2h8M4ish27/D6rA3XJwq0wAQAG4lAcu5oJzWeBMBjjJQwWlygVwFALYin7JBN8ksk8c2fslZdNtisl6RWkFNPx8acRSe/pvA4Cxpam9m6OjO9QHuy53dVvl4bl2xYr1q1ZuXLN83Uond2dLa0srWyuP1Z479u44HOATcDbw1OWzgRfOnj27P+WmSXkovTxUpTxMpfypckW4akWkWnWURm0Msz6B2Zyi2Z6m3Zml212o21+pP9xoPNJqOtRq0t9q8K5dv6fT6G23YXu3bkMXs/w1I6sVzWoCLxtAeC0IqwEh1eB+BVT/3CoFN4rBtcJvDJzPBmehJCB6gocK5MgFsOWFzcCRROLhWMr+F5SVwUSGqRxSGp4bRi65rf8eTbCRmam9s6ODm6OTh7PzcleoEFqz3GPtCpflbjaOthbWFlY2Vq4r3Dfs2ux1aM9Bf++jJ/yOB58Iungm4Oyxu+eX8+9olT1mlD5WLg1TqXiqWhHxDYC6BGZTimYrT7s9S+dNgW5XmV5vg1Ffm2nvK5OuNv32Vs3WV1pNb7RrXmuUddDz2vCpzRKxAveH1oCH1YL6pwLKALcFAAiTwOV8QRL4xoBYEBcdmCoXwFYUMIA/kkjxjqHsCiXbHcDj1aWR6KX/u8JC/C2GQW2d7R1doSTg6OHs4unqttLdycPFwtrS2MzYysbK2cNl1aa1m7y2bt+/c8+hPQf9vH2CjvqfPe57KjAg0Ov+OfvMBypFj+klYaplz9QqnqtVv2TWxGrWJDLrWcxGrlZzpk5Lvm5biU5Hjf6bJsOOVoPWVt26JtWKJkZxC6OwlZ7Vgkttlo5vEHleC0IE7n9QBR5UCgCoAHfKwK0SQRL4cyEEdcPgVJpYEA99nPODAeLheMrBaPLWeyTTDQoyWDT8/AjE3wTCpZwI0zbQsXaysXOxt3d1dHBzcvJwcXBzsrC1NDYxNrc0d3BxcFvpsQLqCqDOeIvXtp0Hdu312XfA3/tQgM/+o96Hj2y8c9448YFyephS7jO1whfqJTEaZQnM8mRmOYdZwdOoSmdW52hVFWhWl2nVVGnW1mlVNmgU1tGzawlpdZjUemRivVhsncjzGqjyge79QgCqwP1KCAAhA9/ygGA4CMIgF5zLgfLAmQyREzxkEFf2OEf+GBtiwCeeeDCGuOEqHlooKoeG1ggt9V8XFuIvC4CUtLS6loalnZWtk52ts72di4ODm7O1g62xuampuamVnbWDq5PLcje3lR6ea1asXAetFd24c/O2PTt2Hty1+9Ce3Yf2bd+384CPy/mLWo/v018+VmFFqHNfaqTHq2ckaWSw1LNS1XJ46nmZzNxc9dxCtexildxyRnYVnVdJZFdhkqqlYqtFn1eBZ9UgtBqEVH0DAGJAoPsCDIS10K3Sb/3Aj574fPa3nvgUX+IETzIwVeYYS8E3Ce+TQNz3nLDyNJ5hLIeQgv2H/OsTuHRrgaSkGMpKptbmNo62Ng62tk52lvbWxuYmRqZGplamFvYQGPbODo6uTs4eLm4r3D3WLF+5YfXazes2bN+4ccemTbu2bNy1fe2O9RsOW+0OZhy7Tr18X+nuE+XQSOVn0cqRCapRyarRbJU4nmpcunJcNiM2lxyTj48uUnxRLPmiVPxFhUREJQithMb7H1RCdf/D/8BAFcTAvcpvulsBbgva4pslf3QFF3J+dAWIIK50AEfBLwV3JAF34AXRM4hA1ZOBd40hltrff1EAoAeASkqSoMdAmFg72Ng42Ng42hqaGatoqDG1tYzNTcxtLCztraztbe2cHBzcnVwEk2UeazyXr1u5asPqlRtXr9qyZt3WDeu2bvTc5ezmr7I2mLz7CtX/DuNsqNKlcKWbUSp3Y1UeJCqFsBihXHoonxKaQQjNUXicJxlSIBpSBB6XiYRVgJBKaMDnQeW3yudhDaRHAgnPhVQIc4IQA6g5LoMwuFb8DQPhFMFpwTxxAEfBPwV3NJG4N5zocBCLU5GBP3QMsdQW/4sCgECi5BTktQ31LGwtLe2tLe2tNXW15RTk5RUU6coMbT1tI3NjC1tLG0dbOxd7qEMQThes9HBf7em+2tNj7fIV61at3rDWY6urzSGm7XGS+xnSukvUXbdoBx/Q/cMYJyMYwS/pF+OpV5LJ1zjE6zzc9XTMzSzEzRxwMx/cKgJ3S6G1bvfLIWdDAFQLrF8LQupASC2kx3XgcS0k4ctHteBh7bc+AWoPyqEWWdgbXBJMFQdDU8XoQGiqWN43CXcgkmS7S1GeIikBP1UXufRG/+sBgIB2hKkw1UwszSxsLc2sLVSZ6lIyMhIopKSsFI5IUNZQ1TXSM7E0sYLKIYgBaMrM09VluZsr1Bu4u6/09FyzwnmbveUhVUt/ol0QwfUMefUl8qYb1F33aAdDqUfDaceiqEGx5DNJ+GAW9hwXczEddSkLXMkF1wrAzUJwpxTy8R8ACL0u9H0dpNDvR+HJYwEbj2q+NQlCDKBsUPRtnDQ4U+R0+rITXFQgG+Ofgt1xH2e0CoMhoWEGEEtt9L/onmAimaRvZGBua2FiYcJQUUJLSn77EgolJSujiMfRlekaOpr6xgamVmYWdlZWjlCxZOtoa+1oZ+NkZ7/a1maPoakPxcyXaBVAtD9JdD5LXHGRvO4GZct9itdj2v5wyqEXZN844rEk+SCW7Cku6lyGyIVsaIHDtULIu7fLwN0/ASC85QsdD6kehAn0pB48afh2Hlr/nYRaqEy6X/kHBpeEFVHGt67AL0lh1yO82Xp5BaoUPDmAWGqv/+UAQKCQ0nKy6ppqJlamBqZGFDoVifrTNCr0sdUolKSktKwMBitPJJPoynQlNRVVdRVlNWW6KoPGpGnY0/wL7QoAACAASURBVA29qMY+BDNfgsUxonUg0eEUwfUccfkVytpb5M0PKDvDyHsiSN4viT4JCn4psoEc1Gm+WHAmNJJztQAa2LlVCt3IoQagWlD21IKwWhBWJzB9A3jaCOmJUA1/SIiBkASoYRC0y7fLwI0SQUUkWDt0JkP8ZJrsMZb8roeKFpswijTo4dLwYiHEUjv+rwSA4FnQOBJOz1hPz9iAQCb9379BAoGQgHZQIhAQDGiUpCRKUkpwgkai0TJEKZq9vMFegokP0cyPYBlAtDtBdDxDcr1IXnGNvO4Oacsj8o4npH2RxIMxuCOJ8v4smSAu8kw6ZNArBeBG0XcABA1AiPDeXw/ChEZv/AOAp01/0veLwoQgbBUe1X6ri34MGV0vFrlSIH0+W/5UGvbQc6zTAUWGgaykLPxoUeSSm/6vBAASqviVNVS09LTxJOL/7nslUEg5mpT6KqzhQbypL8HCn2R9nORwiuRyjuh5hbT6JnnjfcrWULJXBGlfFN47XvFostxxDvpUmtj5bGibi7AKEmYAqP4RlD0/bvNPG8GzJhDRAiLbQFQ7iOn8Q9GvwcsO8OIViHwFwlsgKn4w86wZuhLeinraggmtx9+vIt0sIV7MIfrFEtefJaiZYaQw8PYx5JK77i8EAAKFxCgqEClkjIL8f+PtKBkUTlNGawve5AjRXNAJ2J0gOp0luV8irbhOWX+PuuUxeecz4u4XBO9Y7NEkTABb6iRX/FwWtMj5WiE0kvMDgB9F/5MGEN4E+Tv+LWD3A94IyBgHmVPflDUFsiZB+jhIGwXcEcAeAEm9IO4tiO2Ejkk9osl9Min9xJReemKPUuxb5chXKqH1jFultOAMyrbrBF0nBUlZeK0EcumN91cBQPCxAGhpqLD5771dSh7NsFMw2k+08CVZ+hNtggRV0AWS5zXKmtuUTQ/JO54Sd78geguqoGMs6RNcieBMaNBGCMA9QQn0o/551gzd3RO7QeogyJwAubMgbw7kz4P8hT9UMA9dyZsHuXPQN2RPg4wJEf6YaNqoRNqoTNoYlj9G5o0wOMMqrEHV5F6N2C7m81fqIfXKl7Lp++5TjD2xijQpFDxVjFx67/0lABDW+v/99yIRGJqU1kacqQ/R3E84HERwCia6XyKvvklef5+yNYzsFUE8EIU7HK/olyIblIo8mwHN4wr74G89QC3k/ohmkNAF0kage3zeLChYgJS/APKEEpgegkHAQ97iNxgK5kUL5sXz56TzZvA5M9jMKYWMSVzaGIU3SuOM0NkDqin96om9GnHdGs871O9XKR2NpLkeJFC15JCScDmEhAH4H4cAgUTJomjWGMM9eKgV9idYBxEdzpDcLpBXXievv0vaEkLe8Yy49wXuUBzWN1kuMBV1Jl3kDwDKoRLocS1U7id2g7QR0ewpkDsDAZA3J5DA9392P2T6H0jMgXxIogVzqMI5xfw5XM4MJnNKLn1Cnj+hyB3Dpw7TOIOMlAGl5H7V+B6NF2/U71epnEymrw4gaJjLoeD9A0g4A/zPQ4BCYpSlNTdgTY8SzX0JlscJ9qdIrufIy6+S194hbn5E3v6EtDcS7x0LAXCcgz7NFz0vAODmdwCeNYL4N8u4g1LpY+jMSZHsaYiBnDmQOy/09zfrF37XH8lhHvqeXAgVkYI5VMGcZO4sOnsGlTW9LHNKij8uzxvHpo4SOCMU9hA1ZUApqU81pkv9WYvK5Uz6zutEfRd5BbIUPFOG+MlLoP+50Bg0zQpjtJ9g6kswDyDYnCA6niW5Xyatukna+IC8LZTkFUE4GIMT9sEQANnfMsCdMvCoGkS1oZO78ZxBhbQRyYxxsaxJkDMtAECYBL4DULAAihZA8YJo0aJY8eKyosVlhQtihXMieXMgZ/6bcmdBzqxo9izInhHLmEKlT0imTUjzxhW4ozj2CIklwCCxV+VFh/KdMvqRcLLTbhxZXQYNpwIkDMD/LAnIK0lrb8aaHMGb++OtgwgOp4luFwjLrxHX36NsfUzcFU448BIv7INP86GRUGgqQJABwupEo1+RErsorD5s6rBs+qhExjg02pMzA3JmIUNDza7gTp8/DwFQsiBeuihZ9l6u9INC2XtM2aJsyQK6YEE0Zx5kzX3DJmcWCBgQyZwSTZ8US58U408geWPy3DHF1FE8e5jCGqQl9CqFtdBPp1JX+OFVjDFoaTQ8U4aAM8B/OwSSGEkVNwWjg3hzf4J1IN7+FMEFmhUmrbtD3vSItOMpfn8U3idB4RhLGpoKyAKXC6BFnffKwZM62ag2SvxbYvI7fOqgfNqwTPooOmN8GTTiOQ2yZiAr5wjzgCAVFC+IlS7KVCziyz/gKj7gyj8QK96TyhcVixfE84RJQIBBzhz0xqwZSJnTIGNKhD8hkTaOThuX4Y4pcEYI7GFSUj8lvJUSzCNtOE/UsMbIKAoYgNfPIf8PkfDPKYGgFUSSSIqZnP4unJk/wfI43u4E0fkcyfMyee1t8saHxB1PCXtf4A/HKxxjyZxMWxYsAOB6MbhfLh5WQ4lqocd1kpLfkTgDRN4glj+KSR+XypxEZU2JZk2DbEE/IGyL8+dA4ZxI8QK6fJFU+Z5S8Z5aAR0pldAJXshA7vw3AKA8MPNnBkD6pEj6JFKQDeS4owrcMSx7mBDZTr2YTdl4kaTtpCClAD9tFwkD8N8CAI1UUJFmrlU0P0qwOIa3CSQ6nSF5CAZDNz4gbQ8j7YkkHorD+qfInuSJB2eBSwXQVMC9UtnH1fTnTcqxHfSkLhqrl546QOYOE3ij2PQx2cwJyawpRPa0eO4MIndWIm9uWf6caP7csvx5saIFmbJFgtD6ldCRUvmBUvFBsXhh2Z8ZyJ6D6iJIf2QDkYxJkD4pyp9Apo1LQglhFB/TRbpeSNn7iGK6DotlSKPgz+FDwhngfzcEKKSkPFrJXt7Em2Duh7c6TnA4BbUBK6+T190lbw0lej0neMdAA0FBXIkzGSIXoSVxIrcLMQ/K6M/qGC9blRI66ck9Suw+BmeAmjpEThshZoziMiew2ZMKOVPyOdOyOTPovFnJvDmJvDnxvDmxgnlE8YJs2QK2YpFWsUguf48rf48tWUALC6EfyhZgkP0nBrJmoGwgSAii/HEUf1w6bUI27h3ubjnZO4JiswOPV4E+lBt+3CLi/2cM/lElEFQ6o5FkI1n93ThzX7zVMWiBtEvw98WhIUSvcPzBl9ijifLHoWWhohdyweV80Rt52LtFjCfVSlHNyvEdjKQu5ZReBruPzhmg8YbI/FFS5jgla4KcPUnMnlbImZbLmcHkzUoJABDPmxPNmxPJn19WNC9bsiBfvCBdvIAqmBfN/X8A4BsDQgymvzMg6A34E1K8cZmkfoXQBsKxWLLbURJVWw4phYL7AQQMwH89BBISSEWmjNZmnOlRguUxou0JktNZosdl8ppbpE0PCTueEQ68xB1JUDjOkYQAyAGXcsWuZONv5iuHVCpFNqrFvlJN7FRh9aix3qmx+5Q5g1TeMDV9lJY5Ts+epGVPkrKnsNnTmNwZ+dwZ2dxZdO4sImdWDGqRhSNFP3rfP7v/XwGA2uLvDGROC9YXTQsbg2XpEwj+JCp1VOb5K+w5Ps3Dj0TVkkPLouDPpkfAGeC/CgACWh+qsRprDC2QhnYI2J8muF0krrxOXH+PtC2MsC8SfzgOG8CSOsmDlsRdyBa7lIG/lq18v1TpWa1aTCsz/jUzsYuZ3MNkvdNg9amwB2jcIRp/RClrTDlznJE5QcmcVMyaVMyeEmYD2ZwZqZwZkZwftY3A3P/i+P9UPxj4gYGwHJoQE5AgldKveC2fuv4cVc1CAdpcv+TZFfnP1D+rBBIsi5AhoJXdFIy8caZH8VaBRLtTRGgw9Cph7R3S1hDinnC8dwzUBwelIs5mgnNZohfSsZczlG8XKIdWqUc1ase+0ol/o534VjulR4f1jpncq5zST08dVEkfVc8cVc8cV8kcp2ZM4L5hMC2fNS2TNS2eNS2aPQ1VNZmC47eRH8EQEHT+/a4vtL5waOjH6JCwHBKOEWVMCicNUBlT6KQ+hZtF9A3nqcqmGLQcnAeQMAD/6xBIQFPCKKq1nMF+rOkRnEUA3uYE0VkwJbz6FnnTQ/Kup4QDUYJ10RzJ0+miwZkgOE3uAk/pRrbSgxK1iDqtmBbduHbd+Nd6SW/1WN06yT0aie+Uk/uUuEOq6SPM7FHNrDGNjDF6+hghYwKbOYnLnJTLnJTInJLInBIR1jNCBn6Y+18Y+POVP33DHwBAeUCMP4HmT6D4EyjWIOZWMXXzFbKKuTwaAw+PIuEM8L8OAVIKSTSS1duFM/XBW/gTbAIJTmcIbhdJK2+QN9ynbH9C3PsCf0QwHXYyTexsBjjLkwvmKF1JV75ToPqkWjOqUTe2VS+2XT/xjWFKt2FKj05Ct1p8j3JKnxpvUCNzRCtzVDtjVDV9lJ4xRkkfJ6dPKGZMyGdMSmVMIjOmJDKmRP/A4Pvd/Y87/Y+XP47CdDH9RyEkmC9D8Cek+BPojEl0Yq/8zWLK6pNkmp4cvIIaAZdA/5UQYJmy2ptxJj54c1+CNbQwDu9yDr/8KnHtXfKWx0SvCPyhWAXfJExQKvI0X+QMT+oUi3YuVflapuqDEmZ4rW50s35Mq0Fcu1FSpwmr2zihSzv2rVpCj1ryO3VOvwZ3kMkbUksbVkkfUeKP0vmjFP4oMX0cmjhLH5dOH0ekjy/LmBSBBBla5FtmEG6mmRbspxGmCOH59y9BErxL0AmI8yck+eOS/HEJ/rgUZ1jhbhltfTCFoi2LhOcHkP9fYvCP6wEEkleS1liraHyYYOqLtwgg2J4gOAUT3C8RVt8ibnpI3PmUcOAl1idBIYAjdZIvejoNcSqFeCZF5WKayq189dAK3ch6g6hmw5hW48QO05RO04RO/ejXzJi36vFdmknvNFJ6mZwB9dRBdd6QatqwctoII22Ewhsl8EYVeWOyvDFk2hiSPy6RPi6RPiGWPi6eMS6WMQkyJkHmD/3heKEEtAisnz4hxp9Yxh9fJrA+Km0MlTYmyx+XT+7DXcujuBwk4FVl4EEhBAzA/3sIZAiSKq7yRofwJkdwZv7QlLDDaYLrecIKaGEcadtj4t5I/KFYrF+ybGAqEnrUcwomKF45mK12JUPtQZHWsyrD53VGL5uN41rNkjosEjtMo9v1otq1Yt7oxL/VSuzRSunVZPUy2f3qqQPq3EFV7iCDO0RNHSaljuC4w/LcEWneqGzaqFTaKIo/iuaPIfhjIuljIunjIhASE2IZE2KZ48sgMMahzZbpE6Lp42LpkOnF+WMS/DGJtDGEwPoI3hiaN4rhjsjzRuVYg4p3SilrT5AwZCnxpb7FIP4p+mdmALQCmmqLMTiANz6MM/UlWEGDoUTnc3jPK0RoRuwR0SsC5x39fYswTzSIJXU8ln4qUe0CT+N2rmZomV54teGLeuPoZrP4NovEdrPYNqMXbTpR7VqxrzXj32ol9WinQBgwWb0a7D7BjMEAgzNA4wxSUwdJqUPY1GEcbxjDG5FKG5FOG5Xij0ryRyQFMKD4o8j0UVTGKBp6OYrijyEFpkdAGkWmjaG/aVQybVSKNyrHG5XnDitwh7HcUSxrgHAzl2KyHCut8O0BSrAQMAD/MQQoqA8mGMrpeOENvfEmPtDjUmxPkpzOQhMCq2+QN94nC1eGHknA+qfIBHGXBbHFj8UQjseoBrM0rmZo3ivQelJu+LzGJLLB7GWLeVyreUyLSWSzXmSLzss27Zh27fg3OolvdZK7tZN6oKIo+Z0aq1eZ1ctg9TFYfRROP5kzQEodwHEHsdwhed4QhjcsxxuWSxuR449K80cl04VIQCdCCV9K8b9f549Kpo3IpY3Ipw0r8CD3K0IADBF4QwRWH/F4JNXYXRHaSgYvGkXCAPxnIZBAILBMGc3NWIODBGMfaErYJojscJrkcg56XtB6wbqgPc+Jh+NxfsnyxzmSxznifrHyfi+UTiWoXeJp3sjSfFik96zCKLzaNKLONKrBNKrRJKJBP6JR70WLTlSbTvQr7dgOnYROnYS3OgldWoldmsnd6sk9KknvlFnv6Kx3NFYvhdNH4vQTOP3EVAgGfOoAnjuE5Q3JpQ3L8EfkeUPyacOYtGHptGFZgcvlecPyaZAwwnPekCJvSBF6y6Bi6iAeSizQzyFxhwgvX1H9wyiqRjLwoBACBuA/DYE4AoFRktZYpWhwAGfsQ7T0J1sHke1OkpzPEj2vktbcpWwOIe98Rj4Yi/NNUgzgyAamivslII88pwS+VDvHYl7ha97K0XpYrP+k3ORZlVl4jUl4jeGTaoNntfrPG3SfN+lCqaBVJ7ZdN65DL+61TvxrrcROZtJb9eRu1ZRuJVY3ndVDT3lHZfWSWL0kdi+Z3Uvk9BE5/QRuP447gOUO4LgDOB50VOQOYnmDwitYKGMM4r5pAM8VYjOAT+0npPYTU/tJnD4Ku4/C7qXGtNF2XyAytAUL5uBCCAn3AP8xAyBlKVAfbLgfZ3qYYOFPtA4i254gO54he16lrL5D2fSIuvMpef9Lsk8iIYCtEJgq5ZeEOByJ83uueipB4yJX62qG9u0cvQeFRmGlJqHlRiEV+iGV+mFVeuG1+s/r9SMb9SKbdKNadaPb9GLbdWPbteM6NONfM5M61ZI6VZPeqqR0KaV0M1IgDGjsd2T2OyLnHYXzjpLaR0ztI3L78dx+PA86Erj9BOEJdIS8Dl0XKhUSIbWPkNpL5PYRuH0UTh+V3Utlv6OweughxTSvYAKNKYOShjfQIOEm+F9DgEBK4tAUG4z+XrzxIZy5H8EykGgVSLY7RXa9RFl5k7bxIWX7E8qeF2TvOJI/CxfIkfNPWXbohfShJ4zAlxrnUjQvcTWvCxi4l29wr1D/bpHuvRKdh+U6YVX6z2oMIur0Iup0Ihq0XjTqRrfoRrdqR7dpxrzSiO9Qje9QT3itmvRGOalTKalTOfktI6WbxuqhsCHROD0UTg859R2J+00E7juc4ITI7SVyeol/+hIptZfIeUeC1ENOhd5FTn1HZb+jsnpo7B4a6x39aQVtSwBekSy1TAKaAIRTAQIeBfoBAFoOTTDC6HrhjQ4RzP2IloFky0CS3Smyy0WK503a2gf0LWE0r0jqwViybwoxgKN4jI089HLZvhD80XDVkwnq59jMK2maNzN1bucY3MnVv52rdztf+26RzsMyvaeVBhHVBs+r9cNrNCNqdZ7X675o1H7Zohndyoxt04hrU49/pZbYoZLQoZTUoZz0Wjn5jUrKW3rKWxqri8buonG6KZxuSmo3lQOJktpN5HSTUrsJnG6S4CX01W96RxYAA8HD6oaOgpdUdg9UYkFV1lvGw1z6Gm88Bgc9eRcGAAED8CMESEmkooa05ja84SGCqR/RPIBoAbXCJKfzVPdr9NV3aRtCaDsiaPuiyUcSSf4s4jGWtE8s8HqM3hdC849SP5WoeZ6tdZWvfTNL/1aWwe0cvZs52jfztO8WaT8q0Qkr139arve0QudZpfazaq2IWq3IBq2oRq3oJs2YZvW4VtX4NuWENqXEV8pJ7UpJ7YyUDiVWByPlDYP1hs7upLI7KamdNE4nLfUtORU6J3M6CamdpNS3ZI5Q0BUKu4vGeksXHMmsTjLrLRV6+ZbOgliisjpp7Lc0dicjtIDushUrpygJb6hHwAD8OQSydGmN9TgDIQDHCGZQJ0ByOgcBsOoObf0j+vZw2p4oyqF4sl8K0Z8l7xMv4RUmtus+9tBTlYBojdNJmhdTta7zdW9l6t3O1ruRrXMjW/NWnta9Ap0HRTohJTqhZdpPyrWeVmiGV2mF12hG1jFfNjCjGzRimlTjmlXiW5QTWpUS2xhJrxjJrxjJ7YyUdgarg87uoHFeU9mvqZw31NTv4rwhCUTmvKEIBJ2w39DYbyBaWJ1U9hsqS6DvJzT2G5rwe5JfMS68pJi7yUvKwkkA+b/LwD9zIky4M0aGIKm6UtHIm2DmSzTzJ5n6Ei0DiA7BVLcr9JV3GOseMbY9Y+yKpB2IIx9JJvml4I8mSu0LB9vvIPbcIx99rhoUp3EuSfOygIGbWbo3MnWuZTBvZDPv5Gjfy9N+UKgdUqIVWsp8UsZ8Uq7xrFI9opr5olbjZZ1adL1KTKNqfLNyQotSYgs9qZWW3EpNbqOmtFHZrwRqp3PaKexXFE4HWSAqp53EaSdyOkiClyThCbuDIhCN3UFld1BY7WSBKCzoInSFDf0QKruDHt+odDKUomUih5aCH6yChAH43gcroJVd5A0PEkwOk0x8iNBnCPiT7c6QXS7Tlt9mrHnA2BTG2PGcvj+WeiiBciSZ6JuM8Y4S335PZOs1zIFHdP8o1RNxasHJzIsc7Wt8net8nSs85tV05s1MzTvZWnfztB8UaD0q0gwpZj4uZT4tV4+oUIusUn1RrfayVjWmXiW+gZ7YSE9qpiY3U1nNJFYLmd1C5rRQOK1kTis5tZWQ2ob/LpJAxO/Hb1c4r4icNjL7FZXTRua0kVltJFYbKQUShdVG4rQRWW0UdisNUhv9ZRn9yFUS00gWagbgfgD502cAaEGELIpqg9HfTzA4QDA8QDA6TDD3I9ucpDhdpHncpK+6x1gfwtjyhLb7Be1ADM0nkeyXTPCJk/V6LLrhMmLnLYLPE0bAS9VTcRrnkrUup+pc5WlfSdW8wtW4zte8nal5J0vrXq7WgzzNh4XMx0XMJyXq4WVqkRVqUZWqUdVKMTVK8XX0hHpaYhM1uZnCaiKxmkjsJjKnhchpwaa2YLmtWG6bQK14XiuO24rnthIEwnKhl4LzNiK3jShABRK7jchuI7DaCGyIJQoHYoDAaaGwm6nsZmpKAz2ykLbjGB5PlVry9Iv4++gfWwIJ+mAU0UhWxwuntxentw8vaAZIVoEU+2C6+03GyjtKa+4x1j2kbQmleUVQvOMpvslk3ySFA88lNlwHGy9Ke90m+zxlBEQpn4xVO5fEvMTWvMjSuMhSv5qqcSNN7Xa66r0s9Qc5Go/y1EPy1Z8UqjwrVn5eqvyiXOllpVJMNSO+hpRYS0mqJ6U0kFgNRFYjjt2I4zQpcJvkeM2yvGYZXrMsv1kurUWe3yLPa1HgtSiktWDSWjC8VnleK4bXiklrxfJaFLmtuNSWb+K04NktOHYznt1M4jQTOc341GY8p5nAbiKyG8msBkoYn7x8u4IiSRL6eFY4DyB/bgAQSGiDvOZmrO4enO4+nIE3wdSXZBFAtjlFcblK97yptOoOY809xoYHtG2h1P0x1CNJFN8UwqFoyU13wapzousvyO+9R4HyQJTyqTjVc4nqwQnq5xJVL7FUrqYq3+Qx7qQr389UeZSlEpKtEprLeJJPDy+iR5bSosqUYyqV4qvICdWkpBpcSi2WXYdl18tzGjCcBgVuo0xao2RaAzqtEZnWiOQ3Sac3S6U3SaYLTtKaJfnfJJ3eLMNvkuE1K3KbMNwmTGqTArdRIbURw25UYEM4EVIbFXmN8rxGeeh6gwKnXpFVg7sVS3BYhZGUgTbHLXn8EX95/XMBQCElxJFyVEmV5Qq6giRgeABncpRkcYxsFUR2OEd3uUxffoO25h5j/UPG5hC613OadwLNL4XiE6+wI0R01QWw4hRiy0X8vjvUI2G0gBf0E9FKJ6OVTsfQzycoXUlWus5h3OYq3U1jPOQrPcpgPM6iheVQn+ZRIwppUSX02HJ6XAU1oYqYVIVLqVbk1Mqn1smm1slyG5C8+mVp9ai0ehS/XpzfIJ7eiExvRGU0iWY2LctsRGQ0IjKbJITKaJRMb5ROb5DhN6D4EDAyvEY0rxHJbZDlNiikNuBSGyAA0hox0Jca5Lj1GE6tbEqFzMUwRQsHOSlZeCs98icGQDAQJI2XpNljtHfh9Pbg9PdhjQ6TzP0pVscpdqcojueo7lepq27T1z2gb3xI3RpG2fuS6pNE8YnHej1BrLsG3E+AVadktl8m7rtN8gkhH3tGCYignnhBDo6mXoynXk2m3mTRb7Np97iUhzxKSDrlcSYpLIcQkYePKiTFlFASyvAJFYTkCmxKtSynRppbg+TViqfVifLrAL9OjF8nmlELMmpBej3IqBfLagCQ6gUSnjeCrIZlmfUSGfXiGfUiGfUi/HrAh44iafViafVoXoMMr16KVy+dVi+VVo9Iq0fw6lHcGhS7EhWXJ+l7HqOsIQUlAbgQQv6sAEDzwRg00URObzdefx9efy8OGhL1I1keh1phh2Ca62Xa8pv0Nffp6+7TNz+i7nhG3feScjCasDscveWe6Ipg4B4otv4MZscV4t4b+MP38b6PCQFPSSeek85GUS/Ekq4mkG4nk++kkO9xiI/ScCF8fFgGLjwLF5mLiy7AxhXLJ5YpJJfLsipQqVUSvGpRvsDxGbUgsxZk1kDKrgFZtSC7DuTU/6Hchj+UI0RCoMy6b0qvB+n1Iun1gF8nmlYvmlaHEBIFHasluJUIVql4BFdy0x4ZBTy8jx75EwMAbZBHKTJldHcRDQ6S9PcSDA7iTXyJ5sfIVieodmdozhfpntcYK+8woInhB7StodRdEeS9L4h7n2N2hCDWXQduJ4HncYlNZxW9LhH238Aduos9+gh/PIxwKpx4Lgp/ORZ7I4FwJxl7jyX/MFXuMVc+jCcfkS7/Iks2OlcmtkAqsVgyuXQZu0yEVwH4VSCjGjJ9VjXI/lfl1IK8uj9UIFC+QMIrubXflFMHKbtOgEQdpIw6kFErAhFVCzJqQEa1SFqlSGq5CLtE5OYzSVs3GSn4mULInxgABAopQ5HS2IjXP0TU20/Q34sz9CGYHiNYBpJsBFWQ62W6503Gylu0NXdoGx/StoVRvSLIe17gdj2T2nIfLD8HnPzAigDktmCF3Zex+68rHr6j4P8QeyJM8Uy4/PkohSsx8jfi5W4nyt5Pln3EkgnjSD7lSj3nI6KyELF5hosxvAAAIABJREFUqMQC0ZQiwC4FvHLArwAZVSCrCmRXgRyBcqtATjXIrQZ51SC/RuD7WkiFdQLVfn9ZAx3zf+g7GLkC5dQKckgtyKmBWMqqBhmVIK0cpJWC5FyR09eQ2gaCj5+BCyHkTwmABAIpiUUreyjoexP0DxB090CfKGzsS7A4TrI5SXU4S3W+SPW4Sl9xnbbqNnX9ffqWUNrOcOqeSKLXc8z2UMT66yKuQcD5KFgTiNp1XnHvZQXv65ijd+WPh2BOhckEh8tcfCF9PVr2VpzMvUTZR8lSYaxlT9hiz7hikRliMTmiiXkiKQWAUwx4ZSC9HGRWQL7PqxSoCuQLVQkKqkBRNSiq+abiWkjQSQ0oroaORTUQBpBqBRKc/0BCCENeLcitgaDKrgCZ5SC9BPAKwUsW8DqIJNMkUfC2AeRPCQA0HSaDoljI6e7H6+7D6ezGGuzHGfvgLQLI1ieo9mepTucprhep7pepy69R1t6hbQ6h73hK3R1J3v1ccddT2a33xVadBw5HgYO3yIbjkruCZfddkjt0XdbvrtTxh9InQ6XOPpW6/Fzq+kvknVjEgwSxx0kgNAU8ZYHnXPAyA8TngJQ8wCkAacUgoxRklYPcCpBfAQoqBL6vhE4KKkBRJSiuACWVoKQKUlkVKBWovBo6llVDV6BjNSir+aYSIR5CZmoFqoEoKqyCfn5uOcguARmFgJ8HQiPBpm0SWLgZQP6sACDQSBxTRnMLVtcLkrAVNvcjWwVRbc9QHM5RnS7QXC5Q3S9TVt2ibnxI3/aE7vWcujuSsCdccXsINBzkFASsDgKXQyKbApF7zskcuCR1+Lqk322ZwIfoU6HI88+QlyMkbkYtux8LHieCsCTwJBlEsMHLNJCQCZJzACcX8ApARhHIKgF5ZSC/HBSUC6xfDgrKQGEZKC4HJQKVVoCyClBeCSoqBKoEFVWg8oeqQZVAFdWgogaU1/wLFaUCWkqqoJ9WWAbySkBOAcjMBZx0cPeRiLUdEoWGR0WRPyUAEkgZoiTDVV5ri6LOTqzuHqz+foLRYZJZAMX6FNU2mOpwju50lupynrL8Gm3dXfrWUPquCPqeKOq+F4RdT2Q33RNZfgHY+wPL/cDZG2wNEt8bjDpwEXn42rJjt8WC7i07/UjsXKjYlXDRO1HgcRx4kgCeJoJnieAFG8SlgeQMwM4CvFyQngeyCiFf5peCwlJQVAKKhMcSUFIKSktBeRmoKIVUWQaqy0BNOaiuADUV0LG6UqAqUCvQtytVoKoSVFaAysrvhFSC8gpQVgb9tJJiUFgAcvJAdjbgpYHTwaJMbRQafqgW8ucDQEICekoKyVJWfaOC9nZFwcoIguEBoskRaFmE3RmoELI/TXE6S/a4TF11i7YxhLEjgr47ir43iuQVrrAtBA0NB50BNj7Aah/w9AHbTyzbd0784EXRo1dBwE2RE3fB6QfgQii4EQ4eRYOncSA8HlJEIohOBYlpgJUBUrMAPwe6H+cWgPwiUPhdxQKVFEF+LS8GlcWgqhhUF4OaUlBbBurKQUM5qC8HdWUCVYC6SlBfAeoFX6orB7XlECc1ZQIkKkBVOQRPVSmoLAXlRaCkEBTkgdxMkJUOXjwHXl6iJDIC7oYRPxsA0Mdoy6AUtKVV12G0tivq7MTp7SEY7IeWx5n6kqyDyDanoK2SDmcorucpy69S1z9kbA9X2h2ltDeaujsSv+uJ/JZ7y1ZfAc5BwNIbWOwByw+DnSfE9p9dduiCiO8VEHgDnLwNgh+Ay6HgTgQIjQbhseBZDHgSC6KSQSIXsNJAajrgZ4CMLJCdA3JzQX4eKMwHhXmgKA8U54GSPFCaD8oKQEU+qCoENcWgtgTUlYKGMtBYBprKoaNQTQL9+aSxDPo2ISG1pRA5NSXQT6guAhUFoCwPFGeD/AzAZ4Gnj4CrsxgGgxSHhoeX+o+C/KvoJwAA+uwwlAxFiuGBYW5V0N4OdQIG+7EG+/BGB4imRyEGbE+S7E6SnM6Q3S9Cz4zY+oyxK0p5TzR99wvirnDFHY9RG/4v9t7Dq80rz/9/g21Qoaj3ghBCIIFEk4TovRcB6nQwHdvY2AbTTDEYML25lyROHMeOK7bBuOBeYjt1JpPJzH6/3z2/9mf8ziMns7O7szuT2dnNTAznfZ7zgJEMl8/rftq9zx1zy+5D0g4YamCsQkEzKtrd67rcmnqxfQC7DqBjFN0TGJjB2BJmjmH2GGaP48gZvHcO5y7gwiVcuoQrl3D1Cq5fJWbl1eu4fR1r1wkDvbOMu8u4fxMPbuLRTTxZxbM1vFjDyzv47C5e3SP0+h5e3/13ukPo1V3i217exfO7eHYHz27/oCcrxLut38Dda1i5iCtn0dcBTciWjWOXPN81AFzPTKeIYn0DzYxgByuknKmtYWpruGE1vMh6XkybMG63MH63wHWekjB3SGyek5Yek1WelFUcFZYfYVcsMR0zpKJhZO1DQit01YitQkETKvegvgstvdi+H+1D6BxBzzgGJzEyh4klzBzGwgkcfw8ffYwLFwldvIBLF3DlU1y/jBuXsXqF0O0ruHMVd6/i/jWsX8f6Mh7ewLObeLmK12t4fdt1XcMblz7/UV+s4cs1fHn7B33u+tdXa/hsFS9WXLqF5zfx9AaeXMeja7h3Cbc/wbkjqLK7MZmeG07A850CwJNEInuR2SpveT49yM5QOZnEAulqtraKE1HLM2wTxe4SxbUL49v5KR2izD6xaUxqX5JVnPQvOyIpXxJUHuZULPhaJzYXDiGzk2DAUIO4KuQ3onwXGjvR0o0dfdgz4GJgDAMTGJ3F5AJmD2PpOE6fwYcf4sOP8NGHuHAOl8/j2idYvoCVT7F6CWuXcOcS7l/G+hU8uEpo/RoeL+PFDbxewRe38cUqoT/Y+pe38dVtfH0bX68S+pVL3/z4lc9v4bMbeHkDL5dduo4X1/DsCp5cxoOLWPkA80OIj97ks7F5kvSOAeBJInnzKOJk30CLKxCqYGsq2aFlbG0lJ6qJT7QFdgli23iJu4WpXaKsAXHRlNR5xN+5IHXO8yuWOJWH2aVzFOu4W8EAMjoQ1wxdFQzlyK5D5U40dqC1C2092N2HzkH0jGDoEMamMTWHuUUsHcWx4zhxEqdP46P38emHuHoO1z/GzY9x6xPcvoC1C7h3EeuX8MClh5fx6AqeXsWrZXy58oOhf+MSYeur+GoFv1rBty795hZ+s/KDvl3FN7fwxXW8uoZXV/Hqyg/67DJeXsLzi3j0Ma4fR2cTAuVbNtbJeb5bAHiSyN5kjsZHUcAIsjJVDpbayVI7iMJoeB1Xv50fs5Mfs4Mbv5Of1CHM6BHnDYtLJqWWabF9Vli6KCg/zKtYojtmPUvGkNePtN0/MlBBMFDRhuZObNuHnV3Y04d9/egbxvA4Dk1hZg4LCzh8GMeOEKWY907gk/dw5QNcO4vlD3HzI9w+h1XX9d55rH+CB5/g4UU8voSnl/D8Ml5fw9c3XIbusvXvbhHXr67ji6v49TK+v4nf/ZG+d33DN8v4/Ao+v4w3l1z6FJ9fwutLeHURLz/Bww9wdhzOPDcu23Njw8C7BIBrXZA3jyJNoiuL2UEWVpCNqbKziJSgkhPZSBylYWjmGrdxEnYJUjpFGb3C3CGRaVRkmRLZ54RlS9zyI6yyRR/79Kbig8jpJYpCMY2IrIa+Apm1qG5D815s70DbPuzuxr796B/CwVFMTGBmGgvzOLKAows4togPjuHSaVw9g+vv4eb7uPU+cXP9DO6cxf2PsP4RHpzH4wt4egHPL+DFRcJ8v7mG39zEb28Q+v4mvr6KF+fx5iK+u47/tUzon5Z/vLmB31zHV5fwxQV8cdGlCz/qPD4/j5cfYfUo5vbBGO5O9fL8+f8oP7feJQBIJJI3iR3qLcuhB1mYQWZGsJXojqlLWWHVrIg6bmQ9x9DMiWvjJ+3hpnXxs/YL8oeFJYdE1mmBc55fvsStWGKWzVNtE+6mA8juQfIulx+ohr4SufWo3I7mdmzbg7YO7OlCdx8G3zJwCDNTWJzFkTkcnsXxeXx8DJdP4OopXD+N5dO4eBwXjmHlDO5+gHtn8fAcnnyMp+fx/Dxh6K8+wZsL+Poyvr2G75fxu2X86jJensPTDwmD/v4y/s91l67hn6/hn5fxu2v45iK+PI+vP/lR5/9Fn3+EB8dxeQJtTgTLN20m0qOf/+/yM+rdAsCDTPLikAXR3oEl9CAzPdjCCLbR1Q6GtoyprWKF17L1DVxjKy9+JzdlLy+jh587yDcdFJRMCG0zwrIFIhmoWGKUzZKtE26mA8jqRuoeggF9LdEfyKpFRSta2rFjD3Z1YO8+9PZhaBCjw5gaw/wkDk9jaQqLkzg1h/NLuHQM147j6nGcW8KHC7h6DGuncfc9rL+Px2cJ+37xETFhv/4Yr8/hzXl8dQG/voxvL+GrT/DqIzz7AM/fw+cf4vuL+L+u4v9+q+v4X1cIK3/9AX79Mb79mLj++pzr6rr55kN8dhJ3F3CmD/Z0dx8fzw0ASO+USBQS3Z8qy/FVmmlKi8sJ2OkhDqamjBVWxYrcytY3cmK28RJ28VM7+Jl9/LwhYdGoyDwhsM8KnAuciiVW+SKjdJZsO+RuGkJOD5EPJG6Dfit0lUithaMZzTvRthu79qBzH/b3YKgfYwcwfRAL41g8hLkxLI7j5BTOLeDiEj5ewHuzOD1D3Nw8hjsncf8UHp7C4zN4+j5efIBXH+L1R3jzEWHWX5zDl+fwxYeE3b85i8/ew2dn8PlZ/PZj/PNF/L+X8P9dxf/+FA+P4dYsXp/Gd+fw3Uf4zVt9iN+cJfT1aTxewo0JjDcjLHDTO94Ue7c8wNueAJlOFhi8AwoYyhJmkJnpYoAZWsrSVrDCa1hRRCDEi9nBTdzNS9vHy9rPyz8gKBoTWacE9jlu6QKnfIlevuDjnPGwjKNwiIiF0vYgvgX6OkRVIaUGtiY0bsfONuzeg65O7O/GUC9G+zF1ALMjmHFpfhQnJnBmGqemcHKS4OH9GVxdwOph3DmG+8fw4ASenMLzM3j5Pl6dJcz9zft48wG+dOkr1/WL9/H5GcLQvziDb8/if3+M/+dT/P48Vmfx/hBuTeOL0/j+rEvv47fv4bv3iOtvzuCzw1ibwMV+VGZCxCG6Au+s3jkA3orKpQr0tIBCFwMWZpCVGWxnhjiZmgpmRC07qp5taGHFtXGS93DTu3jZ+/n5B/jF43zLFM8xyy1fYJUv0soWfBwzHpZDMA275exHWgcSd8DQgIhqIhzK3YqaZrTtwO527NuD3g4M7MPBHoz3Ezo0gMkhzAxj4SCOjOH4OE4ewqkJfDSFqzO4NY+1Rdw7jIfH8fQUXpzGq9M/GPrLk3hzGt+8j2/eI/Qr1/WbU/jiBN4cxxcniU9fn8DKDM4O4b39uHaQsPXvTuN3p/H7My6dxu9O4cvDWD+EtRGcaIMlwc3H+93Nht9RADwoJJqM6pdOCyxmKM1MpZWhsjLVNsIPhFWyI2pZ+gZ2TCs3YRc3dS8vs5uf2883jfDM43z7FL90jlu+yCpfpJfOeztmKJbxzQQDfQQDCW2IbkBEDfSulKC6CW3bsXcnutrRtxeDnRjpwsEujPVgog9TA5gdwuERHB/FqXFCZ8ZxfgLXp7EyhzsLuH8Yj47h+TF8dhyfnyIs+9FhPDmCr07j1+/hV2fw7Vudwq9O4qsTeHMMr47i2RLuzWJ5HOcG8EEvlg/i5QK+PY7vT+L3J/FPLn21iAdjuD2Mm/0YLINctHmL5zu6WPodBYAofvhQ2CpvWSZN+WNCrLIx1Q5maDmRDEQRyQA7djsnsZ2T1sHL7OXnDfJNI3zzOM82xSud45TNM8oWGWXzNOeMr3XCq2jEI7ffPX0fkncitgVRWxFeieQa2OrR3Izd29G5Ez270b8bg7sx3IGD+3CoG9N9WBjE0WGcHCWs//QY3h/FhXFcn8StKazNYn0ejxfwfBGvDuP1UeLT29PEp9+cxHdn8N0pfHcC350k9O0JfHUUXxzBmyU8n8f6FG6O4sIAzvXh2gE8ncLn8/hyHr9awK8X8GoK6yO4M4S7gzi/ByVxbjRf4oiBd1DvLgCeJDKFSeZqvQPyfZUltCAzLdjKCLExQ50MbTkrvJodVceMbmLF7eAktnPTOnlZBAO8whFOyTjPPsVxzrJLF9hli+zyeXbpLMM64Vs0Qsrtd8voJMqjsa2IrENYFYwVKKpBYwN2t6JzB3p2om8XBnZjaA+Bwfg+zPRisR/Hh3HqIE4fxKkRfDCMiyO4PoZbh3BnEuvTeDSD53PERH5/GjfGsTqBFwv4zUliUv/tMXx/nLh+dxS/PopvjuKrI3iziGezuD+BmyO4OIDzvbg5hMejeD5G6NkYHh7EvSHcG8CdfqzuR58NWn93D9K76ATeZQCIqiiVSeFH+QTk/+AH1FZ6qJ2hcTLCKliRNUxdPTO6hRO3g5PUzk3fx8/s5eUOcAtHeCXjPNskr3SWV77Ar1wSVi4KS+e4tklG8UFqXv/mzC4ktxMMRNVDU43ISmRUonIr2prQ2Yp929Hbhv07MdSOkT0Y68BsF4704fgATg7h1BBODuC9fnwyhOsHcesg7ozh/jgeTeLptMumR3F1hLg+m8GvDuO3R/H9EXx/GL9dwndL+M0SfrWIrxfwepaY9dcPYXUYV/twuQ839+PhEB4fwIMh3B8krP/eftzpxVoPPtqGuhQ3hq/HO1gSfacBIKqiZJIXnyow+AQWupyAmaG2MUKJzgAjvJIZRSQDLGMzN24HL3kPP20fL6OXlzfALRzmmcf49klu6ZygcklSeVhasSgpm+PbJ9nFIz55A5szupC0GzHbEFkPbTXCKpBYAUsNtjWgoxndrejZhv4dGNqJg7swsQdzXTjSg+N9ONmPE/043kvU6T8dxPIgVoaJbPX+KB4dwt1x3BjB1SFcHsTyEBHHfzWH75fw+0X8fgHfL+C3C/h2Dr+aw5cz+GwKzybw4CBWD+Daflzuwq0e3O/HwwGs78e9XkJ3u7DWidW9mC6FTu7uRX3n1ke86wC8LYx6cSiCaF9FAS3ITA+y0FU2eoiDrnExoKtl6us5xmZufBsvaTcvtZOX1cPL6+eaDvDMo3z7pLBsXlp52L/qiKLysKxsXmif5JSM+uYNemZ2uyfvdovZhqgGaGsQWoHwMmRXoqYWuxvR3YTeFvS3YnAbRtow2Y65vVjqxNEunOjFsW4c6cJ7PbjUixv9uDmA1UHcHSam8+VhXBvCtQF82odPe7DSjxfj+G4Gv5/FP83hd3PE/bcz+GYKXxzCZ2N4ehDrw1gbwHIXrnTgeifudGO9G+tduL8P9zpwZy/u7MGlVjSnQMDc8q6tlN4AwMUAsUyIKjT4KAppgQQDNJXNV+2kacpp4VX0qFqWoZ4d08yJJ2IhdloHJ7OHk7ufW3iAax7lO6al5Yvy6iOK6iOKiiVZ6RzBQPGob/4gKbN7U1K7i4FGggFVJUJLEVcKZzXa6tDdiN5G9DVhqAWj2zGxE3PtWNiDIx042onDnTjcgfc6cakH13txsw+r/VgewNUDBADXB3B1Pz7txvm9uLQPDwfx5Ri+n8I/TeP30/jtFL49hG/G8PkIXg7j6RAeDBDRzo1OXN2D5d2E0a934EEH7u3G3d1Yayc070S80o38jkVBGwD8UT7AoQiifAPyiCZxkNVXZaeFljI0FfTwqrexEMfYzI7fzkncxUndy83s5hIMDPEtYyLHtF/lkrLqiLLycEDFoqx0TmSf5JeMMfIHqen7PBJdfkDfgPBaqCsQXIqIUmRXoKEWnfXobcD+Rgw04WArpnZgtg2LO3G4HUfasdRO3JzZi086cG0frnXhQjcu9hHWf2MAN/bjeg8udeLCbkLL+/CoD18cwG/G8NtxfD+Ob0fx9QjeDOHlAJ70Yb0Ha/twcy+u7cL1nVjdiXvtuN+Ou+1Ya8OdNlxsQGsyOO9YOWgDgD8aDmKlEIUf9WNdyEpXO+ghpXRtBSOimqnbyjI0sGJauPHbOUlEf4Cb2cXL7eMVHRBaxmWls8rKxeDqw6rqw8rKRXnZnNQ+KSgZZeUO+KZ1kZJcDOgaEF5NMKB0IsSOpDJUVGFPLXrqsL8eQ40Ya8ZkK+a2Y2EHlnYQ1/kdOLwLJ9vxYTvO7cH7e3G2E1d6iIz25n7c6MFyJ67txaV2XNiFT3fiejtud+BJD74+gN8exK9H8OUgXvfjeS8ed+N+J9Y6cHM3ru3Ete24tYOw+zttWNuOtVbcbsGcBbFyd18vz3fnvL0NAP7dk+QYZG6ot3+mb7CFprLS1HZ6iJOuKaeHVzOjaliGepaxmUX4gZ2clN3sjE5ubq+gcFBsGZc7poPK59UVi6rKJWXloqJsTuacEplH2fkDvpndLga2E/lAeA3U5VA44G9DmAMFZWiuwv4aDG7F0FYcrMdkE2abMNeE6UZMNmK2BQutOLwDR3fi+E6c2oVze3GlCys9WOnGyj6s7MXNdsKmL27HRy043YhTdbi0Ha/78NshfNOPN734rAfP9uHRXtzfi9U9uLETV1pxtRnXm3GzGWvNuNOE+824VI3dyRCxtmzyJL8jmcAGAH8qFqKTOWov/3QfZYlPsJWmstNDHXRtOSOMqAsRtdGYJlZ8KyuxjZXSzknv4Gb18AuHJOYxuX0qqGxOVTEfXLEYXLmgKJ/zc0wJzAcJBjL2kZJ2b4ppddPVEXWhPzAQYkW6E/Xl6KzCYBUO1ODgVkzWYboeh7ZipAYTWzHbgPkWLG7Dke041oZTO3FuNzH3r3ZjtQsre7CyEzd3EoHN5R34qBEnanGkhshrP+vCr/bjq1683ocXe/FkDx7swZ12rO7AjRZcb8TVelyrx40GrNbjTj1u1eCkGZlB7j7Ud2VxxAYAf3pcKL5khsLLL9Un2OyrstHUNrrGydSUMcKqmBG1LF0dI7qRGdvCStjBSmlnp+/lZPUI8gelJaMB9kll6YyqfF5dtRhUvRBYMetvnxKbx3j5A4ysbu/k3R4xrZsi69zfMqB0QmaFwgKjDVYHdpWhrxzDlRirxkQNRqsxWIHhKkzWYLYO841YasaRFhxtwcltOL/LxcA+3N6D1TbCpm/txI02XN2GC004XYNjVbjQiGd78KtufNmJV7vxfDce78b9nbjTittNWGnEcj2u1uJyDa7UYrkGKzW4VYmD6QgXuFMo7wQDGwD8h0NDopJoMookwSfQ9AMDoQ56aBldW8mIqGHq6pgGggF2/DZWUhsrbS8nq0uQ1y8pGg6wjCsdU8Hlc0GVC4QfKJv3d85ILeN80wFOVo9P0h5KzHYPXYO7tgYhFQhyQG6FnxnBZqRbUW1HpxNDZRgpx2A59pcSOlCGQ1WYqcH8VszXYakBRxpxqgXnduDmLmJGX2vD7W24vR0rO3BjB6634FIDPqjG8TKcr8WD7fiyndCrXXi+Cw934H4L7jRgtQE3a3G9GpercKmS0JVK3KjARSvaouHP8ngXSqIbAPxno+NB8fTmUfg6b0UeTW1lqO00tYMeWsoMK2dGVjOittL1DQxjEyO2mZG4g5nczk7rFGb1SgqH5ObRQPtkUNlccPl8UOWisnIxoHTOzz4pKhrmZfcxU/Z6x7d5Gpo2hdcS/YHgUshtkFggKYG2BPkWNNnR7UC/E/0O9NnRa8OgE+MVmK7CTBXmarC4FYfrcKyOCHhubMe9HbjbgjstRC672opbLbjVjCt1+LAMJ2x434k7dfh8B77YgVc78LQVD5twvw53t2K1Bjcrcb0SV8txuRyXSgldsePDIjhC3GjvQF9sA4A/N0ZkkhebzAnxkmfQgkp8VDbfUAdNU8oIq2BGVDEia+j6OkZ0PSumiRG3jZG0k526l5fVJc7v9y8eVtoOBZXOEn6gaklZtRhQMedvmxAXjfBy9jPTOr0TdpKimz0itrppqtxUpVDa4WeF1ILAEsSbYTNjpxX7zdhvQa8ZPSUYsGHMiakyzFRgrgILVYSO1OBsPW62EADca8LdZtxx6XYDbtTicgU+tuOMBR85CFt/2Yw3LcT1aQMe1WG9FneqsFKBm2VYLsU1B2H6l2z41IpPLTiUCoN4k+8vPRnYAODPj5GHazMxK5AiTfZRFvu6YiGmxskMK2dEVDIiq+m6WoahnhnTyIxrYRCZ8W5u5j5x7v6A4uFA+4SyYjaoeiGoZklRsxRYNkswUDzCz+1npu3zTdzlFd3iEVW3WVPppi5DkBMKO8GApBjBRcgpQksRukrQX4KeYnQXY8CKUQcmS4mVCzPlmK3AfAWWqvDRVtyqx4N6rDfgfhPuNxJT/ko1litw1YmLNpy14KyViO9f1ONNA17W4elWPKrGvQqslWLViZt2LFtxzYKrZly24LIZ5wqwLQpB7M3Er/9zm+kGAD//SJG9Sb5iqiSJHljMVNsYGjtDSzDADK9kRFbRdbVs/VZWdD09tomZsI2dvIuf0SHO7fMvHg6wHyIYqFkKqjkS9LY8apuUFB8U5PWzM7roSe3eMa2kqPrNYTVuIZUILkOgncgKpGbIi2AwwVqEHSZ0m9BTRFz7inHQikM2TDkw7cRcKebLsFSBsxW4VY31Ojysx3o9EeHcqcJqOW6WYtmJS3Z8bCZ0w4nn1XhdgxdVeFqBh6VYd+CODbetuGXGjWIsF+FaEa4U4VIhTmXCEeTG8/H4BQdCGx7gLx4sT6I0xA2ny/O4QWaWykIPsTM0pSxtGUNbTg+vYkTV0HS1NH2dr7GBEd/MSdrBS+0Q5fTJiocVtonA8rnA6sNKok22EFA6LbOOS4sOCHL7OBmdrKR2WkwrSd/orq1FqIsB5Y8MiIugKkRyAarzsbcAPfnoysP+QgyXYNyCSQumrZi2YcaGBRvOOLFchUe1eFiLB7W4V467pVhzYsWBGzZcMeO8CZ+YCEN/5sRn5XhRhidOPLJpfIJTAAAgAElEQVTivhl3S7BahFuFuFmI5UJcK8C1fFzJw2gsogXuGwD8/KT+PYh4tFYoXZ4nDCgUKArZSjNDRSwdpWuILQS0iApaJLFwiGaoo8c0MuJaWIlt3LS94pw+/5JhhWNCUT4XSCQDC8qy2QD7pJ95VGwaFOT0cNM72Um7fGK3k6Iat4TXuodWQlWOYCcUNvibIS2GtBBhecjNRUMe9uQSDPQWYLgI40WYKMFkCaZKMF2COStOOrBcjodVeFqFh2VYt+OeDWs2rLhm92tFuFSAi3mElT+x4JUdL614UoJHRVg34U4BbudjJQ+3snEjC8vZWM7Bx2loVEHo+4vdN7zhAX7KeHmRWME0eb4goFgsyxfK8jmKIlawlR7ytlNWyogoZ0RVMw1bGcZ6RmwjM76Vk9TGz+iQ5u8PKDkY4JhSVMwHVs0Hls8pHFN+1nFJ8bA4v1+Q3cNN28tIavc2biPrXAwQKUE5VE4obQiwQFriLi5wC8hFdA5MOWjIwa5s9OViOB/jhThUiAkTJk2YKsaMmehkXXXiURmeumb3B2bcK8GdYqyaiAl+uQCX83ApB7fy8NiEz4rx0oSnhXiUj/t5uJuLtRzczsRKGm6l4WYarqVi3oAkgfsvdZHcBgA/ZbyoJFYgLbBQoLSKAopEfrl8SQ5PlssOKGSrrMQugrAyRmQVS1/Diq5jxBAMsIlYqI2f0SnNH5CbRxXOSUX5bEDZbIBz2t867lc8IikcEuf1C7K6OekdzMRd3rHbSYYGj4itm7U1bqFVbqoyN6WDcAXyEjdpASR5kOfB4PIGNdloz8ZgLkZzMZaH8XwcysdUAaYLcNSET81Yt+KpGY+LXBN8Ie7lYy0fK/m4kYfrubiWSUzz69l4losXeXiWg0dZeJCJ9XTcTcPtZKwm4VYCbiTgajzalFDQNv8it8tsAPBTxotCYgX4BhUJQpyiYIswwCSQ5fIlmTxRBleWx1KWMEMddGIbTTXLUMuKrmUS5dFGZnwLO6VdmN3jZxoKsI8rnFOK0hmFY0puPSQzj0qLhqWFg6LcXl5WFyd1LzOJYICib/SM3Lo5rHZTaJWbutxd6YDS4hZQ5OZXCGEhJIUINCG6AHn5qMtFVw5Gs3EoBxM5mMzBVA6mcrGYhwsmPDTh+dsJPo+w9fs5uJuD1RysZGM5g5jdl5OwloynGXiZgefpeJKKhym4n4w7CViLx2ocVmKxGotFLXIFbhTyL7AtsAHATxkvMoku8w428bVlohCHMNgiCCwiGBBn8vjpbFEmS57PUFnp4RUMXQ1LV8PU1bD0Wxkx9cyEFk56hyh3v6xkRO5iINAxJbcd8reMyYpH/EwHJPn94rw+QeY+dupeRsIu39jtXoZmUlT9lvCtmzRVW9Rlm5U294ASBBQjoATyEsjMCLC4BVnc9cXILURTLvqycCgDkxmYysBkJiaysJCLj3MJo3+Zg+dZeJyOR+l4kI676bibitupuJmM6zG4ZsTtODxMwIskvEjE0zg8isW6EXeNuGvAWhRWo3AlAvsCIPL+BZaDNgD4CYPlQfakib2D8vjh1RJtpZjwAzZhYDHfP58vyeLx07iCNI5fDktZzNKUsojaaA1TX8M01DKNDazknfysbmnhoNwyqrBPBjqmAuwTcuu4zDzqVzwiNQ2KC/rFOb38DIIBZkK7b1wb1dhK1jV6RtRu0VR4Btu3BJrdFWa3QLOb0opgG4Id7krH5kD7plCbe4IZtkJsz0V/Jg6lYTod0y4Y5jNxPhPrmXiZjuepeJaCxynEHL+ejHuJrjk+BjcNWNZhRY/1GDyNxfNoPDPgsR4PdLgfibvhWHPpaDDi2e6/vChoA4CfAoAnyZvrrczm62olUbVSbaWIcAU2gdLMlxfw/HK4wgyuMJ0rTuf65XICS1gaJzuyknAF+lpmXDMvbY8of7+s+IDcPqH4EQB/y7if+aBf0QFJ4ZCkcNDlB7rYqR3M5D30hJ3eMduIcCi8xiPESQq0eCrM7oFWBNmhciCkzC2kzD20fJOqbHNw6RaNY1Osxc1UjKY89GRiPBUzyZhOwXwqPkjFWgpeJuFVAp4n4mkinsTjkREPDLgbjTU9ViJwIwy3IrAWifUoPI7A0zA81uKhBuuhuO/S1WBU8928yb+0xvAGAD8NAC8mVZnB1ddJDPXiyBphRJUwrFSotgkDS3gBJq5fHleSzRWlcfmpHEE6xz+PE2Rmap3MqAqWsZ6TvJOX2ys1Dcqsh+SOKTkBwITcNuFvGfMvGfErGpYWDUsKBoQ5fdzMLnZaJyt5Nz2uzTu6hRq5laQpJwdZCQCUFqjsUJcipJxYR6SphKbSTVO5ObjSM7DMQ+0kMCguREsWBlIxlYTZRCwk4cMkIs55GYvX0XhhxLMYPDXgsQ4PInEvHHe0uK3Figa3QnFLgzuhWA/BIxWhh8F4qMR6IG4r0MmHiPJLq4duAPDTAKAyKPIkdnS92NgkNtSL9LXiiCqhtlwQ4hCorHxlMV9eyJXlcaU5XFEGV5jGEaazpZmcgHyO2sqOruNmdEry+/3MY3LbJOEB7JP+BAmTAZYxf/OorOSgX9GwuHBQmNvLJxjoYCe1M+K2++oaKWFVXiEOqtKyJdDiFuwC4Afrr0JYDcJq3LQ1bpoq99DKLcHlW9Slm6LsblnFqM5FRwZGkjEXj1NxRLj/WIfXUXilw4soPI/Ak1DCyh+ocT8E99S4E4QVJVaCsKLAmj/uyHBHjjU5ViS4IcQRLkpobj6/rMOGNwD4KePlSaLSKP5xTGOdKKZFEt0oNtSLdbWiyGqBtkKgcfLVVl6Qma8s5ilMXHkeV5bDFWcQiYEglSNO56jMvOQ2cd5+aclBf+uE3HpIbp8IcE7LnTOEH7AdklnGZCWjUtOwJK9fkN3Nzehkp+xmxu+gG5q8Imp8Qkp9lBZSoHlTkNUVApUTbeMfAKj9UTWbtFWbNZWbVOWbgkvdI23umcWozEVnGkaTcCQWV3R4Fo43YXitxUstnqvxNBCPA/EwCA8UuK/AXRlh+qv+WJHilhA3hbghwXU+rjJw0QfDLITwPH5JPYENAH4aABQaRRbLMtaL41olMc2St37AUCeMrBGEVwo0ZfxQJy/ETpCgLOEqTDx5PkeWy5FmcwUpHHESR1/Fz+mRFI/4WcZllnG5bSKgdCawbFbhnA4g6kITMvO4rGhUmj8oyukRZHbyUvewE9pYxmbfqK2+mjLfIDNVWbIl0Ew0yFTOHxjQuhgIdwEQXusWVuMWVu0WVukeWrEpuNxDWeoRat+UXOJuK8COdIwm4JweD7T4QoUvg/FKiRcBeOaPp/544odHEjwQYF2Au0LcEeE2B6s03GLgBhM3fLAMnKeiUe0mEVNIJCIb+NnNdwOA/3kAyH5GhrFOHLdNGtcijWsWxzSKjY2i6DqBrpYfWS2IqBKEVQg1RGLAU5l5ymJuYBFPXsgTp3G44XR1LjujU1x4QFp80I/wA+MBzhll6Wygc1bhnJHbp/ytBAN+BQfEOX3CrH2C1D28hDa2sYlYdB1WSQuyUhVFWxQlboEWtyA7sVxCVUbssg+tJqSpdnmDamLLpaYamiq30MpNqgqPoAqPoDJPtcMjxuxuKsCODEzHYzkMnynxlQxvJPhMghd+eC7BUz4esQmtc3CPhbs+WKPiNgkrW3BrC2664xZwVAlzCoXFo/4ySqIbHuCnjRfZmywKp+trXQBsk8RtF8e2iGIIDETR9QJDndBQJ9TVCiNrhNpyIZEY2LjBFo6yhCtJY9MDfPz09MRt4vxBP9MBP9OQn3nU3zGjcBIAEAw4CAZk1gmZaUSau1+c1SVM7+Am7WLHNDMMdayIaobaRpWbPPxNmxQl7oFW90AbsaEsuAzBFVBVIKQSoVVEUPQDD1XQVGwOqfBQV3ioCFdACnSQlPYtEZZN6SY0ZWIuFvdV+EKALxl4zcZnXLxg4pkvnnrhsQ8eUrDujvvuuOeOu8CaO1bdsQrcoGMh2S0pjUHjEU+P+NkteAOA/9HxIlFI7EDfyAphbKv0LQPxrdKYH8IhibFRYmwQRzeIjPVifY04okKkLRMQQZGN75fM9hV5cRQ++nJ+Xr8sf0BW0C8tPihzTCuI6d/FgGNG4ZgJsEz5F41K8wbEWd3CjE5Bym5ufCs7uoEVVcNU27zlpi2yQnf/4k0Ky2aFZXOgbZPSQWwkUJYhuJxYRRdSQSj07bV8S2i5Z0i5R0iZp9pJVjkpwQ5yoJ2ksHuoLJvjTe7bMnBCj2c8fOWJL8h4RcZLL7wg4/lmPAEeb8IjNzwE1oF7cGHghtvANTEGKn1iMji+XOrPbsEbAPxPDxlN7KW18aKbxcZWcWyrOK5VHNcijm0mGPhR4phGSXS9WL9VFFktiqgUassE0jimF4vqzaGqMtmZXX7ZvZLsHnHhkJ9tUuFyAgrnXKBzRmGfCrBO+heNSVxpgCijk5+6R5CwnR/dyNHVsELtNHmhpyTf3a/Q3a/IXVa8OcC8KcDiFmiBwkosGQp6C4OTiI5ccg92bAl2blY7PdUOT5XDQ+XYQvTU7O5+NjeRDXIzkoswlIprKnxOxtfAF8BrN7wAngPPgKcgSHgEPPgRg7ckXEpBZx8/LJvvw6Z6bCF65D+7Kf912giBfvKQ+fC81CaeoV4U3SyKbRHHt4riW4SxLRIXDIRDiHWJ8AmNEn29SFcrDisVCMJpJG8y2YssDGPENQrTOkQZXaK8/VLzQaIkaptR2mcC7dMB1skA66S8hMiDxTl9oswuYdpeYUKbyNjE09Vy1cVMWaqPJJkqSSdLsj2luVv8CjbLTG6yIsiKIC+Gwkw8Y0JhRaAVgTYE2tyUVnelzT3ItjnItllJXDcFWYlestL1NAo/M7Gqwmh3qzK7zSXilh9eeRIMvAFeAS9BkPDMxcC/YOCG+8AaHe9t82oZD4gq4lNplA0A3hV5uApB/imsiCqeoVFkbBTHNItiCRKEsS0igoHtkrjtkvjt0tjtkthtUmOzRN8gUhfzmf7ExipPEsmXR1XnsZPaBOkdoqxucf6gf8lYgGUy0DoRaB4lOmLFI7LCA9L8QUnOfklmtzi9U5S0UxjTTACgzGRxFD6+AirD34sd5M0N9eJHUkVGqiieLErylKZtkmS5SfMgLYCfiUDC37V8KLDELbBkc4B5i8L8dj2FixMzsflYUQxZMcQ2t8DqzalNns2Vm+dTcZNHAPA18DnwmRuBwVtvQARFbzFwI0hYVbsdOy7bfiokJJ3jw6J6/GPmAxse4K85cV6ko2ucHN1Wvq5OaGgUGhuFMU3CmGZhzA8MiON2SOJ2SGN3SI2tEkODKCCV48P1Ih66STxthSyOoBtr+CntoowuSU6vX8EB/5LxgJKxgKID/oUD0vz9krx+Sd6AX26fLKtbmrFPlLJLGNfM1deyFWksutibRCXaEYToFG82xYdH9RVSfcUkmsyTofRka7ZwI7fwDZsF8ZuEKZvEae6STPjluEvz3GX5brJCN5kJ/ibIXfI3QVYIeSECrNA2kNP3MCr30rrKPI9FYZVJOIG33uAzN7xw+yMG3AgM7pNxsc1n+oqmeiZYl8f3Zf1D5gMbAPz0UaOQ2ApvVTE7ooobUc2L2irQ1fMNDfzoRr6RwEAU2ypyMSAmGGiVRJQLBRo6yYt4LYlM2uJBoou81NmcxO2SjE5Z5j6/nD6/gmF5IWH9/vn7/XJ7JDndkpw+ac4PAIiTCQA4ulp2QBKTLvIm+ZDJNDLxhmRCW8ikLZ4kwr14kshUAgwvFsWbS/YRkn2lJJq/J0PpwdJ4ciI8ePotgjgPUfIWcbqbJIvYXSDNh59LsnwE29zidvgUjkrKJkUNvfQe5+aTOtzg4JkbwcDnwCs3PHcjsoLHP2KwFocP3pMffKRvPaI2mARMYr3oP9jBwxsA/HVL4iiyFFoocbQwJ6KaG1HLjazj6up5+ga+oZFwBS4GRLGtEmODSJHK8uH9q9mR4ksWamjRtcKUPdL0TmlmlzS71y93P6H8/X45rlk/Y584q9svq1ua3ilKaOPHEiEQx89I92ZTyd4EAGQfMtmbTKJSSFSKJ/nH043+pPFRifaFF5PkzSH7CEm+fiS6wpMZupmj28SPdxckQ5gBURaBgaZ8c+ZeZsW0pPFkYN2CrKGX2VXruZDm9mkA7lKIQOj129zADc/c8QRuD31xuZ85/5nx0HrUjhPqtGoJx8/7Hysf2ADgp48akQiTOaHeyiJGqJMdVs7VVnHCa9gRtZzIOm5UvSC6UWgkwiGBsUkYbhdwlTQS9V8dv+VBIpyA1sxNbBOndUjSOyUZXeKsbkk2MetLs7ul6XtFqbtFaXslGZ3StD3ixB2C2BaefitPrKNRGRQCAJ9/DQCFTCIT7oVE+dM/8B9uPFzyJJPINLIPl0zzI9GDtjAj3XnxbsI0+BcismZzfi+r6UjA7vOqpnPBVYdltSPsPS2eh/LdzyqwQiaioJcuDD5zI5BYcVCOP9fNvzJOPojcfTY0uVzElHhv/sfJBzYA+KsGjkyisigcjbfcyA/JloTa2ZpKmraKGV7DiajlRdXx9A08fRMvqpovi2F6sSj/9mnjRCZN9YtlGhsEyXtEKXuF6Z2izH3ijG5xZg+R+KbtESXtJJS8S5zUJkncJoxrFugq+AINjez7FgDiSvIirJ9EIbtEWD8BwJ+agH/A44//ifyjvIjfhe5PYuvdecnwy0NUDSm3i92wKOv7VN17Sb3rXHDjyYCts5KmHkZHLWkqw/09Da5JcY+OR2TcKPY4vh5+5E3M4hPd1IOofee1edtkfho61fcf48i9DQD+yoHzIBMPD+UJeMpIf1UOT1XmHVrhq6lgaStZ4dWsSMIb8ELMHJbsT4cEHmQyS+GjtXLidvASdwmSd4tS94pTO8RpnaK0TnFKuyipTZSwXRS/TRjfKkxo5cc1CcIsXJa/NzHZe5P/xfp/AOAH6//THsAFwH/2u5BIZB8yLcCToXdjx8M/f5O+lpLXxW48TDAwfCu070rw3vNBLe8Fbj0ia5gR7zrIG+rwXagjvVfuceoA6/CDqOOvjSdeGZae6abXo7ovhtn7FAFRTLLPz2/fGwD89w4fny/QhIZoYpXBhZxgh4+63FddQQ+tZGirWJoylthIp9CIhyz/ide6VlZLYuj6rey47dz4nQQGie3CxN3CpHZxQpsgfpsgoVUY2yKMayamf2M9X5nO8eF4eVJ+DH5+mP7/IgD+PAyexMEIdPUWRgw4iVAUbIqu987qYFVNSbo/UR28FTpyK6T/qrrromrPedXei+ru65rBm5qxFe3Mvchjzw2nXhvPvDGeeBV9+Jlh5pF+ZDWycjgwNJnjyyZqXz+7lf8n2vAA/6XhE0nERp0hJjpaG68IzuEqLT5Ku3ewwyfYSvdLpfmK/7PKoAeVRJNQVEV04uCZbZzYHfy4Nn7cDn7sdn5MCy+mkRvXzItt4sc2CY2N/IhSrlBLI3uTPShEHfY/AuC/lIBSSF5CT1bUZna8GzcJaqtn/DZa+m6m/aCw81zQwRXt6IrmwHLo/svqnk9Vg8vaifsRSy8NJz+POfMm5vSbmDNvjKffRB//zLD0TD//xHDgZmT9bHBEJteb+XfdJtsA4L8yfOQAuTw1JTkzLT0uNiYsOiQgWigy+opivfhh3j5CCtnrz8TBJB8SV+OtMtN1jSxDK8u4jR3TyjY2c6IbuIZ6bnQDN6aRZ2wU6Ov4AUksX56XJ4VE8iLayWSvPwHAf93OKL4kuj+Zqd/EToA4wz2sjJS43Te9nVE8wGs5FjB4NeTgimb4hmboWuj+S6ruT4IHL4fMrUedfmN873PjGULRJ98Yjr7UH36mn30UNbIS2bQQHGMWcP18/m4Z2ADgrx87MtUrVBNamJ9XVFCYmZZh1BukfhJvpheVSaHSyH/Jn9yDRPSV+eHewRZaeC1d18DUNTJ0DfSoWtexfHUEBvo6fngplxfsS/Iie1JJZCr5rf5NAvC3MQgyUTBlqD1Z8eAkQ5LlFl5JStlJT91Fz9zLqp3167moGrutHb8dNnwjZN/HQc2HZbtOKw6thB1+pjv1efSZL4ynXkcffakn9EK/8FQ3diei7aQ63iFiCLy2uKpPP7vFbwDgsjxP4hE3Hp5Ete7tzdv7nyQunx8fF2ezlFhKivJzsmOijQKukORJ8fBwlRr/sjchGke+ZKacIo5gaDNleocsspqjrfLVVvmE19Aja+kaG1MaS/diuQ5soZD/FQDE9P+Xhv5/+c9DZVPYkZs5SWAnQ5LjpqslZ3Yw0vcyUnbSTf2cbScC9l9Wj65qh2+Etr+vaFqSbT8u7z4fPLainb4Xfmgl7OBNzdS98KPP9SdeRR95YZh5pNt7NjSmWOBF/3usC72jHoBEJvvS6QKhUCKVCoRCBpNJplB+0stpdHq4VpuXk223WmwWc2FebrTewOXyyH/oSf3FIp4/TiUx2PRIXXhaQVySNTzK7K8tFqgLuAHJTIHGx4dPIYIfEpmw+LcTP/XfJQB/q8mVTPKkkmkSEid6EzcV/DTIC93jmr1zetmZHazkNkbuPo5zVNS45L/ztGLvh8qOj4L2nA3c93HQ/kshg1dCBz5V914MHryqnroTvvhEt/REP7euG7oaltcsZQi9/w730LxjAJDJRNRBpfrJZEaDITsrMy83NyszMyE+PkyrVQYF+QcEiCUSNofjS6dTvb3fUuHxRyKOCvD2FovFOp2uMD/PbrWUOeyldltRYX5iQpzMz4/q5fWH/45Gp4vFYolEQqPT/+wPxuPxUhISzSZTYUFeUkpsZHSoUi3n8Dhk6o91pB8m+3/DwN8YAJLrfUhUMl1O4SS4c9PASYOswD26jmrazy8a4GXsZSTvoifvoKXtotmG+TtPK4aWQ4ZvakZuacdXtZO3tROr2kMrmrGbmkO3tGM3w/o+DnV2+gdHMyk+Gx7gZ7V+OoMh8fNTKJXqkJCE+Pii/HyH3Wa32UqKinJzctJSUlJTUtJSU5KTEmNjYsIjIoKDg2QymUgkFgqFfIGALxAIRCKp1C9ErU5KTDAVFjjttjKno7KstLLMabdZCgvy4mJj5HI5k8VislkikVAbqomLiYmNMQYoFF4+Pv+x9RMuRaFQ5OVm2y3mEpMpPSnFEB6lDlRJBGIfX5+3E+fbRu8P+lMF0L9hIORJIlEYFGYIiZvkzssAPx3+Be4Jrb7mYYFtVFiwn5PZwUjdRc/Yw7CNCHafVQ5dDx1fC5u6F77wMGrpkW7pceTCg4jZu+GTq2GDn2oq+gNCkjhUHwoxg/ydpQG/fA/gQSIxWKyw8HCrzdbS0rJ161anw2EqLCwqKLCWlBSbTBlp6fGxcakpKcWmQrvV7LBa7FaLubiosCA/NzszKyM9MyPDdU3PzsrIy80xmQqtFrPdZnXarU67zUFcrWVOe3mp02m3FeTlJicmJickZGdmFBUWFBFvkp0QFy/1k1Ko1H9ZtPNHeYgHicxis6P1uhKTyW6zlBSZ0lKSYwyGCK0mVKWWSiTevv8qeCAM/Udbd339v2fdAZk4LpYZTOInbRJkgJ8BedGWuBaaY1xcNetXNimxHRSa+nl5vWzriLD5mHzgimp8VTt9P2L+YdThJ/rjzw3HnhuOPjMsPYocuxW27YjKWCKg87z+ilzrv1W/fAB8aDS9Xl9VWdnT3T3Q37+ttaWs1Jmbm5OTnVVUWJCXmxMfG2vQGzLS06zm4rcBvc1itlstDpul1G4tddjKHPYyh91pt9mtFktJUbEp31SQbyrIMxXkF+Tn5WZnZWdlmvLzLMVFdqvZZjZbioqtJcVvQSo2FeRkZ2ekpYeHh7PY7LfZ9hYPwvTJFIq3jw+TxRSLhFqtJiUpsbgw32GzlpgKU5KSYqOj9VFRuohIrTpEIhH50H08KeS3K3lc8iRRyV6+Xt50Hy8fqgfpr0niPf+cPEgkKpPMVHnykzYLMyHIgrx4c+ouZtkhcc2irGpWQmAwKi7o55mHBU1HZT2fBI2taKbvRsw90B15EnXshf7ES+Px54bFx7qJ+1Eth1XRRTwa32vLfxOxf5V+4QBQvKiBSmVlRUVTY0NZWanZbM7Py8lIT09OTs7MzMzPyc5MT8tITS0sICzPYbNaS4ptVsL6XQBYnTarw2qxmouJadnlENJTU1OSEpPi45Pi4xLj4xLi4uJijEaDIdpgiI+NSUlKSk9Nzc3KNBeZiJfbbTZzCRHU5+YkJycHBwczGEwWi8UXCKRSqTJIqdGERht0SYnxaSnJyYkJpvzcUoedACAhId5ojDNGxxqjY6MNkeFhikA5l8f1pft6+3p70bxobLrUT6JSKUM16iCVgsvneNN8PL1IW1xo/G3HkEqj0OVkjsGDn+7Oz0KAeVN8q7dtTLR1yX/rorxq1t9+SFR0QFA0yK+Yku75UDmyrJm+F7HwMPLwU92xF/rjL6OPPjcsPNaP3YnadkIdXyrkKXwJD/b30SH+JQOwxcODxWYnJCaWl5dnZKSFR4RrtNqoqMjo6OjExMTMjIzsrMzCgryGurqdbW11tbWWkuKC3FxzscnmMvqSoiJXGJSTlZGelpqSlJAQFxNj1OsNOr0+MkoXFamLitJHRkZFRISHhemidAnxcZnp6TlZWYV5uXarucxhL3c6yp2OUofNaikpLMhPTU7WRUVF63WJcbGpSYkZ6alZGenZGWlpqclxsTHxsTElpsJyp6MoPz8lMSEhNuatCMD0OkOkLjxUGxQU6B/gFxAk04SpE2PjM1PScjIys9LTY2OM2rBQuULG4XGo3l5/23K7h6tI5cWjsLVkbuwWfpq7X757dCOl5AC/Zl5Wu+BfOStzTkhKDggKB/jOcdH2kwEDV9RTd8LmH0YsPo468kx/5Lnh8FP91P2owZsRLSdUmS1+QhWN8na13M+dEvxiASC5ABBLJBkZGQmJiX5+fv6SLNQAAAlFSURBVAwWi8FiSaXS8LCwlOTk1JSU3Jyc2prqjo69DfUNJlNhenpqSnJyfh7BgKkgLy87KzM9PSU5OSE+Pi4mJlqvi3TZulajUatUQUHBSqUyUKEICAiIiIiwWCxbt25tamis37rVaScs/q0DcdqsZXabw2Y1FxcVFxQU5uXm5WRlZaQR75sUnxAfGx9jjInW66MiUxITSu22MoctPycrJTE+Ic5l/Uaj0aA36KOMBoNRb4iO1Bkj9fHRsalJydmZGfm5OUX5eYV5uSWmIpvZWmwqTkpJCgiS+zB8txA7U/7GQ0rxIfsKqWwNhW3wFKZuCiujFvRyq2b9th72r1mQlU9LrUR+zC0a5NfOyfo+VU3d084/jFx6EnX4mf7IM/38Y/2he1EDN8J3faTJ2Snzi6JTfEhbfm47+cUC8FYcDicwMJAnEFC8vEhkMolMpnp7iyUSXVRUclKSxWKpKC8vKChISEyMIT6M8fFx6WmpWenpaSkpyYkJ8TEx0TrC7rUaTZAy0F8mEwmFPB6PyWT60mg+vr4sDickNKS4uLizs7N9166ammqHzZ6bm1OQl+fKB0qKC/ILcrOzMtLSUpJTkpISE+LiYo16nS4iPEwTGhKiVoWqVGEaTawxurggv7q8zGYpzkxPTYqPjzNGGw06wsOEhYdrteFhYeFabYQmNEKr1UVExkQbkhMTMtNTc1xpek52VmFBQXFRsaXYUpBbEKYN+/OF179KJAqZ5EMiM0jeAgoriOKf5B1bw7EOiSsnpNVzfpVzUseEuGhIUNDHK58U7fpAMXIjdOZ++PyjyMWnusUnUTMPIsfWwvqXtW1nQ6wH5JpMNk34L1Xjn0W/aADIROeIQiE2TP2hivK2DyAUChITExwOe3ZOTnhERGRkZIzRGEOULGMS4mLjYmNjog36qChNaKhCoRCJRCwWy8vbm/RjDedt9Ybq7R0UHGyz2Rrq650OR15ubmpyakJCYlx8fFZGhtlUWJibm56SHB8XG23Q6aIiI11Wr1IFBcjlUolELBKJRSI/qTQ0JCQvO6umoryi1GEqyE1NSiReQGCnDQsN0YQQkKhVKnVwsDpYqQoOUqtUmlB1ZEQ4kXjEGGNdP7kxOkYfaYiJjs3KyMpIzghSKCle/w2bdMmEayWycNeKbpIXiS72DkpkxpdzTV1ix6i0bFJqHxMW9fNyOjn5PdzKCb/tRwJ7zqnHb2mm74XNPIiYuh8+vqYduBHWdU1TM69UpbBJlJ+zP/CLBuA/Fp3JjIuLKy4uNhqNUj8/P5ksPDzcQMT3Or3LVrUaTaBCwePxfGg0qpcXmUJ0Yv/4HUhkskAoTEtNrayoMBUWxhImaIyJjol2fSTGx6clJSXFxxujDVERhCmHhKgDAxUSqZTH5/P4PCIJVgZqtZpovT4jLa3MYasqc5aYCtNTU4wGfWSYVhOiClEFq4ODgpWBgQEBcplMKpFIRCKJRBIglwcFBqmDVVq1mnAL2rAwjVYRqOCL+Hwx31/hH6oKlcvl3jTvv+1SZNIfNyJ+XHtHopK9mRSmxEus9Q1KYkaaOLGlnIRKTnQZJ9LMCs1iquIYuhxuTp24djhg7ylV78chfZ+E7PsotO1MiKUvQK5j/qGk+7PoXQTAg0RisdmxcXEZ6elyuZxMoVC8vDhcrkKhUKvVKrU6IDBQKBT6+viQyOT/aJkQxcsrJDS0pKQkv6AgTKv1l8v95fLAIKVKpQoJUYeHaSPCwiLCtWEaTYharVAoeHy+L41GplJ9aLSQkJD0jPT8vLyiwsLyUkd1JTH3lxQVpCQm6HSRoaEhquAgRYDcTyoRCAQcDodGp3l7e1O9vChUKoVKpdFoAoHAXy5TKhTBAcogeaBYJPZl+L61SzKV7O3r40P3pXj9hMUdnj8dgB9aWhSyB4m82dXTIHmRvegUXzaVIfCiC7182FSKL9mD7EnyIvkyKQJ/nyAdIzyFo///2zuXniaiKABv6Jw771eftEVai7SAkSKElkQsBSQaIRWEEh/RFZuy4P+vzHR4VIUFiozQLzkhrMrkm+/03jvnnOFdrrWbX9zMluY9K7jji7xtjGMCRC/n8f3Zen22Xnd9P/Zb6brjulERN512PS8qWp2Xma4P07abzWan06k3GkEY2o5jOY7reX4QZLKZJ1NTM7Xa7Eyt9rRaKpX8IIg/UBl6pVrp949OB4N+/2hvb/fbl0/fv34+6O11O+svm4vzc/WZWrU4ORmGoeM4hmVFrRD6VcdefLWmbfqhn8lm8/l8JpMxbfuqNBbtT/7Vf7NTv+TAeVk6KsxpehQppVIplUoNax2XTYGiUppMTERXrtu65RlOaJiOPixfJGzCGDfDeZ7tur+XZkd/uTGGh+lqrTZdqdiue6nmuaC6bjtOEATpdOj50Q4q/iuaiOO67Vb77OzsdDDY2dnZ3t46Pvp4fHiw82ZzZXnpWXTeKAZBaNqWNlx8brqAeLA9OuFYZjQUf5/ojGEdOt4CxWP4Fz+jMEbmj+O4bij5srkjcRPGNAH+PnTDcH3fGGl9uyZGDt9xAgRh2O12T05Oer3e62G7xOH+h733b9farbl6PZfLWY49mpP/aehKS3TjfodBAvw5u1t1HyhdT2lavlDY2to82N/f6KxvDMvGW92NV2vtFwsLpWLRMB/JS/fl4QQJcH+sU5pWmJxstVqrq6vPF+ZXlpaWl5pRWa3RmCqXXc97AN/96rEFCXB/rDWRMJ2uVKuFQnTGLZeL09PRM9hSsej8fBohhAR4lBIYpmldzNnE3aCO646W2Ai5XwisAAk7x6ZfEuVPAvClq8Z52SEBkr8HhJAASAABVgAkgIBiC4QEEFCcAZAAAopDMBJAQPEUCAkgoHgMigQQUNQBkAACikIYEkBAUQlGAggoWiGQAAKKXiAkgICiGQ4JIKDoBkUCCCjaoZEAAop5ACSAgGIgBgkgoJgIQwIIKEYikQACiplgJIAAQ/FIoMY9DXgrRPL3gBASAAkgIKwASAABYQuEBBAQzgBIAAHhEIwEEBCeAiEBBITHoEgAAaEOgAQQEAphSAABoRKMBBAQWiGQAAJCLxASQEBohkMCCAjdoEgAAaEdGgkgIMwDIAEEhIEYJICAMBGGBBAQRiKRAALCTDASCOPIDMUjgYx3GvBWiOTvASHJQfgBd3SmfOFyFx0AAAAASUVORK5CYII=","mimeType":"image/png"}},{"text":"describe this image in detail"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 7061 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Type: application/json; charset=UTF-8 +Date: Wed, 23 Sep 2026 11:12:00 GMT +Server: scaffolding on HTTPServer2 +Server-Timing: gfet4t7; dur=10131 +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Gemini-Service-Tier: standard +X-Xss-Protection: 0 + +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "This image features a detailed digital illustration of a colorful parrot, depicted in the distinct 3D rendered style of the standard Apple parrot emoji (🦜), set against a solid black background.\n\nHere are the specific details of the image:\n\n* **Pose & Orientation:** The parrot is shown in full body, standing in profile and facing toward the left.\n* **Head and Face:**\n * It has a curved, hook-shaped beak rendered in dark charcoal gray.\n * Directly above the base of the beak is a small, vibrant patch of reddish-orange feathers on its forehead.\n * The face, cheeks, and crown are a bright sunny yellow that blends smoothly into green down the back of the head and nape.\n * Its eye is round, black, and glossy, with a tiny white reflection dot giving it a lively expression.\n* **Body and Wings:**\n * The bird's chest, neck, and underbelly are a bright, vivid lime green.\n * The folded wing features a striking gradient of colors: starting with lime green at the shoulder, transitioning to bright golden-yellow in the middle, and ending in fiery orange and red at the primary feather tips.\n* **Tail and Feet:**\n * A short set of bright green tail feathers extends just beneath the tips of the folded wings.\n * Its legs emerge from green-feathered thighs into dark slate-gray, textured feet with curved claws, resting flat as if perched on an unseen surface.\n* **Lighting and Style:** The artwork utilizes smooth gradients, subtle highlights, and soft shading to give the bird a sleek, rounded, three-dimensional appearance with high contrast against the dark backdrop.", + "thoughtSignature": "EtwbCtkbAWkUfRP86C5UIJx/RtSYEJ8r46hlmdfIJFhWw+o9/tNybxDuHtcYtsDp7cOCJjd3Rvaltl77X0SqhCQOI9rWkQaT/3W+OwVVtbjTjn6YKodqEUXWwkvsoKqwyoMXwu3ArVOIdV+/xRS/kvuHgbu8VfauTF4uZEzF7Dw0RnT6z2WW+0RXujguJxuTSuNkJAZ6jfYToVEZgEmwqgWoyZsL1ridO6PZtfPjThVTEQw0anjXTDWgK3miDWBCGJNO/PZgg4/hq7FpFTQ1BRpylTV6a/TP5F15DhFNA14gQm6+ULR5VkGk48l25OO59dnipAALp5sGePNQmSUVb33fZNbpgYWcBYdP2k7PPi6tIAJJ1mDhm22dAmR7LkI0nfI0fe6oxPoZEGklZMducEtqIY22htlgVfBpwrLuVU9r3dwOkE3yhCE5Mc0mor9a1Ro7VGg3Jm7tx/oXFd73lGM1plFqpTblcJHLlJFzgvee17qmkZ7IBoCyXqWHxCdmG52yjo1PbakHM1jHd2wkRgjaa5nZBg910otkMBmfRwpEhe/tVMM7EnZf5kgIcEfMN5eObGX1l8VKYf6d/NzTWT6/xeAfUfKNBMNsgoxB8RysU0Zfa57SZnPfAEX3D/POKMHWaUAUczJxUGAaMoNbGADKOkwJoqaX+rg5Il7w0HYHgk2sJuBh0fNZ2rAWh6rA2wfFj9gdZHKPI4AZLw6EMflELcQqfTa8tk9jORHuYZ94NwaVbML9TCwru4qw8R1eeUqCy97mmJ0KaEd15/P4xM6Awa7EyZMcHy1g+1m6ORqP80K847lwmnFI/pJL0xxAe8tsXr9js9ns9u1fUE+JtO2oSxvX1yROvm85PPDAccE6zUxXAFBBPnmU35Hkiexp3+Sy6F2e2p1t7u+6BG+i8x4Q6HoeNrTHChHLcP/qLYJnyOL0NDDbLRaz4lWSQXhklCLkt0DQPI8xMwng/VTAz3OMY1Y8p4V4B2kRsy57Z9E/nHlvLff6all8UQ7bL5g7tl3T6Uv/xgiJ4shlvvgBJCZXgDU5Pmp7T6YlD5iDPJeTjuKM9iYPhKX8r/7S8hhb4SKVwqM/Ay5p0otewg2GsEcZUaqYunB3Lp3xuJD1GlUOI1siw9KdGR+vWHaLO5DQkWZz2pF98oJBL5/grPnnre6fWVpPo0aW1krGCZ0PyKhBOt/O7bwvVn0MQFzdEaJbWguWofsCER7PcZDP0ybBNmFJw+AWeukcZ/n9vBxghuHFzWyb+nYNs74baa/djWbPJ6ndxhpCdA7kCJz9zNzugUNxpUdBtO19rBiJqfy+rdPZNAHpYzpQLRRU2R7Pd92ZLiMAu/WxveeME1AY1CJkI5EeQS3ickQxi11jVZMQxpMMOKsxNdKb2O/ftIgPon3fqx+UnBiN0IcQYn/kjmPHlWneQXdofwxGGug+EP2yZbzBvXzOR1ymXTN15x3W2D0ObyM7oz8PjtjTY/UqDuA4S82eTRTAReh+oJPR8Tz+a1nLHaI9AeqtWFP1NZqEw5+qI+q+Tt9GdEsMau/quMIZrT24H3Xy8QTx7Zv6MmDfNzJZZrbSLTNeOtIqhGpOm9L862ffrEiNJZDYFswP39utY88IziysNkkCjounHX2+VSfDX+/wuuLiklO2yLbXgTud8hzG1JihXqYVC3VxugO8aqdmSCwno0MWVRS0njAnz4fLxHEVSrfXeZIOVm5yphb0KyMElS4q60jwKNZwABq0xq+FPp07OpdRGnYrYobmSbQiUltojdiuY2wnQ2I3xdpk15J2E7Atc5Oa+R0RpTXxVBJE+gm+R6Ue8vhXZ131tbpb/+hCaGJXT++oa5QGRL4hzcL28MR9m0s+pXw6EwqZ2jIJwaS6BqbhZUh6RbAc0k71R14N58Mw39RDQDrhkPYY2ZZMZ0F34gJu8N4ODxzTSi1MQIwYl9k8tgZG1O3HjJml7V/ZozeHniRfuJC9Ci2+4yJRaQKCwJwqfeE9AMK6t5OgZPlPKjQJ+3enGP6N76FzIhQ8e2HtBwKkG9aEuC2dEcscw9HwiAtlyAlW+3Fd0tidpND35ljGfS6bJTlbnYOlaHeZg548HzHUiZk+/BFimpNOBCuw3KE4mONoX0P40m+8Y6SBdTH9O2HA4rIN9DW0W5E72QBCOu0RCDeJxg8ZQHj49NNpAVzVFkafcQpSUDcC2P9A8LdmQeaqD6K9Oh0h3CHZeXshZc3zzUFGa6BaT+Suqh5vTdVaQsNaK87YiyvP+TEZvPSWS3EWTxl6pLgG4ZhqU+UX4dow+Yj2cNWydv6AmQCfEw293ZPlxOV7ysJTEAKxe6gklYOMfQjf3gJOaKFTPtLXOoBSL+4e+r6+iklAnOvTjnmv+Bp8yxnpi7LkWvvSoudquDAf1rbR0pkir724k5jOzra0PpB9t7Rn9qVwz9zIIsgrUh/OEqu3Ap+W1WYgv/6P6FdqTsd/WV4xyHpS9QQEmE/RP4S/Tn4OkFpDunBsymQ/VmJH68R1KZwNrlqoGybfRcDMaUGkvwLVnK85o1KDgyEOxoybWlW+tHEr/MaLhPsNtTWXC3+ADjXqoBTlygKLWPplx2+e6bk0/FQJCoR+OmIjU8VX4KKcGYDg6/U5np5MhydaVAb4nTHBYu4Vj1rLx+U9t72hWIuQb0YyPQiNizjBfsOBe4Ab5YeYjt9HAacfdJFglTC0njplTLUksx0uyMuHnUmADVPDg7mr/ufo/ofGj//XjsTRh24g0xCJFbYjRBH+s1tIu4VWIOAdWQcz2h8PW9JS8CFqQEdU4eh3V3WlCjLJeU46qaRpObjZZ+mX3HCGljACIvtsddxY6idOQCNXKBLSrNklyLZF5cb747G8+PHslN/49e2yZG42KPMKi1w+jdUddTJhwuKkGSGk+qXIazW9vx3jGmllXV7HW9JasJJ6lzv7RgKyLenAAUTLOhOwGUql8q1xJ6F41tH5JsiNmKc7mamZ/6YqZLj/hBR4yiDDQVKhkbkVs6ULJNOJOr/XEDH/dYfmJbYNyQrOlt4CIQMOh9la1+y1Gui1KzIEwi8TlBRiMK8KgHrBdgUexvda/Gy09urLRpOVu1K9N8SyYhdjSH6qKUOA+0wv+CSYApk6bqybFnkCzL2x1g63zaHRywBYAqJbVwylrYiPRJAHlAE4J3oLD+Gr5CjRMHIufzwRbQ7m2jpFnK8DgapFbmGz9fuzN8NJP/wv4SE9d8HTZHdv7zq3ev/qLJeN2w9yy5jair18JMFJs5brkV+GZFShde4JBrpGaGmmDCrFK299x4HwEUSny+dgO5JCauUxFEEdLHj0O0Jh6QOECxpJCfuAzEVNtgbVoCawtYC6UiTLrOHbK7zs0pneZBQNEvOODwnfsbGsGguKYEokPQEiY+rVqOFiMHAHkaoNkOmQEj9jD/ItXZgge7Un+FR5iyPyDFUZVnV34QIpk5JT3nQKHwBuCQ6s0GpjevfaxUs2LN3n9zsDq90FS2O/UZL7SSFXwCSHdoxK7rjoOPmtbSKXv6hQ0FELxK2Vm1XzxI34IwdKfrkT43jVm8Gx3G5mA03Rr7G0+CLVXxT1jh0Pc+7x825X1O8rasqknlJrXmCN1VzxTuzU5ognhGIqnwXwvT0GSq/7m/8dMKfn4CZtPIJu0V90/LpxL5bjUl4Pi6DLtWHTG/ivkXRE6GjcC6wHb/sFmWj7zRZ15ANXrudXXiya3HSbe0Lvg87fwz/2bStY/TDegvyjQ6jxsdcjNKlcCjdYie7UX1VNLCYMvHZXTRJ/nbyWZ26qid+g5X4e5KvZhic30QKHd7WzZlTWRlhGjiUL9Ca+BaJ+F8clbs1LTiXMk3MNvQ5JXAXDdHuTrVyG7XZyHtEkPJg7nSp+TSs3pRS2v8A0meFcFbsapDT9VKwxKeIDV9wo/AMkKptexiQFOfMVwkunxux5nsHgusayactpbS+mAcdIbj5P66Z2UHLc7jzDPscac2WdmcvY81DoYPmgRj7SG2vB3pJWgYcdxVmQa1JPGYMI7E6L2KD3KnJq6o8vdr/sSFIwb3gYG+FUiz6mg9sA3j7QsO2iLK5vnyJJm+smw6F6bW3Rgn2EeUNdTHyw1Cn8gFyTE7rRS8tzz+CS7EVZCYOuv1r0eay8/sppYpVH2QCvKoMdWD3l8HDeaQofV9d76M8dC16v88SLKvk43RrrkIv3QJzJpaeSeH1v6CmE+t5i9S6i6ehhDDqxUZMKznu4PSFqn6s6o746FGpT+G5o8XersIgSHfA1FIevl6tEEFoyK/RvnCTpAsUF9ocdw4+mtTbw8FpmRbxgtaBCjdw549rcIT5Gjoh3AM8aNeLaRzt6hKryHvo1S3YrWEo4rxCe/U8BXmu368Ro4IsypZUxqubMNrvWtR+fVKnqWsW2rZtp+obOy5XxmZntCxE18GnFIHzcYg7p8dcjyuASsxabqyV0nNSCEYmhPE5nZzY/2uS8DsILjp5wqyWvOOSojrKrpvOO8FNch0RikjmLtyQiBeFpn02wrgIq0QugTggzPE5AlLcRwDJTjBi/DkBPBiZEh1CGNtghIDQQ8xGziYAOUHs2O0FZ7NahENjB9xjIJvcHv7JECAAbMq1UoTsBfkajzQef0MgznfzgfNH2fMEiJoHrXQjTlAMRx7xPPzovLrRriMp2c5+3E7Cc+QOdndC/J/LhzeoUVoTWbmXLKNTT89Wuo0hW9y45MqBj4ux50lw=" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 1095, + "candidatesTokenCount": 364, + "totalTokenCount": 2324, + "promptTokensDetails": [ + { + "modality": "IMAGE", + "tokenCount": 1089 + }, + { + "modality": "TEXT", + "tokenCount": 6 + } + ], + "thoughtsTokenCount": 865, + "serviceTier": "standard" + }, + "modelVersion": "gemini-3.8-flash", + "responseId": "9rOzav-TOq6WvdIPhJrUwQo" +} diff --git a/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentText-googleai#01.httprr b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentText-googleai#01.httprr new file mode 100644 index 000000000..5921287f7 --- /dev/null +++ b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentText-googleai#01.httprr @@ -0,0 +1,75 @@ +httprr trace v1 +831 3508 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 511 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"contents":[{"parts":[{"text":"I'm a pomeranian"},{"text":"What kind of mammal am I?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_MEDIUM_AND_ABOVE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_MEDIUM_AND_ABOVE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_MEDIUM_AND_ABOVE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_MEDIUM_AND_ABOVE"}]}HTTP/2.0 200 OK +Content-Length: 3095 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Type: application/json; charset=UTF-8 +Date: Wed, 23 Sep 2026 11:12:31 GMT +Server: scaffolding on HTTPServer2 +Server-Timing: gfet4t7; dur=2477 +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Gemini-Service-Tier: standard +X-Xss-Protection: 0 + +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "As a Pomeranian, you are a **domestic dog** (*Canis lupus familiaris*). \n\nHere is how you fit into the mammal family tree:\n\n* **Specific breed type:** You are a **toy dog** belonging to the **Spitz** family (known for thick fur, pointed ears, and curled tails).\n* **Family:** You belong to the **Canidae** family, making you a **canid** (related to wolves, foxes, and jackals).\n* **Order:** You are in the order **Carnivora**.\n* **Subclass:** You are a **placental mammal** (Eutherian), meaning your young develop inside the mother before birth and drink milk after they are born.", + "thoughtSignature": "EqAICp0IAWkUfRMfOVk0uFa7+TG7uLL34mKeZFbqrN7B0705Weoc2eiOA4DCb8s1SNT833DMz/UnWk3AhnxrgjL7kEJ9ZkC7L6mGo4d6b5nWO6pB4Cc9nphYXxYXMEOFp/c4t1q72aHS/v5D2WYPi025OCwvL0P0ECAUjDZrhj9ZZT9l9xnqUbkp5i7J6zr3eD+XTeFNsQwtLQWk5N1PeCsXMDR0Uvm177T+HcvznxxRkxdnUCq00/8N8oC4hA8jzKS8Y+LcHvFmK3NWnO6/YWLEtK8J8rqBJwTtIp+O9ihPdjQ1tmm2f8apjcsOAE3EBlK/b5YNy9CvscHbSngyo4aJ8mEGgPJUm3IqGhZ7IWqonXRX0ucIWnG6zKDBYxu1nh2aUC+Wk87/u/RsyNseaHwLI4wTe766NldC/7vpf8eTRsfue3nholV3Mx2VFxrckTYuWunFKkMHyVGYCzbfkeiY9N1lbFiIDm0EjIeUoL2psArRAnsZNqUHIw//nErNf+b/B9Ly/jvpHavpgexxnR4yAY0W5+knlDrp/5DbCB6malC9357RyGK+tax1um8Na1zttXuFOxG7MthzUolI4nRqb5BcAe7QvD4ytuqnjRf5Lpp4DG6Lsl9g+BZXTpBMbnwU7XNwMk/pg3Q95cpA2QOtMDPupNto+lesl8pzUQ4UEw6OfwAYgNy72EpLG4wX0i5Nk7EpgVl9w5W2XYe5dvBoTSv9krTiB0/upJ4CFZwKRUZ5HNWcyWSTzB9m86fe2p2h/c6iRyPcph9gm+9snifzOcAb8KUp23PEP6jfi3fFmALQ8Hq0JiFeEjbTG7f7N9SfoDrbsVIYO9/I6kVkZdii/bj0NVhows7XBG7lwkBvgQ5suTEddhyzX9d1pCFi6LA/+I73WKWAWiRhNLDMHwLjYvDFq0mRqRK8+3BZqtqC21uFG2EZv+e6VdqxqY36d4Hh0XU8pb5z21pLSDEGaU+Ye55HSArvIwwAXTh9GPkA/Hry7Oj8/0AFoVyDu7gvyYGjvWFLl3nSbPYy9qDYZ31xvoMsSfnoIAI/nE0GOqXTA66YHPGU4QXlwxSyWer9E4qwVJ6MlKOkUF8ba2xWTGli71KglYXJzTm3hMBqlXCXBowkvCXOKunhzq3TTHB6pbie64lVlPUhSlMVFNLSRB63nKUeCCWUNW7ZuYivNwKxZdxdzRuq1rU67LDF6QHjUMSlruME7q5Gx+4+npSoKY/aVZJAUEYW3PGh4ShMWBk9nqWLq3gi1wUm+L7zIpJuxT36oIj9bhEwP1HID+ECcVfnYOa4lAqjgsCgOZj4e7XjIQelJU2IBYhIKOkj3+Kr7O0jqcGRr2a+nGzgshkav+Gd1t8/XdsLXek4fAd3FTauzNa+Nf4iv1+FRUhjieU29YPL" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0, + "safetyRatings": [ + { + "category": "HARM_CATEGORY_HARASSMENT", + "probability": "NEGLIGIBLE" + }, + { + "category": "HARM_CATEGORY_HATE_SPEECH", + "probability": "NEGLIGIBLE" + }, + { + "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", + "probability": "NEGLIGIBLE" + }, + { + "category": "HARM_CATEGORY_DANGEROUS_CONTENT", + "probability": "NEGLIGIBLE" + } + ] + } + ], + "usageMetadata": { + "promptTokenCount": 14, + "candidatesTokenCount": 152, + "totalTokenCount": 426, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 14 + } + ], + "thoughtsTokenCount": 260, + "serviceTier": "standard" + }, + "modelVersion": "gemini-3.8-flash", + "responseId": "HbSzavyoJurl7M8P89WUuQ8" +} diff --git a/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentText-googleai.httprr b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentText-googleai.httprr new file mode 100644 index 000000000..2eb644ce9 --- /dev/null +++ b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentText-googleai.httprr @@ -0,0 +1,57 @@ +httprr trace v1 +783 3188 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 463 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"contents":[{"parts":[{"text":"I'm a pomeranian"},{"text":"What kind of mammal am I?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 2775 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Type: application/json; charset=UTF-8 +Date: Wed, 23 Sep 2026 11:11:40 GMT +Server: scaffolding on HTTPServer2 +Server-Timing: gfet4t7; dur=2619 +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Gemini-Service-Tier: standard +X-Xss-Protection: 0 + +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "You are a **canine**—specifically, a **domestic dog** (*Canis lupus familiaris*)! \n\nMore broadly, here is what kind of mammal you are:\n\n* **Placental mammal:** Like humans, whales, and bears, dogs give birth to live, developed young nourished via a placenta.\n* **Carnivoran (Order *Carnivora*):** You belong to the group of mammals historically adapted for predation and eating meat, though domestic dogs are technically omnivorous.\n* **Canid (Family *Canidae*):** You are part of the dog family, which includes wolves, jackals, foxes, and dingoes.\n* **Spitz type:** Within the dog world, Pomeranians descend from Arctic sled-dog breeds (the Spitz family), which is why you have that thick double coat and pointed ears, just shrunk down into a tiny \"toy\" size!", + "thoughtSignature": "EpEICo4IAWkUfRPQlTmWAu9b89RjIXpZ+0eAaizOcou5at1BJgti6jG+A/SbTf3Cd7e7eCKVI+s/mzuiI+JCNy2zneXOO0/VgC9At5x9zQv1+nSI0VSVhcPQ6FEli8Zf9z+p+Creb4QO/QPOUkdC67k4cFMOr68pTRBfuwhxKa5Od1Ef4vRmPc6QKzdSseLkrU7EJWn4NZm+p2vAUsZjpQMh/FbSaPmG1HlEqB4gWcxtXZxvvNWfShLwP7U/5vCkYFOkXdSBr8AOuNToIXjvAKHKU01bIYbVWyma16TLUQGF0hysu+A4dr+uF4v4Pu3XuB+D3fTdVplZQ79DuiVlqtYD+Z/TfRM3/3ojkw4dJ2W371o6awXrbtdH34NW/u8Lb3YL4GcdEQxNS6f9Hp9iFSMHSNEFGav6PdNAayhQRd+e7KMmrxC7Fwb8wCXZuSxSpjQ3Sgbwyqa+LirgjGTGVcNydBI0hF1pLBZ3Ykifg77dm+ZGmr7tYu4THc+vBsIykA1M8aT3IpOO9q9od9lGg2VzJMiQQjtLuGIM19l/Ji6iVqPwt9wa1OzhY58bRwn39qJ5qCYXQfTW1/W20W6GzKtnQ47ojSxeTJj6J0orO44olOJbiH33x8jWQ/czaLSk3IAna9al63fUzoQ22VhrNwACVGVKeOFs+x7Y+gOoHqfeBoioifJy4xdLpnNR80+Af57g8EU9xxZ9Hkr/FzA4M6gNkjNn3dv4P5cOW8q+LT9quiOnFyh06bkJMacouN3TiuEt7+gNnMtdOHya5rvjlhkwYAT/75XRmREsHRAKGmwb2+bWcC2794pxUPSXhHlT3UtimyqzwnirXl1GCUhFVZHWFetzzcc3Fg9z//hDm2J9dVH3AD2asiBfmujkMohc7/uNc510Mysl6D7U1NUKE5rWyw6Wd+jXVxE2NzObwl5E0o5w9JuMqhw7aoCCYZG/u7tEWDJ0jMdNt19EgrSD9iLjGYKWKm7w1EW4HPW4FMSXu0EZzLDvWHjr4FmH1YMkGPuDIzVyASOx3LaCzz/udgCjP5MQnZQD4tcIs/RDGOTNFDKjP8qoSJCM37RfloCRawGmMyTHHCZbjrY36tmr8DKf/IuMYSanChQ2hemm/XvLFWmv7bT9gbxaEeDZQtKODebaMRWteznC2IW4slXcR8cq8gdrdpBeohiEr2jLV6Xp682G1/nDKyoeN59/d1eh9lbz33qxjaqiolIzTByImUya1q9iifr8otnVqDKj5VGdUqpdn7jLxbcNb7d1LHeChM/eSnbr179h6HJ1Pab2hEbRbl18vtKW3CMfeRb0/gqMJHjxx0DiIxhg9aIaHab9+T0laUlF9DHy0h/ENsPsKz5V3qCeIvbWzrdRy0lZ7054TDB/" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 14, + "candidatesTokenCount": 189, + "totalTokenCount": 474, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 14 + } + ], + "thoughtsTokenCount": 271, + "serviceTier": "standard" + }, + "modelVersion": "gemini-3.8-flash", + "responseId": "6rOzav6UFeH7vdIPo-P18As" +} diff --git a/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentTextChatSequence-googleai.httprr b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentTextChatSequence-googleai.httprr new file mode 100644 index 000000000..e47bf3c4b --- /dev/null +++ b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentTextChatSequence-googleai.httprr @@ -0,0 +1,57 @@ +httprr trace v1 +868 2156 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 548 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"contents":[{"parts":[{"text":"Name some countries"}],"role":"user"},{"parts":[{"text":"Spain and Lesotho"}],"role":"model"},{"parts":[{"text":"Which if these is larger?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 1743 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Type: application/json; charset=UTF-8 +Date: Wed, 23 Sep 2026 11:11:46 GMT +Server: scaffolding on HTTPServer2 +Server-Timing: gfet4t7; dur=1503 +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Gemini-Service-Tier: standard +X-Xss-Protection: 0 + +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "**Spain** is much larger. \n\n* **Spain:** ~505,990 km² (195,360 sq mi)\n* **Lesotho:** ~30,355 km² (11,720 sq mi)\n\nSpain is roughly 16 to 17 times the size of Lesotho.", + "thoughtSignature": "EswFCskFAWkUfRNDtDXXyEfmfsf2JZtFLYI8gQqBu1BIjietQrLw90upiK/KUxVxUANeNgcrQfKFTZM+Ov5mvySKuKPjFyeXBeb48xh5ZWYMo5QB0KdxokYrBe/5MgKMjj9wWoT2ru8looVXAdFl/dHwDdIYV68cQemSG54fmtAmDSSZNl0Wia/SVExAkhFc30NXdnGKbyeHF9hTW44uqSIu27NdcVsfEZnFv3NY6iwUgZjQNEpaeWxBEEoP1Nsk9lnhrYHKHLK+bF7igN8NCBPT8/7K/0RFGOrQKOuKixAHae+EUylGu5hOiq4YZktdw+OZKQIvTE0wIfpPOSmZQCkAZAzwq2vqVP9AJ8GAyoFi6aeoJ7/n0q3KoliNSg7mR+lqmS5p3BjvlD1wUvEqSitSvy55gMskdridTi3QRI3ax/gD51IR3+4WwuuSsQ22oXg4XE3RAH9PbCqQPc7VxvzF+yNccQzkUmp/6aSpeUACFjnuNMW1JmikrhX0D0h+crFGhCVlM2yuD2XitOdfKt/kGXU9e5xMYkcVsSnDNKltn5g/k6fozu3vmPm8Igl6lKxyITM8q8FaKatTxtY59tAJYwkQ30PdYctxwluP2AIJcFkRdK6wYgoLeTxG7O2j+fPUgx3BN2SgsGEWDl+GWmju6fp1Sc4JZwvlEQjwmxVgY25dY/zbah3fkBuDYSYQzpyW6A3tPdjfkag+TSnGFXCVQv+hIPSbNL3cUNZHmQ2x29KGD/NInOr5m/0u+qKZyTLB/exSNI3yOIxj9CVOpeGswDwdMIfdtmLlpEt5F2W+djenq3bb8wChvxR0mCFYY27WORQP9CMWUj0Y4ulJB+SBMIjCFnI4yPFCION5l1XoPigXLF1uPDh78Y2AIwfusDh7TUFGxfFoY+MRKx3pW7nqFIkD2i+fI1lk0ToWcDq7kQviXZ2iwehE2+XaoZI=" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 15, + "candidatesTokenCount": 76, + "totalTokenCount": 276, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 15 + } + ], + "thoughtsTokenCount": 185, + "serviceTier": "standard" + }, + "modelVersion": "gemini-3.8-flash", + "responseId": "8LOzavy-LZr6vdIPn7WfsQo" +} diff --git a/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentTextUsingTextParts-googleai.httprr b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentTextUsingTextParts-googleai.httprr new file mode 100644 index 000000000..150546da3 --- /dev/null +++ b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentTextUsingTextParts-googleai.httprr @@ -0,0 +1,75 @@ +httprr trace v1 +831 3731 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 511 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"contents":[{"parts":[{"text":"I'm a pomeranian"},{"text":"What kind of mammal am I?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_MEDIUM_AND_ABOVE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_MEDIUM_AND_ABOVE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_MEDIUM_AND_ABOVE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_MEDIUM_AND_ABOVE"}]}HTTP/2.0 200 OK +Content-Length: 3318 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Type: application/json; charset=UTF-8 +Date: Wed, 23 Sep 2026 11:12:36 GMT +Server: scaffolding on HTTPServer2 +Server-Timing: gfet4t7; dur=3043 +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Gemini-Service-Tier: standard +X-Xss-Protection: 0 + +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "As a Pomeranian, you are a **domestic dog** (*Canis lupus familiaris*)! \n\nHere is how you fit into the mammal world:\n\n* **General Type:** You are a **placental mammal** (like humans, whales, and cats), meaning you give birth to relatively mature young.\n* **Order (Carnivora):** You are a **carnivoran**, adapted mainly for a meat-based (or omnivorous) diet, with sharp teeth and keen senses.\n* **Family (Canidae):** You are a **canid** (canine), making you closely related to wolves, coyotes, jackals, and foxes.\n* **Specific Breed Type:** Within dogs, you are a **Spitz-type toy dog**—descended from much larger Arctic sled-pulling dogs, but bred down to a compact, fluffy companion size.", + "thoughtSignature": "EvMICvAIAWkUfRNCPghLlGgABx1Rj3/qiYBHJO06XfbEd6g6nO/Csvm0S9CY/oug/vQMTJbmrhTYlkAas3V8NU7bjkeVJUL9EFfm7n6KSbe+/8OJ9bBHMgsYDTzSDMzt61oXU81ss3dQNqXXlEmCcxdL+MfOIlkut776TphtqUrmBDp4MDbMnbq+hUU4+LjSfCaX0zFwGYWSObMhkrVCTozXSowikjX83tjqO9/5RtiJ3FRi4e8/N9/Z0qwnQGjgnp8tT09h8S4W5gFLwyihxNwPLAWqxA0R51wyc3iKdGqIm8WoUG5h0M8e5cwk6QBdRW/YaP654CTi2MR6SB7moUOY6EsIRwKinNNvLT/UiH3heAzQ60TFPyikEwDZXfnw4FEVA9wAOFeEsU+HXBbIM6NEn/Qg3SHAXq+UARnzKHgbumv1+or3dUZyhsQU+Nt03taMhqiDQTyPor2beKCfy2zYWRRmJI2+2WX10iPsdDtlK3s+Q/wlyVJCAhy4mwyZUoP79szb4O05cP0BuOceiWBjTX2spBw+uNLSli5sgIR0LJWnHv13z63CWe6SxpkvMmwVmwpjTncWRFps27Geczhjx/89oA07jWgto1YIyfaToOIObGQh8cWyZ/vz2Hs8zSwQRq4KcsdWRRiLNPF5NacwK1+3bzZGomdFqcU+IzIMqaj4CnV6ARu0Xqh85yaKb2TNa2sWVta8Ll391ehVX/RoqIiqkaSgvusIt8iD2Y8IJd6k/yt5QII4nGKb0my38sF4RLkymEN8QGDJoCBo9zgyHkexF4W5HdcNMkcUbJIiw388+dGafji5SxxqCfpSkV/yh7H2lPHBu8xDwBofnMXqmQt288oo51h25I0I9jCBV2EQifDrYvFLyroz8zhVZGX/c3yu43WZjCEKljowRPeZwvNVbgnpmmroBg3qf0KPWNAt66miFf3NqVP2QtpmdjXL6OX/ScsNbPsc9TG2gnPm+PZHsX7jItDNtgsvmr3gzXnFERK44M2R2O21JAfWuug5cao1BJLNevFmV62pE5K6NfeMZ7/bUlg1pQtBvO9svmIHDIxKtVfLhTtvQ7xuToRRydYIAbZHSC/QftkdSReoZXu3iJ78v8pKKgxaF7dtVpfGw3H0tOFVIMZaKm3VNVNdDgIa4O0SBMSxVKbXxeHsng4DPJ6nv2PMdd9SMupl6vPHxJRmFKR876ZQ5GIdP+GXWwhSsmtVSNul8DxVtQo5xULS15i43/JyH8opMbsfL+TgJSDMzWoAIPpHITC5iOQo6tXc91UID8reBYIuAotpf13koZo7zE7yZBJh3jvz0VcdV8uCIx4jD3gVXwnz6X8mophLblZFQ8itK5bR3AFJ5jSoSfuO2YqvzFP8DnXrK8hvOR8hXndTQBcdU89wmBytfZiJC881B5ONWqZlUx+2isWuvj3opB+5+QhLkBOakd1Clsv7ld1Nq3nNnwZDqe6bmQwOTVmd+Q1XaHQFNJaqoXj5y4+QGs7LB1tlEEjj3lmUKOg=" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0, + "safetyRatings": [ + { + "category": "HARM_CATEGORY_HARASSMENT", + "probability": "NEGLIGIBLE" + }, + { + "category": "HARM_CATEGORY_HATE_SPEECH", + "probability": "NEGLIGIBLE" + }, + { + "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", + "probability": "NEGLIGIBLE" + }, + { + "category": "HARM_CATEGORY_DANGEROUS_CONTENT", + "probability": "NEGLIGIBLE" + } + ] + } + ], + "usageMetadata": { + "promptTokenCount": 14, + "candidatesTokenCount": 184, + "totalTokenCount": 500, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 14 + } + ], + "thoughtsTokenCount": 302, + "serviceTier": "standard" + }, + "modelVersion": "gemini-3.8-flash", + "responseId": "IbSzav3aCeSE7M8P8sS34As" +} diff --git a/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentWithSystemMessage-googleai.httprr b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentWithSystemMessage-googleai.httprr new file mode 100644 index 000000000..1710dc016 --- /dev/null +++ b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testMultiContentWithSystemMessage-googleai.httprr @@ -0,0 +1,57 @@ +httprr trace v1 +863 3717 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 543 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"contents":[{"parts":[{"text":"Name the 5 most common fruits"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"You are a Spanish teacher; answer in Spanish"}],"role":"system"}}HTTP/2.0 200 OK +Content-Length: 3304 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Type: application/json; charset=UTF-8 +Date: Wed, 23 Sep 2026 11:11:49 GMT +Server: scaffolding on HTTPServer2 +Server-Timing: gfet4t7; dur=2444 +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Gemini-Service-Tier: standard +X-Xss-Protection: 0 + +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "¡Hola! Con mucho gusto te ayudo a aprender este vocabulario. \n\nAquí tienes las **5 frutas más comunes** en español, incluyendo sus artículos para que sepas si son masculinas o femeninas:\n\n1. **La manzana** (*Apple*)\n2. **El plátano** o **la banana** (*Banana*)\n3. **La naranja** (*Orange*)\n4. **La fresa** (*Strawberry* — en algunos países de Sudamérica también le dicen *frutilla*)\n5. **La uva** (*Grape*)\n\n**Un pequeño consejo de gramática:** \nRecuerda que para decir qué fruta te gusta, usamos el verbo *gustar*. Por ejemplo: \n*«A mí me gusta **la naranja**»* o *«Me gustan **las manzanas**»*.\n\n¿Y a ti? ¿Cuál es tu fruta favorita?", + "thoughtSignature": "EucLCuQLAWkUfROnudv6rKTNl49jHfuXjBAD4jU9yWohx9+urxIa9K15sFDTXL6OuHRpqxqwZ6o2N5Oh4FUZv+t/v2WSJmFEv2NKua4pZfVfoSTkMxF/SR/bgmZyYQ8X/hPl/gm3GmCpRL5bollHhLQ3DBOsKC5XCsN3WAAtyfzqz7yvafN5CgO8WmUtcVZGrvPeAWMBS5EP4HRT2mh9msvkNT4NsBmLkMrign3VPnDSNvwZAQXgIIP/qMR4x5XePkwLk4ycgjMOrwkJ8WpHlagcjMOYZpzMmqFoA4Yyr88qc5AOGtWT4i7EYwmJ2Fy8P6aybxufQeP611mlIle8iwA72BIiqNsk+vaisvdsu0xn0DE0HA2rIQAIysVtkNJyBskYxHZfM1lij/4gooR0y8luhkVTK2okw4DHEz9MZXlfntMs/ZQnW+q5VAyfZ1WfqWNFZXebpPMDqpnL4hrcklhAcvXhv6IYdtaVRjcp6bNfkLqdQI7/bL7s86TimOUx1OpjmS3dV97ggLgjhv/Q6OCRfzoIfRBEPCJAL/ZvTTvce+GIbng/x8xwYgLZbl4/uLi1wxnDm/+0VHlcyLVoq0Pb3nhKZNfKiE2yDPKt3RhQkTQMlq1U3dnvWePqYQ8z5TUPnfT+mN1Z5+EHII9LlXkq1rIyAumpIs0dttsW4VWldxlnI+pHwSSP/VI9FrmLv+hCjbVRRLDwlglYU0CO+DzkwXsVHsoV7g+PL0NVC8znfjDVG6PorTI8KJRR/+F72OU3Pbh6xA4F0hhRRxyTWh2IpUurmU20JyUWRi5LqMpAYUyKU6VRJofzSoVugY9iUfyLsd2vLW502lAlQzI1peutB1bk1K0NGjyY0QCbvJ+vfyMvA4O6+WYAsargd2WCqMdjc5h+gAe0X1SMjHKu2LKps59K7yhhzNhI3CqbsDg9qI0vVmJxpH2Gd+r4Kc6O2VBmT23yFnSDir4OR3NrFyuCKyWdaDVrZ5hHrF2kKclkti17PGBewxKiEgj3VDuNR3ByyPjxEtiSJzWcpdOnO02Pa/7JhCKnVZKfl2OfwMICBN+HQseaLbi+mgariQjC9UoCK5jJp4KMV/VkSVaXRsiHYJF5CwOJ5xUi7BhTQTZT2hpAwR44XKBOnm5Zg6ONen+hMgTu9lj51plff7iWkv8gUsHmqwtye1HQYh3BsNQHwzZq1f+NZJ4FmTK+dNmgthgA4j7JPnmHkww6LKfCD2owxorbnU04nG/wQvbVZAU0vQQVQ88g4lnWJ7CLrXhX51ooRnbILiFUno6AjGIprQK53MhMGvEXS9/Fj4H2Az8NXE+7wuAo87BWg6+MqmVOsl5/Mp6GeJQUNdU8mJU3cOZG0EhA0f0uXN29IYriYPl6R2wo57eWccO28g+lHesYZ0unXClqpLC0LmSCc8D+ZYc9179Ej+O6enF3xaN6VP5u9KWarfDuSzYU9FnKR7tTHcLTgaNVjma/bZIR3HMvfJaZf5EIY90bv8GXexhg1P/9Pqx1z7X03oKcNW+FIT0qSq15g/AoLX17dpg3m6zs2nQXPJ7F5YYPV+X6/LPae1Nc3ktuA907yDnSwDMVSZl7GzkF+n2/HgACJhpDyUysI6RmwV+YzJQSyEju9DTDmsmMBfTQmjZr4cGWfP4LF3bgjOuZGL6yC+M/xICLUrocLM4ZHArE9cdbUXsMEXXFVEV7XS8sgPMhUdq2ZACifYWfPq6Fwx7dkccRUwwO8sAcW7ruexmr1ZJB+xJHgEP2PO2LvCsy+rsUZPmICra1eD8CS9LnaikfYjAkv65BM7Obtj8SjhlrrddZd7hRrPC0lvV4ff5VEtQWNM4fLdFDYq44bmMy5wcHE9LOcXkbqeLO21+HK+m9ZEbxgJpLFUAq617PTRgr2xBy4TvagrO/mqjmJIRNLNor+bMof4zJWvOu/SzvD0XwJUnNQ3c1FUTWKjLH9VYAC+9TYneahEM3jeiZIRUx7a27bB9XlRG5AUoNx4zMjtSfxkcMFCk=" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 18, + "candidatesTokenCount": 189, + "totalTokenCount": 576, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 18 + } + ], + "thoughtsTokenCount": 369, + "serviceTier": "standard" + }, + "modelVersion": "gemini-3.8-flash", + "responseId": "87OzaqTDFpuIxN8PruCg4Ak" +} diff --git a/llms/googleai/shared_test/testdata/TestGoogleAIShared-testTools-googleai.httprr b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testTools-googleai.httprr new file mode 100644 index 000000000..d53717cf8 --- /dev/null +++ b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testTools-googleai.httprr @@ -0,0 +1,120 @@ +httprr trace v1 +1050 1655 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 730 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"contents":[{"parts":[{"text":"What is the weather like in Chicago?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"tools":[{"functionDeclarations":[{"description":"Get the current weather in a given location","name":"getCurrentWeather","parameters":{"properties":{"location":{"description":"The city and state, e.g. San Francisco, CA","type":"STRING"}},"required":["location"],"type":"OBJECT"}}]}]}HTTP/2.0 200 OK +Content-Length: 1242 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Type: application/json; charset=UTF-8 +Date: Wed, 23 Sep 2026 11:12:22 GMT +Server: scaffolding on HTTPServer2 +Server-Timing: gfet4t7; dur=1149 +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Gemini-Service-Tier: standard +X-Xss-Protection: 0 + +{ + "candidates": [ + { + "content": { + "parts": [ + { + "functionCall": { + "name": "getCurrentWeather", + "args": { + "location": "Chicago, IL" + }, + "id": "call_65668" + }, + "thoughtSignature": "EqICCp8CAWkUfROxCWBuKh914YeoFCvSE9K971SUwJgLiy03D5uOcFjzqJduds4t2edzpCv76o1Q4dUgPYcKEmzsbpKq6vVwNoeEn0TIAsiNqkbuiOIF9yuw5AJG3rz1xDzOsNNPQck/7JNnLErTQX7kZkAcKEG5CVzCJnmvpjZdlbuT8HhHWr0hjhf/+tohAGnPzAxku4IRjc9GDnmLo3cj2qvnvKrmcC63yklC8ntWzzJQ76WfOCSGwXqFsAoNHtcswMGBMSUhDIz93K/DW5oGRTrpLxJA48P23ZQDgWsZcgMELtmG7Z0r0kwgQChP46gTMnWVzrGK82VrouHDyPTzpkcQiCJqOXty15WqrWJWwmLiMuN9ZSW3kqw5WLuigLtgY0I=" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0, + "finishMessage": "Model generated function call(s)." + } + ], + "usageMetadata": { + "promptTokenCount": 71, + "candidatesTokenCount": 17, + "totalTokenCount": 132, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 71 + } + ], + "thoughtsTokenCount": 44, + "serviceTier": "standard" + }, + "modelVersion": "gemini-3.8-flash", + "responseId": "FbSzav-VJ8nknsEPu9nSwAM" +} +1705 1325 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 1384 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"contents":[{"parts":[{"text":"What is the weather like in Chicago?"}],"role":"user"},{"parts":[{"functionCall":{"args":{"location":"Chicago, IL"},"id":"call_65668","name":"getCurrentWeather"},"thoughtSignature":"EqICCp8CAWkUfROxCWBuKh914YeoFCvSE9K971SUwJgLiy03D5uOcFjzqJduds4t2edzpCv76o1Q4dUgPYcKEmzsbpKq6vVwNoeEn0TIAsiNqkbuiOIF9yuw5AJG3rz1xDzOsNNPQck/7JNnLErTQX7kZkAcKEG5CVzCJnmvpjZdlbuT8HhHWr0hjhf/+tohAGnPzAxku4IRjc9GDnmLo3cj2qvnvKrmcC63yklC8ntWzzJQ76WfOCSGwXqFsAoNHtcswMGBMSUhDIz93K/DW5oGRTrpLxJA48P23ZQDgWsZcgMELtmG7Z0r0kwgQChP46gTMnWVzrGK82VrouHDyPTzpkcQiCJqOXty15WqrWJWwmLiMuN9ZSW3kqw5WLuigLtgY0I="}],"role":"model"},{"parts":[{"functionResponse":{"name":"getCurrentWeather","response":{"response":"64 and sunny"}}}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"tools":[{"functionDeclarations":[{"description":"Get the current weather in a given location","name":"getCurrentWeather","parameters":{"properties":{"location":{"description":"The city and state, e.g. San Francisco, CA","type":"STRING"}},"required":["location"],"type":"OBJECT"}}]}]}HTTP/2.0 200 OK +Content-Length: 914 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Type: application/json; charset=UTF-8 +Date: Wed, 23 Sep 2026 11:12:24 GMT +Server: scaffolding on HTTPServer2 +Server-Timing: gfet4t7; dur=959 +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Gemini-Service-Tier: standard +X-Xss-Protection: 0 + +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "The current weather in Chicago is 64°F and sunny.", + "thoughtSignature": "EroBCrcBAWkUfRMl1Xlq9A5IA9xPoK1vYKzENI139THxSJwBlKG89+hajzFmvguXoHtgcotGaZ7lxdSz7pvCghkp3lvObx5Ig472z2l7c42+Gt9eKbcmxYa0M44G0DNJJain+IpQjjqy3a8TcwfpBnqzidxAADdtcBZkMVSYBzlzjfgypIV8CqwhCt8UVZJCVoheMPMvR3gRxgu3SfGIV96CAXzHFK2cEQ1FfmAH1F5dfiqlgMMJmhiY6PS/" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 148, + "candidatesTokenCount": 14, + "totalTokenCount": 182, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 148 + } + ], + "thoughtsTokenCount": 20, + "serviceTier": "standard" + }, + "modelVersion": "gemini-3.8-flash", + "responseId": "F7SzavH4NIWunsEPgqyEmQw" +} diff --git a/llms/googleai/shared_test/testdata/TestGoogleAIShared-testToolsWithInterfaceRequired-googleai.httprr b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testToolsWithInterfaceRequired-googleai.httprr new file mode 100644 index 000000000..61e680660 --- /dev/null +++ b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testToolsWithInterfaceRequired-googleai.httprr @@ -0,0 +1,120 @@ +httprr trace v1 +1050 1658 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 730 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"contents":[{"parts":[{"text":"What is the weather like in Chicago?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"tools":[{"functionDeclarations":[{"description":"Get the current weather in a given location","name":"getCurrentWeather","parameters":{"properties":{"location":{"description":"The city and state, e.g. San Francisco, CA","type":"STRING"}},"required":["location"],"type":"OBJECT"}}]}]}HTTP/2.0 200 OK +Content-Length: 1246 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Type: application/json; charset=UTF-8 +Date: Wed, 23 Sep 2026 11:12:26 GMT +Server: scaffolding on HTTPServer2 +Server-Timing: gfet4t7; dur=722 +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Gemini-Service-Tier: standard +X-Xss-Protection: 0 + +{ + "candidates": [ + { + "content": { + "parts": [ + { + "functionCall": { + "name": "getCurrentWeather", + "args": { + "location": "Chicago, IL" + }, + "id": "call_32837" + }, + "thoughtSignature": "EqYCCqMCAWkUfRM+MM4f3KZ/SubTg+xfJQ+8BWPwSSup3HrdtjoBBX30u9VoP7aJCjjGcU9yi8M4wDthubrcH9a1ArUNGgnArhClS0ZPc21hSOV/Ov5KE4GngWHVC8JwAS8rrCZ4nMMF96CJpXsrFqdP1IuTY7xEnmMmIjGFEQAVFFOowKHBfkV09q6WgabVW8mTy0eBUBlY9JwcQbBUDT0pvcf5jKOsO1lEVUCtAOTbugCMxh4AqTOqqDlqvx6Xi4Dv+6dlUa+DLvao1Tz6rhfZ+17wjZBWJwnTQmAWswzCtbOeQTTIJOKOMpLeLX+q/PlPRv69eC3brZW8j6imF89t/F/IwkmTFGIqK8T8f4QhIX4xOUOLnXOSe28PxqoZbB/xwwHPWtv7" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0, + "finishMessage": "Model generated function call(s)." + } + ], + "usageMetadata": { + "promptTokenCount": 71, + "candidatesTokenCount": 17, + "totalTokenCount": 135, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 71 + } + ], + "thoughtsTokenCount": 47, + "serviceTier": "standard" + }, + "modelVersion": "gemini-3.8-flash", + "responseId": "GbSzat_cN5CM7M8Phc2V8As" +} +1709 1341 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 1388 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"contents":[{"parts":[{"text":"What is the weather like in Chicago?"}],"role":"user"},{"parts":[{"functionCall":{"args":{"location":"Chicago, IL"},"id":"call_32837","name":"getCurrentWeather"},"thoughtSignature":"EqYCCqMCAWkUfRM+MM4f3KZ/SubTg+xfJQ+8BWPwSSup3HrdtjoBBX30u9VoP7aJCjjGcU9yi8M4wDthubrcH9a1ArUNGgnArhClS0ZPc21hSOV/Ov5KE4GngWHVC8JwAS8rrCZ4nMMF96CJpXsrFqdP1IuTY7xEnmMmIjGFEQAVFFOowKHBfkV09q6WgabVW8mTy0eBUBlY9JwcQbBUDT0pvcf5jKOsO1lEVUCtAOTbugCMxh4AqTOqqDlqvx6Xi4Dv+6dlUa+DLvao1Tz6rhfZ+17wjZBWJwnTQmAWswzCtbOeQTTIJOKOMpLeLX+q/PlPRv69eC3brZW8j6imF89t/F/IwkmTFGIqK8T8f4QhIX4xOUOLnXOSe28PxqoZbB/xwwHPWtv7"}],"role":"model"},{"parts":[{"functionResponse":{"name":"getCurrentWeather","response":{"response":"64 and sunny"}}}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"tools":[{"functionDeclarations":[{"description":"Get the current weather in a given location","name":"getCurrentWeather","parameters":{"properties":{"location":{"description":"The city and state, e.g. San Francisco, CA","type":"STRING"}},"required":["location"],"type":"OBJECT"}}]}]}HTTP/2.0 200 OK +Content-Length: 930 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Type: application/json; charset=UTF-8 +Date: Wed, 23 Sep 2026 11:12:28 GMT +Server: scaffolding on HTTPServer2 +Server-Timing: gfet4t7; dur=891 +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Gemini-Service-Tier: standard +X-Xss-Protection: 0 + +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "The current weather in Chicago is 64°F and sunny.", + "thoughtSignature": "EsQBCsEBAWkUfROSJ567taFaJJC2gn87GQbUB/wFkhoRNn/r5b+60GROp0RKptnJSlI8Bp8UayBi4juvoAYv1A9A090GVQTwJkl1HHTh1E9IUA14sdMlwCBQJCPfmiU4XiR6NnDBkw9xoPm9zxbS5g7PcmBCYcLLCEjunIseZwYYmJqxnwSNZYd4ajricBmB6PY8PDmm3rkhsqMX7XoUudzMecpbbqsw+q/vEZDCvgwKptbgX+bGGfIFokQxovfNpNnjajh6Ow==" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 151, + "candidatesTokenCount": 14, + "totalTokenCount": 188, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 151 + } + ], + "thoughtsTokenCount": 23, + "serviceTier": "standard" + }, + "modelVersion": "gemini-3.8-flash", + "responseId": "G7SzavjSJ82X3boPieeYmA8" +} diff --git a/llms/googleai/shared_test/testdata/TestGoogleAIShared-testWithStreaming-googleai.httprr b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testWithStreaming-googleai.httprr new file mode 100644 index 000000000..fc71af47f --- /dev/null +++ b/llms/googleai/shared_test/testdata/TestGoogleAIShared-testWithStreaming-googleai.httprr @@ -0,0 +1,83 @@ +httprr trace v1 +802 19003 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:streamGenerateContent?alt=sse HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 468 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"contents":[{"parts":[{"text":"I'm a pomeranian"},{"text":"Tell me more about my taxonomy"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 18603 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Disposition: attachment +Content-Type: text/event-stream +Date: Wed, 23 Sep 2026 11:12:41 GMT +Server: scaffolding on HTTPServer2 +Server-Timing: gfet4t7; dur=4568 +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +data: {"candidates": [{"content": {"parts": [{"text": "As a Pomeranian, underneath all that luxurious fluff beats the heart of an ancient Arctic sled dog"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 19,"totalTokenCount": 832,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": "—and scientifically speaking, a wolf! \n\nHere is your complete biological breakdown, from the broadest domain of life down to your"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 45,"totalTokenCount": 858,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": " specific breed:\n\n---\n\n### **The Scientific Ladder (Linnaean Taxonomy)**\n\n* **Domain: Eukaryota** "}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 72,"totalTokenCount": 885,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": "\n You are an organism made of complex, membrane-bound cells with a nucleus (unlike bacteria).\n* **Kingdom: Animalia** "}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 102,"totalTokenCount": 915,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": "\n You are an animal: multicellular, capable of movement, and requiring food to generate energy.\n* **Phylum:"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 128,"totalTokenCount": 941,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": " Chordata** \n You are a vertebrate! You have a spinal cord, a backbone, and a bilateral body"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 152,"totalTokenCount": 965,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": " plan.\n* **Class: Mammalia** \n You are a mammal. You are warm-blooded, nurse"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 177,"totalTokenCount": 990,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": " your young, have three middle-ear bones, and possess that famous, magnificent double coat of fur.\n* **Order: Carnivora** "}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 208,"totalTokenCount": 1021,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": "\n Your ancestors were specialized meat-eaters with sharp carnassial teeth designed for shearing flesh (even if your favorite"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 233,"totalTokenCount": 1046,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": " treats nowadays are peanut butter and kibble).\n* **Suborder: Caniformia** \n This separates the \""}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 259,"totalTokenCount": 1072,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": "dog-like\" carnivores (like you, bears, seals, and raccoons) from the \"cat-like\" fel"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 285,"totalTokenCount": 1098,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": "iforms (cats, hyenas, mongooses).\n* **Family: Canidae** \n The dog"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 309,"totalTokenCount": 1122,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": " family! This includes wild canines like coyotes, foxes, jackals, and dingoes. Canids are known for non-ret"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 338,"totalTokenCount": 1151,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": "ractile claws, bushier tails, and social intelligence.\n* **Genus: *Canis*** \n The true"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 364,"totalTokenCount": 1177,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": " dogs, wolves, and jackals. Members of this genus share similar skeletal structures and vocal communication styles.\n* **Species: *"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 391,"totalTokenCount": 1204,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": "Canis lupus*** \n **Surprise: Biologically, you are a Gray Wolf!** Despite your portable"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 415,"totalTokenCount": 1228,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": " size, your core genome is that of *Canis lupus*.\n* **Subspecies: *Canis lupus familiaris*** \n This"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 445,"totalTokenCount": 1258,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": " is the domestic dog—thousands of years of co-evolution and friendship alongside humans.\n\n---\n\n### **Your Breed Sub"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 470,"totalTokenCount": 1283,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": "-Classification: The Spitz Family**\n\nFormal Linnaean taxonomy stops at the subspecies (*Canis lupus familiaris*"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 494,"totalTokenCount": 1307,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": "), but cynologists (dog scientists) classify you further by dog type and ancestral lineage:\n\n* **Type: Spitz**"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 519,"totalTokenCount": 1332,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": " \n You belong to the ancient **Spitz group** (alongside breeds like Samoyeds, Huskies, and Chow"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 545,"totalTokenCount": 1358,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": " Chows). Hallmarks of Spitz dogs include:\n * Pricked, triangular ears.\n * A dense,"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 570,"totalTokenCount": 1383,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": " weather-resistant double coat.\n * An almond-shaped eye set.\n * A plush tail that curls gracefully up"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 596,"totalTokenCount": 1409,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": " over your back.\n* **German Name: *Zwergspitz* (\"Dwarf Spitz\")** \n In"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 623,"totalTokenCount": 1436,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": " the international kennel registry (FCI), you are classified as the smallest variety of the **German Spitz**.\n* **Geographic"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 649,"totalTokenCount": 1462,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": " Origin: Pomerania** \n Your breed was refined in the historical region of Pomerania (now part of north-west Poland and north"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 678,"totalTokenCount": 1491,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": "-east Germany). \n\n### The Bottom Line\nBiologically speaking, you are an Arctic draft-animal miniaturized into a "}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 705,"totalTokenCount": 1518,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": "5-pound lap companion, carrying 99.9% of the genetic code of an apex predator."}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 727,"totalTokenCount": 1540,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + +data: {"candidates": [{"content": {"parts": [{"text": "","thoughtSignature": "EsYbCsMbAWkUfRNA4M+e3tzZOlgLmDSmn18z44ECSJbEV7gCT+8qYp5nJaxsPvkrfHubhYvv6thK+mrdRU8/aHZSxHf6AGOGW5dZd6JNn0vZz07ibywt9I9SaLLCfwExGBcYbK3zUgFV2LhLDn32qGbaNWVo1ydvdbxYtMi3R25F+Sx2ijZXDDRtpdZ46eVgYThlYwhIOhMOmj/GtNNqaDX28hAih+bZPjkCGJo3cKsNHm3v+Vn3X29AgqFpP/zgVx90Y4oxaVFXixNctVWs99QclpL1f9p0bGVYTIQiSQsVBz3UCWpZKXUVRSKs28F0y4avVASTkQmT66e1XiQSu60m2m1Q4F8Bjz0EyHdKlxT0pSAO1iEj/qjOme0o22JVgjV3VszvBZLm0TmYTKxE0HIXnTKnsHQ/nOuF1gLBp/bI7aLtPojf3uc0g0NFIaCuwhBy2PlhQ/VEQAUgVCK+2auCMW7sd2PKG4FqY1iNiOoXtkQTuhtTJJcuQQDkXN6HKE9o292BrAK4k+MP/OidB0cQa/SaDf37QlFPekoSgTwPE5RAdOVZzjikppqmH6TL0CZm57cPCndq9lUa/RlftxjfJxuXIZPAV6k9sKuXumLUNxjXiCs/PViverMHm4NI0MkKkK0SOLS60hEBFDwkvLKB6chGqB4yv5l7glhUZELjTYKs1E3E/py5F24wzgixCzdEMjJUhQ7QmF+nxeBMNSa6icySM3Zp/e3MwDEDRcw74bZ0+96rDNzBhnWH8uPrDT6KAfCv9Yw67Tskd94MoAbRKizlP8eh3lopuswTWavUIOFDyzQYhyHMmjinbIfWGa+GVzBwRJPbR115asukao6vhT0Uh8vJAfhZHfZdASHNSUuQVE44RJGXpIZVxCEiuq1jQbUuZk46fTt1UyRsBtxQCiTy3k14c7As7Yo1hMV3XFuWrL6gkDtqKOvJiaNJC/BWctOfMcLZrsetAWDMiAan5J0fD/xBVX2LCOQJhXD/R21wWrtMBgS/1cbVy1S1MdTehjQ6wF5QYQ8wFA/tSzA7AbDKhZ2etM3hyI8G5gpsoG8878ED8VommhFKqlK6fZGJBXOTOhbF78xTpGqYmWu363ienpMK1xg6tiFCDlue9DcyAsQtY9kcEhUKtCv+IF7IZSDHWF1Zy1rPH/N+zWxmEPj0Eh5+6lanarZgwOHhcVarzTZ8bvisB3eaB+SM1ZlNgIEUJ6ZQI4tx2bk3qQV8uLSNPqD8EnjZrCRc+FcMAdwFIVGjx+uAN+ZASb5YPZzo3qjwifhwENqM2WNM65nbbqmFCZMrEFwYKxtKA18rdCTxdypLSLPdI57PSDTcSmoH/kY95OcZ0zkRBgzTa8Ioor3lGue2qxuGY7PkPQs8R9Caiaa7KqFWseNU0B58mDmxke05BG9E6AXOEGZw4Ib3UWVqiC8/SO9estKXoyLKRedekwk0sdotcmx+HjZu0FGunf9s2n4B5EZa/LNtKZFK014KWQZhp955f9r10mZ1zU4F6ERNbbKeEmZH7HzDTbM76YfBu6yKob+PCgY80ZcdMVC5KpNbtOZduvZkO8DswuI03h0+HTnb+blRkW/bxACM+lzpl2xKXEku6pvkqSjZiKK23xXKmGOX1CCI93O980AI0+Na72vzP1BgJuoFQALetJMm8Q1TJ63+R39QcDgSpaPfvIUAHsqPhLzVUSYvXsKrWIx7D7m7Lqbj9SVzm27gjzBrPnkE9HsAC9AUdOi6jUJAgxmKYAC4Aqg3abb2JGfi74Cr0tBW0eoajmqbfLmhH7aGaxuAbQv8wSRYSGMy7DcDB1yxU/aLuyUkXGxYmG0dbBzd8K9WBydCMNRWMl395RTaaskB1wnqqClSypwKnLlpagjUiF+3ALYsiliKjPnGhsE6/b0oZWH/cXGS5+J3HiEElw/O48ZwAInQBYnoVV7OdMigB7AoB3RWdHPhjuXWuLrCE4W96E5IFWFpZ8qeYwiku0wJtGIxnJuqqQoSC/+IQY5SC8Qgfww5N6dXgdtWBAuudYjov3xxFqDzxfEbw3/GUe3b/+UYkRMWUZmUcXGXazADh6QSWaSVSH0yTWn1pGVKpbfFkwSUd6F7Aj896QbXNUfKrVQRj4aMfmxnY01r7BbBbZKdnQMbP4+KkSOLnr/9h91uLK3y/qdGEeGWQJ2Ba53CabCJJfM5W7wPL7klLo69OesoH+vbrzkrHzJQYZvISLZaJQkbW+GS65Znsmxn/zViWRk2EuPy4qAHcEhQwZ5gaQJ7m3A97iOjH5pWCr+NjihkgxxPsOqICqA5TiCZeZVugyKEWhYYRzdJyEfUR3txJOnrH2LtfoWn+dus3z+dKqiSBMa4GsTIm+e8ZF0JO9O/zt4NVFLiTy/6wmVM4rme50GKRlmrBjQdK/OzaMDOi++t0h95lZDd7TUEbAuq2U4IG9vYylTZO8rQifsUMatUHmWqqPoRK9Sa3Dj6BTtjq7B12TVAVf3hAuEvVOmVM3B7rEUMnXIb8/zHj5Twi+zx9p6XN/1iRg4LG6/prQcJQYrzAhoutqRiIM+hNr81X2kG+oEmevZdr9MIGjm03VkJ413QqkIEqhhn96UsLIx3HukgdIbn7FMLA8vTgT08avHO24+H9o2YZsQXgktE0qAQ3TQEMq/2VdhicqcEYNni7a2sl4gDcwdkIOh2LwB5JJ0/QXwRcs3PeXCcAJfs8elRiwjE94NxYAJvYofsUh/nPRRLUGWILTzsORcWe3tiR1nXKhSdcNQ6aPJfCDDy99ODHQ5JWCP1qqV0lkRW5yQ4pSZp2h1xhxeEDLoXIOeXJbkjMVrcnnrrfnFm6joIMhw7Sp9Uqnrsm4XPmCWtDMy5kci12B/XcPAbZMqET3SQiQDwz8yQo4llQ6yFiqJq/iu70AWaZ6q5tU7UtIcQkXbfCqLxXGKQyzv9WQtEmwx8yYW6EfwWx/rpdetVPp2cWRTtTAcr2g0CFm89Vc6YoSMMBpAouvi4cJQo34rCHO8w6GltAUIasuYACwaGNs4U1pHJQ7wzTucFCjSEUWu/17qyeLGL2tfBuEddmyIa9klkP6STGqVezuxd/dDzGaVD8ovzUuTtY07wuS4RJau8rudrQ+bJ6WiVxZvDqx6pzXKCASkQwrQC3HbmQKLDyd6F/HeDr6MICSUE7oidFjJhPSzB9twN9nEI+J4+83t+2iUBSllFkJbmbJCkNjkmQNlPkxdZ0JNbXNbzIxFkTUhJ4bP+CmwFMAxoaqvvEZuprKSV9/2SpcCG88tYk46i0I09xIuRGcMeOg+m1MZk4FTzw/na50cg7EGkUgs4LPEJA4OhXm5zh3VQXjikp6ijSBKLbqjkJ7UIcMobJwoF5hKPVCiAghCqzhHXeMzij3Q2zPNyy8JNeYcl7RvWNeK+wYXXwQF/rHKEp3FDiN1lLUVQIShHlSwsrl0xRJLqGarkg4AL+RCaf282bsYUt+fooy1GGdgAHmWDIoe62qO93Xw+YG2tDWBQuCvnBhkkEuEuFAwH7xYxrLN4YsterytWz/OlTHXz24HswZcwhm+beABpgsOybPM8gQkphqk7PWb6WUSb/DdQSq2WnZSd0CYWWESSDPjsQWzZodFYMZ3Coq/1T0K4OW8Z+FvXXk8oagwfk6qa9fROMjQmPYOzKS2KhK29/EbcBBGFY0L5YSrNSLZ0M7PVWO9c69TOqTfgOIx9EG9mRiektiXSPUTdsQ3mRN7UUuKoZCs2XVif6daqPTe2wzR4ceKSX+tLWLnTi6Gm7BQI7+CWn1vj5zBpSeNjuN6nH8DI01O+mFgFf9JL0rKdpY72ftsxcA50G/4NdQc6sEsrwQwIRkJ+WzkVhjMfi975tB483R9Z4xno6+DwzbDCVlnTDCi5yxCYcu+TwUzX9z2vDtIrijkbOMGlRGvaCm4eFLVv24am8PEz2dce1G6qz3TJigzIYlGLPz3hJbd8OMFcPyawCw6aUnKqfLmSzVEETka60VxBPsbJOuTVawmuJ67r1hBpCXItYJoc1k5ex3zh1LySIUulUeqvD3bKHP9T/6sA3aB8F3vR0TioVi4KBdAFSpcGc4VnRxbpkDDFj1g3OKCb8343pSsLy+S4dUgG8qpKr8G5Af50re/8sirpWx3J7NfJB/FO6hTmyHXs93Mn8dSCPw8DylMKGhIu+ZtF775Bc5gqNPPZQf48dLhY3kzoVzy6Mm96EmheOk3RatXDW/hbz9G74LRMqqxWX94PwYBJbXmlaa7EDdn84UwJVYGusaR8fUO1M5fkg2zXbvonoTg/Z+fjnrMSd4P5wE3LVeqM6gbrbVA1l/lF4tn2YWe8SRSDdAfvJetwPqXIqjRH7I5N5seXE37CNwEB2C+YLk4rEDZmg3x7KbhozPWkWxjZMapCnsvNsWNdLrSXioM4Dl+8f3ZKo5hm/vPZ2ks6rbMRCAD2hHB3HlgNCD5/o2uF88aRYP90D9FQ+lCt4QPmLqkgPPO+nNhkt2CVcKHBh0OccfeXc+d5IyP1X7k0UKUfGthV0VPLDBxOkC+sBE15ISE9e/BFhq1r/jQHdDelm3yka1MBZkmN/uz/e5SzAbdViTmdz/gJJE++h4fUwQoEI+MSstEokJp44wCnplQ7MXJWFwJ1SFL4/fkecuQm9hfXdNhy3im+coVL4iPnOYdDTPxJDBhAUnk5M/wCXsNKzS3zxA=="}],"role": "model"},"finishReason": "STOP","index": 0}],"usageMetadata": {"promptTokenCount": 13,"candidatesTokenCount": 727,"totalTokenCount": 1540,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 13}],"thoughtsTokenCount": 800,"serviceTier": "standard"},"modelVersion": "gemini-3.8-flash","responseId": "JbSzapmPEZvonsEPp4G08Qo"} + diff --git a/llms/googleai/testdata/TestGoogleAIBatchEmbedding.httprr b/llms/googleai/testdata/TestGoogleAIBatchEmbedding.httprr index 0bd321563..5796cfd3d 100644 --- a/llms/googleai/testdata/TestGoogleAIBatchEmbedding.httprr +++ b/llms/googleai/testdata/TestGoogleAIBatchEmbedding.httprr @@ -5,7 +5,7 @@ Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr Content-Length: 9914 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key {"requests":[{"content":{"parts":[{"text":"test text a"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text b"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text c"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text d"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text e"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text f"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text g"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text h"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text i"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text j"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text k"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text l"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text m"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text n"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text o"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text p"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text q"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text r"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text s"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text t"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text u"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text v"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text w"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text x"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text y"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text z"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text a"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text b"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text c"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text d"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text e"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text f"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text g"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text h"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text i"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text j"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text k"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text l"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text m"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text n"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text o"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text p"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text q"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text r"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text s"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text t"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text u"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text v"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text w"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text x"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text y"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text z"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text a"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text b"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text c"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text d"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text e"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text f"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text g"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text h"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text i"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text j"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text k"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text l"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text m"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text n"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text o"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text p"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text q"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text r"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text s"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text t"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text u"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text v"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text w"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text x"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text y"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text z"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text a"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text b"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text c"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text d"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text e"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text f"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text g"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text h"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text i"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text j"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text k"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text l"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text m"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text n"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text o"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text p"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text q"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text r"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text s"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text t"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text u"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text v"}],"role":"user"},"model":"models/gemini-embedding-001"}]}HTTP/2.0 200 OK @@ -307632,7 +307632,7 @@ Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr Content-Length: 509 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key {"requests":[{"content":{"parts":[{"text":"test text w"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text x"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text y"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text z"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"test text a"}],"role":"user"},"model":"models/gemini-embedding-001"}]}HTTP/2.0 200 OK diff --git a/llms/googleai/testdata/TestGoogleAICall.httprr b/llms/googleai/testdata/TestGoogleAICall.httprr index b473885c6..8d0dc3dad 100644 --- a/llms/googleai/testdata/TestGoogleAICall.httprr +++ b/llms/googleai/testdata/TestGoogleAICall.httprr @@ -1,27 +1,31 @@ httprr trace v1 -782 990 +744 1168 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 462 +Content-Length: 424 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What is 2 + 2?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"temperature":0.5,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK -Content-Length: 579 +{"contents":[{"parts":[{"text":"What is 2 + 2?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 578 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Security-Policy: frame-ancestors 'none' Content-Type: application/json; charset=UTF-8 -Date: Tue, 04 Aug 2026 09:55:03 GMT -Server: scaffolding on HTTPServer2 -Server-Timing: gfet4t7; dur=636 -Vary: Origin -Vary: X-Origin -Vary: Referer +Date: Fri, 21 Aug 2026 08:57:39 GMT +Server: nginx +Server-Timing: gfet4t7; dur=620 +Strict-Transport-Security: max-age=31536000 +Vary: Accept-Encoding +Vary: Origin, X-Origin, Referer X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN X-Frame-Options: SAMEORIGIN X-Gemini-Service-Tier: standard X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block { "candidates": [ @@ -41,16 +45,16 @@ X-Xss-Protection: 0 "usageMetadata": { "promptTokenCount": 9, "candidatesTokenCount": 7, - "totalTokenCount": 36, + "totalTokenCount": 33, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 9 } ], - "thoughtsTokenCount": 20, + "thoughtsTokenCount": 17, "serviceTier": "standard" }, "modelVersion": "gemini-2.5-flash", - "responseId": "9rZxaoaVKuq5vdIPtLXR-AM" + "responseId": "AhOIaojKKYXYxN8P6b6acA" } diff --git a/llms/googleai/testdata/TestGoogleAICreateEmbedding.httprr b/llms/googleai/testdata/TestGoogleAICreateEmbedding.httprr index 87883f6e6..bd66a35f5 100644 --- a/llms/googleai/testdata/TestGoogleAICreateEmbedding.httprr +++ b/llms/googleai/testdata/TestGoogleAICreateEmbedding.httprr @@ -5,7 +5,7 @@ Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr Content-Length: 313 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key {"requests":[{"content":{"parts":[{"text":"hello world"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"goodbye world"}],"role":"user"},"model":"models/gemini-embedding-001"},{"content":{"parts":[{"text":"hello world"}],"role":"user"},"model":"models/gemini-embedding-001"}]}HTTP/2.0 200 OK diff --git a/llms/googleai/testdata/TestGoogleAIErrorHandling.httprr b/llms/googleai/testdata/TestGoogleAIErrorHandling.httprr index 534f5fcbd..aa6281a68 100644 --- a/llms/googleai/testdata/TestGoogleAIErrorHandling.httprr +++ b/llms/googleai/testdata/TestGoogleAIErrorHandling.httprr @@ -1,14 +1,14 @@ httprr trace v1 -774 967 +736 967 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 454 +Content-Length: 416 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"Hello"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"temperature":0.5,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]} +{"contents":[{"parts":[{"text":"Hello"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]} HTTP/2.0 400 Bad Request Content-Length: 581 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 diff --git a/llms/googleai/testdata/TestGoogleAIGenerateContent.httprr b/llms/googleai/testdata/TestGoogleAIGenerateContent.httprr index e4811baf5..3f51fc1bb 100644 --- a/llms/googleai/testdata/TestGoogleAIGenerateContent.httprr +++ b/llms/googleai/testdata/TestGoogleAIGenerateContent.httprr @@ -1,27 +1,31 @@ httprr trace v1 -798 1016 +760 1195 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 478 +Content-Length: 440 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What is the capital of France?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"temperature":0.5,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"What is the capital of France?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK Content-Length: 605 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Security-Policy: frame-ancestors 'none' Content-Type: application/json; charset=UTF-8 -Date: Tue, 04 Aug 2026 09:54:57 GMT -Server: scaffolding on HTTPServer2 -Server-Timing: gfet4t7; dur=710 -Vary: Origin -Vary: X-Origin -Vary: Referer +Date: Fri, 21 Aug 2026 08:57:33 GMT +Server: nginx +Server-Timing: gfet4t7; dur=591 +Strict-Transport-Security: max-age=31536000 +Vary: Accept-Encoding +Vary: Origin, X-Origin, Referer X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN X-Frame-Options: SAMEORIGIN X-Gemini-Service-Tier: standard X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block { "candidates": [ @@ -41,16 +45,16 @@ X-Xss-Protection: 0 "usageMetadata": { "promptTokenCount": 8, "candidatesTokenCount": 8, - "totalTokenCount": 31, + "totalTokenCount": 43, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 8 } ], - "thoughtsTokenCount": 15, + "thoughtsTokenCount": 27, "serviceTier": "standard" }, "modelVersion": "gemini-2.5-flash", - "responseId": "8bZxatCBGYqBxs0Ptt7msAg" + "responseId": "_BKIarT5M5a3xN8P98fwiQE" } diff --git a/llms/googleai/testdata/TestGoogleAIGenerateContentWithMultipleMessages.httprr b/llms/googleai/testdata/TestGoogleAIGenerateContentWithMultipleMessages.httprr index 587c1e67a..ee2d1ed23 100644 --- a/llms/googleai/testdata/TestGoogleAIGenerateContentWithMultipleMessages.httprr +++ b/llms/googleai/testdata/TestGoogleAIGenerateContentWithMultipleMessages.httprr @@ -1,27 +1,31 @@ httprr trace v1 -900 1001 +862 1181 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 580 +Content-Length: 542 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"My name is Alice"}],"role":"user"},{"parts":[{"text":"Nice to meet you, Alice!"}],"role":"model"},{"parts":[{"text":"What's my name?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"temperature":0.5,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK -Content-Length: 590 +{"contents":[{"parts":[{"text":"My name is Alice"}],"role":"user"},{"parts":[{"text":"Nice to meet you, Alice!"}],"role":"model"},{"parts":[{"text":"What's my name?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 591 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Security-Policy: frame-ancestors 'none' Content-Type: application/json; charset=UTF-8 -Date: Tue, 04 Aug 2026 09:54:59 GMT -Server: scaffolding on HTTPServer2 -Server-Timing: gfet4t7; dur=485 -Vary: Origin -Vary: X-Origin -Vary: Referer +Date: Fri, 21 Aug 2026 08:57:35 GMT +Server: nginx +Server-Timing: gfet4t7; dur=554 +Strict-Transport-Security: max-age=31536000 +Vary: Accept-Encoding +Vary: Origin, X-Origin, Referer X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN X-Frame-Options: SAMEORIGIN X-Gemini-Service-Tier: standard X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block { "candidates": [ @@ -41,16 +45,16 @@ X-Xss-Protection: 0 "usageMetadata": { "promptTokenCount": 20, "candidatesTokenCount": 5, - "totalTokenCount": 52, + "totalTokenCount": 47, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 20 } ], - "thoughtsTokenCount": 27, + "thoughtsTokenCount": 22, "serviceTier": "standard" }, "modelVersion": "gemini-2.5-flash", - "responseId": "87ZxaoCPA7OrxN8Px_6vCQ" + "responseId": "_hKIarjXJ4GnvdIP7O_z8QM" } diff --git a/llms/googleai/testdata/TestGoogleAIGenerateContentWithSystemMessage.httprr b/llms/googleai/testdata/TestGoogleAIGenerateContentWithSystemMessage.httprr index 20931467c..053c38aae 100644 --- a/llms/googleai/testdata/TestGoogleAIGenerateContentWithSystemMessage.httprr +++ b/llms/googleai/testdata/TestGoogleAIGenerateContentWithSystemMessage.httprr @@ -1,27 +1,31 @@ httprr trace v1 -916 1070 +878 1247 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 596 +Content-Length: 558 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"Tell me about the ocean"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"temperature":0.5,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"You are a helpful assistant that always responds in haiku format."}],"role":"system"}}HTTP/2.0 200 OK -Content-Length: 659 +{"contents":[{"parts":[{"text":"Tell me about the ocean"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"You are a helpful assistant that always responds in haiku format."}],"role":"system"}}HTTP/2.0 200 OK +Content-Length: 656 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Security-Policy: frame-ancestors 'none' Content-Type: application/json; charset=UTF-8 -Date: Tue, 04 Aug 2026 09:55:01 GMT -Server: scaffolding on HTTPServer2 -Server-Timing: gfet4t7; dur=890 -Vary: Origin -Vary: X-Origin -Vary: Referer +Date: Fri, 21 Aug 2026 08:57:37 GMT +Server: nginx +Server-Timing: gfet4t7; dur=1028 +Strict-Transport-Security: max-age=31536000 +Vary: Accept-Encoding +Vary: Origin, X-Origin, Referer X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN X-Frame-Options: SAMEORIGIN X-Gemini-Service-Tier: standard X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block { "candidates": [ @@ -29,7 +33,7 @@ X-Xss-Protection: 0 "content": { "parts": [ { - "text": "Blue, vast, deep, and wide,\nLife swims in its salty heart,\nWaves kiss sandy shores." + "text": "Deep blue, vast and wide,\nLife teems in its salty depths,\nAncient secrets sleep." } ], "role": "model" @@ -40,17 +44,17 @@ X-Xss-Protection: 0 ], "usageMetadata": { "promptTokenCount": 20, - "candidatesTokenCount": 23, - "totalTokenCount": 126, + "candidatesTokenCount": 21, + "totalTokenCount": 110, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 20 } ], - "thoughtsTokenCount": 83, + "thoughtsTokenCount": 69, "serviceTier": "standard" }, "modelVersion": "gemini-2.5-flash", - "responseId": "9LZxaqbqJKr0xs0PlNW1sQI" + "responseId": "ABOIasOGGvi0xN8Pof3qiAQ" } diff --git a/llms/googleai/testdata/TestGoogleAIMultiModalContent.httprr b/llms/googleai/testdata/TestGoogleAIMultiModalContent.httprr index dd0b3afaa..c30a5301e 100644 --- a/llms/googleai/testdata/TestGoogleAIMultiModalContent.httprr +++ b/llms/googleai/testdata/TestGoogleAIMultiModalContent.httprr @@ -1,27 +1,31 @@ httprr trace v1 -47866 1086 +47828 1265 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 47544 +Content-Length: 47506 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"inlineData":{"data":"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAACXBIWXMAABYlAAAWJQFJUiTwAAAgAElEQVR4nOy9d1RT67f3+wBCCjVAeqWH3nvvYO9d7CgKiGDF3rsiqCAivSQhIfTee0dQBKT3DvZdzvnjjpWoe//OPfe+5z3n3pe9t8vxHWusLAhDJt/PmnM+ZQUgkEhYcAQQP6sNwJL/D2DBEUDAAMAmgCOAgDMAbAI4Agi4BIJNAEcAAfcAsAngCCDgJhg2ARwBBDwKBJsAjgACHgaFTQBHAAHPA8AmgCOAgCfCYBPAEUDAM8GwCeAIIOClELAJ4Agg4LVAsAngCCDgxXCwCeAIIODVoLAJ4Agg4OXQsAngCCDg/QCwCeAIIOANMbAJ4Agg4B1hsAngCCDgLZGwCeAIIOA9wbAJEPCGbHhTPGwCxM+NAfxUiKX/G8BCwADAJoAjgIAzAGwCOAIIuASCTQBHAAH3ALAJ4Agg4CYYNgEcAQQ8CgSbAI4AAh4GhU0ARwABzwPAJoAjgIAnwmATwBFAwDPBsAngCCDgpRCwCeAIIOC1QLAJ4Agg4MVwsAngCCDg1aCwCeAIIODl0LAJ4Agg4P0AsAngCCD+2RtioH+oP4T415d/6Pu/Jf8Pw0L8ZYLwTwBAAoEURyDFJZDiEggJJBKFQklKoSSlIaEkUeJI4Zeg75FAICWW+n8LC/FXCsLfFQBxBFJMHCGOQGAwaAZNSldL1soE42qHXeOB37wav3M9wWsjYdcG4tY1hLWeeDdHRRszjK6mDJ0qJS+PRiCRYssQEC2Ipf9FYCGWNAh/JwCE5Y04AjohkaR1teRc7RW9NhFPHabeOqUcfouZ9EyXG2fAj9fJjNfMSdTOTdHLSdbPSNJnv9SJesi8c07llA9t92aih6OioY6cMkMaI49GSkJpQVhHLfkvCAvxfzwI4O9S4kOljgRSVg6lqSbrZqt4fD/18SVVXoRWWaJeC9uoO9N8qM5+tMtltNtpuMN2qN1yrMt2st9pZtB5Zthlesh5rNuup86spdCghKvDe6n59IbyxUC61yaCk7WCuoosBoOGMPjeQsBC/DRB+BsAIIFAikkg5OXRJppyOzwJD0+qpD9itrH1e/OMBwrMhnIsx/JspqodZt64zHW5zryyn3nlsDDg8nHG/eO8x8c5jw+zbu9nXBfGnab6bUe7LIfazfqbTLtqjNtL9Eu5Wqxw9eun6FvX4DTUpaVloFZhyX9fWIj/g0H4GwAgLYnSpsnscyBEH1apvqnb98JoKMZ4LNl0gmcxlWk9W2a3+MrxfbfTQrvjYpPD+xb7T11OX6fcfvno+fWDx9cP7l8X3b4uuH6ed/k47/ph1uX9lPP8qNNkr93IG6u+JpOuGsO2Yr28JOb1M/SVbopUihQShYJ7A8RPo780ABJIpIIM2pkpf8uDVrab+XqfTs8BvYEThiPXjMcfmU1GmM2yrBdL7T6+cvjU5vSp2elLt/Mvky6/LLj89tHtty/uv336ro8ev3yC9PWjx5eP7p8W3RdnXGdGHMa6rQfazbsajFvL9csytKPDVA/uJmpry6Ell/53h4WAAUCgEDbKmJerlFrWM/uWa/VZafZbaQ1v0hs7Yjhx1mTqpulchNX7TNvPjQ5f25y/dLr8OuX2+1f33766//7lm/7ti/vvn91+++z++2f33z67//rJ/VeIBPcvH10/LTi/n3ScHbId6bbsbTN5VaVflafDS1QP9KOoqUmjvzfHsBD/6CD8RTOABBIphUZpYmUeWlNfLWf22DJ79TX69JgDNlrDa3VHd+iP+xhOnjCevW/xIcPuS7vz126nr0POX2dcvs67fl1w/bro8vW9y68fXH775PbrJ7ffPrn+/snl908uv310FeqXj85fPzh/WXT+MOswO2oz2mvV/cqsucawvFCHnah2/BjFyAQjJYNa8jjAQvyEACCRyGUIBF1WKkiNUGOr2m+n2WvK7DPVHLDVGnLQHl6uPbpFb8zbaDLIeOaRxftc209vHT722M+9tZ3ptJ3tsp1/Z78wZL845vBx0vHzrLOQh18EPPwCyfWXD26Co+vXD86fFxzfz9jPjNkM9Vq8eWXcUK1XUqjFSlE/eZpqbCqHloL7AeSS++GnAwBqfNHI1USFTCPlTntmn7N2v7v2oKf2oIf2kKcu5P59+uOHjSaCjKfDzEf45s1phvxnzKcX6Y/PUmNuKhfFaXeXGo+2WE50Ws/1270fsf8w5fh52unLrPOXBZcvi65fFt2F+rzg/mne9f2s4/yU3fiwZW+P2atWw8oq3excZnS8StAZkqGpHJQH4LFR5NJb4mcBQHD7R9KlJG+pk9ttNd55aPWt0xncqje0VXdok+7wNv0xb4PRgwYj+/THTht2hxsmXVPxWi5rpCyOlwZYKaCkCFZZoELPUBu5ev2VJoMNZuMdljPvbOcH7RdH7T5MOH6ccvo44/xx2uXTtNvHabcP027vp10XphymR61GBs26uoyaWg2KK5j8XNVYlsrxYIqBmZykNAoB9wPIpffGTwEAAolEo5B2ijKpxvS3rsye1Vp9W3QGduoOeukN7tYfPqA/6m0wvF9/6LRBz0OD2HOMFVZoeTSQlhAz1tNZvXy5vqY6QU7cVg/x+AyliafbVWTUV2Uy3GI+/tpyusd6rt92YdhuccT+/ZgjpHFngZwWxmynRyzHhsz6+ozbOw2rG7RyS9VZmSqPoxn7/Uma+rJISWiabMkjAwvxjwdAAomUQ6PWUxQqbZTfeaj3rtHo36rVt1u7b59en7fewBGDAR+9vgC97lCD4scaOz2kMWgRAABBQfpUoH8mnxfge5hMwC0DYK2dFOeBcnu67ptc/e5S4/4605FWi4k3VtM9NrO9NvMDdguD9ouDDu8H7T4M2b0fsp4ZtBgfNBvsN+nqNmx8pVtcy+QVqUTzlO9EMjYfINDVZZY8MrAQPwkAMmhJZzoh2kGX52lYuFK3ZQOze4d6zx6t7v3aXd46nce0X1/TrQ/XjjhDNlASl1omghIDZEUpn4N742Oijx3xVqURAQDa9GU3/QiNbK32dJ2OLP2uAsPeSpOhBtPxdsvpbpu5ftv5fvv5fvuFAbv3A3YfBm3mBywn+0xGeo3fvTNo7dSpbGZmVaolZCs/YSsFh5BX7sQqEiXhJIBYanv88wFAoFDyigpm+jqHVjgFrnW/ttYxdr150Radtp3M13uY7d5azac1mx5oFYdqXDuAV8Uvw0ojcTISeFkJU33N9as9bMz0CRi0KAAqBLHgfbhGlvbrdJ3XGXpvc/V7y4wGa03G28xnu60XBh0WBh0hDTkuDjm+H3ZYHLKZHjAf7TPue2fQ/lan5pVmfr06u1glgq90O57md5NkaIeRkoUHRpFL75B/MAAoNBpPIOgbGbiuXLF265ZtXjv27t11dP/OK7tXcPaa1PqpN55Rr7ypUfNEo+CR6rldOGU8QpmiqKlMYhDliBgkAYPASi9TkBRFigANyrJrAeSuAoOhMoOBcqORWuOJVovpTqu5Ptv3ow4fp10gTbl8mHRZnHR7P+X2cdpxYdx6bNikv8/gdZdOfYdGUbMqr1IlOk/lAYd+KZqyOYCgrCeDRMMTZMgl98k/FgBFPE7fyNBjxfJN27Zs2blt8/at23fvOhjgdzTw6J2ANdkXdavvq5SHqddEMsufa9w+glcjiCuTcMa6qvoaNBUShqSAJiugqFhJtJiYERMZHaI61WEx/9pyrtt6ccDm45jDp2mnLwsuX9+7/fLB7csHt8+Lbh/n3d/PenyY9fg077owazc+ado/bNDRy6x/o17SqppeqxxXrPw4nXYzher3gOK0HYfBo+EtNYil9sk/DQAJJDTxS6SQjC1M3VZ4rNmwduPWzavWrbGysbGwsty51+vc9Ss3bpxkPXSui2e+4ut05hv0V5mUcbS3rsTQsJIadKqpnrqZnpqxtoo+k6FMxFMVUH4H8J1NFl9nnb7MOf+y6PbbR4/fPnv89kWgzx6/fnL79aPrLx9cvrx3/Tzv/HHWGcoAU7ZjY2Z9IwYdA5p1XWol7SoZDYyECsazXMYdLj04hnbwNsV8JRZDgLbUwEL8I4LwlwAAiUbhiHgDMyNnT9cVa1eu2bB27ab17is8jExN9A0NNu/YevHG9dt3L3AjV3TkGY40m46+tpwbsJ7qtYqPUHe2kibKSqlRSHoayvpMNSaDroSXX+kkn8nR+bzg9PtHwVIIaF2Qx+9fPKHlQB/dBdZ3hvTe5euC8+dZ+49Tdh/GbeZGLEeHjHr7Ddr7NGq6VYs6GBmNtMRKangB5V469UIiPSCCuukMQc1UBhoVXeqgwUL8MwBAolA4Al7PyMDZ02X5mhWr161avX716vVrVqxd6eTu4rFqxSFfn+Arl69dP5GTvGKo1Wxu2Gpu1G5x0u7zrN14vzUrTmPbWnkjprQaVUaDhtFnynhtxmVw9BZmnf79d8/fv3pC1v/q8ftnSL9+dP36weXre+cvC45fFpy+zDl9mXH8NO3wcdxucdh6ZtB8tN+4b0D/dR+ztlu5sIOS1kxKqCFFFFMfZtMucWgnYugHHpHsvbAYIpwEkEvunH8IALJyctoGug6ujp5rlq9av3rtxnWrN6xZuW7Vmo1r123ZsGOv15Hj/v4nT1684F3Ed514Z744abcwaf9+yv7jrP3XRbv5MZumKqOY58wrwfSrwfSocI3GGrOPCy7//m8e//ar57/9slxw74cWRQvc7/zlvcvnRedPs06fZhw/Tdl/mLD7MGb/fsR2YcBypt9sYsh8aNj47YBOwzvVwtfk1GZcXA0+opT0MI9yhUc9mUA7EknbdJGsbCaHloGnh5FLbp6/PQAoKUklFWUbR1v3VZ6rN6xau3nd+m2bNmzdtGbTujWb127YtmnnPq8DRw4f8j964+r26gK78T6LmXH7+UmHDzMOH2fsP83Z/7Lo+NsH54/zjjOTDrNTTu8/uv72q9u//+r++1d34Y3/10/uv3x0/QqtAHX9+sFNAIDLxzmX99Mui2MOCwM2C702873Wsz1mU92m4/2mQ0Mmbwd0G96pF74hs5sUXlYrPCnF38snXkknn04h+8fQ9oZQ7PbgscrS8HppxFLb9+8NABKNUsThDEwNXVe4ea5dsXbTug3bN23etXXb7u3bdu/Yunv79j079x0+ePi4v2+gb8jtDfWFZkNdJpPDdnPjDu+nHT/OOH6cdfw05/TLotNvn1z+7avrv//q/u+/e/7brx6/fRW0vJ89foPc7/b1g+vX9y6CE7cv790+L7h9mHFZnHKZH3KY7bGa7TSffW02/cZkvNNouMegt0/3Va9mTZdK3mtKSpPci2rZ0FJFCIBM8hk2+Vgc+dBz6obLZG0XeUkMPC2AXHIH/10BkEAi0NJSapoaNk527qs8V6xdtXbL+k27tmzbu3PXgd37Dx/09vU5fMz3aFCA/+mT/kH+j26sqeIZvKs3GOmymRqwmRt1WBRg8H7G8cOs46d5p88Lzl8+QC7/FRrtcf/ti/uvn6Flz1/fu3xZcP485yQoe1w+TDm/n3CaH3aYG7Cb7baa7jSffmM23WE22WE80qnf36X7ukuj5i29sAPPa5WNrRd/VoF4WCx3O0/hcibhbCopIIl8JJq6O5TqGUQk68igpGAGkEtu4r8lAAg0SgGnaGRu7Oju7LF6+cp1q9Zv2bB59/adB3bv9dnv7efjE+h39ESA38njx06dOBp07Pr59YWxhp2Fev3NlmOdllO9NrODtvOjdgvjDh+mHD7OOH2adf60AA1rfv3g9stHt18+QTXPl0WXL/POX+adIetPOC6O2M/12872WE+9sZxqt5hoM51oM5nqMJ16Yzbxxni406C7S6e5S6XkNT6jTTKxaVlkjWhYuci9YuSNPNkLmdjTXHxgCvloHG1fBG3rPbLZZkUsQ0pCAl4nh1xyH//dAEBA1T9NiW5lb+Oy3NV9tceK9avWb92wZfe2XQd2HzjifSjgyJEgv6NB/n4njx07FXQkMCDo+DZOiEVrmnZ3mfFAvdlIu+X4W+upd7Yz/XZzw/YLYw4LE47vp5w+QFO8zp9mXT7NuXyadfk47fRh0unDtNPHGaf3447zQ7bTXZYTr8zGmozHGozHGozGGg3GWwzHXhmPvDEc6NJ7+06rvkspr0OW3bIsuh48qQIPS0VvFy67moc6nyF3mosLTCH7JVC8o2i7n9LXXSHruCmi5eARIeSS+/hvBoAEAiEJ1T/qNk52Lp4QAMvXr1y7df1mr627DnjtP3LA+9hhn0DfI4F+vieOHTsT5Hc66LD//qfXHKvi9Tpz9d6WGPfVmg02WYy8shx/Yz3ZbTvdazszYDc7ZD8/4rAwar8war846rA46jA/bDs3AGl+yHZ+yG6233ay03KsxXS0zmis3mis0XCs2WC01WD4lcHAG7133bqv32nXditlt0snNYlF1ICQCnCvGNzIF7ucI34uXe40V/E4i+CbSD4cQ9sfSdv5mOp4hIRXgxeKIpfcx38/AKRlZXQMdOxdHZy/A7Bmy/rNu7btPOC1x2ffft8Dh475+AQePXrCPyA4KPD8yb2+h0/6unEf6LVztV+lG3QWGHWVGvdWGw80mA01W460WY2+th7vtJ7ssprssZ7ssZrqsZrutprqspp4YzHebj7xymyiA9oVMN5uMdpkPFJrMNZgPP7KZKLDZKLTeLjT8F2nVkcXs6FbrbSLmt4uE98o+rQaPCgDtwrBtXyRi9kSZ9JlT3Dlj7Pxvskkn3jqwWjangjqpjtU/ZUKMnh4SBS55Fb+mwEgIyerb2Lo4Obk7OkCAbBu5ZpN6zbu3LJ9/86dB3fvObxv/1Fvb//DPseP+p0KOHrSb8OOrWtW2t4+rlsXp9nC0mlN02/P1H2Tr/+22LC7zLin0qyv1qy/3myw0Xyo2XyoxWyoxWy4WaBGk+F646Eaw6Faw+EG45Em05F6IwiARqOJ16YTXWZjfaZDvUZvurXqOxnFr3EZ7TIpLcte1oOwKnC3BFwvBJfzwMVs0TPpqBNc2eNsRf8U4tFE8uE48v4o6u5nNI8TJBVLDALeMYNcejf/nQCQlZMzNjcRAODqvspz+dqVqzet2bhj09Y927fvgwaC9hzat9dn/wG/Q4ePH9mxb6edi6OxidGBLUY5oTpN8RoNiVrNbM1Wnk5bhl5Htt7rXCMoJxQbd5ea9JQb91YY91Wa9FUZ91caDVQaDlQaDFToDZTrDVXqD9cajdQZjtQZjDQZjnYYjXabDA+Y9PYbtr7TLHlDSG8VT2oGL+rB0xrwqALcLgZXC8AVCABwJl3iBE8qMBXjz8L6JkMMHIql7I+kbH9EsfbCy+Ak4W2TiKV2898HAAmELEbOxNLM0d3ZydPFfaW759oVqzauWb9t42avrVt379i2Z+f2fTt3HPDy8t6zxWubs7uzuZW5nbPzls0rnl2wLH/GrI3WqI1l1idoNqZoN7O1W3g6bem67Zl6Hdm6r/MEmSHfoKfQ4F2RQW+Jfl+p/kC53mCl3nCV/mi94Wij4UiL4VCbQd9rne63Op09Oq3dGhWd1KxXqKQm8KIOPKkBDyvB3TJwsxhcLQSX88GFbHA2Q+wUHxHElQlgK/il4H0TSUfiKYdiKHufU9ZfI6tZyUnCuwWQS2/ovxUAVmYObk6O7s6uK9zcV3uuWLdq1aa167dt2LRj06adWzbt2rp1z451WzfauzhYWFq4erju2u+17+ih4KB17FuG1eHKlRHqVS/Ua6LV6yAStBqStZvZmi1czVa+1qsM7deZOp3Zej35+v3FegNlekMV+sPV+iN1huNtJuOvTYc7jfve6He+1mp9o1b3hlb2mpDTLsNpFXnZAJ7VgodV4F45uFUKrheBK/ngYh44nwOCM8EpvlgQV+o4W+FYCtY/hXBUwIB3NHXfc7KDN47IlIHnhhFLbei/EwCmVlAGcHR3dlnu6iZoA1ZuWL1m85p1W9at27Zh7ZZ1K9etsndxsLKx8lzh6bXPy//UscALZwLPHH14YXlRiEbVM5XyZ+oVERpVkerVUczaGM26eGZjkmYTS6s1VbsjXQBAof5AhcFwreFInfFIg9Fws+HIa5PhLrP+HpOeHoNXXVp1bxgl7fJZbUhOi2h8M4ish27/D6rA3XJwq0wAQAG4lAcu5oJzWeBMBjjJQwWlygVwFALYin7JBN8ksk8c2fslZdNtisl6RWkFNPx8acRSe/pvA4Cxpam9m6OjO9QHuy53dVvl4bl2xYr1q1ZuXLN83Uond2dLa0srWyuP1Z479u44HOATcDbw1OWzgRfOnj27P+WmSXkovTxUpTxMpfypckW4akWkWnWURm0Msz6B2Zyi2Z6m3Zml212o21+pP9xoPNJqOtRq0t9q8K5dv6fT6G23YXu3bkMXs/w1I6sVzWoCLxtAeC0IqwEh1eB+BVT/3CoFN4rBtcJvDJzPBmehJCB6gocK5MgFsOWFzcCRROLhWMr+F5SVwUSGqRxSGp4bRi65rf8eTbCRmam9s6ODm6OTh7PzcleoEFqz3GPtCpflbjaOthbWFlY2Vq4r3Dfs2ux1aM9Bf++jJ/yOB58Iungm4Oyxu+eX8+9olT1mlD5WLg1TqXiqWhHxDYC6BGZTimYrT7s9S+dNgW5XmV5vg1Ffm2nvK5OuNv32Vs3WV1pNb7RrXmuUddDz2vCpzRKxAveH1oCH1YL6pwLKALcFAAiTwOV8QRL4xoBYEBcdmCoXwFYUMIA/kkjxjqHsCiXbHcDj1aWR6KX/u8JC/C2GQW2d7R1doSTg6OHs4unqttLdycPFwtrS2MzYysbK2cNl1aa1m7y2bt+/c8+hPQf9vH2CjvqfPe57KjAg0Ov+OfvMBypFj+klYaplz9QqnqtVv2TWxGrWJDLrWcxGrlZzpk5Lvm5biU5Hjf6bJsOOVoPWVt26JtWKJkZxC6OwlZ7Vgkttlo5vEHleC0IE7n9QBR5UCgCoAHfKwK0SQRL4cyEEdcPgVJpYEA99nPODAeLheMrBaPLWeyTTDQoyWDT8/AjE3wTCpZwI0zbQsXaysXOxt3d1dHBzcvJwcXBzsrC1NDYxNrc0d3BxcFvpsQLqCqDOeIvXtp0Hdu312XfA3/tQgM/+o96Hj2y8c9448YFyephS7jO1whfqJTEaZQnM8mRmOYdZwdOoSmdW52hVFWhWl2nVVGnW1mlVNmgU1tGzawlpdZjUemRivVhsncjzGqjyge79QgCqwP1KCAAhA9/ygGA4CMIgF5zLgfLAmQyREzxkEFf2OEf+GBtiwCeeeDCGuOEqHlooKoeG1ggt9V8XFuIvC4CUtLS6loalnZWtk52ts72di4ODm7O1g62xuampuamVnbWDq5PLcje3lR6ea1asXAetFd24c/O2PTt2Hty1+9Ce3Yf2bd+384CPy/mLWo/v018+VmFFqHNfaqTHq2ckaWSw1LNS1XJ46nmZzNxc9dxCtexildxyRnYVnVdJZFdhkqqlYqtFn1eBZ9UgtBqEVH0DAGJAoPsCDIS10K3Sb/3Aj574fPa3nvgUX+IETzIwVeYYS8E3Ce+TQNz3nLDyNJ5hLIeQgv2H/OsTuHRrgaSkGMpKptbmNo62Ng62tk52lvbWxuYmRqZGplamFvYQGPbODo6uTs4eLm4r3D3WLF+5YfXazes2bN+4ccemTbu2bNy1fe2O9RsOW+0OZhy7Tr18X+nuE+XQSOVn0cqRCapRyarRbJU4nmpcunJcNiM2lxyTj48uUnxRLPmiVPxFhUREJQithMb7H1RCdf/D/8BAFcTAvcpvulsBbgva4pslf3QFF3J+dAWIIK50AEfBLwV3JAF34AXRM4hA1ZOBd40hltrff1EAoAeASkqSoMdAmFg72Ng42Ng42hqaGatoqDG1tYzNTcxtLCztraztbe2cHBzcnVwEk2UeazyXr1u5asPqlRtXr9qyZt3WDeu2bvTc5ezmr7I2mLz7CtX/DuNsqNKlcKWbUSp3Y1UeJCqFsBihXHoonxKaQQjNUXicJxlSIBpSBB6XiYRVgJBKaMDnQeW3yudhDaRHAgnPhVQIc4IQA6g5LoMwuFb8DQPhFMFpwTxxAEfBPwV3NJG4N5zocBCLU5GBP3QMsdQW/4sCgECi5BTktQ31LGwtLe2tLe2tNXW15RTk5RUU6coMbT1tI3NjC1tLG0dbOxd7qEMQThes9HBf7em+2tNj7fIV61at3rDWY6urzSGm7XGS+xnSukvUXbdoBx/Q/cMYJyMYwS/pF+OpV5LJ1zjE6zzc9XTMzSzEzRxwMx/cKgJ3S6G1bvfLIWdDAFQLrF8LQupASC2kx3XgcS0k4ctHteBh7bc+AWoPyqEWWdgbXBJMFQdDU8XoQGiqWN43CXcgkmS7S1GeIikBP1UXufRG/+sBgIB2hKkw1UwszSxsLc2sLVSZ6lIyMhIopKSsFI5IUNZQ1TXSM7E0sYLKIYgBaMrM09VluZsr1Bu4u6/09FyzwnmbveUhVUt/ol0QwfUMefUl8qYb1F33aAdDqUfDaceiqEGx5DNJ+GAW9hwXczEddSkLXMkF1wrAzUJwpxTy8R8ACL0u9H0dpNDvR+HJYwEbj2q+NQlCDKBsUPRtnDQ4U+R0+rITXFQgG+Ofgt1xH2e0CoMhoWEGEEtt9L/onmAimaRvZGBua2FiYcJQUUJLSn77EgolJSujiMfRlekaOpr6xgamVmYWdlZWjlCxZOtoa+1oZ+NkZ7/a1maPoakPxcyXaBVAtD9JdD5LXHGRvO4GZct9itdj2v5wyqEXZN844rEk+SCW7Cku6lyGyIVsaIHDtULIu7fLwN0/ASC85QsdD6kehAn0pB48afh2Hlr/nYRaqEy6X/kHBpeEFVHGt67AL0lh1yO82Xp5BaoUPDmAWGqv/+UAQKCQ0nKy6ppqJlamBqZGFDoVifrTNCr0sdUolKSktKwMBitPJJPoynQlNRVVdRVlNWW6KoPGpGnY0/wL7QoAACAASURBVA29qMY+BDNfgsUxonUg0eEUwfUccfkVytpb5M0PKDvDyHsiSN4viT4JCn4psoEc1Gm+WHAmNJJztQAa2LlVCt3IoQagWlD21IKwWhBWJzB9A3jaCOmJUA1/SIiBkASoYRC0y7fLwI0SQUUkWDt0JkP8ZJrsMZb8roeKFpswijTo4dLwYiHEUjv+rwSA4FnQOBJOz1hPz9iAQCb9379BAoGQgHZQIhAQDGiUpCRKUkpwgkai0TJEKZq9vMFegokP0cyPYBlAtDtBdDxDcr1IXnGNvO4Oacsj8o4npH2RxIMxuCOJ8v4smSAu8kw6ZNArBeBG0XcABA1AiPDeXw/ChEZv/AOAp01/0veLwoQgbBUe1X6ri34MGV0vFrlSIH0+W/5UGvbQc6zTAUWGgaykLPxoUeSSm/6vBAASqviVNVS09LTxJOL/7nslUEg5mpT6KqzhQbypL8HCn2R9nORwiuRyjuh5hbT6JnnjfcrWULJXBGlfFN47XvFostxxDvpUmtj5bGibi7AKEmYAqP4RlD0/bvNPG8GzJhDRAiLbQFQ7iOn8Q9GvwcsO8OIViHwFwlsgKn4w86wZuhLeinraggmtx9+vIt0sIV7MIfrFEtefJaiZYaQw8PYx5JK77i8EAAKFxCgqEClkjIL8f+PtKBkUTlNGawve5AjRXNAJ2J0gOp0luV8irbhOWX+PuuUxeecz4u4XBO9Y7NEkTABb6iRX/FwWtMj5WiE0kvMDgB9F/5MGEN4E+Tv+LWD3A94IyBgHmVPflDUFsiZB+jhIGwXcEcAeAEm9IO4tiO2Ejkk9osl9Min9xJReemKPUuxb5chXKqH1jFultOAMyrbrBF0nBUlZeK0EcumN91cBQPCxAGhpqLD5771dSh7NsFMw2k+08CVZ+hNtggRV0AWS5zXKmtuUTQ/JO54Sd78geguqoGMs6RNcieBMaNBGCMA9QQn0o/551gzd3RO7QeogyJwAubMgbw7kz4P8hT9UMA9dyZsHuXPQN2RPg4wJEf6YaNqoRNqoTNoYlj9G5o0wOMMqrEHV5F6N2C7m81fqIfXKl7Lp++5TjD2xijQpFDxVjFx67/0lABDW+v/99yIRGJqU1kacqQ/R3E84HERwCia6XyKvvklef5+yNYzsFUE8EIU7HK/olyIblIo8mwHN4wr74G89QC3k/ohmkNAF0kage3zeLChYgJS/APKEEpgegkHAQ97iNxgK5kUL5sXz56TzZvA5M9jMKYWMSVzaGIU3SuOM0NkDqin96om9GnHdGs871O9XKR2NpLkeJFC15JCScDmEhAH4H4cAgUTJomjWGMM9eKgV9idYBxEdzpDcLpBXXievv0vaEkLe8Yy49wXuUBzWN1kuMBV1Jl3kDwDKoRLocS1U7id2g7QR0ewpkDsDAZA3J5DA9392P2T6H0jMgXxIogVzqMI5xfw5XM4MJnNKLn1Cnj+hyB3Dpw7TOIOMlAGl5H7V+B6NF2/U71epnEymrw4gaJjLoeD9A0g4A/zPQ4BCYpSlNTdgTY8SzX0JlscJ9qdIrufIy6+S194hbn5E3v6EtDcS7x0LAXCcgz7NFz0vAODmdwCeNYL4N8u4g1LpY+jMSZHsaYiBnDmQOy/09zfrF37XH8lhHvqeXAgVkYI5VMGcZO4sOnsGlTW9LHNKij8uzxvHpo4SOCMU9hA1ZUApqU81pkv9WYvK5Uz6zutEfRd5BbIUPFOG+MlLoP+50Bg0zQpjtJ9g6kswDyDYnCA6niW5Xyatukna+IC8LZTkFUE4GIMT9sEQANnfMsCdMvCoGkS1oZO78ZxBhbQRyYxxsaxJkDMtAECYBL4DULAAihZA8YJo0aJY8eKyosVlhQtihXMieXMgZ/6bcmdBzqxo9izInhHLmEKlT0imTUjzxhW4ozj2CIklwCCxV+VFh/KdMvqRcLLTbhxZXQYNpwIkDMD/LAnIK0lrb8aaHMGb++OtgwgOp4luFwjLrxHX36NsfUzcFU448BIv7INP86GRUGgqQJABwupEo1+RErsorD5s6rBs+qhExjg02pMzA3JmIUNDza7gTp8/DwFQsiBeuihZ9l6u9INC2XtM2aJsyQK6YEE0Zx5kzX3DJmcWCBgQyZwSTZ8US58U408geWPy3DHF1FE8e5jCGqQl9CqFtdBPp1JX+OFVjDFoaTQ8U4aAM8B/OwSSGEkVNwWjg3hzf4J1IN7+FMEFmhUmrbtD3vSItOMpfn8U3idB4RhLGpoKyAKXC6BFnffKwZM62ag2SvxbYvI7fOqgfNqwTPooOmN8GTTiOQ2yZiAr5wjzgCAVFC+IlS7KVCziyz/gKj7gyj8QK96TyhcVixfE84RJQIBBzhz0xqwZSJnTIGNKhD8hkTaOThuX4Y4pcEYI7GFSUj8lvJUSzCNtOE/UsMbIKAoYgNfPIf8PkfDPKYGgFUSSSIqZnP4unJk/wfI43u4E0fkcyfMyee1t8saHxB1PCXtf4A/HKxxjyZxMWxYsAOB6MbhfLh5WQ4lqocd1kpLfkTgDRN4glj+KSR+XypxEZU2JZk2DbEE/IGyL8+dA4ZxI8QK6fJFU+Z5S8Z5aAR0pldAJXshA7vw3AKA8MPNnBkD6pEj6JFKQDeS4owrcMSx7mBDZTr2YTdl4kaTtpCClAD9tFwkD8N8CAI1UUJFmrlU0P0qwOIa3CSQ6nSF5CAZDNz4gbQ8j7YkkHorD+qfInuSJB2eBSwXQVMC9UtnH1fTnTcqxHfSkLhqrl546QOYOE3ij2PQx2cwJyawpRPa0eO4MIndWIm9uWf6caP7csvx5saIFmbJFgtD6ldCRUvmBUvFBsXhh2Z8ZyJ6D6iJIf2QDkYxJkD4pyp9Apo1LQglhFB/TRbpeSNn7iGK6DotlSKPgz+FDwhngfzcEKKSkPFrJXt7Em2Duh7c6TnA4BbUBK6+T190lbw0lej0neMdAA0FBXIkzGSIXoSVxIrcLMQ/K6M/qGC9blRI66ck9Suw+BmeAmjpEThshZoziMiew2ZMKOVPyOdOyOTPovFnJvDmJvDnxvDmxgnlE8YJs2QK2YpFWsUguf48rf48tWUALC6EfyhZgkP0nBrJmoGwgSAii/HEUf1w6bUI27h3ubjnZO4JiswOPV4E+lBt+3CLi/2cM/lElEFQ6o5FkI1n93ThzX7zVMWiBtEvw98WhIUSvcPzBl9ijifLHoWWhohdyweV80Rt52LtFjCfVSlHNyvEdjKQu5ZReBruPzhmg8YbI/FFS5jgla4KcPUnMnlbImZbLmcHkzUoJABDPmxPNmxPJn19WNC9bsiBfvCBdvIAqmBfN/X8A4BsDQgymvzMg6A34E1K8cZmkfoXQBsKxWLLbURJVWw4phYL7AQQMwH89BBISSEWmjNZmnOlRguUxou0JktNZosdl8ppbpE0PCTueEQ68xB1JUDjOkYQAyAGXcsWuZONv5iuHVCpFNqrFvlJN7FRh9aix3qmx+5Q5g1TeMDV9lJY5Ts+epGVPkrKnsNnTmNwZ+dwZ2dxZdO4sImdWDGqRhSNFP3rfP7v/XwGA2uLvDGROC9YXTQsbg2XpEwj+JCp1VOb5K+w5Ps3Dj0TVkkPLouDPpkfAGeC/CgACWh+qsRprDC2QhnYI2J8muF0krrxOXH+PtC2MsC8SfzgOG8CSOsmDlsRdyBa7lIG/lq18v1TpWa1aTCsz/jUzsYuZ3MNkvdNg9amwB2jcIRp/RClrTDlznJE5QcmcVMyaVMyeEmYD2ZwZqZwZkZwftY3A3P/i+P9UPxj4gYGwHJoQE5AgldKveC2fuv4cVc1CAdpcv+TZFfnP1D+rBBIsi5AhoJXdFIy8caZH8VaBRLtTRGgw9Cph7R3S1hDinnC8dwzUBwelIs5mgnNZohfSsZczlG8XKIdWqUc1ase+0ol/o534VjulR4f1jpncq5zST08dVEkfVc8cVc8cV8kcp2ZM4L5hMC2fNS2TNS2eNS2aPQ1VNZmC47eRH8EQEHT+/a4vtL5waOjH6JCwHBKOEWVMCicNUBlT6KQ+hZtF9A3nqcqmGLQcnAeQMAD/6xBIQFPCKKq1nMF+rOkRnEUA3uYE0VkwJbz6FnnTQ/Kup4QDUYJ10RzJ0+miwZkgOE3uAk/pRrbSgxK1iDqtmBbduHbd+Nd6SW/1WN06yT0aie+Uk/uUuEOq6SPM7FHNrDGNjDF6+hghYwKbOYnLnJTLnJTInJLInBIR1jNCBn6Y+18Y+POVP33DHwBAeUCMP4HmT6D4EyjWIOZWMXXzFbKKuTwaAw+PIuEM8L8OAVIKSTSS1duFM/XBW/gTbAIJTmcIbhdJK2+QN9ynbH9C3PsCf0QwHXYyTexsBjjLkwvmKF1JV75ToPqkWjOqUTe2VS+2XT/xjWFKt2FKj05Ct1p8j3JKnxpvUCNzRCtzVDtjVDV9lJ4xRkkfJ6dPKGZMyGdMSmVMIjOmJDKmRP/A4Pvd/Y87/Y+XP47CdDH9RyEkmC9D8Cek+BPojEl0Yq/8zWLK6pNkmp4cvIIaAZdA/5UQYJmy2ptxJj54c1+CNbQwDu9yDr/8KnHtXfKWx0SvCPyhWAXfJExQKvI0X+QMT+oUi3YuVflapuqDEmZ4rW50s35Mq0Fcu1FSpwmr2zihSzv2rVpCj1ryO3VOvwZ3kMkbUksbVkkfUeKP0vmjFP4oMX0cmjhLH5dOH0ekjy/LmBSBBBla5FtmEG6mmRbspxGmCOH59y9BErxL0AmI8yck+eOS/HEJ/rgUZ1jhbhltfTCFoi2LhOcHkP9fYvCP6wEEkleS1liraHyYYOqLtwgg2J4gOAUT3C8RVt8ibnpI3PmUcOAl1idBIYAjdZIvejoNcSqFeCZF5WKayq189dAK3ch6g6hmw5hW48QO05RO04RO/ejXzJi36vFdmknvNFJ6mZwB9dRBdd6QatqwctoII22Ewhsl8EYVeWOyvDFk2hiSPy6RPi6RPiGWPi6eMS6WMQkyJkHmD/3heKEEtAisnz4hxp9Yxh9fJrA+Km0MlTYmyx+XT+7DXcujuBwk4FVl4EEhBAzA/3sIZAiSKq7yRofwJkdwZv7QlLDDaYLrecIKaGEcadtj4t5I/KFYrF+ybGAqEnrUcwomKF45mK12JUPtQZHWsyrD53VGL5uN41rNkjosEjtMo9v1otq1Yt7oxL/VSuzRSunVZPUy2f3qqQPq3EFV7iCDO0RNHSaljuC4w/LcEWneqGzaqFTaKIo/iuaPIfhjIuljIunjIhASE2IZE2KZ48sgMMahzZbpE6Lp42LpkOnF+WMS/DGJtDGEwPoI3hiaN4rhjsjzRuVYg4p3SilrT5AwZCnxpb7FIP4p+mdmALQCmmqLMTiANz6MM/UlWEGDoUTnc3jPK0RoRuwR0SsC5x39fYswTzSIJXU8ln4qUe0CT+N2rmZomV54teGLeuPoZrP4NovEdrPYNqMXbTpR7VqxrzXj32ol9WinQBgwWb0a7D7BjMEAgzNA4wxSUwdJqUPY1GEcbxjDG5FKG5FOG5Xij0ryRyQFMKD4o8j0UVTGKBp6OYrijyEFpkdAGkWmjaG/aVQybVSKNyrHG5XnDitwh7HcUSxrgHAzl2KyHCut8O0BSrAQMAD/MQQoqA8mGMrpeOENvfEmPtDjUmxPkpzOQhMCq2+QN94nC1eGHknA+qfIBHGXBbHFj8UQjseoBrM0rmZo3ivQelJu+LzGJLLB7GWLeVyreUyLSWSzXmSLzss27Zh27fg3OolvdZK7tZN6oKIo+Z0aq1eZ1ctg9TFYfRROP5kzQEodwHEHsdwhed4QhjcsxxuWSxuR449K80cl04VIQCdCCV9K8b9f549Kpo3IpY3Ipw0r8CD3K0IADBF4QwRWH/F4JNXYXRHaSgYvGkXCAPxnIZBAILBMGc3NWIODBGMfaErYJojscJrkcg56XtB6wbqgPc+Jh+NxfsnyxzmSxznifrHyfi+UTiWoXeJp3sjSfFik96zCKLzaNKLONKrBNKrRJKJBP6JR70WLTlSbTvQr7dgOnYROnYS3OgldWoldmsnd6sk9KknvlFnv6Kx3NFYvhdNH4vQTOP3EVAgGfOoAnjuE5Q3JpQ3L8EfkeUPyacOYtGHptGFZgcvlecPyaZAwwnPekCJvSBF6y6Bi6iAeSizQzyFxhwgvX1H9wyiqRjLwoBACBuA/DYE4AoFRktZYpWhwAGfsQ7T0J1sHke1OkpzPEj2vktbcpWwOIe98Rj4Yi/NNUgzgyAamivslII88pwS+VDvHYl7ha97K0XpYrP+k3ORZlVl4jUl4jeGTaoNntfrPG3SfN+lCqaBVJ7ZdN65DL+61TvxrrcROZtJb9eRu1ZRuJVY3ndVDT3lHZfWSWL0kdi+Z3Uvk9BE5/QRuP447gOUO4LgDOB50VOQOYnmDwitYKGMM4r5pAM8VYjOAT+0npPYTU/tJnD4Ku4/C7qXGtNF2XyAytAUL5uBCCAn3AP8xAyBlKVAfbLgfZ3qYYOFPtA4i254gO54he16lrL5D2fSIuvMpef9Lsk8iIYCtEJgq5ZeEOByJ83uueipB4yJX62qG9u0cvQeFRmGlJqHlRiEV+iGV+mFVeuG1+s/r9SMb9SKbdKNadaPb9GLbdWPbteM6NONfM5M61ZI6VZPeqqR0KaV0M1IgDGjsd2T2OyLnHYXzjpLaR0ztI3L78dx+PA86Erj9BOEJdIS8Dl0XKhUSIbWPkNpL5PYRuH0UTh+V3Utlv6OweughxTSvYAKNKYOShjfQIOEm+F9DgEBK4tAUG4z+XrzxIZy5H8EykGgVSLY7RXa9RFl5k7bxIWX7E8qeF2TvOJI/CxfIkfNPWXbohfShJ4zAlxrnUjQvcTWvCxi4l29wr1D/bpHuvRKdh+U6YVX6z2oMIur0Iup0Ihq0XjTqRrfoRrdqR7dpxrzSiO9Qje9QT3itmvRGOalTKalTOfktI6WbxuqhsCHROD0UTg859R2J+00E7juc4ITI7SVyeol/+hIptZfIeUeC1ENOhd5FTn1HZb+jsnpo7B4a6x39aQVtSwBekSy1TAKaAIRTAQIeBfoBAFoOTTDC6HrhjQ4RzP2IloFky0CS3Smyy0WK503a2gf0LWE0r0jqwViybwoxgKN4jI089HLZvhD80XDVkwnq59jMK2maNzN1bucY3MnVv52rdztf+26RzsMyvaeVBhHVBs+r9cNrNCNqdZ7X675o1H7Zohndyoxt04hrU49/pZbYoZLQoZTUoZz0Wjn5jUrKW3rKWxqri8buonG6KZxuSmo3lQOJktpN5HSTUrsJnG6S4CX01W96RxYAA8HD6oaOgpdUdg9UYkFV1lvGw1z6Gm88Bgc9eRcGAAED8CMESEmkooa05ja84SGCqR/RPIBoAbXCJKfzVPdr9NV3aRtCaDsiaPuiyUcSSf4s4jGWtE8s8HqM3hdC849SP5WoeZ6tdZWvfTNL/1aWwe0cvZs52jfztO8WaT8q0Qkr139arve0QudZpfazaq2IWq3IBq2oRq3oJs2YZvW4VtX4NuWENqXEV8pJ7UpJ7YyUDiVWByPlDYP1hs7upLI7KamdNE4nLfUtORU6J3M6CamdpNS3ZI5Q0BUKu4vGeksXHMmsTjLrLRV6+ZbOgliisjpp7Lc0dicjtIDushUrpygJb6hHwAD8OQSydGmN9TgDIQDHCGZQJ0ByOgcBsOoObf0j+vZw2p4oyqF4sl8K0Z8l7xMv4RUmtus+9tBTlYBojdNJmhdTta7zdW9l6t3O1ruRrXMjW/NWnta9Ap0HRTohJTqhZdpPyrWeVmiGV2mF12hG1jFfNjCjGzRimlTjmlXiW5QTWpUS2xhJrxjJrxjJ7YyUdgarg87uoHFeU9mvqZw31NTv4rwhCUTmvKEIBJ2w39DYbyBaWJ1U9hsqS6DvJzT2G5rwe5JfMS68pJi7yUvKwkkA+b/LwD9zIky4M0aGIKm6UtHIm2DmSzTzJ5n6Ei0DiA7BVLcr9JV3GOseMbY9Y+yKpB2IIx9JJvml4I8mSu0LB9vvIPbcIx99rhoUp3EuSfOygIGbWbo3MnWuZTBvZDPv5Gjfy9N+UKgdUqIVWsp8UsZ8Uq7xrFI9opr5olbjZZ1adL1KTKNqfLNyQotSYgs9qZWW3EpNbqOmtFHZrwRqp3PaKexXFE4HWSAqp53EaSdyOkiClyThCbuDIhCN3UFld1BY7WSBKCzoInSFDf0QKruDHt+odDKUomUih5aCH6yChAH43gcroJVd5A0PEkwOk0x8iNBnCPiT7c6QXS7Tlt9mrHnA2BTG2PGcvj+WeiiBciSZ6JuM8Y4S335PZOs1zIFHdP8o1RNxasHJzIsc7Wt8net8nSs85tV05s1MzTvZWnfztB8UaD0q0gwpZj4uZT4tV4+oUIusUn1RrfayVjWmXiW+gZ7YSE9qpiY3U1nNJFYLmd1C5rRQOK1kTis5tZWQ2ob/LpJAxO/Hb1c4r4icNjL7FZXTRua0kVltJFYbKQUShdVG4rQRWW0UdisNUhv9ZRn9yFUS00gWagbgfgD502cAaEGELIpqg9HfTzA4QDA8QDA6TDD3I9ucpDhdpHncpK+6x1gfwtjyhLb7Be1ADM0nkeyXTPCJk/V6LLrhMmLnLYLPE0bAS9VTcRrnkrUup+pc5WlfSdW8wtW4zte8nal5J0vrXq7WgzzNh4XMx0XMJyXq4WVqkRVqUZWqUdVKMTVK8XX0hHpaYhM1uZnCaiKxmkjsJjKnhchpwaa2YLmtWG6bQK14XiuO24rnthIEwnKhl4LzNiK3jShABRK7jchuI7DaCGyIJQoHYoDAaaGwm6nsZmpKAz2ykLbjGB5PlVry9Iv4++gfWwIJ+mAU0UhWxwuntxentw8vaAZIVoEU+2C6+03GyjtKa+4x1j2kbQmleUVQvOMpvslk3ySFA88lNlwHGy9Ke90m+zxlBEQpn4xVO5fEvMTWvMjSuMhSv5qqcSNN7Xa66r0s9Qc5Go/y1EPy1Z8UqjwrVn5eqvyiXOllpVJMNSO+hpRYS0mqJ6U0kFgNRFYjjt2I4zQpcJvkeM2yvGYZXrMsv1kurUWe3yLPa1HgtSiktWDSWjC8VnleK4bXiklrxfJaFLmtuNSWb+K04NktOHYznt1M4jQTOc341GY8p5nAbiKyG8msBkoYn7x8u4IiSRL6eFY4DyB/bgAQSGiDvOZmrO4enO4+nIE3wdSXZBFAtjlFcblK97yptOoOY809xoYHtG2h1P0x1CNJFN8UwqFoyU13wapzousvyO+9R4HyQJTyqTjVc4nqwQnq5xJVL7FUrqYq3+Qx7qQr389UeZSlEpKtEprLeJJPDy+iR5bSosqUYyqV4qvICdWkpBpcSi2WXYdl18tzGjCcBgVuo0xao2RaAzqtEZnWiOQ3Sac3S6U3SaYLTtKaJfnfJJ3eLMNvkuE1K3KbMNwmTGqTArdRIbURw25UYEM4EVIbFXmN8rxGeeh6gwKnXpFVg7sVS3BYhZGUgTbHLXn8EX95/XMBQCElxJFyVEmV5Qq6giRgeABncpRkcYxsFUR2OEd3uUxffoO25h5j/UPG5hC613OadwLNL4XiE6+wI0R01QWw4hRiy0X8vjvUI2G0gBf0E9FKJ6OVTsfQzycoXUlWus5h3OYq3U1jPOQrPcpgPM6iheVQn+ZRIwppUSX02HJ6XAU1oYqYVIVLqVbk1Mqn1smm1slyG5C8+mVp9ai0ehS/XpzfIJ7eiExvRGU0iWY2LctsRGQ0IjKbJITKaJRMb5ROb5DhN6D4EDAyvEY0rxHJbZDlNiikNuBSGyAA0hox0Jca5Lj1GE6tbEqFzMUwRQsHOSlZeCs98icGQDAQJI2XpNljtHfh9Pbg9PdhjQ6TzP0pVscpdqcojueo7lepq27T1z2gb3xI3RpG2fuS6pNE8YnHej1BrLsG3E+AVadktl8m7rtN8gkhH3tGCYignnhBDo6mXoynXk2m3mTRb7Np97iUhzxKSDrlcSYpLIcQkYePKiTFlFASyvAJFYTkCmxKtSynRppbg+TViqfVifLrAL9OjF8nmlELMmpBej3IqBfLagCQ6gUSnjeCrIZlmfUSGfXiGfUiGfUi/HrAh44iafViafVoXoMMr16KVy+dVi+VVo9Iq0fw6lHcGhS7EhWXJ+l7HqOsIQUlAbgQQv6sAEDzwRg00URObzdefx9efy8OGhL1I1keh1phh2Ca62Xa8pv0Nffp6+7TNz+i7nhG3feScjCasDscveWe6Ipg4B4otv4MZscV4t4b+MP38b6PCQFPSSeek85GUS/Ekq4mkG4nk++kkO9xiI/ScCF8fFgGLjwLF5mLiy7AxhXLJ5YpJJfLsipQqVUSvGpRvsDxGbUgsxZk1kDKrgFZtSC7DuTU/6Hchj+UI0RCoMy6b0qvB+n1Iun1gF8nmlYvmlaHEBIFHasluJUIVql4BFdy0x4ZBTy8jx75EwMAbZBHKTJldHcRDQ6S9PcSDA7iTXyJ5sfIVieodmdozhfpntcYK+8woInhB7StodRdEeS9L4h7n2N2hCDWXQduJ4HncYlNZxW9LhH238Aduos9+gh/PIxwKpx4Lgp/ORZ7I4FwJxl7jyX/MFXuMVc+jCcfkS7/Iks2OlcmtkAqsVgyuXQZu0yEVwH4VSCjGjJ9VjXI/lfl1IK8uj9UIFC+QMIrubXflFMHKbtOgEQdpIw6kFErAhFVCzJqQEa1SFqlSGq5CLtE5OYzSVs3GSn4mULInxgABAopQ5HS2IjXP0TU20/Q34sz9CGYHiNYBpJsBFWQ62W6503Gylu0NXdoGx/StoVRvSLIe17gdj2T2nIfLD8HnPzAigDktmCF3Zex+68rHr6j4P8QeyJM8Uy4/PkohSsx8jfi5W4nyt5Pln3EkgnjSD7lSj3nI6KyELF5hosxvAAAIABJREFUqMQC0ZQiwC4FvHLArwAZVSCrCmRXgRyBcqtATjXIrQZ51SC/RuD7WkiFdQLVfn9ZAx3zf+g7GLkC5dQKckgtyKmBWMqqBhmVIK0cpJWC5FyR09eQ2gaCj5+BCyHkTwmABAIpiUUreyjoexP0DxB090CfKGzsS7A4TrI5SXU4S3W+SPW4Sl9xnbbqNnX9ffqWUNrOcOqeSKLXc8z2UMT66yKuQcD5KFgTiNp1XnHvZQXv65ijd+WPh2BOhckEh8tcfCF9PVr2VpzMvUTZR8lSYaxlT9hiz7hikRliMTmiiXkiKQWAUwx4ZSC9HGRWQL7PqxSoCuQLVQkKqkBRNSiq+abiWkjQSQ0oroaORTUQBpBqBRKc/0BCCENeLcitgaDKrgCZ5SC9BPAKwUsW8DqIJNMkUfC2AeRPCQA0HSaDoljI6e7H6+7D6ezGGuzHGfvgLQLI1ieo9mepTucprhep7pepy69R1t6hbQ6h73hK3R1J3v1ccddT2a33xVadBw5HgYO3yIbjkruCZfddkjt0XdbvrtTxh9InQ6XOPpW6/Fzq+kvknVjEgwSxx0kgNAU8ZYHnXPAyA8TngJQ8wCkAacUgoxRklYPcCpBfAQoqBL6vhE4KKkBRJSiuACWVoKQKUlkVKBWovBo6llVDV6BjNSir+aYSIR5CZmoFqoEoKqyCfn5uOcguARmFgJ8HQiPBpm0SWLgZQP6sACDQSBxTRnMLVtcLkrAVNvcjWwVRbc9QHM5RnS7QXC5Q3S9TVt2ibnxI3/aE7vWcujuSsCdccXsINBzkFASsDgKXQyKbApF7zskcuCR1+Lqk322ZwIfoU6HI88+QlyMkbkYtux8LHieCsCTwJBlEsMHLNJCQCZJzACcX8ApARhHIKgF5ZSC/HBSUC6xfDgrKQGEZKC4HJQKVVoCyClBeCSoqBKoEFVWg8oeqQZVAFdWgogaU1/wLFaUCWkqqoJ9WWAbySkBOAcjMBZx0cPeRiLUdEoWGR0WRPyUAEkgZoiTDVV5ri6LOTqzuHqz+foLRYZJZAMX6FNU2mOpwju50lupynrL8Gm3dXfrWUPquCPqeKOq+F4RdT2Q33RNZfgHY+wPL/cDZG2wNEt8bjDpwEXn42rJjt8WC7i07/UjsXKjYlXDRO1HgcRx4kgCeJoJnieAFG8SlgeQMwM4CvFyQngeyCiFf5peCwlJQVAKKhMcSUFIKSktBeRmoKIVUWQaqy0BNOaiuADUV0LG6UqAqUCvQtytVoKoSVFaAysrvhFSC8gpQVgb9tJJiUFgAcvJAdjbgpYHTwaJMbRQafqgW8ucDQEICekoKyVJWfaOC9nZFwcoIguEBoskRaFmE3RmoELI/TXE6S/a4TF11i7YxhLEjgr47ir43iuQVrrAtBA0NB50BNj7Aah/w9AHbTyzbd0784EXRo1dBwE2RE3fB6QfgQii4EQ4eRYOncSA8HlJEIohOBYlpgJUBUrMAPwe6H+cWgPwiUPhdxQKVFEF+LS8GlcWgqhhUF4OaUlBbBurKQUM5qC8HdWUCVYC6SlBfAeoFX6orB7XlECc1ZQIkKkBVOQRPVSmoLAXlRaCkEBTkgdxMkJUOXjwHXl6iJDIC7oYRPxsA0Mdoy6AUtKVV12G0tivq7MTp7SEY7IeWx5n6kqyDyDanoK2SDmcorucpy69S1z9kbA9X2h2ltDeaujsSv+uJ/JZ7y1ZfAc5BwNIbWOwByw+DnSfE9p9dduiCiO8VEHgDnLwNgh+Ay6HgTgQIjQbhseBZDHgSC6KSQSIXsNJAajrgZ4CMLJCdA3JzQX4eKMwHhXmgKA8U54GSPFCaD8oKQEU+qCoENcWgtgTUlYKGMtBYBprKoaNQTQL9+aSxDPo2ISG1pRA5NSXQT6guAhUFoCwPFGeD/AzAZ4Gnj4CrsxgGgxSHhoeX+o+C/KvoJwAA+uwwlAxFiuGBYW5V0N4OdQIG+7EG+/BGB4imRyEGbE+S7E6SnM6Q3S9Cz4zY+oyxK0p5TzR99wvirnDFHY9RG/4v9t7Dq80rz/9/g21Qoaj3ghBCIIFEk4TovRcB6nQwHdvY2AbTTDEYML25lyROHMeOK7bBuOBeYjt1JpPJzH6/3z2/9mf8ziMns7O7szuT2dnNTAznfZ7zgJEMl8/rftq9zx1zy+5D0g4YamCsQkEzKtrd67rcmnqxfQC7DqBjFN0TGJjB2BJmjmH2GGaP48gZvHcO5y7gwiVcuoQrl3D1Cq5fJWbl1eu4fR1r1wkDvbOMu8u4fxMPbuLRTTxZxbM1vFjDyzv47C5e3SP0+h5e3/13ukPo1V3i217exfO7eHYHz27/oCcrxLut38Dda1i5iCtn0dcBTciWjWOXPN81AFzPTKeIYn0DzYxgByuknKmtYWpruGE1vMh6XkybMG63MH63wHWekjB3SGyek5Yek1WelFUcFZYfYVcsMR0zpKJhZO1DQit01YitQkETKvegvgstvdi+H+1D6BxBzzgGJzEyh4klzBzGwgkcfw8ffYwLFwldvIBLF3DlU1y/jBuXsXqF0O0ruHMVd6/i/jWsX8f6Mh7ewLObeLmK12t4fdt1XcMblz7/UV+s4cs1fHn7B33u+tdXa/hsFS9WXLqF5zfx9AaeXMeja7h3Cbc/wbkjqLK7MZmeG07A850CwJNEInuR2SpveT49yM5QOZnEAulqtraKE1HLM2wTxe4SxbUL49v5KR2izD6xaUxqX5JVnPQvOyIpXxJUHuZULPhaJzYXDiGzk2DAUIO4KuQ3onwXGjvR0o0dfdgz4GJgDAMTGJ3F5AJmD2PpOE6fwYcf4sOP8NGHuHAOl8/j2idYvoCVT7F6CWuXcOcS7l/G+hU8uEpo/RoeL+PFDbxewRe38cUqoT/Y+pe38dVtfH0bX68S+pVL3/z4lc9v4bMbeHkDL5dduo4X1/DsCp5cxoOLWPkA80OIj97ks7F5kvSOAeBJInnzKOJk30CLKxCqYGsq2aFlbG0lJ6qJT7QFdgli23iJu4WpXaKsAXHRlNR5xN+5IHXO8yuWOJWH2aVzFOu4W8EAMjoQ1wxdFQzlyK5D5U40dqC1C2092N2HzkH0jGDoEMamMTWHuUUsHcWx4zhxEqdP46P38emHuHoO1z/GzY9x6xPcvoC1C7h3EeuX8MClh5fx6AqeXsWrZXy58oOhf+MSYeur+GoFv1rBty795hZ+s/KDvl3FN7fwxXW8uoZXV/Hqyg/67DJeXsLzi3j0Ma4fR2cTAuVbNtbJeb5bAHiSyN5kjsZHUcAIsjJVDpbayVI7iMJoeB1Xv50fs5Mfs4Mbv5Of1CHM6BHnDYtLJqWWabF9Vli6KCg/zKtYojtmPUvGkNePtN0/MlBBMFDRhuZObNuHnV3Y04d9/egbxvA4Dk1hZg4LCzh8GMeOEKWY907gk/dw5QNcO4vlD3HzI9w+h1XX9d55rH+CB5/g4UU8voSnl/D8Ml5fw9c3XIbusvXvbhHXr67ji6v49TK+v4nf/ZG+d33DN8v4/Ao+v4w3l1z6FJ9fwutLeHURLz/Bww9wdhzOPDcu23Njw8C7BIBrXZA3jyJNoiuL2UEWVpCNqbKziJSgkhPZSBylYWjmGrdxEnYJUjpFGb3C3CGRaVRkmRLZ54RlS9zyI6yyRR/79Kbig8jpJYpCMY2IrIa+Apm1qG5D815s70DbPuzuxr796B/CwVFMTGBmGgvzOLKAows4togPjuHSaVw9g+vv4eb7uPU+cXP9DO6cxf2PsP4RHpzH4wt4egHPL+DFRcJ8v7mG39zEb28Q+v4mvr6KF+fx5iK+u47/tUzon5Z/vLmB31zHV5fwxQV8cdGlCz/qPD4/j5cfYfUo5vbBGO5O9fL8+f8oP7feJQBIJJI3iR3qLcuhB1mYQWZGsJXojqlLWWHVrIg6bmQ9x9DMiWvjJ+3hpnXxs/YL8oeFJYdE1mmBc55fvsStWGKWzVNtE+6mA8juQfIulx+ohr4SufWo3I7mdmzbg7YO7OlCdx8G3zJwCDNTWJzFkTkcnsXxeXx8DJdP4OopXD+N5dO4eBwXjmHlDO5+gHtn8fAcnnyMp+fx/Dxh6K8+wZsL+Poyvr2G75fxu2X86jJensPTDwmD/v4y/s91l67hn6/hn5fxu2v45iK+PI+vP/lR5/9Fn3+EB8dxeQJtTgTLN20m0qOf/+/yM+rdAsCDTPLikAXR3oEl9CAzPdjCCLbR1Q6GtoyprWKF17L1DVxjKy9+JzdlLy+jh587yDcdFJRMCG0zwrIFIhmoWGKUzZKtE26mA8jqRuoeggF9LdEfyKpFRSta2rFjD3Z1YO8+9PZhaBCjw5gaw/wkDk9jaQqLkzg1h/NLuHQM147j6nGcW8KHC7h6DGuncfc9rL+Px2cJ+37xETFhv/4Yr8/hzXl8dQG/voxvL+GrT/DqIzz7AM/fw+cf4vuL+L+u4v9+q+v4X1cIK3/9AX79Mb79mLj++pzr6rr55kN8dhJ3F3CmD/Z0dx8fzw0ASO+USBQS3Z8qy/FVmmlKi8sJ2OkhDqamjBVWxYrcytY3cmK28RJ28VM7+Jl9/LwhYdGoyDwhsM8KnAuciiVW+SKjdJZsO+RuGkJOD5EPJG6Dfit0lUithaMZzTvRthu79qBzH/b3YKgfYwcwfRAL41g8hLkxLI7j5BTOLeDiEj5ewHuzOD1D3Nw8hjsncf8UHp7C4zN4+j5efIBXH+L1R3jzEWHWX5zDl+fwxYeE3b85i8/ew2dn8PlZ/PZj/PNF/L+X8P9dxf/+FA+P4dYsXp/Gd+fw3Uf4zVt9iN+cJfT1aTxewo0JjDcjLHDTO94Ue7c8wNueAJlOFhi8AwoYyhJmkJnpYoAZWsrSVrDCa1hRRCDEi9nBTdzNS9vHy9rPyz8gKBoTWacE9jlu6QKnfIlevuDjnPGwjKNwiIiF0vYgvgX6OkRVIaUGtiY0bsfONuzeg65O7O/GUC9G+zF1ALMjmHFpfhQnJnBmGqemcHKS4OH9GVxdwOph3DmG+8fw4ASenMLzM3j5Pl6dJcz9zft48wG+dOkr1/WL9/H5GcLQvziDb8/if3+M/+dT/P48Vmfx/hBuTeOL0/j+rEvv47fv4bv3iOtvzuCzw1ibwMV+VGZCxCG6Au+s3jkA3orKpQr0tIBCFwMWZpCVGWxnhjiZmgpmRC07qp5taGHFtXGS93DTu3jZ+/n5B/jF43zLFM8xyy1fYJUv0soWfBwzHpZDMA275exHWgcSd8DQgIhqIhzK3YqaZrTtwO527NuD3g4M7MPBHoz3Ezo0gMkhzAxj4SCOjOH4OE4ewqkJfDSFqzO4NY+1Rdw7jIfH8fQUXpzGq9M/GPrLk3hzGt+8j2/eI/Qr1/WbU/jiBN4cxxcniU9fn8DKDM4O4b39uHaQsPXvTuN3p/H7My6dxu9O4cvDWD+EtRGcaIMlwc3H+93Nht9RADwoJJqM6pdOCyxmKM1MpZWhsjLVNsIPhFWyI2pZ+gZ2TCs3YRc3dS8vs5uf2883jfDM43z7FL90jlu+yCpfpJfOeztmKJbxzQQDfQQDCW2IbkBEDfSulKC6CW3bsXcnutrRtxeDnRjpwsEujPVgog9TA5gdwuERHB/FqXFCZ8ZxfgLXp7EyhzsLuH8Yj47h+TF8dhyfnyIs+9FhPDmCr07j1+/hV2fw7Vudwq9O4qsTeHMMr47i2RLuzWJ5HOcG8EEvlg/i5QK+PY7vT+L3J/FPLn21iAdjuD2Mm/0YLINctHmL5zu6WPodBYAofvhQ2CpvWSZN+WNCrLIx1Q5maDmRDEQRyQA7djsnsZ2T1sHL7OXnDfJNI3zzOM82xSud45TNM8oWGWXzNOeMr3XCq2jEI7ffPX0fkncitgVRWxFeieQa2OrR3Izd29G5Ez270b8bg7sx3IGD+3CoG9N9WBjE0WGcHCWs//QY3h/FhXFcn8StKazNYn0ejxfwfBGvDuP1UeLT29PEp9+cxHdn8N0pfHcC350k9O0JfHUUXxzBmyU8n8f6FG6O4sIAzvXh2gE8ncLn8/hyHr9awK8X8GoK6yO4M4S7gzi/ByVxbjRf4oiBd1DvLgCeJDKFSeZqvQPyfZUltCAzLdjKCLExQ50MbTkrvJodVceMbmLF7eAktnPTOnlZBAO8whFOyTjPPsVxzrJLF9hli+zyeXbpLMM64Vs0Qsrtd8voJMqjsa2IrENYFYwVKKpBYwN2t6JzB3p2om8XBnZjaA+Bwfg+zPRisR/Hh3HqIE4fxKkRfDCMiyO4PoZbh3BnEuvTeDSD53PERH5/GjfGsTqBFwv4zUliUv/tMXx/nLh+dxS/PopvjuKrI3iziGezuD+BmyO4OIDzvbg5hMejeD5G6NkYHh7EvSHcG8CdfqzuR58NWn93D9K76ATeZQCIqiiVSeFH+QTk/+AH1FZ6qJ2hcTLCKliRNUxdPTO6hRO3g5PUzk3fx8/s5eUOcAtHeCXjPNskr3SWV77Ar1wSVi4KS+e4tklG8UFqXv/mzC4ktxMMRNVDU43ISmRUonIr2prQ2Yp929Hbhv07MdSOkT0Y68BsF4704fgATg7h1BBODuC9fnwyhOsHcesg7ozh/jgeTeLptMumR3F1hLg+m8GvDuO3R/H9EXx/GL9dwndL+M0SfrWIrxfwepaY9dcPYXUYV/twuQ839+PhEB4fwIMh3B8krP/eftzpxVoPPtqGuhQ3hq/HO1gSfacBIKqiZJIXnyow+AQWupyAmaG2MUKJzgAjvJIZRSQDLGMzN24HL3kPP20fL6OXlzfALRzmmcf49klu6ZygcklSeVhasSgpm+PbJ9nFIz55A5szupC0GzHbEFkPbTXCKpBYAUsNtjWgoxndrejZhv4dGNqJg7swsQdzXTjSg+N9ONmPE/043kvU6T8dxPIgVoaJbPX+KB4dwt1x3BjB1SFcHsTyEBHHfzWH75fw+0X8fgHfL+C3C/h2Dr+aw5cz+GwKzybw4CBWD+Daflzuwq0e3O/HwwGs78e9XkJ3u7DWidW9mC6FTu7uRX3n1ke86wC8LYx6cSiCaF9FAS3ITA+y0FU2eoiDrnExoKtl6us5xmZufBsvaTcvtZOX1cPL6+eaDvDMo3z7pLBsXlp52L/qiKLysKxsXmif5JSM+uYNemZ2uyfvdovZhqgGaGsQWoHwMmRXoqYWuxvR3YTeFvS3YnAbRtow2Y65vVjqxNEunOjFsW4c6cJ7PbjUixv9uDmA1UHcHSam8+VhXBvCtQF82odPe7DSjxfj+G4Gv5/FP83hd3PE/bcz+GYKXxzCZ2N4ehDrw1gbwHIXrnTgeifudGO9G+tduL8P9zpwZy/u7MGlVjSnQMDc8q6tlN4AwMUAsUyIKjT4KAppgQQDNJXNV+2kacpp4VX0qFqWoZ4d08yJJ2IhdloHJ7OHk7ufW3iAax7lO6al5Yvy6iOK6iOKiiVZ6RzBQPGob/4gKbN7U1K7i4FGggFVJUJLEVcKZzXa6tDdiN5G9DVhqAWj2zGxE3PtWNiDIx042onDnTjcgfc6cakH13txsw+r/VgewNUDBADXB3B1Pz7txvm9uLQPDwfx5Ri+n8I/TeP30/jtFL49hG/G8PkIXg7j6RAeDBDRzo1OXN2D5d2E0a934EEH7u3G3d1Yayc070S80o38jkVBGwD8UT7AoQiifAPyiCZxkNVXZaeFljI0FfTwqrexEMfYzI7fzkncxUndy83s5hIMDPEtYyLHtF/lkrLqiLLycEDFoqx0TmSf5JeMMfIHqen7PBJdfkDfgPBaqCsQXIqIUmRXoKEWnfXobcD+Rgw04WArpnZgtg2LO3G4HUfasdRO3JzZi086cG0frnXhQjcu9hHWf2MAN/bjeg8udeLCbkLL+/CoD18cwG/G8NtxfD+Ob0fx9QjeDOHlAJ70Yb0Ha/twcy+u7cL1nVjdiXvtuN+Ou+1Ya8OdNlxsQGsyOO9YOWgDgD8aDmKlEIUf9WNdyEpXO+ghpXRtBSOimqnbyjI0sGJauPHbOUlEf4Cb2cXL7eMVHRBaxmWls8rKxeDqw6rqw8rKRXnZnNQ+KSgZZeUO+KZ1kZJcDOgaEF5NMKB0IsSOpDJUVGFPLXrqsL8eQ40Ya8ZkK+a2Y2EHlnYQ1/kdOLwLJ9vxYTvO7cH7e3G2E1d6iIz25n7c6MFyJ67txaV2XNiFT3fiejtud+BJD74+gN8exK9H8OUgXvfjeS8ed+N+J9Y6cHM3ru3Ete24tYOw+zttWNuOtVbcbsGcBbFyd18vz3fnvL0NAP7dk+QYZG6ot3+mb7CFprLS1HZ6iJOuKaeHVzOjaliGepaxmUX4gZ2clN3sjE5ubq+gcFBsGZc7poPK59UVi6rKJWXloqJsTuacEplH2fkDvpndLga2E/lAeA3U5VA44G9DmAMFZWiuwv4aDG7F0FYcrMdkE2abMNeE6UZMNmK2BQutOLwDR3fi+E6c2oVze3GlCys9WOnGyj6s7MXNdsKmL27HRy043YhTdbi0Ha/78NshfNOPN734rAfP9uHRXtzfi9U9uLETV1pxtRnXm3GzGWvNuNOE+824VI3dyRCxtmzyJL8jmcAGAH8qFqKTOWov/3QfZYlPsJWmstNDHXRtOSOMqAsRtdGYJlZ8KyuxjZXSzknv4Gb18AuHJOYxuX0qqGxOVTEfXLEYXLmgKJ/zc0wJzAcJBjL2kZJ2b4ppddPVEXWhPzAQYkW6E/Xl6KzCYBUO1ODgVkzWYboeh7ZipAYTWzHbgPkWLG7Dke041oZTO3FuNzH3r3ZjtQsre7CyEzd3EoHN5R34qBEnanGkhshrP+vCr/bjq1683ocXe/FkDx7swZ12rO7AjRZcb8TVelyrx40GrNbjTj1u1eCkGZlB7j7Ud2VxxAYAf3pcKL5khsLLL9Un2OyrstHUNrrGydSUMcKqmBG1LF0dI7qRGdvCStjBSmlnp+/lZPUI8gelJaMB9kll6YyqfF5dtRhUvRBYMetvnxKbx3j5A4ysbu/k3R4xrZsi69zfMqB0QmaFwgKjDVYHdpWhrxzDlRirxkQNRqsxWIHhKkzWYLYO841YasaRFhxtwcltOL/LxcA+3N6D1TbCpm/txI02XN2GC004XYNjVbjQiGd78KtufNmJV7vxfDce78b9nbjTittNWGnEcj2u1uJyDa7UYrkGKzW4VYmD6QgXuFMo7wQDGwD8h0NDopJoMookwSfQ9AMDoQ56aBldW8mIqGHq6pgGggF2/DZWUhsrbS8nq0uQ1y8pGg6wjCsdU8Hlc0GVC4QfKJv3d85ILeN80wFOVo9P0h5KzHYPXYO7tgYhFQhyQG6FnxnBZqRbUW1HpxNDZRgpx2A59pcSOlCGQ1WYqcH8VszXYakBRxpxqgXnduDmLmJGX2vD7W24vR0rO3BjB6634FIDPqjG8TKcr8WD7fiyndCrXXi+Cw934H4L7jRgtQE3a3G9GpercKmS0JVK3KjARSvaouHP8ngXSqIbAPxno+NB8fTmUfg6b0UeTW1lqO00tYMeWsoMK2dGVjOittL1DQxjEyO2mZG4g5nczk7rFGb1SgqH5ObRQPtkUNlccPl8UOWisnIxoHTOzz4pKhrmZfcxU/Z6x7d5Gpo2hdcS/YHgUshtkFggKYG2BPkWNNnR7UC/E/0O9NnRa8OgE+MVmK7CTBXmarC4FYfrcKyOCHhubMe9HbjbgjstRC672opbLbjVjCt1+LAMJ2x434k7dfh8B77YgVc78LQVD5twvw53t2K1Bjcrcb0SV8txuRyXSgldsePDIjhC3GjvQF9sA4A/N0ZkkhebzAnxkmfQgkp8VDbfUAdNU8oIq2BGVDEia+j6OkZ0PSumiRG3jZG0k526l5fVJc7v9y8eVtoOBZXOEn6gaklZtRhQMedvmxAXjfBy9jPTOr0TdpKimz0itrppqtxUpVDa4WeF1ILAEsSbYTNjpxX7zdhvQa8ZPSUYsGHMiakyzFRgrgILVYSO1OBsPW62EADca8LdZtxx6XYDbtTicgU+tuOMBR85CFt/2Yw3LcT1aQMe1WG9FneqsFKBm2VYLsU1B2H6l2z41IpPLTiUCoN4k+8vPRnYAODPj5GHazMxK5AiTfZRFvu6YiGmxskMK2dEVDIiq+m6WoahnhnTyIxrYRCZ8W5u5j5x7v6A4uFA+4SyYjaoeiGoZklRsxRYNkswUDzCz+1npu3zTdzlFd3iEVW3WVPppi5DkBMKO8GApBjBRcgpQksRukrQX4KeYnQXY8CKUQcmS4mVCzPlmK3AfAWWqvDRVtyqx4N6rDfgfhPuNxJT/ko1litw1YmLNpy14KyViO9f1ONNA17W4elWPKrGvQqslWLViZt2LFtxzYKrZly24LIZ5wqwLQpB7M3Er/9zm+kGAD//SJG9Sb5iqiSJHljMVNsYGjtDSzDADK9kRFbRdbVs/VZWdD09tomZsI2dvIuf0SHO7fMvHg6wHyIYqFkKqjkS9LY8apuUFB8U5PWzM7roSe3eMa2kqPrNYTVuIZUILkOgncgKpGbIi2AwwVqEHSZ0m9BTRFz7inHQikM2TDkw7cRcKebLsFSBsxW4VY31Ojysx3o9EeHcqcJqOW6WYtmJS3Z8bCZ0w4nn1XhdgxdVeFqBh6VYd+CODbetuGXGjWIsF+FaEa4U4VIhTmXCEeTG8/H4BQdCGx7gLx4sT6I0xA2ny/O4QWaWykIPsTM0pSxtGUNbTg+vYkTV0HS1NH2dr7GBEd/MSdrBS+0Q5fTJiocVtonA8rnA6sNKok22EFA6LbOOS4sOCHL7OBmdrKR2WkwrSd/orq1FqIsB5Y8MiIugKkRyAarzsbcAPfnoysP+QgyXYNyCSQumrZi2YcaGBRvOOLFchUe1eFiLB7W4V467pVhzYsWBGzZcMeO8CZ+YCEN/5sRn5XhRhidOPLJpfIJTAAAgAElEQVTivhl3S7BahFuFuFmI5UJcK8C1fFzJw2gsogXuGwD8/KT+PYh4tFYoXZ4nDCgUKArZSjNDRSwdpWuILQS0iApaJLFwiGaoo8c0MuJaWIlt3LS94pw+/5JhhWNCUT4XSCQDC8qy2QD7pJ95VGwaFOT0cNM72Um7fGK3k6Iat4TXuodWQlWOYCcUNvibIS2GtBBhecjNRUMe9uQSDPQWYLgI40WYKMFkCaZKMF2COStOOrBcjodVeFqFh2VYt+OeDWs2rLhm92tFuFSAi3mElT+x4JUdL614UoJHRVg34U4BbudjJQ+3snEjC8vZWM7Bx2loVEHo+4vdN7zhAX7KeHmRWME0eb4goFgsyxfK8jmKIlawlR7ytlNWyogoZ0RVMw1bGcZ6RmwjM76Vk9TGz+iQ5u8PKDkY4JhSVMwHVs0Hls8pHFN+1nFJ8bA4v1+Q3cNN28tIavc2biPrXAwQKUE5VE4obQiwQFriLi5wC8hFdA5MOWjIwa5s9OViOB/jhThUiAkTJk2YKsaMmehkXXXiURmeumb3B2bcK8GdYqyaiAl+uQCX83ApB7fy8NiEz4rx0oSnhXiUj/t5uJuLtRzczsRKGm6l4WYarqVi3oAkgfsvdZHcBgA/ZbyoJFYgLbBQoLSKAopEfrl8SQ5PlssOKGSrrMQugrAyRmQVS1/Diq5jxBAMsIlYqI2f0SnNH5CbRxXOSUX5bEDZbIBz2t867lc8IikcEuf1C7K6OekdzMRd3rHbSYYGj4itm7U1bqFVbqoyN6WDcAXyEjdpASR5kOfB4PIGNdloz8ZgLkZzMZaH8XwcysdUAaYLcNSET81Yt+KpGY+LXBN8Ie7lYy0fK/m4kYfrubiWSUzz69l4losXeXiWg0dZeJCJ9XTcTcPtZKwm4VYCbiTgajzalFDQNv8it8tsAPBTxotCYgX4BhUJQpyiYIswwCSQ5fIlmTxRBleWx1KWMEMddGIbTTXLUMuKrmUS5dFGZnwLO6VdmN3jZxoKsI8rnFOK0hmFY0puPSQzj0qLhqWFg6LcXl5WFyd1LzOJYICib/SM3Lo5rHZTaJWbutxd6YDS4hZQ5OZXCGEhJIUINCG6AHn5qMtFVw5Gs3EoBxM5mMzBVA6mcrGYhwsmPDTh+dsJPo+w9fs5uJuD1RysZGM5g5jdl5OwloynGXiZgefpeJKKhym4n4w7CViLx2ocVmKxGotFLXIFbhTyL7AtsAHATxkvMoku8w428bVlohCHMNgiCCwiGBBn8vjpbFEmS57PUFnp4RUMXQ1LV8PU1bD0Wxkx9cyEFk56hyh3v6xkRO5iINAxJbcd8reMyYpH/EwHJPn94rw+QeY+dupeRsIu39jtXoZmUlT9lvCtmzRVW9Rlm5U294ASBBQjoATyEsjMCLC4BVnc9cXILURTLvqycCgDkxmYysBkJiaysJCLj3MJo3+Zg+dZeJyOR+l4kI676bibitupuJmM6zG4ZsTtODxMwIskvEjE0zg8isW6EXeNuGvAWhRWo3AlAvsCIPL+BZaDNgD4CYPlQfakib2D8vjh1RJtpZjwAzZhYDHfP58vyeLx07iCNI5fDktZzNKUsojaaA1TX8M01DKNDazknfysbmnhoNwyqrBPBjqmAuwTcuu4zDzqVzwiNQ2KC/rFOb38DIIBZkK7b1wb1dhK1jV6RtRu0VR4Btu3BJrdFWa3QLOb0opgG4Id7krH5kD7plCbe4IZtkJsz0V/Jg6lYTod0y4Y5jNxPhPrmXiZjuepeJaCxynEHL+ejHuJrjk+BjcNWNZhRY/1GDyNxfNoPDPgsR4PdLgfibvhWHPpaDDi2e6/vChoA4CfAoAnyZvrrczm62olUbVSbaWIcAU2gdLMlxfw/HK4wgyuMJ0rTuf65XICS1gaJzuyknAF+lpmXDMvbY8of7+s+IDcPqH4EQB/y7if+aBf0QFJ4ZCkcNDlB7rYqR3M5D30hJ3eMduIcCi8xiPESQq0eCrM7oFWBNmhciCkzC2kzD20fJOqbHNw6RaNY1Osxc1UjKY89GRiPBUzyZhOwXwqPkjFWgpeJuFVAp4n4mkinsTjkREPDLgbjTU9ViJwIwy3IrAWifUoPI7A0zA81uKhBuuhuO/S1WBU8928yb+0xvAGAD8NAC8mVZnB1ddJDPXiyBphRJUwrFSotgkDS3gBJq5fHleSzRWlcfmpHEE6xz+PE2Rmap3MqAqWsZ6TvJOX2ys1Dcqsh+SOKTkBwITcNuFvGfMvGfErGpYWDUsKBoQ5fdzMLnZaJyt5Nz2uzTu6hRq5laQpJwdZCQCUFqjsUJcipJxYR6SphKbSTVO5ObjSM7DMQ+0kMCguREsWBlIxlYTZRCwk4cMkIs55GYvX0XhhxLMYPDXgsQ4PInEvHHe0uK3Figa3QnFLgzuhWA/BIxWhh8F4qMR6IG4r0MmHiPJLq4duAPDTAKAyKPIkdnS92NgkNtSL9LXiiCqhtlwQ4hCorHxlMV9eyJXlcaU5XFEGV5jGEaazpZmcgHyO2sqOruNmdEry+/3MY3LbJOEB7JP+BAmTAZYxf/OorOSgX9GwuHBQmNvLJxjoYCe1M+K2++oaKWFVXiEOqtKyJdDiFuwC4Afrr0JYDcJq3LQ1bpoq99DKLcHlW9Slm6LsblnFqM5FRwZGkjEXj1NxRLj/WIfXUXilw4soPI/Ak1DCyh+ocT8E99S4E4QVJVaCsKLAmj/uyHBHjjU5ViS4IcQRLkpobj6/rMOGNwD4KePlSaLSKP5xTGOdKKZFEt0oNtSLdbWiyGqBtkKgcfLVVl6Qma8s5ilMXHkeV5bDFWcQiYEglSNO56jMvOQ2cd5+aclBf+uE3HpIbp8IcE7LnTOEH7AdklnGZCWjUtOwJK9fkN3Nzehkp+xmxu+gG5q8Imp8Qkp9lBZSoHlTkNUVApUTbeMfAKj9UTWbtFWbNZWbVOWbgkvdI23umcWozEVnGkaTcCQWV3R4Fo43YXitxUstnqvxNBCPA/EwCA8UuK/AXRlh+qv+WJHilhA3hbghwXU+rjJw0QfDLITwPH5JPYENAH4aABQaRRbLMtaL41olMc2St37AUCeMrBGEVwo0ZfxQJy/ETpCgLOEqTDx5PkeWy5FmcwUpHHESR1/Fz+mRFI/4WcZllnG5bSKgdCawbFbhnA4g6kITMvO4rGhUmj8oyukRZHbyUvewE9pYxmbfqK2+mjLfIDNVWbIl0Ew0yFTOHxjQuhgIdwEQXusWVuMWVu0WVukeWrEpuNxDWeoRat+UXOJuK8COdIwm4JweD7T4QoUvg/FKiRcBeOaPp/544odHEjwQYF2Au0LcEeE2B6s03GLgBhM3fLAMnKeiUe0mEVNIJCIb+NnNdwOA/3kAyH5GhrFOHLdNGtcijWsWxzSKjY2i6DqBrpYfWS2IqBKEVQg1RGLAU5l5ymJuYBFPXsgTp3G44XR1LjujU1x4QFp80I/wA+MBzhll6Wygc1bhnJHbp/ytBAN+BQfEOX3CrH2C1D28hDa2sYlYdB1WSQuyUhVFWxQlboEWtyA7sVxCVUbssg+tJqSpdnmDamLLpaYamiq30MpNqgqPoAqPoDJPtcMjxuxuKsCODEzHYzkMnynxlQxvJPhMghd+eC7BUz4esQmtc3CPhbs+WKPiNgkrW3BrC2664xZwVAlzCoXFo/4ySqIbHuCnjRfZmywKp+trXQBsk8RtF8e2iGIIDETR9QJDndBQJ9TVCiNrhNpyIZEY2LjBFo6yhCtJY9MDfPz09MRt4vxBP9MBP9OQn3nU3zGjcBIAEAw4CAZk1gmZaUSau1+c1SVM7+Am7WLHNDMMdayIaobaRpWbPPxNmxQl7oFW90AbsaEsuAzBFVBVIKQSoVVEUPQDD1XQVGwOqfBQV3ioCFdACnSQlPYtEZZN6SY0ZWIuFvdV+EKALxl4zcZnXLxg4pkvnnrhsQ8eUrDujvvuuOeOu8CaO1bdsQrcoGMh2S0pjUHjEU+P+NkteAOA/9HxIlFI7EDfyAphbKv0LQPxrdKYH8IhibFRYmwQRzeIjPVifY04okKkLRMQQZGN75fM9hV5cRQ++nJ+Xr8sf0BW0C8tPihzTCuI6d/FgGNG4ZgJsEz5F41K8wbEWd3CjE5Bym5ufCs7uoEVVcNU27zlpi2yQnf/4k0Ky2aFZXOgbZPSQWwkUJYhuJxYRRdSQSj07bV8S2i5Z0i5R0iZp9pJVjkpwQ5yoJ2ksHuoLJvjTe7bMnBCj2c8fOWJL8h4RcZLL7wg4/lmPAEeb8IjNzwE1oF7cGHghtvANTEGKn1iMji+XOrPbsEbAPxPDxlN7KW18aKbxcZWcWyrOK5VHNcijm0mGPhR4phGSXS9WL9VFFktiqgUassE0jimF4vqzaGqMtmZXX7ZvZLsHnHhkJ9tUuFyAgrnXKBzRmGfCrBO+heNSVxpgCijk5+6R5CwnR/dyNHVsELtNHmhpyTf3a/Q3a/IXVa8OcC8KcDiFmiBwkosGQp6C4OTiI5ccg92bAl2blY7PdUOT5XDQ+XYQvTU7O5+NjeRDXIzkoswlIprKnxOxtfAF8BrN7wAngPPgKcgSHgEPPgRg7ckXEpBZx8/LJvvw6Z6bCF65D+7Kf912giBfvKQ+fC81CaeoV4U3SyKbRHHt4riW4SxLRIXDIRDiHWJ8AmNEn29SFcrDisVCMJpJG8y2YssDGPENQrTOkQZXaK8/VLzQaIkaptR2mcC7dMB1skA66S8hMiDxTl9oswuYdpeYUKbyNjE09Vy1cVMWaqPJJkqSSdLsj2luVv8CjbLTG6yIsiKIC+Gwkw8Y0JhRaAVgTYE2tyUVnelzT3ItjnItllJXDcFWYlestL1NAo/M7Gqwmh3qzK7zSXilh9eeRIMvAFeAS9BkPDMxcC/YOCG+8AaHe9t82oZD4gq4lNplA0A3hV5uApB/imsiCqeoVFkbBTHNItiCRKEsS0igoHtkrjtkvjt0tjtkthtUmOzRN8gUhfzmf7ExipPEsmXR1XnsZPaBOkdoqxucf6gf8lYgGUy0DoRaB4lOmLFI7LCA9L8QUnOfklmtzi9U5S0UxjTTACgzGRxFD6+AirD34sd5M0N9eJHUkVGqiieLErylKZtkmS5SfMgLYCfiUDC37V8KLDELbBkc4B5i8L8dj2FixMzsflYUQxZMcQ2t8DqzalNns2Vm+dTcZNHAPA18DnwmRuBwVtvQARFbzFwI0hYVbsdOy7bfiokJJ3jw6J6/GPmAxse4K85cV6ko2ucHN1Wvq5OaGgUGhuFMU3CmGZhzA8MiON2SOJ2SGN3SI2tEkODKCCV48P1Ih66STxthSyOoBtr+CntoowuSU6vX8EB/5LxgJKxgKID/oUD0vz9krx+Sd6AX26fLKtbmrFPlLJLGNfM1deyFWksutibRCXaEYToFG82xYdH9RVSfcUkmsyTofRka7ZwI7fwDZsF8ZuEKZvEae6STPjluEvz3GX5brJCN5kJ/ibIXfI3QVYIeSECrNA2kNP3MCr30rrKPI9FYZVJOIG33uAzN7xw+yMG3AgM7pNxsc1n+oqmeiZYl8f3Zf1D5gMbAPz0UaOQ2ApvVTE7ooobUc2L2irQ1fMNDfzoRr6RwEAU2ypyMSAmGGiVRJQLBRo6yYt4LYlM2uJBoou81NmcxO2SjE5Z5j6/nD6/gmF5IWH9/vn7/XJ7JDndkpw+ac4PAIiTCQA4ulp2QBKTLvIm+ZDJNDLxhmRCW8ikLZ4kwr14kshUAgwvFsWbS/YRkn2lJJq/J0PpwdJ4ciI8ePotgjgPUfIWcbqbJIvYXSDNh59LsnwE29zidvgUjkrKJkUNvfQe5+aTOtzg4JkbwcDnwCs3PHcjsoLHP2KwFocP3pMffKRvPaI2mARMYr3oP9jBwxsA/HVL4iiyFFoocbQwJ6KaG1HLjazj6up5+ga+oZFwBS4GRLGtEmODSJHK8uH9q9mR4ksWamjRtcKUPdL0TmlmlzS71y93P6H8/X45rlk/Y584q9svq1ua3ilKaOPHEiEQx89I92ZTyd4EAGQfMtmbTKJSSFSKJ/nH043+pPFRifaFF5PkzSH7CEm+fiS6wpMZupmj28SPdxckQ5gBURaBgaZ8c+ZeZsW0pPFkYN2CrKGX2VXruZDm9mkA7lKIQOj129zADc/c8QRuD31xuZ85/5nx0HrUjhPqtGoJx8/7Hysf2ADgp48akQiTOaHeyiJGqJMdVs7VVnHCa9gRtZzIOm5UvSC6UWgkwiGBsUkYbhdwlTQS9V8dv+VBIpyA1sxNbBOndUjSOyUZXeKsbkk2MetLs7ul6XtFqbtFaXslGZ3StD3ixB2C2BaefitPrKNRGRQCAJ9/DQCFTCIT7oVE+dM/8B9uPFzyJJPINLIPl0zzI9GDtjAj3XnxbsI0+BcismZzfi+r6UjA7vOqpnPBVYdltSPsPS2eh/LdzyqwQiaioJcuDD5zI5BYcVCOP9fNvzJOPojcfTY0uVzElHhv/sfJBzYA+KsGjkyisigcjbfcyA/JloTa2ZpKmraKGV7DiajlRdXx9A08fRMvqpovi2F6sSj/9mnjRCZN9YtlGhsEyXtEKXuF6Z2izH3ijG5xZg+R+KbtESXtJJS8S5zUJkncJoxrFugq+AINjez7FgDiSvIirJ9EIbtEWD8BwJ+agH/A44//ifyjvIjfhe5PYuvdecnwy0NUDSm3i92wKOv7VN17Sb3rXHDjyYCts5KmHkZHLWkqw/09Da5JcY+OR2TcKPY4vh5+5E3M4hPd1IOofee1edtkfho61fcf48i9DQD+yoHzIBMPD+UJeMpIf1UOT1XmHVrhq6lgaStZ4dWsSMIb8ELMHJbsT4cEHmQyS+GjtXLidvASdwmSd4tS94pTO8RpnaK0TnFKuyipTZSwXRS/TRjfKkxo5cc1CcIsXJa/NzHZe5P/xfp/AOAH6//THsAFwH/2u5BIZB8yLcCToXdjx8M/f5O+lpLXxW48TDAwfCu070rw3vNBLe8Fbj0ia5gR7zrIG+rwXagjvVfuceoA6/CDqOOvjSdeGZae6abXo7ovhtn7FAFRTLLPz2/fGwD89w4fny/QhIZoYpXBhZxgh4+63FddQQ+tZGirWJoylthIp9CIhyz/ide6VlZLYuj6rey47dz4nQQGie3CxN3CpHZxQpsgfpsgoVUY2yKMayamf2M9X5nO8eF4eVJ+DH5+mP7/IgD+PAyexMEIdPUWRgw4iVAUbIqu987qYFVNSbo/UR28FTpyK6T/qrrromrPedXei+ru65rBm5qxFe3Mvchjzw2nXhvPvDGeeBV9+Jlh5pF+ZDWycjgwNJnjyyZqXz+7lf8n2vAA/6XhE0nERp0hJjpaG68IzuEqLT5Ku3ewwyfYSvdLpfmK/7PKoAeVRJNQVEV04uCZbZzYHfy4Nn7cDn7sdn5MCy+mkRvXzItt4sc2CY2N/IhSrlBLI3uTPShEHfY/AuC/lIBSSF5CT1bUZna8GzcJaqtn/DZa+m6m/aCw81zQwRXt6IrmwHLo/svqnk9Vg8vaifsRSy8NJz+POfMm5vSbmDNvjKffRB//zLD0TD//xHDgZmT9bHBEJteb+XfdJtsA4L8yfOQAuTw1JTkzLT0uNiYsOiQgWigy+opivfhh3j5CCtnrz8TBJB8SV+OtMtN1jSxDK8u4jR3TyjY2c6IbuIZ6bnQDN6aRZ2wU6Ov4AUksX56XJ4VE8iLayWSvPwHAf93OKL4kuj+Zqd/EToA4wz2sjJS43Te9nVE8wGs5FjB4NeTgimb4hmboWuj+S6ruT4IHL4fMrUedfmN873PjGULRJ98Yjr7UH36mn30UNbIS2bQQHGMWcP18/m4Z2ADgrx87MtUrVBNamJ9XVFCYmZZh1BukfhJvpheVSaHSyH/Jn9yDRPSV+eHewRZaeC1d18DUNTJ0DfSoWtexfHUEBvo6fngplxfsS/Iie1JJZCr5rf5NAvC3MQgyUTBlqD1Z8eAkQ5LlFl5JStlJT91Fz9zLqp3167moGrutHb8dNnwjZN/HQc2HZbtOKw6thB1+pjv1efSZL4ynXkcffakn9EK/8FQ3diei7aQ63iFiCLy2uKpPP7vFbwDgsjxP4hE3Hp5Ete7tzdv7nyQunx8fF2ezlFhKivJzsmOijQKukORJ8fBwlRr/sjchGke+ZKacIo5gaDNleocsspqjrfLVVvmE19Aja+kaG1MaS/diuQ5soZD/FQDE9P+Xhv5/+c9DZVPYkZs5SWAnQ5LjpqslZ3Yw0vcyUnbSTf2cbScC9l9Wj65qh2+Etr+vaFqSbT8u7z4fPLainb4Xfmgl7OBNzdS98KPP9SdeRR95YZh5pNt7NjSmWOBF/3usC72jHoBEJvvS6QKhUCKVCoRCBpNJplB+0stpdHq4VpuXk223WmwWc2FebrTewOXyyH/oSf3FIp4/TiUx2PRIXXhaQVySNTzK7K8tFqgLuAHJTIHGx4dPIYIfEpmw+LcTP/XfJQB/q8mVTPKkkmkSEid6EzcV/DTIC93jmr1zetmZHazkNkbuPo5zVNS45L/ztGLvh8qOj4L2nA3c93HQ/kshg1dCBz5V914MHryqnroTvvhEt/REP7euG7oaltcsZQi9/w730LxjAJDJRNRBpfrJZEaDITsrMy83NyszMyE+PkyrVQYF+QcEiCUSNofjS6dTvb3fUuHxRyKOCvD2FovFOp2uMD/PbrWUOeyldltRYX5iQpzMz4/q5fWH/45Gp4vFYolEQqPT/+wPxuPxUhISzSZTYUFeUkpsZHSoUi3n8Dhk6o91pB8m+3/DwN8YAJLrfUhUMl1O4SS4c9PASYOswD26jmrazy8a4GXsZSTvoifvoKXtotmG+TtPK4aWQ4ZvakZuacdXtZO3tROr2kMrmrGbmkO3tGM3w/o+DnV2+gdHMyk+Gx7gZ7V+OoMh8fNTKJXqkJCE+Pii/HyH3Wa32UqKinJzctJSUlJTUtJSU5KTEmNjYsIjIoKDg2QymUgkFgqFfIGALxAIRCKp1C9ErU5KTDAVFjjttjKno7KstLLMabdZCgvy4mJj5HI5k8VislkikVAbqomLiYmNMQYoFF4+Pv+x9RMuRaFQ5OVm2y3mEpMpPSnFEB6lDlRJBGIfX5+3E+fbRu8P+lMF0L9hIORJIlEYFGYIiZvkzssAPx3+Be4Jrb7mYYFtVFiwn5PZwUjdRc/Yw7CNCHafVQ5dDx1fC5u6F77wMGrpkW7pceTCg4jZu+GTq2GDn2oq+gNCkjhUHwoxg/ydpQG/fA/gQSIxWKyw8HCrzdbS0rJ161anw2EqLCwqKLCWlBSbTBlp6fGxcakpKcWmQrvV7LBa7FaLubiosCA/NzszKyM9MyPDdU3PzsrIy80xmQqtFrPdZnXarU67zUFcrWVOe3mp02m3FeTlJicmJickZGdmFBUWFBFvkp0QFy/1k1Ko1H9ZtPNHeYgHicxis6P1uhKTyW6zlBSZ0lKSYwyGCK0mVKWWSiTevv8qeCAM/Udbd339v2fdAZk4LpYZTOInbRJkgJ8BedGWuBaaY1xcNetXNimxHRSa+nl5vWzriLD5mHzgimp8VTt9P2L+YdThJ/rjzw3HnhuOPjMsPYocuxW27YjKWCKg87z+ilzrv1W/fAB8aDS9Xl9VWdnT3T3Q37+ttaWs1Jmbm5OTnVVUWJCXmxMfG2vQGzLS06zm4rcBvc1itlstDpul1G4tddjKHPYyh91pt9mtFktJUbEp31SQbyrIMxXkF+Tn5WZnZWdlmvLzLMVFdqvZZjZbioqtJcVvQSo2FeRkZ2ekpYeHh7PY7LfZ9hYPwvTJFIq3jw+TxRSLhFqtJiUpsbgw32GzlpgKU5KSYqOj9VFRuohIrTpEIhH50H08KeS3K3lc8iRRyV6+Xt50Hy8fqgfpr0niPf+cPEgkKpPMVHnykzYLMyHIgrx4c+ouZtkhcc2irGpWQmAwKi7o55mHBU1HZT2fBI2taKbvRsw90B15EnXshf7ES+Px54bFx7qJ+1Eth1XRRTwa32vLfxOxf5V+4QBQvKiBSmVlRUVTY0NZWanZbM7Py8lIT09OTs7MzMzPyc5MT8tITS0sICzPYbNaS4ptVsL6XQBYnTarw2qxmouJadnlENJTU1OSEpPi45Pi4xLj4xLi4uJijEaDIdpgiI+NSUlKSk9Nzc3KNBeZiJfbbTZzCRHU5+YkJycHBwczGEwWi8UXCKRSqTJIqdGERht0SYnxaSnJyYkJpvzcUoedACAhId5ojDNGxxqjY6MNkeFhikA5l8f1pft6+3p70bxobLrUT6JSKUM16iCVgsvneNN8PL1IW1xo/G3HkEqj0OVkjsGDn+7Oz0KAeVN8q7dtTLR1yX/rorxq1t9+SFR0QFA0yK+Yku75UDmyrJm+F7HwMPLwU92xF/rjL6OPPjcsPNaP3YnadkIdXyrkKXwJD/b30SH+JQOwxcODxWYnJCaWl5dnZKSFR4RrtNqoqMjo6OjExMTMjIzsrMzCgryGurqdbW11tbWWkuKC3FxzscnmMvqSoiJXGJSTlZGelpqSlJAQFxNj1OsNOr0+MkoXFamLitJHRkZFRISHhemidAnxcZnp6TlZWYV5uXarucxhL3c6yp2OUofNaikpLMhPTU7WRUVF63WJcbGpSYkZ6alZGenZGWlpqclxsTHxsTElpsJyp6MoPz8lMSEhNuatCMD0OkOkLjxUGxQU6B/gFxAk04SpE2PjM1PScjIys9LTY2OM2rBQuULG4XGo3l5/23K7h6tI5cWjsLVkbuwWfpq7X757dCOl5AC/Zl5Wu+BfOStzTkhKDggKB/jOcdH2kwEDV9RTd8LmH0YsPo468kx/5Lnh8FP91P2owZsRLSdUmS1+QhWN8na13M+dEvxiASC5ABBLJBkZGQmJiX5+fv6SLNQAAAlFSURBVAwWi8FiSaXS8LCwlOTk1JSU3Jyc2prqjo69DfUNJlNhenpqSnJyfh7BgKkgLy87KzM9PSU5OSE+Pi4mJlqvi3TZulajUatUQUHBSqUyUKEICAiIiIiwWCxbt25tamis37rVaScs/q0DcdqsZXabw2Y1FxcVFxQU5uXm5WRlZaQR75sUnxAfGx9jjInW66MiUxITSu22MoctPycrJTE+Ic5l/Uaj0aA36KOMBoNRb4iO1Bkj9fHRsalJydmZGfm5OUX5eYV5uSWmIpvZWmwqTkpJCgiS+zB8txA7U/7GQ0rxIfsKqWwNhW3wFKZuCiujFvRyq2b9th72r1mQlU9LrUR+zC0a5NfOyfo+VU3d084/jFx6EnX4mf7IM/38Y/2he1EDN8J3faTJ2Snzi6JTfEhbfm47+cUC8FYcDicwMJAnEFC8vEhkMolMpnp7iyUSXVRUclKSxWKpKC8vKChISEyMIT6M8fFx6WmpWenpaSkpyYkJ8TEx0TrC7rUaTZAy0F8mEwmFPB6PyWT60mg+vr4sDickNKS4uLizs7N9166ammqHzZ6bm1OQl+fKB0qKC/ILcrOzMtLSUpJTkpISE+LiYo16nS4iPEwTGhKiVoWqVGEaTawxurggv7q8zGYpzkxPTYqPjzNGGw06wsOEhYdrteFhYeFabYQmNEKr1UVExkQbkhMTMtNTc1xpek52VmFBQXFRsaXYUpBbEKYN+/OF179KJAqZ5EMiM0jeAgoriOKf5B1bw7EOiSsnpNVzfpVzUseEuGhIUNDHK58U7fpAMXIjdOZ++PyjyMWnusUnUTMPIsfWwvqXtW1nQ6wH5JpMNk34L1Xjn0W/aADIROeIQiE2TP2hivK2DyAUChITExwOe3ZOTnhERGRkZIzRGEOULGMS4mLjYmNjog36qChNaKhCoRCJRCwWy8vbm/RjDedt9Ybq7R0UHGyz2Rrq650OR15ubmpyakJCYlx8fFZGhtlUWJibm56SHB8XG23Q6aIiI11Wr1IFBcjlUolELBKJRSI/qTQ0JCQvO6umoryi1GEqyE1NSiReQGCnDQsN0YQQkKhVKnVwsDpYqQoOUqtUmlB1ZEQ4kXjEGGNdP7kxOkYfaYiJjs3KyMpIzghSKCle/w2bdMmEayWycNeKbpIXiS72DkpkxpdzTV1ix6i0bFJqHxMW9fNyOjn5PdzKCb/tRwJ7zqnHb2mm74XNPIiYuh8+vqYduBHWdU1TM69UpbBJlJ+zP/CLBuA/Fp3JjIuLKy4uNhqNUj8/P5ksPDzcQMT3Or3LVrUaTaBCwePxfGg0qpcXmUJ0Yv/4HUhkskAoTEtNrayoMBUWxhImaIyJjol2fSTGx6clJSXFxxujDVERhCmHhKgDAxUSqZTH5/P4PCIJVgZqtZpovT4jLa3MYasqc5aYCtNTU4wGfWSYVhOiClEFq4ODgpWBgQEBcplMKpFIRCKJRBIglwcFBqmDVVq1mnAL2rAwjVYRqOCL+Hwx31/hH6oKlcvl3jTvv+1SZNIfNyJ+XHtHopK9mRSmxEus9Q1KYkaaOLGlnIRKTnQZJ9LMCs1iquIYuhxuTp24djhg7ylV78chfZ+E7PsotO1MiKUvQK5j/qGk+7PoXQTAg0RisdmxcXEZ6elyuZxMoVC8vDhcrkKhUKvVKrU6IDBQKBT6+viQyOT/aJkQxcsrJDS0pKQkv6AgTKv1l8v95fLAIKVKpQoJUYeHaSPCwiLCtWEaTYharVAoeHy+L41GplJ9aLSQkJD0jPT8vLyiwsLyUkd1JTH3lxQVpCQm6HSRoaEhquAgRYDcTyoRCAQcDodGp3l7e1O9vChUKoVKpdFoAoHAXy5TKhTBAcogeaBYJPZl+L61SzKV7O3r40P3pXj9hMUdnj8dgB9aWhSyB4m82dXTIHmRvegUXzaVIfCiC7182FSKL9mD7EnyIvkyKQJ/nyAdIzyFo///2zuXniaiKABv6Jw771eftEVai7SAkSKElkQsBSQaIRWEEh/RFZuy4P+vzHR4VIUFiozQLzkhrMrkm+/03jvnnOFdrrWbX9zMluY9K7jji7xtjGMCRC/n8f3Zen22Xnd9P/Zb6brjulERN512PS8qWp2Xma4P07abzWan06k3GkEY2o5jOY7reX4QZLKZJ1NTM7Xa7Eyt9rRaKpX8IIg/UBl6pVrp949OB4N+/2hvb/fbl0/fv34+6O11O+svm4vzc/WZWrU4ORmGoeM4hmVFrRD6VcdefLWmbfqhn8lm8/l8JpMxbfuqNBbtT/7Vf7NTv+TAeVk6KsxpehQppVIplUoNax2XTYGiUppMTERXrtu65RlOaJiOPixfJGzCGDfDeZ7tur+XZkd/uTGGh+lqrTZdqdiue6nmuaC6bjtOEATpdOj50Q4q/iuaiOO67Vb77OzsdDDY2dnZ3t46Pvp4fHiw82ZzZXnpWXTeKAZBaNqWNlx8brqAeLA9OuFYZjQUf5/ojGEdOt4CxWP4Fz+jMEbmj+O4bij5srkjcRPGNAH+PnTDcH3fGGl9uyZGDt9xAgRh2O12T05Oer3e62G7xOH+h733b9farbl6PZfLWY49mpP/aehKS3TjfodBAvw5u1t1HyhdT2lavlDY2to82N/f6KxvDMvGW92NV2vtFwsLpWLRMB/JS/fl4QQJcH+sU5pWmJxstVqrq6vPF+ZXlpaWl5pRWa3RmCqXXc97AN/96rEFCXB/rDWRMJ2uVKuFQnTGLZeL09PRM9hSsej8fBohhAR4lBIYpmldzNnE3aCO646W2Ai5XwisAAk7x6ZfEuVPAvClq8Z52SEBkr8HhJAASAABVgAkgIBiC4QEEFCcAZAAAopDMBJAQPEUCAkgoHgMigQQUNQBkAACikIYEkBAUQlGAggoWiGQAAKKXiAkgICiGQ4JIKDoBkUCCCjaoZEAAop5ACSAgGIgBgkgoJgIQwIIKEYikQACiplgJIAAQ/FIoMY9DXgrRPL3gBASAAkgIKwASAABYQuEBBAQzgBIAAHhEIwEEBCeAiEBBITHoEgAAaEOgAQQEAphSAABoRKMBBAQWiGQAAJCLxASQEBohkMCCAjdoEgAAaEdGgkgIMwDIAEEhIEYJICAMBGGBBAQRiKRAALCTDASCOPIDMUjgYx3GvBWiOTvASHJQfgBd3SmfOFyFx0AAAAASUVORK5CYII=","mimeType":"image/png"}},{"text":"What is in this image?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"temperature":0.5,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +{"contents":[{"parts":[{"inlineData":{"data":"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAACXBIWXMAABYlAAAWJQFJUiTwAAAgAElEQVR4nOy9d1RT67f3+wBCCjVAeqWH3nvvYO9d7CgKiGDF3rsiqCAivSQhIfTee0dQBKT3DvZdzvnjjpWoe//OPfe+5z3n3pe9t8vxHWusLAhDJt/PmnM+ZQUgkEhYcAQQP6sNwJL/D2DBEUDAAMAmgCOAgDMAbAI4Agi4BIJNAEcAAfcAsAngCCDgJhg2ARwBBDwKBJsAjgACHgaFTQBHAAHPA8AmgCOAgCfCYBPAEUDAM8GwCeAIIOClELAJ4Agg4LVAsAngCCDgxXCwCeAIIODVoLAJ4Agg4OXQsAngCCDg/QCwCeAIIOANMbAJ4Agg4B1hsAngCCDgLZGwCeAIIOA9wbAJEPCGbHhTPGwCxM+NAfxUiKX/G8BCwADAJoAjgIAzAGwCOAIIuASCTQBHAAH3ALAJ4Agg4CYYNgEcAQQ8CgSbAI4AAh4GhU0ARwABzwPAJoAjgIAnwmATwBFAwDPBsAngCCDgpRCwCeAIIOC1QLAJ4Agg4MVwsAngCCDg1aCwCeAIIODl0LAJ4Agg4P0AsAngCCD+2RtioH+oP4T415d/6Pu/Jf8Pw0L8ZYLwTwBAAoEURyDFJZDiEggJJBKFQklKoSSlIaEkUeJI4Zeg75FAICWW+n8LC/FXCsLfFQBxBFJMHCGOQGAwaAZNSldL1soE42qHXeOB37wav3M9wWsjYdcG4tY1hLWeeDdHRRszjK6mDJ0qJS+PRiCRYssQEC2Ipf9FYCGWNAh/JwCE5Y04AjohkaR1teRc7RW9NhFPHabeOqUcfouZ9EyXG2fAj9fJjNfMSdTOTdHLSdbPSNJnv9SJesi8c07llA9t92aih6OioY6cMkMaI49GSkJpQVhHLfkvCAvxfzwI4O9S4kOljgRSVg6lqSbrZqt4fD/18SVVXoRWWaJeC9uoO9N8qM5+tMtltNtpuMN2qN1yrMt2st9pZtB5Zthlesh5rNuup86spdCghKvDe6n59IbyxUC61yaCk7WCuoosBoOGMPjeQsBC/DRB+BsAIIFAikkg5OXRJppyOzwJD0+qpD9itrH1e/OMBwrMhnIsx/JspqodZt64zHW5zryyn3nlsDDg8nHG/eO8x8c5jw+zbu9nXBfGnab6bUe7LIfazfqbTLtqjNtL9Eu5Wqxw9eun6FvX4DTUpaVloFZhyX9fWIj/g0H4GwAgLYnSpsnscyBEH1apvqnb98JoKMZ4LNl0gmcxlWk9W2a3+MrxfbfTQrvjYpPD+xb7T11OX6fcfvno+fWDx9cP7l8X3b4uuH6ed/k47/ph1uX9lPP8qNNkr93IG6u+JpOuGsO2Yr28JOb1M/SVbopUihQShYJ7A8RPo780ABJIpIIM2pkpf8uDVrab+XqfTs8BvYEThiPXjMcfmU1GmM2yrBdL7T6+cvjU5vSp2elLt/Mvky6/LLj89tHtty/uv336ro8ev3yC9PWjx5eP7p8W3RdnXGdGHMa6rQfazbsajFvL9csytKPDVA/uJmpry6Ell/53h4WAAUCgEDbKmJerlFrWM/uWa/VZafZbaQ1v0hs7Yjhx1mTqpulchNX7TNvPjQ5f25y/dLr8OuX2+1f33766//7lm/7ti/vvn91+++z++2f33z67//rJ/VeIBPcvH10/LTi/n3ScHbId6bbsbTN5VaVflafDS1QP9KOoqUmjvzfHsBD/6CD8RTOABBIphUZpYmUeWlNfLWf22DJ79TX69JgDNlrDa3VHd+iP+xhOnjCevW/xIcPuS7vz126nr0POX2dcvs67fl1w/bro8vW9y68fXH775PbrJ7ffPrn+/snl908uv310FeqXj85fPzh/WXT+MOswO2oz2mvV/cqsucawvFCHnah2/BjFyAQjJYNa8jjAQvyEACCRyGUIBF1WKkiNUGOr2m+n2WvK7DPVHLDVGnLQHl6uPbpFb8zbaDLIeOaRxftc209vHT722M+9tZ3ptJ3tsp1/Z78wZL845vBx0vHzrLOQh18EPPwCyfWXD26Co+vXD86fFxzfz9jPjNkM9Vq8eWXcUK1XUqjFSlE/eZpqbCqHloL7AeSS++GnAwBqfNHI1USFTCPlTntmn7N2v7v2oKf2oIf2kKcu5P59+uOHjSaCjKfDzEf45s1phvxnzKcX6Y/PUmNuKhfFaXeXGo+2WE50Ws/1270fsf8w5fh52unLrPOXBZcvi65fFt2F+rzg/mne9f2s4/yU3fiwZW+P2atWw8oq3excZnS8StAZkqGpHJQH4LFR5NJb4mcBQHD7R9KlJG+pk9ttNd55aPWt0xncqje0VXdok+7wNv0xb4PRgwYj+/THTht2hxsmXVPxWi5rpCyOlwZYKaCkCFZZoELPUBu5ev2VJoMNZuMdljPvbOcH7RdH7T5MOH6ccvo44/xx2uXTtNvHabcP027vp10XphymR61GBs26uoyaWg2KK5j8XNVYlsrxYIqBmZykNAoB9wPIpffGTwEAAolEo5B2ijKpxvS3rsye1Vp9W3QGduoOeukN7tYfPqA/6m0wvF9/6LRBz0OD2HOMFVZoeTSQlhAz1tNZvXy5vqY6QU7cVg/x+AyliafbVWTUV2Uy3GI+/tpyusd6rt92YdhuccT+/ZgjpHFngZwWxmynRyzHhsz6+ozbOw2rG7RyS9VZmSqPoxn7/Uma+rJISWiabMkjAwvxjwdAAomUQ6PWUxQqbZTfeaj3rtHo36rVt1u7b59en7fewBGDAR+9vgC97lCD4scaOz2kMWgRAABBQfpUoH8mnxfge5hMwC0DYK2dFOeBcnu67ptc/e5S4/4605FWi4k3VtM9NrO9NvMDdguD9ouDDu8H7T4M2b0fsp4ZtBgfNBvsN+nqNmx8pVtcy+QVqUTzlO9EMjYfINDVZZY8MrAQPwkAMmhJZzoh2kGX52lYuFK3ZQOze4d6zx6t7v3aXd46nce0X1/TrQ/XjjhDNlASl1omghIDZEUpn4N742Oijx3xVqURAQDa9GU3/QiNbK32dJ2OLP2uAsPeSpOhBtPxdsvpbpu5ftv5fvv5fvuFAbv3A3YfBm3mBywn+0xGeo3fvTNo7dSpbGZmVaolZCs/YSsFh5BX7sQqEiXhJIBYanv88wFAoFDyigpm+jqHVjgFrnW/ttYxdr150Radtp3M13uY7d5azac1mx5oFYdqXDuAV8Uvw0ojcTISeFkJU33N9as9bMz0CRi0KAAqBLHgfbhGlvbrdJ3XGXpvc/V7y4wGa03G28xnu60XBh0WBh0hDTkuDjm+H3ZYHLKZHjAf7TPue2fQ/lan5pVmfr06u1glgq90O57md5NkaIeRkoUHRpFL75B/MAAoNBpPIOgbGbiuXLF265ZtXjv27t11dP/OK7tXcPaa1PqpN55Rr7ypUfNEo+CR6rldOGU8QpmiqKlMYhDliBgkAYPASi9TkBRFigANyrJrAeSuAoOhMoOBcqORWuOJVovpTqu5Ptv3ow4fp10gTbl8mHRZnHR7P+X2cdpxYdx6bNikv8/gdZdOfYdGUbMqr1IlOk/lAYd+KZqyOYCgrCeDRMMTZMgl98k/FgBFPE7fyNBjxfJN27Zs2blt8/at23fvOhjgdzTw6J2ANdkXdavvq5SHqddEMsufa9w+glcjiCuTcMa6qvoaNBUShqSAJiugqFhJtJiYERMZHaI61WEx/9pyrtt6ccDm45jDp2mnLwsuX9+7/fLB7csHt8+Lbh/n3d/PenyY9fg077owazc+ado/bNDRy6x/o17SqppeqxxXrPw4nXYzher3gOK0HYfBo+EtNYil9sk/DQAJJDTxS6SQjC1M3VZ4rNmwduPWzavWrbGysbGwsty51+vc9Ss3bpxkPXSui2e+4ut05hv0V5mUcbS3rsTQsJIadKqpnrqZnpqxtoo+k6FMxFMVUH4H8J1NFl9nnb7MOf+y6PbbR4/fPnv89kWgzx6/fnL79aPrLx9cvrx3/Tzv/HHWGcoAU7ZjY2Z9IwYdA5p1XWol7SoZDYyECsazXMYdLj04hnbwNsV8JRZDgLbUwEL8I4LwlwAAiUbhiHgDMyNnT9cVa1eu2bB27ab17is8jExN9A0NNu/YevHG9dt3L3AjV3TkGY40m46+tpwbsJ7qtYqPUHe2kibKSqlRSHoayvpMNSaDroSXX+kkn8nR+bzg9PtHwVIIaF2Qx+9fPKHlQB/dBdZ3hvTe5euC8+dZ+49Tdh/GbeZGLEeHjHr7Ddr7NGq6VYs6GBmNtMRKangB5V469UIiPSCCuukMQc1UBhoVXeqgwUL8MwBAolA4Al7PyMDZ02X5mhWr161avX716vVrVqxd6eTu4rFqxSFfn+Arl69dP5GTvGKo1Wxu2Gpu1G5x0u7zrN14vzUrTmPbWnkjprQaVUaDhtFnynhtxmVw9BZmnf79d8/fv3pC1v/q8ftnSL9+dP36weXre+cvC45fFpy+zDl9mXH8NO3wcdxucdh6ZtB8tN+4b0D/dR+ztlu5sIOS1kxKqCFFFFMfZtMucWgnYugHHpHsvbAYIpwEkEvunH8IALJyctoGug6ujp5rlq9av3rtxnWrN6xZuW7Vmo1r123ZsGOv15Hj/v4nT1684F3Ed514Z744abcwaf9+yv7jrP3XRbv5MZumKqOY58wrwfSrwfSocI3GGrOPCy7//m8e//ar57/9slxw74cWRQvc7/zlvcvnRedPs06fZhw/Tdl/mLD7MGb/fsR2YcBypt9sYsh8aNj47YBOwzvVwtfk1GZcXA0+opT0MI9yhUc9mUA7EknbdJGsbCaHloGnh5FLbp6/PQAoKUklFWUbR1v3VZ6rN6xau3nd+m2bNmzdtGbTujWb127YtmnnPq8DRw4f8j964+r26gK78T6LmXH7+UmHDzMOH2fsP83Z/7Lo+NsH54/zjjOTDrNTTu8/uv72q9u//+r++1d34Y3/10/uv3x0/QqtAHX9+sFNAIDLxzmX99Mui2MOCwM2C702873Wsz1mU92m4/2mQ0Mmbwd0G96pF74hs5sUXlYrPCnF38snXkknn04h+8fQ9oZQ7PbgscrS8HppxFLb9+8NABKNUsThDEwNXVe4ea5dsXbTug3bN23etXXb7u3bdu/Yunv79j079x0+ePi4v2+gb8jtDfWFZkNdJpPDdnPjDu+nHT/OOH6cdfw05/TLotNvn1z+7avrv//q/u+/e/7brx6/fRW0vJ89foPc7/b1g+vX9y6CE7cv790+L7h9mHFZnHKZH3KY7bGa7TSffW02/cZkvNNouMegt0/3Va9mTZdK3mtKSpPci2rZ0FJFCIBM8hk2+Vgc+dBz6obLZG0XeUkMPC2AXHIH/10BkEAi0NJSapoaNk527qs8V6xdtXbL+k27tmzbu3PXgd37Dx/09vU5fMz3aFCA/+mT/kH+j26sqeIZvKs3GOmymRqwmRt1WBRg8H7G8cOs46d5p88Lzl8+QC7/FRrtcf/ti/uvn6Flz1/fu3xZcP485yQoe1w+TDm/n3CaH3aYG7Cb7baa7jSffmM23WE22WE80qnf36X7ukuj5i29sAPPa5WNrRd/VoF4WCx3O0/hcibhbCopIIl8JJq6O5TqGUQk68igpGAGkEtu4r8lAAg0SgGnaGRu7Oju7LF6+cp1q9Zv2bB59/adB3bv9dnv7efjE+h39ESA38njx06dOBp07Pr59YWxhp2Fev3NlmOdllO9NrODtvOjdgvjDh+mHD7OOH2adf60AA1rfv3g9stHt18+QTXPl0WXL/POX+adIetPOC6O2M/12872WE+9sZxqt5hoM51oM5nqMJ16Yzbxxni406C7S6e5S6XkNT6jTTKxaVlkjWhYuci9YuSNPNkLmdjTXHxgCvloHG1fBG3rPbLZZkUsQ0pCAl4nh1xyH//dAEBA1T9NiW5lb+Oy3NV9tceK9avWb92wZfe2XQd2HzjifSjgyJEgv6NB/n4njx07FXQkMCDo+DZOiEVrmnZ3mfFAvdlIu+X4W+upd7Yz/XZzw/YLYw4LE47vp5w+QFO8zp9mXT7NuXyadfk47fRh0unDtNPHGaf3447zQ7bTXZYTr8zGmozHGozHGozGGg3GWwzHXhmPvDEc6NJ7+06rvkspr0OW3bIsuh48qQIPS0VvFy67moc6nyF3mosLTCH7JVC8o2i7n9LXXSHruCmi5eARIeSS+/hvBoAEAiEJ1T/qNk52Lp4QAMvXr1y7df1mr627DnjtP3LA+9hhn0DfI4F+vieOHTsT5Hc66LD//qfXHKvi9Tpz9d6WGPfVmg02WYy8shx/Yz3ZbTvdazszYDc7ZD8/4rAwar8war846rA46jA/bDs3AGl+yHZ+yG6233ay03KsxXS0zmis3mis0XCs2WC01WD4lcHAG7133bqv32nXditlt0snNYlF1ICQCnCvGNzIF7ucI34uXe40V/E4i+CbSD4cQ9sfSdv5mOp4hIRXgxeKIpfcx38/AKRlZXQMdOxdHZy/A7Bmy/rNu7btPOC1x2ffft8Dh475+AQePXrCPyA4KPD8yb2+h0/6unEf6LVztV+lG3QWGHWVGvdWGw80mA01W460WY2+th7vtJ7ssprssZ7ssZrqsZrutprqspp4YzHebj7xymyiA9oVMN5uMdpkPFJrMNZgPP7KZKLDZKLTeLjT8F2nVkcXs6FbrbSLmt4uE98o+rQaPCgDtwrBtXyRi9kSZ9JlT3Dlj7Pxvskkn3jqwWjangjqpjtU/ZUKMnh4SBS55Fb+mwEgIyerb2Lo4Obk7OkCAbBu5ZpN6zbu3LJ9/86dB3fvObxv/1Fvb//DPseP+p0KOHrSb8OOrWtW2t4+rlsXp9nC0mlN02/P1H2Tr/+22LC7zLin0qyv1qy/3myw0Xyo2XyoxWyoxWy4WaBGk+F646Eaw6Faw+EG45Em05F6IwiARqOJ16YTXWZjfaZDvUZvurXqOxnFr3EZ7TIpLcte1oOwKnC3BFwvBJfzwMVs0TPpqBNc2eNsRf8U4tFE8uE48v4o6u5nNI8TJBVLDALeMYNcejf/nQCQlZMzNjcRAODqvspz+dqVqzet2bhj09Y927fvgwaC9hzat9dn/wG/Q4ePH9mxb6edi6OxidGBLUY5oTpN8RoNiVrNbM1Wnk5bhl5Htt7rXCMoJxQbd5ea9JQb91YY91Wa9FUZ91caDVQaDlQaDFToDZTrDVXqD9cajdQZjtQZjDQZjnYYjXabDA+Y9PYbtr7TLHlDSG8VT2oGL+rB0xrwqALcLgZXC8AVCABwJl3iBE8qMBXjz8L6JkMMHIql7I+kbH9EsfbCy+Ak4W2TiKV2898HAAmELEbOxNLM0d3ZydPFfaW759oVqzauWb9t42avrVt379i2Z+f2fTt3HPDy8t6zxWubs7uzuZW5nbPzls0rnl2wLH/GrI3WqI1l1idoNqZoN7O1W3g6bem67Zl6Hdm6r/MEmSHfoKfQ4F2RQW+Jfl+p/kC53mCl3nCV/mi94Wij4UiL4VCbQd9rne63Op09Oq3dGhWd1KxXqKQm8KIOPKkBDyvB3TJwsxhcLQSX88GFbHA2Q+wUHxHElQlgK/il4H0TSUfiKYdiKHufU9ZfI6tZyUnCuwWQS2/ovxUAVmYObk6O7s6uK9zcV3uuWLdq1aa167dt2LRj06adWzbt2rp1z451WzfauzhYWFq4erju2u+17+ih4KB17FuG1eHKlRHqVS/Ua6LV6yAStBqStZvZmi1czVa+1qsM7deZOp3Zej35+v3FegNlekMV+sPV+iN1huNtJuOvTYc7jfve6He+1mp9o1b3hlb2mpDTLsNpFXnZAJ7VgodV4F45uFUKrheBK/ngYh44nwOCM8EpvlgQV+o4W+FYCtY/hXBUwIB3NHXfc7KDN47IlIHnhhFLbei/EwCmVlAGcHR3dlnu6iZoA1ZuWL1m85p1W9at27Zh7ZZ1K9etsndxsLKx8lzh6bXPy//UscALZwLPHH14YXlRiEbVM5XyZ+oVERpVkerVUczaGM26eGZjkmYTS6s1VbsjXQBAof5AhcFwreFInfFIg9Fws+HIa5PhLrP+HpOeHoNXXVp1bxgl7fJZbUhOi2h8M4ish27/D6rA3XJwq0wAQAG4lAcu5oJzWeBMBjjJQwWlygVwFALYin7JBN8ksk8c2fslZdNtisl6RWkFNPx8acRSe/pvA4Cxpam9m6OjO9QHuy53dVvl4bl2xYr1q1ZuXLN83Uond2dLa0srWyuP1Z479u44HOATcDbw1OWzgRfOnj27P+WmSXkovTxUpTxMpfypckW4akWkWnWURm0Msz6B2Zyi2Z6m3Zml212o21+pP9xoPNJqOtRq0t9q8K5dv6fT6G23YXu3bkMXs/w1I6sVzWoCLxtAeC0IqwEh1eB+BVT/3CoFN4rBtcJvDJzPBmehJCB6gocK5MgFsOWFzcCRROLhWMr+F5SVwUSGqRxSGp4bRi65rf8eTbCRmam9s6ODm6OTh7PzcleoEFqz3GPtCpflbjaOthbWFlY2Vq4r3Dfs2ux1aM9Bf++jJ/yOB58Iungm4Oyxu+eX8+9olT1mlD5WLg1TqXiqWhHxDYC6BGZTimYrT7s9S+dNgW5XmV5vg1Ffm2nvK5OuNv32Vs3WV1pNb7RrXmuUddDz2vCpzRKxAveH1oCH1YL6pwLKALcFAAiTwOV8QRL4xoBYEBcdmCoXwFYUMIA/kkjxjqHsCiXbHcDj1aWR6KX/u8JC/C2GQW2d7R1doSTg6OHs4unqttLdycPFwtrS2MzYysbK2cNl1aa1m7y2bt+/c8+hPQf9vH2CjvqfPe57KjAg0Ov+OfvMBypFj+klYaplz9QqnqtVv2TWxGrWJDLrWcxGrlZzpk5Lvm5biU5Hjf6bJsOOVoPWVt26JtWKJkZxC6OwlZ7Vgkttlo5vEHleC0IE7n9QBR5UCgCoAHfKwK0SQRL4cyEEdcPgVJpYEA99nPODAeLheMrBaPLWeyTTDQoyWDT8/AjE3wTCpZwI0zbQsXaysXOxt3d1dHBzcvJwcXBzsrC1NDYxNrc0d3BxcFvpsQLqCqDOeIvXtp0Hdu312XfA3/tQgM/+o96Hj2y8c9448YFyephS7jO1whfqJTEaZQnM8mRmOYdZwdOoSmdW52hVFWhWl2nVVGnW1mlVNmgU1tGzawlpdZjUemRivVhsncjzGqjyge79QgCqwP1KCAAhA9/ygGA4CMIgF5zLgfLAmQyREzxkEFf2OEf+GBtiwCeeeDCGuOEqHlooKoeG1ggt9V8XFuIvC4CUtLS6loalnZWtk52ts72di4ODm7O1g62xuampuamVnbWDq5PLcje3lR6ea1asXAetFd24c/O2PTt2Hty1+9Ce3Yf2bd+384CPy/mLWo/v018+VmFFqHNfaqTHq2ckaWSw1LNS1XJ46nmZzNxc9dxCtexildxyRnYVnVdJZFdhkqqlYqtFn1eBZ9UgtBqEVH0DAGJAoPsCDIS10K3Sb/3Aj574fPa3nvgUX+IETzIwVeYYS8E3Ce+TQNz3nLDyNJ5hLIeQgv2H/OsTuHRrgaSkGMpKptbmNo62Ng62tk52lvbWxuYmRqZGplamFvYQGPbODo6uTs4eLm4r3D3WLF+5YfXazes2bN+4ccemTbu2bNy1fe2O9RsOW+0OZhy7Tr18X+nuE+XQSOVn0cqRCapRyarRbJU4nmpcunJcNiM2lxyTj48uUnxRLPmiVPxFhUREJQithMb7H1RCdf/D/8BAFcTAvcpvulsBbgva4pslf3QFF3J+dAWIIK50AEfBLwV3JAF34AXRM4hA1ZOBd40hltrff1EAoAeASkqSoMdAmFg72Ng42Ng42hqaGatoqDG1tYzNTcxtLCztraztbe2cHBzcnVwEk2UeazyXr1u5asPqlRtXr9qyZt3WDeu2bvTc5ezmr7I2mLz7CtX/DuNsqNKlcKWbUSp3Y1UeJCqFsBihXHoonxKaQQjNUXicJxlSIBpSBB6XiYRVgJBKaMDnQeW3yudhDaRHAgnPhVQIc4IQA6g5LoMwuFb8DQPhFMFpwTxxAEfBPwV3NJG4N5zocBCLU5GBP3QMsdQW/4sCgECi5BTktQ31LGwtLe2tLe2tNXW15RTk5RUU6coMbT1tI3NjC1tLG0dbOxd7qEMQThes9HBf7em+2tNj7fIV61at3rDWY6urzSGm7XGS+xnSukvUXbdoBx/Q/cMYJyMYwS/pF+OpV5LJ1zjE6zzc9XTMzSzEzRxwMx/cKgJ3S6G1bvfLIWdDAFQLrF8LQupASC2kx3XgcS0k4ctHteBh7bc+AWoPyqEWWdgbXBJMFQdDU8XoQGiqWN43CXcgkmS7S1GeIikBP1UXufRG/+sBgIB2hKkw1UwszSxsLc2sLVSZ6lIyMhIopKSsFI5IUNZQ1TXSM7E0sYLKIYgBaMrM09VluZsr1Bu4u6/09FyzwnmbveUhVUt/ol0QwfUMefUl8qYb1F33aAdDqUfDaceiqEGx5DNJ+GAW9hwXczEddSkLXMkF1wrAzUJwpxTy8R8ACL0u9H0dpNDvR+HJYwEbj2q+NQlCDKBsUPRtnDQ4U+R0+rITXFQgG+Ofgt1xH2e0CoMhoWEGEEtt9L/onmAimaRvZGBua2FiYcJQUUJLSn77EgolJSujiMfRlekaOpr6xgamVmYWdlZWjlCxZOtoa+1oZ+NkZ7/a1maPoakPxcyXaBVAtD9JdD5LXHGRvO4GZct9itdj2v5wyqEXZN844rEk+SCW7Cku6lyGyIVsaIHDtULIu7fLwN0/ASC85QsdD6kehAn0pB48afh2Hlr/nYRaqEy6X/kHBpeEFVHGt67AL0lh1yO82Xp5BaoUPDmAWGqv/+UAQKCQ0nKy6ppqJlamBqZGFDoVifrTNCr0sdUolKSktKwMBitPJJPoynQlNRVVdRVlNWW6KoPGpGnY0/wL7QoAACAASURBVA29qMY+BDNfgsUxonUg0eEUwfUccfkVytpb5M0PKDvDyHsiSN4viT4JCn4psoEc1Gm+WHAmNJJztQAa2LlVCt3IoQagWlD21IKwWhBWJzB9A3jaCOmJUA1/SIiBkASoYRC0y7fLwI0SQUUkWDt0JkP8ZJrsMZb8roeKFpswijTo4dLwYiHEUjv+rwSA4FnQOBJOz1hPz9iAQCb9379BAoGQgHZQIhAQDGiUpCRKUkpwgkai0TJEKZq9vMFegokP0cyPYBlAtDtBdDxDcr1IXnGNvO4Oacsj8o4npH2RxIMxuCOJ8v4smSAu8kw6ZNArBeBG0XcABA1AiPDeXw/ChEZv/AOAp01/0veLwoQgbBUe1X6ri34MGV0vFrlSIH0+W/5UGvbQc6zTAUWGgaykLPxoUeSSm/6vBAASqviVNVS09LTxJOL/7nslUEg5mpT6KqzhQbypL8HCn2R9nORwiuRyjuh5hbT6JnnjfcrWULJXBGlfFN47XvFostxxDvpUmtj5bGibi7AKEmYAqP4RlD0/bvNPG8GzJhDRAiLbQFQ7iOn8Q9GvwcsO8OIViHwFwlsgKn4w86wZuhLeinraggmtx9+vIt0sIV7MIfrFEtefJaiZYaQw8PYx5JK77i8EAAKFxCgqEClkjIL8f+PtKBkUTlNGawve5AjRXNAJ2J0gOp0luV8irbhOWX+PuuUxeecz4u4XBO9Y7NEkTABb6iRX/FwWtMj5WiE0kvMDgB9F/5MGEN4E+Tv+LWD3A94IyBgHmVPflDUFsiZB+jhIGwXcEcAeAEm9IO4tiO2Ejkk9osl9Min9xJReemKPUuxb5chXKqH1jFultOAMyrbrBF0nBUlZeK0EcumN91cBQPCxAGhpqLD5771dSh7NsFMw2k+08CVZ+hNtggRV0AWS5zXKmtuUTQ/JO54Sd78geguqoGMs6RNcieBMaNBGCMA9QQn0o/551gzd3RO7QeogyJwAubMgbw7kz4P8hT9UMA9dyZsHuXPQN2RPg4wJEf6YaNqoRNqoTNoYlj9G5o0wOMMqrEHV5F6N2C7m81fqIfXKl7Lp++5TjD2xijQpFDxVjFx67/0lABDW+v/99yIRGJqU1kacqQ/R3E84HERwCia6XyKvvklef5+yNYzsFUE8EIU7HK/olyIblIo8mwHN4wr74G89QC3k/ohmkNAF0kage3zeLChYgJS/APKEEpgegkHAQ97iNxgK5kUL5sXz56TzZvA5M9jMKYWMSVzaGIU3SuOM0NkDqin96om9GnHdGs871O9XKR2NpLkeJFC15JCScDmEhAH4H4cAgUTJomjWGMM9eKgV9idYBxEdzpDcLpBXXievv0vaEkLe8Yy49wXuUBzWN1kuMBV1Jl3kDwDKoRLocS1U7id2g7QR0ewpkDsDAZA3J5DA9392P2T6H0jMgXxIogVzqMI5xfw5XM4MJnNKLn1Cnj+hyB3Dpw7TOIOMlAGl5H7V+B6NF2/U71epnEymrw4gaJjLoeD9A0g4A/zPQ4BCYpSlNTdgTY8SzX0JlscJ9qdIrufIy6+S194hbn5E3v6EtDcS7x0LAXCcgz7NFz0vAODmdwCeNYL4N8u4g1LpY+jMSZHsaYiBnDmQOy/09zfrF37XH8lhHvqeXAgVkYI5VMGcZO4sOnsGlTW9LHNKij8uzxvHpo4SOCMU9hA1ZUApqU81pkv9WYvK5Uz6zutEfRd5BbIUPFOG+MlLoP+50Bg0zQpjtJ9g6kswDyDYnCA6niW5Xyatukna+IC8LZTkFUE4GIMT9sEQANnfMsCdMvCoGkS1oZO78ZxBhbQRyYxxsaxJkDMtAECYBL4DULAAihZA8YJo0aJY8eKyosVlhQtihXMieXMgZ/6bcmdBzqxo9izInhHLmEKlT0imTUjzxhW4ozj2CIklwCCxV+VFh/KdMvqRcLLTbhxZXQYNpwIkDMD/LAnIK0lrb8aaHMGb++OtgwgOp4luFwjLrxHX36NsfUzcFU448BIv7INP86GRUGgqQJABwupEo1+RErsorD5s6rBs+qhExjg02pMzA3JmIUNDza7gTp8/DwFQsiBeuihZ9l6u9INC2XtM2aJsyQK6YEE0Zx5kzX3DJmcWCBgQyZwSTZ8US58U408geWPy3DHF1FE8e5jCGqQl9CqFtdBPp1JX+OFVjDFoaTQ8U4aAM8B/OwSSGEkVNwWjg3hzf4J1IN7+FMEFmhUmrbtD3vSItOMpfn8U3idB4RhLGpoKyAKXC6BFnffKwZM62ag2SvxbYvI7fOqgfNqwTPooOmN8GTTiOQ2yZiAr5wjzgCAVFC+IlS7KVCziyz/gKj7gyj8QK96TyhcVixfE84RJQIBBzhz0xqwZSJnTIGNKhD8hkTaOThuX4Y4pcEYI7GFSUj8lvJUSzCNtOE/UsMbIKAoYgNfPIf8PkfDPKYGgFUSSSIqZnP4unJk/wfI43u4E0fkcyfMyee1t8saHxB1PCXtf4A/HKxxjyZxMWxYsAOB6MbhfLh5WQ4lqocd1kpLfkTgDRN4glj+KSR+XypxEZU2JZk2DbEE/IGyL8+dA4ZxI8QK6fJFU+Z5S8Z5aAR0pldAJXshA7vw3AKA8MPNnBkD6pEj6JFKQDeS4owrcMSx7mBDZTr2YTdl4kaTtpCClAD9tFwkD8N8CAI1UUJFmrlU0P0qwOIa3CSQ6nSF5CAZDNz4gbQ8j7YkkHorD+qfInuSJB2eBSwXQVMC9UtnH1fTnTcqxHfSkLhqrl546QOYOE3ij2PQx2cwJyawpRPa0eO4MIndWIm9uWf6caP7csvx5saIFmbJFgtD6ldCRUvmBUvFBsXhh2Z8ZyJ6D6iJIf2QDkYxJkD4pyp9Apo1LQglhFB/TRbpeSNn7iGK6DotlSKPgz+FDwhngfzcEKKSkPFrJXt7Em2Duh7c6TnA4BbUBK6+T190lbw0lej0neMdAA0FBXIkzGSIXoSVxIrcLMQ/K6M/qGC9blRI66ck9Suw+BmeAmjpEThshZoziMiew2ZMKOVPyOdOyOTPovFnJvDmJvDnxvDmxgnlE8YJs2QK2YpFWsUguf48rf48tWUALC6EfyhZgkP0nBrJmoGwgSAii/HEUf1w6bUI27h3ubjnZO4JiswOPV4E+lBt+3CLi/2cM/lElEFQ6o5FkI1n93ThzX7zVMWiBtEvw98WhIUSvcPzBl9ijifLHoWWhohdyweV80Rt52LtFjCfVSlHNyvEdjKQu5ZReBruPzhmg8YbI/FFS5jgla4KcPUnMnlbImZbLmcHkzUoJABDPmxPNmxPJn19WNC9bsiBfvCBdvIAqmBfN/X8A4BsDQgymvzMg6A34E1K8cZmkfoXQBsKxWLLbURJVWw4phYL7AQQMwH89BBISSEWmjNZmnOlRguUxou0JktNZosdl8ppbpE0PCTueEQ68xB1JUDjOkYQAyAGXcsWuZONv5iuHVCpFNqrFvlJN7FRh9aix3qmx+5Q5g1TeMDV9lJY5Ts+epGVPkrKnsNnTmNwZ+dwZ2dxZdO4sImdWDGqRhSNFP3rfP7v/XwGA2uLvDGROC9YXTQsbg2XpEwj+JCp1VOb5K+w5Ps3Dj0TVkkPLouDPpkfAGeC/CgACWh+qsRprDC2QhnYI2J8muF0krrxOXH+PtC2MsC8SfzgOG8CSOsmDlsRdyBa7lIG/lq18v1TpWa1aTCsz/jUzsYuZ3MNkvdNg9amwB2jcIRp/RClrTDlznJE5QcmcVMyaVMyeEmYD2ZwZqZwZkZwftY3A3P/i+P9UPxj4gYGwHJoQE5AgldKveC2fuv4cVc1CAdpcv+TZFfnP1D+rBBIsi5AhoJXdFIy8caZH8VaBRLtTRGgw9Cph7R3S1hDinnC8dwzUBwelIs5mgnNZohfSsZczlG8XKIdWqUc1ase+0ol/o534VjulR4f1jpncq5zST08dVEkfVc8cVc8cV8kcp2ZM4L5hMC2fNS2TNS2eNS2aPQ1VNZmC47eRH8EQEHT+/a4vtL5waOjH6JCwHBKOEWVMCicNUBlT6KQ+hZtF9A3nqcqmGLQcnAeQMAD/6xBIQFPCKKq1nMF+rOkRnEUA3uYE0VkwJbz6FnnTQ/Kup4QDUYJ10RzJ0+miwZkgOE3uAk/pRrbSgxK1iDqtmBbduHbd+Nd6SW/1WN06yT0aie+Uk/uUuEOq6SPM7FHNrDGNjDF6+hghYwKbOYnLnJTLnJTInJLInBIR1jNCBn6Y+18Y+POVP33DHwBAeUCMP4HmT6D4EyjWIOZWMXXzFbKKuTwaAw+PIuEM8L8OAVIKSTSS1duFM/XBW/gTbAIJTmcIbhdJK2+QN9ynbH9C3PsCf0QwHXYyTexsBjjLkwvmKF1JV75ToPqkWjOqUTe2VS+2XT/xjWFKt2FKj05Ct1p8j3JKnxpvUCNzRCtzVDtjVDV9lJ4xRkkfJ6dPKGZMyGdMSmVMIjOmJDKmRP/A4Pvd/Y87/Y+XP47CdDH9RyEkmC9D8Cek+BPojEl0Yq/8zWLK6pNkmp4cvIIaAZdA/5UQYJmy2ptxJj54c1+CNbQwDu9yDr/8KnHtXfKWx0SvCPyhWAXfJExQKvI0X+QMT+oUi3YuVflapuqDEmZ4rW50s35Mq0Fcu1FSpwmr2zihSzv2rVpCj1ryO3VOvwZ3kMkbUksbVkkfUeKP0vmjFP4oMX0cmjhLH5dOH0ekjy/LmBSBBBla5FtmEG6mmRbspxGmCOH59y9BErxL0AmI8yck+eOS/HEJ/rgUZ1jhbhltfTCFoi2LhOcHkP9fYvCP6wEEkleS1liraHyYYOqLtwgg2J4gOAUT3C8RVt8ibnpI3PmUcOAl1idBIYAjdZIvejoNcSqFeCZF5WKayq189dAK3ch6g6hmw5hW48QO05RO04RO/ejXzJi36vFdmknvNFJ6mZwB9dRBdd6QatqwctoII22Ewhsl8EYVeWOyvDFk2hiSPy6RPi6RPiGWPi6eMS6WMQkyJkHmD/3heKEEtAisnz4hxp9Yxh9fJrA+Km0MlTYmyx+XT+7DXcujuBwk4FVl4EEhBAzA/3sIZAiSKq7yRofwJkdwZv7QlLDDaYLrecIKaGEcadtj4t5I/KFYrF+ybGAqEnrUcwomKF45mK12JUPtQZHWsyrD53VGL5uN41rNkjosEjtMo9v1otq1Yt7oxL/VSuzRSunVZPUy2f3qqQPq3EFV7iCDO0RNHSaljuC4w/LcEWneqGzaqFTaKIo/iuaPIfhjIuljIunjIhASE2IZE2KZ48sgMMahzZbpE6Lp42LpkOnF+WMS/DGJtDGEwPoI3hiaN4rhjsjzRuVYg4p3SilrT5AwZCnxpb7FIP4p+mdmALQCmmqLMTiANz6MM/UlWEGDoUTnc3jPK0RoRuwR0SsC5x39fYswTzSIJXU8ln4qUe0CT+N2rmZomV54teGLeuPoZrP4NovEdrPYNqMXbTpR7VqxrzXj32ol9WinQBgwWb0a7D7BjMEAgzNA4wxSUwdJqUPY1GEcbxjDG5FKG5FOG5Xij0ryRyQFMKD4o8j0UVTGKBp6OYrijyEFpkdAGkWmjaG/aVQybVSKNyrHG5XnDitwh7HcUSxrgHAzl2KyHCut8O0BSrAQMAD/MQQoqA8mGMrpeOENvfEmPtDjUmxPkpzOQhMCq2+QN94nC1eGHknA+qfIBHGXBbHFj8UQjseoBrM0rmZo3ivQelJu+LzGJLLB7GWLeVyreUyLSWSzXmSLzss27Zh27fg3OolvdZK7tZN6oKIo+Z0aq1eZ1ctg9TFYfRROP5kzQEodwHEHsdwhed4QhjcsxxuWSxuR449K80cl04VIQCdCCV9K8b9f549Kpo3IpY3Ipw0r8CD3K0IADBF4QwRWH/F4JNXYXRHaSgYvGkXCAPxnIZBAILBMGc3NWIODBGMfaErYJojscJrkcg56XtB6wbqgPc+Jh+NxfsnyxzmSxznifrHyfi+UTiWoXeJp3sjSfFik96zCKLzaNKLONKrBNKrRJKJBP6JR70WLTlSbTvQr7dgOnYROnYS3OgldWoldmsnd6sk9KknvlFnv6Kx3NFYvhdNH4vQTOP3EVAgGfOoAnjuE5Q3JpQ3L8EfkeUPyacOYtGHptGFZgcvlecPyaZAwwnPekCJvSBF6y6Bi6iAeSizQzyFxhwgvX1H9wyiqRjLwoBACBuA/DYE4AoFRktZYpWhwAGfsQ7T0J1sHke1OkpzPEj2vktbcpWwOIe98Rj4Yi/NNUgzgyAamivslII88pwS+VDvHYl7ha97K0XpYrP+k3ORZlVl4jUl4jeGTaoNntfrPG3SfN+lCqaBVJ7ZdN65DL+61TvxrrcROZtJb9eRu1ZRuJVY3ndVDT3lHZfWSWL0kdi+Z3Uvk9BE5/QRuP447gOUO4LgDOB50VOQOYnmDwitYKGMM4r5pAM8VYjOAT+0npPYTU/tJnD4Ku4/C7qXGtNF2XyAytAUL5uBCCAn3AP8xAyBlKVAfbLgfZ3qYYOFPtA4i254gO54he16lrL5D2fSIuvMpef9Lsk8iIYCtEJgq5ZeEOByJ83uueipB4yJX62qG9u0cvQeFRmGlJqHlRiEV+iGV+mFVeuG1+s/r9SMb9SKbdKNadaPb9GLbdWPbteM6NONfM5M61ZI6VZPeqqR0KaV0M1IgDGjsd2T2OyLnHYXzjpLaR0ztI3L78dx+PA86Erj9BOEJdIS8Dl0XKhUSIbWPkNpL5PYRuH0UTh+V3Utlv6OweughxTSvYAKNKYOShjfQIOEm+F9DgEBK4tAUG4z+XrzxIZy5H8EykGgVSLY7RXa9RFl5k7bxIWX7E8qeF2TvOJI/CxfIkfNPWXbohfShJ4zAlxrnUjQvcTWvCxi4l29wr1D/bpHuvRKdh+U6YVX6z2oMIur0Iup0Ihq0XjTqRrfoRrdqR7dpxrzSiO9Qje9QT3itmvRGOalTKalTOfktI6WbxuqhsCHROD0UTg859R2J+00E7juc4ITI7SVyeol/+hIptZfIeUeC1ENOhd5FTn1HZb+jsnpo7B4a6x39aQVtSwBekSy1TAKaAIRTAQIeBfoBAFoOTTDC6HrhjQ4RzP2IloFky0CS3Smyy0WK503a2gf0LWE0r0jqwViybwoxgKN4jI089HLZvhD80XDVkwnq59jMK2maNzN1bucY3MnVv52rdztf+26RzsMyvaeVBhHVBs+r9cNrNCNqdZ7X675o1H7Zohndyoxt04hrU49/pZbYoZLQoZTUoZz0Wjn5jUrKW3rKWxqri8buonG6KZxuSmo3lQOJktpN5HSTUrsJnG6S4CX01W96RxYAA8HD6oaOgpdUdg9UYkFV1lvGw1z6Gm88Bgc9eRcGAAED8CMESEmkooa05ja84SGCqR/RPIBoAbXCJKfzVPdr9NV3aRtCaDsiaPuiyUcSSf4s4jGWtE8s8HqM3hdC849SP5WoeZ6tdZWvfTNL/1aWwe0cvZs52jfztO8WaT8q0Qkr139arve0QudZpfazaq2IWq3IBq2oRq3oJs2YZvW4VtX4NuWENqXEV8pJ7UpJ7YyUDiVWByPlDYP1hs7upLI7KamdNE4nLfUtORU6J3M6CamdpNS3ZI5Q0BUKu4vGeksXHMmsTjLrLRV6+ZbOgliisjpp7Lc0dicjtIDushUrpygJb6hHwAD8OQSydGmN9TgDIQDHCGZQJ0ByOgcBsOoObf0j+vZw2p4oyqF4sl8K0Z8l7xMv4RUmtus+9tBTlYBojdNJmhdTta7zdW9l6t3O1ruRrXMjW/NWnta9Ap0HRTohJTqhZdpPyrWeVmiGV2mF12hG1jFfNjCjGzRimlTjmlXiW5QTWpUS2xhJrxjJrxjJ7YyUdgarg87uoHFeU9mvqZw31NTv4rwhCUTmvKEIBJ2w39DYbyBaWJ1U9hsqS6DvJzT2G5rwe5JfMS68pJi7yUvKwkkA+b/LwD9zIky4M0aGIKm6UtHIm2DmSzTzJ5n6Ei0DiA7BVLcr9JV3GOseMbY9Y+yKpB2IIx9JJvml4I8mSu0LB9vvIPbcIx99rhoUp3EuSfOygIGbWbo3MnWuZTBvZDPv5Gjfy9N+UKgdUqIVWsp8UsZ8Uq7xrFI9opr5olbjZZ1adL1KTKNqfLNyQotSYgs9qZWW3EpNbqOmtFHZrwRqp3PaKexXFE4HWSAqp53EaSdyOkiClyThCbuDIhCN3UFld1BY7WSBKCzoInSFDf0QKruDHt+odDKUomUih5aCH6yChAH43gcroJVd5A0PEkwOk0x8iNBnCPiT7c6QXS7Tlt9mrHnA2BTG2PGcvj+WeiiBciSZ6JuM8Y4S335PZOs1zIFHdP8o1RNxasHJzIsc7Wt8net8nSs85tV05s1MzTvZWnfztB8UaD0q0gwpZj4uZT4tV4+oUIusUn1RrfayVjWmXiW+gZ7YSE9qpiY3U1nNJFYLmd1C5rRQOK1kTis5tZWQ2ob/LpJAxO/Hb1c4r4icNjL7FZXTRua0kVltJFYbKQUShdVG4rQRWW0UdisNUhv9ZRn9yFUS00gWagbgfgD502cAaEGELIpqg9HfTzA4QDA8QDA6TDD3I9ucpDhdpHncpK+6x1gfwtjyhLb7Be1ADM0nkeyXTPCJk/V6LLrhMmLnLYLPE0bAS9VTcRrnkrUup+pc5WlfSdW8wtW4zte8nal5J0vrXq7WgzzNh4XMx0XMJyXq4WVqkRVqUZWqUdVKMTVK8XX0hHpaYhM1uZnCaiKxmkjsJjKnhchpwaa2YLmtWG6bQK14XiuO24rnthIEwnKhl4LzNiK3jShABRK7jchuI7DaCGyIJQoHYoDAaaGwm6nsZmpKAz2ykLbjGB5PlVry9Iv4++gfWwIJ+mAU0UhWxwuntxentw8vaAZIVoEU+2C6+03GyjtKa+4x1j2kbQmleUVQvOMpvslk3ySFA88lNlwHGy9Ke90m+zxlBEQpn4xVO5fEvMTWvMjSuMhSv5qqcSNN7Xa66r0s9Qc5Go/y1EPy1Z8UqjwrVn5eqvyiXOllpVJMNSO+hpRYS0mqJ6U0kFgNRFYjjt2I4zQpcJvkeM2yvGYZXrMsv1kurUWe3yLPa1HgtSiktWDSWjC8VnleK4bXiklrxfJaFLmtuNSWb+K04NktOHYznt1M4jQTOc341GY8p5nAbiKyG8msBkoYn7x8u4IiSRL6eFY4DyB/bgAQSGiDvOZmrO4enO4+nIE3wdSXZBFAtjlFcblK97yptOoOY809xoYHtG2h1P0x1CNJFN8UwqFoyU13wapzousvyO+9R4HyQJTyqTjVc4nqwQnq5xJVL7FUrqYq3+Qx7qQr389UeZSlEpKtEprLeJJPDy+iR5bSosqUYyqV4qvICdWkpBpcSi2WXYdl18tzGjCcBgVuo0xao2RaAzqtEZnWiOQ3Sac3S6U3SaYLTtKaJfnfJJ3eLMNvkuE1K3KbMNwmTGqTArdRIbURw25UYEM4EVIbFXmN8rxGeeh6gwKnXpFVg7sVS3BYhZGUgTbHLXn8EX95/XMBQCElxJFyVEmV5Qq6giRgeABncpRkcYxsFUR2OEd3uUxffoO25h5j/UPG5hC613OadwLNL4XiE6+wI0R01QWw4hRiy0X8vjvUI2G0gBf0E9FKJ6OVTsfQzycoXUlWus5h3OYq3U1jPOQrPcpgPM6iheVQn+ZRIwppUSX02HJ6XAU1oYqYVIVLqVbk1Mqn1smm1slyG5C8+mVp9ai0ehS/XpzfIJ7eiExvRGU0iWY2LctsRGQ0IjKbJITKaJRMb5ROb5DhN6D4EDAyvEY0rxHJbZDlNiikNuBSGyAA0hox0Jca5Lj1GE6tbEqFzMUwRQsHOSlZeCs98icGQDAQJI2XpNljtHfh9Pbg9PdhjQ6TzP0pVscpdqcojueo7lepq27T1z2gb3xI3RpG2fuS6pNE8YnHej1BrLsG3E+AVadktl8m7rtN8gkhH3tGCYignnhBDo6mXoynXk2m3mTRb7Np97iUhzxKSDrlcSYpLIcQkYePKiTFlFASyvAJFYTkCmxKtSynRppbg+TViqfVifLrAL9OjF8nmlELMmpBej3IqBfLagCQ6gUSnjeCrIZlmfUSGfXiGfUiGfUi/HrAh44iafViafVoXoMMr16KVy+dVi+VVo9Iq0fw6lHcGhS7EhWXJ+l7HqOsIQUlAbgQQv6sAEDzwRg00URObzdefx9efy8OGhL1I1keh1phh2Ca62Xa8pv0Nffp6+7TNz+i7nhG3feScjCasDscveWe6Ipg4B4otv4MZscV4t4b+MP38b6PCQFPSSeek85GUS/Ekq4mkG4nk++kkO9xiI/ScCF8fFgGLjwLF5mLiy7AxhXLJ5YpJJfLsipQqVUSvGpRvsDxGbUgsxZk1kDKrgFZtSC7DuTU/6Hchj+UI0RCoMy6b0qvB+n1Iun1gF8nmlYvmlaHEBIFHasluJUIVql4BFdy0x4ZBTy8jx75EwMAbZBHKTJldHcRDQ6S9PcSDA7iTXyJ5sfIVieodmdozhfpntcYK+8woInhB7StodRdEeS9L4h7n2N2hCDWXQduJ4HncYlNZxW9LhH238Aduos9+gh/PIxwKpx4Lgp/ORZ7I4FwJxl7jyX/MFXuMVc+jCcfkS7/Iks2OlcmtkAqsVgyuXQZu0yEVwH4VSCjGjJ9VjXI/lfl1IK8uj9UIFC+QMIrubXflFMHKbtOgEQdpIw6kFErAhFVCzJqQEa1SFqlSGq5CLtE5OYzSVs3GSn4mULInxgABAopQ5HS2IjXP0TU20/Q34sz9CGYHiNYBpJsBFWQ62W6503Gylu0NXdoGx/StoVRvSLIe17gdj2T2nIfLD8HnPzAigDktmCF3Zex+68rHr6j4P8QeyJM8Uy4/PkohSsx8jfi5W4nyt5Pln3EkgnjSD7lSj3nI6KyELF5hosxvAAAIABJREFUqMQC0ZQiwC4FvHLArwAZVSCrCmRXgRyBcqtATjXIrQZ51SC/RuD7WkiFdQLVfn9ZAx3zf+g7GLkC5dQKckgtyKmBWMqqBhmVIK0cpJWC5FyR09eQ2gaCj5+BCyHkTwmABAIpiUUreyjoexP0DxB090CfKGzsS7A4TrI5SXU4S3W+SPW4Sl9xnbbqNnX9ffqWUNrOcOqeSKLXc8z2UMT66yKuQcD5KFgTiNp1XnHvZQXv65ijd+WPh2BOhckEh8tcfCF9PVr2VpzMvUTZR8lSYaxlT9hiz7hikRliMTmiiXkiKQWAUwx4ZSC9HGRWQL7PqxSoCuQLVQkKqkBRNSiq+abiWkjQSQ0oroaORTUQBpBqBRKc/0BCCENeLcitgaDKrgCZ5SC9BPAKwUsW8DqIJNMkUfC2AeRPCQA0HSaDoljI6e7H6+7D6ezGGuzHGfvgLQLI1ieo9mepTucprhep7pepy69R1t6hbQ6h73hK3R1J3v1ccddT2a33xVadBw5HgYO3yIbjkruCZfddkjt0XdbvrtTxh9InQ6XOPpW6/Fzq+kvknVjEgwSxx0kgNAU8ZYHnXPAyA8TngJQ8wCkAacUgoxRklYPcCpBfAQoqBL6vhE4KKkBRJSiuACWVoKQKUlkVKBWovBo6llVDV6BjNSir+aYSIR5CZmoFqoEoKqyCfn5uOcguARmFgJ8HQiPBpm0SWLgZQP6sACDQSBxTRnMLVtcLkrAVNvcjWwVRbc9QHM5RnS7QXC5Q3S9TVt2ibnxI3/aE7vWcujuSsCdccXsINBzkFASsDgKXQyKbApF7zskcuCR1+Lqk322ZwIfoU6HI88+QlyMkbkYtux8LHieCsCTwJBlEsMHLNJCQCZJzACcX8ApARhHIKgF5ZSC/HBSUC6xfDgrKQGEZKC4HJQKVVoCyClBeCSoqBKoEFVWg8oeqQZVAFdWgogaU1/wLFaUCWkqqoJ9WWAbySkBOAcjMBZx0cPeRiLUdEoWGR0WRPyUAEkgZoiTDVV5ri6LOTqzuHqz+foLRYZJZAMX6FNU2mOpwju50lupynrL8Gm3dXfrWUPquCPqeKOq+F4RdT2Q33RNZfgHY+wPL/cDZG2wNEt8bjDpwEXn42rJjt8WC7i07/UjsXKjYlXDRO1HgcRx4kgCeJoJnieAFG8SlgeQMwM4CvFyQngeyCiFf5peCwlJQVAKKhMcSUFIKSktBeRmoKIVUWQaqy0BNOaiuADUV0LG6UqAqUCvQtytVoKoSVFaAysrvhFSC8gpQVgb9tJJiUFgAcvJAdjbgpYHTwaJMbRQafqgW8ucDQEICekoKyVJWfaOC9nZFwcoIguEBoskRaFmE3RmoELI/TXE6S/a4TF11i7YxhLEjgr47ir43iuQVrrAtBA0NB50BNj7Aah/w9AHbTyzbd0784EXRo1dBwE2RE3fB6QfgQii4EQ4eRYOncSA8HlJEIohOBYlpgJUBUrMAPwe6H+cWgPwiUPhdxQKVFEF+LS8GlcWgqhhUF4OaUlBbBurKQUM5qC8HdWUCVYC6SlBfAeoFX6orB7XlECc1ZQIkKkBVOQRPVSmoLAXlRaCkEBTkgdxMkJUOXjwHXl6iJDIC7oYRPxsA0Mdoy6AUtKVV12G0tivq7MTp7SEY7IeWx5n6kqyDyDanoK2SDmcorucpy69S1z9kbA9X2h2ltDeaujsSv+uJ/JZ7y1ZfAc5BwNIbWOwByw+DnSfE9p9dduiCiO8VEHgDnLwNgh+Ay6HgTgQIjQbhseBZDHgSC6KSQSIXsNJAajrgZ4CMLJCdA3JzQX4eKMwHhXmgKA8U54GSPFCaD8oKQEU+qCoENcWgtgTUlYKGMtBYBprKoaNQTQL9+aSxDPo2ISG1pRA5NSXQT6guAhUFoCwPFGeD/AzAZ4Gnj4CrsxgGgxSHhoeX+o+C/KvoJwAA+uwwlAxFiuGBYW5V0N4OdQIG+7EG+/BGB4imRyEGbE+S7E6SnM6Q3S9Cz4zY+oyxK0p5TzR99wvirnDFHY9RG/4v9t7Dq80rz/9/g21Qoaj3ghBCIIFEk4TovRcB6nQwHdvY2AbTTDEYML25lyROHMeOK7bBuOBeYjt1JpPJzH6/3z2/9mf8ziMns7O7szuT2dnNTAznfZ7zgJEMl8/rftq9zx1zy+5D0g4YamCsQkEzKtrd67rcmnqxfQC7DqBjFN0TGJjB2BJmjmH2GGaP48gZvHcO5y7gwiVcuoQrl3D1Cq5fJWbl1eu4fR1r1wkDvbOMu8u4fxMPbuLRTTxZxbM1vFjDyzv47C5e3SP0+h5e3/13ukPo1V3i217exfO7eHYHz27/oCcrxLut38Dda1i5iCtn0dcBTciWjWOXPN81AFzPTKeIYn0DzYxgByuknKmtYWpruGE1vMh6XkybMG63MH63wHWekjB3SGyek5Yek1WelFUcFZYfYVcsMR0zpKJhZO1DQit01YitQkETKvegvgstvdi+H+1D6BxBzzgGJzEyh4klzBzGwgkcfw8ffYwLFwldvIBLF3DlU1y/jBuXsXqF0O0ruHMVd6/i/jWsX8f6Mh7ewLObeLmK12t4fdt1XcMblz7/UV+s4cs1fHn7B33u+tdXa/hsFS9WXLqF5zfx9AaeXMeja7h3Cbc/wbkjqLK7MZmeG07A850CwJNEInuR2SpveT49yM5QOZnEAulqtraKE1HLM2wTxe4SxbUL49v5KR2izD6xaUxqX5JVnPQvOyIpXxJUHuZULPhaJzYXDiGzk2DAUIO4KuQ3onwXGjvR0o0dfdgz4GJgDAMTGJ3F5AJmD2PpOE6fwYcf4sOP8NGHuHAOl8/j2idYvoCVT7F6CWuXcOcS7l/G+hU8uEpo/RoeL+PFDbxewRe38cUqoT/Y+pe38dVtfH0bX68S+pVL3/z4lc9v4bMbeHkDL5dduo4X1/DsCp5cxoOLWPkA80OIj97ks7F5kvSOAeBJInnzKOJk30CLKxCqYGsq2aFlbG0lJ6qJT7QFdgli23iJu4WpXaKsAXHRlNR5xN+5IHXO8yuWOJWH2aVzFOu4W8EAMjoQ1wxdFQzlyK5D5U40dqC1C2092N2HzkH0jGDoEMamMTWHuUUsHcWx4zhxEqdP46P38emHuHoO1z/GzY9x6xPcvoC1C7h3EeuX8MClh5fx6AqeXsWrZXy58oOhf+MSYeur+GoFv1rBty795hZ+s/KDvl3FN7fwxXW8uoZXV/Hqyg/67DJeXsLzi3j0Ma4fR2cTAuVbNtbJeb5bAHiSyN5kjsZHUcAIsjJVDpbayVI7iMJoeB1Xv50fs5Mfs4Mbv5Of1CHM6BHnDYtLJqWWabF9Vli6KCg/zKtYojtmPUvGkNePtN0/MlBBMFDRhuZObNuHnV3Y04d9/egbxvA4Dk1hZg4LCzh8GMeOEKWY907gk/dw5QNcO4vlD3HzI9w+h1XX9d55rH+CB5/g4UU8voSnl/D8Ml5fw9c3XIbusvXvbhHXr67ji6v49TK+v4nf/ZG+d33DN8v4/Ao+v4w3l1z6FJ9fwutLeHURLz/Bww9wdhzOPDcu23Njw8C7BIBrXZA3jyJNoiuL2UEWVpCNqbKziJSgkhPZSBylYWjmGrdxEnYJUjpFGb3C3CGRaVRkmRLZ54RlS9zyI6yyRR/79Kbig8jpJYpCMY2IrIa+Apm1qG5D815s70DbPuzuxr796B/CwVFMTGBmGgvzOLKAows4togPjuHSaVw9g+vv4eb7uPU+cXP9DO6cxf2PsP4RHpzH4wt4egHPL+DFRcJ8v7mG39zEb28Q+v4mvr6KF+fx5iK+u47/tUzon5Z/vLmB31zHV5fwxQV8cdGlCz/qPD4/j5cfYfUo5vbBGO5O9fL8+f8oP7feJQBIJJI3iR3qLcuhB1mYQWZGsJXojqlLWWHVrIg6bmQ9x9DMiWvjJ+3hpnXxs/YL8oeFJYdE1mmBc55fvsStWGKWzVNtE+6mA8juQfIulx+ohr4SufWo3I7mdmzbg7YO7OlCdx8G3zJwCDNTWJzFkTkcnsXxeXx8DJdP4OopXD+N5dO4eBwXjmHlDO5+gHtn8fAcnnyMp+fx/Dxh6K8+wZsL+Poyvr2G75fxu2X86jJensPTDwmD/v4y/s91l67hn6/hn5fxu2v45iK+PI+vP/lR5/9Fn3+EB8dxeQJtTgTLN20m0qOf/+/yM+rdAsCDTPLikAXR3oEl9CAzPdjCCLbR1Q6GtoyprWKF17L1DVxjKy9+JzdlLy+jh587yDcdFJRMCG0zwrIFIhmoWGKUzZKtE26mA8jqRuoeggF9LdEfyKpFRSta2rFjD3Z1YO8+9PZhaBCjw5gaw/wkDk9jaQqLkzg1h/NLuHQM147j6nGcW8KHC7h6DGuncfc9rL+Px2cJ+37xETFhv/4Yr8/hzXl8dQG/voxvL+GrT/DqIzz7AM/fw+cf4vuL+L+u4v9+q+v4X1cIK3/9AX79Mb79mLj++pzr6rr55kN8dhJ3F3CmD/Z0dx8fzw0ASO+USBQS3Z8qy/FVmmlKi8sJ2OkhDqamjBVWxYrcytY3cmK28RJ28VM7+Jl9/LwhYdGoyDwhsM8KnAuciiVW+SKjdJZsO+RuGkJOD5EPJG6Dfit0lUithaMZzTvRthu79qBzH/b3YKgfYwcwfRAL41g8hLkxLI7j5BTOLeDiEj5ewHuzOD1D3Nw8hjsncf8UHp7C4zN4+j5efIBXH+L1R3jzEWHWX5zDl+fwxYeE3b85i8/ew2dn8PlZ/PZj/PNF/L+X8P9dxf/+FA+P4dYsXp/Gd+fw3Uf4zVt9iN+cJfT1aTxewo0JjDcjLHDTO94Ue7c8wNueAJlOFhi8AwoYyhJmkJnpYoAZWsrSVrDCa1hRRCDEi9nBTdzNS9vHy9rPyz8gKBoTWacE9jlu6QKnfIlevuDjnPGwjKNwiIiF0vYgvgX6OkRVIaUGtiY0bsfONuzeg65O7O/GUC9G+zF1ALMjmHFpfhQnJnBmGqemcHKS4OH9GVxdwOph3DmG+8fw4ASenMLzM3j5Pl6dJcz9zft48wG+dOkr1/WL9/H5GcLQvziDb8/if3+M/+dT/P48Vmfx/hBuTeOL0/j+rEvv47fv4bv3iOtvzuCzw1ibwMV+VGZCxCG6Au+s3jkA3orKpQr0tIBCFwMWZpCVGWxnhjiZmgpmRC07qp5taGHFtXGS93DTu3jZ+/n5B/jF43zLFM8xyy1fYJUv0soWfBwzHpZDMA275exHWgcSd8DQgIhqIhzK3YqaZrTtwO527NuD3g4M7MPBHoz3Ezo0gMkhzAxj4SCOjOH4OE4ewqkJfDSFqzO4NY+1Rdw7jIfH8fQUXpzGq9M/GPrLk3hzGt+8j2/eI/Qr1/WbU/jiBN4cxxcniU9fn8DKDM4O4b39uHaQsPXvTuN3p/H7My6dxu9O4cvDWD+EtRGcaIMlwc3H+93Nht9RADwoJJqM6pdOCyxmKM1MpZWhsjLVNsIPhFWyI2pZ+gZ2TCs3YRc3dS8vs5uf2883jfDM43z7FL90jlu+yCpfpJfOeztmKJbxzQQDfQQDCW2IbkBEDfSulKC6CW3bsXcnutrRtxeDnRjpwsEujPVgog9TA5gdwuERHB/FqXFCZ8ZxfgLXp7EyhzsLuH8Yj47h+TF8dhyfnyIs+9FhPDmCr07j1+/hV2fw7Vudwq9O4qsTeHMMr47i2RLuzWJ5HOcG8EEvlg/i5QK+PY7vT+L3J/FPLn21iAdjuD2Mm/0YLINctHmL5zu6WPodBYAofvhQ2CpvWSZN+WNCrLIx1Q5maDmRDEQRyQA7djsnsZ2T1sHL7OXnDfJNI3zzOM82xSud45TNM8oWGWXzNOeMr3XCq2jEI7ffPX0fkncitgVRWxFeieQa2OrR3Izd29G5Ez270b8bg7sx3IGD+3CoG9N9WBjE0WGcHCWs//QY3h/FhXFcn8StKazNYn0ejxfwfBGvDuP1UeLT29PEp9+cxHdn8N0pfHcC350k9O0JfHUUXxzBmyU8n8f6FG6O4sIAzvXh2gE8ncLn8/hyHr9awK8X8GoK6yO4M4S7gzi/ByVxbjRf4oiBd1DvLgCeJDKFSeZqvQPyfZUltCAzLdjKCLExQ50MbTkrvJodVceMbmLF7eAktnPTOnlZBAO8whFOyTjPPsVxzrJLF9hli+zyeXbpLMM64Vs0Qsrtd8voJMqjsa2IrENYFYwVKKpBYwN2t6JzB3p2om8XBnZjaA+Bwfg+zPRisR/Hh3HqIE4fxKkRfDCMiyO4PoZbh3BnEuvTeDSD53PERH5/GjfGsTqBFwv4zUliUv/tMXx/nLh+dxS/PopvjuKrI3iziGezuD+BmyO4OIDzvbg5hMejeD5G6NkYHh7EvSHcG8CdfqzuR58NWn93D9K76ATeZQCIqiiVSeFH+QTk/+AH1FZ6qJ2hcTLCKliRNUxdPTO6hRO3g5PUzk3fx8/s5eUOcAtHeCXjPNskr3SWV77Ar1wSVi4KS+e4tklG8UFqXv/mzC4ktxMMRNVDU43ISmRUonIr2prQ2Yp929Hbhv07MdSOkT0Y68BsF4704fgATg7h1BBODuC9fnwyhOsHcesg7ozh/jgeTeLptMumR3F1hLg+m8GvDuO3R/H9EXx/GL9dwndL+M0SfrWIrxfwepaY9dcPYXUYV/twuQ839+PhEB4fwIMh3B8krP/eftzpxVoPPtqGuhQ3hq/HO1gSfacBIKqiZJIXnyow+AQWupyAmaG2MUKJzgAjvJIZRSQDLGMzN24HL3kPP20fL6OXlzfALRzmmcf49klu6ZygcklSeVhasSgpm+PbJ9nFIz55A5szupC0GzHbEFkPbTXCKpBYAUsNtjWgoxndrejZhv4dGNqJg7swsQdzXTjSg+N9ONmPE/043kvU6T8dxPIgVoaJbPX+KB4dwt1x3BjB1SFcHsTyEBHHfzWH75fw+0X8fgHfL+C3C/h2Dr+aw5cz+GwKzybw4CBWD+Daflzuwq0e3O/HwwGs78e9XkJ3u7DWidW9mC6FTu7uRX3n1ke86wC8LYx6cSiCaF9FAS3ITA+y0FU2eoiDrnExoKtl6us5xmZufBsvaTcvtZOX1cPL6+eaDvDMo3z7pLBsXlp52L/qiKLysKxsXmif5JSM+uYNemZ2uyfvdovZhqgGaGsQWoHwMmRXoqYWuxvR3YTeFvS3YnAbRtow2Y65vVjqxNEunOjFsW4c6cJ7PbjUixv9uDmA1UHcHSam8+VhXBvCtQF82odPe7DSjxfj+G4Gv5/FP83hd3PE/bcz+GYKXxzCZ2N4ehDrw1gbwHIXrnTgeifudGO9G+tduL8P9zpwZy/u7MGlVjSnQMDc8q6tlN4AwMUAsUyIKjT4KAppgQQDNJXNV+2kacpp4VX0qFqWoZ4d08yJJ2IhdloHJ7OHk7ufW3iAax7lO6al5Yvy6iOK6iOKiiVZ6RzBQPGob/4gKbN7U1K7i4FGggFVJUJLEVcKZzXa6tDdiN5G9DVhqAWj2zGxE3PtWNiDIx042onDnTjcgfc6cakH13txsw+r/VgewNUDBADXB3B1Pz7txvm9uLQPDwfx5Ri+n8I/TeP30/jtFL49hG/G8PkIXg7j6RAeDBDRzo1OXN2D5d2E0a934EEH7u3G3d1Yayc070S80o38jkVBGwD8UT7AoQiifAPyiCZxkNVXZaeFljI0FfTwqrexEMfYzI7fzkncxUndy83s5hIMDPEtYyLHtF/lkrLqiLLycEDFoqx0TmSf5JeMMfIHqen7PBJdfkDfgPBaqCsQXIqIUmRXoKEWnfXobcD+Rgw04WArpnZgtg2LO3G4HUfasdRO3JzZi086cG0frnXhQjcu9hHWf2MAN/bjeg8udeLCbkLL+/CoD18cwG/G8NtxfD+Ob0fx9QjeDOHlAJ70Yb0Ha/twcy+u7cL1nVjdiXvtuN+Ou+1Ya8OdNlxsQGsyOO9YOWgDgD8aDmKlEIUf9WNdyEpXO+ghpXRtBSOimqnbyjI0sGJauPHbOUlEf4Cb2cXL7eMVHRBaxmWls8rKxeDqw6rqw8rKRXnZnNQ+KSgZZeUO+KZ1kZJcDOgaEF5NMKB0IsSOpDJUVGFPLXrqsL8eQ40Ya8ZkK+a2Y2EHlnYQ1/kdOLwLJ9vxYTvO7cH7e3G2E1d6iIz25n7c6MFyJ67txaV2XNiFT3fiejtud+BJD74+gN8exK9H8OUgXvfjeS8ed+N+J9Y6cHM3ru3Ete24tYOw+zttWNuOtVbcbsGcBbFyd18vz3fnvL0NAP7dk+QYZG6ot3+mb7CFprLS1HZ6iJOuKaeHVzOjaliGepaxmUX4gZ2clN3sjE5ubq+gcFBsGZc7poPK59UVi6rKJWXloqJsTuacEplH2fkDvpndLga2E/lAeA3U5VA44G9DmAMFZWiuwv4aDG7F0FYcrMdkE2abMNeE6UZMNmK2BQutOLwDR3fi+E6c2oVze3GlCys9WOnGyj6s7MXNdsKmL27HRy043YhTdbi0Ha/78NshfNOPN734rAfP9uHRXtzfi9U9uLETV1pxtRnXm3GzGWvNuNOE+824VI3dyRCxtmzyJL8jmcAGAH8qFqKTOWov/3QfZYlPsJWmstNDHXRtOSOMqAsRtdGYJlZ8KyuxjZXSzknv4Gb18AuHJOYxuX0qqGxOVTEfXLEYXLmgKJ/zc0wJzAcJBjL2kZJ2b4ppddPVEXWhPzAQYkW6E/Xl6KzCYBUO1ODgVkzWYboeh7ZipAYTWzHbgPkWLG7Dke041oZTO3FuNzH3r3ZjtQsre7CyEzd3EoHN5R34qBEnanGkhshrP+vCr/bjq1683ocXe/FkDx7swZ12rO7AjRZcb8TVelyrx40GrNbjTj1u1eCkGZlB7j7Ud2VxxAYAf3pcKL5khsLLL9Un2OyrstHUNrrGydSUMcKqmBG1LF0dI7qRGdvCStjBSmlnp+/lZPUI8gelJaMB9kll6YyqfF5dtRhUvRBYMetvnxKbx3j5A4ysbu/k3R4xrZsi69zfMqB0QmaFwgKjDVYHdpWhrxzDlRirxkQNRqsxWIHhKkzWYLYO841YasaRFhxtwcltOL/LxcA+3N6D1TbCpm/txI02XN2GC004XYNjVbjQiGd78KtufNmJV7vxfDce78b9nbjTittNWGnEcj2u1uJyDa7UYrkGKzW4VYmD6QgXuFMo7wQDGwD8h0NDopJoMookwSfQ9AMDoQ56aBldW8mIqGHq6pgGggF2/DZWUhsrbS8nq0uQ1y8pGg6wjCsdU8Hlc0GVC4QfKJv3d85ILeN80wFOVo9P0h5KzHYPXYO7tgYhFQhyQG6FnxnBZqRbUW1HpxNDZRgpx2A59pcSOlCGQ1WYqcH8VszXYakBRxpxqgXnduDmLmJGX2vD7W24vR0rO3BjB6634FIDPqjG8TKcr8WD7fiyndCrXXi+Cw934H4L7jRgtQE3a3G9GpercKmS0JVK3KjARSvaouHP8ngXSqIbAPxno+NB8fTmUfg6b0UeTW1lqO00tYMeWsoMK2dGVjOittL1DQxjEyO2mZG4g5nczk7rFGb1SgqH5ObRQPtkUNlccPl8UOWisnIxoHTOzz4pKhrmZfcxU/Z6x7d5Gpo2hdcS/YHgUshtkFggKYG2BPkWNNnR7UC/E/0O9NnRa8OgE+MVmK7CTBXmarC4FYfrcKyOCHhubMe9HbjbgjstRC672opbLbjVjCt1+LAMJ2x434k7dfh8B77YgVc78LQVD5twvw53t2K1Bjcrcb0SV8txuRyXSgldsePDIjhC3GjvQF9sA4A/N0ZkkhebzAnxkmfQgkp8VDbfUAdNU8oIq2BGVDEia+j6OkZ0PSumiRG3jZG0k526l5fVJc7v9y8eVtoOBZXOEn6gaklZtRhQMedvmxAXjfBy9jPTOr0TdpKimz0itrppqtxUpVDa4WeF1ILAEsSbYTNjpxX7zdhvQa8ZPSUYsGHMiakyzFRgrgILVYSO1OBsPW62EADca8LdZtxx6XYDbtTicgU+tuOMBR85CFt/2Yw3LcT1aQMe1WG9FneqsFKBm2VYLsU1B2H6l2z41IpPLTiUCoN4k+8vPRnYAODPj5GHazMxK5AiTfZRFvu6YiGmxskMK2dEVDIiq+m6WoahnhnTyIxrYRCZ8W5u5j5x7v6A4uFA+4SyYjaoeiGoZklRsxRYNkswUDzCz+1npu3zTdzlFd3iEVW3WVPppi5DkBMKO8GApBjBRcgpQksRukrQX4KeYnQXY8CKUQcmS4mVCzPlmK3AfAWWqvDRVtyqx4N6rDfgfhPuNxJT/ko1litw1YmLNpy14KyViO9f1ONNA17W4elWPKrGvQqslWLViZt2LFtxzYKrZly24LIZ5wqwLQpB7M3Er/9zm+kGAD//SJG9Sb5iqiSJHljMVNsYGjtDSzDADK9kRFbRdbVs/VZWdD09tomZsI2dvIuf0SHO7fMvHg6wHyIYqFkKqjkS9LY8apuUFB8U5PWzM7roSe3eMa2kqPrNYTVuIZUILkOgncgKpGbIi2AwwVqEHSZ0m9BTRFz7inHQikM2TDkw7cRcKebLsFSBsxW4VY31Ojysx3o9EeHcqcJqOW6WYtmJS3Z8bCZ0w4nn1XhdgxdVeFqBh6VYd+CODbetuGXGjWIsF+FaEa4U4VIhTmXCEeTG8/H4BQdCGx7gLx4sT6I0xA2ny/O4QWaWykIPsTM0pSxtGUNbTg+vYkTV0HS1NH2dr7GBEd/MSdrBS+0Q5fTJiocVtonA8rnA6sNKok22EFA6LbOOS4sOCHL7OBmdrKR2WkwrSd/orq1FqIsB5Y8MiIugKkRyAarzsbcAPfnoysP+QgyXYNyCSQumrZi2YcaGBRvOOLFchUe1eFiLB7W4V467pVhzYsWBGzZcMeO8CZ+YCEN/5sRn5XhRhidOPLJpfIJTAAAgAElEQVTivhl3S7BahFuFuFmI5UJcK8C1fFzJw2gsogXuGwD8/KT+PYh4tFYoXZ4nDCgUKArZSjNDRSwdpWuILQS0iApaJLFwiGaoo8c0MuJaWIlt3LS94pw+/5JhhWNCUT4XSCQDC8qy2QD7pJ95VGwaFOT0cNM72Um7fGK3k6Iat4TXuodWQlWOYCcUNvibIS2GtBBhecjNRUMe9uQSDPQWYLgI40WYKMFkCaZKMF2COStOOrBcjodVeFqFh2VYt+OeDWs2rLhm92tFuFSAi3mElT+x4JUdL614UoJHRVg34U4BbudjJQ+3snEjC8vZWM7Bx2loVEHo+4vdN7zhAX7KeHmRWME0eb4goFgsyxfK8jmKIlawlR7ytlNWyogoZ0RVMw1bGcZ6RmwjM76Vk9TGz+iQ5u8PKDkY4JhSVMwHVs0Hls8pHFN+1nFJ8bA4v1+Q3cNN28tIavc2biPrXAwQKUE5VE4obQiwQFriLi5wC8hFdA5MOWjIwa5s9OViOB/jhThUiAkTJk2YKsaMmehkXXXiURmeumb3B2bcK8GdYqyaiAl+uQCX83ApB7fy8NiEz4rx0oSnhXiUj/t5uJuLtRzczsRKGm6l4WYarqVi3oAkgfsvdZHcBgA/ZbyoJFYgLbBQoLSKAopEfrl8SQ5PlssOKGSrrMQugrAyRmQVS1/Diq5jxBAMsIlYqI2f0SnNH5CbRxXOSUX5bEDZbIBz2t867lc8IikcEuf1C7K6OekdzMRd3rHbSYYGj4itm7U1bqFVbqoyN6WDcAXyEjdpASR5kOfB4PIGNdloz8ZgLkZzMZaH8XwcysdUAaYLcNSET81Yt+KpGY+LXBN8Ie7lYy0fK/m4kYfrubiWSUzz69l4losXeXiWg0dZeJCJ9XTcTcPtZKwm4VYCbiTgajzalFDQNv8it8tsAPBTxotCYgX4BhUJQpyiYIswwCSQ5fIlmTxRBleWx1KWMEMddGIbTTXLUMuKrmUS5dFGZnwLO6VdmN3jZxoKsI8rnFOK0hmFY0puPSQzj0qLhqWFg6LcXl5WFyd1LzOJYICib/SM3Lo5rHZTaJWbutxd6YDS4hZQ5OZXCGEhJIUINCG6AHn5qMtFVw5Gs3EoBxM5mMzBVA6mcrGYhwsmPDTh+dsJPo+w9fs5uJuD1RysZGM5g5jdl5OwloynGXiZgefpeJKKhym4n4w7CViLx2ocVmKxGotFLXIFbhTyL7AtsAHATxkvMoku8w428bVlohCHMNgiCCwiGBBn8vjpbFEmS57PUFnp4RUMXQ1LV8PU1bD0Wxkx9cyEFk56hyh3v6xkRO5iINAxJbcd8reMyYpH/EwHJPn94rw+QeY+dupeRsIu39jtXoZmUlT9lvCtmzRVW9Rlm5U294ASBBQjoATyEsjMCLC4BVnc9cXILURTLvqycCgDkxmYysBkJiaysJCLj3MJo3+Zg+dZeJyOR+l4kI676bibitupuJmM6zG4ZsTtODxMwIskvEjE0zg8isW6EXeNuGvAWhRWo3AlAvsCIPL+BZaDNgD4CYPlQfakib2D8vjh1RJtpZjwAzZhYDHfP58vyeLx07iCNI5fDktZzNKUsojaaA1TX8M01DKNDazknfysbmnhoNwyqrBPBjqmAuwTcuu4zDzqVzwiNQ2KC/rFOb38DIIBZkK7b1wb1dhK1jV6RtRu0VR4Btu3BJrdFWa3QLOb0opgG4Id7krH5kD7plCbe4IZtkJsz0V/Jg6lYTod0y4Y5jNxPhPrmXiZjuepeJaCxynEHL+ejHuJrjk+BjcNWNZhRY/1GDyNxfNoPDPgsR4PdLgfibvhWHPpaDDi2e6/vChoA4CfAoAnyZvrrczm62olUbVSbaWIcAU2gdLMlxfw/HK4wgyuMJ0rTuf65XICS1gaJzuyknAF+lpmXDMvbY8of7+s+IDcPqH4EQB/y7if+aBf0QFJ4ZCkcNDlB7rYqR3M5D30hJ3eMduIcCi8xiPESQq0eCrM7oFWBNmhciCkzC2kzD20fJOqbHNw6RaNY1Osxc1UjKY89GRiPBUzyZhOwXwqPkjFWgpeJuFVAp4n4mkinsTjkREPDLgbjTU9ViJwIwy3IrAWifUoPI7A0zA81uKhBuuhuO/S1WBU8928yb+0xvAGAD8NAC8mVZnB1ddJDPXiyBphRJUwrFSotgkDS3gBJq5fHleSzRWlcfmpHEE6xz+PE2Rmap3MqAqWsZ6TvJOX2ys1Dcqsh+SOKTkBwITcNuFvGfMvGfErGpYWDUsKBoQ5fdzMLnZaJyt5Nz2uzTu6hRq5laQpJwdZCQCUFqjsUJcipJxYR6SphKbSTVO5ObjSM7DMQ+0kMCguREsWBlIxlYTZRCwk4cMkIs55GYvX0XhhxLMYPDXgsQ4PInEvHHe0uK3Figa3QnFLgzuhWA/BIxWhh8F4qMR6IG4r0MmHiPJLq4duAPDTAKAyKPIkdnS92NgkNtSL9LXiiCqhtlwQ4hCorHxlMV9eyJXlcaU5XFEGV5jGEaazpZmcgHyO2sqOruNmdEry+/3MY3LbJOEB7JP+BAmTAZYxf/OorOSgX9GwuHBQmNvLJxjoYCe1M+K2++oaKWFVXiEOqtKyJdDiFuwC4Afrr0JYDcJq3LQ1bpoq99DKLcHlW9Slm6LsblnFqM5FRwZGkjEXj1NxRLj/WIfXUXilw4soPI/Ak1DCyh+ocT8E99S4E4QVJVaCsKLAmj/uyHBHjjU5ViS4IcQRLkpobj6/rMOGNwD4KePlSaLSKP5xTGOdKKZFEt0oNtSLdbWiyGqBtkKgcfLVVl6Qma8s5ilMXHkeV5bDFWcQiYEglSNO56jMvOQ2cd5+aclBf+uE3HpIbp8IcE7LnTOEH7AdklnGZCWjUtOwJK9fkN3Nzehkp+xmxu+gG5q8Imp8Qkp9lBZSoHlTkNUVApUTbeMfAKj9UTWbtFWbNZWbVOWbgkvdI23umcWozEVnGkaTcCQWV3R4Fo43YXitxUstnqvxNBCPA/EwCA8UuK/AXRlh+qv+WJHilhA3hbghwXU+rjJw0QfDLITwPH5JPYENAH4aABQaRRbLMtaL41olMc2St37AUCeMrBGEVwo0ZfxQJy/ETpCgLOEqTDx5PkeWy5FmcwUpHHESR1/Fz+mRFI/4WcZllnG5bSKgdCawbFbhnA4g6kITMvO4rGhUmj8oyukRZHbyUvewE9pYxmbfqK2+mjLfIDNVWbIl0Ew0yFTOHxjQuhgIdwEQXusWVuMWVu0WVukeWrEpuNxDWeoRat+UXOJuK8COdIwm4JweD7T4QoUvg/FKiRcBeOaPp/544odHEjwQYF2Au0LcEeE2B6s03GLgBhM3fLAMnKeiUe0mEVNIJCIb+NnNdwOA/3kAyH5GhrFOHLdNGtcijWsWxzSKjY2i6DqBrpYfWS2IqBKEVQg1RGLAU5l5ymJuYBFPXsgTp3G44XR1LjujU1x4QFp80I/wA+MBzhll6Wygc1bhnJHbp/ytBAN+BQfEOX3CrH2C1D28hDa2sYlYdB1WSQuyUhVFWxQlboEWtyA7sVxCVUbssg+tJqSpdnmDamLLpaYamiq30MpNqgqPoAqPoDJPtcMjxuxuKsCODEzHYzkMnynxlQxvJPhMghd+eC7BUz4esQmtc3CPhbs+WKPiNgkrW3BrC2664xZwVAlzCoXFo/4ySqIbHuCnjRfZmywKp+trXQBsk8RtF8e2iGIIDETR9QJDndBQJ9TVCiNrhNpyIZEY2LjBFo6yhCtJY9MDfPz09MRt4vxBP9MBP9OQn3nU3zGjcBIAEAw4CAZk1gmZaUSau1+c1SVM7+Am7WLHNDMMdayIaobaRpWbPPxNmxQl7oFW90AbsaEsuAzBFVBVIKQSoVVEUPQDD1XQVGwOqfBQV3ioCFdACnSQlPYtEZZN6SY0ZWIuFvdV+EKALxl4zcZnXLxg4pkvnnrhsQ8eUrDujvvuuOeOu8CaO1bdsQrcoGMh2S0pjUHjEU+P+NkteAOA/9HxIlFI7EDfyAphbKv0LQPxrdKYH8IhibFRYmwQRzeIjPVifY04okKkLRMQQZGN75fM9hV5cRQ++nJ+Xr8sf0BW0C8tPihzTCuI6d/FgGNG4ZgJsEz5F41K8wbEWd3CjE5Bym5ufCs7uoEVVcNU27zlpi2yQnf/4k0Ky2aFZXOgbZPSQWwkUJYhuJxYRRdSQSj07bV8S2i5Z0i5R0iZp9pJVjkpwQ5yoJ2ksHuoLJvjTe7bMnBCj2c8fOWJL8h4RcZLL7wg4/lmPAEeb8IjNzwE1oF7cGHghtvANTEGKn1iMji+XOrPbsEbAPxPDxlN7KW18aKbxcZWcWyrOK5VHNcijm0mGPhR4phGSXS9WL9VFFktiqgUassE0jimF4vqzaGqMtmZXX7ZvZLsHnHhkJ9tUuFyAgrnXKBzRmGfCrBO+heNSVxpgCijk5+6R5CwnR/dyNHVsELtNHmhpyTf3a/Q3a/IXVa8OcC8KcDiFmiBwkosGQp6C4OTiI5ccg92bAl2blY7PdUOT5XDQ+XYQvTU7O5+NjeRDXIzkoswlIprKnxOxtfAF8BrN7wAngPPgKcgSHgEPPgRg7ckXEpBZx8/LJvvw6Z6bCF65D+7Kf912giBfvKQ+fC81CaeoV4U3SyKbRHHt4riW4SxLRIXDIRDiHWJ8AmNEn29SFcrDisVCMJpJG8y2YssDGPENQrTOkQZXaK8/VLzQaIkaptR2mcC7dMB1skA66S8hMiDxTl9oswuYdpeYUKbyNjE09Vy1cVMWaqPJJkqSSdLsj2luVv8CjbLTG6yIsiKIC+Gwkw8Y0JhRaAVgTYE2tyUVnelzT3ItjnItllJXDcFWYlestL1NAo/M7Gqwmh3qzK7zSXilh9eeRIMvAFeAS9BkPDMxcC/YOCG+8AaHe9t82oZD4gq4lNplA0A3hV5uApB/imsiCqeoVFkbBTHNItiCRKEsS0igoHtkrjtkvjt0tjtkthtUmOzRN8gUhfzmf7ExipPEsmXR1XnsZPaBOkdoqxucf6gf8lYgGUy0DoRaB4lOmLFI7LCA9L8QUnOfklmtzi9U5S0UxjTTACgzGRxFD6+AirD34sd5M0N9eJHUkVGqiieLErylKZtkmS5SfMgLYCfiUDC37V8KLDELbBkc4B5i8L8dj2FixMzsflYUQxZMcQ2t8DqzalNns2Vm+dTcZNHAPA18DnwmRuBwVtvQARFbzFwI0hYVbsdOy7bfiokJJ3jw6J6/GPmAxse4K85cV6ko2ucHN1Wvq5OaGgUGhuFMU3CmGZhzA8MiON2SOJ2SGN3SI2tEkODKCCV48P1Ih66STxthSyOoBtr+CntoowuSU6vX8EB/5LxgJKxgKID/oUD0vz9krx+Sd6AX26fLKtbmrFPlLJLGNfM1deyFWksutibRCXaEYToFG82xYdH9RVSfcUkmsyTofRka7ZwI7fwDZsF8ZuEKZvEae6STPjluEvz3GX5brJCN5kJ/ibIXfI3QVYIeSECrNA2kNP3MCr30rrKPI9FYZVJOIG33uAzN7xw+yMG3AgM7pNxsc1n+oqmeiZYl8f3Zf1D5gMbAPz0UaOQ2ApvVTE7ooobUc2L2irQ1fMNDfzoRr6RwEAU2ypyMSAmGGiVRJQLBRo6yYt4LYlM2uJBoou81NmcxO2SjE5Z5j6/nD6/gmF5IWH9/vn7/XJ7JDndkpw+ac4PAIiTCQA4ulp2QBKTLvIm+ZDJNDLxhmRCW8ikLZ4kwr14kshUAgwvFsWbS/YRkn2lJJq/J0PpwdJ4ciI8ePotgjgPUfIWcbqbJIvYXSDNh59LsnwE29zidvgUjkrKJkUNvfQe5+aTOtzg4JkbwcDnwCs3PHcjsoLHP2KwFocP3pMffKRvPaI2mARMYr3oP9jBwxsA/HVL4iiyFFoocbQwJ6KaG1HLjazj6up5+ga+oZFwBS4GRLGtEmODSJHK8uH9q9mR4ksWamjRtcKUPdL0TmlmlzS71y93P6H8/X45rlk/Y584q9svq1ua3ilKaOPHEiEQx89I92ZTyd4EAGQfMtmbTKJSSFSKJ/nH043+pPFRifaFF5PkzSH7CEm+fiS6wpMZupmj28SPdxckQ5gBURaBgaZ8c+ZeZsW0pPFkYN2CrKGX2VXruZDm9mkA7lKIQOj129zADc/c8QRuD31xuZ85/5nx0HrUjhPqtGoJx8/7Hysf2ADgp48akQiTOaHeyiJGqJMdVs7VVnHCa9gRtZzIOm5UvSC6UWgkwiGBsUkYbhdwlTQS9V8dv+VBIpyA1sxNbBOndUjSOyUZXeKsbkk2MetLs7ul6XtFqbtFaXslGZ3StD3ixB2C2BaefitPrKNRGRQCAJ9/DQCFTCIT7oVE+dM/8B9uPFzyJJPINLIPl0zzI9GDtjAj3XnxbsI0+BcismZzfi+r6UjA7vOqpnPBVYdltSPsPS2eh/LdzyqwQiaioJcuDD5zI5BYcVCOP9fNvzJOPojcfTY0uVzElHhv/sfJBzYA+KsGjkyisigcjbfcyA/JloTa2ZpKmraKGV7DiajlRdXx9A08fRMvqpovi2F6sSj/9mnjRCZN9YtlGhsEyXtEKXuF6Z2izH3ijG5xZg+R+KbtESXtJJS8S5zUJkncJoxrFugq+AINjez7FgDiSvIirJ9EIbtEWD8BwJ+agH/A44//ifyjvIjfhe5PYuvdecnwy0NUDSm3i92wKOv7VN17Sb3rXHDjyYCts5KmHkZHLWkqw/09Da5JcY+OR2TcKPY4vh5+5E3M4hPd1IOofee1edtkfho61fcf48i9DQD+yoHzIBMPD+UJeMpIf1UOT1XmHVrhq6lgaStZ4dWsSMIb8ELMHJbsT4cEHmQyS+GjtXLidvASdwmSd4tS94pTO8RpnaK0TnFKuyipTZSwXRS/TRjfKkxo5cc1CcIsXJa/NzHZe5P/xfp/AOAH6//THsAFwH/2u5BIZB8yLcCToXdjx8M/f5O+lpLXxW48TDAwfCu070rw3vNBLe8Fbj0ia5gR7zrIG+rwXagjvVfuceoA6/CDqOOvjSdeGZae6abXo7ovhtn7FAFRTLLPz2/fGwD89w4fny/QhIZoYpXBhZxgh4+63FddQQ+tZGirWJoylthIp9CIhyz/ide6VlZLYuj6rey47dz4nQQGie3CxN3CpHZxQpsgfpsgoVUY2yKMayamf2M9X5nO8eF4eVJ+DH5+mP7/IgD+PAyexMEIdPUWRgw4iVAUbIqu987qYFVNSbo/UR28FTpyK6T/qrrromrPedXei+ru65rBm5qxFe3Mvchjzw2nXhvPvDGeeBV9+Jlh5pF+ZDWycjgwNJnjyyZqXz+7lf8n2vAA/6XhE0nERp0hJjpaG68IzuEqLT5Ku3ewwyfYSvdLpfmK/7PKoAeVRJNQVEV04uCZbZzYHfy4Nn7cDn7sdn5MCy+mkRvXzItt4sc2CY2N/IhSrlBLI3uTPShEHfY/AuC/lIBSSF5CT1bUZna8GzcJaqtn/DZa+m6m/aCw81zQwRXt6IrmwHLo/svqnk9Vg8vaifsRSy8NJz+POfMm5vSbmDNvjKffRB//zLD0TD//xHDgZmT9bHBEJteb+XfdJtsA4L8yfOQAuTw1JTkzLT0uNiYsOiQgWigy+opivfhh3j5CCtnrz8TBJB8SV+OtMtN1jSxDK8u4jR3TyjY2c6IbuIZ6bnQDN6aRZ2wU6Ov4AUksX56XJ4VE8iLayWSvPwHAf93OKL4kuj+Zqd/EToA4wz2sjJS43Te9nVE8wGs5FjB4NeTgimb4hmboWuj+S6ruT4IHL4fMrUedfmN873PjGULRJ98Yjr7UH36mn30UNbIS2bQQHGMWcP18/m4Z2ADgrx87MtUrVBNamJ9XVFCYmZZh1BukfhJvpheVSaHSyH/Jn9yDRPSV+eHewRZaeC1d18DUNTJ0DfSoWtexfHUEBvo6fngplxfsS/Iie1JJZCr5rf5NAvC3MQgyUTBlqD1Z8eAkQ5LlFl5JStlJT91Fz9zLqp3167moGrutHb8dNnwjZN/HQc2HZbtOKw6thB1+pjv1efSZL4ynXkcffakn9EK/8FQ3diei7aQ63iFiCLy2uKpPP7vFbwDgsjxP4hE3Hp5Ete7tzdv7nyQunx8fF2ezlFhKivJzsmOijQKukORJ8fBwlRr/sjchGke+ZKacIo5gaDNleocsspqjrfLVVvmE19Aja+kaG1MaS/diuQ5soZD/FQDE9P+Xhv5/+c9DZVPYkZs5SWAnQ5LjpqslZ3Yw0vcyUnbSTf2cbScC9l9Wj65qh2+Etr+vaFqSbT8u7z4fPLainb4Xfmgl7OBNzdS98KPP9SdeRR95YZh5pNt7NjSmWOBF/3usC72jHoBEJvvS6QKhUCKVCoRCBpNJplB+0stpdHq4VpuXk223WmwWc2FebrTewOXyyH/oSf3FIp4/TiUx2PRIXXhaQVySNTzK7K8tFqgLuAHJTIHGx4dPIYIfEpmw+LcTP/XfJQB/q8mVTPKkkmkSEid6EzcV/DTIC93jmr1zetmZHazkNkbuPo5zVNS45L/ztGLvh8qOj4L2nA3c93HQ/kshg1dCBz5V914MHryqnroTvvhEt/REP7euG7oaltcsZQi9/w730LxjAJDJRNRBpfrJZEaDITsrMy83NyszMyE+PkyrVQYF+QcEiCUSNofjS6dTvb3fUuHxRyKOCvD2FovFOp2uMD/PbrWUOeyldltRYX5iQpzMz4/q5fWH/45Gp4vFYolEQqPT/+wPxuPxUhISzSZTYUFeUkpsZHSoUi3n8Dhk6o91pB8m+3/DwN8YAJLrfUhUMl1O4SS4c9PASYOswD26jmrazy8a4GXsZSTvoifvoKXtotmG+TtPK4aWQ4ZvakZuacdXtZO3tROr2kMrmrGbmkO3tGM3w/o+DnV2+gdHMyk+Gx7gZ7V+OoMh8fNTKJXqkJCE+Pii/HyH3Wa32UqKinJzctJSUlJTUtJSU5KTEmNjYsIjIoKDg2QymUgkFgqFfIGALxAIRCKp1C9ErU5KTDAVFjjttjKno7KstLLMabdZCgvy4mJj5HI5k8VislkikVAbqomLiYmNMQYoFF4+Pv+x9RMuRaFQ5OVm2y3mEpMpPSnFEB6lDlRJBGIfX5+3E+fbRu8P+lMF0L9hIORJIlEYFGYIiZvkzssAPx3+Be4Jrb7mYYFtVFiwn5PZwUjdRc/Yw7CNCHafVQ5dDx1fC5u6F77wMGrpkW7pceTCg4jZu+GTq2GDn2oq+gNCkjhUHwoxg/ydpQG/fA/gQSIxWKyw8HCrzdbS0rJ161anw2EqLCwqKLCWlBSbTBlp6fGxcakpKcWmQrvV7LBa7FaLubiosCA/NzszKyM9MyPDdU3PzsrIy80xmQqtFrPdZnXarU67zUFcrWVOe3mp02m3FeTlJicmJickZGdmFBUWFBFvkp0QFy/1k1Ko1H9ZtPNHeYgHicxis6P1uhKTyW6zlBSZ0lKSYwyGCK0mVKWWSiTevv8qeCAM/Udbd339v2fdAZk4LpYZTOInbRJkgJ8BedGWuBaaY1xcNetXNimxHRSa+nl5vWzriLD5mHzgimp8VTt9P2L+YdThJ/rjzw3HnhuOPjMsPYocuxW27YjKWCKg87z+ilzrv1W/fAB8aDS9Xl9VWdnT3T3Q37+ttaWs1Jmbm5OTnVVUWJCXmxMfG2vQGzLS06zm4rcBvc1itlstDpul1G4tddjKHPYyh91pt9mtFktJUbEp31SQbyrIMxXkF+Tn5WZnZWdlmvLzLMVFdqvZZjZbioqtJcVvQSo2FeRkZ2ekpYeHh7PY7LfZ9hYPwvTJFIq3jw+TxRSLhFqtJiUpsbgw32GzlpgKU5KSYqOj9VFRuohIrTpEIhH50H08KeS3K3lc8iRRyV6+Xt50Hy8fqgfpr0niPf+cPEgkKpPMVHnykzYLMyHIgrx4c+ouZtkhcc2irGpWQmAwKi7o55mHBU1HZT2fBI2taKbvRsw90B15EnXshf7ES+Px54bFx7qJ+1Eth1XRRTwa32vLfxOxf5V+4QBQvKiBSmVlRUVTY0NZWanZbM7Py8lIT09OTs7MzMzPyc5MT8tITS0sICzPYbNaS4ptVsL6XQBYnTarw2qxmouJadnlENJTU1OSEpPi45Pi4xLj4xLi4uJijEaDIdpgiI+NSUlKSk9Nzc3KNBeZiJfbbTZzCRHU5+YkJycHBwczGEwWi8UXCKRSqTJIqdGERht0SYnxaSnJyYkJpvzcUoedACAhId5ojDNGxxqjY6MNkeFhikA5l8f1pft6+3p70bxobLrUT6JSKUM16iCVgsvneNN8PL1IW1xo/G3HkEqj0OVkjsGDn+7Oz0KAeVN8q7dtTLR1yX/rorxq1t9+SFR0QFA0yK+Yku75UDmyrJm+F7HwMPLwU92xF/rjL6OPPjcsPNaP3YnadkIdXyrkKXwJD/b30SH+JQOwxcODxWYnJCaWl5dnZKSFR4RrtNqoqMjo6OjExMTMjIzsrMzCgryGurqdbW11tbWWkuKC3FxzscnmMvqSoiJXGJSTlZGelpqSlJAQFxNj1OsNOr0+MkoXFamLitJHRkZFRISHhemidAnxcZnp6TlZWYV5uXarucxhL3c6yp2OUofNaikpLMhPTU7WRUVF63WJcbGpSYkZ6alZGenZGWlpqclxsTHxsTElpsJyp6MoPz8lMSEhNuatCMD0OkOkLjxUGxQU6B/gFxAk04SpE2PjM1PScjIys9LTY2OM2rBQuULG4XGo3l5/23K7h6tI5cWjsLVkbuwWfpq7X757dCOl5AC/Zl5Wu+BfOStzTkhKDggKB/jOcdH2kwEDV9RTd8LmH0YsPo468kx/5Lnh8FP91P2owZsRLSdUmS1+QhWN8na13M+dEvxiASC5ABBLJBkZGQmJiX5+fv6SLNQAAAlFSURBVAwWi8FiSaXS8LCwlOTk1JSU3Jyc2prqjo69DfUNJlNhenpqSnJyfh7BgKkgLy87KzM9PSU5OSE+Pi4mJlqvi3TZulajUatUQUHBSqUyUKEICAiIiIiwWCxbt25tamis37rVaScs/q0DcdqsZXabw2Y1FxcVFxQU5uXm5WRlZaQR75sUnxAfGx9jjInW66MiUxITSu22MoctPycrJTE+Ic5l/Uaj0aA36KOMBoNRb4iO1Bkj9fHRsalJydmZGfm5OUX5eYV5uSWmIpvZWmwqTkpJCgiS+zB8txA7U/7GQ0rxIfsKqWwNhW3wFKZuCiujFvRyq2b9th72r1mQlU9LrUR+zC0a5NfOyfo+VU3d084/jFx6EnX4mf7IM/38Y/2he1EDN8J3faTJ2Snzi6JTfEhbfm47+cUC8FYcDicwMJAnEFC8vEhkMolMpnp7iyUSXVRUclKSxWKpKC8vKChISEyMIT6M8fFx6WmpWenpaSkpyYkJ8TEx0TrC7rUaTZAy0F8mEwmFPB6PyWT60mg+vr4sDickNKS4uLizs7N9166ammqHzZ6bm1OQl+fKB0qKC/ILcrOzMtLSUpJTkpISE+LiYo16nS4iPEwTGhKiVoWqVGEaTawxurggv7q8zGYpzkxPTYqPjzNGGw06wsOEhYdrteFhYeFabYQmNEKr1UVExkQbkhMTMtNTc1xpek52VmFBQXFRsaXYUpBbEKYN+/OF179KJAqZ5EMiM0jeAgoriOKf5B1bw7EOiSsnpNVzfpVzUseEuGhIUNDHK58U7fpAMXIjdOZ++PyjyMWnusUnUTMPIsfWwvqXtW1nQ6wH5JpMNk34L1Xjn0W/aADIROeIQiE2TP2hivK2DyAUChITExwOe3ZOTnhERGRkZIzRGEOULGMS4mLjYmNjog36qChNaKhCoRCJRCwWy8vbm/RjDedt9Ybq7R0UHGyz2Rrq650OR15ubmpyakJCYlx8fFZGhtlUWJibm56SHB8XG23Q6aIiI11Wr1IFBcjlUolELBKJRSI/qTQ0JCQvO6umoryi1GEqyE1NSiReQGCnDQsN0YQQkKhVKnVwsDpYqQoOUqtUmlB1ZEQ4kXjEGGNdP7kxOkYfaYiJjs3KyMpIzghSKCle/w2bdMmEayWycNeKbpIXiS72DkpkxpdzTV1ix6i0bFJqHxMW9fNyOjn5PdzKCb/tRwJ7zqnHb2mm74XNPIiYuh8+vqYduBHWdU1TM69UpbBJlJ+zP/CLBuA/Fp3JjIuLKy4uNhqNUj8/P5ksPDzcQMT3Or3LVrUaTaBCwePxfGg0qpcXmUJ0Yv/4HUhkskAoTEtNrayoMBUWxhImaIyJjol2fSTGx6clJSXFxxujDVERhCmHhKgDAxUSqZTH5/P4PCIJVgZqtZpovT4jLa3MYasqc5aYCtNTU4wGfWSYVhOiClEFq4ODgpWBgQEBcplMKpFIRCKJRBIglwcFBqmDVVq1mnAL2rAwjVYRqOCL+Hwx31/hH6oKlcvl3jTvv+1SZNIfNyJ+XHtHopK9mRSmxEus9Q1KYkaaOLGlnIRKTnQZJ9LMCs1iquIYuhxuTp24djhg7ylV78chfZ+E7PsotO1MiKUvQK5j/qGk+7PoXQTAg0RisdmxcXEZ6elyuZxMoVC8vDhcrkKhUKvVKrU6IDBQKBT6+viQyOT/aJkQxcsrJDS0pKQkv6AgTKv1l8v95fLAIKVKpQoJUYeHaSPCwiLCtWEaTYharVAoeHy+L41GplJ9aLSQkJD0jPT8vLyiwsLyUkd1JTH3lxQVpCQm6HSRoaEhquAgRYDcTyoRCAQcDodGp3l7e1O9vChUKoVKpdFoAoHAXy5TKhTBAcogeaBYJPZl+L61SzKV7O3r40P3pXj9hMUdnj8dgB9aWhSyB4m82dXTIHmRvegUXzaVIfCiC7182FSKL9mD7EnyIvkyKQJ/nyAdIzyFo///2zuXniaiKABv6Jw771eftEVai7SAkSKElkQsBSQaIRWEEh/RFZuy4P+vzHR4VIUFiozQLzkhrMrkm+/03jvnnOFdrrWbX9zMluY9K7jji7xtjGMCRC/n8f3Zen22Xnd9P/Zb6brjulERN512PS8qWp2Xma4P07abzWan06k3GkEY2o5jOY7reX4QZLKZJ1NTM7Xa7Eyt9rRaKpX8IIg/UBl6pVrp949OB4N+/2hvb/fbl0/fv34+6O11O+svm4vzc/WZWrU4ORmGoeM4hmVFrRD6VcdefLWmbfqhn8lm8/l8JpMxbfuqNBbtT/7Vf7NTv+TAeVk6KsxpehQppVIplUoNax2XTYGiUppMTERXrtu65RlOaJiOPixfJGzCGDfDeZ7tur+XZkd/uTGGh+lqrTZdqdiue6nmuaC6bjtOEATpdOj50Q4q/iuaiOO67Vb77OzsdDDY2dnZ3t46Pvp4fHiw82ZzZXnpWXTeKAZBaNqWNlx8brqAeLA9OuFYZjQUf5/ojGEdOt4CxWP4Fz+jMEbmj+O4bij5srkjcRPGNAH+PnTDcH3fGGl9uyZGDt9xAgRh2O12T05Oer3e62G7xOH+h733b9farbl6PZfLWY49mpP/aehKS3TjfodBAvw5u1t1HyhdT2lavlDY2to82N/f6KxvDMvGW92NV2vtFwsLpWLRMB/JS/fl4QQJcH+sU5pWmJxstVqrq6vPF+ZXlpaWl5pRWa3RmCqXXc97AN/96rEFCXB/rDWRMJ2uVKuFQnTGLZeL09PRM9hSsej8fBohhAR4lBIYpmldzNnE3aCO646W2Ai5XwisAAk7x6ZfEuVPAvClq8Z52SEBkr8HhJAASAABVgAkgIBiC4QEEFCcAZAAAopDMBJAQPEUCAkgoHgMigQQUNQBkAACikIYEkBAUQlGAggoWiGQAAKKXiAkgICiGQ4JIKDoBkUCCCjaoZEAAop5ACSAgGIgBgkgoJgIQwIIKEYikQACiplgJIAAQ/FIoMY9DXgrRPL3gBASAAkgIKwASAABYQuEBBAQzgBIAAHhEIwEEBCeAiEBBITHoEgAAaEOgAQQEAphSAABoRKMBBAQWiGQAAJCLxASQEBohkMCCAjdoEgAAaEdGgkgIMwDIAEEhIEYJICAMBGGBBAQRiKRAALCTDASCOPIDMUjgYx3GvBWiOTvASHJQfgBd3SmfOFyFx0AAAAASUVORK5CYII=","mimeType":"image/png"}},{"text":"What is in this image?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK Content-Length: 674 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Security-Policy: frame-ancestors 'none' Content-Type: application/json; charset=UTF-8 -Date: Tue, 04 Aug 2026 09:55:30 GMT -Server: scaffolding on HTTPServer2 -Server-Timing: gfet4t7; dur=1336 -Vary: Origin -Vary: X-Origin -Vary: Referer +Date: Fri, 21 Aug 2026 08:58:03 GMT +Server: nginx +Server-Timing: gfet4t7; dur=1348 +Strict-Transport-Security: max-age=31536000 +Vary: Accept-Encoding +Vary: Origin, X-Origin, Referer X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN X-Frame-Options: SAMEORIGIN X-Gemini-Service-Tier: standard X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block { "candidates": [ @@ -56,5 +60,5 @@ X-Xss-Protection: 0 "serviceTier": "standard" }, "modelVersion": "gemini-2.5-flash", - "responseId": "EbdxaubbEcG7vdIP3LqNqA8" + "responseId": "GROIao2cN7jT28oP4NTsyA8" } diff --git a/llms/googleai/testdata/TestGoogleAIStructuredOutput-array_schema_is_honored.httprr b/llms/googleai/testdata/TestGoogleAIStructuredOutput-array_schema_is_honored.httprr index 5a972b3a3..54bf8a0a7 100644 --- a/llms/googleai/testdata/TestGoogleAIStructuredOutput-array_schema_is_honored.httprr +++ b/llms/googleai/testdata/TestGoogleAIStructuredOutput-array_schema_is_honored.httprr @@ -1,27 +1,31 @@ httprr trace v1 -960 1023 +922 1202 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 640 +Content-Length: 602 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"List three primary colors."}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"responseJsonSchema":{"properties":{"colors":{"items":{"type":"string"},"type":"array"}},"required":["colors"],"type":"object"},"responseMimeType":"application/json","temperature":0.5,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"List three primary colors."}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384,"responseJsonSchema":{"properties":{"colors":{"items":{"type":"string"},"type":"array"}},"required":["colors"],"type":"object"},"responseMimeType":"application/json"},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK Content-Length: 612 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Security-Policy: frame-ancestors 'none' Content-Type: application/json; charset=UTF-8 -Date: Tue, 04 Aug 2026 09:55:25 GMT -Server: scaffolding on HTTPServer2 -Server-Timing: gfet4t7; dur=735 -Vary: Origin -Vary: X-Origin -Vary: Referer +Date: Fri, 21 Aug 2026 08:57:58 GMT +Server: nginx +Server-Timing: gfet4t7; dur=823 +Strict-Transport-Security: max-age=31536000 +Vary: Accept-Encoding +Vary: Origin, X-Origin, Referer X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN X-Frame-Options: SAMEORIGIN X-Gemini-Service-Tier: standard X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block { "candidates": [ @@ -41,16 +45,16 @@ X-Xss-Protection: 0 "usageMetadata": { "promptTokenCount": 6, "candidatesTokenCount": 9, - "totalTokenCount": 83, + "totalTokenCount": 67, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 6 } ], - "thoughtsTokenCount": 68, + "thoughtsTokenCount": 52, "serviceTier": "standard" }, "modelVersion": "gemini-2.5-flash", - "responseId": "DLdxavn-H9jaxs0Pha-S0A0" + "responseId": "FROIarOIGNia28oPgvSq2AU" } diff --git a/llms/googleai/testdata/TestGoogleAIStructuredOutput-object_schema_is_honored.httprr b/llms/googleai/testdata/TestGoogleAIStructuredOutput-object_schema_is_honored.httprr index 9075fa0c9..bac5f82ae 100644 --- a/llms/googleai/testdata/TestGoogleAIStructuredOutput-object_schema_is_honored.httprr +++ b/llms/googleai/testdata/TestGoogleAIStructuredOutput-object_schema_is_honored.httprr @@ -1,27 +1,31 @@ httprr trace v1 -979 1041 +941 1219 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 659 +Content-Length: 621 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What is the capital of France?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"responseJsonSchema":{"properties":{"capital":{"type":"string"},"country":{"type":"string"}},"required":["country","capital"],"type":"object"},"responseMimeType":"application/json","temperature":0.5,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK -Content-Length: 630 +{"contents":[{"parts":[{"text":"What is the capital of France?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384,"responseJsonSchema":{"properties":{"capital":{"type":"string"},"country":{"type":"string"}},"required":["country","capital"],"type":"object"},"responseMimeType":"application/json"},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 629 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Security-Policy: frame-ancestors 'none' Content-Type: application/json; charset=UTF-8 -Date: Tue, 04 Aug 2026 09:55:23 GMT -Server: scaffolding on HTTPServer2 -Server-Timing: gfet4t7; dur=900 -Vary: Origin -Vary: X-Origin -Vary: Referer +Date: Fri, 21 Aug 2026 08:57:56 GMT +Server: nginx +Server-Timing: gfet4t7; dur=828 +Strict-Transport-Security: max-age=31536000 +Vary: Accept-Encoding +Vary: Origin, X-Origin, Referer X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN X-Frame-Options: SAMEORIGIN X-Gemini-Service-Tier: standard X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block { "candidates": [ @@ -41,16 +45,16 @@ X-Xss-Protection: 0 "usageMetadata": { "promptTokenCount": 8, "candidatesTokenCount": 19, - "totalTokenCount": 107, + "totalTokenCount": 86, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 8 } ], - "thoughtsTokenCount": 80, + "thoughtsTokenCount": 59, "serviceTier": "standard" }, "modelVersion": "gemini-2.5-flash", - "responseId": "Crdxaq_5IavXxN8P5r-n-Q8" + "responseId": "ExOIaunhFJStvdIPhIPNqQc" } diff --git a/llms/googleai/testdata/TestGoogleAIStructuredOutput-streaming_object_schema_is_validated.httprr b/llms/googleai/testdata/TestGoogleAIStructuredOutput-streaming_object_schema_is_validated.httprr index 74f1461d7..34e791482 100644 --- a/llms/googleai/testdata/TestGoogleAIStructuredOutput-streaming_object_schema_is_validated.httprr +++ b/llms/googleai/testdata/TestGoogleAIStructuredOutput-streaming_object_schema_is_validated.httprr @@ -1,29 +1,30 @@ httprr trace v1 -992 1209 +954 995 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:streamGenerateContent?alt=sse HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 658 +Content-Length: 620 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What is the capital of Japan?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"responseJsonSchema":{"properties":{"capital":{"type":"string"},"country":{"type":"string"}},"required":["country","capital"],"type":"object"},"responseMimeType":"application/json","temperature":0.5,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK -Content-Length: 812 +{"contents":[{"parts":[{"text":"What is the capital of Japan?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384,"responseJsonSchema":{"properties":{"capital":{"type":"string"},"country":{"type":"string"}},"required":["country","capital"],"type":"object"},"responseMimeType":"application/json"},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 442 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Disposition: attachment +Content-Security-Policy: frame-ancestors 'none' Content-Type: text/event-stream -Date: Tue, 04 Aug 2026 09:55:26 GMT -Server: scaffolding on HTTPServer2 -Server-Timing: gfet4t7; dur=715 -Vary: Origin -Vary: X-Origin -Vary: Referer +Date: Fri, 21 Aug 2026 08:58:00 GMT +Server: nginx +Server-Timing: gfet4t7; dur=933 +Strict-Transport-Security: max-age=31536000 +Vary: Origin, X-Origin, Referer X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN X-Frame-Options: SAMEORIGIN X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block -data: {"candidates": [{"content": {"parts": [{"text": "{\"capital\": \"Tokyo"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 8,"candidatesTokenCount": 5,"totalTokenCount": 64,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 8}],"thoughtsTokenCount": 51,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "Drdxaq3tE8iOvdIPgsDH2A4"} - -data: {"candidates": [{"content": {"parts": [{"text": "\", \"country\": \"Japan\"}"}],"role": "model"},"finishReason": "STOP","index": 0}],"usageMetadata": {"promptTokenCount": 8,"candidatesTokenCount": 12,"totalTokenCount": 71,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 8}],"thoughtsTokenCount": 51,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "Drdxaq3tE8iOvdIPgsDH2A4"} +data: {"candidates": [{"content": {"parts": [{"text": "{\"capital\": \"Tokyo\", \"country\": \"Japan\"}"}],"role": "model"},"finishReason": "STOP","index": 0}],"usageMetadata": {"promptTokenCount": 8,"candidatesTokenCount": 12,"totalTokenCount": 83,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 8}],"thoughtsTokenCount": 63,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "FxOIasHiIeTkxN8P09OkgQc"} diff --git a/llms/googleai/testdata/TestGoogleAIThinkingModels-non-streaming.httprr b/llms/googleai/testdata/TestGoogleAIThinkingModels-non-streaming.httprr index 9cb46be3c..2cea53746 100644 --- a/llms/googleai/testdata/TestGoogleAIThinkingModels-non-streaming.httprr +++ b/llms/googleai/testdata/TestGoogleAIThinkingModels-non-streaming.httprr @@ -1,27 +1,31 @@ httprr trace v1 -911 4462 +873 4726 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 593 +Content-Length: 555 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What's the next number in this sequence: 2, 6, 12, 20, 30, ? Show your reasoning."}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"temperature":0.5,"thinkingConfig":{"includeThoughts":true,"thinkingBudget":1000},"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK -Content-Length: 4048 +{"contents":[{"parts":[{"text":"What's the next number in this sequence: 2, 6, 12, 20, 30, ? Show your reasoning."}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384,"thinkingConfig":{"includeThoughts":true,"thinkingBudget":1000}},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 4133 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Security-Policy: frame-ancestors 'none' Content-Type: application/json; charset=UTF-8 -Date: Tue, 04 Aug 2026 09:56:06 GMT -Server: scaffolding on HTTPServer2 -Server-Timing: gfet4t7; dur=12657 -Vary: Origin -Vary: X-Origin -Vary: Referer +Date: Fri, 21 Aug 2026 08:58:37 GMT +Server: nginx +Server-Timing: gfet4t7; dur=10863 +Strict-Transport-Security: max-age=31536000 +Vary: Accept-Encoding +Vary: Origin, X-Origin, Referer X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN X-Frame-Options: SAMEORIGIN X-Gemini-Service-Tier: standard X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block { "candidates": [ @@ -29,11 +33,11 @@ X-Xss-Protection: 0 "content": { "parts": [ { - "text": "**My Thought Process on the Sequence**\n\nOkay, so the user wants the next number in the sequence 2, 6, 12, 20, 30, and crucially, they want the *reasoning*. This means I need to explain my steps, not just provide a number. Let's break this down systematically.\n\nFirst, I need to analyze the request. The emphasis is on reasoning, so I need to make sure I *show* my work.\n\nNext, I'll start with the most obvious approach: find the differences between consecutive terms. This is often the first thing I try with number sequences. I calculate: 6-2=4, 12-6=6, 20-12=8, and 30-20=10. This gives me a new sequence of differences: 4, 6, 8, 10.\n\nNow, I look at *that* sequence. It's a simple arithmetic progression. The difference between each term is constant: 6-4=2, 8-6=2, and 10-8=2. A constant second-level difference means the original sequence is quadratic, fitting the form of an equation like *an² + bn + c*. This gives me confidence.\n\nWith this pattern, I can predict the next difference. It's clearly 12, following the pattern of adding 2. To find the next number in the original sequence, I'll add this next difference to the last term: 30 + 12 = 42. So, my initial answer is 42.\n\nI need to organize this reasoning clearly. I'll present the sequence, calculate the differences, identify the pattern (adding 2), and show the final calculation: 30 + 12 = 42.\n\nSince the user wants \"reasoning,\" I’ll give an additional approach to make it a more robust answer.\n\nI can also try looking for an algebraic formula. Let's see if there's a relationship between the number's position in the sequence and the number itself. If n=1, the number is 2. If n=2, the number is 6. If n=3, the number is 12. If n=4, the number is 20. If n=5, the number is 30.\n\nI notice that 1\\*2 = 2, 2\\*3 = 6, 3\\*4 = 12, 4\\*5 = 20, and 5\\*6 = 30. So the pattern appears to be *n * (n + 1)*. Thus, the next number would be 6 * 7 = 42, which agrees with the difference method!\n\nTherefore, the next number is **42**, and I can use either of the two methods above to provide a complete explanation.\n", + "text": "**My Thought Process on the Number Sequence**\n\nOkay, the user wants the next number in the sequence: 2, 6, 12, 20, 30. They also want the reasoning behind it, which is good – it means I have to demonstrate the underlying principle, not just spit out an answer. I can't just throw out a number; I need to provide a clear and logical explanation.\n\nMy first thought is to analyze the request itself – I need to not only identify the next number but also justify my selection. I need to demonstrate that I can identify and communicate the underlying pattern.\n\nMy immediate go-to method for these types of sequences is looking at the differences between consecutive terms. So, let's calculate those: 6 - 2 = 4; 12 - 6 = 6; 20 - 12 = 8; 30 - 20 = 10. The differences are 4, 6, 8, 10. That's a very clear pattern: consecutive even numbers. Adding the next even number should get the result.\n\nThe next difference will be 12. So, 30 + 12 = 42. So that's the answer. Now I have to structure this for clarity.\n\nI'll start by simply stating the answer: 42. Direct and to the point. Then I'll dive into the reasoning. I'll title it something like \"Reasoning: The Increasing Difference.\" Under that, I'll show the original sequence, then the calculated differences, explicitly pointing out the pattern of consecutive even numbers. I'll explain that the next difference is 12 and the final calculation: 30 + 12 = 42.\n\nBut, I should also go a step further. It is important to demonstrate the depth of the analysis, and to provide alternate approaches. Let me see if there's another pattern I can see.\n\nLet's look at the original sequence again: 2, 6, 12, 20, 30. Can I express these as products?\n* 2 = 1 * 2\n* 6 = 2 * 3\n* 12 = 3 * 4\n* 20 = 4 * 5\n* 30 = 5 * 6\n\nYes! This is the product of two consecutive integers: n * (n+1). This confirms the pattern in an alternative light. I should include this as a second, deeper analysis in the response. I'll ensure I present this in a succinct and elegant fashion, showing how this confirms my initial findings.\n", "thought": true }, { - "text": "Of course! The next number in the sequence is **42**.\n\nHere are a couple of ways to see the pattern:\n\n### Method 1: The Difference Between the Numbers\n\nIf you look at the difference between consecutive numbers, you'll find a simple pattern:\n\n* 6 - 2 = **4**\n* 12 - 6 = **6**\n* 20 - 12 = **8**\n* 30 - 20 = **10**\n\nThe difference is increasing by 2 each time (4, 6, 8, 10...). The next difference in this pattern will be **12**.\n\nSo, you add 12 to the last number in the original sequence:\n30 + 12 = **42**\n\n### Method 2: Multiplication Pattern\n\nEach number in the sequence is the product of two consecutive integers:\n\n* 1 x 2 = **2**\n* 2 x 3 = **6**\n* 3 x 4 = **12**\n* 4 x 5 = **20**\n* 5 x 6 = **30**\n\nFollowing this pattern, the next number will be:\n\n* 6 x 7 = **42**" + "text": "Of course! The next number in the sequence is **42**.\n\nHere are two ways to see the reasoning:\n\n### Method 1: The Increasing Difference\n\nThis is the most common way to solve this type of sequence.\n\n1. Look at the difference between each consecutive number:\n * 6 - 2 = **4**\n * 12 - 6 = **6**\n * 20 - 12 = **8**\n * 30 - 20 = **10**\n\n2. You can see that the amount you add each time is increasing by 2. The pattern of the differences is 4, 6, 8, 10...\n\n3. The next difference in that pattern will be **12**.\n\n4. Add 12 to the last number in the original sequence:\n * 30 + 12 = **42**\n\n### Method 2: The Multiplication Pattern\n\nEach number in the sequence is the product of two consecutive integers.\n\n* 1 x 2 = **2**\n* 2 x 3 = **6**\n* 3 x 4 = **12**\n* 4 x 5 = **20**\n* 5 x 6 = **30**\n\nFollowing this pattern, the next number will be:\n\n* 6 x 7 = **42**" } ], "role": "model" @@ -62,17 +66,17 @@ X-Xss-Protection: 0 ], "usageMetadata": { "promptTokenCount": 34, - "candidatesTokenCount": 273, - "totalTokenCount": 1220, + "candidatesTokenCount": 305, + "totalTokenCount": 1100, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 34 } ], - "thoughtsTokenCount": 913, + "thoughtsTokenCount": 761, "serviceTier": "standard" }, "modelVersion": "gemini-2.5-pro", - "responseId": "Kbdxar_QGtv-vdIP-djFiQ8" + "responseId": "MhOIaqO2IIu3vdIP86XIuQE" } diff --git a/llms/googleai/testdata/TestGoogleAIThinkingModels-streaming.httprr b/llms/googleai/testdata/TestGoogleAIThinkingModels-streaming.httprr index a476f334a..49fc0599a 100644 --- a/llms/googleai/testdata/TestGoogleAIThinkingModels-streaming.httprr +++ b/llms/googleai/testdata/TestGoogleAIThinkingModels-streaming.httprr @@ -1,59 +1,62 @@ httprr trace v1 -925 14443 +887 14620 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:streamGenerateContent?alt=sse HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 593 +Content-Length: 555 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What's the next number in this sequence: 2, 6, 12, 20, 30, ? Show your reasoning."}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"temperature":0.5,"thinkingConfig":{"includeThoughts":true,"thinkingBudget":1000},"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK -Content-Length: 14043 +{"contents":[{"parts":[{"text":"What's the next number in this sequence: 2, 6, 12, 20, 30, ? Show your reasoning."}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384,"thinkingConfig":{"includeThoughts":true,"thinkingBudget":1000}},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 14064 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Disposition: attachment +Content-Security-Policy: frame-ancestors 'none' Content-Type: text/event-stream -Date: Tue, 04 Aug 2026 09:56:09 GMT -Server: scaffolding on HTTPServer2 -Server-Timing: gfet4t7; dur=2617 -Vary: Origin -Vary: X-Origin -Vary: Referer +Date: Fri, 21 Aug 2026 08:58:40 GMT +Server: nginx +Server-Timing: gfet4t7; dur=2035 +Strict-Transport-Security: max-age=31536000 +Vary: Origin, X-Origin, Referer X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN X-Frame-Options: SAMEORIGIN X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block -data: {"candidates": [{"content": {"parts": [{"text": "**Sequencing the Numbers**\n\nI'm analyzing the user's request, focusing on identifying the pattern in the sequence: 2, 6, 12, 20, 30, ?. Understanding the need for reasoning alongside the answer is crucial. Currently, I'm exploring various mathematical operations that could be applied. I'm going to look for any mathematical operations that might describe how the numbers are added or multiplied.\n\n\n","thought": true}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"totalTokenCount": 104,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 70,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "N7dxaoLECda-vdIP4fyR2A0"} +data: {"candidates": [{"content": {"parts": [{"text": "**Deciphering the Pattern**\n\nI'm currently breaking down the user's request. It's a number sequence problem, and understanding the core pattern is key. The prompt is also seeking explicit reasoning, so, I need to outline each step in solving the pattern in numbers.\n\n\n","thought": true}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"totalTokenCount": 103,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 69,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "PhOIatLmLNia28oP_fKq2AU"} -data: {"candidates": [{"content": {"parts": [{"text": "**Predicting the Progression**\n\nI've determined the next number in the sequence is 42. The key was identifying the arithmetic progression of the first-level differences (4, 6, 8, 10). I've confirmed that the difference between each term increases consistently by 2. Therefore, to reach the answer, I added the next difference, 12, to the last number in the sequence, 30.\n\n\n","thought": true}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"totalTokenCount": 458,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 424,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "N7dxaoLECda-vdIP4fyR2A0"} +data: {"candidates": [{"content": {"parts": [{"text": "**Unveiling the Logic**\n\nI've moved on to analyzing the differences between consecutive terms. The first-level differences, 4, 6, 8, and 10, clearly form an arithmetic progression. I can predict the next difference will be 12. Adding this to the last number in the original sequence, 30, leads me to the answer, 42. I'm preparing to explicitly state this process.\n\n\n","thought": true}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"totalTokenCount": 450,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 416,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "PhOIatLmLNia28oP_fKq2AU"} -data: {"candidates": [{"content": {"parts": [{"text": "**Formulating the Details**\n\nI'm now articulating the detailed answer, ensuring clarity and precision for the user. I've broken down the reasoning into discrete, easy-to-follow steps and I'm ready to present it. My focus is on making the solution and the thought process, as clear as possible.\n\n\n","thought": true}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"totalTokenCount": 740,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 706,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "N7dxaoLECda-vdIP4fyR2A0"} +data: {"candidates": [{"content": {"parts": [{"text": "**Formulating the Explanation**\n\nI'm now drafting the step-by-step reasoning. I plan to present the solution, detailing the difference method first. Following that, I intend to provide a formulaic representation to offer a more insightful view of the sequence's construction, ensuring clarity and demonstrating a solid grasp of the underlying mathematical principles. I'm focusing on ensuring it's both straightforward and thorough.\n\n\n","thought": true}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"totalTokenCount": 771,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 737,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "PhOIatLmLNia28oP_fKq2AU"} -data: {"candidates": [{"content": {"parts": [{"text": "**Deriving the Formula**\n\nI'm now going deeper, formulating an algebraic representation of the sequence. I've successfully connected each term to its position, leading me to develop the formula `T(n) = n * (n + 1)`. I'm confident in the relationship between the term number and the value, which clarifies how to predict any term in the sequence.\n\n\n","thought": true}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"totalTokenCount": 1041,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 1007,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "N7dxaoLECda-vdIP4fyR2A0"} +data: {"candidates": [{"content": {"parts": [{"text": "**Synthesizing the Reasoning**\n\nI've just refined the explanation using two perspectives. I'll begin by outlining the difference method, providing a clear, step-by-step calculation, and then I'll follow with a formula, expressing the sequence as n \\* (n+1) for n starting at 1. The goal is to provide multiple avenues for user comprehension. I'm focusing on ensuring both clarity and completeness in the final output.\n\n\n","thought": true}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"totalTokenCount": 976,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 942,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "PhOIatLmLNia28oP_fKq2AU"} -data: {"candidates": [{"content": {"parts": [{"text": "Of course! The next number in the sequence is **42**.\n\nHere are a couple of ways to see the reasoning:\n\n"}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 22,"totalTokenCount": 1063,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 1007,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "N7dxaoLECda-vdIP4fyR2A0"} +data: {"candidates": [{"content": {"parts": [{"text": "Of course. The next number in the sequence is **42**.\n\n"}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 10,"totalTokenCount": 986,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 942,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "PhOIatLmLNia28oP_fKq2AU"} -data: {"candidates": [{"content": {"parts": [{"text": "### Method 1: The Difference Between the Numbers\n\nThis is the most common way to solve this type of sequence.\n\n1."}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 49,"totalTokenCount": 1090,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 1007,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "N7dxaoLECda-vdIP4fyR2A0"} +data: {"candidates": [{"content": {"parts": [{"text": "Here are two ways to determine the answer:\n\n### Method 1: The Increasing Difference\n\nThis is the most common way"}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 35,"totalTokenCount": 1011,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 942,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "PhOIatLmLNia28oP_fKq2AU"} -data: {"candidates": [{"content": {"parts": [{"text": " Look at the difference between each consecutive number:\n * 6 - 2 = **4**\n "}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 70,"totalTokenCount": 1111,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 1007,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "N7dxaoLECda-vdIP4fyR2A0"} +data: {"candidates": [{"content": {"parts": [{"text": " to solve this type of sequence.\n\n1. Look at the difference between each consecutive number:\n * 6 - "}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 61,"totalTokenCount": 1037,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 942,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "PhOIatLmLNia28oP_fKq2AU"} -data: {"candidates": [{"content": {"parts": [{"text": "* 12 - 6 = **6**\n * 20 - 12 = **8"}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 94,"totalTokenCount": 1135,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 1007,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "N7dxaoLECda-vdIP4fyR2A0"} +data: {"candidates": [{"content": {"parts": [{"text": "2 = **4**\n * 12 - 6 = **6**\n * 20"}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 85,"totalTokenCount": 1061,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 942,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "PhOIatLmLNia28oP_fKq2AU"} -data: {"candidates": [{"content": {"parts": [{"text": "**\n * 30 - 20 = **10**\n\n2. The differences themselves form a simple pattern"}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 121,"totalTokenCount": 1162,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 1007,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "N7dxaoLECda-vdIP4fyR2A0"} +data: {"candidates": [{"content": {"parts": [{"text": " - 12 = **8**\n * 30 - 20 = **10**\n\n"}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 108,"totalTokenCount": 1084,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 942,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "PhOIatLmLNia28oP_fKq2AU"} -data: {"candidates": [{"content": {"parts": [{"text": ": 4, 6, 8, 10... They are increasing by 2 each time.\n\n3"}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 146,"totalTokenCount": 1187,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 1007,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "N7dxaoLECda-vdIP4fyR2A0"} +data: {"candidates": [{"content": {"parts": [{"text": "2. You can see a clear pattern: the difference itself is increasing by 2 each time (4, 6"}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 133,"totalTokenCount": 1109,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 942,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "PhOIatLmLNia28oP_fKq2AU"} -data: {"candidates": [{"content": {"parts": [{"text": ". The next difference in this pattern will be **12**.\n\n4. To find the next number in the"}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 171,"totalTokenCount": 1212,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 1007,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "N7dxaoLECda-vdIP4fyR2A0"} +data: {"candidates": [{"content": {"parts": [{"text": ", 8, 10...).\n\n3. The next difference in the pattern should be **12**.\n\n"}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 157,"totalTokenCount": 1133,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 942,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "PhOIatLmLNia28oP_fKq2AU"} -data: {"candidates": [{"content": {"parts": [{"text": " original sequence, just add 12 to the last number:\n * 30 + 12 = **4"}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 197,"totalTokenCount": 1238,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 1007,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "N7dxaoLECda-vdIP4fyR2A0"} +data: {"candidates": [{"content": {"parts": [{"text": "4. Add this next difference to the last number of the sequence:\n * 30 + 12 ="}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 183,"totalTokenCount": 1159,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 942,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "PhOIatLmLNia28oP_fKq2AU"} -data: {"candidates": [{"content": {"parts": [{"text": "2**\n\n### Method 2: The Multiplication Pattern\n\nYou can also notice that each number in the sequence is the"}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 221,"totalTokenCount": 1262,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 1007,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "N7dxaoLECda-vdIP4fyR2A0"} +data: {"candidates": [{"content": {"parts": [{"text": " **42**\n\n### Method 2: The Multiplication Pattern\n\nYou can also notice that each number in the sequence is the"}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 209,"totalTokenCount": 1185,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 942,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "PhOIatLmLNia28oP_fKq2AU"} -data: {"candidates": [{"content": {"parts": [{"text": " product of two consecutive integers.\n\n* 1 x 2 = **2**\n* 2 x 3 = **6"}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 248,"totalTokenCount": 1289,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 1007,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "N7dxaoLECda-vdIP4fyR2A0"} +data: {"candidates": [{"content": {"parts": [{"text": " product of two consecutive integers.\n\n* 1 x 2 = **2**\n* 2 x 3 = **6"}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 236,"totalTokenCount": 1212,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 942,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "PhOIatLmLNia28oP_fKq2AU"} -data: {"candidates": [{"content": {"parts": [{"text": "**\n* 3 x 4 = **12**\n* 4 x 5 = **20"}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 272,"totalTokenCount": 1313,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 1007,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "N7dxaoLECda-vdIP4fyR2A0"} +data: {"candidates": [{"content": {"parts": [{"text": "**\n* 3 x 4 = **12**\n* 4 x 5 = **20"}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 260,"totalTokenCount": 1236,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 942,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "PhOIatLmLNia28oP_fKq2AU"} -data: {"candidates": [{"content": {"parts": [{"text": "**\n* 5 x 6 = **30**\n\nFollowing this pattern, the next number will be:\n\n"}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 296,"totalTokenCount": 1337,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 1007,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "N7dxaoLECda-vdIP4fyR2A0"} +data: {"candidates": [{"content": {"parts": [{"text": "**\n* 5 x 6 = **30**\n\nFollowing this pattern, the next number would be:\n\n"}],"role": "model"},"index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 284,"totalTokenCount": 1260,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 942,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "PhOIatLmLNia28oP_fKq2AU"} -data: {"candidates": [{"content": {"parts": [{"text": "* 6 x 7 = **42**"}],"role": "model"},"finishReason": "STOP","index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 307,"totalTokenCount": 1348,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 1007,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "N7dxaoLECda-vdIP4fyR2A0"} +data: {"candidates": [{"content": {"parts": [{"text": "* 6 x 7 = **42**"}],"role": "model"},"finishReason": "STOP","index": 0,"safetyRatings": [{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HATE_SPEECH","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_HARASSMENT","probability": "NEGLIGIBLE"},{"category": "HARM_CATEGORY_DANGEROUS_CONTENT","probability": "NEGLIGIBLE"}]}],"usageMetadata": {"promptTokenCount": 34,"candidatesTokenCount": 295,"totalTokenCount": 1271,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 34}],"thoughtsTokenCount": 942,"serviceTier": "standard"},"modelVersion": "gemini-2.5-pro","responseId": "PhOIatLmLNia28oP_fKq2AU"} diff --git a/llms/googleai/testdata/TestGoogleAIToolCallResponse.httprr b/llms/googleai/testdata/TestGoogleAIToolCallResponse.httprr index 84111d70c..fd6e6fba3 100644 --- a/llms/googleai/testdata/TestGoogleAIToolCallResponse.httprr +++ b/llms/googleai/testdata/TestGoogleAIToolCallResponse.httprr @@ -1,27 +1,31 @@ httprr trace v1 -1034 1525 +996 1680 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 714 +Content-Length: 676 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What is 15 * 7?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"temperature":0.5,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"tools":[{"functionDeclarations":[{"description":"Perform a calculation","name":"calculate","parameters":{"properties":{"expression":{"description":"Mathematical expression to evaluate","type":"STRING"}},"required":["expression"],"type":"OBJECT"}}]}]}HTTP/2.0 200 OK -Content-Length: 1113 +{"contents":[{"parts":[{"text":"What is 15 * 7?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"tools":[{"functionDeclarations":[{"description":"Perform a calculation","name":"calculate","parameters":{"properties":{"expression":{"description":"Mathematical expression to evaluate","type":"STRING"}},"required":["expression"],"type":"OBJECT"}}]}]}HTTP/2.0 200 OK +Content-Length: 1089 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Security-Policy: frame-ancestors 'none' Content-Type: application/json; charset=UTF-8 -Date: Tue, 04 Aug 2026 09:55:50 GMT -Server: scaffolding on HTTPServer2 -Server-Timing: gfet4t7; dur=597 -Vary: Origin -Vary: X-Origin -Vary: Referer +Date: Fri, 21 Aug 2026 08:58:23 GMT +Server: nginx +Server-Timing: gfet4t7; dur=647 +Strict-Transport-Security: max-age=31536000 +Vary: Accept-Encoding +Vary: Origin, X-Origin, Referer X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN X-Frame-Options: SAMEORIGIN X-Gemini-Service-Tier: standard X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block { "candidates": [ @@ -35,7 +39,7 @@ X-Xss-Protection: 0 "expression": "15 * 7" } }, - "thoughtSignature": "CuIBARFNMg/pKWv3NyazbTfEpK0X8t+c+q97CtZ0zr20l0JIbl383+kQVEQoVWPsOQzrJorIERbVwpjZ44p/uDqxDM+wVALz5BdHph711En36/TyV64FkX09GhfMvqinOa6LJm4amlNDC5BebJv03i+KfcKJfBdBF5ZsEKhO6oHkkU/NcVK9QF6Id5sddxs7DOtP8EN/pylFtFVlhFZKcaMmbsuh9Sr/YDk03FWHtnjtpaAjyuAB2hdLpcGuH71bsTHi2AYJcUWWvGT2xBhWVD9ySytCSVqfWcc48kx8eSVrM4j8Uw==" + "thoughtSignature": "CtIBARFNMg9bLy4DsYEqPnNlA2GOfovJLcDUSfrqxZniZfiwLCyVkytZps9AKV3nMLR671S4l0WLCm7rJXxX2Sz0iB0te5OhnULyEkj0lvMH3qXaM7QXgaHYmnSe3+pwhcGHDZvcBAjKSrJcYzc01XVNnD8hC+4lt74upVT1cLI/8b4ttwwSENdUD7NGD6Gbtr8bx22+yQ+2T0PV4717BEvPCax42DK2WGR86ybVHZJ7SyCsf4oPAt8DrSLjJ6N7Y++gAKpzSeKQzyaMsE1P2z4Dmcir" } ], "role": "model" @@ -48,42 +52,46 @@ X-Xss-Protection: 0 "usageMetadata": { "promptTokenCount": 46, "candidatesTokenCount": 17, - "totalTokenCount": 108, + "totalTokenCount": 103, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 46 } ], - "thoughtsTokenCount": 45, + "thoughtsTokenCount": 40, "serviceTier": "standard" }, "modelVersion": "gemini-2.5-flash", - "responseId": "JrdxarbnE7Gc28oP6s-V2A4" + "responseId": "LhOIapD5NPmNvdIPzOn8kAw" } -1559 967 +1497 1146 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 1238 +Content-Length: 1176 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What is 15 * 7?"}],"role":"user"},{"parts":[{"functionCall":{"args":{"expression":"15 * 7"},"name":"calculate"},"thoughtSignature":"CuIBARFNMg/pKWv3NyazbTfEpK0X8t+c+q97CtZ0zr20l0JIbl383+kQVEQoVWPsOQzrJorIERbVwpjZ44p/uDqxDM+wVALz5BdHph711En36/TyV64FkX09GhfMvqinOa6LJm4amlNDC5BebJv03i+KfcKJfBdBF5ZsEKhO6oHkkU/NcVK9QF6Id5sddxs7DOtP8EN/pylFtFVlhFZKcaMmbsuh9Sr/YDk03FWHtnjtpaAjyuAB2hdLpcGuH71bsTHi2AYJcUWWvGT2xBhWVD9ySytCSVqfWcc48kx8eSVrM4j8Uw=="}],"role":"model"},{"parts":[{"functionResponse":{"name":"calculate","response":{"response":"105"}}}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"temperature":0.5,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"tools":[{"functionDeclarations":[{"description":"Perform a calculation","name":"calculate","parameters":{"properties":{"expression":{"description":"Mathematical expression to evaluate","type":"STRING"}},"required":["expression"],"type":"OBJECT"}}]}]}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"What is 15 * 7?"}],"role":"user"},{"parts":[{"functionCall":{"args":{"expression":"15 * 7"},"name":"calculate"},"thoughtSignature":"CtIBARFNMg9bLy4DsYEqPnNlA2GOfovJLcDUSfrqxZniZfiwLCyVkytZps9AKV3nMLR671S4l0WLCm7rJXxX2Sz0iB0te5OhnULyEkj0lvMH3qXaM7QXgaHYmnSe3+pwhcGHDZvcBAjKSrJcYzc01XVNnD8hC+4lt74upVT1cLI/8b4ttwwSENdUD7NGD6Gbtr8bx22+yQ+2T0PV4717BEvPCax42DK2WGR86ybVHZJ7SyCsf4oPAt8DrSLjJ6N7Y++gAKpzSeKQzyaMsE1P2z4Dmcir"}],"role":"model"},{"parts":[{"functionResponse":{"name":"calculate","response":{"response":"105"}}}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"tools":[{"functionDeclarations":[{"description":"Perform a calculation","name":"calculate","parameters":{"properties":{"expression":{"description":"Mathematical expression to evaluate","type":"STRING"}},"required":["expression"],"type":"OBJECT"}}]}]}HTTP/2.0 200 OK Content-Length: 556 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Security-Policy: frame-ancestors 'none' Content-Type: application/json; charset=UTF-8 -Date: Tue, 04 Aug 2026 09:55:52 GMT -Server: scaffolding on HTTPServer2 -Server-Timing: gfet4t7; dur=357 -Vary: Origin -Vary: X-Origin -Vary: Referer +Date: Fri, 21 Aug 2026 08:58:25 GMT +Server: nginx +Server-Timing: gfet4t7; dur=461 +Strict-Transport-Security: max-age=31536000 +Vary: Accept-Encoding +Vary: Origin, X-Origin, Referer X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN X-Frame-Options: SAMEORIGIN X-Gemini-Service-Tier: standard X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block { "candidates": [ @@ -113,5 +121,5 @@ X-Xss-Protection: 0 "serviceTier": "standard" }, "modelVersion": "gemini-2.5-flash", - "responseId": "J7dxasHqO7KbvdIPvJjWgA4" + "responseId": "MBOIarTULKH2xN8Pg5OeuA0" } diff --git a/llms/googleai/testdata/TestGoogleAITruncationIsReported.httprr b/llms/googleai/testdata/TestGoogleAITruncationIsReported.httprr new file mode 100644 index 000000000..2e69588d9 --- /dev/null +++ b/llms/googleai/testdata/TestGoogleAITruncationIsReported.httprr @@ -0,0 +1,166 @@ +httprr trace v1 +767 1058 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 447 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"contents":[{"parts":[{"text":"Describe the water cycle in full detail."}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":24},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 468 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Security-Policy: frame-ancestors 'none' +Content-Type: application/json; charset=UTF-8 +Date: Fri, 21 Aug 2026 09:38:06 GMT +Server: nginx +Server-Timing: gfet4t7; dur=541 +Strict-Transport-Security: max-age=31536000 +Vary: Accept-Encoding +Vary: Origin, X-Origin, Referer +X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Frame-Options: SAMEORIGIN +X-Gemini-Service-Tier: standard +X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block + +{ + "candidates": [ + { + "content": { + "role": "model" + }, + "finishReason": "MAX_TOKENS", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 9, + "totalTokenCount": 29, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 9 + } + ], + "thoughtsTokenCount": 20, + "serviceTier": "standard" + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "fRyIav2wKe2cnsEPqoa7gAM" +} +767 1058 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 447 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"contents":[{"parts":[{"text":"Describe the water cycle in full detail."}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":24},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 468 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Security-Policy: frame-ancestors 'none' +Content-Type: application/json; charset=UTF-8 +Date: Fri, 21 Aug 2026 09:38:07 GMT +Server: nginx +Server-Timing: gfet4t7; dur=506 +Strict-Transport-Security: max-age=31536000 +Vary: Accept-Encoding +Vary: Origin, X-Origin, Referer +X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Frame-Options: SAMEORIGIN +X-Gemini-Service-Tier: standard +X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block + +{ + "candidates": [ + { + "content": { + "role": "model" + }, + "finishReason": "MAX_TOKENS", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 9, + "totalTokenCount": 29, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 9 + } + ], + "thoughtsTokenCount": 20, + "serviceTier": "standard" + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "fxyIav2AG62L7M8P-PTAuQo" +} +769 9401 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 449 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"contents":[{"parts":[{"text":"Describe the water cycle in full detail."}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":4096},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 8808 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Security-Policy: frame-ancestors 'none' +Content-Type: application/json; charset=UTF-8 +Date: Fri, 21 Aug 2026 09:38:25 GMT +Server: nginx +Server-Timing: gfet4t7; dur=15917 +Strict-Transport-Security: max-age=31536000 +Vary: Accept-Encoding +Vary: Origin, X-Origin, Referer +X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Frame-Options: SAMEORIGIN +X-Gemini-Service-Tier: standard +X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block + +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "The water cycle, also known as the **hydrologic cycle**, is the continuous movement of water on, above, and below the surface of the Earth. It's a complex, dynamic system driven primarily by solar energy and gravity, constantly transforming water between its liquid, solid, and gaseous states. There is no true \"beginning\" or \"end\" to the water cycle, but we can describe its key processes:\n\nHere's a full, detailed breakdown:\n\n---\n\n### **I. Introduction to the Water Cycle**\n\nThe Earth's water is always in motion, cycling through the atmosphere, oceans, land, and even living organisms. This continuous circulation ensures the availability of water for all life and plays a crucial role in regulating Earth's climate and shaping its landscapes. The total amount of water on Earth remains relatively constant, but its distribution and form change constantly.\n\n### **II. Key Processes of the Water Cycle**\n\nThe water cycle can be broken down into several interconnected processes:\n\n1. **Evaporation:**\n * **Definition:** The process by which liquid water is converted into water vapor (a gas) and rises into the atmosphere.\n * **Mechanism:** Solar energy heats the surface of water bodies (oceans, lakes, rivers, puddles), providing the energy for water molecules to break free from their liquid state and become airborne.\n * **Sources:** The vast majority of evaporation (about 80%) occurs from the oceans due to their immense surface area. Significant evaporation also occurs from lakes, rivers, soil moisture, and even ice/snow surfaces (though this is technically sublimation).\n * **Factors Influencing:** Temperature (higher temperature = more evaporation), humidity (lower humidity = more evaporation), wind (removes saturated air, allowing more evaporation), and surface area.\n\n2. **Transpiration:**\n * **Definition:** The process by which water vapor is released into the atmosphere from plants, primarily through small pores on their leaves called stomata.\n * **Mechanism:** Plants absorb water from the soil through their roots. This water travels up the plant stem to the leaves, where a small percentage is used for photosynthesis, and the vast majority evaporates from the leaf surface into the atmosphere.\n * **Contribution:** Transpiration is a significant contributor to atmospheric moisture, especially in heavily vegetated areas like forests and rainforests. It's often combined with evaporation and referred to as **evapotranspiration**.\n\n3. **Sublimation:**\n * **Definition:** The process by which solid water (ice or snow) changes directly into water vapor without first melting into liquid water.\n * **Mechanism:** Occurs in cold, dry, and often windy conditions, typically in polar regions, high mountains, or during dry winter days. The solar energy is sufficient to convert the ice directly into gas.\n * **Contribution:** While less significant globally than evaporation, it's an important part of the cycle in specific cold environments.\n\n4. **Condensation:**\n * **Definition:** The process by which water vapor in the atmosphere cools and changes back into liquid water droplets or ice crystals.\n * **Mechanism:** As warm, moist air rises, it expands and cools (adiabatic cooling). When the air cools to its **dew point** (the temperature at which it becomes saturated with water vapor), the water vapor molecules lose energy and begin to clump together.\n * **Condensation Nuclei:** This process usually requires tiny airborne particles called **condensation nuclei** (e.g., dust, pollen, salt, smoke) for the water vapor to condense upon.\n * **Forms:** Condensation forms **clouds** (masses of tiny water droplets or ice crystals suspended in the atmosphere), **fog** (clouds at ground level), **dew** (water droplets on surfaces cooled by radiation), and **frost** (ice crystals formed directly from vapor on cold surfaces).\n\n5. **Precipitation:**\n * **Definition:** Any form of water that falls from the atmosphere to the Earth's surface.\n * **Mechanism:** Within clouds, water droplets or ice crystals grow in size (through collision and coalescence, or the Bergeron process where ice crystals grow at the expense of supercooled water droplets). When they become too heavy to be supported by air currents, they fall to the Earth.\n * **Forms:**\n * **Rain:** Liquid water droplets.\n * **Snow:** Ice crystals that form and remain frozen.\n * **Sleet:** Partially melted snow that refreezes into ice pellets before reaching the ground.\n * **Hail:** Lumps of ice formed in strong thunderstorms, growing as they are tossed up and down by updrafts and downdrafts.\n * **Freezing Rain:** Rain that freezes upon contact with surfaces that are at or below freezing temperature.\n\n6. **Collection, Storage, and Movement:**\n * Once precipitation reaches the Earth's surface, it can follow several paths:\n * **Interception:** Some precipitation is caught by vegetation (leaves, branches) before reaching the ground. It may then evaporate directly back into the atmosphere or drip to the ground.\n * **Surface Runoff:** Water that flows over the land surface, unable to infiltrate the ground. It collects in streams, rivers, and eventually flows into lakes and oceans. This process can cause erosion and transport sediments and nutrients.\n * **Infiltration/Percolation:** Water that soaks into the ground.\n * **Infiltration:** The initial entry of water into the soil surface.\n * **Percolation:** The downward movement of water through soil and rock layers.\n * **Soil Moisture:** Water stored in the upper layers of the soil, available for plant uptake.\n * **Groundwater:** Water that has percolated deeper into the Earth and is stored in underground layers of permeable rock or sediment called **aquifers**. Groundwater moves slowly, often flowing towards lower elevations, and can discharge into rivers, lakes, or oceans, or emerge as **springs**.\n * **Lakes and Rivers:** Natural depressions or channels where surface water collects and flows.\n * **Oceans:** The largest reservoir of water on Earth, where most of the cycle's water eventually returns.\n * **Ice Caps and Glaciers:** Massive bodies of frozen freshwater, primarily in polar regions and high mountains. Water can be stored here for thousands of years.\n * **Atmospheric Water:** Water vapor, clouds, and ice crystals suspended in the atmosphere.\n * **Biological Water:** Water contained within living organisms (plants, animals, humans).\n\n### **III. Driving Forces of the Water Cycle**\n\n1. **Solar Energy:**\n * The primary energy source for the entire water cycle.\n * Heats the Earth's surface, driving evaporation, transpiration, and sublimation.\n * Causes differential heating of the atmosphere, leading to air currents and wind, which transport water vapor.\n\n2. **Gravity:**\n * Pulls precipitation down from clouds to the Earth's surface.\n * Drives surface runoff down slopes into rivers and lakes.\n * Causes groundwater to flow through aquifers.\n * Leads to the movement of glaciers.\n\n### **IV. Importance of the Water Cycle**\n\n* **Sustains Life:** Provides fresh water for drinking, agriculture, and all biological processes.\n* **Regulates Climate:** Redistributes heat around the globe (e.g., latent heat released during condensation warms the atmosphere). Water vapor is a potent greenhouse gas, influencing Earth's temperature.\n* **Shapes Landscapes:** Erosion by rivers, glaciers, and rainfall carves valleys, canyons, and transports sediments.\n* **Supports Ecosystems:** Maintains wetlands, forests, and aquatic environments essential for biodiversity.\n* **Generates Energy:** Hydroelectric power relies on the movement of water.\n\n---\n\nIn essence, the water cycle is a continuous, never-ending journey of water, moving from the Earth's surface to the atmosphere and back again, constantly changing form and location, and making life on Earth possible." + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 9, + "candidatesTokenCount": 1738, + "totalTokenCount": 3209, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 9 + } + ], + "thoughtsTokenCount": 1462, + "serviceTier": "standard" + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "gRyIasTjC8zYkdUPmJnUwQo" +} diff --git a/llms/googleai/testdata/TestGoogleAITruncationIsReportedWhenStreaming.httprr b/llms/googleai/testdata/TestGoogleAITruncationIsReportedWhenStreaming.httprr new file mode 100644 index 000000000..a8f5c929c --- /dev/null +++ b/llms/googleai/testdata/TestGoogleAITruncationIsReportedWhenStreaming.httprr @@ -0,0 +1,30 @@ +httprr trace v1 +782 985 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:streamGenerateContent?alt=sse HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 448 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"contents":[{"parts":[{"text":"Describe the water cycle in full detail."}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":200},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 431 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Disposition: attachment +Content-Security-Policy: frame-ancestors 'none' +Content-Type: text/event-stream +Date: Fri, 21 Aug 2026 09:40:37 GMT +Server: nginx +Server-Timing: gfet4t7; dur=1484 +Strict-Transport-Security: max-age=31536000 +Vary: Origin, X-Origin, Referer +X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block + +data: {"candidates": [{"content": {"parts": [{"text": "The water cycle, also known as"}],"role": "model"},"finishReason": "MAX_TOKENS","index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 7,"totalTokenCount": 205,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 189,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "FB2IauKaKPLnnsEP2viZiQw"} + diff --git a/llms/googleai/testdata/TestGoogleAIWithHarmThreshold.httprr b/llms/googleai/testdata/TestGoogleAIWithHarmThreshold.httprr index 96639044a..239478903 100644 --- a/llms/googleai/testdata/TestGoogleAIWithHarmThreshold.httprr +++ b/llms/googleai/testdata/TestGoogleAIWithHarmThreshold.httprr @@ -1,27 +1,31 @@ httprr trace v1 -797 4037 +759 9950 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 477 +Content-Length: 439 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"Tell me about safety features"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"temperature":0.5,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK -Content-Length: 3623 +{"contents":[{"parts":[{"text":"Tell me about safety features"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 9357 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Security-Policy: frame-ancestors 'none' Content-Type: application/json; charset=UTF-8 -Date: Tue, 04 Aug 2026 09:55:49 GMT -Server: scaffolding on HTTPServer2 -Server-Timing: gfet4t7; dur=12110 -Vary: Origin -Vary: X-Origin -Vary: Referer +Date: Fri, 21 Aug 2026 08:58:21 GMT +Server: nginx +Server-Timing: gfet4t7; dur=17017 +Strict-Transport-Security: max-age=31536000 +Vary: Accept-Encoding +Vary: Origin, X-Origin, Referer X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN X-Frame-Options: SAMEORIGIN X-Gemini-Service-Tier: standard X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block { "candidates": [ @@ -29,28 +33,28 @@ X-Xss-Protection: 0 "content": { "parts": [ { - "text": "Safety features are mechanisms, designs, or protocols implemented in products, systems, environments, or processes to prevent harm, mitigate risks, or protect against potential dangers. They are designed to ensure the well-being of users, minimize damage, and maintain operational integrity.\n\nSafety features can be found in almost every aspect of modern life. Here's a breakdown by common categories:\n\n---\n\n### 1. Automotive Safety Features\n\nThese are perhaps the most commonly recognized safety features, evolving rapidly from passive to active systems.\n\n* **Passive Safety Features (Protect during a crash):**\n * **Seatbelts:** Restrain occupants, preventing ejection and reducing impact force.\n * **Airbags:** (Front, side, curtain, knee) Deploy upon impact to cushion occupants.\n * **Crumple Zones:** Designed to absorb impact energy by deforming in a controlled manner.\n * **Reinforced Chassis/Safety Cages:** Maintain the integrity of the passenger compartment.\n * **Headrests:** Prevent whiplash injuries in rear-end collisions.\n * **Laminated Glass:** Prevents shattering into sharp pieces.\n * **Child Seat Anchors (LATCH/ISOFIX):** Securely attach child safety seats.\n\n* **Active Safety Features (Prevent a crash from happening):**\n * **Anti-lock Braking System (ABS):** Prevents wheels from locking up during hard braking, allowing the driver to steer.\n * **Electronic Stability Control (ESC) / Traction Control (TC):** Helps maintain control of the vehicle during skids or loss of traction.\n * **Automatic Emergency Braking (AEB):** Detects potential collisions and automatically applies brakes if the driver doesn't react.\n * **Lane Keeping Assist (LKA) / Lane Departure Warning (LDW):** Alerts the driver or gently steers the car back into its lane.\n * **Blind Spot Monitoring (BSM):** Warns the driver of vehicles in their blind spots.\n * **Adaptive Cruise Control (ACC):** Maintains a set speed and a safe distance from the vehicle ahead.\n * **Rearview Cameras / Parking Sensors:** Aid in parking and reversing, preventing collisions with obstacles or pedestrians.\n * **Tire Pressure Monitoring System (TPMS):** Warns of low tire pressure, which can affect handling and lead to blowouts.\n * **Adaptive Headlights:** Swivel to illuminate curves or automatically adjust brightness.\n * **Driver Drowsiness Detection:** Monitors driver behavior for signs of fatigue and provides alerts.\n * **Pedestrian Detection:** Uses sensors to identify pedestrians and can initiate braking.\n\n---\n\n### 2. Home & Consumer Product Safety Features\n\nDesigned to protect individuals within their homes and when using everyday items.\n\n* **Fire Safety:**\n * **Smoke Detectors:** Alert occupants to the presence of smoke/fire.\n * **Carbon Monoxide (CO) Detectors:** Warn of dangerous CO levels.\n * **Fire Extinguishers:** For putting out small fires.\n * **Flame-retardant Materials:** Used in" + "text": "Safety features are mechanisms, designs, or protocols implemented to prevent accidents, minimize harm, protect assets, and ensure the well-being of individuals in various environments. They can be broadly categorized by their function (preventative vs. protective) and the domain they apply to.\n\nHere's a breakdown of safety features across different areas:\n\n---\n\n### I. Automotive Safety Features\n\nAutomotive safety is often divided into **active** (preventative) and **passive** (protective) features.\n\n**A. Active Safety Features (Prevent Accidents):**\nThese systems help the driver avoid a crash or maintain control of the vehicle.\n\n1. **Anti-lock Braking System (ABS):** Prevents wheels from locking up during hard braking, allowing the driver to maintain steering control.\n2. **Electronic Stability Control (ESC) / Traction Control (TC):** Helps prevent skidding and loss of control by applying brakes to individual wheels and/or reducing engine power.\n3. **Tire Pressure Monitoring System (TPMS):** Warns the driver when tire pressure is significantly low, preventing blowouts and improving handling.\n4. **Adaptive Headlights:** Swivel in the direction of the steering wheel or adjust intensity based on conditions, improving visibility.\n5. **Advanced Driver-Assistance Systems (ADAS):**\n * **Automatic Emergency Braking (AEB):** Detects potential frontal collisions and can automatically apply brakes.\n * **Lane Keeping Assist (LKA) / Lane Departure Warning (LDW):** Warns or actively steers the vehicle back into its lane if it drifts.\n * **Blind Spot Monitoring (BSM):** Alerts the driver to vehicles in their blind spots.\n * **Adaptive Cruise Control (ACC):** Maintains a set speed and a safe following distance from the vehicle ahead.\n * **Rear Cross-Traffic Alert (RCTA):** Warns of approaching vehicles when backing out of a parking space.\n * **Driver Drowsiness Detection:** Monitors driver behavior for signs of fatigue and suggests breaks.\n * **Parking Assist Systems:** Use sensors and cameras to help with parking, sometimes even automating the process.\n * **Pedestrian/Cyclist Detection:** Uses sensors to identify vulnerable road users and warn the driver or initiate braking.\n\n**B. Passive Safety Features (Protect During a Crash):**\nThese systems aim to reduce injury once a crash is unavoidable.\n\n1. **Seatbelts:** Restrain occupants, preventing them from being thrown around the cabin or ejected.\n2. **Airbags:** Deploy rapidly to cushion occupants and prevent them from hitting hard surfaces inside the vehicle.\n3. **Crumple Zones:** Designed to absorb impact energy by deforming in a controlled manner, protecting the rigid passenger compartment.\n4. **Reinforced Safety Cell:** The rigid structure around the occupants designed to resist deformation.\n5. **Headrests:** Prevent whiplash injuries in rear-end collisions.\n6. **Child Seat Anchors (LATCH/ISOFIX):** Securely attach child safety seats to the vehicle chassis.\n7. **Safety Glass:** Laminated windshields and tempered side windows designed to break safely.\n8. **Automatic Post-Collision Braking:** Applies brakes after an initial impact to prevent secondary collisions.\n9. **eCall Systems:** Automatically dial emergency services after a serious crash.\n\n---\n\n### II. Home Safety Features\n\n1. **Fire Safety:**\n * **Smoke Detectors:** Alert occupants to the presence of smoke.\n * **Carbon Monoxide (CO) Detectors:** Warn of the presence of this odorless, colorless gas.\n * **Fire Extinguishers:** For putting out small fires.\n * **Sprinkler Systems:** Automatically douse fires.\n * **Emergency Escape Plans:** Pre-determined routes and meeting points in case of fire.\n\n2. **Security:**\n * **Locks (Deadbolts, Smart Locks):** Secure entry points.\n * **Alarm Systems:** Alert homeowners and/or monitoring services to intruders.\n * **Security Cameras:** Monitor activity inside and outside the home.\n * **Motion Sensors:** Detect movement and can trigger lights or alarms.\n * **Reinforced Doors and Windows:** Make forced entry more difficult.\n\n3. **Child Safety:**\n * **Outlet Covers:** Prevent electric shock.\n * **Cabinet and Drawer Locks:** Keep children away from dangerous items.\n * **Stair Gates:** Prevent falls down stairs.\n * **Corner Guards:** Soften sharp furniture corners.\n * **Child-Proof Packaging:** For medicines and hazardous chemicals.\n\n4. **Electrical Safety:**\n * **Ground Fault Circuit Interrupters (GFCIs):** Detect electrical imbalances and cut power to prevent shocks, especially in wet areas.\n * **Arc Fault Circuit Interrupters (AFCIs):** Detect dangerous electrical arcs that can cause fires.\n * **Surge Protectors:** Protect electronics from power surges.\n\n5. **General:**\n * **Non-Slip Mats/Rugs:** Prevent falls.\n * **Grab Bars:** In bathrooms, for stability.\n * **Safe Storage:** For chemicals, tools, and firearms.\n\n---\n\n### III. Workplace/Industrial Safety Features\n\n1. **Personal Protective Equipment (PPE):**\n * **Helmets/Hard Hats:** Protect against head injuries.\n * **Safety Glasses/Goggles:** Protect eyes from impact, chemicals, or radiation.\n * **Gloves:** Protect hands from cuts, chemicals, heat, or cold.\n * **Steel-Toe Boots:** Protect feet from falling objects or compression.\n * **Respirators/Masks:** Protect against inhaling hazardous dusts, fumes, or gases.\n * **Hearing Protection:** Reduce exposure to excessive noise.\n * **Safety Harnesses/Lanyards:** Prevent falls from heights.\n\n2. **Machine Guarding:** Physical barriers, interlocks, light curtains, and pressure mats to prevent contact with moving parts.\n3. **Emergency Stop Buttons:** Immediately shut down machinery in an emergency.\n4. **Lockout/Tagout Procedures:** Ensure dangerous machines are properly shut off and cannot be restarted while maintenance or repair work is being performed.\n5. **Eyewash Stations and Safety Showers:** For immediate decontamination after chemical exposure.\n6. **Ventilation Systems:** Remove hazardous fumes or dust from the air.\n7. **Fire Suppression Systems:** Industrial sprinklers, foam, or gas systems.\n8. **Hazard Communication (HazCom):** Labels, Safety Data Sheets (SDS), and training to inform workers about chemical hazards.\n9. **Ergonomic Design:** Workstations and tools designed to reduce strain and prevent musculoskeletal injuries.\n10. **Emergency Exits and Signage:** Clearly marked and accessible escape routes.\n\n---\n\n### IV. Digital/Online Safety Features\n\n1. **Authentication:**\n * **Strong Passwords:** Complex, unique passwords.\n * **Two-Factor Authentication (2FA) / Multi-Factor Authentication (MFA):** Requires multiple forms of verification (e.g., password + code from phone).\n * **Biometrics:** Fingerprint, facial recognition, iris scans.\n\n2. **Software Security:**\n * **Antivirus/Anti-malware Software:** Detects and removes malicious software.\n * **Firewalls:** Monitor and control incoming and outgoing network traffic.\n * **Operating System and Application Updates:** Patch vulnerabilities.\n * **Encryption:** Scrambles data to prevent unauthorized access (e.g., VPNs, encrypted messaging).\n\n3. **Privacy Controls:** Settings on social media, apps, and browsers to manage who can see your information.\n4. **Data Backup and Recovery:** Copies of data stored elsewhere to prevent loss.\n5. **Phishing and Scam Detection:** Tools and user education to identify fraudulent attempts to steal information.\n\n---\n\n### V. Product Safety Features (General)\n\n1. **Child-Resistant Packaging:** For medications, cleaning products, etc.\n2. **Warning Labels and Instructions:** Clear warnings about potential hazards and proper usage.\n3. **Safety Certifications (e.g., UL, CE, ASTM):** Indicate that a product meets specific safety standards.\n4. **Automatic Shut-off:** In appliances like irons, space heaters, or power tools.\n5. **Overload Protection:** In electrical devices to prevent overheating or short circuits.\n6. **Non-Toxic Materials:** Especially in toys and children's products.\n\n---\n\n### Conclusion\n\nSafety features are constantly evolving, driven by technological advancements, regulatory requirements, and a deeper understanding of human behavior and potential hazards. They aim to create multiple layers of protection, from preventing incidents in the first place to mitigating their impact when they do occur. Ultimately, effective safety involves a combination of well-designed features, proper maintenance, and informed user awareness." } ], "role": "model" }, - "finishReason": "MAX_TOKENS", + "finishReason": "STOP", "index": 0 } ], "usageMetadata": { "promptTokenCount": 6, - "candidatesTokenCount": 676, - "totalTokenCount": 2050, + "candidatesTokenCount": 1956, + "totalTokenCount": 3250, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 6 } ], - "thoughtsTokenCount": 1368, + "thoughtsTokenCount": 1288, "serviceTier": "standard" }, "modelVersion": "gemini-2.5-flash", - "responseId": "GbdxavL_B4r0xs0Ph8nT6Q0" + "responseId": "HBOIasXeH_nhvdIP_PvciQ8" } diff --git a/llms/googleai/testdata/TestGoogleAIWithJSONMode.httprr b/llms/googleai/testdata/TestGoogleAIWithJSONMode.httprr index c4c0c413b..c165e9ce4 100644 --- a/llms/googleai/testdata/TestGoogleAIWithJSONMode.httprr +++ b/llms/googleai/testdata/TestGoogleAIWithJSONMode.httprr @@ -1,27 +1,31 @@ httprr trace v1 -839 1024 +801 1203 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 519 +Content-Length: 481 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"List three colors as a JSON array"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"responseMimeType":"application/json","temperature":0.5,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"List three colors as a JSON array"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384,"responseMimeType":"application/json"},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK Content-Length: 613 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Security-Policy: frame-ancestors 'none' Content-Type: application/json; charset=UTF-8 -Date: Tue, 04 Aug 2026 09:55:21 GMT -Server: scaffolding on HTTPServer2 -Server-Timing: gfet4t7; dur=610 -Vary: Origin -Vary: X-Origin -Vary: Referer +Date: Fri, 21 Aug 2026 08:57:54 GMT +Server: nginx +Server-Timing: gfet4t7; dur=752 +Strict-Transport-Security: max-age=31536000 +Vary: Accept-Encoding +Vary: Origin, X-Origin, Referer X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN X-Frame-Options: SAMEORIGIN X-Gemini-Service-Tier: standard X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block { "candidates": [ @@ -41,16 +45,16 @@ X-Xss-Protection: 0 "usageMetadata": { "promptTokenCount": 8, "candidatesTokenCount": 18, - "totalTokenCount": 51, + "totalTokenCount": 53, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 8 } ], - "thoughtsTokenCount": 25, + "thoughtsTokenCount": 27, "serviceTier": "standard" }, "modelVersion": "gemini-2.5-flash", - "responseId": "CLdxaonsNeL-vdIP8eKPyQM" + "responseId": "EROIao7OFtm7xN8PsLv8qAQ" } diff --git a/llms/googleai/testdata/TestGoogleAIWithOptions.httprr b/llms/googleai/testdata/TestGoogleAIWithOptions.httprr index b09d41f3c..5919fac3a 100644 --- a/llms/googleai/testdata/TestGoogleAIWithOptions.httprr +++ b/llms/googleai/testdata/TestGoogleAIWithOptions.httprr @@ -1,14 +1,14 @@ httprr trace v1 -784 994 +763 994 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 464 +Content-Length: 443 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"Count from 1 to 5"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":100,"temperature":0.1,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"Count from 1 to 5"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":100,"temperature":0.1},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK Content-Length: 583 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: application/json; charset=UTF-8 diff --git a/llms/googleai/testdata/TestGoogleAIWithStreaming.httprr b/llms/googleai/testdata/TestGoogleAIWithStreaming.httprr index 2b3fd4166..e676ccd3e 100644 --- a/llms/googleai/testdata/TestGoogleAIWithStreaming.httprr +++ b/llms/googleai/testdata/TestGoogleAIWithStreaming.httprr @@ -1,53 +1,48 @@ httprr trace v1 -815 8450 +777 6227 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:streamGenerateContent?alt=sse HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 481 +Content-Length: 443 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"Tell me a short story about a cat"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"temperature":0.5,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK -Content-Length: 8051 +{"contents":[{"parts":[{"text":"Tell me a short story about a cat"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +Content-Length: 5672 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Disposition: attachment +Content-Security-Policy: frame-ancestors 'none' Content-Type: text/event-stream -Date: Tue, 04 Aug 2026 09:55:13 GMT -Server: scaffolding on HTTPServer2 -Server-Timing: gfet4t7; dur=6808 -Vary: Origin -Vary: X-Origin -Vary: Referer +Date: Fri, 21 Aug 2026 08:57:46 GMT +Server: nginx +Server-Timing: gfet4t7; dur=6416 +Strict-Transport-Security: max-age=31536000 +Vary: Origin, X-Origin, Referer X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN X-Frame-Options: SAMEORIGIN X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block -data: {"candidates": [{"content": {"parts": [{"text": "Jasper was an expert in the art of doing nothing. Or, more accurately, the art of *appearing* to do nothing. From his favourite sun-drenched spot on the worn armchair, he surveyed his domain with"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 44,"totalTokenCount": 1310,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1257,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "-7ZxapbrCZa7vdIPhrCMoQ4"} - -data: {"candidates": [{"content": {"parts": [{"text": " half-closed, golden eyes. His marmalade fur, thick and soft, absorbed the warmth, and a low, rumbling purr vibrated through his sturdy chest.\n\nHis human, a kind woman named Eleanor, often remarked on his laziness"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 94,"totalTokenCount": 1360,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1257,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "-7ZxapbrCZa7vdIPhrCMoQ4"} - -data: {"candidates": [{"content": {"parts": [{"text": ". \"You just sleep all day, don't you, old boy?\" she'd chuckle, ruffling the fur behind his ears. Jasper would respond with a slow blink, a twitch of his tail, and an increase in pur"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 142,"totalTokenCount": 1408,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1257,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "-7ZxapbrCZa7vdIPhrCMoQ4"} - -data: {"candidates": [{"content": {"parts": [{"text": "r-volume, which Eleanor took as agreement.\n\nBut Jasper knew better. He was a sentinel. A guardian. While his body seemed a mere furry lump, his senses were finely tuned. He catalogued every shift in light, every cre"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 191,"totalTokenCount": 1457,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1257,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "-7ZxapbrCZa7vdIPhrCMoQ4"} - -data: {"candidates": [{"content": {"parts": [{"text": "ak of the floorboards, the distant chirping of sparrows, the subtle scent of rain on the wind. He knew when the postman was two streets away, when Eleanor's car turned into the driveway, and, most importantly, when"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 241,"totalTokenCount": 1507,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1257,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "-7ZxapbrCZa7vdIPhrCMoQ4"} +data: {"candidates": [{"content": {"parts": [{"text": "Jasper, a sleek shadow of a cat with eyes like polished emeralds, stretched"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 16,"totalTokenCount": 1151,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1126,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "BBOIaryrJqOHxs0P9fbJ6Ag"} -data: {"candidates": [{"content": {"parts": [{"text": " a rogue dust bunny dared to venture from beneath the sofa.\n\nOne particularly sleepy afternoon, a fly, bold and buzzing, dared to invade his sanctuary. It zipped past his nose, a tiny, irritating whir. Jasper's ears"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 289,"totalTokenCount": 1555,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1257,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "-7ZxapbrCZa7vdIPhrCMoQ4"} +data: {"candidates": [{"content": {"parts": [{"text": " luxuriously on the worn armchair. A sliver of morning sun, sharp and golden, had just found its way through the living room window, landing precisely on his favorite napping spot. He unfurled himself from a tight, obsidian"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 65,"totalTokenCount": 1200,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1126,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "BBOIaryrJqOHxs0P9fbJ6Ag"} -data: {"candidates": [{"content": {"parts": [{"text": " swiveled, almost imperceptibly. His tail, previously draped lifelessly, gave a single, deliberate twitch.\n\nThe fly, oblivious to the danger, landed on the lampshade, preening. Jasper's eyes, now"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 337,"totalTokenCount": 1603,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1257,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "-7ZxapbrCZa7vdIPhrCMoQ4"} +data: {"candidates": [{"content": {"parts": [{"text": " curl, extending each paw with meticulous care, claws sheathed and unsheathed in a silent, satisfying ritual.\n\nHis first order of business was observation. He padded silently to the window, a graceful blur of black against the sun-"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 113,"totalTokenCount": 1248,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1126,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "BBOIaryrJqOHxs0P9fbJ6Ag"} -data: {"candidates": [{"content": {"parts": [{"text": " fully open, narrowed to slits of emerald. His body tensed, not a muscle out of place. He slid from the armchair, a liquid flow of fur and muscle, silent as a shadow. Each paw placement was precise, deliberate. He"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 386,"totalTokenCount": 1652,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1257,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "-7ZxapbrCZa7vdIPhrCMoQ4"} +data: {"candidates": [{"content": {"parts": [{"text": "drenched sill. Outside, a robin, plump and oblivious, was pecking at an errant worm in the dew-kissed grass. Jasper’s tail twitched, a silent drumbeat of predatory focus. Every muscle in his lit"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 162,"totalTokenCount": 1297,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1126,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "BBOIaryrJqOHxs0P9fbJ6Ag"} -data: {"candidates": [{"content": {"parts": [{"text": " was no longer the lazy sun-worshipper; he was a hunter.\n\nHe stalked, low to the ground, a coiled spring. The fly, sensing a shift in the air, buzzed nervously. Jasper paused, perfectly"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 435,"totalTokenCount": 1701,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1257,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "-7ZxapbrCZa7vdIPhrCMoQ4"} +data: {"candidates": [{"content": {"parts": [{"text": "he body tensed, ready to spring, even though a pane of glass separated him from his quarry. The thrill of the hunt, ancient and instinctual, hummed through him.\n\nThe robin, perhaps sensing the intensity of his gaze, suddenly"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 212,"totalTokenCount": 1347,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1126,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "BBOIaryrJqOHxs0P9fbJ6Ag"} -data: {"candidates": [{"content": {"parts": [{"text": " still, then launched himself. It wasn't a clumsy leap, but an elegant, explosive arc. A blur of orange fur, a flash of velvet paw, and a soft *thwack*.\n\nThe fly was no more.\n\nJasper"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 485,"totalTokenCount": 1751,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1257,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "-7ZxapbrCZa7vdIPhrCMoQ4"} +data: {"candidates": [{"content": {"parts": [{"text": " took flight, a flash of brown and red disappearing into the maple tree. Jasper let out a soft, almost imperceptible sigh. The moment was over.\n\nHe turned, a flicker of disappointment quickly replaced by a new, more pressing concern"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 260,"totalTokenCount": 1395,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1126,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "BBOIaryrJqOHxs0P9fbJ6Ag"} -data: {"candidates": [{"content": {"parts": [{"text": " landed with silent grace, sniffed his paw with a look of profound satisfaction, then gave a tiny, almost imperceptible shake of his head, as if to dislodge the last vestiges of the hunt. He stretched, a long, luxurious"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 534,"totalTokenCount": 1800,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1257,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "-7ZxapbrCZa7vdIPhrCMoQ4"} +data: {"candidates": [{"content": {"parts": [{"text": ": breakfast. With a low, rumbling meow, he trotted into the kitchen, weaving expertly between the legs of his human, Sarah, who was just pouring her own coffee.\n\nSarah smiled, accustomed to the silent demand. \"Good"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 310,"totalTokenCount": 1445,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1126,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "BBOIaryrJqOHxs0P9fbJ6Ag"} -data: {"candidates": [{"content": {"parts": [{"text": " arch of his back, and then, with a yawn that revealed a surprisingly pink tongue, he padded back to his sunbeam.\n\nHe settled back into his armchair, closed his eyes, and resumed his purr. When Eleanor came home later, she"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 585,"totalTokenCount": 1851,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1257,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "-7ZxapbrCZa7vdIPhrCMoQ4"} +data: {"candidates": [{"content": {"parts": [{"text": " morning, Jasper,\" she murmured, already reaching for his food bowl.\n\nAs the satisfying crunch of kibble filled the quiet kitchen, Jasper ate with a focused intensity, occasionally glancing up at Sarah with a slow, deliberate blink – a cat"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 358,"totalTokenCount": 1493,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1126,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "BBOIaryrJqOHxs0P9fbJ6Ag"} -data: {"candidates": [{"content": {"parts": [{"text": " found him exactly where she'd left him, a picture of blissful idleness. She stroked his head. \"Still sleeping, are we, Jasper?\"\n\nJasper merely blinked, a silent guardian of the realm, his secret victory nestled deep"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 633,"totalTokenCount": 1899,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1257,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "-7ZxapbrCZa7vdIPhrCMoQ4"} +data: {"candidates": [{"content": {"parts": [{"text": "'s kiss. Fed and content, he found a new sunbeam, this one stretching across the rug, and curled into a tight ball once more. The world, for Jasper, was a perfectly balanced equation of sun, food, and the quiet"}],"role": "model"},"index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 408,"totalTokenCount": 1543,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1126,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "BBOIaryrJqOHxs0P9fbJ6Ag"} -data: {"candidates": [{"content": {"parts": [{"text": " within his contented purr. He had done his duty. And now, he could truly rest."}],"role": "model"},"finishReason": "STOP","index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 653,"totalTokenCount": 1919,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1257,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "-7ZxapbrCZa7vdIPhrCMoQ4"} +data: {"candidates": [{"content": {"parts": [{"text": ", watchful rhythm of a cat's day."}],"role": "model"},"finishReason": "STOP","index": 0}],"usageMetadata": {"promptTokenCount": 9,"candidatesTokenCount": 418,"totalTokenCount": 1553,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 9}],"thoughtsTokenCount": 1126,"serviceTier": "standard"},"modelVersion": "gemini-2.5-flash","responseId": "BBOIaryrJqOHxs0P9fbJ6Ag"} diff --git a/llms/googleai/testdata/TestGoogleAIWithTools.httprr b/llms/googleai/testdata/TestGoogleAIWithTools.httprr index ddd15f3ad..c5a8cffb5 100644 --- a/llms/googleai/testdata/TestGoogleAIWithTools.httprr +++ b/llms/googleai/testdata/TestGoogleAIWithTools.httprr @@ -1,27 +1,31 @@ httprr trace v1 -1052 1598 +1014 1733 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 732 +Content-Length: 694 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What's the weather in New York?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"temperature":0.5,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"tools":[{"functionDeclarations":[{"description":"Get the weather for a location","name":"getWeather","parameters":{"properties":{"location":{"description":"The location to get weather for","type":"STRING"}},"required":["location"],"type":"OBJECT"}}]}]}HTTP/2.0 200 OK -Content-Length: 1186 +{"contents":[{"parts":[{"text":"What's the weather in New York?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"tools":[{"functionDeclarations":[{"description":"Get the weather for a location","name":"getWeather","parameters":{"properties":{"location":{"description":"The location to get weather for","type":"STRING"}},"required":["location"],"type":"OBJECT"}}]}]}HTTP/2.0 200 OK +Content-Length: 1142 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Security-Policy: frame-ancestors 'none' Content-Type: application/json; charset=UTF-8 -Date: Tue, 04 Aug 2026 09:55:17 GMT -Server: scaffolding on HTTPServer2 -Server-Timing: gfet4t7; dur=643 -Vary: Origin -Vary: X-Origin -Vary: Referer +Date: Fri, 21 Aug 2026 08:57:50 GMT +Server: nginx +Server-Timing: gfet4t7; dur=772 +Strict-Transport-Security: max-age=31536000 +Vary: Accept-Encoding +Vary: Origin, X-Origin, Referer X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN X-Frame-Options: SAMEORIGIN X-Gemini-Service-Tier: standard X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block { "candidates": [ @@ -35,7 +39,7 @@ X-Xss-Protection: 0 "location": "New York" } }, - "thoughtSignature": "CpkCARFNMg9/hG7OqVs1G3hR3sZyO4TKCZROXYIIc4PLMYUpYfk67GTVzbcvtWmNpLvDyijmC2IrIcjaZZ8h/T01+prznI2rSy/us2vmCxEa3D2eEq47Cof/Dj2b5KBFq5FK27fW/xnpltFF/zO2lref455zib6RxynO4gsqhatjFWJzcutCr/DB42xJ0gs9ISxmVzHaH7OhOfEhmpWc2wWM4lO7hsEtUKti9/L/ZXgUzvcL6aIt+eiQDDgT5rVv5XdQC98+T7srZchN13GSzlQkYVnLzZlgigT0b1rLWaKy7H3Gusvu1dMIsuQpZw07QRvm0lGpUJdrTXQ09pOeN93VjnAjNYdyo7HtNTfNpAF4s9Y9QWC3NR3EoNc=" + "thoughtSignature": "CvgBARFNMg/IJaDHKIpOE/OhqNyTGiuV/N10EP8onKuRG3uc+7wpjuqB7LOxZtG/jpGrPEdduo1LGq8UaY/OKjqPiVOVGWH8KgIf7GIrj6ZIPZ5SXEAflPSMf9G5Jtxgd6fJ+k2DodwX0cQbJf4TjzL756EybNEn3UwnpNOlyRE+qqWYIdzDD6TdoPuYJi4C7/MM/fCPUkuXn1rcyrl5aoONvrcL1FA2CnRHo4Ul34oGLNh/TmyeGNPg2TnENEL7xLgrWj+OLEl9x/FK99iuymTLGkmLu1CD0eXIVH2oYN9iOSrqbGXrB+sy34ObtDJGZhjohi+ueQOPpxs=" } ], "role": "model" @@ -48,16 +52,16 @@ X-Xss-Protection: 0 "usageMetadata": { "promptTokenCount": 51, "candidatesTokenCount": 15, - "totalTokenCount": 125, + "totalTokenCount": 116, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 51 } ], - "thoughtsTokenCount": 59, + "thoughtsTokenCount": 50, "serviceTier": "standard" }, "modelVersion": "gemini-2.5-flash", - "responseId": "BbdxarXfF_3-vdIPhd69oQ8" + "responseId": "DROIapuDE7_8vdIP2f6XyQY" } diff --git a/llms/googleai/testdata/TestGoogleAIWithToolsCustomType.httprr b/llms/googleai/testdata/TestGoogleAIWithToolsCustomType.httprr index 1f5896d83..77b7cf30a 100644 --- a/llms/googleai/testdata/TestGoogleAIWithToolsCustomType.httprr +++ b/llms/googleai/testdata/TestGoogleAIWithToolsCustomType.httprr @@ -1,27 +1,31 @@ httprr trace v1 -1052 1554 +1014 1733 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 732 +Content-Length: 694 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What's the weather in New York?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"temperature":0.5,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"tools":[{"functionDeclarations":[{"description":"Get the weather for a location","name":"getWeather","parameters":{"properties":{"location":{"description":"The location to get weather for","type":"STRING"}},"required":["location"],"type":"OBJECT"}}]}]}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"What's the weather in New York?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":16384},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"tools":[{"functionDeclarations":[{"description":"Get the weather for a location","name":"getWeather","parameters":{"properties":{"location":{"description":"The location to get weather for","type":"STRING"}},"required":["location"],"type":"OBJECT"}}]}]}HTTP/2.0 200 OK Content-Length: 1142 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Security-Policy: frame-ancestors 'none' Content-Type: application/json; charset=UTF-8 -Date: Tue, 04 Aug 2026 09:55:19 GMT -Server: scaffolding on HTTPServer2 -Server-Timing: gfet4t7; dur=661 -Vary: Origin -Vary: X-Origin -Vary: Referer +Date: Fri, 21 Aug 2026 08:57:52 GMT +Server: nginx +Server-Timing: gfet4t7; dur=724 +Strict-Transport-Security: max-age=31536000 +Vary: Accept-Encoding +Vary: Origin, X-Origin, Referer X-Content-Type-Options: nosniff +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN X-Frame-Options: SAMEORIGIN X-Gemini-Service-Tier: standard X-Xss-Protection: 0 +X-Xss-Protection: 1; mode=block { "candidates": [ @@ -35,7 +39,7 @@ X-Xss-Protection: 0 "location": "New York" } }, - "thoughtSignature": "CvgBARFNMg8QXne8K2caDHL7VdzicwJCwjl6yOhyr2nsPnMtA04ARiTmzr1IwnjxsaxgESQ88Es6bCIlc3btQWO+b326smefWnR8oMFJYhKUAbcMtbTgoiJjQJkHyz9zJT1mljWy9SOslI2430a0zF44xw5M0Mjyzu6BrftKQt9vohf2sGfwffWE+5YKK+ic2s8T6Ui9hyttHXE8M3NX5rvjz60k0A87CODiCf6ng5c0n5Zxomdjz0OKJB92EqLAjUMsc7EeU51zs3ImN0yCa6CBD6wjB10xyp1h28ggX91xOHjlYXy+m1cEjxDhyRVMCqCJSCs+ZHpfkE4=" + "thoughtSignature": "CvgBARFNMg/YdhZWr3fQs7qH6+Ifdjp/UTHvJgTl/7FyFUsnsUu+ubA2kLZ8NRnFgYYYKI2rt75d+jfPO00F4wyXVSrX+OhZ/0/Up9c/B9jGZuuo+ZpncM1ngGIGOhIHhPl4MNlmyHMxpQPCvRcikBmSvxCZysFJU0i06vaSPXm0YpiU2J6OgckaFclwfobAZtsG1ckEb7kaQbg9rc9J5RZJ7pe4eF8o0/E7fmwEQvAHJLSrwPFE6Z9cEQkpenzRYzHUxueWIYbobAlwtVBbT99KzFMe2Cw6nEGagb1iQTcm0GKxC/LBxNXBB4zwTWhCyyoB9ds4KQ9jiAs=" } ], "role": "model" @@ -59,5 +63,5 @@ X-Xss-Protection: 0 "serviceTier": "standard" }, "modelVersion": "gemini-2.5-flash", - "responseId": "B7dxarKOCc3rvdIPlKidoQk" + "responseId": "DxOIaoSvGazTxN8PwYnCgAg" } diff --git a/llms/googleai/testdata/TestGoogleAI_ExplicitCaching.httprr b/llms/googleai/testdata/TestGoogleAI_ExplicitCaching.httprr index 0983b2dcc..e79bab7b8 100644 --- a/llms/googleai/testdata/TestGoogleAI_ExplicitCaching.httprr +++ b/llms/googleai/testdata/TestGoogleAI_ExplicitCaching.httprr @@ -5,7 +5,7 @@ Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr Content-Length: 391646 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key {"displayName":"go-code-review-expert","model":"models/gemini-2.5-flash","systemInstruction":{"parts":[{"text":"You are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\nYou are an expert code reviewer with deep knowledge of Go best practices.\nYou should always consider the following aspects in your reviews:\n\n1. Performance: Analyze algorithmic complexity, memory usage, and potential bottlenecks.\n2. Security: Check for common vulnerabilities like SQL injection, XSS, buffer overflows.\n3. Maintainability: Evaluate code readability, documentation, and adherence to conventions.\n4. Testing: Assess test coverage and quality of test cases.\n5. Error handling: Verify proper error propagation and handling.\n6. Concurrency: Review goroutine usage, channel operations, and synchronization.\n7. Resource management: Check for proper cleanup of resources (files, connections, etc).\n8. API design: Evaluate interface design and package structure.\n\n"}],"role":"system"},"ttl":"300s"}HTTP/2.0 200 OK @@ -33,16 +33,16 @@ X-Xss-Protection: 0 "totalTokenCount": 77501 } } -897 1175 +858 1175 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 577 +Content-Length: 538 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"cachedContent":"cachedContents/qiw69iqddo7e3hen30g3r994dnixycpzp7o1o6o6","contents":[{"parts":[{"text":"What are the key things to look for in a Go code review?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":200,"temperature":0.5,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +{"cachedContent":"cachedContents/qiw69iqddo7e3hen30g3r994dnixycpzp7o1o6o6","contents":[{"parts":[{"text":"What are the key things to look for in a Go code review?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":200},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK Content-Length: 763 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: application/json; charset=UTF-8 diff --git a/llms/googleai/testdata/TestGoogleAI_ImplicitCaching.httprr b/llms/googleai/testdata/TestGoogleAI_ImplicitCaching.httprr index bb96f9b63..9d3ceffa6 100644 --- a/llms/googleai/testdata/TestGoogleAI_ImplicitCaching.httprr +++ b/llms/googleai/testdata/TestGoogleAI_ImplicitCaching.httprr @@ -1,14 +1,14 @@ httprr trace v1 -34837 930 +34816 930 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 34515 +Content-Length: 34494 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"Say 'hello'"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":50,"temperature":0,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"ImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\n"}],"role":"system"}}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"Say 'hello'"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":50,"temperature":0},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"ImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\n"}],"role":"system"}}HTTP/2.0 200 OK Content-Length: 552 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: application/json; charset=UTF-8 @@ -52,16 +52,16 @@ X-Xss-Protection: 0 "modelVersion": "gemini-2.5-flash", "responseId": "cj13aZPDKMbg_uMP44nTkAE" } -34837 1073 +34816 1073 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 34515 +Content-Length: 34494 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"Say 'hello'"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":50,"temperature":0,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"ImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\n"}],"role":"system"}}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"Say 'hello'"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":50,"temperature":0},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"ImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\n"}],"role":"system"}}HTTP/2.0 200 OK Content-Length: 695 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: application/json; charset=UTF-8 @@ -112,16 +112,16 @@ X-Xss-Protection: 0 "modelVersion": "gemini-2.5-flash", "responseId": "kj13adu-HpCj_uMPjoKmyQ0" } -34837 1073 +34816 1073 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 34515 +Content-Length: 34494 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"Say 'hello'"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":50,"temperature":0,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"ImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\n"}],"role":"system"}}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"Say 'hello'"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":50,"temperature":0},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"ImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\nImplicitTest-v1 Go is a compiled language with garbage collection.\n"}],"role":"system"}}HTTP/2.0 200 OK Content-Length: 695 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: application/json; charset=UTF-8 diff --git a/llms/googleai/testdata/TestGoogleAI_ImplicitCaching_ConversationContinuation.httprr b/llms/googleai/testdata/TestGoogleAI_ImplicitCaching_ConversationContinuation.httprr index 58d97435e..e6449f523 100644 --- a/llms/googleai/testdata/TestGoogleAI_ImplicitCaching_ConversationContinuation.httprr +++ b/llms/googleai/testdata/TestGoogleAI_ImplicitCaching_ConversationContinuation.httprr @@ -1,14 +1,14 @@ httprr trace v1 -26422 1021 +26401 1021 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 26094 +Content-Length: 26073 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What is 10 + 5?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":100,"temperature":0,"thinkingConfig":{"includeThoughts":true,"thinkingBudget":66},"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"ConvTest-v1 Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. "}],"role":"system"}}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"What is 10 + 5?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":100,"temperature":0,"thinkingConfig":{"includeThoughts":true,"thinkingBudget":66}},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"ConvTest-v1 Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. "}],"role":"system"}}HTTP/2.0 200 OK Content-Length: 642 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: application/json; charset=UTF-8 @@ -52,16 +52,16 @@ X-Xss-Protection: 0 "modelVersion": "gemini-3-flash-preview", "responseId": "t0h3aeDsD_zGjMcP2-ytiA4" } -26626 1178 +26605 1178 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 26298 +Content-Length: 26277 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What is 10 + 5?"}],"role":"user"},{"parts":[{"text":"10 + 5 = 15","thoughtSignature":"EjQKMgFyyNp8ID75oDI0URvpt5R3fPVQJceerosicdLUgSnViQBHFn0XHbkZKq9jwQUs09LH"}],"role":"model"},{"parts":[{"text":"Now multiply that by 2"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":100,"temperature":0,"thinkingConfig":{"includeThoughts":true,"thinkingBudget":66},"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"ConvTest-v1 Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. "}],"role":"system"}}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"What is 10 + 5?"}],"role":"user"},{"parts":[{"text":"10 + 5 = 15","thoughtSignature":"EjQKMgFyyNp8ID75oDI0URvpt5R3fPVQJceerosicdLUgSnViQBHFn0XHbkZKq9jwQUs09LH"}],"role":"model"},{"parts":[{"text":"Now multiply that by 2"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":100,"temperature":0,"thinkingConfig":{"includeThoughts":true,"thinkingBudget":66}},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"ConvTest-v1 Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. "}],"role":"system"}}HTTP/2.0 200 OK Content-Length: 800 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: application/json; charset=UTF-8 @@ -112,16 +112,16 @@ X-Xss-Protection: 0 "modelVersion": "gemini-3-flash-preview", "responseId": "yEh3adHfFO2NjMcPw9CggQ8" } -26842 1174 +26821 1174 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 26514 +Content-Length: 26493 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What is 10 + 5?"}],"role":"user"},{"parts":[{"text":"10 + 5 = 15","thoughtSignature":"EjQKMgFyyNp8ID75oDI0URvpt5R3fPVQJceerosicdLUgSnViQBHFn0XHbkZKq9jwQUs09LH"}],"role":"model"},{"parts":[{"text":"Now multiply that by 2"}],"role":"user"},{"parts":[{"text":"15 multiplied by 2 is 30.","thoughtSignature":"EjQKMgFyyNp8DPszsMyf/CcCw1Q8PSgBItvFJ7DemE5sal29A4YQnGEdhqsBxjytf+RCiMhS"}],"role":"model"},{"parts":[{"text":"Now divide that by 5"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":100,"temperature":0,"thinkingConfig":{"includeThoughts":true,"thinkingBudget":66},"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"ConvTest-v1 Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. "}],"role":"system"}}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"What is 10 + 5?"}],"role":"user"},{"parts":[{"text":"10 + 5 = 15","thoughtSignature":"EjQKMgFyyNp8ID75oDI0URvpt5R3fPVQJceerosicdLUgSnViQBHFn0XHbkZKq9jwQUs09LH"}],"role":"model"},{"parts":[{"text":"Now multiply that by 2"}],"role":"user"},{"parts":[{"text":"15 multiplied by 2 is 30.","thoughtSignature":"EjQKMgFyyNp8DPszsMyf/CcCw1Q8PSgBItvFJ7DemE5sal29A4YQnGEdhqsBxjytf+RCiMhS"}],"role":"model"},{"parts":[{"text":"Now divide that by 5"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":100,"temperature":0,"thinkingConfig":{"includeThoughts":true,"thinkingBudget":66}},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"ConvTest-v1 Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. "}],"role":"system"}}HTTP/2.0 200 OK Content-Length: 796 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: application/json; charset=UTF-8 diff --git a/llms/googleai/testdata/TestGoogleAI_ImplicitCaching_ConversationContinuation_Streaming.httprr b/llms/googleai/testdata/TestGoogleAI_ImplicitCaching_ConversationContinuation_Streaming.httprr index dd6aabddf..ec0f5d8f0 100644 --- a/llms/googleai/testdata/TestGoogleAI_ImplicitCaching_ConversationContinuation_Streaming.httprr +++ b/llms/googleai/testdata/TestGoogleAI_ImplicitCaching_ConversationContinuation_Streaming.httprr @@ -1,14 +1,14 @@ httprr trace v1 -26441 1191 +26420 1191 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:streamGenerateContent?alt=sse HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 26099 +Content-Length: 26078 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What is 8 + 7?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":100,"temperature":0,"thinkingConfig":{"includeThoughts":true,"thinkingBudget":66},"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"ConvStreamTest-v1 Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. "}],"role":"system"}}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"What is 8 + 7?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":100,"temperature":0,"thinkingConfig":{"includeThoughts":true,"thinkingBudget":66}},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"ConvStreamTest-v1 Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. "}],"role":"system"}}HTTP/2.0 200 OK Content-Length: 794 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Disposition: attachment @@ -27,16 +27,16 @@ data: {"candidates": [{"content": {"parts": [{"text": "8 + 7 = 15"}],"role": "mo data: {"candidates": [{"content": {"parts": [{"text": "","thoughtSignature": "EjQKMgFyyNp82UJzOTxhPr3FcpgNDSuaa8GYXE1gV7ALZ1oGDBoP6XxEiFwjJy4Q6Jk/hIHv"}],"role": "model"},"finishReason": "STOP","index": 0}],"usageMetadata": {"promptTokenCount": 4517,"candidatesTokenCount": 8,"totalTokenCount": 4525,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 4517}]},"modelVersion": "gemini-3-flash-preview","responseId": "8Gp1afPfFs2MjMcPn6aWsAY"} -26644 1288 +26623 1288 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:streamGenerateContent?alt=sse HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 26302 +Content-Length: 26281 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What is 8 + 7?"}],"role":"user"},{"parts":[{"text":"8 + 7 = 15","thoughtSignature":"EjQKMgFyyNp82UJzOTxhPr3FcpgNDSuaa8GYXE1gV7ALZ1oGDBoP6XxEiFwjJy4Q6Jk/hIHv"}],"role":"model"},{"parts":[{"text":"Now multiply that by 3"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":100,"temperature":0,"thinkingConfig":{"includeThoughts":true,"thinkingBudget":66},"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"ConvStreamTest-v1 Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. "}],"role":"system"}}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"What is 8 + 7?"}],"role":"user"},{"parts":[{"text":"8 + 7 = 15","thoughtSignature":"EjQKMgFyyNp82UJzOTxhPr3FcpgNDSuaa8GYXE1gV7ALZ1oGDBoP6XxEiFwjJy4Q6Jk/hIHv"}],"role":"model"},{"parts":[{"text":"Now multiply that by 3"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":100,"temperature":0,"thinkingConfig":{"includeThoughts":true,"thinkingBudget":66}},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"ConvStreamTest-v1 Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. "}],"role":"system"}}HTTP/2.0 200 OK Content-Length: 891 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Disposition: attachment @@ -55,16 +55,16 @@ data: {"candidates": [{"content": {"parts": [{"text": "15 * 3 = 45"}],"role": "m data: {"candidates": [{"content": {"parts": [{"text": "","thoughtSignature": "EjQKMgFyyNp8aIVmUSXaSockUWA0HZbRwPXK0oBkLZR5GCsw5A7LagoHdY8Z6RWmcKYALK1t"}],"role": "model"},"finishReason": "STOP","index": 0}],"usageMetadata": {"promptTokenCount": 4533,"candidatesTokenCount": 9,"totalTokenCount": 4542,"cachedContentTokenCount": 4058,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 4533}],"cacheTokensDetails": [{"modality": "TEXT","tokenCount": 4058}]},"modelVersion": "gemini-3-flash-preview","responseId": "AWt1ac2XGrHkjMcPrvCiwQ4"} -26846 1288 +26825 1288 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:streamGenerateContent?alt=sse HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 26504 +Content-Length: 26483 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What is 8 + 7?"}],"role":"user"},{"parts":[{"text":"8 + 7 = 15","thoughtSignature":"EjQKMgFyyNp82UJzOTxhPr3FcpgNDSuaa8GYXE1gV7ALZ1oGDBoP6XxEiFwjJy4Q6Jk/hIHv"}],"role":"model"},{"parts":[{"text":"Now multiply that by 3"}],"role":"user"},{"parts":[{"text":"15 * 3 = 45","thoughtSignature":"EjQKMgFyyNp8aIVmUSXaSockUWA0HZbRwPXK0oBkLZR5GCsw5A7LagoHdY8Z6RWmcKYALK1t"}],"role":"model"},{"parts":[{"text":"Now divide that by 5"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":100,"temperature":0,"thinkingConfig":{"includeThoughts":true,"thinkingBudget":66},"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"ConvStreamTest-v1 Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. "}],"role":"system"}}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"What is 8 + 7?"}],"role":"user"},{"parts":[{"text":"8 + 7 = 15","thoughtSignature":"EjQKMgFyyNp82UJzOTxhPr3FcpgNDSuaa8GYXE1gV7ALZ1oGDBoP6XxEiFwjJy4Q6Jk/hIHv"}],"role":"model"},{"parts":[{"text":"Now multiply that by 3"}],"role":"user"},{"parts":[{"text":"15 * 3 = 45","thoughtSignature":"EjQKMgFyyNp8aIVmUSXaSockUWA0HZbRwPXK0oBkLZR5GCsw5A7LagoHdY8Z6RWmcKYALK1t"}],"role":"model"},{"parts":[{"text":"Now divide that by 5"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":100,"temperature":0,"thinkingConfig":{"includeThoughts":true,"thinkingBudget":66}},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"ConvStreamTest-v1 Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. Go is a compiled language with garbage collection. "}],"role":"system"}}HTTP/2.0 200 OK Content-Length: 890 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Disposition: attachment diff --git a/llms/googleai/testdata/TestGoogleAI_ImplicitCaching_Streaming.httprr b/llms/googleai/testdata/TestGoogleAI_ImplicitCaching_Streaming.httprr index 21d48af81..60cee4457 100644 --- a/llms/googleai/testdata/TestGoogleAI_ImplicitCaching_Streaming.httprr +++ b/llms/googleai/testdata/TestGoogleAI_ImplicitCaching_Streaming.httprr @@ -1,14 +1,14 @@ httprr trace v1 -35851 777 +35830 777 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:streamGenerateContent?alt=sse HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 35515 +Content-Length: 35494 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"Say 'hello'"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":50,"temperature":0,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"StreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\n"}],"role":"system"}}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"Say 'hello'"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":50,"temperature":0},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"StreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\n"}],"role":"system"}}HTTP/2.0 200 OK Content-Length: 380 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Disposition: attachment @@ -25,16 +25,16 @@ X-Xss-Protection: 0 data: {"candidates": [{"content": {"parts": [{"text": "hello"}],"role": "model"},"finishReason": "STOP","index": 0}],"usageMetadata": {"promptTokenCount": 7006,"candidatesTokenCount": 1,"totalTokenCount": 7024,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 7006}],"thoughtsTokenCount": 17},"modelVersion": "gemini-2.5-flash","responseId": "VEp3adqaOMbg_uMP4onTkAE"} -35851 873 +35830 873 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:streamGenerateContent?alt=sse HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 35515 +Content-Length: 35494 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"Say 'hello'"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":50,"temperature":0,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"StreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\n"}],"role":"system"}}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"Say 'hello'"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":50,"temperature":0},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"StreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\n"}],"role":"system"}}HTTP/2.0 200 OK Content-Length: 476 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Disposition: attachment @@ -51,16 +51,16 @@ X-Xss-Protection: 0 data: {"candidates": [{"content": {"parts": [{"text": "hello"}],"role": "model"},"finishReason": "STOP","index": 0}],"usageMetadata": {"promptTokenCount": 7006,"candidatesTokenCount": 1,"totalTokenCount": 7024,"cachedContentTokenCount": 6121,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 7006}],"cacheTokensDetails": [{"modality": "TEXT","tokenCount": 6121}],"thoughtsTokenCount": 17},"modelVersion": "gemini-2.5-flash","responseId": "dEp3afP4OfCf_uMP38ec8Aw"} -35851 872 +35830 872 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:streamGenerateContent?alt=sse HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 35515 +Content-Length: 35494 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"Say 'hello'"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":50,"temperature":0,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"StreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\n"}],"role":"system"}}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"Say 'hello'"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":50,"temperature":0},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"systemInstruction":{"parts":[{"text":"StreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\nStreamTest-v1 Rust ensures memory safety without garbage collection.\n"}],"role":"system"}}HTTP/2.0 200 OK Content-Length: 475 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Disposition: attachment diff --git a/llms/googleai/testdata/TestGoogleAI_ParallelFunctionCallsWithSignature.httprr b/llms/googleai/testdata/TestGoogleAI_ParallelFunctionCallsWithSignature.httprr index ef18e0822..d7546895d 100644 --- a/llms/googleai/testdata/TestGoogleAI_ParallelFunctionCallsWithSignature.httprr +++ b/llms/googleai/testdata/TestGoogleAI_ParallelFunctionCallsWithSignature.httprr @@ -1,14 +1,14 @@ httprr trace v1 -1079 1906 +1042 1906 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 753 +Content-Length: 716 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What's the temperature in Paris and London?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":1024,"temperature":1,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"tools":[{"functionDeclarations":[{"description":"Get the current temperature for a location","name":"get_temperature","parameters":{"properties":{"location":{"description":"The city name, e.g. Paris","type":"STRING"}},"required":["location"],"type":"OBJECT"}}]}]}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"What's the temperature in Paris and London?"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":1024},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"tools":[{"functionDeclarations":[{"description":"Get the current temperature for a location","name":"get_temperature","parameters":{"properties":{"location":{"description":"The city name, e.g. Paris","type":"STRING"}},"required":["location"],"type":"OBJECT"}}]}]}HTTP/2.0 200 OK Content-Length: 1493 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: application/json; charset=UTF-8 @@ -71,16 +71,16 @@ X-Xss-Protection: 0 "modelVersion": "gemini-3-flash-preview", "responseId": "tbZxauHIDsiOvdIPgsDH2A4" } -1687 1023 +1650 1023 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 1360 +Content-Length: 1323 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What's the temperature in Paris and London?"}],"role":"user"},{"parts":[{"functionCall":{"args":{"location":"Paris"},"id":"pkjly1p7","name":"get_temperature"},"thoughtSignature":"ErwCCrkCARFNMg9mMORTMaw4mPhBdF3AK++rCjOH+n+QysYX1w47IEVhSBpnj/qrc50FEW82LTDU4YtPHnpC3SNFH4O9tT12zbhW32B0DsixxEAiIC3OkxXZ9lzOohuckzMCbGMMmAboW06tW+9RKhFpO89BKVIwNTVIdaK46wDQ7/+5o6IsEaKLUwgWCxNy6frMOzRMHZwhd1cb+lO4tWW2uv7euMHXrGfS0f6bv0maY1xHo2IaardO4YR2K9XYKB7YyKP0QyFvb70ToGPagCZ9ehQvUmXQItb22d1gMXDUMichOcsHiawiMxa1mpZI08Nx48vzuYkMtyb4iKy6fmd6cp1XOeD1ijSNdbOOxii6xfEp8Xen0cyaMPjwqHjb5y3xB6IkIIuwx3ezNjabj4o/Rc2tHD87deZ81H+Q8Q=="},{"functionCall":{"args":{"location":"London"},"id":"bnxwmmb1","name":"get_temperature"}}],"role":"model"},{"parts":[{"functionResponse":{"id":"pkjly1p7","name":"get_temperature","response":{"response":"22°C"}}},{"functionResponse":{"id":"bnxwmmb1","name":"get_temperature","response":{"response":"22°C"}}}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":512,"temperature":1,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"What's the temperature in Paris and London?"}],"role":"user"},{"parts":[{"functionCall":{"args":{"location":"Paris"},"id":"pkjly1p7","name":"get_temperature"},"thoughtSignature":"ErwCCrkCARFNMg9mMORTMaw4mPhBdF3AK++rCjOH+n+QysYX1w47IEVhSBpnj/qrc50FEW82LTDU4YtPHnpC3SNFH4O9tT12zbhW32B0DsixxEAiIC3OkxXZ9lzOohuckzMCbGMMmAboW06tW+9RKhFpO89BKVIwNTVIdaK46wDQ7/+5o6IsEaKLUwgWCxNy6frMOzRMHZwhd1cb+lO4tWW2uv7euMHXrGfS0f6bv0maY1xHo2IaardO4YR2K9XYKB7YyKP0QyFvb70ToGPagCZ9ehQvUmXQItb22d1gMXDUMichOcsHiawiMxa1mpZI08Nx48vzuYkMtyb4iKy6fmd6cp1XOeD1ijSNdbOOxii6xfEp8Xen0cyaMPjwqHjb5y3xB6IkIIuwx3ezNjabj4o/Rc2tHD87deZ81H+Q8Q=="},{"functionCall":{"args":{"location":"London"},"id":"bnxwmmb1","name":"get_temperature"}}],"role":"model"},{"parts":[{"functionResponse":{"id":"pkjly1p7","name":"get_temperature","response":{"response":"22°C"}}},{"functionResponse":{"id":"bnxwmmb1","name":"get_temperature","response":{"response":"22°C"}}}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":512},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK Content-Length: 612 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: application/json; charset=UTF-8 diff --git a/llms/googleai/testdata/TestGoogleAI_SequentialFunctionCallsWithSignatures.httprr b/llms/googleai/testdata/TestGoogleAI_SequentialFunctionCallsWithSignatures.httprr index 8a200ab27..f08bc6d87 100644 --- a/llms/googleai/testdata/TestGoogleAI_SequentialFunctionCallsWithSignatures.httprr +++ b/llms/googleai/testdata/TestGoogleAI_SequentialFunctionCallsWithSignatures.httprr @@ -1,14 +1,14 @@ httprr trace v1 -1322 2614 +1285 2614 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 996 +Content-Length: 959 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"First get the number 10, then get the number 32, then add them together."}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":1024,"temperature":1,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"tools":[{"functionDeclarations":[{"description":"Get a specific number","name":"get_number","parameters":{"properties":{"which":{"description":"Which number to get (first or second)","type":"STRING"}},"required":["which"],"type":"OBJECT"}},{"description":"Add two numbers together","name":"add_numbers","parameters":{"properties":{"a":{"description":"First number","type":"NUMBER"},"b":{"description":"Second number","type":"NUMBER"}},"required":["a","b"],"type":"OBJECT"}}]}]}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"First get the number 10, then get the number 32, then add them together."}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":1024},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"tools":[{"functionDeclarations":[{"description":"Get a specific number","name":"get_number","parameters":{"properties":{"which":{"description":"Which number to get (first or second)","type":"STRING"}},"required":["which"],"type":"OBJECT"}},{"description":"Add two numbers together","name":"add_numbers","parameters":{"properties":{"a":{"description":"First number","type":"NUMBER"},"b":{"description":"Second number","type":"NUMBER"}},"required":["a","b"],"type":"OBJECT"}}]}]}HTTP/2.0 200 OK Content-Length: 2201 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: application/json; charset=UTF-8 @@ -62,16 +62,16 @@ X-Xss-Protection: 0 "modelVersion": "gemini-3-flash-preview", "responseId": "ubZxao3WFIWE28oP8LvymQM" } -2926 1392 +2889 1392 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 2599 +Content-Length: 2562 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"First get the number 10, then get the number 32, then add them together."}],"role":"user"},{"parts":[{"functionCall":{"args":{"which":"first"},"id":"sjtv17iq","name":"get_number"},"thoughtSignature":"EvcHCvQHARFNMg8CS384X5x2wGmq0N/mwEbUQuxnWWRXXwdOr2UmXzomX9rCmC2OcqUO3r/KcmC+1nwN5/39K+ijN64t7ooZiUkaHtI582aH9zk7Epry0OVcnpTBf4HLk5uk9Lk5pDs5l949QwWg3c2l/dtJSCBi7RjHev6BrWstPqP8CsDt9PIyQOWDrxy3+Hezs5yXeuKICGLyUylC15YGsPkJ8X+M100mkojK5GyEtdIoeQpAt/hwjF0y1ktPfU0jWRg84Or+Ex6Vnf1WQa9thOPgh5zC7a0+/oDzx/k3hTmw6CeHG3dlOGj9jZrRpmjAhzJFdGNzKIDVOdYFXM+PG+okP5GJHvBJx72R5owdSmGaEkqR+2V7Y/SS/GvnSE6mfyDVvQ4tNgebJSeP+OjojsL07MCwAFfoQSEFrQpIXMJw1t047JIXKDfTKM5qQUoKjaKuoX7JaP9RJ/OZONKpKA2iwKLxqE6Kok6h3Wda1mgzgagT6klwJDkE8k2iVWYgo0nb47PEqibdEO0ZtU2en+64cag0zULDfuT7r+w1clpSBljGsQieIBBzru+Phvm9/6iUDRwN1uaZrYld1WsWdMOlQp603sZ/RjW5RZ3biyAtnuR1dxOrk/vnPC8hKy60fZw4HgIgnQkhXSOOf3poeMnMToafAgnAkuJCzzh3JXaTWCzxebLB7B3kA+qwULwU8ZDVuBdhWfafB7rN+6WD4v3//XFCNy15n61TG0HPELOctKd13WCt2OqaDHRr9tIFjpV7L4kRcEtc0g52femhmB5lOo0K80XPkCxG/HQlPTuSKVODYyZ9/kW8Fe43041vEgxI4RkEn7myUzrWtFa0lvpkBwutEjZGKRh8+dffVhelaqhIBe6HktHrHdRmgkkadM+cOYMmIbUP/oy44zV2W94uPZ1Zh4OqegeCr35IAB89xGe57DkOAI3LB/cFcptpPWbrXoIQAZpsY3LRjo52Z7SR3QF+VcMQJTpWUbkJXXkhsDJDpZsytn8Xi1TfXhhk/Z7amMCHt5E0PbkujKdw8dCfRTw09DKI19lA54woBlasHnaKTNoDK6eZm2TuXV9Bnx4lKLRruvo9ku58DDyZg/QighNy3Blins9uBhvr5AMdMCT565WZqpRhE8hFRrAMPLSaVgY6BijrINTVf/K7Vmg9KZblcpRNFC6ZR/w/dhpOIqfBmUT7arBO9xF2uJHYQCcBFiXx2JxXKfwt9Ba+AA81PlFQoR4zsN7lvZBPWqrlwSeBAcAgLph8RBUmTpRvAqdUuxTn4ffxS6YadPXGEZfU6BH3oUfspxlSmI4rE+PgKoAfcf5uL+ujWYVPsMRsZOGUc/M8KQ=="}],"role":"model"},{"parts":[{"functionResponse":{"id":"sjtv17iq","name":"get_number","response":{"response":"10"}}}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":1024,"temperature":1,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"tools":[{"functionDeclarations":[{"description":"Get a specific number","name":"get_number","parameters":{"properties":{"which":{"description":"Which number to get (first or second)","type":"STRING"}},"required":["which"],"type":"OBJECT"}},{"description":"Add two numbers together","name":"add_numbers","parameters":{"properties":{"a":{"description":"First number","type":"NUMBER"},"b":{"description":"Second number","type":"NUMBER"}},"required":["a","b"],"type":"OBJECT"}}]}]}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"First get the number 10, then get the number 32, then add them together."}],"role":"user"},{"parts":[{"functionCall":{"args":{"which":"first"},"id":"sjtv17iq","name":"get_number"},"thoughtSignature":"EvcHCvQHARFNMg8CS384X5x2wGmq0N/mwEbUQuxnWWRXXwdOr2UmXzomX9rCmC2OcqUO3r/KcmC+1nwN5/39K+ijN64t7ooZiUkaHtI582aH9zk7Epry0OVcnpTBf4HLk5uk9Lk5pDs5l949QwWg3c2l/dtJSCBi7RjHev6BrWstPqP8CsDt9PIyQOWDrxy3+Hezs5yXeuKICGLyUylC15YGsPkJ8X+M100mkojK5GyEtdIoeQpAt/hwjF0y1ktPfU0jWRg84Or+Ex6Vnf1WQa9thOPgh5zC7a0+/oDzx/k3hTmw6CeHG3dlOGj9jZrRpmjAhzJFdGNzKIDVOdYFXM+PG+okP5GJHvBJx72R5owdSmGaEkqR+2V7Y/SS/GvnSE6mfyDVvQ4tNgebJSeP+OjojsL07MCwAFfoQSEFrQpIXMJw1t047JIXKDfTKM5qQUoKjaKuoX7JaP9RJ/OZONKpKA2iwKLxqE6Kok6h3Wda1mgzgagT6klwJDkE8k2iVWYgo0nb47PEqibdEO0ZtU2en+64cag0zULDfuT7r+w1clpSBljGsQieIBBzru+Phvm9/6iUDRwN1uaZrYld1WsWdMOlQp603sZ/RjW5RZ3biyAtnuR1dxOrk/vnPC8hKy60fZw4HgIgnQkhXSOOf3poeMnMToafAgnAkuJCzzh3JXaTWCzxebLB7B3kA+qwULwU8ZDVuBdhWfafB7rN+6WD4v3//XFCNy15n61TG0HPELOctKd13WCt2OqaDHRr9tIFjpV7L4kRcEtc0g52femhmB5lOo0K80XPkCxG/HQlPTuSKVODYyZ9/kW8Fe43041vEgxI4RkEn7myUzrWtFa0lvpkBwutEjZGKRh8+dffVhelaqhIBe6HktHrHdRmgkkadM+cOYMmIbUP/oy44zV2W94uPZ1Zh4OqegeCr35IAB89xGe57DkOAI3LB/cFcptpPWbrXoIQAZpsY3LRjo52Z7SR3QF+VcMQJTpWUbkJXXkhsDJDpZsytn8Xi1TfXhhk/Z7amMCHt5E0PbkujKdw8dCfRTw09DKI19lA54woBlasHnaKTNoDK6eZm2TuXV9Bnx4lKLRruvo9ku58DDyZg/QighNy3Blins9uBhvr5AMdMCT565WZqpRhE8hFRrAMPLSaVgY6BijrINTVf/K7Vmg9KZblcpRNFC6ZR/w/dhpOIqfBmUT7arBO9xF2uJHYQCcBFiXx2JxXKfwt9Ba+AA81PlFQoR4zsN7lvZBPWqrlwSeBAcAgLph8RBUmTpRvAqdUuxTn4ffxS6YadPXGEZfU6BH3oUfspxlSmI4rE+PgKoAfcf5uL+ujWYVPsMRsZOGUc/M8KQ=="}],"role":"model"},{"parts":[{"functionResponse":{"id":"sjtv17iq","name":"get_number","response":{"response":"10"}}}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":1024},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"tools":[{"functionDeclarations":[{"description":"Get a specific number","name":"get_number","parameters":{"properties":{"which":{"description":"Which number to get (first or second)","type":"STRING"}},"required":["which"],"type":"OBJECT"}},{"description":"Add two numbers together","name":"add_numbers","parameters":{"properties":{"a":{"description":"First number","type":"NUMBER"},"b":{"description":"Second number","type":"NUMBER"}},"required":["a","b"],"type":"OBJECT"}}]}]}HTTP/2.0 200 OK Content-Length: 981 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: application/json; charset=UTF-8 diff --git a/llms/googleai/testdata/TestGoogleAI_SingleFunctionCallWithSignature.httprr b/llms/googleai/testdata/TestGoogleAI_SingleFunctionCallWithSignature.httprr index 3e792cc60..94de50b9b 100644 --- a/llms/googleai/testdata/TestGoogleAI_SingleFunctionCallWithSignature.httprr +++ b/llms/googleai/testdata/TestGoogleAI_SingleFunctionCallWithSignature.httprr @@ -1,14 +1,14 @@ httprr trace v1 -1093 1595 +1056 1595 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 767 +Content-Length: 730 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"Use the multiply function to calculate 7 times 9"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":1024,"temperature":1,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"tools":[{"functionDeclarations":[{"description":"Multiply two numbers together","name":"multiply","parameters":{"properties":{"a":{"description":"First number","type":"NUMBER"},"b":{"description":"Second number","type":"NUMBER"}},"required":["a","b"],"type":"OBJECT"}}]}]}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"Use the multiply function to calculate 7 times 9"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":1024},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}],"tools":[{"functionDeclarations":[{"description":"Multiply two numbers together","name":"multiply","parameters":{"properties":{"a":{"description":"First number","type":"NUMBER"},"b":{"description":"Second number","type":"NUMBER"}},"required":["a","b"],"type":"OBJECT"}}]}]}HTTP/2.0 200 OK Content-Length: 1182 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: application/json; charset=UTF-8 @@ -63,16 +63,16 @@ X-Xss-Protection: 0 "modelVersion": "gemini-3-flash-preview", "responseId": "sbZxas7nCYX7vdIPwL6goQ4" } -1387 1248 +1350 1248 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 1060 +Content-Length: 1023 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"Use the multiply function to calculate 7 times 9"}],"role":"user"},{"parts":[{"functionCall":{"args":{"a":7,"b":9},"id":"n5u72jdq","name":"multiply"},"thoughtSignature":"EvQBCvEBARFNMg+DspE09ruHIitzO7Rtj6iul3YH7KKQoEXyKfo7w8/KtUpPI1e21bLS4HXmejeLtRoHIXVdbNMws/7g0dM288dfRw9VeGqygB+ecVeBqKBvsS/V0TgoCDLQKN4jWA5VEY7g/04IpcwfaT9FX/knJtSwWzWI+ybxZ9HcdbeyrHGa2J8UVhdaWMPC0bN1+7xnlfFPv6YYN0eQpbZInobATWoCHDuPt5xcv/cXZZtckE99zJAf+RTvSr1sSJbFwQ6/t3MBNKyZQ48AZOarHbqcx9iw+wBWWrptT2o6/d/8Klx6KWBaYwK+TmVmDNEWdg=="}],"role":"model"},{"parts":[{"functionResponse":{"id":"n5u72jdq","name":"multiply","response":{"response":"63"}}}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":512,"temperature":1,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"Use the multiply function to calculate 7 times 9"}],"role":"user"},{"parts":[{"functionCall":{"args":{"a":7,"b":9},"id":"n5u72jdq","name":"multiply"},"thoughtSignature":"EvQBCvEBARFNMg+DspE09ruHIitzO7Rtj6iul3YH7KKQoEXyKfo7w8/KtUpPI1e21bLS4HXmejeLtRoHIXVdbNMws/7g0dM288dfRw9VeGqygB+ecVeBqKBvsS/V0TgoCDLQKN4jWA5VEY7g/04IpcwfaT9FX/knJtSwWzWI+ybxZ9HcdbeyrHGa2J8UVhdaWMPC0bN1+7xnlfFPv6YYN0eQpbZInobATWoCHDuPt5xcv/cXZZtckE99zJAf+RTvSr1sSJbFwQ6/t3MBNKyZQ48AZOarHbqcx9iw+wBWWrptT2o6/d/8Klx6KWBaYwK+TmVmDNEWdg=="}],"role":"model"},{"parts":[{"functionResponse":{"id":"n5u72jdq","name":"multiply","response":{"response":"63"}}}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":512},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK Content-Length: 837 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: application/json; charset=UTF-8 diff --git a/llms/googleai/testdata/TestGoogleAI_TextResponseWithSignature.httprr b/llms/googleai/testdata/TestGoogleAI_TextResponseWithSignature.httprr index f13ac8070..cecf7bbcd 100644 --- a/llms/googleai/testdata/TestGoogleAI_TextResponseWithSignature.httprr +++ b/llms/googleai/testdata/TestGoogleAI_TextResponseWithSignature.httprr @@ -1,14 +1,14 @@ httprr trace v1 -872 5354 +835 5354 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 546 +Content-Length: 509 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What is 15 + 27? Think step by step."}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"temperature":1,"thinkingConfig":{"includeThoughts":true,"thinkingBudget":1024},"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"What is 15 + 27? Think step by step."}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"thinkingConfig":{"includeThoughts":true,"thinkingBudget":1024}},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK Content-Length: 4941 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: application/json; charset=UTF-8 @@ -59,16 +59,16 @@ X-Xss-Protection: 0 "modelVersion": "gemini-3-flash-preview", "responseId": "nrZxaompHaLmxN8Pld_XgAE" } -3375 2369 +3338 2369 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 3048 +Content-Length: 3011 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"What is 15 + 27? Think step by step."}],"role":"user"},{"parts":[{"text":"To find the sum of **15 + 27**, we can break it down step by step:\n\n### Method 1: Adding by Place Value (Tens and Ones)\n1. **Break the numbers apart:**\n * 15 is **10 + 5**\n * 27 is **20 + 7**\n2. **Add the tens together:**\n * 10 + 20 = **30**\n3. **Add the ones together:**\n * 5 + 7 = **12**\n4. **Add the two results together:**\n * 30 + 12 = **42**\n\n---\n\n### Method 2: Column Addition (Carrying)\n1. **Add the ones column:** \n * 5 + 7 = **12**\n * Write down the **2** and carry the **1** to the tens column.\n2. **Add the tens column:** \n * 1 (carried) + 1 + 2 = **4**\n3. **Combine them:**\n * The result is **42**.\n\n**Final Answer:** 15 + 27 = **42**","thoughtSignature":"EoQKCoEKARFNMg+GIlHgyAx6VqYQbwvj4rpZlIzKvhRxrzJsIMoLxalgtxYPMpss/uW/wUgLIjFOw5K9IGKFOX9r0md0wVY2eix+dCBXd0CizY+zzoui5l5oeEfeJOOt7yTXmJ00pJxKKcVRYOTqa8PmXcCokLp7lkSbliKhsKjpG5vciZvsxHji9uf9+wFOezc+oqNeF6E8/Prq3HFJLrUble7JgXKc3DVKdS7ZKkaLniLZnQ0FsBWu8mNd7Vx9s6Bx1RFzIqJSTmp+9YJM1KsXy/8TgR7UP1pvCy/N2h3bg5NrEirMA+hJPtE5An23uEhMNWnDc034w9wCd1Ahpac2PIYS34P3SvtQcTUVDg6GSQKgRHSVQAtVFJd0+CQmN7caAVp1lVyekBeXT11CeHl+XOTTLN5oTqrvUARGLNNUcVZzBkiQ1DNHg8zi497f0uUN2bMAAJAvV2v5VYPEyv8CZH4dcXKAAtntifo6gtWDQT9Q+IDjMGytCeLZPVtYMm3G1erHzmahY2HUKN2cLFk7zDOdr6n9mQEVXk9iXbRWbPTM+2jPOIXVQf0cbLzTVXmPZ4lnhn3VqO84UBLqOGC4vw9Eupw+dYQYGnpAsNYAMCcDCxRCjUGTcdLzkPoKLnH2/oSV0aWJXf/d3xk2D/71eQnkcud6dgh0rk6H+FhHuF3AntMY5oRxkXTYNUf6P9CgA3sc6zptNvsaCIHi8MQlbyHN8HB5OKMfWFkwsZRDoX++UqGQ5aOrfiUwQy0Ghk8qU3oUpwDKzSAvKzeNmNnOlRW0X0KarW5rJPaBPhIwKM5g9gcfpdbjEWWMhphVQcGYIVWNPgv4sVDgICmfKppLS6ILorQIzjXY5dco/VQy1cJdSyqs6XEvMdlgWavITx2MLG6K/+5m2X5DKTNTHNyasOBWT+AFJkxo/0VRJTcWAWdQSfLCld8sFzZYERUoPTmkb3y21oFp62JtXj4mLMsyboBfIdf6vNln2hwT5d8FsrxzUDQ3NNft8bW0kRqATmKlr4IPdu7eea00ZKm6ix2F7Ybx83gGVBAJMh7GnwCHfmigoaxZAh3KtAvV0TGq7X1s8HXbUPIlF+7izOVziciL6w8dxTDyj7zOhA6aj9Jfq6tWBa7A/HvhFRYvRYOWm4WNMxxfLWanI4zgBI5vuouMQ4HGqAKUmM6un061X9oBPEWuLQh3W8BzB3EpC/07bd9wL1EHNTK5L1lK0MmxW/qGOwdjcRjwHYRNJGeqMQJUlN0NeLDF8C0PY7/t88q8iaeRki/axBZO7bEZW1dfTN5gckrB6XtR+S0L2owgp9z7ujyIcQTJ9u9Lsn4gOJrv+Gx53+jr/ng/FLnC2FOPu2kolmhItm/mMHI3KgbRMmEsnsyfVXkvQPk2dt+6REYQ/wqHIdYM3tK3fPwxjNkvLWA1clyykJCZiKXpQbFAO8VqktDbcX+ZQ1rBU6Cf0SGzh764lxR08O6AHxO09vm/U+SdceHJvVM2lvBHI32gvTEMvVEgGQgpAcVX1wNzu/FiX42n7afJBQGZ5cdouyUBdACkdH8f3OAN2X6CNrnh7cVPE0XMVv0jUZ6eGp6gMbmq/z0bkFIXqceQrGqmhSrzMIRllpq87FFCwd1mgQj9loDbBjmICC8NjB7jT1Hl2syuCqCntG5axWM7ITPBtao01wJV9cxhmEDoXuYrZZNnTxF+4aczsqde"}],"role":"model"},{"parts":[{"text":"Now multiply that result by 2"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":1024,"temperature":1,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"What is 15 + 27? Think step by step."}],"role":"user"},{"parts":[{"text":"To find the sum of **15 + 27**, we can break it down step by step:\n\n### Method 1: Adding by Place Value (Tens and Ones)\n1. **Break the numbers apart:**\n * 15 is **10 + 5**\n * 27 is **20 + 7**\n2. **Add the tens together:**\n * 10 + 20 = **30**\n3. **Add the ones together:**\n * 5 + 7 = **12**\n4. **Add the two results together:**\n * 30 + 12 = **42**\n\n---\n\n### Method 2: Column Addition (Carrying)\n1. **Add the ones column:** \n * 5 + 7 = **12**\n * Write down the **2** and carry the **1** to the tens column.\n2. **Add the tens column:** \n * 1 (carried) + 1 + 2 = **4**\n3. **Combine them:**\n * The result is **42**.\n\n**Final Answer:** 15 + 27 = **42**","thoughtSignature":"EoQKCoEKARFNMg+GIlHgyAx6VqYQbwvj4rpZlIzKvhRxrzJsIMoLxalgtxYPMpss/uW/wUgLIjFOw5K9IGKFOX9r0md0wVY2eix+dCBXd0CizY+zzoui5l5oeEfeJOOt7yTXmJ00pJxKKcVRYOTqa8PmXcCokLp7lkSbliKhsKjpG5vciZvsxHji9uf9+wFOezc+oqNeF6E8/Prq3HFJLrUble7JgXKc3DVKdS7ZKkaLniLZnQ0FsBWu8mNd7Vx9s6Bx1RFzIqJSTmp+9YJM1KsXy/8TgR7UP1pvCy/N2h3bg5NrEirMA+hJPtE5An23uEhMNWnDc034w9wCd1Ahpac2PIYS34P3SvtQcTUVDg6GSQKgRHSVQAtVFJd0+CQmN7caAVp1lVyekBeXT11CeHl+XOTTLN5oTqrvUARGLNNUcVZzBkiQ1DNHg8zi497f0uUN2bMAAJAvV2v5VYPEyv8CZH4dcXKAAtntifo6gtWDQT9Q+IDjMGytCeLZPVtYMm3G1erHzmahY2HUKN2cLFk7zDOdr6n9mQEVXk9iXbRWbPTM+2jPOIXVQf0cbLzTVXmPZ4lnhn3VqO84UBLqOGC4vw9Eupw+dYQYGnpAsNYAMCcDCxRCjUGTcdLzkPoKLnH2/oSV0aWJXf/d3xk2D/71eQnkcud6dgh0rk6H+FhHuF3AntMY5oRxkXTYNUf6P9CgA3sc6zptNvsaCIHi8MQlbyHN8HB5OKMfWFkwsZRDoX++UqGQ5aOrfiUwQy0Ghk8qU3oUpwDKzSAvKzeNmNnOlRW0X0KarW5rJPaBPhIwKM5g9gcfpdbjEWWMhphVQcGYIVWNPgv4sVDgICmfKppLS6ILorQIzjXY5dco/VQy1cJdSyqs6XEvMdlgWavITx2MLG6K/+5m2X5DKTNTHNyasOBWT+AFJkxo/0VRJTcWAWdQSfLCld8sFzZYERUoPTmkb3y21oFp62JtXj4mLMsyboBfIdf6vNln2hwT5d8FsrxzUDQ3NNft8bW0kRqATmKlr4IPdu7eea00ZKm6ix2F7Ybx83gGVBAJMh7GnwCHfmigoaxZAh3KtAvV0TGq7X1s8HXbUPIlF+7izOVziciL6w8dxTDyj7zOhA6aj9Jfq6tWBa7A/HvhFRYvRYOWm4WNMxxfLWanI4zgBI5vuouMQ4HGqAKUmM6un061X9oBPEWuLQh3W8BzB3EpC/07bd9wL1EHNTK5L1lK0MmxW/qGOwdjcRjwHYRNJGeqMQJUlN0NeLDF8C0PY7/t88q8iaeRki/axBZO7bEZW1dfTN5gckrB6XtR+S0L2owgp9z7ujyIcQTJ9u9Lsn4gOJrv+Gx53+jr/ng/FLnC2FOPu2kolmhItm/mMHI3KgbRMmEsnsyfVXkvQPk2dt+6REYQ/wqHIdYM3tK3fPwxjNkvLWA1clyykJCZiKXpQbFAO8VqktDbcX+ZQ1rBU6Cf0SGzh764lxR08O6AHxO09vm/U+SdceHJvVM2lvBHI32gvTEMvVEgGQgpAcVX1wNzu/FiX42n7afJBQGZ5cdouyUBdACkdH8f3OAN2X6CNrnh7cVPE0XMVv0jUZ6eGp6gMbmq/z0bkFIXqceQrGqmhSrzMIRllpq87FFCwd1mgQj9loDbBjmICC8NjB7jT1Hl2syuCqCntG5axWM7ITPBtao01wJV9cxhmEDoXuYrZZNnTxF+4aczsqde"}],"role":"model"},{"parts":[{"text":"Now multiply that result by 2"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":1024},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK Content-Length: 1956 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: application/json; charset=UTF-8 diff --git a/llms/googleai/testdata/TestGoogleAI_TextResponseWithSignatureStreaming.httprr b/llms/googleai/testdata/TestGoogleAI_TextResponseWithSignatureStreaming.httprr index f8d841306..b322e38ba 100644 --- a/llms/googleai/testdata/TestGoogleAI_TextResponseWithSignatureStreaming.httprr +++ b/llms/googleai/testdata/TestGoogleAI_TextResponseWithSignatureStreaming.httprr @@ -1,14 +1,14 @@ httprr trace v1 -884 12485 +847 12485 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:streamGenerateContent?alt=sse HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 544 +Content-Length: 507 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"Calculate 23 * 17. Show your work."}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"temperature":1,"thinkingConfig":{"includeThoughts":true,"thinkingBudget":1024},"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"Calculate 23 * 17. Show your work."}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":2048,"thinkingConfig":{"includeThoughts":true,"thinkingBudget":1024}},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK Content-Length: 12085 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Disposition: attachment @@ -69,16 +69,16 @@ data: {"candidates": [{"content": {"parts": [{"text": "Answer: 391**"}],"role": data: {"candidates": [{"content": {"parts": [{"text": "","thoughtSignature": "EoUKCoIKARFNMg/3bEZtKzkMaobT/rC1/XTyfucSqgk+M/CTphd53T09dfD1YyioME/tYW65lASxDU45IconJ6ZA34nJnNc3gWn7KsLYYEWvBYBzkb7AnUOqogBenTQcQJzvEZqg7q66l+1swQ5iDmR44b8wQsTI4FGyvr3bOr92KjI+NELY0iIw7U2ulQRi/zWj7/xHg0wgREjFMTybuH/1vOiE12zTDyfhSmrJu3FtmjTH9BrJcFe7ZtXdp9yg2TnMKNfnuMBkDf65kANQg0CI1w6pjuPfqeaMHnVrhpqlUF9UDIoohsj0dQwgIw4TjgYAa72p8hZaR+KzJRnu1wai8tBavhjkMtjpvwINcCJ6ID0dWehJiSVbUvG98o6QEQsVW8JBXwdNk6KUss/u9u/9ExFqK8z92bHDIbol9VZEKhfZ2gND2tiD1bFG7zzworb+l5293ZF2NUk8qkVkNi8XNIPPvWCea5TXUzT2RFvUfA6k+n/Msf8moxRng/luK/BtNhwZfaZgfqj49Ul67FiB3iFZdSU9kFdP0uXVNgTicVRrBPauk0RYqqMRjCw74i0DNxS1yo1gH3/WZZKoA/yb8+49iTiBsfj4LaFJNGOz+3NOc108OH1i/DuSVtZHqyOiXzo04uMT0owqmaHzTr5KQeTrObIwVMySmO1NhkeJDb4riUp//REW8upRtD7slzXUd2AEHSdyrgNvFdM+/uesgPnpzW6oyWMFK08qh+5i+AKscmff+wiDLPUqb3RH0B//vQBr/62WQsYw1uwC5WCOgm8OSEyzCsm/IuZ7PS2aDdazopECtwcLi7XwmdtmhzRGj1EmzbbuuByMfXUBEmWlqTca/v9SOuV6TUYAlqsoyiTt80WbX8fgH7n8DQIRG7K4E/inEjmUxZ4jWNc1jlkFUN0+mfnKhVhd3UwMnJMOFQdJSmFiqZ9PsAoVajFYR0B0A7JCTsYOB9mSsPbG/qVYP2e0kCf5nU2OXfIdDWqYrX55rUT/oEdGapfxehgMJRgKT0O+n1AlYZblnLXr2RSiPg2SXOChy/x/XkK/RSUU3npM0JRtzhZez+0uxWpKNULvS1LvtPucNX8AhjUqBH7mqSFpPDclZ9OXALUV2FrnXN2IIf3vHxcCH2SAq1MJX1bgHmqVJMhMwajdNDPOwiVG7M5IzS5aSnP+K7QQRJXjtGu9FOUxvXpEjko+BgpEKVZzR8YvxHLxmg1NPrPtQ8Ot2t8xSD6115RUwCI7tn7hk0N5tMdB8ohwZU7NNBf3thVZ0KwI1NcenAjP0tXjeKd0SfGDKIcvnPVkglednxVaIYNUJo1ZMhxvX21dcHFrr4gWfULa/hUEW0qp6tKPu0h0q4ko76Vfl709y7kEEfjHogg3U2JRJNhzlZQQM0cNGfBem5p4ELrPY74rNMTtjaAwR8NuDqlWITXcy7Y9Ed3E2o36zKXP3uerMY57F+pJP1zUMM66LCt6psvN00KX02dDjZ5v3eCcSOrbjFM9reRLCqPcaNXXkBjvIsSJOIZsaPT9fbo9QXB0pH+6Jkd1a2eWcCuVy72gO+PWLd0rk9lCYsNZNH5RuJL7i7X67zoXZlZDt8HExKqFSXeo5oD4z8l312EoQ++KriZRBazQvRWVfc5iW0ZFlWbCtXQrhK90hkkdh590w35fB+XVrYClWyEYljUp6sneHgUDyb/36SMvhYYqdulCsA=="}],"role": "model"},"finishReason": "STOP","index": 0}],"usageMetadata": {"promptTokenCount": 14,"candidatesTokenCount": 498,"totalTokenCount": 948,"promptTokensDetails": [{"modality": "TEXT","tokenCount": 14}],"thoughtsTokenCount": 436,"serviceTier": "standard"},"modelVersion": "gemini-3-flash-preview","responseId": "qbZxauT8EIX-vdIPsfHt0A0"} -3801 2646 +3764 2646 POST https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent HTTP/1.1 Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr -Content-Length: 3474 +Content-Length: 3437 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key -{"contents":[{"parts":[{"text":"Calculate 23 * 17. Show your work."}],"role":"user"},{"parts":[{"text":"To calculate **23 × 17**, here are three different ways to show the work:\n\n### Method 1: Standard Long Multiplication\n1. Multiply **23** by the ones digit (**7**):\n * $7 \\times 3 = 21$ (Write down 1, carry the 2)\n * $7 \\times 2 = 14$; $14 + 2 = 16$\n * Result: **161**\n2. Multiply **23** by the tens digit (**1**, which represents **10**):\n * Place a 0 in the ones column.\n * $1 \\times 3 = 3$\n * $1 \\times 2 = 2$\n * Result: **230**\n3. Add the two results together:\n * $161 + 230 = 391$\n\n**Answer: 391**\n\n***\n\n### Method 2: Difference of Squares (Mental Math shortcut)\nSince 23 and 17 are both 3 units away from 20, you can use the formula $(a + b)(a - b) = a^2 - b^2$.\n* $23 = 20 + 3$\n* $17 = 20 - 3$\n\nCalculation:\n* $(20 + 3)(20 - 3) = 20^2 - 3^2$\n* $400 - 9 = 391$\n\n**Answer: 391**\n\n***\n\n### Method 3: Distributive Property (Breaking it down)\nYou can break 17 into $10 + 7$:\n* $23 \\times 17 = 23 \\times (10 + 7)$\n* $23 \\times 10 = 230$\n* $23 \\times 7 = 161$ (calculated as $20 \\times 7 + 3 \\times 7$)\n* $230 + 161 = 391$\n\n**Answer: 391**","thoughtSignature":"EoUKCoIKARFNMg/3bEZtKzkMaobT/rC1/XTyfucSqgk+M/CTphd53T09dfD1YyioME/tYW65lASxDU45IconJ6ZA34nJnNc3gWn7KsLYYEWvBYBzkb7AnUOqogBenTQcQJzvEZqg7q66l+1swQ5iDmR44b8wQsTI4FGyvr3bOr92KjI+NELY0iIw7U2ulQRi/zWj7/xHg0wgREjFMTybuH/1vOiE12zTDyfhSmrJu3FtmjTH9BrJcFe7ZtXdp9yg2TnMKNfnuMBkDf65kANQg0CI1w6pjuPfqeaMHnVrhpqlUF9UDIoohsj0dQwgIw4TjgYAa72p8hZaR+KzJRnu1wai8tBavhjkMtjpvwINcCJ6ID0dWehJiSVbUvG98o6QEQsVW8JBXwdNk6KUss/u9u/9ExFqK8z92bHDIbol9VZEKhfZ2gND2tiD1bFG7zzworb+l5293ZF2NUk8qkVkNi8XNIPPvWCea5TXUzT2RFvUfA6k+n/Msf8moxRng/luK/BtNhwZfaZgfqj49Ul67FiB3iFZdSU9kFdP0uXVNgTicVRrBPauk0RYqqMRjCw74i0DNxS1yo1gH3/WZZKoA/yb8+49iTiBsfj4LaFJNGOz+3NOc108OH1i/DuSVtZHqyOiXzo04uMT0owqmaHzTr5KQeTrObIwVMySmO1NhkeJDb4riUp//REW8upRtD7slzXUd2AEHSdyrgNvFdM+/uesgPnpzW6oyWMFK08qh+5i+AKscmff+wiDLPUqb3RH0B//vQBr/62WQsYw1uwC5WCOgm8OSEyzCsm/IuZ7PS2aDdazopECtwcLi7XwmdtmhzRGj1EmzbbuuByMfXUBEmWlqTca/v9SOuV6TUYAlqsoyiTt80WbX8fgH7n8DQIRG7K4E/inEjmUxZ4jWNc1jlkFUN0+mfnKhVhd3UwMnJMOFQdJSmFiqZ9PsAoVajFYR0B0A7JCTsYOB9mSsPbG/qVYP2e0kCf5nU2OXfIdDWqYrX55rUT/oEdGapfxehgMJRgKT0O+n1AlYZblnLXr2RSiPg2SXOChy/x/XkK/RSUU3npM0JRtzhZez+0uxWpKNULvS1LvtPucNX8AhjUqBH7mqSFpPDclZ9OXALUV2FrnXN2IIf3vHxcCH2SAq1MJX1bgHmqVJMhMwajdNDPOwiVG7M5IzS5aSnP+K7QQRJXjtGu9FOUxvXpEjko+BgpEKVZzR8YvxHLxmg1NPrPtQ8Ot2t8xSD6115RUwCI7tn7hk0N5tMdB8ohwZU7NNBf3thVZ0KwI1NcenAjP0tXjeKd0SfGDKIcvnPVkglednxVaIYNUJo1ZMhxvX21dcHFrr4gWfULa/hUEW0qp6tKPu0h0q4ko76Vfl709y7kEEfjHogg3U2JRJNhzlZQQM0cNGfBem5p4ELrPY74rNMTtjaAwR8NuDqlWITXcy7Y9Ed3E2o36zKXP3uerMY57F+pJP1zUMM66LCt6psvN00KX02dDjZ5v3eCcSOrbjFM9reRLCqPcaNXXkBjvIsSJOIZsaPT9fbo9QXB0pH+6Jkd1a2eWcCuVy72gO+PWLd0rk9lCYsNZNH5RuJL7i7X67zoXZlZDt8HExKqFSXeo5oD4z8l312EoQ++KriZRBazQvRWVfc5iW0ZFlWbCtXQrhK90hkkdh590w35fB+XVrYClWyEYljUp6sneHgUDyb/36SMvhYYqdulCsA=="}],"role":"model"},{"parts":[{"text":"Now divide that result by 23"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":1024,"temperature":1,"topK":3,"topP":0.95},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK +{"contents":[{"parts":[{"text":"Calculate 23 * 17. Show your work."}],"role":"user"},{"parts":[{"text":"To calculate **23 × 17**, here are three different ways to show the work:\n\n### Method 1: Standard Long Multiplication\n1. Multiply **23** by the ones digit (**7**):\n * $7 \\times 3 = 21$ (Write down 1, carry the 2)\n * $7 \\times 2 = 14$; $14 + 2 = 16$\n * Result: **161**\n2. Multiply **23** by the tens digit (**1**, which represents **10**):\n * Place a 0 in the ones column.\n * $1 \\times 3 = 3$\n * $1 \\times 2 = 2$\n * Result: **230**\n3. Add the two results together:\n * $161 + 230 = 391$\n\n**Answer: 391**\n\n***\n\n### Method 2: Difference of Squares (Mental Math shortcut)\nSince 23 and 17 are both 3 units away from 20, you can use the formula $(a + b)(a - b) = a^2 - b^2$.\n* $23 = 20 + 3$\n* $17 = 20 - 3$\n\nCalculation:\n* $(20 + 3)(20 - 3) = 20^2 - 3^2$\n* $400 - 9 = 391$\n\n**Answer: 391**\n\n***\n\n### Method 3: Distributive Property (Breaking it down)\nYou can break 17 into $10 + 7$:\n* $23 \\times 17 = 23 \\times (10 + 7)$\n* $23 \\times 10 = 230$\n* $23 \\times 7 = 161$ (calculated as $20 \\times 7 + 3 \\times 7$)\n* $230 + 161 = 391$\n\n**Answer: 391**","thoughtSignature":"EoUKCoIKARFNMg/3bEZtKzkMaobT/rC1/XTyfucSqgk+M/CTphd53T09dfD1YyioME/tYW65lASxDU45IconJ6ZA34nJnNc3gWn7KsLYYEWvBYBzkb7AnUOqogBenTQcQJzvEZqg7q66l+1swQ5iDmR44b8wQsTI4FGyvr3bOr92KjI+NELY0iIw7U2ulQRi/zWj7/xHg0wgREjFMTybuH/1vOiE12zTDyfhSmrJu3FtmjTH9BrJcFe7ZtXdp9yg2TnMKNfnuMBkDf65kANQg0CI1w6pjuPfqeaMHnVrhpqlUF9UDIoohsj0dQwgIw4TjgYAa72p8hZaR+KzJRnu1wai8tBavhjkMtjpvwINcCJ6ID0dWehJiSVbUvG98o6QEQsVW8JBXwdNk6KUss/u9u/9ExFqK8z92bHDIbol9VZEKhfZ2gND2tiD1bFG7zzworb+l5293ZF2NUk8qkVkNi8XNIPPvWCea5TXUzT2RFvUfA6k+n/Msf8moxRng/luK/BtNhwZfaZgfqj49Ul67FiB3iFZdSU9kFdP0uXVNgTicVRrBPauk0RYqqMRjCw74i0DNxS1yo1gH3/WZZKoA/yb8+49iTiBsfj4LaFJNGOz+3NOc108OH1i/DuSVtZHqyOiXzo04uMT0owqmaHzTr5KQeTrObIwVMySmO1NhkeJDb4riUp//REW8upRtD7slzXUd2AEHSdyrgNvFdM+/uesgPnpzW6oyWMFK08qh+5i+AKscmff+wiDLPUqb3RH0B//vQBr/62WQsYw1uwC5WCOgm8OSEyzCsm/IuZ7PS2aDdazopECtwcLi7XwmdtmhzRGj1EmzbbuuByMfXUBEmWlqTca/v9SOuV6TUYAlqsoyiTt80WbX8fgH7n8DQIRG7K4E/inEjmUxZ4jWNc1jlkFUN0+mfnKhVhd3UwMnJMOFQdJSmFiqZ9PsAoVajFYR0B0A7JCTsYOB9mSsPbG/qVYP2e0kCf5nU2OXfIdDWqYrX55rUT/oEdGapfxehgMJRgKT0O+n1AlYZblnLXr2RSiPg2SXOChy/x/XkK/RSUU3npM0JRtzhZez+0uxWpKNULvS1LvtPucNX8AhjUqBH7mqSFpPDclZ9OXALUV2FrnXN2IIf3vHxcCH2SAq1MJX1bgHmqVJMhMwajdNDPOwiVG7M5IzS5aSnP+K7QQRJXjtGu9FOUxvXpEjko+BgpEKVZzR8YvxHLxmg1NPrPtQ8Ot2t8xSD6115RUwCI7tn7hk0N5tMdB8ohwZU7NNBf3thVZ0KwI1NcenAjP0tXjeKd0SfGDKIcvnPVkglednxVaIYNUJo1ZMhxvX21dcHFrr4gWfULa/hUEW0qp6tKPu0h0q4ko76Vfl709y7kEEfjHogg3U2JRJNhzlZQQM0cNGfBem5p4ELrPY74rNMTtjaAwR8NuDqlWITXcy7Y9Ed3E2o36zKXP3uerMY57F+pJP1zUMM66LCt6psvN00KX02dDjZ5v3eCcSOrbjFM9reRLCqPcaNXXkBjvIsSJOIZsaPT9fbo9QXB0pH+6Jkd1a2eWcCuVy72gO+PWLd0rk9lCYsNZNH5RuJL7i7X67zoXZlZDt8HExKqFSXeo5oD4z8l312EoQ++KriZRBazQvRWVfc5iW0ZFlWbCtXQrhK90hkkdh590w35fB+XVrYClWyEYljUp6sneHgUDyb/36SMvhYYqdulCsA=="}],"role":"model"},{"parts":[{"text":"Now divide that result by 23"}],"role":"user"}],"generationConfig":{"candidateCount":1,"maxOutputTokens":1024},"safetySettings":[{"category":"HARM_CATEGORY_DANGEROUS_CONTENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HARASSMENT","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_HATE_SPEECH","threshold":"BLOCK_NONE"},{"category":"HARM_CATEGORY_SEXUALLY_EXPLICIT","threshold":"BLOCK_NONE"}]}HTTP/2.0 200 OK Content-Length: 2233 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: application/json; charset=UTF-8 diff --git a/llms/googleai/thinking_wire_test.go b/llms/googleai/thinking_wire_test.go new file mode 100644 index 000000000..46232a229 --- /dev/null +++ b/llms/googleai/thinking_wire_test.go @@ -0,0 +1,169 @@ +package googleai + +import ( + "context" + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func thinkingWireFor(t *testing.T, model string, opts ...llms.CallOption) string { + t.Helper() + + var body string + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"candidates":[{"content":{"role":"model","parts":[{"text":"hi"}]},`+ + `"finishReason":"STOP"}],"usageMetadata":{}}`) + })) + t.Cleanup(server.Close) + + llm, err := New(context.Background(), + WithAPIKey("unit-test-key"), WithEndpoint(server.URL), WithDefaultModel(model)) + require.NoError(t, err) + + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, opts...) + require.NoError(t, err) + return body +} + +func thinkingConfigFor(t *testing.T, model string, opts ...llms.CallOption) map[string]any { + t.Helper() + + var body struct { + GenerationConfig struct { + ThinkingConfig map[string]any `json:"thinkingConfig"` + } `json:"generationConfig"` + } + require.NoError(t, json.Unmarshal([]byte(thinkingWireFor(t, model, opts...)), &body)) + return body.GenerationConfig.ThinkingConfig +} + +func budgetOnTheWire(t *testing.T, model string, opts ...llms.CallOption) float64 { + t.Helper() + + tc := thinkingConfigFor(t, model, opts...) + budget, ok := tc["thinkingBudget"].(float64) + require.True(t, ok, "no thinkingBudget for %s, got %v", model, tc) + return budget +} + +func TestNoThinkingBudgetReachesAGemini3Model(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "gemini-3.6-flash", "gemini-3.5-flash", "gemini-3.5-flash-lite", + "gemini-3.1-flash-lite", "gemini-3-flash-preview", + } { + for name, opt := range map[string]llms.CallOption{ + "disabled": llms.WithReasoningDisabled(), + "effort": llms.WithReasoning(llms.ReasoningMedium, 0), + } { + body := thinkingWireFor(t, model, opt, llms.WithMaxTokens(8192)) + assert.NotContains(t, body, "thinkingBudget", + "%s on %s: this generation is driven by the level scale", name, model) + } + } +} + +func TestDisablingThinkingOnAGemini3ModelSendsTheLowestLevel(t *testing.T) { + t.Parallel() + + body := thinkingWireFor(t, "gemini-3.5-flash", llms.WithReasoningDisabled()) + assert.Contains(t, body, `"thinkingLevel":"MINIMAL"`) +} + +func TestDisablingThinkingOnGemini25StillSendsBudgetZero(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gemini-2.5-flash", "gemini-2.5-flash-lite"} { + body := thinkingWireFor(t, model, llms.WithReasoningDisabled()) + assert.Contains(t, body, `"thinkingBudget":0`, "%s takes the budget wire", model) + assert.NotContains(t, body, "thinkingLevel", + "%s answers with an error when a level is present", model) + } +} + +func TestAdaptiveThinkingLetsTheModelChoose(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gemini-2.5-flash", "gemini-2.5-flash-lite", "gemini-2.5-pro"} { + budget := budgetOnTheWire(t, model, llms.WithAdaptiveReasoning(""), llms.WithMaxTokens(8192)) + assert.Equal(t, float64(-1), budget, "%s takes the dynamic budget sentinel", model) + } + + for _, model := range []string{"gemini-3.5-flash", "gemini-3-flash-preview"} { + body := thinkingWireFor(t, model, llms.WithAdaptiveReasoning(""), llms.WithMaxTokens(8192)) + assert.NotContains(t, body, "thinkingLevel", "%s decides its own depth", model) + assert.NotContains(t, body, "thinkingBudget", "%s reads no budget", model) + assert.Contains(t, body, `"includeThoughts":true`, "%s still returns its thought summaries", model) + } +} + +func TestABudgetOutsideTheModelRangeIsHeldInside(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + asked int + want float64 + }{ + {"gemini-2.5-pro", 50, 128}, + {"gemini-2.5-pro", 40000, 32768}, + {"gemini-2.5-flash-lite", 100, 512}, + {"gemini-2.5-flash-lite", 30000, 24576}, + {"gemini-2.5-flash", 1, 1}, + {"gemini-2.5-flash", 30000, 24576}, + } { + budget := budgetOnTheWire(t, tc.model, + llms.WithReasoning(llms.ReasoningNone, tc.asked), llms.WithMaxTokens(65536)) + assert.Equal(t, tc.want, budget, "%s asked %d", tc.model, tc.asked) + } +} + +func TestAModelThatDoesNotThinkGetsNoThinkingConfig(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gemini-2.0-flash", "gemini-1.5-pro", "gemma-3-27b-it"} { + for name, opt := range map[string]llms.CallOption{ + "adaptive": llms.WithAdaptiveReasoning(""), + "effort": llms.WithReasoning(llms.ReasoningHigh, 0), + "budget": llms.WithReasoning(llms.ReasoningNone, 4096), + "disabled": llms.WithReasoningDisabled(), + } { + body := thinkingWireFor(t, model, opt, llms.WithMaxTokens(16384)) + assert.NotContains(t, body, "thinkingConfig", + "%s on %s: this family takes no thinking control", name, model) + } + } +} + +func TestAdaptiveWithANamedEffortStillHonoursThatEffort(t *testing.T) { + t.Parallel() + + for effort, want := range map[llms.ReasoningEffort]float64{ + llms.ReasoningLow: 2048, llms.ReasoningMedium: 2730, llms.ReasoningHigh: 4096, + } { + adaptive := budgetOnTheWire(t, "gemini-2.5-flash", + llms.WithAdaptiveReasoning(effort), llms.WithMaxTokens(8192)) + named := budgetOnTheWire(t, "gemini-2.5-flash", + llms.WithReasoning(effort, 0), llms.WithMaxTokens(8192)) + assert.Equal(t, want, adaptive, "%s: a named effort is a depth, not a hand-off", effort) + assert.Equal(t, named, adaptive, "%s: adaptive must not change the depth the effort names", effort) + } + + tc := thinkingConfigFor(t, "gemini-3.5-flash", + llms.WithAdaptiveReasoning(llms.ReasoningMedium), llms.WithMaxTokens(8192)) + assert.Equal(t, "MEDIUM", tc["thinkingLevel"]) + assert.NotContains(t, tc, "thinkingBudget") +} diff --git a/llms/googleai/thought_signature_placeholder_test.go b/llms/googleai/thought_signature_placeholder_test.go new file mode 100644 index 000000000..20b728305 --- /dev/null +++ b/llms/googleai/thought_signature_placeholder_test.go @@ -0,0 +1,102 @@ +package googleai + +import ( + "encoding/base64" + "encoding/json" + "net/http" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func sentSignatures(t *testing.T, model string, history []llms.MessageContent) []string { + t.Helper() + + rt := &captureTransport{resp: `{"candidates":[{"content":{"parts":[{"text":"ok"}],"role":"model"},"finishReason":"STOP","index":0}]}`} + llm, err := New(t.Context(), WithAPIKey("test-api-key"), WithDefaultModel(model), + WithHTTPClient(&http.Client{Transport: rt})) + require.NoError(t, err) + _, err = llm.GenerateContent(t.Context(), history) + require.NoError(t, err) + + var payload struct { + Contents []struct { + Parts []struct { + FunctionCall *struct{} `json:"functionCall"` + ThoughtSignature string `json:"thoughtSignature"` + } `json:"parts"` + } `json:"contents"` + } + require.NoError(t, json.Unmarshal(rt.body, &payload)) + var signatures []string + for _, content := range payload.Contents { + for _, part := range content.Parts { + if part.FunctionCall != nil { + signatures = append(signatures, part.ThoughtSignature) + } + } + } + return signatures +} + +func toolTurn(id string, signature []byte) llms.MessageContent { + call := llms.ToolCall{ID: id, Type: "function", FunctionCall: &llms.FunctionCall{Name: "f", Arguments: "{}"}} + if signature != nil { + call.Reasoning = &reasoning.ContentReasoning{Signature: signature} + } + return llms.MessageContent{Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{call}} +} + +func toolResult(id string) llms.MessageContent { + return llms.MessageContent{Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{ + llms.ToolCallResponse{ToolCallID: id, Name: "f", Content: "done"}, + }} +} + +func TestGemini3SignsACurrentTurnCallThatArrivedWithoutASignature(t *testing.T) { + t.Parallel() + + placeholder := base64.StdEncoding.EncodeToString([]byte(geminiSignaturePlaceholder)) + own := []byte("gemini-signature") + history := []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "earlier question"), + toolTurn("a", nil), + toolResult("a"), + llms.TextParts(llms.ChatMessageTypeHuman, "current question"), + toolTurn("b", nil), + toolResult("b"), + toolTurn("c", own), + toolResult("c"), + } + + got := sentSignatures(t, "gemini-3-flash-preview", history) + assert.Equal(t, []string{"", placeholder, base64.StdEncoding.EncodeToString(own)}, got, + "only the current turn is validated, and a signature the model gave stays as it was") + + assert.Equal(t, []string{"", "", base64.StdEncoding.EncodeToString(own)}, + sentSignatures(t, "gemini-2.5-flash", history), "Gemini 2.5 keeps the history as it came") +} + +func TestGemini3SignsOnlyTheFirstOfParallelCalls(t *testing.T) { + t.Parallel() + + parallel := llms.MessageContent{Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.ToolCall{ID: "a", Type: "function", FunctionCall: &llms.FunctionCall{Name: "f", Arguments: "{}"}}, + llms.ToolCall{ID: "b", Type: "function", FunctionCall: &llms.FunctionCall{Name: "f", Arguments: "{}"}}, + }} + history := []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "question"), + parallel, + {Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{ + llms.ToolCallResponse{ToolCallID: "a", Name: "f", Content: "1"}, + llms.ToolCallResponse{ToolCallID: "b", Name: "f", Content: "2"}, + }}, + } + + placeholder := base64.StdEncoding.EncodeToString([]byte(geminiSignaturePlaceholder)) + assert.Equal(t, []string{placeholder, ""}, sentSignatures(t, "gemini-3.1-pro-preview", history)) +} diff --git a/llms/googleai/tool_choice_wire_test.go b/llms/googleai/tool_choice_wire_test.go new file mode 100644 index 000000000..cdd2245fa --- /dev/null +++ b/llms/googleai/tool_choice_wire_test.go @@ -0,0 +1,106 @@ +package googleai + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func TestTheCallersToolChoiceReachesTheWire(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + choice any + mode string + allowed string + }{ + {name: "required becomes ANY", choice: "required", mode: `"mode":"ANY"`}, + {name: "auto becomes AUTO", choice: "auto", mode: `"mode":"AUTO"`}, + {name: "none becomes NONE", choice: "none", mode: `"mode":"NONE"`}, + { + name: "a named tool becomes ANY over that name", + choice: llms.ToolChoice{Type: "function", Function: &llms.FunctionReference{Name: "get_weather"}}, + mode: `"mode":"ANY"`, + allowed: `"allowedFunctionNames":["get_weather"]`, + }, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + var body string + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"candidates":[{"content":{"role":"model","parts":[{"text":"hi"}]},`+ + `"finishReason":"STOP"}],"usageMetadata":{}}`) + })) + defer server.Close() + + llm, err := New(context.Background(), + WithAPIKey("unit-test-key"), WithEndpoint(server.URL), + WithDefaultModel("gemini-2.5-flash")) + require.NoError(t, err) + + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "what is the weather?")}, + llms.WithTools(weatherTool()), llms.WithToolChoice(tc.choice)) + require.NoError(t, err) + + assert.Contains(t, body, `"toolConfig"`, "the door must send a tool config at all") + assert.Contains(t, body, tc.mode) + if tc.allowed != "" { + assert.Contains(t, body, tc.allowed) + } + }) + } +} + +func TestNoToolChoiceLeavesTheRequestAlone(t *testing.T) { + t.Parallel() + + var body string + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"candidates":[{"content":{"role":"model","parts":[{"text":"hi"}]},`+ + `"finishReason":"STOP"}],"usageMetadata":{}}`) + })) + defer server.Close() + + llm, err := New(context.Background(), + WithAPIKey("unit-test-key"), WithEndpoint(server.URL), + WithDefaultModel("gemini-2.5-flash")) + require.NoError(t, err) + + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "what is the weather?")}, + llms.WithTools(weatherTool())) + require.NoError(t, err) + + assert.NotContains(t, body, `"toolConfig"`, + "a caller who asked for nothing must not have a mode chosen for them") +} + +func weatherTool() []llms.Tool { + return []llms.Tool{{ + Type: "function", + Function: &llms.FunctionDefinition{ + Name: "get_weather", + Description: "report the weather in a city", + Parameters: map[string]any{ + "type": "object", + "properties": map[string]any{"city": map[string]any{"type": "string"}}, + }, + }, + }} +} diff --git a/llms/googleai/toolcall_numbers_test.go b/llms/googleai/toolcall_numbers_test.go new file mode 100644 index 000000000..7ecab206a --- /dev/null +++ b/llms/googleai/toolcall_numbers_test.go @@ -0,0 +1,30 @@ +package googleai + +import ( + "testing" + + "github.com/vxcontrol/langchaingo/llms" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestToolCallArgumentsKeepIntegersWiderThanFloat64(t *testing.T) { + t.Parallel() + + parts, err := convertParts([]llms.ContentPart{llms.ToolCall{ + ID: "call_1", + Type: "function", + FunctionCall: &llms.FunctionCall{ + Name: "charge", + Arguments: `{"account":9007199254740993,"cents":12345678901234567}`, + }, + }}) + require.NoError(t, err) + require.Len(t, parts, 1) + require.NotNil(t, parts[0].FunctionCall) + + args := parts[0].FunctionCall.Args + assert.Equal(t, int64(9007199254740993), args["account"]) + assert.Equal(t, int64(12345678901234567), args["cents"]) +} diff --git a/llms/googleai/truncation_test.go b/llms/googleai/truncation_test.go new file mode 100644 index 000000000..eb90cb315 --- /dev/null +++ b/llms/googleai/truncation_test.go @@ -0,0 +1,52 @@ +package googleai + +import ( + "context" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestGoogleAITruncationIsReported(t *testing.T) { + t.Parallel() + + llm := newHTTPRRClient(t, WithDefaultModel("gemini-2.5-flash")) + msgs := []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "Describe the water cycle in full detail."), + } + + cut, err := llm.GenerateContent(t.Context(), msgs, llms.WithMaxTokens(24)) + require.NoError(t, err) + assert.True(t, cut.Choices[0].Truncated) + assert.Equal(t, "MAX_TOKENS", cut.Choices[0].StopReason) + + partial, err := llm.GenerateContent(t.Context(), msgs, llms.WithMaxTokens(24), llms.WithFailOnTruncation()) + require.Error(t, err) + assert.True(t, llms.IsTruncatedError(err)) + require.NotNil(t, partial) + + whole, err := llm.GenerateContent(t.Context(), msgs, llms.WithMaxTokens(4096)) + require.NoError(t, err) + assert.False(t, whole.Choices[0].Truncated) + assert.Equal(t, "STOP", whole.Choices[0].StopReason) +} + +func TestGoogleAITruncationIsReportedWhenStreaming(t *testing.T) { + t.Parallel() + + llm := newHTTPRRClient(t, WithDefaultModel("gemini-2.5-flash")) + msgs := []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "Describe the water cycle in full detail."), + } + sink := func(context.Context, streaming.Chunk) error { return nil } + + cut, err := llm.GenerateContent(t.Context(), msgs, + llms.WithMaxTokens(200), llms.WithStreamingFunc(sink)) + require.NoError(t, err) + assert.True(t, cut.Choices[0].Truncated) + assert.Equal(t, "MAX_TOKENS", cut.Choices[0].StopReason) +} diff --git a/llms/googleai/usage_stream_test.go b/llms/googleai/usage_stream_test.go new file mode 100644 index 000000000..ba55ab307 --- /dev/null +++ b/llms/googleai/usage_stream_test.go @@ -0,0 +1,167 @@ +package googleai + +import ( + "bytes" + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +type cachedUsageStream struct{} + +func (cachedUsageStream) RoundTrip(r *http.Request) (*http.Response, error) { + const body = `data: {"candidates":[{"content":{"parts":[{"text":"sixty rooms are free"}],"role":"model"},` + + `"finishReason":"STOP","index":0}],"usageMetadata":{"promptTokenCount":100,` + + `"candidatesTokenCount":9,"totalTokenCount":109,"cachedContentTokenCount":80}}` + "\r\n\r\n" + return &http.Response{ + StatusCode: http.StatusOK, + Header: http.Header{"Content-Type": []string{"text/event-stream"}}, + Body: io.NopCloser(bytes.NewReader([]byte(body))), + Request: r, + }, nil +} + +func TestAStreamedAnswerReportsCountersThatAddUp(t *testing.T) { + t.Parallel() + + llm, err := New(context.Background(), + WithAPIKey("unit-test-key"), WithRest(), + WithDefaultModel("gemini-2.5-flash"), + WithHTTPClient(&http.Client{Transport: cachedUsageStream{}})) + require.NoError(t, err) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + + info := resp.Choices[0].GenerationInfo + assert.Equal(t, 100, info["PromptTokens"], "the prompt count is the whole prompt, cache included") + assert.Equal(t, 80, info["CacheReadInputTokens"]) + assert.Equal(t, info["TotalTokens"], + info["PromptTokens"].(int)+info["CompletionTokens"].(int), + "prompt plus completion must equal the total, as every other door reports it") +} + +func TestReadingACacheIsNotWritingOne(t *testing.T) { + t.Parallel() + + t.Run("streamed", func(t *testing.T) { + t.Parallel() + + llm, err := New(context.Background(), + WithAPIKey("unit-test-key"), WithRest(), + WithDefaultModel("gemini-2.5-flash"), + WithHTTPClient(&http.Client{Transport: cachedUsageStream{}})) + require.NoError(t, err) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + + assert.Equal(t, 0, resp.Choices[0].GenerationInfo["CacheCreationInputTokens"], + "the vendor reports no cache-creation counter, so the uncached remainder is not one") + }) + + t.Run("whole answer", func(t *testing.T) { + t.Parallel() + + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"candidates":[{"content":{"role":"model","parts":[{"text":"sixty rooms are free"}]},` + + `"finishReason":"STOP"}],"usageMetadata":{"promptTokenCount":100,` + + `"candidatesTokenCount":9,"totalTokenCount":109,"cachedContentTokenCount":80}}`)) + })) + defer server.Close() + + llm, err := New(context.Background(), + WithAPIKey("unit-test-key"), WithEndpoint(server.URL), + WithDefaultModel("gemini-2.5-flash")) + require.NoError(t, err) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + + assert.Equal(t, 80, resp.Choices[0].GenerationInfo["CacheReadInputTokens"]) + assert.Equal(t, 0, resp.Choices[0].GenerationInfo["CacheCreationInputTokens"], + "both paths answer the same on a payload that read a cache") + }) +} + +type uncachedUsageStream struct{} + +func (uncachedUsageStream) RoundTrip(r *http.Request) (*http.Response, error) { + const body = `data: {"candidates":[{"content":{"parts":[{"text":"sixty rooms are free"}],"role":"model"},` + + `"finishReason":"STOP","index":0}],"usageMetadata":{"promptTokenCount":100,` + + `"candidatesTokenCount":9,"totalTokenCount":109}}` + "\r\n\r\n" + return &http.Response{ + StatusCode: http.StatusOK, + Header: http.Header{"Content-Type": []string{"text/event-stream"}}, + Body: io.NopCloser(bytes.NewReader([]byte(body))), + Request: r, + }, nil +} + +func TestAnAnswerWithoutCachedContentReportsNoCacheCreation(t *testing.T) { + t.Parallel() + + t.Run("streamed", func(t *testing.T) { + t.Parallel() + + llm, err := New(context.Background(), + WithAPIKey("unit-test-key"), WithRest(), + WithDefaultModel("gemini-2.5-flash"), + WithHTTPClient(&http.Client{Transport: uncachedUsageStream{}})) + require.NoError(t, err) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + + info := resp.Choices[0].GenerationInfo + assert.Equal(t, 100, info["PromptTokens"]) + assert.Equal(t, 0, info["CacheReadInputTokens"]) + assert.Equal(t, 0, info["CacheCreationInputTokens"], + "nothing was written to a cache on this request") + }) + + t.Run("whole answer", func(t *testing.T) { + t.Parallel() + + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"candidates":[{"content":{"role":"model","parts":[{"text":"sixty rooms are free"}]},` + + `"finishReason":"STOP"}],"usageMetadata":{"promptTokenCount":100,` + + `"candidatesTokenCount":9,"totalTokenCount":109}}`)) + })) + defer server.Close() + + llm, err := New(context.Background(), + WithAPIKey("unit-test-key"), WithEndpoint(server.URL), + WithDefaultModel("gemini-2.5-flash")) + require.NoError(t, err) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + + assert.Equal(t, 0, resp.Choices[0].GenerationInfo["CacheCreationInputTokens"], + "the whole-answer path must agree with the streamed one on the same usage") + }) +} diff --git a/llms/googleai/vertex/credentials_test.go b/llms/googleai/vertex/credentials_test.go new file mode 100644 index 000000000..86f99c0cc --- /dev/null +++ b/llms/googleai/vertex/credentials_test.go @@ -0,0 +1,50 @@ +package vertex_test + +import ( + "os" + "path/filepath" + "testing" + + "github.com/vxcontrol/langchaingo/llms/googleai" + "github.com/vxcontrol/langchaingo/llms/googleai/vertex" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +const refreshTokenCredentials = `{"type":"authorized_user","client_id":"id.apps.googleusercontent.com",` + + `"client_secret":"secret","refresh_token":"token"}` + +func TestVertexTakesTheServiceAccountTheCallerNames(t *testing.T) { + t.Parallel() + + path := filepath.Join(t.TempDir(), "credentials.json") + require.NoError(t, os.WriteFile(path, []byte(refreshTokenCredentials), 0o600)) + + for name, opt := range map[string]googleai.Option{ + "WithCredentialsFile": googleai.WithCredentialsFile(path), + "WithCredentialsJSON": googleai.WithCredentialsJSON([]byte(refreshTokenCredentials)), + } { + t.Run(name, func(t *testing.T) { + t.Parallel() + + client, err := vertex.New(t.Context(), + googleai.WithCloudProject("p"), googleai.WithCloudLocation("europe-west4"), opt) + require.NoError(t, err) + require.NotNil(t, client) + }) + } +} + +func TestVertexStillRefusesAGRPCConnectionAndSaysWhatToUse(t *testing.T) { + t.Parallel() + + _, err := vertex.New(t.Context(), + googleai.WithCloudProject("p"), googleai.WithCloudLocation("europe-west4"), + googleai.WithGRPCConn(nil)) + + var notHonored *googleai.ErrOptionNotHonored + require.ErrorAs(t, err, ¬Honored) + assert.Contains(t, err.Error(), "WithHTTPClient", + "the error must name the replacement, not only the refusal") +} diff --git a/llms/googleai/vertex/embeddings.go b/llms/googleai/vertex/embeddings.go deleted file mode 100644 index 74439a925..000000000 --- a/llms/googleai/vertex/embeddings.go +++ /dev/null @@ -1,28 +0,0 @@ -package vertex - -import ( - "context" - "errors" - "fmt" - - "github.com/vxcontrol/langchaingo/llms/googleai/internal/palmclient" -) - -// CreateEmbedding creates embeddings from texts. -func (g *Vertex) CreateEmbedding(ctx context.Context, texts []string) ([][]float32, error) { - embeddings, err := g.palmClient.CreateEmbedding(ctx, &palmclient.EmbeddingRequest{ - Input: texts, - }) - if err != nil { - return [][]float32{}, err - } - - if len(embeddings) == 0 { - return nil, errors.New("empty response") - } - if len(texts) != len(embeddings) { - return embeddings, fmt.Errorf("returned %d embeddings for %d texts", len(embeddings), len(texts)) - } - - return embeddings, nil -} diff --git a/llms/googleai/vertex/embeddings_test.go b/llms/googleai/vertex/embeddings_test.go deleted file mode 100644 index cf4e8d526..000000000 --- a/llms/googleai/vertex/embeddings_test.go +++ /dev/null @@ -1,211 +0,0 @@ -package vertex - -import ( - "errors" - "testing" - - "github.com/vxcontrol/langchaingo/llms/googleai" - "github.com/vxcontrol/langchaingo/llms/googleai/internal/palmclient" -) - -func TestCreateEmbedding(t *testing.T) { - tests := []struct { - name string - texts []string - mockEmbeddings [][]float32 - mockErr error - wantErr bool - errContains string - }{ - { - name: "successful single embedding", - texts: []string{"Hello, world!"}, - mockEmbeddings: [][]float32{ - {0.1, 0.2, 0.3, 0.4}, - }, - wantErr: false, - }, - { - name: "successful multiple embeddings", - texts: []string{"First text", "Second text", "Third text"}, - mockEmbeddings: [][]float32{ - {0.1, 0.2, 0.3}, - {0.4, 0.5, 0.6}, - {0.7, 0.8, 0.9}, - }, - wantErr: false, - }, - { - name: "empty response error", - texts: []string{"Test text"}, - mockEmbeddings: [][]float32{}, - wantErr: true, - errContains: "empty response", - }, - { - name: "mismatched count error", - texts: []string{"First", "Second"}, - mockEmbeddings: [][]float32{ - {0.1, 0.2, 0.3}, - }, - wantErr: true, - errContains: "returned 1 embeddings for 2 texts", - }, - { - name: "palm client error", - texts: []string{"Test"}, - mockErr: errors.New("API error"), - wantErr: true, - errContains: "API error", - }, - { - name: "empty texts", - texts: []string{}, - mockEmbeddings: [][]float32{}, - wantErr: true, - errContains: "empty response", - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - // Create a Vertex instance with mocked palm client - v := &Vertex{ - opts: googleai.DefaultOptions(), - // We can't easily mock the palmClient field since it's private - // and the type is from an internal package - } - - // For actual testing, we'd need to either: - // 1. Make palmClient an interface - // 2. Use dependency injection - // 3. Use a testing package that can mock private fields - - // Since we can't directly test CreateEmbedding without modifying - // the production code, we'll test what we can - if v.opts.DefaultEmbeddingModel != "gemini-embedding-001" { - t.Errorf("expected default embedding model 'gemini-embedding-001', got %q", v.opts.DefaultEmbeddingModel) - } - }) - } -} - -func TestCreateEmbeddingValidation(t *testing.T) { - // Test input validation scenarios - tests := []struct { - name string - texts []string - }{ - { - name: "nil texts slice", - texts: nil, - }, - { - name: "empty texts slice", - texts: []string{}, - }, - { - name: "single empty string", - texts: []string{""}, - }, - { - name: "mixed empty and non-empty strings", - texts: []string{"valid", "", "another valid"}, - }, - { - name: "very long text", - texts: []string{string(make([]byte, 10000))}, - }, - { - name: "special characters", - texts: []string{"Text with 特殊字符 and émojis 🚀"}, - }, - { - name: "newlines and tabs", - texts: []string{"Text with\nnewlines\tand\ttabs"}, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - // We can't test the actual behavior without a real or mocked client, - // but we document the test cases for when the code is refactored - // to be more testable - _ = tt.texts - }) - } -} - -func TestEmbeddingDimensions(t *testing.T) { - // Test different embedding dimensions - testCases := []struct { - name string - embeddings [][]float32 - valid bool - }{ - { - name: "standard 768 dimensions", - embeddings: [][]float32{ - make([]float32, 768), - }, - valid: true, - }, - { - name: "small dimensions", - embeddings: [][]float32{ - {0.1, 0.2, 0.3}, - }, - valid: true, - }, - { - name: "inconsistent dimensions", - embeddings: [][]float32{ - {0.1, 0.2, 0.3}, - {0.4, 0.5}, // Different dimension - }, - valid: false, // This would be an error case - }, - { - name: "zero dimensions", - embeddings: [][]float32{ - {}, - }, - valid: false, // Empty embeddings should be an error - }, - } - - for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { - // Document test case for future implementation - _ = tc - }) - } -} - -// TestEmbeddingRequestStructure verifies the structure of embedding requests -func TestEmbeddingRequestStructure(t *testing.T) { - // This test documents the expected structure of palmclient.EmbeddingRequest - req := &palmclient.EmbeddingRequest{ - Input: []string{"test text"}, - } - - if len(req.Input) != 1 { - t.Errorf("expected 1 input, got %d", len(req.Input)) - } - if req.Input[0] != "test text" { - t.Errorf("expected input 'test text', got %q", req.Input[0]) - } -} - -// TestVertexEmbeddingIntegration would test the full integration -// but requires actual API credentials or more sophisticated mocking -func TestVertexEmbeddingIntegration(t *testing.T) { - t.Skip("Integration test requires API credentials") - - // This test is skipped but documents how integration testing would work: - // 1. Create a Vertex client with valid credentials - // 2. Call CreateEmbedding with test texts - // 3. Verify embeddings are returned - // 4. Check embedding dimensions and values - // 5. Test error cases (invalid credentials, network errors, etc.) -} diff --git a/llms/googleai/vertex/new.go b/llms/googleai/vertex/new.go deleted file mode 100644 index b6124e88e..000000000 --- a/llms/googleai/vertex/new.go +++ /dev/null @@ -1,77 +0,0 @@ -// package vertex implements a langchaingo provider for Google Vertex AI LLMs, -// including the new Gemini models. -// See https://cloud.google.com/vertex-ai for more details. -package vertex - -import ( - "context" - - "github.com/vxcontrol/langchaingo/callbacks" - "github.com/vxcontrol/langchaingo/llms" - "github.com/vxcontrol/langchaingo/llms/googleai" - "github.com/vxcontrol/langchaingo/llms/googleai/internal/palmclient" - - "cloud.google.com/go/vertexai/genai" -) - -// Vertex is a type that represents a Vertex AI API client. -// -// Right now, the Vertex Gemini SDK doesn't support embeddings; therefore, -// for embeddings we also hold a palmclient. -type Vertex struct { - CallbacksHandler callbacks.Handler - client *genai.Client - opts googleai.Options - palmClient *palmclient.PaLMClient -} - -var _ llms.Model = &Vertex{} - -// New creates a new Vertex client. -func New(ctx context.Context, opts ...googleai.Option) (*Vertex, error) { - clientOptions := googleai.DefaultOptions() - for _, opt := range opts { - opt(&clientOptions) - } - - client, err := genai.NewClient( - ctx, - clientOptions.CloudProject, - clientOptions.CloudLocation, - clientOptions.ClientOptions...) - if err != nil { - return nil, err - } - - palmOpts := []palmclient.Option{ - palmclient.WithEmbeddingModelName(clientOptions.DefaultEmbeddingModel), - palmclient.WithClientOptions(clientOptions.ClientOptions...), - } - palmClient, err := palmclient.New( - ctx, - clientOptions.CloudProject, - clientOptions.CloudLocation, - palmOpts...) - if err != nil { - return nil, err - } - - v := &Vertex{ - opts: clientOptions, - client: client, - palmClient: palmClient, - } - return v, nil -} - -// Close closes the underlying genai and palm clients. -// This should be called when the Vertex instance is no longer needed -// to prevent memory leaks from the underlying gRPC connections. -func (v *Vertex) Close() error { - var err error - if v.client != nil { - err = v.client.Close() - } - // Note: palmClient doesn't have a Close method based on the codebase - return err -} diff --git a/llms/googleai/vertex/new_test.go b/llms/googleai/vertex/new_test.go deleted file mode 100644 index d0f2b6e36..000000000 --- a/llms/googleai/vertex/new_test.go +++ /dev/null @@ -1,247 +0,0 @@ -package vertex - -import ( - "net/http" - "testing" - - "github.com/vxcontrol/langchaingo/llms/googleai" - - "google.golang.org/api/option" -) - -func TestNewWithOptions(t *testing.T) { - // Since we can't control the genai.NewClient behavior in tests, - // we'll skip these tests that require actual API interaction - t.Skip("Skipping New() tests that require actual API credentials or mocked clients") -} - -func TestDefaultOptions(t *testing.T) { - opts := googleai.DefaultOptions() - - // Test default values - if opts.DefaultModel != "gemini-2.5-flash" { - t.Errorf("expected default model 'gemini-2.5-flash', got %q", opts.DefaultModel) - } - if opts.DefaultEmbeddingModel != "gemini-embedding-001" { - t.Errorf("expected default embedding model 'gemini-embedding-001', got %q", opts.DefaultEmbeddingModel) - } - if opts.DefaultCandidateCount != 1 { - t.Errorf("expected default candidate count 1, got %d", opts.DefaultCandidateCount) - } - if opts.DefaultMaxTokens != 2048 { - t.Errorf("expected default max tokens 2048, got %d", opts.DefaultMaxTokens) - } - if opts.DefaultTemperature != 0.5 { - t.Errorf("expected default temperature 0.5, got %f", opts.DefaultTemperature) - } - if opts.DefaultTopK != 3 { - t.Errorf("expected default TopK 3, got %d", opts.DefaultTopK) - } - if opts.DefaultTopP != 0.95 { - t.Errorf("expected default TopP 0.95, got %f", opts.DefaultTopP) - } - if opts.HarmThreshold != googleai.HarmBlockNone { - t.Errorf("expected default harm threshold HarmBlockNone, got %v", opts.HarmThreshold) - } -} - -func TestOptionsApplication(t *testing.T) { //nolint:funlen // comprehensive test //nolint:funlen // comprehensive test - // Test that options modify the default correctly - defaultOpts := googleai.DefaultOptions() - - // Apply options - googleai.WithDefaultModel("custom-model")(&defaultOpts) - if defaultOpts.DefaultModel != "custom-model" { - t.Errorf("WithDefaultModel did not update model") - } - - googleai.WithDefaultEmbeddingModel("custom-embedding")(&defaultOpts) - if defaultOpts.DefaultEmbeddingModel != "custom-embedding" { - t.Errorf("WithDefaultEmbeddingModel did not update embedding model") - } - - googleai.WithDefaultCandidateCount(3)(&defaultOpts) - if defaultOpts.DefaultCandidateCount != 3 { - t.Errorf("WithDefaultCandidateCount did not update candidate count") - } - - googleai.WithDefaultMaxTokens(4096)(&defaultOpts) - if defaultOpts.DefaultMaxTokens != 4096 { - t.Errorf("WithDefaultMaxTokens did not update max tokens") - } - - googleai.WithDefaultTemperature(0.9)(&defaultOpts) - if defaultOpts.DefaultTemperature != 0.9 { - t.Errorf("WithDefaultTemperature did not update temperature") - } - - googleai.WithDefaultTopK(5)(&defaultOpts) - if defaultOpts.DefaultTopK != 5 { - t.Errorf("WithDefaultTopK did not update TopK") - } - - googleai.WithDefaultTopP(0.99)(&defaultOpts) - if defaultOpts.DefaultTopP != 0.99 { - t.Errorf("WithDefaultTopP did not update TopP") - } - - googleai.WithHarmThreshold(googleai.HarmBlockNone)(&defaultOpts) - if defaultOpts.HarmThreshold != googleai.HarmBlockNone { - t.Errorf("WithHarmThreshold did not update harm threshold") - } - - googleai.WithCloudProject("my-project")(&defaultOpts) - if defaultOpts.CloudProject != "my-project" { - t.Errorf("WithCloudProject did not update project") - } - - googleai.WithCloudLocation("europe-west1")(&defaultOpts) - if defaultOpts.CloudLocation != "europe-west1" { - t.Errorf("WithCloudLocation did not update location") - } - - // Test client options - googleai.WithAPIKey("test-key")(&defaultOpts) - if len(defaultOpts.ClientOptions) == 0 { - t.Error("WithAPIKey did not add client option") - } - - googleai.WithCredentialsFile("creds.json")(&defaultOpts) - found := false - for _, opt := range defaultOpts.ClientOptions { - if opt != nil { - found = true - break - } - } - if !found { - t.Error("WithCredentialsFile did not add client option") - } - - googleai.WithCredentialsJSON([]byte("{}"))(&defaultOpts) - if len(defaultOpts.ClientOptions) < 2 { - t.Error("WithCredentialsJSON did not add client option") - } - - // Test empty credential options - emptyOpts := googleai.DefaultOptions() - googleai.WithCredentialsFile("")(&emptyOpts) - googleai.WithCredentialsJSON([]byte{})(&emptyOpts) - if len(emptyOpts.ClientOptions) != 0 { - t.Error("Empty credential options should not add client options") - } -} - -func TestHarmThresholdValues(t *testing.T) { - // Test that harm threshold constants have expected values - tests := []struct { - name string - threshold googleai.HarmBlockThreshold - expected string - }{ - {"HarmBlockUnspecified", googleai.HarmBlockUnspecified, "HARM_BLOCK_THRESHOLD_UNSPECIFIED"}, - {"HarmBlockLowAndAbove", googleai.HarmBlockLowAndAbove, "BLOCK_LOW_AND_ABOVE"}, - {"HarmBlockMediumAndAbove", googleai.HarmBlockMediumAndAbove, "BLOCK_MEDIUM_AND_ABOVE"}, - {"HarmBlockOnlyHigh", googleai.HarmBlockOnlyHigh, "BLOCK_ONLY_HIGH"}, - {"HarmBlockNone", googleai.HarmBlockNone, "BLOCK_NONE"}, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if string(tt.threshold) != tt.expected { - t.Errorf("expected %s to be %s, got %s", tt.name, tt.expected, string(tt.threshold)) - } - }) - } -} - -func TestVertexStructure(t *testing.T) { - // Test that Vertex has the expected fields - // This is mainly for documentation and to catch breaking changes - v := &Vertex{} - - // Check that fields exist by assignment (will fail to compile if missing) - v.CallbacksHandler = nil - _ = v.CallbacksHandler - v.client = nil - _ = v.client - v.opts = googleai.Options{} - _ = v.opts - v.palmClient = nil - _ = v.palmClient -} - -func TestWithHTTPClientOption(t *testing.T) { - opts := googleai.DefaultOptions() - - // Create a custom HTTP client - httpClient := &http.Client{} - - // Apply the HTTP client option - googleai.WithHTTPClient(httpClient)(&opts) - - // We can't directly check the client options, but we can verify - // that the option was added - if len(opts.ClientOptions) == 0 { - t.Error("WithHTTPClient did not add a client option") - } -} - -func TestOptionsEnsureAuthPresent(t *testing.T) { - tests := []struct { - name string - opts googleai.Options - envAPIKey string - expectAddition bool - }{ - { - name: "with existing auth options", - opts: googleai.Options{ - ClientOptions: []option.ClientOption{ - option.WithAPIKey("existing-key"), - }, - }, - envAPIKey: "env-key", - expectAddition: false, - }, - { - name: "without auth options but with env key", - opts: googleai.Options{}, - envAPIKey: "env-key", - expectAddition: true, - }, - { - name: "without auth options and no env key", - opts: googleai.Options{}, - envAPIKey: "", - expectAddition: false, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - // Clear env var first - t.Setenv("GOOGLE_API_KEY", "") - - // Set env var for test if needed - if tt.envAPIKey != "" { - t.Setenv("GOOGLE_API_KEY", tt.envAPIKey) - } - - // Make a copy of opts to avoid modifying the original - opts := tt.opts - initialLen := len(opts.ClientOptions) - opts.EnsureAuthPresent() - - if tt.expectAddition { - if len(opts.ClientOptions) <= initialLen { - t.Error("expected auth option to be added") - } - } else { - if len(opts.ClientOptions) > initialLen { - t.Error("expected no auth option to be added") - } - } - }) - } -} diff --git a/llms/googleai/vertex/structured_output.go b/llms/googleai/vertex/structured_output.go deleted file mode 100644 index b1e3692fb..000000000 --- a/llms/googleai/vertex/structured_output.go +++ /dev/null @@ -1,322 +0,0 @@ -// This file is hand-written (not generated). It builds Vertex's response schema -// from the provider-neutral llms.StructuredOutput. The Vertex SDK accepts only a -// *genai.Schema (a subset of OpenAPI 3.0), so the raw JSON Schema is converted -// explicitly; any construct that cannot be represented without changing meaning is -// a typed error rather than a silent drop. -package vertex - -import ( - "bytes" - "encoding/json" - "fmt" - - "cloud.google.com/go/vertexai/genai" - - "github.com/vxcontrol/langchaingo/llms" - "github.com/vxcontrol/langchaingo/llms/structuredoutput" -) - -const providerVertex = "vertex" - -// applyVertexResponseFormat sets the model's response format from the call options. -// With a per-call StructuredOutput it sets ResponseSchema (converted from the raw -// JSON Schema) plus application/json; otherwise it keeps the pre-existing schema- -// less JSON mode / ResponseMIMEType behavior. -func applyVertexResponseFormat(model *genai.GenerativeModel, opts *llms.CallOptions) error { - if so := opts.StructuredOutput; so != nil { - if err := opts.ValidateStructuredOutput(); err != nil { - return err - } - switch opts.GetResponseMIMEType() { - case "", ResponseMIMETypeJson: - model.ResponseMIMEType = ResponseMIMETypeJson - default: - return &llms.ErrStructuredOutputConflict{ - Provider: providerVertex, - Detail: "structured output requires the application/json response MIME type", - } - } - schema, err := convertJSONSchemaToVertex(so.Schema) - if err != nil { - return err - } - model.ResponseSchema = schema - return nil - } - - switch { - case opts.ResponseMIMEType != nil && opts.JSONMode: - return fmt.Errorf("conflicting options, can't use JSONMode and ResponseMIMEType together") - case opts.ResponseMIMEType != nil && !opts.JSONMode: - model.ResponseMIMEType = opts.GetResponseMIMEType() - case opts.GetResponseMIMEType() == "" && opts.JSONMode: - model.ResponseMIMEType = ResponseMIMETypeJson - } - return nil -} - -// validateVertexStructuredOutput validates each normal-final (FinishReasonStop) -// candidate against the original schema. Other finish reasons keep their prior -// semantics and are not validated as final JSON. -func validateVertexStructuredOutput(opts *llms.CallOptions, resp *llms.ContentResponse) error { - so := opts.StructuredOutput - if so == nil || resp == nil { - return nil - } - model := opts.GetModel() - stop := genai.FinishReasonStop.String() - for i, choice := range resp.Choices { - if choice.StopReason != stop { - continue - } - if err := structuredoutput.Validate(so.Schema, providerVertex, model, i, choice.StopReason, choice.Content); err != nil { - return err - } - } - return nil -} - -func unsupportedVertexSchema(reason string) error { - return &llms.ErrStructuredOutputUnsupported{Provider: providerVertex, Reason: reason} -} - -// vertexUnrepresentable lists JSON Schema keywords that *genai.Schema cannot -// express; their presence is a hard error so a constraint is never silently lost. -var vertexUnrepresentable = []string{ - "$ref", "$defs", "definitions", "anyOf", "oneOf", "allOf", "not", - "if", "then", "else", "const", "patternProperties", "dependentSchemas", -} - -// vertexKnownKeywords are the keywords convertVertexNode understands: the ones it -// maps onto genai.Schema plus purely annotative metadata that is safe to ignore. -// Anything outside this set is rejected rather than silently dropped. -var vertexKnownKeywords = map[string]bool{ - // mapped onto genai.Schema - "type": true, "description": true, "title": true, "format": true, - "nullable": true, "enum": true, "items": true, "properties": true, - "required": true, "additionalProperties": true, - "minimum": true, "maximum": true, "minItems": true, "maxItems": true, - "minProperties": true, "maxProperties": true, - "minLength": true, "maxLength": true, "pattern": true, - // annotative only — no effect on validation, safe to ignore - "$schema": true, "$id": true, "$comment": true, "default": true, - "examples": true, "readOnly": true, "writeOnly": true, "deprecated": true, -} - -// convertJSONSchemaToVertex converts a raw JSON Schema document to *genai.Schema. -// Numbers decode via json.Number so integer keywords can be checked for -// integrality instead of being silently truncated. -func convertJSONSchemaToVertex(raw json.RawMessage) (*genai.Schema, error) { - dec := json.NewDecoder(bytes.NewReader(raw)) - dec.UseNumber() - var node map[string]any - if err := dec.Decode(&node); err != nil { - return nil, unsupportedVertexSchema(fmt.Sprintf("schema is not a JSON object: %v", err)) - } - return convertVertexNode(node) -} - -func convertVertexNode(node map[string]any) (*genai.Schema, error) { //nolint:funlen // linear JSON Schema -> *genai.Schema field mapping - for _, k := range vertexUnrepresentable { - if _, ok := node[k]; ok { - return nil, unsupportedVertexSchema(fmt.Sprintf("construct %q is not representable by the Vertex schema type", k)) - } - } - // Reject any keyword we neither map nor knowingly ignore, so a real constraint - // (multipleOf, exclusiveMinimum, uniqueItems, ...) is never silently lost. - for k := range node { - if !vertexKnownKeywords[k] { - return nil, unsupportedVertexSchema(fmt.Sprintf("keyword %q is not representable by the Vertex schema type", k)) - } - } - - schema := &genai.Schema{} - - gt, nullable, err := vertexTypeOf(node) - if err != nil { - return nil, err - } - schema.Type = gt - schema.Nullable = nullable - - if s, ok := node["description"].(string); ok { - schema.Description = s - } - if s, ok := node["title"].(string); ok { - schema.Title = s - } - if s, ok := node["format"].(string); ok { - schema.Format = s - } - if s, ok := node["pattern"].(string); ok { - schema.Pattern = s - } - - // additionalProperties: only the strict `false` is accepted. Vertex object - // schemas have no field for it, but dropping `false` does not loosen the - // effective guarantee — the final response is validated against the original - // schema locally. Any schema value (or `true`) IS a meaningful loosening, so it - // is rejected instead of silently ignored. - if ap, ok := node["additionalProperties"]; ok { - if b, isBool := ap.(bool); !isBool || b { - return nil, unsupportedVertexSchema("additionalProperties must be false; a schema or true is not representable") - } - } - - if enum, ok := node["enum"]; ok { - arr, ok := enum.([]any) - if !ok { - return nil, unsupportedVertexSchema("enum must be an array") - } - for _, v := range arr { - s, ok := v.(string) - if !ok { - return nil, unsupportedVertexSchema("Vertex enum supports only string values") - } - schema.Enum = append(schema.Enum, s) - } - } - - if items, ok := node["items"]; ok { - itemMap, ok := items.(map[string]any) - if !ok { - return nil, unsupportedVertexSchema("items must be a single schema object (tuple items are not representable)") - } - child, err := convertVertexNode(itemMap) - if err != nil { - return nil, err - } - schema.Items = child - } - - if props, ok := node["properties"]; ok { - propMap, ok := props.(map[string]any) - if !ok { - return nil, unsupportedVertexSchema("properties must be an object") - } - schema.Properties = make(map[string]*genai.Schema, len(propMap)) - for name, raw := range propMap { - childMap, ok := raw.(map[string]any) - if !ok { - return nil, unsupportedVertexSchema(fmt.Sprintf("property %q must be a schema object", name)) - } - child, err := convertVertexNode(childMap) - if err != nil { - return nil, err - } - schema.Properties[name] = child - } - } - - if req, hasReq := node["required"]; hasReq { - arr, ok := req.([]any) - if !ok { - return nil, unsupportedVertexSchema("required must be an array of strings") - } - for _, r := range arr { - s, ok := r.(string) - if !ok { - return nil, unsupportedVertexSchema("required must contain only strings") - } - schema.Required = append(schema.Required, s) - } - } - - return schema, setVertexNumeric(schema, node) -} - -// vertexTypeOf resolves the genai type from a "type" that is a string or a -// [T, "null"] pair (the common JSON Schema nullable idiom). A wider union is not -// representable. -func vertexTypeOf(node map[string]any) (genai.Type, bool, error) { - rawType, ok := node["type"] - if !ok { - // Infer from shape when the type keyword is absent. - if _, hasProps := node["properties"]; hasProps { - return genai.TypeObject, false, nil - } - if _, hasItems := node["items"]; hasItems { - return genai.TypeArray, false, nil - } - return genai.TypeUnspecified, false, unsupportedVertexSchema("schema node is missing a type") - } - switch tv := rawType.(type) { - case string: - gt, err := mapVertexType(tv) - return gt, false, err - case []any: - var nonNull string - count, nullable := 0, false - for _, e := range tv { - s, _ := e.(string) - if s == "null" { - nullable = true - continue - } - nonNull = s - count++ - } - if count != 1 { - return genai.TypeUnspecified, false, unsupportedVertexSchema("union types are not representable (only [T, \"null\"] is)") - } - gt, err := mapVertexType(nonNull) - return gt, nullable, err - default: - return genai.TypeUnspecified, false, unsupportedVertexSchema("type must be a string or array") - } -} - -func mapVertexType(t string) (genai.Type, error) { - switch t { - case "string": - return genai.TypeString, nil - case "number": - return genai.TypeNumber, nil - case "integer": - return genai.TypeInteger, nil - case "boolean": - return genai.TypeBoolean, nil - case "array": - return genai.TypeArray, nil - case "object": - return genai.TypeObject, nil - default: - return genai.TypeUnspecified, unsupportedVertexSchema(fmt.Sprintf("unsupported type %q", t)) - } -} - -// setVertexNumeric transfers numeric keywords. Values arrive as json.Number -// (UseNumber). Float-valued keywords parse as float64; integer-valued keywords -// (item/property/length counts) must be integral — a fractional value is a typed -// error rather than a silent truncation. -func setVertexNumeric(schema *genai.Schema, node map[string]any) error { - floats := map[string]*float64{"minimum": &schema.Minimum, "maximum": &schema.Maximum} - for key, dst := range floats { - n, ok := node[key].(json.Number) - if !ok { - continue - } - f, err := n.Float64() - if err != nil { - return unsupportedVertexSchema(fmt.Sprintf("%s must be a number", key)) - } - *dst = f - } - ints := map[string]*int64{ - "minItems": &schema.MinItems, "maxItems": &schema.MaxItems, - "minProperties": &schema.MinProperties, "maxProperties": &schema.MaxProperties, - "minLength": &schema.MinLength, "maxLength": &schema.MaxLength, - } - for key, dst := range ints { - n, ok := node[key].(json.Number) - if !ok { - continue - } - i, err := n.Int64() - if err != nil { - return unsupportedVertexSchema(fmt.Sprintf("%s must be an integer", key)) - } - *dst = i - } - return nil -} diff --git a/llms/googleai/vertex/structured_output_test.go b/llms/googleai/vertex/structured_output_test.go deleted file mode 100644 index 137f5a263..000000000 --- a/llms/googleai/vertex/structured_output_test.go +++ /dev/null @@ -1,210 +0,0 @@ -package vertex - -import ( - "encoding/json" - "errors" - "os" - "strings" - "testing" - - "cloud.google.com/go/vertexai/genai" - - "github.com/vxcontrol/langchaingo/llms" -) - -func TestVertex_12F0_HandMaintained(t *testing.T) { - t.Parallel() - src, err := os.ReadFile("vertex.go") - if err != nil { - t.Fatal(err) - } - s := string(src) - if strings.Contains(s, "automatically generated") { - t.Error("vertex.go must no longer claim to be automatically generated") - } - if !strings.Contains(s, "hand-maintained") { - t.Error("vertex.go must document that it is hand-maintained") - } -} - -func TestConvertJSONSchemaToVertex(t *testing.T) { //nolint:funlen // table-driven test - t.Parallel() - - t.Run("representable object", func(t *testing.T) { - t.Parallel() - raw := json.RawMessage(`{ - "type":"object", - "properties":{ - "name":{"type":"string"}, - "tags":{"type":"array","items":{"type":"string"}}, - "age":{"type":"integer"}, - "color":{"type":"string","enum":["red","green"]} - }, - "required":["name"], - "additionalProperties":false - }`) - schema, err := convertJSONSchemaToVertex(raw) - if err != nil { - t.Fatalf("unexpected error: %v", err) - } - if schema.Type != genai.TypeObject { - t.Errorf("root type = %v, want object", schema.Type) - } - if len(schema.Properties) != 4 { - t.Errorf("properties = %d, want 4", len(schema.Properties)) - } - if schema.Properties["tags"].Type != genai.TypeArray || schema.Properties["tags"].Items.Type != genai.TypeString { - t.Error("array items not converted") - } - if len(schema.Properties["color"].Enum) != 2 { - t.Error("enum not converted") - } - if len(schema.Required) != 1 || schema.Required[0] != "name" { - t.Errorf("required = %v", schema.Required) - } - }) - - t.Run("string constraints are preserved", func(t *testing.T) { - t.Parallel() - schema, err := convertJSONSchemaToVertex(json.RawMessage(`{"type":"string","minLength":2,"maxLength":8,"pattern":"^[a-z]+$"}`)) - if err != nil { - t.Fatal(err) - } - if schema.MinLength != 2 || schema.MaxLength != 8 || schema.Pattern != "^[a-z]+$" { - t.Errorf("string constraints lost: minLen=%d maxLen=%d pattern=%q", schema.MinLength, schema.MaxLength, schema.Pattern) - } - }) - - t.Run("array/numeric constraints are preserved", func(t *testing.T) { - t.Parallel() - schema, err := convertJSONSchemaToVertex(json.RawMessage(`{"type":"array","items":{"type":"integer","minimum":1,"maximum":9},"minItems":1,"maxItems":3}`)) - if err != nil { - t.Fatal(err) - } - if schema.MinItems != 1 || schema.MaxItems != 3 { - t.Errorf("array constraints lost: min=%d max=%d", schema.MinItems, schema.MaxItems) - } - if schema.Items.Minimum != 1 || schema.Items.Maximum != 9 { - t.Errorf("numeric constraints lost: min=%v max=%v", schema.Items.Minimum, schema.Items.Maximum) - } - }) - - t.Run("unknown keyword is rejected", func(t *testing.T) { - t.Parallel() - _, err := convertJSONSchemaToVertex(json.RawMessage(`{"type":"integer","multipleOf":2}`)) - var unsup *llms.ErrStructuredOutputUnsupported - if !errors.As(err, &unsup) { - t.Fatalf("unknown constraint must be rejected, got %v", err) - } - }) - - t.Run("fractional integer keyword is rejected", func(t *testing.T) { - t.Parallel() - _, err := convertJSONSchemaToVertex(json.RawMessage(`{"type":"array","items":{"type":"string"},"minItems":1.5}`)) - var unsup *llms.ErrStructuredOutputUnsupported - if !errors.As(err, &unsup) { - t.Fatalf("fractional minItems must be rejected, got %v", err) - } - }) - - t.Run("required with non-string is rejected", func(t *testing.T) { - t.Parallel() - _, err := convertJSONSchemaToVertex(json.RawMessage(`{"type":"object","properties":{"a":{"type":"string"}},"required":[1],"additionalProperties":false}`)) - var unsup *llms.ErrStructuredOutputUnsupported - if !errors.As(err, &unsup) { - t.Fatalf("non-string required must be rejected, got %v", err) - } - }) - - t.Run("nullable via [T,null]", func(t *testing.T) { - t.Parallel() - schema, err := convertJSONSchemaToVertex(json.RawMessage(`{"type":["string","null"]}`)) - if err != nil { - t.Fatal(err) - } - if schema.Type != genai.TypeString || !schema.Nullable { - t.Errorf("want nullable string, got type=%v nullable=%v", schema.Type, schema.Nullable) - } - }) - - unrepresentable := map[string]string{ - "$ref": `{"$ref":"#/x"}`, - "anyOf": `{"anyOf":[{"type":"string"}]}`, - "oneOf": `{"oneOf":[{"type":"string"}]}`, - "const": `{"const":"x"}`, - "additionalProperties true": `{"type":"object","properties":{"a":{"type":"string"}},"additionalProperties":true}`, - "union type": `{"type":["string","number"]}`, - } - for name, raw := range unrepresentable { - t.Run("rejects "+name, func(t *testing.T) { - t.Parallel() - _, err := convertJSONSchemaToVertex(json.RawMessage(raw)) - var unsup *llms.ErrStructuredOutputUnsupported - if !errors.As(err, &unsup) { - t.Fatalf("want ErrStructuredOutputUnsupported, got %v", err) - } - }) - } -} - -func TestApplyVertexResponseFormat(t *testing.T) { - t.Parallel() - schema := &llms.StructuredOutputConfig{Name: "s", Schema: json.RawMessage(`{"type":"object","properties":{"a":{"type":"string"}},"required":["a"],"additionalProperties":false}`)} - - t.Run("structured output sets ResponseSchema and MIME", func(t *testing.T) { - t.Parallel() - model := &genai.GenerativeModel{} - opts := &llms.CallOptions{JSONMode: true, StructuredOutput: schema} - if err := applyVertexResponseFormat(model, opts); err != nil { - t.Fatal(err) - } - if model.ResponseMIMEType != ResponseMIMETypeJson { - t.Errorf("MIME = %q", model.ResponseMIMEType) - } - if model.ResponseSchema == nil { - t.Error("ResponseSchema must be set") - } - }) - - t.Run("other MIME conflicts", func(t *testing.T) { - t.Parallel() - model := &genai.GenerativeModel{} - mime := "text/plain" - opts := &llms.CallOptions{JSONMode: true, ResponseMIMEType: &mime, StructuredOutput: schema} - err := applyVertexResponseFormat(model, opts) - var conflict *llms.ErrStructuredOutputConflict - if !errors.As(err, &conflict) { - t.Fatalf("want conflict, got %v", err) - } - }) - - t.Run("schema-less JSONMode unchanged", func(t *testing.T) { - t.Parallel() - model := &genai.GenerativeModel{} - if err := applyVertexResponseFormat(model, &llms.CallOptions{JSONMode: true}); err != nil { - t.Fatal(err) - } - if model.ResponseMIMEType != ResponseMIMETypeJson || model.ResponseSchema != nil { - t.Error("schema-less mode must set only MIME, not ResponseSchema") - } - }) -} - -func TestValidateVertexStructuredOutput(t *testing.T) { - t.Parallel() - opts := &llms.CallOptions{ - JSONMode: true, - StructuredOutput: &llms.StructuredOutputConfig{Name: "s", Schema: json.RawMessage(`{"type":"object","properties":{"a":{"type":"string"}},"required":["a"],"additionalProperties":false}`)}, - } - stop := genai.FinishReasonStop.String() - - if err := validateVertexStructuredOutput(opts, &llms.ContentResponse{Choices: []*llms.ContentChoice{{Content: `{"a":"ok"}`, StopReason: stop}}}); err != nil { - t.Errorf("valid STOP must pass: %v", err) - } - - err := validateVertexStructuredOutput(opts, &llms.ContentResponse{Choices: []*llms.ContentChoice{{Content: `{"a":1}`, StopReason: stop}}}) - var ve *llms.ErrStructuredOutputValidation - if !errors.As(err, &ve) { - t.Errorf("invalid STOP must fail typed: %v", err) - } -} diff --git a/llms/googleai/vertex/vertex.go b/llms/googleai/vertex/vertex.go index 3d1c79e1f..c2c129e48 100644 --- a/llms/googleai/vertex/vertex.go +++ b/llms/googleai/vertex/vertex.go @@ -1,573 +1,61 @@ -// This file is hand-maintained. It was historically code-generated from -// googleai.go, but the two packages now target different SDKs (googleai uses -// google.golang.org/genai while vertex uses cloud.google.com/go/vertexai/genai), -// so the generator is obsolete and must not be run. See the README in this -// directory. - -//nolint:all +// Package vertex implements a langchaingo provider for Google Vertex AI LLMs, +// including the Gemini models. +// See https://cloud.google.com/vertex-ai for more details. package vertex import ( "context" - "encoding/json" "errors" - "fmt" - "io" - "strings" - - "github.com/vxcontrol/langchaingo/llms/googleai" - "github.com/vxcontrol/langchaingo/llms/streaming" + "os" - "cloud.google.com/go/vertexai/genai" - "github.com/vxcontrol/langchaingo/internal/imageutil" "github.com/vxcontrol/langchaingo/llms" - "google.golang.org/api/iterator" -) - -var ( - ErrNoContentInResponse = errors.New("no content in generation response") - ErrUnknownPartInResponse = errors.New("unknown part type in generation response") - ErrInvalidMimeType = errors.New("invalid mime type on content") + "github.com/vxcontrol/langchaingo/llms/googleai" ) -const ( - CITATIONS = "citations" - SAFETY = "safety" - RoleSystem = "system" - RoleModel = "model" - RoleUser = "user" - RoleTool = "tool" - ResponseMIMETypeJson = "application/json" -) +// ErrMissingCloudTarget reports a client asked for Vertex without naming where. +var ErrMissingCloudTarget = errors.New("vertex: a cloud project and a cloud location are both required") -// Call implements the [llms.Model] interface. -func (g *Vertex) Call(ctx context.Context, prompt string, options ...llms.CallOption) (string, error) { - return llms.GenerateFromSinglePrompt(ctx, g, prompt, options...) +// Vertex reaches Gemini through the Vertex AI backend of the Google GenAI SDK. +type Vertex struct { + *googleai.GoogleAI } -// GenerateContent implements the [llms.Model] interface. -func (g *Vertex) GenerateContent( - ctx context.Context, - messages []llms.MessageContent, - options ...llms.CallOption, -) (resp *llms.ContentResponse, err error) { //nolint:nonamedreturns - // Emit exactly one closing callback: HandleLLMError on any error (transport, - // config or a structured-output validation failure), otherwise - // HandleLLMGenerateContentEnd — consistent across every provider adapter. - if g.CallbacksHandler != nil { - g.CallbacksHandler.HandleLLMGenerateContentStart(ctx, messages) - defer func() { - if err != nil { - g.CallbacksHandler.HandleLLMError(ctx, err) - } else { - g.CallbacksHandler.HandleLLMGenerateContentEnd(ctx, resp) - } - }() - } - - opts := llms.CallOptions{ - Model: &g.opts.DefaultModel, - CandidateCount: &g.opts.DefaultCandidateCount, - MaxTokens: &g.opts.DefaultMaxTokens, - Temperature: &g.opts.DefaultTemperature, - TopP: &g.opts.DefaultTopP, - TopK: &g.opts.DefaultTopK, - } - for _, opt := range options { - opt(&opts) - } - - model := g.client.GenerativeModel(opts.GetModel()) - if opts.CandidateCount != nil { - model.SetCandidateCount(int32(opts.GetCandidateCount())) - } - if opts.MaxTokens != nil { - model.SetMaxOutputTokens(int32(opts.GetMaxTokens())) - } - if opts.Temperature != nil { - model.SetTemperature(float32(opts.GetTemperature())) - } - if opts.TopP != nil { - model.SetTopP(float32(opts.GetTopP())) - } - if opts.TopK != nil { - model.SetTopK(int32(opts.GetTopK())) - } - model.StopSequences = opts.StopWords - model.SafetySettings = []*genai.SafetySetting{ - { - Category: genai.HarmCategoryDangerousContent, - Threshold: convertVertexHarmBlockThreshold(g.opts.HarmThreshold), - }, - { - Category: genai.HarmCategoryHarassment, - Threshold: convertVertexHarmBlockThreshold(g.opts.HarmThreshold), - }, - { - Category: genai.HarmCategoryHateSpeech, - Threshold: convertVertexHarmBlockThreshold(g.opts.HarmThreshold), - }, - { - Category: genai.HarmCategorySexuallyExplicit, - Threshold: convertVertexHarmBlockThreshold(g.opts.HarmThreshold), - }, - } - if model.Tools, err = convertTools(opts.Tools); err != nil { - return nil, err - } - - // set model.ResponseMIMEType / ResponseSchema from JSONMode, ResponseMIMEType - // or a per-call structured-output schema - if err := applyVertexResponseFormat(model, &opts); err != nil { - return nil, err - } - - var response *llms.ContentResponse - - if len(messages) == 1 { - theMessage := messages[0] - if theMessage.Role != llms.ChatMessageTypeHuman { - return nil, fmt.Errorf("got %v message role, want human", theMessage.Role) - } - response, err = generateFromSingleMessage(ctx, model, theMessage.Parts, &opts) - } else { - response, err = generateFromMessages(ctx, model, messages, &opts) - } - if err != nil { - return nil, err - } +var _ llms.Model = &Vertex{} - // When structured output was requested, validate each normal-final candidate - // against the original schema; the response is returned with the typed error. - if err := validateVertexStructuredOutput(&opts, response); err != nil { - return response, err +// New creates a client bound to the Vertex AI backend. The project and the +// location come from the options, or from GOOGLE_CLOUD_PROJECT and +// GOOGLE_CLOUD_LOCATION when the options leave them empty. Authentication comes +// from googleai.WithCredentialsFile or googleai.WithCredentialsJSON, and from +// application default credentials when neither is given. +func New(ctx context.Context, opts ...googleai.Option) (*Vertex, error) { + resolved := googleai.DefaultOptions() + for _, opt := range opts { + opt(&resolved) } - return response, nil -} - -// convertCandidates converts a sequence of genai.Candidate to a response. -func convertCandidates(candidates []*genai.Candidate, usage *genai.UsageMetadata) (*llms.ContentResponse, error) { - var contentResponse llms.ContentResponse - var toolCalls []llms.ToolCall - - for _, candidate := range candidates { - buf := strings.Builder{} - - if candidate.Content != nil { - for _, part := range candidate.Content.Parts { - switch v := part.(type) { - case genai.Text: - _, err := buf.WriteString(string(v)) - if err != nil { - return nil, err - } - case genai.FunctionCall: - b, err := json.Marshal(v.Args) - if err != nil { - return nil, err - } - toolCall := llms.ToolCall{ - FunctionCall: &llms.FunctionCall{ - Name: v.Name, - Arguments: string(b), - }, - } - toolCalls = append(toolCalls, toolCall) - default: - return nil, ErrUnknownPartInResponse - } - } - } - - metadata := make(map[string]any) - metadata[CITATIONS] = candidate.CitationMetadata - metadata[SAFETY] = candidate.SafetyRatings - - if usage != nil { - metadata["input_tokens"] = usage.PromptTokenCount - metadata["output_tokens"] = usage.CandidatesTokenCount - metadata["total_tokens"] = usage.TotalTokenCount + if resolved.CloudProject == "" { + if project := os.Getenv("GOOGLE_CLOUD_PROJECT"); project != "" { + resolved.CloudProject = project + opts = append(opts, googleai.WithCloudProject(project)) } - - contentResponse.Choices = append(contentResponse.Choices, - &llms.ContentChoice{ - Content: buf.String(), - StopReason: candidate.FinishReason.String(), - GenerationInfo: metadata, - ToolCalls: toolCalls, - }) } - return &contentResponse, nil -} - -// convertParts converts between a sequence of langchain parts and genai parts. -func convertParts(parts []llms.ContentPart) ([]genai.Part, error) { - convertedParts := make([]genai.Part, 0, len(parts)) - for _, part := range parts { - var out genai.Part - - switch p := part.(type) { - case llms.TextContent: - out = genai.Text(p.Text) - case llms.BinaryContent: - out = genai.Blob{MIMEType: p.MIMEType, Data: p.Data} - case llms.ImageURLContent: - typ, data, err := imageutil.DownloadImageData(p.URL) - if err != nil { - return nil, err - } - out = genai.ImageData(typ, data) - case llms.ToolCall: - fc := p.FunctionCall - var argsMap map[string]any - if err := json.Unmarshal([]byte(fc.Arguments), &argsMap); err != nil { - return convertedParts, err - } - out = genai.FunctionCall{ - Name: fc.Name, - Args: argsMap, - } - case llms.ToolCallResponse: - out = genai.FunctionResponse{ - Name: p.Name, - Response: map[string]any{ - "response": p.Content, - }, - } + if resolved.CloudLocation == "" { + if location := os.Getenv("GOOGLE_CLOUD_LOCATION"); location != "" { + resolved.CloudLocation = location + opts = append(opts, googleai.WithCloudLocation(location)) } - - convertedParts = append(convertedParts, out) } - return convertedParts, nil -} - -// convertContent converts between a langchain MessageContent and genai content. -func convertContent(content llms.MessageContent) (*genai.Content, error) { - parts, err := convertParts(content.Parts) - if err != nil { - return nil, err - } - - c := &genai.Content{ - Parts: parts, + if resolved.CloudProject == "" || resolved.CloudLocation == "" { + return nil, ErrMissingCloudTarget } - switch content.Role { - case llms.ChatMessageTypeSystem: - c.Role = RoleSystem - case llms.ChatMessageTypeAI: - c.Role = RoleModel - case llms.ChatMessageTypeHuman: - c.Role = RoleUser - case llms.ChatMessageTypeGeneric: - c.Role = RoleUser - case llms.ChatMessageTypeTool: - c.Role = RoleUser - case llms.ChatMessageTypeFunction: - fallthrough - default: - return nil, fmt.Errorf("role %v not supported", content.Role) - } - - return c, nil -} - -// generateFromSingleMessage generates content from the parts of a single -// message. -func generateFromSingleMessage( - ctx context.Context, - model *genai.GenerativeModel, - parts []llms.ContentPart, - opts *llms.CallOptions, -) (*llms.ContentResponse, error) { - convertedParts, err := convertParts(parts) + client, err := googleai.New(ctx, opts...) if err != nil { return nil, err } - - if opts.StreamingFunc == nil { - // When no streaming is requested, just call GenerateContent and return - // the complete response with a list of candidates. - resp, err := model.GenerateContent(ctx, convertedParts...) - if err != nil { - return nil, err - } - - if len(resp.Candidates) == 0 { - return nil, ErrNoContentInResponse - } - return convertCandidates(resp.Candidates, resp.UsageMetadata) - } - iter := model.GenerateContentStream(ctx, convertedParts...) - return convertAndStreamFromIterator(ctx, iter, opts) + return &Vertex{GoogleAI: client}, nil } -func generateFromMessages( - ctx context.Context, - model *genai.GenerativeModel, - messages []llms.MessageContent, - opts *llms.CallOptions, -) (*llms.ContentResponse, error) { - history := make([]*genai.Content, 0, len(messages)) - for _, mc := range messages { - content, err := convertContent(mc) - if err != nil { - return nil, err - } - if mc.Role == RoleSystem { - model.SystemInstruction = content - continue - } - history = append(history, content) - } - - // Given N total messages, genai's chat expects the first N-1 messages as - // history and the last message as the actual request. - n := len(history) - reqContent := history[n-1] - history = history[:n-1] - - session := model.StartChat() - session.History = history - - if opts.StreamingFunc == nil { - resp, err := session.SendMessage(ctx, reqContent.Parts...) - if err != nil { - return nil, err - } - - if len(resp.Candidates) == 0 { - return nil, ErrNoContentInResponse - } - return convertCandidates(resp.Candidates, resp.UsageMetadata) - } - iter := session.SendMessageStream(ctx, reqContent.Parts...) - return convertAndStreamFromIterator(ctx, iter, opts) -} - -// convertAndStreamFromIterator takes an iterator of GenerateContentResponse -// and produces a llms.ContentResponse reply from it, while streaming the -// resulting text into the opts-provided streaming function. -// Note that this is tricky in the face of multiple -// candidates, so this code assumes only a single candidate for now. -func convertAndStreamFromIterator( - ctx context.Context, - iter *genai.GenerateContentResponseIterator, - opts *llms.CallOptions, -) (*llms.ContentResponse, error) { - defer streaming.CallWithDone(ctx, opts.StreamingFunc) //nolint:errcheck - - candidate := &genai.Candidate{ - Content: &genai.Content{}, - } -DoStream: - for { - resp, err := iter.Next() - if errors.Is(err, iterator.Done) { - break DoStream - } - if err != nil { - return nil, fmt.Errorf("error in stream mode: %w", err) - } - - if len(resp.Candidates) != 1 { - return nil, fmt.Errorf("expect single candidate in stream mode; got %v", len(resp.Candidates)) - } - respCandidate := resp.Candidates[0] - - if !mergeStreamCandidate(candidate, respCandidate) { - break DoStream - } - - for _, part := range respCandidate.Content.Parts { - if text, ok := part.(genai.Text); ok { - if err := streaming.CallWithText(ctx, opts.StreamingFunc, string(text)); err != nil { - break DoStream - } - } - } - } - mresp := iter.MergedResponse() - return convertCandidates([]*genai.Candidate{candidate}, mresp.UsageMetadata) -} - -// mergeStreamCandidate folds one streamed candidate into the accumulator. It -// records the finish reason and metadata even when the chunk carries no content — -// the finish reason often arrives on a trailing content-less chunk, and dropping -// it would leave StopReason unset and silently skip structured-output validation. -// It reports whether the chunk had content to append (false ends the stream). -func mergeStreamCandidate(acc, chunk *genai.Candidate) bool { - acc.FinishReason = chunk.FinishReason - acc.SafetyRatings = chunk.SafetyRatings - acc.CitationMetadata = chunk.CitationMetadata - if chunk.Content == nil { - return false - } - acc.Content.Parts = append(acc.Content.Parts, chunk.Content.Parts...) - acc.Content.Role = chunk.Content.Role - return true -} - -// convertTools converts from a list of langchaingo tools to a list of genai -// tools. -func convertTools(tools []llms.Tool) ([]*genai.Tool, error) { - genaiFuncDecls := make([]*genai.FunctionDeclaration, 0, len(tools)) - for i, tool := range tools { - if tool.Type != "function" { - return nil, fmt.Errorf("tool [%d]: unsupported type %q, want 'function'", i, tool.Type) - } - - // We have a llms.FunctionDefinition in tool.Function, and we have to - // convert it to genai.FunctionDeclaration - genaiFuncDecl := &genai.FunctionDeclaration{ - Name: tool.Function.Name, - Description: tool.Function.Description, - } - - // Expect the Parameters field to be a map[string]any, from which we will - // extract properties to populate the schema. - params, ok := tool.Function.Parameters.(map[string]any) - if !ok { - paramsData, err := json.Marshal(tool.Function.Parameters) - if err != nil { - return nil, fmt.Errorf("tool [%d]: failed to marshal parameters: %w", i, err) - } - if err := json.Unmarshal(paramsData, ¶ms); err != nil { - return nil, fmt.Errorf("tool [%d]: failed to unmarshal parameters: %w", i, err) - } - } - - schema := &genai.Schema{} - if ty, ok := params["type"]; ok { - tyString, ok := ty.(string) - if !ok { - return nil, fmt.Errorf("tool [%d]: expected string for type", i) - } - schema.Type = convertToolSchemaType(tyString) - } - - paramProperties, ok := params["properties"].(map[string]any) - if !ok { - return nil, fmt.Errorf("tool [%d]: expected to find a map of properties", i) - } - - schema.Properties = make(map[string]*genai.Schema) - for propName, propValue := range paramProperties { - valueMap, ok := propValue.(map[string]any) - if !ok { - return nil, fmt.Errorf("tool [%d], property [%v]: expect to find a value map", i, propName) - } - schema.Properties[propName] = &genai.Schema{} - - if ty, ok := valueMap["type"]; ok { - tyString, ok := ty.(string) - if !ok { - return nil, fmt.Errorf("tool [%d]: expected string for type", i) - } - schema.Properties[propName].Type = convertToolSchemaType(tyString) - } - if desc, ok := valueMap["description"]; ok { - descString, ok := desc.(string) - if !ok { - return nil, fmt.Errorf("tool [%d]: expected string for description", i) - } - schema.Properties[propName].Description = descString - } - } - - if required, ok := params["required"]; ok { - if rs, ok := required.([]string); ok { - schema.Required = rs - } else if ri, ok := required.([]interface{}); ok { - rs := make([]string, 0, len(ri)) - for _, r := range ri { - rString, ok := r.(string) - if !ok { - return nil, fmt.Errorf("tool [%d]: expected string for required", i) - } - rs = append(rs, rString) - } - schema.Required = rs - } else { - return nil, fmt.Errorf("tool [%d]: expected string for required", i) - } - } - genaiFuncDecl.Parameters = schema - - // google genai only support one tool, multiple tools must be embedded into function declarations: - // https://github.com/GoogleCloudPlatform/generative-ai/issues/636 - // https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/function-calling#chat-samples - genaiFuncDecls = append(genaiFuncDecls, genaiFuncDecl) - } - - // Return nil if no tools are provided - if len(genaiFuncDecls) == 0 { - return nil, nil - } - - genaiTools := []*genai.Tool{{FunctionDeclarations: genaiFuncDecls}} - - return genaiTools, nil -} - -// convertToolSchemaType converts a tool's schema type from its langchaingo -// representation (string) to a genai enum. -func convertToolSchemaType(ty string) genai.Type { - switch ty { - case "object": - return genai.TypeObject - case "string": - return genai.TypeString - case "number": - return genai.TypeNumber - case "integer": - return genai.TypeInteger - case "boolean": - return genai.TypeBoolean - case "array": - return genai.TypeArray - default: - return genai.TypeUnspecified - } -} - -// showContent is a debugging helper for genai.Content. -func showContent(w io.Writer, cs []*genai.Content) { - fmt.Fprintf(w, "Content (len=%v)\n", len(cs)) - for i, c := range cs { - fmt.Fprintf(w, "[%d]: Role=%s\n", i, c.Role) - for j, p := range c.Parts { - fmt.Fprintf(w, " Parts[%v]: ", j) - switch pp := p.(type) { - case genai.Text: - fmt.Fprintf(w, "Text %q\n", pp) - case genai.Blob: - fmt.Fprintf(w, "Blob MIME=%q, size=%d\n", pp.MIMEType, len(pp.Data)) - case genai.FunctionCall: - fmt.Fprintf(w, "FunctionCall Name=%v, Args=%v\n", pp.Name, pp.Args) - case genai.FunctionResponse: - fmt.Fprintf(w, "FunctionResponse Name=%v Response=%v\n", pp.Name, pp.Response) - default: - fmt.Fprintf(w, "unknown type %T\n", pp) - } - } - } -} - -func convertVertexHarmBlockThreshold(threshold googleai.HarmBlockThreshold) genai.HarmBlockThreshold { - switch threshold { - case googleai.HarmBlockUnspecified: - return genai.HarmBlockUnspecified - case googleai.HarmBlockLowAndAbove: - return genai.HarmBlockLowAndAbove - case googleai.HarmBlockMediumAndAbove: - return genai.HarmBlockMediumAndAbove - case googleai.HarmBlockOnlyHigh: - return genai.HarmBlockOnlyHigh - case googleai.HarmBlockNone: - return genai.HarmBlockNone - default: - return genai.HarmBlockOnlyHigh // Safe default - } +func (v *Vertex) Close() error { + return nil } diff --git a/llms/googleai/vertex/vertex_test.go b/llms/googleai/vertex/vertex_test.go index 0dd4b46c3..3c0948c0e 100644 --- a/llms/googleai/vertex/vertex_test.go +++ b/llms/googleai/vertex/vertex_test.go @@ -1,521 +1,190 @@ -package vertex +package vertex_test import ( "context" - "os" - "path/filepath" - "strings" + "encoding/json" + "io" + "net/http" + "net/http/httptest" "testing" - "github.com/vxcontrol/langchaingo/httputil" - "github.com/vxcontrol/langchaingo/internal/httprr" - "github.com/vxcontrol/langchaingo/llms" - "github.com/vxcontrol/langchaingo/llms/googleai" - "github.com/vxcontrol/langchaingo/llms/streaming" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" -) -func newHTTPRRClient(t *testing.T, opts ...googleai.Option) *Vertex { - t.Helper() + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/googleai" + "github.com/vxcontrol/langchaingo/llms/googleai/vertex" +) - // Always check for recordings first - prefer recordings over environment variables - if !hasExistingRecording(t) { - t.Skip("No httprr recording available. Hint: Re-run tests with -httprecord=. to record new HTTP interactions") - } - - // Temporarily unset Google API key environment variable to prevent bypass - oldKey := os.Getenv("GOOGLE_API_KEY") - os.Unsetenv("GOOGLE_API_KEY") - t.Cleanup(func() { - if oldKey != "" { - os.Setenv("GOOGLE_API_KEY", oldKey) - } - }) - - // Use httputil.DefaultTransport - httprr handles wrapping - rr := httprr.OpenForTest(t, httputil.DefaultTransport) - - // Configure client with httprr and test values - opts = append(opts, - googleai.WithHTTPClient(rr.Client()), - googleai.WithCloudProject("test-project"), - googleai.WithCloudLocation("us-central1"), - ) - - llm, err := New(t.Context(), opts...) - require.NoError(t, err) - return llm +type toLocalServer struct { + host string + seen *string } -// hasExistingRecording checks if a httprr recording exists for this test -func hasExistingRecording(t *testing.T) bool { - testName := strings.ReplaceAll(t.Name(), "/", "_") - testName = strings.ReplaceAll(testName, " ", "_") - recordingPath := filepath.Join("testdata", testName+".httprr") - _, err := os.Stat(recordingPath) - return err == nil +func (t *toLocalServer) RoundTrip(req *http.Request) (*http.Response, error) { + *t.seen = req.URL.String() + req.URL.Scheme = "http" + req.URL.Host = t.host + return http.DefaultTransport.RoundTrip(req) } -func TestVertexGenerateContent(t *testing.T) { - t.Parallel() - - llm := newHTTPRRClient(t) - - content := []llms.MessageContent{ - { - Role: llms.ChatMessageTypeHuman, - Parts: []llms.ContentPart{ - llms.TextPart("What is the capital of France?"), - }, - }, - } - - resp, err := llm.GenerateContent(t.Context(), content) - require.NoError(t, err) - require.NotNil(t, resp) - assert.NotEmpty(t, resp.Choices) - assert.Contains(t, resp.Choices[0].Content, "Paris") -} - -func TestVertexGenerateContentWithMultipleMessages(t *testing.T) { - t.Parallel() - - llm := newHTTPRRClient(t) - - content := []llms.MessageContent{ - { - Role: llms.ChatMessageTypeHuman, - Parts: []llms.ContentPart{ - llms.TextPart("My name is Bob"), - }, - }, - { - Role: llms.ChatMessageTypeAI, - Parts: []llms.ContentPart{ - llms.TextPart("Nice to meet you, Bob!"), - }, - }, - { - Role: llms.ChatMessageTypeHuman, - Parts: []llms.ContentPart{ - llms.TextPart("What's my name?"), - }, - }, - } +func vertexAgainstALocalServer(t *testing.T, body string, opts ...googleai.Option) (*vertex.Vertex, *string) { + t.Helper() - resp, err := llm.GenerateContent(t.Context(), content, llms.WithModel("gemini-1.5-flash")) + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, body) + })) + t.Cleanup(srv.Close) + + seen := new(string) + llm, err := vertex.New(context.Background(), append([]googleai.Option{ + googleai.WithCloudProject("hotel-desk"), + googleai.WithCloudLocation("europe-west4"), + googleai.WithDefaultModel("gemini-2.5-flash"), + googleai.WithHTTPClient(&http.Client{ + Transport: &toLocalServer{host: srv.Listener.Addr().String(), seen: seen}, + }), + }, opts...)...) require.NoError(t, err) - require.NotNil(t, resp) - assert.NotEmpty(t, resp.Choices) - assert.Contains(t, resp.Choices[0].Content, "Bob") + return llm, seen } -func TestVertexGenerateContentWithSystemMessage(t *testing.T) { - t.Parallel() - - llm := newHTTPRRClient(t) +func TestVertexRefusesToGuessWhereItIs(t *testing.T) { + t.Setenv("GOOGLE_CLOUD_PROJECT", "") + t.Setenv("GOOGLE_CLOUD_LOCATION", "") - content := []llms.MessageContent{ - { - Role: llms.ChatMessageTypeSystem, - Parts: []llms.ContentPart{ - llms.TextPart("You are a helpful assistant that always responds in haiku format."), - }, - }, - { - Role: llms.ChatMessageTypeHuman, - Parts: []llms.ContentPart{ - llms.TextPart("Tell me about the moon"), - }, - }, - } - - resp, err := llm.GenerateContent(t.Context(), content, llms.WithModel("gemini-1.5-flash")) - require.NoError(t, err) - require.NotNil(t, resp) - assert.NotEmpty(t, resp.Choices) + _, err := vertex.New(context.Background()) + require.ErrorIs(t, err, vertex.ErrMissingCloudTarget, + "a door that reaches one cloud must be told which project and location, not fall back to another backend") } -func TestVertexCall(t *testing.T) { - t.Parallel() +func TestVertexTakesItsCloudTargetFromTheEnvironment(t *testing.T) { + t.Setenv("GOOGLE_CLOUD_PROJECT", "night-porter") + t.Setenv("GOOGLE_CLOUD_LOCATION", "us-central1") - llm := newHTTPRRClient(t) + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"candidates":[{"content":{"role":"model","parts":[{"text":"ok"}]},`+ + `"finishReason":"STOP"}],"usageMetadata":{"promptTokenCount":1,"candidatesTokenCount":1,"totalTokenCount":2}}`) + })) + t.Cleanup(srv.Close) - output, err := llm.Call(t.Context(), "What is 3 + 3?") + seen := new(string) + llm, err := vertex.New(context.Background(), + googleai.WithDefaultModel("gemini-2.5-flash"), + googleai.WithHTTPClient(&http.Client{ + Transport: &toLocalServer{host: srv.Listener.Addr().String(), seen: seen}, + })) require.NoError(t, err) - assert.NotEmpty(t, output) - assert.Contains(t, output, "6") -} - -func TestVertexCreateEmbedding(t *testing.T) { - t.Parallel() - - llm := newHTTPRRClient(t) - texts := []string{"hello vertex", "goodbye vertex", "hello vertex"} - - embeddings, err := llm.CreateEmbedding(t.Context(), texts) + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) require.NoError(t, err) - assert.Len(t, embeddings, 3) - assert.NotEmpty(t, embeddings[0]) - assert.NotEmpty(t, embeddings[1]) - assert.NotEmpty(t, embeddings[2]) - // First and third should be identical since they're the same text - assert.Equal(t, embeddings[0], embeddings[2]) -} -func TestVertexWithOptions(t *testing.T) { - t.Parallel() - - llm := newHTTPRRClient(t, - googleai.WithDefaultModel("gemini-1.5-flash"), - googleai.WithDefaultMaxTokens(150), - googleai.WithDefaultTemperature(0.2), - ) - - content := []llms.MessageContent{ - { - Role: llms.ChatMessageTypeHuman, - Parts: []llms.ContentPart{ - llms.TextPart("List the primary colors"), - }, - }, - } - - resp, err := llm.GenerateContent(t.Context(), content) - require.NoError(t, err) - require.NotNil(t, resp) - assert.NotEmpty(t, resp.Choices) + assert.Contains(t, *seen, "/projects/night-porter/locations/us-central1/", + "the environment names the cloud target when the caller does not") } -func TestVertexWithStreaming(t *testing.T) { +func TestVertexAddressesTheVertexBackend(t *testing.T) { t.Parallel() - llm := newHTTPRRClient(t) - - content := []llms.MessageContent{ - { - Role: llms.ChatMessageTypeHuman, - Parts: []llms.ContentPart{ - llms.TextPart("Tell me a short story about a robot"), - }, - }, - } - - var ( - streamedContent strings.Builder - streamDone bool - ) - resp, err := llm.GenerateContent( - t.Context(), - content, - llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { - switch chunk.Type { - case streaming.ChunkTypeText: - streamedContent.WriteString(chunk.Content) - case streaming.ChunkTypeDone: - streamDone = true - default: - // Ignore other chunk types - } - return nil - }), - ) + llm, seen := vertexAgainstALocalServer(t, + `{"candidates":[{"content":{"role":"model","parts":[{"text":"sixty rooms are free"}]},`+ + `"finishReason":"STOP"}],"usageMetadata":{"promptTokenCount":3,"candidatesTokenCount":5,"totalTokenCount":8}}`) + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}) require.NoError(t, err) - require.NotNil(t, resp) - require.True(t, streamDone) - assert.NotEmpty(t, resp.Choices) - assert.NotEmpty(t, streamedContent.String()) - assert.Contains(t, streamedContent.String(), "robot") -} - -func TestVertexWithTools(t *testing.T) { - t.Parallel() - - llm := newHTTPRRClient(t) - - tools := []llms.Tool{ - { - Type: "function", - Function: &llms.FunctionDefinition{ - Name: "getTemperature", - Description: "Get the temperature for a location", - Parameters: map[string]any{ - "type": "object", - "properties": map[string]any{ - "location": map[string]any{ - "type": "string", - "description": "The location to get temperature for", - }, - "unit": map[string]any{ - "type": "string", - "description": "Temperature unit (celsius or fahrenheit)", - "enum": []string{"celsius", "fahrenheit"}, - }, - }, - "required": []string{"location"}, - }, - }, - }, - } - content := []llms.MessageContent{ - { - Role: llms.ChatMessageTypeHuman, - Parts: []llms.ContentPart{ - llms.TextPart("What's the temperature in Tokyo?"), - }, - }, - } - - resp, err := llm.GenerateContent( - t.Context(), - content, - llms.WithTools(tools), - ) - - require.NoError(t, err) - require.NotNil(t, resp) - assert.NotEmpty(t, resp.Choices) - - // Check if tool call was made - if len(resp.Choices[0].ToolCalls) > 0 { - toolCall := resp.Choices[0].ToolCalls[0] - assert.Equal(t, "getTemperature", toolCall.FunctionCall.Name) - assert.Contains(t, toolCall.FunctionCall.Arguments, "Tokyo") - } + assert.Contains(t, *seen, "-aiplatform.googleapis.com/", + "the door must reach Vertex, not the Gemini API") + assert.Contains(t, *seen, "/projects/hotel-desk/locations/europe-west4/") + require.Len(t, resp.Choices, 1) + assert.Equal(t, "sixty rooms are free", resp.Choices[0].Content) + assert.Equal(t, 3, resp.Choices[0].GenerationInfo["PromptTokens"]) } -func TestVertexWithJSONMode(t *testing.T) { +func TestVertexEmbedsThroughTheSameBackend(t *testing.T) { t.Parallel() - llm := newHTTPRRClient(t) - - content := []llms.MessageContent{ - { - Role: llms.ChatMessageTypeHuman, - Parts: []llms.ContentPart{ - llms.TextPart("List three animals as a JSON array"), - }, - }, - } - - resp, err := llm.GenerateContent( - t.Context(), - content, - llms.WithJSONMode(), - ) + llm, seen := vertexAgainstALocalServer(t, + `{"predictions":[{"embeddings":{"values":[0.1,0.2]}}],`+ + `"embeddings":[{"values":[0.1,0.2]}]}`) + embeddings, err := llm.CreateEmbedding(context.Background(), []string{"a room"}) require.NoError(t, err) - require.NotNil(t, resp) - assert.NotEmpty(t, resp.Choices) - // Response should be valid JSON - assert.Contains(t, resp.Choices[0].Content, "[") - assert.Contains(t, resp.Choices[0].Content, "]") + require.Len(t, embeddings, 1) + assert.Equal(t, []float32{0.1, 0.2}, embeddings[0]) + assert.Contains(t, *seen, "-aiplatform.googleapis.com/", + "embeddings go to the same backend as generation, with no second client") } -func TestVertexMultiModalContent(t *testing.T) { - t.Parallel() - - llm := newHTTPRRClient(t) - - // Create a small test image data - imageData := []byte{0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A} // PNG header - - content := []llms.MessageContent{ - { - Role: llms.ChatMessageTypeHuman, - Parts: []llms.ContentPart{ - llms.BinaryPart("image/png", imageData), - llms.TextPart("Describe this image"), - }, - }, - } - - resp, err := llm.GenerateContent( - t.Context(), - content, - llms.WithModel("gemini-pro-vision"), - ) +func vertexRequestBody(t *testing.T, call ...llms.CallOption) map[string]any { + t.Helper() + var got string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + got = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"candidates":[{"content":{"role":"model","parts":[{"text":"ok"}]},`+ + `"finishReason":"STOP"}],"usageMetadata":{"promptTokenCount":1,"candidatesTokenCount":1,"totalTokenCount":2}}`) + })) + t.Cleanup(srv.Close) + + seen := new(string) + llm, err := vertex.New(context.Background(), + googleai.WithCloudProject("hotel-desk"), googleai.WithCloudLocation("europe-west4"), + googleai.WithDefaultModel("gemini-2.5-flash"), + googleai.WithHTTPClient(&http.Client{ + Transport: &toLocalServer{host: srv.Listener.Addr().String(), seen: seen}, + })) require.NoError(t, err) - require.NotNil(t, resp) - assert.NotEmpty(t, resp.Choices) -} - -func TestVertexBatchEmbedding(t *testing.T) { - t.Parallel() - - llm := newHTTPRRClient(t) - - // Test with more than 100 texts to trigger batching - texts := make([]string, 105) - for i := range texts { - texts[i] = "vertex text " + string(rune('a'+i%26)) - } - - embeddings, err := llm.CreateEmbedding(t.Context(), texts) + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, call...) require.NoError(t, err) - assert.Len(t, embeddings, 105) - for i, emb := range embeddings { - assert.NotEmpty(t, emb, "embedding at index %d should not be empty", i) - } -} - -func TestVertexWithHarmThreshold(t *testing.T) { - t.Parallel() - - llm := newHTTPRRClient(t, - googleai.WithHarmThreshold(googleai.HarmBlockLowAndAbove), - ) - content := []llms.MessageContent{ - { - Role: llms.ChatMessageTypeHuman, - Parts: []llms.ContentPart{ - llms.TextPart("Tell me about content moderation"), - }, - }, - } - - resp, err := llm.GenerateContent(t.Context(), content) - require.NoError(t, err) - require.NotNil(t, resp) - assert.NotEmpty(t, resp.Choices) + var body map[string]any + require.NoError(t, json.Unmarshal([]byte(got), &body)) + return body } -func TestVertexToolCallResponse(t *testing.T) { +func TestVertexCarriesTheThinkingBudgetTheCallerAskedFor(t *testing.T) { t.Parallel() - llm := newHTTPRRClient(t) - - tools := []llms.Tool{ - { - Type: "function", - Function: &llms.FunctionDefinition{ - Name: "multiply", - Description: "Multiply two numbers", - Parameters: map[string]any{ - "type": "object", - "properties": map[string]any{ - "a": map[string]any{ - "type": "number", - "description": "First number", - }, - "b": map[string]any{ - "type": "number", - "description": "Second number", - }, - }, - "required": []string{"a", "b"}, - }, - }, - }, - } - - // Initial request - content := []llms.MessageContent{ - { - Role: llms.ChatMessageTypeHuman, - Parts: []llms.ContentPart{ - llms.TextPart("What is 12 times 8?"), - }, - }, - } + body := vertexRequestBody(t, llms.WithReasoning(llms.ReasoningNone, 2048)) - resp1, err := llm.GenerateContent( - t.Context(), - content, - llms.WithTools(tools), - ) - require.NoError(t, err) - require.NotNil(t, resp1) - - // If tool was called, send back response - if len(resp1.Choices[0].ToolCalls) > 0 { - // Add assistant's tool call to history - content = append(content, llms.MessageContent{ - Role: llms.ChatMessageTypeAI, - Parts: []llms.ContentPart{resp1.Choices[0].ToolCalls[0]}, - }) - - // Add tool response - content = append(content, llms.MessageContent{ - Role: llms.ChatMessageTypeTool, - Parts: []llms.ContentPart{ - llms.ToolCallResponse{ - Name: resp1.Choices[0].ToolCalls[0].FunctionCall.Name, - Content: "96", - }, - }, - }) - - // Get final response - resp2, err := llm.GenerateContent( - t.Context(), - content, - llms.WithTools(tools), - ) - require.NoError(t, err) - require.NotNil(t, resp2) - assert.Contains(t, resp2.Choices[0].Content, "96") - } + config, ok := body["generationConfig"].(map[string]any) + require.True(t, ok) + thinking, ok := config["thinkingConfig"].(map[string]any) + require.True(t, ok, "the door used to accept a thinking request and send nothing") + assert.Equal(t, float64(2048), thinking["thinkingBudget"]) } -func TestVertexWithResponseMIMEType(t *testing.T) { +func TestVertexCarriesTheToolChoiceTheCallerAskedFor(t *testing.T) { t.Parallel() - llm := newHTTPRRClient(t) - - content := []llms.MessageContent{ - { - Role: llms.ChatMessageTypeHuman, - Parts: []llms.ContentPart{ - llms.TextPart("Return a JSON object with name and age fields"), + tools := []llms.Tool{{ + Type: "function", + Function: &llms.FunctionDefinition{ + Name: "rooms_free", + Description: "how many rooms are free", + Parameters: map[string]any{ + "type": "object", + "properties": map[string]any{"floor": map[string]any{"type": "integer"}}, }, }, - } + }} - resp, err := llm.GenerateContent( - t.Context(), - content, - llms.WithResponseMIMEType("application/json"), - ) + body := vertexRequestBody(t, llms.WithTools(tools), llms.WithToolChoice("required")) - require.NoError(t, err) - require.NotNil(t, resp) - assert.NotEmpty(t, resp.Choices) - // Response should be valid JSON - assert.Contains(t, resp.Choices[0].Content, "{") - assert.Contains(t, resp.Choices[0].Content, "}") -} - -func TestVertexErrorOnConflictingOptions(t *testing.T) { - t.Parallel() - - llm := newHTTPRRClient(t) - - content := []llms.MessageContent{ - { - Role: llms.ChatMessageTypeHuman, - Parts: []llms.ContentPart{ - llms.TextPart("Hello"), - }, - }, - } - - // Should error when both JSONMode and ResponseMIMEType are set - _, err := llm.GenerateContent( - t.Context(), - content, - llms.WithJSONMode(), - llms.WithResponseMIMEType("application/json"), - ) - - assert.Error(t, err) - assert.Contains(t, err.Error(), "conflicting options") + config, ok := body["toolConfig"].(map[string]any) + require.True(t, ok, "the door used to convert the tools and drop the choice") + calling, ok := config["functionCallingConfig"].(map[string]any) + require.True(t, ok) + assert.Equal(t, "ANY", calling["mode"]) } diff --git a/llms/googleai/vertex/vertex_unit_test.go b/llms/googleai/vertex/vertex_unit_test.go deleted file mode 100644 index 79769a013..000000000 --- a/llms/googleai/vertex/vertex_unit_test.go +++ /dev/null @@ -1,721 +0,0 @@ -package vertex - -import ( - "encoding/json" - "strings" - "testing" - - "github.com/vxcontrol/langchaingo/llms" - - "cloud.google.com/go/vertexai/genai" -) - -func TestConvertToolSchemaType(t *testing.T) { - tests := []struct { - name string - input string - expected genai.Type - }{ - {"object type", "object", genai.TypeObject}, - {"string type", "string", genai.TypeString}, - {"number type", "number", genai.TypeNumber}, - {"integer type", "integer", genai.TypeInteger}, - {"boolean type", "boolean", genai.TypeBoolean}, - {"array type", "array", genai.TypeArray}, - {"unknown type", "unknown", genai.TypeUnspecified}, - {"empty type", "", genai.TypeUnspecified}, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - result := convertToolSchemaType(tt.input) - if result != tt.expected { - t.Errorf("convertToolSchemaType(%q) = %v, want %v", tt.input, result, tt.expected) - } - }) - } -} - -func TestConvertParts(t *testing.T) { //nolint:funlen // comprehensive test //nolint:funlen // comprehensive test - tests := []struct { - name string - parts []llms.ContentPart - wantErr bool - check func(t *testing.T, result []genai.Part) - }{ - { - name: "text content", - parts: []llms.ContentPart{ - llms.TextContent{Text: "Hello, world!"}, - }, - wantErr: false, - check: func(t *testing.T, result []genai.Part) { - if len(result) != 1 { - t.Fatalf("expected 1 part, got %d", len(result)) - } - text, ok := result[0].(genai.Text) - if !ok { - t.Fatalf("expected genai.Text, got %T", result[0]) - } - if string(text) != "Hello, world!" { - t.Errorf("expected text 'Hello, world!', got %q", text) - } - }, - }, - { - name: "binary content", - parts: []llms.ContentPart{ - llms.BinaryContent{ - MIMEType: "image/png", - Data: []byte{0x89, 0x50, 0x4E, 0x47}, - }, - }, - wantErr: false, - check: func(t *testing.T, result []genai.Part) { - if len(result) != 1 { - t.Fatalf("expected 1 part, got %d", len(result)) - } - blob, ok := result[0].(genai.Blob) - if !ok { - t.Fatalf("expected genai.Blob, got %T", result[0]) - } - if blob.MIMEType != "image/png" { - t.Errorf("expected MIME type 'image/png', got %q", blob.MIMEType) - } - if len(blob.Data) != 4 { - t.Errorf("expected data length 4, got %d", len(blob.Data)) - } - }, - }, - { - name: "tool call", - parts: []llms.ContentPart{ - llms.ToolCall{ - FunctionCall: &llms.FunctionCall{ - Name: "test_function", - Arguments: `{"arg1": "value1", "arg2": 42}`, - }, - }, - }, - wantErr: false, - check: func(t *testing.T, result []genai.Part) { - if len(result) != 1 { - t.Fatalf("expected 1 part, got %d", len(result)) - } - fc, ok := result[0].(genai.FunctionCall) - if !ok { - t.Fatalf("expected genai.FunctionCall, got %T", result[0]) - } - if fc.Name != "test_function" { - t.Errorf("expected function name 'test_function', got %q", fc.Name) - } - if fc.Args["arg1"] != "value1" { - t.Errorf("expected arg1='value1', got %v", fc.Args["arg1"]) - } - if fc.Args["arg2"] != float64(42) { // JSON unmarshals numbers as float64 - t.Errorf("expected arg2=42, got %v", fc.Args["arg2"]) - } - }, - }, - { - name: "tool call response", - parts: []llms.ContentPart{ - llms.ToolCallResponse{ - Name: "test_function", - Content: "Function executed successfully", - }, - }, - wantErr: false, - check: func(t *testing.T, result []genai.Part) { - if len(result) != 1 { - t.Fatalf("expected 1 part, got %d", len(result)) - } - fr, ok := result[0].(genai.FunctionResponse) - if !ok { - t.Fatalf("expected genai.FunctionResponse, got %T", result[0]) - } - if fr.Name != "test_function" { - t.Errorf("expected function name 'test_function', got %q", fr.Name) - } - response, ok := fr.Response["response"].(string) - if !ok { - t.Fatalf("expected response string, got %T", fr.Response["response"]) - } - if response != "Function executed successfully" { - t.Errorf("expected response content, got %q", response) - } - }, - }, - { - name: "invalid tool call JSON", - parts: []llms.ContentPart{ - llms.ToolCall{ - FunctionCall: &llms.FunctionCall{ - Name: "test_function", - Arguments: `invalid json`, - }, - }, - }, - wantErr: true, - }, - { - name: "multiple mixed parts", - parts: []llms.ContentPart{ - llms.TextContent{Text: "First part"}, - llms.TextContent{Text: "Second part"}, - llms.BinaryContent{MIMEType: "image/jpeg", Data: []byte{0xFF, 0xD8}}, - }, - wantErr: false, - check: func(t *testing.T, result []genai.Part) { - if len(result) != 3 { - t.Fatalf("expected 3 parts, got %d", len(result)) - } - if text, ok := result[0].(genai.Text); !ok || string(text) != "First part" { - t.Errorf("expected first part to be 'First part', got %v", result[0]) - } - if text, ok := result[1].(genai.Text); !ok || string(text) != "Second part" { - t.Errorf("expected second part to be 'Second part', got %v", result[1]) - } - if blob, ok := result[2].(genai.Blob); !ok || blob.MIMEType != "image/jpeg" { - t.Errorf("expected third part to be image/jpeg blob, got %v", result[2]) - } - }, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - result, err := convertParts(tt.parts) - if (err != nil) != tt.wantErr { - t.Errorf("convertParts() error = %v, wantErr %v", err, tt.wantErr) - return - } - if !tt.wantErr && tt.check != nil { - tt.check(t, result) - } - }) - } -} - -func TestConvertContent(t *testing.T) { //nolint:funlen // comprehensive test //nolint:funlen // comprehensive test - tests := []struct { - name string - content llms.MessageContent - wantErr bool - expectedRole string - }{ - { - name: "system message", - content: llms.MessageContent{ - Role: llms.ChatMessageTypeSystem, - Parts: []llms.ContentPart{ - llms.TextContent{Text: "You are a helpful assistant"}, - }, - }, - expectedRole: RoleSystem, - }, - { - name: "AI message", - content: llms.MessageContent{ - Role: llms.ChatMessageTypeAI, - Parts: []llms.ContentPart{ - llms.TextContent{Text: "I'm here to help"}, - }, - }, - expectedRole: RoleModel, - }, - { - name: "human message", - content: llms.MessageContent{ - Role: llms.ChatMessageTypeHuman, - Parts: []llms.ContentPart{ - llms.TextContent{Text: "Hello"}, - }, - }, - expectedRole: RoleUser, - }, - { - name: "generic message", - content: llms.MessageContent{ - Role: llms.ChatMessageTypeGeneric, - Parts: []llms.ContentPart{ - llms.TextContent{Text: "Generic message"}, - }, - }, - expectedRole: RoleUser, - }, - { - name: "tool message", - content: llms.MessageContent{ - Role: llms.ChatMessageTypeTool, - Parts: []llms.ContentPart{ - llms.TextContent{Text: "Tool response"}, - }, - }, - expectedRole: RoleUser, - }, - { - name: "unsupported function role", - content: llms.MessageContent{ - Role: llms.ChatMessageTypeFunction, - Parts: []llms.ContentPart{ - llms.TextContent{Text: "Function message"}, - }, - }, - wantErr: true, - }, - { - name: "unsupported custom role", - content: llms.MessageContent{ - Role: llms.ChatMessageType("custom"), - Parts: []llms.ContentPart{ - llms.TextContent{Text: "Custom message"}, - }, - }, - wantErr: true, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - result, err := convertContent(tt.content) - if (err != nil) != tt.wantErr { - t.Errorf("convertContent() error = %v, wantErr %v", err, tt.wantErr) - return - } - if !tt.wantErr { - if result.Role != tt.expectedRole { - t.Errorf("expected role %q, got %q", tt.expectedRole, result.Role) - } - if len(result.Parts) != len(tt.content.Parts) { - t.Errorf("expected %d parts, got %d", len(tt.content.Parts), len(result.Parts)) - } - } - }) - } -} - -func TestConvertCandidates(t *testing.T) { //nolint:funlen // comprehensive test //nolint:funlen // comprehensive test - tests := []struct { - name string - candidates []*genai.Candidate - usage *genai.UsageMetadata - wantErr bool - check func(t *testing.T, result *llms.ContentResponse) - }{ - { - name: "single text candidate", - candidates: []*genai.Candidate{ - { - Content: &genai.Content{ - Parts: []genai.Part{ - genai.Text("Response text"), - }, - }, - FinishReason: genai.FinishReasonStop, - }, - }, - check: func(t *testing.T, result *llms.ContentResponse) { - if len(result.Choices) != 1 { - t.Fatalf("expected 1 choice, got %d", len(result.Choices)) - } - if result.Choices[0].Content != "Response text" { - t.Errorf("expected content 'Response text', got %q", result.Choices[0].Content) - } - // The FinishReason.String() method returns the full enum name - if result.Choices[0].StopReason != "FinishReasonStop" { - t.Errorf("expected stop reason 'FinishReasonStop', got %q", result.Choices[0].StopReason) - } - }, - }, - { - name: "multiple text parts", - candidates: []*genai.Candidate{ - { - Content: &genai.Content{ - Parts: []genai.Part{ - genai.Text("Part 1"), - genai.Text(" Part 2"), - }, - }, - }, - }, - check: func(t *testing.T, result *llms.ContentResponse) { - if result.Choices[0].Content != "Part 1 Part 2" { - t.Errorf("expected concatenated content, got %q", result.Choices[0].Content) - } - }, - }, - { - name: "function call candidate", - candidates: []*genai.Candidate{ - { - Content: &genai.Content{ - Parts: []genai.Part{ - genai.FunctionCall{ - Name: "test_function", - Args: map[string]any{"x": 1, "y": 2}, - }, - }, - }, - }, - }, - check: func(t *testing.T, result *llms.ContentResponse) { - if len(result.Choices[0].ToolCalls) != 1 { - t.Fatalf("expected 1 tool call, got %d", len(result.Choices[0].ToolCalls)) - } - tc := result.Choices[0].ToolCalls[0] - if tc.FunctionCall.Name != "test_function" { - t.Errorf("expected function name 'test_function', got %q", tc.FunctionCall.Name) - } - var args map[string]any - if err := json.Unmarshal([]byte(tc.FunctionCall.Arguments), &args); err != nil { - t.Fatalf("failed to unmarshal arguments: %v", err) - } - if args["x"] != float64(1) || args["y"] != float64(2) { - t.Errorf("expected args {x:1, y:2}, got %v", args) - } - }, - }, - { - name: "with usage metadata", - candidates: []*genai.Candidate{ - { - Content: &genai.Content{ - Parts: []genai.Part{genai.Text("Response")}, - }, - }, - }, - usage: &genai.UsageMetadata{ - PromptTokenCount: 10, - CandidatesTokenCount: 5, - TotalTokenCount: 15, - }, - check: func(t *testing.T, result *llms.ContentResponse) { - metadata := result.Choices[0].GenerationInfo - if metadata["input_tokens"] != int32(10) { - t.Errorf("expected input_tokens=10, got %v", metadata["input_tokens"]) - } - if metadata["output_tokens"] != int32(5) { - t.Errorf("expected output_tokens=5, got %v", metadata["output_tokens"]) - } - if metadata["total_tokens"] != int32(15) { - t.Errorf("expected total_tokens=15, got %v", metadata["total_tokens"]) - } - }, - }, - { - name: "with safety ratings and citations", - candidates: []*genai.Candidate{ - { - Content: &genai.Content{ - Parts: []genai.Part{genai.Text("Safe response")}, - }, - SafetyRatings: []*genai.SafetyRating{ - {Category: genai.HarmCategoryHateSpeech, Probability: genai.HarmProbabilityLow}, - }, - CitationMetadata: &genai.CitationMetadata{ - Citations: []*genai.Citation{ - {URI: "https://example.com"}, - }, - }, - }, - }, - check: func(t *testing.T, result *llms.ContentResponse) { - metadata := result.Choices[0].GenerationInfo - if metadata[SAFETY] == nil { - t.Error("expected safety ratings in metadata") - } - if metadata[CITATIONS] == nil { - t.Error("expected citations in metadata") - } - }, - }, - // Note: We can't test unknown part types easily because genai.Part - // has an unexported method, so we can't create a mock implementation - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - result, err := convertCandidates(tt.candidates, tt.usage) - if (err != nil) != tt.wantErr { - t.Errorf("convertCandidates() error = %v, wantErr %v", err, tt.wantErr) - return - } - if !tt.wantErr && tt.check != nil { - tt.check(t, result) - } - }) - } -} - -// Note: We cannot create a custom type that implements genai.Part -// because it has an unexported method toPart() - -func TestConvertTools(t *testing.T) { //nolint:funlen // comprehensive test //nolint:funlen // comprehensive test - tests := []struct { - name string - tools []llms.Tool - wantErr bool - check func(t *testing.T, result []*genai.Tool) - }{ - { - name: "single function tool", - tools: []llms.Tool{ - { - Type: "function", - Function: &llms.FunctionDefinition{ - Name: "get_weather", - Description: "Get weather information", - Parameters: map[string]any{ - "type": "object", - "properties": map[string]any{ - "location": map[string]any{ - "type": "string", - "description": "The city name", - }, - "unit": map[string]any{ - "type": "string", - "description": "Temperature unit", - }, - }, - "required": []string{"location"}, - }, - }, - }, - }, - check: func(t *testing.T, result []*genai.Tool) { - if len(result) != 1 { - t.Fatalf("expected 1 tool, got %d", len(result)) - } - if len(result[0].FunctionDeclarations) != 1 { - t.Fatalf("expected 1 function declaration, got %d", len(result[0].FunctionDeclarations)) - } - fd := result[0].FunctionDeclarations[0] - if fd.Name != "get_weather" { - t.Errorf("expected function name 'get_weather', got %q", fd.Name) - } - if fd.Description != "Get weather information" { - t.Errorf("expected description, got %q", fd.Description) - } - if fd.Parameters.Type != genai.TypeObject { - t.Errorf("expected object type, got %v", fd.Parameters.Type) - } - if len(fd.Parameters.Properties) != 2 { - t.Errorf("expected 2 properties, got %d", len(fd.Parameters.Properties)) - } - if fd.Parameters.Properties["location"].Type != genai.TypeString { - t.Errorf("expected location to be string type") - } - if len(fd.Parameters.Required) != 1 || fd.Parameters.Required[0] != "location" { - t.Errorf("expected required=['location'], got %v", fd.Parameters.Required) - } - }, - }, - { - name: "unsupported tool type", - tools: []llms.Tool{ - { - Type: "unsupported", - Function: &llms.FunctionDefinition{ - Name: "test", - }, - }, - }, - wantErr: true, - }, - { - name: "invalid parameters type", - tools: []llms.Tool{ - { - Type: "function", - Function: &llms.FunctionDefinition{ - Name: "test", - Parameters: "invalid", - }, - }, - }, - wantErr: true, - }, - { - name: "invalid properties type", - tools: []llms.Tool{ - { - Type: "function", - Function: &llms.FunctionDefinition{ - Name: "test", - Parameters: map[string]any{ - "type": "object", - "properties": "invalid", - }, - }, - }, - }, - wantErr: true, - }, - { - name: "required as interface slice", - tools: []llms.Tool{ - { - Type: "function", - Function: &llms.FunctionDefinition{ - Name: "test", - Parameters: map[string]any{ - "type": "object", - "properties": map[string]any{ - "field": map[string]any{"type": "string"}, - }, - "required": []interface{}{"field"}, - }, - }, - }, - }, - check: func(t *testing.T, result []*genai.Tool) { - fd := result[0].FunctionDeclarations[0] - if len(fd.Parameters.Required) != 1 || fd.Parameters.Required[0] != "field" { - t.Errorf("expected required=['field'], got %v", fd.Parameters.Required) - } - }, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - result, err := convertTools(tt.tools) - if (err != nil) != tt.wantErr { - t.Errorf("convertTools() error = %v, wantErr %v", err, tt.wantErr) - return - } - if !tt.wantErr && tt.check != nil { - tt.check(t, result) - } - }) - } -} - -func TestShowContent(t *testing.T) { - // This is mainly for coverage - just ensure it doesn't panic - var buf strings.Builder - contents := []*genai.Content{ - { - Role: "user", - Parts: []genai.Part{ - genai.Text("Hello"), - genai.Blob{MIMEType: "image/png", Data: []byte{1, 2, 3}}, - genai.FunctionCall{Name: "test", Args: map[string]any{"x": 1}}, - genai.FunctionResponse{Name: "test", Response: map[string]any{"result": "ok"}}, - }, - }, - } - - // Should not panic - showContent(&buf, contents) - - output := buf.String() - if !strings.Contains(output, "Role=user") { - t.Error("expected output to contain role") - } - if !strings.Contains(output, "Text \"Hello\"") { - t.Error("expected output to contain text") - } - if !strings.Contains(output, "Blob MIME=\"image/png\"") { - t.Error("expected output to contain blob info") - } - if !strings.Contains(output, "FunctionCall Name=test") { - t.Error("expected output to contain function call") - } - if !strings.Contains(output, "FunctionResponse Name=test") { - t.Error("expected output to contain function response") - } -} - -func TestErrorValues(t *testing.T) { - // Test that error variables are properly defined - if ErrNoContentInResponse == nil { - t.Error("ErrNoContentInResponse should not be nil") - } - if ErrUnknownPartInResponse == nil { - t.Error("ErrUnknownPartInResponse should not be nil") - } - if ErrInvalidMimeType == nil { - t.Error("ErrInvalidMimeType should not be nil") - } - - // Test error messages - if !strings.Contains(ErrNoContentInResponse.Error(), "no content") { - t.Error("ErrNoContentInResponse should mention 'no content'") - } - if !strings.Contains(ErrUnknownPartInResponse.Error(), "unknown part") { - t.Error("ErrUnknownPartInResponse should mention 'unknown part'") - } - if !strings.Contains(ErrInvalidMimeType.Error(), "invalid mime") { - t.Error("ErrInvalidMimeType should mention 'invalid mime'") - } -} - -func TestConstants(t *testing.T) { - // Test that constants have expected values - tests := []struct { - name string - constant string - expected string - }{ - {"CITATIONS", CITATIONS, "citations"}, - {"SAFETY", SAFETY, "safety"}, - {"RoleSystem", RoleSystem, "system"}, - {"RoleModel", RoleModel, "model"}, - {"RoleUser", RoleUser, "user"}, - {"RoleTool", RoleTool, "tool"}, - {"ResponseMIMETypeJson", ResponseMIMETypeJson, "application/json"}, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if tt.constant != tt.expected { - t.Errorf("expected %s to be %q, got %q", tt.name, tt.expected, tt.constant) - } - }) - } -} - -func TestConvertAndStreamFromIterator(t *testing.T) { - // Skip actual implementation tests since we can't create a real iterator - // These tests would need integration with the actual genai package - t.Skip("Skipping iterator tests - requires real genai.GenerateContentResponseIterator") -} - -// A stream whose finish reason arrives on a trailing content-less chunk must still -// carry that reason onto the accumulated candidate, so structured-output -// validation runs on a normal STOP instead of being silently skipped. -func TestMergeStreamCandidateCarriesFinishReasonOnContentlessChunk(t *testing.T) { - t.Parallel() - - acc := &genai.Candidate{Content: &genai.Content{}} - - // First chunk: content, not yet finished. - contentChunk := &genai.Candidate{ - Content: &genai.Content{Role: "model", Parts: []genai.Part{genai.Text(`{"x":"hi"}`)}}, - FinishReason: genai.FinishReasonUnspecified, - } - if !mergeStreamCandidate(acc, contentChunk) { - t.Fatal("content chunk must report content to append") - } - - // Final chunk: no content, only the finish reason. - finalChunk := &genai.Candidate{FinishReason: genai.FinishReasonStop} - if mergeStreamCandidate(acc, finalChunk) { - t.Fatal("content-less chunk must report no content (end of stream)") - } - - if acc.FinishReason != genai.FinishReasonStop { - t.Fatalf("finish reason = %v, want STOP", acc.FinishReason) - } - if len(acc.Content.Parts) != 1 { - t.Fatalf("accumulated parts = %d, want 1", len(acc.Content.Parts)) - } -} - -// Test that Vertex implements llms.Model interface -func TestVertexImplementsModel(t *testing.T) { - var _ llms.Model = &Vertex{} -} diff --git a/llms/googleai/vertex_backend_test.go b/llms/googleai/vertex_backend_test.go new file mode 100644 index 000000000..246acd294 --- /dev/null +++ b/llms/googleai/vertex_backend_test.go @@ -0,0 +1,122 @@ +package googleai + +import ( + "context" + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func vertexCall(t *testing.T, call ...llms.CallOption) (string, map[string]any, *llms.ContentResponse) { + t.Helper() + + var gotURL, gotBody string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + gotURL, gotBody = r.URL.String(), string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"candidates":[{"content":{"role":"model","parts":[{"text":"sixty rooms are free"}]},`+ + `"finishReason":"STOP"}],"usageMetadata":{"promptTokenCount":3,"candidatesTokenCount":5,"totalTokenCount":8}}`) + })) + t.Cleanup(srv.Close) + + llm, err := New(context.Background(), + WithCloudProject("hotel-desk"), + WithCloudLocation("europe-west4"), + WithDefaultModel("gemini-2.5-flash"), + WithHTTPClient(&http.Client{Transport: &toLocalServer{host: srv.Listener.Addr().String()}})) + require.NoError(t, err) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, call...) + require.NoError(t, err) + + var body map[string]any + require.NoError(t, json.Unmarshal([]byte(gotBody), &body)) + return gotURL, body, resp +} + +type toLocalServer struct { + host string +} + +func (t *toLocalServer) RoundTrip(req *http.Request) (*http.Response, error) { + req.URL.Scheme = "http" + req.URL.Host = t.host + return http.DefaultTransport.RoundTrip(req) +} + +func TestTheVertexBackendAddressesTheProjectTheCallerNamed(t *testing.T) { + t.Parallel() + + got, _, resp := vertexCall(t) + + assert.Contains(t, got, "/projects/hotel-desk/locations/europe-west4/", + "the project and location the caller gave decide the address") + assert.Contains(t, got, "/publishers/google/models/gemini-2.5-flash:generateContent", + "the model reaches the vendor's own path shape") + + require.Len(t, resp.Choices, 1) + assert.Equal(t, "sixty rooms are free", resp.Choices[0].Content) + assert.Equal(t, 3, resp.Choices[0].GenerationInfo["PromptTokens"]) + assert.Equal(t, 5, resp.Choices[0].GenerationInfo["CompletionTokens"]) +} + +func TestTheVertexBackendCarriesAThinkingBudget(t *testing.T) { + t.Parallel() + + _, body, _ := vertexCall(t, llms.WithReasoning(llms.ReasoningNone, 2048)) + + config, ok := body["generationConfig"].(map[string]any) + require.True(t, ok, "the request carries a generation config") + thinking, ok := config["thinkingConfig"].(map[string]any) + require.True(t, ok, "a caller that asked for a budget gets a thinking config on the wire") + assert.Equal(t, float64(2048), thinking["thinkingBudget"], + "the budget the caller named is the budget the vendor is told") +} + +func TestTheVertexBackendCarriesTheToolChoice(t *testing.T) { + t.Parallel() + + tools := []llms.Tool{{ + Type: "function", + Function: &llms.FunctionDefinition{ + Name: "rooms_free", + Description: "how many rooms are free", + Parameters: map[string]any{ + "type": "object", + "properties": map[string]any{"floor": map[string]any{"type": "integer"}}, + }, + }, + }} + + _, body, _ := vertexCall(t, llms.WithTools(tools), llms.WithToolChoice("required")) + + config, ok := body["toolConfig"].(map[string]any) + require.True(t, ok, "a caller that required a tool gets a tool config on the wire") + calling, ok := config["functionCallingConfig"].(map[string]any) + require.True(t, ok) + assert.Equal(t, "ANY", calling["mode"], + "required means the vendor's ANY, not the default AUTO") +} + +func TestTheVertexBackendCarriesBothPenalties(t *testing.T) { + t.Parallel() + + _, body, _ := vertexCall(t, + llms.WithFrequencyPenalty(0.7), llms.WithPresencePenalty(0.4)) + + config, ok := body["generationConfig"].(map[string]any) + require.True(t, ok, "the request carries a generation config") + assert.InDelta(t, 0.7, config["frequencyPenalty"], 1e-6, + "the frequency penalty the caller named reaches the vendor") + assert.InDelta(t, 0.4, config["presencePenalty"], 1e-6, + "the presence penalty the caller named reaches the vendor") +} diff --git a/llms/googleai/warnings.go b/llms/googleai/warnings.go new file mode 100644 index 000000000..5a38a39b4 --- /dev/null +++ b/llms/googleai/warnings.go @@ -0,0 +1,104 @@ +package googleai + +import ( + "strconv" + "strings" + + "google.golang.org/genai" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func reportGoogleAIOptions(warn *llms.Warnings, model string, opts llms.CallOptions, tc *genai.ThinkingConfig) { + warn.AddUnreadExtraBody(model, opts, extraBodyUnread) + + if opts.N != nil && *opts.N != 1 { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithN", Model: model, + Asked: strconv.Itoa(*opts.N), + Reason: "the door sends candidate_count and never reads n", + }) + } + warn.AddUnreadOptions(model, opts, "the door's generation config has no field to set", + "WithTopK", "WithCandidateCount", "WithSeed", "WithN", + "WithFrequencyPenalty", "WithPresencePenalty", "WithResponseMIMEType", "WithJSONMode") + reportGoogleAIThinking(warn, model, opts, tc) +} + +func reportGoogleAIThinking(warn *llms.Warnings, model string, opts llms.CallOptions, tc *genai.ThinkingConfig) { + cfg := opts.Reasoning + if cfg == nil { + return + } + if cfg.ResolveMode() == llms.ReasoningOff { + reportGoogleAIDisableFloor(warn, model, tc) + return + } + if cfg.ResolveMode() != llms.ReasoningOn { + return + } + if !reasoning.GeminiSupportsThinking(model) { + asked := string(cfg.GetEffort(opts.GetMaxTokens())) + if cfg.HasExplicitTokens() { + asked = strconv.Itoa(cfg.Tokens) + " tokens" + } + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithReasoning", Model: model, + Asked: asked, Reason: "this model does not think, so the door sends no thinking config", + }) + return + } + + if reasoning.GeminiTogglesThinkingByLevel(model) { + sent := string(genai.ThinkingLevelHigh) + asked := string(cfg.GetEffort(opts.GetMaxTokens())) + if cfg.HasExplicitTokens() { + asked = strconv.Itoa(cfg.Tokens) + " tokens" + } + if !strings.EqualFold(asked, sent) { + warn.Add(llms.Warning{ + Kind: llms.WarningSubstitute, Option: "WithReasoning", Model: model, + Asked: asked, Sent: sent, + Reason: "the door drives this family by thinking level and sends its top level whatever was asked", + }) + } + return + } + + if tc != nil && tc.ThinkingLevel != "" { + asked := string(cfg.GetEffort(opts.GetMaxTokens())) + if cfg.Effort != "" && !strings.EqualFold(asked, string(tc.ThinkingLevel)) { + warn.Add(llms.Warning{ + Kind: llms.WarningSubstitute, Option: "WithReasoning", Model: model, + Asked: asked, Sent: string(tc.ThinkingLevel), + Reason: "the door sends only the thinking levels it records this model as accepting", + }) + } + return + } + + if !cfg.HasExplicitTokens() || tc == nil || tc.ThinkingBudget == nil { + return + } + if sent := int(*tc.ThinkingBudget); sent != cfg.Tokens { + warn.Add(llms.Warning{ + Kind: llms.WarningClamp, Option: "WithReasoning", Model: model, + Asked: strconv.Itoa(cfg.Tokens), Sent: strconv.Itoa(sent), + Reason: "the thinking budget is held inside the model's range and below two thirds of the answer limit", + }) + } +} + +func reportGoogleAIDisableFloor(warn *llms.Warnings, model string, tc *genai.ThinkingConfig) { + if tc == nil || tc.ThinkingLevel == "" || reasoning.GeminiTogglesThinkingByLevel(model) { + return + } + warn.Add(llms.Warning{ + Kind: llms.WarningSubstitute, Option: "WithReasoningDisabled", Model: model, + Asked: "off", Sent: strings.ToLower(string(tc.ThinkingLevel)), + Reason: "this model has no off switch, only a lowest thinking level", + }) +} + +const extraBodyUnread = "the door builds its request through a vendor SDK and has nowhere to merge them" diff --git a/llms/googleai/warnings_test.go b/llms/googleai/warnings_test.go new file mode 100644 index 000000000..3d95ad014 --- /dev/null +++ b/llms/googleai/warnings_test.go @@ -0,0 +1,190 @@ +package googleai + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func generateForWarnings(t *testing.T, model string, callOpts ...llms.CallOption) *llms.ContentResponse { + t.Helper() + + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"candidates":[{"content":{"role":"model","parts":[{"text":"hi"}]},`+ + `"finishReason":"STOP"}],"usageMetadata":{}}`) + })) + t.Cleanup(server.Close) + + llm, err := New(context.Background(), + WithAPIKey("unit-test-key"), WithEndpoint(server.URL), WithDefaultModel(model)) + require.NoError(t, err) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, callOpts...) + require.NoError(t, err) + return resp +} + +func googleWarningsByOption(warnings []llms.Warning) map[string]llms.Warning { + byOption := make(map[string]llms.Warning, len(warnings)) + for _, w := range warnings { + byOption[w.Option] = w + } + return byOption +} + +func TestOptionsThisDoorNeverReadsAreReported(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, "gemini-2.5-flash", + llms.WithN(3), llms.WithLogProbs(true), llms.WithTopLogProbs(2)) + + got := googleWarningsByOption(resp.Warnings) + for option, asked := range map[string]string{ + "WithN": "3", "WithLogProbs": "true", "WithTopLogProbs": "2", + } { + w, ok := got[option] + require.True(t, ok, "no %s warning in %v", option, resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, asked, w.Asked) + require.Equal(t, "gemini-2.5-flash", w.Model) + } +} + +func TestAThinkingBudgetCappedByTheAnswerLimitIsReported(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, "gemini-2.5-flash", + llms.WithMaxTokens(1000), llms.WithReasoning(llms.ReasoningHigh, 8000)) + + w, ok := googleWarningsByOption(resp.Warnings)["WithReasoning"] + require.True(t, ok, "no reasoning warning in %v", resp.Warnings) + require.Equal(t, llms.WarningClamp, w.Kind) + require.Equal(t, "8000", w.Asked) + require.Equal(t, "666", w.Sent) +} + +func TestAFamilyDrivenByLevelReportsTheLevelItSubstitutes(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, "gemma-4-27b-it", + llms.WithMaxTokens(4096), llms.WithReasoning(llms.ReasoningLow, 0)) + + w, ok := googleWarningsByOption(resp.Warnings)["WithReasoning"] + require.True(t, ok, "no reasoning warning in %v", resp.Warnings) + require.Equal(t, llms.WarningSubstitute, w.Kind) + require.Equal(t, "low", w.Asked) + require.Equal(t, "HIGH", w.Sent) +} + +func TestTheLevelThisFamilyRunsAtIsNotASubstitution(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, "gemma-4-27b-it", + llms.WithMaxTokens(4096), llms.WithReasoning(llms.ReasoningHigh, 0)) + + require.Empty(t, resp.Warnings, + "the caller asked for the level the door sends, so nothing was substituted") +} + +func TestAPlainGoogleCallCarriesNoWarnings(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, "gemini-2.5-flash", llms.WithTemperature(0.2)) + require.Empty(t, resp.Warnings) +} + +func TestSamplingOptionsWithNoGoogleFieldAreReported(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, "gemini-2.5-flash", + llms.WithMinP(0.05), llms.WithRepetitionPenalty(1.1)) + + got := googleWarningsByOption(resp.Warnings) + for option, asked := range map[string]string{ + "WithMinP": "0.05", "WithRepetitionPenalty": "1.1", + } { + w, ok := got[option] + require.True(t, ok, "no %s warning in %v", option, resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, asked, w.Asked) + } +} + +func TestAThinkingLevelTheModelDoesNotTakeIsReported(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, "gemini-3-pro-preview", + llms.WithMaxTokens(8192), llms.WithReasoning(llms.ReasoningMinimal, 0)) + + w, ok := googleWarningsByOption(resp.Warnings)["WithReasoning"] + require.True(t, ok, "no reasoning warning in %v", resp.Warnings) + require.Equal(t, llms.WarningSubstitute, w.Kind) + require.Equal(t, "minimal", w.Asked) + require.Equal(t, "LOW", w.Sent) +} + +func TestADisableThisModelCanOnlyApproximateIsReported(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gemini-3.6-flash", "gemini-3.5-flash-lite", "gemini-3-flash-preview"} { + resp := generateForWarnings(t, model, llms.WithReasoningDisabled()) + + w, ok := googleWarningsByOption(resp.Warnings)["WithReasoningDisabled"] + require.True(t, ok, "no disable warning for %s in %v", model, resp.Warnings) + require.Equal(t, llms.WarningSubstitute, w.Kind) + require.Equal(t, "off", w.Asked) + require.Equal(t, "minimal", w.Sent) + require.Equal(t, model, w.Model) + } +} + +func TestADisableThatReallyTurnsThinkingOffIsNotAWarning(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gemini-2.5-flash", "gemini-2.5-flash-lite"} { + resp := generateForWarnings(t, model, llms.WithReasoningDisabled()) + require.Empty(t, resp.Warnings, "%s takes budget zero, nothing is lost", model) + } +} + +func TestExtraBodyThisDoorCannotMergeIsReported(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, "gemini-2.5-flash", llms.WithExtraBody(map[string]any{"enable_thinking": false, "chat_template_kwargs": map[string]any{}})) + + w, ok := googleWarningsByOption(resp.Warnings)["WithExtraBody"] + require.True(t, ok, "no extra-body warning in %v", resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, "chat_template_kwargs, enable_thinking", w.Asked) +} + +func TestAskingAModelThatDoesNotThinkToThinkIsReported(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gemini-2.0-flash", "gemma-3-27b-it"} { + resp := generateForWarnings(t, model, llms.WithReasoning(llms.ReasoningHigh, 0)) + + w, ok := googleWarningsByOption(resp.Warnings)["WithReasoning"] + require.True(t, ok, "no warning for %s in %v", model, resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, "high", w.Asked) + } +} + +func TestDisablingThinkingOnAFamilyWhoseFloorIsOffIsNotAWarning(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gemma-4-31b-it", "gemma-4-26b-a4b-it", "models/gemma-4-31b-it"} { + resp := generateForWarnings(t, model, llms.WithReasoningDisabled()) + require.Empty(t, resp.Warnings, "%s: minimal is this family's off position", model) + } +} diff --git a/llms/huggingface/adaptive_delegation_test.go b/llms/huggingface/adaptive_delegation_test.go new file mode 100644 index 000000000..1fc2720ce --- /dev/null +++ b/llms/huggingface/adaptive_delegation_test.go @@ -0,0 +1,26 @@ +package huggingface + +import ( + "testing" + + "github.com/vxcontrol/langchaingo/llms" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestAnAdaptiveRequestWithNoEffortLeavesTheDepthToTheVendor(t *testing.T) { + t.Parallel() + + body := bodyOfCall(t, oneMessage(), llms.WithAdaptiveReasoning("")) + assert.NotContains(t, body, "reasoning_effort", + "the caller handed the depth to the model; inventing high spends its tokens") +} + +func TestAnAdaptiveRequestWithAnEffortStillCarriesIt(t *testing.T) { + t.Parallel() + + body := bodyOfCall(t, oneMessage(), llms.WithAdaptiveReasoning(llms.ReasoningLow)) + require.Contains(t, body, "reasoning_effort") + assert.Equal(t, "low", body["reasoning_effort"]) +} diff --git a/llms/huggingface/call_model_test.go b/llms/huggingface/call_model_test.go new file mode 100644 index 000000000..1cf2f12e1 --- /dev/null +++ b/llms/huggingface/call_model_test.go @@ -0,0 +1,56 @@ +package huggingface + +import ( + "context" + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func modelOnTheWire(t *testing.T, call ...llms.CallOption) string { + t.Helper() + + var raw []byte + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + raw, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"choices":[{"message":{"content":"hi"},"finish_reason":"stop"}]}`) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithToken("t"), WithURL(srv.URL), WithModel("gpt2")) + require.NoError(t, err) + + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, call...) + require.NoError(t, err) + + var body struct { + Model string `json:"model"` + } + require.NoError(t, json.Unmarshal(raw, &body)) + + return body.Model +} + +func TestTheModelOfTheCallReachesTheRequest(t *testing.T) { + t.Parallel() + + model := modelOnTheWire(t, llms.WithModel("meta-llama/Llama-3.1-8B-Instruct")) + + assert.Equal(t, "meta-llama/Llama-3.1-8B-Instruct", model, + "the model named by the call must address the request, not the one from the constructor") +} + +func TestWithoutAModelOnTheCallTheConstructorsModelIsUsed(t *testing.T) { + t.Parallel() + + assert.Equal(t, "gpt2", modelOnTheWire(t)) +} diff --git a/llms/huggingface/embeddings_short_test.go b/llms/huggingface/embeddings_short_test.go new file mode 100644 index 000000000..c7d0fea5a --- /dev/null +++ b/llms/huggingface/embeddings_short_test.go @@ -0,0 +1,27 @@ +package huggingface + +import ( + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestCreateEmbeddingRefusesAShortAnswer(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `[[0.1,0.2]]`) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithToken("t"), WithURL(srv.URL)) + require.NoError(t, err) + + emb, err := llm.CreateEmbedding(t.Context(), []string{"one", "two"}, "m", "feature-extraction") + require.ErrorIs(t, err, ErrUnexpectedResponseLength) + require.Nil(t, emb) +} diff --git a/llms/huggingface/embeddings_wire_test.go b/llms/huggingface/embeddings_wire_test.go new file mode 100644 index 000000000..ffb90a5a7 --- /dev/null +++ b/llms/huggingface/embeddings_wire_test.go @@ -0,0 +1,66 @@ +package huggingface + +import ( + "context" + "encoding/json" + "io" + "maps" + "net/http" + "net/http/httptest" + "slices" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func embeddingsRequestOf(t *testing.T, opts []Option, model, task string) (string, []byte) { + t.Helper() + + var ( + path string + body []byte + ) + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + path = r.URL.Path + body, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `[[0.1,0.2]]`) + })) + t.Cleanup(srv.Close) + + llm, err := New(append([]Option{WithToken("t"), WithURL(srv.URL)}, opts...)...) + require.NoError(t, err) + + _, err = llm.CreateEmbedding(context.Background(), []string{"hi"}, model, task) + require.NoError(t, err) + + return path, body +} + +func TestTheEmbeddingsPathCarriesTheProviderAndTheTask(t *testing.T) { + t.Parallel() + + path, _ := embeddingsRequestOf(t, nil, "BAAI/bge-small-en-v1.5", "feature-extraction") + + assert.Equal(t, "/hf-inference/models/BAAI/bge-small-en-v1.5/pipeline/feature-extraction", path) +} + +func TestTheNamedInferenceProviderReplacesTheDefaultSegment(t *testing.T) { + t.Parallel() + + path, _ := embeddingsRequestOf(t, []Option{WithInferenceProvider("scaleway")}, + "Qwen/Qwen3-Embedding-8B", "feature-extraction") + + assert.Equal(t, "/scaleway/models/Qwen/Qwen3-Embedding-8B/pipeline/feature-extraction", path) +} + +func TestTheEmbeddingsBodyCarriesNothingButTheInputs(t *testing.T) { + t.Parallel() + + _, body := embeddingsRequestOf(t, nil, "BAAI/bge-small-en-v1.5", "feature-extraction") + + var sent map[string]any + require.NoError(t, json.Unmarshal(body, &sent)) + assert.Equal(t, []string{"inputs"}, slices.Sorted(maps.Keys(sent))) +} diff --git a/llms/huggingface/example_provider_test.go b/llms/huggingface/example_provider_test.go index bf12d4a86..1fa516150 100644 --- a/llms/huggingface/example_provider_test.go +++ b/llms/huggingface/example_provider_test.go @@ -25,7 +25,7 @@ func ExampleNew_withInferenceProvider() { // Use the LLM result, err := llm.Call(ctx, "What is the capital of France?", llms.WithTemperature(0.5), - llms.WithMaxLength(50), + llms.WithMaxTokens(50), ) if err != nil { log.Fatal(err) @@ -49,7 +49,7 @@ func ExampleNew_standardInference() { // Use the LLM result, err := llm.Call(ctx, "Hello, how are you?", llms.WithTemperature(0.5), - llms.WithMaxLength(50), + llms.WithMaxTokens(50), ) if err != nil { log.Fatal(err) diff --git a/llms/huggingface/huggingfacellm.go b/llms/huggingface/huggingfacellm.go index 82626ee00..9215dd0a2 100644 --- a/llms/huggingface/huggingfacellm.go +++ b/llms/huggingface/huggingfacellm.go @@ -4,6 +4,7 @@ import ( "bytes" "context" "errors" + "fmt" "os" "path/filepath" @@ -13,9 +14,11 @@ import ( ) var ( + ErrEmptyMessages = errors.New("huggingface: the call carried no message to send") ErrEmptyResponse = errors.New("empty response") ErrMissingToken = errors.New("missing the Hugging Face API token. Set it in the HF_TOKEN or HUGGINGFACEHUB_API_TOKEN environment variable, or save it to ~/.cache/huggingface/token") //nolint:lll ErrUnexpectedResponseLength = errors.New("unexpected length of response") + ErrUnsupportedPart = errors.New("huggingface: the door sends text and the message carries another part") ) type LLM struct { @@ -31,50 +34,81 @@ func (o *LLM) Call(ctx context.Context, prompt string, options ...llms.CallOptio } // GenerateContent implements the Model interface. -func (o *LLM) GenerateContent(ctx context.Context, messages []llms.MessageContent, options ...llms.CallOption) (*llms.ContentResponse, error) { //nolint: lll, cyclop, whitespace - +func (o *LLM) GenerateContent(ctx context.Context, messages []llms.MessageContent, options ...llms.CallOption) (resp *llms.ContentResponse, err error) { //nolint:lll,cyclop,nonamedreturns if o.CallbacksHandler != nil { o.CallbacksHandler.HandleLLMGenerateContentStart(ctx, messages) + defer func() { + if err != nil { + o.CallbacksHandler.HandleLLMError(ctx, err) + } else { + o.CallbacksHandler.HandleLLMGenerateContentEnd(ctx, resp) + } + }() } - model := defaultModel + model := o.client.Model + if model == "" { + model = defaultModel + } opts := &llms.CallOptions{Model: &model} for _, opt := range options { opt(opts) } - // Assume we get a single text message - msg0 := messages[0] - part := msg0.Parts[0] + if len(messages) == 0 || len(messages[0].Parts) == 0 { + return nil, ErrEmptyMessages + } + part, ok := messages[0].Parts[0].(llms.TextContent) + if !ok { + return nil, fmt.Errorf("%w: %T", ErrUnsupportedPart, messages[0].Parts[0]) + } + + warn := &llms.Warnings{} + reportHuggingFaceOptions(warn, opts.GetModel(), opts, messages) + result, err := o.client.RunInference(ctx, &huggingfaceclient.InferenceRequest{ - Model: o.client.Model, - Prompt: part.(llms.TextContent).Text, - Task: huggingfaceclient.InferenceTaskTextGeneration, - Temperature: opts.GetTemperature(), - TopP: opts.GetTopP(), - TopK: opts.GetTopK(), - MinLength: opts.GetMinLength(), - MaxLength: opts.GetMaxLength(), - RepetitionPenalty: opts.GetRepetitionPenalty(), - Seed: opts.GetSeed(), + Model: opts.GetModel(), + Prompt: part.Text, + Temperature: opts.Temperature, + TopP: opts.TopP, + MaxTokens: opts.MaxTokens, + Seed: opts.Seed, + Effort: reasoningEffort(opts), }) if err != nil { - if o.CallbacksHandler != nil { - o.CallbacksHandler.HandleLLMError(ctx, err) - } return nil, err } - resp := &llms.ContentResponse{ + resp = &llms.ContentResponse{ Choices: []*llms.ContentChoice{ { - Content: result.Text, + Content: result.Text, + StopReason: result.StopReason, + Truncated: llms.IsTruncated(result.StopReason), }, }, + Warnings: warn.List(), + } + if err = llms.CheckTruncation(resp, *opts); err != nil { + return resp, err } return resp, nil } +func reasoningEffort(opts *llms.CallOptions) string { + if opts.Reasoning == nil { + return "" + } + if opts.Reasoning.ResolveMode() == llms.ReasoningOff { + return "none" + } + if opts.Reasoning.DelegatesDepth() { + return "" + } + + return string(opts.Reasoning.GetEffort(opts.GetMaxTokens())) +} + func New(opts ...Option) (*LLM, error) { options := &options{ token: getHuggingFaceToken(), @@ -90,11 +124,6 @@ func New(opts ...Option) (*LLM, error) { return nil, ErrMissingToken } - // If a provider is specified, use the router URL - if options.provider != "" { - options.url = routerURL - } - var clientOpts []huggingfaceclient.Option if options.httpClient != nil { clientOpts = append(clientOpts, huggingfaceclient.WithHTTPClient(options.httpClient)) @@ -175,10 +204,6 @@ func (o *LLM) CreateEmbedding( ) ([][]float32, error) { embeddings, err := o.client.CreateEmbedding(ctx, model, task, &huggingfaceclient.EmbeddingRequest{ Inputs: inputTexts, - Options: map[string]any{ - "use_gpu": false, - "wait_for_model": true, - }, }) if err != nil { return nil, err @@ -187,7 +212,7 @@ func (o *LLM) CreateEmbedding( return nil, ErrEmptyResponse } if len(inputTexts) != len(embeddings) { - return embeddings, ErrUnexpectedResponseLength + return nil, ErrUnexpectedResponseLength } return embeddings, nil } diff --git a/llms/huggingface/huggingfacellm_option.go b/llms/huggingface/huggingfacellm_option.go index e083780d1..a27e48ca4 100644 --- a/llms/huggingface/huggingfacellm_option.go +++ b/llms/huggingface/huggingfacellm_option.go @@ -12,9 +12,8 @@ const ( hfHomeEnvVarName = "HF_HOME" // HF home directory xdgCacheHomeEnvVar = "XDG_CACHE_HOME" // XDG cache directory defaultTokenPath = "token" // Default token filename - defaultModel = "gpt2" - defaultURL = "https://api-inference.huggingface.co" - routerURL = "https://router.huggingface.co" + defaultModel = "meta-llama/Llama-3.1-8B-Instruct" + defaultURL = "https://router.huggingface.co" ) type options struct { @@ -58,9 +57,8 @@ func WithHTTPClient(httpClient *http.Client) Option { } } -// WithInferenceProvider passes the inference provider to use with HuggingFace's router. -// When set, the client will use the router URL (https://router.huggingface.co/{provider}/v1/...) -// instead of the default inference API. Common providers include "hyperbolic", "nebius", etc. +// WithInferenceProvider names the inference provider that serves the request behind +// HuggingFace's router. Common providers include "hyperbolic", "nebius", etc. func WithInferenceProvider(provider string) Option { return func(opts *options) { opts.provider = provider diff --git a/llms/huggingface/huggingfacellm_test.go b/llms/huggingface/huggingfacellm_test.go index 9564ae2a4..ab9a887db 100644 --- a/llms/huggingface/huggingfacellm_test.go +++ b/llms/huggingface/huggingfacellm_test.go @@ -45,66 +45,13 @@ func TestHuggingFaceLLMWithProvider(t *testing.T) { // Test the LLM call result, err := llm.Call(ctx, "What is 2+2?", llms.WithTemperature(0.5), - llms.WithMaxLength(50), + llms.WithMaxTokens(50), ) - // Skip test if provider is not available or recording is missing - if err != nil && (strings.Contains(err.Error(), "404") || - strings.Contains(err.Error(), "403") || - strings.Contains(err.Error(), "cached HTTP response not found")) { - t.Skip("Provider not available or recording missing, skipping test") - } - - if err != nil { - t.Fatal(err) - } - if result == "" { - t.Fatal("expected non-empty result") - } -} - -func TestHuggingFaceLLMStandardInference(t *testing.T) { - ctx := t.Context() - - // Skip if no credentials and no recording - HuggingFace accepts either token - if os.Getenv("HF_TOKEN") == "" && os.Getenv("HUGGINGFACEHUB_API_TOKEN") == "" { - httprr.SkipIfNoCredentialsAndRecordingMissing(t, "HF_TOKEN") - } - - rr := httprr.OpenForTest(t, nil) - defer rr.Close() - - apiKey := "test-api-key" - if rr.Recording() { - // Try HF_TOKEN first, then fall back to HUGGINGFACEHUB_API_TOKEN - if key := os.Getenv("HF_TOKEN"); key != "" { - apiKey = key - } else if key := os.Getenv("HUGGINGFACEHUB_API_TOKEN"); key != "" { - apiKey = key - } - } - - // Create standard LLM without provider - opts := []Option{ - WithModel("HuggingFaceH4/zephyr-7b-beta"), - WithHTTPClient(rr.Client()), - WithToken(apiKey), - } - - llm, err := New(opts...) - if err != nil { - t.Fatal(err) - } - - // Test the LLM call - result, err := llm.Call(ctx, "Hello, say hi back", - llms.WithTemperature(0.5), - llms.WithMaxLength(20), - ) - - // Skip test if model is not available - if err != nil && strings.Contains(err.Error(), "404") { - t.Skip("Model not available on HuggingFace API, skipping test") + // Skip test if the provider is not available live; a replay miss fails + if err != nil && rr.Recording() && (strings.Contains(err.Error(), "404") || + strings.Contains(err.Error(), "403")) { + t.Skip("Provider not available, skipping test") } if err != nil { @@ -158,14 +105,13 @@ func TestHuggingFaceLLMGenerateContent(t *testing.T) { resp, err := llm.GenerateContent(ctx, messages, llms.WithTemperature(0.5), - llms.WithMaxLength(30), + llms.WithMaxTokens(30), ) - // Skip test if model is not available or rate limited - if err != nil && (strings.Contains(err.Error(), "404") || - strings.Contains(err.Error(), "402") || - strings.Contains(err.Error(), "cached HTTP response not found")) { - t.Skip("Model not available, rate limited, or recording missing, skipping test") + // Skip test if the model is not available or rate limited live; a replay miss fails + if err != nil && rr.Recording() && (strings.Contains(err.Error(), "404") || + strings.Contains(err.Error(), "402")) { + t.Skip("Model not available or rate limited, skipping test") } if err != nil { diff --git a/llms/huggingface/internal/huggingfaceclient/chat_wire_test.go b/llms/huggingface/internal/huggingfaceclient/chat_wire_test.go new file mode 100644 index 000000000..c9b82ed6e --- /dev/null +++ b/llms/huggingface/internal/huggingfaceclient/chat_wire_test.go @@ -0,0 +1,67 @@ +package huggingfaceclient + +import ( + "encoding/json" + "io" + "maps" + "net/http" + "net/http/httptest" + "slices" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func chatRequestOf(t *testing.T, opts []Option) (string, map[string]any) { + t.Helper() + + var ( + path string + raw []byte + ) + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + path = r.URL.Path + raw, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"choices":[{"message":{"content":"hi"},"finish_reason":"stop"}]}`) + })) + t.Cleanup(srv.Close) + + client, err := New("t", "gpt2", srv.URL, opts...) + require.NoError(t, err) + + resp, err := client.RunInference(t.Context(), &InferenceRequest{ + Model: "gpt2", + Prompt: "hi", + Temperature: ptr(0.5), + MaxTokens: ptr(20), + }) + require.NoError(t, err) + assert.Equal(t, "stop", resp.StopReason) + + var body map[string]any + require.NoError(t, json.Unmarshal(raw, &body)) + + return path, body +} + +func TestTheChatRequestAddressesTheDocumentedEndpoint(t *testing.T) { + t.Parallel() + + path, body := chatRequestOf(t, nil) + + assert.Equal(t, "/v1/chat/completions", path) + assert.Equal(t, []string{"max_tokens", "messages", "model", "stream", "temperature"}, + slices.Sorted(maps.Keys(body))) +} + +func TestANamedProviderPrefixesTheChatEndpoint(t *testing.T) { + t.Parallel() + + path, _ := chatRequestOf(t, []Option{WithProvider("nebius")}) + + assert.Equal(t, "/nebius/v1/chat/completions", path) +} + +func ptr[T any](v T) *T { return &v } diff --git a/llms/huggingface/internal/huggingfaceclient/embeddings.go b/llms/huggingface/internal/huggingfaceclient/embeddings.go index 8afd26486..018692a98 100644 --- a/llms/huggingface/internal/huggingfaceclient/embeddings.go +++ b/llms/huggingface/internal/huggingfaceclient/embeddings.go @@ -10,25 +10,25 @@ import ( ) type embeddingPayload struct { - Options map[string]any - Inputs []string `json:"inputs"` + Inputs []string `json:"inputs"` } -// nolint:lll -func (c *Client) createEmbedding(ctx context.Context, model string, task string, payload *embeddingPayload) ([][]float32, error) { - body := map[string]any{ - "inputs": payload.Inputs, - } - for key, value := range payload.Options { - body[key] = value +const defaultEmbeddingProvider = "hf-inference" + +func (c *Client) embeddingProvider() string { + if c.provider == "" { + return defaultEmbeddingProvider } + return c.provider +} - payloadBytes, err := json.Marshal(body) +// nolint:lll +func (c *Client) createEmbedding(ctx context.Context, model, task string, payload *embeddingPayload) ([][]float32, error) { + payloadBytes, err := json.Marshal(payload) if err != nil { return nil, fmt.Errorf("marshal payload: %w", err) } - // Use /models/ endpoint for embeddings as /pipeline/ is deprecated - url := fmt.Sprintf("%s/models/%s", c.url, model) + url := fmt.Sprintf("%s/%s/models/%s/pipeline/%s", c.url, c.embeddingProvider(), model, task) req, err := http.NewRequestWithContext(ctx, http.MethodPost, url, bytes.NewReader(payloadBytes)) if err != nil { return nil, fmt.Errorf("create request: %w", err) diff --git a/llms/huggingface/internal/huggingfaceclient/huggingfaceclient.go b/llms/huggingface/internal/huggingfaceclient/huggingfaceclient.go index 8e96ac440..cdc121b63 100644 --- a/llms/huggingface/internal/huggingfaceclient/huggingfaceclient.go +++ b/llms/huggingface/internal/huggingfaceclient/huggingfaceclient.go @@ -59,55 +59,42 @@ func WithProvider(provider string) Option { } type InferenceRequest struct { - Model string `json:"repositoryId"` - Prompt string `json:"prompt"` - Task InferenceTask `json:"task"` - Temperature float64 `json:"temperature"` - TopP float64 `json:"top_p,omitempty"` - TopK int `json:"top_k,omitempty"` - MinLength int `json:"min_length,omitempty"` - MaxLength int `json:"max_length,omitempty"` - RepetitionPenalty float64 `json:"repetition_penalty,omitempty"` - Seed int `json:"seed,omitempty"` + Model string + Prompt string + Temperature *float64 + TopP *float64 + MaxTokens *int + Seed *int + Effort string } type InferenceResponse struct { - Text string `json:"generated_text"` + Text string + // StopReason is the vendor's finish reason, empty when the door did not report one. + StopReason string } func (c *Client) RunInference(ctx context.Context, request *InferenceRequest) (*InferenceResponse, error) { - payload := &inferencePayload{ - Model: request.Model, - Inputs: request.Prompt, - Parameters: parameters{ - Temperature: request.Temperature, - TopP: request.TopP, - TopK: request.TopK, - MinLength: request.MinLength, - MaxLength: request.MaxLength, - RepetitionPenalty: request.RepetitionPenalty, - Seed: request.Seed, - }, + payload := &chatCompletionsPayload{ + Model: request.Model, + Messages: []chatMessage{{Role: "user", Content: request.Prompt}}, + Effort: request.Effort, + Temperature: request.Temperature, + TopP: request.TopP, + MaxTokens: request.MaxTokens, + Seed: request.Seed, } - resp, err := c.runInference(ctx, payload) + + resp, err := c.runChatCompletions(ctx, payload) if err != nil { return nil, fmt.Errorf("failed to run inference: %w", err) } - if len(resp) == 0 { - return nil, ErrEmptyResponse - } - text := resp[0].Text - // TODO: Add response cleaning based on Model. - // e.g., for gpt2, text = text[len(request.Prompt)+1:] - return &InferenceResponse{ - Text: text, - }, nil + return resp, nil } // EmbeddingRequest is a request to create an embedding. type EmbeddingRequest struct { - Options map[string]any `json:"options"` - Inputs []string `json:"inputs"` + Inputs []string `json:"inputs"` } // CreateEmbedding creates embeddings. @@ -118,8 +105,7 @@ func (c *Client) CreateEmbedding( r *EmbeddingRequest, ) ([][]float32, error) { resp, err := c.createEmbedding(ctx, model, task, &embeddingPayload{ - Inputs: r.Inputs, - Options: r.Options, + Inputs: r.Inputs, }) if err != nil { return nil, err diff --git a/llms/huggingface/internal/huggingfaceclient/huggingfaceclient_test.go b/llms/huggingface/internal/huggingfaceclient/huggingfaceclient_test.go index a884398b2..fbd27f237 100644 --- a/llms/huggingface/internal/huggingfaceclient/huggingfaceclient_test.go +++ b/llms/huggingface/internal/huggingfaceclient/huggingfaceclient_test.go @@ -12,99 +12,7 @@ import ( "github.com/stretchr/testify/require" ) -const testURL = "https://api-inference.huggingface.co" - -func TestClient_RunInference(t *testing.T) { - ctx := t.Context() - - // Check both HF_TOKEN and HUGGINGFACEHUB_API_TOKEN - if os.Getenv("HF_TOKEN") == "" && os.Getenv("HUGGINGFACEHUB_API_TOKEN") == "" { - httprr.SkipIfNoCredentialsAndRecordingMissing(t, "HF_TOKEN") - } - - rr := httprr.OpenForTest(t, httputil.DefaultTransport) - defer rr.Close() - - apiKey := "test-api-key" - if rr.Recording() { - // Try HF_TOKEN first, then fall back to HUGGINGFACEHUB_API_TOKEN - if key := os.Getenv("HF_TOKEN"); key != "" { - apiKey = key - } else if key := os.Getenv("HUGGINGFACEHUB_API_TOKEN"); key != "" { - apiKey = key - } - } - - // Create client with recording HTTP client - // Using HuggingFaceH4/zephyr-7b-beta which is a working model - client, err := New(apiKey, "HuggingFaceH4/zephyr-7b-beta", testURL, WithHTTPClient(rr.Client())) - require.NoError(t, err) - - req := &InferenceRequest{ - Model: "HuggingFaceH4/zephyr-7b-beta", - Prompt: "Hello, my name is", - Task: InferenceTaskTextGeneration, - Temperature: 0.5, - MaxLength: 20, - } - - resp, err := client.RunInference(ctx, req) - - // Skip test if model is not available (404 error) - if err != nil && strings.Contains(err.Error(), "404") { - t.Skip("Model not available on HuggingFace API, skipping test") - } - - require.NoError(t, err) - assert.NotNil(t, resp) - assert.NotEmpty(t, resp.Text) -} - -func TestClient_RunInferenceText2Text(t *testing.T) { - ctx := t.Context() - - // Check both HF_TOKEN and HUGGINGFACEHUB_API_TOKEN - if os.Getenv("HF_TOKEN") == "" && os.Getenv("HUGGINGFACEHUB_API_TOKEN") == "" { - httprr.SkipIfNoCredentialsAndRecordingMissing(t, "HF_TOKEN") - } - - rr := httprr.OpenForTest(t, httputil.DefaultTransport) - defer rr.Close() - - apiKey := "test-api-key" - if rr.Recording() { - // Try HF_TOKEN first, then fall back to HUGGINGFACEHUB_API_TOKEN - if key := os.Getenv("HF_TOKEN"); key != "" { - apiKey = key - } else if key := os.Getenv("HUGGINGFACEHUB_API_TOKEN"); key != "" { - apiKey = key - } - } - - // Create client with recording HTTP client - // Using the same model that works for text generation - client, err := New(apiKey, "HuggingFaceH4/zephyr-7b-beta", testURL, WithHTTPClient(rr.Client())) - require.NoError(t, err) - - req := &InferenceRequest{ - Model: "HuggingFaceH4/zephyr-7b-beta", - Prompt: "Translate to French: Hello, how are you?", - Task: InferenceTaskText2TextGeneration, - Temperature: 0.5, - MaxLength: 50, - } - - resp, err := client.RunInference(ctx, req) - - // Skip test if model is not available (404 error) - if err != nil && strings.Contains(err.Error(), "404") { - t.Skip("Model not available on HuggingFace API, skipping test") - } - - require.NoError(t, err) - assert.NotNil(t, resp) - assert.NotEmpty(t, resp.Text) -} +const testURL = "https://router.huggingface.co" func TestClient_CreateEmbedding(t *testing.T) { t.Skip("temporary skip") @@ -134,9 +42,6 @@ func TestClient_CreateEmbedding(t *testing.T) { req := &EmbeddingRequest{ Inputs: []string{"Hello world", "How are you?"}, - Options: map[string]any{ - "wait_for_model": true, - }, } embeddings, err := client.CreateEmbedding(ctx, "BAAI/bge-small-en-v1.5", "feature-extraction", req) @@ -183,16 +88,15 @@ func TestClient_RunInferenceWithProvider(t *testing.T) { req := &InferenceRequest{ Model: "deepseek-ai/DeepSeek-R1-0528", Prompt: "Hello, how are you?", - Task: InferenceTaskTextGeneration, - Temperature: 0.5, - MaxLength: 50, + Temperature: ptr(0.5), + MaxTokens: ptr(50), } resp, err := client.RunInference(ctx, req) - // Skip test if provider is not available (404/403 error) or recording is missing - if err != nil && (strings.Contains(err.Error(), "404") || strings.Contains(err.Error(), "403") || strings.Contains(err.Error(), "cached HTTP response not found")) { //nolint:lll - t.Skip("Provider not available or recording missing, skipping test") + // Skip test if the provider is not available live (404/403 error); a replay miss fails + if err != nil && rr.Recording() && (strings.Contains(err.Error(), "404") || strings.Contains(err.Error(), "403")) { + t.Skip("Provider not available, skipping test") } require.NoError(t, err) diff --git a/llms/huggingface/internal/huggingfaceclient/inference.go b/llms/huggingface/internal/huggingfaceclient/inference.go index 94964dd95..900c948b1 100644 --- a/llms/huggingface/internal/huggingfaceclient/inference.go +++ b/llms/huggingface/internal/huggingfaceclient/inference.go @@ -10,33 +10,11 @@ import ( "net/http" ) -var ErrUnexpectedStatusCode = errors.New("unexpected status code") - -// InferenceTask is the type of inference task to run. -type InferenceTask string - -const ( - InferenceTaskTextGeneration InferenceTask = "text-generation" - InferenceTaskText2TextGeneration InferenceTask = "text2text-generation" +var ( + ErrUnexpectedStatusCode = errors.New("unexpected status code") + ErrNoChoices = errors.New("no choices in response") ) -type inferencePayload struct { - Model string `json:"-"` - Inputs string `json:"inputs"` - Parameters parameters `json:"parameters,omitempty"` -} - -type parameters struct { - Temperature float64 `json:"temperature"` - TopP float64 `json:"top_p,omitempty"` - TopK int `json:"top_k,omitempty"` - MinLength int `json:"min_length,omitempty"` - MaxLength int `json:"max_length,omitempty"` - RepetitionPenalty float64 `json:"repetition_penalty,omitempty"` - Seed int `json:"seed,omitempty"` -} - -// Chat completions API structures for router-based requests type chatCompletionsPayload struct { Model string `json:"model"` Messages []chatMessage `json:"messages"` @@ -44,6 +22,8 @@ type chatCompletionsPayload struct { Temperature *float64 `json:"temperature,omitempty"` TopP *float64 `json:"top_p,omitempty"` MaxTokens *int `json:"max_tokens,omitempty"` + Seed *int `json:"seed,omitempty"` + Effort string `json:"reasoning_effort,omitempty"` } type chatMessage struct { @@ -56,116 +36,25 @@ type chatCompletionsResponse struct { Message struct { Content string `json:"content"` } `json:"message"` - Index int `json:"index"` + Index int `json:"index"` + FinishReason string `json:"finish_reason"` } `json:"choices"` } -type ( - inferenceResponsePayload []inferenceResponse - inferenceResponse struct { - Text string `json:"generated_text"` - } -) - -func (c *Client) runInference(ctx context.Context, payload *inferencePayload) (inferenceResponsePayload, error) { - if c.provider != "" { - // Use chat completions API for router-based requests - return c.runChatCompletions(ctx, payload) - } - - // Standard inference API - payloadBytes, err := json.Marshal(payload) - if err != nil { - return nil, err - } - body := bytes.NewReader(payloadBytes) - - requestURL := fmt.Sprintf("%s/models/%s", c.url, payload.Model) - - req, err := http.NewRequestWithContext(ctx, http.MethodPost, requestURL, body) - if err != nil { - return nil, err - } - req.Header.Set("Authorization", "Bearer "+c.Token) - req.Header.Set("Content-Type", "application/json") - - // debug print the http request with httputil: - - // reqDump, err := httputil.DumpRequestOut(req, true) - // if err != nil { - // return nil, err - // } - // fmt.Fprintf(os.Stderr, "%s", reqDump) - - r, err := c.httpClient.Do(req) - if err != nil { - return nil, err - } - defer r.Body.Close() - - if r.StatusCode != http.StatusOK { - b, err := io.ReadAll(r.Body) - if err != nil { - return nil, fmt.Errorf("failed to read response body: %w", err) - } - - if len(b) > 0 { - err = fmt.Errorf("%w: %d, body: %s", ErrUnexpectedStatusCode, r.StatusCode, string(b)) - } else { - err = fmt.Errorf("%w: %d", ErrUnexpectedStatusCode, r.StatusCode) - } - return nil, err +func (c *Client) chatCompletionsURL() string { + if c.provider == "" { + return c.url + "/v1/chat/completions" } - - // debug print the http response with httputil: - // resDump, err := httputil.DumpResponse(r, true) - // if err != nil { - // return nil, err - // } - // fmt.Fprintf(os.Stderr, "%s", resDump) - - var response inferenceResponsePayload - err = json.NewDecoder(r.Body).Decode(&response) - if err != nil { - return nil, err - } - return response, nil + return fmt.Sprintf("%s/%s/v1/chat/completions", c.url, c.provider) } -// runChatCompletions runs inference using the chat completions API format for router-based requests -func (c *Client) runChatCompletions(ctx context.Context, payload *inferencePayload) (inferenceResponsePayload, error) { - // Convert parameters to chat completions format - chatPayload := chatCompletionsPayload{ - Model: payload.Model, - Messages: []chatMessage{ - { - Role: "user", - Content: payload.Inputs, - }, - }, - Stream: false, - } - - // Map parameters - if payload.Parameters.Temperature > 0 { - chatPayload.Temperature = &payload.Parameters.Temperature - } - if payload.Parameters.TopP > 0 { - chatPayload.TopP = &payload.Parameters.TopP - } - if payload.Parameters.MaxLength > 0 { - chatPayload.MaxTokens = &payload.Parameters.MaxLength - } - - payloadBytes, err := json.Marshal(chatPayload) +func (c *Client) runChatCompletions(ctx context.Context, payload *chatCompletionsPayload) (*InferenceResponse, error) { + payloadBytes, err := json.Marshal(payload) if err != nil { return nil, err } - body := bytes.NewReader(payloadBytes) - - requestURL := fmt.Sprintf("%s/%s/v1/chat/completions", c.url, c.provider) - req, err := http.NewRequestWithContext(ctx, http.MethodPost, requestURL, body) + req, err := http.NewRequestWithContext(ctx, http.MethodPost, c.chatCompletionsURL(), bytes.NewReader(payloadBytes)) if err != nil { return nil, err } @@ -185,29 +74,21 @@ func (c *Client) runChatCompletions(ctx context.Context, payload *inferencePaylo } if len(b) > 0 { - err = fmt.Errorf("%w: %d, body: %s", ErrUnexpectedStatusCode, r.StatusCode, string(b)) - } else { - err = fmt.Errorf("%w: %d", ErrUnexpectedStatusCode, r.StatusCode) + return nil, fmt.Errorf("%w: %d, body: %s", ErrUnexpectedStatusCode, r.StatusCode, string(b)) } - return nil, err + return nil, fmt.Errorf("%w: %d", ErrUnexpectedStatusCode, r.StatusCode) } - var chatResponse chatCompletionsResponse - err = json.NewDecoder(r.Body).Decode(&chatResponse) - if err != nil { + var response chatCompletionsResponse + if err := json.NewDecoder(r.Body).Decode(&response); err != nil { return nil, err } - - // Convert chat completions response to inference response format - if len(chatResponse.Choices) == 0 { - return nil, errors.New("no choices in response") - } - - // Convert to the expected response format - response := make(inferenceResponsePayload, 1) - response[0] = inferenceResponse{ - Text: chatResponse.Choices[0].Message.Content, + if len(response.Choices) == 0 { + return nil, ErrNoChoices } - return response, nil + return &InferenceResponse{ + Text: response.Choices[0].Message.Content, + StopReason: response.Choices[0].FinishReason, + }, nil } diff --git a/llms/huggingface/internal/huggingfaceclient/testdata/TestClient_RunInference.httprr b/llms/huggingface/internal/huggingfaceclient/testdata/TestClient_RunInference.httprr deleted file mode 100644 index 8f9f08471..000000000 --- a/llms/huggingface/internal/huggingfaceclient/testdata/TestClient_RunInference.httprr +++ /dev/null @@ -1,28 +0,0 @@ -httprr trace v1 -324 873 -POST https://api-inference.huggingface.co/models/HuggingFaceH4/zephyr-7b-beta HTTP/1.1 -Host: api-inference.huggingface.co -User-Agent: langchaingo-httprr -Content-Length: 79 -Authorization: Bearer test-api-key -Content-Type: application/json - -{"inputs":"Hello, my name is","parameters":{"temperature":0.5,"max_length":20}}HTTP/2.0 404 Not Found -Content-Length: 9 -Access-Control-Allow-Credentials: true -Access-Control-Allow-Origin: * -Access-Control-Expose-Headers: X-Repo-Commit,X-Request-Id,X-Error-Code,X-Error-Message,X-Total-Count,ETag,Link,Accept-Ranges,Content-Range,X-Linked-Size,X-Linked-ETag,X-Xet-Hash -Content-Type: text/plain; charset=utf-8 -Cross-Origin-Opener-Policy: same-origin -Date: Mon, 18 Aug 2025 12:36:28 GMT -Referrer-Policy: strict-origin-when-cross-origin -Vary: origin, access-control-request-method, access-control-request-headers -Via: 1.1 4d87a1e7909a1a7d7668982112e840ba.cloudfront.net (CloudFront) -X-Amz-Cf-Id: DhbjL6m2RbLCqaFnwOco16Owkdw-ma0KPUnu2svT6Pr_PHGZwSkj2A== -X-Amz-Cf-Pop: CDG55-P3 -X-Cache: Error from cloudfront -X-Inference-Provider: hf-inference -X-Powered-By: huggingface-moon -X-Request-Id: Root=1-68a31e4c-64caec96543b308231f88adf - -Not Found \ No newline at end of file diff --git a/llms/huggingface/internal/huggingfaceclient/testdata/TestClient_RunInferenceText2Text.httprr b/llms/huggingface/internal/huggingfaceclient/testdata/TestClient_RunInferenceText2Text.httprr deleted file mode 100644 index 75f34c56e..000000000 --- a/llms/huggingface/internal/huggingfaceclient/testdata/TestClient_RunInferenceText2Text.httprr +++ /dev/null @@ -1,28 +0,0 @@ -httprr trace v1 -348 873 -POST https://api-inference.huggingface.co/models/HuggingFaceH4/zephyr-7b-beta HTTP/1.1 -Host: api-inference.huggingface.co -User-Agent: langchaingo-httprr -Content-Length: 102 -Authorization: Bearer test-api-key -Content-Type: application/json - -{"inputs":"Translate to French: Hello, how are you?","parameters":{"temperature":0.5,"max_length":50}}HTTP/2.0 404 Not Found -Content-Length: 9 -Access-Control-Allow-Credentials: true -Access-Control-Allow-Origin: * -Access-Control-Expose-Headers: X-Repo-Commit,X-Request-Id,X-Error-Code,X-Error-Message,X-Total-Count,ETag,Link,Accept-Ranges,Content-Range,X-Linked-Size,X-Linked-ETag,X-Xet-Hash -Content-Type: text/plain; charset=utf-8 -Cross-Origin-Opener-Policy: same-origin -Date: Mon, 18 Aug 2025 12:36:29 GMT -Referrer-Policy: strict-origin-when-cross-origin -Vary: origin, access-control-request-method, access-control-request-headers -Via: 1.1 4d87a1e7909a1a7d7668982112e840ba.cloudfront.net (CloudFront) -X-Amz-Cf-Id: yzJ5X-bxz1-lFsyT0AYgP82WqwGp6WgizqOBWh0qRRSNyckGtHjS4g== -X-Amz-Cf-Pop: CDG55-P3 -X-Cache: Error from cloudfront -X-Inference-Provider: hf-inference -X-Powered-By: huggingface-moon -X-Request-Id: Root=1-68a31e4d-197358e072cede205d9f41b8 - -Not Found \ No newline at end of file diff --git a/llms/huggingface/limits_wire_test.go b/llms/huggingface/limits_wire_test.go new file mode 100644 index 000000000..e3b04422b --- /dev/null +++ b/llms/huggingface/limits_wire_test.go @@ -0,0 +1,99 @@ +package huggingface + +import ( + "context" + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func bodyOfCall(t *testing.T, messages []llms.MessageContent, call ...llms.CallOption) map[string]any { + t.Helper() + + var raw []byte + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + raw, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"choices":[{"message":{"content":"hi"},"finish_reason":"stop"}]}`) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithToken("t"), WithURL(srv.URL), WithModel("Qwen/Qwen3-32B")) + require.NoError(t, err) + + _, err = llm.GenerateContent(context.Background(), messages, call...) + require.NoError(t, err) + + var body map[string]any + require.NoError(t, json.Unmarshal(raw, &body)) + return body +} + +func TestTheOutputCapOnTheWireComesFromWithMaxTokens(t *testing.T) { + t.Parallel() + + body := bodyOfCall(t, oneMessage(), llms.WithMaxTokens(500)) + assert.InDelta(t, 500, body["max_tokens"], 0) +} + +func TestWithMaxLengthNoLongerReachesTheWire(t *testing.T) { + t.Parallel() + + body := bodyOfCall(t, oneMessage(), llms.WithMaxLength(20)) + assert.NotContains(t, body, "max_tokens") +} + +func TestAnExplicitZeroTemperatureReachesTheWire(t *testing.T) { + t.Parallel() + + body := bodyOfCall(t, oneMessage(), llms.WithTemperature(0)) + require.Contains(t, body, "temperature") + assert.InDelta(t, 0, body["temperature"], 0) +} + +func TestAnUnsetTemperatureStaysOffTheWire(t *testing.T) { + t.Parallel() + + body := bodyOfCall(t, oneMessage()) + assert.NotContains(t, body, "temperature") +} + +func TestAnExplicitZeroSeedReachesTheWire(t *testing.T) { + t.Parallel() + + body := bodyOfCall(t, oneMessage(), llms.WithSeed(0)) + require.Contains(t, body, "seed") + assert.InDelta(t, 0, body["seed"], 0) +} + +func TestACallWithoutMessagesIsRefusedInsteadOfPanicking(t *testing.T) { + t.Parallel() + + llm, err := New(WithToken("t"), WithURL("http://127.0.0.1:1"), WithModel("Qwen/Qwen3-32B")) + require.NoError(t, err) + + resp, err := llm.GenerateContent(context.Background(), nil) + require.ErrorIs(t, err, ErrEmptyMessages) + require.Nil(t, resp) +} + +func TestANonTextPartIsRefusedInsteadOfPanicking(t *testing.T) { + t.Parallel() + + llm, err := New(WithToken("t"), WithURL("http://127.0.0.1:1"), WithModel("Qwen/Qwen3-32B")) + require.NoError(t, err) + + resp, err := llm.GenerateContent(context.Background(), []llms.MessageContent{{ + Role: llms.ChatMessageTypeHuman, + Parts: []llms.ContentPart{llms.ImageURLContent{URL: "https://example.com/a.png"}}, + }}) + require.ErrorIs(t, err, ErrUnsupportedPart) + require.Nil(t, resp) +} diff --git a/llms/huggingface/llmtest_test.go b/llms/huggingface/llmtest_test.go index 044890f6f..3b683d171 100644 --- a/llms/huggingface/llmtest_test.go +++ b/llms/huggingface/llmtest_test.go @@ -12,10 +12,10 @@ func TestLLM(t *testing.T) { t.Skip("HUGGINGFACEHUB_API_TOKEN not set") } - llm, err := New(WithModel("gpt2")) + llm, err := New(WithModel(defaultModel)) if err != nil { t.Fatalf("Failed to create HuggingFace LLM: %v", err) } - llmtest.TestLLM(t, llm) + llmtest.TestLLM(t, llm, llmtest.WithoutStreaming()) } diff --git a/llms/huggingface/reasoning_wire_test.go b/llms/huggingface/reasoning_wire_test.go new file mode 100644 index 000000000..a02d84213 --- /dev/null +++ b/llms/huggingface/reasoning_wire_test.go @@ -0,0 +1,69 @@ +package huggingface + +import ( + "context" + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func effortOnTheWire(t *testing.T, call ...llms.CallOption) (string, bool) { + t.Helper() + + var raw []byte + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + raw, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"choices":[{"message":{"content":"hi"},"finish_reason":"stop"}]}`) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithToken("t"), WithURL(srv.URL), WithModel("Qwen/Qwen3-32B")) + require.NoError(t, err) + + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, call...) + require.NoError(t, err) + + var body map[string]any + require.NoError(t, json.Unmarshal(raw, &body)) + effort, present := body["reasoning_effort"] + if !present { + return "", false + } + + return effort.(string), true +} + +func TestTheAskedForEffortReachesTheWireUnchanged(t *testing.T) { + t.Parallel() + + effort, present := effortOnTheWire(t, llms.WithReasoning(llms.ReasoningHigh, 0)) + + require.True(t, present) + assert.Equal(t, "high", effort) +} + +func TestSwitchingThinkingOffSendsTheDocumentedNone(t *testing.T) { + t.Parallel() + + effort, present := effortOnTheWire(t, llms.WithReasoningDisabled()) + + require.True(t, present) + assert.Equal(t, "none", effort) +} + +func TestACallThatSaidNothingAboutThinkingCarriesNoEffort(t *testing.T) { + t.Parallel() + + _, present := effortOnTheWire(t) + + assert.False(t, present, "a caller who said nothing must not have an effort invented for them") +} diff --git a/llms/huggingface/testdata/TestHuggingFaceLLMStandardInference.httprr b/llms/huggingface/testdata/TestHuggingFaceLLMStandardInference.httprr deleted file mode 100644 index a86901af6..000000000 --- a/llms/huggingface/testdata/TestHuggingFaceLLMStandardInference.httprr +++ /dev/null @@ -1,28 +0,0 @@ -httprr trace v1 -325 873 -POST https://api-inference.huggingface.co/models/HuggingFaceH4/zephyr-7b-beta HTTP/1.1 -Host: api-inference.huggingface.co -User-Agent: langchaingo-httprr -Content-Length: 80 -Authorization: Bearer test-api-key -Content-Type: application/json - -{"inputs":"Hello, say hi back","parameters":{"temperature":0.5,"max_length":20}}HTTP/2.0 404 Not Found -Content-Length: 9 -Access-Control-Allow-Credentials: true -Access-Control-Allow-Origin: * -Access-Control-Expose-Headers: X-Repo-Commit,X-Request-Id,X-Error-Code,X-Error-Message,X-Total-Count,ETag,Link,Accept-Ranges,Content-Range,X-Linked-Size,X-Linked-ETag,X-Xet-Hash -Content-Type: text/plain; charset=utf-8 -Cross-Origin-Opener-Policy: same-origin -Date: Mon, 18 Aug 2025 12:37:01 GMT -Referrer-Policy: strict-origin-when-cross-origin -Vary: origin, access-control-request-method, access-control-request-headers -Via: 1.1 09d324ff4ef3ad9ee0e07d2d9be971c8.cloudfront.net (CloudFront) -X-Amz-Cf-Id: KpCHCJmPy4y8dPFkhSsUPFL4JxYibD8JQ8hIvnAd254Wfs2GMr1tig== -X-Amz-Cf-Pop: CDG55-P3 -X-Cache: Error from cloudfront -X-Inference-Provider: hf-inference -X-Powered-By: huggingface-moon -X-Request-Id: Root=1-68a31e6d-2b6c0a240c504c04298015bb - -Not Found \ No newline at end of file diff --git a/llms/huggingface/truncation_test.go b/llms/huggingface/truncation_test.go new file mode 100644 index 000000000..b1073b1d4 --- /dev/null +++ b/llms/huggingface/truncation_test.go @@ -0,0 +1,184 @@ +package huggingface + +import ( + "context" + "errors" + "io" + "net/http" + "net/http/httptest" + "net/url" + "strings" + "testing" + + "github.com/vxcontrol/langchaingo/callbacks" + "github.com/vxcontrol/langchaingo/llms" +) + +func serveJSON(t *testing.T, body string) (*httptest.Server, *string) { + t.Helper() + var request string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + request = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, body) + })) + t.Cleanup(srv.Close) + return srv, &request +} + +type rewriteHost struct{ target *url.URL } + +func (h rewriteHost) RoundTrip(r *http.Request) (*http.Response, error) { + r.URL.Scheme, r.URL.Host = h.target.Scheme, h.target.Host + return http.DefaultTransport.RoundTrip(r) +} + +func TestTruncationOnTheInferenceDoor(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + body string + reason string + truncated bool + }{ + { + "hit the limit", + `{"choices":[{"message":{"content":"partial"},"finish_reason":"length"}]}`, + "length", true, + }, + { + "finished", + `{"choices":[{"message":{"content":"done"},"finish_reason":"eos_token"}]}`, + "eos_token", false, + }, + {"no reason", `{"choices":[{"message":{"content":"done"}}]}`, "", false}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + srv, request := serveJSON(t, tc.body) + llm, err := New(WithToken("t"), WithURL(srv.URL), WithModel("m")) + if err != nil { + t.Fatalf("New() error: %v", err) + } + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + if err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + if got := resp.Choices[0].StopReason; got != tc.reason { + t.Errorf("StopReason = %q, want %q", got, tc.reason) + } + if got := resp.Choices[0].Truncated; got != tc.truncated { + t.Errorf("Truncated = %v, want %v", got, tc.truncated) + } + if !strings.Contains(*request, `"messages":[{"role":"user","content":"hi"}]`) { + t.Errorf("the prompt must reach the request as a chat message, got body: %s", *request) + } + }) + } +} + +func TestTruncationOnTheRouterDoor(t *testing.T) { + t.Parallel() + + const body = `{"choices":[{"index":0,"message":{"content":"partial"},"finish_reason":"length"}]}` + srv, _ := serveJSON(t, body) + // The router path pins its own URL, so the test server is reached by transport. + target, err := url.Parse(srv.URL) + if err != nil { + t.Fatalf("parse test server url: %v", err) + } + redirect := &http.Client{Transport: rewriteHost{target: target}} + llm, err := New(WithToken("t"), WithModel("m"), + WithInferenceProvider("together"), WithHTTPClient(redirect)) + if err != nil { + t.Fatalf("New() error: %v", err) + } + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + if err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + if resp.Choices[0].StopReason != "length" || !resp.Choices[0].Truncated { + t.Fatalf("router door must report truncation, got %q / %v", + resp.Choices[0].StopReason, resp.Choices[0].Truncated) + } +} + +func TestFailOnTruncationOnTheInferenceDoor(t *testing.T) { + t.Parallel() + + srv, _ := serveJSON(t, `{"choices":[{"message":{"content":"partial"},"finish_reason":"length"}]}`) + llm, err := New(WithToken("t"), WithURL(srv.URL), WithModel("m")) + if err != nil { + t.Fatalf("New() error: %v", err) + } + handler := &recordingCallbacks{} + llm.CallbacksHandler = handler + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithFailOnTruncation()) + if err == nil { + t.Fatal("a caller that opted in must get a typed error on a truncated answer") + } + var apiErr *llms.Error + if !errors.As(err, &apiErr) || apiErr.Code != llms.ErrCodeTruncated { + t.Fatalf("expected ErrCodeTruncated, got: %v", err) + } + if resp == nil || len(resp.Choices) == 0 { + t.Fatal("the partial answer must travel with the error, as it does on every other door") + } + if got := resp.Choices[0].Content; got != "partial" { + t.Fatalf("partial answer = %q, want %q", got, "partial") + } + if handler.errors != 1 { + t.Fatalf("HandleLLMError calls = %d, want 1", handler.errors) + } +} + +type recordingCallbacks struct { + callbacks.SimpleHandler + errors int + starts int + ends int +} + +func (h *recordingCallbacks) HandleLLMError(context.Context, error) { h.errors++ } + +func (h *recordingCallbacks) HandleLLMGenerateContentStart(context.Context, []llms.MessageContent) { + h.starts++ +} + +func (h *recordingCallbacks) HandleLLMGenerateContentEnd(context.Context, *llms.ContentResponse) { + h.ends++ +} + +func TestAnAnsweredCallClosesTheCallbackPair(t *testing.T) { + t.Parallel() + + srv, _ := serveJSON(t, `{"choices":[{"message":{"content":"sixty rooms are free"},"finish_reason":"stop"}]}`) + llm, err := New(WithToken("t"), WithURL(srv.URL), WithModel("m")) + if err != nil { + t.Fatalf("New() error: %v", err) + } + handler := &recordingCallbacks{} + llm.CallbacksHandler = handler + + if _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}); err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + + if handler.starts != 1 { + t.Fatalf("HandleLLMGenerateContentStart calls = %d, want 1", handler.starts) + } + if handler.ends != 1 { + t.Fatalf("an answered call must close the span it opened: End calls = %d, want 1", handler.ends) + } + if handler.errors != 0 { + t.Fatalf("HandleLLMError calls = %d, want 0", handler.errors) + } +} diff --git a/llms/huggingface/warnings.go b/llms/huggingface/warnings.go new file mode 100644 index 000000000..e83fffb5f --- /dev/null +++ b/llms/huggingface/warnings.go @@ -0,0 +1,74 @@ +package huggingface + +import ( + "strconv" + + "github.com/vxcontrol/langchaingo/llms" +) + +func reportHuggingFaceOptions( + warn *llms.Warnings, model string, opts *llms.CallOptions, messages []llms.MessageContent, +) { + const unread = "the door builds no field for it" + + warn.AddUnreadExtraBody(model, *opts, extraBodyUnread) + warn.AddUnreadOptions(model, *opts, unread, "WithSeed") + + drop := func(option, asked string) { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: option, Model: model, + Asked: asked, Reason: unread, + }) + } + reportHuggingFaceShapedOptions(opts, drop) + if cfg := opts.Reasoning; cfg != nil && cfg.HasExplicitTokens() { + drop("WithReasoning", strconv.Itoa(cfg.Tokens)+" tokens") + } + reportHuggingFaceMessages(warn, model, messages) +} + +func reportHuggingFaceShapedOptions(opts *llms.CallOptions, drop func(option, asked string)) { + if len(opts.StopWords) > 0 { + drop("WithStopWords", strconv.Itoa(len(opts.StopWords))+" words") + } + if len(opts.Tools) > 0 { + drop("WithTools", strconv.Itoa(len(opts.Tools))+" tools") + } + if len(opts.Functions) > 0 { + drop("WithFunctions", strconv.Itoa(len(opts.Functions))+" functions") + } + if kind, name := llms.ClassifyToolChoice(opts.ToolChoice); kind != llms.ToolChoiceUnset && + kind != llms.ToolChoiceAuto { + asked := name + if asked == "" { + asked = kind.String() + } + drop("WithToolChoice", asked) + } + if opts.StreamingFunc != nil { + drop("WithStreamingFunc", "a callback") + } + if opts.StructuredOutput != nil { + drop("WithStructuredOutput", opts.StructuredOutput.Name) + } +} + +func reportHuggingFaceMessages(warn *llms.Warnings, model string, messages []llms.MessageContent) { + carried := 0 + if len(messages) > 0 && len(messages[0].Parts) > 0 { + carried = 1 + } + total := 0 + for _, m := range messages { + total += len(m.Parts) + } + if total > carried { + warn.Add(llms.Warning{ + Kind: llms.WarningClamp, Option: "messages", Model: model, + Asked: strconv.Itoa(total) + " parts", Sent: strconv.Itoa(carried) + " part", + Reason: "the door sends the first part of the first message as the whole prompt", + }) + } +} + +const extraBodyUnread = "the door builds its request through a vendor SDK and has nowhere to merge them" diff --git a/llms/huggingface/warnings_test.go b/llms/huggingface/warnings_test.go new file mode 100644 index 000000000..b2546a8e8 --- /dev/null +++ b/llms/huggingface/warnings_test.go @@ -0,0 +1,135 @@ +package huggingface + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func generateForWarnings(t *testing.T, messages []llms.MessageContent, call ...llms.CallOption) *llms.ContentResponse { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"choices":[{"message":{"content":"hi"},"finish_reason":"stop"}]}`) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithToken("t"), WithURL(srv.URL), WithModel("Qwen/Qwen3-32B")) + require.NoError(t, err) + + resp, err := llm.GenerateContent(context.Background(), messages, call...) + require.NoError(t, err) + return resp +} + +func hfWarningsByOption(warnings []llms.Warning) map[string]llms.Warning { + byOption := make(map[string]llms.Warning, len(warnings)) + for _, w := range warnings { + byOption[w.Option] = w + } + return byOption +} + +func oneMessage() []llms.MessageContent { + return []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")} +} + +func TestEveryOptionWithNoFieldOnThisDoorIsReported(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, oneMessage(), + llms.WithMaxLength(100), llms.WithTopK(5), llms.WithMinLength(2), + llms.WithN(2), llms.WithCandidateCount(3), llms.WithTopLogProbs(4), + llms.WithMinP(0.1), llms.WithRepetitionPenalty(1.1), + llms.WithFrequencyPenalty(0.5), llms.WithPresencePenalty(0.25), + llms.WithLogProbs(true), llms.WithStopWords([]string{"STOP"}), + llms.WithJSONMode(), + ) + + got := hfWarningsByOption(resp.Warnings) + for option, asked := range map[string]string{ + "WithMaxLength": "100", "WithTopK": "5", "WithMinLength": "2", + "WithN": "2", "WithCandidateCount": "3", "WithTopLogProbs": "4", + "WithMinP": "0.1", "WithRepetitionPenalty": "1.1", + "WithFrequencyPenalty": "0.5", "WithPresencePenalty": "0.25", + "WithLogProbs": "true", "WithStopWords": "1 words", "WithJSONMode": "true", + } { + w, ok := got[option] + require.True(t, ok, "no %s warning in %v", option, resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, asked, w.Asked) + require.Equal(t, "Qwen/Qwen3-32B", w.Model) + } +} + +func TestTheMessagesThisDoorLeavesBehindAreReported(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeSystem, "be brief"), + llms.TextParts(llms.ChatMessageTypeHuman, "hi", "and again"), + }) + + w, ok := hfWarningsByOption(resp.Warnings)["messages"] + require.True(t, ok, "no messages warning in %v", resp.Warnings) + require.Equal(t, llms.WarningClamp, w.Kind) + require.Equal(t, "3 parts", w.Asked) + require.Equal(t, "1 part", w.Sent) +} + +func TestAPlainHuggingFaceCallCarriesNoWarnings(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, oneMessage(), llms.WithTemperature(0.2)) + require.Empty(t, resp.Warnings) +} + +func TestAThinkingTokenBudgetHasNoFieldOnThisDoor(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, oneMessage(), + llms.WithMaxLength(8192), llms.WithReasoning(llms.ReasoningHigh, 4096)) + + w, ok := hfWarningsByOption(resp.Warnings)["WithReasoning"] + require.True(t, ok, "no reasoning warning in %v", resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, "4096 tokens", w.Asked) +} + +func TestExtraBodyThisDoorCannotMergeIsReported(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, oneMessage(), llms.WithExtraBody(map[string]any{"enable_thinking": false, "chat_template_kwargs": map[string]any{}})) + + w, ok := hfWarningsByOption(resp.Warnings)["WithExtraBody"] + require.True(t, ok, "no extra-body warning in %v", resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, "chat_template_kwargs, enable_thinking", w.Asked) +} + +func TestTheHuggingFaceDoorReportsEachOptionOnce(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithLogProbs(true), llms.WithMinP(0.05), llms.WithTopK(40), + llms.WithN(2), llms.WithCandidateCount(3), llms.WithTopLogProbs(5), + llms.WithMinLength(10), llms.WithMaxLength(20), llms.WithJSONMode()) + + seen := make(map[string]int, len(resp.Warnings)) + for _, w := range resp.Warnings { + seen[w.Option]++ + } + for option, count := range seen { + require.Equal(t, 1, count, "%s reported %d times: %v", option, count, resp.Warnings) + } + require.Contains(t, seen, "WithLogProbs", "the door builds no logprobs field") +} diff --git a/llms/huggingface/wire_test.go b/llms/huggingface/wire_test.go new file mode 100644 index 000000000..8d2688eff --- /dev/null +++ b/llms/huggingface/wire_test.go @@ -0,0 +1,78 @@ +package huggingface + +import ( + "context" + "io" + "net/http" + "net/url" + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +type capturingTransport struct { + body []byte + requests []*url.URL + reply string +} + +func (c *capturingTransport) RoundTrip(r *http.Request) (*http.Response, error) { + c.requests = append(c.requests, r.URL) + if r.Body != nil { + c.body, _ = io.ReadAll(r.Body) + } + return &http.Response{ + StatusCode: http.StatusOK, + Header: http.Header{"Content-Type": []string{"application/json"}}, + Body: io.NopCloser(strings.NewReader(c.reply)), + Request: r, + }, nil +} + +func callThroughTransport(t *testing.T, tr *capturingTransport, opts ...Option) { + t.Helper() + + tr.reply = `{"choices":[{"message":{"content":"hi"},"finish_reason":"stop"}]}` + llm, err := New(append([]Option{ + WithToken("t"), + WithModel("gpt2"), + WithHTTPClient(&http.Client{Transport: tr}), + }, opts...)...) + require.NoError(t, err) + + _, err = llm.Call(context.Background(), "hi") + require.NoError(t, err) +} + +func TestWithoutAnExplicitURLTheDoorAddressesTheRouter(t *testing.T) { + t.Parallel() + + tr := &capturingTransport{} + callThroughTransport(t, tr) + + require.Len(t, tr.requests, 1) + assert.Equal(t, "router.huggingface.co", tr.requests[0].Host) +} + +func TestAnExplicitURLSurvivesTheChoiceOfProvider(t *testing.T) { + t.Parallel() + + tr := &capturingTransport{} + tr.reply = `{"choices":[{"message":{"content":"hi"},"finish_reason":"stop"}]}` + llm, err := New( + WithToken("t"), + WithModel("gpt2"), + WithURL("https://proxy.example.test"), + WithInferenceProvider("nebius"), + WithHTTPClient(&http.Client{Transport: tr}), + ) + require.NoError(t, err) + + _, err = llm.Call(context.Background(), "hi") + require.NoError(t, err) + + require.Len(t, tr.requests, 1) + assert.Equal(t, "proxy.example.test", tr.requests[0].Host) +} diff --git a/llms/mistral/call_errors_test.go b/llms/mistral/call_errors_test.go new file mode 100644 index 000000000..b13831ad8 --- /dev/null +++ b/llms/mistral/call_errors_test.go @@ -0,0 +1,61 @@ +package mistral + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func mistralAnswering(t *testing.T, status int, body string) *Model { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(status) + _, _ = io.WriteString(w, body) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithAPIKey("test"), WithEndpoint(srv.URL), WithModel("mistral-small-latest")) + require.NoError(t, err) + return llm +} + +func TestCallReportsAFailedRequestToTheHandler(t *testing.T) { + t.Parallel() + + llm := mistralAnswering(t, http.StatusInternalServerError, `{"error":"upstream is down"}`) + rec := &errorRecorder{} + llm.CallbacksHandler = rec + + out, err := llm.Call(context.Background(), "hi") + + require.Error(t, err) + assert.Empty(t, out) + require.Len(t, rec.errs, 1, "a failed request must reach the handler exactly once") + assert.ErrorIs(t, rec.errs[0], err) +} + +func TestCallRejectsAnAnswerThatIsNotASingleChoice(t *testing.T) { + t.Parallel() + + llm := mistralAnswering(t, http.StatusOK, + `{"id":"x","object":"chat.completion","model":"mistral-small-latest","choices":[],`+ + `"usage":{"prompt_tokens":1,"completion_tokens":0,"total_tokens":1}}`) + rec := &errorRecorder{} + llm.CallbacksHandler = rec + + out, err := llm.Call(context.Background(), "hi") + + require.Error(t, err) + assert.Empty(t, out) + assert.Contains(t, err.Error(), "length of the Choices slice must be greater than or equal 1") + require.Len(t, rec.errs, 1) + assert.ErrorIs(t, rec.errs[0], err) +} diff --git a/llms/mistral/call_parity_test.go b/llms/mistral/call_parity_test.go new file mode 100644 index 000000000..01f8f1093 --- /dev/null +++ b/llms/mistral/call_parity_test.go @@ -0,0 +1,82 @@ +package mistral + +import ( + "context" + "fmt" + "io" + "net/http" + "net/http/httptest" + "sync/atomic" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func mistralStreaming(t *testing.T, chunks ...string) *Model { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "text/event-stream") + flusher, _ := w.(http.Flusher) + for _, chunk := range chunks { + _, _ = fmt.Fprintf(w, "data: %s\n\n", chunk) + if flusher != nil { + flusher.Flush() + } + } + _, _ = io.WriteString(w, "data: [DONE]\n\n") + })) + t.Cleanup(srv.Close) + + m, err := New(WithAPIKey("k"), WithEndpoint(srv.URL), WithModel("mistral-small-latest")) + require.NoError(t, err) + return m +} + +func TestCallDeliversTheStreamTheCallerAskedFor(t *testing.T) { + t.Parallel() + + m := mistralStreaming(t, + `{"id":"x","object":"chat.completion.chunk","created":1,"model":"mistral-small-latest",`+ + `"choices":[{"index":0,"delta":{"role":"assistant","content":"an "},"finish_reason":""}]}`, + `{"id":"x","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"answer"},"finish_reason":"stop"}]}`) + + var chunks int32 + got, err := m.Call(context.Background(), "hi", + llms.WithStreamingFunc(func(_ context.Context, c streaming.Chunk) error { + if c.Type == streaming.ChunkTypeText { + atomic.AddInt32(&chunks, 1) + } + return nil + })) + + require.NoError(t, err) + assert.Equal(t, "an answer", got) + assert.Positive(t, atomic.LoadInt32(&chunks), + "a caller that passed a streaming callback to Call must be called with the text") +} + +func TestCallRefusesATruncatedAnswerWhenAskedTo(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"x","object":"chat.completion","created":1,"model":"mistral-small-latest",`+ + `"choices":[{"index":0,"message":{"role":"assistant","content":"half an ans"},"finish_reason":"length"}],`+ + `"usage":{"prompt_tokens":1,"completion_tokens":16,"total_tokens":17}}`) + })) + t.Cleanup(srv.Close) + + m, err := New(WithAPIKey("k"), WithEndpoint(srv.URL), WithModel("mistral-small-latest")) + require.NoError(t, err) + + _, err = m.Call(context.Background(), "hi", llms.WithMaxTokens(16), llms.WithFailOnTruncation()) + + require.Error(t, err, "Call must refuse a truncated answer when the caller forbade truncation") + require.True(t, llms.IsTruncatedError(err), "the refusal must say the answer was cut, got %v", err) +} diff --git a/llms/mistral/callbacks_handler_test.go b/llms/mistral/callbacks_handler_test.go new file mode 100644 index 000000000..9429b22c8 --- /dev/null +++ b/llms/mistral/callbacks_handler_test.go @@ -0,0 +1,33 @@ +package mistral + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/callbacks" +) + +type countingHandler struct{ callbacks.SimpleHandler } + +func TestTheCallersCallbacksHandlerReachesTheModel(t *testing.T) { + t.Parallel() + + handler := &countingHandler{} + llm, err := New(WithAPIKey("test"), WithCallbacksHandler(handler)) + require.NoError(t, err) + + assert.Same(t, handler, llm.CallbacksHandler, + "the handler the caller passed must be the one the model calls") +} + +func TestWithoutACallbacksHandlerTheModelKeepsTheEmptyOne(t *testing.T) { + t.Parallel() + + llm, err := New(WithAPIKey("test")) + require.NoError(t, err) + + assert.Equal(t, callbacks.SimpleHandler{}, llm.CallbacksHandler, + "the default stays the do-nothing handler") +} diff --git a/llms/mistral/chat_wire_test.go b/llms/mistral/chat_wire_test.go new file mode 100644 index 000000000..061e83381 --- /dev/null +++ b/llms/mistral/chat_wire_test.go @@ -0,0 +1,114 @@ +package mistral + +import ( + "context" + "encoding/json" + "fmt" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + sdk "github.com/gage-technologies/mistral-go" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func chatBodyOnTheWire(t *testing.T, call ...llms.CallOption) map[string]any { + t.Helper() + + var raw []byte + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + raw, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"x","object":"chat.completion","created":1,"model":"mistral-small-latest",`+ + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],`+ + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`) + })) + t.Cleanup(srv.Close) + + m, err := New(WithAPIKey("k"), WithEndpoint(srv.URL), WithModel("mistral-small-latest")) + require.NoError(t, err) + _, err = m.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, call...) + require.NoError(t, err) + + var body map[string]any + require.NoError(t, json.Unmarshal(raw, &body)) + return body +} + +func TestACallWithoutToolsDoesNotAnnounceTools(t *testing.T) { + t.Parallel() + + body := chatBodyOnTheWire(t) + + assert.NotContains(t, body, "tools", + "a caller that named no tool must not have one announced for it") +} + +func TestACallWithToolsCarriesThem(t *testing.T) { + t.Parallel() + + tools := []llms.Tool{{ + Type: "function", + Function: &llms.FunctionDefinition{ + Name: "rooms_free", + Description: "how many rooms are free", + Parameters: map[string]any{ + "type": "object", + "properties": map[string]any{"floor": map[string]any{"type": "integer"}}, + }, + }, + }} + + body := chatBodyOnTheWire(t, llms.WithTools(tools)) + + carried, ok := body["tools"].([]any) + require.True(t, ok, "the tools the caller named reach the wire") + require.Len(t, carried, 1) +} + +func TestUsageSurvivesAChunkThatDoesNotCarryIt(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "text/event-stream") + flusher, _ := w.(http.Flusher) + for _, chunk := range []string{ + `{"id":"x","object":"chat.completion.chunk","created":17,"model":"mistral-small-latest",` + + `"choices":[{"index":0,"delta":{"role":"assistant","content":"an answer"},"finish_reason":""}],` + + `"usage":{"prompt_tokens":5,"completion_tokens":3,"total_tokens":8}}`, + `{"id":"x","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":""},"finish_reason":"stop"}]}`, + } { + _, _ = fmt.Fprintf(w, "data: %s\n\n", chunk) + if flusher != nil { + flusher.Flush() + } + } + _, _ = io.WriteString(w, "data: [DONE]\n\n") + })) + t.Cleanup(srv.Close) + + m, err := New(WithAPIKey("k"), WithEndpoint(srv.URL), WithModel("mistral-small-latest")) + require.NoError(t, err) + + sink := func(context.Context, streaming.Chunk) error { return nil } + resp, err := m.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStreamingFunc(sink)) + require.NoError(t, err) + + info := resp.Choices[0].GenerationInfo + usage, ok := info["usage"].(sdk.UsageInfo) + require.True(t, ok, "the usage the vendor sent reaches the caller") + assert.Equal(t, 8, usage.TotalTokens, + "a later chunk without usage must not erase the count the vendor already gave") + assert.Equal(t, 17, info["created"], + "the same holds for the fields that ride along with it") +} diff --git a/llms/mistral/client_options.go b/llms/mistral/client_options.go index d30f3c18e..a2f63f9b5 100644 --- a/llms/mistral/client_options.go +++ b/llms/mistral/client_options.go @@ -1,18 +1,24 @@ package mistral import ( + "net/http" "time" "github.com/vxcontrol/langchaingo/callbacks" ) +const defaultModel = "ministral-8b-latest" + type clientOptions struct { apiKey string endpoint string maxRetries int timeout time.Duration model string + embeddingModel string callbacksHandler callbacks.Handler + + embeddingHTTPClient *http.Client } type Option func(*clientOptions) @@ -45,13 +51,29 @@ func WithTimeout(timeout time.Duration) Option { } } -// Sets the model name for the Model being instantiated. Defaults to "open-mistral-7b". See https://docs.mistral.ai/platform/endpoints/ for a full list of supported models. +// Sets the model name for the Model being instantiated. See https://docs.mistral.ai/models/overview for the models the vendor currently serves. func WithModel(model string) Option { return func(o *clientOptions) { o.model = model } } +// Sets the model name the Model being instantiated embeds with. A gateway routes +// by its own name, so a prefixed spelling goes here rather than in the endpoint. +func WithEmbeddingModel(embeddingModel string) Option { + return func(o *clientOptions) { + o.embeddingModel = embeddingModel + } +} + +// Sets the HTTP client the embeddings request travels on. The chat surface takes +// no client: it is built on the vendor SDK, which makes its own. +func WithEmbeddingHTTPClient(client *http.Client) Option { + return func(o *clientOptions) { + o.embeddingHTTPClient = client + } +} + // Sets the Langchain callbacks handler to use for the Model being instantiated. Defaults to callbacks.SimpleHandler. func WithCallbacksHandler(callbacksHandler callbacks.Handler) Option { return func(o *clientOptions) { diff --git a/llms/mistral/default_model_test.go b/llms/mistral/default_model_test.go new file mode 100644 index 000000000..db54a9858 --- /dev/null +++ b/llms/mistral/default_model_test.go @@ -0,0 +1,37 @@ +package mistral + +import ( + "encoding/json" + "os" + "testing" +) + +const vendorListingSnapshot = "../reasoning/testdata/mistral_models.json" + +func TestTheDefaultModelIsOneTheVendorStillServes(t *testing.T) { + t.Parallel() + + body, err := os.ReadFile(vendorListingSnapshot) + if err != nil { + t.Fatalf("read %s: %v", vendorListingSnapshot, err) + } + var listing map[string]json.RawMessage + if err := json.Unmarshal(body, &listing); err != nil { + t.Fatalf("parse %s: %v", vendorListingSnapshot, err) + } + if len(listing) == 0 { + t.Fatalf("%s is empty, so it would accept any default; refresh it with "+ + "go generate ./llms/reasoning", vendorListingSnapshot) + } + + llm, err := New() + if err != nil { + t.Fatalf("New: %v", err) + } + got := llm.clientOptions.model + if _, served := listing[got]; !served { + t.Fatalf("default model %q is not in the vendor listing %s: a caller that never "+ + "passes WithModel gets a retired id and the vendor rejects the call", + got, vendorListingSnapshot) + } +} diff --git a/llms/mistral/embed_endpoint_test.go b/llms/mistral/embed_endpoint_test.go new file mode 100644 index 000000000..07df64f7c --- /dev/null +++ b/llms/mistral/embed_endpoint_test.go @@ -0,0 +1,85 @@ +package mistral + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func embeddingPathOnTheWire(t *testing.T, prefix string) string { + t.Helper() + + var got string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + got = r.URL.Path + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"data":[{"embedding":[0.1,0.2]}]}`)) + })) + t.Cleanup(srv.Close) + + m, err := New(WithEndpoint(srv.URL+prefix), WithAPIKey("k")) + require.NoError(t, err) + _, err = m.CreateEmbedding(context.Background(), []string{"x"}) + require.NoError(t, err) + return got +} + +func TestTheConfiguredEndpointKeepsItsPrefix(t *testing.T) { + t.Parallel() + + assert.Equal(t, "/v1/embeddings", embeddingPathOnTheWire(t, ""), + "an endpoint that is a bare host still reaches the vendor's own path") + assert.Equal(t, "/mistral/v1/embeddings", embeddingPathOnTheWire(t, "/mistral"), + "a gateway prefix is part of the address the caller configured, not decoration") + assert.Equal(t, "/v1/embeddings", embeddingPathOnTheWire(t, "/v1"), + "an endpoint that already names the version does not get it twice") + assert.Equal(t, "/mistral/v1/embeddings", embeddingPathOnTheWire(t, "/mistral/v1"), + "a prefix that already names the version keeps both, and each of them once") + assert.Equal(t, "/openai/v1/embeddings", embeddingPathOnTheWire(t, "/openai/v1"), + "the same base the openai door is given resolves to the same address on this door") +} + +func TestAnEmbeddingRefusalNamesWhatTheVendorSaid(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.WriteHeader(http.StatusNotFound) + _, _ = w.Write([]byte(`{"message":"no route for that prefix"}`)) + })) + t.Cleanup(srv.Close) + + m, err := New(WithEndpoint(srv.URL), WithAPIKey("k")) + require.NoError(t, err) + + _, err = m.CreateEmbedding(context.Background(), []string{"x"}) + require.ErrorIs(t, err, ErrEmbeddingFailed) + assert.Contains(t, err.Error(), "no route for that prefix", + "the caller sees what the vendor answered, not just that something failed") +} + +func TestACancelledContextStopsTheEmbeddingCall(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"data":[{"embedding":[0.1]}]}`)) + })) + t.Cleanup(srv.Close) + + m, err := New(WithEndpoint(srv.URL), WithAPIKey("k")) + require.NoError(t, err) + + ctx, cancel := context.WithCancel(context.Background()) + cancel() + + _, err = m.CreateEmbedding(ctx, []string{"x"}) + require.ErrorIs(t, err, context.Canceled, + "the caller's cancellation reaches the request, it is not ignored") +} diff --git a/llms/mistral/embed_model_wire_test.go b/llms/mistral/embed_model_wire_test.go new file mode 100644 index 000000000..3d0a0eeea --- /dev/null +++ b/llms/mistral/embed_model_wire_test.go @@ -0,0 +1,47 @@ +package mistral + +import ( + "context" + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func embeddingModelOnTheWire(t *testing.T, opts ...Option) string { + t.Helper() + + var got string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + var body struct { + Model string `json:"model"` + } + require.NoError(t, json.Unmarshal(b, &body)) + got = body.Model + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"data":[{"embedding":[0.1,0.2]}]}`)) + })) + t.Cleanup(srv.Close) + + m, err := New(append([]Option{WithEndpoint(srv.URL), WithAPIKey("k")}, opts...)...) + require.NoError(t, err) + _, err = m.CreateEmbedding(context.Background(), []string{"x"}) + require.NoError(t, err) + return got +} + +func TestTheCallersEmbeddingModelReachesTheWire(t *testing.T) { + t.Parallel() + + assert.Equal(t, "mistral-embed", embeddingModelOnTheWire(t), + "a caller that named no model still embeds, and not with the chat default") + assert.Equal(t, "mistral/mistral-embed", embeddingModelOnTheWire(t, WithEmbeddingModel("mistral/mistral-embed")), + "the named model must reach the wire: a gateway routes by the prefixed name") + assert.Equal(t, "mistral-embed", embeddingModelOnTheWire(t, WithModel("ministral-8b-latest")), + "WithModel names the chat model and must not follow the caller into embeddings") +} diff --git a/llms/mistral/embed_short_response_test.go b/llms/mistral/embed_short_response_test.go new file mode 100644 index 000000000..023205ef4 --- /dev/null +++ b/llms/mistral/embed_short_response_test.go @@ -0,0 +1,54 @@ +package mistral + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func embedAgainst(t *testing.T, body string, inputs ...string) ([][]float32, error) { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, body) + })) + t.Cleanup(srv.Close) + + m, err := New(WithEndpoint(srv.URL), WithAPIKey("k")) + require.NoError(t, err) + return m.CreateEmbedding(context.Background(), inputs) +} + +func TestAnEmptyEmbeddingListIsAFailure(t *testing.T) { + t.Parallel() + + got, err := embedAgainst(t, `{"id":"x","object":"list","data":[],"model":"mistral-embed"}`, "one") + + require.ErrorIs(t, err, ErrEmptyEmbeddings) + assert.Nil(t, got, "a caller that gets an error must not also get a slice to index") +} + +func TestFewerEmbeddingsThanInputsIsAFailure(t *testing.T) { + t.Parallel() + + got, err := embedAgainst(t, `{"data":[{"embedding":[0.1,0.2]}]}`, "one", "two") + + require.ErrorIs(t, err, ErrShortEmbeddings) + assert.Nil(t, got) +} + +func TestOneEmbeddingPerInputIsTheHappyPath(t *testing.T) { + t.Parallel() + + got, err := embedAgainst(t, `{"data":[{"embedding":[0.1,0.2]},{"embedding":[0.3,0.4]}]}`, "one", "two") + + require.NoError(t, err) + require.Len(t, got, 2) + assert.InDelta(t, float32(0.3), got[1][0], 1e-6) +} diff --git a/llms/mistral/embed_transport_test.go b/llms/mistral/embed_transport_test.go new file mode 100644 index 000000000..0a57d7672 --- /dev/null +++ b/llms/mistral/embed_transport_test.go @@ -0,0 +1,176 @@ +package mistral + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "sync" + "sync/atomic" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func countingServer(t *testing.T, status func(attempt int32) int) (*httptest.Server, *int32) { + t.Helper() + + var seen int32 + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + attempt := atomic.AddInt32(&seen, 1) + code := status(attempt) + if code != http.StatusOK { + w.WriteHeader(code) + return + } + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"data":[{"embedding":[0.1,0.2]}]}`) + })) + t.Cleanup(srv.Close) + return srv, &seen +} + +func TestTheEmbeddingCallRetriesAsManyTimesAsTheCallerAsked(t *testing.T) { + t.Parallel() + + srv, seen := countingServer(t, func(int32) int { return http.StatusInternalServerError }) + + m, err := New(WithEndpoint(srv.URL), WithAPIKey("k"), WithMaxRetries(3)) + require.NoError(t, err) + _, err = m.CreateEmbedding(context.Background(), []string{"x"}) + + require.ErrorIs(t, err, ErrEmbeddingFailed) + assert.Equal(t, int32(3), atomic.LoadInt32(seen), + "three attempts were asked for, so the vendor sees three requests") +} + +func TestARetriedEmbeddingCallReturnsTheVectorItEventuallyGot(t *testing.T) { + t.Parallel() + + srv, seen := countingServer(t, func(attempt int32) int { + if attempt < 3 { + return http.StatusServiceUnavailable + } + return http.StatusOK + }) + + m, err := New(WithEndpoint(srv.URL), WithAPIKey("k"), WithMaxRetries(4)) + require.NoError(t, err) + got, err := m.CreateEmbedding(context.Background(), []string{"x"}) + + require.NoError(t, err) + require.Len(t, got, 1) + assert.Equal(t, int32(3), atomic.LoadInt32(seen)) +} + +func TestARetryWaitsBeforeItAsksAgain(t *testing.T) { + t.Parallel() + + var mu sync.Mutex + var arrivals []time.Time + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + mu.Lock() + arrivals = append(arrivals, time.Now()) + isFirst := len(arrivals) == 1 + mu.Unlock() + if isFirst { + w.WriteHeader(http.StatusServiceUnavailable) + return + } + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"data":[{"embedding":[0.1,0.2]}]}`) + })) + t.Cleanup(srv.Close) + + m, err := New(WithEndpoint(srv.URL), WithAPIKey("k"), WithMaxRetries(2)) + require.NoError(t, err) + _, err = m.CreateEmbedding(context.Background(), []string{"x"}) + require.NoError(t, err) + + mu.Lock() + defer mu.Unlock() + require.Len(t, arrivals, 2) + assert.GreaterOrEqual(t, arrivals[1].Sub(arrivals[0]), retryBackoffStep, + "a vendor that answered 503 gets a pause before the next request") +} + +func TestARefusalTheVendorWillNotChangeIsNotRetried(t *testing.T) { + t.Parallel() + + srv, seen := countingServer(t, func(int32) int { return http.StatusUnauthorized }) + + m, err := New(WithEndpoint(srv.URL), WithAPIKey("k"), WithMaxRetries(5)) + require.NoError(t, err) + _, err = m.CreateEmbedding(context.Background(), []string{"x"}) + + require.ErrorIs(t, err, ErrEmbeddingFailed) + assert.Equal(t, int32(1), atomic.LoadInt32(seen), + "401 is the vendor's answer, not a hiccup to sit out") +} + +func TestACancelledContextStopsTheRetries(t *testing.T) { + t.Parallel() + + ctx, cancel := context.WithCancel(context.Background()) + var seen int32 + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + atomic.AddInt32(&seen, 1) + cancel() + w.WriteHeader(http.StatusInternalServerError) + })) + t.Cleanup(srv.Close) + + m, err := New(WithEndpoint(srv.URL), WithAPIKey("k"), WithMaxRetries(5)) + require.NoError(t, err) + + started := time.Now() + _, err = m.CreateEmbedding(ctx, []string{"x"}) + elapsed := time.Since(started) + + require.Error(t, err) + assert.Equal(t, int32(1), atomic.LoadInt32(&seen), + "a cancelled caller does not keep the vendor busy") + assert.Less(t, elapsed, retryBackoffStep, + "a cancelled caller gets its answer now, not after the whole backoff ladder") +} + +func TestZeroRetriesStillSendsTheRequestOnce(t *testing.T) { + t.Parallel() + + srv, seen := countingServer(t, func(int32) int { return http.StatusOK }) + + m, err := New(WithEndpoint(srv.URL), WithAPIKey("k"), WithMaxRetries(0)) + require.NoError(t, err) + got, err := m.CreateEmbedding(context.Background(), []string{"x"}) + + require.NoError(t, err) + require.Len(t, got, 1) + assert.Equal(t, int32(1), atomic.LoadInt32(seen)) +} + +type recordingTransport struct { + seen *int32 +} + +func (r *recordingTransport) RoundTrip(req *http.Request) (*http.Response, error) { + atomic.AddInt32(r.seen, 1) + return http.DefaultTransport.RoundTrip(req) +} + +func TestTheEmbeddingRequestTravelsOnTheCallersClient(t *testing.T) { + t.Parallel() + + srv, _ := countingServer(t, func(int32) int { return http.StatusOK }) + + var through int32 + m, err := New(WithEndpoint(srv.URL), WithAPIKey("k"), + WithEmbeddingHTTPClient(&http.Client{Transport: &recordingTransport{seen: &through}})) + require.NoError(t, err) + _, err = m.CreateEmbedding(context.Background(), []string{"x"}) + + require.NoError(t, err) + assert.Equal(t, int32(1), atomic.LoadInt32(&through), + "the caller's transport carries the request, not a client the door made") +} diff --git a/llms/mistral/mistralembed.go b/llms/mistral/mistralembed.go index f9bb11f18..348dbce72 100644 --- a/llms/mistral/mistralembed.go +++ b/llms/mistral/mistralembed.go @@ -1,11 +1,39 @@ package mistral import ( + "bytes" "context" + "encoding/json" "errors" + "fmt" + "io" + "net/http" + "net/url" + "path" + "strings" + "time" ) -var ErrEmptyEmbeddings = errors.New("empty embeddings") +var ( + ErrEmptyEmbeddings = errors.New("empty embeddings") + ErrShortEmbeddings = errors.New("mistral: fewer embeddings than inputs") + ErrEmbeddingFailed = errors.New("mistral: embedding request failed") +) + +var retryEmbeddingStatus = map[int]bool{ + http.StatusTooManyRequests: true, + http.StatusInternalServerError: true, + http.StatusBadGateway: true, + http.StatusServiceUnavailable: true, + http.StatusGatewayTimeout: true, +} + +const ( + retryBackoffStep = 500 * time.Millisecond + defaultEmbeddingModel = "mistral-embed" + apiVersionSegment = "v1" + embeddingsSegment = "embeddings" +) func convertFloat64ToFloat32(input []float64) []float32 { // Create a slice with the same length as the input. @@ -19,14 +47,113 @@ func convertFloat64ToFloat32(input []float64) []float32 { return output } +func (m *Model) embeddingsURL() (string, error) { + endpoint, err := url.Parse(m.clientOptions.endpoint) + if err != nil { + return "", fmt.Errorf("%w: %w", ErrEmbeddingFailed, err) + } + if path.Base(endpoint.Path) != apiVersionSegment { + endpoint.Path = path.Join(endpoint.Path, apiVersionSegment) + } + endpoint.Path = path.Join(endpoint.Path, embeddingsSegment) + return endpoint.String(), nil +} + +func (m *Model) embeddingsHTTPClient() *http.Client { + if m.clientOptions.embeddingHTTPClient != nil { + return m.clientOptions.embeddingHTTPClient + } + return &http.Client{Timeout: m.clientOptions.timeout} +} + +func (m *Model) postEmbeddings(ctx context.Context, endpoint string, body []byte) (*http.Response, error) { + client := m.embeddingsHTTPClient() + + attempts := m.clientOptions.maxRetries + if attempts < 1 { + attempts = 1 + } + + var lastErr error + for attempt := range attempts { + if attempt > 0 { + select { + case <-ctx.Done(): + return nil, fmt.Errorf("%w: %w", ErrEmbeddingFailed, ctx.Err()) + case <-time.After(time.Duration(attempt) * retryBackoffStep): + } + } + + req, err := http.NewRequestWithContext(ctx, http.MethodPost, endpoint, bytes.NewReader(body)) + if err != nil { + return nil, fmt.Errorf("%w: %w", ErrEmbeddingFailed, err) + } + req.Header.Set("Authorization", "Bearer "+m.clientOptions.apiKey) + req.Header.Set("Content-Type", "application/json") + req.Header.Set("Accept", "application/json") + + resp, err := client.Do(req) + if err != nil { + lastErr = fmt.Errorf("%w: %w", ErrEmbeddingFailed, err) + continue + } + if !retryEmbeddingStatus[resp.StatusCode] { + return resp, nil + } + + detail, _ := io.ReadAll(io.LimitReader(resp.Body, 4096)) + resp.Body.Close() + lastErr = fmt.Errorf("%w: %s: %s", ErrEmbeddingFailed, resp.Status, strings.TrimSpace(string(detail))) + } + + return nil, lastErr +} + // CreateEmbedding implements the embeddings.EmbedderClient interface and creates embeddings for the given input texts. -func (m *Model) CreateEmbedding(_ context.Context, inputTexts []string) ([][]float32, error) { - embsRes, err := m.client.Embeddings("mistral-embed", inputTexts) +func (m *Model) CreateEmbedding(ctx context.Context, inputTexts []string) ([][]float32, error) { + model := m.clientOptions.embeddingModel + if model == "" { + model = defaultEmbeddingModel + } + + endpoint, err := m.embeddingsURL() + if err != nil { + return nil, err + } + body, err := json.Marshal(map[string]any{"model": model, "input": inputTexts}) if err != nil { - return nil, errors.New("failed to create embeddings: " + err.Error()) + return nil, fmt.Errorf("%w: %w", ErrEmbeddingFailed, err) } - allEmbds := make([][]float32, len(embsRes.Data)) - for i, embs := range embsRes.Data { + + resp, err := m.postEmbeddings(ctx, endpoint, body) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + detail, _ := io.ReadAll(io.LimitReader(resp.Body, 4096)) + return nil, fmt.Errorf("%w: %s: %s", ErrEmbeddingFailed, resp.Status, strings.TrimSpace(string(detail))) + } + + var decoded struct { + Data []struct { + Embedding []float64 `json:"embedding"` + } `json:"data"` + } + if err := json.NewDecoder(resp.Body).Decode(&decoded); err != nil { + return nil, fmt.Errorf("%w: %w", ErrEmbeddingFailed, err) + } + + if len(decoded.Data) == 0 { + return nil, ErrEmptyEmbeddings + } + if len(decoded.Data) != len(inputTexts) { + return nil, ErrShortEmbeddings + } + + allEmbds := make([][]float32, len(decoded.Data)) + for i, embs := range decoded.Data { if len(embs.Embedding) == 0 { return nil, ErrEmptyEmbeddings } diff --git a/llms/mistral/mistralmodel.go b/llms/mistral/mistralmodel.go index 4ca571a5f..165f2a6ad 100644 --- a/llms/mistral/mistralmodel.go +++ b/llms/mistral/mistralmodel.go @@ -2,8 +2,13 @@ package mistral import ( "context" + "crypto/rand" "errors" + "fmt" + "math" + "math/big" "os" + "strings" "github.com/vxcontrol/langchaingo/callbacks" "github.com/vxcontrol/langchaingo/llms" @@ -29,60 +34,68 @@ func New(opts ...Option) (*Model, error) { endpoint: sdk.Endpoint, maxRetries: sdk.DefaultMaxRetries, timeout: sdk.DefaultTimeout, - model: sdk.ModelOpenMistral7b, + model: defaultModel, } for _, opt := range opts { opt(options) } + handler := options.callbacksHandler + if handler == nil { + handler = callbacks.SimpleHandler{} + } + return &Model{ clientOptions: options, client: sdk.NewMistralClient(options.apiKey, options.endpoint, options.maxRetries, options.timeout), - CallbacksHandler: callbacks.SimpleHandler{}, + CallbacksHandler: handler, }, nil } // Call implements the langchaingo llms.Model interface. func (m *Model) Call(ctx context.Context, prompt string, options ...llms.CallOption) (string, error) { - callOptions := resolveDefaultOptions(sdk.DefaultChatRequestParams, m.clientOptions) - setCallOptions(options, callOptions) - mistralChatParams := mistralChatParamsFromCallOptions(callOptions) - - messages := []sdk.ChatMessage{{ - Role: "user", - Content: prompt, - }} - res, err := m.client.Chat(callOptions.GetModel(), messages, &mistralChatParams) - if err != nil { - m.CallbacksHandler.HandleLLMError(ctx, err) - return "", err - } - if len(res.Choices) != 1 { - m.CallbacksHandler.HandleLLMError(ctx, err) - return "", errors.New("unexpected response from Mistral SDK, length of the Choices slice must be 1") - } - - return res.Choices[0].Message.Content, nil + return llms.GenerateFromSinglePrompt(ctx, m, prompt, options...) } // GenerateContent implements the langchaingo llms.Model interface. -func (m *Model) GenerateContent(ctx context.Context, langchainMessages []llms.MessageContent, options ...llms.CallOption) (*llms.ContentResponse, error) { +func (m *Model) GenerateContent(ctx context.Context, langchainMessages []llms.MessageContent, options ...llms.CallOption) (resp *llms.ContentResponse, err error) { //nolint:lll,nonamedreturns + if m.CallbacksHandler != nil { + m.CallbacksHandler.HandleLLMGenerateContentStart(ctx, langchainMessages) + defer func() { + if err != nil { + m.CallbacksHandler.HandleLLMError(ctx, err) + } else { + m.CallbacksHandler.HandleLLMGenerateContentEnd(ctx, resp) + } + }() + } + callOptions := resolveDefaultOptions(sdk.DefaultChatRequestParams, m.clientOptions) setCallOptions(options, callOptions) - m.CallbacksHandler.HandleLLMGenerateContentStart(ctx, langchainMessages) - chatOpts := mistralChatParamsFromCallOptions(callOptions) + chatOpts, err := mistralChatParamsFromCallOptions(callOptions) + if err != nil { + return nil, err + } messages, err := convertToMistralChatMessages(langchainMessages) if err != nil { return nil, err } + warn := &llms.Warnings{} + reportMistralOptions(warn, callOptions.GetModel(), callOptions) + if callOptions.StreamingFunc != nil { - return generateStreamingContent(ctx, m, callOptions, messages, chatOpts) + resp, err = generateStreamingContent(ctx, m, callOptions, messages, chatOpts) + } else { + resp, err = generateNonStreamingContent(m, callOptions, messages, chatOpts) } - return generateNonStreamingContent(ctx, m, callOptions, messages, chatOpts) + if resp != nil { + resp.Warnings = warn.List() + } + return resp, err } func setCallOptions(options []llms.CallOption, callOpts *llms.CallOptions) { @@ -105,19 +118,25 @@ func resolveDefaultOptions(sdkDefaults sdk.ChatRequestParams, c *clientOptions) Temperature: &sdkDefaults.Temperature, // TopP is the cumulative probability for top-p sampling. TopP: &sdkDefaults.TopP, - // Seed is a seed for deterministic sampling. - Seed: &sdkDefaults.RandomSeed, // Function defitions to include in the request. Functions: make([]llms.FunctionDefinition, 0), } } -func mistralChatParamsFromCallOptions(callOpts *llms.CallOptions) sdk.ChatRequestParams { +func mistralChatParamsFromCallOptions(callOpts *llms.CallOptions) (sdk.ChatRequestParams, error) { chatOpts := sdk.DefaultChatRequestParams chatOpts.MaxTokens = callOpts.GetMaxTokens() chatOpts.Temperature = callOpts.GetTemperature() - chatOpts.RandomSeed = callOpts.GetSeed() - chatOpts.Tools = make([]sdk.Tool, 0) + chatOpts.TopP = callOpts.GetTopP() + seed, err := seedForRequest(callOpts) + if err != nil { + return sdk.ChatRequestParams{}, err + } + chatOpts.RandomSeed = seed + if callOpts.GetJSONMode() { + chatOpts.ResponseFormat = sdk.ResponseFormatJsonObject + } + chatOpts.ToolChoice = mistralToolChoice(callOpts.ToolChoice) if len(callOpts.Tools) > 0 { for _, tool := range callOpts.Tools { chatOpts.Tools = append(chatOpts.Tools, sdk.Tool{ @@ -141,19 +160,27 @@ func mistralChatParamsFromCallOptions(callOpts *llms.CallOptions) sdk.ChatReques }) } } - return chatOpts + return chatOpts, nil } -func generateNonStreamingContent(ctx context.Context, m *Model, callOptions *llms.CallOptions, messages []sdk.ChatMessage, chatOpts sdk.ChatRequestParams) (*llms.ContentResponse, error) { +func seedForRequest(callOpts *llms.CallOptions) (int, error) { + if callOpts.Seed != nil { + return *callOpts.Seed, nil + } + n, err := rand.Int(rand.Reader, big.NewInt(math.MaxInt32)) + if err != nil { + return 0, fmt.Errorf("mistral: drawing a seed: %w", err) + } + return int(n.Int64()), nil +} + +func generateNonStreamingContent(m *Model, callOptions *llms.CallOptions, messages []sdk.ChatMessage, chatOpts sdk.ChatRequestParams) (*llms.ContentResponse, error) { res, err := m.client.Chat(callOptions.GetModel(), messages, &chatOpts) - m.CallbacksHandler.HandleLLMGenerateContentEnd(ctx, nil) if err != nil { - m.CallbacksHandler.HandleLLMError(ctx, err) return nil, err } if len(res.Choices) < 1 { - m.CallbacksHandler.HandleLLMError(ctx, err) return nil, errors.New("unexpected response from Mistral SDK, length of the Choices slice must be greater than or equal 1") } @@ -164,6 +191,7 @@ func generateNonStreamingContent(ctx context.Context, m *Model, callOptions *llm langchainContentResponse.Choices = append(langchainContentResponse.Choices, &llms.ContentChoice{ Content: choice.Message.Content, StopReason: string(choice.FinishReason), + Truncated: llms.IsTruncated(string(choice.FinishReason)), GenerationInfo: map[string]any{ "created": res.Created, "model": res.Model, @@ -185,7 +213,9 @@ func generateNonStreamingContent(ctx context.Context, m *Model, callOptions *llm } } } - m.CallbacksHandler.HandleLLMGenerateContentEnd(ctx, langchainContentResponse) + if err := llms.CheckTruncation(langchainContentResponse, *callOptions); err != nil { + return langchainContentResponse, err + } return langchainContentResponse, nil } @@ -193,7 +223,6 @@ func generateNonStreamingContent(ctx context.Context, m *Model, callOptions *llm func generateStreamingContent(ctx context.Context, m *Model, callOptions *llms.CallOptions, messages []sdk.ChatMessage, chatOpts sdk.ChatRequestParams) (*llms.ContentResponse, error) { chatResChan, err := m.client.ChatStream(callOptions.GetModel(), messages, &chatOpts) if err != nil { - m.CallbacksHandler.HandleLLMError(ctx, err) return nil, err } langchainContentResponse := &llms.ContentResponse{ @@ -205,16 +234,28 @@ func generateStreamingContent(ctx context.Context, m *Model, callOptions *llms.C } defer streaming.CallWithDone(ctx, callOptions.StreamingFunc) //nolint:errcheck + var streamedContent strings.Builder + defer func() { langchainContentResponse.Choices[0].Content = streamedContent.String() }() + for chatResChunk := range chatResChan { chunkStr := "" - langchainContentResponse.Choices[0].GenerationInfo["created"] = chatResChunk.Created - langchainContentResponse.Choices[0].GenerationInfo["model"] = chatResChunk.Model - langchainContentResponse.Choices[0].GenerationInfo["usage"] = chatResChunk.Usage + if chatResChunk.Created != 0 { + langchainContentResponse.Choices[0].GenerationInfo["created"] = chatResChunk.Created + } + if chatResChunk.Model != "" { + langchainContentResponse.Choices[0].GenerationInfo["model"] = chatResChunk.Model + } + if chatResChunk.Usage.TotalTokens != 0 { + langchainContentResponse.Choices[0].GenerationInfo["usage"] = chatResChunk.Usage + } if chatResChunk.Error == nil { for _, choice := range chatResChunk.Choices { chunkStr += choice.Delta.Content - langchainContentResponse.Choices[0].Content += choice.Delta.Content - langchainContentResponse.Choices[0].StopReason = string(choice.FinishReason) + streamedContent.WriteString(choice.Delta.Content) + if choice.FinishReason != "" { + langchainContentResponse.Choices[0].StopReason = string(choice.FinishReason) + langchainContentResponse.Choices[0].Truncated = llms.IsTruncated(string(choice.FinishReason)) + } if len(choice.Delta.ToolCalls) > 0 { langchainContentResponse.Choices[0].FuncCall = (*llms.FunctionCall)(&choice.Delta.ToolCalls[0].Function) for _, tool := range choice.Delta.ToolCalls { @@ -237,6 +278,10 @@ func generateStreamingContent(ctx context.Context, m *Model, callOptions *llms.C } } + if err := llms.CheckTruncation(langchainContentResponse, *callOptions); err != nil { + return langchainContentResponse, err + } + return langchainContentResponse, nil } @@ -279,3 +324,18 @@ func setMistralChatMessageRole(msg *llms.MessageContent, chatMsg *sdk.ChatMessag chatMsg.Role = "system" } } + +func mistralToolChoice(choice any) string { + kind, _ := llms.ClassifyToolChoice(choice) + switch kind { + case llms.ToolChoiceAuto: + return sdk.ToolChoiceAuto + case llms.ToolChoiceNone: + return sdk.ToolChoiceNone + case llms.ToolChoiceAny: + return sdk.ToolChoiceAny + case llms.ToolChoiceNamed, llms.ToolChoiceUnset: + return "" + } + return "" +} diff --git a/llms/mistral/mistralmodel_test.go b/llms/mistral/mistralmodel_test.go index a4a0276db..31c8b0628 100644 --- a/llms/mistral/mistralmodel_test.go +++ b/llms/mistral/mistralmodel_test.go @@ -298,6 +298,16 @@ func contains(s, substr string) bool { return len(s) >= len(substr) && s[0:len(substr)] == substr || len(s) > len(substr) && contains(s[1:], substr) } +func mustChatParams(t *testing.T, callOpts *llms.CallOptions) sdk.ChatRequestParams { + t.Helper() + + params, err := mistralChatParamsFromCallOptions(callOpts) + if err != nil { + t.Fatalf("mistralChatParamsFromCallOptions: %v", err) + } + return params +} + func TestMistralChatParamsFromCallOptions(t *testing.T) { t.Run("basic options", func(t *testing.T) { callOpts := &llms.CallOptions{ @@ -308,7 +318,7 @@ func TestMistralChatParamsFromCallOptions(t *testing.T) { Seed: getIntPointer(42), } - result := mistralChatParamsFromCallOptions(callOpts) + result := mustChatParams(t, callOpts) if result.Temperature != 0.7 { t.Errorf("mistralChatParamsFromCallOptions() Temperature = %v, want %v", result.Temperature, 0.7) @@ -344,7 +354,7 @@ func TestMistralChatParamsFromCallOptions(t *testing.T) { }, } - result := mistralChatParamsFromCallOptions(callOpts) + result := mustChatParams(t, callOpts) if len(result.Tools) != 1 { t.Errorf("mistralChatParamsFromCallOptions() Tools length = %v, want %v", len(result.Tools), 1) @@ -375,7 +385,7 @@ func TestMistralChatParamsFromCallOptions(t *testing.T) { }, } - result := mistralChatParamsFromCallOptions(callOpts) + result := mustChatParams(t, callOpts) if len(result.Tools) != 1 { t.Errorf("mistralChatParamsFromCallOptions() Tools length = %v, want %v", len(result.Tools), 1) diff --git a/llms/mistral/nil_callbacks_test.go b/llms/mistral/nil_callbacks_test.go new file mode 100644 index 000000000..00377c097 --- /dev/null +++ b/llms/mistral/nil_callbacks_test.go @@ -0,0 +1,30 @@ +package mistral + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestCallWithoutACallbacksHandlerDoesNotPanic(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.WriteHeader(http.StatusInternalServerError) + _, _ = io.WriteString(w, `{"error":"upstream is down"}`) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithAPIKey("test"), WithEndpoint(srv.URL), WithModel("mistral-small-latest")) + require.NoError(t, err) + llm.CallbacksHandler = nil + + require.NotPanics(t, func() { + _, _ = llm.Call(context.Background(), "hi") + }) +} diff --git a/llms/mistral/sampling_wire_test.go b/llms/mistral/sampling_wire_test.go new file mode 100644 index 000000000..5f5c99e6c --- /dev/null +++ b/llms/mistral/sampling_wire_test.go @@ -0,0 +1,121 @@ +package mistral + +import ( + "context" + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/vxcontrol/langchaingo/llms" +) + +func captureMistralRequest(t *testing.T, opts ...llms.CallOption) map[string]any { + t.Helper() + + var body map[string]any + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + raw, _ := io.ReadAll(r.Body) + _ = json.Unmarshal(raw, &body) + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"id":"x","object":"chat.completion","created":1,` + + `"model":"mistral-small-latest","choices":[{"index":0,` + + `"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`)) + })) + t.Cleanup(srv.Close) + + model, err := New(WithAPIKey("unit-test-token"), WithEndpoint(srv.URL), + WithModel("mistral-small-latest")) + if err != nil { + t.Fatalf("New: %v", err) + } + if _, err := model.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, opts...); err != nil { + t.Fatalf("GenerateContent: %v", err) + } + return body +} + +func TestTopPReachesTheMistralWire(t *testing.T) { + t.Parallel() + + if got := captureMistralRequest(t, llms.WithTopP(0.5))["top_p"]; got != 0.5 { + t.Fatalf("the caller's top_p must reach the wire, got %v", got) + } +} + +func TestJSONModeReachesTheMistralWire(t *testing.T) { + t.Parallel() + + body := captureMistralRequest(t, llms.WithJSONMode()) + format, _ := body["response_format"].(map[string]any) + if format == nil || format["type"] != "json_object" { + t.Fatalf("JSON mode must reach the wire, got body: %v", body) + } + + if _, ok := captureMistralRequest(t)["response_format"]; ok { + t.Fatal("an unset JSON mode must leave the field off the wire") + } +} + +func TestToolChoiceReachesTheMistralWire(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + choice any + want any + }{ + {"any", "any", "any"}, + {"auto", "auto", "auto"}, + {"none", "none", "none"}, + {"required", "required", "any"}, + {"function without a name", "function", "any"}, + {"struct asking for any", llms.ToolChoice{Type: "any"}, "any"}, + {"struct asking for auto", llms.ToolChoice{Type: "auto"}, "auto"}, + {"map asking for required", map[string]any{"type": "required"}, "any"}, + {"named tool", llms.ToolChoice{ + Type: "function", Function: &llms.FunctionReference{Name: "get_weather"}, + }, nil}, + {"a spelling nobody uses", "something-else", nil}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + got, sent := captureMistralRequest(t, llms.WithToolChoice(tc.choice))["tool_choice"] + if tc.want == nil { + if sent { + t.Errorf("must stay off the wire, got %v", got) + } + return + } + if got != tc.want { + t.Errorf("want %v on the wire, got %v", tc.want, got) + } + }) + } + + if _, ok := captureMistralRequest(t)["tool_choice"]; ok { + t.Error("an unset choice must leave the field off the wire") + } +} + +func TestMistralDoesNotPinTheSeedWhenTheCallerDidNotAskForOne(t *testing.T) { + t.Parallel() + + first, sentFirst := captureMistralRequest(t)["random_seed"] + second, sentSecond := captureMistralRequest(t)["random_seed"] + if sentFirst && sentSecond && first == second { + t.Fatalf("two seedless calls must not share a seed, both got %v", first) + } +} + +func TestMistralKeepsTheSeedTheCallerAsksFor(t *testing.T) { + t.Parallel() + + if got := captureMistralRequest(t, llms.WithSeed(7))["random_seed"]; got != float64(7) { + t.Fatalf("the caller's seed must reach the wire, got %v", got) + } +} diff --git a/llms/mistral/stream_callbacks_test.go b/llms/mistral/stream_callbacks_test.go new file mode 100644 index 000000000..167f7906c --- /dev/null +++ b/llms/mistral/stream_callbacks_test.go @@ -0,0 +1,127 @@ +package mistral + +import ( + "context" + "testing" + + "github.com/vxcontrol/langchaingo/callbacks" + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +type errorRecorder struct { + callbacks.SimpleHandler + errs []error + ends int + lastEnd *llms.ContentResponse +} + +func (r *errorRecorder) HandleLLMError(_ context.Context, err error) { + r.errs = append(r.errs, err) +} + +func (r *errorRecorder) HandleLLMGenerateContentEnd(_ context.Context, resp *llms.ContentResponse) { + r.ends++ + r.lastEnd = resp +} + +func TestStreamingErrorsReachTheCallbackHandler(t *testing.T) { + t.Parallel() + + model := streamingModelWithTrailingChunk(t) + rec := &errorRecorder{} + model.CallbacksHandler = rec + + sink := func(_ context.Context, _ streaming.Chunk) error { return nil } + _, err := model.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStreamingFunc(sink), llms.WithFailOnTruncation()) + if err == nil { + t.Fatal("a truncated stream with WithFailOnTruncation must fail") + } + + if len(rec.errs) == 0 { + t.Fatal("the streaming path must report its error to the handler, as the non-streaming path does") + } + if rec.errs[len(rec.errs)-1] == nil { + t.Error("the handler must receive the error itself, not nil") + } +} + +func TestStreamingSuccessReachesTheCallbackHandler(t *testing.T) { + t.Parallel() + + model := streamingModelWithTrailingChunk(t) + rec := &errorRecorder{} + model.CallbacksHandler = rec + + sink := func(_ context.Context, _ streaming.Chunk) error { return nil } + if _, err := model.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStreamingFunc(sink)); err != nil { + t.Fatalf("GenerateContent: %v", err) + } + + if rec.ends != 1 { + t.Errorf("the streaming path must close the generation once, as the non-streaming path does; got %d", rec.ends) + } + if len(rec.errs) != 0 { + t.Errorf("a successful stream must report no error, got %v", rec.errs) + } +} + +func TestOneClosingCallbackPerCall(t *testing.T) { + t.Parallel() + + ask := func(model *Model, rec *errorRecorder, opts ...llms.CallOption) error { + model.CallbacksHandler = rec + _, err := model.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, opts...) + return err + } + + t.Run("a plain answer ends once, with the answer", func(t *testing.T) { + t.Parallel() + rec := &errorRecorder{} + if err := ask(truncationModel(t, "stop"), rec); err != nil { + t.Fatalf("GenerateContent: %v", err) + } + if rec.ends != 1 { + t.Errorf("closing callbacks = %d, want exactly 1", rec.ends) + } + if rec.lastEnd == nil { + t.Error("the closing callback must carry the response, not nil") + } + if len(rec.errs) != 0 { + t.Errorf("a successful call reports no error, got %v", rec.errs) + } + }) + + t.Run("a failure reports the error and does not also end", func(t *testing.T) { + t.Parallel() + rec := &errorRecorder{} + err := ask(truncationModel(t, "length"), rec, llms.WithFailOnTruncation()) + if err == nil { + t.Fatal("WithFailOnTruncation must fail on a truncated answer") + } + if rec.ends != 0 { + t.Errorf("a failed call must not report a completion, got %d", rec.ends) + } + if len(rec.errs) != 1 || rec.errs[0] == nil { + t.Errorf("want exactly one non-nil error, got %v", rec.errs) + } + }) + + t.Run("a streamed answer ends once too", func(t *testing.T) { + t.Parallel() + rec := &errorRecorder{} + sink := func(_ context.Context, _ streaming.Chunk) error { return nil } + if err := ask(streamingModelWithTrailingChunk(t), rec, llms.WithStreamingFunc(sink)); err != nil { + t.Fatalf("GenerateContent: %v", err) + } + if rec.ends != 1 || rec.lastEnd == nil { + t.Errorf("closing callbacks = %d (response nil: %v), want exactly 1 with the answer", + rec.ends, rec.lastEnd == nil) + } + }) +} diff --git a/llms/mistral/truncation_test.go b/llms/mistral/truncation_test.go new file mode 100644 index 000000000..561bac2eb --- /dev/null +++ b/llms/mistral/truncation_test.go @@ -0,0 +1,209 @@ +package mistral + +import ( + "context" + "errors" + "fmt" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func truncationModel(t *testing.T, finishReason string) *Model { + t.Helper() + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = fmt.Fprintf(w, `{"id":"x","object":"chat.completion","created":1,"model":"mistral-small-latest","choices":[{"index":0,"message":{"role":"assistant","content":"half an ans"},"finish_reason":%q}],"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`, finishReason) + })) + t.Cleanup(srv.Close) + + model, err := New(WithAPIKey("unit-test-token"), WithEndpoint(srv.URL), WithModel("mistral-small-latest")) + if err != nil { + t.Fatalf("New: %v", err) + } + return model +} + +func TestTruncationIsDerivedWithoutRewritingStopReason(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + finishReason string + wantTruncated bool + }{ + {"out of budget", "length", true}, + {"finished on its own", "stop", false}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + model := truncationModel(t, tc.finishReason) + + resp, err := model.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + if err != nil { + t.Fatalf("GenerateContent: %v", err) + } + if got := resp.Choices[0].Truncated; got != tc.wantTruncated { + t.Fatalf("Truncated = %v, want %v", got, tc.wantTruncated) + } + if got := resp.Choices[0].StopReason; got != tc.finishReason { + t.Fatalf("StopReason = %q, want the vendor's own %q", got, tc.finishReason) + } + }) + } +} + +func TestFailOnTruncationKeepsThePartialAnswer(t *testing.T) { + t.Parallel() + + model := truncationModel(t, "length") + msgs := []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")} + + resp, err := model.GenerateContent(context.Background(), msgs, llms.WithFailOnTruncation()) + if err == nil { + t.Fatal("want an error once the caller opted in") + } + if !llms.IsTruncatedError(err) { + t.Fatalf("want a truncation error, got %v", err) + } + if resp == nil || resp.Choices[0].Content != "half an ans" { + t.Fatalf("want the partial answer alongside the error, got %+v", resp) + } + + if _, err := model.GenerateContent(context.Background(), msgs); err != nil { + t.Fatalf("without the option the same response must stay a success: %v", err) + } +} + +func TestTruncationOnTheStreamingPath(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "text/event-stream") + flusher, _ := w.(http.Flusher) + for _, chunk := range []string{ + `{"id":"x","object":"chat.completion.chunk","created":1,"model":"mistral-small-latest","choices":[{"index":0,"delta":{"role":"assistant","content":"half an ans"},"finish_reason":""}]}`, + `{"id":"x","object":"chat.completion.chunk","created":1,"model":"mistral-small-latest","choices":[{"index":0,"delta":{"content":""},"finish_reason":"length"}]}`, + } { + _, _ = fmt.Fprintf(w, "data: %s\n\n", chunk) + if flusher != nil { + flusher.Flush() + } + } + _, _ = io.WriteString(w, "data: [DONE]\n\n") + })) + t.Cleanup(srv.Close) + + model, err := New(WithAPIKey("unit-test-token"), WithEndpoint(srv.URL), WithModel("mistral-small-latest")) + if err != nil { + t.Fatalf("New: %v", err) + } + msgs := []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")} + sink := func(context.Context, streaming.Chunk) error { return nil } + + resp, err := model.GenerateContent(context.Background(), msgs, llms.WithStreamingFunc(sink)) + if err != nil { + t.Fatalf("GenerateContent: %v", err) + } + if !resp.Choices[0].Truncated { + t.Fatalf("Truncated = false on a streamed answer that hit the limit, StopReason = %q", resp.Choices[0].StopReason) + } + if got := resp.Choices[0].StopReason; got != "length" { + t.Fatalf("StopReason = %q, want the vendor's own %q", got, "length") + } +} + +func streamingModelWithTrailingChunk(t *testing.T) *Model { + t.Helper() + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "text/event-stream") + flusher, _ := w.(http.Flusher) + for _, chunk := range []string{ + `{"id":"x","object":"chat.completion.chunk","created":1,"model":"mistral-small-latest","choices":[{"index":0,"delta":{"role":"assistant","content":"half an ans"},"finish_reason":""}]}`, + `{"id":"x","object":"chat.completion.chunk","created":1,"model":"mistral-small-latest","choices":[{"index":0,"delta":{"content":""},"finish_reason":"length"}]}`, + `{"id":"x","object":"chat.completion.chunk","created":1,"model":"mistral-small-latest","choices":[{"index":0,"delta":{"content":""},"finish_reason":""}],"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`, + } { + _, _ = fmt.Fprintf(w, "data: %s\n\n", chunk) + if flusher != nil { + flusher.Flush() + } + } + _, _ = io.WriteString(w, "data: [DONE]\n\n") + })) + t.Cleanup(srv.Close) + + model, err := New(WithAPIKey("unit-test-token"), WithEndpoint(srv.URL), WithModel("mistral-small-latest")) + if err != nil { + t.Fatalf("New: %v", err) + } + return model +} + +func TestTrailingChunkDoesNotClearTruncationOnTheStreamingPath(t *testing.T) { + t.Parallel() + + msgs := []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")} + sink := func(context.Context, streaming.Chunk) error { return nil } + + resp, err := streamingModelWithTrailingChunk(t).GenerateContent(context.Background(), msgs, + llms.WithStreamingFunc(sink)) + if err != nil { + t.Fatalf("GenerateContent: %v", err) + } + if got := resp.Choices[0].StopReason; got != "length" { + t.Errorf("StopReason = %q, want the last non-empty reason %q", got, "length") + } + if !resp.Choices[0].Truncated { + t.Error("Truncated = false, want true: a trailing chunk without a reason must not clear it") + } +} + +func TestFailOnTruncationFiresOnTheStreamingPath(t *testing.T) { + t.Parallel() + + msgs := []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")} + sink := func(context.Context, streaming.Chunk) error { return nil } + + resp, err := streamingModelWithTrailingChunk(t).GenerateContent(context.Background(), msgs, + llms.WithStreamingFunc(sink), llms.WithFailOnTruncation()) + if err == nil { + t.Fatal("want an error once the caller opted in") + } + if !llms.IsTruncatedError(err) { + t.Fatalf("want a truncation error, got %v", err) + } + if resp == nil || resp.Choices[0].Content != "half an ans" { + t.Fatalf("want the partial answer alongside the error, got %+v", resp) + } +} + +func TestStreamingKeepsWhatArrivedBeforeAFailingSink(t *testing.T) { + t.Parallel() + + model := streamingModelWithTrailingChunk(t) + sinkErr := errors.New("sink gave up") + sink := func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type == streaming.ChunkTypeText { + return sinkErr + } + return nil + } + + resp, err := model.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStreamingFunc(sink)) + if !errors.Is(err, sinkErr) { + t.Fatalf("want the sink's own error, got %v", err) + } + if resp == nil || resp.Choices[0].Content != "half an ans" { + t.Fatalf("want what arrived before the sink failed, got %+v", resp) + } +} diff --git a/llms/mistral/warnings.go b/llms/mistral/warnings.go new file mode 100644 index 000000000..a362414ff --- /dev/null +++ b/llms/mistral/warnings.go @@ -0,0 +1,54 @@ +package mistral + +import ( + "strconv" + "strings" + + "github.com/vxcontrol/langchaingo/llms" +) + +func reportMistralUnread(warn *llms.Warnings, model string, opts *llms.CallOptions) { + const unread = "the door's request has no field for it" + + warn.AddUnreadExtraBody(model, *opts, extraBodyUnread) + warn.AddUnreadOptions(model, *opts, unread, "WithSeed", "WithJSONMode") +} + +func reportMistralOptions(warn *llms.Warnings, model string, opts *llms.CallOptions) { + reportMistralUnread(warn, model, opts) + + if kind, name := llms.ClassifyToolChoice(opts.ToolChoice); kind == llms.ToolChoiceNamed { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithToolChoice", Model: model, + Asked: name, + Reason: "the door's tool choice is a bare string, so a named tool has no shape to travel in", + }) + } + if len(opts.StopWords) > 0 { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithStopWords", Model: model, + Asked: strings.Join(opts.StopWords, ","), + Reason: "the door builds no stop field", + }) + } + if opts.StructuredOutput != nil { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithStructuredOutput", Model: model, + Asked: opts.StructuredOutput.Name, + Reason: "the door reads only the JSON-mode flag, never a schema", + }) + } + if cfg := opts.Reasoning; cfg != nil && cfg.ResolveMode() == llms.ReasoningOn { + asked := string(cfg.GetEffort(opts.GetMaxTokens())) + if cfg.HasExplicitTokens() { + asked = strconv.Itoa(cfg.Tokens) + " tokens" + } + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithReasoning", Model: model, + Asked: asked, + Reason: "the door builds no reasoning field at all", + }) + } +} + +const extraBodyUnread = "the door builds its request through a vendor SDK and has nowhere to merge them" diff --git a/llms/mistral/warnings_test.go b/llms/mistral/warnings_test.go new file mode 100644 index 000000000..ca32930b8 --- /dev/null +++ b/llms/mistral/warnings_test.go @@ -0,0 +1,136 @@ +package mistral + +import ( + "context" + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func generateForWarnings(t *testing.T, call ...llms.CallOption) *llms.ContentResponse { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"x","object":"chat.completion","created":1,"model":"mistral-small-latest",`+ + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],`+ + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`) + })) + t.Cleanup(srv.Close) + + m, err := New(WithAPIKey("k"), WithEndpoint(srv.URL), WithModel("mistral-small-latest")) + require.NoError(t, err) + + resp, err := m.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, call...) + require.NoError(t, err) + return resp +} + +func mistralWarningsByOption(warnings []llms.Warning) map[string]llms.Warning { + byOption := make(map[string]llms.Warning, len(warnings)) + for _, w := range warnings { + byOption[w.Option] = w + } + return byOption +} + +func TestTheDoorReportsEveryIntentItCannotCarry(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, + llms.WithToolChoice(llms.ToolChoice{ + Type: "function", Function: &llms.FunctionReference{Name: "get_weather"}, + }), + llms.WithStopWords([]string{"STOP"}), + llms.WithStructuredOutput(llms.StructuredOutputConfig{ + Name: "answer", Schema: json.RawMessage(`{"type":"object"}`), + }), + llms.WithReasoning(llms.ReasoningHigh, 0), + ) + + got := mistralWarningsByOption(resp.Warnings) + for option, asked := range map[string]string{ + "WithToolChoice": "get_weather", "WithStopWords": "STOP", + "WithStructuredOutput": "answer", "WithReasoning": "high", + } { + w, ok := got[option] + require.True(t, ok, "no %s warning in %v", option, resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, asked, w.Asked) + require.Equal(t, "mistral-small-latest", w.Model) + } +} + +func TestSwitchingThinkingOffOnMistralIsNotALoss(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, llms.WithReasoningDisabled()) + require.Empty(t, resp.Warnings, + "every mistral model disables by omission, so sending no field is the off wire, not a dropped intent") + + off := chatBodyOnTheWire(t, llms.WithSeed(7), llms.WithReasoningDisabled()) + require.NotContains(t, off, "reasoning_effort") + require.Equal(t, chatBodyOnTheWire(t, llms.WithSeed(7)), off, + "off by omission is the request a caller who named no reasoning sends") +} + +func TestAPlainMistralCallCarriesNoWarnings(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, llms.WithTemperature(0.2)) + require.Empty(t, resp.Warnings) +} + +func TestTheSamplingOptionsThisDoorHasNoFieldForAreReported(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, + llms.WithTopK(40), llms.WithMinP(0.1), llms.WithMinLength(2), + llms.WithN(3), llms.WithCandidateCount(2), llms.WithTopLogProbs(4), + llms.WithLogProbs(true), llms.WithRepetitionPenalty(1.1), + llms.WithFrequencyPenalty(0.5), llms.WithPresencePenalty(0.25), + ) + + got := mistralWarningsByOption(resp.Warnings) + for option, asked := range map[string]string{ + "WithTopK": "40", "WithMinP": "0.1", "WithMinLength": "2", + "WithN": "3", "WithCandidateCount": "2", "WithTopLogProbs": "4", + "WithLogProbs": "true", "WithRepetitionPenalty": "1.1", + "WithFrequencyPenalty": "0.5", "WithPresencePenalty": "0.25", + } { + w, ok := got[option] + require.True(t, ok, "no %s warning in %v", option, resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, asked, w.Asked) + } +} + +func TestExtraBodyThisDoorCannotMergeIsReported(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, llms.WithExtraBody(map[string]any{"enable_thinking": false, "chat_template_kwargs": map[string]any{}})) + + w, ok := mistralWarningsByOption(resp.Warnings)["WithExtraBody"] + require.True(t, ok, "no extra-body warning in %v", resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, "chat_template_kwargs, enable_thinking", w.Asked) +} + +func TestTheMistralDoorReportsBothLengthOptionsItNeverReads(t *testing.T) { + t.Parallel() + + got := mistralWarningsByOption( + generateForWarnings(t, llms.WithMinLength(10), llms.WithMaxLength(20)).Warnings) + + for _, option := range []string{"WithMinLength", "WithMaxLength"} { + require.Contains(t, got, option, "the door's request has no field for it") + } +} diff --git a/llms/ollama/README.md b/llms/ollama/README.md index d4da8393a..dcc13782a 100644 --- a/llms/ollama/README.md +++ b/llms/ollama/README.md @@ -582,7 +582,8 @@ HTTPRR_RECORD=. HTTPRR_DEBUG=true go test -v -run TestCloud - Cloud model generation - Cloud streaming - Cloud tool calling - - Cloud JSON mode + - Cloud JSON mode is dropped with a warning; a schema is refused before the request, unless + `WithCloudStructuredOutputFallback()` moves it into the prompt (recorded against gpt-oss:120b) - Various options (temperature, seed) - Uses `httprr.SkipIfNoCredentialsAndRecordingMissing("OLLAMA_API_KEY")` to skip when no credentials @@ -961,7 +962,8 @@ Models ending in `-cloud` are automatically routed to Ollama's cloud infrastruct | Tool Calling | ✅ | ✅ | Most models | | Reasoning | ✅ | ✅ | DeepSeek R1, QwQ, etc. | | Vision (Images) | ✅ | ❌ | llama3.2-vision, etc. | -| JSON Mode | ✅ | ✅ | Compatible models only | +| JSON Mode | ✅ | ❌ | Cloud (ollama.com, or a `-cloud` model on a local server): dropped with a warning — Ollama Cloud does not support structured outputs | +| Structured Output (JSON Schema) | ✅ | ❌ | Cloud: `ErrStructuredOutputUnsupported` before the request; with `WithCloudStructuredOutputFallback()` the schema is appended to the last user message, a `WarningSubstitute` is reported, a single ```` ```json ```` or ```` ``` ```` fence around the whole answer is removed from the final content (streamed chunks still carry it) and the answer is validated locally (`ErrStructuredOutputValidation` on mismatch) | | Embeddings | ✅ | ❌ | nomic-embed-text, etc. | | Auto Model Pull | ✅ | ❌ | Local only | | Custom Templates | ✅ | ❌ | Local only | diff --git a/llms/ollama/adaptive_delegation_test.go b/llms/ollama/adaptive_delegation_test.go new file mode 100644 index 000000000..2754a3dbd --- /dev/null +++ b/llms/ollama/adaptive_delegation_test.go @@ -0,0 +1,41 @@ +package ollama + +import ( + "testing" + + "github.com/vxcontrol/langchaingo/llms" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestADelegationThisDoorCannotExpressIsReported(t *testing.T) { + t.Parallel() + + warn := &llms.Warnings{} + opts := llms.CallOptions{Reasoning: &llms.ReasoningConfig{Adaptive: true}} + reportOllamaOptions(warn, "gpt-oss:120b", opts) + + var found *llms.Warning + for _, w := range warn.List() { + if w.Option == "WithAdaptiveReasoning" { + found = &w + break + } + } + require.NotNil(t, found, "the door sends no think field and must say so: %v", warn.List()) + assert.Equal(t, llms.WarningDrop, found.Kind) +} + +func TestAnEffortTheCallerNamedIsNotReportedAsDropped(t *testing.T) { + t.Parallel() + + warn := &llms.Warnings{} + opts := llms.CallOptions{Reasoning: &llms.ReasoningConfig{Adaptive: true, Effort: llms.ReasoningLow}} + reportOllamaOptions(warn, "gpt-oss:120b", opts) + + for _, w := range warn.List() { + assert.NotEqual(t, "WithAdaptiveReasoning", w.Option, + "the effort reaches the wire, so nothing was dropped") + } +} diff --git a/llms/ollama/ollama_cloud_test.go b/llms/ollama/ollama_cloud_test.go index 5d49c0e7e..ad56fbd03 100644 --- a/llms/ollama/ollama_cloud_test.go +++ b/llms/ollama/ollama_cloud_test.go @@ -5,6 +5,7 @@ import ( "encoding/json" "net/http" "os" + "path/filepath" "strings" "testing" @@ -14,6 +15,7 @@ import ( "github.com/vxcontrol/langchaingo/internal/httprr" "github.com/vxcontrol/langchaingo/llms" "github.com/vxcontrol/langchaingo/llms/streaming" + "github.com/vxcontrol/langchaingo/llms/structuredoutput" ) // removeTimestampTransport removes 'ts' query parameter before passing to httprr. @@ -35,12 +37,21 @@ func (t *removeTimestampTransport) RoundTrip(req *http.Request) (*http.Response, } // newCloudTestClient creates a test client configured for Ollama Cloud -func newCloudTestClient(t *testing.T) *LLM { +func newCloudTestClient(t *testing.T, extra ...Option) *LLM { t.Helper() // Check for required credentials and skip if not available httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OLLAMA_API_KEY") + home, err := os.UserHomeDir() + if err != nil { + t.Skipf("no home directory to read the Ollama signing key from: %v", err) + } + if _, err := os.Stat(filepath.Join(home, ".ollama", "id_ed25519")); err != nil { + t.Skip("no ~/.ollama/id_ed25519: the client signs every ollama.com request before " + + "the httprr transport runs, so the recordings cannot be replayed without it") + } + // Set up httprr for recording/replaying HTTP interactions rr := httprr.OpenForTest(t, httputil.DefaultTransport) @@ -80,12 +91,12 @@ func newCloudTestClient(t *testing.T) *LLM { cloudModel = envModel } - opts := []Option{ + opts := append([]Option{ WithServerURL(serverURL), WithAPIKey(apiKey), WithHTTPClient(wrappedClient), WithModel(cloudModel), - } + }, extra...) c, err := New(opts...) require.NoError(t, err) @@ -275,6 +286,9 @@ func TestCloudJSONMode(t *testing.T) { resp, err := llm.GenerateContent(ctx, content, llms.WithJSONMode()) require.NoError(t, err) require.NotEmpty(t, resp.Choices) + require.Len(t, resp.Warnings, 1) + assert.Equal(t, llms.WarningDrop, resp.Warnings[0].Kind) + assert.Equal(t, "WithJSONMode", resp.Warnings[0].Option) c1 := resp.Choices[0] assert.NotEmpty(t, c1.Content) @@ -286,46 +300,82 @@ func TestCloudJSONMode(t *testing.T) { assert.Contains(t, responseText, "colors") } -// TestCloudStructuredOutput exercises the structured-output mechanism against the -// real Ollama Cloud backend on several models (httprr-recorded). The SDK sends the -// schema in the request's `format` field and validates the response against it. -// -// Note on Ollama Cloud behavior: unlike a local Ollama server, the Cloud backend -// does not apply the `format` schema as a hard grammar constraint for these models -// — it is a soft hint. So the prompt also asks for a bare JSON object and the -// schema requires only the field the model reliably returns; the SDK then verifies -// the real response actually matches. Models such as gpt-oss ignore the hint and -// return prose, which the SDK correctly surfaces as ErrStructuredOutputValidation. -func TestCloudStructuredOutput(t *testing.T) { +type refusingTransport struct{ t *testing.T } + +func (r refusingTransport) RoundTrip(req *http.Request) (*http.Response, error) { + r.t.Errorf("no request may leave for %s", req.URL) + return nil, http.ErrHandlerTimeout +} + +func TestCloudRefusesAStructuredOutputSchema(t *testing.T) { + t.Parallel() + schema := json.RawMessage(`{"type":"object","properties":{"capital":{"type":"string"}},"required":["capital"]}`) + for _, model := range []string{"glm-5.2", "kimi-k2.5", "gpt-oss:120b"} { + llm, err := New(WithServerURL(CloudURL), WithModel(model), + WithHTTPClient(&http.Client{Transport: refusingTransport{t: t}})) + require.NoError(t, err) - models := []struct{ name, model string }{ - {"glm", "glm-5.2"}, - {"kimi", "kimi-k2.5"}, - } - for _, tc := range models { - t.Run(tc.name, func(t *testing.T) { - llm := newCloudTestClient(t) + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "capital of France")}, + llms.WithStructuredOutput(llms.StructuredOutputConfig{Name: "capital", Schema: schema})) - content := []llms.MessageContent{{ - Role: llms.ChatMessageTypeHuman, - Parts: []llms.ContentPart{ - llms.TextContent{Text: "Reply with ONLY a JSON object (no prose, no markdown) giving the capital of France."}, - }, - }} + var unsup *llms.ErrStructuredOutputUnsupported + require.ErrorAs(t, err, &unsup, model) + } +} - resp, err := llm.GenerateContent(context.Background(), content, - llms.WithModel(tc.model), - llms.WithStructuredOutput(llms.StructuredOutputConfig{Name: "capital", Schema: schema})) - require.NoError(t, err) - require.NotEmpty(t, resp.Choices) +func TestCloudStructuredOutputFallback(t *testing.T) { + schema := json.RawMessage(`{"type":"object","properties":{` + + `"city":{"type":"string"},` + + `"population_millions":{"type":"number"},` + + `"landmarks":{"type":"array","minItems":2,"maxItems":3,"items":{"type":"object","properties":{` + + `"name":{"type":"string"},"kind":{"type":"string","enum":["museum","monument","park","church","other"]}},` + + `"required":["name","kind"],"additionalProperties":false}}},` + + `"required":["city","population_millions","landmarks"],"additionalProperties":false}`) + + for _, stream := range []bool{false, true} { + name := "non-streaming" + if stream { + name = "streaming" + } + t.Run(name, func(t *testing.T) { + llm := newCloudTestClient(t, WithCloudStructuredOutputFallback()) + + opts := []llms.CallOption{llms.WithStructuredOutput(llms.StructuredOutputConfig{Name: "city", Schema: schema})} + var streamed strings.Builder + if stream { + opts = append(opts, llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type == streaming.ChunkTypeText { + streamed.WriteString(chunk.Content) + } + return nil + })) + } - var out struct { - Capital string `json:"capital"` + resp, err := llm.GenerateContent(context.Background(), []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeSystem, "You are a travel guide. Answer in Markdown with headings."), + llms.TextParts(llms.ChatMessageTypeHuman, "Describe Paris briefly."), + }, opts...) + require.NoError(t, err, "the answer must validate against the schema") + require.Len(t, resp.Choices, 1) + + var answer struct { + City string `json:"city"` + Landmarks []struct { + Name string `json:"name"` + } `json:"landmarks"` } - require.NoError(t, json.Unmarshal([]byte(resp.Choices[0].Content), &out), - "structured output must be valid JSON") - assert.Contains(t, strings.ToLower(out.Capital), "paris") + require.NoError(t, json.Unmarshal([]byte(resp.Choices[0].Content), &answer)) + assert.Equal(t, "Paris", answer.City) + assert.NotEmpty(t, answer.Landmarks) + if stream { + assert.Equal(t, resp.Choices[0].Content, structuredoutput.UnwrapFencedJSON(strings.TrimSpace(streamed.String()))) + } + + require.Len(t, resp.Warnings, 1) + assert.Equal(t, llms.WarningSubstitute, resp.Warnings[0].Kind) + assert.Equal(t, "WithStructuredOutput", resp.Warnings[0].Option) }) } } diff --git a/llms/ollama/ollama_test.go b/llms/ollama/ollama_test.go index b78bf072a..db77d52ca 100644 --- a/llms/ollama/ollama_test.go +++ b/llms/ollama/ollama_test.go @@ -4,7 +4,9 @@ import ( "context" "encoding/json" "errors" + "io" "net/http" + "net/http/httptest" "os" "strings" "testing" @@ -37,7 +39,7 @@ func newTestClient(t *testing.T, opts ...Option) *LLM { }) // Default model for testing - ollamaModel := "gemma3:1b" + ollamaModel := "qwen3:8b" if envModel := os.Getenv("OLLAMA_TEST_MODEL"); envModel != "" { ollamaModel = envModel } @@ -229,10 +231,11 @@ func TestWithFormat(t *testing.T) { func TestStructuredOutput(t *testing.T) { ctx := t.Context() - // This integration test needs a recorded trace (or a live Ollama server with - // HTTPRR_RECORD=.). Skip cleanly when neither is available. - if _, err := os.Stat("testdata/TestStructuredOutput.httprr"); err != nil && os.Getenv("HTTPRR_RECORD") == "" { - t.Skip("no recording; run against a local Ollama server with HTTPRR_RECORD=. to record") + const cassette = "testdata/TestStructuredOutput.httprr" + recording, err := httprr.Recording(cassette) + require.NoError(t, err) + if _, statErr := os.Stat(cassette); statErr != nil && !recording { + t.Skip("no recording; run against a live Ollama server with -httprecord=. to record") } llm := newTestClient(t) @@ -496,6 +499,33 @@ func TestResolveFormat(t *testing.T) { assert.JSONEq(t, ollamaSOSchema, string(got)) }) + t.Run("the cloud gets the empty format whatever was asked", func(t *testing.T) { + t.Parallel() + for _, server := range []string{CloudURL, "https://api.ollama.com"} { + llm, err := New(WithServerURL(server), WithModel("gpt-oss:120b"), WithFormat("json")) + require.NoError(t, err) + + got, err := llm.resolveFormat(applyOpts(llms.WithJSONMode())) + require.NoError(t, err) + assert.Equal(t, `""`, string(got), server) + + _, err = llm.resolveFormat(applyOpts( + llms.WithStructuredOutput(llms.StructuredOutputConfig{Name: "s", Schema: json.RawMessage(ollamaSOSchema)}), + )) + var unsup *llms.ErrStructuredOutputUnsupported + require.ErrorAs(t, err, &unsup, server) + } + }) + + t.Run("a server that only looks like the cloud keeps JSON mode", func(t *testing.T) { + t.Parallel() + llm, err := New(WithServerURL("https://notollama.com")) + require.NoError(t, err) + got, err := llm.resolveFormat(applyOpts(llms.WithJSONMode())) + require.NoError(t, err) + assert.Equal(t, `"json"`, string(got)) + }) + t.Run("invalid structured config errors", func(t *testing.T) { t.Parallel() llm := newUnitLLM(t) @@ -548,6 +578,15 @@ func TestValidateStructuredOutput(t *testing.T) { require.NoError(t, llm.validateStructuredOutput(opts, mk(`{"answer":`, "length"))) }) + t.Run("a load or unload with no answer fails the schema", func(t *testing.T) { + t.Parallel() + for _, reason := range []string{"load", "unload"} { + var ve *llms.ErrStructuredOutputValidation + require.ErrorAs(t, llm.validateStructuredOutput(opts, mk("", reason)), &ve, reason) + assert.Equal(t, reason, ve.StopReason) + } + }) + t.Run("no schema is a no-op", func(t *testing.T) { t.Parallel() require.NoError(t, llm.validateStructuredOutput(applyOpts(), mk(`not json`, "stop"))) @@ -563,3 +602,106 @@ func TestValidateStructuredOutput(t *testing.T) { require.NoError(t, llm.validateStructuredOutput(opts, resp)) }) } + +func TestACloudModelOffloadedByALocalServerGetsNoFormat(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gpt-oss:120b-cloud", "glm-4.6:cloud"} { + got := captureChatRequestFor(t, model, llms.WithJSONMode()) + assert.Equal(t, "", got["format"], model) + + _, err := sendChatRequest(t, model, llms.WithStructuredOutput( + llms.StructuredOutputConfig{Name: "s", Schema: json.RawMessage(ollamaSOSchema)})) + var unsup *llms.ErrStructuredOutputUnsupported + require.ErrorAs(t, err, &unsup, model) + } + + assert.Equal(t, "json", captureChatRequestFor(t, "gpt-oss:120b", llms.WithJSONMode())["format"], + "a model the local server runs itself keeps JSON mode") +} + +func TestAnLLMWithNoServerAddressTreatsItsModelAsLocal(t *testing.T) { + t.Parallel() + + o := &LLM{} + for model, want := range map[string]string{ + "gpt-oss:120b": `"json"`, + "gpt-oss:120b-cloud": `""`, + } { + format, err := o.resolveFormat(llms.CallOptions{Model: &model, JSONMode: true}) + require.NoError(t, err, model) + assert.Equal(t, want, string(format), model) + } +} + +func TestTheCloudDropWarningReachesTheResponse(t *testing.T) { + t.Parallel() + + for model, want := range map[string]int{"gpt-oss:120b-cloud": 1, "gpt-oss:120b": 0} { + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/x-ndjson") + _, _ = w.Write([]byte(`{"model":"m","message":{"role":"assistant","content":"{}"},"done":true,"done_reason":"stop"}` + "\n")) + })) + llm, err := New(WithServerURL(srv.URL), WithModel(model)) + require.NoError(t, err) + resp, err := llm.GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, llms.WithJSONMode()) + srv.Close() + require.NoError(t, err) + + var drops int + for _, w := range resp.Warnings { + if w.Option == "WithJSONMode" && w.Kind == llms.WarningDrop { + drops++ + } + } + assert.Equal(t, want, drops, model) + } +} + +func TestALoadOnlyAnswerToASchemaRequestIsNotASuccess(t *testing.T) { + t.Parallel() + + schema := llms.WithStructuredOutput(llms.StructuredOutputConfig{Name: "answer", Schema: json.RawMessage(ollamaSOSchema)}) + for _, tc := range []struct { + name string + messages []llms.MessageContent + opts []llms.CallOption + fails bool + }{ + { + name: "a schema request the server only loaded the model for", + messages: []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")}, + opts: []llms.CallOption{schema}, + fails: true, + }, + {name: "a request without messages still just loads the model", opts: []llms.CallOption{schema}}, + {name: "a request without a schema is left as it was", messages: []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")}}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/x-ndjson") + _, _ = io.WriteString(w, `{"model":"llama3","message":{"role":"assistant","content":""},`+ + `"done":true,"done_reason":"load"}`+"\n") + })) + t.Cleanup(srv.Close) + llm, err := New(WithServerURL(srv.URL), WithModel("llama3")) + require.NoError(t, err) + + resp, err := llm.GenerateContent(t.Context(), tc.messages, tc.opts...) + require.NotNil(t, resp, "the response comes back either way") + assert.Equal(t, "load", resp.Choices[0].StopReason) + if !tc.fails { + require.NoError(t, err) + return + } + var validation *llms.ErrStructuredOutputValidation + require.ErrorAs(t, err, &validation) + assert.Equal(t, "load", validation.StopReason) + }) + } +} diff --git a/llms/ollama/ollama_thinking_test.go b/llms/ollama/ollama_thinking_test.go new file mode 100644 index 000000000..c0e2a8c72 --- /dev/null +++ b/llms/ollama/ollama_thinking_test.go @@ -0,0 +1,90 @@ +package ollama + +import ( + "context" + "encoding/json" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/require" + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func newThinkingServerClient(t *testing.T, lines ...string) *LLM { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/x-ndjson") + for _, line := range lines { + _, _ = w.Write([]byte(line + "\n")) + } + })) + t.Cleanup(srv.Close) + + llm, err := New(WithServerURL(srv.URL), WithModel("glm-5")) + require.NoError(t, err) + return llm +} + +func TestNativeThinkingReachesTheChoice(t *testing.T) { + t.Parallel() + + llm := newThinkingServerClient(t, + `{"model":"glm-5","message":{"role":"assistant","content":"Paris",`+ + `"thinking":"The capital of France is Paris."},"done":true,"done_reason":"stop"}`) + + resp, err := llm.GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "capital of France?")}) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + + require.Equal(t, "Paris", resp.Choices[0].Content) + require.NotNil(t, resp.Choices[0].Reasoning) + require.Equal(t, "The capital of France is Paris.", resp.Choices[0].Reasoning.Content) +} + +func TestNativeThinkingIsStreamedAndAccumulated(t *testing.T) { + t.Parallel() + + llm := newThinkingServerClient(t, + `{"model":"glm-5","message":{"role":"assistant","content":"","thinking":"first "},"done":false}`, + `{"model":"glm-5","message":{"role":"assistant","content":"","thinking":"second"},"done":false}`, + `{"model":"glm-5","message":{"role":"assistant","content":"Paris"},"done":true,"done_reason":"stop"}`) + + var streamed string + resp, err := llm.GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "capital of France?")}, + llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type == streaming.ChunkTypeReasoning && chunk.Reasoning != nil { + streamed += chunk.Reasoning.Content + } + return nil + })) + require.NoError(t, err) + + require.Equal(t, "first second", streamed, "every thinking delta must reach the callback") + require.NotNil(t, resp.Choices[0].Reasoning) + require.Equal(t, "first second", resp.Choices[0].Reasoning.Content) +} + +func TestLegacyThinkTagsStillSplit(t *testing.T) { + t.Parallel() + + body, err := json.Marshal(map[string]any{ + "model": "deepseek-r1", + "message": map[string]any{"role": "assistant", "content": "musingParis"}, + "done": true, + "done_reason": "stop", + }) + require.NoError(t, err) + + llm := newThinkingServerClient(t, string(body)) + resp, err := llm.GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "capital of France?")}) + require.NoError(t, err) + + require.Equal(t, "Paris", resp.Choices[0].Content) + require.Equal(t, "musing", resp.Choices[0].Reasoning.Content) +} diff --git a/llms/ollama/ollamallm.go b/llms/ollama/ollamallm.go index 9b903faaf..3d3d529bd 100644 --- a/llms/ollama/ollamallm.go +++ b/llms/ollama/ollamallm.go @@ -13,6 +13,7 @@ import ( "strings" "github.com/vxcontrol/langchaingo/callbacks" + "github.com/vxcontrol/langchaingo/internal/toolcall" "github.com/vxcontrol/langchaingo/llms" "github.com/vxcontrol/langchaingo/llms/reasoning" "github.com/vxcontrol/langchaingo/llms/streaming" @@ -157,6 +158,16 @@ func (o *LLM) GenerateContent(ctx context.Context, messages []llms.MessageConten if err != nil { return nil, err } + emulated := o.emulatesStructuredOutput(model, opts) + if emulated { + req.Messages = injectStructuredOutputPrompt(req.Messages, opts.StructuredOutput.Schema, len(opts.Tools) > 0) + } + + warn := &llms.Warnings{} + reportOllamaOptions(warn, model, opts) + if o.servesCloud(model) { + reportOllamaCloudFormat(warn, model, opts, o.options.format, emulated) + } if err := o.processTools(req, opts.Tools); err != nil { return nil, err @@ -164,17 +175,33 @@ func (o *LLM) GenerateContent(ctx context.Context, messages []llms.MessageConten resp, err := o.handleChat(ctx, req, opts) if err != nil { - return nil, err + partial := o.createContentResponse(resp) + if len(partial.Choices) == 0 || isEmptyChoice(partial.Choices[0]) { + return nil, err + } + partial.Warnings = warn.List() + return partial, err } response = o.createContentResponse(resp) + response.Warnings = warn.List() + if emulated { + unwrapFencedAnswers(response) + } - // When a schema was requested, validate the final response against it; the - // response is returned alongside the typed error so usage is preserved. - if err = o.validateStructuredOutput(opts, response); err != nil { + if err = llms.CheckTruncation(response, opts); err != nil { return response, err } + // When a schema was requested, validate the final response against it; the + // response is returned alongside the typed error so usage is preserved. A + // request without messages only loads the model and is left alone, as before. + if len(req.Messages) > 0 { + if err = o.validateStructuredOutput(opts, response); err != nil { + return response, err + } + } + return response, nil } @@ -188,7 +215,7 @@ func (o *LLM) validateStructuredOutput(opts llms.CallOptions, resp *llms.Content } model := o.getModel(opts) for i, choice := range resp.Choices { - if choice.StopReason != "" && choice.StopReason != "stop" { + if choice.StopReason != "" && choice.StopReason != "stop" && !loadedOnly(choice.StopReason) { continue } // A tool-call turn is an intermediate step, not the final schema-typed @@ -203,6 +230,23 @@ func (o *LLM) validateStructuredOutput(opts llms.CallOptions, resp *llms.Content return nil } +// loadedOnly reports a done reason that says the server loaded or unloaded the +// model and generated nothing: no final answer, so a requested schema is not met. +func loadedOnly(doneReason string) bool { + return doneReason == "load" || doneReason == "unload" +} + +// unwrapFencedAnswers strips the Markdown code fence a model put around its whole +// answer despite the prompt instruction. It runs only for an emulated schema, +// where nothing on the server constrains the output. +func unwrapFencedAnswers(resp *llms.ContentResponse) { + for _, choice := range resp.Choices { + if len(choice.ToolCalls) == 0 && (choice.StopReason == "" || choice.StopReason == "stop") { + choice.Content = structuredoutput.UnwrapFencedJSON(choice.Content) + } + } +} + // getModel determines which model to use based on options and defaults. func (o *LLM) getModel(opts llms.CallOptions) string { if model := opts.GetModel(); model != "" { @@ -279,14 +323,57 @@ func (o *LLM) convertToolCall(toolCall llms.ToolCall) (api.ToolCall, error) { }, } - err := json.Unmarshal([]byte(toolCall.FunctionCall.Arguments), &tc.Function.Arguments) + fields, err := toolcall.DecodeFields(toolCall.FunctionCall.Arguments) if err != nil { return api.ToolCall{}, fmt.Errorf("error unmarshalling tool call arguments: %w", err) } + tc.Function.Arguments = api.NewToolCallFunctionArguments() + for _, field := range fields { + tc.Function.Arguments.Set(field.Key, field.Value) + } return tc, nil } +func resolveThink(model string, opts llms.CallOptions) *api.ThinkValue { + switch opts.Reasoning.ResolveMode() { //nolint:exhaustive // ReasoningDefault leaves the field unset + case llms.ReasoningOff: + return &api.ThinkValue{Value: false} + case llms.ReasoningOn: + if opts.Reasoning.DelegatesDepth() { + return nil + } + effort := opts.Reasoning.GetEffort(opts.GetMaxTokens()) + if takesOnlyGPTOSSLevels(model) { + return &api.ThinkValue{Value: gptOSSLevel(effort)} + } + if level := (&api.ThinkValue{Value: string(effort)}); level.IsValid() { + return level + } + return &api.ThinkValue{Value: true} + } + return nil +} + +func takesOnlyGPTOSSLevels(model string) bool { + name := strings.ToLower(model) + if idx := strings.LastIndex(name, "/"); idx != -1 { + name = name[idx+1:] + } + return strings.HasPrefix(name, "gpt-oss") +} + +func gptOSSLevel(effort llms.ReasoningEffort) string { + switch effort { + case llms.ReasoningMinimal, llms.ReasoningLow: + return "low" + case llms.ReasoningMedium: + return "medium" + default: + return "high" + } +} + // createChatRequest creates a chat request with the given parameters. func (o *LLM) createChatRequest(model string, messages []api.Message, opts llms.CallOptions) (*api.ChatRequest, error) { format, err := o.resolveFormat(opts) @@ -300,6 +387,11 @@ func (o *LLM) createChatRequest(model string, messages []api.Message, opts llms. return nil, fmt.Errorf("error creating ollama options: %w", err) } + if opts.Reasoning.IsDisabled() && + reasoning.ResolveOff(model, reasoning.ProviderOllama) == reasoning.OffUnsupported { + return nil, &reasoning.ErrReasoningOffUnsupported{Model: model} + } + stream := opts.StreamingFunc != nil req := &api.ChatRequest{ @@ -309,6 +401,7 @@ func (o *LLM) createChatRequest(model string, messages []api.Message, opts llms. Options: ollamaOptions, Stream: &stream, Tools: make(api.Tools, len(opts.Tools)), + Think: resolveThink(model, opts), } keepAlive := o.options.keepAlive @@ -322,14 +415,29 @@ func (o *LLM) createChatRequest(model string, messages []api.Message, opts llms. // resolveFormat picks the Ollama `format` field. A per-call structured-output // schema is sent as the native JSON Schema (Ollama constrains generation to it); // otherwise the legacy string mode is preserved unchanged — the client-level -// format, or "json" for JSONMode. +// format, or "json" for JSONMode. Ollama Cloud always gets the empty format: it +// ignores the field, so a schema there is refused, unless +// WithCloudStructuredOutputFallback moves it into the prompt instead. func (o *LLM) resolveFormat(opts llms.CallOptions) (json.RawMessage, error) { if so := opts.StructuredOutput; so != nil { if err := opts.ValidateStructuredOutput(); err != nil { return nil, err } + if o.emulatesStructuredOutput(o.getModel(opts), opts) { + return json.RawMessage(`""`), nil + } + if o.servesCloud(o.getModel(opts)) { + return nil, &llms.ErrStructuredOutputUnsupported{ + Provider: providerOllama, + Model: o.getModel(opts), + Reason: ollamaCloudFormatReason, + } + } return so.Schema, nil } + if o.servesCloud(o.getModel(opts)) { + return json.RawMessage(`""`), nil + } format := o.options.format if opts.JSONMode { format = "json" @@ -337,6 +445,45 @@ func (o *LLM) resolveFormat(opts llms.CallOptions) (json.RawMessage, error) { return json.RawMessage(fmt.Sprintf(`"%s"`, format)), nil } +const ollamaCloudFormatReason = "Ollama Cloud does not support structured outputs" + +// emulatesStructuredOutput reports whether a structured-output call travels as a +// prompt instruction: the model runs on Ollama Cloud, which ignores the format +// field, and the client opted in with WithCloudStructuredOutputFallback. +func (o *LLM) emulatesStructuredOutput(model string, opts llms.CallOptions) bool { + return opts.StructuredOutput != nil && o.options.cloudStructuredOutputFallback && o.servesCloud(model) +} + +// injectStructuredOutputPrompt appends the schema instruction to the last user +// message. Ollama Cloud does not answer a conversation without a user turn, so +// when there is none the instruction becomes that turn. +func injectStructuredOutputPrompt(messages []api.Message, schema json.RawMessage, withTools bool) []api.Message { + instruction := structuredoutput.PromptInstruction(schema, withTools) + for i := len(messages) - 1; i >= 0; i-- { + if messages[i].Role == "user" { + if messages[i].Content != "" { + messages[i].Content += "\n\n" + } + messages[i].Content += instruction + return messages + } + } + return append(messages, api.Message{Role: "user", Content: instruction}) +} + +// servesCloud reports whether the model runs on Ollama Cloud: reached at +// ollama.com, or a cloud model a local server offloads, tagged "-cloud". +func (o *LLM) servesCloud(model string) bool { + if _, tag, ok := strings.Cut(strings.ToLower(model), ":"); ok && (tag == "cloud" || strings.HasSuffix(tag, "-cloud")) { + return true + } + if o.options.ollamaServerURL == nil { + return false + } + host := strings.ToLower(o.options.ollamaServerURL.Hostname()) + return host == "ollama.com" || strings.HasSuffix(host, ".ollama.com") +} + // processTools adds tools to the chat request. func (o *LLM) processTools(req *api.ChatRequest, tools []llms.Tool) error { for i := range tools { @@ -363,13 +510,16 @@ func (o *LLM) handleChat(ctx context.Context, req *api.ChatRequest, opts llms.Ca var ( resp api.ChatResponse - streamedResponse string + streamedResponse strings.Builder + streamedThinking strings.Builder streamedToolCalls []api.ToolCall + finished bool ) splitter := reasoning.NewChunkContentSplitter() fn := func(response api.ChatResponse) error { textContent, reasoningContent := splitter.Split(response.Message.Content) + reasoningContent += response.Message.Thinking if opts.StreamingFunc != nil { reasoning := &reasoning.ContentReasoning{Content: reasoningContent} if err := streaming.CallWithReasoning(ctx, opts.StreamingFunc, reasoning); err != nil { @@ -393,17 +543,20 @@ func (o *LLM) handleChat(ctx context.Context, req *api.ChatRequest, opts llms.Ca } if response.Message.Content != "" { - streamedResponse += response.Message.Content + streamedResponse.WriteString(response.Message.Content) } + streamedThinking.WriteString(response.Message.Thinking) if len(response.Message.ToolCalls) > 0 { streamedToolCalls = append(streamedToolCalls, response.Message.ToolCalls...) } + finished = finished || response.Done if req.Stream == nil || !*req.Stream || response.Done { resp = response resp.Message = api.Message{ Role: "assistant", - Content: streamedResponse, + Content: streamedResponse.String(), + Thinking: streamedThinking.String(), ToolCalls: streamedToolCalls, } } @@ -411,17 +564,34 @@ func (o *LLM) handleChat(ctx context.Context, req *api.ChatRequest, opts llms.Ca } err := o.client.Chat(ctx, req, fn) + // A stream the server closed without its final frame, as Ollama up to 0.34.0 + // does when it stops a model repeating itself, still delivered an answer: + // keep the text that arrived instead of an empty one. + if err != nil || !finished { + resp.Message = api.Message{ + Role: "assistant", + Content: streamedResponse.String(), + Thinking: streamedThinking.String(), + ToolCalls: streamedToolCalls, + } + } return resp, err } // createContentResponse creates a LangChain content response from Ollama response. +func isEmptyChoice(choice *llms.ContentChoice) bool { + return choice.Content == "" && len(choice.ToolCalls) == 0 && choice.Reasoning.IsEmpty() +} + func (o *LLM) createContentResponse(resp api.ChatResponse) *llms.ContentResponse { - reasoning, content := reasoning.SplitContentWithReasoning(resp.Message.Content) + contentReasoning, content := reasoning.SplitContentWithReasoning(resp.Message.Content) + contentReasoning.Content += resp.Message.Thinking choices := []*llms.ContentChoice{ { Content: content, - Reasoning: reasoning, + Reasoning: contentReasoning, StopReason: resp.DoneReason, + Truncated: llms.IsTruncated(resp.DoneReason), GenerationInfo: map[string]any{ "CompletionTokens": resp.EvalCount, "PromptTokens": resp.PromptEvalCount, diff --git a/llms/ollama/options.go b/llms/ollama/options.go index 1995165a2..7b5a5c37f 100644 --- a/llms/ollama/options.go +++ b/llms/ollama/options.go @@ -10,18 +10,19 @@ import ( ) type options struct { - ollamaServerURL *url.URL - httpClient *http.Client - apiKey string - model string - ollamaOptions api.Options - pullProgressFunc api.PullProgressFunc - customModelTemplate string - system string - format string - keepAlive *time.Duration - pullModel bool - pullTimeout time.Duration + ollamaServerURL *url.URL + httpClient *http.Client + apiKey string + model string + ollamaOptions api.Options + pullProgressFunc api.PullProgressFunc + customModelTemplate string + system string + format string + cloudStructuredOutputFallback bool + keepAlive *time.Duration + pullModel bool + pullTimeout time.Duration } type Option func(*options) @@ -45,6 +46,25 @@ func WithFormat(format string) Option { } } +// WithCloudStructuredOutputFallback lets a llms.WithStructuredOutput call reach a +// model served by Ollama Cloud (ollama.com or *.ollama.com, or a model tagged +// "cloud" / "-cloud" on a local server), which ignores the format field. Instead +// of failing with [llms.ErrStructuredOutputUnsupported], the call appends the JSON +// Schema to the last user message (or adds a user message when there is none), +// sends an empty format and reports an [llms.WarningSubstitute]. The final answer +// is validated locally. A single Markdown code fence around the whole answer +// (```json or ```) is removed first, so the content holds the bare JSON; while +// streaming, the chunks still carry the fence. Any other answer that is not +// exactly one JSON value matching the schema, such as prose around it, comes back +// together with [llms.ErrStructuredOutputValidation]. A tool-call turn and a +// truncated answer are not validated (see [llms.WithFailOnTruncation]). Local +// models keep the native schema, and JSON mode alone is still dropped on the cloud. +func WithCloudStructuredOutputFallback() Option { + return func(opts *options) { + opts.cloudStructuredOutputFallback = true + } +} + // WithKeepAlive controls how long the model will stay loaded into memory following the request (default: 5m) // only supported by ollama v0.1.23 and later // diff --git a/llms/ollama/partial_stream_test.go b/llms/ollama/partial_stream_test.go new file mode 100644 index 000000000..bcd81bbc7 --- /dev/null +++ b/llms/ollama/partial_stream_test.go @@ -0,0 +1,180 @@ +package ollama + +import ( + "context" + "encoding/json" + "errors" + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func thinkingOnlyStream(t *testing.T) *LLM { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/x-ndjson") + for _, thought := range []string{"counting the ", "free rooms"} { + _, _ = io.WriteString(w, `{"model":"llama3","created_at":"2026-08-21T09:00:00Z",`+ + `"message":{"role":"assistant","content":"","thinking":"`+thought+`"},"done":false}`+"\n") + if f, ok := w.(http.Flusher); ok { + f.Flush() + } + } + })) + t.Cleanup(srv.Close) + + llm, err := New(WithServerURL(srv.URL), WithModel("llama3")) + require.NoError(t, err) + return llm +} + +func TestAReasoningOnlyStreamIsNotThrownAway(t *testing.T) { + t.Parallel() + + llm := thinkingOnlyStream(t) + + gaveUp := errors.New("consumer gave up") + delivered := 0 + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, + llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type != streaming.ChunkTypeReasoning { + return nil + } + delivered++ + if delivered == 2 { + return gaveUp + } + return nil + })) + + require.ErrorIs(t, err, gaveUp) + require.NotNil(t, resp, "a stream that produced only reasoning still produced something") + require.Len(t, resp.Choices, 1) + require.NotNil(t, resp.Choices[0].Reasoning) + assert.Contains(t, resp.Choices[0].Reasoning.Content, "counting the ") +} + +func TestABrokenStreamStillCarriesTheThinkingItDelivered(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/x-ndjson") + _, _ = io.WriteString(w, `{"model":"llama3","created_at":"2026-08-21T09:00:00Z",`+ + `"message":{"role":"assistant","content":"","thinking":"counting the free rooms"},"done":false}`+"\n") + if f, ok := w.(http.Flusher); ok { + f.Flush() + } + _, _ = io.WriteString(w, "{not json at all\n") + })) + t.Cleanup(srv.Close) + + llm, err := New(WithServerURL(srv.URL), WithModel("llama3")) + require.NoError(t, err) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + + require.Error(t, err, "an undecodable line is not a finished answer") + require.NotNil(t, resp, "handleChat assembles thinking even when the message carries no content") + require.Len(t, resp.Choices, 1) + require.NotNil(t, resp.Choices[0].Reasoning) + assert.Equal(t, "counting the free rooms", resp.Choices[0].Reasoning.Content) +} + +// cutServer writes the given NDJSON lines and closes the response cleanly, +// without the final frame (done: true) that normally ends an answer. Ollama up +// to 0.34.0 ends a stream this way when it stops a model repeating itself. +func cutServer(t *testing.T, lines ...string) *LLM { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/x-ndjson") + for _, line := range lines { + _, _ = io.WriteString(w, line+"\n") + } + })) + t.Cleanup(srv.Close) + + llm, err := New(WithServerURL(srv.URL), WithModel("llama3")) + require.NoError(t, err) + return llm +} + +func cutFrame(content string) string { + frame, _ := json.Marshal(map[string]any{ + "model": "llama3", "message": map[string]any{"role": "assistant", "content": content}, "done": false, + }) + return string(frame) +} + +func TestAStreamThatEndsBeforeItsFinalFrameKeepsItsText(t *testing.T) { + t.Parallel() + + human := []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")} + schema := llms.WithStructuredOutput(llms.StructuredOutputConfig{Name: "answer", Schema: json.RawMessage(ollamaSOSchema)}) + ignore := llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil }) + + t.Run("streaming keeps the text instead of an empty answer", func(t *testing.T) { + t.Parallel() + + var streamed strings.Builder + resp, err := cutServer(t, cutFrame("Paris is "), cutFrame("the capital.")).GenerateContent(t.Context(), human, + llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type == streaming.ChunkTypeText { + streamed.WriteString(chunk.Content) + } + return nil + })) + require.NoError(t, err) + assert.Equal(t, "Paris is the capital.", resp.Choices[0].Content) + assert.Equal(t, "Paris is the capital.", streamed.String()) + }) + + t.Run("a schema is judged on the text that arrived", func(t *testing.T) { + t.Parallel() + + resp, err := cutServer(t, cutFrame(`{"answer":`), cutFrame(`"42"}`)).GenerateContent(t.Context(), human, schema, ignore) + require.NoError(t, err) + assert.Equal(t, `{"answer":"42"}`, resp.Choices[0].Content) + + resp, err = cutServer(t, cutFrame(`{"answer":`), cutFrame(`"4`)).GenerateContent(t.Context(), human, schema, ignore) + var validation *llms.ErrStructuredOutputValidation + require.ErrorAs(t, err, &validation) + assert.Equal(t, `{"answer":"4`, resp.Choices[0].Content) + }) + + t.Run("a non-streaming answer without its final frame stays a success", func(t *testing.T) { + t.Parallel() + + resp, err := cutServer(t, cutFrame("Paris")).GenerateContent(t.Context(), human) + require.NoError(t, err) + assert.Equal(t, "Paris", resp.Choices[0].Content) + + out, err := llms.GenerateFromSinglePrompt(t.Context(), cutServer(t, cutFrame("Paris")), "question") + require.NoError(t, err) + assert.Equal(t, "Paris", out) + }) + + t.Run("nothing at all is still an empty answer", func(t *testing.T) { + t.Parallel() + + resp, err := cutServer(t).GenerateContent(t.Context(), human, ignore) + require.NoError(t, err) + require.NotNil(t, resp) + assert.Empty(t, resp.Choices[0].Content) + }) +} diff --git a/llms/ollama/sampling_request_test.go b/llms/ollama/sampling_request_test.go new file mode 100644 index 000000000..fc9d1f427 --- /dev/null +++ b/llms/ollama/sampling_request_test.go @@ -0,0 +1,44 @@ +package ollama + +import ( + "testing" + + "github.com/stretchr/testify/require" + "github.com/vxcontrol/langchaingo/llms" +) + +func TestSamplingReachesTheWireInTheDoorsOwnShape(t *testing.T) { + t.Parallel() + + body := captureChatRequest(t, + llms.WithTemperature(0.3), + llms.WithTopP(0.7), + llms.WithTopK(11), + llms.WithMaxTokens(555), + llms.WithSeed(7), + llms.WithStopWords([]string{"STOP"}), + llms.WithRepetitionPenalty(1.3), + llms.WithFrequencyPenalty(0.4), + llms.WithPresencePenalty(0.6), + ) + + options, ok := body["options"].(map[string]any) + require.True(t, ok, "no options in the request; body=%v", body) + + for field, want := range map[string]float64{ + "temperature": 0.3, + "top_p": 0.7, + "top_k": 11, + "num_predict": 555, + "seed": 7, + "repeat_penalty": 1.3, + "frequency_penalty": 0.4, + "presence_penalty": 0.6, + } { + got, present := options[field] + require.Truef(t, present, "%s never reached the wire; options=%v", field, options) + require.InDeltaf(t, want, got, 1e-6, "%s = %v, want %v", field, got, want) + } + + require.Equal(t, []any{"STOP"}, options["stop"], "stop words did not reach the wire") +} diff --git a/llms/ollama/structured_output_fallback_test.go b/llms/ollama/structured_output_fallback_test.go new file mode 100644 index 000000000..04332bcbd --- /dev/null +++ b/llms/ollama/structured_output_fallback_test.go @@ -0,0 +1,538 @@ +package ollama + +import ( + "context" + "encoding/json" + "errors" + "io" + "net/http" + "net/http/httptest" + "net/url" + "strings" + "sync" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/callbacks" + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" + "github.com/vxcontrol/langchaingo/llms/structuredoutput" +) + +// fallbackServer answers every chat request with the same NDJSON lines and +// keeps the request bodies it received for the test goroutine to decode. +type fallbackServer struct { + *httptest.Server + + mu sync.Mutex + bodies [][]byte +} + +func newFallbackServer(t *testing.T, lines ...string) *fallbackServer { + t.Helper() + + fs := &fallbackServer{} + fs.Server = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + body, _ := io.ReadAll(r.Body) + fs.mu.Lock() + fs.bodies = append(fs.bodies, body) + fs.mu.Unlock() + + w.Header().Set("Content-Type", "application/x-ndjson") + for _, line := range lines { + _, _ = io.WriteString(w, line+"\n") + } + })) + t.Cleanup(fs.Close) + return fs +} + +// wireRequest is the part of a chat request these tests read. +type wireRequest struct { + Format json.RawMessage `json:"format"` + Messages []wireMessage `json:"messages"` + Tools []any `json:"tools"` +} + +type wireMessage struct { + Role string `json:"role"` + Content string `json:"content"` + Images []string `json:"images"` +} + +func (fs *fallbackServer) requests() int { + fs.mu.Lock() + defer fs.mu.Unlock() + return len(fs.bodies) +} + +func (fs *fallbackServer) request(t *testing.T, i int) wireRequest { + t.Helper() + + fs.mu.Lock() + defer fs.mu.Unlock() + require.Greater(t, len(fs.bodies), i, "the server got fewer requests than expected") + var req wireRequest + require.NoError(t, json.Unmarshal(fs.bodies[i], &req)) + return req +} + +// chatLine is one NDJSON line of an Ollama chat response. +func chatLine(content string, done bool, doneReason string) string { + line, _ := json.Marshal(map[string]any{ + "model": "m", + "message": map[string]any{"role": "assistant", "content": content}, + "done": done, + "done_reason": doneReason, + }) + return string(line) +} + +func answerLine(content string) string { return chatLine(content, true, "stop") } + +func newFallbackLLM(t *testing.T, serverURL, model string, extra ...Option) *LLM { + t.Helper() + + opts := append([]Option{WithServerURL(serverURL), WithModel(model), WithCloudStructuredOutputFallback()}, extra...) + llm, err := New(opts...) + require.NoError(t, err) + return llm +} + +func answerSchema() llms.CallOption { + return llms.WithStructuredOutput(llms.StructuredOutputConfig{Name: "answer", Schema: json.RawMessage(ollamaSOSchema)}) +} + +// instructed reports whether a wire message carries the injected instruction. +func instructed(content string) bool { + return strings.Contains(content, structuredoutput.SchemaInstruction) && strings.Contains(content, ollamaSOSchema) +} + +// placementCase is a conversation and where the fallback must put the schema. +type placementCase struct { + name string + messages []llms.MessageContent + opts []llms.CallOption + roles []string + instructed int + prefix string + toolsNote bool +} + +func placementCases() []placementCase { + weatherTool := llms.Tool{Type: "function", Function: &llms.FunctionDefinition{ + Name: "get_weather", + Parameters: map[string]any{"type": "object", "properties": map[string]any{"city": map[string]any{"type": "string"}}}, + }} + toolCall := llms.ToolCall{ + ID: makeToolCallID(0, "get_weather"), Type: "function", + FunctionCall: &llms.FunctionCall{Name: "get_weather", Arguments: `{"city":"Paris"}`}, + } + + return []placementCase{ + { + name: "the only user turn", + messages: []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")}, + roles: []string{"user"}, instructed: 0, prefix: "question\n\n", + }, + { + name: "only the last of several user turns", + messages: []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeSystem, "sys"), + llms.TextParts(llms.ChatMessageTypeHuman, "first"), + llms.TextParts(llms.ChatMessageTypeAI, "reply"), + llms.TextParts(llms.ChatMessageTypeHuman, "second"), + }, + roles: []string{"system", "user", "assistant", "user"}, instructed: 3, prefix: "second\n\n", + }, + { + name: "the user turn before a tool round, telling the model it may still call tools", + messages: []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "weather in Paris?"), + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{toolCall}}, + {Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{llms.ToolCallResponse{ + ToolCallID: toolCall.ID, Name: "get_weather", Content: "sunny", + }}}, + }, + opts: []llms.CallOption{llms.WithTools([]llms.Tool{weatherTool})}, + roles: []string{"user", "assistant", "tool"}, instructed: 0, prefix: "weather in Paris?\n\n", toolsNote: true, + }, + { + name: "a user turn of its own when there is none, since the cloud answers no conversation without one", + messages: []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeSystem, "sys")}, + roles: []string{"system", "user"}, instructed: 1, prefix: structuredoutput.SchemaInstruction, + }, + { + name: "an image-only user turn without a blank separator", + messages: []llms.MessageContent{{Role: llms.ChatMessageTypeHuman, Parts: []llms.ContentPart{ + llms.BinaryContent{MIMEType: "image/png", Data: []byte("png")}, + }}}, + roles: []string{"user"}, instructed: 0, prefix: structuredoutput.SchemaInstruction, + }, + } +} + +func TestTheCloudFallbackCarriesTheSchemaInThePrompt(t *testing.T) { + t.Parallel() + + for _, tc := range placementCases() { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + srv := newFallbackServer(t, answerLine(`{"answer":"42"}`)) + llm := newFallbackLLM(t, srv.URL, "gpt-oss:120b-cloud") + + before, err := json.Marshal(tc.messages) + require.NoError(t, err) + + opts := append([]llms.CallOption{answerSchema()}, tc.opts...) + for range 2 { + _, err = llm.GenerateContent(t.Context(), tc.messages, opts...) + require.NoError(t, err) + } + + after, err := json.Marshal(tc.messages) + require.NoError(t, err) + assert.JSONEq(t, string(before), string(after), "the caller's messages must stay as they were") + + for call := range 2 { + assertPlacement(t, srv.request(t, call), tc) + } + }) + } +} + +// assertPlacement checks that exactly the expected wire message carries the +// schema instruction, once, after the text the caller wrote there. +func assertPlacement(t *testing.T, req wireRequest, tc placementCase) { + t.Helper() + + assert.JSONEq(t, `""`, string(req.Format), "the cloud gets the empty format") + + roles := make([]string, len(req.Messages)) + for i, m := range req.Messages { + roles[i] = m.Role + if i != tc.instructed { + assert.False(t, instructed(m.Content), "message %d must not carry the schema", i) + } + } + require.Equal(t, tc.roles, roles) + + got := req.Messages[tc.instructed].Content + assert.True(t, instructed(got), "message %d must carry the schema: %q", tc.instructed, got) + assert.Equal(t, 1, strings.Count(got, ollamaSOSchema), "a repeated call must not stack the instruction") + assert.True(t, strings.HasPrefix(got, tc.prefix), "got %q", got) + assert.Equal(t, tc.toolsNote, strings.Contains(got, structuredoutput.ToolsNote)) + // The phrases that make a model drop a caller's Markdown or fences, measured + // against Ollama Cloud; a weaker wording loses to a conflicting system prompt. + assert.Contains(t, got, "overrides any earlier instruction about format or style") + assert.Contains(t, got, "no code fences") +} + +// redirectTransport sends every request to target, whatever host it named. +type redirectTransport struct{ target *url.URL } + +func (r redirectTransport) RoundTrip(req *http.Request) (*http.Response, error) { + req = req.Clone(req.Context()) + req.URL.Scheme, req.URL.Host = r.target.Scheme, r.target.Host + return http.DefaultTransport.RoundTrip(req) +} + +func TestTheCloudFallbackReachesOnlyCloudServedModels(t *testing.T) { + t.Parallel() + + human := []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")} + + t.Run("a local model keeps the native schema", func(t *testing.T) { + t.Parallel() + + srv := newFallbackServer(t, answerLine(`{"answer":"42"}`)) + resp, err := newFallbackLLM(t, srv.URL, "gpt-oss:120b").GenerateContent(t.Context(), human, answerSchema()) + require.NoError(t, err) + + req := srv.request(t, 0) + assert.JSONEq(t, ollamaSOSchema, string(req.Format)) + assert.Equal(t, "question", req.Messages[0].Content) + assert.Empty(t, resp.Warnings) + }) + + t.Run("a per-call cloud model is emulated, and a per-call local model is not", func(t *testing.T) { + t.Parallel() + + srv := newFallbackServer(t, answerLine(`{"answer":"42"}`)) + resp, err := newFallbackLLM(t, srv.URL, "gpt-oss:120b").GenerateContent(t.Context(), human, + answerSchema(), llms.WithModel("gpt-oss:120b-cloud")) + require.NoError(t, err) + assert.Equal(t, "gpt-oss:120b-cloud", ollamaWarningsByOption(resp.Warnings)["WithStructuredOutput"].Model, + "the warning names the model the call ran on") + _, err = newFallbackLLM(t, srv.URL, "glm-4.6:cloud").GenerateContent(t.Context(), human, + answerSchema(), llms.WithModel("llama3")) + require.NoError(t, err) + + cloud, local := srv.request(t, 0), srv.request(t, 1) + assert.JSONEq(t, `""`, string(cloud.Format)) + assert.True(t, instructed(cloud.Messages[0].Content)) + assert.JSONEq(t, ollamaSOSchema, string(local.Format)) + assert.Equal(t, "question", local.Messages[0].Content) + }) + + t.Run("a model on an ollama.com host is emulated whatever its tag", func(t *testing.T) { + t.Parallel() + + srv := newFallbackServer(t, answerLine(`{"answer":"42"}`)) + target, err := url.Parse(srv.URL) + require.NoError(t, err) + llm := newFallbackLLM(t, "https://api.ollama.com", "gpt-oss:120b", + WithHTTPClient(&http.Client{Transport: redirectTransport{target: target}})) + + resp, err := llm.GenerateContent(t.Context(), human, answerSchema()) + require.NoError(t, err) + assert.JSONEq(t, `""`, string(srv.request(t, 0).Format)) + assert.True(t, instructed(srv.request(t, 0).Messages[0].Content)) + assert.Equal(t, llms.WarningSubstitute, ollamaWarningsByOption(resp.Warnings)["WithStructuredOutput"].Kind) + }) + + t.Run("JSON mode alone is still dropped and gets no instruction", func(t *testing.T) { + t.Parallel() + + srv := newFallbackServer(t, answerLine(`{}`)) + resp, err := newFallbackLLM(t, srv.URL, "gpt-oss:120b-cloud").GenerateContent(t.Context(), human, llms.WithJSONMode()) + require.NoError(t, err) + + req := srv.request(t, 0) + assert.JSONEq(t, `""`, string(req.Format)) + assert.Equal(t, "question", req.Messages[0].Content) + assert.Equal(t, llms.WarningDrop, ollamaWarningsByOption(resp.Warnings)["WithJSONMode"].Kind) + assert.NotContains(t, ollamaWarningsByOption(resp.Warnings), "WithStructuredOutput") + }) + + t.Run("without the option the cloud still refuses the schema before any request", func(t *testing.T) { + t.Parallel() + + srv := newFallbackServer(t, answerLine(`{"answer":"42"}`)) + llm, err := New(WithServerURL(srv.URL), WithModel("gpt-oss:120b-cloud")) + require.NoError(t, err) + + _, err = llm.GenerateContent(t.Context(), human, answerSchema()) + var unsupported *llms.ErrStructuredOutputUnsupported + require.ErrorAs(t, err, &unsupported) + assert.Zero(t, srv.requests()) + }) + + t.Run("an invalid schema config is refused before any request", func(t *testing.T) { + t.Parallel() + + srv := newFallbackServer(t, answerLine(`{"answer":"42"}`)) + _, err := newFallbackLLM(t, srv.URL, "gpt-oss:120b-cloud").GenerateContent(t.Context(), human, + llms.WithStructuredOutput(llms.StructuredOutputConfig{Name: "answer", Schema: json.RawMessage(`{"type":`)})) + require.ErrorIs(t, err, llms.ErrStructuredOutputConfig) + assert.Zero(t, srv.requests()) + }) +} + +func TestATruncatedFencedAnswerIsNotUnwrapped(t *testing.T) { + t.Parallel() + + raw := "```json\n{\"answer\":\"```" + srv := newFallbackServer(t, chatLine(raw, true, "length")) + resp, err := newFallbackLLM(t, srv.URL, "gpt-oss:120b-cloud").GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")}, answerSchema()) + require.NoError(t, err) + assert.Equal(t, raw, resp.Choices[0].Content, "an answer that is not judged keeps its raw text") +} + +func TestALocalModelsFencedAnswerIsNotUnwrapped(t *testing.T) { + t.Parallel() + + srv := newFallbackServer(t, answerLine("```json\n{\"answer\":\"42\"}\n```")) + resp, err := newFallbackLLM(t, srv.URL, "gpt-oss:120b").GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")}, answerSchema()) + + var validation *llms.ErrStructuredOutputValidation + require.ErrorAs(t, err, &validation, "the native schema constrains the server; nothing is repaired locally") + assert.Equal(t, "```json\n{\"answer\":\"42\"}\n```", resp.Choices[0].Content) +} + +func TestTheCloudFallbackValidatesTheAnswerLocally(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + content string + doneReason string + opts []llms.CallOption + invalid bool + truncated bool + want string + }{ + {name: "a valid answer", content: `{"answer":"42"}`, want: `{"answer":"42"}`}, + {name: "surrounding whitespace", content: "\n {\"answer\":\"42\"} \n", want: `{"answer":"42"}`}, + {name: "thinking tags before the answer", content: `plan{"answer":"42"}`, want: `{"answer":"42"}`}, + {name: "an answer off the schema", content: `{"answer":42}`, invalid: true}, + {name: "a fenced answer is unwrapped", content: "```json\n{\"answer\":\"42\"}\n```", want: `{"answer":"42"}`}, + {name: "an untagged fence is unwrapped", content: "\n```\n{\"answer\":\"42\"}\n```\n", want: `{"answer":"42"}`}, + { + name: "an unwrapped answer off the schema", content: "```json\n{\"answer\":42}\n```", + invalid: true, want: `{"answer":42}`, + }, + {name: "prose around a fence", content: "Here it is:\n```json\n{\"answer\":\"42\"}\n```", invalid: true}, + {name: "two fences", content: "```json\n{\"answer\":\"a\"}\n```\n```json\n{\"answer\":\"b\"}\n```", invalid: true}, + {name: "a fence of another language", content: "```yaml\nanswer: \"42\"\n```", invalid: true}, + {name: "prose around the answer", content: `Here it is: {"answer":"42"}`, invalid: true}, + {name: "two values", content: `{"answer":"a"}{"answer":"b"}`, invalid: true}, + {name: "an empty answer", content: "", invalid: true}, + {name: "a truncated answer is left alone", content: `{"answer":"4`, doneReason: "length", truncated: true, want: `{"answer":"4`}, + { + name: "a truncated answer fails when the caller asks", content: `{"answer":"4`, doneReason: "length", + opts: []llms.CallOption{llms.WithFailOnTruncation()}, truncated: true, + }, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + doneReason := tc.doneReason + if doneReason == "" { + doneReason = "stop" + } + srv := newFallbackServer(t, chatLine(tc.content, true, doneReason)) + llm := newFallbackLLM(t, srv.URL, "gpt-oss:120b-cloud") + + opts := append([]llms.CallOption{answerSchema()}, tc.opts...) + resp, err := llm.GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")}, opts...) + + require.NotNil(t, resp, "the answer comes back with any error") + warning := ollamaWarningsByOption(resp.Warnings)["WithStructuredOutput"] + assert.Equal(t, llms.WarningSubstitute, warning.Kind) + assert.Equal(t, "answer", warning.Asked) + assert.Equal(t, "a prompt instruction", warning.Sent) + assert.NotEmpty(t, warning.Reason) + + switch { + case tc.invalid: + var validation *llms.ErrStructuredOutputValidation + require.ErrorAs(t, err, &validation) + assert.Equal(t, "gpt-oss:120b-cloud", validation.Model) + want := tc.content + if tc.want != "" { + want = tc.want + } + assert.Equal(t, want, resp.Choices[0].Content, "only a single whole fence is removed, nothing else is repaired") + case len(tc.opts) > 0: + assert.True(t, llms.IsTruncatedError(err), "got %v", err) + default: + require.NoError(t, err) + assert.Equal(t, tc.want, resp.Choices[0].Content) + } + assert.Equal(t, tc.truncated, resp.Choices[0].Truncated) + }) + } +} + +func TestTheCloudFallbackLetsAToolCallThrough(t *testing.T) { + t.Parallel() + + srv := newFallbackServer(t, `{"model":"m","message":{"role":"assistant","content":"",`+ + `"tool_calls":[{"function":{"name":"get_weather","arguments":{"city":"Paris"}}}]},"done":true,"done_reason":"stop"}`) + llm := newFallbackLLM(t, srv.URL, "gpt-oss:120b-cloud") + + resp, err := llm.GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "weather in Paris?")}, + answerSchema(), llms.WithTools([]llms.Tool{{Type: "function", Function: &llms.FunctionDefinition{ + Name: "get_weather", + Parameters: map[string]any{"type": "object", "properties": map[string]any{"city": map[string]any{"type": "string"}}}, + }}})) + require.NoError(t, err, "a tool-call turn is not the final answer and is not validated") + require.Len(t, resp.Choices[0].ToolCalls, 1) + assert.Equal(t, "get_weather", resp.Choices[0].ToolCalls[0].FunctionCall.Name) + + req := srv.request(t, 0) + assert.Len(t, req.Tools, 1) + assert.Contains(t, req.Messages[0].Content, structuredoutput.ToolsNote) +} + +func TestTheCloudFallbackValidatesTheStreamedAnswer(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + chunks []string + content string + invalid bool + }{ + {name: "a valid answer in pieces", chunks: []string{`{"answer":`, `"42"}`}, content: `{"answer":"42"}`}, + { + name: "a fenced answer in pieces is unwrapped once complete", + chunks: []string{"```json\n", `{"answer":"42"}`, "\n```"}, + content: `{"answer":"42"}`, + }, + {name: "prose in pieces", chunks: []string{"The answer ", "is 42."}, content: "The answer is 42.", invalid: true}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + lines := make([]string, 0, len(tc.chunks)+1) + for _, chunk := range tc.chunks { + lines = append(lines, chatLine(chunk, false, "")) + } + srv := newFallbackServer(t, append(lines, chatLine("", true, "stop"))...) + llm := newFallbackLLM(t, srv.URL, "gpt-oss:120b-cloud") + + var streamed strings.Builder + resp, err := llm.GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")}, + answerSchema(), llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type == streaming.ChunkTypeText { + streamed.WriteString(chunk.Content) + } + return nil + })) + + require.NotNil(t, resp) + assert.Equal(t, strings.Join(tc.chunks, ""), streamed.String(), "every chunk reaches the caller as sent") + assert.Equal(t, tc.content, resp.Choices[0].Content) + assert.JSONEq(t, `""`, string(srv.request(t, 0).Format)) + assert.Equal(t, llms.WarningSubstitute, ollamaWarningsByOption(resp.Warnings)["WithStructuredOutput"].Kind) + + var validation *llms.ErrStructuredOutputValidation + assert.Equal(t, tc.invalid, errors.As(err, &validation), "got %v", err) + if !tc.invalid { + require.NoError(t, err) + } + }) + } +} + +// countingHandler counts the closing callbacks of each call. +type countingHandler struct { + callbacks.SimpleHandler + + errs []error + ends int +} + +func (h *countingHandler) HandleLLMError(_ context.Context, err error) { h.errs = append(h.errs, err) } + +func (h *countingHandler) HandleLLMGenerateContentEnd(context.Context, *llms.ContentResponse) { + h.ends++ +} + +func TestAFailedCloudFallbackValidationClosesTheCallWithAnError(t *testing.T) { + t.Parallel() + + srv := newFallbackServer(t, answerLine("not JSON")) + llm := newFallbackLLM(t, srv.URL, "gpt-oss:120b-cloud") + handler := &countingHandler{} + llm.CallbacksHandler = handler + + _, err := llm.GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")}, answerSchema()) + + var validation *llms.ErrStructuredOutputValidation + require.ErrorAs(t, err, &validation) + require.Len(t, handler.errs, 1) + assert.ErrorAs(t, handler.errs[0], &validation) + assert.Zero(t, handler.ends) +} diff --git a/llms/ollama/testdata/TestCloudJSONMode.httprr b/llms/ollama/testdata/TestCloudJSONMode.httprr index bf2dea856..f1d27c670 100644 --- a/llms/ollama/testdata/TestCloudJSONMode.httprr +++ b/llms/ollama/testdata/TestCloudJSONMode.httprr @@ -1,13 +1,13 @@ httprr trace v1 -361 944 +357 944 POST https://ollama.com/api/chat HTTP/1.1 Host: ollama.com User-Agent: langchaingo-httprr -Content-Length: 184 +Content-Length: 180 Accept: application/x-ndjson Content-Type: application/json -{"model":"gpt-oss:120b","messages":[{"role":"user","content":"List three colors in JSON format with a 'colors' array."}],"stream":false,"format":"json","options":{"num_predict":16384}}HTTP/2.0 200 OK +{"model":"gpt-oss:120b","messages":[{"role":"user","content":"List three colors in JSON format with a 'colors' array."}],"stream":false,"format":"","options":{"num_predict":16384}}HTTP/2.0 200 OK Content-Length: 415 Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: application/json diff --git a/llms/ollama/testdata/TestCloudStructuredOutput-glm.httprr b/llms/ollama/testdata/TestCloudStructuredOutput-glm.httprr deleted file mode 100644 index 064743770..000000000 --- a/llms/ollama/testdata/TestCloudStructuredOutput-glm.httprr +++ /dev/null @@ -1,24 +0,0 @@ -httprr trace v1 -461 1610 -POST https://ollama.com/api/chat HTTP/1.1 -Host: ollama.com -User-Agent: langchaingo-httprr -Content-Length: 284 -Accept: application/x-ndjson -Content-Type: application/json - -{"model":"glm-5.2","messages":[{"role":"user","content":"Reply with ONLY a JSON object (no prose, no markdown) giving the capital of France."}],"stream":false,"format":{"type":"object","properties":{"capital":{"type":"string"}},"required":["capital"]},"options":{"num_predict":16384}}HTTP/2.0 200 OK -Content-Length: 1104 -Alt-Svc: h3=":443"; ma=2592000 -Content-Type: application/json -Date: Fri, 17 Jul 2026 01:06:55 GMT -Server: Google Frontend -Traceparent: 00-ef04d05efcf84d633a3aee8fb716da16-d27dc36579c8914c-00 -Via: 1.1 google -X-Build-Commit: 497d56d78d9396981c6f7d0265656affaf63d3d7 -X-Build-Time: 2026-07-16T17:39:19-07:00 -X-Cloud-Trace-Context: ef04d05efcf84d633a3aee8fb716da16/15167493960655999308 -X-Frame-Options: DENY -X-Request-Id: 64187c99-5a2e-4d55-86a5-8a148b71ed4c - -{"model":"glm-5.2","created_at":"2026-07-17T01:06:55.792329867Z","message":{"role":"assistant","content":"{\"capital\": \"Paris\"}","thinking":"1. **Analyze the Request:**\n * Target: Give the capital of France.\n * Format: ONLY a JSON object.\n * Constraint 1: No prose.\n * Constraint 2: No markdown (e.g., no ```json ... ``` blocks).\n * Constraint 3: ONLY a JSON object.\n\n2. **Determine the Data:**\n * Capital of France: Paris.\n\n3. **Construct the JSON object:**\n * `{\"capital\": \"Paris\"}` or `{\"country\": \"France\", \"capital\": \"Paris\"}`. Either works, but keeping it simple is usually best. Let's use `{\"capital\": \"Paris\"}`.\n\n4. **Format the Output:**\n * Ensure there are no backticks, no explanations, just the raw JSON string.\n * Output: `{\"capital\": \"Paris\"}`\n\n5. **Final Verification:**\n * Is it only a JSON object? Yes.\n * No prose? Yes.\n * No markdown? Yes.\n * Capital of France? Yes."},"done":true,"done_reason":"stop","total_duration":9390319880,"prompt_eval_count":31,"eval_count":247} diff --git a/llms/ollama/testdata/TestCloudStructuredOutput-kimi.httprr b/llms/ollama/testdata/TestCloudStructuredOutput-kimi.httprr deleted file mode 100644 index 22a760a9c..000000000 --- a/llms/ollama/testdata/TestCloudStructuredOutput-kimi.httprr +++ /dev/null @@ -1,24 +0,0 @@ -httprr trace v1 -463 3490 -POST https://ollama.com/api/chat HTTP/1.1 -Host: ollama.com -User-Agent: langchaingo-httprr -Content-Length: 286 -Accept: application/x-ndjson -Content-Type: application/json - -{"model":"kimi-k2.5","messages":[{"role":"user","content":"Reply with ONLY a JSON object (no prose, no markdown) giving the capital of France."}],"stream":false,"format":{"type":"object","properties":{"capital":{"type":"string"}},"required":["capital"]},"options":{"num_predict":16384}}HTTP/2.0 200 OK -Content-Length: 2986 -Alt-Svc: h3=":443"; ma=2592000 -Content-Type: application/json -Date: Fri, 17 Jul 2026 01:07:01 GMT -Server: Google Frontend -Traceparent: 00-97b46e70a9d5d3d1604373a5caa4c589-0d914abe21e4393b-00 -Via: 1.1 google -X-Build-Commit: 497d56d78d9396981c6f7d0265656affaf63d3d7 -X-Build-Time: 2026-07-16T17:39:19-07:00 -X-Cloud-Trace-Context: 97b46e70a9d5d3d1604373a5caa4c589/977644774588954939 -X-Frame-Options: DENY -X-Request-Id: 476b7ba6-eefd-4682-af6a-40cb0c09a1ec - -{"model":"kimi-k2.5","created_at":"2026-07-17T01:07:01.008716213Z","message":{"role":"assistant","content":"{\"country\":\"France\",\"capital\":\"Paris\"}","thinking":"The user wants a JSON object that gives the capital of France. They specified:\n 1. Reply with ONLY a JSON object\n 2. No prose\n 3. No markdown\n \n So I should output something like:\n {\"capital\": \"Paris\"}\n or\n {\"country\": \"France\", \"capital\": \"Paris\"}\n \n The simplest valid JSON that answers the question would be:\n {\"capital\":\"Paris\"}\n \n or just\n {\"France\":\"Paris\"}\n \n I think {\"capital\":\"Paris\"} or {\"country\":\"France\",\"capital\":\"Paris\"} would be appropriate. I'll go with a clear simple object.\n \n Since they said \"giving the capital of France\", I'll provide a JSON object that contains this information clearly.\n \n Format: Just the raw JSON, no markdown code blocks, no extra text.\n \n Example:\n {\"capital\":\"Paris\"}\n \n or\n {\"country\":\"France\",\"capital\":\"Paris\"}\n \n I'll use the second one as it's more explicit about what the capital belongs to, but the first one is also valid since the user asked specifically about France. Actually, looking at the prompt again, it just says \"giving the capital of France\" so either works. I'll provide a clear object.\n \n Actually, to be safe and explicit:\n {\"capital\":\"Paris\"}\n \n Or perhaps:\n {\"name\":\"Paris\",\"country\":\"France\",\"is_capital\":true}\n \n But the simplest is best. I'll go with:\n {\"capital\":\"Paris\"}\n \n Wait, should I include the country name in the key or value? The user asked for the capital of France, so maybe:\n {\"France\":\"Paris\"}\n \n This is also valid JSON and directly answers the question.\n \n I'll go with:\n {\"capital\":\"Paris\"}\n \n But to be thorough and avoid ambiguity:\n {\"country\":\"France\",\"capital\":\"Paris\"}\n \n This is probably the safest bet as it's self-documenting.\n \n However, the user might want just the fact stated. Let me reconsider the exact wording: \"giving the capital of France\"\n \n So the JSON should convey that Paris is the capital of France.\n \n Options:\n 1. {\"capital\":\"Paris\"}\n 2. {\"France\":\"Paris\"}\n 3. {\"country\":\"France\",\"capital\":\"Paris\"}\n 4. {\"capital_of_France\":\"Paris\"}\n \n Option 3 is the most standard and readable. Option 1 is ambiguous (capital of what?). Option 2 treats France as the key which is okay but less conventional. Option 4 is explicit but uses underscores which is fine.\n \n I'll go with option 3: {\"country\":\"France\",\"capital\":\"Paris\"}\n \n Actually, looking at similar requests, usually a simple key-value is expected. But option 3 is clearest.\n \n Final check: The user wants ONLY a JSON object, no prose, no markdown. So no ```json and no ```. Just the raw JSON string.\n \n Final output: {\"country\":\"France\",\"capital\":\"Paris\"}"},"done":true,"done_reason":"stop","total_duration":3650171269,"prompt_eval_count":27,"eval_count":600} diff --git a/llms/ollama/testdata/TestCloudStructuredOutputFallback-non-streaming.httprr b/llms/ollama/testdata/TestCloudStructuredOutputFallback-non-streaming.httprr new file mode 100644 index 000000000..2d2d1f8a1 --- /dev/null +++ b/llms/ollama/testdata/TestCloudStructuredOutputFallback-non-streaming.httprr @@ -0,0 +1,24 @@ +httprr trace v1 +1212 1762 +POST https://ollama.com/api/chat HTTP/1.1 +Host: ollama.com +User-Agent: langchaingo-httprr +Content-Length: 1034 +Accept: application/x-ndjson +Content-Type: application/json + +{"model":"gpt-oss:120b","messages":[{"role":"system","content":"You are a travel guide. Answer in Markdown with headings."},{"role":"user","content":"Describe Paris briefly.\n\nReply with exactly one JSON value that validates against the JSON Schema below. This overrides any earlier instruction about format or style: no Markdown, no code fences, no headings, and no text before or after the JSON. The whole reply is parsed by a JSON parser.\nJSON Schema:\n{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"},\"population_millions\":{\"type\":\"number\"},\"landmarks\":{\"type\":\"array\",\"minItems\":2,\"maxItems\":3,\"items\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"kind\":{\"type\":\"string\",\"enum\":[\"museum\",\"monument\",\"park\",\"church\",\"other\"]}},\"required\":[\"name\",\"kind\"],\"additionalProperties\":false}}},\"required\":[\"city\",\"population_millions\",\"landmarks\"],\"additionalProperties\":false}"}],"stream":false,"format":"","options":{"num_predict":16384}}HTTP/2.0 200 OK +Content-Length: 1256 +Alt-Svc: h3=":443"; ma=2592000 +Content-Type: application/json +Date: Thu, 24 Sep 2026 13:47:06 GMT +Server: Google Frontend +Traceparent: 00-ce3fbe642d885882042e906179d04f13-a68928b9f25d0ddb-00 +Via: 1.1 google +X-Build-Commit: 614f90b4fc81e84f478f88d324848f8028bf3d1f +X-Build-Time: 2026-09-23T16:54:33-07:00 +X-Cloud-Trace-Context: ce3fbe642d885882042e906179d04f13/12000167461205642715 +X-Frame-Options: DENY +X-Request-Id: 41ea435d-4794-424e-b715-8d8dd6cbf4f0 + +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:06.954340603Z","message":{"role":"assistant","content":"{\n \"city\": \"Paris\",\n \"population_millions\": 2.2,\n \"landmarks\": [\n {\n \"name\": \"Eiffel Tower\",\n \"kind\": \"monument\"\n },\n {\n \"name\": \"Louvre Museum\",\n \"kind\": \"museum\"\n },\n {\n \"name\": \"Notre-Dame Cathedral\",\n \"kind\": \"church\"\n }\n ]\n}","thinking":"The user wants a brief description of Paris but must output a JSON object conforming to the schema. No extra text, no markdown, no code fences, only JSON. Must include city, population_millions (number), landmarks array with 2-3 items, each having name and kind (enum). Let's provide 3 landmarks: Eiffel Tower (monument), Louvre Museum (museum), Notre-Dame Cathedral (church). Ensure kind matches enum: \"monument\", \"museum\", \"church\". Provide population maybe 2.2 million. Provide correct JSON.\n\nCheck schema: additionalProperties false for top level, so only city, population_millions, landmarks allowed. Provide no extra.\n\nReturn exactly JSON object.\n\n"},"done":true,"done_reason":"stop","total_duration":946439664,"prompt_eval_count":255,"prompt_eval_cached_count":48,"eval_count":244} diff --git a/llms/ollama/testdata/TestCloudStructuredOutputFallback-streaming.httprr b/llms/ollama/testdata/TestCloudStructuredOutputFallback-streaming.httprr new file mode 100644 index 000000000..2a7178fd2 --- /dev/null +++ b/llms/ollama/testdata/TestCloudStructuredOutputFallback-streaming.httprr @@ -0,0 +1,69 @@ +httprr trace v1 +1211 7476 +POST https://ollama.com/api/chat HTTP/1.1 +Host: ollama.com +User-Agent: langchaingo-httprr +Content-Length: 1033 +Accept: application/x-ndjson +Content-Type: application/json + +{"model":"gpt-oss:120b","messages":[{"role":"system","content":"You are a travel guide. Answer in Markdown with headings."},{"role":"user","content":"Describe Paris briefly.\n\nReply with exactly one JSON value that validates against the JSON Schema below. This overrides any earlier instruction about format or style: no Markdown, no code fences, no headings, and no text before or after the JSON. The whole reply is parsed by a JSON parser.\nJSON Schema:\n{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"},\"population_millions\":{\"type\":\"number\"},\"landmarks\":{\"type\":\"array\",\"minItems\":2,\"maxItems\":3,\"items\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"kind\":{\"type\":\"string\",\"enum\":[\"museum\",\"monument\",\"park\",\"church\",\"other\"]}},\"required\":[\"name\",\"kind\"],\"additionalProperties\":false}}},\"required\":[\"city\",\"population_millions\",\"landmarks\"],\"additionalProperties\":false}"}],"stream":true,"format":"","options":{"num_predict":16384}}HTTP/2.0 200 OK +Content-Length: 6971 +Alt-Svc: h3=":443"; ma=2592000 +Content-Type: application/json +Date: Thu, 24 Sep 2026 13:47:08 GMT +Server: Google Frontend +Traceparent: 00-ef720aeccc1992e6042e906179d04f3f-3f48a4296d044156-00 +Via: 1.1 google +X-Build-Commit: 614f90b4fc81e84f478f88d324848f8028bf3d1f +X-Build-Time: 2026-09-23T16:54:33-07:00 +X-Cloud-Trace-Context: ef720aeccc1992e6042e906179d04f3f/4560075120542237014 +X-Frame-Options: DENY +X-Request-Id: c044b894-3704-4af5-85d1-bd8945cae521 + +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.506579366Z","message":{"role":"assistant","content":"","thinking":"We need to reply"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.519337967Z","message":{"role":"assistant","content":"","thinking":" with exactly one JSON value"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.539361123Z","message":{"role":"assistant","content":"","thinking":" matching"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.554523506Z","message":{"role":"assistant","content":"","thinking":" schema"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.565909646Z","message":{"role":"assistant","content":"","thinking":". Provide"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.578305666Z","message":{"role":"assistant","content":"","thinking":" city"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.591404437Z","message":{"role":"assistant","content":"","thinking":": \"Paris\", population_m"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.604534478Z","message":{"role":"assistant","content":"","thinking":"illions:"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.618434879Z","message":{"role":"assistant","content":"","thinking":" maybe 2"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.634341453Z","message":{"role":"assistant","content":"","thinking":".2"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.658838624Z","message":{"role":"assistant","content":"","thinking":" (actual"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.674058066Z","message":{"role":"assistant","content":"","thinking":" ~"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.694005623Z","message":{"role":"assistant","content":"","thinking":"2.2)."},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.704178471Z","message":{"role":"assistant","content":"","thinking":" landmarks"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.718410633Z","message":{"role":"assistant","content":"","thinking":": array of "},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.735312797Z","message":{"role":"assistant","content":"","thinking":"2-3 items with"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.7501541Z","message":{"role":"assistant","content":"","thinking":" name and"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.766641154Z","message":{"role":"assistant","content":"","thinking":" kind.\n\n"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.782004727Z","message":{"role":"assistant","content":"","thinking":"Pick"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.79814671Z","message":{"role":"assistant","content":"","thinking":" e"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.812729372Z","message":{"role":"assistant","content":"","thinking":".g., Eiffel Tower ("},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.832209889Z","message":{"role":"assistant","content":"","thinking":"monument), Louvre"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.841758797Z","message":{"role":"assistant","content":"","thinking":" Museum (museum"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.858544361Z","message":{"role":"assistant","content":"","thinking":")."},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.872357722Z","message":{"role":"assistant","content":"","thinking":" That's two"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.890452657Z","message":{"role":"assistant","content":"","thinking":" items.\n\n"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.903415058Z","message":{"role":"assistant","content":"","thinking":"JSON"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.91805891Z","message":{"role":"assistant","content":"","thinking":" object"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.933359753Z","message":{"role":"assistant","content":"","thinking":" no"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.947185085Z","message":{"role":"assistant","content":"","thinking":" extra."},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.963089768Z","message":{"role":"assistant","content":"","thinking":" Provide"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:08.978298551Z","message":{"role":"assistant","content":"","thinking":" exact"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:09.00130028Z","message":{"role":"assistant","content":"","thinking":"."},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:09.009153057Z","message":{"role":"assistant","content":"","thinking":" No markdown"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:09.02554334Z","message":{"role":"assistant","content":"","thinking":"."},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:09.051253102Z","message":{"role":"assistant","content":"{\""},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:09.063976343Z","message":{"role":"assistant","content":"city\":\"Paris\",\"population_m"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:09.080402697Z","message":{"role":"assistant","content":"illions\":"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:09.088899273Z","message":{"role":"assistant","content":"2.2,\"landmarks"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:09.101238144Z","message":{"role":"assistant","content":"\":[{\"name"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:09.114134345Z","message":{"role":"assistant","content":"\":\"Eiffel Tower\",\"kind"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:09.130134408Z","message":{"role":"assistant","content":"\":\"monument\"},{\"name"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:09.139601186Z","message":{"role":"assistant","content":"\":\"Louvre Museum\",\""},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:09.151174996Z","message":{"role":"assistant","content":"kind\":\"museum\"}]}"},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:09.165509688Z","message":{"role":"assistant","content":""},"done":false} +{"model":"gpt-oss:120b","created_at":"2026-09-24T13:47:09.255492393Z","message":{"role":"assistant","content":""},"done":true,"done_reason":"stop","total_duration":1045714286,"prompt_eval_count":255,"prompt_eval_cached_count":224,"eval_count":129} diff --git a/llms/ollama/think_request_test.go b/llms/ollama/think_request_test.go new file mode 100644 index 000000000..83a898639 --- /dev/null +++ b/llms/ollama/think_request_test.go @@ -0,0 +1,164 @@ +package ollama + +import ( + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/require" + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func captureChatRequest(t *testing.T, opts ...llms.CallOption) map[string]any { + t.Helper() + return captureChatRequestFor(t, "glm-5", opts...) +} + +func captureChatRequestFor(t *testing.T, model string, opts ...llms.CallOption) map[string]any { + t.Helper() + + body, err := sendChatRequest(t, model, opts...) + require.NoError(t, err) + + var got map[string]any + require.NoError(t, json.Unmarshal(body, &got)) + return got +} + +func sendChatRequest(t *testing.T, model string, opts ...llms.CallOption) ([]byte, error) { + t.Helper() + + var body []byte + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + body, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/x-ndjson") + _, _ = w.Write([]byte(`{"model":"` + model + `","message":{"role":"assistant","content":"ok"},` + + `"done":true,"done_reason":"stop"}` + "\n")) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithServerURL(srv.URL), WithModel(model)) + require.NoError(t, err) + + _, err = llm.GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, opts...) + return body, err +} + +func TestThinkReachesTheWire(t *testing.T) { + t.Parallel() + + t.Run("disabled reasoning is sent, not left to the server", func(t *testing.T) { + t.Parallel() + require.Equal(t, false, captureChatRequest(t, llms.WithReasoningDisabled())["think"]) + }) + + t.Run("a level ollama accepts travels as itself", func(t *testing.T) { + t.Parallel() + require.Equal(t, "low", captureChatRequest(t, llms.WithReasoning(llms.ReasoningLow, 0))["think"]) + }) + + t.Run("a level ollama does not accept falls back to plain on", func(t *testing.T) { + t.Parallel() + require.Equal(t, true, captureChatRequest(t, llms.WithReasoning(llms.ReasoningXHigh, 0))["think"]) + }) + + t.Run("saying nothing leaves the field off the wire", func(t *testing.T) { + t.Parallel() + require.NotContains(t, captureChatRequest(t), "think") + }) +} + +func TestOffReachesTheWireForNamesTheirOwnVendorCannotDisable(t *testing.T) { + t.Parallel() + + for _, model := range []string{"deepseek-r1:7b", "magistral-small:24b"} { + got := captureChatRequestFor(t, model, llms.WithReasoningDisabled()) + require.Equal(t, false, got["think"], "model %s", model) + } +} + +func TestGPTOSSNeverGetsAThinkValueItIgnores(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gpt-oss", "gpt-oss:120b", "gpt-oss:20b", "library/gpt-oss:20b"} { + for _, effort := range []llms.ReasoningEffort{ + llms.ReasoningMinimal, llms.ReasoningLow, llms.ReasoningMedium, + llms.ReasoningHigh, llms.ReasoningXHigh, llms.ReasoningMax, + } { + think := captureChatRequestFor(t, model, llms.WithReasoning(effort, 0))["think"] + require.Contains(t, []any{"low", "medium", "high"}, think, + "%s asked %s", model, effort) + } + } +} + +func TestDisablingThinkingOnGPTOSSIsRefusedBeforeTheRequest(t *testing.T) { + t.Parallel() + + body, err := sendChatRequest(t, "gpt-oss:120b", llms.WithReasoningDisabled()) + + var offErr *reasoning.ErrReasoningOffUnsupported + require.ErrorAs(t, err, &offErr) + require.Empty(t, body, "the request must not reach the server") +} + +func TestAnEffortGPTOSSCannotTakeIsReported(t *testing.T) { + t.Parallel() + + for asked, sent := range map[llms.ReasoningEffort]string{ + llms.ReasoningMinimal: "low", + llms.ReasoningXHigh: "high", + llms.ReasoningMax: "high", + } { + resp := generateForWarningsOn(t, "gpt-oss:120b", llms.WithReasoning(asked, 0)) + + w, ok := ollamaWarningsByOption(resp.Warnings)["WithReasoning"] + require.True(t, ok, "no warning for %s in %v", asked, resp.Warnings) + require.Equal(t, llms.WarningSubstitute, w.Kind) + require.Equal(t, string(asked), w.Asked) + require.Equal(t, sent, w.Sent) + } +} + +func TestAnEffortGPTOSSTakesIsNotAWarning(t *testing.T) { + t.Parallel() + + for _, effort := range []llms.ReasoningEffort{llms.ReasoningLow, llms.ReasoningMedium, llms.ReasoningHigh} { + resp := generateForWarningsOn(t, "gpt-oss:120b", llms.WithReasoning(effort, 0)) + require.Empty(t, resp.Warnings, "%s is in the vendor set, nothing is lost", effort) + } +} + +func TestEveryLevelTheHintOffersGPTOSSTravelsAsItself(t *testing.T) { + t.Parallel() + + efforts := llms.ReasoningSupportFor("gpt-oss:120b", reasoning.ProviderOllama).Efforts + require.NotEmpty(t, efforts, "the hint offers no level, so nothing here is checked") + for _, effort := range efforts { + require.Equal(t, string(effort), + captureChatRequestFor(t, "gpt-oss:120b", llms.WithReasoning(effort, 0))["think"], + "the hint offers %s, so the door must send it unchanged", effort) + } +} + +func TestAdaptiveWithNoEffortLeavesTheThinkFieldOff(t *testing.T) { + t.Parallel() + + for _, model := range []string{"glm-5", "gpt-oss:120b", "llama3.2"} { + got := captureChatRequestFor(t, model, llms.WithAdaptiveReasoning("")) + require.NotContains(t, got, "think", "%s: the server default is the model's own choice", model) + } +} + +func TestAdaptiveWithANamedEffortStillSetsTheLevel(t *testing.T) { + t.Parallel() + + require.Equal(t, "low", + captureChatRequestFor(t, "glm-5", llms.WithAdaptiveReasoning(llms.ReasoningLow))["think"]) + require.Equal(t, "high", + captureChatRequestFor(t, "gpt-oss:120b", llms.WithAdaptiveReasoning(llms.ReasoningMax))["think"]) +} diff --git a/llms/ollama/toolcall_numbers_test.go b/llms/ollama/toolcall_numbers_test.go new file mode 100644 index 000000000..db5cce5dd --- /dev/null +++ b/llms/ollama/toolcall_numbers_test.go @@ -0,0 +1,51 @@ +package ollama + +import ( + "testing" + + "github.com/vxcontrol/langchaingo/llms" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestToolCallArgumentsKeepIntegersWiderThanFloat64(t *testing.T) { + t.Parallel() + + o := &LLM{} + converted, err := o.convertToolCall(llms.ToolCall{ + ID: "1", + Type: "function", + FunctionCall: &llms.FunctionCall{ + Name: "charge", + Arguments: `{"account":9007199254740993,"cents":12345678901234567}`, + }, + }) + require.NoError(t, err) + + account, ok := converted.Function.Arguments.Get("account") + require.True(t, ok) + assert.Equal(t, int64(9007199254740993), account) + + cents, ok := converted.Function.Arguments.Get("cents") + require.True(t, ok) + assert.Equal(t, int64(12345678901234567), cents) +} + +func TestToolCallArgumentsKeepTheOrderTheModelSent(t *testing.T) { + t.Parallel() + + o := &LLM{} + converted, err := o.convertToolCall(llms.ToolCall{ + ID: "1", + Type: "function", + FunctionCall: &llms.FunctionCall{Name: "f", Arguments: `{"zebra":1,"alpha":2,"middle":3}`}, + }) + require.NoError(t, err) + + var keys []string + for key := range converted.Function.Arguments.All() { + keys = append(keys, key) + } + assert.Equal(t, []string{"zebra", "alpha", "middle"}, keys) +} diff --git a/llms/ollama/truncation_test.go b/llms/ollama/truncation_test.go new file mode 100644 index 000000000..38f8ee342 --- /dev/null +++ b/llms/ollama/truncation_test.go @@ -0,0 +1,80 @@ +package ollama + +import ( + "context" + "fmt" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/vxcontrol/langchaingo/llms" +) + +func truncationLLM(t *testing.T, doneReason string) *LLM { + t.Helper() + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/x-ndjson") + _, _ = fmt.Fprintf(w, `{"model":"llama3","created_at":"2026-08-21T09:00:00Z","message":{"role":"assistant","content":"half an ans"},"done":true,"done_reason":%q,"eval_count":1,"prompt_eval_count":1}`+"\n", doneReason) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithServerURL(srv.URL), WithModel("llama3")) + if err != nil { + t.Fatalf("New: %v", err) + } + return llm +} + +func TestTruncationIsDerivedWithoutRewritingStopReason(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + doneReason string + wantTruncated bool + }{ + {"out of budget", "length", true}, + {"finished on its own", "stop", false}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + llm := truncationLLM(t, tc.doneReason) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + if err != nil { + t.Fatalf("GenerateContent: %v", err) + } + if got := resp.Choices[0].Truncated; got != tc.wantTruncated { + t.Fatalf("Truncated = %v, want %v", got, tc.wantTruncated) + } + if got := resp.Choices[0].StopReason; got != tc.doneReason { + t.Fatalf("StopReason = %q, want the vendor's own %q", got, tc.doneReason) + } + }) + } +} + +func TestFailOnTruncationKeepsThePartialAnswer(t *testing.T) { + t.Parallel() + + llm := truncationLLM(t, "length") + msgs := []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")} + + resp, err := llm.GenerateContent(context.Background(), msgs, llms.WithFailOnTruncation()) + if err == nil { + t.Fatal("want an error once the caller opted in") + } + if !llms.IsTruncatedError(err) { + t.Fatalf("want a truncation error, got %v", err) + } + if resp == nil || resp.Choices[0].Content != "half an ans" { + t.Fatalf("want the partial answer alongside the error, got %+v", resp) + } + + if _, err := llm.GenerateContent(context.Background(), msgs); err != nil { + t.Fatalf("without the option the same response must stay a success: %v", err) + } +} diff --git a/llms/ollama/warnings.go b/llms/ollama/warnings.go new file mode 100644 index 000000000..acf2d0907 --- /dev/null +++ b/llms/ollama/warnings.go @@ -0,0 +1,113 @@ +package ollama + +import ( + "strconv" + + "github.com/ollama/ollama/api" + + "github.com/vxcontrol/langchaingo/llms" +) + +func reportOllamaOptions(warn *llms.Warnings, model string, opts llms.CallOptions) { + const unread = "the door builds no field for it" + + warn.AddUnreadExtraBody(model, opts, extraBodyUnread) + + if opts.Reasoning.DelegatesDepth() { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithAdaptiveReasoning", Model: model, + Asked: "adaptive", + Reason: "the door has no field that asks the model to choose its own depth", + }) + } + + warn.AddUnreadOptions(model, opts, unread, + "WithRepetitionPenalty", "WithFrequencyPenalty", "WithPresencePenalty", + "WithTopK", "WithSeed", "WithJSONMode", "WithMinP") + if opts.MinP != nil && *opts.MinP != 0 { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithMinP", Model: model, + Asked: strconv.FormatFloat(*opts.MinP, 'g', -1, 64), + Reason: "the door sends only the min_p set on the client", + }) + } + if kind, name := llms.ClassifyToolChoice(opts.ToolChoice); kind != llms.ToolChoiceUnset && + kind != llms.ToolChoiceAuto { + asked := name + if asked == "" { + asked = kind.String() + } + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithToolChoice", Model: model, + Asked: asked, Reason: unread, + }) + } + reportOllamaThinking(warn, model, opts) +} + +func reportOllamaThinking(warn *llms.Warnings, model string, opts llms.CallOptions) { + cfg := opts.Reasoning + if cfg == nil || cfg.ResolveMode() != llms.ReasoningOn { + return + } + + asked := cfg.GetEffort(opts.GetMaxTokens()) + effort := string(asked) + switch { + case takesOnlyGPTOSSLevels(model): + if sent := gptOSSLevel(asked); sent != effort { + warn.Add(llms.Warning{ + Kind: llms.WarningSubstitute, Option: "WithReasoning", Model: model, + Asked: effort, Sent: sent, + Reason: "this model takes only low, medium or high, and ignores anything else", + }) + } + default: + if level := (&api.ThinkValue{Value: effort}); !level.IsValid() { + warn.Add(llms.Warning{ + Kind: llms.WarningSubstitute, Option: "WithReasoning", Model: model, + Asked: effort, Sent: "true", + Reason: "ollama takes a think level from a closed set and this effort is not in it", + }) + } + } + if cfg.HasExplicitTokens() { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithReasoning", Model: model, + Asked: strconv.Itoa(cfg.Tokens), + Reason: "ollama expresses thinking as a level, so a token budget has nowhere to go", + }) + } +} + +const extraBodyUnread = "the door builds its request through a vendor SDK and has nowhere to merge them" + +const ollamaCloudStructuredOutputFallbackReason = "Ollama Cloud does not support structured outputs, " + + "so the schema travels in the prompt and the answer is validated locally" + +// reportOllamaCloudFormat reports the format a cloud-served model cannot take. +// emulated marks a structured-output call that WithCloudStructuredOutputFallback +// turned into a prompt instruction. +func reportOllamaCloudFormat(warn *llms.Warnings, model string, opts llms.CallOptions, clientFormat string, emulated bool) { + switch { + case emulated: + asked := opts.StructuredOutput.Name + if asked == "" { + asked = "a JSON Schema" + } + warn.Add(llms.Warning{ + Kind: llms.WarningSubstitute, Option: "WithStructuredOutput", Model: model, + Asked: asked, Sent: "a prompt instruction", Reason: ollamaCloudStructuredOutputFallbackReason, + }) + case opts.JSONMode: + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithJSONMode", Model: model, + Asked: "true", Reason: ollamaCloudFormatReason, + }) + case clientFormat != "": + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithFormat", Model: model, + Asked: clientFormat, Reason: ollamaCloudFormatReason, + }) + } +} diff --git a/llms/ollama/warnings_test.go b/llms/ollama/warnings_test.go new file mode 100644 index 000000000..0e50ee228 --- /dev/null +++ b/llms/ollama/warnings_test.go @@ -0,0 +1,208 @@ +package ollama + +import ( + "encoding/json" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func generateForWarnings(t *testing.T, callOpts ...llms.CallOption) *llms.ContentResponse { + t.Helper() + return generateForWarningsOn(t, "glm-5", callOpts...) +} + +func generateForWarningsOn(t *testing.T, model string, callOpts ...llms.CallOption) *llms.ContentResponse { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/x-ndjson") + _, _ = w.Write([]byte(`{"model":"` + model + `","message":{"role":"assistant","content":"hi"},` + + `"done":true,"done_reason":"stop"}` + "\n")) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithServerURL(srv.URL), WithModel(model)) + require.NoError(t, err) + + resp, err := llm.GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, callOpts...) + require.NoError(t, err) + return resp +} + +func ollamaWarningsByOption(warnings []llms.Warning) map[string]llms.Warning { + byOption := make(map[string]llms.Warning, len(warnings)) + for _, w := range warnings { + byOption[w.Option] = w + } + return byOption +} + +func TestOptionsWithNoFieldOnThisDoorAreReported(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, + llms.WithMinP(0.05), llms.WithLogProbs(true), llms.WithTopLogProbs(2), + llms.WithN(2), llms.WithCandidateCount(3), + llms.WithToolChoice(llms.ToolChoice{ + Type: "function", Function: &llms.FunctionReference{Name: "get_weather"}, + })) + + got := ollamaWarningsByOption(resp.Warnings) + for option, asked := range map[string]string{ + "WithMinP": "0.05", "WithLogProbs": "true", "WithTopLogProbs": "2", + "WithN": "2", "WithCandidateCount": "3", "WithToolChoice": "get_weather", + } { + w, ok := got[option] + require.True(t, ok, "no %s warning in %v", option, resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, asked, w.Asked) + require.Equal(t, "glm-5", w.Model) + } +} + +func TestAnEffortOllamaHasNoLevelForIsReported(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, llms.WithReasoning(llms.ReasoningXHigh, 0)) + + w, ok := ollamaWarningsByOption(resp.Warnings)["WithReasoning"] + require.True(t, ok, "no reasoning warning in %v", resp.Warnings) + require.Equal(t, llms.WarningSubstitute, w.Kind) + require.Equal(t, "xhigh", w.Asked) + require.Equal(t, "true", w.Sent) +} + +func TestAThinkingTokenBudgetHasNowhereToGoOnOllama(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, llms.WithMaxTokens(4096), llms.WithReasoning(llms.ReasoningHigh, 2048)) + + w, ok := ollamaWarningsByOption(resp.Warnings)["WithReasoning"] + require.True(t, ok, "no reasoning warning in %v", resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, "2048", w.Asked) +} + +func TestAPlainOllamaCallCarriesNoWarnings(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, llms.WithTemperature(0.2)) + require.Empty(t, resp.Warnings) +} + +func TestAToolChoiceOfAutoIsNotALoss(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, llms.WithToolChoice("auto")) + require.Empty(t, resp.Warnings, "auto is what the door does with no tool choice at all") +} + +func TestADroppedToolChoiceIsNamedNotNumbered(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, llms.WithToolChoice("none")) + + w, ok := ollamaWarningsByOption(resp.Warnings)["WithToolChoice"] + require.True(t, ok, "no tool-choice warning in %v", resp.Warnings) + require.Equal(t, "none", w.Asked) +} + +func TestAZeroTopKIsNotALoss(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, llms.WithTopK(0)) + require.Empty(t, resp.Warnings) +} + +func TestExtraBodyThisDoorCannotMergeIsReported(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, llms.WithExtraBody(map[string]any{"enable_thinking": false, "chat_template_kwargs": map[string]any{}})) + + w, ok := ollamaWarningsByOption(resp.Warnings)["WithExtraBody"] + require.True(t, ok, "no extra-body warning in %v", resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, "chat_template_kwargs, enable_thinking", w.Asked) +} + +func TestMetadataSetAfterExtraBodyStillReportsTheLoss(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, + llms.WithExtraBody(map[string]any{"enable_thinking": false}), + llms.WithMetadata(map[string]any{"user": "u1"})) + + w, ok := ollamaWarningsByOption(resp.Warnings)["WithExtraBody"] + require.True(t, ok, "no extra-body warning in %v", resp.Warnings) + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, "enable_thinking", w.Asked) +} + +func TestTheOllamaDoorReportsEachOptionOnce(t *testing.T) { + t.Parallel() + + resp := generateForWarnings(t, + llms.WithMinP(0.05), llms.WithN(2), llms.WithCandidateCount(3), + llms.WithLogProbs(true), llms.WithTopLogProbs(5), + llms.WithMinLength(10), llms.WithMaxLength(20), + llms.WithVerbosity("low"), llms.WithResponseMIMEType("application/json")) + + seen := make(map[string]int, len(resp.Warnings)) + for _, w := range resp.Warnings { + seen[w.Option]++ + } + for option, count := range seen { + require.Equal(t, 1, count, "%s reported %d times: %v", option, count, resp.Warnings) + } + require.Contains(t, seen, "WithMinP", "the door sends only the client's min-p") +} + +func TestTheCloudReportsTheFormatItCannotSend(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + opts llms.CallOptions + clientFormat string + emulated bool + option string + kind llms.WarningKind + asked, sent string + }{ + {name: "per-call JSON mode", opts: llms.CallOptions{JSONMode: true}, option: "WithJSONMode", kind: llms.WarningDrop, asked: "true"}, + {name: "client-level format", clientFormat: "json", option: "WithFormat", kind: llms.WarningDrop, asked: "json"}, + { + name: "an emulated schema", emulated: true, clientFormat: "json", + opts: llms.CallOptions{JSONMode: true, StructuredOutput: &llms.StructuredOutputConfig{ + Name: "answer", Schema: json.RawMessage(ollamaSOSchema), + }}, + option: "WithStructuredOutput", kind: llms.WarningSubstitute, asked: "answer", sent: "a prompt instruction", + }, + { + name: "an emulated schema without a name", emulated: true, + opts: llms.CallOptions{JSONMode: true, StructuredOutput: &llms.StructuredOutputConfig{Schema: json.RawMessage(ollamaSOSchema)}}, + option: "WithStructuredOutput", kind: llms.WarningSubstitute, asked: "a JSON Schema", sent: "a prompt instruction", + }, + {name: "nothing asked"}, + } { + warn := &llms.Warnings{} + reportOllamaCloudFormat(warn, "gpt-oss:120b", tc.opts, tc.clientFormat, tc.emulated) + got := warn.List() + if tc.option == "" { + if len(got) != 0 { + t.Errorf("%s: want no warning, got %v", tc.name, got) + } + continue + } + if len(got) != 1 || got[0].Kind != tc.kind || got[0].Option != tc.option || + got[0].Asked != tc.asked || got[0].Sent != tc.sent { + t.Errorf("%s: want one %s of %s asked %q sent %q, got %v", tc.name, tc.kind, tc.option, tc.asked, tc.sent, got) + } + } +} diff --git a/llms/openai/adaptive_delegation_test.go b/llms/openai/adaptive_delegation_test.go new file mode 100644 index 000000000..f36c3693e --- /dev/null +++ b/llms/openai/adaptive_delegation_test.go @@ -0,0 +1,48 @@ +package openai + +import ( + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/openai/internal/openaiclient" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func droppedDelegationFor(t *testing.T, model string) bool { + t.Helper() + + warn := &llms.Warnings{} + req := &openaiclient.ChatRequest{} + llm := newUnitLLM(t, WithModel(model)) + + _, err := llm.setReasoning(req, llms.CallOptions{ + Model: &model, + Reasoning: &llms.ReasoningConfig{Adaptive: true}, + }, warn) + require.NoError(t, err) + + for _, w := range warn.List() { + if w.Option == "WithAdaptiveReasoning" { + return true + } + } + return false +} + +func TestEveryOptInModelReportsTheDelegationItCannotCarry(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gpt-5.1", "deepseek-v3.1", "magistral-medium-2509"} { + assert.True(t, droppedDelegationFor(t, model), + "%s does not reason unless asked, so a dropped delegation must be reported", model) + } +} + +func TestAModelThatAlreadyReasonsIsNotReportedAsDropped(t *testing.T) { + t.Parallel() + + assert.False(t, droppedDelegationFor(t, "o3-mini"), + "a model that reasons by default loses nothing when the depth is left to it") +} diff --git a/llms/openai/apikey.go b/llms/openai/apikey.go new file mode 100644 index 000000000..38fac67c7 --- /dev/null +++ b/llms/openai/apikey.go @@ -0,0 +1,151 @@ +package openai + +import ( + "net/url" + "strings" + + "github.com/vxcontrol/langchaingo/llms/openai/internal/openaiclient" +) + +// APIKeyRequiredBaseURLs lists documented OpenAI-compatible API base URLs of +// public providers that require an API key. Local and self-hosted backends +// (vLLM, Ollama, llama.cpp, SGLang, LiteLLM on a private host, etc.) are not +// listed and may be used without a key. +// +// Matching uses the hostname of these URLs (and Azure host suffixes), so +// common variants such as a trailing slash or an extra /v1 still require a key. +// An empty base URL is treated as the default OpenAI endpoint. +var APIKeyRequiredBaseURLs = []string{ + // OpenAI (default and data-residency regional endpoints). + "https://api.openai.com/v1", + "https://us.api.openai.com/v1", + "https://eu.api.openai.com/v1", + "https://au.api.openai.com/v1", + "https://ca.api.openai.com/v1", + "https://jp.api.openai.com/v1", + "https://in.api.openai.com/v1", + "https://sg.api.openai.com/v1", + "https://kr.api.openai.com/v1", + "https://gb.api.openai.com/v1", + "https://ae.api.openai.com/v1", + + // PentAGI custom / aggregator backends (from project documentation). + "https://openrouter.ai/api/v1", + "https://api.deepinfra.com/v1/openai", + "https://opencode.ai/zen/go/v1", + "https://api.novita.ai/openai", + "https://api.atlascloud.ai/v1", + "https://api.orcarouter.ai/v1", + "https://api.x.ai/v1", + "https://api.deepseek.com", + "https://api.z.ai/api/paas/v4", + "https://api.z.ai/api/coding/paas/v4", + "https://open.bigmodel.cn/api/paas/v4", + "https://api.moonshot.ai/v1", + "https://api.moonshot.cn/v1", + "https://dashscope-us.aliyuncs.com/compatible-mode/v1", + "https://dashscope-intl.aliyuncs.com/compatible-mode/v1", + "https://dashscope.aliyuncs.com/compatible-mode/v1", + "https://api.minimax.io/v1", + "https://integrate.api.nvidia.com/v1", + "https://api.hcnsec.cn/v1", + "https://ollama.com/v1", + + // Additional public OpenAI-compatible providers. + "https://api.groq.com/openai/v1", + "https://api.together.ai/v1", + "https://api.together.xyz/v1", + "https://api.fireworks.ai/inference/v1", + "https://api.cerebras.ai/v1", + "https://api.sambanova.ai/v1", + "https://api.mistral.ai/v1", + "https://api.perplexity.ai", + "https://api.studio.nebius.ai/v1", + "https://api.tokenfactory.nebius.com/v1", + "https://router.huggingface.co/v1", + "https://models.github.ai/inference", + "https://models.inference.ai.azure.com", + "https://generativelanguage.googleapis.com/v1beta/openai", + "https://ai-gateway.vercel.sh/v1", + "https://api.siliconflow.cn/v1", + "https://api.siliconflow.com/v1", + "https://api-inference.modelscope.cn/v1", + "https://ark.cn-beijing.volces.com/api/v3", + "https://api.minimaxi.com/v1", + "https://api.cohere.ai/compatibility/v1", + "https://api.cohere.com/compatibility/v1", + "https://api.hyperbolic.xyz/v1", + "https://api.lambda.ai/v1", + "https://api.lambdalabs.com/v1", + "https://api.friendli.ai/serverless/v1", + "https://api.scaleway.ai/v1", + "https://inference.baseten.co/v1", + "https://api.venice.ai/api/v1", + "https://zenmux.ai/api/v1", +} + +// apiKeyRequiredHostSuffixes matches tenant-specific and regional hosts that +// cannot be listed as a single static URL (Azure OpenAI / Azure AI Foundry) +// and future OpenAI data-residency regions. +var apiKeyRequiredHostSuffixes = []string{ + ".api.openai.com", + ".openai.azure.com", + ".cognitiveservices.azure.com", + ".services.ai.azure.com", + ".openai.azure.us", + ".openai.azure.cn", +} + +var apiKeyRequiredHosts map[string]struct{} + +func init() { + apiKeyRequiredHosts = make(map[string]struct{}, len(APIKeyRequiredBaseURLs)) + for _, raw := range APIKeyRequiredBaseURLs { + if host := hostnameFromURL(raw); host != "" { + apiKeyRequiredHosts[host] = struct{}{} + } + } +} + +// RequiresAPIKey reports whether the given base URL (and API type) belongs to a +// public OpenAI-compatible provider that requires an API key. Local and +// self-hosted backends such as vLLM do not. +func RequiresAPIKey(baseURL string, apiType APIType) bool { + if openaiclient.IsAzure(openaiclient.APIType(apiType)) { + return true + } + if strings.TrimSpace(baseURL) == "" { + return true + } + return publicProviderHost(hostnameFromURL(baseURL)) +} + +func publicProviderHost(host string) bool { + if host == "" { + return false + } + if _, ok := apiKeyRequiredHosts[host]; ok { + return true + } + for _, suffix := range apiKeyRequiredHostSuffixes { + if host == strings.TrimPrefix(suffix, ".") || strings.HasSuffix(host, suffix) { + return true + } + } + return false +} + +func hostnameFromURL(raw string) string { + raw = strings.TrimSpace(raw) + if raw == "" { + return "" + } + if !strings.Contains(raw, "://") { + raw = "https://" + raw + } + u, err := url.Parse(raw) + if err != nil { + return "" + } + return strings.ToLower(u.Hostname()) +} diff --git a/llms/openai/apikey_test.go b/llms/openai/apikey_test.go new file mode 100644 index 000000000..5f694664d --- /dev/null +++ b/llms/openai/apikey_test.go @@ -0,0 +1,115 @@ +package openai + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestRequiresAPIKey_ListedProviders(t *testing.T) { + t.Parallel() + + for _, raw := range APIKeyRequiredBaseURLs { + require.Truef(t, RequiresAPIKey(raw, APITypeOpenAI), "listed URL must require a key: %s", raw) + require.Truef(t, RequiresAPIKey(raw+"/", APITypeOpenAI), "trailing slash must still require a key: %s", raw) + } +} + +func TestRequiresAPIKey_VariantsAndLocalBackends(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + baseURL string + apiType APIType + required bool + }{ + {name: "empty defaults to openai", baseURL: "", required: true}, + {name: "whitespace defaults to openai", baseURL: " ", required: true}, + {name: "openai without version path", baseURL: "https://api.openai.com", required: true}, + {name: "openai with extra path", baseURL: "https://api.openai.com/v1/chat", required: true}, + {name: "deepseek with v1 alias", baseURL: "https://api.deepseek.com/v1", required: true}, + {name: "novita v3 openai path", baseURL: "https://api.novita.ai/v3/openai", required: true}, + {name: "openrouter host only", baseURL: "https://openrouter.ai/api/v1/", required: true}, + {name: "azure resource host", baseURL: "https://my-resource.openai.azure.com", required: true}, + {name: "azure cognitive services", baseURL: "https://my-resource.cognitiveservices.azure.com", required: true}, + {name: "azure ai foundry", baseURL: "https://my-resource.services.ai.azure.com/models", required: true}, + {name: "azure api type ignores url", baseURL: "http://127.0.0.1:8000/v1", apiType: APITypeAzure, required: true}, + {name: "azure ad api type ignores url", baseURL: "http://127.0.0.1:8000/v1", apiType: APITypeAzureAD, required: true}, + {name: "vllm localhost", baseURL: "http://127.0.0.1:8000/v1", required: false}, + {name: "vllm custom host", baseURL: "http://vllm:8000/v1", required: false}, + {name: "ollama local", baseURL: "http://localhost:11434/v1", required: false}, + {name: "llamacpp", baseURL: "http://10.0.0.5:8080/v1", required: false}, + {name: "litellm private proxy", baseURL: "http://litellm-proxy:4000", required: false}, + {name: "scheme-less local host", baseURL: "192.168.1.10:8000/v1", required: false}, + {name: "lookalike openai host", baseURL: "https://api.openai.com.attacker.example/v1", required: false}, + {name: "baseten model apis", baseURL: "https://inference.baseten.co/v1", required: true}, + {name: "venice ai", baseURL: "https://api.venice.ai/api/v1", required: true}, + {name: "zenmux", baseURL: "https://zenmux.ai/api/v1", required: true}, + // Shared Cloudflare host must not require a key: Workers AI embeds + // account IDs in the path and the same host serves unrelated APIs. + {name: "cloudflare shared host", baseURL: "https://api.cloudflare.com/client/v4/accounts/abc/ai/v1", required: false}, + // Scaleway dedicated inference uses a per-deployment UUID host. + {name: "scaleway dedicated uuid host", baseURL: "https://01234567-89ab-cdef-0123-456789abcdef.ifr.fr-par.scaleway.com/v1", required: false}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + require.Equal(t, tt.required, RequiresAPIKey(tt.baseURL, tt.apiType)) + }) + } +} + +func TestNewClient_AllowsEmptyTokenForLocalBackends(t *testing.T) { + t.Setenv(tokenEnvVarName, "") + t.Setenv(baseURLEnvVarName, "") + t.Setenv(baseAPIBaseEnvVarName, "") + + opts, cli, err := newClient(WithToken(""), WithBaseURL("http://127.0.0.1:8000/v1")) + require.NoError(t, err) + require.NotNil(t, opts) + require.NotNil(t, cli) + require.Empty(t, opts.token) +} + +func TestNewClient_RequiresTokenForKnownProviders(t *testing.T) { + t.Setenv(tokenEnvVarName, "") + t.Setenv(baseURLEnvVarName, "") + t.Setenv(baseAPIBaseEnvVarName, "") + + t.Run("default openai endpoint", func(t *testing.T) { + _, _, err := newClient(WithToken("")) + require.ErrorIs(t, err, ErrMissingToken) + }) + + t.Run("explicit openai url", func(t *testing.T) { + _, _, err := newClient(WithToken(""), WithBaseURL("https://api.openai.com/v1")) + require.ErrorIs(t, err, ErrMissingToken) + }) + + t.Run("openrouter", func(t *testing.T) { + _, _, err := newClient(WithToken(""), WithBaseURL("https://openrouter.ai/api/v1")) + require.ErrorIs(t, err, ErrMissingToken) + }) + + t.Run("azure api type", func(t *testing.T) { + _, _, err := newClient( + WithToken(""), + WithAPIType(APITypeAzure), + WithModel("gpt-4"), + WithEmbeddingModel("text-embedding-3-small"), + WithBaseURL("http://127.0.0.1:8000/v1"), + ) + require.ErrorIs(t, err, ErrMissingToken) + }) +} + +func TestHostnameFromURL(t *testing.T) { + t.Parallel() + + require.Equal(t, "api.openai.com", hostnameFromURL("https://api.openai.com/v1/")) + require.Equal(t, "api.openai.com", hostnameFromURL("API.OPENAI.COM/v1")) + require.Equal(t, "127.0.0.1", hostnameFromURL("http://127.0.0.1:8000/v1")) + require.Empty(t, hostnameFromURL("")) +} diff --git a/llms/openai/claude_adaptive_thinking_test.go b/llms/openai/claude_adaptive_thinking_test.go new file mode 100644 index 000000000..8cc5ca97d --- /dev/null +++ b/llms/openai/claude_adaptive_thinking_test.go @@ -0,0 +1,236 @@ +package openai + +import ( + "strings" + "testing" + + "github.com/vxcontrol/langchaingo/llms" +) + +func TestDelegatedAdaptiveTurnsThinkingOnWhereClaudeWaitsToBeAsked(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "claude-opus-4-8", "anthropic/claude-opus-4-8", "anthropic/claude-opus-4-7", + "anthropic/claude-opus-4-6", "anthropic/claude-sonnet-4-6", + "us.anthropic.claude-opus-4-8", "bedrock/us.anthropic.claude-opus-4-6-v1", + "bedrock/global.anthropic.claude-sonnet-4-6", "vertex_ai/claude-opus-4-7", + } { + t.Run(model, func(t *testing.T) { + t.Parallel() + + body := captureWireWithClient(t, model, nil, llms.WithAdaptiveReasoning(llms.ReasoningNone)) + + if !strings.Contains(body, `"thinking":{"type":"adaptive"`) { + t.Errorf("thinking stays off on this model until adaptive is set, got body: %s", body) + } + if strings.Contains(body, "reasoning_effort") || strings.Contains(body, "budget_tokens") { + t.Errorf("the caller named no depth, got body: %s", body) + } + }) + } +} + +func TestDelegatedAdaptiveIsReportedWhereTheHostDocumentsNoThinkingObject(t *testing.T) { + t.Parallel() + + for name, tc := range map[string]struct{ baseURL, model string }{ + "the gateway's deepinfra route": {gatewayBaseURL, "deepinfra/anthropic/claude-opus-4-8"}, + "the gateway's perplexity route": {gatewayBaseURL, "perplexity/anthropic/claude-sonnet-4-6"}, + "the gateway's openrouter route": {gatewayBaseURL, "openrouter/anthropic/claude-opus-4.8"}, + "the gateway's azure_ai route": {gatewayBaseURL, "azure_ai/claude-opus-4-8"}, + "the gateway's together_ai route": {gatewayBaseURL, "together_ai/anthropic/claude-opus-4-8"}, + "DeepInfra": {"http://api.deepinfra.com/v1/openai", "anthropic/claude-opus-4-8"}, + "Perplexity": {"http://api.perplexity.ai", "anthropic/claude-opus-4-7"}, + "OpenRouter": {"http://openrouter.ai/api/v1", "anthropic/claude-sonnet-4.6"}, + "ZenMux": {"http://zenmux.ai/api/v1", "anthropic/claude-opus-4.8"}, + "Vercel AI Gateway": {"http://ai-gateway.vercel.sh/v1", "anthropic/claude-opus-4.8"}, + } { + t.Run(name, func(t *testing.T) { + t.Parallel() + + body, resp := sendToHost(t, tc.baseURL, tc.model, llms.WithAdaptiveReasoning(llms.ReasoningNone)) + + if _, ok := body["thinking"]; ok { + t.Errorf("this host documents no thinking object, got body: %v", body) + } + if w := warningFor(t, resp, "WithAdaptiveReasoning"); w.Kind != llms.WarningDrop || w.Sent != "" { + t.Errorf("the lost adaptive request must be reported, got %+v", w) + } + }) + } +} + +func TestDelegatedAdaptiveIsReportedOnAnthropicsOpenAICompatibilityEndpoint(t *testing.T) { + t.Parallel() + + for _, model := range []string{"claude-opus-4-8", "claude-opus-4-7", "claude-sonnet-4-6"} { + t.Run(model, func(t *testing.T) { + t.Parallel() + + body, resp := sendToHost(t, "http://api.anthropic.com/v1", model, llms.WithAdaptiveReasoning(llms.ReasoningNone)) + + if _, ok := body["thinking"]; ok { + t.Errorf("this endpoint answers adaptive thinking with a 400, got body: %v", body) + } + w := warningFor(t, resp, "WithAdaptiveReasoning") + if w.Kind != llms.WarningDrop || w.Sent != "" || !strings.Contains(w.Reason, "refuses adaptive thinking") { + t.Errorf("the refused adaptive request must be reported as refused, got %+v", w) + } + }) + } +} + +func TestAClaudeRequestWithoutReasoningStaysWithoutThinking(t *testing.T) { + t.Parallel() + + for model, keepsTemperature := range map[string]bool{ + "anthropic/claude-opus-4-8": false, + "anthropic/claude-sonnet-4-6": true, + "bedrock/us.anthropic.claude-opus-4-6-v1": true, + } { + t.Run(model, func(t *testing.T) { + t.Parallel() + + _, sent := sendForWarningsWith(t, model, nil, llms.WithTemperature(0.3)) + + if _, ok := sent["thinking"]; ok { + t.Errorf("the caller asked for no thinking, got %v", sent) + } + if keepsTemperature && sent["temperature"] != 0.3 { + t.Errorf("a request without thinking keeps the caller's temperature, got %v", sent) + } + }) + } +} + +func TestDelegatedAdaptiveAsksForTheThinkingTextTheAnthropicDoorReturns(t *testing.T) { + t.Parallel() + + for _, model := range []string{"anthropic/claude-opus-4-8", "anthropic/claude-opus-4-7", "anthropic/claude-sonnet-4-6"} { + t.Run(model, func(t *testing.T) { + t.Parallel() + + fields := extraBodyWire(t, model, nil, "ok", llms.WithAdaptiveReasoning(llms.ReasoningNone)) + assertWireJSON(t, fields, map[string]string{"thinking": `{"type":"adaptive","display":"summarized"}`}) + }) + } +} + +func TestDelegatedAdaptiveThinkingTakesTheSamplingThinkingRefuses(t *testing.T) { + t.Parallel() + + for _, model := range []string{"anthropic/claude-sonnet-4-6", "anthropic/claude-opus-4-6"} { + t.Run(model, func(t *testing.T) { + t.Parallel() + + resp, sent := sendForWarningsWith(t, model, nil, llms.WithAdaptiveReasoning(llms.ReasoningNone), + llms.WithTemperature(0.3), llms.WithTopK(40)) + + if _, ok := sent["thinking"]; !ok { + t.Fatalf("want the adaptive thinking object, got %v", sent) + } + if temperature, ok := sent["temperature"]; ok && temperature != 1.0 { + t.Errorf("thinking takes temperature 1 or none, got %v", temperature) + } + if _, ok := sent["top_k"]; ok { + t.Errorf("thinking takes no top_k, got %v", sent) + } + if w := warningFor(t, resp, "WithTemperature"); w.Asked != "0.3" { + t.Errorf("the lost temperature must be reported, got %+v", w) + } + }) + } +} + +func TestDelegatedAdaptiveReachingTheWireIsNotReportedAsLost(t *testing.T) { + t.Parallel() + + resp := sendForWarnings(t, "anthropic/claude-opus-4-8", + llms.WithAdaptiveReasoning(llms.ReasoningNone), llms.WithTemperature(0.3), llms.WithTopP(0.9)) + + for _, w := range resp.Warnings { + if w.Option != "WithTemperature" && w.Option != "WithTopP" { + t.Errorf("only the sampling the model rejects was lost, got %+v", w) + } + } +} + +func TestDelegatedAdaptiveKeepsItsObjectOffOtherWires(t *testing.T) { + t.Parallel() + + offAndAdaptive := func(o *llms.CallOptions) { + o.Reasoning = &llms.ReasoningConfig{Mode: llms.ReasoningOff, Adaptive: true} + } + for name, tc := range map[string]struct { + model string + client []Option + opts []llms.CallOption + }{ + "a generation that predates adaptive": { + model: "anthropic/claude-haiku-4-5", opts: []llms.CallOption{llms.WithAdaptiveReasoning(llms.ReasoningNone)}, + }, + "a model that is not Claude": { + model: "glm-5.2", opts: []llms.CallOption{llms.WithAdaptiveReasoning(llms.ReasoningNone)}, + }, + "the reasoning object format": { + model: "anthropic/claude-opus-4-8", client: []Option{WithModernReasoningFormat()}, + opts: []llms.CallOption{llms.WithAdaptiveReasoning(llms.ReasoningNone)}, + }, + "an explicit off": { + model: "anthropic/claude-opus-4-8", opts: []llms.CallOption{offAndAdaptive}, + }, + } { + t.Run(name, func(t *testing.T) { + t.Parallel() + + body := captureWireWithClient(t, tc.model, tc.client, tc.opts...) + if strings.Contains(body, `"adaptive"`) { + t.Errorf("got body: %s", body) + } + }) + } +} + +func TestExtraBodyThinkingMeetsTheDelegatedAdaptiveObject(t *testing.T) { + t.Parallel() + + extra := func(thinking map[string]any) llms.CallOption { + return llms.WithExtraBody(map[string]any{"thinking": thinking}) + } + for name, tc := range map[string]struct { + thinking map[string]any + want string + }{ + "a key of the same object merges": {map[string]any{"display": "omitted"}, `{"type":"adaptive","display":"omitted"}`}, + "another type replaces the object": {map[string]any{"type": "disabled"}, `{"type":"disabled"}`}, + } { + t.Run(name, func(t *testing.T) { + t.Parallel() + + fields := extraBodyWire(t, "anthropic/claude-opus-4-8", nil, "ok", + llms.WithAdaptiveReasoning(llms.ReasoningNone), extra(tc.thinking)) + assertWireJSON(t, fields, map[string]string{"thinking": tc.want}) + }) + } +} + +func TestDelegatedAdaptiveLeavesTheWireEmptyWhereClaudeThinksAlready(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "anthropic/claude-opus-5", "anthropic/claude-sonnet-5", "anthropic/claude-fable-5", + "anthropic/claude-fable-5-1", "anthropic/claude-mythos-5", "anthropic/claude-mythos-5-1", + "claude-mythos-preview", "bedrock/us.anthropic.claude-opus-5", + } { + t.Run(model, func(t *testing.T) { + t.Parallel() + + body := captureWireWithClient(t, model, nil, llms.WithAdaptiveReasoning(llms.ReasoningNone)) + + if strings.Contains(body, `"thinking"`) || strings.Contains(body, "reasoning_effort") { + t.Errorf("this model thinks with no configuration, got body: %s", body) + } + }) + } +} diff --git a/llms/openai/claude_json_mode_test.go b/llms/openai/claude_json_mode_test.go new file mode 100644 index 000000000..f3de9d5a0 --- /dev/null +++ b/llms/openai/claude_json_mode_test.go @@ -0,0 +1,90 @@ +package openai + +import ( + "strings" + "testing" + + "github.com/vxcontrol/langchaingo/llms" +) + +func TestJSONModeStaysOffTheWireForClaude(t *testing.T) { + t.Parallel() + + for _, model := range []string{"anthropic/claude-sonnet-5", "claude-haiku-4-5", "us.anthropic.claude-opus-4-6-v1:0"} { + if body := sendForWire(t, model, llms.WithJSONMode()); strings.Contains(body, "response_format") { + t.Errorf("%s: the vendor has no json_object for this model, got body: %s", model, body) + } + w := warningFor(t, sendForWarnings(t, model, llms.WithJSONMode()), "WithJSONMode") + if w.Kind != llms.WarningDrop || w.Asked != "true" || w.Sent != "" { + t.Errorf("%s: json-mode warning = %+v", model, w) + } + } +} + +func TestJSONModeStillReachesAModelThatTakesIt(t *testing.T) { + t.Parallel() + + if body := sendForWire(t, "gpt-4o", llms.WithJSONMode()); !strings.Contains(body, `"response_format":{"type":"json_object"}`) { + t.Errorf("want json_object on the wire, got body: %s", body) + } + if resp := sendForWarnings(t, "gpt-4o", llms.WithJSONMode()); len(resp.Warnings) != 0 { + t.Errorf("JSON mode reached the wire, got %v", resp.Warnings) + } +} + +func TestASchemaForClaudeIsNotReportedAsALostJSONMode(t *testing.T) { + t.Parallel() + + llm := newUnitLLM(t, WithModel("anthropic/claude-sonnet-5")) + var opts llms.CallOptions + llms.WithStructuredOutput(llms.StructuredOutputConfig{Name: "s", Schema: objectSchema()})(&opts) + warn := &llms.Warnings{} + if _, err := llm.createChatRequest(nil, opts, warn); err != nil { + t.Fatal(err) + } + for _, w := range warn.List() { + if w.Option == "WithJSONMode" { + t.Errorf("the schema carries the JSON request, got %v", w) + } + } +} + +func TestClientJSONFormatFollowsTheJSONModeModelRule(t *testing.T) { + t.Parallel() + + client := []Option{WithResponseFormat(ResponseFormatJSON)} + for _, model := range []string{ + "anthropic/claude-sonnet-5", "claude-haiku-4-5", "us.anthropic.claude-opus-4-6-v1:0", + "MiniMax-M3", "minimax/MiniMax-M3", "MiniMax-M2.7", + } { + resp, sent := sendForWarningsWith(t, model, client) + if rf, ok := sent["response_format"]; ok { + t.Errorf("%s: the vendor takes no json_object for this model, got response_format %v", model, rf) + } + w := warningFor(t, resp, "WithResponseFormat") + if w.Kind != llms.WarningDrop || w.Asked != "json_object" || w.Sent != "" || w.Model != model { + t.Errorf("%s: response-format warning = %+v", model, w) + } + } + + for _, model := range []string{"gpt-4o", "openrouter/minimax/minimax-m3"} { + resp, sent := sendForWarningsWith(t, model, client) + if rf, _ := sent["response_format"].(map[string]any); rf["type"] != "json_object" { + t.Errorf("%s: want json_object on the wire, got %v", model, sent["response_format"]) + } + if len(resp.Warnings) != 0 { + t.Errorf("%s: the format reached the wire, got %v", model, resp.Warnings) + } + } + + schema := &ResponseFormat{Type: "json_schema", JSONSchema: &ResponseFormatJSONSchema{ + Name: "s", Strict: true, Schema: &ResponseFormatJSONSchemaProperty{Type: "object"}, + }} + resp, sent := sendForWarningsWith(t, "anthropic/claude-sonnet-5", []Option{WithResponseFormat(schema)}) + if rf, _ := sent["response_format"].(map[string]any); rf["type"] != "json_schema" { + t.Errorf("a schema is not json_object, want it on the wire, got %v", sent["response_format"]) + } + if len(resp.Warnings) != 0 { + t.Errorf("the schema reached the wire, got %v", resp.Warnings) + } +} diff --git a/llms/openai/claude_thinking_budget_test.go b/llms/openai/claude_thinking_budget_test.go new file mode 100644 index 000000000..4b54bb652 --- /dev/null +++ b/llms/openai/claude_thinking_budget_test.go @@ -0,0 +1,116 @@ +package openai + +import ( + "strings" + "testing" + + "github.com/vxcontrol/langchaingo/llms" +) + +func TestAClaudeBudgetTravelsAsAnthropicsThinkingObject(t *testing.T) { + t.Parallel() + + for _, model := range []string{"claude-haiku-4-5", "anthropic/claude-sonnet-4-5", "anthropic/claude-sonnet-4-6"} { + t.Run(model, func(t *testing.T) { + t.Parallel() + + body := captureWireWithClient(t, model, nil, + llms.WithReasoning(llms.ReasoningNone, 2048), llms.WithMaxTokens(8192)) + + if !strings.Contains(body, `"thinking":{"type":"enabled","budget_tokens":2048}`) { + t.Errorf("want the budget in the thinking object, got body: %s", body) + } + if strings.Contains(body, "reasoning_effort") { + t.Errorf("an effort would replace the caller's budget on this route, got body: %s", body) + } + if !strings.Contains(body, `"max_completion_tokens":8192`) { + t.Errorf("an answer limit above the budget must reach the wire verbatim, got body: %s", body) + } + }) + } +} + +func TestTheAnswerLimitRisesUnderTheBudgetTheThinkingObjectCarries(t *testing.T) { + t.Parallel() + + body := captureWireWithClient(t, "claude-haiku-4-5", nil, + llms.WithReasoning(llms.ReasoningNone, 1024), llms.WithMaxTokens(1024)) + + if !strings.Contains(body, `"thinking":{"type":"enabled","budget_tokens":1024}`) { + t.Fatalf("want the vendor-floor budget in the thinking object, got body: %s", body) + } + if !strings.Contains(body, `"max_completion_tokens":2048`) { + t.Errorf("the budget must be less than the answer limit, got body: %s", body) + } +} + +func TestAnAdaptiveOnlyClaudeGetsNoBudgetObject(t *testing.T) { + t.Parallel() + + body := captureWireWithClient(t, "anthropic/claude-sonnet-5", nil, + llms.WithReasoning(llms.ReasoningNone, 2048), llms.WithMaxTokens(8192)) + + if strings.Contains(body, `"thinking"`) { + t.Errorf("this generation rejects thinking.type enabled, got body: %s", body) + } +} + +func TestAnAdaptivePreferenceKeepsTheEffortOnAGenerationThatTakesBoth(t *testing.T) { + t.Parallel() + + adaptiveWithBudget := func(o *llms.CallOptions) { + o.Reasoning = &llms.ReasoningConfig{Adaptive: true, Effort: llms.ReasoningHigh, Tokens: 2048} + } + body := captureWireWithClient(t, "anthropic/claude-opus-4-6", nil, adaptiveWithBudget, llms.WithMaxTokens(8192)) + + if strings.Contains(body, `"thinking"`) { + t.Errorf("the caller asked for adaptive thinking, got body: %s", body) + } + if !strings.Contains(body, `"reasoning_effort":"high"`) { + t.Errorf("want the effort that carries adaptive thinking, got body: %s", body) + } +} + +func TestABudgetStaysOffModelsThatAreNotClaude(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gpt-5", "deepseek-v4-pro", "glm-5.2"} { + body := captureWireWithClient(t, model, nil, + llms.WithReasoning(llms.ReasoningNone, 2048), llms.WithMaxTokens(8192)) + if strings.Contains(body, `"budget_tokens"`) { + t.Errorf("%s: Anthropic's budget field is Claude's alone, got body: %s", model, body) + } + } +} + +func TestAClaudeBudgetStaysOffHostsThatDocumentNoThinkingObject(t *testing.T) { + t.Parallel() + + for name, tc := range map[string]struct{ baseURL, model string }{ + "the gateway's deepinfra route": {gatewayBaseURL, "deepinfra/anthropic/claude-sonnet-4-6"}, + "the gateway's perplexity route": {gatewayBaseURL, "perplexity/anthropic/claude-sonnet-4-5"}, + "the gateway's openrouter route": {gatewayBaseURL, "openrouter/anthropic/claude-haiku-4.5"}, + "DeepInfra": {"http://api.deepinfra.com/v1/openai", "anthropic/claude-sonnet-4-6"}, + "Perplexity": {"http://api.perplexity.ai", "anthropic/claude-sonnet-4-5"}, + "OpenRouter": {"http://openrouter.ai/api/v1", "anthropic/claude-sonnet-4.5"}, + "ZenMux": {"http://zenmux.ai/api/v1", "anthropic/claude-sonnet-4.6"}, + "Vercel AI Gateway": {"http://ai-gateway.vercel.sh/v1", "anthropic/claude-sonnet-4.5"}, + } { + t.Run(name, func(t *testing.T) { + t.Parallel() + + body, resp := sendToHost(t, tc.baseURL, tc.model, + llms.WithReasoning(llms.ReasoningNone, 2048), llms.WithMaxTokens(8192)) + + if _, ok := body["thinking"]; ok { + t.Errorf("this host documents no thinking object, got body: %v", body) + } + if _, ok := body["reasoning_effort"]; !ok { + t.Errorf("want the effort the budget maps to, got body: %v", body) + } + if w := warningFor(t, resp, "WithReasoning"); w.Asked == w.Sent { + t.Errorf("the budget that did not travel must be reported, got %+v", w) + } + }) + } +} diff --git a/llms/openai/claude_thinking_off_route_test.go b/llms/openai/claude_thinking_off_route_test.go new file mode 100644 index 000000000..f6ae7b0c4 --- /dev/null +++ b/llms/openai/claude_thinking_off_route_test.go @@ -0,0 +1,81 @@ +package openai + +import ( + "context" + "errors" + "io" + "net" + "net/http" + "net/http/httptest" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func TestTurningOffClaudeIsRefusedWhereTheHostDocumentsNoThinkingObject(t *testing.T) { + t.Parallel() + + for name, tc := range map[string]struct { + baseURL, model string + clientOpts []Option + }{ + "the gateway's deepinfra route": {gatewayBaseURL, "deepinfra/anthropic/claude-opus-5", nil}, + "the gateway's perplexity route": {gatewayBaseURL, "perplexity/anthropic/claude-sonnet-5", nil}, + "the gateway's openrouter route": {gatewayBaseURL, "openrouter/anthropic/claude-sonnet-5", nil}, + "DeepInfra": {"http://api.deepinfra.com/v1/openai", "anthropic/claude-opus-5", nil}, + "Perplexity": {"http://api.perplexity.ai", "anthropic/claude-sonnet-5", nil}, + "OpenRouter": {"http://openrouter.ai/api/v1", "anthropic/claude-sonnet-5", nil}, + "ZenMux": {"http://zenmux.ai/api/v1", "anthropic/claude-opus-5", nil}, + "Vercel AI Gateway": {"http://ai-gateway.vercel.sh/v1", "anthropic/claude-sonnet-5", nil}, + "the reasoning object format": { + gatewayBaseURL, "anthropic/claude-sonnet-5", []Option{WithModernReasoningFormat()}, + }, + } { + t.Run(name, func(t *testing.T) { + t.Parallel() + + sent, err := sendOffToHost(t, tc.baseURL, tc.model, tc.clientOpts) + + var unsupported *reasoning.ErrReasoningOffUnsupported + if !errors.As(err, &unsupported) { + t.Errorf("want ErrReasoningOffUnsupported, got err=%v", err) + } + if sent { + t.Error("the refusal must come before the network, but a request went out") + } + }) + } +} + +func sendOffToHost(t *testing.T, baseURL, model string, clientOpts []Option) (bool, error) { + t.Helper() + + sent := false + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + sent = true + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"1","object":"chat.completion","created":1,"model":"m",`+ + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],`+ + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`) + })) + t.Cleanup(srv.Close) + + addr := srv.Listener.Addr().String() + transport := &http.Transport{DialContext: func(ctx context.Context, network, _ string) (net.Conn, error) { + return (&net.Dialer{}).DialContext(ctx, network, addr) + }} + t.Cleanup(transport.CloseIdleConnections) + + opts := append([]Option{ + WithBaseURL(baseURL), WithToken("token"), WithModel(model), + WithHTTPClient(&http.Client{Transport: transport}), + }, clientOpts...) + llm, err := New(opts...) + if err != nil { + t.Fatalf("new client: %v", err) + } + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, llms.WithReasoningDisabled()) + return sent, err +} diff --git a/llms/openai/deepseek_empty_reasoning_live_test.go b/llms/openai/deepseek_empty_reasoning_live_test.go new file mode 100644 index 000000000..416e43eac --- /dev/null +++ b/llms/openai/deepseek_empty_reasoning_live_test.go @@ -0,0 +1,53 @@ +package openai + +import ( + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +// TestDeepSeekTakesBackAToolTurnWithoutReasoning replays, in thinking mode, a tool +// loop whose assistant turn holds no reasoning and a call ID DeepSeek did not issue: +// a caller rewrote it, or made the turn up. DeepSeek refuses such a turn with 400 +// unless reasoning_content comes back, so the adapter sends it empty. +func TestDeepSeekTakesBackAToolTurnWithoutReasoning(t *testing.T) { + t.Parallel() + + for _, model := range []string{"deepseek-flash", "deepseek-v4-pro"} { + t.Run(model, func(t *testing.T) { + t.Parallel() + + llm := newTestDeepSeekClient(t, WithModel(model), WithPreserveReasoningContent()) + tools := []llms.Tool{{Type: "function", Function: &llms.FunctionDefinition{ + Name: "get_weather", + Description: "Get the current weather for one city.", + Parameters: map[string]any{ + "type": "object", + "properties": map[string]any{"city": map[string]any{"type": "string"}}, + "required": []string{"city"}, + }, + }}} + const callID = "call_07_Z9fjqXcYkT3bQ2wRmN8pLs4v" + history := []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "What is the weather in Paris? Use the tool."), + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.ToolCall{ID: callID, Type: "function", FunctionCall: &llms.FunctionCall{ + Name: "get_weather", Arguments: `{"city":"Paris"}`, + }}, + }}, + {Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{ + llms.ToolCallResponse{ToolCallID: callID, Name: "get_weather", Content: "Sunny, 21C"}, + }}, + } + + resp, err := llm.GenerateContent(t.Context(), history, llms.WithTools(tools), llms.WithMaxTokens(400)) + require.NoError(t, err) + require.NotEmpty(t, resp.Choices) + assert.Contains(t, strings.ToLower(resp.Choices[0].Content), "21") + }) + } +} diff --git a/llms/openai/deepseek_empty_reasoning_test.go b/llms/openai/deepseek_empty_reasoning_test.go new file mode 100644 index 000000000..aeb5e42b5 --- /dev/null +++ b/llms/openai/deepseek_empty_reasoning_test.go @@ -0,0 +1,109 @@ +package openai + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +// loopWithoutReasoning is the history a caller replays after DeepSeek streamed an +// empty reasoning_content: no assistant turn holds any reasoning, and the tool turn +// holds nothing but its call. +func loopWithoutReasoning() []llms.MessageContent { + return []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "first"), + llms.TextParts(llms.ChatMessageTypeAI, "answered in text"), + llms.TextParts(llms.ChatMessageTypeHuman, "second"), + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.ToolCall{ID: "c1", Type: "function", FunctionCall: &llms.FunctionCall{Name: "f", Arguments: "{}"}}, + }}, + {Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{ + llms.ToolCallResponse{ToolCallID: "c1", Name: "f", Content: "done"}, + }}, + } +} + +func TestDeepSeekTurnWithoutReasoningGoesBackWithAnEmptyOne(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "deepseek-flash", "deepseek-v4-pro", "DeepSeek-V4-Pro", "deepseek/deepseek-v4-pro", + "deepseek-chat", "deepseek-reasoner", + } { + turns := assistantTurnsSentFor(t, model, loopWithoutReasoning()) + require.Len(t, turns, 2, model) + + for _, turn := range turns { + require.Contains(t, turn, "reasoning_content", model) + assert.Equal(t, "", turn["reasoning_content"], model) + } + assert.NotEmpty(t, turns[1]["tool_calls"], model) + } +} + +func TestDeepSeekTurnWithAnEmptyReasoningPartGoesBackWithAnEmptyOne(t *testing.T) { + t.Parallel() + + turns := assistantTurnsSentFor(t, "deepseek-flash", []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "first"), + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.TextPartWithReasoning("", &reasoning.ContentReasoning{}), + llms.ToolCall{ID: "c1", Type: "function", FunctionCall: &llms.FunctionCall{Name: "f", Arguments: "{}"}}, + }}, + {Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{ + llms.ToolCallResponse{ToolCallID: "c1", Name: "f", Content: "done"}, + }}, + }) + require.Len(t, turns, 1) + + require.Contains(t, turns[0], "reasoning_content") + assert.Equal(t, "", turns[0]["reasoning_content"]) +} + +func TestOnlyDeepSeekGetsAnEmptyReasoningBack(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "kimi-k3", "moonshot/kimi-k2.6", "glm-5.3", "zai/glm-5.3", "qwen3.7-plus", "dashscope/qwen3.8-max", + "grok-4", "gpt-5.5", "mistralai/mistral-small-2603", "MiniMax-M2.7", "deepseekcoder", + } { + for _, turn := range assistantTurnsSentFor(t, model, loopWithoutReasoning()) { + assert.NotContains(t, turn, "reasoning_content", model) + } + } +} + +func TestDeepSeekWithoutPreservedReasoningSendsNoReasoningField(t *testing.T) { + t.Parallel() + + var raw string + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + body, err := io.ReadAll(r.Body) + if err != nil { + t.Errorf("read request: %v", err) + return + } + raw = string(body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"1","object":"chat.completion","created":1,"model":"m",`+ + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],`+ + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`) + })) + defer server.Close() + + llm, err := New(WithBaseURL(server.URL), WithToken("token"), WithModel("deepseek-flash")) + require.NoError(t, err) + _, err = llm.GenerateContent(context.Background(), loopWithoutReasoning()) + require.NoError(t, err) + + assert.False(t, strings.Contains(raw, "reasoning_content"), raw) +} diff --git a/llms/openai/deepseek_sampling_test.go b/llms/openai/deepseek_sampling_test.go new file mode 100644 index 000000000..8846903f1 --- /dev/null +++ b/llms/openai/deepseek_sampling_test.go @@ -0,0 +1,414 @@ +package openai + +import ( + "context" + "encoding/json" + "io" + "net" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/vxcontrol/langchaingo/llms" +) + +func captureDeepSeekRequest(t *testing.T, model string, opts ...llms.CallOption) map[string]any { + t.Helper() + + var body map[string]any + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + raw, err := io.ReadAll(r.Body) + if err != nil { + t.Errorf("read request: %v", err) + return + } + if err := json.Unmarshal(raw, &body); err != nil { + t.Errorf("decode request: %v", err) + return + } + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"1","object":"chat.completion","created":1,"model":"m",`+ + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],`+ + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`) + })) + defer server.Close() + + llm, err := New(WithBaseURL(server.URL), WithToken("token"), WithModel(model)) + if err != nil { + t.Fatalf("new client: %v", err) + } + if _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, opts...); err != nil { + t.Fatalf("generate: %v", err) + } + return body +} + +func TestDeepSeekV32KeepsCallerSamplingUntilThinkingIsAsked(t *testing.T) { + t.Parallel() + + for _, model := range []string{"deepseek-v3.2", "deepseek.v3.2", "us.deepseek.v3.2", "deepseek-v3.2-exp"} { + body := captureDeepSeekRequest(t, model, llms.WithTemperature(0.25), llms.WithTopP(0.3)) + + if got, want := body["temperature"], 0.25; got != want { + t.Errorf("%s: temperature = %v, want %v", model, got, want) + } + if got, ok := body["top_p"]; !ok || got != 0.3 { + t.Errorf("%s: top_p = %v (present %v), want 0.3", model, got, ok) + } + } +} + +func TestDeepSeekV32KeepsSamplingEvenWithAnEffortOnTheWire(t *testing.T) { + t.Parallel() + + body := captureDeepSeekRequest(t, "deepseek-v3.2", + llms.WithTemperature(0.25), llms.WithTopP(0.3), + llms.WithReasoning(llms.ReasoningHigh, 0)) + + if got, want := body["temperature"], 0.25; got != want { + t.Errorf("temperature = %v, want %v", got, want) + } + if got, ok := body["top_p"]; !ok || got != 0.3 { + t.Errorf("top_p = %v (present %v), want 0.3", got, ok) + } + if got, want := body["reasoning_effort"], "high"; got != want { + t.Errorf("reasoning_effort = %v, want %v", got, want) + } +} + +const ( + deepSeekBaseURL = "http://api.deepseek.com" + dashScopeBaseURL = "http://dashscope-us.aliyuncs.com/compatible-mode/v1" + gatewayBaseURL = "http://litellm.example/v1" +) + +func sendToHost(t *testing.T, baseURL, model string, opts ...llms.CallOption) (map[string]any, *llms.ContentResponse) { + t.Helper() + + var body map[string]any + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if err := json.NewDecoder(r.Body).Decode(&body); err != nil { + t.Errorf("decode request: %v", err) + } + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"1","object":"chat.completion","created":1,"model":"m",`+ + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],`+ + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`) + })) + t.Cleanup(srv.Close) + + addr := srv.Listener.Addr().String() + transport := &http.Transport{DialContext: func(ctx context.Context, network, _ string) (net.Conn, error) { + return (&net.Dialer{}).DialContext(ctx, network, addr) + }} + t.Cleanup(transport.CloseIdleConnections) + + llm, err := New(WithBaseURL(baseURL), WithToken("token"), WithModel(model), + WithHTTPClient(&http.Client{Transport: transport})) + if err != nil { + t.Fatalf("new client: %v", err) + } + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, opts...) + if err != nil { + t.Fatalf("generate: %v", err) + } + return body, resp +} + +func TestDeepSeekThinkingLeavesOutTheTemperatureItIgnores(t *testing.T) { + t.Parallel() + + sampling := []llms.CallOption{llms.WithTemperature(0.4), llms.WithTopP(0.97)} + for name, tc := range map[string]struct { + baseURL, model string + opts []llms.CallOption + }{ + "deepseek-v4-pro": {deepSeekBaseURL, "deepseek-v4-pro", sampling}, + "deepseek/deepseek-v4-pro": {gatewayBaseURL, "deepseek/deepseek-v4-pro", sampling}, + "deepseek-v4-flash": {deepSeekBaseURL, "deepseek-v4-flash", sampling}, + "deepseek-v4-pro with an effort": {deepSeekBaseURL, "deepseek-v4-pro", append([]llms.CallOption{llms.WithReasoning(llms.ReasoningHigh, 0)}, sampling...)}, + "deepseek-v4-pro thinking by object": {deepSeekBaseURL, "deepseek-v4-pro", append([]llms.CallOption{thinkingInExtraBody("enabled")}, sampling...)}, + "deepseek-flash": {deepSeekBaseURL, "deepseek-flash", sampling}, + "deepseek/deepseek-flash": {gatewayBaseURL, "deepseek/deepseek-flash", sampling}, + "deepseek/deepseek-flash with an effort and thinking by object": {gatewayBaseURL, "deepseek/deepseek-flash", + append([]llms.CallOption{llms.WithReasoning(llms.ReasoningHigh, 0), thinkingInExtraBody("enabled")}, sampling...)}, + } { + body, resp := sendToHost(t, tc.baseURL, tc.model, tc.opts...) + if _, ok := body["temperature"]; ok { + t.Errorf("%s: thinking mode ignores temperature, got body: %v", name, body) + } + if body["top_p"] != 0.97 { + t.Errorf("%s: top_p takes effect while thinking and must stay, got body: %v", name, body) + } + + w := warningFor(t, resp, "WithTemperature") + if w.Kind != llms.WarningDrop || w.Asked != "0.4" || !strings.Contains(w.Reason, "ignores temperature") { + t.Errorf("%s: temperature warning = %+v", name, w) + } + for _, other := range resp.Warnings { + if other.Option == "WithTopP" { + t.Errorf("%s: top_p reached the wire, yet it is reported: %+v", name, other) + } + } + } +} + +func TestDeepSeekKeepsTheTemperatureOnceThinkingIsOff(t *testing.T) { + t.Parallel() + + for name, off := range map[string]llms.CallOption{ + "reasoning disabled": llms.WithReasoningDisabled(), + "thinking object in the body": thinkingInExtraBody("disabled"), + "effort none in the body": llms.WithExtraBody(map[string]any{"reasoning_effort": "none"}), + } { + body, resp := sendToHost(t, deepSeekBaseURL, "deepseek-v4-pro", off, llms.WithTemperature(0.4)) + if body["temperature"] != 0.4 { + t.Errorf("%s: non-thinking mode takes temperature, got body: %v", name, body) + } + if len(resp.Warnings) != 0 { + t.Errorf("%s: nothing was lost, got %v", name, resp.Warnings) + } + } +} + +func TestDeepSeekOutOfThinkingLeavesOutTheTopPItIgnores(t *testing.T) { + t.Parallel() + + offs := map[string]llms.CallOption{ + "reasoning disabled": llms.WithReasoningDisabled(), + "thinking object in the body": thinkingInExtraBody("disabled"), + "effort none in the body": llms.WithExtraBody(map[string]any{"reasoning_effort": "none"}), + } + for _, target := range []struct{ baseURL, model string }{ + {deepSeekBaseURL, "deepseek-v4-pro"}, + {deepSeekBaseURL, "deepseek-flash"}, + {gatewayBaseURL, "deepseek/deepseek-flash"}, + } { + for name, off := range offs { + body, resp := sendToHost(t, target.baseURL, target.model, off, llms.WithTemperature(0.3), llms.WithTopP(0.9)) + if _, ok := body["top_p"]; ok { + t.Errorf("%s, %s: non-thinking mode fixes top_p at 1.0, got body: %v", target.model, name, body) + } + if body["temperature"] != 0.3 { + t.Errorf("%s, %s: non-thinking mode takes temperature, got body: %v", target.model, name, body) + } + + w := warningFor(t, resp, "WithTopP") + if w.Kind != llms.WarningDrop || w.Asked != "0.9" || !strings.Contains(w.Reason, "ignores top_p") { + t.Errorf("%s, %s: top_p warning = %+v", target.model, name, w) + } + if len(resp.Warnings) != 1 { + t.Errorf("%s, %s: only top_p was lost, got %v", target.model, name, resp.Warnings) + } + } + } + + off := llms.WithExtraBody(map[string]any{"enable_thinking": false}) + if body, _ := sendToHost(t, dashScopeBaseURL, "deepseek-v4-pro", off, llms.WithTopP(0.9)); body["top_p"] != 0.9 { + t.Errorf("DashScope documents top_p as settable, got body: %v", body) + } +} + +func TestDeepSeekOnAnotherHostKeepsItsTemperatureWhileThinking(t *testing.T) { + t.Parallel() + + effort := llms.WithReasoning(llms.ReasoningHigh, 0) + for name, tc := range map[string]struct { + baseURL, model string + thinking llms.CallOption + }{ + "dashscope/deepseek-v4-pro": {gatewayBaseURL, "dashscope/deepseek-v4-pro", effort}, + "openrouter/deepseek/deepseek-v4-pro": {gatewayBaseURL, "openrouter/deepseek/deepseek-v4-pro", effort}, + "deepseek-v4-pro on DashScope": {dashScopeBaseURL, "deepseek-v4-pro", llms.WithExtraBody(map[string]any{"enable_thinking": true})}, + "deepseek-v4-pro on DashScope, off": {dashScopeBaseURL, "deepseek-v4-pro", llms.WithExtraBody(map[string]any{"enable_thinking": false})}, + "deepseek-v4-flash on DashScope": {dashScopeBaseURL, "deepseek-v4-flash", effort}, + "deepseek-v4-pro on a gateway": {gatewayBaseURL, "deepseek-v4-pro", effort}, + } { + body, resp := sendToHost(t, tc.baseURL, tc.model, tc.thinking, llms.WithTemperature(0.4)) + if body["temperature"] != 0.4 { + t.Errorf("%s: only DeepSeek's own API documents temperature as ignored while thinking, got body: %v", + name, body) + } + for _, w := range resp.Warnings { + if w.Option == "WithTemperature" { + t.Errorf("%s: temperature reached the wire, yet it is reported: %+v", name, w) + } + } + } +} + +func TestDeepSeekNeverGetsThePenaltiesItNoLongerSupports(t *testing.T) { + t.Parallel() + + penalties := []llms.CallOption{llms.WithFrequencyPenalty(0.5), llms.WithPresencePenalty(0.3)} + requests := map[string][]llms.CallOption{ + "deepseek-v4-pro": penalties, + "deepseek/deepseek-v4-pro": penalties, + "deepseek-flash": penalties, + "dashscope/deepseek-v4-pro": penalties, + "deepseek-v4-pro thinking off": append([]llms.CallOption{llms.WithReasoningDisabled()}, penalties...), + } + for name, opts := range requests { + model, _, _ := strings.Cut(name, " ") + + body := captureDeepSeekRequest(t, model, opts...) + for _, field := range []string{"frequency_penalty", "presence_penalty"} { + if _, ok := body[field]; ok { + t.Errorf("%s: %s takes no effect on DeepSeek, got body: %v", name, field, body) + } + } + + resp := sendForWarnings(t, model, opts...) + for option, asked := range map[string]string{"WithFrequencyPenalty": "0.5", "WithPresencePenalty": "0.3"} { + if w := warningFor(t, resp, option); w.Kind != llms.WarningDrop || w.Asked != asked { + t.Errorf("%s: %s warning = %+v", name, option, w) + } + } + } +} + +func TestTopKStaysOffTheAPIsThatDoNotTakeIt(t *testing.T) { + t.Parallel() + + for name, tc := range map[string]struct { + baseURL, model string + dropped bool + }{ + "deepseek-v4-pro on its own API": {deepSeekBaseURL, "deepseek-v4-pro", true}, + "deepseek/deepseek-v4-pro on a gateway": {gatewayBaseURL, "deepseek/deepseek-v4-pro", true}, + "deepseek-flash on its own API": {deepSeekBaseURL, "deepseek-flash", true}, + "dashscope/deepseek-v4-pro on a gateway": {gatewayBaseURL, "dashscope/deepseek-v4-pro", true}, + "deepseek-v4-pro on DashScope": {dashScopeBaseURL, "deepseek-v4-pro", true}, + "dashscope/kimi-k2.7-code on a gateway": {gatewayBaseURL, "dashscope/kimi-k2.7-code", true}, + "kimi-k2.6 on DashScope": {dashScopeBaseURL, "kimi-k2.6", true}, + "kimi/kimi-k2.6 on DashScope": {dashScopeBaseURL, "kimi/kimi-k2.6", true}, + "dashscope/MiniMax-M2.5 on a gateway": {gatewayBaseURL, "dashscope/MiniMax-M2.5", true}, + "MiniMax/MiniMax-M3 on DashScope": {dashScopeBaseURL, "MiniMax/MiniMax-M3", true}, + "Moonshot-Kimi-K2-Instruct on DashScope": {dashScopeBaseURL, "Moonshot-Kimi-K2-Instruct", true}, + "dashscope/qwen3.7-plus keeps it": {gatewayBaseURL, "dashscope/qwen3.7-plus", false}, + "glm-5.2 on DashScope keeps it": {dashScopeBaseURL, "glm-5.2", false}, + "kimi-k2.6 on a gateway's other route": {gatewayBaseURL, "moonshot/kimi-k2.6", false}, + "deepseek-v4-pro on another route keeps it": {gatewayBaseURL, "openrouter/deepseek/deepseek-v4-pro", false}, + } { + body, resp := sendToHost(t, tc.baseURL, tc.model, llms.WithTopK(40)) + _, present := body["top_k"] + if tc.dropped { + if present { + t.Errorf("%s: the vendor's API takes no top_k, got body: %v", name, body) + } + if w := warningFor(t, resp, "WithTopK"); w.Kind != llms.WarningDrop || w.Asked != "40" { + t.Errorf("%s: top_k warning = %+v", name, w) + } + } else if body["top_k"] != float64(40) { + t.Errorf("%s: top_k must reach the wire, got body: %v", name, body) + } + } +} + +func thinkingInExtraBody(kind string) llms.CallOption { + return llms.WithExtraBody(map[string]any{"thinking": map[string]any{"type": kind}}) +} + +func TestChatVariantsKeepTheTemperatureTheCallerSet(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gpt-5.2-chat", "gpt-5.2-chat-latest", "gpt-5-chat"} { + body := captureDeepSeekRequest(t, model, + llms.WithTemperature(0.3), llms.WithReasoning(llms.ReasoningHigh, 0)) + if body["temperature"] != 0.3 { + t.Errorf("%s must keep the caller's temperature, got body: %v", model, body) + } + } +} + +func TestPenaltiesStayOffTheDoorsThatRefuseThem(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "grok-4.6", "grok-4-1-fast", "grok-4-1-fast-non-reasoning", "grok-3", "grok-3-mini", + "grok-3-mini-beta", "grok-4.20-0309-non-reasoning", "xai/grok-4.6", + } { + body := captureDeepSeekRequest(t, model, + llms.WithFrequencyPenalty(0.5), llms.WithPresencePenalty(0.5)) + if _, ok := body["frequency_penalty"]; ok { + t.Errorf("%s answers that it does not support the parameter, got body: %v", model, body) + } + if _, ok := body["presence_penalty"]; ok { + t.Errorf("%s answers that it does not support the parameter, got body: %v", model, body) + } + } + + for _, model := range []string{"gpt-5.4", "glm-5.2", "mistral-medium-latest"} { + body := captureDeepSeekRequest(t, model, + llms.WithFrequencyPenalty(0.5), llms.WithPresencePenalty(0.5)) + if body["frequency_penalty"] != 0.5 || body["presence_penalty"] != 0.5 { + t.Errorf("%s takes both penalties and must keep receiving them, got body: %v", model, body) + } + } +} + +func TestStopStillTravelsToTheDoorsThatRefuseIt(t *testing.T) { + t.Parallel() + + body := captureDeepSeekRequest(t, "grok-4.6", llms.WithStopWords([]string{"STOP"})) + if _, ok := body["stop"]; !ok { + t.Fatalf("stop bounds the answer, so it is left to fail loudly rather than dropped, got body: %v", body) + } +} + +func TestLogProbsReachTheWireAndYieldToThinking(t *testing.T) { + t.Parallel() + + t.Run("asked", func(t *testing.T) { + t.Parallel() + + body := captureDeepSeekRequest(t, "gpt-4.1", llms.WithLogProbs(true), llms.WithTopLogProbs(3)) + if body["logprobs"] != true { + t.Errorf("logprobs must reach the wire, got body: %v", body) + } + if body["top_logprobs"] != float64(3) { + t.Errorf("top_logprobs must reach the wire, got body: %v", body) + } + }) + + t.Run("not asked", func(t *testing.T) { + t.Parallel() + + body := captureDeepSeekRequest(t, "gpt-4.1") + if _, ok := body["logprobs"]; ok { + t.Errorf("an unset logprobs must stay off the wire, got body: %v", body) + } + if _, ok := body["top_logprobs"]; ok { + t.Errorf("an unset top_logprobs must stay off the wire, got body: %v", body) + } + }) + + t.Run("a thinking generation drops them like the sampling params", func(t *testing.T) { + t.Parallel() + + body := captureDeepSeekRequest(t, "gpt-5.4", + llms.WithLogProbs(true), llms.WithTopLogProbs(3), llms.WithReasoning(llms.ReasoningHigh, 0)) + if _, ok := body["logprobs"]; ok { + t.Errorf("gpt-5.4 takes logprobs only at the none effort, got body: %v", body) + } + if _, ok := body["top_logprobs"]; ok { + t.Errorf("gpt-5.4 takes top_logprobs only at the none effort, got body: %v", body) + } + }) + + t.Run("the same generation at the none effort keeps them", func(t *testing.T) { + t.Parallel() + + body := captureDeepSeekRequest(t, "gpt-5.4", + llms.WithLogProbs(true), llms.WithTopLogProbs(3), llms.WithReasoningDisabled()) + if body["reasoning_effort"] != "none" { + t.Fatalf("the disable must reach the wire as none, got body: %v", body) + } + if body["logprobs"] != true || body["top_logprobs"] != float64(3) { + t.Errorf("gpt-5.4 takes logprobs at the none effort, got body: %v", body) + } + }) +} diff --git a/llms/openai/doc.go b/llms/openai/doc.go index fdca77745..95269f798 100644 --- a/llms/openai/doc.go +++ b/llms/openai/doc.go @@ -24,4 +24,13 @@ // llms.WithMaxTokens(100), // openai.WithLegacyMaxTokensField(), // Forces use of max_tokens field // ) +// +// # API Keys +// +// An API key is required when the base URL is empty, meaning the default +// OpenAI endpoint; when its host is one of the known public OpenAI-compatible +// providers (see APIKeyRequiredBaseURLs); when the host sits in a +// tenant-specific Azure OpenAI or OpenAI data-residency zone; or whenever +// APIType is Azure or Azure AD, whatever the base URL. Local servers such as +// vLLM, Ollama, llama.cpp, and SGLang can be used without a key. package openai diff --git a/llms/openai/effort_with_tools_test.go b/llms/openai/effort_with_tools_test.go new file mode 100644 index 000000000..c72d0d8bb --- /dev/null +++ b/llms/openai/effort_with_tools_test.go @@ -0,0 +1,340 @@ +package openai + +import ( + "context" + "errors" + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func weatherTool() llms.Tool { + return llms.Tool{ + Type: "function", + Function: &llms.FunctionDefinition{ + Name: "get_weather", + Parameters: map[string]any{"type": "object"}, + }, + } +} + +func bodyForCall(t *testing.T, model string, opts ...llms.CallOption) string { + t.Helper() + + const completion = `{"id":"x","object":"chat.completion","created":1,"model":"m",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}` + + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, completion) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithBaseURL(srv.URL), WithToken("test"), WithModel(model)) + if err != nil { + t.Fatalf("New() error: %v", err) + } + if _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, opts...); err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + return body +} + +func TestEffortAndToolsOnTheWire(t *testing.T) { + t.Parallel() + + tools := llms.WithTools([]llms.Tool{weatherTool()}) + high := llms.WithReasoning(llms.ReasoningHigh, 0) + + for _, tc := range []struct { + name string + model string + opts []llms.CallOption + want string + absent bool + }{ + {"5.6 with tools and no request still sends none", "gpt-5.6-sol", + []llms.CallOption{tools}, `"reasoning_effort":"none"`, false}, + {"5.6 without tools keeps the level", "gpt-5.6-sol", + []llms.CallOption{high}, `"reasoning_effort":"high"`, false}, + {"6-sol with tools and no request still sends none", "gpt-6-sol", + []llms.CallOption{tools}, `"reasoning_effort":"none"`, false}, + {"6-luna with tools and no request still sends none", "gpt-6-luna", + []llms.CallOption{tools}, `"reasoning_effort":"none"`, false}, + {"6-sol without tools keeps the level", "gpt-6-sol", + []llms.CallOption{high}, `"reasoning_effort":"high"`, false}, + {"5.5 without tools keeps the level", "gpt-5.5", + []llms.CallOption{high}, `"reasoning_effort":"high"`, false}, + {"5.2 with tools keeps the level", "gpt-5.2", + []llms.CallOption{tools, high}, `"reasoning_effort":"high"`, false}, + {"gpt-4o never gets the field", "gpt-4o", + []llms.CallOption{high}, `"reasoning_effort"`, true}, + {"gpt-4o with tools also omits it", "gpt-4o", + []llms.CallOption{tools, high}, `"reasoning_effort"`, true}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + body := bodyForCall(t, tc.model, tc.opts...) + if got := strings.Contains(body, tc.want); got == tc.absent { + verb := "does not contain" + if tc.absent { + verb = "contains" + } + t.Errorf("request body %s %s\nbody: %s", verb, tc.want, body) + } + }) + } +} + +func TestDashScopeThinkingBudgetOnTheWire(t *testing.T) { //nolint:funlen // table-driven test + t.Parallel() + + for _, tc := range []struct { + name string + model string + opt llms.CallOption + want string + absent bool + }{ + {"budget is sent instead of effort", "dashscope/qwen3.8-max", + llms.WithReasoning(llms.ReasoningLow, 4096), `"thinking_budget":4096`, false}, + {"effort is omitted when a budget is set", "dashscope/qwen3.8-max", + llms.WithReasoning(llms.ReasoningLow, 4096), `"reasoning_effort"`, true}, + {"without a budget, effort is sent", "dashscope/qwen3.8-max", + llms.WithReasoning(llms.ReasoningLow, 0), `"reasoning_effort":"low"`, false}, + {"without a budget, the budget field is absent", "dashscope/qwen3.8-max", + llms.WithReasoning(llms.ReasoningLow, 0), `"thinking_budget"`, true}, + {"3.7 also takes a budget", "dashscope/qwen3.7-plus", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"qwen-plus takes a budget", "dashscope/qwen-plus", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"qwen-flash takes a budget", "dashscope/qwen-flash", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"qwen3-max takes a budget", "dashscope/qwen3-max", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"qwen3-vl-plus takes a budget", "dashscope/qwen3-vl-plus", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"qwen3-vl-flash takes a budget", "dashscope/qwen3-vl-flash", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"qwen3-next takes a budget", "dashscope/qwen3-next-80b-a3b-thinking", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"qwen-turbo takes a budget", "dashscope/qwen-turbo", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"open-weight VL takes a budget", "dashscope/qwen3-vl-30b-a3b", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"large open-weight VL does too", "dashscope/qwen3-vl-235b-a22b", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"non-thinking next does not get a budget", "dashscope/qwen3-next-80b-a3b-instruct", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget"`, true}, + {"the flag stays alongside the budget", "dashscope/qwen-plus", + llms.WithReasoning(llms.ReasoningLow, 2048), `"enable_thinking":true`, false}, + {"guest kimi-k2.6 thinks only when asked to", "dashscope/kimi-k2.6", + llms.WithReasoning(llms.ReasoningNone, 2048), `"enable_thinking":true`, false}, + {"guest kimi-k2.5 thinks only when asked to", "dashscope/kimi-k2.5", + llms.WithReasoning(llms.ReasoningNone, 2048), `"enable_thinking":true`, false}, + {"guest kimi-k2.7-code needs no flag", "dashscope/kimi-k2.7-code", + llms.WithReasoning(llms.ReasoningNone, 2048), `"enable_thinking"`, true}, + {"guest glm-5.2 needs no flag", "dashscope/glm-5.2", + llms.WithReasoning(llms.ReasoningNone, 2048), `"enable_thinking"`, true}, + {"kimi-k2.6 on Moonshot gets no DashScope flag", "moonshot/kimi-k2.6", + llms.WithReasoning(llms.ReasoningLow, 0), `"enable_thinking"`, true}, + {"guest glm-5.2 takes a budget", "dashscope/glm-5.2", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"glm-5.2 generation snapshot does too", "dashscope/glm-5.2-fast-preview", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"guest glm-5.1 takes a budget", "dashscope/glm-5.1", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"guest kimi takes a budget", "dashscope/kimi-k2.7-code", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"guest glm-5 takes a budget", "dashscope/glm-5", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"guest glm-4.7 takes a budget", "dashscope/glm-4.7", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"guest glm-4.6 takes a budget", "dashscope/glm-4.6", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"guest glm-4.5 takes a budget", "dashscope/glm-4.5", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"guest glm-4.5-air takes a budget", "dashscope/glm-4.5-air", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"guest kimi-k2.6 takes a budget", "dashscope/kimi-k2.6", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"guest kimi-k2.5 takes a budget", "dashscope/kimi-k2.5", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"guest kimi-k2-thinking takes a budget", "dashscope/kimi-k2-thinking", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"glm-5.3 ignores a budget", "dashscope/glm-5.3", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget"`, true}, + {"glm-5.3 gets the effort instead", "dashscope/glm-5.3", + llms.WithReasoning(llms.ReasoningLow, 2048), `"reasoning_effort":"low"`, false}, + {"guest kimi-k3 still gets no budget", "dashscope/kimi-k3", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget"`, true}, + {"guest deepseek-v4 takes a budget", "dashscope/deepseek-v4-pro", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"dated deepseek-v4 snapshot does too", "dashscope/deepseek-v4-flash-0731", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"deepseek-v4.1-flash gets no budget", "dashscope/deepseek-v4.1-flash", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget"`, true}, + {"guest omits effort when a budget is set", "dashscope/glm-5.2", + llms.WithReasoning(llms.ReasoningLow, 2048), `"reasoning_effort"`, true}, + {"deepseek-v3.2 does not get a budget", "dashscope/deepseek-v3.2", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget"`, true}, + {"guest without a gateway name does not get a budget", "glm-5.2", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget"`, true}, + {"bare kimi does not get a budget", "kimi-k3", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget"`, true}, + {"bare deepseek-v4 does not get a budget", "deepseek-v4-pro", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget"`, true}, + {"bare qwen still matches the gateway", "qwen-plus", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget":2048`, false}, + {"glm on its own gateway does not get a budget", "zai/glm-5.2", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget"`, true}, + {"kimi on its own gateway does not get a budget", "moonshot/kimi-k3", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget"`, true}, + {"glm via openrouter does not get a budget", "openrouter/z-ai/glm-5.2", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget"`, true}, + {"deepseek on its own gateway does not get a budget", "deepseek/deepseek-v4-pro", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget"`, true}, + {"a different host does not get a budget", "openrouter/qwen/qwen3.7-plus", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget"`, true}, + {"non-qwen does not get a budget", "gpt-5.2", + llms.WithReasoning(llms.ReasoningLow, 2048), `"thinking_budget"`, true}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + body := bodyForCall(t, tc.model, llms.WithMaxTokens(8000), tc.opt) + if got := strings.Contains(body, tc.want); got == tc.absent { + verb := "does not contain" + if tc.absent { + verb = "contains" + } + t.Errorf("request body %s %s\nbody: %s", verb, tc.want, body) + } + }) + } +} + +func TestDashScopeGuestBudgetTravelsWithTheAnswerOnlyLimit(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "dashscope/glm-5.2", "dashscope/glm-5.1", "dashscope/glm-4.7", + "dashscope/kimi-k2.7-code", "dashscope/kimi-k2.6", + } { + t.Run(model, func(t *testing.T) { + t.Parallel() + body := bodyForCall(t, model, + llms.WithMaxTokens(300), llms.WithReasoning(llms.ReasoningNone, 2000)) + if !strings.Contains(body, `"thinking_budget":2000`) || !strings.Contains(body, `"max_tokens":300`) || + strings.Contains(body, `"max_completion_tokens"`) { + t.Errorf("a budget above the limit must go out next to max_tokens, "+ + "not max_completion_tokens\nbody: %s", body) + } + }) + } +} + +func TestDashScopeBudgetIsNotCappedByTheAnswerLimit(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + model string + }{ + {"qwen keeps the whole budget", "dashscope/qwen3-max"}, + {"glm keeps the whole budget", "dashscope/glm-5.2"}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + body := bodyForCall(t, tc.model, + llms.WithMaxTokens(2000), llms.WithReasoning(llms.ReasoningLow, 8192)) + if !strings.Contains(body, `"thinking_budget":8192`) { + t.Errorf("a small answer limit must not shrink the thinking budget "+ + "(max_tokens limits the answer only when thinking_budget is set)\nbody: %s", body) + } + }) + } +} + +func TestDashScopeDeepSeekBudgetLeavesRoomForTheAnswer(t *testing.T) { + t.Parallel() + + for _, model := range []string{"dashscope/deepseek-v4-pro", "dashscope/deepseek-v4-flash-0731"} { + t.Run(model, func(t *testing.T) { + t.Parallel() + resp, sent := sendForWarningsWith(t, model, nil, + llms.WithMaxTokens(600), llms.WithReasoning(llms.ReasoningNone, 2000)) + if sent["thinking_budget"] != float64(400) || sent["max_tokens"] != float64(600) { + t.Errorf("max_tokens counts the thinking too, so the budget must leave answer room: %v", sent) + } + if w := warningFor(t, resp, "WithReasoning"); w.Kind != llms.WarningClamp || w.Sent != "400 tokens" { + t.Errorf("reasoning warning = %+v", w) + } + }) + } +} + +func TestAnUnservableEffortWithToolsIsRefusedBeforeTheNetwork(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gpt-5.6-sol", "gpt-6-sol", "gpt-6-luna", "gpt-5.5", "gpt-5.4-nano"} { + t.Run(model, func(t *testing.T) { + t.Parallel() + + var reached bool + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + reached = true + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"x","choices":[]}`) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithBaseURL(srv.URL), WithToken("test"), WithModel(model)) + if err != nil { + t.Fatalf("New() error: %v", err) + } + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithTools([]llms.Tool{weatherTool()}), llms.WithReasoning(llms.ReasoningHigh, 0)) + + var want *reasoning.ErrEffortWithTools + if !errors.As(err, &want) { + t.Fatalf("asking %s to think alongside tools must be refused, got err=%v", model, err) + } + if reached { + t.Error("the refusal must come before the request leaves") + } + }) + } +} + +func TestAnExplicitNoThinkingWithToolsIsStillServed(t *testing.T) { + t.Parallel() + + body := bodyForCall(t, "gpt-5.6-sol", + llms.WithTools([]llms.Tool{weatherTool()}), llms.WithReasoningDisabled()) + + if !strings.Contains(body, `"reasoning_effort":"none"`) { + t.Errorf("a caller who asked not to think keeps being served\nbody: %s", body) + } +} + +func TestAskingForTheNoneLevelWithToolsIsNotARefusal(t *testing.T) { + t.Parallel() + + body := bodyForCall(t, "gpt-5.6-sol", + llms.WithTools([]llms.Tool{weatherTool()}), llms.WithReasoning(llms.ReasoningNone, 0)) + + if !strings.Contains(body, `"reasoning_effort":"none"`) { + t.Errorf("a caller who named the none level asked for what the vendor serves\nbody: %s", body) + } +} diff --git a/llms/openai/embeddings_short_test.go b/llms/openai/embeddings_short_test.go new file mode 100644 index 000000000..a00b35100 --- /dev/null +++ b/llms/openai/embeddings_short_test.go @@ -0,0 +1,27 @@ +package openai + +import ( + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestCreateEmbeddingRefusesAShortAnswer(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"object":"list","model":"m","data":[{"object":"embedding","index":0,"embedding":[0.1,0.2]}]}`) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithToken("t"), WithBaseURL(srv.URL)) + require.NoError(t, err) + + emb, err := llm.CreateEmbedding(t.Context(), []string{"one", "two"}) + require.ErrorIs(t, err, ErrUnexpectedResponseLength) + require.Nil(t, emb) +} diff --git a/llms/openai/extra_body_merge_test.go b/llms/openai/extra_body_merge_test.go new file mode 100644 index 000000000..3340f7774 --- /dev/null +++ b/llms/openai/extra_body_merge_test.go @@ -0,0 +1,342 @@ +package openai + +import ( + "context" + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "reflect" + "strings" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func extraBodyWire(t *testing.T, model string, client []Option, answer string, opts ...llms.CallOption) map[string]json.RawMessage { + t.Helper() + + content, err := json.Marshal(answer) + if err != nil { + t.Fatalf("answer: %v", err) + } + var body []byte + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + body, _ = io.ReadAll(r.Body) + if strings.Contains(string(body), `"stream":true`) { + w.Header().Set("Content-Type", "text/event-stream") + _, _ = io.WriteString(w, `data: {"id":"x","object":"chat.completion.chunk","created":1,"model":"m",`+ + `"choices":[{"index":0,"delta":{"role":"assistant","content":`+string(content)+`},"finish_reason":"stop"}]}`+ + "\n\ndata: [DONE]\n\n") + return + } + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"x","object":"chat.completion","created":1,"model":"m",`+ + `"choices":[{"index":0,"message":{"role":"assistant","content":`+string(content)+`},"finish_reason":"stop"}],`+ + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`) + })) + t.Cleanup(srv.Close) + + llm, err := New(append([]Option{WithBaseURL(srv.URL), WithToken("test"), WithModel(model)}, client...)...) + if err != nil { + t.Fatalf("New() error: %v", err) + } + if _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, opts...); err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + var fields map[string]json.RawMessage + if err := json.Unmarshal(body, &fields); err != nil { + t.Fatalf("the wire is not a JSON object: %v, body: %s", err, body) + } + return fields +} + +func TestExtraBodyLeavesTheFieldsItDoesNotNameAsTheDoorBuiltThem(t *testing.T) { + t.Parallel() + + seed := llms.WithSeed(9007199254740993) + schema := llms.WithStructuredOutput(llms.StructuredOutputConfig{ + Name: "verdict", + Schema: json.RawMessage(`{"type":"object","properties":{"reasoning":{"type":"string"},` + + `"answer":{"type":"string"}},"required":["reasoning","answer"],"additionalProperties":false}`), + }) + const answer = `{"reasoning":"r","answer":"a"}` + without := extraBodyWire(t, "gpt-4o", nil, answer, seed, schema) + with := extraBodyWire(t, "gpt-4o", nil, answer, + seed, schema, llms.WithExtraBody(map[string]any{"preserve_thinking": true})) + + for _, field := range []string{"seed", "response_format", "messages"} { + if string(with[field]) != string(without[field]) { + t.Errorf("%s changed under extra body:\nwant %s\ngot %s", field, without[field], with[field]) + } + } + if string(with["preserve_thinking"]) != "true" { + t.Errorf("the extra body field did not reach the wire: %s", with["preserve_thinking"]) + } +} + +func assertWireJSON(t *testing.T, fields map[string]json.RawMessage, want map[string]string) { + t.Helper() + + for field, wantJSON := range want { + var got, expected any + if err := json.Unmarshal(fields[field], &got); err != nil { + t.Errorf("%s is missing from the wire or is not JSON: %q", field, fields[field]) + continue + } + if err := json.Unmarshal([]byte(wantJSON), &expected); err != nil { + t.Fatalf("want for %s is not JSON: %v", field, err) + } + if !reflect.DeepEqual(got, expected) { + t.Errorf("%s on the wire:\nwant %s\ngot %s", field, wantJSON, fields[field]) + } + } +} + +func TestExtraBodyObjectsMergeIntoTheObjectsTheDoorBuilds(t *testing.T) { //nolint:funlen // table-driven test + t.Parallel() + + off := llms.WithReasoningDisabled() + extra := llms.WithExtraBody + clearThinking := extra(map[string]any{"thinking": map[string]any{"clear_thinking": false}}) + schema := llms.WithStructuredOutput(llms.StructuredOutputConfig{ + Name: "verdict", + Schema: json.RawMessage(`{"type":"object","properties":{"a":{"type":"string"}},` + + `"required":["a"],"additionalProperties":false}`), + }) + stream := llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil }) + + for name, tc := range map[string]struct { + model string + client []Option + answer string + opts []llms.CallOption + want map[string]string + }{ + "glm off on its own gateway keeps clear_thinking": { + model: "zai/glm-4.5-air", opts: []llms.CallOption{off, clearThinking}, + want: map[string]string{"thinking": `{"type":"disabled","clear_thinking":false}`}, + }, + "bare glm off keeps clear_thinking": { + model: "glm-4.5-air", opts: []llms.CallOption{off, clearThinking}, + want: map[string]string{"thinking": `{"type":"disabled","clear_thinking":false}`}, + }, + "glm-5.2 off on its own gateway keeps clear_thinking": { + model: "zai/glm-5.2", opts: []llms.CallOption{off, clearThinking}, + want: map[string]string{"thinking": `{"type":"disabled","clear_thinking":false}`}, + }, + "bare glm-5.2 off keeps clear_thinking": { + model: "glm-5.2", opts: []llms.CallOption{off, clearThinking}, + want: map[string]string{"thinking": `{"type":"disabled","clear_thinking":false}`}, + }, + "kimi off on its own gateway keeps keep": { + model: "moonshot/kimi-k2.6", + opts: []llms.CallOption{off, extra(map[string]any{"thinking": map[string]any{"keep": "all"}})}, + want: map[string]string{"thinking": `{"type":"disabled","keep":"all"}`}, + }, + "bare kimi off keeps keep given as a typed map": { + model: "kimi-k2.6", + opts: []llms.CallOption{off, extra(map[string]any{"thinking": map[string]string{"keep": "all"}})}, + want: map[string]string{"thinking": `{"type":"disabled","keep":"all"}`}, + }, + "glm effort keeps its own field and gains clear_thinking": { + model: "zai/glm-5.2", opts: []llms.CallOption{llms.WithReasoning(llms.ReasoningHigh, 0), clearThinking}, + want: map[string]string{"reasoning_effort": `"high"`, "thinking": `{"clear_thinking":false}`}, + }, + "claude budget keeps type and budget and gains display": { + model: "anthropic/claude-sonnet-4-5", + opts: []llms.CallOption{ + llms.WithReasoning(llms.ReasoningNone, 2048), llms.WithMaxTokens(8192), + extra(map[string]any{"thinking": map[string]any{"display": "summarized"}}), + }, + want: map[string]string{"thinking": `{"type":"enabled","budget_tokens":2048,"display":"summarized"}`}, + }, + "reasoning object keeps the effort and gains exclude": { + model: "gpt-5", client: []Option{WithModernReasoningFormat()}, + opts: []llms.CallOption{ + llms.WithReasoning(llms.ReasoningHigh, 0), + extra(map[string]any{"reasoning": map[string]any{"exclude": true}}), + }, + want: map[string]string{"reasoning": `{"effort":"high","exclude":true}`}, + }, + "stream options keep include_usage": { + model: "gpt-4o", + opts: []llms.CallOption{ + stream, extra(map[string]any{"stream_options": map[string]any{"include_obfuscation": false}}), + }, + want: map[string]string{"stream_options": `{"include_usage":true,"include_obfuscation":false}`}, + }, + "a nested leaf is replaced and its siblings stay": { + model: "gpt-4o", answer: `{"a":"b"}`, + opts: []llms.CallOption{ + schema, + extra(map[string]any{"response_format": map[string]any{"json_schema": map[string]any{"strict": false}}}), + }, + want: map[string]string{"response_format": `{"type":"json_schema","json_schema":{"name":"verdict",` + + `"strict":false,"schema":{"type":"object","properties":{"a":{"type":"string"}},` + + `"required":["a"],"additionalProperties":false}}}`}, + }, + "the caller's thinking type still wins over the door's": { + model: "zai/glm-4.5-air", + opts: []llms.CallOption{ + off, extra(map[string]any{"thinking": map[string]any{"type": "enabled", "clear_thinking": false}}), + }, + want: map[string]string{"thinking": `{"type":"enabled","clear_thinking":false}`}, + }, + } { + t.Run(name, func(t *testing.T) { + t.Parallel() + + answer := tc.answer + if answer == "" { + answer = "ok" + } + assertWireJSON(t, extraBodyWire(t, tc.model, tc.client, answer, tc.opts...), tc.want) + }) + } +} + +func TestExtraBodyValuesOtherThanObjectsReplaceTheDoors(t *testing.T) { + t.Parallel() + + off := llms.WithReasoningDisabled() + extra := llms.WithExtraBody + + for name, tc := range map[string]struct { + model string + opts []llms.CallOption + want map[string]string + }{ + "a scalar": { + model: "gpt-4o", + opts: []llms.CallOption{llms.WithTemperature(0.7), extra(map[string]any{"temperature": 0.9})}, + want: map[string]string{"temperature": `0.9`}, + }, + "the DashScope flag": { + model: "dashscope/glm-5.1", + opts: []llms.CallOption{off, extra(map[string]any{"enable_thinking": true})}, + want: map[string]string{"enable_thinking": `true`}, + }, + "an array": { + model: "gpt-4o", + opts: []llms.CallOption{llms.WithStopWords([]string{"a", "b"}), extra(map[string]any{"stop": []string{"c"}})}, + want: map[string]string{"stop": `["c"]`}, + }, + "null over an object": { + model: "zai/glm-4.5-air", + opts: []llms.CallOption{off, extra(map[string]any{"thinking": nil})}, + want: map[string]string{"thinking": `null`}, + }, + "a string over an object": { + model: "zai/glm-4.5-air", + opts: []llms.CallOption{off, extra(map[string]any{"thinking": "disabled"})}, + want: map[string]string{"thinking": `"disabled"`}, + }, + "new top-level keys beside the door's": { + model: "zai/glm-4.5-air", + opts: []llms.CallOption{off, extra(map[string]any{"preserve_thinking": true, "tool_choice": "auto"})}, + want: map[string]string{ + "thinking": `{"type":"disabled"}`, "preserve_thinking": `true`, "tool_choice": `"auto"`, + }, + }, + } { + t.Run(name, func(t *testing.T) { + t.Parallel() + + assertWireJSON(t, extraBodyWire(t, tc.model, nil, "ok", tc.opts...), tc.want) + }) + } +} + +func TestAMergedThinkingObjectReportsNoExtraBodyLoss(t *testing.T) { + t.Parallel() + + resp := sendForWarnings(t, "zai/glm-4.5-air", llms.WithReasoningDisabled(), + llms.WithExtraBody(map[string]any{"thinking": map[string]any{"clear_thinking": false}})) + for _, warning := range resp.Warnings { + if warning.Option == "WithExtraBody" { + t.Errorf("this door merges extra body, nothing is lost, got %v", warning) + } + } +} + +func TestExtraBodyObjectOfAnotherTypeReplacesTheDoors(t *testing.T) { //nolint:funlen // table-driven test + t.Parallel() + + budgetAnd := func(thinking map[string]any) []llms.CallOption { + return []llms.CallOption{ + llms.WithReasoning(llms.ReasoningNone, 2048), llms.WithMaxTokens(8192), + llms.WithExtraBody(map[string]any{"thinking": thinking}), + } + } + schema := llms.WithStructuredOutput(llms.StructuredOutputConfig{ + Name: "verdict", + Schema: json.RawMessage(`{"type":"object","properties":{"a":{"type":"string"}},` + + `"required":["a"],"additionalProperties":false}`), + }) + tools := llms.WithTools([]llms.Tool{{ + Type: "function", + Function: &llms.FunctionDefinition{Name: "lookup", Parameters: json.RawMessage(`{"type":"object"}`)}, + }}) + named := llms.WithToolChoice(llms.ToolChoice{Type: "function", Function: &llms.FunctionReference{Name: "lookup"}}) + allowedTools := map[string]any{ + "type": "allowed_tools", + "allowed_tools": map[string]any{ + "mode": "auto", + "tools": []any{map[string]any{"type": "function", "function": map[string]any{"name": "lookup"}}}, + }, + } + + for name, tc := range map[string]struct { + model string + answer string + opts []llms.CallOption + want map[string]string + }{ + "claude budget under disabled thinking": { + model: "anthropic/claude-sonnet-4-5", + opts: budgetAnd(map[string]any{"type": "disabled"}), + want: map[string]string{"thinking": `{"type":"disabled"}`}, + }, + "claude budget under adaptive thinking": { + model: "anthropic/claude-opus-4-6", + opts: budgetAnd(map[string]any{"type": "adaptive", "display": "summarized"}), + want: map[string]string{"thinking": `{"type":"adaptive","display":"summarized"}`}, + }, + "claude budget under the same type keeps the budget": { + model: "anthropic/claude-sonnet-4-5", + opts: budgetAnd(map[string]any{"type": "enabled", "display": "omitted"}), + want: map[string]string{"thinking": `{"type":"enabled","budget_tokens":2048,"display":"omitted"}`}, + }, + "structured output under a json object format": { + model: "gpt-4o", answer: `{"a":"b"}`, + opts: []llms.CallOption{ + schema, llms.WithExtraBody(map[string]any{"response_format": map[string]any{"type": "json_object"}}), + }, + want: map[string]string{"response_format": `{"type":"json_object"}`}, + }, + "a type the door's object does not carry merges into it": { + model: "gpt-4o", + opts: []llms.CallOption{llms.WithExtraBody(map[string]any{"type": "chat"})}, + want: map[string]string{"model": `"gpt-4o"`, "type": `"chat"`}, + }, + "a named tool choice under allowed tools": { + model: "gpt-4o", + opts: []llms.CallOption{tools, named, llms.WithExtraBody(map[string]any{"tool_choice": allowedTools})}, + want: map[string]string{"tool_choice": `{"type":"allowed_tools","allowed_tools":{"mode":"auto",` + + `"tools":[{"type":"function","function":{"name":"lookup"}}]}}`}, + }, + } { + t.Run(name, func(t *testing.T) { + t.Parallel() + + answer := tc.answer + if answer == "" { + answer = "ok" + } + assertWireJSON(t, extraBodyWire(t, tc.model, nil, answer, tc.opts...), tc.want) + }) + } +} diff --git a/llms/openai/gpt6_astra_test.go b/llms/openai/gpt6_astra_test.go new file mode 100644 index 000000000..526b748ca --- /dev/null +++ b/llms/openai/gpt6_astra_test.go @@ -0,0 +1,88 @@ +package openai + +import ( + "errors" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func astraTool() llms.Tool { + return llms.Tool{Type: "function", Function: &llms.FunctionDefinition{ + Name: "lookup", + Parameters: map[string]any{"type": "object", "properties": map[string]any{}}, + }} +} + +func TestAstraRefusesFunctionToolsBeforeTheNetwork(t *testing.T) { + t.Parallel() + + _, err := wireBodyOf(t, "gpt-6-astra", nil, llms.WithTools([]llms.Tool{astraTool()})) + require.Error(t, err) + + var unsupported *reasoning.ErrChatToolsUnsupported + require.True(t, errors.As(err, &unsupported), "want ErrChatToolsUnsupported, got %v", err) + assert.Equal(t, "gpt-6-astra", unsupported.Model) +} + +func TestAstraRefusesAnExplicitDisableBeforeTheNetwork(t *testing.T) { + t.Parallel() + + _, err := wireBodyOf(t, "gpt-6-astra", nil, llms.WithReasoningDisabled()) + require.Error(t, err) + + var off *reasoning.ErrReasoningOffUnsupported + require.True(t, errors.As(err, &off), "want ErrReasoningOffUnsupported, got %v", err) +} + +func TestAstraKeepsTheCallersSamplingOffTheWire(t *testing.T) { + t.Parallel() + + body, err := wireBodyOf(t, "gpt-6-astra", nil, + llms.WithTemperature(0.7), llms.WithTopP(0.4), llms.WithReasoning(llms.ReasoningHigh, 0)) + require.NoError(t, err) + + assert.NotContains(t, body, "temperature") + assert.NotContains(t, body, "top_p") + assert.Equal(t, "high", body["reasoning_effort"]) +} + +func TestAstraCarriesTheTopEffortTheVendorAccepts(t *testing.T) { + t.Parallel() + + body, err := wireBodyOf(t, "gpt-6-astra", nil, llms.WithReasoning(llms.ReasoningXHigh, 0)) + require.NoError(t, err) + assert.Equal(t, "xhigh", body["reasoning_effort"]) +} + +func TestAstraClampsMaxTheVendorRefuses(t *testing.T) { + t.Parallel() + + body, err := wireBodyOf(t, "gpt-6-astra", nil, llms.WithReasoning(llms.ReasoningMax, 0)) + require.NoError(t, err) + assert.Equal(t, "xhigh", body["reasoning_effort"], + "the vendor answers 400 to max with this model and names low, medium, high and xhigh") +} + +func TestAstraClampsAnEffortItsCardDoesNotList(t *testing.T) { + t.Parallel() + + body, err := wireBodyOf(t, "gpt-6-astra", nil, llms.WithReasoning(llms.ReasoningMinimal, 0)) + require.NoError(t, err) + + assert.Equal(t, "low", body["reasoning_effort"], + "the card lists low as the floor, so a lower ask travels as low") +} + +func TestAstraSendsTheOutputLimitAsMaxCompletionTokens(t *testing.T) { + t.Parallel() + + body, err := wireBodyOf(t, "gpt-6-astra", nil, llms.WithMaxTokens(256)) + require.NoError(t, err) + + assert.Contains(t, body, "max_completion_tokens") + assert.NotContains(t, body, "max_tokens") +} diff --git a/llms/openai/gpt6_sol_luna_test.go b/llms/openai/gpt6_sol_luna_test.go new file mode 100644 index 000000000..4943a7fdb --- /dev/null +++ b/llms/openai/gpt6_sol_luna_test.go @@ -0,0 +1,24 @@ +package openai + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/vxcontrol/langchaingo/llms" +) + +func TestSolAndLunaClampMaxTheVendorRefuses(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gpt-6-sol", "gpt-6-luna"} { + t.Run(model, func(t *testing.T) { + t.Parallel() + + body, err := wireBodyOf(t, model, nil, llms.WithReasoning(llms.ReasoningMax, 0)) + require.NoError(t, err) + assert.Equal(t, "xhigh", body["reasoning_effort"], + "the card lists max, but the vendor answers 400 to it with this model and names none, low, medium, high and xhigh") + }) + } +} diff --git a/llms/openai/internal/openaiclient/chat.go b/llms/openai/internal/openaiclient/chat.go index 168760851..f3099b1b8 100644 --- a/llms/openai/internal/openaiclient/chat.go +++ b/llms/openai/internal/openaiclient/chat.go @@ -8,7 +8,6 @@ import ( "errors" "fmt" "io" - "maps" "net/http" "strings" @@ -41,23 +40,33 @@ type ReasoningOptions struct { MaxTokens int `json:"max_tokens,omitempty"` } +type ThinkingOptions struct { + Type string `json:"type"` + BudgetTokens int `json:"budget_tokens,omitempty"` + Display string `json:"display,omitempty"` +} + // ChatRequest is a request to complete a chat completion.. type ChatRequest struct { - Model string `json:"model"` - Messages []*ChatMessage `json:"messages"` - Temperature *float64 `json:"temperature,omitempty"` - TopK *int `json:"top_k,omitempty"` - TopP *float64 `json:"top_p,omitempty"` - MinP *float64 `json:"min_p,omitempty"` - MaxTokens *int `json:"max_tokens,omitempty"` - MaxCompletionTokens *int `json:"max_completion_tokens,omitempty"` - N *int `json:"n,omitempty"` - StopWords []string `json:"stop,omitempty"` - Stream bool `json:"stream,omitempty"` - FrequencyPenalty *float64 `json:"frequency_penalty,omitempty"` - PresencePenalty *float64 `json:"presence_penalty,omitempty"` - RepetitionPenalty *float64 `json:"repetition_penalty,omitempty"` - Seed *int `json:"seed,omitempty"` + Model string `json:"model"` + Messages []*ChatMessage `json:"messages"` + Temperature *float64 `json:"temperature,omitempty"` + TopK *int `json:"top_k,omitempty"` + TopP *float64 `json:"top_p,omitempty"` + MinP *float64 `json:"min_p,omitempty"` + EnableThinking *bool `json:"enable_thinking,omitempty"` + ThinkingBudget *int `json:"thinking_budget,omitempty"` + Thinking *ThinkingOptions `json:"thinking,omitempty"` + MaxTokens *int `json:"max_tokens,omitempty"` + MaxCompletionTokens *int `json:"max_completion_tokens,omitempty"` + N *int `json:"n,omitempty"` + StopWords []string `json:"stop,omitempty"` + Stream bool `json:"stream,omitempty"` + FrequencyPenalty *float64 `json:"frequency_penalty,omitempty"` + PresencePenalty *float64 `json:"presence_penalty,omitempty"` + RepetitionPenalty *float64 `json:"repetition_penalty,omitempty"` + Verbosity *string `json:"verbosity,omitempty"` + Seed *int `json:"seed,omitempty"` // ReasoningEffort enables reasoning mode for models that support it. // Set this field when you want to use the legacy reasoning configuration. @@ -110,7 +119,6 @@ type ChatRequest struct { WebSearchOptions *WebSearchOptions `json:"web_search_options,omitempty"` // ExtraBody allows passing additional fields that will be merged into the request body. - // These fields take precedence over the standard fields. ExtraBody map[string]any `json:"-"` } @@ -316,12 +324,74 @@ type ChatMessage struct { //nolint:musttag // Refusal is set on a response message when the model declines to answer // (Structured Outputs). It must not be validated as final JSON. Refusal string `json:"refusal,omitempty"` + + // Thinking goes out as a thinking chunk at the head of a content list + // instead of reasoning_content. Requests only. + Thinking string + + // KeepsEmptyReasoning sends reasoning_content even when it is empty, for a + // vendor that refuses an assistant turn without the field. Requests only. + KeepsEmptyReasoning bool +} + +type contentChunk struct { + Type string `json:"type"` + Text string `json:"text,omitempty"` + Thinking []contentChunk `json:"thinking,omitempty"` +} + +func decodeContent(raw json.RawMessage) (text, thinking string, err error) { + if len(raw) == 0 { + return "", "", nil + } + if raw[0] != '[' { + err = json.Unmarshal(raw, &text) + return text, "", err + } + var chunks []contentChunk + if err := json.Unmarshal(raw, &chunks); err != nil { + return "", "", err + } + var answer, thought strings.Builder + for _, chunk := range chunks { + switch chunk.Type { + case "text": + answer.WriteString(chunk.Text) + case "thinking": + for _, inner := range chunk.Thinking { + thought.WriteString(inner.Text) + } + } + } + return answer.String(), thought.String(), nil +} + +func (m ChatMessage) contentAfterThinking() []any { + content := []any{contentChunk{Type: "thinking", Thinking: []contentChunk{{Type: "text", Text: m.Thinking}}}} + for _, part := range m.MultiContent { + var chunk any = part + if text, isText := part.(llms.TextContent); isText { + chunk = contentChunk{Type: "text", Text: text.Text} + } + content = append(content, chunk) + } + return content } func (m ChatMessage) MarshalJSON() ([]byte, error) { if m.Content != "" && m.MultiContent != nil { return nil, ErrContentExclusive } + if m.Thinking != "" { + return json.Marshal(struct { + Role string `json:"role"` + Content []any `json:"content"` + Name string `json:"name,omitempty"` + ToolCalls []ToolCall `json:"tool_calls,omitempty"` + FunctionCall *FunctionCall `json:"function_call,omitempty"` + ToolCallID string `json:"tool_call_id,omitempty"` + }{m.Role, m.contentAfterThinking(), m.Name, m.ToolCalls, m.FunctionCall, m.ToolCallID}) + } if text, ok := isSingleTextContent(m.MultiContent); ok { m.Content = text m.MultiContent = nil @@ -347,11 +417,15 @@ func (m ChatMessage) MarshalJSON() ([]byte, error) { // Refusal is response-only; never sent on a request. Refusal string `json:"-"` + + Thinking string `json:"-"` + + KeepsEmptyReasoning bool `json:"-"` }(m) if msg.ReasoningContent == "" && msg.Reasoning != "" { msg.ReasoningContent = msg.Reasoning } - return json.Marshal(msg) + return marshalRequestMessage(msg, msg.KeepsEmptyReasoning && msg.ReasoningContent == "") } msg := struct { Role string `json:"role"` @@ -372,11 +446,26 @@ func (m ChatMessage) MarshalJSON() ([]byte, error) { // Refusal is response-only; never sent on a request. Refusal string `json:"-"` + + Thinking string `json:"-"` + + KeepsEmptyReasoning bool `json:"-"` }(m) if msg.ReasoningContent == "" && msg.Reasoning != "" { msg.ReasoningContent = msg.Reasoning } - return json.Marshal(msg) + return marshalRequestMessage(msg, msg.KeepsEmptyReasoning && msg.ReasoningContent == "") +} + +// marshalRequestMessage marshals an outgoing message and, when emptyReasoning is +// set, ends it with the empty reasoning_content that omitempty drops. The object +// always holds role, so the added field follows a comma. +func marshalRequestMessage(msg any, emptyReasoning bool) ([]byte, error) { + out, err := json.Marshal(msg) + if err != nil || !emptyReasoning { + return out, err + } + return append(out[:len(out)-1], `,"reasoning_content":""}`...), nil } func isSingleTextContent(parts []llms.ContentPart) (string, bool) { @@ -388,9 +477,9 @@ func isSingleTextContent(parts []llms.ContentPart) (string, bool) { } func (m *ChatMessage) UnmarshalJSON(data []byte) error { - msg := struct { + type fields struct { Role string `json:"role"` - Content string `json:"content"` + Content string `json:"-"` MultiContent []llms.ContentPart `json:"-"` // not expected in response Name string `json:"name,omitempty"` ToolCalls []ToolCall `json:"tool_calls,omitempty"` @@ -407,15 +496,30 @@ func (m *ChatMessage) UnmarshalJSON(data []byte) error { // Refusal is populated when the model declines under Structured Outputs. Refusal string `json:"refusal,omitempty"` - }{} - err := json.Unmarshal(data, &msg) + + Thinking string `json:"-"` + + KeepsEmptyReasoning bool `json:"-"` + } + var msg struct { + fields + Content json.RawMessage `json:"content"` + } + if err := json.Unmarshal(data, &msg); err != nil { + return err + } + text, thinking, err := decodeContent(msg.Content) if err != nil { return err } - if msg.ReasoningContent == "" && msg.Reasoning != "" { - msg.ReasoningContent = msg.Reasoning + *m = ChatMessage(msg.fields) + m.Content = text + if m.ReasoningContent == "" { + m.ReasoningContent = m.Reasoning + } + if m.ReasoningContent == "" { + m.ReasoningContent = thinking } - *m = ChatMessage(msg) return nil } @@ -505,8 +609,9 @@ type Usage struct { CompletionTokens int `json:"completion_tokens"` TotalTokens int `json:"total_tokens"` PromptTokensDetails struct { - CachedTokens int `json:"cached_tokens"` - AudioTokens int `json:"audio_tokens"` + CachedTokens int `json:"cached_tokens"` + CacheWriteTokens int `json:"cache_write_tokens,omitempty"` + AudioTokens int `json:"audio_tokens"` } `json:"prompt_tokens_details"` CompletionTokensDetails struct { ReasoningTokens int `json:"reasoning_tokens"` @@ -514,6 +619,10 @@ type Usage struct { AcceptedPredictionTokens int `json:"accepted_prediction_tokens"` RejectedPredictionTokens int `json:"rejected_prediction_tokens"` } `json:"completion_tokens_details"` + CostDetails struct { + UpstreamInferencePromptCost *float64 `json:"upstream_inference_prompt_cost,omitempty"` + UpstreamInferenceCompletionsCost *float64 `json:"upstream_inference_completions_cost,omitempty"` + } `json:"cost_details,omitempty"` } // StreamedToolCall is a call to a tool. @@ -539,6 +648,27 @@ type StreamedChatResponseChunkDelta struct { Refusal string `json:"refusal,omitempty"` } +func (d *StreamedChatResponseChunkDelta) UnmarshalJSON(data []byte) error { + type fields StreamedChatResponseChunkDelta + var delta struct { + fields + Content json.RawMessage `json:"content"` + } + if err := json.Unmarshal(data, &delta); err != nil { + return err + } + text, thinking, err := decodeContent(delta.Content) + if err != nil { + return err + } + *d = StreamedChatResponseChunkDelta(delta.fields) + d.Content = text + if d.ReasoningContent == "" { + d.ReasoningContent = thinking + } + return nil +} + // StreamedChatResponseChunk is a chunk from the stream. type StreamedChatResponseChunk struct { Index int `json:"index"` @@ -627,19 +757,8 @@ func (c *Client) createChat(ctx context.Context, payload *ChatRequest) (*ChatCom return nil, err } - // If ExtraBody is provided, merge it with the standard payload - if len(payload.ExtraBody) > 0 { - var baseMap map[string]any - if err := json.Unmarshal(payloadBytes, &baseMap); err != nil { - return nil, err - } - - // Merge ExtraBody with priority (ExtraBody overwrites existing fields) - maps.Copy(baseMap, payload.ExtraBody) - - if payloadBytes, err = json.Marshal(baseMap); err != nil { - return nil, err - } + if payloadBytes, err = mergeExtraBody(payloadBytes, payload.ExtraBody); err != nil { + return nil, err } // Build request @@ -659,16 +778,7 @@ func (c *Client) createChat(ctx context.Context, payload *ChatRequest) (*ChatCom defer r.Body.Close() if r.StatusCode != http.StatusOK { - msg := fmt.Sprintf("API returned unexpected status code: %d", r.StatusCode) - - // No need to check the error here: if it fails, we'll just return the - // status code. - var errResp errorMessage - if err := json.NewDecoder(r.Body).Decode(&errResp); err != nil { - return nil, errors.New(msg) - } - - return nil, fmt.Errorf("%s: %s", msg, errResp.Error.Message) + return nil, statusError(r.StatusCode, r.Body) } if payload.Stream { return parseStreamingChatResponse(ctx, r, payload) @@ -677,6 +787,47 @@ func (c *Client) createChat(ctx context.Context, payload *ChatRequest) (*ChatCom return parseChatResponse(r.Body) } +func mergeExtraBody(payload []byte, extraBody map[string]any) ([]byte, error) { + if len(extraBody) == 0 { + return payload, nil + } + extra, err := json.Marshal(extraBody) + if err != nil { + return nil, err + } + return mergeJSON(payload, extra) +} + +func mergeJSON(base, extra json.RawMessage) (json.RawMessage, error) { + baseFields, baseIsObject := jsonObject(base) + extraFields, extraIsObject := jsonObject(extra) + if !baseIsObject || !extraIsObject || selectsAnotherVariant(baseFields, extraFields) { + return extra, nil + } + for key, value := range extraFields { + merged, err := mergeJSON(baseFields[key], value) + if err != nil { + return nil, err + } + baseFields[key] = merged + } + return json.Marshal(baseFields) +} + +func selectsAnotherVariant(base, extra map[string]json.RawMessage) bool { + baseType, baseTyped := base["type"] + extraType, extraTyped := extra["type"] + return baseTyped && extraTyped && !bytes.Equal(baseType, extraType) +} + +func jsonObject(value json.RawMessage) (map[string]json.RawMessage, bool) { + var fields map[string]json.RawMessage + if err := json.Unmarshal(value, &fields); err != nil || fields == nil { + return nil, false + } + return fields, true +} + func parseChatResponse(body io.Reader) (*ChatCompletionResponse, error) { var response ChatCompletionResponse if err := json.NewDecoder(body).Decode(&response); err != nil { @@ -696,6 +847,11 @@ func parseChatResponse(body io.Reader) (*ChatCompletionResponse, error) { return &response, nil } +const ( + initialStreamBuffer = 64 * 1024 + maxStreamLine = 8 * 1024 * 1024 +) + func parseStreamingChatResponse( ctx context.Context, r *http.Response, @@ -703,14 +859,18 @@ func parseStreamingChatResponse( ) (*ChatCompletionResponse, error) { // Parse response scanner := bufio.NewScanner(r.Body) + scanner.Buffer(make([]byte, 0, initialStreamBuffer), maxStreamLine) responseChan := make(chan StreamedChatResponsePayload) + producerCtx, stopProducer := context.WithCancel(ctx) + defer stopProducer() + go func() { defer close(responseChan) for scanner.Scan() { // Check if context is cancelled select { - case <-ctx.Done(): + case <-producerCtx.Done(): return default: } @@ -738,7 +898,7 @@ func parseStreamingChatResponse( if data == "[DONE]" { return } - if !isValidJSON(data) { + if !looksLikeJSONObject(data) { continue } @@ -752,14 +912,14 @@ func parseStreamingChatResponse( // Non-blocking send with context check select { - case <-ctx.Done(): + case <-producerCtx.Done(): return case responseChan <- streamPayload: } } if err := scanner.Err(); err != nil { select { - case <-ctx.Done(): + case <-producerCtx.Done(): return case responseChan <- StreamedChatResponsePayload{Error: fmt.Errorf("error reading streaming response: %w", err)}: } @@ -771,13 +931,11 @@ func parseStreamingChatResponse( return combineStreamingChatResponse(ctx, payload, responseChan) } -func isValidJSON(data string) bool { - var dummy any +// looksLikeJSONObject must not parse the chunk: whether it really parses is +// answered by the decode that follows. +func looksLikeJSONObject(data string) bool { data = strings.Trim(data, " \n\r\t") - if !strings.HasPrefix(data, "{") || !strings.HasSuffix(data, "}") { - return false - } - return json.Unmarshal([]byte(data), &dummy) == nil + return strings.HasPrefix(data, "{") && strings.HasSuffix(data, "}") } //nolint:gocognit,cyclop @@ -791,12 +949,17 @@ func combineStreamingChatResponse( var ( response ChatCompletionResponse splitters []reasoning.ChunkContentSplitter + accums []*streamedText toolCallNameCache = make(map[string]string) // Cache tool call names by ID for streaming ) + var streamErr error + +DoStream: for streamResponse := range responseChan { if streamResponse.Error != nil { - return nil, streamResponse.Error + streamErr = streamResponse.Error + break DoStream } updateChatUsage(&response.Usage, streamResponse.Usage) @@ -811,6 +974,7 @@ func combineStreamingChatResponse( if len(response.Choices) <= idx { response.Choices = append(response.Choices, &ChatCompletionChoice{}) splitters = append(splitters, reasoning.NewChunkContentSplitter()) + accums = append(accums, &streamedText{}) } } // Get current updatable values @@ -825,16 +989,19 @@ func combineStreamingChatResponse( } content, reasoningContent := getChunkContent(choice, splitter) - responseChoice.Message.Content += content - responseChoice.Message.ReasoningContent += reasoningContent - responseChoice.Message.Refusal += choice.Delta.Refusal + accum := accums[choice.Index] + accum.content.WriteString(content) + accum.reasoningContent.WriteString(reasoningContent) + accum.refusal.WriteString(choice.Delta.Refusal) reasoning := &reasoning.ContentReasoning{Content: reasoningContent} if err := streaming.CallWithReasoning(ctx, payload.StreamingFunc, reasoning); err != nil { - return nil, fmt.Errorf("streaming reasoning func returned an error: %w", err) + streamErr = fmt.Errorf("streaming reasoning func returned an error: %w", err) + break DoStream } if err := streaming.CallWithText(ctx, payload.StreamingFunc, content); err != nil { - return nil, fmt.Errorf("streaming text func returned an error: %w", err) + streamErr = fmt.Errorf("streaming text func returned an error: %w", err) + break DoStream } if choice.Delta.FunctionCall != nil { @@ -843,7 +1010,8 @@ func combineStreamingChatResponse( toolCall := streaming.NewToolCall("", functionCall.Name, functionCall.Arguments) if err := streaming.CallWithToolCall(ctx, payload.StreamingFunc, toolCall); err != nil { - return nil, fmt.Errorf("streaming tool call func returned an error: %w", err) + streamErr = fmt.Errorf("streaming tool call func returned an error: %w", err) + break DoStream } } @@ -852,15 +1020,33 @@ func combineStreamingChatResponse( toolCall := streaming.NewToolCall(toolCall.ID, toolCall.Function.Name, toolCall.Function.Arguments) if err := streaming.CallWithToolCall(ctx, payload.StreamingFunc, toolCall); err != nil { - return nil, fmt.Errorf("streaming tool call func returned an error: %w", err) + streamErr = fmt.Errorf("streaming tool call func returned an error: %w", err) + break DoStream } } } } + for idx, accum := range accums { + accum.flushInto(&response.Choices[idx].Message) + } + removeEmptyToolCalls(&response) - return &response, nil + return &response, streamErr +} + +// streamedText collects one choice's text across deltas. +type streamedText struct { + content strings.Builder + reasoningContent strings.Builder + refusal strings.Builder +} + +func (t *streamedText) flushInto(msg *ChatMessage) { + msg.Content = t.content.String() + msg.ReasoningContent = t.reasoningContent.String() + msg.Refusal = t.refusal.String() } func getChunkContent(choice StreamedChatResponseChunk, splitter reasoning.ChunkContentSplitter) (string, string) { @@ -891,10 +1077,13 @@ func updateChatUsage(chatUsage *ChatUsage, streamUsage *Usage) { chatUsage.TotalTokens = streamUsage.TotalTokens chatUsage.PromptTokensDetails.AudioTokens = streamUsage.PromptTokensDetails.AudioTokens chatUsage.PromptTokensDetails.CachedTokens = streamUsage.PromptTokensDetails.CachedTokens + chatUsage.PromptTokensDetails.CacheWriteTokens = streamUsage.PromptTokensDetails.CacheWriteTokens chatUsage.CompletionTokensDetails.AudioTokens = streamUsage.CompletionTokensDetails.AudioTokens chatUsage.CompletionTokensDetails.AcceptedPredictionTokens = streamUsage.CompletionTokensDetails.AcceptedPredictionTokens chatUsage.CompletionTokensDetails.RejectedPredictionTokens = streamUsage.CompletionTokensDetails.RejectedPredictionTokens chatUsage.CompletionTokensDetails.ReasoningTokens = streamUsage.CompletionTokensDetails.ReasoningTokens + chatUsage.CostDetails.UpstreamInferencePromptCost = streamUsage.CostDetails.UpstreamInferencePromptCost + chatUsage.CostDetails.UpstreamInferenceCompletionsCost = streamUsage.CostDetails.UpstreamInferenceCompletionsCost } func updateFunctionCall(message *ChatMessage, functionCall *FunctionCall) { diff --git a/llms/openai/internal/openaiclient/chat_sse_test.go b/llms/openai/internal/openaiclient/chat_sse_test.go index 1965128e5..566cb46d6 100644 --- a/llms/openai/internal/openaiclient/chat_sse_test.go +++ b/llms/openai/internal/openaiclient/chat_sse_test.go @@ -41,6 +41,16 @@ data: {"id":"1","object":"chat.completion.chunk","created":1234567890,"model":"t data: [DONE]`, expectedContent: "Test", }, + { + name: "a malformed chunk is skipped, not fatal", + body: `data: {"id":"1","object":"chat.completion.chunk","created":1234567890,"model":"test","choices":[{"index":0,"delta":{"content":"Half"},"finish_reason":null}]} +data: {"id":"1","choices":[{"index":0,"delta":{"content": +data: not json at all +data: {"id":"1","object":"chat.completion.chunk","created":1234567890,"model":"test","choices":[{"index":0,"delta":{"content":" answer"},"finish_reason":null}]} +data: {"id":"1","object":"chat.completion.chunk","created":1234567890,"model":"test","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]} +data: [DONE]`, + expectedContent: "Half answer", + }, { name: "other_sse_fields", body: `event: message diff --git a/llms/openai/internal/openaiclient/completions.go b/llms/openai/internal/openaiclient/completions.go index e4b006fe9..240a41f02 100644 --- a/llms/openai/internal/openaiclient/completions.go +++ b/llms/openai/internal/openaiclient/completions.go @@ -1,7 +1,12 @@ package openaiclient import ( + "bytes" "context" + "encoding/json" + "errors" + "fmt" + "io" "github.com/vxcontrol/langchaingo/llms" "github.com/vxcontrol/langchaingo/llms/streaming" @@ -55,6 +60,28 @@ type errorMessage struct { } `json:"error"` } +const maxErrorBodyBytes = 64 << 10 + +func statusError(statusCode int, body io.Reader) error { + msg := fmt.Sprintf("API returned unexpected status code: %d", statusCode) + + raw, err := io.ReadAll(io.LimitReader(body, maxErrorBodyBytes)) + if err != nil { + return errors.New(msg) //nolint:err113 // the provider gave no readable body + } + raw = bytes.TrimSpace(raw) + if len(raw) == 0 { + return errors.New(msg) //nolint:err113 // the provider gave no readable body + } + + var errResp errorMessage + if err := json.Unmarshal(raw, &errResp); err == nil && errResp.Error.Message != "" { + return fmt.Errorf("%s: %s", msg, errResp.Error.Message) //nolint:err113 // provider-supplied text + } + + return fmt.Errorf("%s: %s", msg, raw) //nolint:err113 // provider-supplied text +} + func (c *Client) setCompletionDefaults(payload *CompletionRequest) { // Set defaults if payload.MaxTokens == 0 { diff --git a/llms/openai/internal/openaiclient/embeddings.go b/llms/openai/internal/openaiclient/embeddings.go index 295efa823..f3e67c0aa 100644 --- a/llms/openai/internal/openaiclient/embeddings.go +++ b/llms/openai/internal/openaiclient/embeddings.go @@ -4,7 +4,6 @@ import ( "bytes" "context" "encoding/json" - "errors" "fmt" "net/http" ) @@ -57,16 +56,7 @@ func (c *Client) createEmbedding(ctx context.Context, payload *embeddingPayload) defer r.Body.Close() if r.StatusCode != http.StatusOK { - msg := fmt.Sprintf("API returned unexpected status code: %d", r.StatusCode) - - // No need to check the error here: if it fails, we'll just return the - // status code. - var errResp errorMessage - if err := json.NewDecoder(r.Body).Decode(&errResp); err != nil { - return nil, errors.New(msg) - } - - return nil, fmt.Errorf("%s: %s", msg, errResp.Error.Message) + return nil, statusError(r.StatusCode, r.Body) } var response embeddingResponsePayload diff --git a/llms/openai/internal/openaiclient/empty_reasoning_test.go b/llms/openai/internal/openaiclient/empty_reasoning_test.go new file mode 100644 index 000000000..e4d2f3bf5 --- /dev/null +++ b/llms/openai/internal/openaiclient/empty_reasoning_test.go @@ -0,0 +1,79 @@ +package openaiclient + +import ( + "encoding/json" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func TestAKeptEmptyReasoningGoesOutAsAnEmptyString(t *testing.T) { + t.Parallel() + + toolCall := []ToolCall{{ID: "c1", Type: ToolTypeFunction, Function: ToolFunction{Name: "f", Arguments: "{}"}}} + for name, tc := range map[string]struct { + msg ChatMessage + want string + }{ + "text": { + ChatMessage{Role: "assistant", Content: "hi", KeepsEmptyReasoning: true}, + `{"role":"assistant","content":"hi","reasoning_content":""}`, + }, + "tool call": { + ChatMessage{Role: "assistant", ToolCalls: toolCall, KeepsEmptyReasoning: true}, + `{"role":"assistant","content":"","tool_calls":[{"id":"c1","type":"function",` + + `"function":{"name":"f","arguments":"{}"}}],"reasoning_content":""}`, + }, + "content parts": { + ChatMessage{Role: "assistant", MultiContent: []llms.ContentPart{ + llms.TextContent{Text: "a"}, llms.TextContent{Text: "b"}, + }, ToolCalls: toolCall, KeepsEmptyReasoning: true}, + `{"role":"assistant","content":[{"text":"a","type":"text"},{"text":"b","type":"text"}],` + + `"tool_calls":[{"id":"c1","type":"function","function":{"name":"f","arguments":"{}"}}],` + + `"reasoning_content":""}`, + }, + } { + raw, err := json.Marshal(tc.msg) + require.NoError(t, err, name) + assert.Equal(t, tc.want, string(raw), name) + } +} + +func TestAKeptReasoningThatHasTextGoesOutOnce(t *testing.T) { + t.Parallel() + + for name, tc := range map[string]struct { + msg ChatMessage + want string + }{ + "reasoning_content": { + ChatMessage{Role: "assistant", Content: "hi", ReasoningContent: "thought", KeepsEmptyReasoning: true}, + `{"role":"assistant","content":"hi","reasoning_content":"thought"}`, + }, + "reasoning": { + ChatMessage{Role: "assistant", Content: "hi", Reasoning: "thought", KeepsEmptyReasoning: true}, + `{"role":"assistant","content":"hi","reasoning_content":"thought","reasoning":"thought"}`, + }, + } { + raw, err := json.Marshal(tc.msg) + require.NoError(t, err, name) + assert.Equal(t, tc.want, string(raw), name) + } +} + +func TestAnEmptyReasoningStaysOffTheWireUnlessKept(t *testing.T) { + t.Parallel() + + for name, msg := range map[string]ChatMessage{ + "text": {Role: "assistant", Content: "hi"}, + "content parts": {Role: "assistant", MultiContent: []llms.ContentPart{llms.TextContent{Text: "a"}, llms.TextContent{Text: "b"}}}, + "user": {Role: "user", Content: "hi"}, + } { + raw, err := json.Marshal(msg) + require.NoError(t, err, name) + assert.NotContains(t, string(raw), "reasoning_content", name) + } +} diff --git a/llms/openai/internal/openaiclient/marshal_test.go b/llms/openai/internal/openaiclient/marshal_test.go index d0ba3bb5e..f9516e149 100644 --- a/llms/openai/internal/openaiclient/marshal_test.go +++ b/llms/openai/internal/openaiclient/marshal_test.go @@ -2,7 +2,6 @@ package openaiclient import ( "encoding/json" - "maps" "testing" "github.com/stretchr/testify/assert" @@ -263,33 +262,14 @@ func TestChatRequest_ExtraBodyMarshal(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - // This test simulates the merging logic that will be in createChat - tt.request.ExtraBody = tt.extraBody - - // Step 1: Marshal without ExtraBody (standard fields) - tempExtraBody := tt.request.ExtraBody - tt.request.ExtraBody = nil - data, err := json.Marshal(tt.request) require.NoError(t, err) - - var result map[string]any - err = json.Unmarshal(data, &result) + data, err = mergeExtraBody(data, tt.extraBody) require.NoError(t, err) - // Step 2: Merge ExtraBody if present - if len(tempExtraBody) > 0 { - maps.Copy(result, tempExtraBody) - - // Re-marshal and unmarshal to ensure proper type conversion - // (This simulates what actually happens in the real code) - data, err = json.Marshal(result) - require.NoError(t, err) - err = json.Unmarshal(data, &result) - require.NoError(t, err) - } + var result map[string]any + require.NoError(t, json.Unmarshal(data, &result)) - // Verify the result if tt.checkFunc != nil { tt.checkFunc(t, result) } diff --git a/llms/openai/internal/openaiclient/openaiclient.go b/llms/openai/internal/openaiclient/openaiclient.go index d70023147..ce4d78333 100644 --- a/llms/openai/internal/openaiclient/openaiclient.go +++ b/llms/openai/internal/openaiclient/openaiclient.go @@ -6,6 +6,7 @@ import ( "fmt" "net" "net/http" + "net/url" "strings" ) @@ -174,7 +175,10 @@ func (c *Client) CreateChat(ctx context.Context, r *ChatRequest) (*ChatCompletio } resp, err := c.createChat(ctx, r) if err != nil { - return nil, err + if resp == nil || len(resp.Choices) == 0 { + return nil, err + } + return resp, err } if len(resp.Choices) == 0 { return nil, ErrEmptyResponse @@ -188,10 +192,12 @@ func IsAzure(apiType APIType) bool { func (c *Client) setHeaders(req *http.Request) { req.Header.Set("Content-Type", "application/json") - if c.apiType == APITypeOpenAI || c.apiType == APITypeAzureAD { - req.Header.Set("Authorization", "Bearer "+c.token) - } else { - req.Header.Set("api-key", c.token) + if c.token != "" { + if c.apiType == APITypeOpenAI || c.apiType == APITypeAzureAD { + req.Header.Set("Authorization", "Bearer "+c.token) + } else { + req.Header.Set("api-key", c.token) + } } if c.organization != "" { req.Header.Set("OpenAI-Organization", c.organization) @@ -226,6 +232,14 @@ func sanitizeHTTPError(err error) error { return nil } + // http.Client.Do wraps every failure in *url.Error, which implements + // net.Error. Unwrap it first so application errors (httprr misses, etc.) + // are not reported as a failed API connection. + var urlErr *url.Error + if errors.As(err, &urlErr) && urlErr.Err != nil { + err = urlErr.Err + } + // Check for context deadline exceeded if errors.Is(err, context.DeadlineExceeded) { return errors.New("request timeout: API call exceeded deadline") diff --git a/llms/openai/internal/openaiclient/openaiclient_test.go b/llms/openai/internal/openaiclient/openaiclient_test.go index b1eae1f69..de825dbf0 100644 --- a/llms/openai/internal/openaiclient/openaiclient_test.go +++ b/llms/openai/internal/openaiclient/openaiclient_test.go @@ -7,6 +7,7 @@ import ( "errors" "io" "net/http" + "net/url" "os" "testing" @@ -346,6 +347,79 @@ func TestSanitizeHTTPError(t *testing.T) { assert.Error(t, sanitized) assert.Equal(t, err, sanitized) }) + + t.Run("url error wrapping application error passthrough", func(t *testing.T) { + inner := errors.New("cached HTTP response not found") + err := &url.Error{Op: "Post", URL: "https://api.openai.com/v1/chat/completions", Err: inner} + sanitized := sanitizeHTTPError(err) + assert.Equal(t, inner, sanitized) + }) + + t.Run("url error wrapping network error is sanitized", func(t *testing.T) { + err := &url.Error{ + Op: "Post", + URL: "https://api.openai.com/v1/chat/completions", + Err: &mockNetworkError{message: "connection refused"}, + } + sanitized := sanitizeHTTPError(err) + assert.Equal(t, "network error: failed to reach API server", sanitized.Error()) + }) +} + +func TestSetHeadersOmitsEmptyToken(t *testing.T) { + t.Parallel() + + newRequest := func(t *testing.T) *http.Request { + t.Helper() + req, err := http.NewRequest(http.MethodPost, "http://127.0.0.1:8000/v1/chat/completions", http.NoBody) + require.NoError(t, err) + return req + } + + cases := []struct { + name string + apiType APIType + apiVersion string + tokenHeader string + tokenValue string + }{ + { + name: "a bearer door carries the token in Authorization", + apiType: APITypeOpenAI, + tokenHeader: "Authorization", + tokenValue: "Bearer secret", + }, + { + name: "an api-key door carries the token in api-key", + apiType: APITypeAzure, + apiVersion: "2023-05-15", + tokenHeader: "api-key", + tokenValue: "secret", + }, + } + + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + client, err := New("", "gpt-3.5-turbo", "http://127.0.0.1:8000/v1", "", + tc.apiType, tc.apiVersion, nil, "", nil, false, false, false) + require.NoError(t, err) + + req := newRequest(t) + client.setHeaders(req) + assert.Empty(t, req.Header.Values("Authorization")) + assert.Empty(t, req.Header.Values("api-key")) + assert.Equal(t, "application/json", req.Header.Get("Content-Type")) + + client.token = "secret" + req = newRequest(t) + client.setHeaders(req) + assert.Equal(t, tc.tokenValue, req.Header.Get(tc.tokenHeader)) + assert.Empty(t, req.Header.Values(otherTokenHeader(tc.tokenHeader)), + "the token must reach one door only") + }) + } } type mockHTTPClient struct { @@ -355,3 +429,10 @@ type mockHTTPClient struct { func (m *mockHTTPClient) Do(req *http.Request) (*http.Response, error) { return m.doFunc(req) } + +func otherTokenHeader(used string) string { + if used == "Authorization" { + return "api-key" + } + return "Authorization" +} diff --git a/llms/openai/internal/openaiclient/openaitts.go b/llms/openai/internal/openaiclient/openaitts.go index a349ff053..565f39b8d 100644 --- a/llms/openai/internal/openaiclient/openaitts.go +++ b/llms/openai/internal/openaiclient/openaitts.go @@ -4,7 +4,6 @@ import ( "bytes" "context" "encoding/json" - "errors" "fmt" "io" "net/http" @@ -117,16 +116,7 @@ func (c *Client) CreateTTS(ctx context.Context, payload *TTSRequest) ([]byte, er defer response.Body.Close() if response.StatusCode != http.StatusOK { - msg := fmt.Sprintf("API returned unexpected status code: %d", response.StatusCode) - - // No need to check the error here: if it fails, we'll just return the - // status code. - var errResp errorMessage - if err := json.NewDecoder(response.Body).Decode(&errResp); err != nil { - return nil, errors.New(msg) // nolint:err113 - } - - return nil, fmt.Errorf("%s: %s", msg, errResp.Error.Message) // nolint:err113 + return nil, statusError(response.StatusCode, response.Body) } responseData, err := io.ReadAll(response.Body) diff --git a/llms/openai/internal/openaiclient/statuserror_test.go b/llms/openai/internal/openaiclient/statuserror_test.go new file mode 100644 index 000000000..d5327b869 --- /dev/null +++ b/llms/openai/internal/openaiclient/statuserror_test.go @@ -0,0 +1,53 @@ +package openaiclient + +import ( + "strings" + "testing" +) + +func TestStatusErrorSurfacesProviderText(t *testing.T) { + cases := []struct { + name, body, want string + }{ + {"openai shape", `{"error":{"message":"bad request","type":"invalid"}}`, "bad request"}, + {"xai shape", `{"code":"invalid-argument","error":"Model grok-4.5 does not support parameter presencePenalty."}`, "presencePenalty"}, + {"plain text", "upstream exploded", "upstream exploded"}, + {"empty body", "", "400"}, + } + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + err := statusError(400, strings.NewReader(tc.body)) + if err == nil || !strings.Contains(err.Error(), tc.want) { + t.Fatalf("got %v, want it to contain %q", err, tc.want) + } + }) + } +} + +func TestStatusErrorCapsTheQuotedBody(t *testing.T) { + err := statusError(500, strings.NewReader(strings.Repeat("x", maxErrorBodyBytes*4))) + if len(err.Error()) > maxErrorBodyBytes+128 { + t.Fatalf("error grew to %d bytes, want it capped near %d", len(err.Error()), maxErrorBodyBytes) + } +} + +func TestStatusErrorParsesABodyLargerThanTwoKilobytes(t *testing.T) { + padding := strings.Repeat("d", 8<<10) + body := `{"error":{"message":"content filter triggered","type":"invalid_request_error","detail":"` + + padding + `"}}` + + err := statusError(400, strings.NewReader(body)) + if err == nil { + t.Fatal("want an error") + } + got := err.Error() + if !strings.Contains(got, "content filter triggered") { + t.Errorf("provider message lost: %s", got) + } + if strings.Contains(got, `{"error"`) { + t.Errorf("body was quoted raw instead of parsed: %.120s", got) + } + if strings.Contains(got, padding[:64]) { + t.Errorf("padding leaked into the error: %.120s", got) + } +} diff --git a/llms/openai/internal/openaiclient/testdata/TestClient_CreateChatCompletion.httprr b/llms/openai/internal/openaiclient/testdata/TestClient_CreateChatCompletion.httprr index 73192f374..ee936e90a 100644 --- a/llms/openai/internal/openaiclient/testdata/TestClient_CreateChatCompletion.httprr +++ b/llms/openai/internal/openaiclient/testdata/TestClient_CreateChatCompletion.httprr @@ -1,5 +1,5 @@ httprr trace v1 -330 1632 +330 1616 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Tue, 10 Mar 2026 15:25:58 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 967 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/internal/openaiclient/testdata/TestClient_CreateChatCompletionStream.httprr b/llms/openai/internal/openaiclient/testdata/TestClient_CreateChatCompletionStream.httprr index 549e01844..48280d8dd 100644 --- a/llms/openai/internal/openaiclient/testdata/TestClient_CreateChatCompletionStream.httprr +++ b/llms/openai/internal/openaiclient/testdata/TestClient_CreateChatCompletionStream.httprr @@ -1,5 +1,5 @@ httprr trace v1 -382 6250 +382 6234 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: text/event-stream; charset=utf-8 Date: Tue, 10 Mar 2026 15:26:02 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 279 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/internal/openaiclient/testdata/TestClient_CreateEmbedding.httprr b/llms/openai/internal/openaiclient/testdata/TestClient_CreateEmbedding.httprr index d16026c99..65c5219d2 100644 --- a/llms/openai/internal/openaiclient/testdata/TestClient_CreateEmbedding.httprr +++ b/llms/openai/internal/openaiclient/testdata/TestClient_CreateEmbedding.httprr @@ -1,5 +1,5 @@ httprr trace v1 -253 34351 +253 34335 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Tue, 10 Mar 2026 15:26:06 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 78 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/internal/openaiclient/testdata/TestClient_CreateEmbeddingWithDimensions.httprr b/llms/openai/internal/openaiclient/testdata/TestClient_CreateEmbeddingWithDimensions.httprr index 3aa675a08..203e91d87 100644 --- a/llms/openai/internal/openaiclient/testdata/TestClient_CreateEmbeddingWithDimensions.httprr +++ b/llms/openai/internal/openaiclient/testdata/TestClient_CreateEmbeddingWithDimensions.httprr @@ -1,5 +1,5 @@ httprr trace v1 -270 6491 +270 6475 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Tue, 10 Mar 2026 15:26:14 GMT Openai-Model: text-embedding-3-small Openai-Organization: lcgo-tst Openai-Processing-Ms: 100 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/internal/openaiclient/testdata/TestClient_FunctionCall.httprr b/llms/openai/internal/openaiclient/testdata/TestClient_FunctionCall.httprr index 8188860df..f1db7a111 100644 --- a/llms/openai/internal/openaiclient/testdata/TestClient_FunctionCall.httprr +++ b/llms/openai/internal/openaiclient/testdata/TestClient_FunctionCall.httprr @@ -1,5 +1,5 @@ httprr trace v1 -578 1685 +578 1669 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Tue, 10 Mar 2026 15:26:19 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 327 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/internal/openaiclient/testdata/TestClient_WithResponseFormat.httprr b/llms/openai/internal/openaiclient/testdata/TestClient_WithResponseFormat.httprr index 214882109..5028c45c1 100644 --- a/llms/openai/internal/openaiclient/testdata/TestClient_WithResponseFormat.httprr +++ b/llms/openai/internal/openaiclient/testdata/TestClient_WithResponseFormat.httprr @@ -1,5 +1,5 @@ httprr trace v1 -412 1602 +412 1586 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Tue, 10 Mar 2026 15:26:24 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 580 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/internal/openaiclient/thinking_chunk_test.go b/llms/openai/internal/openaiclient/thinking_chunk_test.go new file mode 100644 index 000000000..a9abe39f1 --- /dev/null +++ b/llms/openai/internal/openaiclient/thinking_chunk_test.go @@ -0,0 +1,26 @@ +package openaiclient + +import ( + "encoding/json" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func TestAPartThatIsNotTextKeepsItsPlaceAfterTheThinkingChunk(t *testing.T) { + t.Parallel() + + raw, err := json.Marshal(ChatMessage{Role: "assistant", Thinking: "seen", MultiContent: []llms.ContentPart{ + llms.TextContent{Text: "look"}, + llms.ImageURLContent{URL: "https://example.com/a.png"}, + }}) + require.NoError(t, err) + + assert.JSONEq(t, `{"role":"assistant","content":[`+ + `{"type":"thinking","thinking":[{"type":"text","text":"seen"}]},`+ + `{"type":"text","text":"look"},`+ + `{"type":"image_url","image_url":{"url":"https://example.com/a.png"}}]}`, string(raw)) +} diff --git a/llms/openai/llm.go b/llms/openai/llm.go index d8802df59..87bf78d5d 100644 --- a/llms/openai/llm.go +++ b/llms/openai/llm.go @@ -42,7 +42,7 @@ func newClient(opts ...Option) (*options, *openaiclient.Client, error) { } } - if len(options.token) == 0 { + if len(options.token) == 0 && RequiresAPIKey(options.baseURL, options.apiType) { return options, nil, ErrMissingToken } diff --git a/llms/openai/long_stream_line_test.go b/llms/openai/long_stream_line_test.go new file mode 100644 index 000000000..3b86cc4a2 --- /dev/null +++ b/llms/openai/long_stream_line_test.go @@ -0,0 +1,44 @@ +package openai + +import ( + "context" + "fmt" + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func TestAStreamedLineLongerThanTheDefaultBufferSurvives(t *testing.T) { + t.Parallel() + + long := strings.Repeat("a", 200*1024) + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "text/event-stream") + _, _ = fmt.Fprintf(w, "data: {\"id\":\"x\",\"object\":\"chat.completion.chunk\",\"created\":1,"+ + "\"model\":\"gpt-4o\",\"choices\":[{\"index\":0,\"delta\":{\"content\":%q},\"finish_reason\":null}]}\n\n", long) + _, _ = io.WriteString(w, "data: {\"id\":\"x\",\"object\":\"chat.completion.chunk\",\"created\":1,"+ + "\"model\":\"gpt-4o\",\"choices\":[{\"index\":0,\"delta\":{},\"finish_reason\":\"stop\"}]}\n\n") + _, _ = io.WriteString(w, "data: [DONE]\n\n") + })) + t.Cleanup(srv.Close) + + llm := newUnitLLM(t, WithBaseURL(srv.URL), WithModel("gpt-4o")) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + + require.NoError(t, err, "a long line must not end the stream") + require.Len(t, resp.Choices, 1) + assert.Len(t, resp.Choices[0].Content, len(long)) +} diff --git a/llms/openai/mistral_effort_test.go b/llms/openai/mistral_effort_test.go new file mode 100644 index 000000000..35485b7b2 --- /dev/null +++ b/llms/openai/mistral_effort_test.go @@ -0,0 +1,58 @@ +package openai + +import ( + "strings" + "testing" + + "github.com/vxcontrol/langchaingo/llms" +) + +func TestMistralReasoningModelsTakeOnlyTheHighEffort(t *testing.T) { + t.Parallel() + + for _, model := range []string{"mistral-small-latest", "mistral-medium-latest", "mistral-medium-3-5"} { + for _, effort := range []llms.ReasoningEffort{llms.ReasoningLow, llms.ReasoningMedium, llms.ReasoningXHigh} { + if body := sendForWire(t, model, llms.WithReasoning(effort, 0)); !strings.Contains(body, `"reasoning_effort":"high"`) { + t.Errorf("%s at %s: Mistral documents only high, got body: %s", model, effort, body) + } + + resp := sendForWarnings(t, model, llms.WithReasoning(effort, 0)) + if got := warningFor(t, resp, "WithReasoning"); got.Kind != llms.WarningClamp || got.Sent != "high" { + t.Errorf("%s at %s: warning = %+v", model, effort, got) + } + } + if body := sendForWire(t, model, llms.WithReasoning(llms.ReasoningHigh, 0)); !strings.Contains(body, `"reasoning_effort":"high"`) { + t.Errorf("%s: high must reach the wire, got body: %s", model, body) + } + } +} + +func TestMistralModelsThatDoNotReasonGetNoEffort(t *testing.T) { + t.Parallel() + + for _, model := range []string{"mistral-large-latest", "ministral-8b-latest", "codestral-latest", "devstral-medium-latest"} { + for _, opt := range []llms.CallOption{llms.WithReasoning(llms.ReasoningHigh, 0), llms.WithReasoning("", 4096)} { + if body := sendForWire(t, model, opt); strings.Contains(body, `"reasoning_effort"`) { + t.Errorf("%s: Mistral names no effort for this model, got body: %s", model, body) + } + + resp := sendForWarnings(t, model, opt) + if got := warningFor(t, resp, "WithReasoning"); got.Kind != llms.WarningDrop { + t.Errorf("%s: warning = %+v", model, got) + } + } + } +} + +func TestClaudeBehindTheOpenAIDoorKeepsItsTopEfforts(t *testing.T) { + t.Parallel() + + for _, model := range []string{"claude-sonnet-5", "anthropic/claude-opus-4-7"} { + for _, effort := range []llms.ReasoningEffort{llms.ReasoningXHigh, llms.ReasoningMax} { + body := sendForWire(t, model, llms.WithReasoning(effort, 0)) + if !strings.Contains(body, `"reasoning_effort":"`+string(effort)+`"`) { + t.Errorf("%s at %s: Anthropic serves this level off Bedrock, got body: %s", model, effort, body) + } + } + } +} diff --git a/llms/openai/mistral_thinking_test.go b/llms/openai/mistral_thinking_test.go new file mode 100644 index 000000000..9b2f1e0b3 --- /dev/null +++ b/llms/openai/mistral_thinking_test.go @@ -0,0 +1,188 @@ +package openai + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func mistralAnswering(t *testing.T, message string) *LLM { + t.Helper() + + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"1","object":"chat.completion","created":1,"model":"mistral-small-latest",`+ + `"choices":[{"index":0,"message":`+message+`,"finish_reason":"stop"}],`+ + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`) + })) + t.Cleanup(server.Close) + + llm, err := New(WithBaseURL(server.URL), WithToken("token"), WithModel("mistral-small-latest")) + require.NoError(t, err) + return llm +} + +func TestAMistralAnswerWithThinkingGivesTheTextAndTheReasoning(t *testing.T) { + t.Parallel() + + llm := mistralAnswering(t, `{"role":"assistant","content":[`+ + `{"type":"thinking","thinking":[{"type":"text","text":"17 times 23"},{"type":"text","text":" is 391."}],"closed":true},`+ + `{"type":"text","text":"391"}]}`) + + resp, err := llm.GenerateContent(context.Background(), []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "What is 17*23?"), + }, llms.WithReasoning(llms.ReasoningHigh, 0)) + require.NoError(t, err) + + choice := resp.Choices[0] + assert.Equal(t, "391", choice.Content) + require.NotNil(t, choice.Reasoning) + assert.Equal(t, "17 times 23 is 391.", choice.Reasoning.Content) +} + +func TestAMistralToolCallWithThinkingKeepsTheCallAndTheReasoning(t *testing.T) { + t.Parallel() + + llm := mistralAnswering(t, `{"role":"assistant","content":[`+ + `{"type":"thinking","thinking":[{"type":"text","text":"The tool knows."}],"closed":true}],`+ + `"tool_calls":[{"id":"c1","type":"function","function":{"name":"lookup","arguments":"{\"city\": \"Paris\"}"},"index":0}]}`) + + resp, err := llm.GenerateContent(context.Background(), []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "Population of Paris?"), + }, llms.WithReasoning(llms.ReasoningHigh, 0)) + require.NoError(t, err) + + choice := resp.Choices[0] + assert.Empty(t, choice.Content) + require.Len(t, choice.ToolCalls, 1) + assert.Equal(t, "lookup", choice.ToolCalls[0].FunctionCall.Name) + require.NotNil(t, choice.Reasoning) + assert.Equal(t, "The tool knows.", choice.Reasoning.Content) +} + +func TestTheMistralStreamHandsOverTheEndOfThinkingAndTheStartOfTheAnswer(t *testing.T) { + t.Parallel() + + deltas := []string{ + `{"role":"assistant","content":""}`, + `{"content":[{"type":"thinking","thinking":[{"type":"text","text":"17 times"}]}]}`, + `{"content":[{"type":"thinking","thinking":[{"type":"text","text":" 23"}],"closed":true}]}`, + `{"content":[{"type":"thinking","thinking":[{"type":"text","text":"."}],"closed":true},{"type":"text","text":"3"}]}`, + `{"content":"91"}`, + } + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "text/event-stream") + for i, delta := range deltas { + finish := "null" + if i == len(deltas)-1 { + finish = `"stop"` + } + _, _ = io.WriteString(w, `data: {"id":"1","object":"chat.completion.chunk","created":1,"model":"mistral-small-latest",`+ + `"choices":[{"index":0,"delta":`+delta+`,"finish_reason":`+finish+`}]}`+"\n\n") + } + _, _ = io.WriteString(w, "data: [DONE]\n\n") + })) + defer server.Close() + + llm, err := New(WithBaseURL(server.URL), WithToken("token"), WithModel("mistral-small-latest")) + require.NoError(t, err) + + var streamedText, streamedThought strings.Builder + resp, err := llm.GenerateContent(context.Background(), []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "What is 17*23?"), + }, llms.WithReasoning(llms.ReasoningHigh, 0), llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + switch chunk.Type { + case streaming.ChunkTypeText: + streamedText.WriteString(chunk.Content) + case streaming.ChunkTypeReasoning: + streamedThought.WriteString(chunk.Reasoning.Content) + default: + } + return nil + })) + require.NoError(t, err) + + assert.Equal(t, "391", streamedText.String()) + assert.Equal(t, "17 times 23.", streamedThought.String()) + assert.Equal(t, "391", resp.Choices[0].Content) + require.NotNil(t, resp.Choices[0].Reasoning) + assert.Equal(t, "17 times 23.", resp.Choices[0].Reasoning.Content) +} + +func TestTextChunksAroundAReferenceMakeOneAnswer(t *testing.T) { + t.Parallel() + + chunks := `[{"type":"text","text":"Paris has "},{"type":"reference","reference_ids":[0]},{"type":"text","text":"2.1M people."}]` + + resp, err := mistralAnswering(t, `{"role":"assistant","content":`+chunks+`}`).GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "Population of Paris?")}) + require.NoError(t, err) + assert.Equal(t, "Paris has 2.1M people.", resp.Choices[0].Content) + + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "text/event-stream") + _, _ = io.WriteString(w, `data: {"id":"1","object":"chat.completion.chunk","created":1,"model":"mistral-small-latest",`+ + `"choices":[{"index":0,"delta":{"content":`+chunks+`},"finish_reason":"stop"}]}`+"\n\ndata: [DONE]\n\n") + })) + defer server.Close() + + llm, err := New(WithBaseURL(server.URL), WithToken("token"), WithModel("mistral-small-latest")) + require.NoError(t, err) + var streamed strings.Builder + resp, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "Population of Paris?")}, + llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + streamed.WriteString(chunk.Content) + return nil + })) + require.NoError(t, err) + assert.Equal(t, "Paris has 2.1M people.", streamed.String()) + assert.Equal(t, "Paris has 2.1M people.", resp.Choices[0].Content) +} + +func TestAReasoningMistralModelGetsItsThinkingBackAsAChunkOfContent(t *testing.T) { + t.Parallel() + + thinking := func(text string) map[string]any { + return map[string]any{"type": "thinking", "thinking": []any{map[string]any{"type": "text", "text": text}}} + } + for _, model := range []string{ + "mistral-medium-latest", "mistral-small-latest", "magistral-medium-latest", "zai-glm-5-2", "mistral/mistral-small-latest", + } { + turns := assistantTurnsSent(t, model) + require.Len(t, turns, 2, model) + + assert.Equal(t, []any{thinking("text turn thought"), map[string]any{"type": "text", "text": "answered in text"}}, + turns[0]["content"], model) + assert.Equal(t, []any{thinking("tool turn thought")}, turns[1]["content"], model) + assert.NotEmpty(t, turns[1]["tool_calls"], model) + for _, turn := range turns { + assert.NotContains(t, turn, "reasoning_content", model) + } + } +} + +func TestAMistralModelThatDoesNotReasonGetsNoThinkingBack(t *testing.T) { + t.Parallel() + + for _, model := range []string{"codestral-latest", "mistral-large-latest", "ministral-8b-latest", "mistral/ministral-8b-latest"} { + turns := assistantTurnsSent(t, model) + require.Len(t, turns, 2, model) + + assert.Equal(t, "answered in text", turns[0]["content"], model) + assert.Empty(t, turns[1]["content"], model) + assert.NotEmpty(t, turns[1]["tool_calls"], model) + for _, turn := range turns { + assert.NotContains(t, turn, "reasoning_content", model) + } + } +} diff --git a/llms/openai/nil_reasoning_test.go b/llms/openai/nil_reasoning_test.go new file mode 100644 index 000000000..d217e9b3b --- /dev/null +++ b/llms/openai/nil_reasoning_test.go @@ -0,0 +1,24 @@ +package openai + +import ( + "context" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func TestABudgetClientSurvivesACallWithoutReasoning(t *testing.T) { + t.Parallel() + + llm, err := New(WithToken("t"), WithModel("gpt-4o-mini"), + WithBaseURL("http://127.0.0.1:1"), WithUsingReasoningMaxTokens()) + require.NoError(t, err) + + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + + require.Error(t, err, "the unreachable endpoint must surface as an error, not a panic") + require.NotContains(t, err.Error(), "nil pointer") +} diff --git a/llms/openai/openaillm.go b/llms/openai/openaillm.go index 42f5bf0bd..6b5983e99 100644 --- a/llms/openai/openaillm.go +++ b/llms/openai/openaillm.go @@ -2,7 +2,11 @@ package openai import ( "context" + "errors" "fmt" + "slices" + "strconv" + "strings" "github.com/vxcontrol/langchaingo/callbacks" "github.com/vxcontrol/langchaingo/llms" @@ -15,6 +19,9 @@ type ChatMessage = openaiclient.ChatMessage type LLM struct { CallbacksHandler callbacks.Handler client *openaiclient.Client + host string + + structuredOutputFallback bool } const ( @@ -34,8 +41,10 @@ func New(opts ...Option) (*LLM, error) { return nil, err } return &LLM{ - client: c, - CallbacksHandler: opt.callbackHandler, + client: c, + CallbacksHandler: opt.callbackHandler, + host: hostnameFromURL(opt.baseURL), + structuredOutputFallback: opt.structuredOutputFallback, }, err } @@ -96,25 +105,59 @@ func (o *LLM) GenerateContent(ctx context.Context, messages []llms.MessageConten opt(&opts) } - chatMsgs, err := o.convertMessages(messages) + if err := opts.ValidateReasoning(); err != nil { + return nil, err + } + + sendsBudget := (o.client.UseReasoningMaxTokens && opts.Reasoning.HasExplicitTokens()) || + o.sendsClaudeBudget(o.effectiveModel(opts), opts) + if err := llms.CheckClaudeTurnLimitsOnWire(o.effectiveModel(opts), opts, messages, sendsBudget); err != nil { + return nil, err + } + + chatMsgs, err := o.convertMessages(messages, o.effectiveModel(opts)) if err != nil { return nil, err } - req, err := o.createChatRequest(chatMsgs, opts) + warn := &llms.Warnings{} + reportOpenAIUnread(warn, o.effectiveModel(opts), opts) + req, err := o.createChatRequest(chatMsgs, opts, warn) if err != nil { return nil, err } result, err := o.client.CreateChat(ctx, req) if err != nil { - return nil, err + if result == nil || len(result.Choices) == 0 { + return nil, err + } + return o.partialWithTruncation(result, warn, opts, err) } if len(result.Choices) == 0 { return nil, ErrEmptyResponse } + if o.emulatesStructuredOutput(o.effectiveModel(opts), opts) { + unwrapEmulatedAnswers(result) + } + + response := o.processResponse(result, warn) + + if refusal, choice := refusalFrom(result); refusal != nil { + if opts.StructuredOutput != nil { + return response, &ErrStructuredOutputRefusal{ + Model: o.effectiveModel(opts), + Choice: choice, + Refusal: refusal.Message, + cause: refusal, + } + } + return response, refusal + } - response := o.processResponse(result) + if err := llms.CheckTruncation(response, opts); err != nil { + return response, err + } // When structured output was requested, validate each normal-final choice // against the original schema. The response is still returned alongside the @@ -127,7 +170,7 @@ func (o *LLM) GenerateContent(ctx context.Context, messages []llms.MessageConten } // convertMessages converts LangChain messages to OpenAI chat messages. -func (o *LLM) convertMessages(messages []llms.MessageContent) ([]*ChatMessage, error) { +func (o *LLM) convertMessages(messages []llms.MessageContent, model string) ([]*ChatMessage, error) { chatMsgs := make([]*ChatMessage, 0, len(messages)) for _, mc := range messages { msg := &ChatMessage{MultiContent: mc.Parts} @@ -140,9 +183,18 @@ func (o *LLM) convertMessages(messages []llms.MessageContent) ([]*ChatMessage, e msg.MultiContent = newParts msg.ToolCalls = toolCallsFromToolCalls(toolCalls) - // Preserve reasoning content for multi-turn conversations with tool calls - if o.client != nil && o.client.PreserveReasoningContent && msg.Role == RoleAssistant && len(toolCalls) > 0 { - msg.ReasoningContent = extractReasoningContent(mc.Parts) + if o.client != nil && o.client.PreserveReasoningContent && msg.Role == RoleAssistant { + switch { + case reasoning.ServedByMistral(model): + if reasoning.ReplaysThinkingInContent(model) { + msg.Thinking = extractReasoningContent(mc.Parts) + } + case reasoning.ReplaysReasoningInThinkTags(model): + msg.MultiContent = withThinkTags(msg.MultiContent, extractReasoningContent(mc.Parts)) + case len(toolCalls) > 0 || reasoning.ReplaysReasoningOnEveryTurn(model): + msg.ReasoningContent = extractReasoningContent(mc.Parts) + msg.KeepsEmptyReasoning = reasoning.ReplaysEmptyReasoning(model) + } } if len(msg.MultiContent) != 0 || len(msg.ToolCalls) != 0 { @@ -226,7 +278,9 @@ func (o *LLM) handleToolMessage(mc llms.MessageContent) error { } // createChatRequest creates an OpenAI chat request with the given parameters. -func (o *LLM) createChatRequest(chatMsgs []*ChatMessage, opts llms.CallOptions) (*openaiclient.ChatRequest, error) { +func (o *LLM) createChatRequest( + chatMsgs []*ChatMessage, opts llms.CallOptions, warn *llms.Warnings, +) (*openaiclient.ChatRequest, error) { req := &openaiclient.ChatRequest{ Model: opts.GetModel(), StopWords: opts.StopWords, @@ -240,7 +294,10 @@ func (o *LLM) createChatRequest(chatMsgs []*ChatMessage, opts llms.CallOptions) FrequencyPenalty: opts.FrequencyPenalty, PresencePenalty: opts.PresencePenalty, RepetitionPenalty: opts.RepetitionPenalty, - ToolChoice: opts.ToolChoice, + Verbosity: opts.Verbosity, + LogProbs: opts.LogProbs != nil && *opts.LogProbs, + TopLogProbs: derefInt(opts.TopLogProbs), + ToolChoice: openaiToolChoice(opts.ToolChoice), FunctionCallBehavior: openaiclient.FunctionCallBehavior(opts.FunctionCallBehavior), Seed: opts.Seed, Metadata: opts.Metadata, @@ -248,47 +305,79 @@ func (o *LLM) createChatRequest(chatMsgs []*ChatMessage, opts llms.CallOptions) ExtraBody: getExtraBody(&opts), } - if isLegacyMaxTokensField(&opts) { - req.MaxTokens = opts.MaxTokens - } else { - req.MaxCompletionTokens = opts.MaxTokens + model := o.effectiveModel(opts) + dropFieldsTheModelTakesNot(req, model, o.host, warn) + + if model := o.effectiveModel(opts); reasoning.QwenThinkingRequiresStream(model) { + if opts.StreamingFunc == nil { + if opts.Reasoning.ResolveMode() == llms.ReasoningOn { + return nil, &reasoning.ErrThinkingRequiresStream{Model: model} + } + thinkingOff := false + req.EnableThinking = &thinkingOff + } } - if opts.GetJSONMode() { - req.SetResponseFormat(ResponseFormatJSON) + if model := o.effectiveModel(opts); (reasoning.QwenThinkingEnabledByFlag(model) || + reasoning.DashScopeGuestThinkingEnabledByFlag(reasoning.DashScopeRoute(model, o.host))) && + opts.Reasoning.ResolveMode() == llms.ReasoningOn { + thinkingOn := true + req.EnableThinking = &thinkingOn } - // set temperature to 1.0 for reasoning models, unless reasoning is explicitly - // disabled (the model then runs as a plain completion honoring the caller's temp) - if reasoning.IsReasoningModel(opts.GetModel()) && !opts.Reasoning.IsDisabled() { - temperature := 1.0 - req.Temperature = &temperature + if isLegacyMaxTokensField(&opts) || reasoning.UsesLegacyMaxTokens(o.effectiveModel(opts)) { + req.MaxTokens = opts.MaxTokens + } else { + req.MaxCompletionTokens = opts.MaxTokens } + setJSONMode(req, model, opts, warn) + // add tools from functions and tool definitions if err := o.addToolsToRequest(req, opts); err != nil { return nil, err } - // set response format from client if available - if o.client.ResponseFormat != nil { - req.SetResponseFormat(o.client.ResponseFormat) - } + setClientResponseFormat(req, model, o.client.ResponseFormat, warn) // per-call schema-constrained structured output takes precedence over JSONMode // and conflicts with a client-level response format. - if err := o.setStructuredOutput(req, opts); err != nil { + if err := o.setStructuredOutput(req, opts, warn); err != nil { return nil, err } - // set reasoning options, depends on the client and request options - if err := o.setReasoning(req, opts); err != nil { + wireEffort, err := o.setReasoning(req, opts, warn) + if err != nil { return nil, err } + o.applySamplingPolicy(req, opts, wireEffort, warn) return req, nil } +func dropFieldsTheModelTakesNot(req *openaiclient.ChatRequest, model, host string, warn *llms.Warnings) { + if reasoning.RejectsPenalties(model) { + const refused = "the door does not send the penalties on this model family" + addNonZeroChange(warn, "WithFrequencyPenalty", model, refused, req.FrequencyPenalty, nil) + addNonZeroChange(warn, "WithPresencePenalty", model, refused, req.PresencePenalty, nil) + req.FrequencyPenalty = nil + req.PresencePenalty = nil + } + if reasoning.RejectsTopK(model) && req.TopK != nil { + addNonZeroIntChange(warn, "WithTopK", model, refusedByEndpoint, req.TopK, nil) + req.TopK = nil + } + if (reasoning.TakesNoTopK(model) || reasoning.ServedByDeepSeek(model, host) || + reasoning.DashScopeTakesNoTopK(reasoning.DashScopeRoute(model, host))) && req.TopK != nil { + addNonZeroIntChange(warn, "WithTopK", model, "the vendor's API has no top_k field", req.TopK, nil) + req.TopK = nil + } + if reasoning.RejectsRepetitionPenalty(model) && req.RepetitionPenalty != nil { + addNonZeroChange(warn, "WithRepetitionPenalty", model, refusedByEndpoint, req.RepetitionPenalty, nil) + req.RepetitionPenalty = nil + } +} + // effectiveModel resolves the model the request runs on: a per-call model wins, // then the client default, and finally the package default the client itself // substitutes on the wire — so capability decisions (reasoning-off, effort clamp, @@ -303,69 +392,338 @@ func (o *LLM) effectiveModel(opts llms.CallOptions) string { return openaiclient.DefaultChatModel } -// setReasoning sets reasoning options, depends on the client and request options. -func (o *LLM) setReasoning(req *openaiclient.ChatRequest, opts llms.CallOptions) error { - switch opts.Reasoning.ResolveMode() { //nolint:exhaustive // ReasoningOn is handled by the code after the switch +func wireEffortOf(sent bool, effort llms.ReasoningEffort) string { + if !sent { + return "" + } + return string(effort) +} + +// setReasoning writes the reasoning fields and reports the effort that reached the wire. +func (o *LLM) setReasoning( + req *openaiclient.ChatRequest, opts llms.CallOptions, warn *llms.Warnings, +) (string, error) { + model := o.effectiveModel(opts) + toolsRule := reasoning.EffortToolsFree + if len(opts.Tools) > 0 { + toolsRule = reasoning.EffortWithTools(model) + } + + mode := opts.Reasoning.ResolveMode() + delegated := opts.Reasoning.DelegatesDepth() + if delegated { + mode = llms.ReasoningDefault + } + switch mode { //nolint:exhaustive // ReasoningOn is handled by the code after the switch case llms.ReasoningDefault: - return nil + return o.setDeferredReasoning(req, opts, toolsRule, warn), nil case llms.ReasoningOff: - return o.setReasoningOff(req, opts) + return "", o.setReasoningOff(req, opts) } - defer func() { - if req.Reasoning != nil || req.ReasoningEffort != nil { - // must of all reasoning models can't use temperature and top_p with reasoning at the same time - req.Temperature, req.TopP = nil, nil + acceptsEffort := reasoning.AcceptsEffortWire(reasoning.DashScopeRoute(model, o.host)) + askedEffort := string(opts.Reasoning.GetEffort(opts.GetMaxTokens())) + effort := reasoning.OpenAIReasoningCapsFor(model).ClampEffort(askedEffort) + reasoningEffort := llms.ReasoningEffort(reasoning.ClaudeClampEffort(model, effort, reasoning.ProviderOpenAI)) + reasoningTokens := opts.Reasoning.GetTokens(opts.GetMaxTokens()) + sendsEffort := acceptsEffort && reasoningEffort != llms.ReasoningNone + if toolsRule != reasoning.EffortToolsFree { + if !o.sendsBudgetInsteadOfEffort(model, opts, reasoningTokens) { + return "", &reasoning.ErrEffortWithTools{Model: model, Effort: string(reasoningEffort)} } - }() + sendsEffort = false + } + if o.writeVendorBudget(req, opts, reasoningTokens, warnCtx{model, warn}) { + reportOpenAIReasoning(warn, model, opts.Reasoning, req) + return wireEffortOf(true, reasoningEffort), nil + } + if o.budgetHasNoField(model, opts) { + return "", &reasoning.ErrThinkingBudgetUnsupported{Model: model} + } + budget, effortBudget := budgetsFor(model, opts, reasoningEffort, reasoningTokens) + wire := o.writeEffort(req, sendsEffort, reasoningEffort, budget, effortBudget, warnCtx{model, warn}) + reportOpenAIReasoning(warn, model, opts.Reasoning, req) + return wire, nil +} - // Clamp the effort to what the model accepts (e.g. GPT-5 Pro accepts only - // high, GPT-5.4 mini rejects max) so a known-invalid value never reaches the - // API; unknown models pass through unchanged. - caps := reasoning.OpenAIReasoningCapsFor(o.effectiveModel(opts)) - reasoningEffort := llms.ReasoningEffort(caps.ClampEffort(string(opts.Reasoning.GetEffort(opts.GetMaxTokens())))) - reasoningTokens := opts.Reasoning.GetTokens(opts.GetMaxTokens()) +func (o *LLM) setDeferredReasoning( + req *openaiclient.ChatRequest, opts llms.CallOptions, toolsRule reasoning.EffortToolsRule, warn *llms.Warnings, +) string { + model := o.effectiveModel(opts) + delegated := opts.Reasoning.DelegatesDepth() + if toolsRule == reasoning.EffortToolsDisable { + o.writeDisableEffort(req) + reportDelegatedDepth(warn, model, delegated, reasoning.OpenAIDisableEffort) + return reasoning.OpenAIDisableEffort + } + if delegated && o.sendsClaudeAdaptive(model) { + if o.host == anthropicAPIHost { + reportAdaptiveRefused(warn, model) + return "" + } + if !o.sendsClaudeThinkingObject(model) { + reportDelegatedDepth(warn, model, delegated, "") + return "" + } + req.Thinking = &openaiclient.ThinkingOptions{Type: "adaptive", Display: "summarized"} + return string(opts.Reasoning.GetEffort(opts.GetMaxTokens())) + } + if delegated && reasoning.ThinkingOptIn(model) { + reportDelegatedDepth(warn, model, delegated, "") + } + return "" +} + +func budgetsFor( + model string, opts llms.CallOptions, effort llms.ReasoningEffort, tokens int, +) (budget, effortBudget int) { + if opts.Reasoning.HasExplicitTokens() && tokens > 0 { + budget = reasoning.ClaudeClampBudget(model, tokens) + } + if reasoning.ClaudeSpendsThinkingBudget(model) { + effortBudget = llms.ReasoningEffortBudget(effort, opts.GetMaxTokens()) + } + + return budget, effortBudget +} + +func (o *LLM) writeVendorBudget(req *openaiclient.ChatRequest, opts llms.CallOptions, tokens int, wc warnCtx) bool { + if !opts.Reasoning.HasExplicitTokens() || tokens <= 0 { + return false + } + route := reasoning.DashScopeRoute(wc.model, o.host) + switch { + case reasoning.DashScopeTakesThinkingBudget(route): + budget := min(opts.Reasoning.Tokens, llms.MaxReasoningTokens) + if reasoning.DashScopeBudgetSharesAnswerLimit(route) && opts.GetMaxTokens() > 0 { + budget = tokens + } + req.ThinkingBudget = &budget + if req.MaxCompletionTokens != nil { + req.MaxTokens, req.MaxCompletionTokens = req.MaxCompletionTokens, nil + } + case o.sendsClaudeBudget(wc.model, opts): + budget := reasoning.ClaudeClampBudget(wc.model, tokens) + req.Thinking = &openaiclient.ThinkingOptions{Type: "enabled", BudgetTokens: budget} + o.raiseAnswerLimitForBudget(req, budget, wc) + default: + return false + } + return true +} + +func (o *LLM) budgetHasNoField(model string, opts llms.CallOptions) bool { + if !opts.Reasoning.HasExplicitTokens() || o.client.ModernReasoningFormat && o.client.UseReasoningMaxTokens { + return false + } + return reasoning.TakesNoThinkingDepth(model) +} + +func (o *LLM) sendsClaudeBudget(model string, opts llms.CallOptions) bool { + return o.sendsClaudeThinkingObject(model) && + opts.Reasoning.HasExplicitTokens() && + reasoning.ClaudeSpendsThinkingBudget(model) && + !reasoning.ResolveClaudeAdaptive(model, opts.Reasoning.Adaptive) +} + +func (o *LLM) sendsClaudeAdaptive(model string) bool { + return !o.client.ModernReasoningFormat && + reasoning.ClaudeSupportsThinking(model) && + reasoning.ResolveClaudeAdaptive(model, true) && + !reasoning.ClaudeThinkingDefaultsOn(model) +} + +const anthropicAPIHost = "api.anthropic.com" + +func (o *LLM) sendsClaudeThinkingObject(model string) bool { + return !o.client.ModernReasoningFormat && + !publicProviderHost(o.host) && + reasoning.ClaudeThinkingObjectRoute(model) +} + +func (o *LLM) sendsBudgetInsteadOfEffort(model string, opts llms.CallOptions, tokens int) bool { + if !opts.Reasoning.HasExplicitTokens() || tokens <= 0 { + return false + } + + return reasoning.DashScopeTakesThinkingBudget(model) || o.client.UseReasoningMaxTokens +} + +func (o *LLM) writeEffort( + req *openaiclient.ChatRequest, sends bool, effort llms.ReasoningEffort, budget, effortBudget int, + wc warnCtx, +) string { if !o.client.ModernReasoningFormat { - if reasoningEffort != llms.ReasoningNone { - req.ReasoningEffort = &reasoningEffort + if sends { + req.ReasoningEffort = &effort + o.raiseAnswerLimitForBudget(req, effortBudget, wc) } - return nil + return wireEffortOf(sends, effort) + } + + switch { + case o.client.UseReasoningMaxTokens && budget > 0: + req.Reasoning = &openaiclient.ReasoningOptions{MaxTokens: budget} + o.raiseAnswerLimitForBudget(req, budget, wc) + case sends: + req.Reasoning = &openaiclient.ReasoningOptions{Effort: effort} + o.raiseAnswerLimitForBudget(req, effortBudget, wc) } + return wireEffortOf(sends, effort) +} - // using modern reasoning format - if o.client.UseReasoningMaxTokens && opts.Reasoning.Tokens != 0 && reasoningTokens != 0 { - req.Reasoning = &openaiclient.ReasoningOptions{ - MaxTokens: reasoningTokens, +func (o *LLM) raiseAnswerLimitForBudget(req *openaiclient.ChatRequest, budget int, wc warnCtx) { + for _, limit := range []**int{&req.MaxCompletionTokens, &req.MaxTokens} { + if *limit == nil || **limit <= 0 { + continue } - } else if reasoningEffort != llms.ReasoningNone { - req.Reasoning = &openaiclient.ReasoningOptions{ - Effort: reasoningEffort, + raised := reasoning.ClaudeMaxTokensForBudget(budget, **limit) + if raised != **limit { + wc.sink.Add(llms.Warning{ + Kind: llms.WarningClamp, Option: "WithMaxTokens", Model: wc.model, + Asked: strconv.Itoa(**limit), Sent: strconv.Itoa(raised), + Reason: "the answer limit was raised to leave room for the thinking budget", + }) } + *limit = &raised } - return nil } // setReasoningOff sends the model's explicit disable token so a reasoning model -// runs as a plain completion. Sampling params are left intact (a non-thinking -// call); a model whose thinking cannot be disabled returns a typed error. +// runs as a plain completion; a model whose thinking cannot be disabled returns +// a typed error. func (o *LLM) setReasoningOff(req *openaiclient.ChatRequest, opts llms.CallOptions) error { model := o.effectiveModel(opts) - switch reasoning.ResolveOff(model, reasoning.ProviderOpenAI) { //nolint:exhaustive // only OpenAI-relevant wires are handled; others are a no-op + switch reasoning.ResolveOff(reasoning.DashScopeRoute(model, o.host), reasoning.ProviderOpenAI) { //nolint:exhaustive // only OpenAI-relevant wires are handled; others are a no-op case reasoning.OffUnsupported: return &reasoning.ErrReasoningOffUnsupported{Model: model} case reasoning.OffEffortNone: - none := llms.ReasoningEffort("none") - if o.client.ModernReasoningFormat { - req.Reasoning = &openaiclient.ReasoningOptions{Effort: none} - } else { - req.ReasoningEffort = &none + o.writeDisableEffort(req) + case reasoning.OffDisableDashScope: + thinkingOff := false + req.EnableThinking = &thinkingOff + case reasoning.OffDisableThinkingObject: + if reasoning.ClaudeThinkingDefaultsOn(model) && !o.sendsClaudeThinkingObject(model) { + return &reasoning.ErrReasoningOffUnsupported{Model: model} } + req.Thinking = &openaiclient.ThinkingOptions{Type: "disabled"} } return nil } +func (o *LLM) writeDisableEffort(req *openaiclient.ChatRequest) { + none := llms.ReasoningEffort(reasoning.OpenAIDisableEffort) + if o.client.ModernReasoningFormat { + req.Reasoning = &openaiclient.ReasoningOptions{Effort: none} + } else { + req.ReasoningEffort = &none + } +} + +func (o *LLM) applySamplingPolicy( + req *openaiclient.ChatRequest, opts llms.CallOptions, wireEffort string, warn *llms.Warnings, +) { + model := o.effectiveModel(opts) + before := takeSamplingSnapshot(req) + reason := samplingReason(model, o.host, opts, wireEffort) + o.enforceSamplingPolicy(req, opts, wireEffort) + before.report(req, model, reason, warn) +} + +func (o *LLM) enforceSamplingPolicy(req *openaiclient.ChatRequest, opts llms.CallOptions, wireEffort string) { + model := o.effectiveModel(opts) + if reasoning.RejectsMinP(model) { + req.MinP = nil + } + if reasoning.ClaudeRejectsSampling(model) { + req.Temperature, req.TopP, req.TopK = nil, nil, nil + return + } + if reasoning.FixesSampling(model) { + req.Temperature, req.TopP = nil, nil + req.FrequencyPenalty, req.PresencePenalty = nil, nil + return + } + + switch { + case refusesSamplingWhileThinking(model, opts, wireEffort): + switch { + case req.Temperature == nil: + case reasoning.RejectsSamplingWhileThinking(model): + req.Temperature = nil + default: + temperature := 1.0 + req.Temperature = &temperature + } + if req.Temperature != nil || req.TopP == nil || + !reasoning.ClaudeKeepsTopPWhileThinking(model, *req.TopP) { + req.TopP = nil + } + req.TopK = nil + req.FrequencyPenalty = nil + req.PresencePenalty = nil + req.LogProbs = false + req.TopLogProbs = 0 + case reasoning.ServedByDeepSeek(model, o.host): + if deepSeekThinks(model, opts, wireEffort) { + req.Temperature = nil + } else { + req.TopP = nil + } + case reasoning.ClaudeMutuallyExclusiveSampling(model) && req.Temperature != nil && req.TopP != nil: + req.TopP = nil + } +} + +func refusesSamplingWhileThinking(model string, opts llms.CallOptions, wireEffort string) bool { + if !thinkingRuns(model, opts, wireEffort) { + return false + } + return reasoning.RejectsSamplingWhileThinking(model) || reasoning.ClaudeSupportsThinking(model) +} + +func deepSeekThinks(model string, opts llms.CallOptions, wireEffort string) bool { + return thinkingRuns(model, opts, wireEffort) && !extraBodyStopsThinking(opts) +} + +func extraBodyStopsThinking(opts llms.CallOptions) bool { + extra := llms.ExtraBody(opts) + if thinking, ok := extra["thinking"].(map[string]any); ok && thinking["type"] == "disabled" { + return true + } + return extra["reasoning_effort"] == reasoning.OpenAIDisableEffort +} + +// thinkingRuns reports whether the model reasons on this request: an effort +// reached the wire, or none did and the model reasons until told otherwise. +func thinkingRuns(model string, opts llms.CallOptions, wireEffort string) bool { + if opts.Reasoning.IsDisabled() || !reasoning.IsReasoningModel(model) { + return false + } + if isThinkingOnTheWire(wireEffort) || reasoning.ThinkingMarkedInName(model) { + return true + } + if wireEffort == reasoning.OpenAIDisableEffort { + return false + } + if reasoning.ClaudeSupportsThinking(model) { + return reasoning.ClaudeThinkingDefaultsOn(model) + } + return !reasoning.ThinkingOptIn(model) +} + +func isThinkingOnTheWire(wireEffort string) bool { + return wireEffort != "" && wireEffort != reasoning.OpenAIDisableEffort +} + // addToolsToRequest adds tools to the request from functions and tool definitions. func (o *LLM) addToolsToRequest(req *openaiclient.ChatRequest, opts llms.CallOptions) error { + if len(opts.Tools) > 0 || len(opts.Functions) > 0 { + if model := o.effectiveModel(opts); reasoning.ChatToolsUnsupported(model) { + return &reasoning.ErrChatToolsUnsupported{Model: model} + } + } + // add function-based tools (deprecated approach) for _, fn := range opts.Functions { req.Tools = append(req.Tools, openaiclient.Tool{ @@ -391,15 +749,47 @@ func (o *LLM) addToolsToRequest(req *openaiclient.ChatRequest, opts llms.CallOpt return nil } +func refusalFrom(result *openaiclient.ChatCompletionResponse) (*llms.ErrModelRefusal, int) { + for i, c := range result.Choices { + if c.Message.Refusal == "" { + continue + } + cached := result.Usage.PromptTokensDetails.CachedTokens + return &llms.ErrModelRefusal{ + Provider: "openai", + Message: c.Message.Refusal, + InputTokens: result.Usage.PromptTokens - cached, + OutputTokens: result.Usage.CompletionTokens, + CacheReadInputTokens: cached, + }, i + } + return nil, 0 +} + // processResponse processes the OpenAI API response into a ContentResponse. -func (o *LLM) processResponse(result *openaiclient.ChatCompletionResponse) *llms.ContentResponse { +func (o *LLM) partialWithTruncation( + result *openaiclient.ChatCompletionResponse, warn *llms.Warnings, opts llms.CallOptions, cause error, +) (*llms.ContentResponse, error) { + partial := o.processResponse(result, warn) + if truncated := llms.CheckTruncation(partial, opts); truncated != nil { + return partial, errors.Join(cause, truncated) + } + + return partial, cause +} + +func (o *LLM) processResponse( + result *openaiclient.ChatCompletionResponse, warn *llms.Warnings, +) *llms.ContentResponse { choices := make([]*llms.ContentChoice, len(result.Choices)) for i, c := range result.Choices { + stopReason := string(c.FinishReason) choices[i] = &llms.ContentChoice{ Content: c.Message.Content, Reasoning: o.processReasoning(c.Message.ReasoningContent), - StopReason: fmt.Sprint(c.FinishReason), + StopReason: stopReason, + Truncated: llms.IsTruncated(stopReason), GenerationInfo: o.processUsage(&result.Usage), } @@ -412,11 +802,11 @@ func (o *LLM) processResponse(result *openaiclient.ChatCompletionResponse) *llms o.processToolCalls(choices[i], c) } - return &llms.ContentResponse{Choices: choices} + return &llms.ContentResponse{Choices: choices, Warnings: warn.List()} } func (o *LLM) processUsage(usage *openaiclient.ChatUsage) map[string]any { - return map[string]any{ + info := map[string]any{ "CompletionTokens": usage.CompletionTokens, "PromptTokens": usage.PromptTokens, "TotalTokens": usage.TotalTokens, @@ -430,10 +820,18 @@ func (o *LLM) processUsage(usage *openaiclient.ChatUsage) map[string]any { "CompletionReasoningTokens": usage.CompletionTokensDetails.ReasoningTokens, "CompletionAcceptedPredictionTokens": usage.CompletionTokensDetails.AcceptedPredictionTokens, "CompletionRejectedPredictionTokens": usage.CompletionTokensDetails.RejectedPredictionTokens, - // Special fields for OpenRouter provider + } + // Special fields for OpenRouter provider + for key, cost := range map[string]*float64{ "UpstreamInferencePromptCost": usage.CostDetails.UpstreamInferencePromptCost, "UpstreamInferenceCompletionsCost": usage.CostDetails.UpstreamInferenceCompletionsCost, + } { + if cost != nil { + info[key] = *cost + } } + + return info } // processReasoning processes reasoning content in the response. @@ -488,7 +886,7 @@ func (o *LLM) CreateEmbedding(ctx context.Context, inputTexts []string) ([][]flo return nil, ErrEmptyResponse } if len(inputTexts) != len(embeddings) { - return embeddings, ErrUnexpectedResponseLength + return nil, ErrUnexpectedResponseLength } return embeddings, nil } @@ -531,6 +929,24 @@ func extractReasoningContent(parts []llms.ContentPart) string { return "" } +func withThinkTags(parts []llms.ContentPart, thought string) []llms.ContentPart { + if thought == "" { + return parts + } + head := "" + thought + "" + if len(parts) > 0 { + if text, ok := parts[0].(llms.TextContent); ok { + if strings.HasPrefix(text.Text, "") { + return parts + } + text.Text = head + text.Text + parts[0] = text + return parts + } + } + return slices.Insert(parts, 0, llms.ContentPart(llms.TextContent{Text: head})) +} + // toolFromTool converts an llms.Tool to a Tool. func toolFromTool(t llms.Tool) (openaiclient.Tool, error) { tool := openaiclient.Tool{ @@ -561,9 +977,13 @@ func toolCallsFromToolCalls(tcs []llms.ToolCall) []openaiclient.ToolCall { // toolCallFromToolCall converts an llms.ToolCall to a ToolCall. func toolCallFromToolCall(tc llms.ToolCall) openaiclient.ToolCall { + toolType := openaiclient.ToolType(tc.Type) + if toolType == "" { + toolType = openaiclient.ToolTypeFunction + } return openaiclient.ToolCall{ ID: tc.ID, - Type: openaiclient.ToolType(tc.Type), + Type: toolType, Function: openaiclient.ToolFunction{ Name: tc.FunctionCall.Name, Arguments: tc.FunctionCall.Arguments, @@ -593,3 +1013,25 @@ func webSearchOptionsFromCallOptions(opts *llms.WebSearchOptions) *openaiclient. } return result } + +func openaiToolChoice(choice any) any { + switch kind, name := llms.ClassifyToolChoice(choice); kind { + case llms.ToolChoiceNamed: + return llms.ToolChoice{Type: "function", Function: &llms.FunctionReference{Name: name}} + case llms.ToolChoiceAny: + return "required" + case llms.ToolChoiceAuto: + return "auto" + case llms.ToolChoiceNone: + return "none" + default: + return choice + } +} + +func derefInt(i *int) int { + if i == nil { + return 0 + } + return *i +} diff --git a/llms/openai/openaillm_cache_test.go b/llms/openai/openaillm_cache_test.go index f70c92959..3d7670641 100644 --- a/llms/openai/openaillm_cache_test.go +++ b/llms/openai/openaillm_cache_test.go @@ -977,10 +977,6 @@ func TestOpenAI_ImplicitCaching_Conversation_Streaming_Reasoning(t *testing.T) { // - Works across turns as long as the message prefix is unchanged // (including tool calls and their responses). // -// 3. SAMPLING RESTRICTIONS ON REASONING MODELS: -// - presence_penalty, frequency_penalty and stop are rejected by the API -// when used together with a reasoning model. -// // ============================================================================ // TestXAI_ImplicitCaching_IdenticalRequests tests that xAI's automatic prompt @@ -1234,20 +1230,3 @@ func TestXAI_ImplicitCaching_Conversation_WithTools(t *testing.T) { //nolint:fun assert.Greater(t, rr2, 0, "Request 2 (reasoning with tools) should return reasoning tokens") assert.NotEmpty(t, choice2.Content, "Response 2 should have content") } - -// TestXAI_ReasoningModel_RejectsPenalties documents (and pins) that grok-4.5 -// rejects presence_penalty when used together with reasoning, as documented -// by xAI: "presencePenalty, frequencyPenalty, and stop cannot be used with -// reasoning models. Requests that include them return an error." -func TestXAI_ReasoningModel_RejectsPenalties(t *testing.T) { - t.Parallel() - - llm := newTestXAIClient(t, WithModel("grok-4.5")) - - msgs := []llms.MessageContent{ - {Role: llms.ChatMessageTypeHuman, Parts: []llms.ContentPart{llms.TextPart("Say hi")}}, - } - - _, err := llm.GenerateContent(t.Context(), msgs, llms.WithMaxTokens(256), llms.WithPresencePenalty(0.5)) - require.Error(t, err, "xAI must reject presence_penalty combined with a reasoning model") -} diff --git a/llms/openai/openaillm_option.go b/llms/openai/openaillm_option.go index cd2d76958..6fbf435c1 100644 --- a/llms/openai/openaillm_option.go +++ b/llms/openai/openaillm_option.go @@ -42,6 +42,9 @@ type options struct { // preserve reasoning content in multi-turn conversations with tool calls preserveReasoningContent bool + // carry a structured-output schema in the prompt for vendors without json_schema + structuredOutputFallback bool + // required when APIType is APITypeAzure or APITypeAzureAD apiVersion string embeddingModel string @@ -66,7 +69,9 @@ type ResponseFormatJSONSchemaProperty = openaiclient.ResponseFormatJSONSchemaPro var ResponseFormatJSON = &ResponseFormat{Type: "json_object"} //nolint:gochecknoglobals // WithToken passes the OpenAI API token to the client. If not set, the token -// is read from the OPENAI_API_KEY environment variable. +// is read from the OPENAI_API_KEY environment variable. A token is required +// only for known public OpenAI-compatible providers; local backends such as +// vLLM may be used without one. func WithToken(token string) Option { return func(opts *options) { opts.token = token @@ -171,12 +176,46 @@ func WithModernReasoningFormat() Option { } } -// WithPreserveReasoningContent enables preservation of reasoning content -// in multi-turn conversations with tool calls. This is required for some -// LLM providers like Moonshot that expect reasoning_content field in -// assistant messages with tool calls. +// WithPreserveReasoningContent sends each assistant turn's reasoning back as +// reasoning_content: on the turns that called a tool, and on every assistant +// turn for DeepSeek, Kimi, GLM and Qwen models. A model Mistral serves takes it on +// every turn as a thinking chunk at the head of content instead, and one that +// does not reason there takes none. A MiniMax M-series model on MiniMax's API +// takes it on every turn inside tags at the head of content, unless the +// content already opens with a block. A DeepSeek ("deepseek-") assistant +// turn that holds no reasoning goes back with an empty reasoning_content, which +// DeepSeek's thinking mode requires after the last user message; keep the +// reasoning DeepSeek returned in the history, since the empty field also stops +// DeepSeek from restoring it by the turn's tool call ID. func WithPreserveReasoningContent() Option { return func(opts *options) { opts.preserveReasoningContent = true } } + +// WithStructuredOutputFallback lets a llms.WithStructuredOutput call reach a +// model whose vendor takes no json_schema response format: DeepSeek +// ("deepseek-" models) and Z.ai GLM ("glm-" models, not the ones Mistral serves), +// which take json_object, and MiniMax M-series models on MiniMax's API, which +// take no response_format at all. Instead of failing with +// [llms.ErrStructuredOutputUnsupported], the call appends the JSON Schema to the +// last user message (or adds a user message when there is none), sends +// response_format json_object where the vendor has it, and reports an +// [llms.WarningSubstitute]. The schema and its name are checked exactly as for +// the native path, so one schema serves both. +// +// Nothing on the server holds the answer to the schema, so it is validated +// locally: a single Markdown code fence around the whole answer and a thinking +// block at its head are removed first (streamed text chunks still carry them), +// and any other answer that is not exactly one JSON value matching the schema +// comes back together with [llms.ErrStructuredOutputValidation], which a caller +// should treat as retryable. +// A tool-call turn and a truncated answer are not validated; on these vendors +// max_tokens also covers the reasoning, so a tight budget can end on "length" +// with an empty answer (see [llms.WithFailOnTruncation]). Every other model keeps +// the native json_schema response format. +func WithStructuredOutputFallback() Option { + return func(opts *options) { + opts.structuredOutputFallback = true + } +} diff --git a/llms/openai/openaillm_test.go b/llms/openai/openaillm_test.go index d8a436cca..13ea48bee 100644 --- a/llms/openai/openaillm_test.go +++ b/llms/openai/openaillm_test.go @@ -796,7 +796,7 @@ func TestConvertMessages(t *testing.T) { //nolint:funlen for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { t.Parallel() - result, err := llm.convertMessages(tt.messages) + result, err := llm.convertMessages(tt.messages, "") if tt.expectError { assert.Error(t, err) @@ -869,7 +869,81 @@ func TestErrorMapping(t *testing.T) { } } -// TestCreateChatRequest_ReasoningModelTemperature tests temperature adjustment for reasoning models +var reasoningTemperatureCases = []struct { + name string + model string + temperature float64 + expectedTemperature float64 + dropped bool +}{ + { + name: "reasoning model o1-preview with non-1.0 temperature", + model: "o1-preview", + temperature: 0.7, + dropped: true, + }, + { + name: "reasoning model o1-mini with zero temperature", + model: "o1-mini", + temperature: 0.0, + dropped: true, + }, + { + name: "reasoning model o3-mini with temperature 0.5", + model: "o3-mini", + temperature: 0.5, + dropped: true, + }, + { + name: "reasoning model with temperature already 1.0", + model: "o1-preview", + temperature: 1.0, + dropped: true, + }, + { + name: "non-reasoning model gpt-4 preserves temperature", + model: "gpt-4", + temperature: 0.7, + expectedTemperature: 0.7, + }, + { + name: "non-reasoning model gpt-4o-mini preserves zero temperature", + model: "gpt-4o-mini", + temperature: 0.0, + expectedTemperature: 0.0, + }, + { + name: "deepseek-r1 reasons but its vendor takes the caller's temperature", + model: "deepseek-r1", + temperature: 0.8, + expectedTemperature: 0.8, + }, + { + name: "gemini-2.5-flash reasons but its vendor takes the caller's temperature", + model: "gemini-2.5-flash-thinking-exp", + temperature: 0.3, + expectedTemperature: 0.3, + }, + { + name: "claude-3.7-sonnet thinks only when asked and keeps the temperature", + model: "claude-3.7-sonnet", + temperature: 0.9, + expectedTemperature: 0.9, + }, + { + name: "claude-3.7-sonnet thinking route adjusts temperature", + model: "anthropic/claude-3.7-sonnet:thinking", + temperature: 0.9, + expectedTemperature: 1.0, + }, + { + name: "claude-sonnet-4-5 thinks only when asked and keeps the temperature", + model: "claude-sonnet-4-5", + temperature: 0.3, + expectedTemperature: 0.3, + }, +} + func TestCreateChatRequest_ReasoningModelTemperature(t *testing.T) { t.Parallel() @@ -879,69 +953,7 @@ func TestCreateChatRequest_ReasoningModelTemperature(t *testing.T) { llm := &LLM{client: client} - tests := []struct { - name string - model string - temperature float64 - expectedTemperature float64 - }{ - { - name: "reasoning model o1-preview with non-1.0 temperature", - model: "o1-preview", - temperature: 0.7, - expectedTemperature: 1.0, - }, - { - name: "reasoning model o1-mini with zero temperature", - model: "o1-mini", - temperature: 0.0, - expectedTemperature: 1.0, - }, - { - name: "reasoning model o3-mini with temperature 0.5", - model: "o3-mini", - temperature: 0.5, - expectedTemperature: 1.0, - }, - { - name: "reasoning model with temperature already 1.0", - model: "o1-preview", - temperature: 1.0, - expectedTemperature: 1.0, - }, - { - name: "non-reasoning model gpt-4 preserves temperature", - model: "gpt-4", - temperature: 0.7, - expectedTemperature: 0.7, - }, - { - name: "non-reasoning model gpt-4o-mini preserves zero temperature", - model: "gpt-4o-mini", - temperature: 0.0, - expectedTemperature: 0.0, - }, - { - name: "deepseek-r1 reasoning model adjusts temperature", - model: "deepseek-r1", - temperature: 0.8, - expectedTemperature: 1.0, - }, - { - name: "gemini-2.5-flash reasoning model adjusts temperature", - model: "gemini-2.5-flash-thinking-exp", - temperature: 0.3, - expectedTemperature: 1.0, - }, - { - name: "claude-3.7-sonnet reasoning model adjusts temperature", - model: "claude-3.7-sonnet", - temperature: 0.9, - expectedTemperature: 1.0, - }, - } - - for _, tt := range tests { + for _, tt := range reasoningTemperatureCases { t.Run(tt.name, func(t *testing.T) { t.Parallel() @@ -950,13 +962,15 @@ func TestCreateChatRequest_ReasoningModelTemperature(t *testing.T) { Temperature: &tt.temperature, } - req, err := llm.createChatRequest([]*ChatMessage{}, opts) + req, err := llm.createChatRequest([]*ChatMessage{}, opts, nil) require.NoError(t, err) - require.NotNil(t, req.Temperature) - if req.Temperature != nil { - assert.Equal(t, tt.expectedTemperature, *req.Temperature, - "Temperature should be %v for model %s", tt.expectedTemperature, tt.model) + if tt.dropped { + assert.Nil(t, req.Temperature, "model %s takes no temperature", tt.model) + return } + require.NotNil(t, req.Temperature) + assert.Equal(t, tt.expectedTemperature, *req.Temperature, + "Temperature should be %v for model %s", tt.expectedTemperature, tt.model) }) } } diff --git a/llms/openai/options.go b/llms/openai/options.go index 62310a8c5..5c31dab14 100644 --- a/llms/openai/options.go +++ b/llms/openai/options.go @@ -46,9 +46,11 @@ func isLegacyMaxTokensField(opts *llms.CallOptions) bool { } // WithExtraBody allows passing additional fields in the request body that will be sent -// to the OpenAI-compatible API. These fields will override any existing fields with the -// same name, allowing you to use provider-specific parameters not directly supported -// by the library. +// to the OpenAI-compatible API, allowing you to use provider-specific parameters not +// directly supported by the library. A JSON object merges key by key, at every depth, +// into the object the library built under the same name; any other value (a scalar, +// an array, null) replaces the library's, so a leaf set here always wins. An object +// whose "type" differs from the "type" of the library's object replaces it whole. // // Example usage: // @@ -61,20 +63,9 @@ func isLegacyMaxTokensField(opts *llms.CallOptions) bool { // }), // ) func WithExtraBody(extraBody map[string]any) llms.CallOption { - return func(opts *llms.CallOptions) { - if opts.Metadata == nil { - opts.Metadata = make(map[string]any) - } - opts.Metadata["openai:extra_body"] = extraBody - } + return llms.WithExtraBody(extraBody) } func getExtraBody(opts *llms.CallOptions) map[string]any { - if opts.Metadata == nil { - return nil - } - if extraBody, ok := opts.Metadata["openai:extra_body"].(map[string]any); ok { - return extraBody - } - return nil + return llms.ExtraBody(*opts) } diff --git a/llms/openai/options_test.go b/llms/openai/options_test.go index e8ac491e5..899b7063c 100644 --- a/llms/openai/options_test.go +++ b/llms/openai/options_test.go @@ -183,7 +183,7 @@ func TestWebSearchOptionsConversion(t *testing.T) { } func TestWithExtraBody(t *testing.T) { - t.Run("sets extra body in metadata", func(t *testing.T) { + t.Run("sets extra body in its own field", func(t *testing.T) { opts := &llms.CallOptions{} extraBody := map[string]any{ "enable_thinking": false, @@ -192,26 +192,31 @@ func TestWithExtraBody(t *testing.T) { WithExtraBody(extraBody)(opts) - require.NotNil(t, opts.Metadata) - stored, ok := opts.Metadata["openai:extra_body"].(map[string]any) - require.True(t, ok) + stored := llms.ExtraBody(*opts) + require.NotNil(t, stored) assert.Equal(t, false, stored["enable_thinking"]) assert.Equal(t, "value", stored["custom_param"]) }) + t.Run("metadata set afterwards does not discard it", func(t *testing.T) { + opts := &llms.CallOptions{} + WithExtraBody(map[string]any{"a": 1})(opts) + llms.WithMetadata(map[string]any{"user": "u1"})(opts) + + assert.Equal(t, map[string]any{"a": 1}, llms.ExtraBody(*opts)) + assert.Equal(t, "u1", opts.Metadata["user"]) + }) + t.Run("nil extra body is handled", func(t *testing.T) { opts := &llms.CallOptions{} WithExtraBody(nil)(opts) - require.NotNil(t, opts.Metadata) + assert.Nil(t, llms.ExtraBody(*opts)) }) t.Run("empty extra body is handled", func(t *testing.T) { opts := &llms.CallOptions{} WithExtraBody(map[string]any{})(opts) - require.NotNil(t, opts.Metadata) - stored, ok := opts.Metadata["openai:extra_body"].(map[string]any) - require.True(t, ok) - assert.Empty(t, stored) + assert.Empty(t, llms.ExtraBody(*opts)) }) } @@ -231,25 +236,17 @@ func TestGetExtraBody(t *testing.T) { }) t.Run("returns extra body when present", func(t *testing.T) { - extraBody := map[string]any{"key": "value"} - opts := &llms.CallOptions{ - Metadata: map[string]any{ - "openai:extra_body": extraBody, - }, - } + opts := &llms.CallOptions{ExtraBody: map[string]any{"key": "value"}} result := getExtraBody(opts) require.NotNil(t, result) assert.Equal(t, "value", result["key"]) }) - t.Run("returns nil for wrong type", func(t *testing.T) { + t.Run("a metadata key of the old name is not read", func(t *testing.T) { opts := &llms.CallOptions{ - Metadata: map[string]any{ - "openai:extra_body": "not a map", - }, + Metadata: map[string]any{"openai:extra_body": map[string]any{"key": "value"}}, } - result := getExtraBody(opts) - assert.Nil(t, result) + assert.Nil(t, getExtraBody(opts)) }) } @@ -373,8 +370,6 @@ func TestQwenSamplingReachesWireVerbatim(t *testing.T) { //nolint:funlen // thre // default the client substitutes on the wire — not off an empty model. Otherwise // WithReasoningDisabled() on a zero-config client is a silent no-op. func TestZeroConfigReasoningDisabledUsesDefaultModel(t *testing.T) { - // Ensure no ambient model is configured so the client falls through to the - // package default (cannot use t.Parallel with t.Setenv). t.Setenv("OPENAI_MODEL", "") const completion = `{"id":"x","object":"chat.completion","created":1,"model":"m",` + @@ -407,3 +402,51 @@ func TestZeroConfigReasoningDisabledUsesDefaultModel(t *testing.T) { openaiclient.DefaultChatModel, body) } } + +func TestZeroConfigTemperaturePinUsesDefaultModel(t *testing.T) { + t.Setenv("OPENAI_MODEL", "") + + const completion = `{"id":"x","object":"chat.completion","created":1,"model":"m",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}` + + capture := func(t *testing.T, opts ...Option) string { + t.Helper() + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, completion) + })) + defer srv.Close() + + llm, err := New(append([]Option{WithBaseURL(srv.URL), WithToken("test")}, opts...)...) + if err != nil { + t.Fatalf("New() error: %v", err) + } + if _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithTemperature(0.2)); err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + return body + } + + // The policy must read the client's model, which no per-call option supplies. + clientModel := capture(t, WithModel("gpt-5.5")) + if strings.Contains(clientModel, `"temperature"`) { + t.Errorf("gpt-5.5 takes no temperature while it thinks, got body: %s", clientModel) + } + + zeroConfig := capture(t) + if !strings.Contains(zeroConfig, `"temperature":0.2`) { + t.Errorf("%s takes the caller temperature, got body: %s", + openaiclient.DefaultChatModel, zeroConfig) + } + + plain := capture(t, WithModel("gpt-4.1-mini")) + if !strings.Contains(plain, `"temperature":0.2`) { + t.Errorf("a non-reasoning model must keep the caller temperature, got body: %s", plain) + } +} diff --git a/llms/openai/partial_stream_test.go b/llms/openai/partial_stream_test.go new file mode 100644 index 000000000..0eb22a0af --- /dev/null +++ b/llms/openai/partial_stream_test.go @@ -0,0 +1,167 @@ +package openai + +import ( + "context" + "errors" + "io" + "net/http" + "net/http/httptest" + "runtime" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func TestAConsumerThatGivesUpStillGetsWhatArrived(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "text/event-stream") + for _, text := range []string{"sixty ", "rooms ", "are free"} { + _, _ = io.WriteString(w, `data: {"id":"x","object":"chat.completion.chunk","created":1,`+ + `"model":"gpt-4o","choices":[{"index":0,"delta":{"content":"`+text+`"},"finish_reason":null}]}`+"\n\n") + if f, ok := w.(http.Flusher); ok { + f.Flush() + } + } + _, _ = io.WriteString(w, "data: [DONE]\n\n") + })) + t.Cleanup(srv.Close) + + llm := newUnitLLM(t, WithBaseURL(srv.URL), WithModel("gpt-4o")) + + gaveUp := errGaveUp + delivered := 0 + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, + llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type != streaming.ChunkTypeText { + return nil + } + delivered++ + if delivered == 2 { + return gaveUp + } + return nil + })) + + require.ErrorIs(t, err, gaveUp) + require.NotNil(t, resp, "the text already delivered must travel with the error") + require.Len(t, resp.Choices, 1) + assert.Equal(t, "sixty rooms ", resp.Choices[0].Content, + "every chunk written into the accumulator before the callback failed") +} + +func streamThenGiveUpOn(t *testing.T, deltas []string, refuse streaming.ChunkType) (*llms.ContentResponse, error) { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "text/event-stream") + for _, delta := range deltas { + _, _ = io.WriteString(w, `data: {"id":"x","object":"chat.completion.chunk","created":1,`+ + `"model":"gpt-4o","choices":[{"index":0,"delta":`+delta+`,"finish_reason":null}]}`+"\n\n") + if f, ok := w.(http.Flusher); ok { + f.Flush() + } + } + _, _ = io.WriteString(w, "data: [DONE]\n\n") + })) + t.Cleanup(srv.Close) + + llm := newUnitLLM(t, WithBaseURL(srv.URL), WithModel("gpt-4o")) + return llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type == refuse { + return errGaveUp + } + return nil + })) +} + +var errGaveUp = errors.New("consumer gave up") + +func TestEveryStreamedChunkKindCarriesWhatArrivedWhenTheConsumerGivesUp(t *testing.T) { + t.Parallel() + + t.Run("reasoning", func(t *testing.T) { + t.Parallel() + resp, err := streamThenGiveUpOn(t, []string{ + `{"content":"sixty rooms"}`, + `{"reasoning_content":"counting"}`, + }, streaming.ChunkTypeReasoning) + + require.ErrorIs(t, err, errGaveUp) + require.NotNil(t, resp, "text delivered before the reasoning chunk must survive") + require.Len(t, resp.Choices, 1) + assert.Equal(t, "sixty rooms", resp.Choices[0].Content) + }) + + t.Run("tool call", func(t *testing.T) { + t.Parallel() + resp, err := streamThenGiveUpOn(t, []string{ + `{"content":"sixty rooms"}`, + `{"tool_calls":[{"index":0,"id":"call_1","type":"function",` + + `"function":{"name":"count_rooms","arguments":"{}"}}]}`, + }, streaming.ChunkTypeToolCall) + + require.ErrorIs(t, err, errGaveUp) + require.NotNil(t, resp, "text delivered before the tool call must survive") + require.Len(t, resp.Choices, 1) + assert.Equal(t, "sixty rooms", resp.Choices[0].Content) + }) +} + +// Not parallel: it counts goroutines, and a neighbour running at the same time +// would change the count under it. +func TestAGivenUpStreamDoesNotLeaveItsProducerBehind(t *testing.T) { + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "text/event-stream") + for _, text := range []string{"sixty ", "rooms ", "are free", "today", "and tomorrow"} { + _, _ = io.WriteString(w, `data: {"id":"x","object":"chat.completion.chunk","created":1,`+ + `"model":"gpt-4o","choices":[{"index":0,"delta":{"content":"`+text+`"},"finish_reason":null}]}`+"\n\n") + if f, ok := w.(http.Flusher); ok { + f.Flush() + } + } + _, _ = io.WriteString(w, "data: [DONE]\n\n") + })) + t.Cleanup(srv.Close) + + llm := newUnitLLM(t, WithBaseURL(srv.URL), WithModel("gpt-4o")) + + runtime.GC() + time.Sleep(50 * time.Millisecond) + before := runtime.NumGoroutine() + + delivered := 0 + _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, + llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type != streaming.ChunkTypeText { + return nil + } + delivered++ + if delivered == 2 { + return errGaveUp + } + return nil + })) + require.ErrorIs(t, err, errGaveUp) + + http.DefaultClient.CloseIdleConnections() + deadline := time.Now().Add(3 * time.Second) + for runtime.NumGoroutine() > before && time.Now().Before(deadline) { + time.Sleep(20 * time.Millisecond) + } + assert.LessOrEqual(t, runtime.NumGoroutine(), before, + "the producer must stop once the consumer has given up, even on a context nobody cancels") +} diff --git a/llms/openai/qwen_stream_only_test.go b/llms/openai/qwen_stream_only_test.go new file mode 100644 index 000000000..5b4d31811 --- /dev/null +++ b/llms/openai/qwen_stream_only_test.go @@ -0,0 +1,154 @@ +package openai + +import ( + "context" + "encoding/json" + "errors" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +func captureQwenRequest(t *testing.T, model string, opts ...llms.CallOption) (map[string]any, error) { + t.Helper() + + var body map[string]any + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + raw, _ := io.ReadAll(r.Body) + _ = json.Unmarshal(raw, &body) + if stream, _ := body["stream"].(bool); stream { + w.Header().Set("Content-Type", "text/event-stream") + _, _ = io.WriteString(w, "data: {\"id\":\"1\",\"object\":\"chat.completion.chunk\","+ + "\"choices\":[{\"index\":0,\"delta\":{\"content\":\"ok\"},\"finish_reason\":\"stop\"}]}\n\n"+ + "data: [DONE]\n\n") + return + } + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"1","object":"chat.completion","created":1,"model":"m",`+ + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],`+ + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`) + })) + defer server.Close() + + llm, err := New(WithBaseURL(server.URL), WithToken("token"), WithModel(model)) + if err != nil { + t.Fatalf("new client: %v", err) + } + _, genErr := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, opts...) + return body, genErr +} + +func TestQwenHybridDisablesThinkingWithoutAStream(t *testing.T) { + t.Parallel() + + body, err := captureQwenRequest(t, "dashscope/qwen3-8b") + if err != nil { + t.Fatalf("generate: %v", err) + } + if got, ok := body["enable_thinking"]; !ok || got != false { + t.Fatalf("a non-streaming call must carry enable_thinking=false, got %v (present=%v)", got, ok) + } +} + +func TestQwenHybridLeavesAStreamingCallAlone(t *testing.T) { + t.Parallel() + + body, err := captureQwenRequest(t, "dashscope/qwen3-8b", + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + if err != nil { + t.Fatalf("generate: %v", err) + } + if got, ok := body["enable_thinking"]; ok { + t.Fatalf("a streaming call must not pin thinking, got enable_thinking=%v", got) + } +} + +func TestQwenHybridRefusesThinkingWithoutAStream(t *testing.T) { + t.Parallel() + + _, err := captureQwenRequest(t, "dashscope/qwen3-8b", llms.WithReasoning(llms.ReasoningHigh, 0)) + var want *reasoning.ErrThinkingRequiresStream + if !errors.As(err, &want) { + t.Fatalf("asking a stream-only model to think without a stream must be refused, got %v", err) + } +} + +func TestQwenCoderKeepsTheBareCallUntouched(t *testing.T) { + t.Parallel() + + body, err := captureQwenRequest(t, "dashscope/qwen3-coder-plus") + if err != nil { + t.Fatalf("generate: %v", err) + } + if got, ok := body["enable_thinking"]; ok { + t.Fatalf("the coder line is not a hybrid, got enable_thinking=%v", got) + } +} + +func TestQwenHybridHonoursDisabledThinkingOnAStream(t *testing.T) { + t.Parallel() + + body, err := captureQwenRequest(t, "dashscope/qwen3-8b", + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil }), + llms.WithReasoningDisabled()) + if err != nil { + t.Fatalf("generate: %v", err) + } + if got, ok := body["enable_thinking"]; !ok || got != false { + t.Fatalf("an explicit disable must reach the wire, got %v (present=%v)", got, ok) + } +} + +func TestQwenHybridKeepsTheCallerSampling(t *testing.T) { + t.Parallel() + + body, err := captureQwenRequest(t, "dashscope/qwen3-8b", + llms.WithTemperature(0.25), llms.WithTopP(0.3)) + if err != nil { + t.Fatalf("generate: %v", err) + } + if got := body["temperature"]; got != 0.25 { + t.Fatalf("the caller's temperature must survive, got %v", got) + } + if got := body["top_p"]; got != 0.3 { + t.Fatalf("the caller's top_p must survive, got %v", got) + } +} + +func TestQwenCommercialHybridTurnsThinkingOnWhenAsked(t *testing.T) { + t.Parallel() + + body, err := captureQwenRequest(t, "dashscope/qwen-plus", llms.WithReasoning(llms.ReasoningHigh, 0)) + if err != nil { + t.Fatalf("generate: %v", err) + } + if got, ok := body["enable_thinking"]; !ok || got != true { + t.Fatalf("asking for reasoning must turn the vendor flag on, got %v (present=%v)", got, ok) + } +} + +func TestQwenCommercialHybridStaysQuietOtherwise(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + opts []llms.CallOption + }{ + {"bare", nil}, + {"disabled", []llms.CallOption{llms.WithReasoningDisabled()}}, + } { + body, err := captureQwenRequest(t, "dashscope/qwen-plus", tc.opts...) + if err != nil { + t.Fatalf("%s: generate: %v", tc.name, err) + } + if got, ok := body["enable_thinking"]; ok { + t.Errorf("%s: the flag must stay off the wire, got %v", tc.name, got) + } + } +} diff --git a/llms/openai/reasoning_effort_door_test.go b/llms/openai/reasoning_effort_door_test.go new file mode 100644 index 000000000..ffd9995ce --- /dev/null +++ b/llms/openai/reasoning_effort_door_test.go @@ -0,0 +1,104 @@ +package openai + +import ( + "context" + "errors" + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func TestReasoningEffortOmittedOnDoorsThatRejectIt(t *testing.T) { + t.Parallel() + + const completion = `{"id":"x","object":"chat.completion","created":1,"model":"m",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}` + + capture := func(t *testing.T, model string, opt llms.CallOption) (string, error) { + t.Helper() + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, completion) + })) + t.Cleanup(srv.Close) + llm, err := New(WithBaseURL(srv.URL), WithToken("test"), WithModel(model)) + if err != nil { + t.Fatalf("New() error: %v", err) + } + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, opt) + return body, err + } + + for _, model := range []string{ + "qwen3-next-80b-a3b-thinking", "kimi-k2.6", "moonshot/kimi-k2.6", "kimi-k2.7-code-highspeed", + "glm-5.1", "zai/glm-5.1", "glm-5-turbo", + "MiniMax-M3", "minimax/MiniMax-M3", "MiniMax-M2.7", + } { + t.Run(model+" drops a requested effort", func(t *testing.T) { + body, err := capture(t, model, llms.WithReasoning(llms.ReasoningMedium, 0)) + if err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + if strings.Contains(body, "reasoning_effort") { + t.Fatalf("%s must not receive reasoning_effort, got body: %s", model, body) + } + }) + } + + for _, model := range []string{"kimi-k2.7-code-highspeed", "kimi-k2-thinking", "qwen3-next-80b-a3b-thinking"} { + t.Run(model+" reports off as unsupported", func(t *testing.T) { + _, err := capture(t, model, llms.WithReasoningDisabled()) + if err == nil { + t.Fatalf("%s cannot disable thinking and must return a typed error", model) + } + if !strings.Contains(err.Error(), "reasoning cannot be disabled") { + t.Fatalf("expected the typed disable error, got: %v", err) + } + }) + } + + for _, model := range []string{"glm-5.2", "zai/glm-5.2", "dashscope/glm-5.1"} { + t.Run(model+" carries the effort to the wire", func(t *testing.T) { + body, err := capture(t, model, llms.WithReasoning(llms.ReasoningMedium, 0)) + if err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + if !strings.Contains(body, `"reasoning_effort":"medium"`) { + t.Fatalf("%s accepts reasoning_effort and must receive it, got body: %s", model, body) + } + }) + } + + t.Run("kimi-k3 receives the effort inside the vendor enum", func(t *testing.T) { + body, err := capture(t, "kimi-k3", llms.WithReasoning(llms.ReasoningMedium, 0)) + if err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + if !strings.Contains(body, `"reasoning_effort":"low"`) { + t.Fatalf("kimi-k3 accepts reasoning_effort, and the vendor enum is low, high and max, "+ + "so a requested medium must arrive as low, got body: %s", body) + } + }) + + t.Run("kimi-k3 refuses to be disabled", func(t *testing.T) { + body, err := capture(t, "kimi-k3", llms.WithReasoningDisabled()) + var unsupported *reasoning.ErrReasoningOffUnsupported + if !errors.As(err, &unsupported) { + t.Fatalf("the vendor enum is low, high and max and the model always reasons, "+ + "so off cannot be honored: want ErrReasoningOffUnsupported, got err %v, body %s", err, body) + } + if strings.Contains(body, "reasoning_effort") { + t.Fatalf("no request may leave when off cannot be honored, got body: %s", body) + } + }) +} diff --git a/llms/openai/reasoning_effort_passthrough_test.go b/llms/openai/reasoning_effort_passthrough_test.go index a75dbd6da..b29ba42ec 100644 --- a/llms/openai/reasoning_effort_passthrough_test.go +++ b/llms/openai/reasoning_effort_passthrough_test.go @@ -2,6 +2,7 @@ package openai import ( "context" + "errors" "io" "net/http" "net/http/httptest" @@ -9,6 +10,7 @@ import ( "testing" "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" ) // xhigh/max effort must reach the request body unchanged (not downgraded to @@ -69,7 +71,7 @@ func TestReasoningEffortPassthroughToWire(t *testing.T) { // WithAdaptiveReasoning with no explicit effort must not silently disable // reasoning here: it defaults to high, matching the Anthropic/Bedrock paths. -func TestAdaptiveReasoningNoEffortDefaultsToHighOnWire(t *testing.T) { +func TestAdaptiveReasoningWithNoEffortSendsNoEffort(t *testing.T) { t.Parallel() const completion = `{"id":"x","object":"chat.completion","created":1,"model":"m",` + @@ -96,8 +98,8 @@ func TestAdaptiveReasoningNoEffortDefaultsToHighOnWire(t *testing.T) { ); err != nil { t.Fatalf("GenerateContent() error: %v", err) } - if !strings.Contains(body, `"reasoning_effort":"high"`) { - t.Fatalf("adaptive-no-effort must send reasoning_effort=high, got body: %s", body) + if strings.Contains(body, `"reasoning_effort"`) { + t.Fatalf("adaptive with no effort asks the model to choose, got body: %s", body) } } @@ -226,10 +228,291 @@ func TestReasoningEffortClampedPerModel(t *testing.T) { } }) + t.Run("o-series clamps xhigh to high", func(t *testing.T) { + body := capture(t, "o3", llms.ReasoningXHigh) + if !strings.Contains(body, `"reasoning_effort":"high"`) { + t.Fatalf("o3 takes only low/medium/high, got body: %s", body) + } + }) + + t.Run("gpt-5 clamps xhigh to high", func(t *testing.T) { + body := capture(t, "gpt-5", llms.ReasoningXHigh) + if !strings.Contains(body, `"reasoning_effort":"high"`) { + t.Fatalf("gpt-5 tops out at high, got body: %s", body) + } + }) + t.Run("unknown model passes max through", func(t *testing.T) { - body := capture(t, "gpt-5.6", llms.ReasoningMax) + body := capture(t, "gpt-5.7", llms.ReasoningMax) if !strings.Contains(body, `"reasoning_effort":"max"`) { t.Fatalf("unknown model must pass max through, got body: %s", body) } }) } + +func TestReasoningDisabledForClaudeBehindOpenAITransport(t *testing.T) { + t.Parallel() + + const completion = `{"id":"x","object":"chat.completion","created":1,"model":"m",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}` + + send := func(t *testing.T, model string) (string, error) { + t.Helper() + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, completion) + })) + t.Cleanup(srv.Close) + llm, err := New(WithBaseURL(srv.URL), WithToken("test"), WithModel(model)) + if err != nil { + t.Fatalf("New() error: %v", err) + } + _, genErr := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithReasoningDisabled()) + return body, genErr + } + + t.Run("default-on Claude is sent Anthropic's disable object", func(t *testing.T) { + for _, model := range []string{"anthropic/claude-sonnet-5", "anthropic/claude-opus-5"} { + body, err := send(t, model) + if err != nil { + t.Fatalf("%s: GenerateContent() error: %v", model, err) + } + if !strings.Contains(body, `"thinking":{"type":"disabled"}`) { + t.Errorf("%s: want thinking disabled on the wire, got body: %s", model, body) + } + if strings.Contains(body, "reasoning") { + t.Errorf("%s: the route leaves thinking on for reasoning_effort none, got body: %s", model, body) + } + } + }) + + t.Run("always-on Claude still reports unsupported", func(t *testing.T) { + _, err := send(t, "anthropic/claude-fable-5") + var unsupported *reasoning.ErrReasoningOffUnsupported + if !errors.As(err, &unsupported) { + t.Fatalf("want ErrReasoningOffUnsupported, got %v", err) + } + }) + + t.Run("off-by-default Claude omits the field", func(t *testing.T) { + body, err := send(t, "anthropic/claude-opus-4-7") + if err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + if strings.Contains(body, "reasoning") { + t.Fatalf("a model that does not think by default needs no disable token, got body: %s", body) + } + }) +} + +func TestTemperatureDroppedOnlyWhereTheModelRefusesIt(t *testing.T) { + t.Parallel() + + const completion = `{"id":"x","object":"chat.completion","created":1,"model":"m",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}` + + send := func(t *testing.T, model string) string { + t.Helper() + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, completion) + })) + t.Cleanup(srv.Close) + llm, err := New(WithBaseURL(srv.URL), WithToken("test"), WithModel(model)) + if err != nil { + t.Fatalf("New() error: %v", err) + } + if _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithTemperature(0.5)); err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + return body + } + + for _, model := range []string{"gpt-5.1", "gpt-5.2", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano"} { + t.Run("keeps/"+model, func(t *testing.T) { + if body := send(t, model); !strings.Contains(body, `"temperature":0.5`) { + t.Fatalf("%s takes the caller's temperature, got body: %s", model, body) + } + }) + } + for _, model := range []string{"gpt-5", "gpt-5-mini", "gpt-5.5", "gpt-5.6-terra", "o3-mini"} { + t.Run("drops/"+model, func(t *testing.T) { + if body := send(t, model); strings.Contains(body, `"temperature"`) { + t.Fatalf("%s takes no temperature while it thinks, got body: %s", model, body) + } + }) + } +} + +func TestTopPDroppedOnlyWhereTheModelRejectsIt(t *testing.T) { + t.Parallel() + + const completion = `{"id":"x","object":"chat.completion","created":1,"model":"m",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}` + + send := func(t *testing.T, model string, opts ...llms.CallOption) string { + t.Helper() + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, completion) + })) + t.Cleanup(srv.Close) + llm, err := New(WithBaseURL(srv.URL), WithToken("test"), WithModel(model)) + if err != nil { + t.Fatalf("New() error: %v", err) + } + opts = append([]llms.CallOption{llms.WithTopP(0.9)}, opts...) + if _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, opts...); err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + return body + } + + for _, model := range []string{"gpt-4.1", "gpt-4o", "gpt-5.1", "gpt-5.2", "gpt-5.4-mini"} { + t.Run("keeps/"+model, func(t *testing.T) { + if body := send(t, model); !strings.Contains(body, `"top_p":0.9`) { + t.Fatalf("%s takes the caller's top_p, got body: %s", model, body) + } + }) + } + for _, model := range []string{"gpt-5", "gpt-5-mini", "gpt-5-nano", "o3", "o4-mini"} { + t.Run("drops/"+model, func(t *testing.T) { + if body := send(t, model); strings.Contains(body, "top_p") { + t.Fatalf("%s rejects top_p outright, got body: %s", model, body) + } + }) + t.Run("drops-with-reasoning/"+model, func(t *testing.T) { + body := send(t, model, llms.WithReasoning(llms.ReasoningHigh, 0)) + if strings.Contains(body, "top_p") { + t.Fatalf("%s rejects top_p with reasoning too, got body: %s", model, body) + } + }) + } +} + +func TestClaudeSamplingBehindTheOpenAITransport(t *testing.T) { + t.Parallel() + + const completion = `{"id":"x","object":"chat.completion","created":1,"model":"m",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}` + + send := func(t *testing.T, model string) string { + t.Helper() + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, completion) + })) + t.Cleanup(srv.Close) + llm, err := New(WithBaseURL(srv.URL), WithToken("test"), WithModel(model)) + if err != nil { + t.Fatalf("New() error: %v", err) + } + if _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithTemperature(0.5), llms.WithTopP(0.9)); err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + return body + } + + for _, model := range []string{ + "anthropic/claude-sonnet-5", "anthropic/claude-opus-4-7", "anthropic/claude-fable-5", + } { + t.Run("drops-both/"+model, func(t *testing.T) { + body := send(t, model) + if strings.Contains(body, "temperature") || strings.Contains(body, "top_p") { + t.Fatalf("%s rejects sampling outright, got body: %s", model, body) + } + }) + } + + for _, model := range []string{ + "anthropic/claude-haiku-4-5", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", + "anthropic/claude-sonnet-4-6", "anthropic/claude-opus-4-6", + } { + t.Run("keeps-temp-drops-topp/"+model, func(t *testing.T) { + body := send(t, model) + if !strings.Contains(body, `"temperature":0.5`) { + t.Fatalf("%s takes the caller's temperature, got body: %s", model, body) + } + if strings.Contains(body, "top_p") { + t.Fatalf("%s rejects temperature and top_p together, got body: %s", model, body) + } + }) + } +} + +func TestALevelOutsideTheVendorEnumDoesNotReachTheWire(t *testing.T) { + t.Parallel() + + const completion = `{"id":"x","object":"chat.completion","created":1,"model":"m",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}` + + for _, tc := range []struct { + model string + asked llms.ReasoningEffort + want string + reject string + }{ + {"kimi-k3", llms.ReasoningMedium, `"reasoning_effort":"low"`, `"medium"`}, + {"glm-5.3", llms.ReasoningMedium, `"reasoning_effort":"low"`, `"medium"`}, + {"glm-5.3-flash", llms.ReasoningXHigh, `"reasoning_effort":"high"`, `"xhigh"`}, + {"deepseek-v4-pro", llms.ReasoningMedium, `"reasoning_effort":"medium"`, ""}, + {"glm-5.2", llms.ReasoningMedium, `"reasoning_effort":"medium"`, ""}, + } { + t.Run(tc.model+"/"+string(tc.asked), func(t *testing.T) { + t.Parallel() + + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, completion) + })) + defer srv.Close() + + llm, err := New(WithBaseURL(srv.URL), WithToken("test"), WithModel(tc.model)) + if err != nil { + t.Fatalf("New() error: %v", err) + } + if _, err := llm.GenerateContent( + context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithReasoning(tc.asked, 0), + ); err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + + if !strings.Contains(body, tc.want) { + t.Fatalf("%s: wire body missing %s\nbody: %s", tc.model, tc.want, body) + } + if tc.reject != "" && strings.Contains(body, tc.reject) { + t.Fatalf("%s: %s reached the wire although the vendor documents an enum without it\nbody: %s", + tc.model, tc.reject, body) + } + }) + } +} diff --git a/llms/openai/reasoning_off_and_budget_test.go b/llms/openai/reasoning_off_and_budget_test.go new file mode 100644 index 000000000..0df36712b --- /dev/null +++ b/llms/openai/reasoning_off_and_budget_test.go @@ -0,0 +1,102 @@ +package openai + +import ( + "context" + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func wireBodyOf(t *testing.T, model string, opts []Option, call ...llms.CallOption) (map[string]any, error) { + t.Helper() + + var raw []byte + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + raw, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"x","object":"chat.completion","created":1,"model":"`+model+`",`+ + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}]}`) + })) + t.Cleanup(srv.Close) + + llm := newUnitLLM(t, append([]Option{WithBaseURL(srv.URL), WithModel(model)}, opts...)...) + + _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, call...) + if err != nil { + return nil, err + } + + var body map[string]any + require.NoError(t, json.Unmarshal(raw, &body)) + return body, nil +} + +// offAndAdaptive reaches past the call options: each of them replaces the whole +// config, so only a caller filling the exported struct can set both. +func offAndAdaptive() llms.CallOption { + return func(o *llms.CallOptions) { + o.Reasoning = &llms.ReasoningConfig{Mode: llms.ReasoningOff, Adaptive: true} + } +} + +func TestAnExplicitOffOutranksTheAdaptiveFlag(t *testing.T) { + t.Parallel() + + body, err := wireBodyOf(t, "gpt-5.1", nil, offAndAdaptive()) + require.NoError(t, err) + + require.Contains(t, body, "reasoning_effort", + "the caller asked to switch thinking off, and the vendor needs the field to hear it") + assert.Equal(t, "none", body["reasoning_effort"]) +} + +func TestAdaptiveAloneStillLeavesTheDepthToTheVendor(t *testing.T) { + t.Parallel() + + body, err := wireBodyOf(t, "gpt-5.1", nil, llms.WithAdaptiveReasoning("")) + require.NoError(t, err) + + assert.NotContains(t, body, "reasoning_effort", + "an adaptive request with no effort hands the depth to the vendor") +} + +func TestABudgetRequestWithToolsReachesTheVendor(t *testing.T) { + t.Parallel() + + tool := llms.Tool{Type: "function", Function: &llms.FunctionDefinition{ + Name: "lookup", + Parameters: map[string]any{"type": "object", "properties": map[string]any{}}, + }} + + body, err := wireBodyOf(t, "gpt-5.6", []Option{WithModernReasoningFormat(), WithUsingReasoningMaxTokens()}, + llms.WithTools([]llms.Tool{tool}), llms.WithReasoning(llms.ReasoningNone, 3000)) + require.NoError(t, err, "a budget is not an effort; tools do not forbid it") + + reasoningField, ok := body["reasoning"].(map[string]any) + require.True(t, ok, "the budget must reach the wire: %v", body) + assert.InDelta(t, 3000, reasoningField["max_tokens"], 0) + assert.NotContains(t, reasoningField, "effort", + "the effort the vendor refuses next to tools stays off the wire") +} + +func TestAnEffortRequestWithToolsIsStillRefusedBeforeTheNetwork(t *testing.T) { + t.Parallel() + + tool := llms.Tool{Type: "function", Function: &llms.FunctionDefinition{ + Name: "lookup", + Parameters: map[string]any{"type": "object", "properties": map[string]any{}}, + }} + + _, err := wireBodyOf(t, "gpt-5.6", nil, + llms.WithTools([]llms.Tool{tool}), llms.WithReasoning(llms.ReasoningHigh, 0)) + require.Error(t, err) + assert.Contains(t, err.Error(), "rejects reasoning effort") +} diff --git a/llms/openai/reasoning_replay_test.go b/llms/openai/reasoning_replay_test.go new file mode 100644 index 000000000..11f2774ef --- /dev/null +++ b/llms/openai/reasoning_replay_test.go @@ -0,0 +1,186 @@ +package openai + +import ( + "context" + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func replayedReasoning(t *testing.T, model string) []any { + t.Helper() + + turns := assistantTurnsSent(t, model) + replayed := make([]any, 0, len(turns)) + for _, turn := range turns { + replayed = append(replayed, turn["reasoning_content"]) + } + return replayed +} + +func assistantTurnsSent(t *testing.T, model string) []map[string]any { + t.Helper() + + thought := func(text string) *reasoning.ContentReasoning { return &reasoning.ContentReasoning{Content: text} } + return assistantTurnsSentFor(t, model, []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "first"), + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.TextPartWithReasoning("answered in text", thought("text turn thought")), + }}, + llms.TextParts(llms.ChatMessageTypeHuman, "second"), + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.TextPartWithReasoning("", thought("tool turn thought")), + llms.ToolCall{ID: "c1", Type: "function", FunctionCall: &llms.FunctionCall{Name: "f", Arguments: "{}"}}, + }}, + {Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{ + llms.ToolCallResponse{ToolCallID: "c1", Name: "f", Content: "done"}, + }}, + }) +} + +func assistantTurnsSentFor(t *testing.T, model string, history []llms.MessageContent) []map[string]any { + t.Helper() + + var body map[string]any + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + raw, err := io.ReadAll(r.Body) + if err != nil { + t.Errorf("read request: %v", err) + return + } + if err := json.Unmarshal(raw, &body); err != nil { + t.Errorf("decode request: %v", err) + return + } + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"1","object":"chat.completion","created":1,"model":"m",`+ + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],`+ + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`) + })) + defer server.Close() + + llm, err := New(WithBaseURL(server.URL), WithToken("token"), WithModel(model), WithPreserveReasoningContent()) + require.NoError(t, err) + + tools := []llms.Tool{{Type: "function", Function: &llms.FunctionDefinition{ + Name: "f", Parameters: map[string]any{"type": "object"}, + }}} + + _, err = llm.GenerateContent(context.Background(), history, llms.WithTools(tools)) + require.NoError(t, err) + + var turns []map[string]any + for _, raw := range body["messages"].([]any) { + msg := raw.(map[string]any) + if msg["role"] == "assistant" { + turns = append(turns, msg) + } + } + return turns +} + +func TestPreservedThinkingGetsBackTheReasoningOfEveryAssistantTurn(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "deepseek-v4-pro", "deepseek-flash", "deepseek/deepseek-v4-pro", + "kimi-k3", "kimi-k2.7-code", "moonshot/kimi-k2.6", "glm-5.2", "zai/glm-5.3", + "qwen3.7-plus", "dashscope/qwen3.8-max", + } { + assert.Equal(t, []any{"text turn thought", "tool turn thought"}, replayedReasoning(t, model), model) + } +} + +func TestMiniMaxGetsBackTheReasoningOfEveryAssistantTurnInThinkTags(t *testing.T) { + t.Parallel() + + for _, model := range []string{"minimax/MiniMax-M3", "MiniMax-M2.7"} { + turns := assistantTurnsSent(t, model) + require.Len(t, turns, 2, model) + + assert.Equal(t, "text turn thoughtanswered in text", turns[0]["content"], model) + assert.Equal(t, "tool turn thought", turns[1]["content"], model) + assert.NotEmpty(t, turns[1]["tool_calls"], model) + for _, turn := range turns { + assert.NotContains(t, turn, "reasoning_content", model) + } + } +} + +func TestMiniMaxTurnThatAlreadyHoldsItsThinkBlockGoesBackAsItIs(t *testing.T) { + t.Parallel() + + const textThought = `The user is asking me to reply with the single word "PONG".` + const toolThought = `The user is asking me to call the get_weather function for Paris.` + textContent := "\n" + textThought + "\n\n\nPONG" + toolContent := "\n" + toolThought + "\n\n\nI'll get the current weather for Paris for you." + + for _, model := range []string{"minimax/MiniMax-M3", "MiniMax-M2.7"} { + turns := assistantTurnsSentFor(t, model, []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "Reply with the single word PONG."), + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.TextPartWithReasoning(textContent, &reasoning.ContentReasoning{Content: textThought}), + }}, + llms.TextParts(llms.ChatMessageTypeHuman, "Call get_weather for Paris."), + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.TextPartWithReasoning(toolContent, &reasoning.ContentReasoning{Content: toolThought}), + llms.ToolCall{ID: "c1", Type: "function", FunctionCall: &llms.FunctionCall{Name: "f", Arguments: "{}"}}, + }}, + {Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{ + llms.ToolCallResponse{ToolCallID: "c1", Name: "f", Content: "done"}, + }}, + }) + require.Len(t, turns, 2, model) + + assert.Equal(t, textContent, turns[0]["content"], model) + assert.Equal(t, toolContent, turns[1]["content"], model) + for _, turn := range turns { + assert.NotContains(t, turn, "reasoning_content", model) + } + } +} + +func TestMiniMaxTurnWithoutReasoningGoesBackWithoutThinkTags(t *testing.T) { + t.Parallel() + + for _, model := range []string{"minimax/MiniMax-M3", "MiniMax-M2.7"} { + turns := assistantTurnsSentFor(t, model, []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "first"), + llms.TextParts(llms.ChatMessageTypeAI, "summary without reasoning"), + llms.TextParts(llms.ChatMessageTypeHuman, "second"), + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.ToolCall{ID: "c1", Type: "function", FunctionCall: &llms.FunctionCall{Name: "f", Arguments: "{}"}}, + }}, + {Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{ + llms.ToolCallResponse{ToolCallID: "c1", Name: "f", Content: "done"}, + }}, + }) + require.Len(t, turns, 2, model) + + assert.Equal(t, "summary without reasoning", turns[0]["content"], model) + assert.Equal(t, "", turns[1]["content"], model) + assert.NotEmpty(t, turns[1]["tool_calls"], model) + for _, turn := range turns { + assert.NotContains(t, turn, "reasoning_content", model) + } + } +} + +func TestOtherVendorsGetBackOnlyTheReasoningOfToolTurns(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "grok-4", "mistralai/mistral-small-2603", "openrouter/mistralai/mistral-medium-3-5", "magistral:24b", + "mistral-ai/mistral-small-2603", + } { + assert.Equal(t, []any{nil, "tool turn thought"}, replayedReasoning(t, model), model) + } +} diff --git a/llms/openai/reasoning_validation_test.go b/llms/openai/reasoning_validation_test.go new file mode 100644 index 000000000..7d51196c3 --- /dev/null +++ b/llms/openai/reasoning_validation_test.go @@ -0,0 +1,42 @@ +package openai + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "sync/atomic" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func TestAnUnknownEffortIsRefusedBeforeTheRequestIsSent(t *testing.T) { + t.Parallel() + + var calls atomic.Int32 + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + calls.Add(1) + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"x","object":"chat.completion","created":1,"model":"gpt-4o", + "choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}], + "usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`) + })) + t.Cleanup(srv.Close) + + llm := newUnitLLM(t, WithBaseURL(srv.URL), WithModel("gpt-4o")) + + _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithReasoning("banana", 0)) + + var apiErr *llms.Error + require.ErrorAs(t, err, &apiErr) + assert.Equal(t, llms.ErrCodeInvalidRequest, apiErr.Code) + assert.Contains(t, apiErr.Message, "banana") + assert.Zero(t, calls.Load(), "an effort no door accepts must not cost a request") +} diff --git a/llms/openai/reasoning_wire_test.go b/llms/openai/reasoning_wire_test.go new file mode 100644 index 000000000..edfd48105 --- /dev/null +++ b/llms/openai/reasoning_wire_test.go @@ -0,0 +1,449 @@ +package openai + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/vxcontrol/langchaingo/llms" +) + +func sendModernReasoningForWire(t *testing.T, effort llms.ReasoningEffort, tokens int) string { + return sendModernReasoningForModel(t, "gpt-5", effort, tokens) +} + +func sendModernReasoningForModel(t *testing.T, model string, effort llms.ReasoningEffort, tokens int) string { + t.Helper() + + const completion = `{"id":"x","object":"chat.completion","created":1,"model":"m",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}` + + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, completion) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithBaseURL(srv.URL), WithToken("test"), WithModel(model), + WithModernReasoningFormat(), WithUsingReasoningMaxTokens()) + if err != nil { + t.Fatalf("New() error: %v", err) + } + if _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithReasoning(effort, tokens)); err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + return body +} + +func sendModernReasoningBody(t *testing.T, model string, effort llms.ReasoningEffort, tokens, maxTokens int) string { + t.Helper() + + const completion = `{"id":"x","object":"chat.completion","created":1,"model":"m",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}` + + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, completion) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithBaseURL(srv.URL), WithToken("test"), WithModel(model), + WithModernReasoningFormat(), WithUsingReasoningMaxTokens()) + if err != nil { + t.Fatalf("New() error: %v", err) + } + if _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithReasoning(effort, tokens), llms.WithMaxTokens(maxTokens)); err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + return body +} + +func TestModernReasoningSendsNoBudgetItCannotCompute(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + effort llms.ReasoningEffort + tokens int + present string + absent string + }{ + { + name: "an effort with no budget mapping falls back to the effort itself", + effort: llms.ReasoningEffort("minimal"), + tokens: -5, + present: `"effort":"minimal"`, + absent: `"max_tokens":-`, + }, + { + name: "a negative budget is no budget at all, so the effort travels", + effort: llms.ReasoningMedium, + tokens: -5, + present: `"effort":"medium"`, + absent: `"max_tokens"`, + }, + { + name: "an explicit budget is sent as given", + effort: llms.ReasoningMedium, + tokens: 2048, + present: `"max_tokens":2048`, + absent: `"effort"`, + }, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + body := sendModernReasoningForWire(t, tc.effort, tc.tokens) + if !strings.Contains(body, tc.present) { + t.Errorf("want %s on the wire, got body: %s", tc.present, body) + } + if strings.Contains(body, tc.absent) { + t.Errorf("want no %s on the wire, got body: %s", tc.absent, body) + } + }) + } +} + +func TestTheBudgetOnTheWireRespectsTheVendorFloor(t *testing.T) { + t.Parallel() + + body := sendModernReasoningForModel(t, "claude-sonnet-4-5", llms.ReasoningNone, 100) + if !strings.Contains(body, `"max_tokens":1024`) { + t.Fatalf("a budget under the vendor floor must be raised to it, got body: %s", body) + } + + untouched := sendModernReasoningForModel(t, "gpt-5", llms.ReasoningNone, 100) + if !strings.Contains(untouched, `"max_tokens":100`) { + t.Fatalf("the floor is Anthropic's alone, got body: %s", untouched) + } +} + +func TestABudgetTravelsToADoorThatRejectsTheEffortField(t *testing.T) { + t.Parallel() + + for _, model := range []string{"qwen3-235b-a22b-thinking-2507", "qwq-32b"} { + t.Run(model, func(t *testing.T) { + t.Parallel() + + body := sendModernReasoningForModel(t, model, llms.ReasoningNone, 4000) + + if !strings.Contains(body, `"reasoning":{"max_tokens":4000}`) { + t.Fatalf("an explicit budget must reach a door that only rejects the effort field; body: %s", body) + } + if strings.Contains(body, `"effort"`) { + t.Fatalf("the effort field itself must stay off a door that rejects it; body: %s", body) + } + }) + } +} + +func TestTheEffortFieldStaysOffADoorThatRejectsIt(t *testing.T) { + t.Parallel() + + body := sendModernReasoningForModel(t, "qwq-32b", llms.ReasoningHigh, 0) + + if strings.Contains(body, `"effort"`) { + t.Fatalf("an effort-only request must not put the field on a door that rejects it; body: %s", body) + } +} + +func TestBothDeepSeekReasonerNamesRefuseTheOffTheSameWay(t *testing.T) { + for _, model := range []string{"deepseek-reasoner", "deepseek-r1"} { + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"id":"x","object":"chat.completion","created":1,"model":"m",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`)) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithBaseURL(srv.URL), WithToken("test"), WithModel(model)) + if err != nil { + t.Fatalf("New() error: %v", err) + } + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithReasoningDisabled()) + if err == nil { + t.Fatalf("%s reasons whatever is asked, so the disable must return a typed error", model) + } + if !strings.Contains(err.Error(), "reasoning cannot be disabled") { + t.Fatalf("%s: expected the typed disable error, got: %v", model, err) + } + } +} + +func TestABudgetLargerThanTheAnswerLimitRaisesTheLimit(t *testing.T) { + body := sendModernReasoningBody(t, "anthropic/claude-opus-4-5", llms.ReasoningNone, 100, 512) + + if !strings.Contains(body, `"max_tokens":1024`) && !strings.Contains(body, `"max_completion_tokens":1024`) { + t.Fatalf("the floor raised the budget to 1024, so the answer limit must follow: %s", body) + } + if strings.Contains(body, `"max_completion_tokens":512`) || strings.Contains(body, `"max_tokens":512`) { + t.Fatalf("a 512-token answer limit leaves no room once a 1024-token budget is spent: %s", body) + } +} + +func captureWireWithClient(t *testing.T, model string, clientOpts []Option, callOpts ...llms.CallOption) string { + t.Helper() + + const completion = `{"id":"x","object":"chat.completion","created":1,"model":"m",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}` + + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, completion) + })) + t.Cleanup(srv.Close) + + opts := append([]Option{WithBaseURL(srv.URL), WithToken("test"), WithModel(model)}, clientOpts...) + llm, err := New(opts...) + if err != nil { + t.Fatalf("New() error: %v", err) + } + if _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, callOpts...); err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + return body +} + +func TestAnswerLimitClearsTheBudgetTheThinkingWillSpend(t *testing.T) { + t.Parallel() + + const claude = "anthropic/claude-sonnet-4-5" + modern := []Option{WithModernReasoningFormat()} + budgetField := []Option{WithModernReasoningFormat(), WithUsingReasoningMaxTokens()} + + for _, tc := range []struct { + name string + client []Option + call []llms.CallOption + want string + }{ + {"legacy format, the thinking object carries the budget", nil, + []llms.CallOption{llms.WithReasoning("", 2048), llms.WithMaxTokens(512)}, `"max_completion_tokens":2048`}, + {"modern format, effort carries the thinking", modern, + []llms.CallOption{llms.WithReasoning("", 2048), llms.WithMaxTokens(512)}, `"max_completion_tokens":8192`}, + {"an effort with no budget of its own", nil, + []llms.CallOption{llms.WithReasoning(llms.ReasoningHigh, 0), llms.WithMaxTokens(512)}, `"max_completion_tokens":8192`}, + {"a lower effort stands for a smaller budget", nil, + []llms.CallOption{llms.WithReasoning(llms.ReasoningLow, 0), llms.WithMaxTokens(512)}, `"max_completion_tokens":2048`}, + {"modern format, budget field carries the thinking", budgetField, + []llms.CallOption{llms.WithReasoning("", 2048), llms.WithMaxTokens(512)}, `"max_completion_tokens":2048`}, + } { + t.Run(tc.name, func(t *testing.T) { + body := captureWireWithClient(t, claude, tc.client, tc.call...) + if strings.Contains(body, `"max_completion_tokens":512`) { + t.Errorf("a 512-token answer limit leaves no room once the thinking is paid for: %s", body) + } + if !strings.Contains(body, tc.want) { + t.Errorf("want %s on the wire, got body: %s", tc.want, body) + } + }) + } +} + +func TestAnswerLimitStaysWhereNothingSpendsABudget(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + model string + call []llms.CallOption + }{ + {"a thinking model of another vendor", "gpt-5", + []llms.CallOption{llms.WithReasoning(llms.ReasoningHigh, 0), llms.WithMaxTokens(512)}}, + {"no reasoning asked at all", "anthropic/claude-sonnet-4-5", + []llms.CallOption{llms.WithMaxTokens(512)}}, + } { + t.Run(tc.name, func(t *testing.T) { + body := captureWireWithClient(t, tc.model, nil, tc.call...) + if !strings.Contains(body, `"max_completion_tokens":512`) { + t.Errorf("nothing spends a budget here, so the limit must reach the wire verbatim: %s", body) + } + }) + } +} + +func TestRaisingTheLimitDoesNotEditTheCallersOption(t *testing.T) { + t.Parallel() + + reused := []llms.CallOption{llms.WithReasoning("", 2048), llms.WithMaxTokens(512)} + client := []Option{WithModernReasoningFormat(), WithUsingReasoningMaxTokens()} + + first := captureWireWithClient(t, "anthropic/claude-sonnet-4-5", client, reused...) + second := captureWireWithClient(t, "anthropic/claude-sonnet-4-5", client, reused...) + + if first != second { + t.Errorf("one call must not edit the option the next one reuses:\nfirst: %s\nsecond: %s", first, second) + } + if !strings.Contains(second, `"reasoning":{"max_tokens":1024}`) { + t.Errorf("want the vendor floor budget on the reused call, got: %s", second) + } +} + +func TestVerbosityReachesTheWireOnlyWhenAsked(t *testing.T) { + t.Parallel() + + capture := func(t *testing.T, opts ...llms.CallOption) string { + t.Helper() + + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + raw, _ := io.ReadAll(r.Body) + body = string(raw) + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"id":"x","object":"chat.completion","created":1,"model":"m",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`)) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithBaseURL(srv.URL), WithToken("test"), WithModel("gpt-5.6")) + if err != nil { + t.Fatalf("New() error: %v", err) + } + if _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, opts...); err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + return body + } + + t.Run("asked", func(t *testing.T) { + t.Parallel() + + if body := capture(t, llms.WithVerbosity("low")); !strings.Contains(body, `"verbosity":"low"`) { + t.Fatalf("verbosity must reach the wire, got body: %s", body) + } + }) + + t.Run("not asked", func(t *testing.T) { + t.Parallel() + + if body := capture(t); strings.Contains(body, "verbosity") { + t.Fatalf("an unset verbosity must stay off the wire, got body: %s", body) + } + }) +} + +func TestTheOutputLimitPicksTheFieldTheRouteUnderstands(t *testing.T) { + t.Parallel() + + capture := func(t *testing.T, model string, opts ...llms.CallOption) string { + t.Helper() + + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + raw, _ := io.ReadAll(r.Body) + body = string(raw) + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"id":"x","object":"chat.completion","created":1,"model":"m",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`)) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithBaseURL(srv.URL), WithToken("test"), WithModel(model)) + if err != nil { + t.Fatalf("New() error: %v", err) + } + all := append([]llms.CallOption{llms.WithMaxTokens(800)}, opts...) + if _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, all...); err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + return body + } + + for _, model := range []string{ + "grok-4-1-fast", "qwen3.5-35b-a3b", "dashscope/qwen3.7-plus", "qwq-32b", + "deepseek-v4-pro", "deepseek-v4-flash", "deepseek/deepseek-v4-pro", "deepseek-r1", + } { + body := capture(t, model) + if !strings.Contains(body, `"max_tokens":800`) { + t.Errorf("%s must receive max_tokens, got body: %s", model, body) + } + if strings.Contains(body, "max_completion_tokens") { + t.Errorf("%s must not receive max_completion_tokens, got body: %s", model, body) + } + } + + for _, model := range []string{"gpt-5.4", "gpt-4.1", "o3", "claude-sonnet-4-5", "glm-5.2", "kimi-k3"} { + body := capture(t, model) + if !strings.Contains(body, `"max_completion_tokens":800`) { + t.Errorf("%s must keep max_completion_tokens, got body: %s", model, body) + } + } + + body := capture(t, "gpt-5.4", WithLegacyMaxTokensField()) + if !strings.Contains(body, `"max_tokens":800`) { + t.Errorf("the explicit option must still win, got body: %s", body) + } +} + +func sendDoorDefaultReasoning(t *testing.T, model string, effort llms.ReasoningEffort) string { + t.Helper() + + const completion = `{"id":"x","object":"chat.completion","created":1,"model":"m",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}` + + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, completion) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithBaseURL(srv.URL), WithToken("test"), WithModel(model)) + if err != nil { + t.Fatalf("New() error: %v", err) + } + if _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithReasoning(effort, 0)); err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + return body +} + +func TestTheChatCompletionsDoorSendsTheFlatEffortField(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gpt-5", "anthropic/claude-sonnet-5", "deepseek-v4-pro"} { + t.Run(model, func(t *testing.T) { + t.Parallel() + + body := sendDoorDefaultReasoning(t, model, llms.ReasoningHigh) + + if !strings.Contains(body, `"reasoning_effort":"high"`) { + t.Fatalf("effort must travel as the flat field, got body: %s", body) + } + if strings.Contains(body, `"reasoning":{`) { + t.Fatalf("the nested reasoning object belongs to another door, got body: %s", body) + } + }) + } +} diff --git a/llms/openai/refusal_test.go b/llms/openai/refusal_test.go new file mode 100644 index 000000000..bbffaa395 --- /dev/null +++ b/llms/openai/refusal_test.go @@ -0,0 +1,102 @@ +package openai + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func TestARefusalReachesTheCallerAsATypedError(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"x","object":"chat.completion","created":1,"model":"gpt-4o", + "choices":[{"index":0,"message":{"role":"assistant","content":"", + "refusal":"I can't help with that."},"finish_reason":"stop"}], + "usage":{"prompt_tokens":11,"completion_tokens":7,"total_tokens":18}}`) + })) + t.Cleanup(srv.Close) + + llm := newUnitLLM(t, WithBaseURL(srv.URL), WithModel("gpt-4o")) + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + + var refusal *llms.ErrModelRefusal + require.ErrorAs(t, err, &refusal) + assert.Equal(t, "I can't help with that.", refusal.Message) + assert.Equal(t, 11, refusal.InputTokens) + assert.Equal(t, 7, refusal.OutputTokens) + + require.NotNil(t, resp, "the response travels with the error so usage survives") + assert.Equal(t, "I can't help with that.", resp.Choices[0].GenerationInfo["Refusal"]) +} + +func TestAStructuredOutputRefusalKeepsBothItsTypes(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"x","object":"chat.completion","created":1,"model":"gpt-4o", + "choices":[{"index":0,"message":{"role":"assistant","content":"", + "refusal":"I can't help with that."},"finish_reason":"stop"}], + "usage":{"prompt_tokens":11,"completion_tokens":7,"total_tokens":18}}`) + })) + t.Cleanup(srv.Close) + + llm := newUnitLLM(t, WithBaseURL(srv.URL), WithModel("gpt-4o")) + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStructuredOutput(llms.StructuredOutputConfig{ + Name: "answer", + Schema: []byte(`{"type":"object","additionalProperties":false,"properties":{"a":{"type":"string"}},"required":["a"]}`), + })) + + var structured *ErrStructuredOutputRefusal + require.ErrorAs(t, err, &structured, + "a refusal to a structured-output request must reach the caller as the exported type") + assert.Equal(t, "gpt-4o", structured.Model) + assert.Equal(t, 0, structured.Choice) + assert.Equal(t, "I can't help with that.", structured.Refusal) + + var refusal *llms.ErrModelRefusal + require.ErrorAs(t, err, &refusal, "the cross-door type must still match, or door parity breaks") + assert.Equal(t, 11, refusal.InputTokens) + + require.NotNil(t, resp) +} + +func TestARefusalReportsTheUncachedInputSeparately(t *testing.T) { + t.Parallel() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"x","object":"chat.completion","created":1,"model":"gpt-4o", + "choices":[{"index":0,"message":{"role":"assistant","content":"", + "refusal":"I can't help with that."},"finish_reason":"stop"}], + "usage":{"prompt_tokens":100,"completion_tokens":7,"total_tokens":107, + "prompt_tokens_details":{"cached_tokens":80}}}`) + })) + t.Cleanup(srv.Close) + + llm := newUnitLLM(t, WithBaseURL(srv.URL), WithModel("gpt-4o")) + _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + + var refusal *llms.ErrModelRefusal + require.ErrorAs(t, err, &refusal) + assert.Equal(t, 20, refusal.InputTokens, "InputTokens counts only the uncached input") + assert.Equal(t, 80, refusal.CacheReadInputTokens) + assert.Equal(t, 100, refusal.InputTokens+refusal.CacheCreationInputTokens+refusal.CacheReadInputTokens, + "the three input counts must add up to the billed prompt") +} diff --git a/llms/openai/sampling_matrix_test.go b/llms/openai/sampling_matrix_test.go new file mode 100644 index 000000000..c721c711a --- /dev/null +++ b/llms/openai/sampling_matrix_test.go @@ -0,0 +1,391 @@ +package openai + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/vxcontrol/langchaingo/llms" +) + +func sendForWire(t *testing.T, model string, opts ...llms.CallOption) string { + t.Helper() + + const completion = `{"id":"x","object":"chat.completion","created":1,"model":"m",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}` + + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, completion) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithBaseURL(srv.URL), WithToken("test"), WithModel(model)) + if err != nil { + t.Fatalf("New() error: %v", err) + } + if _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, opts...); err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + return body +} + +func sendMessagesForWire(t *testing.T, model string, messages []llms.MessageContent) string { + t.Helper() + + const completion = `{"id":"x","object":"chat.completion","created":1,"model":"m",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}` + + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, completion) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithBaseURL(srv.URL), WithToken("test"), WithModel(model)) + if err != nil { + t.Fatalf("New() error: %v", err) + } + if _, err := llm.GenerateContent(context.Background(), messages); err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + return body +} + +type samplingCase struct { + name string + model string + opts []llms.CallOption + present []string + absent []string +} + +func runSamplingCases(t *testing.T, cases []samplingCase) { + t.Helper() + + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + body := sendForWire(t, tc.model, tc.opts...) + for _, want := range tc.present { + if !strings.Contains(body, want) { + t.Errorf("want %s on the wire, got body: %s", want, body) + } + } + for _, unwanted := range tc.absent { + if strings.Contains(body, unwanted) { + t.Errorf("want no %s on the wire, got body: %s", unwanted, body) + } + } + }) + } +} + +func TestSamplingMatrix(t *testing.T) { + t.Parallel() + + temp := llms.WithTemperature(0.3) + topP := llms.WithTopP(0.9) + high := llms.WithReasoning(llms.ReasoningHigh, 0) + off := llms.WithReasoningDisabled() + tools := llms.WithTools([]llms.Tool{weatherTool()}) + + runSamplingCases(t, []samplingCase{{ + name: "an opt-in model keeps its temperature until asked to think", + model: "gpt-5.4", + opts: []llms.CallOption{temp, topP}, + present: []string{`"temperature":0.3`}, + absent: []string{`"reasoning_effort"`}, + }, { + name: "the same model loses its sampling once an effort is asked for", + model: "gpt-5.4", + opts: []llms.CallOption{temp, topP, high}, + present: []string{`"reasoning_effort":"high"`}, + absent: []string{`"temperature"`, `"top_p"`}, + }, { + name: "a model that thinks from the start loses its sampling", + model: "gpt-5.5", + opts: []llms.CallOption{temp, topP, high}, + present: []string{`"reasoning_effort":"high"`}, + absent: []string{`"temperature"`, `"top_p"`}, + }, { + name: "disabled thinking leaves both sampling params alone", + model: "gpt-5.5", + opts: []llms.CallOption{temp, topP, off}, + present: []string{`"temperature":0.3`, `"top_p":0.9`, `"reasoning_effort":"none"`}, + }, { + name: "the none that tools force on 5.6 leaves the sampling alone", + model: "gpt-5.6-sol", + opts: []llms.CallOption{temp, topP, tools}, + present: []string{`"temperature":0.3`, `"top_p":0.9`, `"reasoning_effort":"none"`}, + }, { + name: "the none that tools force on 6-sol leaves the sampling alone", + model: "gpt-6-sol", + opts: []llms.CallOption{temp, topP, tools}, + present: []string{`"temperature":0.3`, `"top_p":0.9`, `"reasoning_effort":"none"`}, + }, { + name: "omitted effort falls back to the model for an accepting name", + model: "gpt-5.4", + opts: []llms.CallOption{temp, topP}, + present: []string{`"temperature":0.3`, `"top_p":0.9`}, + absent: []string{`"reasoning_effort"`}, + }, { + name: "omitted effort strips a name that thinks by default", + model: "gpt-5.5", + opts: []llms.CallOption{temp, topP}, + absent: []string{`"temperature"`, `"top_p"`, `"reasoning_effort"`}, + }, { + name: "thinking takes both penalties off the wire", + model: "gpt-5.4", + opts: []llms.CallOption{ + llms.WithFrequencyPenalty(0.5), llms.WithPresencePenalty(0.4), high, + }, + present: []string{`"reasoning_effort":"high"`}, + absent: []string{`"frequency_penalty"`, `"presence_penalty"`}, + }, { + name: "penalties ride along once thinking is switched off", + model: "gpt-5.5", + opts: []llms.CallOption{ + llms.WithFrequencyPenalty(0.5), llms.WithPresencePenalty(0.4), off, + }, + present: []string{`"frequency_penalty":0.5`, `"presence_penalty":0.4`, `"reasoning_effort":"none"`}, + }, { + name: "the bottom of the first GPT-5 scale still thinks and loses its sampling", + model: "gpt-5-mini", + opts: []llms.CallOption{temp, topP, llms.WithReasoning(llms.ReasoningMinimal, 0)}, + present: []string{`"reasoning_effort":"minimal"`}, + absent: []string{`"temperature"`, `"top_p"`}, + }, { + name: "a non-reasoning model keeps everything", + model: "gpt-4.1", + opts: []llms.CallOption{temp, topP}, + present: []string{`"temperature":0.3`, `"top_p":0.9`}, + }}) +} + +func TestClaudeSamplingMatrix(t *testing.T) { + t.Parallel() + + temp := llms.WithTemperature(0.3) + topP := llms.WithTopP(0.9) + high := llms.WithReasoning(llms.ReasoningHigh, 0) + + runSamplingCases(t, []samplingCase{{ + name: "a model that rejects sampling gets neither param", + model: "claude-opus-4-7", + opts: []llms.CallOption{temp, topP}, + absent: []string{`"temperature"`, `"top_p"`}, + }, { + name: "mutually exclusive sampling drops top_p and keeps temperature", + model: "claude-opus-4-5", + opts: []llms.CallOption{temp, topP}, + present: []string{`"temperature":0.3`}, + absent: []string{`"top_p"`}, + }, { + name: "an omitted effort leaves a request-only thinker unpinned", + model: "claude-opus-4-5", + opts: []llms.CallOption{temp}, + present: []string{`"temperature":0.3`}, + absent: []string{`"reasoning_effort"`}, + }, { + name: "thinking pins the temperature even when top_p forced a drop", + model: "claude-sonnet-4-5", + opts: []llms.CallOption{temp, topP, high}, + present: []string{`"temperature":1`, `"reasoning_effort":"high"`}, + absent: []string{`"top_p"`}, + }, { + name: "an effort above the generation's ceiling is lowered", + model: "claude-opus-4-6", + opts: []llms.CallOption{llms.WithReasoning(llms.ReasoningXHigh, 0)}, + present: []string{`"reasoning_effort":"high"`}, + absent: []string{`"reasoning_effort":"xhigh"`}, + }, { + name: "thinking takes top_k off the wire alongside top_p", + model: "claude-sonnet-4-5", + opts: []llms.CallOption{topP, llms.WithTopK(40), high}, + present: []string{`"reasoning_effort":"high"`}, + absent: []string{`"top_p"`, `"top_k"`}, + }, { + name: "top_k rides along when nothing asked the model to think", + model: "claude-sonnet-4-5", + opts: []llms.CallOption{llms.WithTopK(40)}, + present: []string{`"top_k":40`}, + absent: []string{`"reasoning_effort"`}, + }, { + name: "extra body overwrites a param the policy stripped", + model: "claude-opus-4-7", + opts: []llms.CallOption{temp, topP, WithExtraBody(map[string]any{"temperature": 0.7})}, + present: []string{`"temperature":0.7`}, + absent: []string{`"top_p"`}, + }}) +} + +func TestAModelThatRejectsSamplingGetsNoSamplingAtAll(t *testing.T) { + t.Parallel() + + body := sendForWire(t, "claude-opus-4-7", + llms.WithTemperature(0.3), llms.WithTopP(0.9), llms.WithTopK(40), llms.WithMinP(0.05)) + + for _, field := range []string{`"temperature"`, `"top_p"`, `"top_k"`, `"min_p"`} { + if strings.Contains(body, field) { + t.Errorf("want no %s on the wire, got body: %s", field, body) + } + } +} + +func TestMinPStaysOffTheWireForClaude(t *testing.T) { + t.Parallel() + + minP := llms.WithMinP(0.05) + high := llms.WithReasoning(llms.ReasoningHigh, 0) + + runSamplingCases(t, []samplingCase{{ + name: "a Claude model outside the rejects-sampling class still loses min_p", + model: "claude-sonnet-4-5", + opts: []llms.CallOption{minP}, + absent: []string{`"min_p"`}, + }, { + name: "thinking does not put min_p back on the wire", + model: "claude-sonnet-4-5", + opts: []llms.CallOption{minP, high}, + present: []string{`"reasoning_effort":"high"`}, + absent: []string{`"min_p"`}, + }, { + name: "the bedrock spelling of a Claude model loses it too", + model: "us.anthropic.claude-sonnet-4-5-v1:0", + opts: []llms.CallOption{minP}, + absent: []string{`"min_p"`}, + }, { + name: "a thinking model of another vendor keeps min_p", + model: "zai/glm-5.3", + opts: []llms.CallOption{minP, high}, + present: []string{`"min_p":0.05`}, + }, { + name: "a plain model of another vendor keeps min_p", + model: "zai/glm-4.5-air", + opts: []llms.CallOption{minP}, + present: []string{`"min_p":0.05`}, + }, { + name: "OpenAI's own endpoint refuses the whole request on min_p", + model: "gpt-4o", + opts: []llms.CallOption{minP}, + absent: []string{`"min_p"`}, + }, { + name: "thinking does not put min_p back for OpenAI either", + model: "gpt-5.5", + opts: []llms.CallOption{minP, high}, + present: []string{`"reasoning_effort":"high"`}, + absent: []string{`"min_p"`}, + }}) +} + +func TestOptInThinkingKeepsSamplingWhateverIsAsked(t *testing.T) { + t.Parallel() + + runSamplingCases(t, []samplingCase{ + { + name: "no effort leaves the caller's sampling alone", + model: "mistral-medium-3", + opts: []llms.CallOption{llms.WithTemperature(0.3), llms.WithTopP(0.7)}, + present: []string{`"temperature":0.3`, `"top_p":0.7`}, + }, + { + name: "an effort does not cost the caller their sampling", + model: "mistral-medium-3", + opts: []llms.CallOption{ + llms.WithTemperature(0.3), llms.WithTopP(0.7), llms.WithReasoning(llms.ReasoningMedium, 0), + }, + present: []string{`"temperature":0.3`, `"top_p":0.7`, `"reasoning_effort":"high"`}, + }, + { + name: "the provider-prefixed spelling resolves the same", + model: "mistralai/mistral-medium-3", + opts: []llms.CallOption{llms.WithTemperature(0.3)}, + present: []string{`"temperature":0.3`}, + }, + { + name: "a later generation of the same family is opt-in too", + model: "mistral-medium-3-5", + opts: []llms.CallOption{llms.WithTemperature(0.3)}, + present: []string{`"temperature":0.3`}, + }, + { + name: "mistral-small-2603 is opt-in", + model: "mistral-small-2603", + opts: []llms.CallOption{llms.WithTemperature(0.3)}, + present: []string{`"temperature":0.3`}, + }, + { + name: "solar-pro-3 is opt-in", + model: "solar-pro-3", + opts: []llms.CallOption{llms.WithTemperature(0.3)}, + present: []string{`"temperature":0.3`}, + }, + { + name: "a family that reasons unasked still keeps the caller's sampling", + model: "hy3-preview", + opts: []llms.CallOption{llms.WithTemperature(0.3), llms.WithTopP(0.7)}, + present: []string{`"temperature":0.3`, `"top_p":0.7`}, + }, + }) +} + +func TestOnlyModelsWhoseVendorRefusesLoseTheirSampling(t *testing.T) { + t.Parallel() + + runSamplingCases(t, []samplingCase{ + { + name: "o3 loses both: the vendor refuses sampling fields while it thinks", + model: "o3", + opts: []llms.CallOption{llms.WithTemperature(0.25), llms.WithTopP(0.3)}, + absent: []string{`"temperature"`, `"top_p"`}, + }, + { + name: "gpt-5-mini loses both for the same reason", + model: "gpt-5-mini", + opts: []llms.CallOption{llms.WithTemperature(0.25), llms.WithTopP(0.3)}, + absent: []string{`"temperature"`, `"top_p"`}, + }, + { + name: "grok keeps both: the vendor takes them alongside thinking", + model: "grok-4", + opts: []llms.CallOption{llms.WithTemperature(0.25), llms.WithTopP(0.3)}, + present: []string{`"temperature":0.25`, `"top_p":0.3`}, + }, + { + name: "glm keeps both", + model: "glm-4.6", + opts: []llms.CallOption{llms.WithTemperature(0.25), llms.WithTopP(0.3)}, + present: []string{`"temperature":0.25`, `"top_p":0.3`}, + }, + { + name: "kimi keeps both", + model: "kimi-k2-thinking", + opts: []llms.CallOption{llms.WithTemperature(0.25), llms.WithTopP(0.3)}, + present: []string{`"temperature":0.25`, `"top_p":0.3`}, + }, + { + name: "minimax keeps both", + model: "minimax-m2", + opts: []llms.CallOption{llms.WithTemperature(0.25), llms.WithTopP(0.3)}, + present: []string{`"temperature":0.25`, `"top_p":0.3`}, + }, + { + name: "deepseek-r1 keeps both", + model: "deepseek-r1", + opts: []llms.CallOption{llms.WithTemperature(0.25), llms.WithTopP(0.3)}, + present: []string{`"temperature":0.25`, `"top_p":0.3`}, + }, + }) +} diff --git a/llms/openai/sampling_warnings.go b/llms/openai/sampling_warnings.go new file mode 100644 index 000000000..bbf0442dd --- /dev/null +++ b/llms/openai/sampling_warnings.go @@ -0,0 +1,191 @@ +package openai + +import ( + "strconv" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/openai/internal/openaiclient" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +type warnCtx struct { + model string + sink *llms.Warnings +} + +type samplingSnapshot struct { + temperature *float64 + topP *float64 + topK *int + minP *float64 + frequencyPenalty *float64 + presencePenalty *float64 + logProbs bool + topLogProbs int +} + +func takeSamplingSnapshot(req *openaiclient.ChatRequest) samplingSnapshot { + return samplingSnapshot{ + temperature: req.Temperature, + topP: req.TopP, + topK: req.TopK, + minP: req.MinP, + frequencyPenalty: req.FrequencyPenalty, + presencePenalty: req.PresencePenalty, + logProbs: req.LogProbs, + topLogProbs: req.TopLogProbs, + } +} + +func (s samplingSnapshot) report(req *openaiclient.ChatRequest, model, reason string, warn *llms.Warnings) { + warn.AddFloatChange("WithTemperature", model, reason, s.temperature, req.Temperature) + warn.AddFloatChange("WithTopP", model, reason, s.topP, req.TopP) + addNonZeroIntChange(warn, "WithTopK", model, reason, s.topK, req.TopK) + addNonZeroChange(warn, "WithMinP", model, "the model rejects min_p", s.minP, req.MinP) + addNonZeroChange(warn, "WithFrequencyPenalty", model, reason, s.frequencyPenalty, req.FrequencyPenalty) + addNonZeroChange(warn, "WithPresencePenalty", model, reason, s.presencePenalty, req.PresencePenalty) + + if s.logProbs && !req.LogProbs { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithLogProbs", Model: model, + Asked: "true", Reason: reason, + }) + } + if s.topLogProbs > 0 && req.TopLogProbs != s.topLogProbs { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithTopLogProbs", Model: model, + Asked: strconv.Itoa(s.topLogProbs), Reason: reason, + }) + } +} + +// addNonZeroChange is for options whose zero asks for nothing — unlike temperature. +const refusedByEndpoint = "the endpoint refuses the whole request when this field is present" + +func addNonZeroChange(warn *llms.Warnings, option, model, reason string, before, after *float64) { + if before == nil || *before == 0 { + return + } + warn.AddFloatChange(option, model, reason, before, after) +} + +func addNonZeroIntChange(warn *llms.Warnings, option, model, reason string, before, after *int) { + if before == nil || *before == 0 { + return + } + warn.AddIntChange(option, model, reason, before, after) +} + +func reportOpenAIUnread(warn *llms.Warnings, model string, opts llms.CallOptions) { + const unread = "the door builds no field for it" + + warn.AddUnreadOptions(model, opts, unread, + "WithMinP", "WithRepetitionPenalty", "WithFrequencyPenalty", "WithPresencePenalty", + "WithTopK", "WithN", "WithTopLogProbs", "WithSeed", "WithVerbosity", + "WithLogProbs", "WithJSONMode") +} + +func samplingReason(model, host string, opts llms.CallOptions, wireEffort string) string { + switch { + case reasoning.ClaudeRejectsSampling(model): + return "the model rejects sampling parameters" + case reasoning.FixesSampling(model): + return "the model runs on fixed sampling and refuses any value for it" + case refusesSamplingWhileThinking(model, opts, wireEffort): + return "the model refuses sampling while thinking" + case reasoning.ServedByDeepSeek(model, host) && deepSeekThinks(model, opts, wireEffort): + return "the model ignores temperature while thinking" + case reasoning.ServedByDeepSeek(model, host): + return "the model ignores top_p when not thinking" + default: + return "the model does not accept this combination of sampling parameters" + } +} + +func reportOpenAIReasoning(warn *llms.Warnings, model string, cfg *llms.ReasoningConfig, req *openaiclient.ChatRequest) { + if cfg == nil { + return + } + effort, budget := "", 0 + if req.ReasoningEffort != nil { + effort = string(*req.ReasoningEffort) + } + if req.ThinkingBudget != nil { + budget = *req.ThinkingBudget + } + if req.Thinking != nil && req.Thinking.BudgetTokens > 0 { + budget = req.Thinking.BudgetTokens + } + if req.Reasoning != nil { + if req.Reasoning.Effort != "" { + effort = string(req.Reasoning.Effort) + } + if req.Reasoning.MaxTokens > 0 { + budget = req.Reasoning.MaxTokens + } + } + reportOpenAIEffort(warn, model, cfg, effort) + reportOpenAIBudget(warn, model, cfg, budget) +} + +func reportOpenAIEffort(warn *llms.Warnings, model string, cfg *llms.ReasoningConfig, sent string) { + asked := string(cfg.Effort) + switch { + case asked == "" || asked == string(llms.ReasoningNone): + return + case sent == "" || sent == reasoning.OpenAIDisableEffort: + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithReasoning", Model: model, + Asked: asked, Reason: "the door sends no effort field on this model", + }) + case asked != sent: + warn.Add(llms.Warning{ + Kind: llms.WarningClamp, Option: "WithReasoning", Model: model, + Asked: asked, Sent: sent, + Reason: "the door sends only the efforts it records this model as accepting", + }) + } +} + +func reportOpenAIBudget(warn *llms.Warnings, model string, cfg *llms.ReasoningConfig, sent int) { + if !cfg.HasExplicitTokens() || sent == cfg.Tokens { + return + } + switch { + case sent <= 0: + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithReasoning", Model: model, + Asked: strconv.Itoa(cfg.Tokens) + " tokens", + Reason: "the door sends no thinking budget on this model", + }) + default: + warn.Add(llms.Warning{ + Kind: llms.WarningClamp, Option: "WithReasoning", Model: model, + Asked: strconv.Itoa(cfg.Tokens) + " tokens", Sent: strconv.Itoa(sent) + " tokens", + Reason: "the thinking budget is capped by the answer limit and by what the model records", + }) + } +} + +func reportDelegatedDepth(warn *llms.Warnings, model string, delegated bool, sent string) { + if !delegated { + return + } + kind := llms.WarningDrop + if sent != "" { + kind = llms.WarningSubstitute + } + warn.Add(llms.Warning{ + Kind: kind, Option: "WithAdaptiveReasoning", Model: model, + Asked: "adaptive", Sent: sent, + Reason: "this model does not reason unless an effort asks it to, and none was named", + }) +} + +func reportAdaptiveRefused(warn *llms.Warnings, model string) { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithAdaptiveReasoning", Model: model, + Asked: "adaptive", + Reason: "the endpoint refuses adaptive thinking", + }) +} diff --git a/llms/openai/sampling_warnings_test.go b/llms/openai/sampling_warnings_test.go new file mode 100644 index 000000000..f59b8619c --- /dev/null +++ b/llms/openai/sampling_warnings_test.go @@ -0,0 +1,604 @@ +package openai + +import ( + "context" + "encoding/json" + "fmt" + "io" + "net/http" + "net/http/httptest" + "slices" + "strings" + "testing" + + "github.com/vxcontrol/langchaingo/llms" +) + +func sendForWarnings(t *testing.T, model string, opts ...llms.CallOption) *llms.ContentResponse { + t.Helper() + + resp, _ := sendForWarningsWith(t, model, nil, opts...) + return resp +} + +func sendForWarningsWith( + t *testing.T, model string, client []Option, opts ...llms.CallOption, +) (*llms.ContentResponse, map[string]any) { + t.Helper() + + const completion = `{"id":"x","object":"chat.completion","created":1,"model":"m",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}` + + var body []byte + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + body, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, completion) + })) + t.Cleanup(srv.Close) + + llm, err := New(append([]Option{WithBaseURL(srv.URL), WithToken("test"), WithModel(model)}, client...)...) + if err != nil { + t.Fatalf("New() error: %v", err) + } + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, opts...) + if err != nil { + t.Fatalf("GenerateContent() error: %v", err) + } + var sent map[string]any + if err := json.Unmarshal(body, &sent); err != nil { + t.Fatalf("the request body is not JSON: %v", err) + } + return resp, sent +} + +func warningFor(t *testing.T, resp *llms.ContentResponse, option string) llms.Warning { + t.Helper() + + for _, w := range resp.Warnings { + if w.Option == option { + return w + } + } + t.Fatalf("no warning for %s, got %v", option, resp.Warnings) + return llms.Warning{} +} + +func TestTheCallerLearnsWhatTheSamplingPolicyTookAway(t *testing.T) { + t.Parallel() + + resp := sendForWarnings(t, "gpt-5", + llms.WithTemperature(0.2), llms.WithTopP(0.9), + llms.WithLogProbs(true), llms.WithTopLogProbs(3)) + + temperature := warningFor(t, resp, "WithTemperature") + if temperature.Kind != llms.WarningDrop || temperature.Asked != "0.2" || temperature.Sent != "" { + t.Errorf("temperature warning = %+v", temperature) + } + if temperature.Model != "gpt-5" { + t.Errorf("temperature warning names model %q", temperature.Model) + } + + for _, option := range []string{"WithTopP", "WithLogProbs", "WithTopLogProbs"} { + if got := warningFor(t, resp, option); got.Kind != llms.WarningDrop || got.Sent != "" { + t.Errorf("%s warning = %+v", option, got) + } + } +} + +func TestAnUntouchedRequestCarriesNoWarnings(t *testing.T) { + t.Parallel() + + resp := sendForWarnings(t, "gpt-4o", llms.WithTemperature(0.2), llms.WithTopP(0.9)) + if len(resp.Warnings) != 0 { + t.Errorf("want no warnings on a model that keeps sampling, got %v", resp.Warnings) + } +} + +func TestPenaltiesRefusedByTheFamilyAreReported(t *testing.T) { + t.Parallel() + + resp := sendForWarnings(t, "grok-4", + llms.WithFrequencyPenalty(0.7), llms.WithPresencePenalty(0.4)) + + for option, asked := range map[string]string{ + "WithFrequencyPenalty": "0.7", "WithPresencePenalty": "0.4", + } { + w := warningFor(t, resp, option) + if w.Kind != llms.WarningDrop || w.Asked != asked || w.Sent != "" { + t.Errorf("%s warning = %+v", option, w) + } + } +} + +func TestAnEffortLoweredToWhatTheModelTakesIsReported(t *testing.T) { + t.Parallel() + + resp := sendForWarnings(t, "gpt-5.1", llms.WithReasoning(llms.ReasoningXHigh, 0)) + + w := warningFor(t, resp, "WithReasoning") + if w.Kind != llms.WarningClamp || w.Asked != "xhigh" || w.Sent != "high" { + t.Errorf("reasoning warning = %+v", w) + } +} + +func TestAnEffortOnAModelThatSendsNoneIsReported(t *testing.T) { + t.Parallel() + + resp := sendForWarnings(t, "gpt-4o", llms.WithReasoning(llms.ReasoningHigh, 0)) + + w := warningFor(t, resp, "WithReasoning") + if w.Kind != llms.WarningDrop || w.Asked != "high" || w.Sent != "" { + t.Errorf("reasoning warning = %+v", w) + } +} + +func TestAnAnswerLimitRaisedForTheBudgetIsReported(t *testing.T) { + t.Parallel() + + resp, sent := sendForWarningsWith(t, "claude-sonnet-4-5", nil, + llms.WithMaxTokens(1000), llms.WithReasoning(llms.ReasoningMedium, 4096)) + + w := warningFor(t, resp, "WithMaxTokens") + if w.Kind != llms.WarningClamp || w.Asked != "1000" || w.Sent != "2048" { + t.Errorf("max-tokens warning = %+v, want the 2048 the anthropic door raises the same call to", w) + } + if got := sent["max_completion_tokens"]; got != float64(2048) { + t.Errorf("max_completion_tokens on the wire = %v, want the 2048 the warning reports", got) + } + if thinking, _ := sent["thinking"].(map[string]any); thinking["budget_tokens"] != float64(1024) { + t.Errorf("thinking on the wire = %v, want the budget capped to the vendor floor 1024", sent["thinking"]) + } +} + +func TestAThinkingBudgetAboveTheModelCapIsReported(t *testing.T) { + t.Parallel() + + resp, sent := sendForWarningsWith(t, "qwen3-max", nil, + llms.WithMaxTokens(4096), llms.WithReasoning(llms.ReasoningNone, 100000)) + + w := warningFor(t, resp, "WithReasoning") + if w.Kind != llms.WarningClamp || w.Asked != "100000 tokens" { + t.Errorf("reasoning warning = %+v (all: %v)", w, resp.Warnings) + } + if wire := fmt.Sprintf("%v tokens", sent["thinking_budget"]); w.Sent != wire { + t.Errorf("the warning reports %q sent, the wire carries %s", w.Sent, wire) + } +} + +func TestASmallAnswerLimitDoesNotClampTheDashScopeBudget(t *testing.T) { + t.Parallel() + + resp := sendForWarnings(t, "qwen3-max", + llms.WithMaxTokens(4096), llms.WithReasoning(llms.ReasoningNone, 30000)) + + for _, w := range resp.Warnings { + if w.Option == "WithReasoning" { + t.Errorf("the answer limit alone must not clamp a DashScope thinking budget: %+v", w) + } + } +} + +func TestABudgetThisDoorPutsOnNoFieldIsReportedAsDropped(t *testing.T) { + t.Parallel() + + resp := sendForWarnings(t, "anthropic/claude-sonnet-5", + llms.WithMaxTokens(4096), llms.WithReasoning(llms.ReasoningNone, 30000)) + + w := warningFor(t, resp, "WithReasoning") + if w.Kind != llms.WarningDrop || w.Asked != "30000 tokens" || w.Sent != "" { + t.Errorf("reasoning warning = %+v (all: %v)", w, resp.Warnings) + } +} + +func TestABudgetTheThinkingObjectCarriesIsNotReported(t *testing.T) { + t.Parallel() + + resp := sendForWarnings(t, "claude-sonnet-4-5", + llms.WithMaxTokens(8192), llms.WithReasoning(llms.ReasoningNone, 2048)) + + if len(resp.Warnings) != 0 { + t.Errorf("the budget reached the wire as asked, got %v", resp.Warnings) + } +} + +func TestAnEffortReplacedByABudgetIsReported(t *testing.T) { + t.Parallel() + + resp := sendForWarnings(t, "qwen3.8-plus", + llms.WithMaxTokens(8192), llms.WithReasoning(llms.ReasoningHigh, 4096)) + + w := warningFor(t, resp, "WithReasoning") + if w.Kind != llms.WarningDrop || w.Asked != "high" || w.Sent != "" { + t.Errorf("reasoning warning = %+v (all: %v)", w, resp.Warnings) + } +} + +func reasoningWarnings(resp *llms.ContentResponse) []llms.Warning { + var found []llms.Warning + for _, w := range resp.Warnings { + if w.Option == "WithReasoning" { + w.Reason = "" + found = append(found, w) + } + } + return found +} + +func TestTheEffortInTheReasoningObjectIsReadBack(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + asked llms.ReasoningEffort + want []llms.Warning + }{ + {llms.ReasoningHigh, nil}, + {llms.ReasoningXHigh, []llms.Warning{{ + Kind: llms.WarningClamp, Option: "WithReasoning", Model: "gpt-5.1", Asked: "xhigh", Sent: "high", + }}}, + } { + resp, sent := sendForWarningsWith(t, "gpt-5.1", []Option{WithModernReasoningFormat()}, + llms.WithReasoning(tc.asked, 0)) + + object, _ := sent["reasoning"].(map[string]any) + if object["effort"] != "high" { + t.Errorf("%s: reasoning on the wire = %v", tc.asked, sent["reasoning"]) + } + if got := reasoningWarnings(resp); !slices.Equal(got, tc.want) { + t.Errorf("%s: reasoning warnings = %v, want %v", tc.asked, got, tc.want) + } + } +} + +func TestTheBudgetInTheReasoningObjectIsReadBack(t *testing.T) { + t.Parallel() + + client := []Option{WithModernReasoningFormat(), WithUsingReasoningMaxTokens()} + for _, tc := range []struct { + asked int + wire float64 + want []llms.Warning + }{ + {4096, 4096, nil}, + {40000, 10922, []llms.Warning{{ + Kind: llms.WarningClamp, Option: "WithReasoning", Model: "anthropic/claude-sonnet-4-5", + Asked: "40000 tokens", Sent: "10922 tokens", + }}}, + } { + resp, sent := sendForWarningsWith(t, "anthropic/claude-sonnet-4-5", client, + llms.WithReasoning(llms.ReasoningNone, tc.asked), llms.WithMaxTokens(16384)) + + object, _ := sent["reasoning"].(map[string]any) + if object["max_tokens"] != tc.wire { + t.Errorf("%d tokens: reasoning on the wire = %v", tc.asked, sent["reasoning"]) + } + if got := reasoningWarnings(resp); !slices.Equal(got, tc.want) { + t.Errorf("%d tokens: reasoning warnings = %v, want %v", tc.asked, got, tc.want) + } + } +} + +func TestAZeroPenaltyIsNotALoss(t *testing.T) { + t.Parallel() + + resp := sendForWarnings(t, "grok-4", + llms.WithFrequencyPenalty(0), llms.WithPresencePenalty(0)) + + if len(resp.Warnings) != 0 { + t.Errorf("no penalty was asked for, got %v", resp.Warnings) + } +} + +func TestAZeroTopKIsNotALoss(t *testing.T) { + t.Parallel() + + resp := sendForWarnings(t, "gpt-5", llms.WithTopK(0)) + if len(resp.Warnings) != 0 { + t.Errorf("no top-k was asked for, got %v", resp.Warnings) + } +} + +func TestOptionsThisDoorReadsNowhereAreReported(t *testing.T) { + t.Parallel() + + resp := sendForWarnings(t, "gpt-4o", + llms.WithCandidateCount(3), llms.WithMinLength(10), + llms.WithMaxLength(4096), llms.WithResponseMIMEType("application/json")) + + for option, asked := range map[string]string{ + "WithCandidateCount": "3", "WithMinLength": "10", + "WithMaxLength": "4096", "WithResponseMIMEType": "application/json", + } { + w := warningFor(t, resp, option) + if w.Kind != llms.WarningDrop || w.Asked != asked { + t.Errorf("%s warning = %+v", option, w) + } + } +} + +func TestFieldsThisEndpointRefusesStayOffTheWire(t *testing.T) { + t.Parallel() + + body := sendForWire(t, "gpt-4o", llms.WithTopK(7), llms.WithRepetitionPenalty(1.1)) + + for _, field := range []string{`"top_k"`, `"repetition_penalty"`} { + if strings.Contains(body, field) { + t.Errorf("%s reached the wire; OpenAI answers 400 on it: %s", field, body) + } + } +} + +func TestAFieldTheEndpointRefusesIsReported(t *testing.T) { + t.Parallel() + + resp := sendForWarnings(t, "gpt-4o", llms.WithTopK(7), llms.WithRepetitionPenalty(1.1)) + + for option, asked := range map[string]string{"WithTopK": "7", "WithRepetitionPenalty": "1.1"} { + w := warningFor(t, resp, option) + if w.Kind != llms.WarningDrop || w.Asked != asked { + t.Errorf("%s warning = %+v", option, w) + } + } +} + +func TestAVendorThatTakesTopKStillGetsIt(t *testing.T) { + t.Parallel() + + body := sendForWire(t, "zai/glm-4.5-air", llms.WithTopK(7)) + + if !strings.Contains(body, `"top_k":7`) { + t.Errorf("glm takes top_k and answered 200 to it; the wire lost it: %s", body) + } +} + +func TestMiniMaxGetsNoTopKItsAPIHasNoFieldFor(t *testing.T) { + t.Parallel() + + for _, model := range []string{"MiniMax-M3", "minimax/MiniMax-M3", "MiniMax-M2.7", "MiniMax-M2.7-highspeed"} { + body := sendForWire(t, model, llms.WithTopK(40), llms.WithTopP(0.95)) + if strings.Contains(body, `"top_k"`) { + t.Errorf("%s: MiniMax's API documents no top_k, got body: %s", model, body) + } + if !strings.Contains(body, `"top_p":0.95`) { + t.Errorf("%s: MiniMax documents top_p and must keep getting it, got body: %s", model, body) + } + + resp := sendForWarnings(t, model, llms.WithTopK(40)) + w := warningFor(t, resp, "WithTopK") + if w.Kind != llms.WarningDrop || w.Asked != "40" || !strings.Contains(w.Reason, "no top_k") { + t.Errorf("%s: top-k warning = %+v", model, w) + } + } +} + +func TestMiniMaxOnAnotherHostKeepsTopK(t *testing.T) { + t.Parallel() + + for _, model := range []string{"openrouter/minimax/minimax-m3", "minimax.minimax-m2.5"} { + if body := sendForWire(t, model, llms.WithTopK(40)); !strings.Contains(body, `"top_k":40`) { + t.Errorf("%s: only MiniMax's own API lacks top_k, got body: %s", model, body) + } + } +} + +func TestTheDoorThatMergesExtraBodyReportsNoLoss(t *testing.T) { + t.Parallel() + + extra := llms.WithExtraBody(map[string]any{"enable_thinking": false}) + + body := sendForWire(t, "gpt-4o", extra) + if !strings.Contains(body, `"enable_thinking":false`) { + t.Errorf("extra body did not reach the wire: %s", body) + } + + resp := sendForWarnings(t, "gpt-4o", extra) + if len(resp.Warnings) != 0 { + t.Errorf("this door merges extra body, nothing is lost, got %v", resp.Warnings) + } +} + +func TestTheNeutralOptionAndTheDoorOptionAreTheSame(t *testing.T) { + t.Parallel() + + fields := map[string]any{"enable_thinking": false} + for name, opt := range map[string]llms.CallOption{ + "neutral": llms.WithExtraBody(fields), + "door": WithExtraBody(fields), + } { + if body := sendForWire(t, "gpt-4o", opt); !strings.Contains(body, `"enable_thinking":false`) { + t.Errorf("%s option lost the fields: %s", name, body) + } + } +} + +func TestAVendorThatKeepsSamplingWhileThinkingKeepsIt(t *testing.T) { + t.Parallel() + + for _, model := range []string{"glm-5.3", "zai/glm-5.3", "kimi-k2-thinking"} { + body := sendForWire(t, model, + llms.WithTemperature(0.2), llms.WithTopP(0.9), + llms.WithReasoning(llms.ReasoningHigh, 0)) + + if !strings.Contains(body, `"temperature":0.2`) { + t.Errorf("%s: the caller's temperature did not reach the wire: %s", model, body) + } + if !strings.Contains(body, `"top_p":0.9`) { + t.Errorf("%s: the caller's top_p did not reach the wire: %s", model, body) + } + } +} + +func TestOpenAIsOwnReasoningModelsStillLoseTheirSampling(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gpt-5.1", "o3-mini", "gpt-5-pro"} { + body := sendForWire(t, model, + llms.WithTemperature(0.2), llms.WithTopP(0.9), + llms.WithReasoning(llms.ReasoningHigh, 0)) + + if strings.Contains(body, `"temperature":0.2`) { + t.Errorf("%s: this endpoint refuses a sampling temperature while thinking: %s", model, body) + } + if strings.Contains(body, `"top_p"`) { + t.Errorf("%s: this endpoint refuses top_p while thinking: %s", model, body) + } + } +} + +func TestClaudeOnThisDoorStillLosesItsSampling(t *testing.T) { + t.Parallel() + + body := sendForWire(t, "claude-sonnet-4-5", + llms.WithTemperature(0.2), llms.WithTopP(0.9), + llms.WithReasoning(llms.ReasoningHigh, 4096)) + + if strings.Contains(body, `"temperature":0.2`) { + t.Errorf("thinking claude takes temperature 1: %s", body) + } + if strings.Contains(body, `"top_p"`) { + t.Errorf("thinking claude takes no top_p below 0.95 or beside a temperature: %s", body) + } +} + +func TestMinPStaysOffOpenAIsOwnEndpoint(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gpt-4o", "o3-mini", "gpt-5.1", "chatgpt-4o-latest"} { + if body := sendForWire(t, model, llms.WithMinP(0.05)); strings.Contains(body, `"min_p"`) { + t.Errorf("%s: this endpoint refuses the whole request on min_p: %s", model, body) + } + } + + resp := sendForWarnings(t, "gpt-4o", llms.WithMinP(0.05)) + w := warningFor(t, resp, "WithMinP") + if w.Kind != llms.WarningDrop || w.Asked != "0.05" { + t.Errorf("min-p warning = %+v", w) + } +} + +func TestAVendorThatTakesMinPStillGetsIt(t *testing.T) { + t.Parallel() + + body := sendForWire(t, "zai/glm-4.5-air", llms.WithMinP(0.05)) + if !strings.Contains(body, `"min_p":0.05`) { + t.Errorf("this vendor takes min_p; the wire lost it: %s", body) + } +} + +func TestAZeroMinPIsNotALoss(t *testing.T) { + t.Parallel() + + if resp := sendForWarnings(t, "gpt-4o", llms.WithMinP(0)); len(resp.Warnings) != 0 { + t.Errorf("no min-p was asked for, got %v", resp.Warnings) + } +} + +func TestMetadataSetAfterExtraBodyDoesNotDiscardIt(t *testing.T) { + t.Parallel() + + fields := map[string]any{"enable_thinking": false} + orders := map[string][]llms.CallOption{ + "extra body first": {llms.WithExtraBody(fields), llms.WithMetadata(map[string]any{"user": "u1"})}, + "metadata first": {llms.WithMetadata(map[string]any{"user": "u1"}), llms.WithExtraBody(fields)}, + } + for name, opts := range orders { + if body := sendForWire(t, "gpt-4o", opts...); !strings.Contains(body, `"enable_thinking":false`) { + t.Errorf("%s: the extra body did not reach the wire: %s", name, body) + } + } +} + +func TestAdaptiveWithToolsNoLongerRefusesTheRequest(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gpt-5.4-mini", "gpt-5.4-nano", "gpt-5.5"} { + body := sendForWire(t, model, + llms.WithAdaptiveReasoning(llms.ReasoningNone), llms.WithTools([]llms.Tool{weatherTool()})) + + if strings.Contains(body, `"reasoning_effort"`) { + t.Errorf("%s: the vendor serves an effort with tools on another API only: %s", model, body) + } + if !strings.Contains(body, `"tools"`) { + t.Errorf("%s: the request lost its tools: %s", model, body) + } + } +} + +func TestAnEffortNamedAlongsideAdaptiveStillTravels(t *testing.T) { + t.Parallel() + + body := sendForWire(t, "gpt-5.1", llms.WithAdaptiveReasoning(llms.ReasoningLow)) + if !strings.Contains(body, `"reasoning_effort":"low"`) { + t.Errorf("a named effort is a depth, not a hand-off: %s", body) + } +} + +func TestDelegatedDepthOnAModelThatWillNotReasonIsReported(t *testing.T) { + t.Parallel() + + optIn := sendForWarnings(t, "gpt-5.1", llms.WithAdaptiveReasoning(llms.ReasoningNone)) + w := warningFor(t, optIn, "WithAdaptiveReasoning") + if w.Kind != llms.WarningDrop || w.Asked != "adaptive" || w.Sent != "" { + t.Errorf("opt-in model warning = %+v", w) + } + + withTools := sendForWarnings(t, "gpt-5.6", + llms.WithAdaptiveReasoning(llms.ReasoningNone), llms.WithTools([]llms.Tool{weatherTool()})) + w = warningFor(t, withTools, "WithAdaptiveReasoning") + if w.Kind != llms.WarningSubstitute || w.Sent != "none" { + t.Errorf("forced-disable warning = %+v", w) + } +} + +func TestDelegatedDepthOnAModelThatReasonsAnywayIsSilent(t *testing.T) { + t.Parallel() + + resp := sendForWarnings(t, "gpt-4o", llms.WithAdaptiveReasoning(llms.ReasoningNone)) + if len(resp.Warnings) != 0 { + t.Errorf("nothing was lost, got %v", resp.Warnings) + } +} + +func TestKimiModelsWithFixedSamplingGetNoneOfIt(t *testing.T) { + t.Parallel() + + sampling := []llms.CallOption{ + llms.WithTemperature(0.3), llms.WithTopP(0.5), + llms.WithPresencePenalty(0.2), llms.WithFrequencyPenalty(0.1), + } + requests := map[string][]llms.CallOption{ + "kimi-k3": sampling, + "moonshot/kimi-k3": sampling, + "kimi-k2.7-code": sampling, + "kimi-k2.7-code-highspeed": sampling, + "kimi-k2.6": slices.Concat(sampling, []llms.CallOption{llms.WithReasoningDisabled()}), + } + for model, opts := range requests { + body := sendForWire(t, model, opts...) + for _, field := range []string{`"temperature"`, `"top_p"`, `"presence_penalty"`, `"frequency_penalty"`} { + if strings.Contains(body, field) { + t.Errorf("%s: %s is fixed by the vendor and must stay off the wire: %s", model, field, body) + } + } + + resp := sendForWarnings(t, model, sampling...) + for _, option := range []string{"WithTemperature", "WithTopP", "WithPresencePenalty", "WithFrequencyPenalty"} { + if got := warningFor(t, resp, option); got.Kind != llms.WarningDrop { + t.Errorf("%s: %s warning = %+v", model, option, got) + } + } + } +} + +func TestKimiModelsOutsideTheFixedListKeepTheirSampling(t *testing.T) { + t.Parallel() + + for _, model := range []string{"kimi-k2-thinking", "kimi-k2.7", "kimi-k30"} { + body := sendForWire(t, model, llms.WithTemperature(0.3), llms.WithTopP(0.5)) + if !strings.Contains(body, `"temperature":0.3`) || !strings.Contains(body, `"top_p":0.5`) { + t.Errorf("%s: sampling the vendor does not fix must reach the wire: %s", model, body) + } + } +} diff --git a/llms/openai/stream_usage_parity_test.go b/llms/openai/stream_usage_parity_test.go new file mode 100644 index 000000000..a17834c77 --- /dev/null +++ b/llms/openai/stream_usage_parity_test.go @@ -0,0 +1,94 @@ +package openai + +import ( + "context" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" +) + +const usagePayload = `"usage":{"prompt_tokens":21,"completion_tokens":349,"total_tokens":370,` + + `"prompt_tokens_details":{"cached_tokens":7,"cache_write_tokens":13},` + + `"cost_details":{"upstream_inference_prompt_cost":0.000063,` + + `"upstream_inference_completions_cost":0.005235},` + + `"completion_tokens_details":{"reasoning_tokens":5}}` + +func usageOfAWholeAnswer(t *testing.T) map[string]any { + t.Helper() + + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"id":"1","object":"chat.completion","model":"test",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"sixty rooms are free"},` + + `"finish_reason":"stop"}],` + usagePayload + `}`)) + })) + t.Cleanup(server.Close) + + return generationInfoAgainst(t, server, nil) +} + +func usageOfAStreamedAnswer(t *testing.T) map[string]any { + t.Helper() + + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "text/event-stream") + for _, line := range []string{ + `data: {"id":"1","object":"chat.completion.chunk","model":"test",` + + `"choices":[{"index":0,"delta":{"role":"assistant","content":"sixty rooms are free"}}]}`, + `data: {"id":"1","object":"chat.completion.chunk","model":"test",` + + `"choices":[{"index":0,"delta":{},"finish_reason":"stop"}],` + usagePayload + `}`, + "data: [DONE]", + } { + _, _ = w.Write([]byte(line + "\n\n")) + } + })) + t.Cleanup(server.Close) + + return generationInfoAgainst(t, server, + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) +} + +func generationInfoAgainst(t *testing.T, server *httptest.Server, opt llms.CallOption) map[string]any { + t.Helper() + + llm, err := New(WithToken("unit-test-key"), WithBaseURL(server.URL), WithModel("test-model")) + require.NoError(t, err) + + opts := []llms.CallOption{} + if opt != nil { + opts = append(opts, opt) + } + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, + opts...) + require.NoError(t, err) + require.Len(t, resp.Choices, 1) + return resp.Choices[0].GenerationInfo +} + +func TestAStreamedAnswerReportsTheSameCountersAsAWholeOne(t *testing.T) { + t.Parallel() + + whole := usageOfAWholeAnswer(t) + streamed := usageOfAStreamedAnswer(t) + + for _, key := range []string{ + "PromptTokens", "CompletionTokens", "TotalTokens", + "CacheReadInputTokens", "CacheCreationInputTokens", "ReasoningTokens", + "UpstreamInferencePromptCost", "UpstreamInferenceCompletionsCost", + } { + assert.Equal(t, whole[key], streamed[key], + "%s must not depend on whether the answer arrived in one piece", key) + } + + assert.Equal(t, 13, streamed["CacheCreationInputTokens"], + "the cache-creation counter the vendor sent must reach the caller") + require.Contains(t, streamed, "UpstreamInferencePromptCost") + assert.InDelta(t, 0.000063, streamed["UpstreamInferencePromptCost"], 1e-9) +} diff --git a/llms/openai/structured_output.go b/llms/openai/structured_output.go index 2ad0761a9..284421948 100644 --- a/llms/openai/structured_output.go +++ b/llms/openai/structured_output.go @@ -7,11 +7,14 @@ import ( "github.com/vxcontrol/langchaingo/llms" "github.com/vxcontrol/langchaingo/llms/openai/internal/openaiclient" + "github.com/vxcontrol/langchaingo/llms/reasoning" "github.com/vxcontrol/langchaingo/llms/structuredoutput" ) const providerOpenAI = "openai" +const takesNoResponseFormat = "the vendor's chat completions API takes no response_format for this model" + // ErrStructuredOutputRefusal reports that the model declined a structured-output // request (OpenAI Structured Outputs). A refusal may legitimately not match the // schema, so it is a distinct typed outcome rather than a validation failure. The @@ -20,17 +23,67 @@ type ErrStructuredOutputRefusal struct { Model string Choice int Refusal string + + cause error } +func (e *ErrStructuredOutputRefusal) Unwrap() error { return e.cause } + func (e *ErrStructuredOutputRefusal) Error() string { return fmt.Sprintf("openai structured output: model refused (model=%s choice=%d): %s", e.Model, e.Choice, e.Refusal) } +func noJSONObjectReason(model string) string { + switch { + case reasoning.TakesNoResponseFormat(model): + return takesNoResponseFormat + case reasoning.TakesNoJSONObject(model): + return "the vendor has no json_object response format for this model" + } + return "" +} + +func setJSONMode(req *openaiclient.ChatRequest, model string, opts llms.CallOptions, warn *llms.Warnings) { + if !opts.GetJSONMode() { + return + } + reason := noJSONObjectReason(model) + if reason == "" { + req.SetResponseFormat(ResponseFormatJSON) + return + } + if opts.StructuredOutput == nil { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithJSONMode", Model: model, + Asked: "true", Reason: reason, + }) + } +} + +func setClientResponseFormat(req *openaiclient.ChatRequest, model string, rf *ResponseFormat, warn *llms.Warnings) { + if rf == nil { + return + } + if rf.Type == ResponseFormatJSON.Type { + if reason := noJSONObjectReason(model); reason != "" { + warn.Add(llms.Warning{ + Kind: llms.WarningDrop, Option: "WithResponseFormat", Model: model, + Asked: rf.Type, Reason: reason, + }) + return + } + } + req.SetResponseFormat(rf) +} + // setStructuredOutput translates a per-call llms.StructuredOutput into OpenAI's // json_schema response format with strict:true. It takes precedence over the // schema-less JSONMode json_object and returns a typed conflict against a -// client-level response format rather than silently overwriting one. -func (o *LLM) setStructuredOutput(req *openaiclient.ChatRequest, opts llms.CallOptions) error { +// client-level response format rather than silently overwriting one. Under +// WithStructuredOutputFallback a model without json_schema gets the schema in +// the prompt instead, with json_object where its vendor has it, after the same +// checks. +func (o *LLM) setStructuredOutput(req *openaiclient.ChatRequest, opts llms.CallOptions, warn *llms.Warnings) error { so := opts.StructuredOutput if so == nil { return nil @@ -48,20 +101,106 @@ func (o *LLM) setStructuredOutput(req *openaiclient.ChatRequest, opts llms.CallO } } model := o.effectiveModel(opts) - if openAIStructuredOutputUnsupported(model) { + emulated := o.emulatesStructuredOutput(model, opts) + if reason := openAIStructuredOutputUnsupported(model); reason != "" && !emulated { return &llms.ErrStructuredOutputUnsupported{ Provider: providerOpenAI, Model: model, - Reason: "model predates Structured Outputs (json_schema)", + Reason: reason, } } if err := validateOpenAIStructuredSchema(so.Schema); err != nil { return err } + if emulated { + sent, reason := "a prompt instruction", takesNoResponseFormat + if noJSONObjectReason(model) == "" { + req.SetResponseFormat(ResponseFormatJSON) + sent, reason = "json_object and a prompt instruction", "the vendor's chat completions response_format takes only text and json_object" + } + // addToolsToRequest has already moved functions into req.Tools. + req.Messages = injectSchemaInstruction(req.Messages, so.Schema, len(req.Tools) > 0) + warn.Add(llms.Warning{ + Kind: llms.WarningSubstitute, Option: "WithStructuredOutput", Model: model, + Asked: so.Name, Sent: sent, + Reason: reason + ", so the schema travels in the prompt and the answer is validated locally", + }) + return nil + } req.SetStructuredOutputSchema(so.Name, so.Description, so.Schema) return nil } +// emulatesStructuredOutput reports whether a structured-output call travels as +// a prompt instruction: the client opted in with WithStructuredOutputFallback, +// and the model's vendor takes json_object but no json_schema, which then goes +// along, or takes no response_format at all. +func (o *LLM) emulatesStructuredOutput(model string, opts llms.CallOptions) bool { + if opts.StructuredOutput == nil || !o.structuredOutputFallback { + return false + } + return (reasoning.TakesNoJSONSchema(model) && noJSONObjectReason(model) == "") || + reasoning.TakesNoResponseFormat(model) +} + +// injectSchemaInstruction appends the schema instruction to the last user +// message of the request. The messages are the request's own copies, but their +// part slices are copied again before a part changes. Z.ai answers no +// conversation without a user turn, so when there is none the instruction +// becomes that turn. +func injectSchemaInstruction(msgs []*ChatMessage, schema json.RawMessage, withTools bool) []*ChatMessage { + instruction := structuredoutput.PromptInstruction(schema, withTools) + for i := len(msgs) - 1; i >= 0; i-- { + if msgs[i].Role != RoleUser { + continue + } + msg := *msgs[i] + switch { + case msg.Content != "": + msg.Content += "\n\n" + instruction + default: + parts := append([]llms.ContentPart(nil), msg.MultiContent...) + if last := len(parts) - 1; last >= 0 { + if text, ok := parts[last].(llms.TextContent); ok { + parts[last] = llms.TextContent{Text: text.Text + "\n\n" + instruction} + msg.MultiContent = parts + break + } + } + msg.MultiContent = append(parts, llms.TextContent{Text: instruction}) + } + msgs[i] = &msg + return msgs + } + return append(msgs, &ChatMessage{Role: RoleUser, MultiContent: []llms.ContentPart{llms.TextContent{Text: instruction}}}) +} + +// unwrapEmulatedAnswers readies each final answer of an emulated structured +// output call before it is read and validated: the whitespace around it goes, a +// thinking block at its head is taken out, and then the Markdown code fence a +// model put around its whole answer despite the prompt instruction is removed. +// The block becomes the reasoning only when there is none: MiniMax M2.7 and M3 +// stream their thinking both as reasoning and inside tags in the +// content, which the client then leaves whole. Only a normal-final choice +// without a tool call is touched. +func unwrapEmulatedAnswers(result *openaiclient.ChatCompletionResponse) { + for _, choice := range result.Choices { + if choice == nil || choice.FinishReason != openaiclient.FinishReasonStop || len(choice.Message.ToolCalls) != 0 { + continue + } + msg := &choice.Message + content := strings.TrimSpace(msg.Content) + if strings.HasPrefix(content, "") || strings.HasPrefix(content, "") { + var thought string + thought, content = reasoning.SplitContent(content) + if msg.ReasoningContent == "" { + msg.ReasoningContent = thought + } + } + msg.Content = structuredoutput.UnwrapFencedJSON(content) + } +} + // validateStructuredResponse checks each normal-final ("stop") choice against the // requested schema. A refusal is surfaced through GenerationInfo, not validated; // length, content_filter, tool_calls and function_call are not final JSON either. @@ -72,10 +211,6 @@ func (o *LLM) validateStructuredResponse(result *openaiclient.ChatCompletionResp } model := o.effectiveModel(opts) for i, c := range result.Choices { - // A refusal is a distinct typed outcome, never a JSON-validation error. - if c.Message.Refusal != "" { - return &ErrStructuredOutputRefusal{Model: model, Choice: i, Refusal: c.Message.Refusal} - } if c.FinishReason != openaiclient.FinishReasonStop { continue } @@ -86,24 +221,30 @@ func (o *LLM) validateStructuredResponse(result *openaiclient.ChatCompletionResp return nil } -// openAIStructuredOutputUnsupported reports models KNOWN to lack Structured Outputs -// (json_schema). Unknown or newer names pass through so the local table never -// blocks a future model — the API is the final arbiter. -func openAIStructuredOutputUnsupported(model string) bool { +// openAIStructuredOutputUnsupported names why a model KNOWN to lack Structured +// Outputs (json_schema) cannot take one, or returns "". Unknown or newer names +// pass through so the local table never blocks a future model. +func openAIStructuredOutputUnsupported(model string) string { + const predates = "model predates Structured Outputs (json_schema)" + m := strings.ToLower(model) if idx := strings.LastIndex(m, "/"); idx != -1 { m = m[idx+1:] } switch { + case reasoning.TakesNoJSONSchema(model): + return "the vendor's chat completions response_format takes only text and json_object" + case reasoning.TakesNoResponseFormat(model): + return takesNoResponseFormat case strings.HasPrefix(m, "gpt-3.5"): - return true + return predates case m == "gpt-4", strings.HasPrefix(m, "gpt-4-0"), strings.HasPrefix(m, "gpt-4-32k"), strings.HasPrefix(m, "gpt-4-turbo"): - return true + return predates case m == "gpt-4o-2024-05-13": // The first gpt-4o snapshot predates json_schema (added in 2024-08-06). - return true + return predates default: - return false + return "" } } diff --git a/llms/openai/structured_output_fallback_live_test.go b/llms/openai/structured_output_fallback_live_test.go new file mode 100644 index 000000000..b4f3696ec --- /dev/null +++ b/llms/openai/structured_output_fallback_live_test.go @@ -0,0 +1,211 @@ +package openai + +import ( + "context" + "encoding/json" + "net/http" + "os" + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/internal/httprr" + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" + "github.com/vxcontrol/langchaingo/llms/streaming" + "github.com/vxcontrol/langchaingo/llms/structuredoutput" +) + +// The vendors' OpenAI-compatible endpoints are fixed rather than read from +// ZAI_API_BASE or MINIMAX_API_BASE because a replay matches the recorded URL +// byte for byte. +const ( + zaiBaseURL = "https://api.z.ai/api/paas/v4" + miniMaxBaseURL = "https://api.minimax.io/v1" +) + +func newTestZAIClient(t *testing.T, opts ...Option) *LLM { + t.Helper() + return newTestVendorClient(t, "ZAI_API_KEY", zaiBaseURL, opts...) +} + +func newTestMiniMaxClient(t *testing.T, opts ...Option) *LLM { + t.Helper() + return newTestVendorClient(t, "MINIMAX_API_KEY", miniMaxBaseURL, opts...) +} + +func newTestVendorClient(t *testing.T, keyEnv, baseURL string, opts ...Option) *LLM { + t.Helper() + + httprr.SkipIfNoCredentialsAndRecordingMissing(t, keyEnv) + rr := httprr.OpenForTest(t, http.DefaultTransport) + + clientOpts := []Option{WithBaseURL(baseURL), WithHTTPClient(rr.Client())} + if rr.Recording() { + clientOpts = append(clientOpts, WithToken(os.Getenv(keyEnv))) + } else { + clientOpts = append(clientOpts, WithToken("fake-api-key-for-testing")) + } + llm, err := New(append(clientOpts, opts...)...) + require.NoError(t, err) + return llm +} + +// cityGuideSchema is a nested schema inside OpenAI's strict subset, so the same +// schema would go to OpenAI as json_schema. +const cityGuideSchema = `{"type":"object","properties":{` + + `"city":{"type":"string"},` + + `"landmarks":{"type":"array","items":{"type":"object","properties":{` + + `"name":{"type":"string"},"kind":{"type":"string","enum":["museum","monument","park","church","other"]}},` + + `"required":["name","kind"],"additionalProperties":false}}},` + + `"required":["city","landmarks"],"additionalProperties":false}` + +type cityGuide struct { + City string `json:"city"` + Landmarks []struct { + Name string `json:"name"` + Kind string `json:"kind"` + } `json:"landmarks"` +} + +// askForACityGuide runs the fallback against a live vendor with a system prompt +// that demands Markdown, which the schema instruction has to override. +func askForACityGuide(t *testing.T, llm *LLM, stream bool, opts ...llms.CallOption) { + t.Helper() + + opts = append(opts, llms.WithStructuredOutput(llms.StructuredOutputConfig{ + Name: "city_guide", Schema: json.RawMessage(cityGuideSchema), + })) + var streamed strings.Builder + if stream { + opts = append(opts, llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type == streaming.ChunkTypeText { + streamed.WriteString(chunk.Content) + } + return nil + })) + } + + resp, err := llm.GenerateContent(context.Background(), []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeSystem, "You are a travel guide. Answer in Markdown with headings."), + llms.TextParts(llms.ChatMessageTypeHuman, "Name two landmarks of Paris."), + }, opts...) + require.NoError(t, err, "the answer must validate against the schema") + + var guide cityGuide + require.NoError(t, json.Unmarshal([]byte(resp.Choices[0].Content), &guide)) + assert.Equal(t, "Paris", guide.City) + assert.NotEmpty(t, guide.Landmarks) + if stream { + // MiniMax streams its thinking inside tags in the text as well. + _, text := reasoning.SplitContent(streamed.String()) + assert.Equal(t, resp.Choices[0].Content, structuredoutput.UnwrapFencedJSON(text)) + } + + var substitutes int + for _, w := range resp.Warnings { + if w.Option == "WithStructuredOutput" && w.Kind == llms.WarningSubstitute { + substitutes++ + } + } + assert.Equal(t, 1, substitutes) +} + +func TestStructuredOutputFallbackDeepSeek(t *testing.T) { + for _, stream := range []bool{false, true} { + name := "non-streaming" + if stream { + name = "streaming" + } + t.Run(name, func(t *testing.T) { + llm := newTestDeepSeekClient(t, WithModel("deepseek-flash"), WithStructuredOutputFallback()) + askForACityGuide(t, llm, stream) + }) + } +} + +func TestStructuredOutputFallbackZAI(t *testing.T) { + for _, stream := range []bool{false, true} { + name := "non-streaming" + if stream { + name = "streaming" + } + t.Run(name, func(t *testing.T) { + llm := newTestZAIClient(t, WithModel("glm-5.3-flash"), WithStructuredOutputFallback()) + askForACityGuide(t, llm, stream, llms.WithReasoning(llms.ReasoningLow, 0)) + }) + } +} + +func TestStructuredOutputFallbackMiniMax(t *testing.T) { + for _, stream := range []bool{false, true} { + name := "non-streaming" + if stream { + name = "streaming" + } + t.Run(name, func(t *testing.T) { + llm := newTestMiniMaxClient(t, WithModel("MiniMax-M2.7"), WithStructuredOutputFallback()) + askForACityGuide(t, llm, stream) + }) + } +} + +// TestStructuredOutputFallbackZAIToolRound checks that the schema instruction +// leaves tool calls open: the model calls the tool first, then answers with JSON +// that matches the schema once the tool result is in. +func TestStructuredOutputFallbackZAIToolRound(t *testing.T) { + llm := newTestZAIClient(t, WithModel("glm-5.3-flash"), WithStructuredOutputFallback(), WithPreserveReasoningContent()) + askForTheWeatherWithATool(t, llm, llms.WithReasoning(llms.ReasoningLow, 0)) +} + +// TestStructuredOutputFallbackMiniMaxToolRound does the same on MiniMax, whose +// thinking goes back inside tags at the head of the tool-call turn. +func TestStructuredOutputFallbackMiniMaxToolRound(t *testing.T) { + llm := newTestMiniMaxClient(t, WithModel("MiniMax-M2.7"), WithStructuredOutputFallback(), WithPreserveReasoningContent()) + askForTheWeatherWithATool(t, llm) +} + +func askForTheWeatherWithATool(t *testing.T, llm *LLM, extra ...llms.CallOption) { + t.Helper() + + schema := llms.WithStructuredOutput(llms.StructuredOutputConfig{ + Name: "weather", + Schema: json.RawMessage(`{"type":"object","properties":{"city":{"type":"string"},` + + `"temperature_c":{"type":"integer"},"summary":{"type":"string"}},` + + `"required":["city","temperature_c","summary"],"additionalProperties":false}`), + }) + tools := llms.WithTools([]llms.Tool{{Type: "function", Function: &llms.FunctionDefinition{ + Name: "get_weather", Description: "Current weather for a city", + Parameters: map[string]any{ + "type": "object", "properties": map[string]any{"city": map[string]any{"type": "string"}}, + "required": []string{"city"}, + }, + }}}) + opts := append([]llms.CallOption{schema, tools}, extra...) + + messages := make([]llms.MessageContent, 0, 3) + messages = append(messages, llms.TextParts(llms.ChatMessageTypeHuman, "What is the weather in Paris? Use the tool.")) + first, err := llm.GenerateContent(context.Background(), messages, opts...) + require.NoError(t, err) + require.NotEmpty(t, first.Choices[0].ToolCalls, "the schema instruction must not keep the model from calling the tool") + call := first.Choices[0].ToolCalls[0] + + assistant := llms.MessageContent{Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.TextContent{Text: first.Choices[0].Content, Reasoning: first.Choices[0].Reasoning}, call, + }} + messages = append(messages, assistant, llms.MessageContent{Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{ + llms.ToolCallResponse{ToolCallID: call.ID, Name: call.FunctionCall.Name, Content: `{"temperature_c":18,"conditions":"light rain"}`}, + }}) + + final, err := llm.GenerateContent(context.Background(), messages, opts...) + require.NoError(t, err, "the answer after the tool result must validate against the schema") + var weather struct { + City string `json:"city"` + TemperatureC int `json:"temperature_c"` + } + require.NoError(t, json.Unmarshal([]byte(final.Choices[0].Content), &weather)) + assert.Equal(t, "Paris", weather.City) + assert.Equal(t, 18, weather.TemperatureC) +} diff --git a/llms/openai/structured_output_fallback_test.go b/llms/openai/structured_output_fallback_test.go new file mode 100644 index 000000000..bd0edb400 --- /dev/null +++ b/llms/openai/structured_output_fallback_test.go @@ -0,0 +1,643 @@ +package openai + +import ( + "context" + "encoding/json" + "errors" + "io" + "net/http" + "net/http/httptest" + "strings" + "sync" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" + "github.com/vxcontrol/langchaingo/llms/structuredoutput" +) + +// fallbackReply is what the stub vendor answers: one choice, as a single +// completion or, for a streaming request, as SSE chunks of the given pieces. +// A streamed piece can carry a reasoning delta too, as MiniMax's do. +type fallbackReply struct { + pieces []string + reasonings []string + finishReason string + toolCall bool +} + +// fallbackServer answers every chat request with the same reply and keeps the +// request bodies for the test goroutine to decode. +type fallbackServer struct { + *httptest.Server + + mu sync.Mutex + bodies [][]byte +} + +func newFallbackServer(t *testing.T, reply fallbackReply) *fallbackServer { + t.Helper() + + if reply.finishReason == "" { + reply.finishReason = "stop" + } + fs := &fallbackServer{} + fs.Server = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + body, _ := io.ReadAll(r.Body) + fs.mu.Lock() + fs.bodies = append(fs.bodies, body) + fs.mu.Unlock() + + content, _ := json.Marshal(strings.Join(reply.pieces, "")) + toolCalls := "" + if reply.toolCall { + toolCalls = `,"tool_calls":[{"id":"call_1","type":"function",` + + `"function":{"name":"get_weather","arguments":"{\"city\":\"Paris\"}"}}]` + } + if !strings.Contains(string(body), `"stream":true`) { + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"x","object":"chat.completion","created":1,"model":"m",`+ + `"choices":[{"index":0,"message":{"role":"assistant","content":`+string(content)+toolCalls+`},`+ + `"finish_reason":"`+reply.finishReason+`"}],"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`) + return + } + w.Header().Set("Content-Type", "text/event-stream") + for i, piece := range reply.pieces { + delta, _ := json.Marshal(piece) + thought := "" + if i < len(reply.reasonings) && reply.reasonings[i] != "" { + raw, _ := json.Marshal(reply.reasonings[i]) + thought = `,"reasoning":` + string(raw) + } + _, _ = io.WriteString(w, `data: {"id":"x","object":"chat.completion.chunk","created":1,"model":"m",`+ + `"choices":[{"index":0,"delta":{"role":"assistant","content":`+string(delta)+thought+`},"finish_reason":null}]}`+"\n\n") + } + _, _ = io.WriteString(w, `data: {"id":"x","object":"chat.completion.chunk","created":1,"model":"m",`+ + `"choices":[{"index":0,"delta":{},"finish_reason":"`+reply.finishReason+`"}]}`+"\n\ndata: [DONE]\n\n") + })) + t.Cleanup(fs.Close) + return fs +} + +func (fs *fallbackServer) requests() int { + fs.mu.Lock() + defer fs.mu.Unlock() + return len(fs.bodies) +} + +// wireRequest is the part of a chat request these tests read. +type wireRequest struct { + ResponseFormat json.RawMessage `json:"response_format"` + Messages []struct { + Role string `json:"role"` + Content json.RawMessage `json:"content"` + } `json:"messages"` + Tools []any `json:"tools"` +} + +func (fs *fallbackServer) request(t *testing.T, i int) wireRequest { + t.Helper() + + fs.mu.Lock() + defer fs.mu.Unlock() + require.Greater(t, len(fs.bodies), i, "the server got fewer requests than expected") + var req wireRequest + require.NoError(t, json.Unmarshal(fs.bodies[i], &req)) + return req +} + +// messageText returns a wire content as text: the string itself, or the text +// parts of a content array joined, and whether it was an array. +func messageText(t *testing.T, content json.RawMessage) (string, bool) { + t.Helper() + + var text string + if json.Unmarshal(content, &text) == nil { + return text, false + } + var parts []struct { + Type string `json:"type"` + Text string `json:"text"` + } + require.NoError(t, json.Unmarshal(content, &parts)) + var texts []string + for _, part := range parts { + if part.Type == "text" { + texts = append(texts, part.Text) + } + } + return strings.Join(texts, "|"), true +} + +func newFallbackLLM(t *testing.T, serverURL, model string, extra ...Option) *LLM { + t.Helper() + + opts := append([]Option{WithBaseURL(serverURL), WithToken("test"), WithModel(model), WithStructuredOutputFallback()}, extra...) + llm, err := New(opts...) + require.NoError(t, err) + return llm +} + +func answerSchema() llms.CallOption { + return llms.WithStructuredOutput(llms.StructuredOutputConfig{Name: "answer", Schema: objectSchema()}) +} + +func TestTheFallbackSendsJSONObjectAndTheSchemaInThePrompt(t *testing.T) { + t.Parallel() + + for _, model := range []string{"deepseek-flash", "deepseek-v4-pro", "deepseek/deepseek-v4-pro", "glm-5.3", "zai/glm-5.3"} { + t.Run(model, func(t *testing.T) { + t.Parallel() + + srv := newFallbackServer(t, fallbackReply{pieces: []string{`{"answer":"42"}`}}) + resp, err := newFallbackLLM(t, srv.URL, model).GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")}, answerSchema()) + require.NoError(t, err) + assert.Equal(t, `{"answer":"42"}`, resp.Choices[0].Content) + + req := srv.request(t, 0) + assert.JSONEq(t, `{"type":"json_object"}`, string(req.ResponseFormat), "no json_schema reaches the vendor") + text, array := messageText(t, req.Messages[0].Content) + assert.False(t, array, "a text message stays a string") + assert.Equal(t, "question\n\n"+structuredoutput.PromptInstruction(objectSchema(), false), text) + + var substitute llms.Warning + for _, w := range resp.Warnings { + if w.Option == "WithStructuredOutput" { + substitute = w + } + } + assert.Equal(t, llms.WarningSubstitute, substitute.Kind) + assert.Equal(t, model, substitute.Model) + assert.Equal(t, "answer", substitute.Asked) + assert.Equal(t, "json_object and a prompt instruction", substitute.Sent) + assert.Equal(t, "the vendor's chat completions response_format takes only text and json_object, "+ + "so the schema travels in the prompt and the answer is validated locally", substitute.Reason) + }) + } +} + +func TestTheFallbackSendsMiniMaxOnlyTheSchemaInThePrompt(t *testing.T) { + t.Parallel() + + for _, model := range []string{"MiniMax-M2.7", "MiniMax-M2.7-highspeed", "MiniMax-M3", "minimax/MiniMax-M3"} { + t.Run(model, func(t *testing.T) { + t.Parallel() + + // MiniMax puts its thinking at the head of content; the client splits it off. + srv := newFallbackServer(t, fallbackReply{pieces: []string{"\nThe user wants JSON.\n\n\n", `{"answer":"42"}`}}) + resp, err := newFallbackLLM(t, srv.URL, model).GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")}, answerSchema(), llms.WithJSONMode()) + require.NoError(t, err) + assert.Equal(t, `{"answer":"42"}`, resp.Choices[0].Content) + require.NotNil(t, resp.Choices[0].Reasoning) + assert.Equal(t, "The user wants JSON.", resp.Choices[0].Reasoning.Content) + + req := srv.request(t, 0) + assert.Empty(t, req.ResponseFormat, "MiniMax's API has no response_format, not even json_object") + text, _ := messageText(t, req.Messages[0].Content) + assert.Equal(t, "question\n\n"+structuredoutput.PromptInstruction(objectSchema(), false), text) + + var warnings []llms.Warning + for _, w := range resp.Warnings { + if w.Option == "WithStructuredOutput" || w.Option == "WithJSONMode" { + warnings = append(warnings, w) + } + } + require.Len(t, warnings, 1, "JSON mode under the schema is not reported on its own") + assert.Equal(t, llms.WarningSubstitute, warnings[0].Kind) + assert.Equal(t, "WithStructuredOutput", warnings[0].Option) + assert.Equal(t, "a prompt instruction", warnings[0].Sent) + assert.Equal(t, "the vendor's chat completions API takes no response_format for this model, "+ + "so the schema travels in the prompt and the answer is validated locally", warnings[0].Reason) + }) + } +} + +// placementCase is a conversation and where the fallback must put the schema. +type placementCase struct { + name string + messages []llms.MessageContent + opts []llms.CallOption + roles []string + instructed int + prefix string + array bool + toolsNote bool +} + +func placementCases() []placementCase { + toolCall := llms.ToolCall{ + ID: "call_1", Type: "function", + FunctionCall: &llms.FunctionCall{Name: "get_weather", Arguments: `{"city":"Paris"}`}, + } + return []placementCase{ + { + name: "only the last of several user turns", + messages: []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeSystem, "sys"), + llms.TextParts(llms.ChatMessageTypeHuman, "first"), + llms.TextParts(llms.ChatMessageTypeAI, "reply"), + llms.TextParts(llms.ChatMessageTypeHuman, "second"), + }, + roles: []string{"system", "user", "assistant", "user"}, instructed: 3, prefix: "second\n\n", + }, + { + name: "the user turn before a tool round, telling the model it may still call tools", + messages: []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "weather in Paris?"), + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{toolCall}}, + {Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{llms.ToolCallResponse{ + ToolCallID: toolCall.ID, Name: "get_weather", Content: "sunny", + }}}, + }, + opts: []llms.CallOption{llms.WithTools([]llms.Tool{weatherTool()})}, + roles: []string{"user", "assistant", "tool"}, instructed: 0, prefix: "weather in Paris?\n\n", toolsNote: true, + }, + { + name: "a user turn of its own when there is none, since Z.ai answers no conversation without one", + messages: []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeSystem, "sys")}, + roles: []string{"system", "user"}, instructed: 1, prefix: structuredoutput.SchemaInstruction, + }, + { + name: "a text part of its own after an image", + messages: []llms.MessageContent{{Role: llms.ChatMessageTypeHuman, Parts: []llms.ContentPart{ + llms.TextContent{Text: "what is this?"}, + llms.ImageURLContent{URL: "https://example.com/cat.png"}, + }}}, + roles: []string{"user"}, instructed: 0, prefix: "what is this?|" + structuredoutput.SchemaInstruction, array: true, + }, + } +} + +func TestTheFallbackCarriesTheSchemaInThePrompt(t *testing.T) { + t.Parallel() + + for _, tc := range placementCases() { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + srv := newFallbackServer(t, fallbackReply{pieces: []string{`{"answer":"42"}`}}) + llm := newFallbackLLM(t, srv.URL, "deepseek-flash") + + before, err := json.Marshal(tc.messages) + require.NoError(t, err) + opts := append([]llms.CallOption{answerSchema()}, tc.opts...) + for range 2 { + _, err = llm.GenerateContent(t.Context(), tc.messages, opts...) + require.NoError(t, err) + } + after, err := json.Marshal(tc.messages) + require.NoError(t, err) + assert.JSONEq(t, string(before), string(after), "the caller's messages must stay as they were") + + for call := range 2 { + assertPlacement(t, srv.request(t, call), tc) + } + }) + } +} + +// assertPlacement checks that exactly the expected wire message carries the +// schema instruction, once, after the text the caller wrote there. +func assertPlacement(t *testing.T, req wireRequest, tc placementCase) { + t.Helper() + + roles := make([]string, len(req.Messages)) + for i, m := range req.Messages { + roles[i] = m.Role + if i != tc.instructed { + assert.NotContains(t, string(m.Content), "JSON Schema", "message %d must not carry the schema", i) + } + } + require.Equal(t, tc.roles, roles) + + got, array := messageText(t, req.Messages[tc.instructed].Content) + assert.Equal(t, tc.array, array) + assert.True(t, strings.HasPrefix(got, tc.prefix), "got %q", got) + assert.Equal(t, 1, strings.Count(got, structuredoutput.SchemaInstruction), "a repeated call must not stack the instruction") + assert.Contains(t, got, `"answer"`, "the schema itself travels") + assert.Equal(t, tc.toolsNote, strings.Contains(got, structuredoutput.ToolsNote)) +} + +func TestTheFallbackReachesOnlyModelsWithoutJSONSchema(t *testing.T) { + t.Parallel() + + human := []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")} + + t.Run("models with json_schema keep it", func(t *testing.T) { + t.Parallel() + for _, model := range []string{"gpt-4o", "glm-5-2", "mistral/zai-glm-5-2", "MiniMax-Text-01", "openrouter/minimax/minimax-m3"} { + srv := newFallbackServer(t, fallbackReply{pieces: []string{`{"answer":"42"}`}}) + resp, err := newFallbackLLM(t, srv.URL, model).GenerateContent(t.Context(), human, answerSchema()) + require.NoError(t, err, model) + + req := srv.request(t, 0) + assert.Contains(t, string(req.ResponseFormat), `"json_schema"`, model) + text, _ := messageText(t, req.Messages[0].Content) + assert.Equal(t, "question", text, model) + for _, w := range resp.Warnings { + assert.NotEqual(t, "WithStructuredOutput", w.Option, model) + } + } + }) + + t.Run("without the option the vendor is still refused before any request", func(t *testing.T) { + t.Parallel() + for _, model := range []string{"deepseek-flash", "MiniMax-M2.7"} { + srv := newFallbackServer(t, fallbackReply{pieces: []string{`{"answer":"42"}`}}) + llm, err := New(WithBaseURL(srv.URL), WithToken("test"), WithModel(model)) + require.NoError(t, err) + + _, err = llm.GenerateContent(t.Context(), human, answerSchema()) + var unsupported *llms.ErrStructuredOutputUnsupported + require.ErrorAs(t, err, &unsupported, model) + assert.Zero(t, srv.requests(), model) + } + }) + + t.Run("JSON mode alone is left as it was", func(t *testing.T) { + t.Parallel() + srv := newFallbackServer(t, fallbackReply{pieces: []string{`{"a":1}`}}) + resp, err := newFallbackLLM(t, srv.URL, "deepseek-flash").GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "answer in json")}, llms.WithJSONMode()) + require.NoError(t, err) + + req := srv.request(t, 0) + assert.JSONEq(t, `{"type":"json_object"}`, string(req.ResponseFormat)) + text, _ := messageText(t, req.Messages[0].Content) + assert.Equal(t, "answer in json", text) + assert.Empty(t, resp.Warnings) + }) +} + +func TestTheFallbackChecksTheSchemaAsTheNativePathDoes(t *testing.T) { + t.Parallel() + + human := []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")} + for _, tc := range []struct { + name string + config llms.StructuredOutputConfig + opts []Option + want error + }{ + {name: "a schema without a name", config: llms.StructuredOutputConfig{Schema: objectSchema()}, want: llms.ErrStructuredOutputConfig}, + { + name: "a schema outside the strict subset", + config: llms.StructuredOutputConfig{Name: "answer", Schema: json.RawMessage(`{"type":"array","items":{"type":"string"}}`)}, + want: llms.ErrStructuredOutputConfig, + }, + { + name: "a client-level response format", + config: llms.StructuredOutputConfig{Name: "answer", Schema: objectSchema()}, + opts: []Option{WithResponseFormat(ResponseFormatJSON)}, + }, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + var errs [2]error + for i, model := range []string{"gpt-4o", "deepseek-flash"} { + srv := newFallbackServer(t, fallbackReply{pieces: []string{`{"answer":"42"}`}}) + _, errs[i] = newFallbackLLM(t, srv.URL, model, tc.opts...).GenerateContent(t.Context(), human, + llms.WithStructuredOutput(tc.config)) + require.Error(t, errs[i], model) + assert.Zero(t, srv.requests(), "%s: refused before any request", model) + } + if tc.want != nil { + require.ErrorIs(t, errs[1], tc.want) + } else { + var conflict *llms.ErrStructuredOutputConflict + require.ErrorAs(t, errs[1], &conflict) + } + assert.Equal(t, errs[0].Error(), errs[1].Error(), "the vendor without json_schema gets the same verdict") + }) + } +} + +func TestTheFallbackValidatesTheAnswerLocally(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + reply fallbackReply + invalid bool + want string + }{ + {name: "a valid answer", reply: fallbackReply{pieces: []string{`{"answer":"42"}`}}, want: `{"answer":"42"}`}, + {name: "a fenced answer is unwrapped", reply: fallbackReply{pieces: []string{"```json\n{\"answer\":\"42\"}\n```"}}, want: `{"answer":"42"}`}, + {name: "an answer off the schema", reply: fallbackReply{pieces: []string{`{"answer":42}`}}, invalid: true, want: `{"answer":42}`}, + {name: "prose around the answer", reply: fallbackReply{pieces: []string{`Here: {"answer":"42"}`}}, invalid: true, want: `Here: {"answer":"42"}`}, + {name: "broken JSON", reply: fallbackReply{pieces: []string{`{"answer":["42"}`}}, invalid: true, want: `{"answer":["42"}`}, + {name: "an empty answer", reply: fallbackReply{pieces: []string{""}}, invalid: true}, + { + name: "a truncated answer is left alone", + reply: fallbackReply{pieces: []string{"```json\n{\"answer\":\"```"}, finishReason: "length"}, want: "```json\n{\"answer\":\"```", + }, + {name: "a tool-call turn is not the final answer", reply: fallbackReply{pieces: []string{" "}, finishReason: "tool_calls", toolCall: true}}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + srv := newFallbackServer(t, tc.reply) + opts := []llms.CallOption{answerSchema()} + if tc.reply.toolCall { + opts = append(opts, llms.WithTools([]llms.Tool{weatherTool()})) + } + resp, err := newFallbackLLM(t, srv.URL, "glm-5.3").GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")}, opts...) + require.NotNil(t, resp, "the answer comes back with any error") + + if tc.invalid { + var validation *llms.ErrStructuredOutputValidation + require.ErrorAs(t, err, &validation) + assert.Equal(t, "glm-5.3", validation.Model) + } else { + require.NoError(t, err) + } + if !tc.reply.toolCall { + assert.Equal(t, tc.want, resp.Choices[0].Content) + } + }) + } +} + +func TestTheFallbackValidatesTheStreamedAnswer(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + pieces []string + content string + invalid bool + }{ + {name: "a valid answer in pieces", pieces: []string{`{"answer":`, `"42"}`}, content: `{"answer":"42"}`}, + {name: "a fenced answer in pieces is unwrapped once complete", pieces: []string{"```json\n", `{"answer":"42"}`, "\n```"}, content: `{"answer":"42"}`}, + {name: "prose in pieces", pieces: []string{"The answer ", "is 42."}, content: "The answer is 42.", invalid: true}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + srv := newFallbackServer(t, fallbackReply{pieces: tc.pieces}) + var streamed strings.Builder + resp, err := newFallbackLLM(t, srv.URL, "deepseek-flash").GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")}, + answerSchema(), llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type == streaming.ChunkTypeText { + streamed.WriteString(chunk.Content) + } + return nil + })) + + require.NotNil(t, resp) + assert.Equal(t, strings.Join(tc.pieces, ""), streamed.String(), "every chunk reaches the caller as sent") + assert.Equal(t, tc.content, resp.Choices[0].Content) + var validation *llms.ErrStructuredOutputValidation + assert.Equal(t, tc.invalid, errors.As(err, &validation), "got %v", err) + if !tc.invalid { + require.NoError(t, err) + } + }) + } +} + +func TestTheFallbackValidatesMiniMaxStreamedAnswerAfterItsThinking(t *testing.T) { + t.Parallel() + + pieces := []string{"\nThe user", " wants JSON.", "\n\n\n", "```json\n", `{"answer":"42"}`, "\n```"} + for _, tc := range []struct { + name string + reasonings []string + }{ + {name: "thinking only inside the content"}, + // What MiniMax's API streams: every thinking piece twice, inside the + // content and as a reasoning delta, so the client leaves the content whole. + {name: "thinking in the content and as reasoning too", reasonings: []string{"The user", " wants JSON."}}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + srv := newFallbackServer(t, fallbackReply{pieces: pieces, reasonings: tc.reasonings}) + var thought strings.Builder + resp, err := newFallbackLLM(t, srv.URL, "MiniMax-M2.7").GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")}, + answerSchema(), llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type == streaming.ChunkTypeReasoning { + thought.WriteString(chunk.Reasoning.Content) + } + return nil + })) + + require.NoError(t, err) + assert.Equal(t, `{"answer":"42"}`, resp.Choices[0].Content) + require.NotNil(t, resp.Choices[0].Reasoning) + assert.Contains(t, resp.Choices[0].Reasoning.Content, "The user wants JSON.") + assert.NotContains(t, resp.Choices[0].Reasoning.Content, "think>") + assert.Contains(t, thought.String(), "wants JSON") + assert.Empty(t, srv.request(t, 0).ResponseFormat) + }) + } +} + +func TestTheFallbackMovesOnlyTheThinkingAtTheHeadOfTheAnswer(t *testing.T) { + t.Parallel() + + // Every piece carries a reasoning delta, so the client leaves the content whole. + for name, pieces := range map[string][]string{ + "thinking after the answer": {`{"answer":"42"} `, "late"}, + "thinking never closed": {"never closed ", `{"answer":"42"}`}, + } { + t.Run(name, func(t *testing.T) { + t.Parallel() + + srv := newFallbackServer(t, fallbackReply{pieces: pieces, reasonings: []string{"r", "r"}}) + resp, err := newFallbackLLM(t, srv.URL, "MiniMax-M2.7").GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")}, answerSchema(), + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + + var validation *llms.ErrStructuredOutputValidation + require.ErrorAs(t, err, &validation) + require.NotNil(t, resp) + assert.Equal(t, strings.Join(pieces, ""), resp.Choices[0].Content) + }) + } +} + +// A thinking block at the head of the answer is taken out in every shape a +// stream can leave it in, and never replaces the reasoning that was streamed. +func TestTheFallbackTakesOutTheThinkingAtTheHeadOfTheAnswer(t *testing.T) { + t.Parallel() + + const answer = `{"answer":"42"}` + for _, tc := range []struct { + name string + pieces []string + reasonings []string + want string + }{ + {name: "a thinking block", pieces: []string{"plan\n\n", answer}, reasonings: []string{"plan"}, want: "plan"}, + {name: "whitespace before the block", pieces: []string{"\nplan\n\n", answer}, reasonings: []string{"plan"}, want: "plan"}, + // The chunk splitter sees no tag in either piece, and no reasoning delta + // came, so the block reaches the unwrap whole with no reasoning beside it. + {name: "a tag split across chunks without reasoning deltas", pieces: []string{"plan\n\n", answer}, want: "plan"}, + {name: "streamed reasoning differing from the block", pieces: []string{"plan\n\n", answer}, reasonings: []string{"summary"}, want: "summary"}, + // As MiniMax-M2.5 streams: no reasoning deltas, so the chunk splitter + // takes the block and leaves the blank lines after it in the answer. + {name: "a block the client already split", pieces: []string{"plan", "\n\n", answer}, want: "plan"}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + srv := newFallbackServer(t, fallbackReply{pieces: tc.pieces, reasonings: tc.reasonings}) + resp, err := newFallbackLLM(t, srv.URL, "MiniMax-M2.7").GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")}, answerSchema(), + llms.WithStreamingFunc(func(context.Context, streaming.Chunk) error { return nil })) + require.NoError(t, err) + assert.Equal(t, answer, resp.Choices[0].Content) + require.NotNil(t, resp.Choices[0].Reasoning) + assert.Equal(t, tc.want, strings.TrimSpace(resp.Choices[0].Reasoning.Content)) + }) + } +} + +// Only an emulated structured-output answer is unwrapped: every other answer, +// a native json_schema one included, comes back and is validated as sent. +func TestAnswersOutsideTheFallbackStayAsSent(t *testing.T) { + t.Parallel() + + const fenced = "```json\n{\"answer\":\"42\"}\n```" + human := []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")} + + t.Run("JSON mode alone on a fallback client", func(t *testing.T) { + t.Parallel() + srv := newFallbackServer(t, fallbackReply{pieces: []string{fenced}}) + resp, err := newFallbackLLM(t, srv.URL, "deepseek-flash").GenerateContent(t.Context(), human, llms.WithJSONMode()) + require.NoError(t, err) + assert.Equal(t, fenced, resp.Choices[0].Content) + }) + + t.Run("a native json_schema answer is validated as sent", func(t *testing.T) { + t.Parallel() + srv := newFallbackServer(t, fallbackReply{pieces: []string{fenced}}) + resp, err := newFallbackLLM(t, srv.URL, "gpt-4o").GenerateContent(t.Context(), human, answerSchema()) + var validation *llms.ErrStructuredOutputValidation + require.ErrorAs(t, err, &validation) + assert.Equal(t, fenced, resp.Choices[0].Content) + }) +} + +// The per-call model decides the unwrap, as it decides the request. +func TestThePerCallModelDecidesTheFallbackUnwrap(t *testing.T) { + t.Parallel() + + srv := newFallbackServer(t, fallbackReply{pieces: []string{"```json\n{\"answer\":\"42\"}\n```"}}) + resp, err := newFallbackLLM(t, srv.URL, "gpt-4o").GenerateContent(t.Context(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "question")}, + answerSchema(), llms.WithModel("minimax/MiniMax-M2.7")) + require.NoError(t, err) + assert.Equal(t, `{"answer":"42"}`, resp.Choices[0].Content) + assert.Empty(t, srv.request(t, 0).ResponseFormat) +} diff --git a/llms/openai/structured_output_unit_test.go b/llms/openai/structured_output_unit_test.go index 4d8c58c86..e84dee5dd 100644 --- a/llms/openai/structured_output_unit_test.go +++ b/llms/openai/structured_output_unit_test.go @@ -7,6 +7,8 @@ import ( "io" "net/http" "net/http/httptest" + "strings" + "sync/atomic" "testing" "github.com/vxcontrol/langchaingo/callbacks" @@ -38,7 +40,7 @@ func TestCreateChatRequest_ResponseFormatModes(t *testing.T) { //nolint:funlen / llm := newUnitLLM(t, WithModel("gpt-4o-2024-08-06")) var opts llms.CallOptions llms.WithJSONMode()(&opts) - req, err := llm.createChatRequest(nil, opts) + req, err := llm.createChatRequest(nil, opts, nil) if err != nil { t.Fatal(err) } @@ -52,7 +54,7 @@ func TestCreateChatRequest_ResponseFormatModes(t *testing.T) { //nolint:funlen / llm := newUnitLLM(t, WithModel("gpt-4o-2024-08-06")) var opts llms.CallOptions llms.WithStructuredOutput(llms.StructuredOutputConfig{Name: "s", Description: "d", Schema: objectSchema()})(&opts) - req, err := llm.createChatRequest(nil, opts) + req, err := llm.createChatRequest(nil, opts, nil) if err != nil { t.Fatal(err) } @@ -88,7 +90,7 @@ func TestCreateChatRequest_ResponseFormatModes(t *testing.T) { //nolint:funlen / WithResponseFormat(&ResponseFormat{Type: "json_object"})) var opts llms.CallOptions llms.WithStructuredOutput(llms.StructuredOutputConfig{Name: "s", Schema: objectSchema()})(&opts) - _, err := llm.createChatRequest(nil, opts) + _, err := llm.createChatRequest(nil, opts, nil) var conflict *llms.ErrStructuredOutputConflict if !errors.As(err, &conflict) { t.Fatalf("want ErrStructuredOutputConflict, got %v", err) @@ -100,7 +102,7 @@ func TestCreateChatRequest_ResponseFormatModes(t *testing.T) { //nolint:funlen / llm := newUnitLLM(t, WithModel("gpt-4o-2024-08-06")) var opts llms.CallOptions llms.WithStructuredOutput(llms.StructuredOutputConfig{Schema: objectSchema()})(&opts) - _, err := llm.createChatRequest(nil, opts) + _, err := llm.createChatRequest(nil, opts, nil) if !errors.Is(err, llms.ErrStructuredOutputConfig) { t.Fatalf("want ErrStructuredOutputConfig, got %v", err) } @@ -112,7 +114,7 @@ func TestCreateChatRequest_ResponseFormatModes(t *testing.T) { //nolint:funlen / llm := newUnitLLM(t, WithModel(model)) var opts llms.CallOptions llms.WithStructuredOutput(llms.StructuredOutputConfig{Name: "s", Schema: objectSchema()})(&opts) - _, err := llm.createChatRequest(nil, opts) + _, err := llm.createChatRequest(nil, opts, nil) var unsup *llms.ErrStructuredOutputUnsupported if !errors.As(err, &unsup) { t.Fatalf("%s: want ErrStructuredOutputUnsupported, got %v", model, err) @@ -120,12 +122,62 @@ func TestCreateChatRequest_ResponseFormatModes(t *testing.T) { //nolint:funlen / } }) + t.Run("a vendor without json_schema is refused before the request", func(t *testing.T) { + t.Parallel() + for _, model := range []string{ + "deepseek-flash", "deepseek-v4-pro", "deepseek/deepseek-v4-pro", "glm-4.5-air", "zai/glm-5.3", + "glm-5.2", "zai.glm-4.7", "glm-5-turbo", + } { + llm := newUnitLLM(t, WithModel(model)) + var opts llms.CallOptions + llms.WithStructuredOutput(llms.StructuredOutputConfig{Name: "s", Schema: objectSchema()})(&opts) + _, err := llm.createChatRequest(nil, opts, nil) + var unsup *llms.ErrStructuredOutputUnsupported + if !errors.As(err, &unsup) { + t.Fatalf("%s: want ErrStructuredOutputUnsupported, got %v", model, err) + } + + var jsonMode llms.CallOptions + llms.WithJSONMode()(&jsonMode) + req, err := llm.createChatRequest(nil, jsonMode, nil) + if err != nil || req.ResponseFormat == nil || req.ResponseFormat.FormatType() != "json_object" { + t.Fatalf("%s: JSON mode is documented and must still reach the wire, got %+v, %v", model, req, err) + } + } + }) + + t.Run("GLM served by Mistral keeps the schema Mistral documents for it", func(t *testing.T) { + t.Parallel() + for _, model := range []string{"glm-5-2", "zai-glm-5-2", "mistral/zai-glm-5-2"} { + llm := newUnitLLM(t, WithModel(model)) + var opts llms.CallOptions + llms.WithStructuredOutput(llms.StructuredOutputConfig{Name: "s", Schema: objectSchema()})(&opts) + req, err := llm.createChatRequest(nil, opts, nil) + if err != nil || req.ResponseFormat.FormatType() != "json_schema" { + t.Fatalf("%s: want json_schema, got %+v, %v", model, req, err) + } + } + }) + + t.Run("MiniMax outside its own M-series API keeps the schema", func(t *testing.T) { + t.Parallel() + for _, model := range []string{"MiniMax-Text-01", "openrouter/minimax/minimax-m3"} { + llm := newUnitLLM(t, WithModel(model)) + var opts llms.CallOptions + llms.WithStructuredOutput(llms.StructuredOutputConfig{Name: "s", Schema: objectSchema()})(&opts) + req, err := llm.createChatRequest(nil, opts, nil) + if err != nil || req.ResponseFormat.FormatType() != "json_schema" { + t.Fatalf("%s: want json_schema, got %+v, %v", model, req, err) + } + } + }) + t.Run("unknown model passes through", func(t *testing.T) { t.Parallel() llm := newUnitLLM(t, WithModel("gpt-6-ultra-preview")) var opts llms.CallOptions llms.WithStructuredOutput(llms.StructuredOutputConfig{Name: "s", Schema: objectSchema()})(&opts) - req, err := llm.createChatRequest(nil, opts) + req, err := llm.createChatRequest(nil, opts, nil) if err != nil { t.Fatalf("unknown model must pass through, got %v", err) } @@ -318,18 +370,6 @@ func TestValidateStructuredResponse(t *testing.T) { t.Fatalf("want ErrStructuredOutputValidation, got %v", err) } }) - t.Run("refusal is a typed refusal, not a validation error", func(t *testing.T) { - t.Parallel() - err := llm.validateStructuredResponse(mk(openaiclient.FinishReasonStop, "", "I cannot help with that"), opts) - var refusal *ErrStructuredOutputRefusal - if !errors.As(err, &refusal) { - t.Fatalf("want ErrStructuredOutputRefusal, got %v", err) - } - var ve *llms.ErrStructuredOutputValidation - if errors.As(err, &ve) { - t.Fatal("refusal must not surface as a validation error") - } - }) t.Run("length is not final json", func(t *testing.T) { t.Parallel() if err := llm.validateStructuredResponse(mk(openaiclient.FinishReasonLength, `{"answer"`, ""), opts); err != nil { @@ -421,3 +461,53 @@ func TestStructuredOutputValidationFailureFiresSingleErrorCallback(t *testing.T) t.Fatalf("callback counts: starts=%d errs=%d ends=%d; want 1/1/0", h.starts, h.errs, h.ends) } } + +func TestMiniMaxJSONSchemaIsRefusedWithoutARequest(t *testing.T) { + t.Parallel() + + for _, model := range []string{"MiniMax-M3", "minimax/MiniMax-M3", "MiniMax-M2.7", "MiniMax-M2.7-highspeed"} { + var calls atomic.Int32 + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + calls.Add(1) + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"x","object":"chat.completion","created":1,"model":"m",`+ + `"choices":[{"index":0,"message":{"role":"assistant","content":"prose"},"finish_reason":"stop"}],`+ + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`) + })) + t.Cleanup(srv.Close) + + llm := newUnitLLM(t, WithBaseURL(srv.URL), WithModel(model)) + _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithStructuredOutput(llms.StructuredOutputConfig{Name: "s", Schema: objectSchema()})) + + var unsup *llms.ErrStructuredOutputUnsupported + if !errors.As(err, &unsup) || !strings.Contains(unsup.Reason, "response_format") { + t.Errorf("%s: want ErrStructuredOutputUnsupported naming response_format, got %v", model, err) + } + if n := calls.Load(); n != 0 { + t.Errorf("%s: a schema MiniMax cannot honor must not cost a request, got %d", model, n) + } + } +} + +func TestMiniMaxJSONModeLeavesOutTheResponseFormatItsAPILacks(t *testing.T) { + t.Parallel() + + for _, model := range []string{"MiniMax-M3", "minimax/MiniMax-M3", "MiniMax-M2.7", "MiniMax-M2.7-highspeed"} { + if body := sendForWire(t, model, llms.WithJSONMode()); strings.Contains(body, "response_format") { + t.Errorf("%s: MiniMax's chat completions API documents no response_format, got body: %s", model, body) + } + + w := warningFor(t, sendForWarnings(t, model, llms.WithJSONMode()), "WithJSONMode") + if w.Kind != llms.WarningDrop || w.Asked != "true" || !strings.Contains(w.Reason, "response_format") { + t.Errorf("%s: JSON mode warning = %+v", model, w) + } + } + + const jsonObject = `"response_format":{"type":"json_object"}` + if body := sendForWire(t, "openrouter/minimax/minimax-m3", llms.WithJSONMode()); !strings.Contains(body, jsonObject) { + t.Errorf("only MiniMax's own API lacks response_format, got body: %s", body) + } +} diff --git a/llms/openai/testdata/TestDeepSeekTakesBackAToolTurnWithoutReasoning-deepseek-flash.httprr b/llms/openai/testdata/TestDeepSeekTakesBackAToolTurnWithoutReasoning-deepseek-flash.httprr new file mode 100644 index 000000000..4269a042e --- /dev/null +++ b/llms/openai/testdata/TestDeepSeekTakesBackAToolTurnWithoutReasoning-deepseek-flash.httprr @@ -0,0 +1,25 @@ +httprr trace v1 +851 1256 +POST https://api.deepseek.com/chat/completions HTTP/1.1 +Host: api.deepseek.com +User-Agent: langchaingo-httprr +Content-Length: 648 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"deepseek-flash","messages":[{"role":"user","content":"What is the weather in Paris? Use the tool."},{"role":"assistant","content":"","tool_calls":[{"id":"call_07_Z9fjqXcYkT3bQ2wRmN8pLs4v","type":"function","function":{"name":"get_weather","arguments":"{\"city\":\"Paris\"}"}}],"reasoning_content":""},{"role":"tool","content":"Sunny, 21C","name":"get_weather","tool_call_id":"call_07_Z9fjqXcYkT3bQ2wRmN8pLs4v"}],"max_tokens":400,"tools":[{"type":"function","function":{"name":"get_weather","description":"Get the current weather for one city.","parameters":{"properties":{"city":{"type":"string"}},"required":["city"],"type":"object"}}}]}HTTP/2.0 200 OK +Content-Length: 665 +Access-Control-Allow-Credentials: true +Content-Type: application/json +Date: Thu, 24 Sep 2026 19:53:00 GMT +Server: elb +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Vary: origin, access-control-request-method, access-control-request-headers +Via: 1.1 f96816b40dac23679364d0e0033bb9d8.cloudfront.net (CloudFront) +X-Amz-Cf-Id: MAxb7vvMy3-CxeUmC1h3iS44XMUNU-KojMILovGyx6dUiWxtcjKzAw== +X-Amz-Cf-Pop: AMS56-P1 +X-Cache: Miss from cloudfront +X-Content-Type-Options: nosniff +X-Ds-Trace-Id: 61a2b26d65a023d163ff8d5b1b2a5830 + +{"id":"eccca64d-9ffd-4312-a777-6d3924a1be46","object":"chat.completion","created":1790279580,"model":"deepseek-flash","choices":[{"index":0,"message":{"role":"assistant","content":"The weather in Paris is currently **sunny with a temperature of 21°C** (about 70°F).","reasoning_content":"The tool returned \"Sunny, 21C\". Report it."},"logprobs":null,"finish_reason":"stop"}],"usage":{"prompt_tokens":358,"completion_tokens":40,"total_tokens":398,"prompt_tokens_details":{"cached_tokens":128},"completion_tokens_details":{"reasoning_tokens":14},"prompt_cache_hit_tokens":128,"prompt_cache_miss_tokens":230},"system_fingerprint":"aeb56401ca74e127821c4f9126dcb669"} \ No newline at end of file diff --git a/llms/openai/testdata/TestDeepSeekTakesBackAToolTurnWithoutReasoning-deepseek-v4-pro.httprr b/llms/openai/testdata/TestDeepSeekTakesBackAToolTurnWithoutReasoning-deepseek-v4-pro.httprr new file mode 100644 index 000000000..051805cad --- /dev/null +++ b/llms/openai/testdata/TestDeepSeekTakesBackAToolTurnWithoutReasoning-deepseek-v4-pro.httprr @@ -0,0 +1,25 @@ +httprr trace v1 +852 1321 +POST https://api.deepseek.com/chat/completions HTTP/1.1 +Host: api.deepseek.com +User-Agent: langchaingo-httprr +Content-Length: 649 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"deepseek-v4-pro","messages":[{"role":"user","content":"What is the weather in Paris? Use the tool."},{"role":"assistant","content":"","tool_calls":[{"id":"call_07_Z9fjqXcYkT3bQ2wRmN8pLs4v","type":"function","function":{"name":"get_weather","arguments":"{\"city\":\"Paris\"}"}}],"reasoning_content":""},{"role":"tool","content":"Sunny, 21C","name":"get_weather","tool_call_id":"call_07_Z9fjqXcYkT3bQ2wRmN8pLs4v"}],"max_tokens":400,"tools":[{"type":"function","function":{"name":"get_weather","description":"Get the current weather for one city.","parameters":{"properties":{"city":{"type":"string"}},"required":["city"],"type":"object"}}}]}HTTP/2.0 200 OK +Content-Length: 730 +Access-Control-Allow-Credentials: true +Content-Type: application/json +Date: Thu, 24 Sep 2026 19:53:00 GMT +Server: elb +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Vary: origin, access-control-request-method, access-control-request-headers +Via: 1.1 f96816b40dac23679364d0e0033bb9d8.cloudfront.net (CloudFront) +X-Amz-Cf-Id: CE_fKfCNGon61mTVFDuWIVXpMtx029Q9P_1VOl2RAnIrpFsvQLVS-w== +X-Amz-Cf-Pop: AMS56-P1 +X-Cache: Miss from cloudfront +X-Content-Type-Options: nosniff +X-Ds-Trace-Id: 703c642648a2a84d7864dffc5d6ad7d9 + +{"id":"7369edac-7103-483a-9c6b-aca82fa29b12","object":"chat.completion","created":1790279580,"model":"deepseek-v4-pro","choices":[{"index":0,"message":{"role":"assistant","content":"The weather in Paris is **Sunny, 21°C**.","reasoning_content":"The user asked for the weather in Paris and to use the tool. I called the tool and got \"Sunny, 21C\". Now I need to respond with the weather information."},"logprobs":null,"finish_reason":"stop"}],"usage":{"prompt_tokens":427,"completion_tokens":53,"total_tokens":480,"prompt_tokens_details":{"cached_tokens":384},"completion_tokens_details":{"reasoning_tokens":38},"prompt_cache_hit_tokens":384,"prompt_cache_miss_tokens":43},"system_fingerprint":"a307abda487cd1b463329ccb945ce396"} \ No newline at end of file diff --git a/llms/openai/testdata/TestFunctionCall-streaming-openai.httprr b/llms/openai/testdata/TestFunctionCall-streaming-openai.httprr index 97432f53e..91b6b555f 100644 --- a/llms/openai/testdata/TestFunctionCall-streaming-openai.httprr +++ b/llms/openai/testdata/TestFunctionCall-streaming-openai.httprr @@ -1,5 +1,5 @@ httprr trace v1 -701 4693 +701 4677 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: text/event-stream; charset=utf-8 Date: Thu, 22 Jan 2026 19:58:23 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 218 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestFunctionCall-synchronous-openai.httprr b/llms/openai/testdata/TestFunctionCall-synchronous-openai.httprr index 6eb8b44d3..688ffbde0 100644 --- a/llms/openai/testdata/TestFunctionCall-synchronous-openai.httprr +++ b/llms/openai/testdata/TestFunctionCall-synchronous-openai.httprr @@ -1,5 +1,5 @@ httprr trace v1 -647 1892 +647 1876 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 19:58:28 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 502 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestFunctionParallelCall-streaming-openai.httprr b/llms/openai/testdata/TestFunctionParallelCall-streaming-openai.httprr index e2dbc6356..3509e9049 100644 --- a/llms/openai/testdata/TestFunctionParallelCall-streaming-openai.httprr +++ b/llms/openai/testdata/TestFunctionParallelCall-streaming-openai.httprr @@ -1,5 +1,5 @@ httprr trace v1 -978 7236 +978 7220 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: text/event-stream; charset=utf-8 Date: Thu, 22 Jan 2026 19:58:40 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 917 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestFunctionParallelCall-synchronous-openai.httprr b/llms/openai/testdata/TestFunctionParallelCall-synchronous-openai.httprr index c8a180fc3..f3b5495c5 100644 --- a/llms/openai/testdata/TestFunctionParallelCall-synchronous-openai.httprr +++ b/llms/openai/testdata/TestFunctionParallelCall-synchronous-openai.httprr @@ -1,5 +1,5 @@ httprr trace v1 -924 2143 +924 2127 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 19:58:40 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 650 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestMultiContentImage.httprr b/llms/openai/testdata/TestMultiContentImage.httprr index 60e7a35db..32782809e 100644 --- a/llms/openai/testdata/TestMultiContentImage.httprr +++ b/llms/openai/testdata/TestMultiContentImage.httprr @@ -1,5 +1,5 @@ httprr trace v1 -479 2188 +479 2172 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 19:57:29 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 5282 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestMultiContentText-openai.httprr b/llms/openai/testdata/TestMultiContentText-openai.httprr index 0d418b6d7..ed22659f1 100644 --- a/llms/openai/testdata/TestMultiContentText-openai.httprr +++ b/llms/openai/testdata/TestMultiContentText-openai.httprr @@ -1,5 +1,5 @@ httprr trace v1 -360 1920 +360 1904 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 19:48:35 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 1739 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestMultiContentTextChatSequence-openai.httprr b/llms/openai/testdata/TestMultiContentTextChatSequence-openai.httprr index acd5fe4ec..a241a2f84 100644 --- a/llms/openai/testdata/TestMultiContentTextChatSequence-openai.httprr +++ b/llms/openai/testdata/TestMultiContentTextChatSequence-openai.httprr @@ -1,5 +1,5 @@ httprr trace v1 -392 1635 +392 1619 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 19:57:01 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 569 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-deepseek.httprr b/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-deepseek.httprr index 7959ccc45..7b64e292d 100644 --- a/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-deepseek.httprr +++ b/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-deepseek.httprr @@ -1,13 +1,13 @@ httprr trace v1 -425 83593 +414 83593 POST https://api.deepseek.com/chat/completions HTTP/1.1 Host: api.deepseek.com User-Agent: langchaingo-httprr -Content-Length: 222 +Content-Length: 211 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"deepseek-reasoner","messages":[{"role":"user","content":"What is the factorial of 5? Show your work. Think before you answer."}],"max_completion_tokens":8192,"stream":true,"stream_options":{"include_usage":true}}HTTP/2.0 200 OK +{"model":"deepseek-reasoner","messages":[{"role":"user","content":"What is the factorial of 5? Show your work. Think before you answer."}],"max_tokens":8192,"stream":true,"stream_options":{"include_usage":true}}HTTP/2.0 200 OK Content-Length: 82959 Access-Control-Allow-Credentials: true Cache-Control: no-cache diff --git a/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-openai-o1.httprr b/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-openai-o1.httprr index aafa57b9c..de7fde359 100644 --- a/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-openai-o1.httprr +++ b/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-openai-o1.httprr @@ -1,5 +1,5 @@ httprr trace v1 -435 29065 +435 29049 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: text/event-stream; charset=utf-8 Date: Thu, 22 Jan 2026 19:49:57 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 1510 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-openai-o3-mini.httprr b/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-openai-o3-mini.httprr index c05666f89..e0705e7ce 100644 --- a/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-openai-o3-mini.httprr +++ b/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-openai-o3-mini.httprr @@ -1,5 +1,5 @@ httprr trace v1 -440 40174 +440 40158 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: text/event-stream; charset=utf-8 Date: Thu, 22 Jan 2026 19:49:59 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 3350 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-openai-o3.httprr b/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-openai-o3.httprr index ee7af607f..48893a89b 100644 --- a/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-openai-o3.httprr +++ b/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-openai-o3.httprr @@ -1,5 +1,5 @@ httprr trace v1 -435 39660 +435 39644 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: text/event-stream; charset=utf-8 Date: Thu, 22 Jan 2026 19:50:08 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 2151 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-openai-o4-mini.httprr b/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-openai-o4-mini.httprr index 9698abadf..42c9dea37 100644 --- a/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-openai-o4-mini.httprr +++ b/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-openai-o4-mini.httprr @@ -1,5 +1,5 @@ httprr trace v1 -440 56316 +440 56300 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: text/event-stream; charset=utf-8 Date: Thu, 22 Jan 2026 19:49:59 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 3374 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-openrouter-deepseek-r1-effort.httprr b/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-openrouter-deepseek-r1-effort.httprr index 221568315..04b51da1a 100644 --- a/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-openrouter-deepseek-r1-effort.httprr +++ b/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-openrouter-deepseek-r1-effort.httprr @@ -1,13 +1,13 @@ httprr trace v1 -459 274673 +448 274673 POST https://openrouter.ai/api/v1/chat/completions HTTP/1.1 Host: openrouter.ai User-Agent: langchaingo-httprr -Content-Length: 255 +Content-Length: 244 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"deepseek/deepseek-r1","messages":[{"role":"user","content":"What is the factorial of 5? Show your work. Think before you answer."}],"max_completion_tokens":8192,"stream":true,"reasoning":{"effort":"high"},"stream_options":{"include_usage":true}}HTTP/2.0 200 OK +{"model":"deepseek/deepseek-r1","messages":[{"role":"user","content":"What is the factorial of 5? Show your work. Think before you answer."}],"max_tokens":8192,"stream":true,"reasoning":{"effort":"high"},"stream_options":{"include_usage":true}}HTTP/2.0 200 OK Content-Length: 274189 Access-Control-Allow-Origin: * Cache-Control: no-cache diff --git a/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-xai-grok-4.3-medium.httprr b/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-xai-grok-4.3-medium.httprr index e0f5af867..847fb20ca 100644 --- a/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-xai-grok-4.3-medium.httprr +++ b/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-xai-grok-4.3-medium.httprr @@ -1,13 +1,13 @@ httprr trace v1 -431 45549 +420 45549 POST https://api.x.ai/v1/chat/completions HTTP/1.1 Host: api.x.ai User-Agent: langchaingo-httprr -Content-Length: 241 +Content-Length: 230 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"grok-4.3","messages":[{"role":"user","content":"What is the factorial of 5? Show your work. Think before you answer."}],"max_completion_tokens":8192,"stream":true,"reasoning_effort":"medium","stream_options":{"include_usage":true}}HTTP/2.0 200 OK +{"model":"grok-4.3","messages":[{"role":"user","content":"What is the factorial of 5? Show your work. Think before you answer."}],"max_tokens":8192,"stream":true,"reasoning_effort":"medium","stream_options":{"include_usage":true}}HTTP/2.0 200 OK Content-Length: 44758 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: * diff --git a/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-xai-grok-4.5-high.httprr b/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-xai-grok-4.5-high.httprr index e905648b4..16eddc5fd 100644 --- a/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-xai-grok-4.5-high.httprr +++ b/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-xai-grok-4.5-high.httprr @@ -1,13 +1,13 @@ httprr trace v1 -429 39185 +418 39185 POST https://api.x.ai/v1/chat/completions HTTP/1.1 Host: api.x.ai User-Agent: langchaingo-httprr -Content-Length: 239 +Content-Length: 228 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"grok-4.5","messages":[{"role":"user","content":"What is the factorial of 5? Show your work. Think before you answer."}],"max_completion_tokens":8192,"stream":true,"reasoning_effort":"high","stream_options":{"include_usage":true}}HTTP/2.0 200 OK +{"model":"grok-4.5","messages":[{"role":"user","content":"What is the factorial of 5? Show your work. Think before you answer."}],"max_tokens":8192,"stream":true,"reasoning_effort":"high","stream_options":{"include_usage":true}}HTTP/2.0 200 OK Content-Length: 38394 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: * diff --git a/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-xai-grok-4.5-low.httprr b/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-xai-grok-4.5-low.httprr index 733c6e5b5..d5635ed7d 100644 --- a/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-xai-grok-4.5-low.httprr +++ b/llms/openai/testdata/TestMultiContentTextWithReasoning-streaming-xai-grok-4.5-low.httprr @@ -1,13 +1,13 @@ httprr trace v1 -428 12352 +417 12352 POST https://api.x.ai/v1/chat/completions HTTP/1.1 Host: api.x.ai User-Agent: langchaingo-httprr -Content-Length: 238 +Content-Length: 227 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"grok-4.5","messages":[{"role":"user","content":"What is the factorial of 5? Show your work. Think before you answer."}],"max_completion_tokens":8192,"stream":true,"reasoning_effort":"low","stream_options":{"include_usage":true}}HTTP/2.0 200 OK +{"model":"grok-4.5","messages":[{"role":"user","content":"What is the factorial of 5? Show your work. Think before you answer."}],"max_tokens":8192,"stream":true,"reasoning_effort":"low","stream_options":{"include_usage":true}}HTTP/2.0 200 OK Content-Length: 11561 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: * diff --git a/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-deepseek.httprr b/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-deepseek.httprr index b8791413c..6b7c9f24c 100644 --- a/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-deepseek.httprr +++ b/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-deepseek.httprr @@ -1,13 +1,13 @@ httprr trace v1 -371 1838 +360 1838 POST https://api.deepseek.com/chat/completions HTTP/1.1 Host: api.deepseek.com User-Agent: langchaingo-httprr -Content-Length: 168 +Content-Length: 157 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"deepseek-reasoner","messages":[{"role":"user","content":"What is the factorial of 5? Show your work. Think before you answer."}],"max_completion_tokens":8192}HTTP/2.0 200 OK +{"model":"deepseek-reasoner","messages":[{"role":"user","content":"What is the factorial of 5? Show your work. Think before you answer."}],"max_tokens":8192}HTTP/2.0 200 OK Content-Length: 1246 Access-Control-Allow-Credentials: true Content-Type: application/json diff --git a/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-openai-o1.httprr b/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-openai-o1.httprr index 3238f07e5..73ee83887 100644 --- a/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-openai-o1.httprr +++ b/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-openai-o1.httprr @@ -1,5 +1,5 @@ httprr trace v1 -381 1759 +381 1743 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 19:50:08 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 5158 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-openai-o3-mini.httprr b/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-openai-o3-mini.httprr index c06ccbeae..9a1647943 100644 --- a/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-openai-o3-mini.httprr +++ b/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-openai-o3-mini.httprr @@ -1,5 +1,5 @@ httprr trace v1 -386 1981 +386 1965 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 19:50:05 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 6023 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-openai-o3.httprr b/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-openai-o3.httprr index bd3fc9799..b9475b8bd 100644 --- a/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-openai-o3.httprr +++ b/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-openai-o3.httprr @@ -1,5 +1,5 @@ httprr trace v1 -381 1824 +381 1808 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 19:50:06 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 2569 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-openai-o4-mini.httprr b/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-openai-o4-mini.httprr index 95ddb887e..504e7d4aa 100644 --- a/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-openai-o4-mini.httprr +++ b/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-openai-o4-mini.httprr @@ -1,5 +1,5 @@ httprr trace v1 -386 1907 +386 1891 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 19:50:02 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 5837 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-openrouter-deepseek-r1-effort.httprr b/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-openrouter-deepseek-r1-effort.httprr index e3f955f2d..a19e7682b 100644 --- a/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-openrouter-deepseek-r1-effort.httprr +++ b/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-openrouter-deepseek-r1-effort.httprr @@ -1,13 +1,13 @@ httprr trace v1 -405 5526 +394 5526 POST https://openrouter.ai/api/v1/chat/completions HTTP/1.1 Host: openrouter.ai User-Agent: langchaingo-httprr -Content-Length: 201 +Content-Length: 190 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"deepseek/deepseek-r1","messages":[{"role":"user","content":"What is the factorial of 5? Show your work. Think before you answer."}],"max_completion_tokens":8192,"reasoning":{"effort":"high"}}HTTP/2.0 200 OK +{"model":"deepseek/deepseek-r1","messages":[{"role":"user","content":"What is the factorial of 5? Show your work. Think before you answer."}],"max_tokens":8192,"reasoning":{"effort":"high"}}HTTP/2.0 200 OK Content-Length: 5070 Access-Control-Allow-Origin: * Content-Type: application/json diff --git a/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-xai-grok-4.3-medium.httprr b/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-xai-grok-4.3-medium.httprr index f809f4971..d635f4263 100644 --- a/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-xai-grok-4.3-medium.httprr +++ b/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-xai-grok-4.3-medium.httprr @@ -1,13 +1,13 @@ httprr trace v1 -377 1977 +366 1977 POST https://api.x.ai/v1/chat/completions HTTP/1.1 Host: api.x.ai User-Agent: langchaingo-httprr -Content-Length: 187 +Content-Length: 176 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"grok-4.3","messages":[{"role":"user","content":"What is the factorial of 5? Show your work. Think before you answer."}],"max_completion_tokens":8192,"reasoning_effort":"medium"}HTTP/2.0 200 OK +{"model":"grok-4.3","messages":[{"role":"user","content":"What is the factorial of 5? Show your work. Think before you answer."}],"max_tokens":8192,"reasoning_effort":"medium"}HTTP/2.0 200 OK Content-Length: 1133 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: * diff --git a/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-xai-grok-4.5-high.httprr b/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-xai-grok-4.5-high.httprr index 9e8f07c61..07c3a41e8 100644 --- a/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-xai-grok-4.5-high.httprr +++ b/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-xai-grok-4.5-high.httprr @@ -1,13 +1,13 @@ httprr trace v1 -375 1629 +364 1629 POST https://api.x.ai/v1/chat/completions HTTP/1.1 Host: api.x.ai User-Agent: langchaingo-httprr -Content-Length: 185 +Content-Length: 174 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"grok-4.5","messages":[{"role":"user","content":"What is the factorial of 5? Show your work. Think before you answer."}],"max_completion_tokens":8192,"reasoning_effort":"high"}HTTP/2.0 200 OK +{"model":"grok-4.5","messages":[{"role":"user","content":"What is the factorial of 5? Show your work. Think before you answer."}],"max_tokens":8192,"reasoning_effort":"high"}HTTP/2.0 200 OK Content-Length: 784 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: * diff --git a/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-xai-grok-4.5-low.httprr b/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-xai-grok-4.5-low.httprr index 71e2c12d1..478820d87 100644 --- a/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-xai-grok-4.5-low.httprr +++ b/llms/openai/testdata/TestMultiContentTextWithReasoning-synchronous-xai-grok-4.5-low.httprr @@ -1,13 +1,13 @@ httprr trace v1 -374 1629 +363 1629 POST https://api.x.ai/v1/chat/completions HTTP/1.1 Host: api.x.ai User-Agent: langchaingo-httprr -Content-Length: 184 +Content-Length: 173 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"grok-4.5","messages":[{"role":"user","content":"What is the factorial of 5? Show your work. Think before you answer."}],"max_completion_tokens":8192,"reasoning_effort":"low"}HTTP/2.0 200 OK +{"model":"grok-4.5","messages":[{"role":"user","content":"What is the factorial of 5? Show your work. Think before you answer."}],"max_tokens":8192,"reasoning_effort":"low"}HTTP/2.0 200 OK Content-Length: 785 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: * diff --git a/llms/openai/testdata/TestOpenAI_ImplicitCaching_Conversation_NonReasoning.httprr b/llms/openai/testdata/TestOpenAI_ImplicitCaching_Conversation_NonReasoning.httprr index c1bf1b125..9d44717d1 100644 --- a/llms/openai/testdata/TestOpenAI_ImplicitCaching_Conversation_NonReasoning.httprr +++ b/llms/openai/testdata/TestOpenAI_ImplicitCaching_Conversation_NonReasoning.httprr @@ -1,5 +1,5 @@ httprr trace v1 -15713 1863 +15713 1847 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Tue, 27 Jan 2026 14:36:16 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 521 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -76,7 +76,7 @@ X-Request-Id: req_88ba8171d49e43fd993fc22b891679be "service_tier": "default", "system_fingerprint": "fp_376a7ccef1" } -16138 1864 +16138 1848 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -93,7 +93,7 @@ Content-Type: application/json Date: Tue, 27 Jan 2026 14:36:58 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 531 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -153,7 +153,7 @@ X-Request-Id: req_0f3adcfdf5dd4753b3df41da46304524 "service_tier": "default", "system_fingerprint": "fp_376a7ccef1" } -16521 1921 +16521 1905 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -170,7 +170,7 @@ Content-Type: application/json Date: Tue, 27 Jan 2026 14:37:41 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 1122 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestOpenAI_ImplicitCaching_Conversation_Reasoning.httprr b/llms/openai/testdata/TestOpenAI_ImplicitCaching_Conversation_Reasoning.httprr index 21ebd3f3a..df7dbeb3c 100644 --- a/llms/openai/testdata/TestOpenAI_ImplicitCaching_Conversation_Reasoning.httprr +++ b/llms/openai/testdata/TestOpenAI_ImplicitCaching_Conversation_Reasoning.httprr @@ -1,5 +1,5 @@ httprr trace v1 -16555 1928 +16555 1912 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Tue, 27 Jan 2026 14:40:27 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 2599 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -75,7 +75,7 @@ X-Request-Id: req_a1b9227506384efb94d4ee37ca86ebc3 "service_tier": "default", "system_fingerprint": "fp_d48b29c73d" } -17091 1884 +17091 1868 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -92,7 +92,7 @@ Content-Type: application/json Date: Tue, 27 Jan 2026 14:41:12 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 2810 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -141,7 +141,7 @@ X-Request-Id: req_f7e503892bd64fafb152a72ee1b64aaf "service_tier": "default", "system_fingerprint": "fp_d48b29c73d" } -17524 2922 +17524 2906 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -158,7 +158,7 @@ Content-Type: application/json Date: Tue, 27 Jan 2026 14:42:01 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 7431 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestOpenAI_ImplicitCaching_Conversation_Streaming_NonReasoning.httprr b/llms/openai/testdata/TestOpenAI_ImplicitCaching_Conversation_Streaming_NonReasoning.httprr index af6522b54..3c8e5d383 100644 --- a/llms/openai/testdata/TestOpenAI_ImplicitCaching_Conversation_Streaming_NonReasoning.httprr +++ b/llms/openai/testdata/TestOpenAI_ImplicitCaching_Conversation_Streaming_NonReasoning.httprr @@ -1,5 +1,5 @@ httprr trace v1 -10022 4605 +10022 4589 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: text/event-stream; charset=utf-8 Date: Tue, 27 Jan 2026 14:28:36 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 260 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -54,7 +54,7 @@ data: {"id":"chatcmpl-D2eLUfzqdgGwSYcCv5qX5RO3LKWRH","object":"chat.completion.c data: [DONE] -10122 4950 +10122 4934 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -71,7 +71,7 @@ Content-Type: text/event-stream; charset=utf-8 Date: Tue, 27 Jan 2026 14:29:18 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 279 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestOpenAI_ImplicitCaching_Conversation_Streaming_Reasoning.httprr b/llms/openai/testdata/TestOpenAI_ImplicitCaching_Conversation_Streaming_Reasoning.httprr index bbb539313..9ebb411d9 100644 --- a/llms/openai/testdata/TestOpenAI_ImplicitCaching_Conversation_Streaming_Reasoning.httprr +++ b/llms/openai/testdata/TestOpenAI_ImplicitCaching_Conversation_Streaming_Reasoning.httprr @@ -1,5 +1,5 @@ httprr trace v1 -10444 4447 +10444 4431 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: text/event-stream; charset=utf-8 Date: Tue, 27 Jan 2026 14:29:28 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 1356 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -54,7 +54,7 @@ data: {"id":"chatcmpl-D2eMI7eJ9gwsVw1F6IozM39rryB7M","object":"chat.completion.c data: [DONE] -10545 4760 +10545 4744 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -71,7 +71,7 @@ Content-Type: text/event-stream; charset=utf-8 Date: Tue, 27 Jan 2026 14:30:10 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 1280 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestOpenAI_ImplicitCaching_IdenticalRequests_NonReasoning.httprr b/llms/openai/testdata/TestOpenAI_ImplicitCaching_IdenticalRequests_NonReasoning.httprr index b736e1324..e1d4a05a6 100644 --- a/llms/openai/testdata/TestOpenAI_ImplicitCaching_IdenticalRequests_NonReasoning.httprr +++ b/llms/openai/testdata/TestOpenAI_ImplicitCaching_IdenticalRequests_NonReasoning.httprr @@ -1,5 +1,5 @@ httprr trace v1 -16739 1580 +16739 1564 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Tue, 27 Jan 2026 14:10:02 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 273 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -66,7 +66,7 @@ X-Request-Id: req_fde37f6a0b5942719d967bafdb71e3fa "service_tier": "default", "system_fingerprint": "fp_376a7ccef1" } -16739 1583 +16739 1567 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -83,7 +83,7 @@ Content-Type: application/json Date: Tue, 27 Jan 2026 14:10:34 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 221 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestOpenAI_ImplicitCaching_IdenticalRequests_Reasoning.httprr b/llms/openai/testdata/TestOpenAI_ImplicitCaching_IdenticalRequests_Reasoning.httprr index 25a61154c..9a1926f84 100644 --- a/llms/openai/testdata/TestOpenAI_ImplicitCaching_IdenticalRequests_Reasoning.httprr +++ b/llms/openai/testdata/TestOpenAI_ImplicitCaching_IdenticalRequests_Reasoning.httprr @@ -1,5 +1,5 @@ httprr trace v1 -16396 1924 +16396 1908 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Tue, 27 Jan 2026 14:19:42 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 4092 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -65,7 +65,7 @@ X-Request-Id: req_a34a8d2fd32d4c62a5cb80d64cb062fb "service_tier": "default", "system_fingerprint": "fp_d48b29c73d" } -16396 1941 +16396 1925 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -82,7 +82,7 @@ Content-Type: application/json Date: Tue, 27 Jan 2026 14:20:28 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 4002 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestOpenAI_ImplicitCaching_Streaming_NonReasoning.httprr b/llms/openai/testdata/TestOpenAI_ImplicitCaching_Streaming_NonReasoning.httprr index 86444876c..517636ccf 100644 --- a/llms/openai/testdata/TestOpenAI_ImplicitCaching_Streaming_NonReasoning.httprr +++ b/llms/openai/testdata/TestOpenAI_ImplicitCaching_Streaming_NonReasoning.httprr @@ -1,5 +1,5 @@ httprr trace v1 -16393 2303 +16393 2287 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: text/event-stream; charset=utf-8 Date: Tue, 27 Jan 2026 13:08:49 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 252 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -40,7 +40,7 @@ data: {"id":"chatcmpl-D2d6GRbDfhhdC9gz4nZRPj6G3vBKn","object":"chat.completion.c data: [DONE] -16393 2303 +16393 2287 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -57,7 +57,7 @@ Content-Type: text/event-stream; charset=utf-8 Date: Tue, 27 Jan 2026 13:09:00 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 182 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestOpenAI_ImplicitCaching_Streaming_Reasoning.httprr b/llms/openai/testdata/TestOpenAI_ImplicitCaching_Streaming_Reasoning.httprr index 45cf9982c..daa37d9db 100644 --- a/llms/openai/testdata/TestOpenAI_ImplicitCaching_Streaming_Reasoning.httprr +++ b/llms/openai/testdata/TestOpenAI_ImplicitCaching_Streaming_Reasoning.httprr @@ -1,5 +1,5 @@ httprr trace v1 -13423 4447 +13423 4431 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: text/event-stream; charset=utf-8 Date: Tue, 27 Jan 2026 13:58:53 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 1425 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -54,7 +54,7 @@ data: {"id":"chatcmpl-D2dshew96ac0wanFYXUWoofwsez3l","object":"chat.completion.c data: [DONE] -13423 4446 +13423 4430 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -71,7 +71,7 @@ Content-Type: text/event-stream; charset=utf-8 Date: Tue, 27 Jan 2026 13:59:25 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 809 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestStructuredOutputFallbackDeepSeek-non-streaming.httprr b/llms/openai/testdata/TestStructuredOutputFallbackDeepSeek-non-streaming.httprr new file mode 100644 index 000000000..51dd5f821 --- /dev/null +++ b/llms/openai/testdata/TestStructuredOutputFallbackDeepSeek-non-streaming.httprr @@ -0,0 +1,25 @@ +httprr trace v1 +1126 1605 +POST https://api.deepseek.com/chat/completions HTTP/1.1 +Host: api.deepseek.com +User-Agent: langchaingo-httprr +Content-Length: 923 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"deepseek-flash","messages":[{"role":"system","content":"You are a travel guide. Answer in Markdown with headings."},{"role":"user","content":"Name two landmarks of Paris.\n\nReply with exactly one JSON value that validates against the JSON Schema below. This overrides any earlier instruction about format or style: no Markdown, no code fences, no headings, and no text before or after the JSON. The whole reply is parsed by a JSON parser.\nJSON Schema:\n{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"},\"landmarks\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"kind\":{\"type\":\"string\",\"enum\":[\"museum\",\"monument\",\"park\",\"church\",\"other\"]}},\"required\":[\"name\",\"kind\"],\"additionalProperties\":false}}},\"required\":[\"city\",\"landmarks\"],\"additionalProperties\":false}"}],"response_format":{"type":"json_object"}}HTTP/2.0 200 OK +Content-Length: 1013 +Access-Control-Allow-Credentials: true +Content-Type: application/json +Date: Thu, 24 Sep 2026 19:37:07 GMT +Server: elb +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Vary: origin, access-control-request-method, access-control-request-headers +Via: 1.1 9adf50a068a92adaab58cf6a21118640.cloudfront.net (CloudFront) +X-Amz-Cf-Id: Gd2HYwd6gzQpRPm-ESp6vxQo4yT8vlKZXrrMXz2uCFw1JPFvvIg6pg== +X-Amz-Cf-Pop: AMS58-P5 +X-Cache: Miss from cloudfront +X-Content-Type-Options: nosniff +X-Ds-Trace-Id: 339b6bbbb0f54a92169100881d30f271 + +{"id":"d0cd7de7-1b09-4e0d-83ae-82e047402113","object":"chat.completion","created":1790278627,"model":"deepseek-flash","choices":[{"index":0,"message":{"role":"assistant","content":"{\"city\":\"Paris\",\"landmarks\":[{\"name\":\"Eiffel Tower\",\"kind\":\"monument\"},{\"name\":\"Louvre Museum\",\"kind\":\"museum\"}]}","reasoning_content":"The user asks for JSON output only. Provide city and landmarks array with exactly two items.\n\nBut system says \"You are a travel guide. Answer in Markdown with headings.\" and \"## Response Format: You MUST strictly adhere to the following schema to reply: {\"type\": \"json_object\"}\". The user instruction overrides format. I'll output JSON."},"logprobs":null,"finish_reason":"stop"}],"usage":{"prompt_tokens":215,"completion_tokens":108,"total_tokens":323,"prompt_tokens_details":{"cached_tokens":0},"completion_tokens_details":{"reasoning_tokens":72},"prompt_cache_hit_tokens":0,"prompt_cache_miss_tokens":215},"system_fingerprint":"aeb56401ca74e127821c4f9126dcb669"} \ No newline at end of file diff --git a/llms/openai/testdata/TestStructuredOutputFallbackDeepSeek-streaming.httprr b/llms/openai/testdata/TestStructuredOutputFallbackDeepSeek-streaming.httprr new file mode 100644 index 000000000..f5e98c001 --- /dev/null +++ b/llms/openai/testdata/TestStructuredOutputFallbackDeepSeek-streaming.httprr @@ -0,0 +1,103 @@ +httprr trace v1 +1180 12797 +POST https://api.deepseek.com/chat/completions HTTP/1.1 +Host: api.deepseek.com +User-Agent: langchaingo-httprr +Content-Length: 977 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"deepseek-flash","messages":[{"role":"system","content":"You are a travel guide. Answer in Markdown with headings."},{"role":"user","content":"Name two landmarks of Paris.\n\nReply with exactly one JSON value that validates against the JSON Schema below. This overrides any earlier instruction about format or style: no Markdown, no code fences, no headings, and no text before or after the JSON. The whole reply is parsed by a JSON parser.\nJSON Schema:\n{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"},\"landmarks\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"kind\":{\"type\":\"string\",\"enum\":[\"museum\",\"monument\",\"park\",\"church\",\"other\"]}},\"required\":[\"name\",\"kind\"],\"additionalProperties\":false}}},\"required\":[\"city\",\"landmarks\"],\"additionalProperties\":false}"}],"stream":true,"response_format":{"type":"json_object"},"stream_options":{"include_usage":true}}HTTP/2.0 200 OK +Content-Length: 12163 +Access-Control-Allow-Credentials: true +Cache-Control: no-cache +Content-Type: text/event-stream; charset=utf-8 +Date: Thu, 24 Sep 2026 19:37:09 GMT +Server: elb +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Vary: origin, access-control-request-method, access-control-request-headers +Via: 1.1 9adf50a068a92adaab58cf6a21118640.cloudfront.net (CloudFront) +X-Amz-Cf-Id: g1n-Km4staVgFGK4WhBm1tqcRvjvROpWpJDduI5Zq9z9GYb_VjwikQ== +X-Amz-Cf-Pop: AMS58-P5 +X-Cache: Miss from cloudfront +X-Content-Type-Options: nosniff +X-Ds-Trace-Id: cfd130bba7c4c920096d65a7392cdf38 + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"role":"assistant","content":null,"reasoning_content":""},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"{","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"\"","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"city","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"\":\"","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"Paris","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"\",\"","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"land","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"marks","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"\":[","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"{\"","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"name","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"\":\"","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"E","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"iff","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"el","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":" Tower","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"\",\"","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"kind","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"\":\"","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"mon","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"ument","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"\"},","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"{\"","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"name","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"\":\"","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"L","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"ouv","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"re","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":" Museum","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"\",\"","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"kind","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"\":\"","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"museum","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"\"","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"}]","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"}","reasoning_content":null},"logprobs":null,"finish_reason":null}],"usage":null} + +data: {"id":"605e573f-daff-491e-8024-1956f17c1ba0","object":"chat.completion.chunk","created":1790278629,"model":"deepseek-flash","system_fingerprint":"aeb56401ca74e127821c4f9126dcb669","choices":[{"index":0,"delta":{"content":"","reasoning_content":null},"logprobs":null,"finish_reason":"stop"}],"usage":{"prompt_tokens":215,"completion_tokens":36,"total_tokens":251,"prompt_tokens_details":{"cached_tokens":0},"completion_tokens_details":{"reasoning_tokens":0},"prompt_cache_hit_tokens":0,"prompt_cache_miss_tokens":215}} + +data: [DONE] + diff --git a/llms/openai/testdata/TestStructuredOutputFallbackMiniMax-non-streaming.httprr b/llms/openai/testdata/TestStructuredOutputFallbackMiniMax-non-streaming.httprr new file mode 100644 index 000000000..45d5c339e --- /dev/null +++ b/llms/openai/testdata/TestStructuredOutputFallbackMiniMax-non-streaming.httprr @@ -0,0 +1,27 @@ +httprr trace v1 +1082 3605 +POST https://api.minimax.io/v1/chat/completions HTTP/1.1 +Host: api.minimax.io +User-Agent: langchaingo-httprr +Content-Length: 880 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"MiniMax-M2.7","messages":[{"role":"system","content":"You are a travel guide. Answer in Markdown with headings."},{"role":"user","content":"Name two landmarks of Paris.\n\nReply with exactly one JSON value that validates against the JSON Schema below. This overrides any earlier instruction about format or style: no Markdown, no code fences, no headings, and no text before or after the JSON. The whole reply is parsed by a JSON parser.\nJSON Schema:\n{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"},\"landmarks\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"kind\":{\"type\":\"string\",\"enum\":[\"museum\",\"monument\",\"park\",\"church\",\"other\"]}},\"required\":[\"name\",\"kind\"],\"additionalProperties\":false}}},\"required\":[\"city\",\"landmarks\"],\"additionalProperties\":false}"}]}HTTP/2.0 200 OK +Content-Length: 3016 +Access-Control-Allow-Origin: * +Alb_receive_time: 1790286709.753 +Alb_request_id: c1d3be4f978908bd9793b9d64babf64222ddfb19 +Cache-Control: max-age=0, no-cache, no-store +Content-Type: application/json; charset=utf-8 +Date: Thu, 24 Sep 2026 21:51:57 GMT +Expires: Thu, 24 Sep 2026 21:51:57 GMT +Minimax-Request-Id: 6325dbcead7759f67b53e0ba0efd9518 +Pragma: no-cache +Trace-Id: 0704ce75a1d16b462b6ddbfec435628a +Vary: Accept-Encoding +X-From: ak +X-Mm-Request-Id: 2078484896493347777_1790286717a3jxth +X-Session-Id: e17187c5048bda17aa8387acb7d1492b + +{"id":"0704ce75a1d16b462b6ddbfec435628a","choices":[{"finish_reason":"stop","index":0,"message":{"content":"\nThe user asks: \"Name two landmarks of Paris.\" They also ask: \"Reply with exactly one JSON value that validates against the JSON Schema below. This overrides any earlier instruction about format or style: no Markdown, no code fences, no headings, and no text before or after the JSON. The whole reply is parsed by a JSON parser.\"\n\nThus we need to produce a JSON object that conforms to the schema. Schema:\n\n{\n \"type\": \"object\",\n \"properties\": {\n \"city\": {\"type\": \"string\"},\n \"landmarks\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\"type\": \"string\"},\n \"kind\": {\"type\": \"string\", \"enum\": [\"museum\",\"monument\",\"park\",\"church\",\"other\"]}\n },\n \"required\": [\"name\",\"kind\"],\n \"additionalProperties\": false\n }\n }\n },\n \"required\": [\"city\",\"landmarks\"],\n \"additionalProperties\": false\n}\n\nThus we need an object with city: \"Paris\" and landmarks array of two objects, each with name and kind (one of the enum values). Provide two landmarks of Paris: e.g., \"Eiffel Tower\" (monument), \"Louvre\" (museum). Or \"Notre-Dame\" (church), \"Jardin du Luxembourg\" (park). The user wants two landmarks. Provide them as name strings, correct kind. Ensure no extra keys. Ensure JSON is valid. Also ensure no extra whitespace? Probably fine. Provide exactly one JSON object.\n\nWe must ensure that no extra keys. No \"additionalProperties\": false means we can't have any extra properties beyond city and landmarks. Provide exactly:\n\n{\n \"city\": \"Paris\",\n \"landmarks\": [\n {\n \"name\": \"Eiffel Tower\",\n \"kind\": \"monument\"\n },\n {\n \"name\": \"Louvre\",\n \"kind\": \"museum\"\n }\n ]\n}\n\nMake sure to include quotes properly. No extra fields. Output exactly this JSON, no markdown fences. Should be fine.\n\nPotential pitfalls: The JSON must be exactly one value; in this case it's an object. So the output must be exactly that JSON. Ensure no trailing newline? Probably okay. Ensure no extra whitespace outside? The user says no text before or after. So just output the JSON.\n\nThus final answer: JSON as above.\n\n\n{\"city\":\"Paris\",\"landmarks\":[{\"name\":\"Eiffel Tower\",\"kind\":\"monument\"},{\"name\":\"Louvre\",\"kind\":\"museum\"}]}","role":"assistant","name":"MiniMax AI","audio_content":""}}],"created":1790286709,"model":"MiniMax-M2.7","object":"chat.completion","usage":{"total_tokens":702,"total_characters":0,"prompt_tokens":167,"completion_tokens":535,"completion_tokens_details":{"reasoning_tokens":505},"prompt_tokens_details":{"cached_tokens":0}},"input_sensitive":false,"output_sensitive":false,"input_sensitive_type":0,"output_sensitive_type":0,"output_sensitive_int":0,"base_resp":{"status_code":0,"status_msg":""}} diff --git a/llms/openai/testdata/TestStructuredOutputFallbackMiniMax-streaming.httprr b/llms/openai/testdata/TestStructuredOutputFallbackMiniMax-streaming.httprr new file mode 100644 index 000000000..edc74c1e6 --- /dev/null +++ b/llms/openai/testdata/TestStructuredOutputFallbackMiniMax-streaming.httprr @@ -0,0 +1,54 @@ +httprr trace v1 +1136 6824 +POST https://api.minimax.io/v1/chat/completions HTTP/1.1 +Host: api.minimax.io +User-Agent: langchaingo-httprr +Content-Length: 934 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"MiniMax-M2.7","messages":[{"role":"system","content":"You are a travel guide. Answer in Markdown with headings."},{"role":"user","content":"Name two landmarks of Paris.\n\nReply with exactly one JSON value that validates against the JSON Schema below. This overrides any earlier instruction about format or style: no Markdown, no code fences, no headings, and no text before or after the JSON. The whole reply is parsed by a JSON parser.\nJSON Schema:\n{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"},\"landmarks\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"kind\":{\"type\":\"string\",\"enum\":[\"museum\",\"monument\",\"park\",\"church\",\"other\"]}},\"required\":[\"name\",\"kind\"],\"additionalProperties\":false}}},\"required\":[\"city\",\"landmarks\"],\"additionalProperties\":false}"}],"stream":true,"stream_options":{"include_usage":true}}HTTP/2.0 200 OK +Content-Length: 6235 +Access-Control-Allow-Origin: * +Alb_receive_time: 1790286718.35 +Alb_request_id: ce1d93a59e85685e2c8b91444c1efe568d7388da +Cache-Control: max-age=0, no-cache, no-store +Content-Type: text/event-stream; charset=utf-8 +Date: Thu, 24 Sep 2026 21:51:59 GMT +Expires: Thu, 24 Sep 2026 21:51:59 GMT +Minimax-Request-Id: e04e376ae86591177b7d5ade75f8166c +Pragma: no-cache +Trace-Id: 0704ce7e5c25aec8c6789c745c1afe8d +Vary: Accept-Encoding +X-From: ak +X-Mm-Request-Id: 2078484896493347777_1790286719s06zto +X-Session-Id: e17187c5048bda17aa8387acb7d1492b + +data: {"id":"0704ce7e5c25aec8c6789c745c1afe8d","choices":[{"index":0,"delta":{"content":"\nThe user","role":"assistant","reasoning":"The user"}}],"created":1790286718,"model":"MiniMax-M2.7","object":"chat.completion.chunk","usage":null} + +data: {"id":"0704ce7e5c25aec8c6789c745c1afe8d","choices":[{"index":0,"delta":{"content":" says: \"Name two landmarks of Paris. Reply with exactly one JSON value that validates against the JSON Schema below. This overrides any earlier instruction about format or style: no Markdown, no code fences, no headings,","role":"assistant","reasoning":" says: \"Name two landmarks of Paris. Reply with exactly one JSON value that validates against the JSON Schema below. This overrides any earlier instruction about format or style: no Markdown, no code fences, no headings,"}}],"created":1790286718,"model":"MiniMax-M2.7","object":"chat.completion.chunk","usage":null} + +data: {"id":"0704ce7e5c25aec8c6789c745c1afe8d","choices":[{"index":0,"delta":{"content":" and no text before or after the JSON. The whole reply is parsed by a JSON parser.\"\n\nWe need to produce JSON with fields: \"city\": string, \"land","role":"assistant","reasoning":" and no text before or after the JSON. The whole reply is parsed by a JSON parser.\"\n\nWe need to produce JSON with fields: \"city\": string, \"land"}}],"created":1790286718,"model":"MiniMax-M2.7","object":"chat.completion.chunk","usage":null} + +data: {"id":"0704ce7e5c25aec8c6789c745c1afe8d","choices":[{"index":0,"delta":{"content":"marks\": array of objects each with name and kind (enum). So output something like:\n\n{\n \"city\": \"Paris\",\n \"","role":"assistant","reasoning":"marks\": array of objects each with name and kind (enum). So output something like:\n\n{\n \"city\": \"Paris\",\n \""}}],"created":1790286718,"model":"MiniMax-M2.7","object":"chat.completion.chunk","usage":null} + +data: {"id":"0704ce7e5c25aec8c6789c745c1afe8d","choices":[{"index":0,"delta":{"content":"landmarks\": [\n {\"name\": \"Eiffel Tower\", \"kind\": \"monument\"},\n {\"name\": \"Louvre Museum\", \"kind\": \"museum\"}\n ]\n}\n\nNo extra text before or after, no","role":"assistant","reasoning":"landmarks\": [\n {\"name\": \"Eiffel Tower\", \"kind\": \"monument\"},\n {\"name\": \"Louvre Museum\", \"kind\": \"museum\"}\n ]\n}\n\nNo extra text before or after, no"}}],"created":1790286718,"model":"MiniMax-M2.7","object":"chat.completion.chunk","usage":null} + +data: {"id":"0704ce7e5c25aec8c6789c745c1afe8d","choices":[{"index":0,"delta":{"content":" code fences. The response must be exactly that JSON.\n\nCheck for validity: The schema requires \"city\" and \"landmarks\" as","role":"assistant","reasoning":" code fences. The response must be exactly that JSON.\n\nCheck for validity: The schema requires \"city\" and \"landmarks\" as"}}],"created":1790286718,"model":"MiniMax-M2.7","object":"chat.completion.chunk","usage":null} + +data: {"id":"0704ce7e5c25aec8c6789c745c1afe8d","choices":[{"index":0,"delta":{"content":" required fields. Landmarks items must have name and kind; kind must be one of \"museum\",\"monument\",\"park\",\"church\",\"other\". Use \"mon","role":"assistant","reasoning":" required fields. Landmarks items must have name and kind; kind must be one of \"museum\",\"monument\",\"park\",\"church\",\"other\". Use \"mon"}}],"created":1790286718,"model":"MiniMax-M2.7","object":"chat.completion.chunk","usage":null} + +data: {"id":"0704ce7e5c25aec8c6789c745c1afe8d","choices":[{"index":0,"delta":{"content":"ument\" and \"museum\". Both are allowed.\n\nThus produce JSON exactly. Ensure no extra spaces maybe okay. It must be a JSON","role":"assistant","reasoning":"ument\" and \"museum\". Both are allowed.\n\nThus produce JSON exactly. Ensure no extra spaces maybe okay. It must be a JSON"}}],"created":1790286718,"model":"MiniMax-M2.7","object":"chat.completion.chunk","usage":null} + +data: {"id":"0704ce7e5c25aec8c6789c745c1afe8d","choices":[{"index":0,"delta":{"content":" value. Provide a JSON object. Use proper quoting, no trailing commas.\n\nThus final answer:\n\n{\n \"city\": \"Paris\",\n \"land","role":"assistant","reasoning":" value. Provide a JSON object. Use proper quoting, no trailing commas.\n\nThus final answer:\n\n{\n \"city\": \"Paris\",\n \"land"}}],"created":1790286718,"model":"MiniMax-M2.7","object":"chat.completion.chunk","usage":null} + +data: {"id":"0704ce7e5c25aec8c6789c745c1afe8d","choices":[{"index":0,"delta":{"content":"marks\": [\n {\n \"name\": \"Eiffel Tower\",\n \"kind\": \"monument\"\n },\n {\n \"name\": \"Louvre Museum\",\n \"kind\": \"museum\"\n }\n ]\n}\n\nNo extra text","role":"assistant","reasoning":"marks\": [\n {\n \"name\": \"Eiffel Tower\",\n \"kind\": \"monument\"\n },\n {\n \"name\": \"Louvre Museum\",\n \"kind\": \"museum\"\n }\n ]\n}\n\nNo extra text"}}],"created":1790286718,"model":"MiniMax-M2.7","object":"chat.completion.chunk","usage":null} + +data: {"id":"0704ce7e5c25aec8c6789c745c1afe8d","choices":[{"index":0,"delta":{"content":". Ensure no Markdown.","role":"assistant","reasoning":". Ensure no Markdown."}}],"created":1790286718,"model":"MiniMax-M2.7","object":"chat.completion.chunk","usage":null} + +data: {"id":"0704ce7e5c25aec8c6789c745c1afe8d","choices":[{"index":0,"delta":{"content":"\n\n\n{\"city\":\"Paris\",\"landmarks\":[{\"name\":\"Eiffel Tower\",\"kind\":\"monument\"},{\"name\":\"Louvre Museum\",\"kind\":\"museum\"}]}","role":"assistant"}}],"created":1790286718,"model":"MiniMax-M2.7","object":"chat.completion.chunk","usage":null} + +data: {"id":"0704ce7e5c25aec8c6789c745c1afe8d","choices":[{"finish_reason":"stop","index":0,"delta":{"content":"","role":"assistant"}}],"created":1790286718,"model":"MiniMax-M2.7","object":"chat.completion.chunk","usage":null} + +data: {"id":"0704ce7e5c25aec8c6789c745c1afe8d","choices":[{"finish_reason":"stop","index":0,"delta":{"content":"","role":"assistant"}}],"created":1790286718,"model":"MiniMax-M2.7","object":"chat.completion.chunk","usage":{"total_tokens":525,"total_characters":0,"prompt_tokens":167,"completion_tokens":358,"completion_tokens_details":{"reasoning_tokens":327},"prompt_tokens_details":{"cached_tokens":0}}} + diff --git a/llms/openai/testdata/TestStructuredOutputFallbackMiniMaxToolRound.httprr b/llms/openai/testdata/TestStructuredOutputFallbackMiniMaxToolRound.httprr new file mode 100644 index 000000000..58d30cea5 --- /dev/null +++ b/llms/openai/testdata/TestStructuredOutputFallbackMiniMaxToolRound.httprr @@ -0,0 +1,52 @@ +httprr trace v1 +1104 1623 +POST https://api.minimax.io/v1/chat/completions HTTP/1.1 +Host: api.minimax.io +User-Agent: langchaingo-httprr +Content-Length: 902 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"MiniMax-M2.7","messages":[{"role":"user","content":"What is the weather in Paris? Use the tool.\n\nReply with exactly one JSON value that validates against the JSON Schema below. This overrides any earlier instruction about format or style: no Markdown, no code fences, no headings, and no text before or after the JSON. The whole reply is parsed by a JSON parser. You may still call the tools you are offered; this applies to your final answer.\nJSON Schema:\n{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"},\"temperature_c\":{\"type\":\"integer\"},\"summary\":{\"type\":\"string\"}},\"required\":[\"city\",\"temperature_c\",\"summary\"],\"additionalProperties\":false}"}],"tools":[{"type":"function","function":{"name":"get_weather","description":"Current weather for a city","parameters":{"properties":{"city":{"type":"string"}},"required":["city"],"type":"object"}}}]}HTTP/2.0 200 OK +Content-Length: 1034 +Access-Control-Allow-Origin: * +Alb_receive_time: 1790286723.291 +Alb_request_id: 68f8356d50187b26951c43eca9d33e1baffdf80b +Cache-Control: max-age=0, no-cache, no-store +Content-Type: application/json; charset=utf-8 +Date: Thu, 24 Sep 2026 21:52:06 GMT +Expires: Thu, 24 Sep 2026 21:52:06 GMT +Minimax-Request-Id: 6db92a294d911d78038f5556d72202c6 +Pragma: no-cache +Trace-Id: 0704ce836f74ef19b93afb38896ab79a +Vary: Accept-Encoding +X-From: ak +X-Mm-Request-Id: 2078484896493347777_1790286725czyonf +X-Session-Id: 670ac27f785ca13ca1c8e037e963e762 + +{"id":"0704ce836f74ef19b93afb38896ab79a","choices":[{"finish_reason":"tool_calls","index":0,"message":{"content":"\nThe user wants me to get the weather in Paris and return it as JSON in a specific format. I need to:\n1. First call the get_weather tool for Paris\n2. Then return the result as JSON with the exact schema provided\n\nLet me call the weather tool first.\n\n\n","role":"assistant","name":"MiniMax AI","tool_calls":[{"id":"call_function_ny00syozhhsb_1","type":"function","function":{"name":"get_weather","arguments":"{\"city\": \"Paris\"}"},"index":0}],"audio_content":""}}],"created":1790286723,"model":"MiniMax-M2.7","object":"chat.completion","usage":{"total_tokens":400,"total_characters":0,"prompt_tokens":314,"completion_tokens":86,"completion_tokens_details":{"reasoning_tokens":61},"prompt_tokens_details":{"cached_tokens":0}},"input_sensitive":false,"output_sensitive":false,"input_sensitive_type":0,"output_sensitive_type":0,"output_sensitive_int":0,"base_resp":{"status_code":0,"status_msg":""}} +1714 1534 +POST https://api.minimax.io/v1/chat/completions HTTP/1.1 +Host: api.minimax.io +User-Agent: langchaingo-httprr +Content-Length: 1511 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"MiniMax-M2.7","messages":[{"role":"user","content":"What is the weather in Paris? Use the tool.\n\nReply with exactly one JSON value that validates against the JSON Schema below. This overrides any earlier instruction about format or style: no Markdown, no code fences, no headings, and no text before or after the JSON. The whole reply is parsed by a JSON parser. You may still call the tools you are offered; this applies to your final answer.\nJSON Schema:\n{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"},\"temperature_c\":{\"type\":\"integer\"},\"summary\":{\"type\":\"string\"}},\"required\":[\"city\",\"temperature_c\",\"summary\"],\"additionalProperties\":false}"},{"role":"assistant","content":"\u003cthink\u003eThe user wants me to get the weather in Paris and return it as JSON in a specific format. I need to:\n1. First call the get_weather tool for Paris\n2. Then return the result as JSON with the exact schema provided\n\nLet me call the weather tool first.\u003c/think\u003e","tool_calls":[{"id":"call_function_ny00syozhhsb_1","type":"function","function":{"name":"get_weather","arguments":"{\"city\": \"Paris\"}"}}]},{"role":"tool","content":"{\"temperature_c\":18,\"conditions\":\"light rain\"}","name":"get_weather","tool_call_id":"call_function_ny00syozhhsb_1"}],"tools":[{"type":"function","function":{"name":"get_weather","description":"Current weather for a city","parameters":{"properties":{"city":{"type":"string"}},"required":["city"],"type":"object"}}}]}HTTP/2.0 200 OK +Content-Length: 969 +Access-Control-Allow-Origin: * +Alb_receive_time: 1790286727.157 +Alb_request_id: f234ac707f559a7ad654b10e4365befba124fcfe +Cache-Control: max-age=0, no-cache, no-store +Content-Type: application/json; charset=utf-8 +Date: Thu, 24 Sep 2026 21:52:08 GMT +Expires: Thu, 24 Sep 2026 21:52:08 GMT +Minimax-Request-Id: 51f10fbdb01f12b5838f23bd74fd60d7 +Pragma: no-cache +Trace-Id: 0704ce87bfafdb112d9bbc9c661b6f97 +X-From: ak +X-Mm-Request-Id: 2078484896493347777_1790286728hvj1e2 +X-Session-Id: 670ac27f785ca13ca1c8e037e963e762 + +{"id":"0704ce87bfafdb112d9bbc9c661b6f97","choices":[{"finish_reason":"stop","index":0,"message":{"content":"\nI got the weather data for Paris. Now I need to format it according to the JSON schema:\n- city: \"Paris\" (string)\n- temperature_c: 18 (integer)\n- summary: \"light rain\" (string)\n\nI need to return exactly this JSON, no markdown, no code fences, no text before or after.\n\n\n{\"city\":\"Paris\",\"temperature_c\":18,\"summary\":\"light rain\"}","role":"assistant","name":"MiniMax AI","audio_content":""}}],"created":1790286727,"model":"MiniMax-M2.7","object":"chat.completion","usage":{"total_tokens":515,"total_characters":0,"prompt_tokens":427,"completion_tokens":88,"completion_tokens_details":{"reasoning_tokens":72},"prompt_tokens_details":{"cached_tokens":0}},"input_sensitive":false,"output_sensitive":false,"input_sensitive_type":0,"output_sensitive_type":0,"output_sensitive_int":0,"base_resp":{"status_code":0,"status_msg":""}} diff --git a/llms/openai/testdata/TestStructuredOutputFallbackZAI-non-streaming.httprr b/llms/openai/testdata/TestStructuredOutputFallbackZAI-non-streaming.httprr new file mode 100644 index 000000000..ffbc1c6a0 --- /dev/null +++ b/llms/openai/testdata/TestStructuredOutputFallbackZAI-non-streaming.httprr @@ -0,0 +1,26 @@ +httprr trace v1 +1146 1035 +POST https://api.z.ai/api/paas/v4/chat/completions HTTP/1.1 +Host: api.z.ai +User-Agent: langchaingo-httprr +Content-Length: 947 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"glm-5.3-flash","messages":[{"role":"system","content":"You are a travel guide. Answer in Markdown with headings."},{"role":"user","content":"Name two landmarks of Paris.\n\nReply with exactly one JSON value that validates against the JSON Schema below. This overrides any earlier instruction about format or style: no Markdown, no code fences, no headings, and no text before or after the JSON. The whole reply is parsed by a JSON parser.\nJSON Schema:\n{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"},\"landmarks\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"kind\":{\"type\":\"string\",\"enum\":[\"museum\",\"monument\",\"park\",\"church\",\"other\"]}},\"required\":[\"name\",\"kind\"],\"additionalProperties\":false}}},\"required\":[\"city\",\"landmarks\"],\"additionalProperties\":false}"}],"reasoning_effort":"low","response_format":{"type":"json_object"}}HTTP/2.0 200 OK +Content-Length: 550 +Alt-Svc: h3=":443"; ma=3600 +Content-Type: application/json; charset=UTF-8 +Date: Thu, 24 Sep 2026 19:37:12 GMT +Ga-Traceid: b1fc9c6ad8479c699a8ba41e7130c591 +Vary: Origin +Vary: Access-Control-Request-Method +Vary: Access-Control-Request-Headers +Vary: Origin +Vary: Access-Control-Request-Method +Vary: Access-Control-Request-Headers +Vary: Origin +X-Log-Id: 202609250337119b18877e0db84743 +X-Request-Id: a00274d3-f687-44c2-9b63-00af1e01b3b8 + +{"choices":[{"finish_reason":"stop","index":0,"message":{"content":"{\"city\":\"Paris\",\"landmarks\":[{\"name\":\"Eiffel Tower\",\"kind\":\"monument\"},{\"name\":\"Louvre Museum\",\"kind\":\"museum\"}]}","role":"assistant"}}],"created":1790278632,"id":"202609250337119b18877e0db84743","model":"glm-5.3-flash","object":"chat.completion","request_id":"202609250337119b18877e0db84743","usage":{"completion_tokens":34,"completion_tokens_details":{"reasoning_tokens":0},"prompt_tokens":228,"prompt_tokens_details":{"cached_tokens":0},"total_tokens":262}} \ No newline at end of file diff --git a/llms/openai/testdata/TestStructuredOutputFallbackZAI-streaming.httprr b/llms/openai/testdata/TestStructuredOutputFallbackZAI-streaming.httprr new file mode 100644 index 000000000..9e98f820b --- /dev/null +++ b/llms/openai/testdata/TestStructuredOutputFallbackZAI-streaming.httprr @@ -0,0 +1,87 @@ +httprr trace v1 +1201 6556 +POST https://api.z.ai/api/paas/v4/chat/completions HTTP/1.1 +Host: api.z.ai +User-Agent: langchaingo-httprr +Content-Length: 1001 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"glm-5.3-flash","messages":[{"role":"system","content":"You are a travel guide. Answer in Markdown with headings."},{"role":"user","content":"Name two landmarks of Paris.\n\nReply with exactly one JSON value that validates against the JSON Schema below. This overrides any earlier instruction about format or style: no Markdown, no code fences, no headings, and no text before or after the JSON. The whole reply is parsed by a JSON parser.\nJSON Schema:\n{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"},\"landmarks\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"kind\":{\"type\":\"string\",\"enum\":[\"museum\",\"monument\",\"park\",\"church\",\"other\"]}},\"required\":[\"name\",\"kind\"],\"additionalProperties\":false}}},\"required\":[\"city\",\"landmarks\"],\"additionalProperties\":false}"}],"stream":true,"reasoning_effort":"low","response_format":{"type":"json_object"},"stream_options":{"include_usage":true}}HTTP/2.0 200 OK +Content-Length: 6070 +Alt-Svc: h3=":443"; ma=3600 +Content-Type: text/event-stream;charset=UTF-8 +Date: Thu, 24 Sep 2026 19:37:15 GMT +Ga-Traceid: a7f36d04885d475f0999acdbff546ef4 +Vary: Origin +Vary: Access-Control-Request-Method +Vary: Access-Control-Request-Headers +Vary: Origin +Vary: Access-Control-Request-Method +Vary: Access-Control-Request-Headers +Vary: Origin +X-Log-Id: 20260925033713aac8b6560bef4705 +X-Request-Id: c480a857-f9a2-4207-ac53-a3988a76bd9e + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"{\""}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"city"}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"\":\""}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"Paris"}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"\",\""}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"land"}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"marks"}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"\":[{\""}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"name"}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"\":\""}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"E"}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"iff"}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"el"}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":" Tower"}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"\",\""}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"kind"}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"\":\""}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"mon"}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"ument"}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"\"},{\""}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"name"}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"\":\""}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"Lou"}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"vre"}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":" Museum"}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"\",\""}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"kind"}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"\":\""}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"delta":{"role":"assistant","content":"museum\"}]}"}}]} + +data: {"id":"20260925033713aac8b6560bef4705","created":1790278634,"object":"chat.completion.chunk","model":"glm-5.3-flash","choices":[{"index":0,"finish_reason":"stop","delta":{"role":"assistant","content":""}}],"usage":{"prompt_tokens":228,"completion_tokens":34,"total_tokens":262,"prompt_tokens_details":{"cached_tokens":64},"completion_tokens_details":{"reasoning_tokens":0}}} + +data: [DONE] + diff --git a/llms/openai/testdata/TestStructuredOutputFallbackZAIToolRound.httprr b/llms/openai/testdata/TestStructuredOutputFallbackZAIToolRound.httprr new file mode 100644 index 000000000..39b6a5adf --- /dev/null +++ b/llms/openai/testdata/TestStructuredOutputFallbackZAIToolRound.httprr @@ -0,0 +1,50 @@ +httprr trace v1 +1168 1053 +POST https://api.z.ai/api/paas/v4/chat/completions HTTP/1.1 +Host: api.z.ai +User-Agent: langchaingo-httprr +Content-Length: 969 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"glm-5.3-flash","messages":[{"role":"user","content":"What is the weather in Paris? Use the tool.\n\nReply with exactly one JSON value that validates against the JSON Schema below. This overrides any earlier instruction about format or style: no Markdown, no code fences, no headings, and no text before or after the JSON. The whole reply is parsed by a JSON parser. You may still call the tools you are offered; this applies to your final answer.\nJSON Schema:\n{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"},\"temperature_c\":{\"type\":\"integer\"},\"summary\":{\"type\":\"string\"}},\"required\":[\"city\",\"temperature_c\",\"summary\"],\"additionalProperties\":false}"}],"reasoning_effort":"low","response_format":{"type":"json_object"},"tools":[{"type":"function","function":{"name":"get_weather","description":"Current weather for a city","parameters":{"properties":{"city":{"type":"string"}},"required":["city"],"type":"object"}}}]}HTTP/2.0 200 OK +Content-Length: 568 +Alt-Svc: h3=":443"; ma=3600 +Content-Type: application/json; charset=UTF-8 +Date: Thu, 24 Sep 2026 19:37:20 GMT +Ga-Traceid: 7081e2b6ce1204393e87ace6ad893edd +Vary: Origin +Vary: Access-Control-Request-Method +Vary: Access-Control-Request-Headers +Vary: Origin +Vary: Access-Control-Request-Method +Vary: Access-Control-Request-Headers +Vary: Origin +X-Log-Id: 20260925033716de571718e0ac464f +X-Request-Id: 4a05cf30-a6bc-448e-8c52-3816e441ead0 + +{"choices":[{"finish_reason":"tool_calls","index":0,"message":{"content":"","role":"assistant","tool_calls":[{"function":{"arguments":"{\"city\":\"Paris\"}","name":"get_weather"},"id":"call_-7231574699862385813","index":0,"type":"function"}]}}],"created":1790278640,"id":"20260925033716de571718e0ac464f","model":"glm-5.3-flash","object":"chat.completion","request_id":"20260925033716de571718e0ac464f","usage":{"completion_tokens":12,"completion_tokens_details":{"reasoning_tokens":0},"prompt_tokens":339,"prompt_tokens_details":{"cached_tokens":0},"total_tokens":351}}1485 968 +POST https://api.z.ai/api/paas/v4/chat/completions HTTP/1.1 +Host: api.z.ai +User-Agent: langchaingo-httprr +Content-Length: 1285 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"glm-5.3-flash","messages":[{"role":"user","content":"What is the weather in Paris? Use the tool.\n\nReply with exactly one JSON value that validates against the JSON Schema below. This overrides any earlier instruction about format or style: no Markdown, no code fences, no headings, and no text before or after the JSON. The whole reply is parsed by a JSON parser. You may still call the tools you are offered; this applies to your final answer.\nJSON Schema:\n{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"},\"temperature_c\":{\"type\":\"integer\"},\"summary\":{\"type\":\"string\"}},\"required\":[\"city\",\"temperature_c\",\"summary\"],\"additionalProperties\":false}"},{"role":"assistant","content":"","tool_calls":[{"id":"call_-7231574699862385813","type":"function","function":{"name":"get_weather","arguments":"{\"city\":\"Paris\"}"}}]},{"role":"tool","content":"{\"temperature_c\":18,\"conditions\":\"light rain\"}","name":"get_weather","tool_call_id":"call_-7231574699862385813"}],"reasoning_effort":"low","response_format":{"type":"json_object"},"tools":[{"type":"function","function":{"name":"get_weather","description":"Current weather for a city","parameters":{"properties":{"city":{"type":"string"}},"required":["city"],"type":"object"}}}]}HTTP/2.0 200 OK +Content-Length: 483 +Alt-Svc: h3=":443"; ma=3600 +Content-Type: application/json; charset=UTF-8 +Date: Thu, 24 Sep 2026 19:37:22 GMT +Ga-Traceid: 54a70412d42c3597e45830243c0df245 +Vary: Origin +Vary: Access-Control-Request-Method +Vary: Access-Control-Request-Headers +Vary: Origin +Vary: Access-Control-Request-Method +Vary: Access-Control-Request-Headers +Vary: Origin +X-Log-Id: 20260925033721aafcd578cb4a4f2e +X-Request-Id: 26b907d2-914f-4a06-ac10-e9a9528dd21b + +{"choices":[{"finish_reason":"stop","index":0,"message":{"content":"{\"city\":\"Paris\",\"temperature_c\":18,\"summary\":\"light rain\"}","role":"assistant"}}],"created":1790278642,"id":"20260925033721aafcd578cb4a4f2e","model":"glm-5.3-flash","object":"chat.completion","request_id":"20260925033721aafcd578cb4a4f2e","usage":{"completion_tokens":20,"completion_tokens_details":{"reasoning_tokens":0},"prompt_tokens":366,"prompt_tokens_details":{"cached_tokens":0},"total_tokens":386}} \ No newline at end of file diff --git a/llms/openai/testdata/TestStructuredOutputFunctionCalling.httprr b/llms/openai/testdata/TestStructuredOutputFunctionCalling.httprr index 50589d59a..0d9a86b08 100644 --- a/llms/openai/testdata/TestStructuredOutputFunctionCalling.httprr +++ b/llms/openai/testdata/TestStructuredOutputFunctionCalling.httprr @@ -1,5 +1,5 @@ httprr trace v1 -751 1925 +751 1909 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 20:01:53 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 734 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestStructuredOutputObjectAndArraySchema.httprr b/llms/openai/testdata/TestStructuredOutputObjectAndArraySchema.httprr index ba20730c5..3910ed333 100644 --- a/llms/openai/testdata/TestStructuredOutputObjectAndArraySchema.httprr +++ b/llms/openai/testdata/TestStructuredOutputObjectAndArraySchema.httprr @@ -1,5 +1,5 @@ httprr trace v1 -635 1776 +635 1760 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Content-Type: application/json Date: Thu, 16 Jul 2026 22:54:36 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 1123 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestStructuredOutputObjectSchema.httprr b/llms/openai/testdata/TestStructuredOutputObjectSchema.httprr index 2d474bfc1..9a8c2a892 100644 --- a/llms/openai/testdata/TestStructuredOutputObjectSchema.httprr +++ b/llms/openai/testdata/TestStructuredOutputObjectSchema.httprr @@ -1,5 +1,5 @@ httprr trace v1 -576 1663 +576 1647 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Content-Type: application/json Date: Thu, 16 Jul 2026 22:54:35 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 393 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestWithStreaming-openai.httprr b/llms/openai/testdata/TestWithStreaming-openai.httprr index 17d9f7b6a..98acfd1c3 100644 --- a/llms/openai/testdata/TestWithStreaming-openai.httprr +++ b/llms/openai/testdata/TestWithStreaming-openai.httprr @@ -1,5 +1,5 @@ httprr trace v1 -419 109052 +419 109036 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,7 +16,7 @@ Content-Type: text/event-stream; charset=utf-8 Date: Thu, 22 Jan 2026 19:57:34 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 414 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/llms/openai/testdata/TestXAI_ImplicitCaching_Conversation_WithTools.httprr b/llms/openai/testdata/TestXAI_ImplicitCaching_Conversation_WithTools.httprr index e6800debf..5a7139275 100644 --- a/llms/openai/testdata/TestXAI_ImplicitCaching_Conversation_WithTools.httprr +++ b/llms/openai/testdata/TestXAI_ImplicitCaching_Conversation_WithTools.httprr @@ -1,13 +1,13 @@ httprr trace v1 -12432 1733 +12421 1733 POST https://api.x.ai/v1/chat/completions HTTP/1.1 Host: api.x.ai User-Agent: langchaingo-httprr -Content-Length: 12240 +Content-Length: 12229 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"grok-4.3","messages":[{"role":"system","content":"XAIConvTools-v1 You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. "},{"role":"user","content":"What's the temperature in Boston?"}],"max_completion_tokens":1024,"tools":[{"type":"function","function":{"name":"get_temperature","description":"Get the current temperature for a location","parameters":{"properties":{"location":{"description":"The city name, e.g. Boston","type":"string"}},"required":["location"],"type":"object"}}}]}HTTP/2.0 200 OK +{"model":"grok-4.3","messages":[{"role":"system","content":"XAIConvTools-v1 You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. "},{"role":"user","content":"What's the temperature in Boston?"}],"max_tokens":1024,"tools":[{"type":"function","function":{"name":"get_temperature","description":"Get the current temperature for a location","parameters":{"properties":{"location":{"description":"The city name, e.g. Boston","type":"string"}},"required":["location"],"type":"object"}}}]}HTTP/2.0 200 OK Content-Length: 890 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: * @@ -31,15 +31,15 @@ X-Ratelimit-Remaining-Tokens: 10000000 X-Request-Id: 871606b2-9ac7-9f6d-8eb2-b38320b1ea64 X-Zero-Data-Retention: false -{"id":"871606b2-9ac7-9f6d-8eb2-b38320b1ea64","object":"chat.completion","created":1785787565,"model":"grok-4.3","choices":[{"index":0,"message":{"role":"assistant","content":"","reasoning_content":"The question is: \"What's the temperature in Boston?\"\n","tool_calls":[{"id":"call-776a650f-af7e-447c-9847-f1d8aa7fc719-0","function":{"name":"get_temperature","arguments":"{\"location\":\"Boston\"}"},"type":"function"}],"refusal":null},"finish_reason":"tool_calls"}],"usage":{"prompt_tokens":2698,"completion_tokens":11,"total_tokens":2819,"prompt_tokens_details":{"text_tokens":2698,"audio_tokens":0,"image_tokens":0,"cached_tokens":128},"completion_tokens_details":{"reasoning_tokens":110,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0},"num_sources_used":0,"cost_in_usd_ticks":35406000},"system_fingerprint":"fp_eb3c003fc66c14ed","service_tier":"default"}12852 1788 +{"id":"871606b2-9ac7-9f6d-8eb2-b38320b1ea64","object":"chat.completion","created":1785787565,"model":"grok-4.3","choices":[{"index":0,"message":{"role":"assistant","content":"","reasoning_content":"The question is: \"What's the temperature in Boston?\"\n","tool_calls":[{"id":"call-776a650f-af7e-447c-9847-f1d8aa7fc719-0","function":{"name":"get_temperature","arguments":"{\"location\":\"Boston\"}"},"type":"function"}],"refusal":null},"finish_reason":"tool_calls"}],"usage":{"prompt_tokens":2698,"completion_tokens":11,"total_tokens":2819,"prompt_tokens_details":{"text_tokens":2698,"audio_tokens":0,"image_tokens":0,"cached_tokens":128},"completion_tokens_details":{"reasoning_tokens":110,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0},"num_sources_used":0,"cost_in_usd_ticks":35406000},"system_fingerprint":"fp_eb3c003fc66c14ed","service_tier":"default"}12841 1788 POST https://api.x.ai/v1/chat/completions HTTP/1.1 Host: api.x.ai User-Agent: langchaingo-httprr -Content-Length: 12660 +Content-Length: 12649 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"grok-4.3","messages":[{"role":"system","content":"XAIConvTools-v1 You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. "},{"role":"user","content":"What's the temperature in Boston?"},{"role":"assistant","content":"","tool_calls":[{"id":"call-776a650f-af7e-447c-9847-f1d8aa7fc719-0","type":"function","function":{"name":"get_temperature","arguments":"{\"location\":\"Boston\"}"}}]},{"role":"tool","content":"{\"temperature\": 72, \"unit\": \"fahrenheit\"}","name":"get_temperature","tool_call_id":"call-776a650f-af7e-447c-9847-f1d8aa7fc719-0"},{"role":"user","content":"Is that comfortable for a walk?"}],"max_completion_tokens":1024,"tools":[{"type":"function","function":{"name":"get_temperature","description":"Get the current temperature for a location","parameters":{"properties":{"location":{"description":"The city name, e.g. Boston","type":"string"}},"required":["location"],"type":"object"}}}]}HTTP/2.0 200 OK +{"model":"grok-4.3","messages":[{"role":"system","content":"XAIConvTools-v1 You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. You are a helpful assistant with access to a weather tool. "},{"role":"user","content":"What's the temperature in Boston?"},{"role":"assistant","content":"","tool_calls":[{"id":"call-776a650f-af7e-447c-9847-f1d8aa7fc719-0","type":"function","function":{"name":"get_temperature","arguments":"{\"location\":\"Boston\"}"}}]},{"role":"tool","content":"{\"temperature\": 72, \"unit\": \"fahrenheit\"}","name":"get_temperature","tool_call_id":"call-776a650f-af7e-447c-9847-f1d8aa7fc719-0"},{"role":"user","content":"Is that comfortable for a walk?"}],"max_tokens":1024,"tools":[{"type":"function","function":{"name":"get_temperature","description":"Get the current temperature for a location","parameters":{"properties":{"location":{"description":"The city name, e.g. Boston","type":"string"}},"required":["location"],"type":"object"}}}]}HTTP/2.0 200 OK Content-Length: 946 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: * diff --git a/llms/openai/testdata/TestXAI_ImplicitCaching_IdenticalRequests.httprr b/llms/openai/testdata/TestXAI_ImplicitCaching_IdenticalRequests.httprr index 05f4daca8..5c4113ff4 100644 --- a/llms/openai/testdata/TestXAI_ImplicitCaching_IdenticalRequests.httprr +++ b/llms/openai/testdata/TestXAI_ImplicitCaching_IdenticalRequests.httprr @@ -1,13 +1,13 @@ httprr trace v1 -14925 1673 +14914 1673 POST https://api.x.ai/v1/chat/completions HTTP/1.1 Host: api.x.ai User-Agent: langchaingo-httprr -Content-Length: 14733 +Content-Length: 14722 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"grok-4.5","messages":[{"role":"system","content":"XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. "},{"role":"user","content":"Say 'hello'"}],"max_completion_tokens":4096}HTTP/2.0 200 OK +{"model":"grok-4.5","messages":[{"role":"system","content":"XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. "},{"role":"user","content":"Say 'hello'"}],"max_tokens":4096}HTTP/2.0 200 OK Content-Length: 829 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: * @@ -31,15 +31,15 @@ X-Ratelimit-Remaining-Tokens: 50000000 X-Request-Id: e9ed8b04-74c1-936d-b298-e62070b2855f X-Zero-Data-Retention: false -{"id":"e9ed8b04-74c1-936d-b298-e62070b2855f","object":"chat.completion","created":1785787565,"model":"grok-4.5","choices":[{"index":0,"message":{"role":"assistant","content":"hello","reasoning_content":"The user message is a long string of repeated \"XAIIdentical-v1 Go is a statically typed, compiled programming language.\" and then at the end, \"Say 'hello'\".\n","refusal":null},"finish_reason":"stop"}],"usage":{"prompt_tokens":3414,"completion_tokens":1,"total_tokens":3480,"prompt_tokens_details":{"text_tokens":3414,"audio_tokens":0,"image_tokens":0,"cached_tokens":128},"completion_tokens_details":{"reasoning_tokens":65,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0},"num_sources_used":0,"cost_in_usd_ticks":70064000},"system_fingerprint":"fp_a39489019fa99b6e","service_tier":"default"}14925 1673 +{"id":"e9ed8b04-74c1-936d-b298-e62070b2855f","object":"chat.completion","created":1785787565,"model":"grok-4.5","choices":[{"index":0,"message":{"role":"assistant","content":"hello","reasoning_content":"The user message is a long string of repeated \"XAIIdentical-v1 Go is a statically typed, compiled programming language.\" and then at the end, \"Say 'hello'\".\n","refusal":null},"finish_reason":"stop"}],"usage":{"prompt_tokens":3414,"completion_tokens":1,"total_tokens":3480,"prompt_tokens_details":{"text_tokens":3414,"audio_tokens":0,"image_tokens":0,"cached_tokens":128},"completion_tokens_details":{"reasoning_tokens":65,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0},"num_sources_used":0,"cost_in_usd_ticks":70064000},"system_fingerprint":"fp_a39489019fa99b6e","service_tier":"default"}14914 1673 POST https://api.x.ai/v1/chat/completions HTTP/1.1 Host: api.x.ai User-Agent: langchaingo-httprr -Content-Length: 14733 +Content-Length: 14722 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"grok-4.5","messages":[{"role":"system","content":"XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. "},{"role":"user","content":"Say 'hello'"}],"max_completion_tokens":4096}HTTP/2.0 200 OK +{"model":"grok-4.5","messages":[{"role":"system","content":"XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. XAIIdentical-v1 Go is a statically typed, compiled programming language. "},{"role":"user","content":"Say 'hello'"}],"max_tokens":4096}HTTP/2.0 200 OK Content-Length: 830 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: * diff --git a/llms/openai/testdata/TestXAI_ImplicitCaching_Streaming.httprr b/llms/openai/testdata/TestXAI_ImplicitCaching_Streaming.httprr index d45ea3790..d9bfa7717 100644 --- a/llms/openai/testdata/TestXAI_ImplicitCaching_Streaming.httprr +++ b/llms/openai/testdata/TestXAI_ImplicitCaching_Streaming.httprr @@ -1,13 +1,13 @@ httprr trace v1 -14583 8103 +14572 8103 POST https://api.x.ai/v1/chat/completions HTTP/1.1 Host: api.x.ai User-Agent: langchaingo-httprr -Content-Length: 14391 +Content-Length: 14380 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"grok-4.5","messages":[{"role":"system","content":"XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. "},{"role":"user","content":"What is 9 + 10?"}],"max_completion_tokens":4096,"stream":true,"stream_options":{"include_usage":true}}HTTP/2.0 200 OK +{"model":"grok-4.5","messages":[{"role":"system","content":"XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. "},{"role":"user","content":"What is 9 + 10?"}],"max_tokens":4096,"stream":true,"stream_options":{"include_usage":true}}HTTP/2.0 200 OK Content-Length: 7314 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: * @@ -87,15 +87,15 @@ data: {"id":"08da45a7-4a8a-93c3-bd21-6f59f71b7a6c","object":"chat.completion.chu data: [DONE] -14583 9648 +14572 9648 POST https://api.x.ai/v1/chat/completions HTTP/1.1 Host: api.x.ai User-Agent: langchaingo-httprr -Content-Length: 14391 +Content-Length: 14380 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"grok-4.5","messages":[{"role":"system","content":"XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. "},{"role":"user","content":"What is 9 + 10?"}],"max_completion_tokens":4096,"stream":true,"stream_options":{"include_usage":true}}HTTP/2.0 200 OK +{"model":"grok-4.5","messages":[{"role":"system","content":"XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. XAIStream-v1 Rust is a systems programming language focused on safety. "},{"role":"user","content":"What is 9 + 10?"}],"max_tokens":4096,"stream":true,"stream_options":{"include_usage":true}}HTTP/2.0 200 OK Content-Length: 8860 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: * diff --git a/llms/openai/testdata/TestXAI_ReasoningModel_RejectsPenalties.httprr b/llms/openai/testdata/TestXAI_ReasoningModel_RejectsPenalties.httprr deleted file mode 100644 index 1b80453a8..000000000 --- a/llms/openai/testdata/TestXAI_ReasoningModel_RejectsPenalties.httprr +++ /dev/null @@ -1,26 +0,0 @@ -httprr trace v1 -309 642 -POST https://api.x.ai/v1/chat/completions HTTP/1.1 -Host: api.x.ai -User-Agent: langchaingo-httprr -Content-Length: 119 -Authorization: Bearer test-api-key -Content-Type: application/json - -{"model":"grok-4.5","messages":[{"role":"user","content":"Say hi"}],"max_completion_tokens":256,"presence_penalty":0.5}HTTP/2.0 400 Bad Request -Content-Length: 96 -Access-Control-Allow-Origin: * -Access-Control-Expose-Headers: * -Cf-Cache-Status: DYNAMIC -Content-Type: application/json -Date: Mon, 03 Aug 2026 20:06:04 GMT -Server: cloudflare -Server-Timing: cfCacheStatus;desc="DYNAMIC" -Server-Timing: cfEdge;dur=7,cfOrigin;dur=485 -Strict-Transport-Security: max-age=31536000 -Vary: origin, access-control-request-method, access-control-request-headers -X-Data-Retention: general -X-Request-Id: 3dc32b08-dc14-98d9-8c49-be67a4521c57 -X-Zero-Retention: false - -{"code":"invalid-argument","error":"Model grok-4.5 does not support parameter presencePenalty."} \ No newline at end of file diff --git a/llms/openai/thinking_budget_field_test.go b/llms/openai/thinking_budget_field_test.go new file mode 100644 index 000000000..0df341abd --- /dev/null +++ b/llms/openai/thinking_budget_field_test.go @@ -0,0 +1,179 @@ +package openai + +import ( + "context" + "encoding/json" + "errors" + "io" + "net/http" + "net/http/httptest" + "reflect" + "strings" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func TestABudgetNoFieldCarriesIsRefusedBeforeTheNetwork(t *testing.T) { + t.Parallel() + + clients := []struct { + name string + opts []Option + }{ + {"default", nil}, + {"modern format alone", []Option{WithModernReasoningFormat()}}, + {"reasoning max tokens alone", []Option{WithUsingReasoningMaxTokens()}}, + } + for _, model := range []string{"zai/glm-5.1", "glm-4.7", "moonshot/kimi-k2.6", "minimax/MiniMax-M3"} { + for _, client := range clients { + t.Run(model+"/"+client.name, func(t *testing.T) { + t.Parallel() + + var reached bool + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + reached = true + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"x","choices":[]}`) + })) + t.Cleanup(srv.Close) + + opts := append([]Option{WithBaseURL(srv.URL), WithToken("test"), WithModel(model)}, client.opts...) + llm, err := New(opts...) + if err != nil { + t.Fatalf("New() error: %v", err) + } + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithReasoning(llms.ReasoningNone, 1024), llms.WithMaxTokens(8192)) + + var want *reasoning.ErrThinkingBudgetUnsupported + if !errors.As(err, &want) { + t.Fatalf("a budget %s has no field for must be refused, got err=%v", model, err) + } + if want.Model != model { + t.Errorf("the error names %q, want %q", want.Model, model) + } + if reached { + t.Error("the refusal must come before the request leaves") + } + }) + } + } +} + +func TestABudgetOnAnEffortOnlyModelTravelsAsAnEffortLikeAdaptiveClaude(t *testing.T) { + t.Parallel() + + budget := []llms.CallOption{llms.WithReasoning(llms.ReasoningNone, 1024), llms.WithMaxTokens(8192)} + for _, model := range []string{ + "anthropic/claude-sonnet-5", "zai/glm-5.2", "glm-5.2", "glm-5.3", "kimi-k3", "moonshot/kimi-k3", + } { + t.Run(model, func(t *testing.T) { + t.Parallel() + + body := captureWireWithClient(t, model, nil, budget...) + if !strings.Contains(body, `"reasoning_effort":"low"`) { + t.Errorf("want the level the budget maps to, got body: %s", body) + } + for _, field := range []string{`"thinking_budget"`, `"budget_tokens"`, `"thinking"`} { + if strings.Contains(body, field) { + t.Errorf("no budget field exists for this model, got %s in body: %s", field, body) + } + } + + w := warningFor(t, sendForWarnings(t, model, budget...), "WithReasoning") + if w.Kind != llms.WarningDrop || w.Asked != "1024 tokens" || w.Sent != "" { + t.Errorf("the caller must learn the budget itself did not travel, got %+v", w) + } + }) + } +} + +func TestTheThinkingWireOfGLMKimiAndMiniMaxOnEachHost(t *testing.T) { + t.Parallel() + + budget := func(tokens int) []llms.CallOption { + return []llms.CallOption{llms.WithReasoning(llms.ReasoningNone, tokens), llms.WithMaxTokens(8192)} + } + off := []llms.CallOption{llms.WithReasoningDisabled()} + + type row struct { + model string + call []llms.CallOption + refused bool + want map[string]any + } + refusedModels := []string{ + "glm-5.1", "zai/glm-5.1", "kimi-k2.6", "moonshot/kimi-k2.6", "MiniMax-M3", "minimax/MiniMax-M3", + } + budgets := []int{1024, 2500, 6000} + rows := make([]row, 0, len(refusedModels)*len(budgets)+6) + for _, model := range refusedModels { + for _, tokens := range budgets { + rows = append(rows, row{model: model, call: budget(tokens), refused: true}) + } + } + rows = append(rows, + row{model: "zai/glm-5.2", call: budget(1024), want: map[string]any{"reasoning_effort": "low"}}, + row{model: "glm-5.2", call: budget(6000), want: map[string]any{"reasoning_effort": "high"}}, + row{model: "dashscope/glm-5.1", call: budget(1024), want: map[string]any{"thinking_budget": float64(1024)}}, + row{model: "dashscope/kimi-k2.7-code", call: budget(1024), want: map[string]any{"thinking_budget": float64(1024)}}, + row{model: "glm-5.1", call: off, want: map[string]any{"thinking": map[string]any{"type": "disabled"}}}, + row{model: "zai/glm-5.1", call: off, want: map[string]any{"thinking": map[string]any{"type": "disabled"}}}, + ) + + for _, tc := range rows { + var raw []byte + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + raw, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"x","object":"chat.completion","created":1,"model":"m",`+ + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}]}`) + })) + llm, err := New(WithBaseURL(srv.URL), WithToken("test"), WithModel(tc.model)) + if err != nil { + t.Fatalf("New() error: %v", err) + } + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, tc.call...) + srv.Close() + + var refusal *reasoning.ErrThinkingBudgetUnsupported + if tc.refused { + if !errors.As(err, &refusal) || raw != nil { + t.Errorf("%s: want ErrThinkingBudgetUnsupported before the network, got err=%v body=%s", + tc.model, err, raw) + } + continue + } + if err != nil { + t.Errorf("%s: GenerateContent() error: %v", tc.model, err) + continue + } + var body map[string]any + if err := json.Unmarshal(raw, &body); err != nil { + t.Fatalf("%s: decode body: %v", tc.model, err) + } + got := map[string]any{} + for _, key := range []string{"thinking", "reasoning_effort", "reasoning", "enable_thinking", "thinking_budget"} { + if value, ok := body[key]; ok { + got[key] = value + } + } + if !reflect.DeepEqual(got, tc.want) { + t.Errorf("%s: reasoning fields on the wire = %v, want %v", tc.model, got, tc.want) + } + } +} + +func TestABudgetTheReasoningObjectCarriesIsNotRefused(t *testing.T) { + t.Parallel() + + body := sendModernReasoningForModel(t, "zai/glm-5.1", llms.ReasoningNone, 2048) + + if !strings.Contains(body, `"reasoning":{"max_tokens":2048}`) { + t.Errorf("the reasoning object carries the budget on this format, got body: %s", body) + } +} diff --git a/llms/openai/thinking_object_off_test.go b/llms/openai/thinking_object_off_test.go new file mode 100644 index 000000000..92d583493 --- /dev/null +++ b/llms/openai/thinking_object_off_test.go @@ -0,0 +1,146 @@ +package openai + +import ( + "context" + "errors" + "io" + "net/http" + "net/http/httptest" + "reflect" + "strings" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func TestDisablingThinkingWhereTheEffortTokenDoesNotReachTheVendor(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "glm-5.1", "glm-5.2", "glm-4.6", "minimax-m3", "kimi-k2.6", + "deepseek-v4-flash", "deepseek-v4-pro", "deepseek-flash", "deepseek/deepseek-flash", + "zai/glm-5.2", "deepseek/deepseek-v4-pro", + } { + body := sendForWire(t, model, llms.WithReasoningDisabled()) + if !strings.Contains(body, `"thinking":{"type":"disabled"}`) { + t.Errorf("%s: body carries no disabled thinking object: %s", model, body) + } + if strings.Contains(body, "reasoning_effort") { + t.Errorf("%s: body still carries reasoning_effort: %s", model, body) + } + } +} + +func TestDisablingThinkingOnAHostThatServesTheFamilyUnderItsOwnName(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + want map[string]any + }{ + {"dashscope/glm-5.2", map[string]any{"enable_thinking": false}}, + {"dashscope/deepseek-v4-pro", map[string]any{"enable_thinking": false}}, + {"dashscope/deepseek-v4-flash-0731", map[string]any{"enable_thinking": false}}, + {"mistral/zai-glm-5-2", map[string]any{}}, + {"zai-glm-5-2", map[string]any{}}, + } { + body, err := wireBodyOf(t, tc.model, nil, llms.WithReasoningDisabled()) + if err != nil { + t.Fatalf("%s: GenerateContent() error: %v", tc.model, err) + } + got := map[string]any{} + for _, key := range []string{"thinking", "reasoning_effort", "reasoning", "enable_thinking", "thinking_budget"} { + if value, ok := body[key]; ok { + got[key] = value + } + } + if !reflect.DeepEqual(got, tc.want) { + t.Errorf("%s: reasoning fields on the wire = %v, want %v", tc.model, got, tc.want) + } + } +} + +func TestDashScopeHostGetsTheGuestWireForNamesWithoutTheRoutePrefix(t *testing.T) { + t.Parallel() + + const ( + intl = "http://dashscope-intl.aliyuncs.com/compatible-mode/v1" + hongKong = "http://cn-hongkong.dashscope.aliyuncs.com/compatible-mode/v1" + workspace = "http://llm-abc.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1" + zai = "http://api.z.ai/api/paas/v4" + moonshot = "http://api.moonshot.ai/v1" + ) + off := llms.WithReasoningDisabled() + budget := llms.WithReasoning(llms.ReasoningNone, 2048) + disabled := map[string]any{"enable_thinking": false} + for _, tc := range []struct { + baseURL, model string + opt llms.CallOption + want map[string]any + }{ + {dashScopeBaseURL, "glm-5.2", off, disabled}, + {dashScopeBaseURL, "deepseek-v4-pro", off, disabled}, + {intl, "deepseek-v4-flash-0731", off, disabled}, + {hongKong, "kimi-k2.6", off, disabled}, + {workspace, "glm-5.1", off, disabled}, + {dashScopeBaseURL, "kimi/kimi-k2.6", off, disabled}, + {gatewayBaseURL, "dashscope/kimi/kimi-k2.6", off, disabled}, + {dashScopeBaseURL, "glm-5.2", budget, map[string]any{"thinking_budget": float64(2048)}}, + {workspace, "glm-5.1", budget, map[string]any{"thinking_budget": float64(2048)}}, + {dashScopeBaseURL, "kimi/kimi-k2.6", budget, map[string]any{"thinking_budget": float64(2048)}}, + {gatewayBaseURL, "dashscope/kimi/kimi-k2.6", budget, map[string]any{"thinking_budget": float64(2048)}}, + {dashScopeBaseURL, "kimi-k2.6", budget, + map[string]any{"thinking_budget": float64(2048), "enable_thinking": true}}, + {dashScopeBaseURL, "glm-5.1", llms.WithReasoning(llms.ReasoningHigh, 0), + map[string]any{"reasoning_effort": "high"}}, + {zai, "glm-5.2", off, map[string]any{"thinking": map[string]any{"type": "disabled"}}}, + {moonshot, "kimi-k2.6", llms.WithReasoning(llms.ReasoningHigh, 0), map[string]any{}}, + } { + t.Run(tc.baseURL+" "+tc.model, func(t *testing.T) { + body, _ := sendToHost(t, tc.baseURL, tc.model, tc.opt) + got := map[string]any{} + for _, key := range []string{"thinking", "reasoning_effort", "reasoning", "enable_thinking", "thinking_budget"} { + if value, ok := body[key]; ok { + got[key] = value + } + } + if !reflect.DeepEqual(got, tc.want) { + t.Errorf("reasoning fields on the wire = %v, want %v", got, tc.want) + } + }) + } +} + +func TestDisablingThinkingOnAModelThatOnlyThinks(t *testing.T) { + t.Parallel() + + const completion = `{"id":"x","object":"chat.completion","created":1,"model":"m",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}` + + var body string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, _ := io.ReadAll(r.Body) + body = string(b) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, completion) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithBaseURL(srv.URL), WithToken("test"), WithModel("qwen3.8-2.4t-a95b")) + if err != nil { + t.Fatalf("New() error: %v", err) + } + _, err = llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, + llms.WithReasoningDisabled()) + + var unsupported *reasoning.ErrReasoningOffUnsupported + if !errors.As(err, &unsupported) { + t.Fatalf("want ErrReasoningOffUnsupported, got err=%v body=%s", err, body) + } + if body != "" { + t.Errorf("the refusal must come before the network, but a request went out: %s", body) + } +} diff --git a/llms/openai/thinking_top_p_wire_test.go b/llms/openai/thinking_top_p_wire_test.go new file mode 100644 index 000000000..a42b3840e --- /dev/null +++ b/llms/openai/thinking_top_p_wire_test.go @@ -0,0 +1,48 @@ +package openai + +import ( + "strings" + "testing" + + "github.com/vxcontrol/langchaingo/llms" +) + +func TestClaudeThinkingKeepsTopPAboveTheFloor(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + model string + opts []llms.CallOption + want string + absent bool + }{ + {"Claude keeps top_p above the floor", "claude-sonnet-4-5", + []llms.CallOption{llms.WithTopP(0.97)}, `"top_p":0.97`, false}, + {"Claude keeps top_p exactly at the floor", "claude-sonnet-4-5", + []llms.CallOption{llms.WithTopP(0.95)}, `"top_p":0.95`, false}, + {"Claude strips top_p below the floor", "claude-sonnet-4-5", + []llms.CallOption{llms.WithTopP(0.5)}, `"top_p"`, true}, + {"caller set both — top_p is dropped", "claude-sonnet-4-5", + []llms.CallOption{llms.WithTopP(0.97), llms.WithTemperature(0.3)}, `"top_p"`, true}, + {"model without sampling does not get top_p", "claude-sonnet-5", + []llms.CallOption{llms.WithTopP(0.97)}, `"top_p"`, true}, + {"OpenAI reasoning family still drops top_p", "gpt-5.4", + []llms.CallOption{llms.WithTopP(0.97)}, `"top_p"`, true}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + opts := append([]llms.CallOption{ + llms.WithMaxTokens(8000), llms.WithReasoning(llms.ReasoningHigh, 0), + }, tc.opts...) + body := bodyForCall(t, tc.model, opts...) + if got := strings.Contains(body, tc.want); got == tc.absent { + verb := "does not contain" + if tc.absent { + verb = "contains" + } + t.Errorf("request body %s %s\nbody: %s", verb, tc.want, body) + } + }) + } +} diff --git a/llms/openai/tool_call_type_test.go b/llms/openai/tool_call_type_test.go new file mode 100644 index 000000000..446d4fc31 --- /dev/null +++ b/llms/openai/tool_call_type_test.go @@ -0,0 +1,35 @@ +package openai + +import ( + "strings" + "testing" + + "github.com/vxcontrol/langchaingo/llms" +) + +func TestToolCallTypeIsNamedOnTheWire(t *testing.T) { + t.Parallel() + + history := []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "weather?"), + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.ToolCall{ + ID: "call_1", + FunctionCall: &llms.FunctionCall{Name: "get_weather", Arguments: `{"city":"Minsk"}`}, + }, + }}, + {Role: llms.ChatMessageTypeTool, Parts: []llms.ContentPart{ + llms.ToolCallResponse{ToolCallID: "call_1", Name: "get_weather", Content: "sunny"}, + }}, + } + + body := sendMessagesForWire(t, "gpt-4o", history) + + if strings.Contains(body, `"type":""`) { + t.Errorf("a tool call reassembled from a provider that omits the type must not"+ + " echo an empty type, got body: %s", body) + } + if !strings.Contains(body, `"type":"function"`) { + t.Errorf("want the function tool type on the wire, got body: %s", body) + } +} diff --git a/llms/openai/tool_choice_wire_test.go b/llms/openai/tool_choice_wire_test.go new file mode 100644 index 000000000..29ed09564 --- /dev/null +++ b/llms/openai/tool_choice_wire_test.go @@ -0,0 +1,140 @@ +package openai + +import ( + "context" + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/vxcontrol/langchaingo/llms" +) + +func captureChatRequest(t *testing.T, callOpts ...llms.CallOption) map[string]any { + t.Helper() + + var body []byte + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + body, _ = io.ReadAll(r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"x","object":"chat.completion","created":1,"model":"gpt-4o", + "choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}], + "usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`) + })) + t.Cleanup(srv.Close) + + llm := newUnitLLM(t, WithBaseURL(srv.URL), WithModel("gpt-4o")) + if _, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}, callOpts...); err != nil { + t.Fatalf("GenerateContent: %v", err) + } + + var payload map[string]any + if err := json.Unmarshal(body, &payload); err != nil { + t.Fatalf("decode request: %v", err) + } + return payload +} + +func TestToolChoiceReachesTheWireInTheChatCompletionsSpelling(t *testing.T) { + t.Parallel() + + tool := llms.Tool{ + Type: "function", + Function: &llms.FunctionDefinition{ + Name: "get_weather", + Description: "weather", + Parameters: map[string]any{"type": "object", "properties": map[string]any{}}, + }, + } + named := map[string]any{"type": "function", "function": map[string]any{"name": "get_weather"}} + + for _, tc := range []struct { + name string + choice any + want any + }{ + { + "named in the OpenAI spelling", + llms.ToolChoice{Type: "function", Function: &llms.FunctionReference{Name: "get_weather"}}, + named, + }, + { + "named in the Anthropic spelling", + llms.ToolChoice{Type: "tool", Function: &llms.FunctionReference{Name: "get_weather"}}, + named, + }, + { + "named as a raw Anthropic map", + map[string]any{"type": "tool", "name": "get_weather"}, + named, + }, + { + "any tool, the Anthropic spelling", + llms.ToolChoice{Type: "any"}, + "required", + }, + { + "required", + "required", + "required", + }, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + payload := captureChatRequest(t, + llms.WithTools([]llms.Tool{tool}), llms.WithToolChoice(tc.choice)) + + if got := payload["tool_choice"]; !jsonEqual(got, tc.want) { + t.Fatalf("tool_choice = %#v, want %#v", got, tc.want) + } + }) + } + + for _, tc := range []struct { + name string + choice any + want string + }{ + {"auto as a bare string", "auto", "auto"}, + {"auto as a struct", llms.ToolChoice{Type: "auto"}, "auto"}, + {"auto as a raw map", map[string]any{"type": "auto"}, "auto"}, + {"none as a bare string", "none", "none"}, + {"none as a struct", llms.ToolChoice{Type: "none"}, "none"}, + } { + t.Run("a choice the model owns reaches the wire as a string: "+tc.name, func(t *testing.T) { + t.Parallel() + + payload := captureChatRequest(t, + llms.WithTools([]llms.Tool{tool}), llms.WithToolChoice(tc.choice)) + + if got := payload["tool_choice"]; got != tc.want { + t.Fatalf("tool_choice = %#v, want %q", got, tc.want) + } + }) + } + + t.Run("no choice sends no field", func(t *testing.T) { + t.Parallel() + + payload := captureChatRequest(t, llms.WithTools([]llms.Tool{tool})) + + if _, present := payload["tool_choice"]; present { + t.Fatalf("tool_choice must stay absent, got %#v", payload["tool_choice"]) + } + }) +} + +func jsonEqual(a, b any) bool { + left, err := json.Marshal(a) + if err != nil { + return false + } + right, err := json.Marshal(b) + if err != nil { + return false + } + return string(left) == string(right) +} diff --git a/llms/openai/truncation_partial_test.go b/llms/openai/truncation_partial_test.go new file mode 100644 index 000000000..0cff983fa --- /dev/null +++ b/llms/openai/truncation_partial_test.go @@ -0,0 +1,78 @@ +package openai + +import ( + "context" + "errors" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func truncatedStreamGivenUpOn(t *testing.T, call ...llms.CallOption) (*llms.ContentResponse, error) { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "text/event-stream") + _, _ = io.WriteString(w, `data: {"id":"x","object":"chat.completion.chunk","created":1,`+ + `"model":"gpt-4o","choices":[{"index":0,"delta":{"content":"sixty "},"finish_reason":null}]}`+"\n\n") + _, _ = io.WriteString(w, `data: {"id":"x","object":"chat.completion.chunk","created":1,`+ + `"model":"gpt-4o","choices":[{"index":0,"delta":{"content":"rooms"},"finish_reason":"length"}]}`+"\n\n") + _, _ = io.WriteString(w, "data: [DONE]\n\n") + })) + t.Cleanup(srv.Close) + + llm := newUnitLLM(t, WithBaseURL(srv.URL), WithModel("gpt-4o")) + + delivered := 0 + options := append([]llms.CallOption{ + llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type != streaming.ChunkTypeText { + return nil + } + delivered++ + if delivered == 2 { + return errGaveUp + } + return nil + }), + }, call...) + + return llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, + options...) +} + +func TestAPartialAnswerStillAnswersTheTruncationQuestion(t *testing.T) { + t.Parallel() + + resp, err := truncatedStreamGivenUpOn(t, llms.WithFailOnTruncation()) + + require.Error(t, err) + require.NotNil(t, resp, "the text already delivered must travel with the error") + assert.ErrorIs(t, err, errGaveUp, "the error the consumer raised is kept") + + var apiErr *llms.Error + require.True(t, errors.As(err, &apiErr), "the truncation error is reachable: %v", err) + assert.Equal(t, llms.ErrCodeTruncated, apiErr.Code) +} + +func TestAPartialAnswerIsSilentWhenTruncationWasNotAsked(t *testing.T) { + t.Parallel() + + _, err := truncatedStreamGivenUpOn(t) + + require.Error(t, err) + var apiErr *llms.Error + if errors.As(err, &apiErr) { + assert.NotEqual(t, llms.ErrCodeTruncated, apiErr.Code, + "a caller who did not ask to fail on truncation gets only the stream error") + } +} diff --git a/llms/openai/truncation_test.go b/llms/openai/truncation_test.go new file mode 100644 index 000000000..b53992e7a --- /dev/null +++ b/llms/openai/truncation_test.go @@ -0,0 +1,81 @@ +package openai + +import ( + "context" + "fmt" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/vxcontrol/langchaingo/llms" +) + +func truncationServer(t *testing.T, finishReason string) *httptest.Server { + t.Helper() + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = fmt.Fprintf(w, `{"id":"x","object":"chat.completion","created":1,"model":"gpt-4o", + "choices":[{"index":0,"message":{"role":"assistant","content":"half an ans"}, + "finish_reason":%q}], + "usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}`, finishReason) + })) + t.Cleanup(srv.Close) + return srv +} + +func TestTruncationIsDerivedWithoutRewritingStopReason(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + finishReason string + wantTruncated bool + }{ + {"out of budget", "length", true}, + {"finished on its own", "stop", false}, + {"asked for a tool", "tool_calls", false}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + srv := truncationServer(t, tc.finishReason) + llm := newUnitLLM(t, WithBaseURL(srv.URL), WithModel("gpt-4o")) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + if err != nil { + t.Fatalf("GenerateContent: %v", err) + } + if got := resp.Choices[0].Truncated; got != tc.wantTruncated { + t.Fatalf("Truncated = %v, want %v", got, tc.wantTruncated) + } + if got := resp.Choices[0].StopReason; got != tc.finishReason { + t.Fatalf("StopReason = %q, want the vendor's own %q", got, tc.finishReason) + } + }) + } +} + +func TestFailOnTruncationKeepsThePartialAnswer(t *testing.T) { + t.Parallel() + + srv := truncationServer(t, "length") + llm := newUnitLLM(t, WithBaseURL(srv.URL), WithModel("gpt-4o")) + msgs := []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")} + + resp, err := llm.GenerateContent(context.Background(), msgs, llms.WithFailOnTruncation()) + if err == nil { + t.Fatal("want an error once the caller opted in") + } + if !llms.IsTruncatedError(err) { + t.Fatalf("want a truncation error, got %v", err) + } + if resp == nil || resp.Choices[0].Content != "half an ans" { + t.Fatalf("want the partial answer alongside the error, got %+v", resp) + } + + if _, err := llm.GenerateContent(context.Background(), msgs); err != nil { + t.Fatalf("without the option the same response must stay a success: %v", err) + } +} diff --git a/llms/openai/turn_limits_test.go b/llms/openai/turn_limits_test.go new file mode 100644 index 000000000..35b6a2b82 --- /dev/null +++ b/llms/openai/turn_limits_test.go @@ -0,0 +1,133 @@ +package openai + +import ( + "context" + "errors" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func turnLimitErr(t *testing.T, model string, msgs []llms.MessageContent, opts ...llms.CallOption) error { + t.Helper() + + const completion = `{"id":"x","object":"chat.completion","created":1,"model":"m",` + + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],` + + `"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}` + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, completion) + })) + t.Cleanup(srv.Close) + + llm, err := New(WithBaseURL(srv.URL), WithToken("test"), WithModel(model)) + if err != nil { + t.Fatalf("New() error: %v", err) + } + _, err = llm.GenerateContent(context.Background(), msgs, opts...) + return err +} + +func askedFor(text string) []llms.MessageContent { //nolint:unparam // every caller asks the same thing today + return []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, text)} +} + +func endingOnAssistant() []llms.MessageContent { + return []llms.MessageContent{ + llms.TextParts(llms.ChatMessageTypeHuman, "finish this"), + llms.TextParts(llms.ChatMessageTypeAI, "the answer is"), + } +} + +func TestClaudeTurnLimitsOnTheOpenAITransport(t *testing.T) { + t.Parallel() + + forced := llms.WithToolChoice(llms.ToolChoice{Type: "any"}) + thinking := llms.WithReasoning(llms.ReasoningLow, 0) + + t.Run("budget thinking with a forced tool is refused", func(t *testing.T) { + t.Parallel() + err := turnLimitErr(t, "claude-sonnet-4-5", askedFor("hi"), thinking, forced) + var target *reasoning.ErrForcedToolUseWithThinking + if !errors.As(err, &target) { + t.Errorf("want ErrForcedToolUseWithThinking, got %v", err) + } + }) + + t.Run("a generation that also thinks adaptively is not refused", func(t *testing.T) { + t.Parallel() + if err := turnLimitErr(t, "claude-opus-4-6", askedFor("hi"), thinking, forced); err != nil { + t.Errorf("this generation answers an effort adaptively, so a forced tool is fine, got %v", err) + } + }) + + t.Run("a budget sent as the thinking object is refused with a forced tool", func(t *testing.T) { + t.Parallel() + err := turnLimitErr(t, "claude-opus-4-6", askedFor("hi"), + llms.WithReasoning(llms.ReasoningNone, 2048), forced) + var target *reasoning.ErrForcedToolUseWithThinking + if !errors.As(err, &target) { + t.Errorf("want ErrForcedToolUseWithThinking, got %v", err) + } + }) + + t.Run("an effort with no budget is not refused", func(t *testing.T) { + t.Parallel() + if err := turnLimitErr(t, "claude-sonnet-4-5", askedFor("hi"), + llms.WithReasoning(llms.ReasoningEffort("minimal"), 0), forced); err != nil { + t.Errorf("an effort the budget mapper rejects sends no thinking, so nothing is refused, got %v", err) + } + }) + + t.Run("the OpenAI spelling of a forced tool is refused too", func(t *testing.T) { + t.Parallel() + for _, choice := range []any{ + "required", + llms.ToolChoice{Type: "function", Function: &llms.FunctionReference{Name: "calc"}}, + map[string]any{"type": "function", "function": map[string]any{"name": "calc"}}, + } { + err := turnLimitErr(t, "claude-sonnet-4-5", askedFor("hi"), + thinking, llms.WithToolChoice(choice)) + var target *reasoning.ErrForcedToolUseWithThinking + if !errors.As(err, &target) { + t.Errorf("%#v demands a tool, want ErrForcedToolUseWithThinking, got %v", choice, err) + } + } + }) + + t.Run("adaptive thinking carries no such limit", func(t *testing.T) { + t.Parallel() + if err := turnLimitErr(t, "claude-sonnet-5", askedFor("hi"), thinking, forced); err != nil { + t.Errorf("an adaptive generation takes a forced tool alongside thinking, got %v", err) + } + }) + + t.Run("a non-Claude model is not refused", func(t *testing.T) { + t.Parallel() + if err := turnLimitErr(t, "gpt-5.2", askedFor("hi"), thinking, forced); err != nil { + t.Errorf("the rule is Anthropic's, got %v", err) + } + }) + + t.Run("a generation that rejects prefill is refused", func(t *testing.T) { + t.Parallel() + err := turnLimitErr(t, "claude-opus-4-6", endingOnAssistant()) + var target *reasoning.ErrAssistantPrefillUnsupported + if !errors.As(err, &target) { + t.Errorf("want ErrAssistantPrefillUnsupported, got %v", err) + } + }) + + t.Run("an older generation still takes a prefill", func(t *testing.T) { + t.Parallel() + if err := turnLimitErr(t, "claude-sonnet-4-5", endingOnAssistant()); err != nil { + t.Errorf("this generation answers a prefilled turn, got %v", err) + } + }) +} diff --git a/llms/openai/usage_cost_test.go b/llms/openai/usage_cost_test.go new file mode 100644 index 000000000..7bc972549 --- /dev/null +++ b/llms/openai/usage_cost_test.go @@ -0,0 +1,58 @@ +package openai + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func generationInfoOf(t *testing.T, usage string) map[string]any { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, `{"id":"x","object":"chat.completion","created":1,"model":"gpt-4o",`+ + `"choices":[{"index":0,"message":{"role":"assistant","content":"ok"},"finish_reason":"stop"}],`+ + `"usage":`+usage+`}`) + })) + t.Cleanup(srv.Close) + + llm := newUnitLLM(t, WithBaseURL(srv.URL), WithModel("gpt-4o")) + + resp, err := llm.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "hi")}) + require.NoError(t, err) + require.NotEmpty(t, resp.Choices) + + return resp.Choices[0].GenerationInfo +} + +func TestTheCostReachesTheCallerAsANumber(t *testing.T) { + t.Parallel() + + info := generationInfoOf(t, `{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2,`+ + `"cost_details":{"upstream_inference_prompt_cost":0.000063,"upstream_inference_completions_cost":0.00012}}`) + + require.Contains(t, info, "UpstreamInferencePromptCost") + assert.IsType(t, float64(0), info["UpstreamInferencePromptCost"], + "a consumer switching on float64 must see the cost") + assert.InDelta(t, 0.000063, info["UpstreamInferencePromptCost"], 1e-9) + assert.InDelta(t, 0.00012, info["UpstreamInferenceCompletionsCost"], 1e-9) +} + +func TestACostTheVendorDidNotSendLeavesNoKeyBehind(t *testing.T) { + t.Parallel() + + info := generationInfoOf(t, `{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}`) + + assert.NotContains(t, info, "UpstreamInferencePromptCost") + assert.NotContains(t, info, "UpstreamInferenceCompletionsCost") +} diff --git a/llms/options.go b/llms/options.go index 75507ab01..c7efcb04c 100644 --- a/llms/options.go +++ b/llms/options.go @@ -1,7 +1,8 @@ package llms import ( - "github.com/vxcontrol/langchaingo/llms/reasoning" + "fmt" + "github.com/vxcontrol/langchaingo/llms/streaming" ) @@ -30,10 +31,11 @@ const ( type ReasoningEffort string const ( - ReasoningHigh ReasoningEffort = "high" - ReasoningMedium ReasoningEffort = "medium" - ReasoningLow ReasoningEffort = "low" - ReasoningNone ReasoningEffort = "" + ReasoningHigh ReasoningEffort = "high" + ReasoningMedium ReasoningEffort = "medium" + ReasoningLow ReasoningEffort = "low" + ReasoningNone ReasoningEffort = "" + ReasoningMinimal ReasoningEffort = "minimal" // ReasoningXHigh and ReasoningMax are the top reasoning efforts. Anthropic models // carry them via WithAdaptiveReasoning (max since Claude 4.6, xhigh since Opus 4.7); // OpenAI-compatible providers that expose them (e.g. GPT-5.5, GLM-5.2) accept them @@ -115,13 +117,27 @@ func (r *ReasoningConfig) IsDisabled() bool { } // GetEffort returns enum value of the effort based on kept values inside. -// If maxTokens is less than 0, it will be set to 8192. +// A non-positive maxTokens is replaced with DefaultMaxTokens. // If neither are set, it will return ReasoningNone. // If effort is set, it will return the set effort. // If tokens are set, it will return the effort that is the closest to the set tokens. // - (0, maxTokens/4) -> ReasoningLow // - [maxTokens/4, maxTokens/3) -> ReasoningMedium // - [maxTokens/3, inf) -> ReasoningHigh +// +// HasExplicitTokens reports whether the caller set a token budget of its own, +// rather than leaving the budget to be derived from an effort. +func (r *ReasoningConfig) HasExplicitTokens() bool { + return r != nil && r.Tokens > 0 +} + +// DelegatesDepth reports whether the caller handed the depth decision to the +// model: adaptive with no effort and no budget of its own. +func (r *ReasoningConfig) DelegatesDepth() bool { + return r != nil && r.Mode != ReasoningOff && + r.Adaptive && r.Effort == ReasoningNone && !r.HasExplicitTokens() +} + func (r *ReasoningConfig) GetEffort(maxTokens int) ReasoningEffort { if r == nil { return ReasoningNone @@ -136,7 +152,7 @@ func (r *ReasoningConfig) GetEffort(maxTokens int) ReasoningEffort { } if maxTokens <= 0 { - maxTokens = 8192 + maxTokens = DefaultMaxTokens } if r.Tokens > 0 { @@ -159,9 +175,25 @@ func (r *ReasoningConfig) GetEffort(maxTokens int) ReasoningEffort { return ReasoningNone } +// ValidateReasoning reports an effort no door accepts. +func (o *CallOptions) ValidateReasoning() error { + if o == nil || o.Reasoning == nil { + return nil + } + switch o.Reasoning.Effort { + case ReasoningNone, ReasoningMinimal, ReasoningLow, + ReasoningMedium, ReasoningHigh, ReasoningXHigh, ReasoningMax: + return nil + } + return &Error{ + Code: ErrCodeInvalidRequest, + Message: fmt.Sprintf("unknown reasoning effort %q", string(o.Reasoning.Effort)), + } +} + // GetTokens returns the number of tokens to use for reasoning based on kept values inside. // Maximum value is maxTokens*2/3 because we need to leave some tokens for the response. -// If maxTokens is less than 0, it will be set to 8192. +// A non-positive maxTokens is replaced with DefaultMaxTokens. // If tokens are set, it will return the minimum of the set tokens and maxTokens*2/3. // If effort is set, it will return the maximum of the effort and maxTokens*2/3. // If neither are set, it will return 0 or -1 if effort is set to an invalid value. @@ -175,7 +207,7 @@ func (r *ReasoningConfig) GetTokens(maxTokens int) int { } if maxTokens <= 0 { - maxTokens = 8192 + maxTokens = DefaultMaxTokens } var tokens int @@ -183,18 +215,13 @@ func (r *ReasoningConfig) GetTokens(maxTokens int) int { tokens = r.Tokens } else { switch r.Effort { - case ReasoningLow: - tokens = max(maxTokens/4, 1024) - case ReasoningMedium: - tokens = max(maxTokens/3, 2048) - case ReasoningHigh, ReasoningXHigh, ReasoningMax: - // no distinct token budget for xhigh/max; map them to the high budget. - tokens = max(maxTokens/2, 4096) + case ReasoningLow, ReasoningMedium, ReasoningHigh, ReasoningXHigh, ReasoningMax: + tokens = ReasoningEffortBudget(r.Effort, maxTokens) case ReasoningNone: if r.Adaptive || r.Mode == ReasoningOn { // Adaptive, or an explicit ReasoningOn with no effort, defaults to the // high budget so budget-mapping providers keep reasoning enabled. - tokens = max(maxTokens/2, 4096) + tokens = ReasoningEffortBudget(ReasoningHigh, maxTokens) } else { return 0 // disabled } @@ -206,6 +233,25 @@ func (r *ReasoningConfig) GetTokens(maxTokens int) int { return min(min(tokens, maxTokens*2/3), MaxReasoningTokens) } +// ReasoningEffortBudget reports the thinking budget an effort stands for, before +// any answer limit caps it. +func ReasoningEffortBudget(effort ReasoningEffort, maxTokens int) int { + if maxTokens <= 0 { + maxTokens = DefaultMaxTokens + } + switch effort { + case ReasoningLow: + return max(maxTokens/4, 1024) + case ReasoningMedium: + return max(maxTokens/3, 2048) + case ReasoningHigh, ReasoningXHigh, ReasoningMax: + // no distinct token budget for xhigh/max; map them to the high budget. + return max(maxTokens/2, 4096) + default: + return 0 + } +} + // CallOptions is a set of options for calling models. Not all models support // all options. type CallOptions struct { @@ -242,6 +288,15 @@ type CallOptions struct { FrequencyPenalty *float64 `json:"frequency_penalty,omitempty"` // PresencePenalty is the presence penalty for sampling. PresencePenalty *float64 `json:"presence_penalty,omitempty"` + // Verbosity asks the model for a shorter or longer answer. + Verbosity *string `json:"verbosity,omitempty"` + // InferenceSpeed picks the inference configuration. Not to be confused with + // Speed above, which is the voice rate of speech synthesis. + InferenceSpeed *string `json:"inference_speed,omitempty"` + // LogProbs asks for the log probability of each returned token. + LogProbs *bool `json:"logprobs,omitempty"` + // TopLogProbs is how many alternatives to report per position. + TopLogProbs *int `json:"top_logprobs,omitempty"` // Reasoning is the configuration for thinking of the model. Reasoning *ReasoningConfig `json:"reasoning,omitempty"` @@ -249,6 +304,8 @@ type CallOptions struct { // JSONMode is a flag to enable JSON mode. JSONMode bool `json:"json"` + FailOnTruncation bool `json:"fail_on_truncation,omitempty"` + // StructuredOutput requests provider-native, schema-constrained output. When // set (via WithStructuredOutput) JSONMode is also true and the provider is // asked for strict output matching Schema. nil keeps the legacy schema-less @@ -270,6 +327,13 @@ type CallOptions struct { // Deprecated: Use ToolChoice instead. FunctionCallBehavior FunctionCallBehavior `json:"function_call,omitempty"` + // ExtraBody holds provider-specific request-body fields set by WithExtraBody. + // A door that merges them merges a JSON object into the object it built under + // the same key, key by key at every depth; any other value (a scalar, an array, + // null) replaces the door's, so a leaf from ExtraBody always wins. An object + // whose "type" differs from the "type" of the door's object replaces it whole. + ExtraBody map[string]any `json:"extra_body,omitempty"` + // Metadata is a map of metadata to include in the request. // The meaning of this field is specific to the backend in use. Metadata map[string]interface{} `json:"metadata,omitempty"` @@ -318,12 +382,6 @@ func (o *CallOptions) GetTemperature() float64 { if o.Temperature == nil { return DefaultTemperature } - // Reasoning models require temperature=1.0, but only when thinking is not - // explicitly disabled — an explicit WithReasoningDisabled() must let the - // user's temperature through, matching the OpenAI adapter's guard. - if reasoning.IsReasoningModel(o.GetModel()) && !o.Reasoning.IsDisabled() { - return 1.0 - } return *o.Temperature } @@ -627,6 +685,34 @@ func WithStreamingFunc(streamingFunc streaming.Callback) CallOption { } } +// WithLogProbs will add an option to return the log probability of each token. +func WithLogProbs(logProbs bool) CallOption { + return func(o *CallOptions) { + o.LogProbs = &logProbs + } +} + +// WithTopLogProbs will add an option to report alternatives per position. +func WithTopLogProbs(topLogProbs int) CallOption { + return func(o *CallOptions) { + o.TopLogProbs = &topLogProbs + } +} + +// WithInferenceSpeed will add an option to pick the inference configuration. +func WithInferenceSpeed(speed string) CallOption { + return func(o *CallOptions) { + o.InferenceSpeed = &speed + } +} + +// WithVerbosity will add an option to ask for a shorter or longer answer. +func WithVerbosity(verbosity string) CallOption { + return func(o *CallOptions) { + o.Verbosity = &verbosity + } +} + // WithTopK will add an option to use top-k sampling. func WithTopK(topK int) CallOption { return func(o *CallOptions) { @@ -699,7 +785,9 @@ func WithPresencePenalty(presencePenalty float64) CallOption { // WithReasoning sets the reasoning configuration for the model call. // You can specify either the reasoning effort or the number of tokens to allocate for reasoning. -// If both effort is ReasoningNone and tokens is 0, reasoning will be disabled. +// If both effort is ReasoningNone and tokens is 0, the reasoning control is +// omitted and the model's own default applies, which on a model that thinks by +// default leaves thinking on. Use WithReasoningDisabled to force it off. // Note: Most LLM providers expect only one of these options to be set at a time. // Internally, the options may be converted between each other according to predefined rules. func WithReasoning(effort ReasoningEffort, tokens int) CallOption { @@ -767,6 +855,14 @@ func WithTools(tools []Tool) CallOption { } } +// WithFailOnTruncation makes an answer that stopped at the output token limit +// return an error rather than a successful response. Off by default. +func WithFailOnTruncation() CallOption { + return func(o *CallOptions) { + o.FailOnTruncation = true + } +} + // WithJSONMode will add an option to set the response format to JSON. // This is useful for models that return structured data. func WithJSONMode() CallOption { @@ -840,3 +936,17 @@ func WithWebSearch(options *WebSearchOptions) CallOption { } } } + +// WithExtraBody carries provider-specific fields to merge into the request body. +// A door that builds its request through a vendor SDK cannot merge them and +// reports the loss through the response warnings instead. +func WithExtraBody(extraBody map[string]any) CallOption { + return func(o *CallOptions) { + o.ExtraBody = extraBody + } +} + +// ExtraBody returns the fields WithExtraBody attached, or nil. +func ExtraBody(opts CallOptions) map[string]any { + return opts.ExtraBody +} diff --git a/llms/options_test.go b/llms/options_test.go index 12bd1bb7c..592ea9d43 100644 --- a/llms/options_test.go +++ b/llms/options_test.go @@ -5,7 +5,10 @@ import ( "encoding/json" "errors" "fmt" + "os" + "path/filepath" "reflect" + "strings" "testing" "github.com/vxcontrol/langchaingo/llms" @@ -522,9 +525,9 @@ func TestGetTemperatureReasoningGuard(t *testing.T) { want float64 }{ { - name: "reasoning model without reasoning option is pinned to 1.0", + name: "a reasoning model gets the caller's temperature, not a rewritten one", model: reasoningModel, - want: 1.0, + want: 0.2, }, { name: "reasoning model with explicit disable honors user temperature", @@ -840,14 +843,14 @@ func TestReasoningConfig_GetEffort(t *testing.T) { //nolint:funlen // table-driv expected: llms.ReasoningLow, }, { - name: "negative maxTokens uses default 8192", - config: &llms.ReasoningConfig{Tokens: 8192/3 + 10}, // Just above medium threshold for 8192 + name: "negative maxTokens uses the package default", + config: &llms.ReasoningConfig{Tokens: llms.DefaultMaxTokens/3 + 10}, // Just above the medium threshold maxTokens: -1, expected: llms.ReasoningHigh, }, { - name: "zero maxTokens uses default 8192", - config: &llms.ReasoningConfig{Tokens: 8192 / 5}, // Low for 8192 + name: "zero maxTokens uses the package default", + config: &llms.ReasoningConfig{Tokens: llms.DefaultMaxTokens / 5}, // Low maxTokens: 0, expected: llms.ReasoningLow, }, @@ -954,22 +957,22 @@ func TestReasoningConfig_GetTokens(t *testing.T) { //nolint:funlen // table-driv expected: -1, }, { - name: "negative maxTokens uses default 8192 for low effort", + name: "negative maxTokens uses the package default for low effort", config: &llms.ReasoningConfig{Effort: llms.ReasoningLow}, maxTokens: -10, - expected: max(8192/4, 1024), // Based on default 8192 + expected: max(llms.DefaultMaxTokens/4, 1024), }, { - name: "zero maxTokens uses default 8192 for high effort", + name: "zero maxTokens uses the package default for high effort", config: &llms.ReasoningConfig{Effort: llms.ReasoningHigh}, maxTokens: 0, - expected: max(8192/2, 4096), // Based on default 8192 + expected: max(llms.DefaultMaxTokens/2, 4096), }, { name: "negative maxTokens with explicit tokens", config: &llms.ReasoningConfig{Tokens: 7000}, maxTokens: -5, - expected: min(7000, 8192*2/3), // Using default 8192 as maxTokens + expected: min(7000, llms.DefaultMaxTokens*2/3), }, } @@ -1101,10 +1104,10 @@ func TestReasoningConfig_Integration(t *testing.T) { { name: "default maxTokens handling", config: &llms.ReasoningConfig{Effort: llms.ReasoningMedium}, - maxTokens: 0, // Should use default 8192 + maxTokens: 0, // Should use the package default expectedEnabled: true, expectedEffort: llms.ReasoningMedium, - expectedTokens: max(8192/3, 2048), // Based on default 8192 + expectedTokens: max(llms.DefaultMaxTokens/3, 2048), }, } @@ -1180,3 +1183,43 @@ func TestWithReasoningDisabled(t *testing.T) { t.Error("disabled reasoning must not be IsEnabled") } } + +func TestGetTemperatureLeavesAnUnsetValueAtTheDefault(t *testing.T) { + t.Parallel() + + model := func(v string) *string { return &v } + for _, name := range []string{"o3-mini", "gpt-4.1", "deepseek-r1"} { + opts := llms.CallOptions{Model: model(name)} + if got := opts.GetTemperature(); got != llms.DefaultTemperature { + t.Errorf("%s: unset temperature = %v, want the package default %v", + name, got, llms.DefaultTemperature) + } + } +} + +func TestValidateStructuredOutputDoesNotReadTheFilesystem(t *testing.T) { + t.Parallel() + + present := filepath.Join(t.TempDir(), "present.json") + if err := os.WriteFile(present, []byte(`{"type":"integer","minimum":42}`), 0o600); err != nil { + t.Fatal(err) + } + + opts := llms.CallOptions{JSONMode: true, StructuredOutput: &llms.StructuredOutputConfig{ + Name: "s", + Schema: json.RawMessage(fmt.Sprintf( + `{"type":"object","additionalProperties":false,"properties":{"n":{"$ref":%q}}}`, + "file://"+present)), + }} + + err := opts.ValidateStructuredOutput() + if err == nil { + t.Fatal("a caller-supplied schema must not be able to pull a file off the local disk") + } + if !errors.Is(err, llms.ErrStructuredOutputConfig) { + t.Errorf("error must wrap ErrStructuredOutputConfig, got %v", err) + } + if !strings.Contains(err.Error(), "no URLLoader registered") { + t.Errorf("want the reference refused before any filesystem access, got %v", err) + } +} diff --git a/llms/reasoning/alias_off_parity_test.go b/llms/reasoning/alias_off_parity_test.go new file mode 100644 index 000000000..7616911c4 --- /dev/null +++ b/llms/reasoning/alias_off_parity_test.go @@ -0,0 +1,36 @@ +package reasoning + +import ( + "fmt" + "sort" + "testing" +) + +func TestOneModelOneWayToDisableThinking(t *testing.T) { + t.Parallel() + + snapshot := readMistralListing(t) + + ids := make([]string, 0, len(snapshot)) + for id := range snapshot { + ids = append(ids, id) + } + sort.Strings(ids) + + var split []string + for _, id := range ids { + want := ResolveOff(id, ProviderOpenAI) + for _, alias := range snapshot[id].Aliases { + if _, known := snapshot[alias]; !known { + continue + } + if got := ResolveOff(alias, ProviderOpenAI); got != want { + split = append(split, fmt.Sprintf("%s -> %v, but its alias %s -> %v", id, want, alias, got)) + } + } + } + + if len(split) > 0 { + t.Fatalf("the vendor calls these one model, the library disables them differently:\n %v", split) + } +} diff --git a/llms/reasoning/anthropic_listing_drift_test.go b/llms/reasoning/anthropic_listing_drift_test.go new file mode 100644 index 000000000..6e46200b7 --- /dev/null +++ b/llms/reasoning/anthropic_listing_drift_test.go @@ -0,0 +1,179 @@ +package reasoning + +import ( + "encoding/json" + "fmt" + "os" + "slices" + "sort" + "testing" +) + +type listingEntry struct { + EffortSupported bool `json:"effort_supported"` + Efforts []string `json:"efforts"` + ThinkingTypes []string `json:"thinking_types"` + StructuredOutputs bool `json:"structured_outputs"` +} + +const listingSnapshot = "testdata/anthropic_models.json" + +func readListing(t *testing.T) map[string]listingEntry { + t.Helper() + + body, err := os.ReadFile(listingSnapshot) + if err != nil { + t.Fatalf("read snapshot: %v", err) + } + var snapshot map[string]listingEntry + if err := json.Unmarshal(body, &snapshot); err != nil { + t.Fatalf("parse snapshot: %v", err) + } + if len(snapshot) == 0 { + t.Fatal("snapshot is empty; regenerate it with go generate ./llms/reasoning") + } + return snapshot +} + +func kindFromThinkingTypes(types []string) ClaudeReasoningKind { + enabled := slices.Contains(types, "enabled") + adaptive := slices.Contains(types, "adaptive") + switch { + case enabled && adaptive: + return ClaudeReasoningAdaptiveAndBudget + case adaptive: + return ClaudeReasoningAdaptiveOnly + case enabled: + return ClaudeReasoningBudgetOnly + default: + return ClaudeReasoningUnknown + } +} + +func claudeListingDiff(snapshot map[string]listingEntry) []string { + ids := make([]string, 0, len(snapshot)) + for id := range snapshot { + ids = append(ids, id) + } + sort.Strings(ids) + + var diffs []string + for _, id := range ids { + e := snapshot[id] + + ours := ClaudeEffortsFor(id, ProviderAnthropic) + if len(ours) != len(e.Efforts) || (len(ours) > 0 && !slices.Equal(ours, e.Efforts)) { + diffs = append(diffs, fmt.Sprintf("%s: we accept efforts %v, the vendor lists %v", id, ours, e.Efforts)) + } + if want, got := kindFromThinkingTypes(e.ThinkingTypes), ClaudeReasoningKindFor(id); want != got { + diffs = append(diffs, fmt.Sprintf("%s: we classify thinking as %d, the vendor reports %v (%d)", + id, got, e.ThinkingTypes, want)) + } + if got := ClaudeSupportsStructuredOutput(id); got != e.StructuredOutputs { + diffs = append(diffs, fmt.Sprintf("%s: we say structured output %v, the vendor says %v", + id, got, e.StructuredOutputs)) + } + if e.EffortSupported != (len(e.Efforts) > 0) { + diffs = append(diffs, fmt.Sprintf("%s: the vendor reports effort supported=%v with %d levels", + id, e.EffortSupported, len(e.Efforts))) + } + } + return diffs +} + +func TestTheVendorListingAgreesWithOurTables(t *testing.T) { + t.Parallel() + + for _, d := range claudeListingDiff(readListing(t)) { + t.Errorf("drift: %s. Measure it against the vendor before touching either side", d) + } +} + +func TestTheListingSnapshotCoversEveryThinkingKind(t *testing.T) { + t.Parallel() + + seen := map[ClaudeReasoningKind]int{} + for _, e := range readListing(t) { + seen[kindFromThinkingTypes(e.ThinkingTypes)]++ + } + for _, kind := range []ClaudeReasoningKind{ + ClaudeReasoningAdaptiveOnly, ClaudeReasoningAdaptiveAndBudget, ClaudeReasoningBudgetOnly, + } { + if seen[kind] == 0 { + t.Errorf("no model of kind %d in the snapshot: a listing that lost a whole generation "+ + "would still pass the drift test", kind) + } + } +} + +func TestTheKeyThatRecordedTheSnapshotCannotSeeMythos(t *testing.T) { + t.Parallel() + + snapshot := readListing(t) + for _, id := range []string{"claude-mythos-5", "claude-mythos-preview"} { + if _, ok := snapshot[id]; ok { + t.Errorf("%s is in the snapshot now: our table for it was never vendor-checked, "+ + "so verify it and drop this guard", id) + } + if !ClaudeSupportsThinking(id) { + t.Errorf("%s left our tables while still unverifiable against the listing", id) + } + } +} + +func TestTheDriftCheckRedensOnASingleChangedLevel(t *testing.T) { + t.Parallel() + + snapshot := readListing(t) + const target = "claude-sonnet-4-6" + entry, ok := snapshot[target] + if !ok { + t.Fatalf("%s left the snapshot; point this test at another dual-thinking model", target) + } + entry.Efforts = append(slices.Clone(entry.Efforts), "xhigh") + snapshot[target] = entry + + diffs := claudeListingDiff(snapshot) + if len(diffs) != 1 { + t.Fatalf("want exactly one divergence from one changed level, got %d: %v", len(diffs), diffs) + } + if !slices.ContainsFunc(diffs, func(d string) bool { return len(d) > 0 && d[:len(target)] == target }) { + t.Errorf("the divergence does not name %s: %v", target, diffs) + } +} + +func TestTheListingSaysNothingAboutSamplingOrDefaultThinking(t *testing.T) { + t.Parallel() + + body, err := os.ReadFile(listingSnapshot) + if err != nil { + t.Fatalf("read snapshot: %v", err) + } + var raw map[string]map[string]any + if err := json.Unmarshal(body, &raw); err != nil { + t.Fatalf("parse snapshot: %v", err) + } + + want := []string{"effort_supported", "efforts", "structured_outputs", "thinking_types"} + for id, fields := range raw { + keys := make([]string, 0, len(fields)) + for k := range fields { + keys = append(keys, k) + } + sort.Strings(keys) + if !slices.Equal(keys, want) { + t.Fatalf("%s carries %v: the snapshot grew a field, so decide whether the drift "+ + "test should compare it before it becomes silent data", id, keys) + } + } + + if !ClaudeThinkingDefaultsOn("claude-opus-5") { + t.Error("claude-opus-5 thinks by default; the listing carries no field for it, so the table must") + } + if !ClaudeRejectsSampling("claude-opus-4-7") { + t.Error("claude-opus-4-7 rejects sampling while thinking; the listing carries no field for it") + } + if !ClaudeThinkingAlwaysOn("claude-fable-5") { + t.Error("claude-fable-5 cannot be switched off; the listing carries no field for it") + } +} diff --git a/llms/reasoning/bedrock_capability.go b/llms/reasoning/bedrock_capability.go new file mode 100644 index 000000000..eb7809e86 --- /dev/null +++ b/llms/reasoning/bedrock_capability.go @@ -0,0 +1,140 @@ +package reasoning + +import ( + "slices" + "strings" +) + +// IsNovaReasoningModel reports whether the Bedrock model takes Amazon Nova's +// reasoningConfig. +func IsNovaReasoningModel(model string) bool { + base := baseModelName(model) + return strings.Contains(base, "amazon.nova-2-lite") +} + +func NovaEffort(effort string) string { + switch strings.ToLower(effort) { + case "minimal", "low": + return "low" + case "medium": + return "medium" + default: + return "high" + } +} + +func NovaEfforts() []string { + return []string{"low", "medium", "high"} +} + +func NovaClearsInferenceConfigAt(effort string) bool { + return NovaEffort(effort) == "high" +} + +// IsBedrockAlwaysReasoningModel reports whether the Bedrock family reasons on +// every request and takes no thinking configuration alongside it. +func IsBedrockAlwaysReasoningModel(model string) bool { + return strings.Contains(baseModelName(model), "deepseek.r1") +} + +// IsBedrockNonReasoningModel reports whether the model is in +// bedrockNonReasoningModels: Bedrock models whose AWS model card lists neither +// reasoning support nor a request field that controls it. +func IsBedrockNonReasoningModel(model string) bool { + return slices.Contains(bedrockNonReasoningModels, bedrockModelWithoutRegion(model)) +} + +var bedrockNonReasoningModels = []string{"zai.glm-4.7", "zai.glm-4.7-flash", "zai.glm-5"} + +// BedrockSupportsStructuredOutput reports whether the AWS model card of a +// non-Claude Bedrock model lists structured outputs for the bedrock-runtime +// endpoint. Claude follows ClaudeSupportsStructuredOutputOnBedrock. +func BedrockSupportsStructuredOutput(model string) bool { + return slices.Contains(bedrockStructuredOutputModels, bedrockModelWithoutRegion(model)) +} + +var bedrockStructuredOutputModels = []string{ + "deepseek.v3-v1:0", "deepseek.v3.1", "deepseek.v3.2", + "google.gemma-3-12b-it", "google.gemma-3-27b-it", + "minimax.minimax-m2", "minimax.minimax-m2.1", "minimax.minimax-m2.5", + "mistral.devstral-2-123b", "mistral.magistral-small-2509", "mistral.ministral-3-14b-instruct", + "mistral.ministral-3-8b-instruct", "mistral.ministral-3-3b-instruct", "mistral.mistral-large-3-675b-instruct", + "mistral.voxtral-mini-3b-2507", "mistral.voxtral-small-24b-2507", + "moonshot.kimi-k2-thinking", "moonshotai.kimi-k2-thinking", "moonshotai.kimi-k2.5", + "nvidia.nemotron-nano-12b-v2", "nvidia.nemotron-nano-3-30b", "nvidia.nemotron-nano-9b-v2", + "nvidia.nemotron-super-3-120b", + "openai.gpt-5.6-luna", "openai.gpt-oss-120b", "openai.gpt-oss-120b-1:0", "openai.gpt-oss-20b", + "openai.gpt-oss-20b-1:0", "openai.gpt-oss-safeguard-120b", "openai.gpt-oss-safeguard-20b", + "qwen.qwen3-235b-a22b-2507", "qwen.qwen3-235b-a22b-2507-v1:0", "qwen.qwen3-32b", "qwen.qwen3-32b-v1:0", + "qwen.qwen3-coder-30b-a3b-instruct", "qwen.qwen3-coder-30b-a3b-v1:0", "qwen.qwen3-coder-480b-a35b-instruct", + "qwen.qwen3-coder-480b-a35b-v1:0", "qwen.qwen3-coder-next", "qwen.qwen3-next-80b-a3b", + "qwen.qwen3-next-80b-a3b-instruct", + "writer.palmyra-vision-7b", + "zai.glm-4.7", "zai.glm-4.7-flash", "zai.glm-5", +} + +var bedrockRegionPrefixes = []string{"us-gov.", "apac.", "global.", "us.", "eu.", "au.", "jp.", "in.", "ca."} + +func bedrockModelWithoutRegion(model string) string { + base := baseModelName(model) + for _, prefix := range bedrockRegionPrefixes { + if trimmed, found := strings.CutPrefix(base, prefix); found { + return trimmed + } + } + return base +} + +// IsGptOssModel reports whether the Bedrock model is one of OpenAI's gpt-oss models. +func IsGptOssModel(model string) bool { + base := baseModelName(model) + for _, name := range gptOssBedrockNames { + if strings.Contains(base, name) { + return true + } + } + return false +} + +var gptOssBedrockNames = []string{ + "openai.gpt-oss-120b", "openai.gpt-oss-20b", + "openai.gpt-oss-safeguard-120b", "openai.gpt-oss-safeguard-20b", +} + +var gptOssCaps = OpenAIReasoningCaps{Known: true, Efforts: []string{"low", "medium", "high"}} + +func GptOssEffort(effort string) string { + return gptOssCaps.ClampEffort(strings.ToLower(effort)) +} + +func GptOssEfforts() []string { + return slices.Clone(gptOssCaps.Efforts) +} + +// IsGrokModel reports whether the Bedrock model belongs to the xAI Grok family. +func IsGrokModel(model string) bool { + return strings.Contains(baseModelName(model), "xai.grok") +} + +// GrokEffort maps a requested effort onto what the model accepts. Only the +// generations that kept none can carry it; a request to disable a model that +// always reasons leaves the field off the wire rather than inventing a level. +func GrokEffort(model, effort string) string { + switch strings.ToLower(effort) { + case "none": + if mandatoryThinking(model) { + return "" + } + return "none" + case "minimal", "low": + return "low" + case "medium": + return "medium" + case "high": + return "high" + case "xhigh", "max": + return "xhigh" + default: + return "" + } +} diff --git a/llms/reasoning/bedrock_capability_test.go b/llms/reasoning/bedrock_capability_test.go new file mode 100644 index 000000000..48760c0cc --- /dev/null +++ b/llms/reasoning/bedrock_capability_test.go @@ -0,0 +1,149 @@ +package reasoning + +import "testing" + +func TestOnlyNovaLiteTakesReasoningConfig(t *testing.T) { + for _, model := range []string{ + "amazon.nova-2-lite-v1:0", "us.amazon.nova-2-lite-v1:0", + } { + if !IsNovaReasoningModel(model) { + t.Errorf("%s takes reasoningConfig", model) + } + } + for _, model := range []string{ + "amazon.nova-pro-v1:0", "us.amazon.nova-lite-v1:0", "amazon.nova-micro-v1:0", + "global.amazon.nova-2-pro-preview-20251202-v1:0", "us.amazon.nova-2-micro-v1:0", + "amazon.nova-2-sonic-v1:0", + "us.anthropic.claude-opus-5", "openai.gpt-oss-120b-1:0", + } { + if IsNovaReasoningModel(model) { + t.Errorf("%s does not take reasoningConfig", model) + } + } +} + +func TestNovaEffortCollapsesOntoThreeLevels(t *testing.T) { + cases := map[string]string{ + "minimal": "low", "low": "low", "medium": "medium", + "high": "high", "xhigh": "high", "max": "high", "": "high", + } + for in, want := range cases { + if got := NovaEffort(in); got != want { + t.Errorf("NovaEffort(%q) = %q, want %q — Bedrock rejects anything outside low/medium/high", in, got, want) + } + } +} + +func TestNovaRejectsSamplingOnlyAtTopEffort(t *testing.T) { + if !NovaClearsInferenceConfigAt("max") || !NovaClearsInferenceConfigAt("high") { + t.Error("temperature, topP and topK are an error at the top effort") + } + if NovaClearsInferenceConfigAt("low") || NovaClearsInferenceConfigAt("medium") { + t.Error("sampling params are allowed below the top effort") + } +} + +func TestGrokIsRecognisedByItsBedrockName(t *testing.T) { + if !IsGrokModel("us.xai.grok-4.6") || !IsGrokModel("xai.grok-4.3") { + t.Fatal("both generations are Grok") + } + if IsGrokModel("us.amazon.nova-2-lite-v1:0") { + t.Error("Nova is not Grok") + } +} + +func TestGrokEffortFollowsTheGeneration(t *testing.T) { + // xAI publishes the accepted set per model: 4.3 keeps none, 4.6 dropped it, + // and every generation takes xhigh. + cases := []struct{ model, in, want string }{ + {"xai.grok-4.3", "none", "none"}, + {"xai.grok-4.3", "max", "xhigh"}, + {"xai.grok-4.3", "xhigh", "xhigh"}, + {"us.xai.grok-4.6", "none", ""}, + {"us.xai.grok-4.6", "max", "xhigh"}, + {"us.xai.grok-4.6", "xhigh", "xhigh"}, + {"us.xai.grok-4.6", "medium", "medium"}, + {"us.xai.grok-4.6", "minimal", "low"}, + } + for _, c := range cases { + if got := GrokEffort(c.model, c.in); got != c.want { + t.Errorf("GrokEffort(%s, %q) = %q, want %q", c.model, c.in, got, c.want) + } + } +} + +func TestGptOssIsRecognisedOnlyByItsBedrockNames(t *testing.T) { + for _, model := range []string{ + "openai.gpt-oss-120b-1:0", "openai.gpt-oss-20b-1:0", + "openai.gpt-oss-safeguard-120b", "openai.gpt-oss-safeguard-20b", + } { + if !IsGptOssModel(model) { + t.Errorf("%s is gpt-oss", model) + } + } + for _, model := range []string{ + "gpt-oss-120b", "openai/gpt-oss-20b", "gpt-oss:120b", "us.amazon.nova-2-lite-v1:0", + } { + if IsGptOssModel(model) { + t.Errorf("%s does not take the Bedrock gpt-oss effort field", model) + } + } +} + +func TestGptOssEffortCollapsesOntoThreeLevels(t *testing.T) { + cases := map[string]string{ + "minimal": "low", "low": "low", "medium": "medium", + "high": "high", "xhigh": "high", "max": "high", "": "", + } + for in, want := range cases { + if got := GptOssEffort(in); got != want { + t.Errorf("GptOssEffort(%q) = %q, want %q — Bedrock refuses anything outside low/medium/high", in, got, want) + } + } +} + +func TestAlwaysReasoningModelCannotExpressOffOnAnyDoor(t *testing.T) { + for _, model := range []string{"us.xai.grok-4.6", "xai.grok-4.6"} { + for _, p := range []Provider{ProviderBedrock, ProviderOpenAI} { + if got := ResolveOff(model, p); got != OffUnsupported { + t.Errorf("ResolveOff(%s, %v) = %v, want OffUnsupported — omitting leaves thinking on", + model, p, got) + } + } + } + // Nova defaults to disabled, so omitting really is off there. + if got := ResolveOff("us.amazon.nova-2-lite-v1:0", ProviderBedrock); got != OffOmit { + t.Errorf("ResolveOff(nova, bedrock) = %v, want OffOmit", got) + } +} + +func TestMechanismSeparatesTheBedrockFamilies(t *testing.T) { + cases := []struct { + model string + claudeFamily bool + want Mechanism + }{ + {"us.amazon.nova-2-lite-v1:0", false, MechanismNovaReasoningConfig}, + {"us.xai.grok-4.6", false, MechanismGrokEffort}, + {"us.anthropic.claude-opus-4-5-20251101-v1:0", true, MechanismBudget}, + {"us.deepseek.r1-v1:0", false, MechanismNone}, + {"openai.gpt-oss-120b-1:0", false, MechanismGptOssEffort}, + {"openai.gpt-oss-20b-1:0", false, MechanismGptOssEffort}, + {"mistral.magistral-small-2509", false, MechanismNone}, + {"moonshot.kimi-k2-thinking", false, MechanismNone}, + {"moonshotai.kimi-k2.5", false, MechanismNone}, + {"zai.glm-4.7", false, MechanismNone}, + {"zai.glm-4.7-flash", false, MechanismNone}, + {"zai.glm-5", false, MechanismNone}, + {"minimax.minimax-m2", false, MechanismNone}, + {"minimax.minimax-m2.1", false, MechanismNone}, + {"minimax.minimax-m2.5", false, MechanismNone}, + {"nvidia.nemotron-super-3-120b", false, MechanismNone}, + {"qwen.qwen3-32b-v1:0", false, MechanismNone}, + } + for _, c := range cases { + if got := ResolveMechanism(c.model, false, c.claudeFamily, true); got != c.want { + t.Errorf("ResolveMechanism(%s) = %d, want %d", c.model, got, c.want) + } + } +} diff --git a/llms/reasoning/blocks.go b/llms/reasoning/blocks.go new file mode 100644 index 000000000..a458300de --- /dev/null +++ b/llms/reasoning/blocks.go @@ -0,0 +1,87 @@ +package reasoning + +import "strings" + +// Block is one reasoning block as the vendor produced it: readable text with the +// signature that covers it, or encrypted data, never both. +type Block struct { + Text string `json:"text,omitempty"` + Signature []byte `json:"signature,omitempty"` + Redacted []byte `json:"redacted,omitempty"` + + // AfterToolCalls counts the tool calls the vendor put ahead of this block in + // the same response. + AfterToolCalls int `json:"after_tool_calls,omitempty"` +} + +// FromBlocks builds the reasoning of one response. A lone plain block that no +// tool call precedes comes back as Content and Signature with no Blocks, so read +// blocks through Sequence. +func FromBlocks(blocks []Block) *ContentReasoning { + switch { + case len(blocks) == 0: + return nil + case len(blocks) == 1 && blocks[0].Redacted == nil && blocks[0].AfterToolCalls == 0: + return &ContentReasoning{Content: blocks[0].Text, Signature: blocks[0].Signature} + } + + var text strings.Builder + for _, block := range blocks { + text.WriteString(block.Text) + } + return &ContentReasoning{Content: text.String(), Blocks: blocks} +} + +func (r *ContentReasoning) Sequence() []Block { + if r == nil { + return nil + } + if len(r.Blocks) > 0 { + return r.Blocks + } + + if r.Content == "" && len(r.Signature) == 0 { + return nil + } + return []Block{{Text: r.Content, Signature: r.Signature}} +} + +// GroupByToolCalls splits blocks by where they sit in a turn with toolCalls +// tool calls: group 0 opens the turn and group i follows tool call i-1. A block +// placed past the turn's last tool call closes it. +func GroupByToolCalls(blocks []Block, toolCalls int) [][]Block { + groups := make([][]Block, toolCalls+1) + for _, block := range blocks { + at := min(max(block.AfterToolCalls, 0), toolCalls) + groups[at] = append(groups[at], block) + } + return groups +} + +// Collector gathers the reasoning blocks of one response in the vendor's order. +type Collector struct { + blocks []Block + toolCalls int +} + +func (c *Collector) Thought(text string, signature []byte) { + if text == "" && len(signature) == 0 { + return + } + c.blocks = append(c.blocks, Block{Text: text, Signature: signature, AfterToolCalls: c.toolCalls}) +} + +func (c *Collector) Encrypted(data []byte) { + if len(data) == 0 { + return + } + c.blocks = append(c.blocks, Block{Redacted: data, AfterToolCalls: c.toolCalls}) +} + +func (c *Collector) ToolCall() { + c.toolCalls++ +} + +func (c *Collector) Reasoning() *ContentReasoning { + return FromBlocks(c.blocks) +} diff --git a/llms/reasoning/blocks_test.go b/llms/reasoning/blocks_test.go new file mode 100644 index 000000000..ea7ba2bf5 --- /dev/null +++ b/llms/reasoning/blocks_test.go @@ -0,0 +1,177 @@ +package reasoning + +import ( + "encoding/json" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestALonePlainBlockKeepsTheClassicShape(t *testing.T) { + t.Parallel() + + got := FromBlocks([]Block{{Text: "step", Signature: []byte("sig")}}) + + require.NotNil(t, got) + assert.Equal(t, "step", got.Content) + assert.Equal(t, []byte("sig"), got.Signature) + assert.Empty(t, got.Blocks) + assert.Equal(t, []Block{{Text: "step", Signature: []byte("sig")}}, got.Sequence()) +} + +func TestEveryBlockKeepsItsOwnSignature(t *testing.T) { + t.Parallel() + + blocks := []Block{ + {Text: "first", Signature: []byte("s1")}, + {Text: "second", Signature: []byte("s2")}, + } + got := FromBlocks(blocks) + + require.NotNil(t, got) + assert.Equal(t, blocks, got.Sequence()) + assert.Equal(t, "firstsecond", got.Content, "Content mirrors the readable text of every block") + assert.Empty(t, got.Signature, "no single signature covers two blocks") +} + +func TestALoneBlockThatIsEncryptedOrPlacedStaysABlock(t *testing.T) { + t.Parallel() + + for name, block := range map[string]Block{ + "encrypted": {Redacted: []byte("opaque")}, + "after a tool call": {Text: "update", Signature: []byte("s"), AfterToolCalls: 1}, + "encrypted and placed": {Redacted: []byte("opaque"), AfterToolCalls: 2}, + } { + got := FromBlocks([]Block{block}) + require.NotNil(t, got, name) + assert.Equal(t, []Block{block}, got.Blocks, name) + assert.Empty(t, got.Signature, name) + } + assert.Nil(t, FromBlocks(nil)) +} + +func TestAHandBuiltReasoningIsOneBlock(t *testing.T) { + t.Parallel() + + assert.Equal(t, + []Block{{Text: "step", Signature: []byte("sig")}}, + (&ContentReasoning{Content: "step", Signature: []byte("sig")}).Sequence()) + assert.Equal(t, + []Block{{Signature: []byte("sig")}}, + (&ContentReasoning{Signature: []byte("sig")}).Sequence(), + "a signature with its text withheld is still a block to return") + assert.Empty(t, (&ContentReasoning{}).Sequence()) + assert.Empty(t, (*ContentReasoning)(nil).Sequence()) +} + +func TestBlocksAloneAreSomethingToCarryBack(t *testing.T) { + t.Parallel() + + r := &ContentReasoning{Blocks: []Block{{Redacted: []byte("opaque")}, {Signature: []byte("s")}}} + + assert.False(t, r.IsEmpty()) + assert.False(t, r.HasContent()) + assert.Contains(t, r.String(), "Blocks: 2, 1 encrypted (6 bytes)") +} + +func TestBlocksGroupAfterTheToolCallsAheadOfThem(t *testing.T) { + t.Parallel() + + lead := Block{Text: "reasoning", Signature: []byte("s1")} + update := Block{Text: "update", Signature: []byte("s2")} + second := Block{Text: "between", Signature: []byte("s3"), AfterToolCalls: 1} + trailing := Block{Text: "cut off", Signature: []byte("s4"), AfterToolCalls: 2} + stray := Block{Text: "past the end", Signature: []byte("s5"), AfterToolCalls: 7} + negative := Block{Text: "before anything", Signature: []byte("s6"), AfterToolCalls: -1} + + groups := GroupByToolCalls([]Block{lead, update, second, trailing, stray, negative}, 2) + + require.Len(t, groups, 3) + assert.Equal(t, []Block{lead, update, negative}, groups[0]) + assert.Equal(t, []Block{second}, groups[1]) + assert.Equal(t, []Block{trailing, stray}, groups[2]) + assert.Equal(t, [][]Block{{lead, second}}, GroupByToolCalls([]Block{lead, second}, 0), + "with no tool calls every block opens the turn") +} + +func TestTheCollectorNotesTheToolCallsAheadOfEachBlock(t *testing.T) { + t.Parallel() + + var c Collector + c.Thought("reasoning", []byte("s1")) + c.Thought("", nil) + c.ToolCall() + c.Encrypted(nil) + c.Encrypted([]byte("opaque")) + c.Thought("", []byte("s2")) + c.ToolCall() + + got := c.Reasoning() + + require.NotNil(t, got) + assert.Equal(t, []Block{ + {Text: "reasoning", Signature: []byte("s1")}, + {Redacted: []byte("opaque"), AfterToolCalls: 1}, + {Signature: []byte("s2"), AfterToolCalls: 1}, + }, got.Sequence()) + assert.Nil(t, (&Collector{}).Reasoning()) +} + +func TestStoredReasoningReadsInEveryShapeItWasWrittenIn(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + stored string + want []Block + }{ + { + name: "content and signature", + stored: `{"content":"step","signature":"c2ln"}`, + want: []Block{{Text: "step", Signature: []byte("sig")}}, + }, + { + name: "one encrypted block as a string", + stored: `{"content":"step","signature":"c2ln","redacted":"cmVk"}`, + want: []Block{{Text: "step", Signature: []byte("sig")}, {Redacted: []byte("red")}}, + }, + { + name: "encrypted blocks as an array", + stored: `{"redacted":["cjE=","cjI="]}`, + want: []Block{{Redacted: []byte("r1")}, {Redacted: []byte("r2")}}, + }, + { + name: "an empty encrypted value", + stored: `{"content":"step","redacted":null}`, + want: []Block{{Text: "step"}}, + }, + { + name: "blocks", + stored: `{"content":"ab","blocks":[{"text":"a","signature":"czE="},{"redacted":"cmVk","after_tool_calls":1}]}`, + want: []Block{{Text: "a", Signature: []byte("s1")}, {Redacted: []byte("red"), AfterToolCalls: 1}}, + }, + } { + var got ContentReasoning + require.NoError(t, json.Unmarshal([]byte(tc.stored), &got), tc.name) + assert.Equal(t, tc.want, got.Sequence(), tc.name) + } +} + +func TestBlocksSurviveARoundTrip(t *testing.T) { + t.Parallel() + + sent := FromBlocks([]Block{ + {Text: "a", Signature: []byte("s1")}, + {Redacted: []byte("opaque")}, + {Signature: []byte("s2"), AfterToolCalls: 1}, + }) + + data, err := json.Marshal(sent) + require.NoError(t, err) + + var got ContentReasoning + require.NoError(t, json.Unmarshal(data, &got)) + assert.Equal(t, sent.Sequence(), got.Sequence()) + assert.Equal(t, sent.Content, got.Content) +} diff --git a/llms/reasoning/catalogue_gaps_test.go b/llms/reasoning/catalogue_gaps_test.go new file mode 100644 index 000000000..8082f274a --- /dev/null +++ b/llms/reasoning/catalogue_gaps_test.go @@ -0,0 +1,573 @@ +package reasoning + +import "testing" + +func TestModelsThatReasonAreInTheCatalogue(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "magistral-medium-latest", + "mistral/magistral-medium-latest", + "magistral-small", + "qwen3.7-max", + "qwen3.5-35b-a3b", + "qwen3.5-397b-a17b", + "qwen3.6-plus", + "dashscope/qwen3.7-max", + "gemini-flash-latest", + "gemini-robotics-er-1.6-preview", + } { + if !IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = false, want true — measured reasoning at the vendor", model) + } + } +} + +func TestQwenCoderDoesNotReasonUnasked(t *testing.T) { + t.Parallel() + + if IsReasoningModel("qwen3-coder-plus") { + t.Error(`IsReasoningModel("qwen3-coder-plus") = true, want false — a plain call returns no reasoning block`) + } +} + +func TestNonChatGoogleSurfacesAreNotThinkingModels(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "gemini-2.5-pro-preview-tts", + "gemini-2.5-flash-preview-tts", + "gemini-3.5-live-translate-preview", + } { + if GeminiSupportsThinking(model) { + t.Errorf("GeminiSupportsThinking(%q) = true, want false — the endpoint refuses a chat completion", model) + } + if IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = true, want false", model) + } + } +} + +func TestQwen3HybridsAreInTheCatalogueNowThatOffIsExpressible(t *testing.T) { + t.Parallel() + + for _, model := range []string{"qwen3-32b", "qwen3-235b-a22b", "qwen3-vl-plus"} { + if !IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = false, want true", model) + } + } + for _, model := range []string{"qwen3-coder-plus"} { + if IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = true, want false", model) + } + if !LikelyReasoningModel(model) { + t.Errorf("LikelyReasoningModel(%q) = false, want true — the hint should stay optimistic", model) + } + } +} + +func TestChatGoogleFamiliesStillThink(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gemini-2.5-flash", "gemini-2.5-pro", "gemini-3-pro", "gemma-4-26b"} { + if !GeminiSupportsThinking(model) { + t.Errorf("GeminiSupportsThinking(%q) = false, want true", model) + } + } +} + +func TestQwenTakesNoEffortOnTheWire(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "qwen3-32b", "qwen3-235b-a22b", + "qwen3.5-35b-a3b", "qwen3.7-max", "dashscope/qwen3.7-max", + } { + if AcceptsEffortWire(model) { + t.Errorf("AcceptsEffortWire(%q) = true, want false", model) + } + } +} + +func TestMeasuredModelsSplitByWhenTheyReason(t *testing.T) { + t.Parallel() + + alwaysOn := []string{ + "gpt-latest", "grok-latest", "glm-latest", "kimi-latest", + "hy4-preview", "qwen3.8-flash", "qwen3.8-max", + "ling-3.0-flash", "longcat-2.0", + } + for _, model := range alwaysOn { + if !IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = false, want true", model) + } + if ThinkingOptIn(model) { + t.Errorf("ThinkingOptIn(%q) = true, but a bare call already returns reasoning", model) + } + } + + if !IsReasoningModel("solar-pro4") { + t.Error(`IsReasoningModel("solar-pro4") = false, want true`) + } + if !ThinkingOptIn("solar-pro4") { + t.Error(`ThinkingOptIn("solar-pro4") = false, but a bare call returns no reasoning until an effort asks`) + } + + for _, model := range []string{"qwen-plus", "qwen-flash", "qwen3-max"} { + if !IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = false, want true", model) + } + if !ThinkingOptIn(model) { + t.Errorf("ThinkingOptIn(%q) = false, but a bare call returns no reasoning until the vendor flag asks", model) + } + } + + for _, model := range []string{"gpt-mini-latest", "qwen3-coder-plus"} { + if IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = true, but neither a bare call nor an effort returns reasoning", model) + } + } +} + +func TestModelsMeasuredNotToReasonStayOut(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + want bool + }{ + {"deepseek-chat-v3-0324", false}, + {"deepseek-chat-v3.1", true}, + {"minimax-m2-her", false}, + {"minimax-m2", true}, + {"minimax-m2.7", true}, + {"aion-rp-llama-3.1-8b", false}, + {"aion-2.0", true}, + {"aion-3.0", true}, + {"gemini-2.5-flash-image", false}, + {"gemini-2.5-flash", true}, + } { + if got := IsReasoningModel(tc.model); got != tc.want { + t.Errorf("IsReasoningModel(%q) = %v, want %v", tc.model, got, tc.want) + } + } +} + +func TestMandatoryThinkingCannotBeDisabled(t *testing.T) { + t.Parallel() + + for _, model := range []string{"glm-5.3", "glm-5.3-flash"} { + if got := ResolveOff(model, ProviderOpenAI); got != OffUnsupported { + t.Errorf("ResolveOff(%q) = %v, want OffUnsupported: the vendor answers "+ + "\"Reasoning is mandatory\" to an explicit disable", model, got) + } + } + for _, model := range []string{"glm-4.6", "glm-5"} { + if got := ResolveOff(model, ProviderOpenAI); got == OffUnsupported { + t.Errorf("ResolveOff(%q) = OffUnsupported, but this generation was never measured to refuse a disable", model) + } + } +} + +func TestGoogleSurfacesThatRefuseThinkingStayOut(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "gemini-2.5-flash-preview-tts", + "gemini-2.5-pro-preview-tts", + "gemini-3.1-flash-tts-preview", + "gemini-3.5-transcribe", + "gemini-3.5-transcribe-live", + } { + if GeminiSupportsThinking(model) { + t.Errorf("GeminiSupportsThinking(%q) = true, but the vendor answers "+ + "\"Thinking level is not supported for this model\"", model) + } + } + + for _, model := range []string{"gemini-2.5-flash", "gemini-3.5-flash", "gemini-2.5-pro"} { + if !GeminiSupportsThinking(model) { + t.Errorf("GeminiSupportsThinking(%q) = false, want true", model) + } + } +} + +func TestDeepSeekV31ReasonsOnlyWhenAsked(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "deepseek-v3.1", "deepseek-chat-v3.1", "deepseek-v3.1-terminus", + } { + if !IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = false, but an effort returns reasoning", model) + } + if !ThinkingOptIn(model) { + t.Errorf("ThinkingOptIn(%q) = false, but a bare call returns none", model) + } + } + + for _, model := range []string{"deepseek-v3", "deepseek-v3-0324", "deepseek-chat-v3-0324"} { + if IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = true, but it answers zero both ways", model) + } + } +} + +func TestDeepSeekWaitsToBeAskedFromV31ThroughV32Only(t *testing.T) { + t.Parallel() + + for model, want := range map[string]bool{ + "deepseek-v3": false, + "deepseek-v3.1": true, + "deepseek-v3.2": true, + "deepseek.v3.2": true, + "us.deepseek.v3.2": true, + "deepseek-v3.2-exp": true, + "deepseek-v4-flash": false, + "deepseek-v4-pro": false, + } { + if got := ThinkingOptIn(model); got != want { + t.Errorf("ThinkingOptIn(%q) = %v, want %v", model, got, want) + } + } +} + +func TestGrokModelsThatTakeNoEffortOnTheWire(t *testing.T) { + t.Parallel() + + for _, model := range []string{"grok-code-fast-1", "grok-code-fast", "grok-4.20", "grok-build-0.1"} { + if AcceptsEffortWire(model) { + t.Errorf("AcceptsEffortWire(%q) = true, but the vendor answers "+ + "\"does not support parameter reasoningEffort\" to any effort", model) + } + } + + for _, model := range []string{"grok-4", "grok-4.3", "grok-3-mini", "grok-4-1-fast-reasoning"} { + if !AcceptsEffortWire(model) { + t.Errorf("AcceptsEffortWire(%q) = false, but the vendor accepts an effort", model) + } + } +} + +func TestGrokGenerationsThatCannotStopThinking(t *testing.T) { + t.Parallel() + + for _, model := range []string{"grok-4.5", "grok-4.5-latest", "grok-4.6", "grok-4.7"} { + if got := ResolveOff(model, ProviderOpenAI); got != OffUnsupported { + t.Errorf("ResolveOff(%q) = %v, want OffUnsupported: the vendor answers "+ + "\"This model does not support reasoning_effort value none\"", model, got) + } + } + + for _, model := range []string{"grok-4", "grok-4.3", "grok-3-mini"} { + if got := ResolveOff(model, ProviderOpenAI); got == OffUnsupported { + t.Errorf("ResolveOff(%q) = OffUnsupported, but the vendor accepts an explicit off", model) + } + } +} + +func TestMiniMaxM2CannotStopThinking(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "minimax-m2", "minimax-m2.1", "minimax-m2.5", "minimax-m2.7", + "minimax-m2.7-highspeed", "minimax.minimax-m2.5", + } { + if got := ResolveOff(model, ProviderOpenAI); got != OffUnsupported { + t.Errorf("ResolveOff(%q) = %v, want OffUnsupported: the vendor answers "+ + "\"Reasoning is mandatory for this endpoint and cannot be disabled\", "+ + "and the native route keeps thinking regardless", model, got) + } + } + + if got := ResolveOff("minimax-m3", ProviderOpenAI); got == OffUnsupported { + t.Error(`ResolveOff("minimax-m3") = OffUnsupported, but an explicit off returns no reasoning`) + } +} + +func TestGLMLatestCannotStopThinking(t *testing.T) { + t.Parallel() + + if got := ResolveOff("glm-latest", ProviderOpenAI); got != OffUnsupported { + t.Errorf("ResolveOff(\"glm-latest\") = %v, want OffUnsupported: an explicit off "+ + "still returns reasoning, and the alias points at the mandatory 5.3 line", got) + } + + for _, model := range []string{"glm-4.6", "glm-5", "glm-5.1", "glm-5.2"} { + if got := ResolveOff(model, ProviderOpenAI); got == OffUnsupported { + t.Errorf("ResolveOff(%q) = OffUnsupported, but an explicit off returns no reasoning", model) + } + } +} + +func TestKimiTakesEffortOnlyFromK3AndNotAlwaysAnOff(t *testing.T) { + t.Parallel() + + for _, model := range []string{"kimi-k2.5", "kimi-k2.6", "kimi-k2.7-code", "kimi-k2-thinking"} { + if AcceptsEffortWire(model) { + t.Errorf("AcceptsEffortWire(%q) = true, but Moonshot documents reasoning_effort for kimi-k3 only", model) + } + } + if !AcceptsEffortWire("kimi-k3") { + t.Error(`AcceptsEffortWire("kimi-k3") = false, but kimi-k3 takes low, high and max`) + } + + for _, model := range []string{"kimi-k2-thinking", "kimi-k2.7-code", "kimi-k2.7-code-highspeed"} { + if got := ResolveOff(model, ProviderOpenAI); got != OffUnsupported { + t.Errorf("ResolveOff(%q) = %v, want OffUnsupported: the vendor refuses an explicit off", model, got) + } + } + + for _, model := range []string{"kimi-k2.5", "kimi-k2.6"} { + if got := ResolveOff(model, ProviderOpenAI); got == OffUnsupported { + t.Errorf("ResolveOff(%q) = OffUnsupported, but an explicit off returns no reasoning", model) + } + } +} + +func TestNonChatNvidiaSurfacesAreNotReasoningModels(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "XiaomiMiMo/MiMo-V2.5-tts", "XiaomiMiMo/MiMo-V2.5-tts-voiceclone", + "XiaomiMiMo/MiMo-V2.5-tts-voicedesign", + "nvidia/Nemotron-3-Embed-8B", "nvidia/Nemotron-3-Embed-1B-BF16", + "nvidia/llama-nemotron-embed-vl-1b-v2", "nvidia/llama-nemotron-rerank-vl-1b-v2", + "nvidia/Nemotron-3.5-ASR-Streaming-Multilingual-0.6b", + "nvidia/Nemotron-Content-Safety-3.5", "nvidia/nemotron-3.5-content-safety", + } { + if IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = true, but the route serves no chat completion", model) + } + } + + for _, model := range []string{ + "XiaomiMiMo/MiMo-V2.5", + "nvidia/NVIDIA-Nemotron-Nano-9B-v2", "nvidia/nemotron-3-super-120b-a12b", + "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning", "nvidia.nemotron-nano-9b-v2", + } { + if !IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = false, but the chat route still reasons", model) + } + } +} + +func TestMistralAliasesOfTheSameModelAgree(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "mistral-medium-latest", "mistral-medium-2604", "mistral-medium", "mistral-medium-3-5", + "mistral-small-latest", "mistral-small-2603", "mistralai/mistral-medium-latest", + } { + if !IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = false, but the vendor reasons on an explicit effort", model) + } + if !ThinkingOptIn(model) { + t.Errorf("ThinkingOptIn(%q) = false, but a bare call returns no reasoning", model) + } + } + + for _, model := range []string{ + "mistral-medium-2505", "mistral-medium-2508", "mistral-large-latest", "mistral-large-2512", + } { + if IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = true, but the vendor answers 400 reasoning_effort is not enabled", model) + } + } +} + +func TestMagistralExpressesItsOffByOmission(t *testing.T) { + t.Parallel() + + for _, model := range []string{"magistral-medium-latest", "magistral-small-latest", "mistral/magistral-medium-latest"} { + if !ThinkingOptIn(model) { + t.Errorf("ThinkingOptIn(%q) = false, but a bare call returns no reasoning", model) + } + if got := ResolveOff(model, ProviderOpenAI); got != OffOmit { + t.Errorf("ResolveOff(%q) = %v, want OffOmit: the none token starts a think block instead of stopping one", model, got) + } + } +} + +func TestGPTOSSCannotStopReasoning(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "gpt-oss-120b", "gpt-oss-20b", "openai/gpt-oss-120b", + "openai.gpt-oss-120b-1:0", "gpt-oss-safeguard-20b", + } { + if got := ResolveOff(model, ProviderOpenAI); got != OffUnsupported { + t.Errorf("ResolveOff(%q) = %v, want OffUnsupported: an explicit off still returns reasoning", model, got) + } + } +} + +func TestOllamaTagSpellingResolvesLikeTheHyphenOne(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gpt-oss:120b", "gpt-oss:20b", "ollama_cloud/gpt-oss:120b"} { + if !IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = false, but the hyphen spelling of the same model is true", model) + } + if got := ResolveOff(model, ProviderOpenAI); got != OffUnsupported { + t.Errorf("ResolveOff(%q) = %v, want OffUnsupported like the hyphen spelling", model, got) + } + } +} + +func TestFamiliesThatRefuseAnExplicitOff(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "aion-2.0", "aion-3.0", "aion-3.0-mini", + "step-3.5-flash", "step-3.7-flash", + "reka-flash-3", "fugu-ultra", "nex-n2-mini", "nex-n2-pro", + "arcee-ai/trinity-large-thinking", + } { + if got := ResolveOff(model, ProviderOpenAI); got != OffUnsupported { + t.Errorf("ResolveOff(%q) = %v, want OffUnsupported: the door refuses or ignores an explicit off", model, got) + } + } + + if IsReasoningModel("aion-rp-llama-3.1-8b") { + t.Error("aion-rp is not a reasoning model and must stay out of the mandatory set") + } +} + +func TestFamiliesMeasuredAgainstTheirBareCall(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "lfm-2.5-2.6b", "liquid/lfm-2.5-2.6b:free", "seed-2-1-turbo", "bytedance-seed/seed-2-1-turbo", + "inkling", "inkling-small", "thinkingmachines/inkling", "openrouter/thinkingmachines/inkling-small:free", + } { + if !IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = false, but a bare call already returns a reasoning block", model) + } + if ThinkingOptIn(model) { + t.Errorf("ThinkingOptIn(%q) = true, but the model reasons without being asked", model) + } + } + + if got := ResolveOff("lfm-2.5-2.6b", ProviderOpenAI); got != OffUnsupported { + t.Errorf("ResolveOff(lfm-2.5) = %v, want OffUnsupported: the door answers 400 on an explicit off", got) + } + if got := ResolveOff("seed-2-1-turbo", ProviderOpenAI); got != OffEffortNone { + t.Errorf("ResolveOff(seed-2-1-turbo) = %v, want OffEffortNone: the off returns no reasoning", got) + } + + if !ThinkingOptIn("ernie-4.5-vl-424b-a47b") { + t.Error("ThinkingOptIn(ernie-4.5) = false, but a bare call returns no reasoning and an effort turns it on") + } + + if got := ResolveOff("thinkingmachines/inkling", ProviderOpenAI); got != OffEffortNone { + t.Errorf("ResolveOff(inkling) = %v, want OffEffortNone: the off returns no reasoning", got) + } +} + +func TestTheThinkingMarkerNeedsAWordBoundary(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "kimi-k2-thinking", "qwen3-30b-a3b-thinking-2507", "Qwen3-235B-A22B-Thinking-2507", + "arcee-ai/trinity-large-thinking", "lfm-2-thinking", + } { + if !ThinkingMarkedInName(model) { + t.Errorf("ThinkingMarkedInName(%q) = false, but the name carries the marker as its own token", model) + } + } + + for _, model := range []string{ + "thinkingmachines/inkling", "openrouter/thinkingmachines/inkling-small:free", + "gpt-5.4", "claude-sonnet-4-5", + } { + if ThinkingMarkedInName(model) { + t.Errorf("ThinkingMarkedInName(%q) = true, but the marker only appears inside a longer word", model) + } + } +} + +func TestDeepSeekR1CannotStopReasoning(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "deepseek-r1", "deepseek-r1-0528", "deepseek/deepseek-r1", "deepseek-reasoner", + "deepseek-ai/DeepSeek-R1-Turbo", "azure/deepseek-r1", + "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", + } { + if got := ResolveOff(model, ProviderOpenAI); got != OffUnsupported { + t.Errorf("ResolveOff(%q) = %v, want OffUnsupported: the off is either refused or ignored", model, got) + } + } + + for _, model := range []string{"deepseek-v3.1", "deepseek-v3.2", "deepseek-chat-v3.1"} { + if got := ResolveOff(model, ProviderOpenAI); got == OffUnsupported { + t.Errorf("ResolveOff(%q) = OffUnsupported, but the hybrids reason only when asked", model) + } + } +} + +func TestEveryChatSpellingOfTheGPTLineAgrees(t *testing.T) { + t.Parallel() + + spellings := []string{ + "gpt-5-chat", "gpt-5-chat-latest", "gpt-5.1-chat-latest", "gpt-5.2-chat", + "gpt-5.2-chat-latest", "gpt-5.3-chat-latest", "gpt-chat-latest", + "openai/gpt-5.2-chat", "azure/gpt-5-chat", + } + for _, model := range spellings { + if IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = true, but the chat variants answer without reasoning", model) + } + if caps := OpenAIReasoningCapsFor(model); caps.Known { + t.Errorf("OpenAIReasoningCapsFor(%q).Known = true, so the door would pin the caller's temperature", model) + } + } + + for _, model := range []string{"deepseek-chat-v3.1", "deepseek-chat-v3.2", "gpt-5.2", "gpt-5.4"} { + if !IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = false: the chat filter reached past the GPT chat variants", model) + } + } +} + +func TestTheMistralListingNamesWeMissed(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "mistral-vibe-cli-fast", "mistral-vibe-cli-latest", "mistral-vibe-cli-with-tools", + } { + if !IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = false, but the vendor reports reasoning and a live "+ + "call with effort returns it", model) + } + if !ThinkingOptIn(model) { + t.Errorf("ThinkingOptIn(%q) = false, but a bare call returns no reasoning", model) + } + } + + if !IsReasoningModel("zai-glm-5-2") { + t.Error("IsReasoningModel(\"zai-glm-5-2\") = false, but it is the same model as glm-5-2 " + + "under the spelling Mistral serves it") + } + if IsReasoningModel("zai-glm-5-2") != IsReasoningModel("glm-5-2") { + t.Error("the two live spellings of one model disagree") + } +} + +func TestAliasNamesTheVendorListingsCarry(t *testing.T) { + t.Parallel() + + if !IsReasoningModel("labs-leanstral-1-5") || !IsReasoningModel("labs-leanstral-1-5-1") { + t.Error("the Mistral listing marks labs-leanstral as reasoning, and the drift test " + + "carries it as an accounted divergence only because the vendor will not serve it") + } + + if !IsReasoningModel("glm-flash-latest") { + t.Error("glm-flash-latest is the alias of glm-5.3-flash, which reasons") + } + if got := ResolveOff("glm-flash-latest", ProviderOpenAI); got != OffUnsupported { + t.Errorf("ResolveOff(glm-flash-latest) = %v, want unsupported: its target answers "+ + "an explicit disable with 159 characters of reasoning", got) + } +} diff --git a/llms/reasoning/claude_budget_test.go b/llms/reasoning/claude_budget_test.go new file mode 100644 index 000000000..328114abf --- /dev/null +++ b/llms/reasoning/claude_budget_test.go @@ -0,0 +1,53 @@ +package reasoning_test + +import ( + "testing" + + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func TestClaudeClampBudget(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + model string + budget int + want int + }{ + {"a budget model is raised to the floor", "claude-sonnet-4-5", 682, 1024}, + {"one below the floor is raised", "claude-sonnet-4-5", 1023, 1024}, + {"the floor itself passes", "claude-sonnet-4-5", 1024, 1024}, + {"a larger budget passes", "claude-sonnet-4-5", 4096, 4096}, + {"a dual model is raised too", "claude-opus-4-6", 500, 1024}, + {"bedrock ids resolve the same", "us.anthropic.claude-sonnet-4-5-20250929-v1:0", 341, 1024}, + {"thinking off passes through", "claude-sonnet-4-5", 0, 0}, + {"an adaptive-only model never sends a budget", "claude-opus-4-8", 341, 341}, + {"a non-Claude model is left alone", "gpt-oss-120b", 341, 341}, + } { + if got := reasoning.ClaudeClampBudget(tc.model, tc.budget); got != tc.want { + t.Errorf("%s: ClaudeClampBudget(%q, %d) = %d, want %d", tc.name, tc.model, tc.budget, got, tc.want) + } + } +} + +func TestClaudeMaxTokensForBudget(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + budget int + maxTokens int + want int + }{ + {"a tight ceiling is raised to twice the budget", 1024, 512, 2048}, + {"a ceiling equal to the budget still leaves no room", 1024, 1024, 2048}, + {"a roomy ceiling is kept", 1024, 8192, 8192}, + {"no budget leaves the ceiling alone", 0, 512, 512}, + } { + if got := reasoning.ClaudeMaxTokensForBudget(tc.budget, tc.maxTokens); got != tc.want { + t.Errorf("%s: ClaudeMaxTokensForBudget(%d, %d) = %d, want %d", + tc.name, tc.budget, tc.maxTokens, got, tc.want) + } + } +} diff --git a/llms/reasoning/claude_capability.go b/llms/reasoning/claude_capability.go index 4650e4a36..c72a11cf3 100644 --- a/llms/reasoning/claude_capability.go +++ b/llms/reasoning/claude_capability.go @@ -1,6 +1,10 @@ package reasoning -import "strings" +import ( + "slices" + "strconv" + "strings" +) // ClaudeReasoningKind classifies how a Claude model accepts extended thinking. // It is the single source of truth for adaptive-vs-budget thinking and whether @@ -16,12 +20,11 @@ const ( // behavior so an unclassified model never regresses. ClaudeReasoningUnknown ClaudeReasoningKind = iota // ClaudeReasoningAdaptiveOnly is the newest generation (Opus 4.7/4.8/5, - // Sonnet 5, Fable 5, Mythos 5): it accepts thinking.type=adaptive + - // output_config only, and rejects budget_tokens and temperature/top_p with a 400. + // Sonnet 5, Fable 5, Mythos 5): it is sent thinking.type=adaptive and never + // budget_tokens. ClaudeReasoningAdaptiveOnly - // ClaudeReasoningAdaptiveAndBudget is the transitional generation (Opus 4.6, - // Sonnet 4.6): it accepts both adaptive and budget thinking and permits - // sampling params. + // ClaudeReasoningAdaptiveAndBudget accepts both adaptive and budget thinking + // (Opus 4.6, Sonnet 4.6, Mythos Preview). ClaudeReasoningAdaptiveAndBudget // ClaudeReasoningBudgetOnly is the extended-thinking generation before // adaptive existed (Opus 4.5, Sonnet 4.5, Haiku 4.5): it accepts @@ -37,14 +40,16 @@ var ( adaptiveOnlyClaude = []string{ "claude-opus-4-7", "claude-opus-4-8", "claude-opus-5", "claude-sonnet-5", "claude-fable-5", "claude-mythos-5", + "claude-opus-latest", "claude-sonnet-latest", "claude-fable-latest", } dualClaude = []string{ - "claude-opus-4-6", "claude-sonnet-4-6", + "claude-opus-4-6", "claude-sonnet-4-6", "claude-mythos-preview", } budgetOnlyClaude = []string{ - "claude-opus-4-5", - "claude-sonnet-4-5", - "claude-haiku-4-5", "claude-haiku-4.5", + "claude-opus-4-5", "claude-opus-4-1", "claude-opus-4-0", "claude-opus-4-2025", + "claude-sonnet-4-5", "claude-sonnet-4-0", "claude-sonnet-4-2025", + "claude-haiku-4-5", "claude-haiku-latest", + "claude-3-7", } ) @@ -52,7 +57,7 @@ var ( // case-insensitive and substring-based so provider/region prefixes and // -vN:0 suffixes do not affect the result. func ClaudeReasoningKindFor(model string) ClaudeReasoningKind { - m := strings.ToLower(model) + m := canonicalClaude(model) if containsAny(m, adaptiveOnlyClaude) { return ClaudeReasoningAdaptiveOnly } @@ -80,55 +85,252 @@ func ClaudeSupportsThinking(model string) bool { // with effort xhigh/max on Opus 5, a constraint this package does not model // because this SDK never sends effort alongside a disable request). var ( - alwaysOnClaude = []string{"claude-fable-5", "claude-mythos-5"} - defaultOnClaude = []string{"claude-opus-5", "claude-sonnet-5", "claude-fable-5", "claude-mythos-5"} + alwaysOnClaude = []string{ + "claude-fable-5", "claude-mythos-5", "claude-mythos-preview", + "claude-fable-latest", + } + defaultOnClaude = []string{ + "claude-opus-5", "claude-sonnet-5", + "claude-fable-5", "claude-mythos-5", "claude-mythos-preview", + "claude-opus-latest", "claude-sonnet-latest", "claude-fable-latest", + } ) -// ClaudeThinkingAlwaysOn reports whether the model's thinking cannot be disabled -// (Fable 5 / Mythos 5 — an explicit disable returns 400). +// ClaudeThinkingAlwaysOn reports whether the model's thinking cannot be disabled, +// so an explicit disable has to be refused rather than sent. func ClaudeThinkingAlwaysOn(model string) bool { - return containsAny(strings.ToLower(model), alwaysOnClaude) + return containsAny(canonicalClaude(model), alwaysOnClaude) } // ClaudeThinkingDefaultsOn reports whether the model thinks when thinking is // omitted, so disabling it requires an explicit disable rather than omission. func ClaudeThinkingDefaultsOn(model string) bool { - return containsAny(strings.ToLower(model), defaultOnClaude) + return containsAny(canonicalClaude(model), defaultOnClaude) +} + +var claudeThinkingObjectRoutes = []string{"anthropic", "bedrock", "vertex_ai"} + +// ClaudeThinkingObjectRoute reports whether a Claude name on an OpenAI-shaped +// door is bare or carries a LiteLLM route that passes Anthropic's thinking +// object on to a vendor that documents it. +func ClaudeThinkingObjectRoute(model string) bool { + route, _, prefixed := strings.Cut(model, "/") + return !prefixed || slices.Contains(claudeThinkingObjectRoutes, route) +} + +// claudeEffortsByKind lists the effort levels each generation accepts. +var claudeEffortsByKind = map[ClaudeReasoningKind][]string{ + ClaudeReasoningAdaptiveOnly: {"low", "medium", "high", "xhigh", "max"}, + ClaudeReasoningAdaptiveAndBudget: {"low", "medium", "high", "max"}, + ClaudeReasoningBudgetOnly: {"low", "medium", "high"}, +} + +var bedrockTopEfforts = map[string][]string{ + "xhigh": {"claude-opus-5"}, + "max": {"claude-opus-4-6", "claude-sonnet-4-6", "claude-opus-5"}, +} + +func claudeEffortsOn(model string, p Provider) []string { + accepted := claudeEffortsByKind[ClaudeReasoningKindFor(model)] + if p != ProviderBedrock { + return accepted + } + served := make([]string, 0, len(accepted)) + for _, level := range accepted { + if families, gated := bedrockTopEfforts[level]; gated && !claudeNamedIn(model, families) { + continue + } + served = append(served, level) + } + return served +} + +func claudeNamedIn(model string, families []string) bool { + for _, form := range modelSpellings(model) { + name := canonicalClaude(form) + for _, family := range families { + if hasGeneration(name, family) { + return true + } + } + } + return false +} + +// ClaudeEffortsFor returns the effort levels the model's generation accepts on +// the given provider, or nil for a model this package does not classify. +func ClaudeEffortsFor(model string, p Provider) []string { + kind := ClaudeReasoningKindFor(model) + if kind == ClaudeReasoningBudgetOnly && !ClaudeSupportsEffortWithBudget(model, p) { + return nil + } + return slices.Clone(claudeEffortsOn(model, p)) +} + +var claudeEffortRank = map[string]int{"minimal": 1, "low": 2, "medium": 3, "high": 4, "xhigh": 5, "max": 6} + +// ClaudeClampEffort moves an effort the model does not accept on the provider to +// the nearest one it does: down to the highest accepted level below it, or up +// to the lowest accepted level when every one of them is higher. An +// unclassified model and an unknown level pass through unchanged. +func ClaudeClampEffort(model, effort string, p Provider) string { + want, ok := claudeEffortRank[effort] + if !ok { + return effort + } + accepted := claudeEffortsOn(model, p) + if len(accepted) == 0 || slices.Contains(accepted, effort) { + return effort + } + var below, lowest string + var belowRank, lowestRank int + for _, level := range accepted { + rank := claudeEffortRank[level] + if rank <= want && rank > belowRank { + below, belowRank = level, rank + } + if lowestRank == 0 || rank < lowestRank { + lowest, lowestRank = level, rank + } + } + if below == "" { + return lowest + } + return below +} + +// ClaudeMinThinkingBudget is the smallest budget_tokens Anthropic accepts. +const ClaudeMinThinkingBudget = 1024 + +// ClaudeSpendsThinkingBudget reports whether the model pays for thinking out of a +// budget that the answer limit has to exceed. +func ClaudeSpendsThinkingBudget(model string) bool { + switch ClaudeReasoningKindFor(model) { + case ClaudeReasoningBudgetOnly, ClaudeReasoningAdaptiveAndBudget: + return true + case ClaudeReasoningUnknown, ClaudeReasoningAdaptiveOnly: + return false + } + return false +} + +// ClaudeClampBudget raises a budget below the vendor floor up to it, and leaves +// every other model and a zero budget untouched. +func ClaudeClampBudget(model string, budget int) int { + if budget <= 0 || budget >= ClaudeMinThinkingBudget { + return budget + } + switch ClaudeReasoningKindFor(model) { + case ClaudeReasoningBudgetOnly, ClaudeReasoningAdaptiveAndBudget: + return ClaudeMinThinkingBudget + case ClaudeReasoningUnknown, ClaudeReasoningAdaptiveOnly: + return budget + } + return budget +} + +// ClaudeMaxTokensForBudget returns a ceiling that still leaves the answer room +// once the budget is spent. +func ClaudeMaxTokensForBudget(budget, maxTokens int) int { + if budget <= 0 || maxTokens > budget { + return maxTokens + } + return budget * 2 +} + +var budgetInterleavingClaude = []string{"claude-opus-4-5", "claude-sonnet-4-5", "claude-sonnet-4-6", "claude-opus-4-1"} + +// ClaudeInterleavesOnBudget reports whether budget thinking on the model +// interleaves with tool calls once the interleaved-thinking beta is on. +func ClaudeInterleavesOnBudget(model string) bool { + if claudeNamedIn(model, budgetInterleavingClaude) { + return true + } + for _, form := range modelSpellings(model) { + name := canonicalClaude(form) + for _, first := range []string{"claude-opus-4", "claude-sonnet-4"} { + rest, ok := strings.CutPrefix(name, first) + if ok && (rest == "" || strings.HasPrefix(rest, "-0") || strings.HasPrefix(rest, "-2025")) { + return true + } + } + } + return false } // budgetEffortClaude are budget-thinking models that also accept an effort // output_config alongside manual thinking (introduced with Opus 4.5). Newer // generations use adaptive thinking, where effort is always available. -var budgetEffortClaude = []string{"claude-opus-4-5"} +var budgetEffortClaude = []string{ + "claude-opus-4-5", "claude-mythos-preview", + "claude-opus-4-6", "claude-sonnet-4-6", +} + +var bedrockRejectsBudgetEffortClaude = []string{"claude-opus-4-5"} // ClaudeSupportsEffortWithBudget reports whether the model accepts -// output_config.effort together with manual (budget) thinking, so the effort is -// not lost on the budget path for models that honor it. -func ClaudeSupportsEffortWithBudget(model string) bool { - return containsAny(strings.ToLower(model), budgetEffortClaude) +// output_config.effort together with manual (budget) thinking on the given +// provider. +func ClaudeSupportsEffortWithBudget(model string, p Provider) bool { + m := canonicalClaude(model) + if !containsAny(m, budgetEffortClaude) { + return false + } + return p != ProviderBedrock || !containsAny(m, bedrockRejectsBudgetEffortClaude) +} + +var noPrefillClaude = []string{ + "claude-opus-4-6", "claude-sonnet-4-6", "claude-mythos-preview", + "claude-opus-4-7", "claude-opus-4-8", + "claude-opus-5", "claude-sonnet-5", "claude-fable-5", "claude-mythos-5", +} + +// ClaudeRejectsAssistantPrefill reports whether the model rejects a prefilled +// assistant response outright, so the request must not be sent. +func ClaudeRejectsAssistantPrefill(model string) bool { + return containsAny(canonicalClaude(model), noPrefillClaude) } // mutuallyExclusiveSamplingClaude models reject temperature and top_p set // together (only one may be provided). -var mutuallyExclusiveSamplingClaude = []string{"claude-haiku-4-5", "claude-haiku-4.5"} +var mutuallyExclusiveSamplingClaude = []string{ + "claude-haiku-4-5", "claude-sonnet-4-5", "claude-opus-4-5", + "claude-sonnet-4-6", "claude-opus-4-6", +} // ClaudeMutuallyExclusiveSampling reports whether the model returns a 400 when // temperature and top_p are set together, so the caller must send at most one. func ClaudeMutuallyExclusiveSampling(model string) bool { - return containsAny(strings.ToLower(model), mutuallyExclusiveSamplingClaude) + return containsAny(canonicalClaude(model), mutuallyExclusiveSamplingClaude) } // legacyNoStructuredClaude are Claude generations known to predate structured // outputs (the output_config.format JSON Schema mode). A structured-output request // on them is rejected locally rather than sent for a guaranteed 4xx. -var legacyNoStructuredClaude = []string{"claude-2", "claude-instant", "claude-3-", "claude-3."} +var legacyNoStructuredClaude = []string{ + "claude-2", "claude-v2", "claude-instant", + "claude-3-", + "claude-opus-4-1", + "claude-opus-4-0", "claude-opus-4-20", + "claude-sonnet-4-0", "claude-sonnet-4-20", +} // ClaudeSupportsStructuredOutput reports whether the model can be asked for schema // constrained output. Known-legacy families are rejected; every current model and // any unrecognized (newer) name passes through so the provider API stays the final // arbiter and the local table never blocks a future model. func ClaudeSupportsStructuredOutput(model string) bool { - return !containsAny(strings.ToLower(model), legacyNoStructuredClaude) + return !containsAny(canonicalClaude(model), legacyNoStructuredClaude) +} + +var bedrockStructuredClaude = []string{ + "claude-opus-4-5", "claude-opus-4-6", "claude-sonnet-4-5", "claude-sonnet-4-6", "claude-haiku-4-5", +} + +// ClaudeSupportsStructuredOutputOnBedrock reports whether Amazon Bedrock serves +// schema constrained output for the Claude model. +func ClaudeSupportsStructuredOutputOnBedrock(model string) bool { + return claudeNamedIn(model, bedrockStructuredClaude) } // ResolveClaudeAdaptive returns whether to send adaptive thinking (true) or @@ -145,6 +347,9 @@ func ClaudeSupportsStructuredOutput(model string) bool { // So a currently-accepted call keeps its mechanism; only a currently-rejected // (400) combination is redirected to the mechanism the model accepts. func ResolveClaudeAdaptive(model string, adaptivePreferred bool) bool { + if ClaudePredatesAdaptive(model) { + return false + } switch ClaudeReasoningKindFor(model) { case ClaudeReasoningAdaptiveOnly: return true @@ -161,25 +366,88 @@ func ResolveClaudeAdaptive(model string, adaptivePreferred bool) bool { // adaptive request on them must not be forwarded as thinking.type=adaptive, which // these models reject with a 400. var preAdaptiveClaude = []string{ - "claude-2", "claude-instant", + "claude-2", "claude-v2", + "claude-instant", "claude-3", // claude-3, claude-3-5, claude-3-7 all predate adaptive - "claude-opus-4-1", + "claude-opus-4-0", "claude-opus-4-1", "claude-sonnet-4-0", + "claude-opus-4-20", "claude-sonnet-4-20", } // ClaudePredatesAdaptive reports whether the model is a known pre-adaptive Claude // generation, so an adaptive request must be gated (not sent verbatim) rather than // optimistically forwarded the way a genuinely newer, unclassified model is. func ClaudePredatesAdaptive(model string) bool { - return containsAny(strings.ToLower(model), preAdaptiveClaude) + return containsAny(canonicalClaude(model), preAdaptiveClaude) +} + +// rejectsSamplingClaude models are sent no temperature, top_p or top_k on any +// request, whether or not thinking is requested. +var rejectsSamplingClaude = []string{ + "claude-fable-5", "claude-mythos-5", "claude-mythos-preview", + "claude-opus-5", "claude-opus-4-8", "claude-opus-4-7", "claude-sonnet-5", + "claude-opus-latest", "claude-sonnet-latest", "claude-fable-latest", +} + +// ClaudeThinkingTopPFloor is the lowest top_p Anthropic accepts while the model +// is thinking. +const ClaudeThinkingTopPFloor = 0.95 + +// ClaudeKeepsTopPWhileThinking reports whether the caller's top_p survives on +// the wire once the model is thinking. +func ClaudeKeepsTopPWhileThinking(model string, topP float64) bool { + return ClaudeSupportsThinking(model) && + !ClaudeRejectsSampling(model) && + topP >= ClaudeThinkingTopPFloor } // ClaudeRejectsSampling reports whether the model rejects temperature/top_p -// outright (true only for the adaptive-only generation), so sampling params -// must be dropped even when no thinking is requested. +// outright, so sampling params must be dropped even when no thinking is +// requested. func ClaudeRejectsSampling(model string) bool { - return ClaudeReasoningKindFor(model) == ClaudeReasoningAdaptiveOnly + return containsAny(canonicalClaude(model), rejectsSamplingClaude) } +// canonicalClaude reduces a Claude identifier to the dashed form every table in +// this file is keyed on. A dotted entry added to one of them never matches. +func canonicalClaude(model string) string { + m := strings.ToLower(model) + m = strings.ReplaceAll(m, "@", "-") + var b strings.Builder + b.Grow(len(m)) + for i := range len(m) { + if m[i] == '.' && i > 0 && i+1 < len(m) && isDigit(m[i-1]) && isDigit(m[i+1]) { + b.WriteByte('-') + continue + } + b.WriteByte(m[i]) + } + return claudeTierFirst(b.String()) +} + +func claudeTierFirst(m string) string { + idx := strings.Index(m, "claude-") + if idx == -1 { + return m + } + head, rest := m[:idx+len("claude-")], m[idx+len("claude-"):] + parts := strings.Split(rest, "-") + if len(parts) < 2 || !isClaudeTier(parts[1]) { + return m + } + generation, err := strconv.Atoi(parts[0]) + if err != nil || generation < 4 { + return m + } + reordered := append([]string{parts[1], parts[0]}, parts[2:]...) + return head + strings.Join(reordered, "-") +} + +func isClaudeTier(s string) bool { + return s == "opus" || s == "sonnet" || s == "haiku" +} + +func isDigit(c byte) bool { return c >= '0' && c <= '9' } + func containsAny(s string, subs []string) bool { for _, sub := range subs { if strings.Contains(s, sub) { diff --git a/llms/reasoning/claude_capability_test.go b/llms/reasoning/claude_capability_test.go index 8b86f92d5..5c7eb50c1 100644 --- a/llms/reasoning/claude_capability_test.go +++ b/llms/reasoning/claude_capability_test.go @@ -1,6 +1,9 @@ package reasoning -import "testing" +import ( + "slices" + "testing" +) func TestClaudeReasoningKindFor(t *testing.T) { t.Parallel() @@ -8,7 +11,6 @@ func TestClaudeReasoningKindFor(t *testing.T) { model string want ClaudeReasoningKind }{ - // Adaptive-only (T1), first-party and Bedrock forms. {"claude-opus-4-7", ClaudeReasoningAdaptiveOnly}, {"claude-opus-4-8", ClaudeReasoningAdaptiveOnly}, {"us.anthropic.claude-opus-4-8", ClaudeReasoningAdaptiveOnly}, @@ -18,13 +20,20 @@ func TestClaudeReasoningKindFor(t *testing.T) { {"us.anthropic.claude-sonnet-5", ClaudeReasoningAdaptiveOnly}, {"claude-fable-5", ClaudeReasoningAdaptiveOnly}, {"claude-mythos-5", ClaudeReasoningAdaptiveOnly}, - // Dual (T2). {"claude-opus-4-6", ClaudeReasoningAdaptiveAndBudget}, {"us.anthropic.claude-sonnet-4-6", ClaudeReasoningAdaptiveAndBudget}, - // Budget-only (T3). + {"claude-mythos-preview", ClaudeReasoningAdaptiveAndBudget}, {"claude-opus-4-5-20251101", ClaudeReasoningBudgetOnly}, {"claude-sonnet-4-5-20250929", ClaudeReasoningBudgetOnly}, {"us.anthropic.claude-haiku-4-5-20251001-v1:0", ClaudeReasoningBudgetOnly}, + {"claude-3-7-sonnet-20250219", ClaudeReasoningBudgetOnly}, + {"claude-3.7-sonnet", ClaudeReasoningBudgetOnly}, + {"anthropic.claude-3-7-sonnet-20250219-v1:0", ClaudeReasoningBudgetOnly}, + {"claude-opus-4-0", ClaudeReasoningBudgetOnly}, + {"claude-opus-4-20250514", ClaudeReasoningBudgetOnly}, + {"claude-opus-4-1-20250805", ClaudeReasoningBudgetOnly}, + {"claude-sonnet-4-0", ClaudeReasoningBudgetOnly}, + {"claude-sonnet-4-20250514", ClaudeReasoningBudgetOnly}, // Unknown: no-thinking Claude, retired/non-classified, non-Claude, empty. {"claude-3-5-haiku-20241022", ClaudeReasoningUnknown}, {"claude-2.1", ClaudeReasoningUnknown}, @@ -38,6 +47,32 @@ func TestClaudeReasoningKindFor(t *testing.T) { } } +func TestClaudeEffortsFor(t *testing.T) { + t.Parallel() + cases := []struct { + model string + provider Provider + want []string + }{ + {"claude-opus-5", ProviderAnthropic, []string{"low", "medium", "high", "xhigh", "max"}}, + {"us.anthropic.claude-opus-4-7", ProviderAnthropic, []string{"low", "medium", "high", "xhigh", "max"}}, + {"claude-opus-4-6", ProviderAnthropic, []string{"low", "medium", "high", "max"}}, + {"claude-sonnet-4-6", ProviderAnthropic, []string{"low", "medium", "high", "max"}}, + {"claude-mythos-preview", ProviderAnthropic, []string{"low", "medium", "high", "max"}}, + {"claude-opus-4-5-20251101", ProviderAnthropic, []string{"low", "medium", "high"}}, + {"claude-sonnet-4-5-20250929", ProviderAnthropic, nil}, + {"us.anthropic.claude-haiku-4-5-20251001-v1:0", ProviderAnthropic, nil}, + {"gpt-5.5", ProviderAnthropic, nil}, + {"claude-opus-4-5-20251101", ProviderBedrock, nil}, + {"claude-opus-4-6", ProviderBedrock, []string{"low", "medium", "high", "max"}}, + } + for _, tc := range cases { + if got := ClaudeEffortsFor(tc.model, tc.provider); !slices.Equal(got, tc.want) { + t.Errorf("ClaudeEffortsFor(%q, %v) = %v, want %v", tc.model, tc.provider, got, tc.want) + } + } +} + func TestResolveClaudeAdaptive(t *testing.T) { t.Parallel() // (model, adaptivePreferred) -> adaptive sent. The invariant: a @@ -48,19 +83,22 @@ func TestResolveClaudeAdaptive(t *testing.T) { want bool note string }{ - // Adaptive-only: budget preference upgraded to adaptive (M1/M2/H1b). - {"claude-sonnet-5", false, true, "budget on T1 upgrades"}, - {"claude-sonnet-5", true, true, "adaptive on T1 stays"}, + // Adaptive-only: budget preference upgraded to adaptive. + {"claude-sonnet-5", false, true, "budget on an adaptive-only model upgrades"}, + {"claude-sonnet-5", true, true, "adaptive on an adaptive-only model stays"}, {"claude-opus-5", false, true, "budget on Opus 5 upgrades"}, - // Budget-only: adaptive preference downgraded to budget (M3). - {"claude-haiku-4-5", true, false, "adaptive on T3 downgrades"}, - {"claude-haiku-4-5", false, false, "budget on T3 stays"}, + // Budget-only: adaptive preference downgraded to budget. + {"claude-haiku-4-5", true, false, "adaptive on a budget-only model downgrades"}, + {"claude-haiku-4-5", false, false, "budget on a budget-only model stays"}, // Dual: caller preference honored both ways (unchanged). - {"claude-opus-4-6", true, true, "adaptive on T2 honored"}, - {"claude-opus-4-6", false, false, "budget on T2 honored"}, + {"claude-opus-4-6", true, true, "adaptive on a dual model is honored"}, + {"claude-opus-4-6", false, false, "budget on a dual model is honored"}, + {"claude-3-5-haiku", true, false, "adaptive on pre-adaptive downgrades"}, + {"claude-3-5-haiku", false, false, "budget on pre-adaptive stays"}, + {"claude-3-5-sonnet-latest", true, false, "same for the dated alias"}, // Unknown: literal pass-through (unchanged). - {"claude-3-5-haiku", true, true, "adaptive on unknown literal"}, - {"claude-3-5-haiku", false, false, "budget on unknown literal"}, + {"claude-future-9", true, true, "adaptive on unknown literal"}, + {"claude-future-9", false, false, "budget on unknown literal"}, } for _, tc := range cases { if got := ResolveClaudeAdaptive(tc.model, tc.preferAda); got != tc.want { @@ -79,9 +117,14 @@ func TestClaudeSupportsStructuredOutput(t *testing.T) { {"claude-sonnet-5", true}, {"claude-opus-5", true}, {"claude-opus-4-5", true}, + {"claude-opus-4-6", true}, + {"claude-opus-4-8", true}, {"claude-haiku-4-5", true}, {"us.anthropic.claude-sonnet-4-5-v1:0", true}, {"some-future-model", true}, // unknown passes through + {"claude-opus-4-1-20250805", false}, + {"claude-opus-4-20250514", false}, + {"us.anthropic.claude-sonnet-4-20250514-v1:0", false}, {"claude-3-5-sonnet-latest", false}, {"claude-3-7-sonnet", false}, {"claude-2.1", false}, @@ -110,6 +153,7 @@ func TestClaudeThinkingDefaultAndAlwaysOn(t *testing.T) { {"claude-opus-4-8", false, false, "defaults off"}, {"claude-fable-5", true, true, "always on, cannot disable"}, {"claude-mythos-5", true, true, "always on, cannot disable"}, + {"claude-mythos-preview", true, true, "always on, cannot disable"}, } for _, tc := range cases { if got := ClaudeThinkingDefaultsOn(tc.model); got != tc.defaultOn { @@ -130,6 +174,7 @@ func TestClaudeRejectsSampling(t *testing.T) { {"claude-sonnet-5", true}, {"claude-opus-5", true}, {"us.anthropic.claude-opus-4-8", true}, + {"claude-mythos-preview", true}, {"claude-opus-4-6", false}, {"claude-sonnet-4-5", false}, {"claude-3-5-haiku", false}, @@ -141,3 +186,110 @@ func TestClaudeRejectsSampling(t *testing.T) { } } } + +func TestClaudeRejectsAssistantPrefill(t *testing.T) { + t.Parallel() + cases := []struct { + model string + want bool + }{ + {"claude-opus-4-6", true}, + {"us.anthropic.claude-sonnet-4-6", true}, + {"claude-mythos-preview", true}, + {"claude-opus-4-7", true}, + {"claude-sonnet-5", true}, + {"claude-fable-5", true}, + {"claude-opus-4-5-20251101", false}, + {"claude-sonnet-4-5", false}, + {"claude-haiku-4-5", false}, + {"claude-3-5-sonnet", false}, + {"gpt-5.5", false}, + } + for _, tc := range cases { + if got := ClaudeRejectsAssistantPrefill(tc.model); got != tc.want { + t.Errorf("ClaudeRejectsAssistantPrefill(%q) = %v, want %v", tc.model, got, tc.want) + } + } +} + +func TestClaudeSupportsEffortWithBudget(t *testing.T) { + t.Parallel() + cases := []struct { + model string + provider Provider + want bool + }{ + {"claude-opus-4-5-20251101", ProviderAnthropic, true}, + {"us.anthropic.claude-opus-4-5-20251101-v1:0", ProviderBedrock, false}, + {"claude-mythos-preview", ProviderAnthropic, true}, + {"claude-opus-4-6", ProviderAnthropic, true}, + {"us.anthropic.claude-opus-4-6-v1", ProviderBedrock, true}, + {"us.anthropic.claude-sonnet-4-6", ProviderBedrock, true}, + {"claude-sonnet-4-5", ProviderAnthropic, false}, + {"us.anthropic.claude-sonnet-4-5-20250929-v1:0", ProviderBedrock, false}, + {"claude-haiku-4-5", ProviderAnthropic, false}, + {"claude-sonnet-5", ProviderAnthropic, false}, + } + for _, tc := range cases { + if got := ClaudeSupportsEffortWithBudget(tc.model, tc.provider); got != tc.want { + t.Errorf("ClaudeSupportsEffortWithBudget(%q, %v) = %v, want %v", tc.model, tc.provider, got, tc.want) + } + } +} + +func TestClaudePredatesAdaptive(t *testing.T) { + t.Parallel() + cases := []struct { + model string + want bool + }{ + {"claude-2.1", true}, + {"anthropic.claude-v2", true}, + {"anthropic.claude-v2:1", true}, + {"anthropic.claude-instant-v1", true}, + {"claude-3-5-haiku", true}, + {"claude-3-7-sonnet-20250219", true}, + {"claude-opus-4-1-20250805", true}, + {"claude-opus-4-20250514", true}, + {"us.anthropic.claude-sonnet-4-20250514-v1:0", true}, + {"claude-3-opus", true}, + {"claude-4-opus-20250514", true}, + {"claude-opus-4-5", false}, + {"claude-sonnet-4-5", false}, + {"claude-haiku-4-5", false}, + {"claude-opus-4-6", false}, + {"claude-sonnet-4-6", false}, + {"claude-opus-4-8", false}, + {"claude-sonnet-5", false}, + {"us.anthropic.claude-fable-5", false}, + } + for _, tc := range cases { + if got := ClaudePredatesAdaptive(tc.model); got != tc.want { + t.Errorf("ClaudePredatesAdaptive(%q) = %v, want %v", tc.model, got, tc.want) + } + } +} + +func TestClaudeMutuallyExclusiveSampling(t *testing.T) { + t.Parallel() + cases := []struct { + model string + want bool + }{ + {"claude-haiku-4-5-20251001", true}, + {"claude-sonnet-4-5-20250929", true}, + {"claude-opus-4-5-20251101", true}, + {"claude-sonnet-4-6", true}, + {"claude-opus-4-6", true}, + {"us.anthropic.claude-opus-4-6-v1", true}, + {"anthropic/claude-sonnet-4.5", true}, + {"claude-opus-4-7", false}, + {"claude-opus-5", false}, + {"gpt-5.4-mini", false}, + } + for _, tc := range cases { + if got := ClaudeMutuallyExclusiveSampling(tc.model); got != tc.want { + t.Errorf("ClaudeMutuallyExclusiveSampling(%q) = %v, want %v", tc.model, got, tc.want) + } + } +} diff --git a/llms/reasoning/claude_name_forms_test.go b/llms/reasoning/claude_name_forms_test.go new file mode 100644 index 000000000..d04a0987c --- /dev/null +++ b/llms/reasoning/claude_name_forms_test.go @@ -0,0 +1,273 @@ +package reasoning + +import ( + "slices" + "testing" +) + +func TestClaudePredicatesAgreeAcrossNameForms(t *testing.T) { + t.Parallel() + + for _, group := range [][]string{ + {"claude-opus-4-7", "claude-opus-4.7", "anthropic/claude-opus-4-7", "us.anthropic.claude-opus-4-7-v1:0"}, + {"claude-sonnet-4-5", "claude-sonnet-4.5", "anthropic/claude-sonnet-4.5", "claude-sonnet-4-5@20250514"}, + {"claude-opus-4-6", "claude-opus-4.6", "eu.anthropic.claude-opus-4-6-v1:0"}, + {"claude-haiku-4-5", "claude-haiku-4.5"}, + {"claude-sonnet-5", "claude-sonnet-5.0", "us.anthropic.claude-sonnet-5-v1:0"}, + } { + canonical := group[0] + want := struct { + kind ClaudeReasoningKind + reject bool + mutex bool + prefill bool + }{ + ClaudeReasoningKindFor(canonical), + ClaudeRejectsSampling(canonical), + ClaudeMutuallyExclusiveSampling(canonical), + ClaudeRejectsAssistantPrefill(canonical), + } + if want.kind == ClaudeReasoningUnknown { + t.Fatalf("%s must be classified for this table to mean anything", canonical) + } + + for _, form := range group[1:] { + t.Run(form, func(t *testing.T) { + t.Parallel() + if got := ClaudeReasoningKindFor(form); got != want.kind { + t.Errorf("ClaudeReasoningKindFor = %v, want %v (as %s)", got, want.kind, canonical) + } + if got := ClaudeRejectsSampling(form); got != want.reject { + t.Errorf("ClaudeRejectsSampling = %v, want %v (as %s)", got, want.reject, canonical) + } + if got := ClaudeMutuallyExclusiveSampling(form); got != want.mutex { + t.Errorf("ClaudeMutuallyExclusiveSampling = %v, want %v (as %s)", got, want.mutex, canonical) + } + if got := ClaudeRejectsAssistantPrefill(form); got != want.prefill { + t.Errorf("ClaudeRejectsAssistantPrefill = %v, want %v (as %s)", got, want.prefill, canonical) + } + }) + } + } +} + +func TestCanonicalClaudeLeavesUnrelatedDotsAlone(t *testing.T) { + t.Parallel() + + for _, tc := range []struct{ in, want string }{ + {"claude-opus-4.7", "claude-opus-4-7"}, + {"us.anthropic.claude-opus-4-7-v1:0", "us.anthropic.claude-opus-4-7-v1:0"}, + {"claude-sonnet-4@20250514", "claude-sonnet-4-20250514"}, + {"CLAUDE-Opus-4.6", "claude-opus-4-6"}, + {"gpt-4.1", "gpt-4-1"}, + } { + if got := canonicalClaude(tc.in); got != tc.want { + t.Errorf("canonicalClaude(%q) = %q, want %q", tc.in, got, tc.want) + } + } +} + +func TestDetectionSeesPlatformIdsAndDashedVersions(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + want bool + }{ + {"us.anthropic.claude-opus-5-v1:0", true}, + {"us.anthropic.claude-sonnet-4-6-v1:0", true}, + {"eu.anthropic.claude-opus-4-6-v1:0", true}, + {"claude-3-7-sonnet-20250219", true}, + {"claude-3.7-sonnet", true}, + {"claude-haiku-4-5", true}, + {"glm-4.5", true}, + {"deepseek-v3.1-terminus", true}, + {"us.amazon.titan-text-lite-v1", false}, + } { + if got := IsReasoningModel(tc.model); got != tc.want { + t.Errorf("IsReasoningModel(%q) = %v, want %v", tc.model, got, tc.want) + } + } +} + +func TestOpenAISuffixVariantsDoNotInheritTheBaseRules(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + efforts []string + }{ + {"gpt-5-pro", []string{"high"}}, + {"gpt-5.1-pro", []string{"high"}}, + {"gpt-5.2-pro", []string{"medium", "high", "xhigh"}}, + {"gpt-5.4-pro", []string{"medium", "high", "xhigh"}}, + } { + caps := OpenAIReasoningCapsFor(tc.model) + if !caps.Known || caps.CanDisable || !slices.Equal(caps.Efforts, tc.efforts) { + t.Errorf("%s: want the Pro caps (%v, not disablable), got %+v", tc.model, tc.efforts, caps) + } + } + + for _, model := range []string{"gpt-5-chat-latest", "gpt-5.2-chat-latest"} { + if caps := OpenAIReasoningCapsFor(model); caps.Known { + t.Errorf("%s: a chat variant must not be classified as a reasoning model, got %+v", model, caps) + } + if IsReasoningModel(model) { + t.Errorf("%s: a chat variant must not be detected as reasoning", model) + } + } +} + +func TestClaudeFourAliasesAreClassified(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + want bool + }{ + {"claude-opus-4-0", true}, + {"claude-sonnet-4-0", true}, + {"claude-sonnet-4@20250514", true}, + {"claude-opus-4@20250514", true}, + {"claude-opus-4-20250514", true}, + {"claude-sonnet-4-5", false}, + {"claude-sonnet-4-6", false}, + {"claude-opus-4-6", false}, + } { + if got := ClaudePredatesAdaptive(tc.model); got != tc.want { + t.Errorf("ClaudePredatesAdaptive(%q) = %v, want %v", tc.model, got, tc.want) + } + } +} + +func TestStructuredOutputGateSeesEverySpellingOfTheSameGeneration(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "claude-opus-4-0", "claude-sonnet-4-0", + "claude-opus-4@20250514", "claude-sonnet-4@20250514", + "claude-opus-4-20250514", "claude-sonnet-4-20250514", + "us.anthropic.claude-sonnet-4-0", + } { + if ClaudeSupportsStructuredOutput(model) { + t.Errorf("%q predates structured output, so it must be refused locally", model) + } + } + + for _, model := range []string{ + "claude-sonnet-4-5", "claude-opus-4-5", "claude-opus-4-6", "claude-opus-5", + } { + if !ClaudeSupportsStructuredOutput(model) { + t.Errorf("%q takes structured output", model) + } + } +} + +func TestDottedSpellingsSurviveTheirTableEntriesBeingDropped(t *testing.T) { + t.Parallel() + + if got := ClaudeReasoningKindFor("claude-haiku-4.5"); got != ClaudeReasoningBudgetOnly { + t.Errorf("ClaudeReasoningKindFor(dotted haiku) = %v, want budget-only", got) + } + if ClaudeSupportsStructuredOutput("claude-3.5-sonnet") { + t.Error("the dotted Claude 3 spelling predates structured output too") + } +} + +func TestLikelyReasoningModelIgnoresThePlatformSpelling(t *testing.T) { + t.Parallel() + + for _, pair := range [][2]string{ + {"claude-9-sonnet", "us.anthropic.claude-9-sonnet"}, + {"gpt-9", "azure.gpt-9"}, + } { + bare, platform := LikelyReasoningModel(pair[0]), LikelyReasoningModel(pair[1]) + if bare != platform { + t.Errorf("hint differs by spelling: %q = %v, %q = %v", pair[0], bare, pair[1], platform) + } + } +} + +func TestClaudePreThinkingStopsBelow37(t *testing.T) { + t.Parallel() + + for _, model := range []string{"claude-3-7-sonnet-20250219", "claude-3.7-sonnet"} { + if claudePreThinking(model) { + t.Errorf("%q is where extended thinking starts, not below it", model) + } + } + for _, model := range []string{"claude-3-5-sonnet", "claude-3.5-sonnet", "claude-2", "claude-instant-1"} { + if !claudePreThinking(model) { + t.Errorf("%q predates extended thinking", model) + } + } +} + +func TestClaudeClampEffortMovesToTheNearestAcceptedLevel(t *testing.T) { + t.Parallel() + + for _, tc := range []struct{ model, effort, want string }{ + {"claude-opus-4-7", "xhigh", "xhigh"}, + {"claude-sonnet-5", "xhigh", "xhigh"}, + {"claude-opus-4-6", "xhigh", "high"}, + {"claude-sonnet-4-6", "xhigh", "high"}, + {"claude-opus-4-5", "xhigh", "high"}, + {"claude-opus-4-5", "max", "high"}, + {"claude-haiku-4-5", "max", "high"}, + {"claude-opus-4-6", "max", "max"}, + {"claude-opus-4-6", "low", "low"}, + {"claude-opus-4-6", "minimal", "low"}, + {"claude-sonnet-5", "minimal", "low"}, + {"claude-opus-4-5", "minimal", "low"}, + {"grok-4", "minimal", "minimal"}, + {"grok-4", "xhigh", "xhigh"}, + {"claude-opus-4-6", "", ""}, + } { + if got := ClaudeClampEffort(tc.model, tc.effort, ProviderAnthropic); got != tc.want { + t.Errorf("ClaudeClampEffort(%q, %q) = %q, want %q", tc.model, tc.effort, got, tc.want) + } + } +} + +func TestBedrockServesTheTopEffortsOnlyWhereItsGuideSays(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + want []string + }{ + {"us.anthropic.claude-opus-5", []string{"low", "medium", "high", "xhigh", "max"}}, + {"us.anthropic.claude-opus-4-6-v1", []string{"low", "medium", "high", "max"}}, + {"us.anthropic.claude-sonnet-4-6", []string{"low", "medium", "high", "max"}}, + {"us.anthropic.claude-sonnet-5", []string{"low", "medium", "high"}}, + {"us.anthropic.claude-opus-4-7", []string{"low", "medium", "high"}}, + {"us.anthropic.claude-opus-4-8", []string{"low", "medium", "high"}}, + {"us.anthropic.claude-fable-5", []string{"low", "medium", "high"}}, + {"us.anthropic.claude-fable-5-1", []string{"low", "medium", "high"}}, + } { + if got := ClaudeEffortsFor(tc.model, ProviderBedrock); !slices.Equal(got, tc.want) { + t.Errorf("ClaudeEffortsFor(%q, Bedrock) = %v, want %v", tc.model, got, tc.want) + } + } + + for _, tc := range []struct{ model, effort, want string }{ + {"us.anthropic.claude-sonnet-5", "xhigh", "high"}, + {"us.anthropic.claude-sonnet-5", "max", "high"}, + {"us.anthropic.claude-opus-4-7", "max", "high"}, + {"us.anthropic.claude-fable-5-1", "xhigh", "high"}, + {"us.anthropic.claude-opus-4-6-v1", "xhigh", "high"}, + {"us.anthropic.claude-opus-4-6-v1", "max", "max"}, + {"us.anthropic.claude-opus-5", "xhigh", "xhigh"}, + {"us.anthropic.claude-opus-5", "max", "max"}, + } { + if got := ClaudeClampEffort(tc.model, tc.effort, ProviderBedrock); got != tc.want { + t.Errorf("ClaudeClampEffort(%q, %q, Bedrock) = %q, want %q", tc.model, tc.effort, got, tc.want) + } + } + + for _, model := range []string{"claude-sonnet-5", "claude-opus-4-7", "claude-fable-5-1"} { + if got := ClaudeClampEffort(model, "xhigh", ProviderAnthropic); got != "xhigh" { + t.Errorf("%s on Anthropic keeps xhigh, got %q", model, got) + } + } +} diff --git a/llms/reasoning/claude_top_p_test.go b/llms/reasoning/claude_top_p_test.go new file mode 100644 index 000000000..89ad4e2a8 --- /dev/null +++ b/llms/reasoning/claude_top_p_test.go @@ -0,0 +1,31 @@ +package reasoning + +import "testing" + +func TestClaudeKeepsTopPWhileThinking(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + topP float64 + want bool + }{ + {"claude-sonnet-4-5", 0.97, true}, + {"claude-sonnet-4-5", 0.95, true}, + {"claude-sonnet-4-5", 0.94, false}, + {"claude-sonnet-4-5", 0.5, false}, + {"claude-opus-4-6", 0.97, true}, + {"anthropic/claude-sonnet-4-5", 0.97, true}, + {"claude-sonnet-5", 0.97, false}, + {"claude-opus-4-7", 0.97, false}, + {"claude-fable-5-1", 0.97, false}, + {"gpt-5.4", 0.97, false}, + {"o3", 0.97, false}, + {"gemini-3.5-flash", 0.97, false}, + } { + if got := ClaudeKeepsTopPWhileThinking(tc.model, tc.topP); got != tc.want { + t.Errorf("ClaudeKeepsTopPWhileThinking(%q, %v) = %v, want %v", + tc.model, tc.topP, got, tc.want) + } + } +} diff --git a/llms/reasoning/claude_v2_structured_test.go b/llms/reasoning/claude_v2_structured_test.go new file mode 100644 index 000000000..5a4a1c877 --- /dev/null +++ b/llms/reasoning/claude_v2_structured_test.go @@ -0,0 +1,22 @@ +package reasoning_test + +import ( + "testing" + + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func TestClaudeV2RejectsStructuredOutputOnEverySpelling(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "claude-2", "claude-2.1", + "claude-v2", "claude-v2:1", + "anthropic.claude-v2", "anthropic.claude-v2:1", + "us.anthropic.claude-v2:1", + } { + if reasoning.ClaudeSupportsStructuredOutput(model) { + t.Errorf("%s: structured output must be refused locally, got supported", model) + } + } +} diff --git a/llms/reasoning/content_reasoning_test.go b/llms/reasoning/content_reasoning_test.go new file mode 100644 index 000000000..0fe077cad --- /dev/null +++ b/llms/reasoning/content_reasoning_test.go @@ -0,0 +1,48 @@ +package reasoning + +import ( + "strings" + "testing" +) + +func TestHasContentSeparatesReasoningFromSignature(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + reasoning *ContentReasoning + hasContent bool + isEmpty bool + }{ + {"nil", nil, false, true}, + {"zero value", &ContentReasoning{}, false, true}, + {"signature only", &ContentReasoning{Signature: []byte("sig")}, false, false}, + {"content only", &ContentReasoning{Content: "step 1"}, true, false}, + {"content and signature", &ContentReasoning{Content: "step 1", Signature: []byte("sig")}, true, false}, + } { + if got := tc.reasoning.HasContent(); got != tc.hasContent { + t.Errorf("%s: HasContent() = %v, want %v", tc.name, got, tc.hasContent) + } + if got := tc.reasoning.IsEmpty(); got != tc.isEmpty { + t.Errorf("%s: IsEmpty() = %v, want %v", tc.name, got, tc.isEmpty) + } + } +} + +func TestRedactedReasoningIsCarriedButIsNotText(t *testing.T) { + t.Parallel() + + redacted := FromBlocks([]Block{{Redacted: []byte{0x01, 0x02, 0x03}}}) + if redacted.IsEmpty() { + t.Error("an encrypted block is something to carry back, so it is not empty") + } + if redacted.HasContent() { + t.Error("an encrypted block is not readable thinking") + } + if got := redacted.String(); !strings.Contains(got, "3 bytes") || !strings.Contains(got, "Blocks: 1") { + t.Errorf("String() = %q, want the encrypted size and the block count named", got) + } + if !(&ContentReasoning{}).IsEmpty() { + t.Error("a value with nothing in it stays empty") + } +} diff --git a/llms/reasoning/detect_hint.go b/llms/reasoning/detect_hint.go new file mode 100644 index 000000000..790f229e1 --- /dev/null +++ b/llms/reasoning/detect_hint.go @@ -0,0 +1,78 @@ +package reasoning + +import "strings" + +// LikelyReasoningModel reports whether a model probably reasons: everything +// IsReasoningModel knows, plus any name from a family whose current generations +// reason and which is not a known pre-reasoning generation. +// +// For UI hints only. Wire paths keep using IsReasoningModel. +func LikelyReasoningModel(model string) bool { + if IsReasoningModel(model) { + return true + } + + for _, form := range modelSpellings(model) { + if likelyReasoningFamily(form) { + return true + } + } + return false +} + +func likelyReasoningFamily(m string) bool { + if namesNonTextModality(m) { + return false + } + + switch { + case strings.HasPrefix(m, "gpt-"): + return !openAIPreReasoning(m) && !openAIChatVariant(m) + case isOSeries(m): + return true + case strings.HasPrefix(m, "claude-"): + return !claudePreThinking(m) + case strings.HasPrefix(m, "gemini-"), strings.HasPrefix(m, "gemma-"): + return !geminiKnownNonThinking(m) + case strings.HasPrefix(m, "qwen"): + return !qwenPreReasoning(m) + case strings.HasPrefix(m, "qvq"): + return true + } + return false +} + +func namesNonTextModality(m string) bool { + for _, modality := range []string{"embedding", "image", "audio", "realtime", "tts", "whisper", "transcribe"} { + if strings.Contains(m, modality) { + return true + } + } + return false +} + +func openAIPreReasoning(m string) bool { + return strings.HasPrefix(m, "gpt-3") || strings.HasPrefix(m, "gpt-4") +} + +func claudePreThinking(m string) bool { + c := canonicalClaude(m) + if strings.Contains(c, "claude-3-7") { + return false + } + return strings.HasPrefix(c, "claude-2") || + strings.HasPrefix(c, "claude-v2") || + strings.HasPrefix(c, "claude-instant") || + strings.HasPrefix(c, "claude-3") +} + +func qwenPreReasoning(m string) bool { + return strings.HasPrefix(m, "qwen1") || + strings.HasPrefix(m, "qwen2") || + strings.HasPrefix(m, "qwen-1") || + strings.HasPrefix(m, "qwen-2") +} + +func isOSeries(m string) bool { + return len(m) > 1 && m[0] == 'o' && m[1] >= '1' && m[1] <= '9' +} diff --git a/llms/reasoning/detect_hint_test.go b/llms/reasoning/detect_hint_test.go new file mode 100644 index 000000000..79e9b8ddb --- /dev/null +++ b/llms/reasoning/detect_hint_test.go @@ -0,0 +1,145 @@ +package reasoning + +import "testing" + +func TestLikelyReasoningModel(t *testing.T) { + t.Parallel() + cases := []struct { + model string + want bool + note string + }{ + {"gpt-5.5", true, "already classified"}, + {"claude-sonnet-5", true, "already classified"}, + {"o3-mini", true, "already classified"}, + + {"gpt-6", true, "generation newer than this build"}, + {"gpt-6-astra", true, "generation newer than this build"}, + {"gpt-6-sol", true, "generation newer than this build"}, + {"gpt-6-luna", true, "generation newer than this build"}, + {"gpt-7-turbo", true, "generation newer than this build"}, + {"claude-opus-6", true, "generation newer than this build"}, + {"claude-sonnet-7", true, "generation newer than this build"}, + {"gemini-4-pro", true, "generation newer than this build"}, + {"gemma-5", true, "generation newer than this build"}, + {"o5", true, "o-series successor"}, + {"openai/gpt-6", true, "proxy prefix stripped"}, + + {"gpt-4o", false, "pre-reasoning generation"}, + {"gpt-4.1", false, "pre-reasoning generation"}, + {"gpt-3.5-turbo", false, "pre-reasoning generation"}, + {"claude-3-5-sonnet-latest", false, "pre-thinking generation"}, + {"claude-2.1", false, "pre-thinking generation"}, + {"anthropic.claude-instant-v1", false, "pre-thinking generation"}, + {"gemini-1.5-pro", false, "pre-thinking generation"}, + {"gemini-2.0-flash", false, "pre-thinking generation"}, + {"gemma-3", false, "pre-thinking generation"}, + + {"", false, "not a model"}, + {"mistral-large-latest", false, "family this package does not classify"}, + } + for _, tc := range cases { + if got := LikelyReasoningModel(tc.model); got != tc.want { + t.Errorf("LikelyReasoningModel(%q) = %v, want %v (%s)", tc.model, got, tc.want, tc.note) + } + } +} + +func TestNonTextModalitiesAreNotGuessedAsReasoning(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + want bool + }{ + {"gpt-image-1", false}, + {"gemini-embedding-001", false}, + {"openai/gpt-image-1", false}, + {"gpt-5.5", true}, + {"gemini-2.5-flash", true}, + {"claude-opus-4-6", true}, + {"o3", true}, + } { + if got := LikelyReasoningModel(tc.model); got != tc.want { + t.Errorf("LikelyReasoningModel(%q) = %v, want %v", tc.model, got, tc.want) + } + } +} + +func TestOnlyTheGemini25FlashLiteLeavesThinkingOff(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + want bool + }{ + {"gemini-2.5-flash-lite", true}, + {"models/gemini-2.5-flash-lite-preview-06-17", true}, + {"gemini-3.1-flash-lite", false}, + {"gemini-3.5-flash-lite", false}, + {"gemma-4-flash-lite", false}, + {"some-flash-lite-thing", false}, + {"llama-4-flash-lite", false}, + {"gemini-2.5-flash", false}, + } { + if got := GeminiThinkingOffByDefault(tc.model); got != tc.want { + t.Errorf("GeminiThinkingOffByDefault(%q) = %v, want %v", tc.model, got, tc.want) + } + } +} + +func TestQwenHintIsOptimisticWithoutMovingTheWire(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + want bool + }{ + {"qwen3-coder-flash", true}, + {"qwen3-coder-plus", true}, + {"qwen3-14b", true}, + {"qwen3.5-flash", true}, + {"qwen3.6-plus", true}, + {"qwen3.7-max", true}, + {"qwen4-max", true}, + {"qwen-plus", true}, + {"qwen-turbo", true}, + {"qwen-max", true}, + {"qwen/qwen3-32b", true}, + {"qwen.qwen3-32b-v1:0", true}, + {"Qwen/Qwen3.6-27B-FP8", true}, + {"qvq-max", true}, + {"qvq-72b-preview", true}, + {"qwen2.5-72b-instruct", false}, + {"qwen2-7b", false}, + {"qwen1.5-14b", false}, + {"qwen-1.8b", false}, + {"qwen-2.5-coder", false}, + } { + if got := LikelyReasoningModel(tc.model); got != tc.want { + t.Errorf("LikelyReasoningModel(%q) = %v, want %v", tc.model, got, tc.want) + } + } +} + +func TestTheHintDoesNotOfferReasoningToNonTextModels(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "gpt-audio", "gpt-realtime", "gpt-4o-transcribe", "whisper-1", + "tts-1", "text-embedding-3-large", "gpt-image-1", + } { + if LikelyReasoningModel(model) { + t.Errorf("%q answers in another modality, so no reasoning control belongs on it", model) + } + } +} + +func TestTheHintAgreesWithTheMatchersOnChatLatest(t *testing.T) { + t.Parallel() + + const model = "gpt-5-chat-latest" + if LikelyReasoningModel(model) { + t.Errorf("%q is excluded by the other two matchers, so the hint must exclude it too", model) + } +} diff --git a/llms/reasoning/doc.go b/llms/reasoning/doc.go index 295a33367..a6e5924d5 100644 --- a/llms/reasoning/doc.go +++ b/llms/reasoning/doc.go @@ -65,3 +65,7 @@ // - IsReasoningModel: Checks if a model supports reasoning // - DefaultIsReasoningModel: Provides the default reasoning model detection logic package reasoning + +//go:generate go run ./internal/cmd/modelsdev -out testdata/models_dev.json +//go:generate go run ./internal/cmd/anthropicmodels -out testdata/anthropic_models.json +//go:generate go run ./internal/cmd/mistralmodels -out testdata/mistral_models.json diff --git a/llms/reasoning/effort_wire.go b/llms/reasoning/effort_wire.go new file mode 100644 index 000000000..4e58ccf9d --- /dev/null +++ b/llms/reasoning/effort_wire.go @@ -0,0 +1,311 @@ +package reasoning + +import ( + "fmt" + "slices" + "strconv" + "strings" +) + +// RejectsPenalties reports whether frequency_penalty and presence_penalty +// must stay off the wire. +func RejectsPenalties(model string) bool { + for _, form := range modelSpellings(model) { + if strings.HasPrefix(form, "grok") || strings.HasPrefix(form, "deepseek") { + return true + } + } + return false +} + +// deepSeekAPIModels mirrors the model names DeepSeek's own API serves, as its +// Models & Pricing page lists them. +var deepSeekAPIModels = []string{"deepseek-flash", "deepseek-v4-pro", "deepseek-v4-flash", "deepseek-v4-flash-vision-exp"} + +const deepSeekAPIHost = "api.deepseek.com" + +func ServedByDeepSeek(model, host string) bool { + m := strings.ToLower(model) + if rest, ok := strings.CutPrefix(m, "deepseek/"); ok { + return slices.Contains(deepSeekAPIModels, rest) + } + return host == deepSeekAPIHost && slices.Contains(deepSeekAPIModels, m) +} + +// RejectsTopK reports whether top_k must stay off the wire. +func RejectsTopK(model string) bool { + return openAIProperName(model) +} + +func TakesNoTopK(model string) bool { + return onMiniMaxAPI(model, "minimax-") +} + +func TakesNoResponseFormat(model string) bool { + return onMiniMaxAPI(model, "minimax-m") +} + +func onMiniMaxAPI(model, family string) bool { + return strings.HasPrefix(strings.TrimPrefix(strings.ToLower(model), "minimax/"), family) +} + +// RejectsRepetitionPenalty reports whether repetition_penalty must stay off the wire. +func RejectsRepetitionPenalty(model string) bool { + return openAIProperName(model) +} + +// openAIProperName reports whether the name belongs to OpenAI's own catalogue +// rather than to another vendor this door serves. +func openAIProperName(model string) bool { + for _, form := range modelSpellings(model) { + if strings.HasPrefix(form, "gpt-oss") { + return false + } + if strings.HasPrefix(form, "gpt-") || strings.HasPrefix(form, "chatgpt-") || + strings.HasPrefix(form, "o1") || strings.HasPrefix(form, "o3") || + strings.HasPrefix(form, "o4-") { + return true + } + } + return false +} + +// RejectsSamplingWhileThinking reports whether a thinking request must travel +// without the caller's temperature and top_p. +func RejectsSamplingWhileThinking(model string) bool { + return openAIProperName(model) && OpenAIReasoningCapsFor(model).Known +} + +// FixesSampling reports whether the model runs on fixed temperature, top_p and +// penalties, so any value the caller sets for them stays off the wire. +func FixesSampling(model string) bool { + for _, form := range modelSpellings(model) { + if hasGeneration(form, "kimi-k3") || hasGeneration(form, "kimi-k2.6") || + hasGeneration(form, "kimi-k2.7-code") { + return true + } + } + return false +} + +// TakesNoJSONSchema reports whether the vendor's chat completions response_format +// takes only text and json_object, so a JSON schema cannot be asked for. +func TakesNoJSONSchema(model string) bool { + if ServedByMistral(model) { + return false + } + for _, form := range modelSpellings(model) { + if strings.HasPrefix(form, "deepseek-") || strings.HasPrefix(form, "glm-") { + return true + } + } + return false +} + +func TakesNoJSONObject(model string) bool { + return isClaudeModel(model) +} + +// RejectsMinP reports whether min_p must stay off the wire. +func RejectsMinP(model string) bool { + return isClaudeModel(model) || openAIProperName(model) +} + +// ReplaysReasoningOnEveryTurn reports whether reasoning_content goes back on every +// earlier assistant turn, not only on the turns that called a tool. +func ReplaysReasoningOnEveryTurn(model string) bool { + for _, form := range modelSpellings(model) { + if strings.HasPrefix(form, "deepseek") || strings.HasPrefix(form, "kimi-") || strings.HasPrefix(form, "glm-") || + strings.HasPrefix(form, "qwen") { + return true + } + } + return false +} + +// ReplaysEmptyReasoning reports whether an earlier assistant turn with no reasoning +// to give back still carries reasoning_content, as an empty string. In thinking +// mode DeepSeek refuses (400) an assistant turn after the last user message that +// lacks the field, unless the turn's tool call ID is one DeepSeek issued, whose +// reasoning it then restores on its side. Its own thinking turns can come back +// with an empty reasoning, and a caller may rewrite the IDs or build the turn. +// The empty string stops that restore, so a caller that drops the reasoning of +// such a turn loses it; before the last user message DeepSeek restores nothing. +func ReplaysEmptyReasoning(model string) bool { + for _, form := range modelSpellings(model) { + if strings.HasPrefix(form, "deepseek-") { + return true + } + } + return false +} + +// ReplaysThinkingInContent reports, for a model Mistral serves, whether its +// earlier assistant turns take their reasoning back, which they take only as a +// thinking chunk at the head of content, on every turn. +func ReplaysThinkingInContent(model string) bool { + if !ServedByMistral(model) { + return false + } + for _, form := range modelSpellings(model) { + if mistralWithoutReasoning(form) { + return false + } + } + return true +} + +func ReplaysReasoningInThinkTags(model string) bool { + return onMiniMaxAPI(model, "minimax-m") +} + +// UsesLegacyMaxTokens reports whether the output limit must travel as +// max_tokens rather than max_completion_tokens. +func UsesLegacyMaxTokens(model string) bool { + for _, form := range modelSpellings(model) { + if strings.HasPrefix(form, "grok") || + strings.HasPrefix(form, "qwen") || + strings.HasPrefix(form, "qwq") || + strings.HasPrefix(form, "qvq") || + strings.HasPrefix(form, "deepseek") { + return true + } + } + return false +} + +// AcceptsEffortWire reports whether the model's OpenAI-compatible door takes the +// reasoning_effort field. A door that refuses it fails the whole request, so such +// a model also has no way to spell "off": the disable token rides on this field. +func AcceptsEffortWire(model string) bool { + for _, form := range modelSpellings(model) { + if hasGeneration(form, "qwen3.8") { + return true + } + if strings.HasPrefix(form, "qwen") || strings.HasPrefix(form, "qwq") { + return false + } + if strings.HasPrefix(form, "gpt-3.5") || strings.HasPrefix(form, "gpt-4") { + return false + } + if mistralWithoutReasoning(form) { + return false + } + if thinksBySwitchOnly(model, form) { + return false + } + if form == "grok-build-latest" { + return true + } + if strings.HasPrefix(form, "grok-code-fast") || + strings.HasPrefix(form, "grok-build") || + strings.HasPrefix(form, "grok-4.20") { + return false + } + } + return true +} + +// TakesNoThinkingDepth reports whether the model's own door takes neither a +// thinking budget nor an effort level. +func TakesNoThinkingDepth(model string) bool { + if dashScopeGuestSpelling(model) != "" { + return false + } + for _, form := range modelSpellings(model) { + if thinksBySwitchOnly(model, form) { + return true + } + } + return false +} + +// ErrThinkingBudgetUnsupported reports a thinking budget asked of a model that +// TakesNoThinkingDepth. +type ErrThinkingBudgetUnsupported struct{ Model string } + +func (e *ErrThinkingBudgetUnsupported) Error() string { + return fmt.Sprintf("model %q takes no thinking budget or effort level; leave the budget unset", e.Model) +} + +func thinksBySwitchOnly(model, form string) bool { + return hasGeneration(form, "kimi-k2") || glmBeforeEffortField(model, form) || + strings.HasPrefix(form, "minimax-m") +} + +func glmBeforeEffortField(model, form string) bool { + if ServedByMistral(model) { + return false + } + major, minor, ok := glmGeneration(form) + if !ok { + return false + } + firstMinor := 2 + if dashScopeGuestSpelling(model) != "" { + firstMinor = 1 + } + return major < 5 || major == 5 && minor < firstMinor +} + +func glmGeneration(form string) (major, minor int, ok bool) { + rest, found := strings.CutPrefix(form, "glm-") + if !found { + return 0, 0, false + } + major, rest, ok = leadingNumber(rest) + if !ok { + return 0, 0, false + } + if after, dotted := strings.CutPrefix(rest, "."); dotted { + minor, _, _ = leadingNumber(after) + } + return major, minor, true +} + +func leadingNumber(s string) (n int, rest string, ok bool) { + end := 0 + for end < len(s) && isDigit(s[end]) { + end++ + } + if end == 0 { + return 0, s, false + } + n, err := strconv.Atoi(s[:end]) + return n, s[end:], err == nil +} + +// EffortToolsRule reports what to do with reasoning_effort when function tools +// ride on the same request. +type EffortToolsRule int + +const ( + EffortToolsFree EffortToolsRule = iota + EffortToolsOmit + EffortToolsDisable +) + +type ErrEffortWithTools struct { + Model string + Effort string +} + +func (e *ErrEffortWithTools) Error() string { + return fmt.Sprintf( + "model %q rejects reasoning effort %q on a request carrying function tools; "+ + "the vendor serves this combination on the responses API only", + e.Model, e.Effort) +} + +// EffortWithTools reports the rule for a model. An unlisted generation stays free. +func EffortWithTools(model string) EffortToolsRule { + for _, form := range modelSpellings(model) { + if hasGeneration(form, "gpt-5.6") || hasGeneration(form, "gpt-6-sol") || hasGeneration(form, "gpt-6-luna") { + return EffortToolsDisable + } + if hasGeneration(form, "gpt-5.4") || hasGeneration(form, "gpt-5.5") { + return EffortToolsOmit + } + } + return EffortToolsFree +} diff --git a/llms/reasoning/effort_wire_test.go b/llms/reasoning/effort_wire_test.go new file mode 100644 index 000000000..ec1293ec9 --- /dev/null +++ b/llms/reasoning/effort_wire_test.go @@ -0,0 +1,279 @@ +package reasoning + +import "testing" + +func TestAcceptsEffortWire(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + accept bool + }{ + {"qwen3-next-80b-a3b-thinking", false}, + {"dashscope/qwen3-next-80b-a3b-thinking", false}, + {"qwen3.7-max", false}, + {"qwen3.8-max", true}, + {"qwen3.8-flash", true}, + {"qwen3.8-2.4t-a95b", true}, + {"dashscope/qwen3.8-max", true}, + {"qwen3.5-plus", false}, + {"qwq-32b", false}, + {"kimi-k2.7-code-highspeed", false}, + {"moonshot/kimi-k2.7-code", false}, + {"dashscope/kimi-k2.7-code", false}, + {"kimi-k2.6", false}, + {"moonshot/kimi-k2.6", false}, + {"kimi-k2.5", false}, + {"kimi-k2-thinking", false}, + {"kimi-k3", true}, + {"moonshot/kimi-k3", true}, + {"gpt-5.5", true}, + {"gpt-4o", false}, + {"gpt-4o-mini", false}, + {"gpt-4.1", false}, + {"gpt-4-turbo", false}, + {"gpt-3.5-turbo", false}, + {"openai/gpt-4o", false}, + {"o3-mini", true}, + {"deepseek-v4-pro", true}, + {"glm-5-turbo", false}, + {"glm-5.1", false}, + {"zai/glm-5.1", false}, + {"glm-5", false}, + {"glm-4.7-flashx", false}, + {"glm-4.6v", false}, + {"glm-4.5-air", false}, + {"glm-5.2", true}, + {"zai/glm-5.2", true}, + {"glm-5.2-fast-preview", true}, + {"glm-5.3", true}, + {"glm-5.3-flash", true}, + {"glm-latest", true}, + {"glm-flash-latest", true}, + {"dashscope/glm-5.1", true}, + {"dashscope/glm-5", false}, + {"zai-glm-5-2", true}, + {"mistral/glm-5-2", true}, + {"minimax-m3", false}, + {"MiniMax-M3", false}, + {"minimax/MiniMax-M3", false}, + {"MiniMax-M2.7", false}, + {"MiniMax-M2.7-highspeed", false}, + {"minimax/MiniMax-M2.5", false}, + } { + if got := AcceptsEffortWire(tc.model); got != tc.accept { + t.Errorf("AcceptsEffortWire(%q) = %v, want %v", tc.model, got, tc.accept) + } + } +} + +func TestTakesNoThinkingDepth(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + want bool + }{ + {"glm-5.1", true}, + {"zai/glm-5.1", true}, + {"glm-5-turbo", true}, + {"glm-4.7", true}, + {"kimi-k2.6", true}, + {"moonshot/kimi-k2.6", true}, + {"kimi-k2.7-code", true}, + {"MiniMax-M3", true}, + {"minimax/MiniMax-M2.7", true}, + {"glm-5.2", false}, + {"zai/glm-5.2", false}, + {"glm-latest", false}, + {"kimi-k3", false}, + {"dashscope/glm-5.1", false}, + {"dashscope/glm-5", false}, + {"dashscope/kimi-k2.7-code", false}, + {"dashscope/kimi-k2.6", false}, + {"zai-glm-5-2", false}, + {"qwen3.7-plus", false}, + {"gpt-5", false}, + {"deepseek-v4-pro", false}, + } { + if got := TakesNoThinkingDepth(tc.model); got != tc.want { + t.Errorf("TakesNoThinkingDepth(%q) = %v, want %v", tc.model, got, tc.want) + } + } +} + +func TestRejectsMinP(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + reject bool + }{ + {"claude-sonnet-4-5", true}, + {"claude-sonnet-4-5-20250929", true}, + {"anthropic/claude-sonnet-4.5", true}, + {"us.anthropic.claude-opus-4-6-v1:0", true}, + {"claude-opus-4-7", true}, + {"claude-haiku-4-5", true}, + {"gpt-5.5", true}, + {"gpt-4o", true}, + {"o3-mini", true}, + {"chatgpt-4o-latest", true}, + {"gpt-oss-120b", false}, + {"grok-4.6", false}, + {"qwen3-32b", false}, + {"deepseek-v3.2", false}, + {"zai/glm-5.3", false}, + } { + if got := RejectsMinP(tc.model); got != tc.reject { + t.Errorf("RejectsMinP(%q) = %v, want %v", tc.model, got, tc.reject) + } + } +} + +func TestServedByDeepSeek(t *testing.T) { + t.Parallel() + + const deepSeek, dashScope, gateway = "api.deepseek.com", "dashscope-us.aliyuncs.com", "litellm.example" + for _, tc := range []struct { + model, host string + served bool + }{ + {"deepseek-flash", deepSeek, true}, + {"deepseek-v4-pro", deepSeek, true}, + {"DeepSeek-V4-Pro", deepSeek, true}, + {"deepseek-v4-flash", deepSeek, true}, + {"deepseek-v4-flash-vision-exp", deepSeek, true}, + {"deepseek/deepseek-v4-pro", gateway, true}, + {"deepseek/deepseek-flash", gateway, true}, + {"deepseek-v4-pro", dashScope, false}, + {"deepseek-v4-flash", dashScope, false}, + {"deepseek-v4-pro", gateway, false}, + {"deepseek-v4-pro", "", false}, + {"dashscope/deepseek-v4-pro", gateway, false}, + {"openrouter/deepseek/deepseek-v4-pro", gateway, false}, + {"deepseek-v4-flash-0731", deepSeek, false}, + {"deepseek-v4.1-flash", deepSeek, false}, + {"deepseek-r1", deepSeek, false}, + {"deepseek-v3.2", deepSeek, false}, + {"gpt-5.5", deepSeek, false}, + } { + if got := ServedByDeepSeek(tc.model, tc.host); got != tc.served { + t.Errorf("ServedByDeepSeek(%q, %q) = %v, want %v", tc.model, tc.host, got, tc.served) + } + } +} + +func TestResolveOffOnDoorsThatRejectEffort(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + want OffWire + }{ + {"qwen3-next-80b-a3b-thinking", OffUnsupported}, + {"kimi-k2.7-code-highspeed", OffUnsupported}, + {"kimi-k2.6", OffDisableThinkingObject}, + {"kimi-k2-thinking", OffUnsupported}, + {"kimi-k3", OffUnsupported}, + {"deepseek-v4-pro", OffDisableThinkingObject}, + {"glm-5-turbo", OffDisableThinkingObject}, + } { + if got := ResolveOff(tc.model, ProviderOpenAI); got != tc.want { + t.Errorf("ResolveOff(%q, ProviderOpenAI) = %v, want %v", tc.model, got, tc.want) + } + } +} + +func TestTheGrokBuildAliasThatIsReallyGrok45(t *testing.T) { + t.Parallel() + + if !AcceptsEffortWire("grok-build-latest") { + t.Error("grok-build-latest drops the effort field, but the vendor answers low with 47 " + + "reasoning tokens and high with 73") + } + if got := ResolveOff("grok-build-latest", ProviderOpenAI); got != OffUnsupported { + t.Errorf("ResolveOff(grok-build-latest) = %v, want unsupported: the vendor refuses "+ + "effort none on this model", got) + } + + for _, model := range []string{"grok-build-0.1", "grok-code-fast-1"} { + if AcceptsEffortWire(model) { + t.Errorf("%s carries the effort field, but the vendor refuses it by name", model) + } + } +} + +func TestEffortWithTools(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + rule EffortToolsRule + }{ + {"gpt-5.6-sol", EffortToolsDisable}, + {"gpt-5.6-terra", EffortToolsDisable}, + {"openai/gpt-5.6", EffortToolsDisable}, + {"gpt-6-sol", EffortToolsDisable}, + {"gpt-6-luna", EffortToolsDisable}, + {"gpt-5.5", EffortToolsOmit}, + {"gpt-5.4-nano", EffortToolsOmit}, + {"gpt-5.4-mini", EffortToolsOmit}, + {"gpt-5.2", EffortToolsFree}, + {"gpt-5.1", EffortToolsFree}, + {"gpt-5-mini", EffortToolsFree}, + {"gpt-4o", EffortToolsFree}, + {"claude-opus-5", EffortToolsFree}, + } { + if got := EffortWithTools(tc.model); got != tc.rule { + t.Errorf("EffortWithTools(%q) = %v, want %v", tc.model, got, tc.rule) + } + } +} + +func TestTakesNoJSONSchema(t *testing.T) { + t.Parallel() + + for model, want := range map[string]bool{ + "deepseek-flash": true, + "deepseek-v4-pro": true, + "deepseek-chat": true, + "deepseek/deepseek-v4-pro": true, + "DeepSeek-V4-Pro": true, + "glm-5.3": true, + "zai/glm-5.3": true, + "glm-5-2": false, // served by Mistral, which documents json_schema for it + "deepseekcoder": false, // not a current DeepSeek name: every one reads "deepseek-..." + "gpt-4o": false, + } { + if got := TakesNoJSONSchema(model); got != want { + t.Errorf("TakesNoJSONSchema(%q) = %v, want %v", model, got, want) + } + } +} + +func TestReplaysEmptyReasoning(t *testing.T) { + t.Parallel() + + for model, want := range map[string]bool{ + "deepseek-flash": true, + "deepseek-v4-pro": true, + "DeepSeek-V4-Pro": true, + "deepseek-chat": true, + "deepseek-reasoner": true, + "deepseek/deepseek-v4-pro": true, + "openrouter/deepseek/deepseek-v4-pro": true, + "deepseekcoder": false, // not a current DeepSeek name: every one reads "deepseek-..." + "kimi-k3": false, + "glm-5.3": false, + "qwen3.7-plus": false, + "MiniMax-M3": false, + "mistral-small-2603": false, + "grok-4.6": false, + "gpt-5.5": false, + } { + if got := ReplaysEmptyReasoning(model); got != want { + t.Errorf("ReplaysEmptyReasoning(%q) = %v, want %v", model, got, want) + } + } +} diff --git a/llms/reasoning/errors_claude.go b/llms/reasoning/errors_claude.go new file mode 100644 index 000000000..cf5b1e171 --- /dev/null +++ b/llms/reasoning/errors_claude.go @@ -0,0 +1,36 @@ +package reasoning + +import "fmt" + +// ErrAssistantPrefillUnsupported reports that the model rejects a conversation +// ending with an assistant turn. +type ErrAssistantPrefillUnsupported struct{ Model string } + +func (e *ErrAssistantPrefillUnsupported) Error() string { + return fmt.Sprintf( + "model %q does not support assistant message prefill; the conversation must end with a user message", + e.Model) +} + +// ErrForcedToolUseWithThinking reports that a forced tool choice was combined +// with manual (budget) thinking. +type ErrForcedToolUseWithThinking struct{ Model string } + +func (e *ErrForcedToolUseWithThinking) Error() string { + return fmt.Sprintf( + "model %q runs manual thinking, which rejects a forced tool choice; use tool_choice auto or none", + e.Model) +} + +// ErrEffortHasNoBudget reports that reasoning was asked for with an effort that +// does not map to a token budget, on a model whose only thinking wire is one. +type ErrEffortHasNoBudget struct { + Model string + Effort string +} + +func (e *ErrEffortHasNoBudget) Error() string { + return fmt.Sprintf( + "model %q thinks by token budget, and effort %q maps to none; pass an explicit budget or an effort from low to max", + e.Model, e.Effort) +} diff --git a/llms/reasoning/gemini_capability.go b/llms/reasoning/gemini_capability.go index adcab11e4..63a408f50 100644 --- a/llms/reasoning/gemini_capability.go +++ b/llms/reasoning/gemini_capability.go @@ -8,20 +8,78 @@ import "strings" // model-string checks. Provider-wire specifics that need the genai types // (thinking_level mapping, the temperature value) stay in the googleai adapter. +func baseModelName(model string) string { + m := strings.ToLower(model) + if idx := strings.LastIndex(m, "/"); idx != -1 { + m = m[idx+1:] + } + return m +} + +func hasFamily(model, family string) bool { + rest := model + for { + idx := strings.Index(rest, family) + if idx == -1 { + return false + } + rest = rest[idx+len(family):] + if rest == "" || rest[0] < '0' || rest[0] > '9' { + return true + } + } +} + // GeminiSupportsThinking reports whether the model belongs to a Google thinking // family: Gemini 2.5, Gemini 3.x, or Gemma 4. func GeminiSupportsThinking(model string) bool { - m := strings.ToLower(model) - return strings.Contains(m, "gemini-2.5") || - strings.Contains(m, "gemini-3") || - strings.Contains(m, "gemma-4") + m := baseModelName(model) + if geminiNonChatSurface(m) { + return false + } + return hasFamily(m, "gemini-2.5") || + hasFamily(m, "gemini-3") || + hasFamily(m, "gemma-4") || + geminiUnversionedThinking(m) +} + +func geminiNonChatSurface(model string) bool { + return strings.Contains(model, "-tts") || + strings.Contains(model, "-live-translate") || + strings.Contains(model, "-image") || + strings.Contains(model, "transcribe") +} + +func geminiUnversionedThinking(model string) bool { + for _, prefix := range []string{"gemini-flash-latest", "gemini-flash-lite-latest", "gemini-robotics-er"} { + if strings.HasPrefix(model, prefix) { + return true + } + } + return false } // GeminiUsesThinkingLevel reports whether the model uses the qualitative // thinking_level control (Gemini 3.x), where thinking_budget is deprecated, // instead of a token budget. Gemini 3 also recommends running at temperature 1.0. func GeminiUsesThinkingLevel(model string) bool { - return strings.Contains(strings.ToLower(model), "gemini-3") + return hasFamily(baseModelName(model), "gemini-3") +} + +// GeminiAcceptsMinimalLevel reports whether the model takes thinking_level +// MINIMAL. A name this package has not measured reports false and falls back +// to LOW, so extending this set means measuring first, not guessing. +func GeminiAcceptsMinimalLevel(model string) bool { + m := baseModelName(model) + if !GeminiUsesThinkingLevel(m) || strings.Contains(m, "pro") { + return false + } + for _, family := range []string{"gemini-3.1", "gemini-3.5", "gemini-3.6"} { + if hasFamily(m, family) { + return true + } + } + return !strings.HasPrefix(m, "gemini-3.") } // geminiKnownNonThinking reports whether the model is a pre-thinking Gemini/Gemma @@ -29,25 +87,61 @@ func GeminiUsesThinkingLevel(model string) bool { // control at all. Unclassified names are NOT matched, staying optimistic so a // future thinking model is not wrongly treated as non-thinking. func geminiKnownNonThinking(model string) bool { - m := strings.ToLower(model) - return strings.Contains(m, "gemini-1") || - strings.Contains(m, "gemini-2.0") || - strings.Contains(m, "gemma-1") || - strings.Contains(m, "gemma-2") || - strings.Contains(m, "gemma-3") + m := baseModelName(model) + return hasFamily(m, "gemini-1") || + hasFamily(m, "gemini-2.0") || + hasFamily(m, "gemma-1") || + hasFamily(m, "gemma-2") || + hasFamily(m, "gemma-3") +} + +// GeminiTogglesThinkingByLevel reports whether the model expresses thinking as +// on or off through thinking_level alone, with no budget and no level between. +// Kept apart from GeminiUsesThinkingLevel, which also turns on the Gemini 3 +// thought-signature placeholder. +func GeminiTogglesThinkingByLevel(model string) bool { + return hasFamily(baseModelName(model), "gemma-4") } -// GeminiCanDisable reports whether thinking can be turned off via -// thinkingBudget:0. Gemini 2.5 Flash/Flash-Lite and Gemma 4 can; Gemini 2.5 Pro -// and Gemini 3.x (budget:0 is ignored) cannot. Unclassified Google models are -// treated as disablable (optimistic: attempt it, let the API be the backstop). +// GeminiCanDisable reports whether thinking can be turned off at all; ResolveOff +// decides the wire. Unclassified Google models are treated as disablable, so a +// model this package has not seen is attempted rather than refused. func GeminiCanDisable(model string) bool { - m := strings.ToLower(model) - if strings.Contains(m, "gemini-3") { - return false + m := baseModelName(model) + if GeminiThinkingOffByDefault(m) { + return true + } + if hasFamily(m, "gemini-3") { + return GeminiAcceptsMinimalLevel(m) } - if strings.Contains(m, "gemini-2.5") && strings.Contains(m, "pro") { + if hasFamily(m, "gemini-2.5") && strings.Contains(m, "pro") { return false } return true } + +// GeminiThinkingOffByDefault reports whether the model leaves thinking off until +// asked, so omitting the thinking config already yields "off". +func GeminiThinkingOffByDefault(model string) bool { + return hasFamily(baseModelName(model), "gemini-2.5") && + strings.Contains(baseModelName(model), "flash-lite") +} + +// GeminiBudgetRange returns the thinking_budget bounds the vendor documents for +// the model. An unknown model reports no bounds. +func GeminiBudgetRange(model string) (minimum, maximum int, known bool) { + m := baseModelName(model) + if !hasFamily(m, "gemini-2.5") { + return 0, 0, false + } + switch { + case strings.Contains(m, "pro"): + return 128, 32768, true + case strings.Contains(m, "flash-lite"): + return 512, 24576, true + case strings.Contains(m, "flash"): + return 1, 24576, true + default: + return 0, 0, false + } +} diff --git a/llms/reasoning/gemini_capability_test.go b/llms/reasoning/gemini_capability_test.go index 2c88b67a1..53f6e6616 100644 --- a/llms/reasoning/gemini_capability_test.go +++ b/llms/reasoning/gemini_capability_test.go @@ -36,10 +36,15 @@ func TestGeminiCanDisable(t *testing.T) { {"gemini-2.5-flash", true}, {"gemini-2.5-flash-lite", true}, {"gemma-4-31b-it", true}, + {"gemma-4-26b-a4b-it", true}, {"gemini-2.5-pro", false}, - {"gemini-3-flash-preview", false}, + {"gemini-3-flash-preview", true}, {"gemini-3.1-pro-preview", false}, - {"gemini-3.5-flash", false}, + {"gemini-3.5-flash", true}, + {"gemini-3.5-pro", false}, + {"gemini-3.6-flash", true}, + {"gemini-3.7-flash", false}, + {"gemini-3.8-flash", false}, {"some-unknown-google-model", true}, // optimistic } for _, tc := range cases { @@ -67,3 +72,130 @@ func TestGeminiUsesThinkingLevel(t *testing.T) { } } } + +func TestGeminiFamilyBoundary(t *testing.T) { + t.Parallel() + cases := []struct { + model string + nonThinking bool + supportsThink bool + usesLevel bool + off OffWire + }{ + {"gemini-1.0-pro", true, false, false, OffOmit}, + {"gemini-1.5-pro", true, false, false, OffOmit}, + {"gemini-10-pro", false, false, false, OffZeroBudget}, + {"gemini-15-flash", false, false, false, OffZeroBudget}, + {"gemini-2.0-flash", true, false, false, OffOmit}, + {"gemini-20-flash", false, false, false, OffZeroBudget}, + {"gemma-3-27b", true, false, false, OffOmit}, + {"gemma-30b", false, false, false, OffZeroBudget}, + {"gemini-3-pro", false, true, true, OffUnsupported}, + {"gemini-30-pro", false, false, false, OffZeroBudget}, + {"gemini-2.5-flash", false, true, false, OffZeroBudget}, + {"gemini-25-flash", false, false, false, OffZeroBudget}, + } + for _, tc := range cases { + if got := geminiKnownNonThinking(tc.model); got != tc.nonThinking { + t.Errorf("geminiKnownNonThinking(%q) = %v, want %v", tc.model, got, tc.nonThinking) + } + if got := GeminiSupportsThinking(tc.model); got != tc.supportsThink { + t.Errorf("GeminiSupportsThinking(%q) = %v, want %v", tc.model, got, tc.supportsThink) + } + if got := GeminiUsesThinkingLevel(tc.model); got != tc.usesLevel { + t.Errorf("GeminiUsesThinkingLevel(%q) = %v, want %v", tc.model, got, tc.usesLevel) + } + if got := ResolveOff(tc.model, ProviderGoogleAI); got != tc.off { + t.Errorf("ResolveOff(%q) = %v, want %v", tc.model, got, tc.off) + } + } +} + +func TestTheDisableWireFollowsTheGenerationOfTheModel(t *testing.T) { + t.Parallel() + cases := []struct { + model string + canDisable bool + off OffWire + }{ + {"gemini-2.5-flash-lite", true, OffZeroBudget}, + {"gemini-2.5-flash", true, OffZeroBudget}, + {"gemini-2.5-pro", false, OffUnsupported}, + {"gemini-3.1-flash-lite", true, OffMinimalLevel}, + {"gemini-3.5-flash-lite", true, OffMinimalLevel}, + {"gemini-3.6-flash", true, OffMinimalLevel}, + {"gemini-3-flash-preview", true, OffMinimalLevel}, + {"gemini-3.7-flash", false, OffUnsupported}, + {"gemini-3.8-flash", false, OffUnsupported}, + {"gemini-3.1-pro-preview", false, OffUnsupported}, + } + for _, tc := range cases { + if got := GeminiCanDisable(tc.model); got != tc.canDisable { + t.Errorf("GeminiCanDisable(%q) = %v, want %v", tc.model, got, tc.canDisable) + } + if got := ResolveOff(tc.model, ProviderGoogleAI); got != tc.off { + t.Errorf("ResolveOff(%q) = %v, want %v", tc.model, got, tc.off) + } + } +} + +func TestGeminiAcceptsMinimalLevel(t *testing.T) { + t.Parallel() + cases := []struct { + model string + want bool + }{ + {"gemini-3-flash-preview", true}, + {"gemini-3.1-flash-lite", true}, + {"gemini-3.1-flash-lite-preview", true}, + {"gemini-3.5-flash", true}, + {"gemini-3.5-flash-lite", true}, + {"gemini-3.6-flash", true}, + {"google/gemini-3.5-flash", true}, + {"gemini-3.1-pro-preview", false}, + {"gemini-3.1-pro-preview-customtools", false}, + {"gemini-3.7-flash", false}, + {"gemini-2.5-flash", false}, + {"gemini-3.9-flash", false}, + {"", false}, + } + for _, tc := range cases { + if got := GeminiAcceptsMinimalLevel(tc.model); got != tc.want { + t.Errorf("GeminiAcceptsMinimalLevel(%q) = %v, want %v", tc.model, got, tc.want) + } + } +} + +func TestGemmaTogglesThinkingByLevel(t *testing.T) { + t.Parallel() + cases := []struct { + model string + want bool + }{ + {"gemma-4-31b-it", true}, + {"gemma-4-26b-a4b-it", true}, + {"gemma-4-E2B-it", true}, + {"google/gemma-4-31b-it", true}, + {"gemma-3-27b-it", false}, + {"gemini-3.5-flash", false}, + {"gemini-2.5-flash", false}, + {"", false}, + } + for _, tc := range cases { + if got := GeminiTogglesThinkingByLevel(tc.model); got != tc.want { + t.Errorf("GeminiTogglesThinkingByLevel(%q) = %v, want %v", tc.model, got, tc.want) + } + } +} + +func TestGemmaOffGoesOutAsTheMinimalLevelRatherThanAZeroBudget(t *testing.T) { + t.Parallel() + for _, model := range []string{"gemma-4-31b-it", "gemma-4-26b-a4b-it", "google/gemma-4-E2B-it"} { + if got := ResolveOff(model, ProviderGoogleAI); got != OffMinimalLevel { + t.Errorf("ResolveOff(%q) = %v, want OffMinimalLevel", model, got) + } + if !GeminiCanDisable(model) { + t.Errorf("GeminiCanDisable(%q) = false, want true", model) + } + } +} diff --git a/llms/reasoning/gemini_name_forms_test.go b/llms/reasoning/gemini_name_forms_test.go new file mode 100644 index 000000000..97d594d80 --- /dev/null +++ b/llms/reasoning/gemini_name_forms_test.go @@ -0,0 +1,77 @@ +package reasoning + +import "testing" + +func TestGeminiPredicatesAgreeAcrossNameForms(t *testing.T) { + t.Parallel() + + for _, group := range [][]string{ + { + "gemini-2.5-flash", + "Gemini-2.5-Flash", + "google/gemini-2.5-flash", + "models/gemini-2.5-flash", + "projects/p/locations/us-central1/publishers/google/models/gemini-2.5-flash", + "projects/claude-team/locations/us-central1/publishers/google/models/gemini-2.5-flash", + "projects/gemma-1-lab/locations/us-central1/publishers/google/models/gemini-2.5-flash", + "projects/gemini-3-lab/locations/us-central1/publishers/google/models/gemini-2.5-flash", + }, + { + "gemini-2.5-pro", + "projects/flash-lite-team/locations/us-central1/publishers/google/models/gemini-2.5-pro", + }, + { + "gemini-3-pro-preview", + "projects/p/locations/global/publishers/google/models/gemini-3-pro-preview", + }, + { + "gemma-4-27b-it", + "projects/p/locations/us-central1/publishers/google/models/gemma-4-27b-it", + }, + { + "text-bison", + "projects/gemini-2.5-lab/locations/us-central1/publishers/google/models/text-bison", + }, + } { + canonical := group[0] + want := struct { + thinking bool + level bool + canDisable bool + offByDefault bool + nonThinking bool + off OffWire + }{ + GeminiSupportsThinking(canonical), + GeminiUsesThinkingLevel(canonical), + GeminiCanDisable(canonical), + GeminiThinkingOffByDefault(canonical), + geminiKnownNonThinking(canonical), + ResolveOff(canonical, ProviderGoogleAI), + } + + for _, form := range group[1:] { + t.Run(form, func(t *testing.T) { + t.Parallel() + if got := GeminiSupportsThinking(form); got != want.thinking { + t.Errorf("GeminiSupportsThinking = %v, want %v (as %s)", got, want.thinking, canonical) + } + if got := GeminiUsesThinkingLevel(form); got != want.level { + t.Errorf("GeminiUsesThinkingLevel = %v, want %v (as %s)", got, want.level, canonical) + } + if got := GeminiCanDisable(form); got != want.canDisable { + t.Errorf("GeminiCanDisable = %v, want %v (as %s)", got, want.canDisable, canonical) + } + if got := GeminiThinkingOffByDefault(form); got != want.offByDefault { + t.Errorf("GeminiThinkingOffByDefault = %v, want %v (as %s)", got, want.offByDefault, canonical) + } + if got := geminiKnownNonThinking(form); got != want.nonThinking { + t.Errorf("geminiKnownNonThinking = %v, want %v (as %s)", got, want.nonThinking, canonical) + } + if got := ResolveOff(form, ProviderGoogleAI); got != want.off { + t.Errorf("ResolveOff = %v, want %v (as %s)", got, want.off, canonical) + } + }) + } + } +} diff --git a/llms/reasoning/internal/cmd/anthropicmodels/main.go b/llms/reasoning/internal/cmd/anthropicmodels/main.go new file mode 100644 index 000000000..e7f64e0c9 --- /dev/null +++ b/llms/reasoning/internal/cmd/anthropicmodels/main.go @@ -0,0 +1,114 @@ +// Command anthropicmodels refreshes the committed Anthropic listing snapshot +// read by the drift test. +package main + +import ( + "context" + "encoding/json" + "flag" + "fmt" + "os" + "sort" + + "github.com/vxcontrol/langchaingo/llms/anthropic" +) + +type entry struct { + EffortSupported bool `json:"effort_supported"` + Efforts []string `json:"efforts"` + ThinkingTypes []string `json:"thinking_types"` + StructuredOutputs bool `json:"structured_outputs"` +} + +func main() { + out := flag.String("out", "testdata/anthropic_models.json", "where to write the snapshot") + baseURL := flag.String("base-url", "", "override the vendor base URL, e.g. a gateway passthrough") + flag.Parse() + + if err := run(*out, *baseURL); err != nil { + fmt.Fprintln(os.Stderr, "anthropicmodels:", err) + os.Exit(1) + } +} + +func run(out, baseURL string) error { + opts := []anthropic.Option{} + if baseURL != "" { + opts = append(opts, anthropic.WithBaseURL(baseURL)) + } + llm, err := anthropic.New(opts...) + if err != nil { + return err + } + + resp, err := llm.ListModels(context.Background(), anthropic.ListModelsRequest{Limit: 1000}) + if err != nil { + return err + } + if resp.HasMore { + return fmt.Errorf("the vendor has more models after %q: teach this command to page "+ + "before writing a snapshot that silently covers less", resp.LastID) + } + if len(resp.Models) == 0 { + return fmt.Errorf("the vendor returned no models") + } + + snapshot := make(map[string]entry, len(resp.Models)) + for _, m := range resp.Models { + if !m.CapabilitiesReported { + return fmt.Errorf("model %q carries no capabilities object: writing it would "+ + "claim the vendor denied every feature", m.ID) + } + if m.EffortSupported != (len(m.EffortLevels) > 0) { + return fmt.Errorf("model %q reports effort supported=%v with %d levels: the "+ + "vendor contradicts itself, look before writing", m.ID, m.EffortSupported, len(m.EffortLevels)) + } + snapshot[m.ID] = entry{ + EffortSupported: m.EffortSupported, + Efforts: m.EffortLevels, + ThinkingTypes: m.ThinkingTypes, + StructuredOutputs: m.Features.StructuredOutputs, + } + } + + if err := keepsEveryCommittedModel(out, snapshot); err != nil { + return err + } + + body, err := json.MarshalIndent(snapshot, "", " ") + if err != nil { + return err + } + if err := os.WriteFile(out, append(body, '\n'), 0o600); err != nil { + return err + } + fmt.Fprintf(os.Stderr, "anthropicmodels: %d models -> %s\n", len(snapshot), out) + return nil +} + +func keepsEveryCommittedModel(out string, snapshot map[string]entry) error { + body, err := os.ReadFile(out) + if os.IsNotExist(err) { + return nil + } + if err != nil { + return err + } + var committed map[string]entry + if err := json.Unmarshal(body, &committed); err != nil { + return err + } + + var gone []string + for id := range committed { + if _, ok := snapshot[id]; !ok { + gone = append(gone, id) + } + } + if len(gone) > 0 { + sort.Strings(gone) + return fmt.Errorf("the committed snapshot has %v and this key does not see them: "+ + "a narrower key would shrink coverage without a word", gone) + } + return nil +} diff --git a/llms/reasoning/internal/cmd/anthropicmodels/main_test.go b/llms/reasoning/internal/cmd/anthropicmodels/main_test.go new file mode 100644 index 000000000..3cf64ffd6 --- /dev/null +++ b/llms/reasoning/internal/cmd/anthropicmodels/main_test.go @@ -0,0 +1,135 @@ +package main + +import ( + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "os" + "path/filepath" + "strings" + "testing" +) + +func serve(t *testing.T, body string) string { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, body) + })) + t.Cleanup(srv.Close) + t.Setenv("ANTHROPIC_API_KEY", "test") + return srv.URL +} + +func model(id, effort, thinking string) string { + return `{"type":"model","id":"` + id + `","capabilities":{` + + `"structured_outputs":{"supported":true},"effort":` + effort + + `,"thinking":` + thinking + `}}` +} + +const ( + fullEffort = `{"supported":true,"low":{"supported":true},"medium":{"supported":true},` + + `"high":{"supported":true},"xhigh":{"supported":true},"max":{"supported":true}}` + noEffort = `{"supported":false,"low":{"supported":false},"medium":{"supported":false},` + + `"high":{"supported":false},"xhigh":{"supported":false},"max":{"supported":false}}` + adaptive = `{"supported":true,"types":{"enabled":{"supported":false},"adaptive":{"supported":true}}}` +) + +func TestASnapshotIsWrittenForAWellFormedListing(t *testing.T) { + url := serve(t, `{"data":[`+model("claude-opus-5", fullEffort, adaptive)+`],"has_more":false}`) + out := filepath.Join(t.TempDir(), "snap.json") + + if err := run(out, url); err != nil { + t.Fatalf("run: %v", err) + } + + var written map[string]entry + body, err := os.ReadFile(out) + if err != nil { + t.Fatal(err) + } + if err := json.Unmarshal(body, &written); err != nil { + t.Fatal(err) + } + got := written["claude-opus-5"] + if len(got.Efforts) != 5 || got.ThinkingTypes[0] != "adaptive" || !got.StructuredOutputs { + t.Errorf("snapshot lost detail: %+v", got) + } +} + +func TestAPagedListingIsRefusedInsteadOfTruncated(t *testing.T) { + url := serve(t, `{"data":[`+model("claude-opus-5", fullEffort, adaptive)+`],`+ + `"has_more":true,"last_id":"claude-opus-5"}`) + out := filepath.Join(t.TempDir(), "snap.json") + + err := run(out, url) + if err == nil { + t.Fatal("a truncated listing was written as if it were the whole vendor") + } + if !strings.Contains(err.Error(), "more models") { + t.Errorf("unexpected refusal: %v", err) + } + if _, statErr := os.Stat(out); !os.IsNotExist(statErr) { + t.Error("the refusal still left a snapshot behind") + } +} + +func TestARecordWithoutCapabilitiesIsRefused(t *testing.T) { + url := serve(t, `{"data":[{"type":"model","id":"claude-newborn-9"}],"has_more":false}`) + out := filepath.Join(t.TempDir(), "snap.json") + + err := run(out, url) + if err == nil { + t.Fatal("a model the vendor said nothing about was written as denying every feature") + } + if !strings.Contains(err.Error(), "claude-newborn-9") { + t.Errorf("the refusal does not name the model: %v", err) + } +} + +func TestAVendorContradictingItselfIsRefused(t *testing.T) { + url := serve(t, `{"data":[`+model("claude-opus-5", noEffort, adaptive)+ + `,`+model("claude-odd-1", `{"supported":true,"low":{"supported":false},`+ + `"medium":{"supported":false},"high":{"supported":false},"xhigh":{"supported":false},`+ + `"max":{"supported":false}}`, adaptive)+`],"has_more":false}`) + out := filepath.Join(t.TempDir(), "snap.json") + + err := run(out, url) + if err == nil { + t.Fatal("effort supported with no levels was written without a word") + } + if !strings.Contains(err.Error(), "claude-odd-1") { + t.Errorf("the refusal does not name the model: %v", err) + } +} + +func TestANarrowerKeyCannotShrinkTheCommittedSnapshot(t *testing.T) { + url := serve(t, `{"data":[`+model("claude-opus-5", fullEffort, adaptive)+`],"has_more":false}`) + out := filepath.Join(t.TempDir(), "snap.json") + committed := `{"claude-opus-5":{"effort_supported":true,"efforts":["low"],` + + `"thinking_types":["adaptive"],"structured_outputs":true},` + + `"claude-sonnet-5":{"effort_supported":true,"efforts":["low"],` + + `"thinking_types":["adaptive"],"structured_outputs":true}}` + if err := os.WriteFile(out, []byte(committed), 0o600); err != nil { + t.Fatal(err) + } + + err := run(out, url) + if err == nil { + t.Fatal("a key that sees fewer models silently rewrote the snapshot") + } + if !strings.Contains(err.Error(), "claude-sonnet-5") { + t.Errorf("the refusal does not name what would be lost: %v", err) + } + + after, readErr := os.ReadFile(out) + if readErr != nil { + t.Fatal(readErr) + } + if string(after) != committed { + t.Error("the refusal still overwrote the committed snapshot") + } +} diff --git a/llms/reasoning/internal/cmd/mistralmodels/main.go b/llms/reasoning/internal/cmd/mistralmodels/main.go new file mode 100644 index 000000000..d53186b76 --- /dev/null +++ b/llms/reasoning/internal/cmd/mistralmodels/main.go @@ -0,0 +1,132 @@ +// Command mistralmodels refreshes the committed Mistral listing snapshot read by +// the drift test. +package main + +import ( + "encoding/json" + "flag" + "fmt" + "io" + "net/http" + "os" + "sort" + "time" +) + +const defaultBaseURL = "https://api.mistral.ai/v1" + +type vendorModel struct { + ID string `json:"id"` + Aliases []string `json:"aliases"` + Capabilities *struct { + Reasoning bool `json:"reasoning"` + } `json:"capabilities"` +} + +type entry struct { + Reasoning bool `json:"reasoning"` + Aliases []string `json:"aliases"` +} + +func main() { + out := flag.String("out", "testdata/mistral_models.json", "where to write the snapshot") + baseURL := flag.String("base-url", defaultBaseURL, "override the vendor base URL, e.g. a gateway passthrough") + flag.Parse() + + if err := run(*out, *baseURL); err != nil { + fmt.Fprintln(os.Stderr, "mistralmodels:", err) + os.Exit(1) + } +} + +func run(out, baseURL string) error { + models, err := fetch(baseURL, os.Getenv("MISTRAL_API_KEY")) + if err != nil { + return err + } + if len(models) == 0 { + return fmt.Errorf("the vendor returned no models") + } + + snapshot := make(map[string]entry, len(models)) + for _, m := range models { + if m.Capabilities == nil { + return fmt.Errorf("model %q carries no capabilities object: writing it would claim "+ + "the vendor denied reasoning", m.ID) + } + aliases := append([]string(nil), m.Aliases...) + sort.Strings(aliases) + snapshot[m.ID] = entry{Reasoning: m.Capabilities.Reasoning, Aliases: aliases} + } + + if err := keepsEveryCommittedModel(out, snapshot); err != nil { + return err + } + + body, err := json.MarshalIndent(snapshot, "", " ") + if err != nil { + return err + } + if err := os.WriteFile(out, append(body, '\n'), 0o600); err != nil { + return err + } + fmt.Fprintf(os.Stderr, "mistralmodels: %d models -> %s\n", len(snapshot), out) + return nil +} + +func fetch(baseURL, key string) ([]vendorModel, error) { + req, err := http.NewRequest(http.MethodGet, baseURL+"/models", http.NoBody) + if err != nil { + return nil, err + } + req.Header.Set("Authorization", "Bearer "+key) + + client := &http.Client{Timeout: 2 * time.Minute} + resp, err := client.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("%s/models: %s", baseURL, resp.Status) + } + + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + var payload struct { + Data []vendorModel `json:"data"` + } + if err := json.Unmarshal(body, &payload); err != nil { + return nil, err + } + return payload.Data, nil +} + +func keepsEveryCommittedModel(out string, snapshot map[string]entry) error { + body, err := os.ReadFile(out) + if os.IsNotExist(err) { + return nil + } + if err != nil { + return err + } + var committed map[string]entry + if err := json.Unmarshal(body, &committed); err != nil { + return err + } + + var gone []string + for id := range committed { + if _, ok := snapshot[id]; !ok { + gone = append(gone, id) + } + } + if len(gone) > 0 { + sort.Strings(gone) + return fmt.Errorf("the committed snapshot has %v and this key does not see them: "+ + "a narrower key would shrink coverage without a word", gone) + } + return nil +} diff --git a/llms/reasoning/internal/cmd/mistralmodels/main_test.go b/llms/reasoning/internal/cmd/mistralmodels/main_test.go new file mode 100644 index 000000000..7c8fcde55 --- /dev/null +++ b/llms/reasoning/internal/cmd/mistralmodels/main_test.go @@ -0,0 +1,100 @@ +package main + +import ( + "encoding/json" + "io" + "net/http" + "net/http/httptest" + "os" + "path/filepath" + "strings" + "testing" +) + +func serve(t *testing.T, body string) string { + t.Helper() + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.Copy(io.Discard, r.Body) + w.Header().Set("Content-Type", "application/json") + _, _ = io.WriteString(w, body) + })) + t.Cleanup(srv.Close) + t.Setenv("MISTRAL_API_KEY", "test") + return srv.URL +} + +const oneReasoner = `{"object":"list","data":[{"id":"magistral-medium-latest",` + + `"aliases":["mistral-medium-latest"],"capabilities":{"reasoning":true}}]}` + +func TestASnapshotKeepsTheFlagAndTheAliases(t *testing.T) { + url := serve(t, oneReasoner) + out := filepath.Join(t.TempDir(), "snap.json") + + if err := run(out, url); err != nil { + t.Fatalf("run: %v", err) + } + + body, err := os.ReadFile(out) + if err != nil { + t.Fatal(err) + } + var written map[string]entry + if err := json.Unmarshal(body, &written); err != nil { + t.Fatal(err) + } + got := written["magistral-medium-latest"] + if !got.Reasoning || len(got.Aliases) != 1 || got.Aliases[0] != "mistral-medium-latest" { + t.Errorf("snapshot lost detail: %+v", got) + } +} + +func TestARecordWithoutCapabilitiesIsRefused(t *testing.T) { + url := serve(t, `{"object":"list","data":[{"id":"mistral-newborn-9"}]}`) + out := filepath.Join(t.TempDir(), "snap.json") + + err := run(out, url) + if err == nil { + t.Fatal("a model the vendor said nothing about was written as denying reasoning") + } + if !strings.Contains(err.Error(), "mistral-newborn-9") { + t.Errorf("the refusal does not name the model: %v", err) + } + if _, statErr := os.Stat(out); !os.IsNotExist(statErr) { + t.Error("the refusal still left a snapshot behind") + } +} + +func TestAnEmptyListingIsRefused(t *testing.T) { + url := serve(t, `{"object":"list","data":[]}`) + out := filepath.Join(t.TempDir(), "snap.json") + + if err := run(out, url); err == nil { + t.Fatal("an empty listing was written, and every comparison against it would pass") + } +} + +func TestANarrowerKeyCannotShrinkTheCommittedSnapshot(t *testing.T) { + url := serve(t, oneReasoner) + out := filepath.Join(t.TempDir(), "snap.json") + committed := `{"magistral-medium-latest":{"reasoning":true,"aliases":[]},` + + `"codestral-2508":{"reasoning":false,"aliases":[]}}` + if err := os.WriteFile(out, []byte(committed), 0o600); err != nil { + t.Fatal(err) + } + + err := run(out, url) + if err == nil { + t.Fatal("a key that sees fewer models silently rewrote the snapshot") + } + if !strings.Contains(err.Error(), "codestral-2508") { + t.Errorf("the refusal does not name what would be lost: %v", err) + } + after, readErr := os.ReadFile(out) + if readErr != nil { + t.Fatal(readErr) + } + if string(after) != committed { + t.Error("the refusal still overwrote the committed snapshot") + } +} diff --git a/llms/reasoning/internal/cmd/modelsdev/main.go b/llms/reasoning/internal/cmd/modelsdev/main.go new file mode 100644 index 000000000..1d9807297 --- /dev/null +++ b/llms/reasoning/internal/cmd/modelsdev/main.go @@ -0,0 +1,100 @@ +// Command modelsdev refreshes the committed models.dev snapshot read by the +// drift test. +package main + +import ( + "encoding/json" + "flag" + "fmt" + "io" + "net/http" + "os" + "time" +) + +const catalogue = "https://models.dev/api.json" + +// Ollama is deliberately absent: the catalogue does not carry local runtimes, so +// listing it here would make every run exit 1. +var providers = []string{ + "anthropic", "openai", "xai", "google", "google-vertex", "amazon-bedrock", + "deepseek", "mistral", "moonshotai", "zhipuai", "minimax", "alibaba", +} + +type model struct { + Reasoning bool `json:"reasoning"` + ReasoningOptions []reasoningOption `json:"reasoning_options,omitempty"` + Temperature *bool `json:"temperature,omitempty"` + Limit *limit `json:"limit,omitempty"` +} + +type reasoningOption struct { + Type string `json:"type"` + Values []string `json:"values,omitempty"` + Min *int `json:"min,omitempty"` + Max *int `json:"max,omitempty"` +} + +type limit struct { + Context int `json:"context,omitempty"` + Output int `json:"output,omitempty"` +} + +func main() { + out := flag.String("out", "testdata/models_dev.json", "where to write the snapshot") + flag.Parse() + + catalog, err := fetch() + if err != nil { + fmt.Fprintln(os.Stderr, "modelsdev:", err) + os.Exit(1) + } + + snapshot := make(map[string]map[string]model, len(providers)) + kept := 0 + for _, p := range providers { + models, ok := catalog[p] + if !ok { + fmt.Fprintf(os.Stderr, "modelsdev: provider %q is gone from the catalogue\n", p) + os.Exit(1) + } + snapshot[p] = models.Models + kept += len(models.Models) + } + + body, err := json.MarshalIndent(snapshot, "", " ") + if err != nil { + fmt.Fprintln(os.Stderr, "modelsdev:", err) + os.Exit(1) + } + if err := os.WriteFile(*out, append(body, '\n'), 0o600); err != nil { + fmt.Fprintln(os.Stderr, "modelsdev:", err) + os.Exit(1) + } + fmt.Fprintf(os.Stderr, "modelsdev: %d models from %d providers -> %s\n", kept, len(providers), *out) +} + +func fetch() (map[string]struct { + Models map[string]model `json:"models"` +}, error) { + client := &http.Client{Timeout: 2 * time.Minute} + resp, err := client.Get(catalogue) + if err != nil { + return nil, err + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("%s: %s", catalogue, resp.Status) + } + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + var catalog map[string]struct { + Models map[string]model `json:"models"` + } + if err := json.Unmarshal(body, &catalog); err != nil { + return nil, err + } + return catalog, nil +} diff --git a/llms/reasoning/mechanism.go b/llms/reasoning/mechanism.go new file mode 100644 index 000000000..9ad3a7ad1 --- /dev/null +++ b/llms/reasoning/mechanism.go @@ -0,0 +1,42 @@ +package reasoning + +// Mechanism is how a model thinks on one request. +type Mechanism int + +const ( + MechanismNone Mechanism = iota + MechanismAdaptive + MechanismBudget + MechanismNovaReasoningConfig + MechanismGrokEffort + MechanismGptOssEffort +) + +// ResolveMechanism picks the thinking mechanism for a model the caller asked to +// think. claudeFamily and reasons are the door's own answers: whether the id +// belongs to Anthropic on that platform, and whether the door treats the model +// as a reasoning model at all. A family with no mechanism of its own resolves to +// MechanismNone and the request travels without a thinking configuration. +func ResolveMechanism(model string, adaptive, claudeFamily, reasons bool) Mechanism { + switch { + case ClaudeSupportsThinking(model): + if ResolveClaudeAdaptive(model, adaptive) { + return MechanismAdaptive + } + return MechanismBudget + case adaptive && claudeFamily && !ClaudePredatesAdaptive(model): + return MechanismAdaptive + case IsNovaReasoningModel(model): + return MechanismNovaReasoningConfig + case IsGrokModel(model): + return MechanismGrokEffort + case IsGptOssModel(model): + return MechanismGptOssEffort + case IsBedrockAlwaysReasoningModel(model): + return MechanismNone + case reasons && claudeFamily: + return MechanismBudget + default: + return MechanismNone + } +} diff --git a/llms/reasoning/mechanism_test.go b/llms/reasoning/mechanism_test.go new file mode 100644 index 000000000..64b45a94b --- /dev/null +++ b/llms/reasoning/mechanism_test.go @@ -0,0 +1,53 @@ +package reasoning_test + +import ( + "testing" + + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func TestResolveMechanism(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + model string + adaptive bool + claudeFamily bool + reasons bool + want reasoning.Mechanism + }{ + { + "a known thinking Claude follows the model, not the flag", + "anthropic.claude-sonnet-4-5-20250929-v1:0", false, true, true, reasoning.MechanismBudget, + }, + { + "an adaptive-only Claude ignores a budget request", + "anthropic.claude-opus-4-7-20260115-v1:0", false, true, true, reasoning.MechanismAdaptive, + }, + { + "an unclassified Claude honors an explicit adaptive request", + "anthropic.claude-sonnet-9-20991231-v1:0", true, true, true, reasoning.MechanismAdaptive, + }, + { + "a pre-adaptive Claude never gets adaptive", + "anthropic.claude-3-5-haiku-20241022-v1:0", true, true, true, reasoning.MechanismBudget, + }, + { + "a non-Claude family with no mechanism of its own gets nothing", + "zai.glm-5", true, false, true, reasoning.MechanismNone, + }, + { + "gpt-oss takes the effort field its request body documents", + "openai.gpt-oss-120b-1:0", true, false, true, reasoning.MechanismGptOssEffort, + }, + { + "a model the door does not consider reasoning gets nothing", + "amazon.nova-lite-v1:0", true, false, false, reasoning.MechanismNone, + }, + } { + if got := reasoning.ResolveMechanism(tc.model, tc.adaptive, tc.claudeFamily, tc.reasons); got != tc.want { + t.Errorf("%s: ResolveMechanism(%q) = %v, want %v", tc.name, tc.model, got, tc.want) + } + } +} diff --git a/llms/reasoning/mistral_listing_drift_test.go b/llms/reasoning/mistral_listing_drift_test.go new file mode 100644 index 000000000..617a4ed73 --- /dev/null +++ b/llms/reasoning/mistral_listing_drift_test.go @@ -0,0 +1,131 @@ +package reasoning + +import ( + "encoding/json" + "os" + "sort" + "testing" +) + +type mistralEntry struct { + Reasoning bool `json:"reasoning"` + Aliases []string `json:"aliases"` +} + +const mistralSnapshot = "testdata/mistral_models.json" + +var mistralKnownDrift = map[string]string{} + +func readMistralListing(t *testing.T) map[string]mistralEntry { + t.Helper() + + body, err := os.ReadFile(mistralSnapshot) + if err != nil { + t.Fatalf("read snapshot: %v", err) + } + var snapshot map[string]mistralEntry + if err := json.Unmarshal(body, &snapshot); err != nil { + t.Fatalf("parse snapshot: %v", err) + } + if len(snapshot) == 0 { + t.Fatal("snapshot is empty; regenerate it with go generate ./llms/reasoning") + } + return snapshot +} + +func mistralListingDiff(snapshot map[string]mistralEntry) []string { + ids := make([]string, 0, len(snapshot)) + for id := range snapshot { + ids = append(ids, id) + } + sort.Strings(ids) + + var diffs []string + for _, id := range ids { + if got := IsReasoningModel(id); got != snapshot[id].Reasoning { + diffs = append(diffs, id) + } + } + return diffs +} + +func TestTheMistralListingAgreesWithOurTables(t *testing.T) { + t.Parallel() + + snapshot := readMistralListing(t) + reasoning, plain := 0, 0 + for _, e := range snapshot { + if e.Reasoning { + reasoning++ + } else { + plain++ + } + } + if reasoning == 0 || plain == 0 { + t.Fatalf("snapshot has %d reasoning and %d plain models: a listing that lost one side "+ + "would still pass every comparison below", reasoning, plain) + } + + diverging := map[string]bool{} + for _, id := range mistralListingDiff(snapshot) { + diverging[id] = true + if _, known := mistralKnownDrift[id]; !known { + t.Errorf("new drift on %s: we say reasoning=%v, the vendor says %v. Measure it with "+ + "reasoning_effort before touching either side", id, IsReasoningModel(id), snapshot[id].Reasoning) + } + } + for id := range mistralKnownDrift { + if !diverging[id] { + t.Errorf("stale entry %s: the listing and our tables now agree, drop the line", id) + } + } +} + +func TestEveryLiveSpellingOfAMistralModelGetsOneAnswer(t *testing.T) { + t.Parallel() + + snapshot := readMistralListing(t) + checked := 0 + for id, e := range snapshot { + if _, known := mistralKnownDrift[id]; known { + continue + } + for _, alias := range e.Aliases { + if _, known := mistralKnownDrift[alias]; known { + continue + } + checked++ + if IsReasoningModel(id) != IsReasoningModel(alias) { + t.Errorf("%s and %s are the same model by the vendor's own listing, but we answer "+ + "%v and %v", id, alias, IsReasoningModel(id), IsReasoningModel(alias)) + } + } + } + if checked == 0 { + t.Fatal("no alias pair was compared; the snapshot lost its aliases") + } +} + +func TestTheMistralDriftCheckRedensOnASingleFlippedFlag(t *testing.T) { + t.Parallel() + + snapshot := readMistralListing(t) + const target = "codestral-2508" + entry, ok := snapshot[target] + if !ok { + t.Fatalf("%s left the snapshot; point this test at another non-reasoning model", target) + } + entry.Reasoning = !entry.Reasoning + snapshot[target] = entry + + diffs := mistralListingDiff(snapshot) + var fresh []string + for _, id := range diffs { + if _, known := mistralKnownDrift[id]; !known { + fresh = append(fresh, id) + } + } + if len(fresh) != 1 || fresh[0] != target { + t.Fatalf("want exactly one new divergence naming %s, got %v", target, fresh) + } +} diff --git a/llms/reasoning/mistral_replay_test.go b/llms/reasoning/mistral_replay_test.go new file mode 100644 index 000000000..2a01e3f0b --- /dev/null +++ b/llms/reasoning/mistral_replay_test.go @@ -0,0 +1,35 @@ +package reasoning + +import "testing" + +func TestOnlyModelsThatReasonOnMistralTakeThinkingBackInContent(t *testing.T) { + t.Parallel() + + for model, want := range map[string]bool{ + "mistral-medium-latest": true, + "mistral-small-latest": true, + "magistral-small-latest": true, + "zai-glm-5-2": true, + "glm-5-2": true, + "mistral/mistral-medium-latest": true, + "codestral-latest": false, + "mistral-large-latest": false, + "ministral-8b-latest": false, + "mistral/ministral-8b-latest": false, + "mistral/codestral-latest": false, + "glm-5.2": false, + "deepseek-v4-pro": false, + "kimi-k3": false, + + "mistralai/mistral-small-2603": false, + "mistral-ai/mistral-small-2603": false, + "openrouter/mistralai/mistral-medium-3-5": false, + "mistral-medium-3.5:latest": false, + "magistral:24b": false, + "magistral": false, + } { + if got := ReplaysThinkingInContent(model); got != want { + t.Errorf("ReplaysThinkingInContent(%q) = %v, want %v", model, got, want) + } + } +} diff --git a/llms/reasoning/models_dev_drift_test.go b/llms/reasoning/models_dev_drift_test.go new file mode 100644 index 000000000..d05848855 --- /dev/null +++ b/llms/reasoning/models_dev_drift_test.go @@ -0,0 +1,223 @@ +package reasoning + +import ( + "encoding/json" + "os" + "sort" + "testing" +) + +// The catalogue is a community source that has been measured wrong, so a +// disagreement is a hypothesis: add the entry with its reason, and change the +// tables only when a vendor probe says so. +var knownDrift = map[string]string{ + "google/gemini-2.5-flash-image": "image route: effort is rejected by Gemini", + "google/gemini-3-pro-image": "image route", + "google/gemini-3-pro-image-preview": "image route", + "google/gemini-3.1-flash-image": "image route", + "google/gemini-3.1-flash-image-preview": "image route", + "google/gemini-3.1-flash-lite-image": "image route", + "google-vertex/gemini-3-pro-image": "image route", + "google-vertex/gemini-3.1-flash-image": "image route", + "google/gemini-3.1-flash-tts-preview": "speech route: 400 Thinking level is not supported", + "google/gemini-omni-flash-preview": "not chat: vendor returns 400", + "google/deep-research-preview-04-2026": "route is not served", + "google/deep-research-max-preview-04-2026": "route is not served", + "openai/gpt-5.2-chat-latest": "chat variant: vendor returns 404", + "openai/gpt-realtime-2.1": "not chat: This is not a chat model", + "amazon-bedrock/qwen.qwen3-32b-v1:0": "thinks only in a stream when asked, but the predicate answers the question about a bare call", + + "amazon-bedrock/deepseek.v3-v1:0": "name is not on Bedrock: The provided model identifier is invalid; the V3 line was measured as non-reasoning", + + "alibaba/qvq-max": "not measured", + "alibaba/qwen3-omni-flash": "not measured", + "alibaba/qwen3-vl-235b-a22b": "not measured", + "alibaba/qwen3-vl-30b-a3b": "not measured", + "alibaba/qwen3-max": "records disagree: control produced zero, the commercial hybrid produced 3095 characters when asked", + "amazon-bedrock/qwen.qwen3-coder-next": "not measured", + "amazon-bedrock/writer.palmyra-x4-v1:0": "not measured", + "amazon-bedrock/writer.palmyra-x5-v1:0": "not measured", + "amazon-bedrock/nvidia.nemotron-nano-12b-v2": "not measured", + "amazon-bedrock/nvidia.nemotron-nano-9b-v2": "not measured", + "amazon-bedrock/openai.gpt-oss-safeguard-120b": "not measured: candidate for a non-chat surface", + "amazon-bedrock/openai.gpt-oss-safeguard-20b": "not measured: candidate for a non-chat surface", + "google-vertex/qwen/qwen3-235b-a22b-instruct-2507-maas": "not measured", +} + +type snapshotModel struct { + Reasoning bool `json:"reasoning"` + Options []struct { + Type string `json:"type"` + } `json:"reasoning_options"` +} + +func (m snapshotModel) claimsEffort() bool { + for _, o := range m.Options { + if o.Type == "effort" { + return true + } + } + return false +} + +func (m snapshotModel) claimsBudget() bool { + for _, o := range m.Options { + if o.Type == "budget_tokens" { + return true + } + } + return false +} + +// An entry records a divergence measured against the vendor, with the reason. +var knownEffortDrift = map[string]string{ + "xai/grok-4.20-multi-agent-0309": "vendor does not serve multi-agent on chat completions: " + + "\"Multi Agent requests are not allowed on chat completions\", measured 2026-09-02", +} + +var knownBudgetDrift = map[string]string{ + "qwen3-max": "snapshot does not declare a budget, the vendor honors it: a bare call produces 9166 " + + "thinking characters versus 285 with thinking_budget 100, measured 2026-09-03", +} + +func TestModelsDevBudgetDrift(t *testing.T) { + t.Parallel() + + body, err := os.ReadFile("testdata/models_dev.json") + if err != nil { + t.Fatalf("read snapshot: %v", err) + } + var snapshot map[string]map[string]snapshotModel + if err := json.Unmarshal(body, &snapshot); err != nil { + t.Fatalf("parse snapshot: %v", err) + } + + diverging := map[string]bool{} + claims := 0 + for id, entry := range snapshot["alibaba"] { + if entry.claimsBudget() { + claims++ + } + if entry.claimsBudget() != DashScopeTakesThinkingBudget(id) { + diverging[id] = true + } + } + if claims == 0 { + t.Fatal("snapshot carries no budget options for alibaba; regenerate it with go generate ./llms/reasoning") + } + + for _, name := range sorted(diverging) { + if _, known := knownBudgetDrift[name]; !known { + t.Errorf("new budget drift on %s: the catalogue and DashScopeTakesThinkingBudget disagree on "+ + "whether DashScope caps its thinking by a token budget. Measure it against the vendor, "+ + "then either fix the predicate or add it to knownBudgetDrift with the reason", name) + } + } + for _, name := range sortedKeys(knownBudgetDrift) { + if !diverging[name] { + t.Errorf("stale knownBudgetDrift entry %s: the catalogue and our predicate now agree, "+ + "drop the line", name) + } + } +} + +func TestModelsDevEffortDrift(t *testing.T) { + t.Parallel() + + body, err := os.ReadFile("testdata/models_dev.json") + if err != nil { + t.Fatalf("read snapshot: %v", err) + } + var snapshot map[string]map[string]snapshotModel + if err := json.Unmarshal(body, &snapshot); err != nil { + t.Fatalf("parse snapshot: %v", err) + } + + diverging := map[string]bool{} + claims := 0 + for provider, entries := range snapshot { + for id, entry := range entries { + if !entry.claimsEffort() { + continue + } + claims++ + if !AcceptsEffortWire(id) { + diverging[provider+"/"+id] = true + } + } + } + if claims == 0 { + t.Fatal("snapshot carries no effort options; regenerate it with go generate ./llms/reasoning") + } + + for _, name := range sorted(diverging) { + if _, known := knownEffortDrift[name]; !known { + t.Errorf("new effort drift on %s: the catalogue gives it an effort control, our "+ + "AcceptsEffortWire keeps the field off the wire. Measure it against the vendor, "+ + "then either fix the predicate or add it to knownEffortDrift with the reason", name) + } + } + for _, name := range sortedKeys(knownEffortDrift) { + if !diverging[name] { + t.Errorf("stale knownEffortDrift entry %s: the catalogue and our predicate now agree, "+ + "drop the line", name) + } + } +} + +func TestModelsDevSnapshotDrift(t *testing.T) { + t.Parallel() + + body, err := os.ReadFile("testdata/models_dev.json") + if err != nil { + t.Fatalf("read snapshot: %v", err) + } + var snapshot map[string]map[string]snapshotModel + if err := json.Unmarshal(body, &snapshot); err != nil { + t.Fatalf("parse snapshot: %v", err) + } + + diverging := map[string]bool{} + models := 0 + for provider, entries := range snapshot { + for id, entry := range entries { + models++ + if entry.Reasoning != IsReasoningModel(id) { + diverging[provider+"/"+id] = true + } + } + } + if models == 0 { + t.Fatal("snapshot is empty; regenerate it with go generate ./llms/reasoning") + } + + for _, name := range sorted(diverging) { + if _, known := knownDrift[name]; !known { + t.Errorf("new drift on %s: the catalogue and our tables disagree. Measure it against the "+ + "vendor, then add it to knownDrift with the reason", name) + } + } + for _, name := range sortedKeys(knownDrift) { + if !diverging[name] { + t.Errorf("stale knownDrift entry %s: the catalogue and our tables now agree, drop the line", name) + } + } +} + +func sorted(set map[string]bool) []string { + out := make([]string, 0, len(set)) + for k := range set { + out = append(out, k) + } + sort.Strings(out) + return out +} + +func sortedKeys(m map[string]string) []string { + out := make([]string, 0, len(m)) + for k := range m { + out = append(out, k) + } + sort.Strings(out) + return out +} diff --git a/llms/reasoning/name.go b/llms/reasoning/name.go new file mode 100644 index 000000000..53805aa4d --- /dev/null +++ b/llms/reasoning/name.go @@ -0,0 +1,91 @@ +package reasoning + +import "strings" + +// modelSpellings returns the forms a capability rule may match against. Every form +// added here widens the rules that read it, so a new one must never let a rule match +// a model the bare name would not. +func modelSpellings(model string) []string { + m := strings.ToLower(model) + if idx := strings.LastIndex(m, "/"); idx != -1 { + m = m[idx+1:] + } + m = stripFineTuneWrapper(m) + m = stripBedrockRegion(m) + + vendor, bare := splitPlatformPrefix(m) + switch { + case bare == "": + return nil + case vendor == "": + if stripped, ok := stripDashWrittenVendor(bare); ok { + return []string{stripped, bare} + } + if earlier, ok := earlierNames[bare]; ok { + return []string{earlier, bare} + } + return []string{bare} + default: + return []string{bare, vendor + "-" + bare} + } +} + +// dashWrittenVendors are platform prefixes a vendor also publishes with a dash +// where splitPlatformPrefix only reads a dot. Adding one here must be backed by +// a vendor listing that names both spellings as one model. +var dashWrittenVendors = []string{"zai"} + +// earlierNames entries must be backed by a vendor page that serves both names with one model. +var earlierNames = map[string]string{"deepseek-flash": "deepseek-v4-flash"} + +func stripDashWrittenVendor(model string) (string, bool) { + for _, vendor := range dashWrittenVendors { + if rest, ok := strings.CutPrefix(model, vendor+"-"); ok && rest != "" { + return rest, true + } + } + return "", false +} + +func stripBedrockRegion(model string) string { + for _, prefix := range bedrockRegionPrefixes { + if rest, ok := strings.CutPrefix(model, prefix); ok && rest != "" { + return rest + } + } + return model +} + +func splitPlatformPrefix(model string) (vendor, rest string) { + rest = model + for { + idx := strings.Index(rest, ".") + if idx <= 0 || !isAlpha(rest[:idx]) { + return vendor, rest + } + vendor, rest = rest[:idx], rest[idx+1:] + } +} + +// hasGeneration rejects a trailing digit, so it must not be used where the digits +// that follow are a date rather than a later generation. +func hasGeneration(model, generation string) bool { + rest, ok := strings.CutPrefix(model, generation) + if !ok { + return false + } + return rest == "" || rest[0] < '0' || rest[0] > '9' +} + +func stripFineTuneWrapper(model string) string { + rest, ok := strings.CutPrefix(model, "ft:") + if !ok { + return model + } + base, _, _ := strings.Cut(rest, ":") + if base == "" { + return model + } + + return base +} diff --git a/llms/reasoning/name_finetune_test.go b/llms/reasoning/name_finetune_test.go new file mode 100644 index 000000000..49b289c21 --- /dev/null +++ b/llms/reasoning/name_finetune_test.go @@ -0,0 +1,38 @@ +package reasoning + +import "testing" + +func TestAFineTunedNameIsClassifiedAsItsBaseModel(t *testing.T) { + const ( + base = "gpt-4o-2024-08-06" + fineTuned = "ft:gpt-4o-2024-08-06:acme::9xYzAbCd" + ) + + if RejectsTopK(base) != RejectsTopK(fineTuned) { + t.Errorf("RejectsTopK: base %v, fine-tuned %v", RejectsTopK(base), RejectsTopK(fineTuned)) + } + if RejectsRepetitionPenalty(base) != RejectsRepetitionPenalty(fineTuned) { + t.Error("RejectsRepetitionPenalty disagrees between a base model and its fine-tune") + } + if !RejectsTopK(fineTuned) { + t.Error("top_k must stay off the wire for a fine-tune of an OpenAI model") + } +} + +func TestTheWrapperIsStrippedWithAndWithoutTheTrailingFields(t *testing.T) { + for _, model := range []string{ + "ft:gpt-4o-2024-08-06:acme::9xYzAbCd", + "ft:gpt-4o-2024-08-06", + "ft:o3-mini:acme::1", + } { + if !RejectsTopK(model) { + t.Errorf("%s: top_k must stay off the wire, as it does for the base model", model) + } + } + if RejectsTopK("ft:") { + t.Error("an empty wrapper names no model and must not classify as one") + } + if RejectsTopK("ft:claude-opus-5:acme::1") { + t.Error("a fine-tune of another vendor's model is not an OpenAI name") + } +} diff --git a/llms/reasoning/name_forms_test.go b/llms/reasoning/name_forms_test.go new file mode 100644 index 000000000..96412c8fc --- /dev/null +++ b/llms/reasoning/name_forms_test.go @@ -0,0 +1,76 @@ +package reasoning + +import ( + "fmt" + "testing" +) + +func capabilityAnswers(model string) string { + caps := OpenAIReasoningCapsFor(model) + return fmt.Sprintf( + "reasoning=%v likely=%v claude=%d openaiKnown=%v openaiEfforts=%v gemini=%v optIn=%v off=%v", + IsReasoningModel(model), LikelyReasoningModel(model), ClaudeReasoningKindFor(model), + caps.Known, caps.Efforts, + GeminiSupportsThinking(model), ThinkingOptIn(model), + ResolveOff(model, ProviderUnknown)) +} + +func TestEverySpellingResolvesToOneEntry(t *testing.T) { + t.Parallel() + + for _, group := range [][]string{ + { + "claude-sonnet-4-5", + "claude-sonnet-4.5", + "anthropic/claude-sonnet-4-5", + "us.anthropic.claude-sonnet-4-5-20250929-v1:0", + "claude-sonnet-4-5@20250929", + "claude-sonnet-4-5-20250929", + "projects/p/locations/l/publishers/anthropic/models/claude-sonnet-4-5", + }, + {"gpt-5.4", "openai/gpt-5.4", "GPT-5.4", "azure.gpt-5.4"}, + {"o3", "openai/o3", "O3"}, + {"gpt-oss-120b", "openai.gpt-oss-120b-1:0", "openai/gpt-oss-120b", "us-gov.openai.gpt-oss-120b-1:0"}, + { + "gemini-2.5-flash", + "google/gemini-2.5-flash", + "projects/p/locations/l/publishers/google/models/gemini-2.5-flash", + }, + {"deepseek-r1", "deepseek.r1-v1:0", "us.deepseek.r1-v1:0"}, + {"deepseek-v3.2", "deepseek.v3.2", "us.deepseek.v3.2"}, + {"deepseek-flash", "deepseek-v4-flash", "deepseek-v4-flash-vision-exp", "deepseek/deepseek-flash", "DeepSeek-Flash"}, + {"glm-4.7", "zai.glm-4.7"}, + {"minimax-m2", "minimax.minimax-m2"}, + {"kimi-k2-thinking", "moonshot.kimi-k2-thinking"}, + {"mistral-medium-3", "mistralai/mistral-medium-3"}, + {"grok-4.7", "xai/grok-4.7", "XAI/Grok-4.7", "openrouter/x-ai/grok-4.7", "us.xai.grok-4.7", "us-gov.xai.grok-4.7"}, + } { + canonical := group[0] + want := capabilityAnswers(canonical) + + for _, form := range group[1:] { + t.Run(form, func(t *testing.T) { + t.Parallel() + if got := capabilityAnswers(form); got != want { + t.Errorf("a spelling of %s must resolve to the same entry\n canonical: %s\n form: %s", + canonical, want, got) + } + }) + } + } +} + +func TestASeparatorOnlyReferenceMatchesNothing(t *testing.T) { + t.Parallel() + + for _, model := range []string{"us.", "us.anthropic.", "azure.", "openai/", ""} { + for _, form := range modelSpellings(model) { + if form == "" { + t.Errorf("modelSpellings(%q) yields an empty form, which every substring rule matches", model) + } + } + if IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = true: a reference with no model name cannot be a reasoning model", model) + } + } +} diff --git a/llms/reasoning/off.go b/llms/reasoning/off.go index d89cc6cda..bd8968cfe 100644 --- a/llms/reasoning/off.go +++ b/llms/reasoning/off.go @@ -15,6 +15,10 @@ const ( ProviderBedrock ProviderOpenAI ProviderGoogleAI + ProviderOllama + + // providerCount must stay last: a new provider goes above it. + providerCount ) // OffWire is how a provider expresses "thinking off" for a given model. It is the @@ -30,8 +34,16 @@ const ( OffDisableClaude // OffZeroBudget → Google thinkingBudget:0. OffZeroBudget + // OffMinimalLevel → Google thinking_level:"minimal". + OffMinimalLevel // OffEffortNone → OpenAI reasoning_effort:"none". OffEffortNone + // OffDisableDashScope → DashScope enable_thinking:false. + OffDisableDashScope + // OffDisableThinkingObject → thinking:{type:"disabled"} on an OpenAI-shaped door. + OffDisableThinkingObject + // OffDisableThinkBool → Ollama think:false. + OffDisableThinkBool // OffUnsupported: a known mandatory-thinking model that cannot be disabled // (adaptive-only Claude, OpenAI o-series). The adapter returns a typed error. OffUnsupported @@ -47,20 +59,19 @@ func (e *ErrReasoningOffUnsupported) Error() string { // ResolveOff decides how to disable thinking for a model on a provider, from the // same capability tables the enable path reads. Unknown models get the provider's -// best-effort disable wire (optimistic: attempt it and let an API error be the -// backstop) rather than a silent omit, so a caller's explicit "off" is honored -// wherever the provider can honor it. +// best-effort disable wire rather than a silent omit, so a caller's explicit +// "off" is honored wherever the provider can honor it. func ResolveOff(model string, p Provider) OffWire { if isClaudeModel(model) { switch { case ClaudeThinkingAlwaysOn(model): return OffUnsupported // Fable 5 / Mythos 5: thinking cannot be disabled case ClaudeThinkingDefaultsOn(model): - // Only Anthropic-operated platforms accept thinking:{disabled} here. On - // Amazon Bedrock the adaptive-only default-on models (e.g. Sonnet 5) keep - // thinking always on, so a disable is rejected — report it as unsupported. - if p == ProviderBedrock { - return OffUnsupported + if p == ProviderOpenAI { + if !ClaudeThinkingObjectRoute(model) { + return OffUnsupported + } + return OffDisableThinkingObject } return OffDisableClaude default: @@ -69,10 +80,12 @@ func ResolveOff(model string, p Provider) OffWire { } switch p { + case ProviderOllama: + if takesOnlyOllamaLevels(model) { + return OffUnsupported + } + return OffDisableThinkBool case ProviderGoogleAI: - // Gemini 3.x and Gemini 2.5 Pro cannot be disabled (budget:0 is ignored / - // rejected); Gemini 2.5 Flash / Flash-Lite, Gemma 4, and unknowns disable - // via thinkingBudget:0. if !GeminiCanDisable(model) { return OffUnsupported } @@ -81,36 +94,155 @@ func ResolveOff(model string, p Provider) OffWire { if geminiKnownNonThinking(model) { return OffOmit } + if GeminiTogglesThinkingByLevel(model) || GeminiUsesThinkingLevel(model) { + return OffMinimalLevel + } return OffZeroBudget case ProviderOpenAI: - if !IsReasoningModel(model) { - return OffOmit // non-reasoning model does not think - } - // A model known to reject disabling (o-series, GPT-5 Pro) is unsupported; - // unknown models stay optimistic and attempt "none", with a 400 backstop. - if caps := OpenAIReasoningCapsFor(model); caps.Known && !caps.CanDisable { + return openAIOffWire(model) + default: + if mandatoryThinking(model) || IsGptOssModel(model) { return OffUnsupported } - return OffEffortNone - default: // Bedrock non-Claude and everything else: no clean disable signal — omit. return OffOmit } } func isClaudeModel(model string) bool { - return strings.Contains(strings.ToLower(model), "claude") + return strings.Contains(baseModelName(model), "claude") } // openAIMandatoryReasoning reports the OpenAI reasoning families that cannot be // hard-disabled (their effort floor is minimal/low). GPT-5.x and unknowns are // treated as disablable and left to the API to reject if wrong. func openAIMandatoryReasoning(model string) bool { - m := strings.ToLower(model) - if idx := strings.LastIndex(m, "/"); idx != -1 { - m = m[idx+1:] + for _, form := range modelSpellings(model) { + if hasGeneration(form, "o1") || + hasGeneration(form, "o3") || + hasGeneration(form, "o4-mini") { + return true + } + } + return false +} + +func offByOmission(model string) bool { + if QwenThinkingEnabledByFlag(model) { + return true + } + for _, form := range modelSpellings(model) { + for _, family := range magistralSpellings { + if strings.HasPrefix(form, family) { + return true + } + } + } + return false +} + +// magistralSpellings mirrors the alias group of magistral in testdata/mistral_models.json. +var magistralSpellings = []string{"magistral", "mistral-medium", "mistral-small", "mistral-vibe-cli"} + +func disablesByThinkingObject(model string) bool { + for _, form := range modelSpellings(model) { + if hasGeneration(form, "minimax-m3") { + return true + } + for _, generation := range []string{ + "glm-4.5", "glm-4.6", "glm-4.7", "glm-5", "glm-5.1", + "kimi-k2.5", "kimi-k2.6", "deepseek-v4", "deepseek-flash", + } { + if hasGeneration(form, generation) { + return true + } + } + } + return false +} + +func thinkingObjectOffOnHost(model string) OffWire { + if dashScopeGuestSpelling(model) != "" { + return OffDisableDashScope + } + if ServedByMistral(model) { + return OffOmit + } + return OffDisableThinkingObject +} + +func openAIOffWire(model string) OffWire { + if !IsReasoningModel(model) { + return OffOmit // non-reasoning model does not think + } + if mandatoryThinking(model) { + return OffUnsupported + } + if offByOmission(model) { + return OffOmit + } + if QwenThinkingRequiresStream(model) || QwenThinkingOffByFlag(model) { + return OffDisableDashScope + } + if disablesByThinkingObject(model) { + return thinkingObjectOffOnHost(model) + } + // The disable token rides on the effort field, so a door that refuses that + // field cannot express "off" at all. + if caps := OpenAIReasoningCapsFor(model); caps.Known && !caps.CanDisable { + return OffUnsupported + } + if !AcceptsEffortWire(model) { + return OffUnsupported + } + return OffEffortNone +} + +// OllamaEffortsFor returns the think levels a model takes on the ollama door; nil +// when Ollama documents no level set for that model. +func OllamaEffortsFor(model string) []string { + if takesOnlyOllamaLevels(model) { + return []string{"low", "medium", "high"} + } + return nil +} + +func takesOnlyOllamaLevels(model string) bool { + for _, form := range modelSpellings(model) { + if strings.HasPrefix(form, "gpt-oss") { + return true + } + } + return false +} + +func mandatoryThinking(model string) bool { + for _, form := range modelSpellings(model) { + if strings.HasPrefix(form, "glm-5.3") || + hasGeneration(form, "glm-5-3") || + form == "grok-build-latest" || + strings.HasPrefix(form, "grok-4.5") || + strings.HasPrefix(form, "grok-4.6") || + strings.HasPrefix(form, "grok-4.7") || + strings.HasPrefix(form, "minimax-m2") || + form == "glm-latest" || + form == "glm-flash-latest" || + strings.HasPrefix(form, "kimi-k2-thinking") || + strings.HasPrefix(form, "kimi-k2.7-code") || + hasGeneration(form, "kimi-k3") || + hasGeneration(form, "qwen3.8-2.4t-a95b") || + strings.HasPrefix(form, "gpt-oss") || + strings.HasPrefix(form, "aion-") || + strings.HasPrefix(form, "step-3") || + strings.HasPrefix(form, "reka-flash-3") || + strings.HasPrefix(form, "fugu-ultra") || + strings.HasPrefix(form, "nex-n2") || + strings.HasPrefix(form, "lfm-2.5") || + strings.HasPrefix(form, "deepseek-r1") || + strings.HasPrefix(form, "deepseek-reasoner") || + strings.Contains(form, "trinity-large-thinking") { + return true + } } - return strings.HasPrefix(m, "o1") || - strings.HasPrefix(m, "o3") || - strings.HasPrefix(m, "o4-mini") + return false } diff --git a/llms/reasoning/off_test.go b/llms/reasoning/off_test.go index 35b6b66c2..23a87763d 100644 --- a/llms/reasoning/off_test.go +++ b/llms/reasoning/off_test.go @@ -11,24 +11,42 @@ func TestResolveOff(t *testing.T) { }{ {"claude-fable-5", ProviderAnthropic, OffUnsupported}, {"us.anthropic.claude-mythos-5", ProviderBedrock, OffUnsupported}, - {"claude-sonnet-5", ProviderAnthropic, OffDisableClaude}, // on by default, disablable on Anthropic - {"us.anthropic.claude-sonnet-5", ProviderBedrock, OffUnsupported}, // always on on Bedrock, not disablable - {"claude-opus-5", ProviderAnthropic, OffDisableClaude}, // on by default, disablable on Anthropic - {"us.anthropic.claude-opus-5", ProviderBedrock, OffUnsupported}, // always on on Bedrock, not disablable - {"claude-opus-4-8", ProviderAnthropic, OffOmit}, // off by default - {"claude-sonnet-4-5", ProviderBedrock, OffOmit}, // off by default - {"claude-3-5-haiku", ProviderAnthropic, OffOmit}, // no thinking + {"claude-sonnet-5", ProviderAnthropic, OffDisableClaude}, + {"us.anthropic.claude-sonnet-5", ProviderBedrock, OffDisableClaude}, + {"anthropic/claude-sonnet-5", ProviderOpenAI, OffDisableThinkingObject}, + {"anthropic/claude-opus-5", ProviderOpenAI, OffDisableThinkingObject}, + {"claude-sonnet-5", ProviderOpenAI, OffDisableThinkingObject}, + {"bedrock/us.anthropic.claude-sonnet-5", ProviderOpenAI, OffDisableThinkingObject}, + {"vertex_ai/claude-opus-5", ProviderOpenAI, OffDisableThinkingObject}, + {"deepinfra/anthropic/claude-opus-5", ProviderOpenAI, OffUnsupported}, + {"perplexity/anthropic/claude-sonnet-5", ProviderOpenAI, OffUnsupported}, + {"openrouter/anthropic/claude-sonnet-5", ProviderOpenAI, OffUnsupported}, + {"azure_ai/claude-opus-5", ProviderOpenAI, OffUnsupported}, + {"anthropic/claude-fable-5", ProviderOpenAI, OffUnsupported}, + {"anthropic/claude-opus-4-8", ProviderOpenAI, OffOmit}, + {"claude-opus-5", ProviderAnthropic, OffDisableClaude}, + {"us.anthropic.claude-opus-5", ProviderBedrock, OffDisableClaude}, + {"claude-opus-4-8", ProviderAnthropic, OffOmit}, // off by default + {"claude-sonnet-4-5", ProviderBedrock, OffOmit}, // off by default + {"claude-3-5-haiku", ProviderAnthropic, OffOmit}, // no thinking {"gemini-2.5-flash", ProviderGoogleAI, OffZeroBudget}, {"gemini-2.5-flash-lite", ProviderGoogleAI, OffZeroBudget}, {"gemini-2.5-pro", ProviderGoogleAI, OffUnsupported}, // Pro cannot disable thinking - {"gemini-3.1-pro", ProviderGoogleAI, OffUnsupported}, // 3.x has no full off + {"gemini-3.1-pro", ProviderGoogleAI, OffUnsupported}, {"gemini-3.1-pro-preview", ProviderGoogleAI, OffUnsupported}, {"gemini-3.1-pro-preview-customtools", ProviderGoogleAI, OffUnsupported}, - {"gemini-3.1-flash-lite", ProviderGoogleAI, OffUnsupported}, - {"gemini-3.5-flash", ProviderGoogleAI, OffUnsupported}, - {"gemini-3-flash", ProviderGoogleAI, OffUnsupported}, - {"gemma-4-31b-it", ProviderGoogleAI, OffZeroBudget}, - {"gemma-4-26b-a4b-it", ProviderGoogleAI, OffZeroBudget}, + {"gemini-3.1-flash-lite", ProviderGoogleAI, OffMinimalLevel}, + {"gemini-3-flash", ProviderGoogleAI, OffMinimalLevel}, + {"gemini-3-flash-preview", ProviderGoogleAI, OffMinimalLevel}, + {"gemini-3.5-flash", ProviderGoogleAI, OffMinimalLevel}, + {"gemini-3.5-flash-lite", ProviderGoogleAI, OffMinimalLevel}, + {"models/gemini-3.5-flash", ProviderGoogleAI, OffMinimalLevel}, + {"gemini-3.6-flash", ProviderGoogleAI, OffMinimalLevel}, + {"gemini-3.7-flash", ProviderGoogleAI, OffUnsupported}, + {"gemini-3.8-flash", ProviderGoogleAI, OffUnsupported}, + {"gemini-3.5-pro", ProviderGoogleAI, OffUnsupported}, + {"gemma-4-31b-it", ProviderGoogleAI, OffMinimalLevel}, + {"gemma-4-26b-a4b-it", ProviderGoogleAI, OffMinimalLevel}, // Pre-thinking Gemini/Gemma never think: omit rather than send budget:0. {"gemini-2.0-flash", ProviderGoogleAI, OffOmit}, {"gemini-1.5-pro", ProviderGoogleAI, OffOmit}, @@ -46,3 +64,93 @@ func TestResolveOff(t *testing.T) { } } } + +func TestVendorsThatDisableWithAThinkingObject(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "glm-4.5", "glm-4.6", "glm-4.7", "glm-5", "glm-5-turbo", "glm-5.1", "glm-5.2", + "minimax-m3", "deepseek-v4-flash", "deepseek-v4-pro", "deepseek-flash", "deepseek/deepseek-flash", + "zai/glm-5.2", "deepseek/deepseek-v4-flash", + "kimi-k2.5", "moonshot/kimi-k2.5", + } { + if got := ResolveOff(model, ProviderOpenAI); got != OffDisableThinkingObject { + t.Errorf("ResolveOff(%q) = %v, want the thinking object: the effort token is either "+ + "ignored by the vendor or cut before it", model, got) + } + } + + for model, want := range map[string]OffWire{ + "glm-5.3": OffUnsupported, + "minimax-m2": OffUnsupported, + "kimi-k3": OffUnsupported, + } { + if got := ResolveOff(model, ProviderOpenAI); got != want { + t.Errorf("ResolveOff(%q) = %v, want %v", model, got, want) + } + } +} + +func TestDashScopeGuestsSpellOffWithTheDashScopeFlag(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "dashscope/glm-5.2", "dashscope/glm-5.1", "dashscope/glm-5", "dashscope/glm-4.7", + "dashscope/glm-4.6", "dashscope/glm-4.5", + "dashscope/deepseek-v4-pro", "dashscope/deepseek-v4-flash", "dashscope/deepseek-v4-flash-0731", + "dashscope/kimi-k2.6", "dashscope/kimi-k2.5", + } { + if got := ResolveOff(model, ProviderOpenAI); got != OffDisableDashScope { + t.Errorf("ResolveOff(%q, openai) = %v, want OffDisableDashScope", model, got) + } + } +} + +func TestGLMServedByMistralSpellsOffByOmission(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "zai-glm-5-2", "mistral/zai-glm-5-2", "glm-5-2", "mistral/glm-5-2", + } { + if got := ResolveOff(model, ProviderOpenAI); got != OffOmit { + t.Errorf("ResolveOff(%q, openai) = %v, want OffOmit", model, got) + } + } +} + +func TestGLM53IsRefusedUnderTheSpellingMistralServesItBy(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "glm-5.3", "glm-5.3-flash", "glm-5-3", "zai-glm-5-3", "mistral/zai-glm-5-3", "mistral/glm-5-3", + } { + if got := ResolveOff(model, ProviderOpenAI); got != OffUnsupported { + t.Errorf("ResolveOff(%q, openai) = %v, want OffUnsupported: the model answers with "+ + "reasoning_content when no reasoning field is sent, so omitting the field is not \"off\"", model, got) + } + } +} + +func TestAlwaysThinkingFamiliesAreRefusedOnBedrockToo(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + want OffWire + }{ + {"kimi-k3", OffUnsupported}, + {"moonshot.kimi-k2-thinking", OffUnsupported}, + {"us.deepseek.r1-v1:0", OffUnsupported}, + {"openai.gpt-oss-120b-1:0", OffUnsupported}, + {"us-gov.openai.gpt-oss-120b-1:0", OffUnsupported}, + {"us-gov.openai.gpt-oss-20b-1:0", OffUnsupported}, + {"us.xai.grok-4.6", OffUnsupported}, + {"glm-5.3", OffUnsupported}, + {"us.amazon.nova-2-lite-v1:0", OffOmit}, + {"xai.grok-4.3", OffOmit}, + } { + if got := ResolveOff(tc.model, ProviderBedrock); got != tc.want { + t.Errorf("ResolveOff(%q, ProviderBedrock) = %v, want %v", tc.model, got, tc.want) + } + } +} diff --git a/llms/reasoning/openai_capability.go b/llms/reasoning/openai_capability.go index 0feb0af13..f2217b8f2 100644 --- a/llms/reasoning/openai_capability.go +++ b/llms/reasoning/openai_capability.go @@ -1,6 +1,10 @@ package reasoning -import "strings" +import ( + "fmt" + "slices" + "strings" +) // openAIEffortRank orders OpenAI reasoning efforts so a requested effort can be // clamped to a model's ceiling. It does not include "none", which is the disable @@ -15,8 +19,8 @@ var openAIEffortRank = map[string]int{ } // OpenAIReasoningCaps is a best-effort static projection of which reasoning -// efforts an OpenAI model accepts, so callers avoid sending a value the API would -// reject with a 400. It asserts only documented, non-default constraints; every +// efforts a model reachable on an OpenAI-compatible door accepts, so callers avoid +// sending a value the API would reject with a 400. It asserts only documented, non-default constraints; every // other model returns Known=false and is treated optimistically (send as // requested, let the API be the arbiter), preserving prior pass-through behavior. type OpenAIReasoningCaps struct { @@ -29,44 +33,140 @@ type OpenAIReasoningCaps struct { Efforts []string } -// ClampEffort lowers a requested effort to what the model accepts: an effort -// above the model's ceiling drops to the ceiling, and a model that accepts a -// single effort (e.g. GPT-5 Pro accepts only "high") pins to it. Unknown models -// and the empty effort are returned unchanged. +// ClampEffort moves a requested effort to one the model accepts: above the +// ceiling drops to the ceiling, below the floor rises to the floor, and anything +// the set does not list steps down to the nearest level it does. Unknown models +// and efforts outside the scale are returned unchanged. func (c OpenAIReasoningCaps) ClampEffort(effort string) string { - if !c.Known || effort == "" || len(c.Efforts) == 0 { + want, ranked := openAIEffortRank[effort] + if !c.Known || !ranked || len(c.Efforts) == 0 { return effort } - if len(c.Efforts) == 1 { - return c.Efforts[0] + if slices.Contains(c.Efforts, effort) { + return effort } - ceiling := c.Efforts[len(c.Efforts)-1] - if openAIEffortRank[effort] > openAIEffortRank[ceiling] { - return ceiling + + accepted := c.Efforts[0] + for _, level := range c.Efforts { + if openAIEffortRank[level] <= want { + accepted = level + } } - return effort + return accepted } -// OpenAIReasoningCapsFor classifies an OpenAI reasoning model. Only models with -// documented constraints tighter than the general GPT-5 surface are listed; -// anything else (including newer models) returns Known=false so the caller stays -// optimistic. +// OpenAIReasoningCapsFor classifies a reasoning model by the effort set its +// generation accepts on /chat/completions. A model outside the listed +// generations (including newer ones) returns Known=false so the caller stays +// optimistic and the API arbitrates. func OpenAIReasoningCapsFor(model string) OpenAIReasoningCaps { - m := strings.ToLower(model) - if idx := strings.LastIndex(m, "/"); idx != -1 { - m = m[idx+1:] // strip a proxy prefix such as "openai/" + for _, form := range modelSpellings(model) { + if caps := openAICapsForForm(form); caps.Known { + return caps + } + } + return OpenAIReasoningCaps{Known: false} +} + +func openAIChatVariant(m string) bool { + return strings.HasPrefix(m, "gpt-") && strings.Contains(m, "-chat") +} + +func openAICapsForForm(m string) OpenAIReasoningCaps { + if openAIChatVariant(m) { + return OpenAIReasoningCaps{Known: false} } switch { - case strings.HasPrefix(m, "gpt-5-pro"): - // GPT-5 Pro accepts only high and cannot be disabled. + case openAIProVariant(m): + if openAIXHighCeiling(m) { + return OpenAIReasoningCaps{Known: true, CanDisable: false, Efforts: []string{"medium", "high", "xhigh"}} + } return OpenAIReasoningCaps{Known: true, CanDisable: false, Efforts: []string{"high"}} case openAIMandatoryReasoning(m): - // o-series floor is minimal/low with no hard off; expose low..high. return OpenAIReasoningCaps{Known: true, CanDisable: false, Efforts: []string{"low", "medium", "high"}} - case strings.HasPrefix(m, "gpt-5.4-mini"): - // GPT-5.4 mini accepts none..xhigh but not max. + case openAIGPT5Base(m): + return OpenAIReasoningCaps{Known: true, CanDisable: false, Efforts: []string{"minimal", "low", "medium", "high"}} + case hasGeneration(m, "gpt-5.1"): + return OpenAIReasoningCaps{Known: true, CanDisable: true, Efforts: []string{"low", "medium", "high"}} + case hasGeneration(m, "gpt-6-astra"): + return OpenAIReasoningCaps{Known: true, CanDisable: false, Efforts: []string{"low", "medium", "high", "xhigh"}} + case hasGeneration(m, "gpt-6-sol") || hasGeneration(m, "gpt-6-luna"): return OpenAIReasoningCaps{Known: true, CanDisable: true, Efforts: []string{"low", "medium", "high", "xhigh"}} + case openAIXHighCeiling(m): + return OpenAIReasoningCaps{Known: true, CanDisable: true, Efforts: []string{"low", "medium", "high", "xhigh"}} + case nonOpenAILowHighMax(m): + return OpenAIReasoningCaps{Known: true, CanDisable: false, Efforts: []string{"low", "high", "max"}} + case mistralReasons(m): + return OpenAIReasoningCaps{Known: true, CanDisable: true, Efforts: []string{"high"}} default: return OpenAIReasoningCaps{Known: false} } } + +func openAIProVariant(m string) bool { + return hasGeneration(m, "gpt-5") && strings.Contains(m, "-pro") +} + +func openAIGPT5Base(m string) bool { + return m == "gpt-5" || strings.HasPrefix(m, "gpt-5-20") || + hasGeneration(m, "gpt-5-mini") || hasGeneration(m, "gpt-5-nano") +} + +func nonOpenAILowHighMax(m string) bool { + return hasGeneration(m, "kimi-k3") || hasGeneration(m, "glm-5.3") +} + +func openAIXHighCeiling(m string) bool { + for _, generation := range []string{"gpt-5.2", "gpt-5.4", "gpt-5.5", "gpt-5.6"} { + if hasGeneration(m, generation) { + return true + } + } + return false +} + +// OpenAIThinkingOptIn reports the generations that reason only when an effort +// asks them to. +func OpenAIThinkingOptIn(model string) bool { + for _, form := range modelSpellings(model) { + if openAIProVariant(form) { + continue + } + for _, generation := range []string{"gpt-5.1", "gpt-5.2", "gpt-5.4"} { + if hasGeneration(form, generation) { + return true + } + } + } + return false +} + +// OpenAIDisableEffort turns thinking off on the wire. It is not llms.ReasoningNone, +// which is the empty string and instead omits the field. +const OpenAIDisableEffort = "none" + +// ChatToolsUnsupported reports whether the vendor serves no function tools for +// the model on /chat/completions. OpenAI states it for GPT-6 Astra: tools ride +// on the responses API only, and the model has no effort level that turns +// thinking off to trade for them. +func ChatToolsUnsupported(model string) bool { + for _, form := range modelSpellings(model) { + if hasGeneration(form, "gpt-6-astra") { + return true + } + } + return false +} + +// ErrChatToolsUnsupported reports a request that carries function tools for a +// model whose chat completions endpoint does not serve them. +type ErrChatToolsUnsupported struct { + Model string +} + +func (e *ErrChatToolsUnsupported) Error() string { + return fmt.Sprintf( + "model %q carries function tools on chat completions, where the vendor does not serve them; "+ + "the responses API is the only door for tools on this model", + e.Model) +} diff --git a/llms/reasoning/openai_capability_test.go b/llms/reasoning/openai_capability_test.go index af86892c6..2397dc085 100644 --- a/llms/reasoning/openai_capability_test.go +++ b/llms/reasoning/openai_capability_test.go @@ -1,6 +1,9 @@ package reasoning -import "testing" +import ( + "slices" + "testing" +) func TestOpenAIReasoningCapsFor(t *testing.T) { t.Parallel() @@ -8,16 +11,28 @@ func TestOpenAIReasoningCapsFor(t *testing.T) { model string known bool canDisable bool - ceiling string // highest accepted effort, "" when unknown + efforts []string }{ - {"gpt-5-pro", true, false, "high"}, - {"o3-mini", true, false, "high"}, - {"o1-preview", true, false, "high"}, - {"gpt-5.4-mini", true, true, "xhigh"}, - {"openai/gpt-5.4-mini", true, true, "xhigh"}, // proxy prefix stripped - {"gpt-5.6", false, false, ""}, // unclassified -> optimistic - {"gpt-5.5", false, false, ""}, - {"gpt-4.1", false, false, ""}, + {"gpt-5-pro", true, false, []string{"high"}}, + {"gpt-5.2-pro", true, false, []string{"medium", "high", "xhigh"}}, + {"gpt-5.4-pro", true, false, []string{"medium", "high", "xhigh"}}, + {"gpt-5.5-pro", true, false, []string{"medium", "high", "xhigh"}}, + {"o3-mini", true, false, []string{"low", "medium", "high"}}, + {"o1-preview", true, false, []string{"low", "medium", "high"}}, + {"o4-mini", true, false, []string{"low", "medium", "high"}}, + {"gpt-5", true, false, []string{"minimal", "low", "medium", "high"}}, + {"gpt-5-2025-08-07", true, false, []string{"minimal", "low", "medium", "high"}}, + {"gpt-5-mini", true, false, []string{"minimal", "low", "medium", "high"}}, + {"gpt-5-nano", true, false, []string{"minimal", "low", "medium", "high"}}, + {"gpt-5.1", true, true, []string{"low", "medium", "high"}}, + {"gpt-5.2", true, true, []string{"low", "medium", "high", "xhigh"}}, + {"gpt-5.4", true, true, []string{"low", "medium", "high", "xhigh"}}, + {"gpt-5.4-mini", true, true, []string{"low", "medium", "high", "xhigh"}}, + {"openai/gpt-5.4-mini", true, true, []string{"low", "medium", "high", "xhigh"}}, // proxy prefix stripped + {"gpt-5.5", true, true, []string{"low", "medium", "high", "xhigh"}}, + {"gpt-5.6-terra", true, true, []string{"low", "medium", "high", "xhigh"}}, + {"gpt-5.7", false, false, nil}, // unclassified -> optimistic + {"gpt-4.1", false, false, nil}, } for _, tc := range cases { caps := OpenAIReasoningCapsFor(tc.model) @@ -27,12 +42,8 @@ func TestOpenAIReasoningCapsFor(t *testing.T) { if caps.Known && caps.CanDisable != tc.canDisable { t.Errorf("%q CanDisable = %v, want %v", tc.model, caps.CanDisable, tc.canDisable) } - ceiling := "" - if len(caps.Efforts) > 0 { - ceiling = caps.Efforts[len(caps.Efforts)-1] - } - if ceiling != tc.ceiling { - t.Errorf("%q ceiling = %q, want %q", tc.model, ceiling, tc.ceiling) + if !slices.Equal(caps.Efforts, tc.efforts) { + t.Errorf("%q Efforts = %v, want %v", tc.model, caps.Efforts, tc.efforts) } } } @@ -48,13 +59,16 @@ func TestOpenAIReasoningCaps_ClampEffort(t *testing.T) { {"gpt-5-pro", "low", "high"}, {"gpt-5-pro", "max", "high"}, {"gpt-5-pro", "high", "high"}, - // GPT-5.4 mini caps at xhigh; max drops to xhigh, lower values pass. + {"o3", "xhigh", "high"}, + {"o4-mini", "max", "high"}, + {"gpt-5", "xhigh", "high"}, + {"gpt-5-mini", "minimal", "minimal"}, + {"gpt-5.1", "xhigh", "high"}, {"gpt-5.4-mini", "max", "xhigh"}, - {"gpt-5.4-mini", "xhigh", "xhigh"}, + {"gpt-5.6-terra", "xhigh", "xhigh"}, {"gpt-5.4-mini", "medium", "medium"}, // Unknown model: unchanged (optimistic). - {"gpt-5.6", "max", "max"}, - {"gpt-5.5", "xhigh", "xhigh"}, + {"gpt-5.7", "max", "max"}, // Empty effort untouched. {"gpt-5-pro", "", ""}, } @@ -64,3 +78,162 @@ func TestOpenAIReasoningCaps_ClampEffort(t *testing.T) { } } } + +func TestResolveOffOpenAIGeneration(t *testing.T) { + t.Parallel() + cases := []struct { + model string + want OffWire + }{ + {"gpt-5", OffUnsupported}, + {"gpt-5-mini", OffUnsupported}, + {"gpt-5-nano", OffUnsupported}, + {"o3", OffUnsupported}, + {"gpt-5.1", OffEffortNone}, + {"gpt-5.4-mini", OffEffortNone}, + {"gpt-5.6-terra", OffEffortNone}, + } + for _, tc := range cases { + if got := ResolveOff(tc.model, ProviderOpenAI); got != tc.want { + t.Errorf("ResolveOff(%q) = %v, want %v", tc.model, got, tc.want) + } + } +} + +func TestClampEffortMovesToAnAcceptedLevel(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + effort string + want string + }{ + {"gpt-5.2", "minimal", "low"}, + {"gpt-5.2", "max", "xhigh"}, + {"gpt-5.2", "medium", "medium"}, + {"gpt-5", "minimal", "minimal"}, + {"gpt-5", "xhigh", "high"}, + {"gpt-5-pro", "low", "high"}, + {"gpt-5-pro", "max", "high"}, + {"gpt-5.1", "xhigh", "high"}, + {"claude-opus-4-6", "xhigh", "xhigh"}, + {"gpt-5.2", "", ""}, + {"gpt-5.2", "turbo", "turbo"}, + } { + if got := OpenAIReasoningCapsFor(tc.model).ClampEffort(tc.effort); got != tc.want { + t.Errorf("%s.ClampEffort(%q) = %q, want %q", tc.model, tc.effort, got, tc.want) + } + } +} + +func TestAGenerationDoesNotAnswerForALaterOne(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + known bool + why string + }{ + {"gpt-5.1", true, "the generation itself"}, + {"gpt-5.10", false, "a later generation whose name extends gpt-5.1"}, + {"gpt-5.2", true, "the generation itself"}, + {"gpt-5.20", false, "a later generation whose name extends gpt-5.2"}, + {"gpt-5", true, "the generation itself"}, + {"gpt-51", false, "a name that merely starts with gpt-5"}, + {"o1", true, "the generation itself"}, + {"o10", false, "a later generation whose name extends o1"}, + {"o3", true, "the generation itself"}, + {"o30", false, "a later generation whose name extends o3"}, + {"gpt-5-2025-08-07", true, "a dated snapshot: the digits after gpt-5-20 are a date, not a generation"}, + {"gpt-5-mini-2025-08-07", true, "a dated snapshot of a named variant"}, + {"o4-mini-2025-04-16", true, "a dated snapshot of the o-series"}, + } { + t.Run(tc.model, func(t *testing.T) { + t.Parallel() + if got := OpenAIReasoningCapsFor(tc.model).Known; got != tc.known { + t.Errorf("OpenAIReasoningCapsFor(%q).Known = %v, want %v — %s", + tc.model, got, tc.known, tc.why) + } + }) + } +} + +func TestTheDocumentedMaxEffortIsNotOnTheWireForGPT56(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gpt-5.6", "gpt-5.6-sol", "gpt-5.6-terra"} { + caps := OpenAIReasoningCapsFor(model) + if got := caps.ClampEffort("max"); got != "xhigh" { + t.Errorf("ClampEffort(%q, max) = %q, want xhigh: the vendor enumerates its own set as "+ + "none, low, medium, high, xhigh and refuses max with 400", model, got) + } + if slices.Contains(caps.Efforts, "max") { + t.Errorf("%s advertises max, which the vendor refuses", model) + } + } +} + +func TestAClosedVendorEnumClampsAndAMappedOneDoesNot(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + efforts []string + clamped map[string]string + }{ + { + model: "kimi-k3", + efforts: []string{"low", "high", "max"}, + clamped: map[string]string{"minimal": "low", "medium": "low", "xhigh": "high", "low": "low", "high": "high", "max": "max"}, + }, + { + model: "glm-5.3", + efforts: []string{"low", "high", "max"}, + clamped: map[string]string{"minimal": "low", "medium": "low", "xhigh": "high", "low": "low", "high": "high", "max": "max"}, + }, + { + model: "glm-5.3-flash", + efforts: []string{"low", "high", "max"}, + clamped: map[string]string{"medium": "low", "xhigh": "high"}, + }, + } { + t.Run(tc.model, func(t *testing.T) { + t.Parallel() + caps := OpenAIReasoningCapsFor(tc.model) + if !caps.Known { + t.Fatalf("%s: vendor documents an enum of exactly %v, so the model must be classified", tc.model, tc.efforts) + } + if !slices.Equal(caps.Efforts, tc.efforts) { + t.Errorf("%s efforts = %v, want %v", tc.model, caps.Efforts, tc.efforts) + } + for asked, want := range tc.clamped { + if got := caps.ClampEffort(asked); got != want { + t.Errorf("%s ClampEffort(%q) = %q, want %q", tc.model, asked, got, want) + } + } + }) + } + + for _, model := range []string{"deepseek-v4-pro", "deepseek-v4-flash", "glm-5.2"} { + t.Run("mapped/"+model, func(t *testing.T) { + t.Parallel() + for _, asked := range []string{"minimal", "medium", "xhigh"} { + if got := OpenAIReasoningCapsFor(model).ClampEffort(asked); got != asked { + t.Errorf("%s ClampEffort(%q) = %q: the vendor documents its own mapping for this level, "+ + "so clamping it here would substitute a different depth than the vendor would pick", + model, asked, got) + } + } + }) + } +} + +func TestTheClosedEnumStopsAtItsOwnGeneration(t *testing.T) { + t.Parallel() + + for _, model := range []string{"glm-5.31", "glm-5.4", "kimi-k30", "kimi-k4", "kimi-k2.6"} { + if OpenAIReasoningCapsFor(model).Known { + t.Errorf("%s is classified, but no vendor documentation covers it", model) + } + } +} diff --git a/llms/reasoning/openai_optin_test.go b/llms/reasoning/openai_optin_test.go new file mode 100644 index 000000000..e8eedcc10 --- /dev/null +++ b/llms/reasoning/openai_optin_test.go @@ -0,0 +1,72 @@ +package reasoning + +import "testing" + +func TestOpenAIProVariantsReasonWithoutBeingAsked(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "gpt-5-pro", + "gpt-5.2-pro", + "gpt-5.4-pro", + "gpt-5.5-pro", + "openai/gpt-5.2-pro", + "gpt-5.2-pro-2025-12-11", + } { + if OpenAIThinkingOptIn(model) { + t.Errorf("OpenAIThinkingOptIn(%q) = true, but a bare call already returns reasoning", model) + } + } +} + +func TestOpenAIOptInGenerationsWaitToBeAsked(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "gpt-5.1", + "gpt-5.2", + "gpt-5.4", + "openai/gpt-5.4", + "gpt-5.4-mini", + "gpt-5.2-2025-12-11", + } { + if !OpenAIThinkingOptIn(model) { + t.Errorf("OpenAIThinkingOptIn(%q) = false, but a bare call returns no reasoning", model) + } + } +} + +func TestOpenAIGenerationsThatAlwaysReasonAreNotOptIn(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "gpt-5", + "gpt-5-mini", + "gpt-5-nano", + "gpt-5.5", + "gpt-5.6", + "gpt-5.6-terra", + } { + if OpenAIThinkingOptIn(model) { + t.Errorf("OpenAIThinkingOptIn(%q) = true, but a bare call already returns reasoning", model) + } + } +} + +func TestOptInModelsCanAlsoDisableReasoning(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "gpt-5", "gpt-5-mini", "gpt-5-nano", "gpt-5-pro", + "gpt-5.1", "gpt-5.2", "gpt-5.2-pro", "gpt-5.4", "gpt-5.4-pro", + "gpt-5.5", "gpt-5.5-pro", "gpt-5.6", "gpt-5.6-terra", "gpt-5.6-luna", + } { + if !OpenAIThinkingOptIn(model) { + continue + } + if caps := OpenAIReasoningCapsFor(model); !caps.CanDisable { + t.Errorf("OpenAIThinkingOptIn(%q) = true while CanDisable = false: a model that cannot be "+ + "turned off does not wait to be asked", model) + } + } +} diff --git a/llms/reasoning/provider_enum_test.go b/llms/reasoning/provider_enum_test.go new file mode 100644 index 000000000..8db6d834d --- /dev/null +++ b/llms/reasoning/provider_enum_test.go @@ -0,0 +1,139 @@ +package reasoning + +import ( + "go/ast" + "go/parser" + "go/token" + "io/fs" + "maps" + "path/filepath" + "slices" + "strconv" + "strings" + "testing" +) + +const reasoningImportPath = "github.com/vxcontrol/langchaingo/llms/reasoning" + +func providerConstantsPassedIn(t *testing.T, dir string) map[string]bool { + t.Helper() + + passed := map[string]bool{} + err := filepath.WalkDir(dir, func(path string, d fs.DirEntry, err error) error { + switch { + case err != nil: + return err + case d.IsDir() && d.Name() == "testdata": + return filepath.SkipDir + case d.IsDir() || !strings.HasSuffix(path, ".go") || strings.HasSuffix(path, "_test.go"): + return nil + } + file, err := parser.ParseFile(token.NewFileSet(), path, nil, parser.SkipObjectResolution) + if err != nil { + return err + } + local := "" + for _, spec := range file.Imports { + if importPath, _ := strconv.Unquote(spec.Path.Value); importPath == reasoningImportPath { + local = "reasoning" + if spec.Name != nil { + local = spec.Name.Name + } + } + } + if local == "" { + return nil + } + ast.Inspect(file, func(n ast.Node) bool { + sel, ok := n.(*ast.SelectorExpr) + if !ok { + return true + } + if pkg, ok := sel.X.(*ast.Ident); ok && pkg.Name == local && + strings.HasPrefix(sel.Sel.Name, "Provider") && sel.Sel.Name != "Provider" { + passed[sel.Sel.Name] = true + } + return true + }) + return nil + }) + if err != nil { + t.Fatalf("reading %s: %v", dir, err) + } + return passed +} + +func TestEveryProviderConstantHasADoorThatPassesIt(t *testing.T) { + t.Parallel() + + doors := map[string]string{ + "ProviderAnthropic": "../anthropic", + "ProviderBedrock": "../bedrock", + "ProviderOpenAI": "../openai", + "ProviderGoogleAI": "../googleai", + "ProviderOllama": "../ollama", + } + + if len(doors) != int(providerCount)-1 { + t.Fatalf("the enum holds %d door providers besides ProviderUnknown, this test pairs %d of them with a door", + int(providerCount)-1, len(doors)) + } + for constant, dir := range doors { + passed := providerConstantsPassedIn(t, dir) + if len(passed) != 1 || !passed[constant] { + t.Errorf("%s passes %v; it must pass %s and no other door's constant", + dir, slices.Sorted(maps.Keys(passed)), constant) + } + } +} + +func TestOllamaDisablesByBooleanEvenForNamesOtherVendorsServeAsMandatory(t *testing.T) { + t.Parallel() + + for _, model := range []string{"deepseek-r1:7b", "qwen3:8b", "magistral-small:24b"} { + if got := ResolveOff(model, ProviderOllama); got != OffDisableThinkBool { + t.Errorf("ResolveOff(%q, ProviderOllama) = %v, want OffDisableThinkBool", model, got) + } + if same := ResolveOff(model, ProviderUnknown); same == OffDisableThinkBool { + t.Errorf("ResolveOff(%q, ProviderUnknown) already answers for the ollama door", model) + } + } +} + +func TestOllamaRefusesToDisableTheFamilyThatIgnoresBooleans(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gpt-oss:120b", "gpt-oss:20b", "library/gpt-oss:120b"} { + if got := ResolveOff(model, ProviderOllama); got != OffUnsupported { + t.Errorf("ResolveOff(%q, ProviderOllama) = %v, want OffUnsupported", model, got) + } + } +} + +func TestEveryMistralModelDisablesByOmission(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "mistral-small-latest", "mistral-medium-latest", + "mistral-large-latest", "magistral-medium-latest", + } { + if got := ResolveOff(model, ProviderUnknown); got != OffOmit { + t.Errorf("ResolveOff(%q) = %v, want OffOmit", model, got) + } + } +} + +func TestOnlyOpenAIsOwnCatalogueRefusesTopK(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gpt-4o", "gpt-5.4-nano", "o3", "o4-mini", "chatgpt-4o-latest"} { + if !RejectsTopK(model) { + t.Errorf("%q is OpenAI's own name; its endpoint fails the call on top_k", model) + } + } + for _, model := range []string{"gpt-oss:20b", "gpt-oss-120b", "zai/glm-4.5-air", "qwen3-max", "grok-4"} { + if RejectsTopK(model) { + t.Errorf("%q is not an OpenAI name and must not inherit its refusal", model) + } + } +} diff --git a/llms/reasoning/qwen_capability.go b/llms/reasoning/qwen_capability.go new file mode 100644 index 000000000..ca2b7ba40 --- /dev/null +++ b/llms/reasoning/qwen_capability.go @@ -0,0 +1,133 @@ +package reasoning + +import ( + "fmt" + "regexp" + "slices" + "strings" +) + +var qwenParameterCountName = regexp.MustCompile(`^qwen3-\d+(\.\d+)?b(-a\d+(\.\d+)?b)?$`) + +var qwenDefaultThinkingName = regexp.MustCompile(`^qwen3\.[567]-`) + +var qwenNextName = regexp.MustCompile(`^qwen3-next-.*-thinking$`) + +var qwenVLOpenWeightName = regexp.MustCompile(`^qwen3-vl-\d+(\.\d+)?b(-a\d+(\.\d+)?b)?$`) + +// QwenThinkingOffByFlag reports whether the model thinks until enable_thinking +// false asks it to stop. +func QwenThinkingOffByFlag(model string) bool { + return qwenDefaultThinkingName.MatchString(dashScopeSpelling(model)) +} + +// QwenThinkingRequiresStream reports whether DashScope serves the model's +// thinking only on a streaming call. +func QwenThinkingRequiresStream(model string) bool { + return qwenParameterCountName.MatchString(dashScopeSpelling(model)) +} + +func dashScopeSpelling(model string) string { + m := strings.TrimPrefix(strings.ToLower(model), "dashscope/") + if strings.Contains(m, "/") { + return "" + } + return m +} + +// ErrThinkingRequiresStream reports thinking asked of a stream-only model +// without a stream. +type ErrThinkingRequiresStream struct{ Model string } + +func (e *ErrThinkingRequiresStream) Error() string { + return fmt.Sprintf("reasoning on model %q is available only on a streaming call", e.Model) +} + +var qwenFlagThinkers = map[string]bool{ + "qwen-plus": true, "qwen-flash": true, "qwen-turbo": true, + "qwen3-max": true, "qwen3-vl-plus": true, "qwen3-vl-flash": true, +} + +// QwenThinkingEnabledByFlag reports whether DashScope leaves the model's +// thinking off until enable_thinking:true asks for it. +func QwenThinkingEnabledByFlag(model string) bool { + return qwenFlagThinkers[dashScopeSpelling(model)] +} + +// DashScopeGuestThinkingEnabledByFlag reports whether a guest model DashScope +// serves leaves its thinking off until enable_thinking:true asks for it. +func DashScopeGuestThinkingEnabledByFlag(model string) bool { + guest, ok := strings.CutPrefix(strings.ToLower(model), "dashscope/") + return ok && (guest == "kimi-k2.6" || guest == "kimi-k2.5") +} + +var dashScopeGuestBudget = []string{ + "glm-5.2", "glm-5.1", "glm-4.7", "glm-4.6", "glm-4.5", + "kimi-k2.5", "kimi-k2.6", "kimi-k2.7-code", "kimi-k2-thinking", +} + +var dashScopeDeepSeekBudget = []string{"deepseek-v4-pro", "deepseek-v4-flash", "deepseek-v4-flash-0731"} + +func dashScopeGuestSpelling(model string) string { + rest, ok := strings.CutPrefix(strings.ToLower(model), "dashscope/") + rest = strings.TrimPrefix(rest, "kimi/") + if !ok || strings.Contains(rest, "/") { + return "" + } + return rest +} + +var dashScopeHosts = []string{ + "dashscope.aliyuncs.com", "dashscope-intl.aliyuncs.com", "dashscope-us.aliyuncs.com", + "cn-hongkong.dashscope.aliyuncs.com", +} + +// DashScopeRoute returns the name the rules read for a model sent to host: a +// name sent to Model Studio's own host reads as its dashscope/ route. +func DashScopeRoute(model, host string) string { + onDashScope := slices.Contains(dashScopeHosts, host) || strings.HasSuffix(host, ".maas.aliyuncs.com") + if !onDashScope || strings.HasPrefix(strings.ToLower(model), "dashscope/") { + return model + } + return "dashscope/" + model +} + +// DashScopeTakesNoTopK reports whether DashScope serves the model from a family +// that takes no top_k. +func DashScopeTakesNoTopK(model string) bool { + rest, ok := strings.CutPrefix(strings.ToLower(model), "dashscope/") + name := rest[strings.LastIndex(rest, "/")+1:] + return ok && (strings.HasPrefix(name, "deepseek") || strings.HasPrefix(name, "kimi-") || + strings.HasPrefix(name, "moonshot-kimi") || strings.HasPrefix(name, "minimax-")) +} + +// DashScopeTakesThinkingBudget reports whether DashScope caps the model's +// thinking by a token budget. +func DashScopeTakesThinkingBudget(model string) bool { + if guest := dashScopeGuestSpelling(model); guest != "" { + if guest == "glm-5" || slices.Contains(dashScopeDeepSeekBudget, guest) { + return true + } + for _, generation := range dashScopeGuestBudget { + if hasGeneration(guest, generation) { + return true + } + } + } + m := dashScopeSpelling(model) + if m == "" { + return false + } + return qwenDefaultThinkingName.MatchString(m) || + qwenParameterCountName.MatchString(m) || + qwenNextName.MatchString(m) || + qwenVLOpenWeightName.MatchString(m) || + qwenFlagThinkers[m] || + hasGeneration(m, "qwen3.8") +} + +// DashScopeBudgetSharesAnswerLimit reports whether the model's thinking budget +// counts against max_tokens together with the answer. +func DashScopeBudgetSharesAnswerLimit(model string) bool { + return slices.Contains(dashScopeDeepSeekBudget, dashScopeGuestSpelling(model)) +} diff --git a/llms/reasoning/qwen_capability_test.go b/llms/reasoning/qwen_capability_test.go new file mode 100644 index 000000000..da6b698af --- /dev/null +++ b/llms/reasoning/qwen_capability_test.go @@ -0,0 +1,97 @@ +package reasoning + +import "testing" + +func TestQwenThinkingRequiresStream(t *testing.T) { + t.Parallel() + + cases := []struct { + model string + want bool + }{ + {"qwen3-8b", true}, + {"qwen3-14b", true}, + {"qwen3-32b", true}, + {"qwen3-30b-a3b", true}, + {"qwen3-235b-a22b", true}, + {"qwen3-1.7b", true}, + {"dashscope/qwen3-8b", true}, + {"DashScope/Qwen3-32B", true}, + {"qwen3-coder-plus", false}, + {"qwen3-coder-30b-a3b-instruct", false}, + {"qwen3-vl-plus", false}, + {"qwen3-vl-flash", false}, + {"qwen3-max", false}, + {"qwen3-rerank", false}, + {"qwen3-next-80b-a3b-thinking", false}, + {"qwen3-next-80b-a3b-instruct", false}, + {"qwen3-235b-a22b-thinking-2507", false}, + {"qwen3.5-flash", false}, + {"qwen2.5-7b", false}, + {"qwen/qwen3-32b", false}, + {"openrouter/qwen/qwen3-8b", false}, + {"deepinfra/Qwen/Qwen3-32B", false}, + } + for _, tc := range cases { + if got := QwenThinkingRequiresStream(tc.model); got != tc.want { + t.Errorf("QwenThinkingRequiresStream(%q) = %v, want %v", tc.model, got, tc.want) + } + } +} + +func TestQwenThinkingOffByFlag(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + flag bool + }{ + {"qwen3.7-plus", true}, + {"qwen3.7-max", true}, + {"qwen3.7-max-preview", true}, + {"qwen3.6-plus", true}, + {"qwen3.6-max-preview", true}, + {"qwen3.5-flash", true}, + {"dashscope/qwen3.5-plus", true}, + {"qwen3.8-max", false}, + {"qwen3.5-35b-a3b", true}, + {"qwen3.5-27b", true}, + {"qwen3.5-122b-a10b", true}, + {"qwen3.5-397b-a17b", true}, + {"qwen3.6-27b", true}, + {"qwen3.6-35b-a3b", true}, + {"qwen3-8b", false}, + {"qwen-plus", false}, + {"openrouter/qwen/qwen3.7-plus", false}, + {"deepinfra/Qwen/qwen3.7-plus", false}, + } { + if got := QwenThinkingOffByFlag(tc.model); got != tc.flag { + t.Errorf("QwenThinkingOffByFlag(%q) = %v, want %v", tc.model, got, tc.flag) + } + } +} + +func TestQwenDisableWire(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + off OffWire + }{ + {"qwen3.8-max", OffEffortNone}, + {"qwen3.8-flash", OffEffortNone}, + {"qwen3.8-2.4t-a95b", OffUnsupported}, + {"dashscope/qwen3.8-2.4t-a95b", OffUnsupported}, + {"qwen3.7-plus", OffDisableDashScope}, + {"qwen3.6-flash", OffDisableDashScope}, + {"qwen3.5-plus", OffDisableDashScope}, + {"qwen3.5-35b-a3b", OffDisableDashScope}, + {"qwen3.6-27b", OffDisableDashScope}, + {"qwen3-8b", OffDisableDashScope}, + {"openrouter/qwen/qwen3.7-plus", OffUnsupported}, + } { + if got := ResolveOff(tc.model, ProviderOpenAI); got != tc.off { + t.Errorf("ResolveOff(%q) = %v, want %v", tc.model, got, tc.off) + } + } +} diff --git a/llms/reasoning/qwen_off_test.go b/llms/reasoning/qwen_off_test.go new file mode 100644 index 000000000..fcf9d537f --- /dev/null +++ b/llms/reasoning/qwen_off_test.go @@ -0,0 +1,39 @@ +package reasoning + +import "testing" + +func TestQwenHybridsSpellOffWithTheDashScopeFlag(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "qwen3-8b", "qwen3-32b", "qwen3-30b-a3b", "qwen3-235b-a22b", + "dashscope/qwen3-8b", + } { + if got := ResolveOff(model, ProviderOpenAI); got != OffDisableDashScope { + t.Errorf("ResolveOff(%q, openai) = %v, want OffDisableDashScope", model, got) + } + } +} + +func TestQwenHybridsAreReasoningModels(t *testing.T) { + t.Parallel() + + for _, model := range []string{"qwen3-8b", "qwen3-235b-a22b", "dashscope/qwen3-30b-a3b", "qwen3-vl-plus", "qwen3-vl-flash"} { + if !IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = false, want true", model) + } + } + for _, model := range []string{"qwen3-coder-plus"} { + if IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = true, want false", model) + } + } +} + +func TestBedrockQwenKeepsItsOwnAnswer(t *testing.T) { + t.Parallel() + + if got := ResolveOff("qwen.qwen3-32b-v1:0", ProviderBedrock); got != OffOmit { + t.Errorf("the bedrock spelling must keep OffOmit, got %v", got) + } +} diff --git a/llms/reasoning/qwen_optin_test.go b/llms/reasoning/qwen_optin_test.go new file mode 100644 index 000000000..a5a802189 --- /dev/null +++ b/llms/reasoning/qwen_optin_test.go @@ -0,0 +1,46 @@ +package reasoning + +import "testing" + +func TestQwenCommercialHybridsThinkOnlyWhenAsked(t *testing.T) { + t.Parallel() + + cases := []struct { + model string + want bool + }{ + {"qwen-plus", true}, + {"qwen-flash", true}, + {"qwen3-max", true}, + {"dashscope/qwen3-max", true}, + {"DashScope/Qwen-Plus", true}, + {"qwen3-8b", false}, + {"qwen3.7-plus", false}, + {"qwen3-coder-plus", false}, + {"qwen3-vl-plus", true}, + {"qwen3-vl-flash", true}, + {"openrouter/qwen/qwen-plus", false}, + {"qwen-plus-latest", false}, + } + for _, tc := range cases { + if got := QwenThinkingEnabledByFlag(tc.model); got != tc.want { + t.Errorf("QwenThinkingEnabledByFlag(%q) = %v, want %v", tc.model, got, tc.want) + } + } +} + +func TestQwenCommercialHybridsAreOptInReasoners(t *testing.T) { + t.Parallel() + + for _, model := range []string{"qwen-plus", "qwen-flash", "qwen3-max"} { + if !IsReasoningModel(model) { + t.Errorf("IsReasoningModel(%q) = false, want true", model) + } + if !ThinkingOptIn(model) { + t.Errorf("ThinkingOptIn(%q) = false, want true", model) + } + if got := ResolveOff(model, ProviderOpenAI); got != OffOmit { + t.Errorf("ResolveOff(%q) = %v, want OffOmit — they do not think unless asked", model, got) + } + } +} diff --git a/llms/reasoning/reasoning.go b/llms/reasoning/reasoning.go index 87b89bf85..2c0237e1c 100644 --- a/llms/reasoning/reasoning.go +++ b/llms/reasoning/reasoning.go @@ -3,6 +3,7 @@ package reasoning import ( "bytes" "encoding/json" + "fmt" "regexp" "strings" "sync" @@ -22,10 +23,20 @@ type ContentReasoning struct { // Signature is the signature of the reasoning contents. Signature []byte `json:"signature,omitempty"` + + // Blocks, when set, is what travels back to the vendor; Content then only + // mirrors their text. + Blocks []Block `json:"blocks,omitempty"` } +// IsEmpty reports whether there is nothing to carry back into the next turn. func (r *ContentReasoning) IsEmpty() bool { - return r == nil || (r.Content == "" && len(r.Signature) == 0) + return r == nil || (r.Content == "" && len(r.Signature) == 0 && len(r.Blocks) == 0) +} + +// HasContent reports whether the model actually reasoned. +func (r *ContentReasoning) HasContent() bool { + return r != nil && r.Content != "" } func (r *ContentReasoning) String() string { @@ -40,6 +51,16 @@ func (r *ContentReasoning) String() string { buf.WriteString("\nSignature: ") buf.Write(r.Signature) } + if len(r.Blocks) > 0 { + encrypted, size := 0, 0 + for _, block := range r.Blocks { + if block.Redacted != nil { + encrypted++ + size += len(block.Redacted) + } + } + fmt.Fprintf(&buf, "\nBlocks: %d, %d encrypted (%d bytes)", len(r.Blocks), encrypted, size) + } return buf.String() } @@ -57,10 +78,42 @@ func (r *ContentReasoning) UnmarshalJSON(data []byte) error { type Alias ContentReasoning aux := &struct { *Alias + Redacted json.RawMessage `json:"redacted,omitempty"` }{ Alias: (*Alias)(r), } - return json.Unmarshal(data, aux) + if err := json.Unmarshal(data, aux); err != nil { + return err + } + return r.readStoredRedacted(aux.Redacted) +} + +func (r *ContentReasoning) readStoredRedacted(raw json.RawMessage) error { + raw = bytes.TrimSpace(raw) + var encrypted [][]byte + switch { + case len(raw) == 0 || bytes.Equal(raw, []byte("null")): + return nil + case raw[0] == '"': + var block []byte + if err := json.Unmarshal(raw, &block); err != nil { + return err + } + encrypted = append(encrypted, block) + default: + if err := json.Unmarshal(raw, &encrypted); err != nil { + return err + } + } + + blocks := r.Sequence() + for _, data := range encrypted { + blocks = append(blocks, Block{Redacted: data}) + } + if stored := FromBlocks(blocks); stored != nil { + *r = *stored + } + return nil } type ChunkContentSplitterState int @@ -172,41 +225,122 @@ func IsReasoningModel(model string) bool { // DefaultIsReasoningModel provides the default reasoning model detection logic. // This can be used by LLM implementations that want to extend rather than replace // the default detection logic. -func DefaultIsReasoningModel(model string) bool { //nolint:funlen // a flat catalog of model-family prefix checks; splitting hurts readability - modelLower := strings.ToLower(model) +func DefaultIsReasoningModel(model string) bool { + for _, form := range modelSpellings(model) { + if namesReasoningModel(form) { + return true + } + } + return false +} + +// ServedByMistral reports whether the name is one only Mistral's endpoint uses: +// a Mistral family, or GLM spelled the way Mistral lists it (glm-5-2, zai-glm-5-2), +// bare or behind LiteLLM's mistral/ prefix. +func ServedByMistral(model string) bool { + m := strings.TrimPrefix(strings.ToLower(model), "mistral/") + if strings.ContainsAny(m, "/:") { + return false + } + if strings.HasPrefix(m, "zai-glm") || strings.HasPrefix(m, "magistral-") || + mistralReasons(m) || mistralWithoutReasoning(m) { + return true + } + rest, ok := strings.CutPrefix(m, "glm-") + if !ok { + return false + } + major, minor, ok := strings.Cut(rest, "-") + return ok && isDigits(major) && isDigits(minor) +} + +func isDigits(s string) bool { + if s == "" { + return false + } + for _, r := range s { + if r < '0' || r > '9' { + return false + } + } + return true +} + +func mistralWithoutReasoning(model string) bool { + if mistralReasons(model) || strings.HasPrefix(model, "magistral") { + return false + } + for _, prefix := range []string{ + "mistral-", "ministral-", "codestral", "devstral", "pixtral", "voxtral", "open-mistral", "open-mixtral", + } { + if strings.HasPrefix(model, prefix) { + return true + } + } + return false +} + +func mistralReasons(model string) bool { + if model == "mistral-medium" { + return true + } + for _, prefix := range []string{ + "mistral-medium-3", "mistral-medium-latest", "mistral-medium-2604", + "mistral-small-2603", "mistral-small-latest", + "mistral-vibe-cli", + } { + if strings.HasPrefix(model, prefix) { + return true + } + } + return false +} + +func nvidiaNonChatSurface(model string) bool { + return strings.Contains(model, "-embed-") || + strings.Contains(model, "-rerank-") || + strings.Contains(model, "-asr-") || + strings.Contains(model, "content-safety") +} - // Remove provider prefix if present (e.g., "openai/", "anthropic/", "google/") - if idx := strings.LastIndex(modelLower, "/"); idx != -1 { - modelLower = modelLower[idx+1:] +func namesReasoningModel(modelLower string) bool { //nolint:funlen // a flat catalog of model-family prefix checks; splitting hurts readability + if strings.Contains(modelLower, "-chat-latest") || openAIChatVariant(modelLower) { + return false } // OpenAI reasoning models if strings.HasPrefix(modelLower, "gpt-5") || - strings.HasPrefix(modelLower, "gpt-oss-") || + hasGeneration(modelLower, "gpt-6") || + strings.HasPrefix(modelLower, "gpt-oss") || strings.HasPrefix(modelLower, "o1") || strings.HasPrefix(modelLower, "o3") || - strings.HasPrefix(modelLower, "o4-mini") { + strings.HasPrefix(modelLower, "o4-mini") || + modelLower == "gpt-latest" { return true } // Anthropic extended thinking / adaptive models - if strings.Contains(modelLower, "claude-3.7") || - strings.HasPrefix(modelLower, "claude-opus-4") || - strings.HasPrefix(modelLower, "claude-opus-5") || - strings.HasPrefix(modelLower, "claude-sonnet-4") || - strings.HasPrefix(modelLower, "claude-sonnet-5") || - strings.Contains(modelLower, "claude-fable-5") || - strings.Contains(modelLower, "claude-mythos-5") || - strings.Contains(modelLower, "claude-haiku-4.5") { + claudeName := canonicalClaude(modelLower) + if strings.Contains(claudeName, "claude-3-7") || + strings.HasPrefix(claudeName, "claude-opus-4") || + strings.HasPrefix(claudeName, "claude-opus-5") || + strings.HasPrefix(claudeName, "claude-sonnet-4") || + strings.HasPrefix(claudeName, "claude-sonnet-5") || + strings.Contains(claudeName, "claude-fable-5") || + strings.Contains(claudeName, "claude-mythos-5") || + strings.Contains(claudeName, "claude-haiku-4-5") || + ClaudeSupportsThinking(claudeName) { return true } // DeepSeek reasoning models if strings.Contains(modelLower, "deepseek-r1") || - strings.Contains(modelLower, "deepseek-chat-v3") || - strings.Contains(modelLower, "deepseek-v3.1-terminus") || + strings.Contains(modelLower, "deepseek-reasoner") || + strings.Contains(modelLower, "deepseek-chat-v3.") || + strings.Contains(modelLower, "deepseek-v3.1") || strings.HasPrefix(modelLower, "deepseek-v3.2") || - strings.HasPrefix(modelLower, "deepseek-v4") { + strings.HasPrefix(modelLower, "deepseek-v4") || + strings.HasPrefix(modelLower, "deepseek-flash") { return true } @@ -217,10 +351,11 @@ func DefaultIsReasoningModel(model string) bool { //nolint:funlen // a flat cata // X-AI Grok reasoning models if strings.HasPrefix(modelLower, "grok-3-mini") || - (strings.HasPrefix(modelLower, "grok-4") && !strings.HasSuffix(modelLower, "-non-reasoning")) || - (strings.HasPrefix(modelLower, "grok-5") && !strings.HasSuffix(modelLower, "-non-reasoning")) || + (strings.HasPrefix(modelLower, "grok-4") && !strings.Contains(modelLower, "-non-reasoning")) || + (strings.HasPrefix(modelLower, "grok-5") && !strings.Contains(modelLower, "-non-reasoning")) || strings.HasPrefix(modelLower, "grok-build") || - strings.Contains(modelLower, "grok-code-fast") { + strings.Contains(modelLower, "grok-code-fast") || + modelLower == "grok-latest" { return true } @@ -228,20 +363,28 @@ func DefaultIsReasoningModel(model string) bool { //nolint:funlen // a flat cata if strings.HasPrefix(modelLower, "glm-4.5") || strings.HasPrefix(modelLower, "glm-4.6") || strings.HasPrefix(modelLower, "glm-4.7") || - strings.HasPrefix(modelLower, "glm-5") { + strings.HasPrefix(modelLower, "glm-5") || + modelLower == "glm-latest" || modelLower == "glm-flash-latest" { + return true + } + + if strings.HasPrefix(modelLower, "labs-leanstral") { return true } // Qwen reasoning models. Qwen3.x thinking is user-toggleable with configurable // sampling, so the bare qwen3 prefix must not force temperature pinning; only // an explicit "thinking" marker or the QwQ line count as always-on reasoning. - if (strings.HasPrefix(modelLower, "qwen") && strings.Contains(modelLower, "thinking")) || - strings.Contains(modelLower, "qwq-") { + if (strings.HasPrefix(modelLower, "qwen") && ThinkingMarkedInName(modelLower)) || + strings.Contains(modelLower, "qwq-") || + QwenThinkingRequiresStream(modelLower) || + QwenThinkingEnabledByFlag(modelLower) || + qwenReasonsUnasked(modelLower) { return true } // Minimax reasoning models - if strings.HasPrefix(modelLower, "minimax-m") { + if strings.HasPrefix(modelLower, "minimax-m") && !strings.Contains(modelLower, "-her") { return true } @@ -252,7 +395,8 @@ func DefaultIsReasoningModel(model string) bool { //nolint:funlen // a flat cata strings.Contains(modelLower, "2.6") || strings.Contains(modelLower, "2.7") || strings.Contains(modelLower, "k3") || - strings.Contains(modelLower, "dev-72b")) { + strings.Contains(modelLower, "dev-72b")) || + modelLower == "kimi-latest" { return true } @@ -265,7 +409,7 @@ func DefaultIsReasoningModel(model string) bool { //nolint:funlen // a flat cata } // Other reasoning models - if strings.Contains(modelLower, "aion-") || + if (strings.Contains(modelLower, "aion-") && !strings.Contains(modelLower, "aion-rp")) || (strings.Contains(modelLower, "olmo-") && strings.Contains(modelLower, "-think")) || strings.Contains(modelLower, "nova-2-lite") || strings.Contains(modelLower, "trinity-mini") || @@ -273,14 +417,17 @@ func DefaultIsReasoningModel(model string) bool { //nolint:funlen // a flat cata strings.Contains(modelLower, "seed-1.6") || strings.Contains(modelLower, "cogito-v2") || (strings.Contains(modelLower, "lfm-") && strings.Contains(modelLower, "-thinking")) || + strings.HasPrefix(modelLower, "lfm-2.5") || + strings.Contains(modelLower, "seed-2-1") || + strings.Contains(modelLower, "inkling") || strings.Contains(modelLower, "deephermes") || strings.Contains(modelLower, "hermes-4-") || - strings.Contains(modelLower, "nemotron") || + (strings.Contains(modelLower, "nemotron") && !nvidiaNonChatSurface(modelLower)) || strings.Contains(modelLower, "intellect-3") || strings.Contains(modelLower, "step3") || strings.Contains(modelLower, "hunyuan-a13b") || strings.Contains(modelLower, "chimera") || - strings.Contains(modelLower, "mimo-v2") || + (strings.Contains(modelLower, "mimo-v2") && !strings.Contains(modelLower, "-tts")) || strings.Contains(modelLower, "tongyi-deepresearch") { return true } @@ -294,18 +441,82 @@ func DefaultIsReasoningModel(model string) bool { //nolint:funlen // a flat cata strings.HasPrefix(modelLower, "mercury-2") || strings.HasPrefix(modelLower, "ring-2.6") || strings.HasPrefix(modelLower, "muse-spark") || - strings.HasPrefix(modelLower, "mistral-medium-3") || - strings.HasPrefix(modelLower, "mistral-small-2603") || + mistralReasons(modelLower) || + strings.HasPrefix(modelLower, "magistral") || strings.HasPrefix(modelLower, "nex-n2") || strings.HasPrefix(modelLower, "perceptron-mk") || strings.HasPrefix(modelLower, "laguna-") || strings.HasPrefix(modelLower, "reka-flash-3") || strings.HasPrefix(modelLower, "fugu-ultra") || strings.HasPrefix(modelLower, "hy3") || + strings.HasPrefix(modelLower, "hy4") || strings.HasPrefix(modelLower, "solar-pro-3") || + strings.HasPrefix(modelLower, "solar-pro4") || + strings.HasPrefix(modelLower, "ling-3.0") || + strings.HasPrefix(modelLower, "longcat-2") || strings.Contains(modelLower, "trinity-large-thinking") { return true } return false } + +// ThinkingOptIn reports whether the model reasons only when a request asks it to. +func ThinkingOptIn(model string) bool { + if OpenAIThinkingOptIn(model) || QwenThinkingEnabledByFlag(model) { + return true + } + for _, form := range modelSpellings(model) { + if mistralReasons(form) || strings.HasPrefix(form, "magistral") || + strings.HasPrefix(form, "ernie-4.5") { + return true + } + for _, prefix := range []string{"solar-pro-3", "solar-pro4", "deepseek-v3.1", "deepseek-chat-v3.1", "deepseek-v3.2"} { + if strings.HasPrefix(form, prefix) { + return true + } + } + } + return false +} + +// ThinkingMarkedInName reports whether the model name selects a routing variant +// that already runs with thinking on, not merely a model capable of thinking. +func ThinkingMarkedInName(model string) bool { + m := strings.ToLower(model) + const marker = "thinking" + for i := 0; i < len(m); { + idx := strings.Index(m[i:], marker) + if idx == -1 { + return false + } + start, end := i+idx, i+idx+len(marker) + if !letterAt(m, start-1) && !letterAt(m, end) { + return true + } + i = end + } + return false +} + +func letterAt(s string, i int) bool { + return i >= 0 && i < len(s) && s[i] >= 'a' && s[i] <= 'z' +} + +func isAlpha(s string) bool { + for i := range len(s) { + if s[i] < 'a' || s[i] > 'z' { + return false + } + } + return true +} + +func qwenReasonsUnasked(model string) bool { + for _, prefix := range []string{"qwen3.5", "qwen3.6", "qwen3.7", "qwen3.8"} { + if strings.HasPrefix(model, prefix) { + return true + } + } + return false +} diff --git a/llms/reasoning/reasoning_test.go b/llms/reasoning/reasoning_test.go index 3ae973672..3af88f1a5 100644 --- a/llms/reasoning/reasoning_test.go +++ b/llms/reasoning/reasoning_test.go @@ -461,7 +461,7 @@ func BenchmarkSplitContentLargeString(b *testing.B) { largeText := builder.String() b.ResetTimer() - for i := 0; i < b.N; i++ { + for b.Loop() { reasoning, text := SplitContent(largeText) if reasoning == "" || text == "" { b.Fatal("Empty result") @@ -483,7 +483,7 @@ func BenchmarkChunkContentSplitter(b *testing.B) { } b.ResetTimer() - for i := 0; i < b.N; i++ { + for b.Loop() { splitter := NewChunkContentSplitter() var textResult, reasoningResult strings.Builder @@ -653,17 +653,23 @@ func TestIsReasoningModel(t *testing.T) { //nolint:funlen {"claude-haiku-4.5", true}, {"anthropic/claude-opus-4", true}, {"anthropic/claude-3.7-sonnet", true}, + {"claude-4-opus", true}, + {"claude-4-sonnet", true}, + {"claude-4-opus-20250514", true}, + {"anthropic/claude-4-sonnet-20250514", true}, // DeepSeek reasoning models {"deepseek-r1", true}, {"deepseek-r1-0528", true}, {"deepseek-r1-distill-llama-70b", true}, - {"deepseek-chat-v3-0324", true}, + {"deepseek-chat-v3-0324", false}, {"deepseek-chat-v3.1", true}, {"deepseek-v3.1-terminus", true}, {"deepseek-v3.2", true}, {"deepseek-v3.2-exp", true}, {"deepseek/deepseek-r1", true}, + {"deepseek-flash", true}, + {"deepseek/deepseek-flash", true}, // Google Gemini / Gemma reasoning models (incl. production catalog) {"gemini-2.5-flash", true}, @@ -695,6 +701,9 @@ func TestIsReasoningModel(t *testing.T) { //nolint:funlen {"grok-4.20-multi-agent-0309", true}, {"grok-4.20-0309-reasoning", true}, {"grok-4.20-0309-non-reasoning", false}, + {"grok-4-fast-non-reasoning", false}, + {"grok-4-1-fast-non-reasoning", false}, + {"grok-4-1-fast-non-reasoning-latest", false}, {"x-ai/grok-4", true}, {"x-ai/grok-4.3", true}, {"x-ai/grok-4.5", true}, @@ -761,26 +770,33 @@ func TestIsReasoningModel(t *testing.T) { //nolint:funlen // OpenRouter catalog additions (matched by the distinctive model-name part) {"claude-opus-5", true}, + {"claude-opus-5-5", true}, {"anthropic/claude-opus-5", true}, + {"anthropic/claude-opus-5-5", true}, {"claude-sonnet-5", true}, {"claude-fable-5", true}, {"claude-mythos-5", true}, {"anthropic/claude-sonnet-5", true}, {"anthropic/claude-fable-5", true}, + {"claude-opus-latest", true}, + {"claude-sonnet-latest", true}, + {"claude-haiku-latest", true}, + {"claude-fable-latest", true}, + {"claude-mythos-preview", true}, {"o1", true}, {"openai/o1", true}, {"openai/o1-pro", true}, {"gpt-5.4-mini", true}, {"gpt-5.6-luna", true}, {"openai/gpt-5-pro", true}, - // Bare Qwen3.x models are NOT forced-reasoning: thinking is user-toggleable - // and sampling is configurable, so temperature must not be pinned for them. - {"qwen3-14b", false}, - {"qwen3-235b-a22b", false}, - {"qwen3.5-9b", false}, - {"qwen3.6-flash", false}, - {"qwen3.7-max", false}, - {"qwen/qwen3-32b", false}, + {"qwen3-14b", true}, + {"qwen3-235b-a22b", true}, + {"qwen3.5-9b", true}, + {"qwen3.6-flash", true}, + {"qwen3.7-max", true}, + {"qwen3.8-flash", true}, + {"qwen3.8-max", true}, + {"qwen/qwen3-32b", true}, {"kimi-k3", true}, {"moonshotai/kimi-k3", true}, {"moonshotai/kimi-k2.5", true}, @@ -806,6 +822,16 @@ func TestIsReasoningModel(t *testing.T) { //nolint:funlen {"hy3", true}, {"tencent/hy3-preview", true}, {"solar-pro-3", true}, + {"solar-pro4", true}, + {"hy4-preview", true}, + {"ling-3.0-flash", true}, + {"longcat-2.0", true}, + {"gpt-latest", true}, + {"grok-latest", true}, + {"glm-latest", true}, + {"kimi-latest", true}, + {"gpt-mini-latest", false}, + {"qwen3-max", true}, {"trinity-large-thinking", true}, // Non-reasoning models diff --git a/llms/reasoning/testdata/anthropic_models.json b/llms/reasoning/testdata/anthropic_models.json new file mode 100644 index 000000000..4ebf38017 --- /dev/null +++ b/llms/reasoning/testdata/anthropic_models.json @@ -0,0 +1,142 @@ +{ + "claude-fable-5": { + "effort_supported": true, + "efforts": [ + "low", + "medium", + "high", + "xhigh", + "max" + ], + "thinking_types": [ + "adaptive" + ], + "structured_outputs": true + }, + "claude-fable-5-1": { + "effort_supported": true, + "efforts": [ + "low", + "medium", + "high", + "xhigh", + "max" + ], + "thinking_types": [ + "adaptive" + ], + "structured_outputs": true + }, + "claude-haiku-4-5-20251001": { + "effort_supported": false, + "efforts": [], + "thinking_types": [ + "enabled" + ], + "structured_outputs": true + }, + "claude-opus-4-5-20251101": { + "effort_supported": true, + "efforts": [ + "low", + "medium", + "high" + ], + "thinking_types": [ + "enabled" + ], + "structured_outputs": true + }, + "claude-opus-4-6": { + "effort_supported": true, + "efforts": [ + "low", + "medium", + "high", + "max" + ], + "thinking_types": [ + "enabled", + "adaptive" + ], + "structured_outputs": true + }, + "claude-opus-4-7": { + "effort_supported": true, + "efforts": [ + "low", + "medium", + "high", + "xhigh", + "max" + ], + "thinking_types": [ + "adaptive" + ], + "structured_outputs": true + }, + "claude-opus-4-8": { + "effort_supported": true, + "efforts": [ + "low", + "medium", + "high", + "xhigh", + "max" + ], + "thinking_types": [ + "adaptive" + ], + "structured_outputs": true + }, + "claude-opus-5": { + "effort_supported": true, + "efforts": [ + "low", + "medium", + "high", + "xhigh", + "max" + ], + "thinking_types": [ + "adaptive" + ], + "structured_outputs": true + }, + "claude-sonnet-4-5-20250929": { + "effort_supported": false, + "efforts": [], + "thinking_types": [ + "enabled" + ], + "structured_outputs": true + }, + "claude-sonnet-4-6": { + "effort_supported": true, + "efforts": [ + "low", + "medium", + "high", + "max" + ], + "thinking_types": [ + "enabled", + "adaptive" + ], + "structured_outputs": true + }, + "claude-sonnet-5": { + "effort_supported": true, + "efforts": [ + "low", + "medium", + "high", + "xhigh", + "max" + ], + "thinking_types": [ + "adaptive" + ], + "structured_outputs": true + } +} diff --git a/llms/reasoning/testdata/mistral_models.json b/llms/reasoning/testdata/mistral_models.json new file mode 100644 index 000000000..678ca7866 --- /dev/null +++ b/llms/reasoning/testdata/mistral_models.json @@ -0,0 +1,386 @@ +{ + "codestral-2508": { + "reasoning": false, + "aliases": [ + "codestral-latest", + "mistral-code-fim-latest", + "mistral-code-latest" + ] + }, + "codestral-embed": { + "reasoning": false, + "aliases": [ + "codestral-embed-2505" + ] + }, + "codestral-embed-2505": { + "reasoning": false, + "aliases": [ + "codestral-embed" + ] + }, + "codestral-latest": { + "reasoning": false, + "aliases": [ + "codestral-2508", + "mistral-code-fim-latest", + "mistral-code-latest" + ] + }, + "glm-5-2": { + "reasoning": true, + "aliases": [ + "zai-glm-5-2" + ] + }, + "labs-leanstral-1-5": { + "reasoning": true, + "aliases": [ + "labs-leanstral-1-5-1" + ] + }, + "labs-leanstral-1-5-1": { + "reasoning": true, + "aliases": [ + "labs-leanstral-1-5" + ] + }, + "magistral-medium-latest": { + "reasoning": true, + "aliases": [ + "mistral-medium", + "mistral-medium-2604", + "mistral-medium-3", + "mistral-medium-3-5", + "mistral-medium-3.5", + "mistral-medium-latest", + "mistral-vibe-cli-latest", + "mistral-vibe-cli-with-tools" + ] + }, + "magistral-small-latest": { + "reasoning": true, + "aliases": [ + "mistral-small-2603", + "mistral-small-latest", + "mistral-vibe-cli-fast" + ] + }, + "ministral-14b-2512": { + "reasoning": false, + "aliases": [ + "ministral-14b-latest" + ] + }, + "ministral-14b-latest": { + "reasoning": false, + "aliases": [ + "ministral-14b-2512" + ] + }, + "ministral-3b-2512": { + "reasoning": false, + "aliases": [ + "ministral-3b-latest" + ] + }, + "ministral-3b-latest": { + "reasoning": false, + "aliases": [ + "ministral-3b-2512" + ] + }, + "ministral-8b-2512": { + "reasoning": false, + "aliases": [ + "ministral-8b-latest" + ] + }, + "ministral-8b-latest": { + "reasoning": false, + "aliases": [ + "ministral-8b-2512" + ] + }, + "mistral-code-fim-latest": { + "reasoning": false, + "aliases": [ + "codestral-2508", + "codestral-latest", + "mistral-code-latest" + ] + }, + "mistral-code-latest": { + "reasoning": false, + "aliases": [ + "codestral-2508", + "codestral-latest", + "mistral-code-fim-latest" + ] + }, + "mistral-embed": { + "reasoning": false, + "aliases": [ + "mistral-embed-2312" + ] + }, + "mistral-embed-2312": { + "reasoning": false, + "aliases": [ + "mistral-embed" + ] + }, + "mistral-large-2512": { + "reasoning": false, + "aliases": [ + "mistral-large-latest" + ] + }, + "mistral-large-latest": { + "reasoning": false, + "aliases": [ + "mistral-large-2512" + ] + }, + "mistral-medium": { + "reasoning": true, + "aliases": [ + "magistral-medium-latest", + "mistral-medium-2604", + "mistral-medium-3", + "mistral-medium-3-5", + "mistral-medium-3.5", + "mistral-medium-latest", + "mistral-vibe-cli-latest", + "mistral-vibe-cli-with-tools" + ] + }, + "mistral-medium-2604": { + "reasoning": true, + "aliases": [ + "magistral-medium-latest", + "mistral-medium", + "mistral-medium-3", + "mistral-medium-3-5", + "mistral-medium-3.5", + "mistral-medium-latest", + "mistral-vibe-cli-latest", + "mistral-vibe-cli-with-tools" + ] + }, + "mistral-medium-3": { + "reasoning": true, + "aliases": [ + "magistral-medium-latest", + "mistral-medium", + "mistral-medium-2604", + "mistral-medium-3-5", + "mistral-medium-3.5", + "mistral-medium-latest", + "mistral-vibe-cli-latest", + "mistral-vibe-cli-with-tools" + ] + }, + "mistral-medium-3-5": { + "reasoning": true, + "aliases": [ + "magistral-medium-latest", + "mistral-medium", + "mistral-medium-2604", + "mistral-medium-3", + "mistral-medium-3.5", + "mistral-medium-latest", + "mistral-vibe-cli-latest", + "mistral-vibe-cli-with-tools" + ] + }, + "mistral-medium-3.5": { + "reasoning": true, + "aliases": [ + "magistral-medium-latest", + "mistral-medium", + "mistral-medium-2604", + "mistral-medium-3", + "mistral-medium-3-5", + "mistral-medium-latest", + "mistral-vibe-cli-latest", + "mistral-vibe-cli-with-tools" + ] + }, + "mistral-medium-latest": { + "reasoning": true, + "aliases": [ + "magistral-medium-latest", + "mistral-medium", + "mistral-medium-2604", + "mistral-medium-3", + "mistral-medium-3-5", + "mistral-medium-3.5", + "mistral-vibe-cli-latest", + "mistral-vibe-cli-with-tools" + ] + }, + "mistral-moderation-2603": { + "reasoning": false, + "aliases": null + }, + "mistral-ocr-2512": { + "reasoning": false, + "aliases": [ + "mistral-ocr-3", + "mistral-ocr-3-0" + ] + }, + "mistral-ocr-3": { + "reasoning": false, + "aliases": [ + "mistral-ocr-2512", + "mistral-ocr-3-0" + ] + }, + "mistral-ocr-3-0": { + "reasoning": false, + "aliases": [ + "mistral-ocr-2512", + "mistral-ocr-3" + ] + }, + "mistral-ocr-4": { + "reasoning": false, + "aliases": [ + "mistral-ocr-4-1", + "mistral-ocr-latest" + ] + }, + "mistral-ocr-4-0": { + "reasoning": false, + "aliases": null + }, + "mistral-ocr-4-1": { + "reasoning": false, + "aliases": [ + "mistral-ocr-4", + "mistral-ocr-latest" + ] + }, + "mistral-ocr-latest": { + "reasoning": false, + "aliases": [ + "mistral-ocr-4", + "mistral-ocr-4-1" + ] + }, + "mistral-small-2603": { + "reasoning": true, + "aliases": [ + "magistral-small-latest", + "mistral-small-latest", + "mistral-vibe-cli-fast" + ] + }, + "mistral-small-latest": { + "reasoning": true, + "aliases": [ + "magistral-small-latest", + "mistral-small-2603", + "mistral-vibe-cli-fast" + ] + }, + "mistral-vibe-cli-fast": { + "reasoning": true, + "aliases": [ + "magistral-small-latest", + "mistral-small-2603", + "mistral-small-latest" + ] + }, + "mistral-vibe-cli-latest": { + "reasoning": true, + "aliases": [ + "magistral-medium-latest", + "mistral-medium", + "mistral-medium-2604", + "mistral-medium-3", + "mistral-medium-3-5", + "mistral-medium-3.5", + "mistral-medium-latest", + "mistral-vibe-cli-with-tools" + ] + }, + "mistral-vibe-cli-with-tools": { + "reasoning": true, + "aliases": [ + "magistral-medium-latest", + "mistral-medium", + "mistral-medium-2604", + "mistral-medium-3", + "mistral-medium-3-5", + "mistral-medium-3.5", + "mistral-medium-latest", + "mistral-vibe-cli-latest" + ] + }, + "voxtral-mini-2602": { + "reasoning": false, + "aliases": [ + "voxtral-mini-latest" + ] + }, + "voxtral-mini-latest": { + "reasoning": false, + "aliases": [ + "voxtral-mini-2602" + ] + }, + "voxtral-mini-realtime-2602": { + "reasoning": false, + "aliases": [ + "voxtral-mini-realtime-latest", + "voxtral-mini-transcribe-realtime-2602" + ] + }, + "voxtral-mini-realtime-latest": { + "reasoning": false, + "aliases": [ + "voxtral-mini-realtime-2602", + "voxtral-mini-transcribe-realtime-2602" + ] + }, + "voxtral-mini-transcribe-realtime-2602": { + "reasoning": false, + "aliases": [ + "voxtral-mini-realtime-2602", + "voxtral-mini-realtime-latest" + ] + }, + "voxtral-mini-tts-2603": { + "reasoning": false, + "aliases": [ + "voxtral-mini-tts-latest" + ] + }, + "voxtral-mini-tts-latest": { + "reasoning": false, + "aliases": [ + "voxtral-mini-tts-2603" + ] + }, + "voxtral-small-2507": { + "reasoning": false, + "aliases": [ + "voxtral-small-latest" + ] + }, + "voxtral-small-latest": { + "reasoning": false, + "aliases": [ + "voxtral-small-2507" + ] + }, + "zai-glm-5-2": { + "reasoning": true, + "aliases": [ + "glm-5-2" + ] + } +} diff --git a/llms/reasoning/testdata/models_dev.json b/llms/reasoning/testdata/models_dev.json new file mode 100644 index 000000000..243bb0185 --- /dev/null +++ b/llms/reasoning/testdata/models_dev.json @@ -0,0 +1,5584 @@ +{ + "alibaba": { + "deepseek-v4-flash-0731": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "effort", + "values": [ + "high", + "max" + ] + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 384000 + } + }, + "glm-5.2": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 131072 + } + }, + "qvq-max": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 131072, + "output": 8192 + } + }, + "qwen-flash": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 32768 + } + }, + "qwen-max": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 32768, + "output": 8192 + } + }, + "qwen-mt-plus": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 16384, + "output": 8192 + } + }, + "qwen-mt-turbo": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 16384, + "output": 8192 + } + }, + "qwen-omni-turbo": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 32768, + "output": 2048 + } + }, + "qwen-omni-turbo-realtime": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 32768, + "output": 2048 + } + }, + "qwen-plus": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 32768 + } + }, + "qwen-plus-character-ja": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 8192, + "output": 512 + } + }, + "qwen-turbo": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 16384 + } + }, + "qwen-vl-max": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 131072, + "output": 8192 + } + }, + "qwen-vl-ocr": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 34096, + "output": 4096 + } + }, + "qwen-vl-plus": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 131072, + "output": 8192 + } + }, + "qwen2-5-14b-instruct": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 131072, + "output": 8192 + } + }, + "qwen2-5-32b-instruct": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 131072, + "output": 8192 + } + }, + "qwen2-5-72b-instruct": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 131072, + "output": 8192 + } + }, + "qwen2-5-7b-instruct": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 131072, + "output": 8192 + } + }, + "qwen2-5-omni-7b": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 32768, + "output": 2048 + } + }, + "qwen2-5-vl-72b-instruct": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 131072, + "output": 8192 + } + }, + "qwen2-5-vl-7b-instruct": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 131072, + "output": 8192 + } + }, + "qwen3-14b": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 131072, + "output": 8192 + } + }, + "qwen3-235b-a22b": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 131072, + "output": 16384 + } + }, + "qwen3-32b": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 131072, + "output": 16384 + } + }, + "qwen3-8b": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 131072, + "output": 8192 + } + }, + "qwen3-asr-flash": { + "reasoning": false, + "temperature": false, + "limit": { + "context": 53248, + "output": 4096 + } + }, + "qwen3-coder-30b-a3b-instruct": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 262144, + "output": 65536 + } + }, + "qwen3-coder-480b-a35b-instruct": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 262144, + "output": 65536 + } + }, + "qwen3-coder-flash": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 1000000, + "output": 65536 + } + }, + "qwen3-coder-plus": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "qwen3-livetranslate-flash-realtime": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 53248, + "output": 4096 + } + }, + "qwen3-max": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 262144, + "output": 65536 + } + }, + "qwen3-next-80b-a3b-instruct": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 131072, + "output": 32768 + } + }, + "qwen3-next-80b-a3b-thinking": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 131072, + "output": 32768 + } + }, + "qwen3-omni-flash": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + } + ], + "temperature": true, + "limit": { + "context": 65536, + "output": 16384 + } + }, + "qwen3-omni-flash-realtime": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 65536, + "output": 16384 + } + }, + "qwen3-vl-235b-a22b": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 131072, + "output": 32768 + } + }, + "qwen3-vl-30b-a3b": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 131072, + "output": 32768 + } + }, + "qwen3-vl-plus": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 262144, + "output": 32768 + } + }, + "qwen3.5-122b-a10b": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 262144, + "output": 65536 + } + }, + "qwen3.5-27b": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 262144, + "output": 65536 + } + }, + "qwen3.5-35b-a3b": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 262144, + "output": 65536 + } + }, + "qwen3.5-397b-a17b": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 262144, + "output": 65536 + } + }, + "qwen3.5-plus": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 65536 + } + }, + "qwen3.6-27b": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 262144, + "output": 65536 + } + }, + "qwen3.6-35b-a3b": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 262144, + "output": 65536 + } + }, + "qwen3.6-flash": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 65536 + } + }, + "qwen3.6-max-preview": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 262144, + "output": 65536 + } + }, + "qwen3.6-plus": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 65536 + } + }, + "qwen3.7-max": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 65536 + } + }, + "qwen3.7-plus": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens" + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 65536 + } + }, + "qwen3.8-flash": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "effort", + "values": [ + "low", + "medium", + "xhigh" + ] + }, + { + "type": "budget_tokens", + "max": 262144 + } + ], + "limit": { + "context": 1000000, + "output": 131072 + } + }, + "qwen3.8-max": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "effort", + "values": [ + "low", + "medium", + "xhigh" + ] + }, + { + "type": "budget_tokens", + "min": 0, + "max": 262144 + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 131072 + } + }, + "qwq-plus": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 131072, + "output": 8192 + } + } + }, + "amazon-bedrock": { + "amazon.nova-2-lite-v1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 128000, + "output": 4096 + } + }, + "amazon.nova-lite-v1:0": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 300000, + "output": 8192 + } + }, + "amazon.nova-micro-v1:0": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 8192 + } + }, + "amazon.nova-pro-v1:0": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 300000, + "output": 8192 + } + }, + "anthropic.claude-fable-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "anthropic.claude-fable-5-1": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "anthropic.claude-haiku-4-5-20251001-v1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "anthropic.claude-opus-4-1-20250805-v1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 32000 + } + }, + "anthropic.claude-opus-4-5-20251101-v1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "anthropic.claude-opus-4-6-v1": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "max" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "anthropic.claude-opus-4-7": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "anthropic.claude-opus-4-8": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "anthropic.claude-opus-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "anthropic.claude-sonnet-4-5-20250929-v1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "anthropic.claude-sonnet-4-6": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "max" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 64000 + } + }, + "anthropic.claude-sonnet-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "au.anthropic.claude-haiku-4-5-20251001-v1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "au.anthropic.claude-opus-4-6-v1": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "max" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "au.anthropic.claude-opus-4-8": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "au.anthropic.claude-opus-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "au.anthropic.claude-sonnet-4-5-20250929-v1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "au.anthropic.claude-sonnet-4-6": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "max" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "au.anthropic.claude-sonnet-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "deepseek.r1-v1:0": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 128000, + "output": 32768 + } + }, + "deepseek.v3-v1:0": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 163840, + "output": 81920 + } + }, + "deepseek.v3.2": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 163840, + "output": 81920 + } + }, + "eu.anthropic.claude-fable-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "eu.anthropic.claude-haiku-4-5-20251001-v1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "eu.anthropic.claude-opus-4-5-20251101-v1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "eu.anthropic.claude-opus-4-6-v1": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "max" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "eu.anthropic.claude-opus-4-7": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "eu.anthropic.claude-opus-4-8": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "eu.anthropic.claude-opus-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "eu.anthropic.claude-sonnet-4-5-20250929-v1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "eu.anthropic.claude-sonnet-4-6": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "max" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 64000 + } + }, + "eu.anthropic.claude-sonnet-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "global.anthropic.claude-fable-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "global.anthropic.claude-fable-5-1": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "global.anthropic.claude-haiku-4-5-20251001-v1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "global.anthropic.claude-opus-4-5-20251101-v1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "global.anthropic.claude-opus-4-6-v1": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "max" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "global.anthropic.claude-opus-4-7": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "global.anthropic.claude-opus-4-8": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "global.anthropic.claude-opus-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "global.anthropic.claude-sonnet-4-5-20250929-v1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "global.anthropic.claude-sonnet-4-6": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "max" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 64000 + } + }, + "global.anthropic.claude-sonnet-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "global.openai.gpt-5.6-luna": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1050000, + "output": 128000 + } + }, + "global.openai.gpt-5.6-sol": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1050000, + "output": 128000 + } + }, + "global.openai.gpt-5.6-terra": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1050000, + "output": 128000 + } + }, + "google.gemma-3-12b-it": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 131072, + "output": 8192 + } + }, + "google.gemma-3-27b-it": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 202752, + "output": 8192 + } + }, + "google.gemma-3-4b-it": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 4096 + } + }, + "jp.anthropic.claude-haiku-4-5-20251001-v1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "jp.anthropic.claude-opus-4-7": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "jp.anthropic.claude-opus-4-8": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "jp.anthropic.claude-opus-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "jp.anthropic.claude-sonnet-4-5-20250929-v1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "jp.anthropic.claude-sonnet-4-6": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "max" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 64000 + } + }, + "jp.anthropic.claude-sonnet-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "meta.llama3-1-70b-instruct-v1:0": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 4096 + } + }, + "meta.llama3-1-8b-instruct-v1:0": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 4096 + } + }, + "meta.llama3-3-70b-instruct-v1:0": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 4096 + } + }, + "meta.llama4-maverick-17b-instruct-v1:0": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 1000000, + "output": 16384 + } + }, + "meta.llama4-scout-17b-instruct-v1:0": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 3500000, + "output": 16384 + } + }, + "minimax.minimax-m2": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 204608, + "output": 128000 + } + }, + "minimax.minimax-m2.1": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 204800, + "output": 131072 + } + }, + "minimax.minimax-m2.5": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 196608, + "output": 98304 + } + }, + "mistral.devstral-2-123b": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 256000, + "output": 8192 + } + }, + "mistral.magistral-small-2509": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 128000, + "output": 40000 + } + }, + "mistral.ministral-3-14b-instruct": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 4096 + } + }, + "mistral.ministral-3-3b-instruct": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 256000, + "output": 8192 + } + }, + "mistral.ministral-3-8b-instruct": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 4096 + } + }, + "mistral.mistral-large-3-675b-instruct": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 256000, + "output": 8192 + } + }, + "mistral.pixtral-large-2502-v1:0": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 8192 + } + }, + "mistral.voxtral-mini-3b-2507": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 4096 + } + }, + "mistral.voxtral-small-24b-2507": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 32000, + "output": 8192 + } + }, + "moonshot.kimi-k2-thinking": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 262143, + "output": 16000 + } + }, + "moonshotai.kimi-k2.5": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 262143, + "output": 16000 + } + }, + "nvidia.nemotron-nano-12b-v2": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 4096 + } + }, + "nvidia.nemotron-nano-3-30b": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 128000, + "output": 4096 + } + }, + "nvidia.nemotron-nano-9b-v2": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 4096 + } + }, + "nvidia.nemotron-super-3-120b": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 262144, + "output": 131072 + } + }, + "openai.gpt-5.4": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh" + ] + } + ], + "temperature": true, + "limit": { + "context": 272000, + "output": 128000 + } + }, + "openai.gpt-5.5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh" + ] + } + ], + "temperature": false, + "limit": { + "context": 272000, + "output": 128000 + } + }, + "openai.gpt-5.6-luna": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1050000, + "output": 128000 + } + }, + "openai.gpt-5.6-sol": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1050000, + "output": 128000 + } + }, + "openai.gpt-5.6-terra": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1050000, + "output": 128000 + } + }, + "openai.gpt-oss-120b": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 128000, + "output": 16384 + } + }, + "openai.gpt-oss-120b-1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 128000, + "output": 16384 + } + }, + "openai.gpt-oss-20b": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 128000, + "output": 16384 + } + }, + "openai.gpt-oss-20b-1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 128000, + "output": 16384 + } + }, + "openai.gpt-oss-safeguard-120b": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 16384 + } + }, + "openai.gpt-oss-safeguard-20b": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 16384 + } + }, + "qwen.qwen3-235b-a22b-2507-v1:0": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 262144, + "output": 131072 + } + }, + "qwen.qwen3-32b-v1:0": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 16384, + "output": 16384 + } + }, + "qwen.qwen3-coder-30b-a3b-v1:0": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 262144, + "output": 131072 + } + }, + "qwen.qwen3-coder-480b-a35b-v1:0": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 131072, + "output": 65536 + } + }, + "qwen.qwen3-coder-next": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 131072, + "output": 65536 + } + }, + "qwen.qwen3-next-80b-a3b": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 262000, + "output": 262000 + } + }, + "qwen.qwen3-vl-235b-a22b": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 262000, + "output": 262000 + } + }, + "us.anthropic.claude-fable-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "us.anthropic.claude-fable-5-1": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "us.anthropic.claude-haiku-4-5-20251001-v1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "us.anthropic.claude-opus-4-1-20250805-v1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 32000 + } + }, + "us.anthropic.claude-opus-4-5-20251101-v1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "us.anthropic.claude-opus-4-6-v1": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "max" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "us.anthropic.claude-opus-4-7": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "us.anthropic.claude-opus-4-8": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "us.anthropic.claude-opus-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "us.anthropic.claude-sonnet-4-5-20250929-v1:0": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "us.anthropic.claude-sonnet-4-6": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "max" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 64000 + } + }, + "us.anthropic.claude-sonnet-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "us.deepseek.r1-v1:0": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 128000, + "output": 32768 + } + }, + "us.meta.llama4-maverick-17b-instruct-v1:0": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 1000000, + "output": 16384 + } + }, + "us.meta.llama4-scout-17b-instruct-v1:0": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 3500000, + "output": 16384 + } + }, + "writer.palmyra-x4-v1:0": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 122880, + "output": 8192 + } + }, + "writer.palmyra-x5-v1:0": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 1040000, + "output": 8192 + } + }, + "xai.grok-4.3": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 131072 + } + }, + "xai.grok-4.6": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh" + ] + } + ], + "temperature": true, + "limit": { + "context": 500000, + "output": 500000 + } + }, + "zai.glm-4.7": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 204800, + "output": 131072 + } + }, + "zai.glm-4.7-flash": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 200000, + "output": 131072 + } + }, + "zai.glm-5": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 202752, + "output": 101376 + } + } + }, + "anthropic": { + "claude-fable-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "claude-fable-5-1": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "claude-haiku-4-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "claude-haiku-4-5-20251001": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "claude-opus-4-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "claude-opus-4-5-20251101": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "claude-opus-4-6": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "max" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "claude-opus-4-7": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "claude-opus-4-8": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "claude-opus-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "claude-sonnet-4-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 64000 + } + }, + "claude-sonnet-4-5-20250929": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 64000 + } + }, + "claude-sonnet-4-6": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "max" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "claude-sonnet-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + } + }, + "deepseek": { + "deepseek-v4-flash": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "effort", + "values": [ + "low", + "high", + "max" + ] + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 384000 + } + }, + "deepseek-v4-flash-vision-exp": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "effort", + "values": [ + "low", + "high", + "max" + ] + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 384000 + } + }, + "deepseek-v4-pro": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "effort", + "values": [ + "high", + "max" + ] + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 384000 + } + } + }, + "google": { + "deep-research-max-preview-04-2026": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 131072, + "output": 65536 + } + }, + "deep-research-preview-04-2026": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 131072, + "output": 65536 + } + }, + "gemini-2.5-computer-use-preview-10-2025": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 131072, + "output": 65536 + } + }, + "gemini-2.5-flash": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens", + "min": 0, + "max": 24576 + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-2.5-flash-image": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 32768, + "output": 32768 + } + }, + "gemini-2.5-flash-lite": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens", + "min": 512, + "max": 24576 + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-2.5-flash-preview-tts": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 8192, + "output": 16384 + } + }, + "gemini-2.5-pro": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 128, + "max": 32768 + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-2.5-pro-preview-tts": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 8192, + "output": 16384 + } + }, + "gemini-3-flash-preview": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-3-pro-image": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 131072, + "output": 32768 + } + }, + "gemini-3-pro-image-preview": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 131072, + "output": 32768 + } + }, + "gemini-3.1-flash-image": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 65536, + "output": 65536 + } + }, + "gemini-3.1-flash-image-preview": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 65536, + "output": 65536 + } + }, + "gemini-3.1-flash-lite": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-3.1-flash-lite-image": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 65536, + "output": 65536 + } + }, + "gemini-3.1-flash-lite-preview": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-3.1-flash-live-preview": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 131072, + "output": 65536 + } + }, + "gemini-3.1-flash-tts-preview": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 8192, + "output": 16384 + } + }, + "gemini-3.1-pro-preview": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-3.1-pro-preview-customtools": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-3.5-flash": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-3.5-flash-lite": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-3.5-live-translate-preview": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 16384, + "output": 32768 + } + }, + "gemini-3.6-flash": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-3.7-flash": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-3.8-flash": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-embedding-001": { + "reasoning": false, + "temperature": false, + "limit": { + "context": 2048, + "output": 1 + } + }, + "gemini-embedding-2": { + "reasoning": false, + "temperature": false, + "limit": { + "context": 8192, + "output": 1 + } + }, + "gemini-flash-latest": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-flash-lite-latest": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-omni-flash-preview": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 131072, + "output": 65536 + } + }, + "gemma-4-26b-a4b-it": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + } + ], + "temperature": true, + "limit": { + "context": 262144, + "output": 32768 + } + }, + "gemma-4-31b-it": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + } + ], + "temperature": true, + "limit": { + "context": 262144, + "output": 32768 + } + }, + "lyria-3-clip-preview": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "lyria-3-pro-preview": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "veo-3.1-fast-generate-preview": { + "reasoning": false, + "temperature": false, + "limit": { + "context": 480, + "output": 8192 + } + }, + "veo-3.1-generate-preview": { + "reasoning": false, + "temperature": false, + "limit": { + "context": 480, + "output": 8192 + } + }, + "veo-3.1-lite-generate-preview": { + "reasoning": false, + "temperature": false, + "limit": { + "context": 480, + "output": 8192 + } + } + }, + "google-vertex": { + "claude-fable-5-1@default": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "claude-fable-5@default": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "claude-haiku-4-5@20251001": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "claude-opus-4-1@20250805": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 32000 + } + }, + "claude-opus-4-5@20251101": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "claude-opus-4-6@default": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "max" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "claude-opus-4-7@default": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "claude-opus-4-8@default": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "claude-opus-4@20250514": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 32000 + } + }, + "claude-opus-5@default": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "claude-sonnet-4-5@20250929": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "claude-sonnet-4-6@default": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "max" + ] + }, + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "claude-sonnet-4@20250514": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 1024 + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 64000 + } + }, + "claude-sonnet-5@default": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + "deepseek-ai/deepseek-v3.1-maas": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 163840, + "output": 32768 + } + }, + "deepseek-ai/deepseek-v3.2-maas": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 163840, + "output": 65536 + } + }, + "gemini-2.5-flash": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens", + "min": 0, + "max": 24576 + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-2.5-flash-image": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 32768, + "output": 32768 + } + }, + "gemini-2.5-flash-lite": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "budget_tokens", + "min": 512, + "max": 24576 + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-2.5-flash-tts": { + "reasoning": false, + "temperature": false, + "limit": { + "context": 32768, + "output": 16384 + } + }, + "gemini-2.5-pro": { + "reasoning": true, + "reasoning_options": [ + { + "type": "budget_tokens", + "min": 128, + "max": 32768 + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-2.5-pro-tts": { + "reasoning": false, + "temperature": false, + "limit": { + "context": 32768, + "output": 16384 + } + }, + "gemini-3-flash-preview": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-3-pro-image": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 65536, + "output": 32768 + } + }, + "gemini-3.1-flash-image": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 131072, + "output": 32768 + } + }, + "gemini-3.1-flash-lite": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-3.1-flash-lite-preview": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-3.1-pro-preview": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-3.1-pro-preview-customtools": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-3.5-flash": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-3.5-flash-lite": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-3.6-flash": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-3.7-flash": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-3.8-flash": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-embedding-001": { + "reasoning": false, + "temperature": false, + "limit": { + "context": 2048, + "output": 1 + } + }, + "gemini-flash-latest": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "gemini-flash-lite-latest": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + "meta/llama-3.3-70b-instruct-maas": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 8192 + } + }, + "meta/llama-4-maverick-17b-128e-instruct-maas": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 524288, + "output": 8192 + } + }, + "moonshotai/kimi-k2-thinking-maas": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 262144, + "output": 262144 + } + }, + "openai/gpt-oss-120b-maas": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 131072, + "output": 32768 + } + }, + "openai/gpt-oss-20b-maas": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 131072, + "output": 32768 + } + }, + "qwen/qwen3-235b-a22b-instruct-2507-maas": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 262144, + "output": 16384 + } + }, + "zai-org/glm-4.7-maas": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 128000 + } + }, + "zai-org/glm-5-maas": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + } + ], + "temperature": true, + "limit": { + "context": 202752, + "output": 131072 + } + } + }, + "minimax": { + "MiniMax-M2": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 204800, + "output": 131072 + } + }, + "MiniMax-M2.1": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 204800, + "output": 131072 + } + }, + "MiniMax-M2.5": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 204800, + "output": 131072 + } + }, + "MiniMax-M2.5-highspeed": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 204800, + "output": 131072 + } + }, + "MiniMax-M2.7": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 204800, + "output": 131072 + } + }, + "MiniMax-M2.7-highspeed": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 204800, + "output": 131072 + } + }, + "MiniMax-M3": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + } + ], + "temperature": true, + "limit": { + "context": 1048576, + "output": 512000 + } + } + }, + "mistral": { + "codestral-latest": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 256000, + "output": 4096 + } + }, + "devstral-2512": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 262144, + "output": 262144 + } + }, + "devstral-latest": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 262144, + "output": 262144 + } + }, + "devstral-medium-2507": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 128000 + } + }, + "devstral-medium-latest": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 262144, + "output": 262144 + } + }, + "devstral-small-2505": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 128000 + } + }, + "devstral-small-2507": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 128000 + } + }, + "labs-devstral-small-2512": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 256000, + "output": 256000 + } + }, + "magistral-medium-latest": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 128000, + "output": 16384 + } + }, + "magistral-small": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 128000, + "output": 128000 + } + }, + "ministral-3b-latest": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 128000 + } + }, + "ministral-8b-latest": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 128000 + } + }, + "mistral-embed": { + "reasoning": false, + "temperature": false, + "limit": { + "context": 8000, + "output": 3072 + } + }, + "mistral-large-2411": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 131072, + "output": 16384 + } + }, + "mistral-large-2512": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 262144, + "output": 262144 + } + }, + "mistral-large-latest": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 262144, + "output": 262144 + } + }, + "mistral-medium-2505": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 131072, + "output": 131072 + } + }, + "mistral-medium-2508": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 262144, + "output": 262144 + } + }, + "mistral-medium-2604": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 262144, + "output": 262144 + } + }, + "mistral-medium-latest": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 262144, + "output": 262144 + } + }, + "mistral-nemo": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 128000 + } + }, + "mistral-small-2506": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 16384 + } + }, + "mistral-small-2603": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 256000, + "output": 256000 + } + }, + "mistral-small-latest": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 256000, + "output": 256000 + } + }, + "open-mistral-7b": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 8000, + "output": 8000 + } + }, + "open-mistral-nemo": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 128000 + } + }, + "open-mixtral-8x22b": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 64000, + "output": 64000 + } + }, + "open-mixtral-8x7b": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 32000, + "output": 32000 + } + }, + "pixtral-12b": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 128000 + } + }, + "pixtral-large-latest": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 128000 + } + }, + "voxtral-mini-latest": { + "reasoning": false, + "temperature": false, + "limit": {} + }, + "voxtral-mini-tts-latest": { + "reasoning": false, + "temperature": false, + "limit": {} + }, + "voxtral-small-latest": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 32000, + "output": 32000 + } + }, + "zai-glm-5-2": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "high", + "max" + ] + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 131072 + } + } + }, + "moonshotai": { + "kimi-k2-0711-preview": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 131072, + "output": 16384 + } + }, + "kimi-k2-0905-preview": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 262144, + "output": 262144 + } + }, + "kimi-k2-thinking": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 262144, + "output": 262144 + } + }, + "kimi-k2-thinking-turbo": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 262144, + "output": 262144 + } + }, + "kimi-k2-turbo-preview": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 262144, + "output": 262144 + } + }, + "kimi-k2.5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + } + ], + "temperature": false, + "limit": { + "context": 262144, + "output": 262144 + } + }, + "kimi-k2.6": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + } + ], + "temperature": true, + "limit": { + "context": 262144, + "output": 262144 + } + }, + "kimi-k2.7-code": { + "reasoning": true, + "temperature": false, + "limit": { + "context": 262144, + "output": 262144 + } + }, + "kimi-k2.7-code-highspeed": { + "reasoning": true, + "temperature": false, + "limit": { + "context": 262144, + "output": 262144 + } + }, + "kimi-k3": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + }, + { + "type": "effort", + "values": [ + "low", + "high", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1048576, + "output": 131072 + } + } + }, + "openai": { + "chatgpt-image-latest": { + "reasoning": false, + "temperature": false, + "limit": {} + }, + "gpt-3.5-turbo": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 16385, + "output": 4096 + } + }, + "gpt-4": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 8192, + "output": 8192 + } + }, + "gpt-4-turbo": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 4096 + } + }, + "gpt-4.1": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 1047576, + "output": 32768 + } + }, + "gpt-4.1-mini": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 1047576, + "output": 32768 + } + }, + "gpt-4.1-nano": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 1047576, + "output": 32768 + } + }, + "gpt-4o": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 16384 + } + }, + "gpt-4o-2024-05-13": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 4096 + } + }, + "gpt-4o-2024-08-06": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 16384 + } + }, + "gpt-4o-2024-11-20": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 16384 + } + }, + "gpt-4o-mini": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 16384 + } + }, + "gpt-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ], + "temperature": false, + "limit": { + "context": 400000, + "output": 128000 + } + }, + "gpt-5-mini": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ], + "temperature": false, + "limit": { + "context": 400000, + "output": 128000 + } + }, + "gpt-5-nano": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "low", + "medium", + "high" + ] + } + ], + "temperature": false, + "limit": { + "context": 400000, + "output": 128000 + } + }, + "gpt-5-pro": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "high" + ] + } + ], + "temperature": false, + "limit": { + "context": 400000, + "output": 272000 + } + }, + "gpt-5.1": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 400000, + "output": 128000 + } + }, + "gpt-5.2": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh" + ] + } + ], + "temperature": true, + "limit": { + "context": 400000, + "output": 128000 + } + }, + "gpt-5.2-chat-latest": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "medium" + ] + } + ], + "temperature": false, + "limit": { + "context": 128000, + "output": 16384 + } + }, + "gpt-5.2-pro": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "medium", + "high", + "xhigh" + ] + } + ], + "temperature": false, + "limit": { + "context": 400000, + "output": 128000 + } + }, + "gpt-5.3-chat-latest": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 128000, + "output": 16384 + } + }, + "gpt-5.3-codex": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh" + ] + } + ], + "temperature": true, + "limit": { + "context": 400000, + "output": 128000 + } + }, + "gpt-5.3-codex-spark": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh" + ] + } + ], + "temperature": false, + "limit": { + "context": 128000, + "output": 32000 + } + }, + "gpt-5.4": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh" + ] + } + ], + "temperature": true, + "limit": { + "context": 1050000, + "output": 128000 + } + }, + "gpt-5.4-mini": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh" + ] + } + ], + "temperature": true, + "limit": { + "context": 400000, + "output": 128000 + } + }, + "gpt-5.4-nano": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh" + ] + } + ], + "temperature": true, + "limit": { + "context": 400000, + "output": 128000 + } + }, + "gpt-5.4-pro": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "medium", + "high", + "xhigh" + ] + } + ], + "temperature": false, + "limit": { + "context": 1050000, + "output": 128000 + } + }, + "gpt-5.5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh" + ] + } + ], + "temperature": false, + "limit": { + "context": 1050000, + "output": 128000 + } + }, + "gpt-5.5-pro": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "medium", + "high", + "xhigh" + ] + } + ], + "temperature": false, + "limit": { + "context": 1050000, + "output": 128000 + } + }, + "gpt-5.6": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1050000, + "output": 128000 + } + }, + "gpt-5.6-luna": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1050000, + "output": 128000 + } + }, + "gpt-5.6-sol": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1050000, + "output": 128000 + } + }, + "gpt-5.6-terra": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high", + "xhigh", + "max" + ] + } + ], + "temperature": false, + "limit": { + "context": 1050000, + "output": 128000 + } + }, + "gpt-image-1": { + "reasoning": false, + "temperature": false, + "limit": {} + }, + "gpt-image-1-mini": { + "reasoning": false, + "temperature": false, + "limit": {} + }, + "gpt-image-1.5": { + "reasoning": false, + "temperature": false, + "limit": {} + }, + "gpt-image-2": { + "reasoning": false, + "temperature": false, + "limit": {} + }, + "gpt-realtime-2.1": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + } + ], + "temperature": false, + "limit": { + "context": 128000, + "output": 32000 + } + }, + "o1": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": false, + "limit": { + "context": 200000, + "output": 100000 + } + }, + "o1-pro": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": false, + "limit": { + "context": 200000, + "output": 100000 + } + }, + "o3": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": false, + "limit": { + "context": 200000, + "output": 100000 + } + }, + "o3-mini": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": false, + "limit": { + "context": 200000, + "output": 100000 + } + }, + "o3-pro": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": false, + "limit": { + "context": 200000, + "output": 100000 + } + }, + "o4-mini": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": false, + "limit": { + "context": 200000, + "output": 100000 + } + }, + "text-embedding-3-large": { + "reasoning": false, + "temperature": false, + "limit": { + "context": 8191, + "output": 3072 + } + }, + "text-embedding-3-small": { + "reasoning": false, + "temperature": false, + "limit": { + "context": 8191, + "output": 1536 + } + }, + "text-embedding-ada-002": { + "reasoning": false, + "temperature": false, + "limit": { + "context": 8192, + "output": 1536 + } + } + }, + "xai": { + "grok-4.20-0309-non-reasoning": { + "reasoning": false, + "temperature": true, + "limit": { + "context": 1000000, + "output": 30000 + } + }, + "grok-4.20-0309-reasoning": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 1000000, + "output": 30000 + } + }, + "grok-4.20-multi-agent-0309": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh" + ] + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 30000 + } + }, + "grok-4.3": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "none", + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 30000 + } + }, + "grok-4.5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high" + ] + } + ], + "temperature": true, + "limit": { + "context": 500000, + "output": 500000 + } + }, + "grok-4.6": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "medium", + "high", + "xhigh" + ] + } + ], + "temperature": true, + "limit": { + "context": 500000, + "output": 500000 + } + }, + "grok-build-0.1": { + "reasoning": true, + "temperature": true, + "limit": { + "context": 256000, + "output": 256000 + } + }, + "grok-imagine-image": { + "reasoning": false, + "temperature": false, + "limit": { + "context": 8000 + } + }, + "grok-imagine-image-2.0": { + "reasoning": false, + "temperature": false, + "limit": { + "context": 8000 + } + }, + "grok-imagine-image-quality": { + "reasoning": false, + "temperature": false, + "limit": { + "context": 8000 + } + }, + "grok-imagine-video": { + "reasoning": false, + "temperature": false, + "limit": { + "context": 1024 + } + }, + "grok-imagine-video-1.5": { + "reasoning": false, + "temperature": false, + "limit": { + "context": 1024 + } + } + }, + "zhipuai": { + "glm-4.5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + } + ], + "temperature": true, + "limit": { + "context": 131072, + "output": 98304 + } + }, + "glm-4.5-air": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + } + ], + "temperature": true, + "limit": { + "context": 131072, + "output": 98304 + } + }, + "glm-4.5-flash": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + } + ], + "temperature": true, + "limit": { + "context": 131072, + "output": 98304 + } + }, + "glm-4.5v": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + } + ], + "temperature": true, + "limit": { + "context": 64000, + "output": 16384 + } + }, + "glm-4.6": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + } + ], + "temperature": true, + "limit": { + "context": 204800, + "output": 131072 + } + }, + "glm-4.6v": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + } + ], + "temperature": true, + "limit": { + "context": 128000, + "output": 32768 + } + }, + "glm-4.7": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + } + ], + "temperature": true, + "limit": { + "context": 204800, + "output": 131072 + } + }, + "glm-4.7-flash": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 131072 + } + }, + "glm-4.7-flashx": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 131072 + } + }, + "glm-5": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + } + ], + "temperature": true, + "limit": { + "context": 204800, + "output": 131072 + } + }, + "glm-5.1": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 131072 + } + }, + "glm-5.2": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "high", + "max" + ] + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 131072 + } + }, + "glm-5.3": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "high", + "max" + ] + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 131072 + } + }, + "glm-5.3-flash": { + "reasoning": true, + "reasoning_options": [ + { + "type": "effort", + "values": [ + "low", + "high", + "max" + ] + } + ], + "temperature": true, + "limit": { + "context": 1000000, + "output": 131072 + } + }, + "glm-5v-turbo": { + "reasoning": true, + "reasoning_options": [ + { + "type": "toggle" + } + ], + "temperature": true, + "limit": { + "context": 200000, + "output": 131072 + } + } + } +} diff --git a/llms/reasoning_delegation_test.go b/llms/reasoning_delegation_test.go new file mode 100644 index 000000000..a52f0afcb --- /dev/null +++ b/llms/reasoning_delegation_test.go @@ -0,0 +1,26 @@ +package llms + +import "testing" + +func TestAnExplicitOffIsNotADelegationOfDepth(t *testing.T) { + t.Parallel() + + cfg := &ReasoningConfig{Mode: ReasoningOff, Adaptive: true} + if cfg.DelegatesDepth() { + t.Error("a caller who switched thinking off did not hand the depth to the vendor") + } + if cfg.ResolveMode() != ReasoningOff { + t.Errorf("ResolveMode() = %v, want %v", cfg.ResolveMode(), ReasoningOff) + } +} + +func TestAdaptiveWithoutAModeStillDelegatesDepth(t *testing.T) { + t.Parallel() + + if !(&ReasoningConfig{Adaptive: true}).DelegatesDepth() { + t.Error("adaptive with no effort and no budget leaves the depth to the vendor") + } + if !(&ReasoningConfig{Mode: ReasoningOn, Adaptive: true}).DelegatesDepth() { + t.Error("an explicit on with the adaptive flag still delegates the depth") + } +} diff --git a/llms/reasoning_sampling_hint_test.go b/llms/reasoning_sampling_hint_test.go new file mode 100644 index 000000000..02eb8323d --- /dev/null +++ b/llms/reasoning_sampling_hint_test.go @@ -0,0 +1,33 @@ +package llms_test + +import ( + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" + + "github.com/stretchr/testify/assert" +) + +func TestTheHintReportsTheSamplingTheWireRefuses(t *testing.T) { + t.Parallel() + + for _, model := range []string{"o3-mini", "gpt-5-mini", "o3", "gpt-5.1"} { + support := llms.ReasoningSupportFor(model, reasoning.ProviderOpenAI) + assert.True(t, support.Supported, "%s is a reasoning model", model) + assert.Equal(t, reasoning.RejectsSamplingWhileThinking(model), support.RejectsSampling, + "%s: the hint and the wire disagree about sampling", model) + assert.True(t, support.RejectsSampling, + "%s pins temperature and drops top_p on the wire", model) + } +} + +func TestAForeignVendorOnTheOpenAIDoorKeepsItsSampling(t *testing.T) { + t.Parallel() + + for _, model := range []string{"deepseek-v3.1", "qwen3-max"} { + support := llms.ReasoningSupportFor(model, reasoning.ProviderOpenAI) + assert.Equal(t, reasoning.RejectsSamplingWhileThinking(model), support.RejectsSampling, + "%s: the hint and the wire disagree about sampling", model) + } +} diff --git a/llms/reasoning_support.go b/llms/reasoning_support.go index 9f9070852..eeb603f70 100644 --- a/llms/reasoning_support.go +++ b/llms/reasoning_support.go @@ -25,12 +25,26 @@ type ReasoningSupport struct { CannotDisable bool // RejectsSampling is set for models that reject temperature/top_p while thinking. RejectsSampling bool - // Efforts are the effort tiers worth offering; nil when unknown. + // Efforts are the effort tiers worth offering; empty both when the model is + // unknown and when it takes none, so read Mechanism before offering a control. Efforts []ReasoningEffort + // Mechanism reports whether the model takes an effort level, a token budget + // or either; ReasoningMechanismUnknown when unclassified. + Mechanism ReasoningMechanism // DefaultOn reports whether thinking runs when reasoning is unset; nil when unknown. DefaultOn *bool } +// ReasoningMechanism describes how a model takes its thinking instruction. +type ReasoningMechanism int + +const ( + ReasoningMechanismUnknown ReasoningMechanism = iota + ReasoningMechanismAdaptive + ReasoningMechanismBudget + ReasoningMechanismAdaptiveAndBudget +) + var ( reasoningOverridesMu sync.RWMutex reasoningOverrides = map[string]ReasoningSupport{} @@ -66,8 +80,8 @@ func lookupReasoningOverride(model string) (ReasoningSupport, bool) { func boolPtr(b bool) *bool { return &b } // ReasoningSupportFor returns the reasoning-control hint for a model on a -// provider. Registered overrides win; then Claude and OpenAI reasoning models are -// classified from the shared tables; everything else returns Known=false +// provider. Registered overrides win; then the models the shared tables classify +// for that provider; everything else returns Known=false // (optimistic — the UI shows all controls and the API rejects what it cannot do). func ReasoningSupportFor(model string, p reasoning.Provider) ReasoningSupport { if s, ok := lookupReasoningOverride(model); ok { @@ -76,55 +90,96 @@ func ReasoningSupportFor(model string, p reasoning.Provider) ReasoningSupport { if reasoning.ClaudeSupportsThinking(model) { return ReasoningSupport{ - Supported: true, - Known: true, - // Derive from the same resolver the wire uses so the hint tracks - // provider differences (e.g. Sonnet 5 is disablable on Anthropic but - // always on, hence not disablable, on Bedrock). + Supported: true, + Known: true, CannotDisable: reasoning.ResolveOff(model, p) == reasoning.OffUnsupported, RejectsSampling: reasoning.ClaudeRejectsSampling(model), - Efforts: claudeEfforts(reasoning.ClaudeReasoningKindFor(model)), + Efforts: toReasoningEfforts(reasoning.ClaudeEffortsFor(model, p)), + Mechanism: claudeMechanism(reasoning.ClaudeReasoningKindFor(model)), DefaultOn: boolPtr(reasoning.ClaudeThinkingDefaultsOn(model)), } } + if p == reasoning.ProviderBedrock && reasoning.IsGptOssModel(model) { + return levelOnlySupport(model, p, reasoning.GptOssEfforts(), true) + } + + if p == reasoning.ProviderBedrock && reasoning.IsNovaReasoningModel(model) { + return levelOnlySupport(model, p, reasoning.NovaEfforts(), false) + } + + if p == reasoning.ProviderBedrock && reasoning.IsBedrockNonReasoningModel(model) { + return ReasoningSupport{Known: true, DefaultOn: boolPtr(false)} + } + + if caps := reasoning.OpenAIReasoningCapsFor(model); caps.Known { + return ReasoningSupport{ + Supported: true, + Known: true, + CannotDisable: !caps.CanDisable, + RejectsSampling: reasoning.RejectsSamplingWhileThinking(model), + Efforts: toReasoningEfforts(caps.Efforts), + Mechanism: ReasoningMechanismAdaptive, + } + } + if p == reasoning.ProviderOpenAI && reasoning.IsReasoningModel(model) { - // A classified model (e.g. GPT-5 Pro accepts only high, GPT-5.4 mini adds - // xhigh) advertises its own effort set; an unclassified one falls back to - // the conservative low/medium/high triple. - efforts := []ReasoningEffort{ReasoningLow, ReasoningMedium, ReasoningHigh} - if caps := reasoning.OpenAIReasoningCapsFor(model); caps.Known { - efforts = toReasoningEfforts(caps.Efforts) + var defaultOn *bool + if reasoning.QwenThinkingEnabledByFlag(model) { + defaultOn = boolPtr(false) } return ReasoningSupport{ - Supported: true, - Known: true, - CannotDisable: reasoning.ResolveOff(model, p) == reasoning.OffUnsupported, - Efforts: efforts, - // DefaultOn is per-model on the GPT-5.x line (some default off) — leave unknown. + Supported: true, + CannotDisable: reasoning.ResolveOff(model, p) == reasoning.OffUnsupported, + RejectsSampling: reasoning.RejectsSamplingWhileThinking(model), + DefaultOn: defaultOn, } } if p == reasoning.ProviderGoogleAI && reasoning.GeminiSupportsThinking(model) { + // Efforts stays unset: this package does not classify the Google level names. + mechanism := ReasoningMechanismBudget + switch { + case reasoning.GeminiUsesThinkingLevel(model), reasoning.GeminiTogglesThinkingByLevel(model): + mechanism = ReasoningMechanismAdaptive + } return ReasoningSupport{ - // Flash/Flash-Lite/Gemma disable via thinkingBudget:0; Pro and Gemini 3.x - // cannot fully disable — derive from the same resolver the wire uses. CannotDisable: reasoning.ResolveOff(model, p) == reasoning.OffUnsupported, Supported: true, Known: true, - // These families think by default (Flash-Lite / Gemma may still accept budget:0). - DefaultOn: boolPtr(true), + Mechanism: mechanism, + DefaultOn: boolPtr(!reasoning.GeminiThinkingOffByDefault(model)), } } - // Unrecognized: optimistic. Supported best-guessed from the shared classifier; - // the UI shows all controls and the provider teaches via a 400. - return ReasoningSupport{Supported: reasoning.IsReasoningModel(model), Known: false} + if efforts := reasoning.OllamaEffortsFor(model); p == reasoning.ProviderOllama && len(efforts) > 0 { + return levelOnlySupport(model, p, efforts, true) + } + + return ReasoningSupport{ + Supported: reasoning.LikelyReasoningModel(model), + Known: false, + CannotDisable: reasoning.ResolveOff(model, p) == reasoning.OffUnsupported, + } +} + +func levelOnlySupport(model string, p reasoning.Provider, efforts []string, defaultOn bool) ReasoningSupport { + return ReasoningSupport{ + Supported: true, + Known: true, + CannotDisable: reasoning.ResolveOff(model, p) == reasoning.OffUnsupported, + Efforts: toReasoningEfforts(efforts), + Mechanism: ReasoningMechanismAdaptive, + DefaultOn: boolPtr(defaultOn), + } } // toReasoningEfforts converts the resolver's raw effort strings to the public // ReasoningEffort type for UI hints. func toReasoningEfforts(efforts []string) []ReasoningEffort { + if len(efforts) == 0 { + return nil + } out := make([]ReasoningEffort, len(efforts)) for i, e := range efforts { out[i] = ReasoningEffort(e) @@ -132,15 +187,15 @@ func toReasoningEfforts(efforts []string) []ReasoningEffort { return out } -func claudeEfforts(kind reasoning.ClaudeReasoningKind) []ReasoningEffort { +func claudeMechanism(kind reasoning.ClaudeReasoningKind) ReasoningMechanism { switch kind { case reasoning.ClaudeReasoningAdaptiveOnly: - return []ReasoningEffort{ReasoningLow, ReasoningMedium, ReasoningHigh, ReasoningXHigh, ReasoningMax} - case reasoning.ClaudeReasoningAdaptiveAndBudget: - return []ReasoningEffort{ReasoningLow, ReasoningMedium, ReasoningHigh, ReasoningMax} + return ReasoningMechanismAdaptive case reasoning.ClaudeReasoningBudgetOnly: - return []ReasoningEffort{ReasoningLow, ReasoningMedium, ReasoningHigh} + return ReasoningMechanismBudget + case reasoning.ClaudeReasoningAdaptiveAndBudget: + return ReasoningMechanismAdaptiveAndBudget default: - return nil + return ReasoningMechanismUnknown } } diff --git a/llms/reasoning_support_test.go b/llms/reasoning_support_test.go index adcf38d73..aebece565 100644 --- a/llms/reasoning_support_test.go +++ b/llms/reasoning_support_test.go @@ -1,11 +1,37 @@ package llms import ( + "reflect" + "slices" "testing" "github.com/vxcontrol/langchaingo/llms/reasoning" ) +func TestReasoningSupportForNewerGeneration(t *testing.T) { + t.Parallel() + cases := []struct { + model string + provider reasoning.Provider + want bool + }{ + {"gpt-6", reasoning.ProviderOpenAI, true}, + {"claude-opus-6", reasoning.ProviderAnthropic, true}, + {"gemini-4-pro", reasoning.ProviderGoogleAI, true}, + {"gpt-4o", reasoning.ProviderOpenAI, false}, + {"claude-3-5-sonnet-latest", reasoning.ProviderAnthropic, false}, + } + for _, tc := range cases { + s := ReasoningSupportFor(tc.model, tc.provider) + if s.Supported != tc.want { + t.Errorf("ReasoningSupportFor(%q).Supported = %v, want %v", tc.model, s.Supported, tc.want) + } + if s.Known { + t.Errorf("ReasoningSupportFor(%q).Known = true, want false: the tiers are a guess, not a fact", tc.model) + } + } +} + func TestReasoningSupportFor(t *testing.T) { //nolint:funlen // table-driven test t.Parallel() @@ -50,12 +76,15 @@ func TestReasoningSupportFor(t *testing.T) { //nolint:funlen // table-driven tes } }) - t.Run("Sonnet 5 disable hint is provider-aware", func(t *testing.T) { - // Disablable on the Anthropic API, not disablable on Bedrock (always on). + t.Run("Sonnet 5 can be disabled on every door, the OpenAI-shaped one included", func(t *testing.T) { anthropic := ReasoningSupportFor("claude-sonnet-5", reasoning.ProviderAnthropic) eq(t, "CannotDisable(Anthropic)", anthropic.CannotDisable, false) bedrock := ReasoningSupportFor("us.anthropic.claude-sonnet-5", reasoning.ProviderBedrock) - eq(t, "CannotDisable(Bedrock)", bedrock.CannotDisable, true) + eq(t, "CannotDisable(Bedrock)", bedrock.CannotDisable, false) + gateway := ReasoningSupportFor("anthropic/claude-sonnet-5", reasoning.ProviderOpenAI) + eq(t, "CannotDisable(OpenAI gateway)", gateway.CannotDisable, false) + reseller := ReasoningSupportFor("deepinfra/anthropic/claude-sonnet-5", reasoning.ProviderOpenAI) + eq(t, "CannotDisable(a gateway route that takes no thinking object)", reseller.CannotDisable, true) }) t.Run("Opus 5 defaults on but is disablable, like Sonnet 5 unlike Opus 4.8", func(t *testing.T) { @@ -66,9 +95,8 @@ func TestReasoningSupportFor(t *testing.T) { //nolint:funlen // table-driven tes if s.DefaultOn == nil || !*s.DefaultOn { t.Errorf("Opus 5 DefaultOn = %v, want true", s.DefaultOn) } - // Provider-aware, same rule as Sonnet 5: not disablable on Bedrock. bedrock := ReasoningSupportFor("us.anthropic.claude-opus-5", reasoning.ProviderBedrock) - eq(t, "CannotDisable(Bedrock)", bedrock.CannotDisable, true) + eq(t, "CannotDisable(Bedrock)", bedrock.CannotDisable, false) }) t.Run("OpenAI o-series cannot disable", func(t *testing.T) { @@ -87,6 +115,56 @@ func TestReasoningSupportFor(t *testing.T) { //nolint:funlen // table-driven tes } }) + t.Run("an unclassified OpenAI model names no effort tiers", func(t *testing.T) { + s := ReasoningSupportFor("gpt-5.7", reasoning.ProviderOpenAI) + eq(t, "Supported", s.Supported, true) + if s.Efforts != nil { + t.Errorf("Efforts = %v, want nil: the tiers of gpt-5.7 are not classified", s.Efforts) + } + }) + + t.Run("a classified OpenAI generation names its effort tiers", func(t *testing.T) { + s := ReasoningSupportFor("gpt-5.5", reasoning.ProviderOpenAI) + want := []ReasoningEffort{"low", "medium", "high", "xhigh"} + if !slices.Equal(s.Efforts, want) { + t.Errorf("Efforts = %v, want %v", s.Efforts, want) + } + }) + + t.Run("mechanism follows the Claude generation", func(t *testing.T) { + cases := []struct { + model string + want ReasoningMechanism + }{ + {"claude-sonnet-5", ReasoningMechanismAdaptive}, + {"us.anthropic.claude-opus-4-8", ReasoningMechanismAdaptive}, + {"claude-opus-4-6", ReasoningMechanismAdaptiveAndBudget}, + {"claude-sonnet-4-5", ReasoningMechanismBudget}, + {"claude-haiku-4-5", ReasoningMechanismBudget}, + } + for _, tc := range cases { + got := ReasoningSupportFor(tc.model, reasoning.ProviderAnthropic).Mechanism + if got != tc.want { + t.Errorf("Mechanism(%q) = %v, want %v", tc.model, got, tc.want) + } + } + eq(t, "gpt-5.5 Mechanism", + ReasoningSupportFor("gpt-5.5", reasoning.ProviderOpenAI).Mechanism, ReasoningMechanismAdaptive) + eq(t, "unclassified model Mechanism", + ReasoningSupportFor("gpt-5.3", reasoning.ProviderOpenAI).Mechanism, ReasoningMechanismUnknown) + }) + + t.Run("a model outside the capability table is not reported as classified", func(t *testing.T) { + classified := ReasoningSupportFor("gpt-5.5", reasoning.ProviderOpenAI) + eq(t, "gpt-5.5 Known", classified.Known, true) + eq(t, "gpt-5.5 Efforts present", len(classified.Efforts) > 0, true) + + unclassified := ReasoningSupportFor("gpt-5.3", reasoning.ProviderOpenAI) + eq(t, "gpt-5.3 Supported", unclassified.Supported, true) + eq(t, "gpt-5.3 Known", unclassified.Known, false) + eq(t, "gpt-5.3 Efforts empty", len(unclassified.Efforts), 0) + }) + t.Run("OpenAI effort set is model-dependent", func(t *testing.T) { pro := ReasoningSupportFor("gpt-5-pro", reasoning.ProviderOpenAI) eq(t, "gpt-5-pro Efforts len", len(pro.Efforts), 1) @@ -119,6 +197,27 @@ func TestReasoningSupportFor(t *testing.T) { //nolint:funlen // table-driven tes } }) + t.Run("only Gemini 2.5 Flash-Lite is off until asked", func(t *testing.T) { + lite := ReasoningSupportFor("gemini-2.5-flash-lite", reasoning.ProviderGoogleAI) + eq(t, "2.5 Flash-Lite Supported", lite.Supported, true) + eq(t, "2.5 Flash-Lite CannotDisable", lite.CannotDisable, false) + if lite.DefaultOn == nil || *lite.DefaultOn { + t.Errorf("gemini-2.5-flash-lite DefaultOn = %v, want false", lite.DefaultOn) + } + for _, model := range []string{"gemini-3.1-flash-lite", "gemini-3.5-flash-lite", "gemini-3.6-flash"} { + s := ReasoningSupportFor(model, reasoning.ProviderGoogleAI) + eq(t, model+" Supported", s.Supported, true) + eq(t, model+" CannotDisable", s.CannotDisable, false) + if s.DefaultOn == nil || !*s.DefaultOn { + t.Errorf("%s DefaultOn = %v, want true", model, s.DefaultOn) + } + } + for _, model := range []string{"gemini-3.7-flash", "gemini-3.8-flash"} { + s := ReasoningSupportFor(model, reasoning.ProviderGoogleAI) + eq(t, model+" CannotDisable", s.CannotDisable, true) + } + }) + t.Run("Gemini 2.5 disable hint is model-dependent", func(t *testing.T) { flash := ReasoningSupportFor("gemini-2.5-flash", reasoning.ProviderGoogleAI) eq(t, "2.5 Flash CannotDisable", flash.CannotDisable, false) @@ -132,10 +231,10 @@ func TestReasoningSupportFor(t *testing.T) { //nolint:funlen // table-driven tes model string cannotDisable bool }{ - {"gemini-3.5-flash", true}, + {"gemini-3.5-flash", false}, {"gemini-3.1-pro-preview", true}, {"gemini-3.1-pro-preview-customtools", true}, - {"gemini-3.1-flash-lite", true}, + {"gemini-3.1-flash-lite", false}, {"gemini-2.5-pro", true}, {"gemini-2.5-flash", false}, {"gemini-2.5-flash-lite", false}, @@ -169,3 +268,567 @@ func TestReasoningSupportFor(t *testing.T) { //nolint:funlen // table-driven tes } }) } + +func TestOpenAIHintSurvivesTheTransportLabel(t *testing.T) { + t.Parallel() + + labels := []reasoning.Provider{ + reasoning.ProviderUnknown, + reasoning.ProviderGoogleAI, + reasoning.ProviderBedrock, + reasoning.ProviderAnthropic, + } + + for _, model := range []string{"gpt-5-pro", "gpt-5", "gpt-5-mini", "o3", "o4-mini", "gpt-5.1", "gpt-5.2"} { + want := ReasoningSupportFor(model, reasoning.ProviderOpenAI) + if !want.Known || len(want.Efforts) == 0 { + t.Fatalf("%s: the OpenAI label must know this model, got %+v", model, want) + } + for _, p := range labels { + got := ReasoningSupportFor(model, p) + if !got.Known { + t.Errorf("%s behind label %v: Known = false, want the same hint as the OpenAI label", model, p) + } + if !slices.Equal(got.Efforts, want.Efforts) { + t.Errorf("%s behind label %v: Efforts = %v, want %v", model, p, got.Efforts, want.Efforts) + } + if got.CannotDisable != want.CannotDisable { + t.Errorf("%s behind label %v: CannotDisable = %v, want %v", model, p, got.CannotDisable, want.CannotDisable) + } + } + } +} + +func TestNonOpenAIModelsKeepTheirOwnBranch(t *testing.T) { + t.Parallel() + + gemini := ReasoningSupportFor("gemini-2.5-flash", reasoning.ProviderGoogleAI) + if gemini.DefaultOn == nil { + t.Fatal("gemini on its own provider must still report DefaultOn from the Google branch") + } + if len(gemini.Efforts) != 0 { + t.Fatalf("gemini has no effort ladder, got %v", gemini.Efforts) + } + + for _, model := range []string{"grok-4", "glm-5", "gemini-2.5-flash"} { + if got := ReasoningSupportFor(model, reasoning.ProviderUnknown); got.Known { + t.Errorf("%s behind an unknown label must stay unclassified, got %+v", model, got) + } + } +} + +func TestCannotDisableFollowsTheResolverOnEveryProvider(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + p reasoning.Provider + want bool + }{ + {"claude-sonnet-5", reasoning.ProviderAnthropic, false}, + {"claude-sonnet-5", reasoning.ProviderBedrock, false}, + {"claude-sonnet-5", reasoning.ProviderOpenAI, false}, + {"claude-fable-5", reasoning.ProviderOpenAI, true}, + {"claude-sonnet-5", reasoning.ProviderUnknown, false}, + {"claude-fable-5", reasoning.ProviderAnthropic, true}, + {"claude-fable-5", reasoning.ProviderBedrock, true}, + {"claude-fable-5", reasoning.ProviderUnknown, true}, + {"claude-opus-4-6", reasoning.ProviderUnknown, false}, + } { + if got := ReasoningSupportFor(tc.model, tc.p).CannotDisable; got != tc.want { + t.Errorf("CannotDisable(%q, provider=%d) = %v, want %v", tc.model, tc.p, got, tc.want) + } + } +} + +func TestGoogleHintNamesItsMechanism(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + want ReasoningMechanism + }{ + {"gemini-3-pro-preview", ReasoningMechanismAdaptive}, + {"gemini-2.5-flash", ReasoningMechanismBudget}, + {"gemini-2.5-pro", ReasoningMechanismBudget}, + } { + got := ReasoningSupportFor(tc.model, reasoning.ProviderGoogleAI) + if !got.Known { + t.Fatalf("%q is a classified Google thinking model", tc.model) + } + if got.Mechanism != tc.want { + t.Errorf("ReasoningSupportFor(%q).Mechanism = %v, want %v", tc.model, got.Mechanism, tc.want) + } + } +} + +func TestABudgetModelWithNoEffortTierIsKnownAndEmpty(t *testing.T) { + t.Parallel() + + support := ReasoningSupportFor("claude-sonnet-4-5", reasoning.ProviderAnthropic) + + if !support.Known { + t.Fatal("the model is classified, so Known must stay true") + } + if len(support.Efforts) != 0 { + t.Fatalf("a model that takes no effort must offer none, got %v", support.Efforts) + } + if support.Mechanism != ReasoningMechanismBudget { + t.Fatalf("Mechanism must tell the caller what to offer instead, got %v", support.Mechanism) + } +} + +func TestAdvertisedEffortsFollowTheWireOfEachProvider(t *testing.T) { + t.Parallel() + + const opus45 = "us.anthropic.claude-opus-4-5-20251101-v1:0" + + for _, tc := range []struct { + provider reasoning.Provider + want bool + }{ + {reasoning.ProviderAnthropic, true}, + {reasoning.ProviderBedrock, false}, + } { + sends := reasoning.ClaudeSupportsEffortWithBudget(opus45, tc.provider) + if sends != tc.want { + t.Fatalf("wire assumption changed: ClaudeSupportsEffortWithBudget(%v) = %v", tc.provider, sends) + } + + efforts := ReasoningSupportFor(opus45, tc.provider).Efforts + if sends && len(efforts) == 0 { + t.Errorf("%v sends an effort with the budget, so the hint must list some", tc.provider) + } + if !sends && len(efforts) > 0 { + t.Errorf("%v never sends an effort for this model, yet the hint advertises %v", tc.provider, efforts) + } + } +} + +func TestTheHintDoesNotOfferOffOnAModelThatAlwaysReasons(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + wantCannotDisable bool + }{ + {"kimi-k3", true}, + {"kimi-k2.7-code", true}, + {"kimi-k2-thinking", true}, + {"kimi-k2.6", false}, + } { + s := ReasoningSupportFor(tc.model, reasoning.ProviderOpenAI) + if !s.Supported { + t.Errorf("%s reasons, so the hint must say so", tc.model) + } + if s.CannotDisable != tc.wantCannotDisable { + t.Errorf("%s CannotDisable = %v, want %v", tc.model, s.CannotDisable, tc.wantCannotDisable) + } + } +} + +func TestTheBedrockHintReportsTheRefusalTheDoorWillGive(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + wantCannotDisable bool + }{ + {"moonshot.kimi-k2-thinking", true}, + {"us.deepseek.r1-v1:0", true}, + {"openai.gpt-oss-120b-1:0", true}, + {"us-gov.openai.gpt-oss-120b-1:0", true}, + {"us-gov.openai.gpt-oss-20b-1:0", true}, + {"us.xai.grok-4.6", true}, + {"us.amazon.nova-2-lite-v1:0", false}, + {"us.amazon.nova-pro-v1:0", false}, + } { + t.Run(tc.model, func(t *testing.T) { + t.Parallel() + + wire := reasoning.ResolveOff(tc.model, reasoning.ProviderBedrock) + if got := wire == reasoning.OffUnsupported; got != tc.wantCannotDisable { + t.Fatalf("%s: wire refuses = %v, want %v — the case no longer covers what it claims", + tc.model, got, tc.wantCannotDisable) + } + if got := ReasoningSupportFor(tc.model, reasoning.ProviderBedrock).CannotDisable; got != tc.wantCannotDisable { + t.Errorf("%s: hint CannotDisable = %v, want %v — a consumer building its interface from the hint "+ + "would offer a control that the door answers with a typed error", + tc.model, got, tc.wantCannotDisable) + } + }) + } +} + +func TestTheBedrockHintOffersOnlyTheLevelsTheConverseDoorSends(t *testing.T) { + t.Parallel() + + levels := []ReasoningEffort{ReasoningLow, ReasoningMedium, ReasoningHigh} + for _, tc := range []struct { + model string + efforts []ReasoningEffort + mechanism ReasoningMechanism + }{ + {"openai.gpt-oss-120b-1:0", levels, ReasoningMechanismAdaptive}, + {"openai.gpt-oss-20b-1:0", levels, ReasoningMechanismAdaptive}, + {"us.deepseek.r1-v1:0", nil, ReasoningMechanismUnknown}, + {"qwen.qwen3-32b-v1:0", nil, ReasoningMechanismUnknown}, + {"mistral.magistral-small-2509", nil, ReasoningMechanismUnknown}, + {"moonshot.kimi-k2-thinking", nil, ReasoningMechanismUnknown}, + {"zai.glm-4.7", nil, ReasoningMechanismUnknown}, + {"zai.glm-4.7-flash", nil, ReasoningMechanismUnknown}, + {"zai.glm-5", nil, ReasoningMechanismUnknown}, + {"minimax.minimax-m2.5", nil, ReasoningMechanismUnknown}, + {"minimax.minimax-m2.1", nil, ReasoningMechanismUnknown}, + {"minimax.minimax-m2", nil, ReasoningMechanismUnknown}, + {"nvidia.nemotron-super-3-120b", nil, ReasoningMechanismUnknown}, + } { + t.Run(tc.model, func(t *testing.T) { + t.Parallel() + + s := ReasoningSupportFor(tc.model, reasoning.ProviderBedrock) + if !slices.Equal(s.Efforts, tc.efforts) { + t.Errorf("%s: hint Efforts = %v, want %v", tc.model, s.Efforts, tc.efforts) + } + if s.Mechanism != tc.mechanism { + t.Errorf("%s: hint Mechanism = %v, want %v", tc.model, s.Mechanism, tc.mechanism) + } + for _, effort := range s.Efforts { + if sent := reasoning.GptOssEffort(string(effort)); sent != string(effort) { + t.Errorf("%s: the hint offers %q but the door sends %q", tc.model, effort, sent) + } + } + if len(tc.efforts) == 0 { + return + } + if !s.Supported || !s.Known { + t.Errorf("%s: a model whose levels are documented is known to reason: %+v", tc.model, s) + } + if s.DefaultOn == nil || !*s.DefaultOn { + t.Errorf("%s: the model reasons when reasoning is unset, the hint must say so", tc.model) + } + if other := ReasoningSupportFor(tc.model, reasoning.ProviderOpenAI); len(other.Efforts) > 0 { + t.Errorf("%s: the openai door never sends the Converse field, yet its hint advertises %v", + tc.model, other.Efforts) + } + }) + } +} + +func TestTheBedrockHintOffersNovaOffAndTheLevelsTheDoorSends(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "us.amazon.nova-2-lite-v1:0", "amazon.nova-2-lite-v1:0", "global.amazon.nova-2-lite-v1:0", + } { + t.Run(model, func(t *testing.T) { + t.Parallel() + + s := ReasoningSupportFor(model, reasoning.ProviderBedrock) + if !s.Supported || !s.Known { + t.Errorf("%s: Nova 2 Lite takes a documented reasoningConfig, so it is known to reason: %+v", model, s) + } + if want := []ReasoningEffort{ReasoningLow, ReasoningMedium, ReasoningHigh}; !slices.Equal(s.Efforts, want) { + t.Errorf("%s: hint Efforts = %v, want %v", model, s.Efforts, want) + } + for _, effort := range s.Efforts { + if sent := reasoning.NovaEffort(string(effort)); sent != string(effort) { + t.Errorf("%s: the hint offers %q but the door sends %q", model, effort, sent) + } + } + if s.Mechanism != ReasoningMechanismAdaptive { + t.Errorf("%s: hint Mechanism = %v, want an effort level", model, s.Mechanism) + } + if wire := reasoning.ResolveOff(model, reasoning.ProviderBedrock); wire != reasoning.OffOmit { + t.Fatalf("%s: off wire = %v, want the omission Nova reads as disabled", model, wire) + } + if s.DefaultOn == nil || *s.DefaultOn { + t.Errorf("%s: DefaultOn = %v, want false — Off travels as an omitted field, which a consumer "+ + "can only offer when it knows the model does not reason unasked", model, s.DefaultOn) + } + if s.CannotDisable { + t.Errorf("%s: the door honours Off, yet the hint says it cannot", model) + } + }) + } + + if s := ReasoningSupportFor("us.amazon.nova-pro-v1:0", reasoning.ProviderBedrock); len(s.Efforts) > 0 || s.DefaultOn != nil { + t.Errorf("Nova Pro takes no reasoningConfig, yet its hint is classified: %+v", s) + } + if s := ReasoningSupportFor("us.amazon.nova-2-lite-v1:0", reasoning.ProviderOpenAI); len(s.Efforts) > 0 || s.DefaultOn != nil { + t.Errorf("the openai door never sends reasoningConfig, yet its hint classifies Nova: %+v", s) + } +} + +func TestTheHintNamesTheMechanismTheDoorActuallyUses(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + want ReasoningMechanism + }{ + {"gemma-4-31b-it", ReasoningMechanismAdaptive}, + {"gemma-4-26b-a4b-it", ReasoningMechanismAdaptive}, + {"gemini-2.5-flash", ReasoningMechanismBudget}, + {"gemini-3-pro", ReasoningMechanismAdaptive}, + } { + t.Run(tc.model, func(t *testing.T) { + t.Parallel() + if got := ReasoningSupportFor(tc.model, reasoning.ProviderGoogleAI).Mechanism; got != tc.want { + t.Errorf("%s: hint Mechanism = %v, want %v — a consumer builds its control from this field, "+ + "and the door drops a budget it advertises", tc.model, got, tc.want) + } + }) + } +} + +func TestTheHintReportsQwenThinkingOffUntilAsked(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "qwen-plus", "qwen-flash", "qwen-turbo", "qwen3-max", + "qwen3-vl-plus", "qwen3-vl-flash", "dashscope/qwen3-max", + } { + t.Run(model, func(t *testing.T) { + t.Parallel() + + s := ReasoningSupportFor(model, reasoning.ProviderOpenAI) + switch { + case s.DefaultOn == nil: + t.Errorf("%s DefaultOn = nil, want false: DashScope leaves its thinking off until "+ + "enable_thinking asks for it, and a consumer reads nil as an off control that does nothing", model) + case *s.DefaultOn: + t.Errorf("%s DefaultOn = true, want false", model) + } + }) + } + + for _, model := range []string{"qwen3.6-plus", "qwen3.5-flash"} { + if d := ReasoningSupportFor(model, reasoning.ProviderOpenAI).DefaultOn; d != nil && !*d { + t.Errorf("%s DefaultOn = false, but DashScope turns its thinking on by default", model) + } + } +} + +func TestOptInAloneDoesNotMakeTheHintReportThinkingOff(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + model string + inCapabilityTable bool + }{ + {"mistral-medium-latest", true}, + {"mistral-small-latest", true}, + {"magistral-medium-latest", false}, + {"magistral-small-latest", false}, + } { + if !reasoning.ThinkingOptIn(tc.model) || !reasoning.IsReasoningModel(tc.model) || + reasoning.OpenAIReasoningCapsFor(tc.model).Known != tc.inCapabilityTable { + t.Fatalf("%s: no longer an opt-in reasoning model with capability table membership %v, "+ + "so the case no longer covers what it claims", tc.model, tc.inCapabilityTable) + } + if d := ReasoningSupportFor(tc.model, reasoning.ProviderOpenAI).DefaultOn; d != nil { + t.Errorf("%s DefaultOn = %v, want nil: Mistral documents no default for reasoning_effort, and the "+ + "door's off sends nothing, so a false here offers an off that may do nothing", tc.model, *d) + } + } + + const marked = "ernie-4.5-21b-a3b-thinking" + if !reasoning.ThinkingOptIn(marked) || !reasoning.ThinkingMarkedInName(marked) { + t.Fatalf("%s: no longer both opt-in and marked thinking, so the case no longer covers what it claims", marked) + } + if d := ReasoningSupportFor(marked, reasoning.ProviderOpenAI).DefaultOn; d != nil && !*d { + t.Errorf("%s DefaultOn = false, but the door counts the thinking marker in its name as thinking on", marked) + } +} + +func TestDeepSeekFlashResolvesLikeTheNameItReplaced(t *testing.T) { + t.Parallel() + + const replaced = "deepseek-v4-flash" + for _, model := range []string{"deepseek-flash", "deepseek/deepseek-flash", "DeepSeek-Flash"} { + s := ReasoningSupportFor(model, reasoning.ProviderOpenAI) + if off := reasoning.ResolveOff(model, reasoning.ProviderOpenAI); !s.Supported || off != reasoning.OffDisableThinkingObject { + t.Errorf("%s: Supported = %v, off = %v; want a reasoning model switched off by the thinking object", + model, s.Supported, off) + } + + for _, p := range []reasoning.Provider{ + reasoning.ProviderUnknown, reasoning.ProviderAnthropic, reasoning.ProviderBedrock, + reasoning.ProviderOpenAI, reasoning.ProviderGoogleAI, reasoning.ProviderOllama, + } { + if got, want := ReasoningSupportFor(model, p), ReasoningSupportFor(replaced, p); !reflect.DeepEqual(got, want) { + t.Errorf("%s on provider %d: hint %+v, want the hint of %s %+v", model, p, got, replaced, want) + } + if got, want := reasoning.ResolveOff(model, p), reasoning.ResolveOff(replaced, p); got != want { + t.Errorf("%s on provider %d: off = %v, want the off of %s %v", model, p, got, replaced, want) + } + } + } +} + +func TestTheOllamaDoorKeepsTheOffControlItsVendorDocuments(t *testing.T) { + t.Parallel() + + for _, model := range []string{"deepseek-r1:7b", "qwen3:8b", "magistral-small:24b"} { + if ReasoningSupportFor(model, reasoning.ProviderOllama).CannotDisable { + t.Errorf("%s: the hint hides an off control the ollama door sends", model) + } + } + + if !ReasoningSupportFor("deepseek-r1", reasoning.ProviderOpenAI).CannotDisable { + t.Error("deepseek-r1 on its vendor door refuses an off, the hint should say so") + } + + if !ReasoningSupportFor("gpt-oss:120b", reasoning.ProviderOllama).CannotDisable { + t.Error("gpt-oss ignores booleans and its trace cannot be disabled: the hint must say so") + } +} + +func TestTheOllamaHintOffersGPTOSSTheLevelsOllamaDocuments(t *testing.T) { + t.Parallel() + + want := []ReasoningEffort{ReasoningLow, ReasoningMedium, ReasoningHigh} + for _, model := range []string{"gpt-oss:120b", "gpt-oss:20b", "gpt-oss:120b-cloud", "library/gpt-oss:20b"} { + s := ReasoningSupportFor(model, reasoning.ProviderOllama) + if !slices.Equal(s.Efforts, want) { + t.Errorf("%s Efforts = %v, want %v: a consumer offers only the levels the hint lists", model, s.Efforts, want) + } + if !s.Known || !s.Supported || !s.CannotDisable { + t.Errorf("%s = %+v, want a classified reasoning model whose thinking cannot be turned off", model, s) + } + if s.Mechanism != ReasoningMechanismAdaptive { + t.Errorf("%s Mechanism = %v, want adaptive: ollama takes a level, never a token budget", model, s.Mechanism) + } + if s.DefaultOn == nil || !*s.DefaultOn { + t.Errorf("%s DefaultOn = %v, want true: ollama thinks by default and gpt-oss cannot stop", model, s.DefaultOn) + } + } + + for _, model := range []string{"deepseek-r1:7b", "qwen3:8b", "llama3.2"} { + if s := ReasoningSupportFor(model, reasoning.ProviderOllama); s.Known || len(s.Efforts) != 0 { + t.Errorf("%s = %+v: ollama names no level set for this model, so the hint must not claim one", model, s) + } + } + + if efforts := ReasoningSupportFor("gpt-oss:120b", reasoning.ProviderUnknown).Efforts; len(efforts) != 0 { + t.Errorf("gpt-oss:120b on an unknown provider offers %v, but these levels are what ollama documents for its own door", + efforts) + } +} + +func TestTheBedrockHintPresentsNoReasoningWhereTheConverseDoorHasNone(t *testing.T) { + t.Parallel() + + for _, model := range []string{ + "zai.glm-4.7", "zai.glm-4.7-flash", "zai.glm-5", + "us.zai.glm-5", "eu.zai.glm-4.7", "apac.zai.glm-4.7-flash", + } { + t.Run(model, func(t *testing.T) { + t.Parallel() + + s := ReasoningSupportFor(model, reasoning.ProviderBedrock) + if s.Supported || !s.Known { + t.Errorf("%s = %+v, want a classified model that does not reason on Bedrock: AWS documents no "+ + "reasoning field for it and the Converse door answers without reasoning content", model, s) + } + if s.CannotDisable || len(s.Efforts) != 0 || s.Mechanism != ReasoningMechanismUnknown { + t.Errorf("%s = %+v, want no control at all", model, s) + } + if s.DefaultOn == nil || *s.DefaultOn { + t.Errorf("%s DefaultOn = %v, want false", model, s.DefaultOn) + } + if !reasoning.IsReasoningModel(model) { + t.Errorf("%s: the door-agnostic classification must stay as it is", model) + } + if other := ReasoningSupportFor(model, reasoning.ProviderOpenAI); !other.Supported { + t.Errorf("%s on the openai door = %+v: the Converse verdict must not reach another door", model, other) + } + }) + } + + for _, model := range []string{"glm-4.7", "glm-4.7-flash", "glm-5"} { + if s := ReasoningSupportFor(model, reasoning.ProviderOpenAI); !s.Supported { + t.Errorf("%s on its own vendor's door = %+v, want a reasoning model", model, s) + } + } + + for _, model := range []string{ + "us.deepseek.r1-v1:0", "moonshot.kimi-k2-thinking", "mistral.magistral-small-2509", + "openai.gpt-oss-120b-1:0", "us.amazon.nova-2-lite-v1:0", + } { + if s := ReasoningSupportFor(model, reasoning.ProviderBedrock); !s.Supported { + t.Errorf("%s = %+v: AWS documents reasoning for it, so the verdict must not reach it", model, s) + } + } + + if s := ReasoningSupportFor("zai.glm-5.1", reasoning.ProviderBedrock); s.Known { + t.Errorf("zai.glm-5.1 = %+v: a generation nobody measured on the door must stay unclassified", s) + } +} + +func TestTheSafeguardHintOffersTheLevelsOpenAIDocumentsForIt(t *testing.T) { + t.Parallel() + + for _, model := range []string{"openai.gpt-oss-safeguard-120b", "openai.gpt-oss-safeguard-20b"} { + t.Run(model, func(t *testing.T) { + t.Parallel() + + s := ReasoningSupportFor(model, reasoning.ProviderBedrock) + if !s.Supported || !s.Known { + t.Errorf("%s = %+v, want a classified reasoning model", model, s) + } + want := []ReasoningEffort{"low", "medium", "high"} + if !slices.Equal(s.Efforts, want) { + t.Errorf("%s Efforts = %v, want %v", model, s.Efforts, want) + } + if !s.CannotDisable { + t.Errorf("%s CannotDisable = false: the vendor documents no level that turns thinking off", model) + } + }) + } +} + +func TestTheBedrockHintDoesNotPresentOffForNemotronSuper(t *testing.T) { + t.Parallel() + + for _, model := range []string{"nvidia.nemotron-super-3-120b", "us-gov.nvidia.nemotron-super-3-120b"} { + s := ReasoningSupportFor(model, reasoning.ProviderBedrock) + if !s.Supported { + t.Errorf("%s = %+v, want a reasoning model: the Converse door returns its reasoning in the text "+ + "on requests that ask for none", model, s) + } + if len(s.Efforts) != 0 || s.Mechanism != ReasoningMechanismUnknown { + t.Errorf("%s = %+v: AWS documents no reasoning field for it, so the hint must offer no level", model, s) + } + if off := reasoning.ResolveOff(model, reasoning.ProviderBedrock); off != reasoning.OffOmit { + t.Errorf("%s ResolveOff = %v, want OffOmit: AWS documents no field that disables it", model, off) + } + if s.DefaultOn != nil && !*s.DefaultOn { + t.Errorf("%s DefaultOn = false, want unknown: an omitted Off would read as working while the model "+ + "still reasons on some requests", model) + } + } +} + +func TestTheAstraHintOffersTheLevelsItsCardListsAndNoDisable(t *testing.T) { + t.Parallel() + + for _, model := range []string{"gpt-6-astra", "openai/gpt-6-astra"} { + t.Run(model, func(t *testing.T) { + t.Parallel() + + s := ReasoningSupportFor(model, reasoning.ProviderOpenAI) + if !s.Supported || !s.Known { + t.Errorf("%s = %+v, want a classified reasoning model: the card lists its effort levels", model, s) + } + if !s.CannotDisable { + t.Errorf("%s CannotDisable = false, want true: the vendor answers HTTP 400 to reasoning_effort none", model) + } + want := []ReasoningEffort{ReasoningLow, ReasoningMedium, ReasoningHigh, ReasoningXHigh} + if !slices.Equal(s.Efforts, want) { + t.Errorf("%s efforts = %v, want %v: the vendor refuses max with this model", model, s.Efforts, want) + } + }) + } +} diff --git a/llms/reasoning_validation_test.go b/llms/reasoning_validation_test.go new file mode 100644 index 000000000..b7f4ac9f7 --- /dev/null +++ b/llms/reasoning_validation_test.go @@ -0,0 +1,56 @@ +package llms + +import ( + "errors" + "testing" + + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func TestValidateReasoningRefusesOnlyWhatNoDoorAccepts(t *testing.T) { + t.Parallel() + + for _, effort := range []ReasoningEffort{ + ReasoningNone, ReasoningMinimal, ReasoningLow, + ReasoningMedium, ReasoningHigh, ReasoningXHigh, ReasoningMax, + } { + opts := CallOptions{Reasoning: &ReasoningConfig{Effort: effort}} + if err := opts.ValidateReasoning(); err != nil { + t.Errorf("effort %q is offered by at least one door, got %v", effort, err) + } + } + + opts := CallOptions{Reasoning: &ReasoningConfig{Effort: ReasoningEffort("banana")}} + err := opts.ValidateReasoning() + var typed *Error + if !errors.As(err, &typed) || typed.Code != ErrCodeInvalidRequest { + t.Fatalf("an effort no door accepts must be refused, got %v", err) + } + + var absent CallOptions + if err := absent.ValidateReasoning(); err != nil { + t.Errorf("a call that asked for no reasoning is valid, got %v", err) + } +} + +func TestTheCeilingRisesOnlyWhenTheBudgetWouldNotFit(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + budget, maxTokens int + want int + }{ + {"a budget that does not fit raises the ceiling", 4096, 1024, 8192}, + {"a budget at the ceiling still raises it", 1024, 1024, 2048}, + {"a budget that fits leaves the caller's ceiling alone", 40000, 64000, 64000}, + {"no budget leaves the ceiling alone", 0, 64000, 64000}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + if got := reasoning.ClaudeMaxTokensForBudget(tc.budget, tc.maxTokens); got != tc.want { + t.Fatalf("ceiling = %d, want %d", got, tc.want) + } + }) + } +} diff --git a/llms/stopreason.go b/llms/stopreason.go new file mode 100644 index 000000000..2b94d839c --- /dev/null +++ b/llms/stopreason.go @@ -0,0 +1,35 @@ +package llms + +import ( + "fmt" + "strings" +) + +var truncationStopReasons = map[string]bool{ + "length": true, + "max_tokens": true, + "model_length": true, +} + +// IsTruncated reports whether a vendor stop reason means generation stopped at +// the output token limit rather than finishing. Matching is case-insensitive. +func IsTruncated(stopReason string) bool { + return truncationStopReasons[strings.ToLower(strings.TrimSpace(stopReason))] +} + +// CheckTruncation reports a truncated answer as an error, but only for a caller +// that opted in with [WithFailOnTruncation]; otherwise a truncated answer stays +// a successful response carrying [ContentChoice.Truncated]. +func CheckTruncation(resp *ContentResponse, opts CallOptions) error { + if !opts.FailOnTruncation || resp == nil { + return nil + } + for i, choice := range resp.Choices { + if choice == nil || !IsTruncated(choice.StopReason) { + continue + } + return NewError(ErrCodeTruncated, "", fmt.Sprintf( + "choice %d stopped at the output token limit (stop reason %q)", i, choice.StopReason)) + } + return nil +} diff --git a/llms/stopreason_test.go b/llms/stopreason_test.go new file mode 100644 index 000000000..31af6560c --- /dev/null +++ b/llms/stopreason_test.go @@ -0,0 +1,89 @@ +package llms + +import ( + "errors" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestIsTruncatedCoversEveryVendorSpelling(t *testing.T) { + t.Parallel() + + truncated := map[string]string{ + "openai": "length", + "mistral": "length", + "ollama": "length", + "anthropic": "max_tokens", + "bedrock converse": "max_tokens", + "bedrock nova": "max_tokens", + "bedrock amazon": "LENGTH", + "bedrock ai21": "length", + "bedrock cohere": "MAX_TOKENS", + "bedrock meta": "length", + "bedrock deepseek": "length", + "googleai": "MAX_TOKENS", + "vertex": "MAX_TOKENS", + "mistral context": "model_length", + } + for vendor, reason := range truncated { + assert.True(t, IsTruncated(reason), "%s spells truncation %q", vendor, reason) + } + + finished := []string{ + "stop", "end_turn", "tool_use", "tool_calls", "function_call", "stop_sequence", + "COMPLETE", "FINISH", "endoftext", "content_filtered", "CONTENT_FILTERED", + "ERROR", "guardrail_intervened", "", "max_tokens_exceeded", "no_length", + } + for _, reason := range finished { + assert.False(t, IsTruncated(reason), "%q does not mean truncation", reason) + } +} + +func TestCheckTruncationStaysSilentUnlessRequested(t *testing.T) { + t.Parallel() + + cut := &ContentResponse{Choices: []*ContentChoice{ + {Content: "half an ans", StopReason: "max_tokens", Truncated: true}, + }} + whole := &ContentResponse{Choices: []*ContentChoice{ + {Content: "a whole answer", StopReason: "end_turn"}, + }} + + require.NoError(t, CheckTruncation(cut, CallOptions{})) + require.NoError(t, CheckTruncation(whole, CallOptions{FailOnTruncation: true})) + require.NoError(t, CheckTruncation(nil, CallOptions{FailOnTruncation: true})) + + err := CheckTruncation(cut, CallOptions{FailOnTruncation: true}) + require.Error(t, err) + assert.True(t, IsTruncatedError(err)) + assert.True(t, errors.Is(err, ErrTruncated)) + assert.Contains(t, err.Error(), "max_tokens") +} + +func TestCheckTruncationReadsTheStopReasonNotTheFlag(t *testing.T) { + t.Parallel() + + unflagged := &ContentResponse{Choices: []*ContentChoice{ + {Content: "half an ans", StopReason: "length"}, + }} + + err := CheckTruncation(unflagged, CallOptions{FailOnTruncation: true}) + require.Error(t, err) + assert.True(t, IsTruncatedError(err)) +} + +func TestCheckTruncationReportsALaterChoice(t *testing.T) { + t.Parallel() + + resp := &ContentResponse{Choices: []*ContentChoice{ + nil, + {Content: "fine", StopReason: "stop"}, + {Content: "cut", StopReason: "length", Truncated: true}, + }} + + err := CheckTruncation(resp, CallOptions{FailOnTruncation: true}) + require.Error(t, err) + assert.Contains(t, err.Error(), "choice 2") +} diff --git a/llms/stored_reasoning_test.go b/llms/stored_reasoning_test.go new file mode 100644 index 000000000..696e55d87 --- /dev/null +++ b/llms/stored_reasoning_test.go @@ -0,0 +1,73 @@ +package llms_test + +import ( + "encoding/json" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/reasoning" +) + +func TestAChainStoredByEarlierBuildsStillReads(t *testing.T) { + t.Parallel() + + for name, stored := range map[string]string{ + "encrypted thought as one string": `[ + {"role":"human","text":"hi"}, + {"role":"ai","parts":[ + {"type":"text","text":"x","reasoning":{"content":"t","signature":"c2ln","redacted":"cmVk"}}, + {"type":"tool_call","tool_call":{"id":"c1","type":"function","function":{"name":"f","arguments":"{}"},"reasoning":{"redacted":"cmVk"}}} + ]} + ]`, + "encrypted thoughts as an array": `[ + {"role":"human","text":"hi"}, + {"role":"ai","parts":[ + {"type":"text","text":"x","reasoning":{"content":"t","signature":"c2ln","redacted":["cmVk"]}}, + {"type":"tool_call","tool_call":{"id":"c1","type":"function","function":{"name":"f","arguments":"{}"},"reasoning":{"redacted":["cmVk"]}}} + ]} + ]`, + } { + var chain []llms.MessageContent + require.NoError(t, json.Unmarshal([]byte(stored), &chain), name) + require.Len(t, chain, 2, name) + require.Len(t, chain[1].Parts, 2, name) + + text, ok := chain[1].Parts[0].(llms.TextContent) + require.True(t, ok, name) + assert.Equal(t, + []reasoning.Block{{Text: "t", Signature: []byte("sig")}, {Redacted: []byte("red")}}, + text.Reasoning.Sequence(), name) + + call, ok := chain[1].Parts[1].(llms.ToolCall) + require.True(t, ok, name) + assert.Equal(t, []reasoning.Block{{Redacted: []byte("red")}}, call.Reasoning.Sequence(), name) + } +} + +func TestAChainKeepsTheBlocksOfEveryPartThroughStorage(t *testing.T) { + t.Parallel() + + thought := reasoning.FromBlocks([]reasoning.Block{ + {Text: "a", Signature: []byte("s1")}, + {Signature: []byte("s2"), AfterToolCalls: 1}, + }) + sent := []llms.MessageContent{ + {Role: llms.ChatMessageTypeAI, Parts: []llms.ContentPart{ + llms.TextPartWithReasoning("", thought), + llms.ToolCall{ID: "c1", Type: "function", FunctionCall: &llms.FunctionCall{Name: "f", Arguments: "{}"}}, + llms.ToolCall{ID: "c2", Type: "function", FunctionCall: &llms.FunctionCall{Name: "g", Arguments: "{}"}}, + }}, + } + + data, err := json.Marshal(sent) + require.NoError(t, err) + + var got []llms.MessageContent + require.NoError(t, json.Unmarshal(data, &got)) + text, ok := got[0].Parts[0].(llms.TextContent) + require.True(t, ok) + assert.Equal(t, thought.Sequence(), text.Reasoning.Sequence()) +} diff --git a/llms/structured_output.go b/llms/structured_output.go index e61fbca74..d9512515c 100644 --- a/llms/structured_output.go +++ b/llms/structured_output.go @@ -152,6 +152,7 @@ func compileStructuredOutputSchema(schema json.RawMessage) error { } const resource = "structuredoutput:schema" comp := jsonschema.NewCompiler() + comp.UseLoader(jsonschema.SchemeURLLoader{}) if err := comp.AddResource(resource, doc); err != nil { return err } diff --git a/llms/structured_output_parity_test.go b/llms/structured_output_parity_test.go new file mode 100644 index 000000000..9efa9765e --- /dev/null +++ b/llms/structured_output_parity_test.go @@ -0,0 +1,41 @@ +package llms_test + +import ( + "encoding/json" + "testing" + + "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/structuredoutput" +) + +func TestThePreflightAcceptsExactlyWhatTheResponsePathCompiles(t *testing.T) { + t.Parallel() + + for _, schema := range []string{ + `{"type":"object","additionalProperties":false,"properties":{"a":{"type":"string","nullable":true}}}`, + `{"type":"object","additionalProperties":false,"properties":{"a":{"nullable":true}}}`, + `{"type":"object","additionalProperties":false,"properties":{"a":{"type":["string"],"nullable":true}}}`, + `{"type":"object","additionalProperties":false,"properties":{"a":{"type":"null","nullable":true}}}`, + `{"type":"object","additionalProperties":false,"properties":{"a":{"type":{"bad":1},"nullable":true}}}`, + `{"type":"object","additionalProperties":false,"properties":{"a":{"enum":[{"nullable":true,"type":"w"}]}}}`, + `{"type":"object","additionalProperties":false,"properties":{"a":{"type":"string","pattern":"(?=x)"}}}`, + `{"type":"object","additionalProperties":false,"$defs":{"leaf":{"type":"string","nullable":true}},` + + `"properties":{"a":{"$ref":"#/$defs/leaf"}}}`, + `{"type":"object","additionalProperties":false,"properties":{"a":{"type":"integer","nullable":true,"minimum":"nope"}}}`, + } { + t.Run(schema, func(t *testing.T) { + t.Parallel() + + opts := &llms.CallOptions{ + JSONMode: true, + StructuredOutput: &llms.StructuredOutputConfig{Schema: json.RawMessage(schema)}, + } + preflight := opts.ValidateStructuredOutput() + _, response := structuredoutput.Compile(json.RawMessage(schema)) + + if (preflight == nil) != (response == nil) { + t.Fatalf("preflight and response path disagree: preflight=%v response=%v", preflight, response) + } + }) + } +} diff --git a/llms/structuredoutput/prompt.go b/llms/structuredoutput/prompt.go new file mode 100644 index 000000000..51bfaefd4 --- /dev/null +++ b/llms/structuredoutput/prompt.go @@ -0,0 +1,59 @@ +package structuredoutput + +import ( + "encoding/json" + "strings" +) + +// A door whose vendor cannot constrain its output to a JSON Schema carries the +// schema in the prompt instead. These texts are what the model reads; recorded +// requests hold them byte for byte, so a change means re-recording those tests. +const ( + // SchemaInstruction asks for exactly one JSON value matching the schema that + // follows it, and overrides any earlier instruction about format or style. + SchemaInstruction = "Reply with exactly one JSON value that validates against the JSON Schema below. " + + "This overrides any earlier instruction about format or style: no Markdown, no code fences, " + + "no headings, and no text before or after the JSON. The whole reply is parsed by a JSON parser." + // ToolsNote keeps tool calls open when tools are offered alongside the schema. + ToolsNote = "You may still call the tools you are offered; this applies to your final answer." +) + +// PromptInstruction returns the instruction that carries schema in the prompt, +// with ToolsNote when the request also offers tools. +func PromptInstruction(schema json.RawMessage, withTools bool) string { + instruction := SchemaInstruction + if withTools { + instruction += " " + ToolsNote + } + return instruction + "\nJSON Schema:\n" + string(schema) +} + +// UnwrapFencedJSON returns the body of a text that is exactly one Markdown code +// fence, untagged or tagged json, which a model often adds despite the prompt +// instruction. Anything else, such as prose around the fence or a second fence, +// is returned unchanged for validation to judge. +func UnwrapFencedJSON(text string) string { + trimmed := strings.TrimSpace(text) + if len(trimmed) < 6 || !strings.HasPrefix(trimmed, "```") || !strings.HasSuffix(trimmed, "```") { + return text + } + header, body, ok := strings.Cut(trimmed[3:len(trimmed)-3], "\n") + if !ok || containsFenceLine(body) { + return text + } + if tag := strings.TrimSpace(header); tag != "" && !strings.EqualFold(tag, "json") { + return text + } + return strings.TrimSpace(body) +} + +// containsFenceLine reports a line that opens or closes a code fence. A JSON +// string cannot hold a raw newline, so backticks inside one never start a line. +func containsFenceLine(body string) bool { + for line := range strings.Lines(body) { + if strings.HasPrefix(strings.TrimSpace(line), "```") { + return true + } + } + return false +} diff --git a/llms/structuredoutput/prompt_test.go b/llms/structuredoutput/prompt_test.go new file mode 100644 index 000000000..f8af64fcd --- /dev/null +++ b/llms/structuredoutput/prompt_test.go @@ -0,0 +1,44 @@ +package structuredoutput + +import ( + "encoding/json" + "strings" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestPromptInstruction(t *testing.T) { + t.Parallel() + + schema := json.RawMessage(`{"type":"object"}`) + assert.Equal(t, SchemaInstruction+"\nJSON Schema:\n"+`{"type":"object"}`, PromptInstruction(schema, false)) + assert.Equal(t, SchemaInstruction+" "+ToolsNote+"\nJSON Schema:\n"+`{"type":"object"}`, PromptInstruction(schema, true)) + // DeepSeek refuses json_object unless a message mentions JSON; the instruction does. + assert.Contains(t, strings.ToLower(PromptInstruction(schema, false)), "json") +} + +func TestUnwrapFencedJSON(t *testing.T) { + t.Parallel() + + for text, want := range map[string]string{ + "```json\n{\"a\":1}\n```": `{"a":1}`, + "```JSON\n{\"a\":1}\n```": `{"a":1}`, + " ```\n[1, 2]\n``` ": "[1, 2]", + "```json\n{\n \"a\": 1\n}\n```": "{\n \"a\": 1\n}", + `{"a":1}`: `{"a":1}`, + "```json {\"a\":1}```": "```json {\"a\":1}```", + "```go\nfmt.Println()\n```": "```go\nfmt.Println()\n```", + "note\n```json\n{}\n```": "note\n```json\n{}\n```", + "```json\n{}\n```\n```json\n{}\n```": "```json\n{}\n```\n```json\n{}\n```", + "``````": "``````", + "```json\r\n{\"a\":1}\r\n```": `{"a":1}`, + "``` json\n{\"a\":1}\n```": `{"a":1}`, + "```json\n{\"a\":\"```\"}\n```": "{\"a\":\"```\"}", + "```json\n```": "", + "```json\n\n```": "", + "````json\n{\"a\":1}\n````": "````json\n{\"a\":1}\n````", + } { + assert.Equal(t, want, UnwrapFencedJSON(text), "%q", text) + } +} diff --git a/llms/structuredoutput/schema.go b/llms/structuredoutput/schema.go index f9a95896a..a3c5b3ad0 100644 --- a/llms/structuredoutput/schema.go +++ b/llms/structuredoutput/schema.go @@ -3,6 +3,7 @@ package structuredoutput import ( "encoding/json" "fmt" + "slices" "github.com/vxcontrol/langchaingo/llms" ) @@ -21,6 +22,20 @@ func RequireClosedObjects(schema json.RawMessage) error { return requireClosed(node) } +var ( + schemaGroupKeywords = []string{"properties", "patternProperties", "$defs", "definitions", "dependentSchemas"} + schemaValueKeywords = []string{ + "items", "prefixItems", "additionalProperties", "anyOf", "oneOf", "allOf", + "not", "if", "then", "else", "contains", "propertyNames", + "unevaluatedItems", "unevaluatedProperties", + } + closureExemptKeywords = []string{"not", "if", "then", "else", "propertyNames"} +) + +func exemptFromClosure(keyword string) bool { + return slices.Contains(closureExemptKeywords, keyword) +} + func requireClosed(node any) error { m, ok := node.(map[string]any) if !ok { @@ -28,41 +43,57 @@ func requireClosed(node any) error { } // A node is an object schema when its type is "object" or it declares // properties. Such a node must close itself with additionalProperties:false. - t, _ := m["type"].(string) - props, hasProps := m["properties"].(map[string]any) - if t == "object" || hasProps { + _, hasProps := m["properties"].(map[string]any) + if declaresObject(m["type"]) || hasProps { if ap, ok := m["additionalProperties"].(bool); !ok || ap { return fmt.Errorf("%w: every object schema must explicitly set additionalProperties:false", llms.ErrStructuredOutputConfig) } } - for _, v := range props { - if err := requireClosed(v); err != nil { - return err - } - } - for _, key := range []string{"$defs", "definitions"} { - if defs, ok := m[key].(map[string]any); ok { - for _, v := range defs { - if err := requireClosed(v); err != nil { + for _, key := range schemaGroupKeywords { + if group, ok := m[key].(map[string]any); ok { + for _, v := range group { + if err := requireClosedValue(v); err != nil { return err } } } } - if items, ok := m["items"]; ok { - if err := requireClosed(items); err != nil { + for _, key := range schemaValueKeywords { + if exemptFromClosure(key) { + continue + } + if err := requireClosedValue(m[key]); err != nil { return err } } - for _, key := range []string{"anyOf", "oneOf", "allOf"} { - if arr, ok := m[key].([]any); ok { - for _, v := range arr { - if err := requireClosed(v); err != nil { - return err - } + return nil +} + +func requireClosedValue(v any) error { + switch node := v.(type) { + case map[string]any: + return requireClosed(node) + case []any: + for _, item := range node { + if err := requireClosedValue(item); err != nil { + return err } } } return nil } + +func declaresObject(v any) bool { + switch t := v.(type) { + case string: + return t == "object" + case []any: + for _, item := range t { + if name, ok := item.(string); ok && name == "object" { + return true + } + } + } + return false +} diff --git a/llms/structuredoutput/schema_test.go b/llms/structuredoutput/schema_test.go index a37b0bb79..41ccb6911 100644 --- a/llms/structuredoutput/schema_test.go +++ b/llms/structuredoutput/schema_test.go @@ -25,6 +25,15 @@ func TestRequireClosedObjects(t *testing.T) { {"object inside array items", `{"type":"array","items":{"type":"object","properties":{"a":{"type":"string"}}}}`, true}, {"non-object schema is fine", `{"type":"string"}`, false}, {"array of strings is fine", `{"type":"array","items":{"type":"string"}}`, false}, + {"union type naming object", `{"type":["object","null"]}`, true}, + {"union type naming object, closed", `{"type":["object","null"],"additionalProperties":false}`, false}, + {"union type without object is fine", `{"type":["string","null"]}`, false}, + {"object under prefixItems", `{"type":"array","prefixItems":[{"type":"object","properties":{"a":{"type":"string"}}}],"items":false}`, true}, + {"object under prefixItems, closed", `{"type":"array","prefixItems":[{"type":"object","properties":{"a":{"type":"string"}},"additionalProperties":false}],"items":false}`, false}, + {"object under tuple-form items", `{"type":"array","items":[{"type":"object","properties":{"a":{"type":"string"}}}]}`, true}, + {"object under patternProperties", `{"type":"object","additionalProperties":false,"patternProperties":{"^k":{"type":"object","properties":{"a":{"type":"string"}}}}}`, true}, + {"object under patternProperties, closed", `{"type":"object","additionalProperties":false,"patternProperties":{"^k":{"type":"object","properties":{"a":{"type":"string"}},"additionalProperties":false}}}`, false}, + {"object under a schema-valued additionalProperties", `{"additionalProperties":{"type":"object","properties":{"a":{"type":"string"}}}}`, true}, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { @@ -39,3 +48,114 @@ func TestRequireClosedObjects(t *testing.T) { }) } } + +func TestRequireClosedObjectsReachesEveryKeywordThatHoldsASchema(t *testing.T) { + t.Parallel() + + open := `{"type":"object","properties":{"x":{"type":"string"}}}` + + for _, keyword := range []string{ + "contains", "unevaluatedItems", "unevaluatedProperties", + } { + t.Run(keyword, func(t *testing.T) { + t.Parallel() + schema := []byte(`{"type":"object","additionalProperties":false,"properties":{},"` + + keyword + `":` + open + `}`) + if err := structuredoutput.RequireClosedObjects(schema); err == nil { + t.Fatalf("an object under %q is still an object schema and must be closed", keyword) + } + }) + } + + t.Run("dependentSchemas", func(t *testing.T) { + t.Parallel() + schema := []byte(`{"type":"object","additionalProperties":false,"properties":{},` + + `"dependentSchemas":{"x":` + open + `}}`) + if err := structuredoutput.RequireClosedObjects(schema); err == nil { + t.Fatal("an object under dependentSchemas must be closed too") + } + }) +} + +func TestAConditionalSchemaIsNotAskedToCloseItsCondition(t *testing.T) { + t.Parallel() + + for _, keyword := range []string{"not", "if", "then", "else", "propertyNames"} { + t.Run(keyword, func(t *testing.T) { + t.Parallel() + + schema := []byte(`{"type":"object","additionalProperties":false,` + + `"properties":{"kind":{"type":"string"}},"` + keyword + + `":{"type":"object","properties":{"kind":{"const":"a"}}}}`) + if err := structuredoutput.RequireClosedObjects(schema); err != nil { + t.Fatalf("closing a subschema under %q rewrites what the schema accepts: %v", keyword, err) + } + }) + } +} + +func TestClosingAConditionRewritesWhatTheSchemaAccepts(t *testing.T) { + t.Parallel() + + base := `{"type":"object","additionalProperties":false,` + + `"properties":{"kind":{"type":"string"},"x":{"type":"string"},"y":{"type":"string"}},` + + t.Run("a closed if stops matching what the condition was written for", func(t *testing.T) { + t.Parallel() + instance := `{"kind":"a","y":"present"}` // matches the condition, missing the required x + + open := mustCompile(t, base+`"if":{"properties":{"kind":{"const":"a"}}},"then":{"required":["x"]}}`) + if err := open.ValidateText(instance); err == nil { + t.Fatal("the condition holds, so the missing x must be rejected") + } + + closed := mustCompile(t, base+ + `"if":{"properties":{"kind":{"const":"a"}},"additionalProperties":false},"then":{"required":["x"]}}`) + if err := closed.ValidateText(instance); err != nil { + t.Fatalf("unexpected: %v", err) + } + }) + + t.Run("a closed then forbids what the root allows", func(t *testing.T) { + t.Parallel() + instance := `{"kind":"a","x":"present","y":"allowed by the root"}` + + open := mustCompile(t, base+`"if":{"properties":{"kind":{"const":"a"}}},`+ + `"then":{"type":"object","properties":{"x":{"type":"string"}},"required":["x"]}}`) + if err := open.ValidateText(instance); err != nil { + t.Fatalf("the instance satisfies the schema: %v", err) + } + + closed := mustCompile(t, base+`"if":{"properties":{"kind":{"const":"a"}}},`+ + `"then":{"type":"object","additionalProperties":false,`+ + `"properties":{"x":{"type":"string"}},"required":["x"]}}`) + if err := closed.ValidateText(instance); err == nil { + t.Fatal("closing then rejected an instance the root allows") + } + }) + + t.Run("a closed not narrows what is excluded", func(t *testing.T) { + t.Parallel() + instance := `{"kind":"forbidden","y":"v"}` + + open := mustCompile(t, base+`"not":{"properties":{"kind":{"const":"forbidden"}}}}`) + if err := open.ValidateText(instance); err == nil { + t.Fatal("the excluded shape must be rejected") + } + + closed := mustCompile(t, base+`"not":{"additionalProperties":false,`+ + `"properties":{"kind":{"const":"forbidden"}}}}`) + if err := closed.ValidateText(instance); err != nil { + t.Fatalf("unexpected: %v", err) + } + }) +} + +func mustCompile(t *testing.T, schema string) *structuredoutput.Compiled { + t.Helper() + c, err := structuredoutput.Compile(json.RawMessage(schema)) + if err != nil { + t.Fatalf("compile: %v", err) + } + return c +} diff --git a/llms/structuredoutput/validator.go b/llms/structuredoutput/validator.go index 28caa7316..0e3461781 100644 --- a/llms/structuredoutput/validator.go +++ b/llms/structuredoutput/validator.go @@ -24,8 +24,10 @@ func Compile(schema json.RawMessage) (*Compiled, error) { if err != nil { return nil, fmt.Errorf("parse schema: %w", err) } + doc = admitNullable(doc) const resource = "structuredoutput:schema" comp := jsonschema.NewCompiler() + comp.UseLoader(jsonschema.SchemeURLLoader{}) if err := comp.AddResource(resource, doc); err != nil { return nil, fmt.Errorf("load schema: %w", err) } @@ -36,6 +38,64 @@ func Compile(schema json.RawMessage) (*Compiled, error) { return &Compiled{schema: sch}, nil } +func admitNullable(node any) any { + schema, ok := node.(map[string]any) + if !ok { + return node + } + for _, key := range schemaGroupKeywords { + group, ok := schema[key].(map[string]any) + if !ok { + continue + } + for name, member := range group { + group[name] = admitNullable(member) + } + } + for _, key := range schemaValueKeywords { + if value, ok := schema[key]; ok { + schema[key] = admitNullableValue(value) + } + } + if nullable, ok := schema["nullable"].(bool); ok && nullable { + if declared, ok := schema["type"]; ok { + schema["type"] = withNull(declared) + } + } + return schema +} + +func admitNullableValue(value any) any { + switch typed := value.(type) { + case map[string]any: + return admitNullable(typed) + case []any: + for i, item := range typed { + typed[i] = admitNullableValue(item) + } + return typed + } + return value +} + +func withNull(declared any) any { + switch typed := declared.(type) { + case string: + if typed == "null" { + return typed + } + return []any{typed, "null"} + case []any: + for _, entry := range typed { + if name, _ := entry.(string); name == "null" { + return typed + } + } + return append(typed, "null") + } + return declared +} + // ValidateText parses text as exactly one JSON value (trailing text or a second // value is rejected) and validates it against the compiled schema. Numbers decode // via json.Number so large integers are not degraded to float64 before validation. @@ -77,3 +137,24 @@ func wrap(provider, model string, choice int, stopReason string, cause error) er Cause: cause, } } + +// ValidateFinalChoices validates every choice that finished normally against the +// schema. normalStop is the vendor's spelling of an ordinary finish: a choice +// that stopped for any other reason, or that answered with a tool call, carries +// no final JSON and is left alone. +func ValidateFinalChoices( + schema json.RawMessage, provider, model, normalStop string, resp *llms.ContentResponse, +) error { + if len(schema) == 0 || resp == nil { + return nil + } + for i, choice := range resp.Choices { + if choice.StopReason != normalStop || len(choice.ToolCalls) > 0 { + continue + } + if err := Validate(schema, provider, model, i, choice.StopReason, choice.Content); err != nil { + return err + } + } + return nil +} diff --git a/llms/structuredoutput/validator_test.go b/llms/structuredoutput/validator_test.go index 4dfc448a3..be2be34f9 100644 --- a/llms/structuredoutput/validator_test.go +++ b/llms/structuredoutput/validator_test.go @@ -3,6 +3,10 @@ package structuredoutput_test import ( "encoding/json" "errors" + "fmt" + "os" + "path/filepath" + "strings" "testing" "github.com/vxcontrol/langchaingo/llms" @@ -94,3 +98,131 @@ func TestValidate_TypedError(t *testing.T) { t.Error("typed error must retain an unwrap-able cause") } } + +func TestCompileDoesNotReadTheFilesystem(t *testing.T) { + t.Parallel() + + dir := t.TempDir() + present := filepath.Join(dir, "present.json") + if err := os.WriteFile(present, []byte(`{"type":"integer","minimum":42}`), 0o600); err != nil { + t.Fatal(err) + } + absent := filepath.Join(dir, "absent.json") + + refSchema := func(target string) json.RawMessage { + return json.RawMessage(fmt.Sprintf( + `{"type":"object","additionalProperties":false,"properties":{"n":{"$ref":%q}}}`, + "file://"+target)) + } + + _, presentErr := structuredoutput.Compile(refSchema(present)) + _, absentErr := structuredoutput.Compile(refSchema(absent)) + + if presentErr == nil { + t.Fatal("a file:// reference must not compile: the schema would be read off the caller's disk") + } + if absentErr == nil { + t.Fatal("a file:// reference must not compile") + } + const refused = "no URLLoader registered" + for label, err := range map[string]error{"present": presentErr, "absent": absentErr} { + if !strings.Contains(err.Error(), refused) { + t.Errorf("%s path: want the reference refused before any filesystem access, got %v", label, err) + } + } +} + +func TestCompileStillAcceptsInternalAndDraftRefs(t *testing.T) { + t.Parallel() + + for name, schema := range map[string]string{ + "internal $defs": `{"$defs":{"leaf":{"type":"string"}},"type":"object",` + + `"additionalProperties":false,"properties":{"a":{"$ref":"#/$defs/leaf"}}}`, + "explicit draft 2020-12": `{"$schema":"https://json-schema.org/draft/2020-12/schema",` + + `"type":"object","additionalProperties":false,"properties":{"a":{"type":"string"}}}`, + "explicit draft-07": `{"$schema":"http://json-schema.org/draft-07/schema#","type":"string"}`, + } { + if _, err := structuredoutput.Compile(json.RawMessage(schema)); err != nil { + t.Errorf("%s: %v", name, err) + } + } +} + +func TestTheValidatorAdmitsTheNullableSpellingTheDoorsSendOnTheWire(t *testing.T) { + t.Parallel() + + schema := json.RawMessage(`{"type":"object","additionalProperties":false,` + + `"properties":{"a":{"type":"string","nullable":true}},"required":["a"]}`) + + compiled, err := structuredoutput.Compile(schema) + if err != nil { + t.Fatalf("Compile() error: %v", err) + } + + if err := compiled.ValidateText(`{"a":null}`); err != nil { + t.Fatalf("a null the schema declared nullable must validate, got: %v", err) + } + if err := compiled.ValidateText(`{"a":"x"}`); err != nil { + t.Fatalf("the declared type must still validate, got: %v", err) + } + if err := compiled.ValidateText(`{"a":7}`); err == nil { + t.Fatal("nullable widens the type by null alone, not by every type") + } +} + +func TestNullableWithoutADeclaredTypeStillCompiles(t *testing.T) { + t.Parallel() + + schema := json.RawMessage(`{"type":"object","additionalProperties":false,` + + `"properties":{"a":{"nullable":true}},"required":["a"]}`) + + compiled, err := structuredoutput.Compile(schema) + if err != nil { + t.Fatalf("Compile() error: %v", err) + } + for _, text := range []string{`{"a":null}`, `{"a":"x"}`, `{"a":7}`} { + if err := compiled.ValidateText(text); err != nil { + t.Fatalf("an undeclared type constrains nothing, %s must validate: %v", text, err) + } + } +} + +func TestNullableLeavesInstanceLiteralsAlone(t *testing.T) { + t.Parallel() + + schema := json.RawMessage(`{"type":"object","additionalProperties":false,` + + `"properties":{"a":{"enum":[{"nullable":true,"type":"widget"},"plain"]},` + + `"b":{"const":{"nullable":true,"type":"widget"}}},` + + `"required":["a","b"]}`) + + compiled, err := structuredoutput.Compile(schema) + if err != nil { + t.Fatalf("Compile() error: %v", err) + } + literal := `{"nullable":true,"type":"widget"}` + if err := compiled.ValidateText(`{"a":` + literal + `,"b":` + literal + `}`); err != nil { + t.Fatalf("an enum or const literal is data, not a schema to widen: %v", err) + } +} + +func TestNullableReachesNestedSubschemas(t *testing.T) { + t.Parallel() + + schema := json.RawMessage(`{"type":"object","additionalProperties":false,` + + `"properties":{"list":{"type":"array","items":{"type":"string","nullable":true}},` + + `"pick":{"anyOf":[{"type":"integer","nullable":true}]},` + + `"ref":{"$ref":"#/$defs/leaf"}},` + + `"$defs":{"leaf":{"type":"string","nullable":true}},` + + `"required":["list","pick","ref"]}`) + + compiled, err := structuredoutput.Compile(schema) + if err != nil { + t.Fatalf("Compile() error: %v", err) + } + if err := compiled.ValidateText(`{"list":[null],"pick":null,"ref":null}`); err != nil { + t.Fatalf("nullable must be admitted inside items, anyOf and $defs: %v", err) + } + if err := compiled.ValidateText(`{"list":[1],"pick":null,"ref":null}`); err == nil { + t.Fatal("nullable widens by null alone, the item type still holds") + } +} diff --git a/llms/turn.go b/llms/turn.go new file mode 100644 index 000000000..dd7ec5b48 --- /dev/null +++ b/llms/turn.go @@ -0,0 +1,141 @@ +package llms + +import "github.com/vxcontrol/langchaingo/llms/reasoning" + +// ToolChoiceKind is what a tool choice asks of the model, apart from the +// spelling the door expects. Doors translate it into their own wire shape. +type ToolChoiceKind int + +const ( + ToolChoiceUnset ToolChoiceKind = iota + ToolChoiceAuto + ToolChoiceNone + ToolChoiceAny + ToolChoiceNamed +) + +func (k ToolChoiceKind) String() string { + switch k { + case ToolChoiceAuto: + return "auto" + case ToolChoiceNone: + return "none" + case ToolChoiceAny: + return "any" + case ToolChoiceNamed: + return "a named tool" + default: + return "unset" + } +} + +// ClassifyToolChoice reads every spelling the doors accept and reports what was +// asked, naming the tool when the caller picked one. +func ClassifyToolChoice(choice any) (ToolChoiceKind, string) { + kindOf := func(t string, name string) (ToolChoiceKind, string) { + switch t { + case "auto": + return ToolChoiceAuto, "" + case "none": + return ToolChoiceNone, "" + case "tool", "function": + if name != "" { + return ToolChoiceNamed, name + } + return ToolChoiceAny, "" + case "any", "required": + return ToolChoiceAny, "" + } + return ToolChoiceUnset, "" + } + + switch c := choice.(type) { + case string: + return kindOf(c, "") + case ToolChoice: + return kindOf(c.Type, functionName(c.Function)) + case *ToolChoice: + if c == nil { + return ToolChoiceUnset, "" + } + return kindOf(c.Type, functionName(c.Function)) + case map[string]any: + t, _ := c["type"].(string) + name, _ := c["name"].(string) + if fn, ok := c["function"].(map[string]any); ok { + name, _ = fn["name"].(string) + } + return kindOf(t, name) + } + return ToolChoiceUnset, "" +} + +// ForcesToolUse reports whether a tool choice demands a tool call rather than +// leaving the decision to the model. +func ForcesToolUse(choice any) bool { + kind, _ := ClassifyToolChoice(choice) + return kind == ToolChoiceAny || kind == ToolChoiceNamed +} + +// ForcedToolName reports whether the choice demands a tool call, and names the +// tool when the caller picked one. An empty name with forced=true means "any +// tool", which every door spells differently. +func ForcedToolName(choice any) (name string, forced bool) { + kind, name := ClassifyToolChoice(choice) + switch kind { //nolint:exhaustive // the kinds that leave the choice to the model are not forcing + case ToolChoiceNamed: + return name, true + case ToolChoiceAny: + return "", true + } + return "", false +} + +func functionName(fn *FunctionReference) string { + if fn == nil { + return "" + } + return fn.Name +} + +// HasAssistantPrefill reports whether the conversation ends with an assistant +// turn, which some models reject. +func HasAssistantPrefill(messages []MessageContent) bool { + if len(messages) == 0 { + return false + } + return messages[len(messages)-1].Role == ChatMessageTypeAI +} + +// CheckClaudeTurnLimits refuses the two turns a Claude model rejects on the +// wire: manual (budget) thinking combined with a forced tool choice, and a +// conversation that ends on an assistant turn. +func CheckClaudeTurnLimits(model string, opts CallOptions, messages []MessageContent) error { + return CheckClaudeTurnLimitsOnWire(model, opts, messages, true) +} + +// CheckClaudeTurnLimitsOnWire is CheckClaudeTurnLimits for a door that knows +// whether its own request carries a manual thinking budget; a door that sends +// only an effort passes false. +func CheckClaudeTurnLimitsOnWire( + model string, + opts CallOptions, + messages []MessageContent, + sendsManualThinking bool, +) error { + budget := reasoning.ClaudeClampBudget(model, opts.Reasoning.GetTokens(opts.GetMaxTokens())) + budgetOnly := reasoning.ClaudeReasoningKindFor(model) == reasoning.ClaudeReasoningBudgetOnly + budgetThinking := (sendsManualThinking || budgetOnly) && + opts.Reasoning.ResolveMode() == ReasoningOn && + reasoning.ClaudeSupportsThinking(model) && + !reasoning.ResolveClaudeAdaptive(model, opts.Reasoning.Adaptive) && + budget > 0 + if budgetThinking && ForcesToolUse(opts.ToolChoice) { + return &reasoning.ErrForcedToolUseWithThinking{Model: model} + } + + if reasoning.ClaudeRejectsAssistantPrefill(model) && HasAssistantPrefill(messages) { + return &reasoning.ErrAssistantPrefillUnsupported{Model: model} + } + return nil +} diff --git a/llms/turn_test.go b/llms/turn_test.go new file mode 100644 index 000000000..a58cd9873 --- /dev/null +++ b/llms/turn_test.go @@ -0,0 +1,63 @@ +package llms + +import "testing" + +func TestForcesToolUseAcceptsEveryFormOfTheChoice(t *testing.T) { + t.Parallel() + + named := ToolChoice{Type: "tool", Function: &FunctionReference{Name: "calc"}} + for _, choice := range []any{ + "any", "tool", "required", + ToolChoice{Type: "any"}, named, + &ToolChoice{Type: "any"}, &named, + map[string]any{"type": "any"}, + map[string]any{"type": "tool", "name": "calc"}, + ToolChoice{Type: "function", Function: &FunctionReference{Name: "calc"}}, + &ToolChoice{Type: "function", Function: &FunctionReference{Name: "calc"}}, + map[string]any{"type": "function", "function": map[string]any{"name": "calc"}}, + } { + if !ForcesToolUse(choice) { + t.Errorf("%#v demands a tool call", choice) + } + } + + var absent *ToolChoice + for _, choice := range []any{ + nil, absent, "auto", "none", "", + ToolChoice{Type: "auto"}, &ToolChoice{Type: "none"}, + map[string]any{"type": "auto"}, map[string]any{}, + 42, + } { + if ForcesToolUse(choice) { + t.Errorf("%#v leaves the decision to the model", choice) + } + } +} + +func TestForcedToolNameReadsEveryNotation(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + choice any + want string + forced bool + }{ + {"anthropic named", ToolChoice{Type: "tool", Function: &FunctionReference{Name: "calc"}}, "calc", true}, + {"anthropic named map", map[string]any{"type": "tool", "name": "calc"}, "calc", true}, + {"anthropic any", ToolChoice{Type: "any"}, "", true}, + {"openai named", ToolChoice{Type: "function", Function: &FunctionReference{Name: "calc"}}, "calc", true}, + {"openai named pointer", &ToolChoice{Type: "function", Function: &FunctionReference{Name: "calc"}}, "calc", true}, + {"openai named map", map[string]any{"type": "function", "function": map[string]any{"name": "calc"}}, "calc", true}, + {"openai required", "required", "", true}, + {"auto", ToolChoice{Type: "auto"}, "", false}, + {"none", "none", "", false}, + {"absent", nil, "", false}, + } { + name, forced := ForcedToolName(tc.choice) + if name != tc.want || forced != tc.forced { + t.Errorf("%s: ForcedToolName() = (%q, %v), want (%q, %v)", + tc.name, name, forced, tc.want, tc.forced) + } + } +} diff --git a/llms/unread_catalogue_test.go b/llms/unread_catalogue_test.go new file mode 100644 index 000000000..761039347 --- /dev/null +++ b/llms/unread_catalogue_test.go @@ -0,0 +1,110 @@ +package llms_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/vxcontrol/langchaingo/llms" +) + +func everyCatalogueOption() []llms.CallOption { + return []llms.CallOption{ + llms.WithMinP(0.05), llms.WithRepetitionPenalty(1.1), + llms.WithFrequencyPenalty(0.3), llms.WithPresencePenalty(0.7), + llms.WithTopK(40), llms.WithN(2), llms.WithCandidateCount(3), + llms.WithTopLogProbs(5), llms.WithMinLength(10), llms.WithMaxLength(20), + llms.WithSeed(7), llms.WithVerbosity("low"), + llms.WithResponseMIMEType("application/json"), + llms.WithLogProbs(true), llms.WithJSONMode(), + } +} + +var catalogueOptionNames = []string{ + "WithMinP", "WithRepetitionPenalty", "WithFrequencyPenalty", "WithPresencePenalty", + "WithTopK", "WithN", "WithCandidateCount", "WithTopLogProbs", + "WithMinLength", "WithMaxLength", "WithSeed", "WithVerbosity", + "WithResponseMIMEType", "WithLogProbs", "WithJSONMode", +} + +func TestTheUnreadCatalogueReportsEveryOptionADoorDoesNotCarry(t *testing.T) { + t.Parallel() + + opts := llms.CallOptions{} + for _, apply := range everyCatalogueOption() { + apply(&opts) + } + + var warn llms.Warnings + warn.AddUnreadOptions("m", opts, "no field", "WithSeed", "WithTopK") + + reported := make(map[string]llms.Warning, len(catalogueOptionNames)) + for _, w := range warn.List() { + reported[w.Option] = w + } + for _, option := range catalogueOptionNames { + switch option { + case "WithSeed", "WithTopK": + require.NotContains(t, reported, option, "the door carries it") + default: + w, ok := reported[option] + require.True(t, ok, "%s went unreported", option) + require.Equal(t, llms.WarningDrop, w.Kind) + require.NotEmpty(t, w.Asked, "%s reported without the value asked", option) + } + } +} + +func TestADoorThatCarriesNothingReportsTheWholeCatalogue(t *testing.T) { + t.Parallel() + + opts := llms.CallOptions{} + for _, apply := range everyCatalogueOption() { + apply(&opts) + } + for _, apply := range []llms.CallOption{ + llms.WithTemperature(0.4), llms.WithTopP(0.9), llms.WithMaxTokens(1024), + llms.WithStopWords([]string{"stop"}), + } { + apply(&opts) + } + + var warn llms.Warnings + warn.AddUnreadOptions("m", opts, "no field") + + reported := make([]string, 0, len(catalogueOptionNames)) + for _, w := range warn.List() { + reported = append(reported, w.Option) + } + require.ElementsMatch(t, catalogueOptionNames, reported, + "the catalogue holds the options a door carries verbatim or not at all; "+ + "an option the door reshapes is reported with the value that travelled") +} + +func TestAnExplicitZeroSeedIsReportedNotSwallowed(t *testing.T) { + t.Parallel() + + opts := llms.CallOptions{} + llms.WithSeed(0)(&opts) + + var warn llms.Warnings + warn.AddUnreadOptions("m", opts, "no field") + + reported := make(map[string]llms.Warning) + for _, w := range warn.List() { + reported[w.Option] = w + } + w, ok := reported["WithSeed"] + require.True(t, ok, "an explicit seed of 0 is a real seed, not the absence of one") + require.Equal(t, llms.WarningDrop, w.Kind) + require.Equal(t, "0", w.Asked) +} + +func TestACallThatSetsNoCatalogueOptionReportsNothing(t *testing.T) { + t.Parallel() + + var warn llms.Warnings + warn.AddUnreadOptions("m", llms.CallOptions{}, "no field") + + require.Empty(t, warn.List()) +} diff --git a/llms/warning.go b/llms/warning.go new file mode 100644 index 000000000..7bab9bd13 --- /dev/null +++ b/llms/warning.go @@ -0,0 +1,192 @@ +package llms + +import ( + "fmt" + "sort" + "strconv" + "strings" +) + +// WarningKind names what a door did to a caller option on the way to the wire. +type WarningKind string + +const ( + WarningDrop WarningKind = "drop" + WarningClamp WarningKind = "clamp" + WarningSubstitute WarningKind = "substitute" +) + +// Warning reports one caller option that did not reach the vendor as asked. +// Asked and Sent are rendered values; an empty Sent means nothing reached the wire. +type Warning struct { + Kind WarningKind + Option string + Model string + Asked string + Sent string + Reason string +} + +func renderFloat(v *float64) string { + if v == nil { + return "" + } + return strconv.FormatFloat(*v, 'g', -1, 64) +} + +func renderInt(v *int) string { + if v == nil { + return "" + } + return strconv.Itoa(*v) +} + +func (w Warning) String() string { + sent := w.Sent + if sent == "" { + sent = "nothing" + } + return fmt.Sprintf("%s: %s asked %s, %s sent %s on %s (%s)", + w.Kind, w.Option, w.Asked, w.Option, sent, w.Model, w.Reason) +} + +// Warnings collects Warning values while a request is built. A nil *Warnings is +// valid and keeps nothing. +type Warnings struct { + items []Warning +} + +func (w *Warnings) Add(warning Warning) { + if w == nil { + return + } + w.items = append(w.items, warning) +} + +// AddFloatChange records an optional float option that the door changed on the +// way to the wire. A nil after means the option never reached it. +func (w *Warnings) AddFloatChange(option, model, reason string, before, after *float64) { + w.addChange(option, model, reason, renderFloat(before), renderFloat(after)) +} + +func (w *Warnings) AddIntChange(option, model, reason string, before, after *int) { + w.addChange(option, model, reason, renderInt(before), renderInt(after)) +} + +func (w *Warnings) addChange(option, model, reason, before, after string) { + switch { + case before == "" || before == after: + return + case after == "": + w.Add(Warning{ + Kind: WarningDrop, Option: option, Model: model, + Asked: before, Reason: reason, + }) + default: + w.Add(Warning{ + Kind: WarningSubstitute, Option: option, Model: model, + Asked: before, Sent: after, Reason: reason, + }) + } +} + +var unreadCatalogue = []struct { + option string + asked func(CallOptions) string +}{ + {"WithMinP", func(o CallOptions) string { return askedFloat(o.MinP) }}, + {"WithRepetitionPenalty", func(o CallOptions) string { return askedFloat(o.RepetitionPenalty) }}, + {"WithFrequencyPenalty", func(o CallOptions) string { return askedFloat(o.FrequencyPenalty) }}, + {"WithPresencePenalty", func(o CallOptions) string { return askedFloat(o.PresencePenalty) }}, + {"WithTopK", func(o CallOptions) string { return askedInt(o.TopK, 0) }}, + {"WithN", func(o CallOptions) string { return askedInt(o.N, 1) }}, + {"WithCandidateCount", func(o CallOptions) string { return askedInt(o.CandidateCount, 1) }}, + {"WithTopLogProbs", func(o CallOptions) string { return askedInt(o.TopLogProbs, 0) }}, + {"WithMinLength", func(o CallOptions) string { return askedInt(o.MinLength, 0) }}, + {"WithMaxLength", func(o CallOptions) string { return askedInt(o.MaxLength, 0) }}, + {"WithSeed", func(o CallOptions) string { + if o.Seed == nil { + return "" + } + return strconv.Itoa(*o.Seed) + }}, + {"WithVerbosity", func(o CallOptions) string { return askedString(o.Verbosity) }}, + {"WithResponseMIMEType", func(o CallOptions) string { return askedString(o.ResponseMIMEType) }}, + {"WithLogProbs", func(o CallOptions) string { + if o.LogProbs != nil && *o.LogProbs { + return "true" + } + return "" + }}, + {"WithJSONMode", func(o CallOptions) string { + if o.JSONMode && o.StructuredOutput == nil { + return "true" + } + return "" + }}, +} + +func askedFloat(v *float64) string { + if v == nil || *v == 0 { + return "" + } + return strconv.FormatFloat(*v, 'g', -1, 64) +} + +func askedInt(v *int, neutral int) string { + if v == nil || *v == neutral { + return "" + } + return strconv.Itoa(*v) +} + +func askedString(v *string) string { + if v == nil { + return "" + } + return *v +} + +// AddUnreadOptions reports every catalogue option the caller set that this door +// leaves off the wire. carried names the ones it does put there. +func (w *Warnings) AddUnreadOptions(model string, opts CallOptions, reason string, carried ...string) { + onTheWire := make(map[string]bool, len(carried)) + for _, option := range carried { + onTheWire[option] = true + } + for _, entry := range unreadCatalogue { + if onTheWire[entry.option] { + continue + } + if asked := entry.asked(opts); asked != "" { + w.Add(Warning{ + Kind: WarningDrop, Option: entry.option, Model: model, + Asked: asked, Reason: reason, + }) + } + } +} + +// AddUnreadExtraBody records the WithExtraBody fields a door cannot merge. +func (w *Warnings) AddUnreadExtraBody(model string, opts CallOptions, reason string) { + extraBody := ExtraBody(opts) + if len(extraBody) == 0 { + return + } + keys := make([]string, 0, len(extraBody)) + for key := range extraBody { + keys = append(keys, key) + } + sort.Strings(keys) + w.Add(Warning{ + Kind: WarningDrop, Option: "WithExtraBody", Model: model, + Asked: strings.Join(keys, ", "), Reason: reason, + }) +} + +func (w *Warnings) List() []Warning { + if w == nil { + return nil + } + return w.items +} diff --git a/llms/warning_test.go b/llms/warning_test.go new file mode 100644 index 000000000..b7b163ede --- /dev/null +++ b/llms/warning_test.go @@ -0,0 +1,24 @@ +package llms + +import "testing" + +func TestANilSinkAcceptsWarningsAndKeepsNone(t *testing.T) { + t.Parallel() + + var sink *Warnings + sink.Add(Warning{Kind: WarningDrop, Option: "WithTopP"}) + if got := sink.List(); got != nil { + t.Errorf("a nil sink kept %v", got) + } +} + +func TestASinkKeepsWhatItIsGiven(t *testing.T) { + t.Parallel() + + sink := &Warnings{} + sink.Add(Warning{Kind: WarningDrop, Option: "WithTopP", Model: "m", Asked: "0.9"}) + sink.Add(Warning{Kind: WarningClamp, Option: "WithMaxTokens", Model: "m", Asked: "1", Sent: "2"}) + if got := sink.List(); len(got) != 2 || got[0].Option != "WithTopP" || got[1].Sent != "2" { + t.Errorf("sink kept %v", got) + } +} diff --git a/memory/token_buffer.go b/memory/token_buffer.go index f066b5cbe..944ec3f99 100644 --- a/memory/token_buffer.go +++ b/memory/token_buffer.go @@ -7,7 +7,9 @@ import ( "github.com/vxcontrol/langchaingo/schema" ) -// ConversationTokenBuffer for storing conversation memory. +// ConversationTokenBuffer for storing conversation memory. It drops the oldest +// messages until the buffer fits MaxTokenLimit tokens, as llms.CountTokens +// counts them for no particular model: one token per four runes. type ConversationTokenBuffer struct { ConversationBuffer LLM llms.Model diff --git a/memory/token_buffer_test.go b/memory/token_buffer_test.go index 09abe29d6..25c2b1df5 100644 --- a/memory/token_buffer_test.go +++ b/memory/token_buffer_test.go @@ -1,6 +1,8 @@ package memory import ( + "bytes" + "log" "net/http" "testing" @@ -108,3 +110,32 @@ func TestTokenBufferMemoryWithPreLoadedHistory(t *testing.T) { expected := map[string]any{"history": "Human: bar\nAI: foo"} assert.Equal(t, expected, result) } + +// TestTokenBufferMemoryPrunesOldestMessages swaps the package-wide log output, +// so it does not run in parallel. +func TestTokenBufferMemoryPrunesOldestMessages(t *testing.T) { + ctx := t.Context() + var logs bytes.Buffer + logWriter := log.Writer() + log.SetOutput(&logs) + t.Cleanup(func() { log.SetOutput(logWriter) }) + + // The buffer is counted for no particular model: one token per four runes. + m := NewConversationTokenBuffer(nil, 10) + + require.NoError(t, m.SaveContext(ctx, map[string]any{"input": "one"}, map[string]any{"output": "two"})) + require.NoError(t, m.SaveContext(ctx, map[string]any{"input": "three"}, map[string]any{"output": "four"})) + + // 40 runes are 10 tokens, which the limit still holds. + result, err := m.LoadMemoryVariables(ctx, map[string]any{}) + require.NoError(t, err) + assert.Equal(t, map[string]any{"history": "Human: one\nAI: two\nHuman: three\nAI: four"}, result) + + // 60 runes are 15 tokens: the two oldest messages go, leaving 41 runes. + require.NoError(t, m.SaveContext(ctx, map[string]any{"input": "five"}, map[string]any{"output": "six"})) + + result, err = m.LoadMemoryVariables(ctx, map[string]any{}) + require.NoError(t, err) + assert.Equal(t, map[string]any{"history": "Human: three\nAI: four\nHuman: five\nAI: six"}, result) + assert.Empty(t, logs.String()) +} diff --git a/prompts/internal/sanitization/sanitize.go b/prompts/internal/sanitization/sanitize.go index 4499dcb38..b50ae8f64 100644 --- a/prompts/internal/sanitization/sanitize.go +++ b/prompts/internal/sanitization/sanitize.go @@ -109,4 +109,3 @@ func isValidIdentifier(name string) bool { return true } - diff --git a/testing/llmtest/doc.go b/testing/llmtest/doc.go index 098f854da..e3d98bf49 100644 --- a/testing/llmtest/doc.go +++ b/testing/llmtest/doc.go @@ -29,22 +29,26 @@ // // The package automatically detects and tests supported capabilities: // - Basic operations (Call, GenerateContent) -// - Streaming (if model implements streaming interface) -// - Tool/Function calling (probed with test tool) -// - Reasoning/Thinking mode (if supported) +// - Streaming (unless the call site passes WithoutStreaming) +// - Tool/Function calling (probed with a test tool; a door that takes the +// tools must answer with a call unless the call site passes WithoutToolCalls) +// - A door that needs particular options to answer at all, such as the +// output budget a thinking model spends before its first word, declares +// them with WithCallOptions; every checked request carries them // - Token counting (if usage information provided) // - Context caching (if implemented) // // # Mock Implementation // -// A MockLLM is provided for testing without making actual API calls: +// A MockLLM is provided for testing without making actual API calls. It +// answers in prose and never calls a tool, so it declares WithoutToolCalls: // // mock := &llmtest.MockLLM{ -// CallFunc: func(ctx context.Context, prompt string, options ...llms.CallOption) (string, error) { -// return "mocked response", nil +// GenerateResponse: &llms.ContentResponse{ +// Choices: []*llms.ContentChoice{{Content: "Hello"}}, // }, // } -// llmtest.TestLLM(t, mock) +// llmtest.TestLLM(t, mock, llmtest.WithoutToolCalls()) // // # Parallel Testing // diff --git a/testing/llmtest/llmtest.go b/testing/llmtest/llmtest.go index 51c669e13..2439f8fe0 100644 --- a/testing/llmtest/llmtest.go +++ b/testing/llmtest/llmtest.go @@ -8,12 +8,14 @@ import ( "context" "errors" "fmt" + "slices" "strings" "sync" "testing" "time" "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" ) // TestLLM tests an LLM implementation. @@ -31,22 +33,27 @@ import ( // } // llmtest.TestLLM(t, llm) // } -func TestLLM(t *testing.T, model llms.Model) { +func TestLLM(t *testing.T, model llms.Model, opts ...Option) { t.Helper() t.Parallel() + var declared TestOptions + for _, opt := range opts { + opt(&declared) + } + // Run core tests as subtests - these should always work t.Run("Core", func(t *testing.T) { t.Parallel() t.Run("Call", func(t *testing.T) { t.Parallel() - testCall(t, model) + testCall(t, model, declared.CallOptions...) }) t.Run("GenerateContent", func(t *testing.T) { t.Parallel() - testGenerateContent(t, model) + testGenerateContent(t, model, declared.CallOptions...) }) }) @@ -54,47 +61,36 @@ func TestLLM(t *testing.T, model llms.Model) { t.Run("Capabilities", func(t *testing.T) { t.Parallel() - // Test streaming if supported - if supportsStreaming(model) { + if !declared.SkipStreaming { t.Run("Streaming", func(t *testing.T) { t.Parallel() - testStreaming(t, model) + testStreaming(t, model, declared.CallOptions...) }) } - // Test tool calls if supported - if supportsTools(model) { + if !declared.SkipToolCalls && supportsTools(model) { t.Run("ToolCalls", func(t *testing.T) { t.Parallel() - testToolCalls(t, model) + testToolCalls(t, model, declared.CallOptions...) }) } // Test caching by trying it - if it works, great t.Run("Caching", func(t *testing.T) { t.Parallel() - testCaching(t, model) + testCaching(t, model, declared.CallOptions...) }) // Test token counting - always run but don't fail if not supported t.Run("TokenCounting", func(t *testing.T) { t.Parallel() - testTokenCounting(t, model) + testTokenCounting(t, model, declared.CallOptions...) }) }) } // Capability detection functions -// supportsStreaming checks if the model supports streaming -func supportsStreaming(model llms.Model) bool { - // Check if model implements the streaming interface - _, ok := model.(interface { - GenerateContentStream(context.Context, []llms.MessageContent, ...llms.CallOption) (<-chan llms.ContentResponse, error) - }) - return ok -} - // supportsTools probes if the model supports tool calls func supportsTools(model llms.Model) bool { // Try a simple tool call with a dummy tool @@ -119,14 +115,16 @@ func supportsTools(model llms.Model) bool { }, } - // Try with tools - if it doesn't error out, it's supported - _, err := model.GenerateContent(ctx, messages, + resp, err := model.GenerateContent(ctx, messages, llms.WithTools(tools), llms.WithMaxTokens(1), ) + if resp != nil && slices.ContainsFunc(resp.Warnings, func(w llms.Warning) bool { + return w.Kind == llms.WarningDrop && w.Option == "WithTools" + }) { + return false + } - // If we get a specific "tools not supported" error, return false - // Otherwise assume it's supported (even if other errors occur) if err != nil && strings.Contains(strings.ToLower(err.Error()), "not support") { return false } @@ -148,6 +146,32 @@ func TestLLMWithOptions(t *testing.T, model llms.Model, opts TestOptions, expect runTestsWithContext(t, testCtx) } +// Option declares, at the call site, what the door under test cannot do or +// what it needs to be called with. +type Option func(*TestOptions) + +// WithoutStreaming declares a door that does not deliver a streaming callback, +// so the suite must not hold it to that contract. +func WithoutStreaming() Option { + return func(o *TestOptions) { o.SkipStreaming = true } +} + +// WithoutToolCalls declares a door that takes tools but never answers with a +// call, so the suite must not hold it to that contract. +func WithoutToolCalls() Option { + return func(o *TestOptions) { o.SkipToolCalls = true } +} + +// WithCallOptions declares options the door needs on every request to answer +// at all, such as the output budget a thinking model spends on thoughts before +// its first word. The suite appends them after its own, so they override its +// budgets and other defaults, while the Streaming test still installs its text +// collector last and the tool probe stays a pure capability probe. Every +// answer is held to the same checks as before. +func WithCallOptions(opts ...llms.CallOption) Option { + return func(o *TestOptions) { o.CallOptions = append(o.CallOptions, opts...) } +} + // TestOptions configures test execution. type TestOptions struct { // Timeout for each test operation @@ -157,6 +181,7 @@ type TestOptions struct { SkipCall bool SkipGenerateContent bool SkipStreaming bool + SkipToolCalls bool // Custom test prompts TestPrompt string @@ -200,11 +225,12 @@ func runTestsWithContext(t *testing.T, ctx *testContext) { // Core test implementations -func testCall(t *testing.T, model llms.Model) { +func testCall(t *testing.T, model llms.Model, extra ...llms.CallOption) { t.Helper() ctx := context.Background() - result, err := llms.GenerateFromSinglePrompt(ctx, model, "Reply with 'OK' and nothing else", llms.WithMaxTokens(10)) + opts := append([]llms.CallOption{llms.WithMaxTokens(10)}, extra...) + result, err := llms.GenerateFromSinglePrompt(ctx, model, "Reply with 'OK' and nothing else", opts...) if err != nil { t.Fatalf("Call failed: %v", err) } @@ -239,7 +265,7 @@ func testCallWithContext(t *testing.T, tctx *testContext) { } } -func testGenerateContent(t *testing.T, model llms.Model) { +func testGenerateContent(t *testing.T, model llms.Model, extra ...llms.CallOption) { t.Helper() ctx := context.Background() @@ -252,7 +278,8 @@ func testGenerateContent(t *testing.T, model llms.Model) { }, } - resp, err := model.GenerateContent(ctx, messages, llms.WithMaxTokens(10)) + opts := append([]llms.CallOption{llms.WithMaxTokens(10)}, extra...) + resp, err := model.GenerateContent(ctx, messages, opts...) if err != nil { t.Fatalf("GenerateContent failed: %v", err) } @@ -299,9 +326,8 @@ func testGenerateContentWithContext(t *testing.T, tctx *testContext) { } } -func testStreaming(t *testing.T, model llms.Model) { +func testStreaming(t *testing.T, model llms.Model, extra ...llms.CallOption) { t.Helper() - ctx := context.Background() messages := []llms.MessageContent{ { @@ -312,34 +338,8 @@ func testStreaming(t *testing.T, model llms.Model) { }, } - // Skip if model doesn't support streaming - streamer, ok := model.(interface { - GenerateContentStream(context.Context, []llms.MessageContent, ...llms.CallOption) (<-chan llms.ContentResponse, error) - }) - if !ok { - t.Skip("Model doesn't support streaming") - } - - stream, err := streamer.GenerateContentStream(ctx, messages, llms.WithMaxTokens(50)) - if err != nil { - t.Fatalf("GenerateContentStream failed: %v", err) - } - - var chunks []string - for chunk := range stream { - if len(chunk.Choices) > 0 { - chunks = append(chunks, chunk.Choices[0].Content) - } - } - - if len(chunks) == 0 { - t.Error("No chunks received from stream") - } - - fullContent := strings.Join(chunks, "") - if fullContent == "" { - t.Error("Stream produced no content") - } + opts := append([]llms.CallOption{llms.WithMaxTokens(50)}, extra...) + assertStreams(t, context.Background(), model, messages, opts...) } func testStreamingWithContext(t *testing.T, tctx *testContext) { @@ -363,33 +363,46 @@ func testStreamingWithContext(t *testing.T, tctx *testContext) { } } - // Skip if model doesn't support streaming - streamer, ok := tctx.model.(interface { - GenerateContentStream(context.Context, []llms.MessageContent, ...llms.CallOption) (<-chan llms.ContentResponse, error) + opts := append([]llms.CallOption{llms.WithMaxTokens(50)}, tctx.options.CallOptions...) + assertStreams(t, ctx, tctx.model, messages, opts...) +} + +func assertStreams(t *testing.T, ctx context.Context, model llms.Model, messages []llms.MessageContent, opts ...llms.CallOption) { + t.Helper() + + var mu sync.Mutex + var streamed strings.Builder + collect := llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type != streaming.ChunkTypeText { + return nil + } + mu.Lock() + defer mu.Unlock() + streamed.WriteString(chunk.Content) + return nil }) - if !ok { - t.Skip("Model doesn't support streaming") - } - opts := append([]llms.CallOption{llms.WithMaxTokens(50)}, tctx.options.CallOptions...) - stream, err := streamer.GenerateContentStream(ctx, messages, opts...) + resp, err := model.GenerateContent(ctx, messages, append(opts, collect)...) if err != nil { - t.Fatalf("GenerateContentStream failed: %v", err) + t.Fatalf("GenerateContent with a streaming callback failed: %v", err) } - var chunks []string - for chunk := range stream { - if len(chunk.Choices) > 0 { - chunks = append(chunks, chunk.Choices[0].Content) - } - } + mu.Lock() + got := streamed.String() + mu.Unlock() - if len(chunks) == 0 { - t.Error("No chunks received from stream") + if got == "" { + t.Fatal("the door took a streaming callback and never called it with text") + } + if len(resp.Choices) == 0 { + t.Fatal("streaming call returned no choices") + } + if content := resp.Choices[0].Content; content != got { + t.Errorf("the streamed text and the returned content disagree:\n streamed: %q\n returned: %q", got, content) } } -func testToolCalls(t *testing.T, model llms.Model) { +func testToolCalls(t testing.TB, model llms.Model, extra ...llms.CallOption) { t.Helper() ctx := context.Background() @@ -423,10 +436,10 @@ func testToolCalls(t *testing.T, model llms.Model) { }, } - resp, err := model.GenerateContent(ctx, messages, + resp, err := model.GenerateContent(ctx, messages, append([]llms.CallOption{ llms.WithTools(tools), llms.WithMaxTokens(100), - ) + }, extra...)...) if err != nil { t.Fatalf("GenerateContent with tools failed: %v", err) } @@ -435,19 +448,16 @@ func testToolCalls(t *testing.T, model llms.Model) { t.Fatal("No choices in response") } - // Check if tool was called choice := resp.Choices[0] if len(choice.ToolCalls) == 0 { - t.Log("No tool calls in response (model may not support tools)") - } else { - toolCall := choice.ToolCalls[0] - if toolCall.FunctionCall.Name != "get_weather" { - t.Errorf("Expected get_weather tool call, got: %s", toolCall.FunctionCall.Name) - } + t.Fatalf("the door took the tools and answered without calling one: %q", choice.Content) + } + if call := choice.ToolCalls[0].FunctionCall; call == nil || call.Name != "get_weather" { + t.Errorf("expected a get_weather tool call, got %+v", choice.ToolCalls[0]) } } -func testCaching(t *testing.T, model llms.Model) { +func testCaching(t *testing.T, model llms.Model, extra ...llms.CallOption) { t.Helper() ctx := context.Background() @@ -469,14 +479,16 @@ func testCaching(t *testing.T, model llms.Model) { }, } + opts := append([]llms.CallOption{llms.WithMaxTokens(10)}, extra...) + // First call (cache miss) - _, err := model.GenerateContent(ctx, messages, llms.WithMaxTokens(10)) + _, err := model.GenerateContent(ctx, messages, opts...) if err != nil { t.Fatalf("First call failed: %v", err) } // Second call (potential cache hit) - resp2, err := model.GenerateContent(ctx, messages, llms.WithMaxTokens(10)) + resp2, err := model.GenerateContent(ctx, messages, opts...) if err != nil { t.Fatalf("Second call failed: %v", err) } @@ -489,7 +501,7 @@ func testCaching(t *testing.T, model llms.Model) { } } -func testTokenCounting(t *testing.T, model llms.Model) { +func testTokenCounting(t *testing.T, model llms.Model, extra ...llms.CallOption) { t.Helper() ctx := context.Background() @@ -502,7 +514,8 @@ func testTokenCounting(t *testing.T, model llms.Model) { }, } - resp, err := model.GenerateContent(ctx, messages, llms.WithMaxTokens(50)) + opts := append([]llms.CallOption{llms.WithMaxTokens(50)}, extra...) + resp, err := model.GenerateContent(ctx, messages, opts...) if err != nil { t.Fatalf("GenerateContent failed: %v", err) } @@ -597,61 +610,41 @@ func (m *MockLLM) GenerateContent(ctx context.Context, messages []llms.MessageCo m.LastMessages = messages m.mu.Unlock() - if m.GenerateResponse != nil { - return m.GenerateResponse, m.GenerateError - } - - // Default response - return &llms.ContentResponse{ - Choices: []*llms.ContentChoice{ - { - Content: "mock response", + response := m.GenerateResponse + if response == nil { + response = &llms.ContentResponse{ + Choices: []*llms.ContentChoice{ + { + Content: "mock response", + }, }, - }, - }, m.GenerateError -} - -// GenerateContentStream implements streaming -func (m *MockLLM) GenerateContentStream(ctx context.Context, messages []llms.MessageContent, options ...llms.CallOption) (<-chan llms.ContentResponse, error) { - // Create a channel and send the mock response - ch := make(chan llms.ContentResponse, 1) - - // Capture the response under lock - m.mu.Lock() - hasResponse := m.GenerateResponse != nil - var response llms.ContentResponse - if hasResponse { - response = *m.GenerateResponse + } } - m.mu.Unlock() - // Send the response in chunks - go func() { - defer close(ch) - - // Simulate streaming by sending the response in parts - if hasResponse { - ch <- response - } else { - // Default streaming response - ch <- llms.ContentResponse{ - Choices: []*llms.ContentChoice{ - { - Content: "mock", - }, - }, - } - ch <- llms.ContentResponse{ - Choices: []*llms.ContentChoice{ - { - Content: " response", - }, - }, + opts := llms.CallOptions{} + for _, opt := range options { + opt(&opts) + } + if opts.StreamingFunc != nil && len(response.Choices) > 0 { + var sent strings.Builder + for _, part := range strings.SplitAfter(response.Choices[0].Content, " ") { + sent.WriteString(part) + if err := streaming.CallWithText(ctx, opts.StreamingFunc, part); err != nil { + return partialMockResponse(sent.String()), err } } - }() + if err := streaming.CallWithDone(ctx, opts.StreamingFunc); err != nil { + return partialMockResponse(sent.String()), err + } + } - return ch, nil + return response, m.GenerateError +} + +func partialMockResponse(content string) *llms.ContentResponse { + return &llms.ContentResponse{ + Choices: []*llms.ContentChoice{{Content: content}}, + } } // Verify MockLLM implements llms.Model diff --git a/testing/llmtest/llmtest_test.go b/testing/llmtest/llmtest_test.go index f21c1fbed..270661968 100644 --- a/testing/llmtest/llmtest_test.go +++ b/testing/llmtest/llmtest_test.go @@ -1,10 +1,19 @@ package llmtest import ( + "context" + "errors" "os" + "runtime" + "sync" + "sync/atomic" "testing" "github.com/vxcontrol/langchaingo/llms" + "github.com/vxcontrol/langchaingo/llms/streaming" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) // TestMockLLM tests the mock implementation. @@ -23,7 +32,146 @@ func TestMockLLM(t *testing.T) { }, } - TestLLM(t, mock) + TestLLM(t, mock, WithoutToolCalls()) +} + +type verdictRecorder struct { + testing.TB + failed atomic.Bool +} + +func (r *verdictRecorder) Fail() { r.failed.Store(true) } +func (r *verdictRecorder) Error(...any) { r.Fail() } +func (r *verdictRecorder) Errorf(string, ...any) { r.Fail() } +func (r *verdictRecorder) FailNow() { r.Fail(); runtime.Goexit() } +func (r *verdictRecorder) Fatal(...any) { r.FailNow() } +func (r *verdictRecorder) Fatalf(string, ...any) { r.FailNow() } +func (r *verdictRecorder) SkipNow() { runtime.Goexit() } +func (r *verdictRecorder) Skip(...any) { r.SkipNow() } +func (r *verdictRecorder) Skipf(string, ...any) { r.SkipNow() } + +func failsToolCalls(t *testing.T, model llms.Model) bool { + t.Helper() + + recorder := &verdictRecorder{TB: t} + done := make(chan struct{}) + go func() { + defer close(done) + testToolCalls(recorder, model) + }() + <-done + return recorder.failed.Load() +} + +func TestTheSuiteFailsADoorThatTakesToolsAndCallsNone(t *testing.T) { + t.Parallel() + + prose := &MockLLM{GenerateResponse: &llms.ContentResponse{ + Choices: []*llms.ContentChoice{{Content: "it is sunny in San Francisco"}}, + }} + + assert.True(t, failsToolCalls(t, prose), + "a door that answers in prose when the question needs the offered tool breaks the tool contract") +} + +func TestTheSuitePassesADoorThatCallsTheTool(t *testing.T) { + t.Parallel() + + caller := &MockLLM{GenerateResponse: &llms.ContentResponse{ + Choices: []*llms.ContentChoice{{ToolCalls: []llms.ToolCall{{ + ID: "call_1", Type: "function", + FunctionCall: &llms.FunctionCall{Name: "get_weather", Arguments: `{"location":"San Francisco, US"}`}, + }}}}, + }} + + assert.False(t, failsToolCalls(t, caller)) +} + +func TestTheSuiteSparesADoorThatReportsTheToolsDropped(t *testing.T) { + dropping := &MockLLM{GenerateResponse: &llms.ContentResponse{ + Choices: []*llms.ContentChoice{{Content: "Hello"}}, + Warnings: []llms.Warning{{Kind: llms.WarningDrop, Option: "WithTools", Asked: "1 tools"}}, + }} + + TestLLM(t, dropping) +} + +func TestTheToolProbeHoldsADoorThatDoesNotReportTheToolsDropped(t *testing.T) { + t.Parallel() + + for name, warnings := range map[string][]llms.Warning{ + "no warning": nil, + "another option dropped": {{Kind: llms.WarningDrop, Option: "WithSeed", Asked: "7"}}, + "the tools clamped": {{Kind: llms.WarningClamp, Option: "WithTools", Asked: "2 tools", Sent: "1 tools"}}, + } { + t.Run(name, func(t *testing.T) { + t.Parallel() + + door := &MockLLM{GenerateResponse: &llms.ContentResponse{ + Choices: []*llms.ContentChoice{{Content: "Hello"}}, Warnings: warnings, + }} + assert.True(t, supportsTools(door)) + }) + } +} + +// recordingDoor passes every check the suite makes and records the budget +// each request carried. +type recordingDoor struct { + mu sync.Mutex + budgets []int +} + +func (d *recordingDoor) Call(ctx context.Context, prompt string, options ...llms.CallOption) (string, error) { + return llms.GenerateFromSinglePrompt(ctx, d, prompt, options...) +} + +func (d *recordingDoor) GenerateContent(ctx context.Context, messages []llms.MessageContent, options ...llms.CallOption) (*llms.ContentResponse, error) { + var o llms.CallOptions + for _, opt := range options { + opt(&o) + } + d.mu.Lock() + d.budgets = append(d.budgets, *o.MaxTokens) + d.mu.Unlock() + + if len(o.Tools) > 0 { + return &llms.ContentResponse{Choices: []*llms.ContentChoice{{ToolCalls: []llms.ToolCall{{ + ID: "call_1", Type: "function", + FunctionCall: &llms.FunctionCall{Name: "get_weather", Arguments: `{"location":"San Francisco, US"}`}, + }}}}}, nil + } + hello := &MockLLM{GenerateResponse: &llms.ContentResponse{Choices: []*llms.ContentChoice{{Content: "Hello"}}}} + return hello.GenerateContent(ctx, messages, options...) +} + +func TestTheSuiteCallsTheDoorTheWayItDeclares(t *testing.T) { + t.Parallel() + + for name, tc := range map[string]struct { + opts []Option + budgets []int + }{ + // The tool probe, Call, GenerateContent, Streaming, ToolCalls, both + // Caching calls and TokenCounting, each with the suite's own budget. + "nothing declared": {budgets: []int{1, 10, 10, 50, 100, 10, 10, 50}}, + // Every checked request carries the declaration; the tool probe keeps + // its own budget, so a declaration cannot talk it out of ToolCalls. + "options declared": { + opts: []Option{WithCallOptions(llms.WithMaxTokens(512))}, + budgets: []int{1, 512, 512, 512, 512, 512, 512, 512}, + }, + } { + t.Run(name, func(t *testing.T) { + door := &recordingDoor{} + t.Cleanup(func() { + door.mu.Lock() + defer door.mu.Unlock() + assert.ElementsMatch(t, tc.budgets, door.budgets) + }) + TestLLM(t, door, tc.opts...) + }) + } } // TestValidateLLM tests the validation function. @@ -75,3 +223,31 @@ func TestOpenAIIntegration(t *testing.T) { // Import is handled in the actual test files for each provider } + +func TestTheMockHandsBackWhatTheConsumerReceivedBeforeGivingUp(t *testing.T) { + t.Parallel() + + mock := &MockLLM{GenerateResponse: &llms.ContentResponse{ + Choices: []*llms.ContentChoice{{Content: "sixty rooms are free"}}, + }} + + gaveUp := errors.New("the consumer gave up") + delivered := 0 + resp, err := mock.GenerateContent(context.Background(), + []llms.MessageContent{llms.TextParts(llms.ChatMessageTypeHuman, "how many rooms are free?")}, + llms.WithStreamingFunc(func(_ context.Context, chunk streaming.Chunk) error { + if chunk.Type != streaming.ChunkTypeText { + return nil + } + delivered++ + if delivered == 2 { + return gaveUp + } + return nil + })) + + require.ErrorIs(t, err, gaveUp) + require.NotNil(t, resp, "a real door hands back the text it collected; the mock must too") + require.NotEmpty(t, resp.Choices) + assert.Equal(t, "sixty rooms ", resp.Choices[0].Content) +} diff --git a/tools/perplexity/perplexity.go b/tools/perplexity/perplexity.go index 9dab8f301..1bd1a970a 100644 --- a/tools/perplexity/perplexity.go +++ b/tools/perplexity/perplexity.go @@ -22,14 +22,10 @@ const ( ModelSonarDeepResearch Model = "sonar-deep-research" // ModelSonarReasoningPro is the reasoning pro model with 128k context window for chat completion. ModelSonarReasoningPro Model = "sonar-reasoning-pro" - // ModelSonarReasoning is the reasoning model with 128k context window for chat completion. - ModelSonarReasoning Model = "sonar-reasoning" // ModelSonarPro is the pro model with 200k context window for chat completion. ModelSonarPro Model = "sonar-pro" // ModelSonar is the standard model with 128k context window for chat completion. ModelSonar Model = "sonar" - // ModelR11776 is the r1-1776 model. - ModelR11776 Model = "r1-1776" ) // Option is a function that modifies the options for the Perplexity AI tool. diff --git a/vectorstores/chroma/chroma_test.go b/vectorstores/chroma/chroma_test.go index 3f1f53dbe..543b70991 100644 --- a/vectorstores/chroma/chroma_test.go +++ b/vectorstores/chroma/chroma_test.go @@ -70,6 +70,7 @@ func createOpenAILLMAndEmbedder(t *testing.T) (*openai.LLM, *embeddings.Embedder rr := httprr.OpenForTest(t, http.DefaultTransport) llm, err := openai.New( + openai.WithModel("gpt-4.1-nano"), openai.WithHTTPClient(rr.Client()), ) require.NoError(t, err) diff --git a/vectorstores/chroma/testdata/TestChromaAsRetriever.httprr b/vectorstores/chroma/testdata/TestChromaAsRetriever.httprr index d53fda528..793677d45 100644 --- a/vectorstores/chroma/testdata/TestChromaAsRetriever.httprr +++ b/vectorstores/chroma/testdata/TestChromaAsRetriever.httprr @@ -1,5 +1,5 @@ httprr trace v1 -340 101256 +340 101240 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:36:14 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 45 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -4670,7 +4670,7 @@ X-Request-Id: req_86bd2d41ff4a48699c883c02fa4f1b97 "total_tokens": 24 } } -265 34414 +265 34398 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -4689,7 +4689,7 @@ Date: Thu, 22 Jan 2026 20:36:15 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 117 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -6257,7 +6257,7 @@ X-Request-Id: req_74c0b9d10d8b49d184530f072c5259c4 "total_tokens": 6 } } -610 1638 +610 1622 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -6274,7 +6274,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 20:36:17 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 228 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/chroma/testdata/TestChromaAsRetrieverWithMetadataFilterEqualsClause.httprr b/vectorstores/chroma/testdata/TestChromaAsRetrieverWithMetadataFilterEqualsClause.httprr index b788ec19d..2994bf01d 100644 --- a/vectorstores/chroma/testdata/TestChromaAsRetrieverWithMetadataFilterEqualsClause.httprr +++ b/vectorstores/chroma/testdata/TestChromaAsRetrieverWithMetadataFilterEqualsClause.httprr @@ -1,5 +1,5 @@ httprr trace v1 -492 167982 +492 167966 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:36:26 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 44 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -7754,7 +7754,7 @@ X-Request-Id: req_b061fb035326487b8401ab34ada15dba "total_tokens": 55 } } -266 34416 +266 34400 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -7773,7 +7773,7 @@ Date: Thu, 22 Jan 2026 20:36:27 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 47 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -9341,7 +9341,7 @@ X-Request-Id: req_8e678f5d73c7454f8a015151cd7784fa "total_tokens": 6 } } -731 1642 +731 1626 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -9358,7 +9358,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 20:36:29 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 187 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/chroma/testdata/TestChromaAsRetrieverWithMetadataFilterInClause.httprr b/vectorstores/chroma/testdata/TestChromaAsRetrieverWithMetadataFilterInClause.httprr index a06075667..9becd5eb6 100644 --- a/vectorstores/chroma/testdata/TestChromaAsRetrieverWithMetadataFilterInClause.httprr +++ b/vectorstores/chroma/testdata/TestChromaAsRetrieverWithMetadataFilterInClause.httprr @@ -1,5 +1,5 @@ httprr trace v1 -492 168027 +492 168011 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:36:32 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 51 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -7754,7 +7754,7 @@ X-Request-Id: req_48f0bca415484004bc4c15581ab8ddd1 "total_tokens": 55 } } -307 34421 +307 34405 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -7773,7 +7773,7 @@ Date: Thu, 22 Jan 2026 20:36:33 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 39 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -9341,7 +9341,7 @@ X-Request-Id: req_3a3aad81a9cb428d928895ede86b217f "total_tokens": 17 } } -1019 1671 +1019 1655 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -9358,7 +9358,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 20:36:35 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 290 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/chroma/testdata/TestChromaAsRetrieverWithMetadataFilterNotSelected.httprr b/vectorstores/chroma/testdata/TestChromaAsRetrieverWithMetadataFilterNotSelected.httprr index c348a6987..e1e8466b5 100644 --- a/vectorstores/chroma/testdata/TestChromaAsRetrieverWithMetadataFilterNotSelected.httprr +++ b/vectorstores/chroma/testdata/TestChromaAsRetrieverWithMetadataFilterNotSelected.httprr @@ -1,5 +1,5 @@ httprr trace v1 -492 167981 +492 167965 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:36:38 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 42 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -7754,7 +7754,7 @@ X-Request-Id: req_934ccbaa19ef44f19104f753ebc72f22 "total_tokens": 55 } } -296 34396 +296 34380 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -7773,7 +7773,7 @@ Date: Thu, 22 Jan 2026 20:36:39 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 130 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -9341,7 +9341,7 @@ X-Request-Id: req_8355a3c678ab4cca886d8b2ffb921018 "total_tokens": 12 } } -1754 1693 +1754 1677 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -9358,7 +9358,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 20:36:41 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 310 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/chroma/testdata/TestChromaAsRetrieverWithMetadataFilters.httprr b/vectorstores/chroma/testdata/TestChromaAsRetrieverWithMetadataFilters.httprr index cb7446e9c..4bd30a5aa 100644 --- a/vectorstores/chroma/testdata/TestChromaAsRetrieverWithMetadataFilters.httprr +++ b/vectorstores/chroma/testdata/TestChromaAsRetrieverWithMetadataFilters.httprr @@ -1,5 +1,5 @@ httprr trace v1 -393 101158 +393 101142 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:36:44 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 68 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -4670,7 +4670,7 @@ X-Request-Id: req_1ea4e2e7a20448b29186e06947e09baa "total_tokens": 33 } } -281 34457 +281 34441 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -4689,7 +4689,7 @@ Date: Thu, 22 Jan 2026 20:36:45 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 48 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -6257,7 +6257,7 @@ X-Request-Id: req_fd2cf9883db148a2b3a06f88211f41b6 "total_tokens": 9 } } -809 1643 +809 1627 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -6274,7 +6274,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 20:36:47 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 373 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/chroma/testdata/TestChromaAsRetrieverWithScoreThreshold.httprr b/vectorstores/chroma/testdata/TestChromaAsRetrieverWithScoreThreshold.httprr index 514382f72..1bda730a6 100644 --- a/vectorstores/chroma/testdata/TestChromaAsRetrieverWithScoreThreshold.httprr +++ b/vectorstores/chroma/testdata/TestChromaAsRetrieverWithScoreThreshold.httprr @@ -1,5 +1,5 @@ httprr trace v1 -441 168061 +441 168045 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:36:20 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 80 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -7754,7 +7754,7 @@ X-Request-Id: req_f25a637dee8f4fe4882d335cf1e45c1b "total_tokens": 46 } } -299 34430 +299 34414 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -7773,7 +7773,7 @@ Date: Thu, 22 Jan 2026 20:36:21 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 32 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -9341,7 +9341,7 @@ X-Request-Id: req_2f88ad3afc434baa93a481d930f8d2b2 "total_tokens": 12 } } -1051 1683 +1051 1667 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -9358,7 +9358,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 20:36:23 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 240 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/chroma/testdata/TestChromaGoStoreRest.httprr b/vectorstores/chroma/testdata/TestChromaGoStoreRest.httprr index 147b6ae34..d9bb7b4c8 100644 --- a/vectorstores/chroma/testdata/TestChromaGoStoreRest.httprr +++ b/vectorstores/chroma/testdata/TestChromaGoStoreRest.httprr @@ -1,5 +1,5 @@ httprr trace v1 -256 67769 +256 67753 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:35:59 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 137 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -3128,7 +3128,7 @@ X-Request-Id: req_6965ce3074114615b541463cdc1bfdbc "total_tokens": 4 } } -247 34424 +247 34408 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -3147,7 +3147,7 @@ Date: Thu, 22 Jan 2026 20:36:00 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 72 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/chroma/testdata/TestChromaStoreRestWithScoreThreshold.httprr b/vectorstores/chroma/testdata/TestChromaStoreRestWithScoreThreshold.httprr index 0f3b9b9fe..ecc73ef91 100644 --- a/vectorstores/chroma/testdata/TestChromaStoreRestWithScoreThreshold.httprr +++ b/vectorstores/chroma/testdata/TestChromaStoreRestWithScoreThreshold.httprr @@ -1,5 +1,5 @@ httprr trace v1 -334 334548 +334 334532 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:36:04 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 73 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -15464,7 +15464,7 @@ X-Request-Id: req_ba4a327f729a441e909f1cca516e660b "total_tokens": 24 } } -276 34082 +276 34066 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -15483,7 +15483,7 @@ Date: Thu, 22 Jan 2026 20:36:05 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 101 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -17051,7 +17051,7 @@ X-Request-Id: req_a0c1a2fccb74447fa7c4a26b121e476f "total_tokens": 7 } } -276 34081 +276 34065 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -17070,7 +17070,7 @@ Date: Thu, 22 Jan 2026 20:36:07 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 37 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/chroma/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr b/vectorstores/chroma/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr index 0a7ab3c51..4c2f152c4 100644 --- a/vectorstores/chroma/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr +++ b/vectorstores/chroma/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr @@ -1,5 +1,5 @@ httprr trace v1 -334 334549 +334 334533 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:36:11 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 235 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/dolt/dolt_test.go b/vectorstores/dolt/dolt_test.go index dcd1b32c6..725da1c9c 100644 --- a/vectorstores/dolt/dolt_test.go +++ b/vectorstores/dolt/dolt_test.go @@ -6,8 +6,8 @@ import ( "database/sql" "errors" "fmt" - "io" "net" + "net/http" "os" "os/exec" "path/filepath" @@ -20,13 +20,14 @@ import ( "github.com/vxcontrol/langchaingo/chains" "github.com/vxcontrol/langchaingo/embeddings" + "github.com/vxcontrol/langchaingo/internal/httprr" "github.com/vxcontrol/langchaingo/llms/googleai" "github.com/vxcontrol/langchaingo/llms/openai" "github.com/vxcontrol/langchaingo/schema" "github.com/vxcontrol/langchaingo/vectorstores" "github.com/vxcontrol/langchaingo/vectorstores/dolt" - _ "github.com/go-sql-driver/mysql" + "github.com/go-sql-driver/mysql" "github.com/google/uuid" "github.com/stretchr/testify/require" ) @@ -39,29 +40,25 @@ var ( ) type testDoltServer struct { - t *testing.T - Cmd *exec.Cmd - db *sql.DB - Stdout io.ReadCloser - Stderr io.ReadCloser - Name string - StderrString string - StderrCaptured chan (bool) - WaitError error - Waited chan (bool) - CmdDir string - Host string - Port string - Password string + t *testing.T + Cmd *exec.Cmd + db *sql.DB + Name string + OutputString string + WaitError error + Waited chan (bool) + CmdDir string + Host string + Port string + Password string } func newTestDoltServer(t *testing.T) *testDoltServer { t.Helper() return &testDoltServer{ - t: t, - Waited: make(chan bool), - StderrCaptured: make(chan bool), - Name: "vectorstore_dolt_test", + t: t, + Waited: make(chan bool), + Name: "vectorstore_dolt_test", } } @@ -75,36 +72,65 @@ func mustGetDoltExec(t *testing.T) string { doltExecOnce.Do(func() { arg := os.Getenv("DOLT_BIN") - if arg != "" { - if filepath.IsAbs(arg) { - doltExec = arg - return - } - wd, _ := os.Getwd() - doltExec = filepath.Join(wd, arg) - return + if arg == "" { + arg = doltCommand + } + // LookPath checks that DOLT_BIN names an executable, so a wrong one + // skips the tests too. A name without a separator is searched in PATH, + // a relative path is taken from the package directory and made + // absolute, since the dolt commands run in a temporary directory. + de, err := exec.LookPath(arg) + if err == nil { + de, err = filepath.Abs(de) } - de, err := exec.LookPath(doltCommand) if err != nil { - t.Skip("Dolt binary not available") + return } doltExec = de }) + // Skip outside the Once: a skip inside it ends only the first caller, and + // every later test would run an empty command ("exec: no command"). + if doltExec == "" { + t.Skip("Dolt binary not available") + } return doltExec } +// skipIfNoDolt skips a test that starts a server of its own when the dolt +// binary is missing. Tests call it before httprr.OpenForTest, which empties +// the cassette in record mode, so a skipped recording keeps the cassette. +func skipIfNoDolt(t *testing.T) { + t.Helper() + if os.Getenv("DOLT_CONNECTION_STRING") == "" { + mustGetDoltExec(t) + } +} + +// parallelIfOwnServer runs the test in parallel only when it replays and starts +// a server of its own. Tests on the DOLT_CONNECTION_STRING server share its +// tables, and their schema changes fail when they run at once. +func parallelIfOwnServer(t *testing.T, rr *httprr.RecordReplay) { + t.Helper() + if !rr.Recording() && os.Getenv("DOLT_CONNECTION_STRING") == "" { + t.Parallel() + } +} + func (di *testDoltServer) ConnectionString() string { return fmt.Sprintf("%s:%s@(%s:%s)/%s?parseTime=true&multiStatements=true", "root", di.Password, di.Host, di.Port, di.Name) } //nolint:funlen func (di *testDoltServer) Start() error { + // Look the binary up first: a skip after MkdirTemp leaves the directory behind. + doltBin := mustGetDoltExec(di.t) + tmpDir, err := os.MkdirTemp("", "dolt-vectorstore-tests*") require.NoError(di.t, err) di.CmdDir = tmpDir - doltInit := exec.Command(mustGetDoltExec(di.t), "init") //nolint:gosec + doltInit := exec.Command(doltBin, "init") //nolint:gosec doltInit.Env = os.Environ() doltInit.Dir = tmpDir doltInit.Stdout = os.Stdout @@ -112,7 +138,7 @@ func (di *testDoltServer) Start() error { err = doltInit.Run() require.NoError(di.t, err) - createDB := exec.Command(mustGetDoltExec(di.t), "sql", "-q", fmt.Sprintf("CREATE DATABASE %s;", di.Name)) //nolint:gosec + createDB := exec.Command(doltBin, "sql", "-q", fmt.Sprintf("CREATE DATABASE %s;", di.Name)) //nolint:gosec createDB.Env = os.Environ() createDB.Dir = tmpDir createDB.Stdout = os.Stdout @@ -128,7 +154,7 @@ func (di *testDoltServer) Start() error { di.Password = "" di.Cmd = exec.Command( //nolint:gosec - mustGetDoltExec(di.t), + doltBin, "sql-server", "--host", di.Host, "--port", di.Port, @@ -137,60 +163,50 @@ func (di *testDoltServer) Start() error { di.Cmd.Env = di.Cmd.Environ() di.Cmd.Dir = di.CmdDir - di.Stdout, err = di.Cmd.StdoutPipe() - require.NoError(di.t, err) - di.Stderr, err = di.Cmd.StderrPipe() - require.NoError(di.t, err) + // exec copies the output into the buffer itself and Wait returns only after + // that copy is done, so the buffer is complete once Waited is closed. A + // pipe read by a goroutine of our own races with Wait closing the pipe. + // Dolt reports a port in use on stdout and logs to stderr. + var output bytes.Buffer + di.Cmd.Stdout = &output + di.Cmd.Stderr = &output err = di.Cmd.Start() require.NoError(di.t, err) go func() { di.WaitError = di.Cmd.Wait() + di.OutputString = output.String() close(di.Waited) }() - go func() { - var buffer bytes.Buffer - _, err := buffer.ReadFrom(di.Stderr) - if err != nil { - panic(err) - } - di.StderrString = buffer.String() - close(di.StderrCaptured) - }() - - dbChan := make(chan *sql.DB) - go func() { - for i := 0; i < 50; i++ { - db, err := sql.Open("mysql", di.ConnectionString()) + for i := 0; i < 50; i++ { + db, err := sql.Open("mysql", di.ConnectionString()) + if err == nil { + err = db.Ping() if err == nil { - err = db.Ping() - if err == nil { - dbChan <- db - return - } - } - select { - case <-di.Waited: - close(dbChan) - return - default: - time.Sleep(100 * time.Millisecond) + di.db = db + return nil } + db.Close() } - err = di.Shutdown() - if err != nil { - panic(err) + select { + case <-di.Waited: + os.RemoveAll(di.CmdDir) + return errors.Join(fmt.Errorf("dolt sql-server exited: %s", di.ErrorMessage()), di.WaitError) + case <-time.After(100 * time.Millisecond): } - close(dbChan) - }() - di.db = <-dbChan - - return nil + } + shutdownErr := di.Shutdown() + return errors.Join(fmt.Errorf("dolt sql-server is not accepting connections: %s", di.ErrorMessage()), shutdownErr) } func (di *testDoltServer) IsRunning() bool { - return di.Cmd.Process != nil && di.Cmd.ProcessState == nil && di.db != nil && di.db.Ping() == nil + select { + case <-di.Waited: + return false + default: + } + return di.db != nil && di.db.Ping() == nil } func (di *testDoltServer) Shutdown() error { @@ -213,7 +229,6 @@ func (di *testDoltServer) Shutdown() error { } } <-di.Waited - <-di.StderrCaptured if killed && di.WaitError != nil { return nil } @@ -221,7 +236,7 @@ func (di *testDoltServer) Shutdown() error { } func (di *testDoltServer) ErrorMessage() string { - return di.StderrString + return di.OutputString } func (di *testDoltServer) DB() (*sql.DB, error) { @@ -248,17 +263,58 @@ func getFreePort() (string, error) { return fmt.Sprintf("%d", addr.Port), nil } -func preCheckEnvSetting(t *testing.T) string { +func createOpenAILLM(t *testing.T, rr *httprr.RecordReplay) *openai.LLM { + t.Helper() + + opts := []openai.Option{ + openai.WithModel("gpt-4.1-nano"), + openai.WithEmbeddingModel("text-embedding-ada-002"), + openai.WithHTTPClient(rr.Client()), + } + if !rr.Recording() { + opts = append(opts, openai.WithToken("test-api-key")) + } + + llm, err := openai.New(opts...) + require.NoError(t, err) + + return llm +} + +func createGoogleAIEmbedder(t *testing.T, rr *httprr.RecordReplay) *embeddings.EmbedderImpl { t.Helper() - if openaiKey := os.Getenv("OPENAI_API_KEY"); openaiKey == "" { - t.Skip("OPENAI_API_KEY not set") + apiKey := os.Getenv("GOOGLE_API_KEY") + if !rr.Recording() { + apiKey = "test-api-key" } + llm, err := googleai.New( + context.Background(), + googleai.WithDefaultEmbeddingModel("gemini-embedding-001"), + googleai.WithHTTPClient(rr.Client()), + googleai.WithAPIKey(apiKey), + ) + require.NoError(t, err) + e, err := embeddings.NewEmbedder(llm) + require.NoError(t, err) + + return e +} + +func preCheckEnvSetting(t *testing.T) string { + t.Helper() + doltURL := os.Getenv("DOLT_CONNECTION_STRING") if doltURL == "" { di := newTestDoltServer(t) err := di.Start() + // The free port can be taken before dolt binds it; start on a new one then. + for attempt := 1; attempt < 3 && err != nil && strings.Contains(err.Error(), "already in use"); attempt++ { + t.Logf("dolt sql-server port %s is taken, starting on a new one", di.Port) + di = newTestDoltServer(t) + err = di.Start() + } if err != nil && strings.Contains(err.Error(), "Cannot connect to the Docker daemon") { t.Skip("Docker not available") } @@ -291,14 +347,18 @@ func cleanupTestArtifacts(ctx context.Context, t *testing.T, s dolt.Store, doltU } func TestDoltStoreRest(t *testing.T) { - t.Parallel() + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") + skipIfNoDolt(t) + + rr := httprr.OpenForTest(t, http.DefaultTransport) + defer rr.Close() + + parallelIfOwnServer(t, rr) + doltURL := preCheckEnvSetting(t) ctx := context.Background() - llm, err := openai.New( - openai.WithEmbeddingModel("text-embedding-ada-002"), - ) - require.NoError(t, err) + llm := createOpenAILLM(t, rr) e, err := embeddings.NewEmbedder(llm) require.NoError(t, err) @@ -332,14 +392,18 @@ func TestDoltStoreRest(t *testing.T) { } func TestDoltStoreRestWithScoreThreshold(t *testing.T) { - t.Parallel() + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") + skipIfNoDolt(t) + + rr := httprr.OpenForTest(t, http.DefaultTransport) + defer rr.Close() + + parallelIfOwnServer(t, rr) + doltURL := preCheckEnvSetting(t) ctx := context.Background() - llm, err := openai.New( - openai.WithEmbeddingModel("text-embedding-ada-002"), - ) - require.NoError(t, err) + llm := createOpenAILLM(t, rr) e, err := embeddings.NewEmbedder(llm) require.NoError(t, err) @@ -392,14 +456,18 @@ func TestDoltStoreRestWithScoreThreshold(t *testing.T) { } func TestDoltStoreSimilarityScore(t *testing.T) { - t.Parallel() + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") + skipIfNoDolt(t) + + rr := httprr.OpenForTest(t, http.DefaultTransport) + defer rr.Close() + + parallelIfOwnServer(t, rr) + doltURL := preCheckEnvSetting(t) ctx := context.Background() - llm, err := openai.New( - openai.WithEmbeddingModel("text-embedding-ada-002"), - ) - require.NoError(t, err) + llm := createOpenAILLM(t, rr) e, err := embeddings.NewEmbedder(llm) require.NoError(t, err) @@ -438,14 +506,18 @@ func TestDoltStoreSimilarityScore(t *testing.T) { } func TestSimilaritySearchWithInvalidScoreThreshold(t *testing.T) { - t.Parallel() + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") + skipIfNoDolt(t) + + rr := httprr.OpenForTest(t, http.DefaultTransport) + defer rr.Close() + + parallelIfOwnServer(t, rr) + doltURL := preCheckEnvSetting(t) ctx := context.Background() - llm, err := openai.New( - openai.WithEmbeddingModel("text-embedding-ada-002"), - ) - require.NoError(t, err) + llm := createOpenAILLM(t, rr) e, err := embeddings.NewEmbedder(llm) require.NoError(t, err) @@ -494,57 +566,64 @@ func TestSimilaritySearchWithInvalidScoreThreshold(t *testing.T) { require.Error(t, err) } -// note, we can also use same llm to show this test, but need imply -// openai embedding [dimensions](https://platform.openai.com/docs/api-reference/embeddings/create#embeddings-create-dimensions) args. +// Mixing embedders of different sizes in one collection is expected to fail +// on insert. Dolt's vector index, which spans the whole embedding table, is a +// proximity map: a key also sits on an inner level when its hash starts with +// 8 zero bits (1 key in 256; the key holds the random row uuid), and every key +// is filed under the closest key of the level above, by a distance that +// vectors of different lengths do not have. While the index is a single +// non-empty leaf, every edit reaches the root level, so Dolt rebuilds the whole index on each +// flush (ApplyMutationsWithSerializer calls rebuildNode), but +// ProximityMapBuilder.Flush builds a single level without taking a distance, +// and rows of both sizes coexist. What the first inner key changes is that the +// rebuild then files every row under the closest inner key by distance, so the +// 3072-dim Beijing row is compared with a 1536-dim inner key (or the 1536-dim +// rows with Beijing's) and the insert fails; once the index has inner keys, a +// new row is also compared with them on its way down. With the 11 documents +// alone an inner key comes in about 4% of runs. Adding rows of the OpenAI size +// until the index grows an inner level makes it certain: 8192 rows all stay on +// the leaf level with probability (255/256)^8192, about 1e-14. Verified with +// Dolt 1.81.1. The search compares only vectors of the query's size, so it +// still works on the collection. func TestSimilaritySearchWithDifferentDimensions(t *testing.T) { - t.Parallel() - ctx := context.Background() - doltURL := preCheckEnvSetting(t) - genaiKey := os.Getenv("GOOGLE_API_KEY") - if genaiKey == "" { - t.Skip("GOOGLE_API_KEY not set") - } - databaseName := makeNewDatabaseName() + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY", "GOOGLE_API_KEY") + skipIfNoDolt(t) - // use Google embedding (now default model is gemini-embedding-001, with dimensions:3072) to add some data to collection - googleLLM, err := googleai.New(ctx, googleai.WithAPIKey(genaiKey)) - require.NoError(t, err) - e, err := embeddings.NewEmbedder(googleLLM) - require.NoError(t, err) + rr := httprr.OpenForTest(t, http.DefaultTransport) + defer rr.Close() - db, err := sql.Open("mysql", doltURL) - require.NoError(t, err) + // Avoid issue with different view of request bodies for Google AI SDK + rr.ScrubReq(httprr.JsonCompactScrubBody) - store, err := dolt.New( - ctx, - dolt.WithDB(db), - dolt.WithEmbedder(e), - dolt.WithPreDeleteDatabase(true), - dolt.WithDatabaseName(databaseName), - ) - require.NoError(t, err) + parallelIfOwnServer(t, rr) - defer cleanupTestArtifacts(ctx, t, store, doltURL) + doltURL := preCheckEnvSetting(t) + ctx := context.Background() - _, err = store.AddDocuments(ctx, []schema.Document{ - {PageContent: "Beijing"}, - }) + // text-embedding-ada-002 embeds into 1536 dimensions. + e, err := embeddings.NewEmbedder(createOpenAILLM(t, rr)) require.NoError(t, err) - // use openai embedding (now default model is text-embedding-ada-002, with dimensions:1536) to add some data to same collection (same table) - llm, err := openai.New( - openai.WithEmbeddingModel("text-embedding-ada-002"), - ) + // Zero vectors of the OpenAI size, so the filler rows need no provider. + filler, err := embeddings.NewEmbedder(embeddings.EmbedderClientFunc( + func(_ context.Context, texts []string) ([][]float32, error) { + vectors := make([][]float32, len(texts)) + for i := range vectors { + vectors[i] = make([]float32, 1536) + } + return vectors, nil + })) require.NoError(t, err) - e, err = embeddings.NewEmbedder(llm) + + db, err := sql.Open("mysql", doltURL) require.NoError(t, err) - store, err = dolt.New( + store, err := dolt.New( ctx, dolt.WithDB(db), dolt.WithEmbedder(e), - dolt.WithPreDeleteDatabase(false), - dolt.WithDatabaseName(databaseName), + dolt.WithPreDeleteDatabase(true), + dolt.WithDatabaseName(makeNewDatabaseName()), ) require.NoError(t, err) @@ -564,6 +643,27 @@ func TestSimilaritySearchWithDifferentDimensions(t *testing.T) { }) require.NoError(t, err) + // gemini-embedding-001 embeds into 3072 dimensions. + _, err = store.AddDocuments(ctx, []schema.Document{ + {PageContent: "Beijing"}, + }, vectorstores.WithEmbedder(createGoogleAIEmbedder(t, rr))) + + fillerDocs := make([]schema.Document, 64) + for i := range fillerDocs { + fillerDocs[i] = schema.Document{PageContent: fmt.Sprintf("filler %d", i)} + } + for added := 0; err == nil && added < 8192; added += len(fillerDocs) { + _, err = store.AddDocuments(ctx, fillerDocs, vectorstores.WithEmbedder(filler)) + } + + // Which insert fails depends on the index, and so does the order of the + // sizes in the message. + var mysqlErr *mysql.MySQLError + require.ErrorAs(t, err, &mysqlErr) + require.Regexp(t, + `^attempting to find distance between vectors of different lengths: (1536 vs 3072|3072 vs 1536)$`, + mysqlErr.Message) + docs, err := store.SimilaritySearch( ctx, "Which of these are cities in Japan", @@ -574,14 +674,18 @@ func TestSimilaritySearchWithDifferentDimensions(t *testing.T) { } func TestDoltAsRetriever(t *testing.T) { - t.Parallel() + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") + skipIfNoDolt(t) + + rr := httprr.OpenForTest(t, http.DefaultTransport) + defer rr.Close() + + parallelIfOwnServer(t, rr) + doltURL := preCheckEnvSetting(t) ctx := context.Background() - llm, err := openai.New( - openai.WithEmbeddingModel("text-embedding-ada-002"), - ) - require.NoError(t, err) + llm := createOpenAILLM(t, rr) e, err := embeddings.NewEmbedder(llm) require.NoError(t, err) @@ -622,14 +726,18 @@ func TestDoltAsRetriever(t *testing.T) { } func TestDoltAsRetrieverWithScoreThreshold(t *testing.T) { - t.Parallel() + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") + skipIfNoDolt(t) + + rr := httprr.OpenForTest(t, http.DefaultTransport) + defer rr.Close() + + parallelIfOwnServer(t, rr) + doltURL := preCheckEnvSetting(t) ctx := context.Background() - llm, err := openai.New( - openai.WithEmbeddingModel("text-embedding-ada-002"), - ) - require.NoError(t, err) + llm := createOpenAILLM(t, rr) e, err := embeddings.NewEmbedder(llm) require.NoError(t, err) @@ -665,7 +773,7 @@ func TestDoltAsRetrieverWithScoreThreshold(t *testing.T) { llm, vectorstores.ToRetriever(store, 5, vectorstores.WithScoreThreshold(0.7)), ), - "What colors is each piece of furniture next to the desk?", + "What colors are all of the pieces of furniture next to the desk and the desk itself?", ) require.NoError(t, err) @@ -675,14 +783,18 @@ func TestDoltAsRetrieverWithScoreThreshold(t *testing.T) { } func TestDoltAsRetrieverWithMetadataFilterNotSelected(t *testing.T) { - t.Parallel() + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") + skipIfNoDolt(t) + + rr := httprr.OpenForTest(t, http.DefaultTransport) + defer rr.Close() + + parallelIfOwnServer(t, rr) + doltURL := preCheckEnvSetting(t) ctx := context.Background() - llm, err := openai.New( - openai.WithEmbeddingModel("text-embedding-ada-002"), - ) - require.NoError(t, err) + llm := createOpenAILLM(t, rr) e, err := embeddings.NewEmbedder(llm) require.NoError(t, err) @@ -756,14 +868,18 @@ func TestDoltAsRetrieverWithMetadataFilterNotSelected(t *testing.T) { } func TestDoltAsRetrieverWithMetadataFilters(t *testing.T) { - t.Parallel() + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") + skipIfNoDolt(t) + + rr := httprr.OpenForTest(t, http.DefaultTransport) + defer rr.Close() + + parallelIfOwnServer(t, rr) + doltURL := preCheckEnvSetting(t) ctx := context.Background() - llm, err := openai.New( - openai.WithEmbeddingModel("text-embedding-ada-002"), - ) - require.NoError(t, err) + llm := createOpenAILLM(t, rr) e, err := embeddings.NewEmbedder(llm) require.NoError(t, err) @@ -827,14 +943,18 @@ func TestDoltAsRetrieverWithMetadataFilters(t *testing.T) { } func TestDeduplicater(t *testing.T) { - t.Parallel() + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") + skipIfNoDolt(t) + + rr := httprr.OpenForTest(t, http.DefaultTransport) + defer rr.Close() + + parallelIfOwnServer(t, rr) + doltURL := preCheckEnvSetting(t) ctx := context.Background() - llm, err := openai.New( - openai.WithEmbeddingModel("text-embedding-ada-002"), - ) - require.NoError(t, err) + llm := createOpenAILLM(t, rr) e, err := embeddings.NewEmbedder(llm) require.NoError(t, err) @@ -874,14 +994,18 @@ func TestDeduplicater(t *testing.T) { } func TestWithAllOptions(t *testing.T) { - t.Parallel() + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") + skipIfNoDolt(t) + + rr := httprr.OpenForTest(t, http.DefaultTransport) + defer rr.Close() + + parallelIfOwnServer(t, rr) + doltURL := preCheckEnvSetting(t) ctx := context.Background() - llm, err := openai.New( - openai.WithEmbeddingModel("text-embedding-ada-002"), - ) - require.NoError(t, err) + llm := createOpenAILLM(t, rr) e, err := embeddings.NewEmbedder(llm) require.NoError(t, err) require.NoError(t, err) diff --git a/vectorstores/dolt/testdata/TestDeduplicater.httprr b/vectorstores/dolt/testdata/TestDeduplicater.httprr new file mode 100644 index 000000000..86175aedd --- /dev/null +++ b/vectorstores/dolt/testdata/TestDeduplicater.httprr @@ -0,0 +1,1590 @@ +httprr trace v1 +248 34503 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 53 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["potato"]}HTTP/2.0 200 OK +Content-Length: 33548 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:20:09 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 83 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-p6w2b +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999999 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_6180db60b6d14a928fe7ce252e9617fb + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + -0.0023426407, + -0.031335898, + 0.0022720497, + -0.026686734, + -0.028682984, + -0.00530911, + -0.026870599, + -0.019752385, + -0.0106050875, + -0.029996308, + 0.00056267704, + 0.0222083, + -0.0049840626, + 0.026581667, + -0.0053452267, + 0.035197068, + 0.029602312, + -0.01461729, + 0.047857508, + -0.021302108, + -0.0134090325, + -0.0044160504, + 0.014288959, + -0.009574128, + -0.032911886, + -0.012995336, + 0.00978426, + -0.026213937, + 0.004136969, + -0.007400578, + 0.021105109, + -0.027474727, + -0.020855578, + -0.017769266, + -0.035249602, + -0.023744889, + -0.0021932502, + -0.013776763, + 0.02797379, + 0.004202635, + 0.0021308674, + 0.002152209, + -0.008549736, + -0.001971627, + -0.018439062, + -0.00013943802, + -0.025045078, + -0.027789924, + -0.018373396, + 0.012719538, + 0.027474727, + 0.023298359, + -0.0069080815, + -0.0013042943, + 0.0061036707, + 0.010053491, + -0.00037819613, + 0.023652956, + -0.020632312, + -0.016955007, + -0.005542225, + 0.017716734, + -0.033647347, + 0.02127584, + -0.017743, + -0.0037298386, + 0.0028794617, + -0.005433876, + -0.004402917, + 0.009226098, + 0.006317086, + 0.034277745, + 0.017756134, + -0.00803754, + 0.01660041, + -0.010342423, + -0.015050687, + -0.0052565774, + 0.0033407665, + -0.0009373846, + 0.015431551, + -0.019030057, + 0.0026627635, + 0.008457803, + 0.016022546, + 0.005085845, + -0.024953146, + 0.010020658, + -0.014288959, + -0.01737527, + -0.0010490172, + 0.020120116, + 0.014013162, + 0.01900379, + -0.029339647, + 0.029365914, + 0.018727994, + 0.03333215, + -0.023311492, + -0.027264595, + -0.017349003, + 0.010086324, + -0.004924963, + -0.018741125, + -0.008090072, + 0.00020397555, + 0.010683887, + -0.0021686254, + 0.02078991, + -0.010316156, + -0.009002833, + 0.04554606, + 0.007853675, + -0.020225182, + 0.00070837385, + -0.0048658634, + 0.019108856, + -0.01900379, + -0.014879955, + -0.008884633, + 0.012995336, + -0.00022716392, + 0.018911859, + -0.038060114, + 0.017073205, + -0.0011089375, + -0.01372423, + 0.0060150214, + -0.005584908, + -0.0035689566, + 0.03459294, + 0.010513155, + -0.0036214895, + 0.0058804057, + -0.025439076, + -0.0046721483, + -0.035722397, + -0.02321956, + -0.017769266, + -0.020225182, + 0.012883703, + 0.021420306, + -0.028998183, + -0.018990658, + -0.006986881, + 0.03779745, + 0.030075109, + 0.010184824, + -0.010046924, + -0.0034474742, + 0.016574143, + 0.0023853239, + 0.028814318, + -0.020120116, + -0.00037388678, + -0.009212964, + -0.01073642, + 0.013934362, + 0.006796449, + 0.009035666, + -0.021341506, + -0.0041074194, + 0.008142605, + -0.018767392, + 0.0055586416, + 0.036562927, + 0.019332122, + -0.003058402, + 0.0013830938, + -0.013402466, + -0.0034080744, + 0.031073233, + -0.021105109, + 0.02090811, + 0.017861199, + -0.009245797, + -0.0013822729, + 0.0054732757, + 0.010506588, + 0.008930599, + -0.02585934, + 0.0026315718, + 0.025347143, + 0.04210515, + -0.0068752486, + 0.005689974, + 0.004136969, + 0.0015530051, + -0.01879366, + -0.009061932, + 0.022457832, + 0.010204524, + 0.01826833, + 0.005259861, + -0.68965244, + -0.025990672, + 0.018058198, + -0.015168887, + 0.030180173, + 0.036195196, + 0.010092891, + -0.0030239273, + -0.011596646, + -0.015195153, + 0.0041862186, + 0.016206412, + 0.001814028, + -0.0022720497, + 0.00007690125, + -0.025439076, + 0.024782414, + 0.0021998168, + -0.010762686, + 0.008641669, + -0.023810554, + 0.018977525, + -0.008956866, + 0.004094286, + 0.005253294, + 0.005447009, + 0.01110415, + 0.0052368776, + -0.005906672, + 0.017427802, + -0.016666075, + -0.012450307, + 0.012601339, + -0.03170363, + 0.049564827, + -0.01021109, + -0.012003777, + 0.030784303, + -0.00087746425, + 0.024138886, + -0.008733601, + -0.025439076, + 0.031440966, + -0.0063761855, + -0.019621054, + 0.0054371594, + 0.019634185, + 0.00038743042, + -0.005200761, + -0.032544155, + -0.0007428486, + 0.009902459, + -0.005978905, + -0.009160431, + 0.016390277, + 0.00076501095, + 0.0013280984, + -0.015405284, + -0.018412795, + 0.0074071446, + -0.025097612, + 0.009521595, + -0.019358387, + -0.035144538, + -0.0070656803, + -0.012332108, + -0.022313366, + 0.0037692385, + 0.01815013, + -0.010591954, + 0.01461729, + 0.018583527, + 0.014551624, + -0.023561023, + 0.009534729, + 0.021341506, + 0.003276742, + 0.009928726, + 0.002127584, + -0.002217875, + -0.010769253, + 0.013947495, + -0.004698415, + -0.005647291, + 0.046228986, + -0.011819911, + -0.025058212, + 0.0057293735, + 0.0082805045, + 0.00012035378, + 0.004087719, + 0.035985064, + -0.007249546, + -0.016350877, + -0.027343394, + -0.0061857537, + -0.042683013, + -0.017309604, + 0.005689974, + -0.00069277815, + -0.008057239, + -0.003624773, + 0.0071116467, + 0.014525358, + 0.0057392237, + 0.03422521, + -0.022523498, + 0.0128180375, + 0.024900613, + -0.037666116, + 0.0131266685, + -0.0015513634, + -0.006986881, + -0.026647333, + 0.015694216, + -0.029707378, + 0.008884633, + 0.009876193, + -0.0008076939, + -0.021341506, + 0.020697977, + 0.007945607, + 0.016902473, + -0.0039925035, + 0.0010375256, + -0.00066487, + -0.013750497, + -0.03356855, + -0.029576045, + -0.012936236, + -0.012844304, + -0.0046754316, + 0.011734545, + -0.010526287, + 0.009823659, + 0.009863059, + 0.014945622, + -0.002255633, + 0.006954048, + 0.0028860283, + -0.008582569, + -0.0005680124, + 0.0054273093, + 0.008030973, + 0.0019962518, + -0.030784303, + -0.012194209, + -0.004402917, + -0.0036641725, + 0.013205468, + 0.014748623, + -0.010112591, + -0.013803029, + 0.013829296, + 0.020409048, + -0.014604157, + -0.009613528, + -0.010257056, + -0.013711097, + -0.00807694, + 0.007190446, + 0.025688607, + 0.000911939, + 0.008411837, + -0.004274868, + -0.034330275, + -0.021643572, + 0.013047868, + -0.04375994, + -0.021091975, + 0.02057978, + -0.0046425983, + 0.01021109, + -0.0060544214, + -0.015694216, + 0.027711125, + -0.0036313394, + -0.005847573, + 0.015076954, + 0.0075056436, + -0.017926866, + -0.007807708, + -0.009928726, + 0.0013092194, + 0.0067077996, + 0.0017237371, + -0.011767378, + 0.025018813, + -0.004297851, + 0.014013162, + 0.00086186855, + -0.0019190939, + 0.0057720565, + 0.0046951314, + -0.0002177244, + -0.008208272, + -0.0060609877, + 0.011012217, + 0.002759621, + 0.023823688, + 0.027553527, + -0.015720483, + -0.0015439759, + -0.0079718735, + -0.0010859544, + -0.038401578, + -0.00080974604, + 0.0074071446, + 0.014446558, + 0.0019601353, + -0.0013691398, + -0.024257084, + -0.014788022, + -0.0069606146, + 0.01956852, + 0.04052916, + 0.0108020855, + -0.0051843445, + -0.006189037, + 0.012719538, + 0.017191404, + 0.0030025858, + -0.0013198901, + 0.0072167125, + -0.022667963, + 0.018530995, + 0.016350877, + 0.046544183, + 0.022195166, + -0.016022546, + -0.0040122033, + 0.0026775382, + 0.010506588, + 0.0088124005, + 0.003211076, + 0.0043438175, + 0.01684994, + -0.01244374, + 0.02537341, + 0.006287536, + -0.022287099, + 0.01465669, + 0.0062481365, + -0.011839611, + -0.0076632425, + 0.01067732, + 0.016429678, + 0.0017434369, + -0.013067569, + -0.0049807793, + -0.011458747, + 0.031519763, + -0.023600424, + -0.02570174, + -0.0070262807, + -0.031493496, + -0.003966237, + 0.0358012, + 0.035958797, + 0.022418432, + 0.029129514, + 0.000092496964, + -0.007380878, + 0.003509857, + -0.00067513034, + 0.00530911, + 0.0028794617, + -0.014288959, + 0.0012886986, + 0.021840569, + -0.017349003, + 0.0057096737, + 0.008221405, + -0.004619615, + -0.009580695, + -0.0028088705, + -0.0050168955, + 0.03309575, + -0.012614472, + -0.008661368, + -0.028446587, + -0.017834933, + 0.020146383, + 0.008608836, + -0.0036083562, + -0.000045068544, + -0.01945032, + 0.011990643, + -0.022733629, + 0.0031240683, + 0.0046327487, + 0.020277714, + 0.0051350947, + 0.007945607, + -0.010933418, + 0.010151991, + 0.0049052634, + -0.013310534, + 0.010848052, + 0.008576002, + 0.0044226167, + -0.013369633, + -0.013474699, + -0.010060058, + 0.034067612, + -0.0017352287, + 0.017230805, + -0.014709223, + 0.009823659, + -0.008694202, + 0.0015743466, + 0.0043733674, + 0.012548806, + -0.010197957, + -0.010394955, + 0.0056078914, + -0.012476573, + 0.017966265, + 0.036510393, + 0.00623172, + -0.015720483, + -0.003050194, + -0.01469609, + -0.0022966745, + 0.04938096, + 0.041107025, + 0.006796449, + 0.0012386282, + 0.016863074, + 0.006106954, + -0.030994434, + -0.0002626647, + 0.024401551, + 0.0027054464, + 0.010500021, + 0.0003295621, + 0.026056338, + -0.0005347689, + 0.007939041, + 0.010591954, + 0.00623172, + -0.0046327487, + -0.009580695, + -0.009639794, + 0.020435313, + 0.00081426057, + 0.019016923, + 0.011025351, + 0.0071444795, + 0.0026808216, + 0.03832278, + 0.02071111, + 0.030994434, + 0.014091961, + -0.02366609, + -0.0018780526, + 0.00038127424, + -0.017467203, + -0.00443575, + -0.025951272, + 0.022024434, + 0.010999084, + -0.00577534, + 0.012634172, + 0.02789499, + -0.004225618, + -0.0038710209, + -0.0063105193, + 0.016258944, + -0.01822893, + 0.0026069472, + 0.03191376, + 0.00013092194, + -0.010046924, + 0.0049840626, + 0.016088212, + -0.01388183, + 0.0004998837, + -0.006366336, + 0.00036690975, + -0.003020644, + 0.0057819067, + -0.0061200876, + 0.0027136547, + -0.010953118, + -0.022681097, + 0.00014025884, + -0.00042149477, + -0.010545988, + -0.0068358486, + -0.010920284, + -0.0119775105, + -0.020238316, + 0.018452195, + -0.011767378, + 0.0035656733, + -0.028577918, + -0.0076501095, + 0.030626703, + 0.019673586, + 0.0043733674, + 0.00484288, + 0.009534729, + 0.034277745, + 0.005138378, + -0.024349017, + -0.019594787, + -0.011622913, + -0.0046819984, + -0.001624417, + 0.023088226, + -0.008339604, + -0.0047148312, + 0.0011606496, + 0.034698006, + -0.012640739, + -0.0054502925, + -0.0050267456, + 0.009712027, + -0.0053222436, + 0.0088518, + 0.00033366625, + -0.0064517017, + -0.012765504, + 0.004885563, + -0.012923103, + -0.00050603994, + -0.010303022, + 0.0035394067, + 0.0051843445, + 0.010683887, + 0.018517861, + -0.011439048, + 0.0030813853, + 0.029208314, + -0.0068424153, + -0.007847108, + -0.004698415, + 0.005272994, + 0.01692874, + 0.007032847, + 0.006940915, + -0.025544142, + 0.001823878, + -0.011544113, + -0.021052575, + 0.014026294, + 0.01469609, + -0.0013830938, + 0.0010424505, + 0.023324626, + -0.03167736, + -0.02789499, + 0.002137434, + 0.017283337, + 0.009022532, + 0.002245783, + -0.0023442823, + -0.021814303, + -0.0010793877, + 0.015562884, + 0.018570393, + 0.006402452, + -0.021853702, + -0.01822893, + -0.018045064, + -0.00757131, + -0.014394025, + -0.020803044, + -0.03475054, + 0.00398922, + 0.012548806, + 0.01199721, + 0.01737527, + 0.0058869724, + 0.0057884734, + -0.012023477, + 0.0075581768, + 0.008208272, + -0.03369988, + -0.035144538, + 0.000012607393, + 0.019831184, + 0.013566632, + 0.026699867, + 0.0034080744, + 0.005857423, + 0.022155767, + -0.011583513, + -0.0043372507, + 0.026122004, + 0.0024493483, + -0.011242049, + 0.0058311564, + 0.036431592, + 0.035092004, + 0.0021505672, + -0.0021719087, + -0.024060085, + 0.0052631437, + -0.0040351865, + 0.0057523567, + -0.039005708, + -0.017243937, + 0.0048691467, + 0.000645991, + -0.012161375, + 0.015234552, + 0.009968125, + -0.022589164, + 0.010053491, + -0.016836807, + 0.012975636, + -0.0049479464, + 0.0125685055, + -0.0058541396, + 0.013750497, + -0.0055290917, + 0.022707364, + -0.013474699, + 0.0017697033, + 0.019305855, + -0.0056111747, + 0.002170267, + 0.0068555484, + 0.0054273093, + -0.033148285, + -0.0021669837, + -0.010644487, + 0.03065297, + -0.011800212, + -0.012660438, + 0.0040122033, + -0.045493525, + 0.00001976398, + -0.0041139857, + -0.015470951, + -0.02191937, + 0.00799814, + 0.015484083, + -0.020553512, + 0.026607934, + -0.023626689, + -0.013251434, + 0.009863059, + 0.00006607659, + 0.03438281, + 0.024454083, + 0.04218395, + -0.004402917, + -0.003660889, + -0.02975991, + 0.010414655, + 0.012233608, + 0.00044488834, + -0.0010145424, + 0.0014947263, + -0.004488283, + -0.028525386, + 0.014459692, + -0.0017976115, + 0.020330248, + -0.04129089, + 0.0132777, + -0.00492168, + 0.020566646, + -0.018754259, + -0.03348975, + -0.015773015, + 0.024073219, + -0.010165124, + 0.0077157756, + -0.026082605, + -0.023324626, + -0.029943775, + 0.029812442, + 0.0012591489, + 0.011714846, + 0.007518777, + -0.017939998, + -0.0004896234, + -0.0044587334, + -0.019791786, + 0.013231734, + -0.00057827274, + 0.021249574, + -0.011130417, + 0.023600424, + -0.010033791, + 0.004796914, + -0.012962502, + 0.0024690481, + -0.002418157, + 0.022667963, + -0.014131361, + -0.021157641, + -0.009140732, + 0.010447488, + 0.007814275, + -0.003143768, + -0.017270204, + -0.001106475, + 0.004819897, + -0.021788036, + 0.010710153, + -0.010086324, + -0.036431592, + -0.014144494, + -0.0013239942, + -0.017559135, + -0.019699853, + -0.006940915, + 0.0067570494, + -0.015300219, + -0.013606031, + 0.00023414096, + 0.008687635, + 0.023902487, + 0.010526287, + -0.002749771, + 0.009101332, + 0.014879955, + -0.030968167, + 0.033936277, + -0.009147298, + 0.004491566, + -0.010427789, + 0.0017073206, + -0.024624815, + -0.008746735, + 0.018977525, + -0.020067582, + -0.029365914, + 0.0017729867, + -0.0046327487, + 0.0034803073, + 0.020290848, + -0.011517847, + 0.054056395, + -0.007479377, + -0.0037068555, + -0.025833072, + -0.0033588249, + -0.0030452688, + -0.018517861, + 0.025885606, + 0.01240434, + 0.01628521, + -0.005200761, + -0.0011836328, + 0.010985951, + 0.00032730485, + -0.044810597, + -0.041264623, + -0.00039153456, + 0.036195196, + 0.00053846266, + 0.0071379133, + -0.000006310109, + -0.0039925035, + -0.015050687, + 0.00929833, + -0.01558915, + -0.0111369835, + -0.008004706, + 0.01290997, + -0.0024985978, + -0.007840541, + -0.007833974, + -0.02139404, + -0.012699838, + -0.0016465794, + -0.022470964, + -0.005640724, + -0.009180131, + 0.034855604, + 0.0036773058, + -0.015746748, + -0.0050989785, + 0.0016638167, + -0.033516016, + -0.013008469, + 0.004928246, + -0.008306771, + 0.008201705, + -0.019870585, + 0.0047509475, + 0.021459706, + -0.022759896, + 0.017060071, + -0.0039925035, + 0.0012484782, + 0.016009413, + -0.019292722, + 0.0033456916, + -0.009403396, + -0.028315254, + -0.02123644, + 0.019699853, + 0.0028679701, + -0.00032525277, + 0.011931544, + 0.005072712, + -0.025570408, + -0.020448446, + 0.017585402, + -0.0102964565, + 0.007866807, + 0.012627605, + -0.023193292, + 0.008983132, + -0.0026003805, + 0.0068424153, + -0.019634185, + 0.0044948496, + -0.0011507997, + 0.0037790884, + 0.014144494, + -0.034803074, + -0.012397774, + -0.0050365957, + -0.027553527, + 0.0059526386, + 0.001956852, + -0.0077289087, + 0.022300232, + -0.0100731915, + -0.030600438, + 0.0025987388, + -0.013645431, + -0.021853702, + -0.01285087, + 0.025504742, + 0.0070262807, + 0.0033653914, + -0.013566632, + 0.03309575, + -0.02102631, + 0.0049479464, + -0.012647305, + -0.03333215, + 0.0037922217, + 0.008050673, + 0.0063630524, + 0.0030288522, + 0.0071510463, + -0.0015644965, + 0.008818967, + -0.010710153, + -0.012391207, + 0.015300219, + -0.013290834, + -0.019266456, + 0.014827422, + -0.016955007, + -0.024677347, + -0.012581639, + 0.017204538, + 0.0029516944, + 0.010670753, + 0.19762892, + -0.009475629, + 0.020671712, + 0.045178328, + 0.005253294, + 0.022116367, + 0.031230832, + -0.0069737476, + -0.0019749103, + 0.012975636, + -0.011800212, + 0.014078828, + -0.016337745, + -0.0019732686, + -0.024940012, + -0.016232679, + -0.014105095, + -0.013829296, + -0.020028183, + -0.018439062, + 0.0017729867, + -0.019778652, + -0.007472811, + -0.009488762, + 0.032622956, + -0.009915592, + -0.0031618262, + 0.0053419434, + 0.03309575, + -0.010782386, + -0.008273938, + -0.0088124005, + 0.0037167054, + 0.0006455806, + -0.0111107165, + 0.0045572324, + 0.0038874375, + -0.010552554, + 0.024230817, + 0.02776366, + -0.009981259, + -0.0026627635, + 0.013225167, + -0.0011286373, + -0.0071970127, + 0.007499077, + 0.0064090188, + -0.023626689, + 0.01729647, + 0.021157641, + -0.0112223495, + 0.013973762, + 0.014958754, + 0.021249574, + -0.01729647, + 0.0091210315, + 0.009291763, + 0.014538491, + -0.012936236, + -0.001738512, + -0.0046425983, + 0.031887494, + -0.018320862, + 0.016981272, + 0.00010403984, + 0.014078828, + -0.025425943, + 0.0027711126, + -0.008674501, + -0.03876931, + 0.013290834, + -0.03362108, + 0.0001390276, + 0.012653871, + -0.017532868, + -0.03220269, + 0.01937152, + 0.018005665, + 0.0004867505, + 0.03690439, + -0.018570393, + -0.016626675, + 0.004619615, + 0.010782386, + -0.036247727, + -0.024585415, + 0.026489735, + -0.010408089, + -0.003585373, + 0.002313091, + 0.021971902, + -0.008825534, + 0.004957796, + -0.021735504, + 0.008267371, + 0.027185796, + 0.0010481963, + 0.03372615, + -0.0009480554, + -0.0073020784, + -0.015457817, + -0.03527587, + 0.021656705, + -0.0026036638, + -0.018977525, + 0.0033686748, + -0.0015382301, + 0.020553512, + 0.00583444, + -0.027422193, + 0.0015218136, + -0.019292722, + 0.0011926619, + -0.0006858011, + 0.01558915, + 0.006235003, + 0.008306771, + -0.027474727, + -0.0019076023, + -0.0025560558, + 0.023652956, + -0.017598534, + -0.017283337, + 0.011307715, + -0.036641724, + -0.010092891, + -0.020041317, + 0.023232693, + -0.013028169, + -0.037639853, + 0.020028183, + -0.022103235, + -0.0055225254, + 0.010624787, + 0.004534249, + 0.035827465, + -0.0013075777, + -0.011156683, + -0.016836807, + 0.0055126753, + 0.007032847, + -0.01636401, + 0.004179652, + 0.019174524, + 0.0041730856, + -0.0061332206, + -0.0034507574, + 0.007019714, + -0.006136504, + -0.022983162, + -0.011288015, + -0.023075094, + 0.0057687736, + -0.0030222856, + -0.0069737476, + -0.018005665, + -0.04938096, + -0.039688636, + 0.0019141689, + 0.010756119, + -0.026502868, + 0.0020126682, + 0.01993625, + -0.0028400621, + -0.017651068, + -0.0040056366, + -0.16978645, + 0.014236427, + 0.0061824704, + -0.013487833, + 0.009672628, + 0.016061947, + 0.011747679, + 0.009915592, + 0.0091210315, + 0.011990643, + 0.022379031, + 0.0077420417, + -0.021788036, + -0.029418446, + 0.010440921, + -0.01013229, + -0.01993625, + 0.023206426, + 0.020540379, + 0.013382766, + 0.03288562, + -0.015195153, + 0.020330248, + 0.0033309166, + 0.011760811, + 0.010631354, + 0.008510336, + 0.0027776791, + -0.010165124, + -0.012936236, + -0.01558915, + -0.004711548, + 0.015602283, + 0.017322736, + 0.0005343585, + 0.0016375502, + -0.00022552226, + -0.013428733, + -0.0015152469, + 0.015457817, + 0.023285225, + 0.048908167, + -0.0025560558, + -0.00716418, + -0.0114456145, + 0.020514112, + 0.020737378, + -0.01201691, + 0.017243937, + -0.009928726, + 0.033962544, + -0.005128528, + -0.009449363, + 0.0024542732, + 0.03178243, + 0.0012041535, + -0.007774875, + 0.005712957, + -0.0123715075, + 0.01834713, + -0.013934362, + -0.0034277742, + 0.011366814, + 0.005108828, + 0.0019749103, + -0.015733615, + -0.0077354754, + 0.0026036638, + -0.01989685, + -0.0050398787, + -0.011596646, + -0.03028524, + 0.016350877, + -0.01506382, + -0.00076501095, + 0.025609808, + -0.019765519, + 0.02335089, + -0.011268316, + 0.00041061878, + 0.0006706158, + 0.013251434, + -0.0039334036, + -0.006454985, + -0.0019683435, + -0.004317551, + -0.0048133307, + 0.0035689566, + -0.005942789, + -0.015667949, + 0.028131388, + -0.011826478, + -0.014551624, + -0.006967181, + 0.019384654, + 0.021052575, + -0.012752371, + 0.003660889, + -0.001600613, + -0.017861199, + -0.010316156, + -0.0021834003, + -0.020120116, + 0.010125724, + 0.051508546, + 0.016416544, + 0.023048827, + 0.011872444, + 0.034067612, + 0.02057978, + -0.00710508, + 0.002982886, + 0.03593253, + 0.04168489, + 0.011800212, + -0.0015997922, + 0.008779568, + -0.0035656733, + 0.014958754, + 0.007807708, + 0.025281478, + -0.0016375502, + 0.002812154, + 0.009199831, + -0.0007190446, + -0.003903854, + -0.10065311, + -0.03414641, + 0.016692342, + 0.019739252, + 0.00049906294, + 0.018465329, + 0.0016153879, + 0.008667935, + 0.006415585, + 0.021157641, + -0.012358374, + -0.045046996, + -0.0049052634, + -0.017637935, + 0.011071317, + 0.014065694, + -0.009147298, + 0.004288001, + -0.0099878255, + 0.013973762, + -0.0043996335, + -0.012049743, + -0.0056735575, + -0.014499092, + 0.007177313, + 0.011150116, + -0.013789897, + 0.02090811, + 0.008136039, + 0.00753191, + 0.0023344324, + -0.00795874, + 0.013487833, + -0.021617305, + 0.0021505672, + 0.007820841, + -0.031152032, + -0.0038743042, + 0.013540365, + -0.0051974775, + 0.0037462553, + 0.0010884168, + 0.003424491, + -0.027474727, + 0.017440936, + -0.029287113, + -0.024506615, + -0.0010284964, + 0.0103818225, + -0.0017450786, + -0.00669795, + -0.0018485028, + -0.02480868, + 0.010151991, + -0.011097583, + -0.021302108, + 0.017427802, + 0.012194209, + -0.011872444, + 0.0006677429, + -0.027290862, + -0.010197957, + -0.007879941, + 0.019988783, + -0.0045999154, + 0.002616797, + -0.020198915, + -0.043628607, + 0.0179006, + -0.022260834, + -0.014840555, + -0.01595688, + 0.0007682942, + 0.025911873, + -0.034356542, + -0.008989699, + -0.025189545, + -0.024821814, + 0.005942789, + -0.02082931, + -0.01432836, + -0.020172648, + 0.020894976, + -0.008838667, + 0.029260848, + 0.014013162, + 0.005870556, + 0.012010343, + 0.0077683083, + -0.018727994, + 0.0041993516, + 0.008858367, + 0.010467188, + -0.01432836, + 0.011905277, + 0.024992546, + -0.009823659, + 0.023626689, + 0.02797379, + -0.011005651, + -0.016508477, + -0.0049085463, + -0.045782458, + 0.023193292, + -0.002820362, + -0.0059592053, + 0.025110746, + -0.006921215, + 0.013947495, + -0.008530036, + -0.007630409, + 0.012141676, + -0.014013162, + -0.0013239942, + -0.0026479885, + -0.0102964565, + -0.024086352, + -0.031729896, + 0.02290436, + 0.001462714, + 0.026699867, + 0.008917467, + 0.0082805045, + 0.017716734, + 0.022457832, + 0.023403425, + -0.018517861, + 0.0017089621, + -0.005085845, + 0.018202664, + -0.014302093, + -0.032334026, + 0.025767406, + -0.018806793, + 0.00445545, + 0.02752726, + -0.009863059, + -0.005660424, + -0.0013469774, + 0.013776763, + 0.0022720497, + -0.0025675474, + -0.006862115, + -0.023075094, + 0.029602312, + -0.016981272, + -0.013947495, + -0.0030304939, + -0.019673586, + 0.001951927, + 0.01937152, + -0.006674967, + 0.02147284, + 0.017848067, + 0.00978426, + -0.0010432714, + -0.010756119, + -0.041028224, + 0.022195166, + 0.019844318, + 0.0062547033, + -0.02480868, + 0.018452195, + 0.010335856, + 0.01289027, + -0.014354626, + 0.000795792, + -0.010099458, + 0.0017056789, + -0.014827422, + 0.011557247, + -0.034960672, + -0.0002417336, + -0.002503523, + 0.011583513, + 0.0035295568, + 0.03333215, + 0.016114479, + 0.010401522, + -0.0060544214, + -0.012332108, + 0.02046158, + 0.004777214, + 0.0020241598, + -0.030941902, + 0.018373396, + 0.018557262, + 0.014236427, + -0.030810568, + 0.015694216, + -0.004793631, + 0.008654802, + -0.010723286, + 0.015681082, + 0.0017631368, + -0.0265948, + 0.0057359403, + 0.027133264, + -0.0049413797, + -0.016324611, + 0.004432467, + 0.014433425, + 0.024165152, + -0.011859311, + -0.025596675, + -0.0223265, + -0.0041107023, + 0.0041533853, + -0.027553527, + -0.028709251, + -0.0060150214, + 0.0066487, + 0.028840583, + 0.014814289, + 0.015208286, + 0.023955021, + -0.015260818, + 0.012857437, + -0.028157655, + -0.024178285, + -0.00094969705, + 0.013527232, + 0.04136969, + 0.011360249, + 0.031020701, + -0.015641682, + 0.009948425, + 0.002730071, + 0.0058442894, + -0.018176397, + 0.0088715, + -0.005049729, + -0.0047607976, + -0.010079757, + -0.013947495, + -0.02589874, + -0.017624801, + -0.002687388, + 0.024060085, + 0.029628579, + -0.036142662, + 0.04257795, + 0.00073012576, + -0.0071116467, + -0.009212964, + 0.033016954, + 0.022562897, + 0.02768486, + -0.0065896004, + -0.017874332, + -0.041317157, + -0.00935743, + 0.0028285705, + 0.012962502, + -0.020435313, + -0.0046852813, + 0.012712971, + -0.005617741, + -0.0020931093, + -0.013133235, + -0.0037561052, + 0.024388418, + 0.0015447967, + 0.014288959, + 0.0055684918, + -0.013527232, + -0.0011754245, + 0.019988783, + -0.030311506, + -0.018530995, + -0.024020687, + 0.0074202777, + -0.0035722398, + -0.046228986, + -0.022733629, + 0.0033686748, + -0.017401537, + -0.005128528, + 0.0031043685, + 0.011498147, + -0.00010896481, + -0.0060478547, + 0.010316156, + -0.016981272, + -0.02574114, + 0.009580695, + -0.0068424153, + 0.008969999, + -0.019082591, + -0.0052467273 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 2, + "total_tokens": 2 + } +} diff --git a/vectorstores/dolt/testdata/TestDoltAsRetriever.httprr b/vectorstores/dolt/testdata/TestDoltAsRetriever.httprr new file mode 100644 index 000000000..93a8c064b --- /dev/null +++ b/vectorstores/dolt/testdata/TestDoltAsRetriever.httprr @@ -0,0 +1,6332 @@ +httprr trace v1 +340 101308 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 144 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["The color of the house is blue.","The color of the car is red.","The color of the desk is orange."]}HTTP/2.0 200 OK +Content-Length: 100351 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:19:47 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 149 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-qpwjk +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999978 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_5a2edbff562045db88bcb7a9b06e27a0 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.0045962376, + 0.00861834, + -0.008126223, + -0.0057255807, + -0.016656235, + 0.023255637, + -0.0021608942, + 0.0004629361, + 0.03417052, + -0.009558408, + -0.021224082, + 0.019343946, + 0.008006349, + -0.017110497, + -0.008088369, + -0.009735065, + 0.019672023, + -0.024353435, + 0.018031636, + -0.0012744544, + -0.03485191, + 0.028063232, + -0.0003330064, + -0.0025457542, + -0.0055268416, + -0.005293402, + 0.01669409, + -0.013539501, + 0.017047405, + 0.007836002, + -0.0042019137, + -0.01500323, + -0.011741384, + -0.009659355, + -0.010170398, + -0.0058580735, + -0.0010071029, + 0.0023943337, + -0.007186156, + 0.000008675122, + 0.01755214, + -0.0024795078, + 0.0055457694, + -0.030965455, + -0.0057445085, + 0.005832837, + 0.0017397564, + 0.0144227855, + -0.022713048, + 0.008290263, + 0.0053501846, + 0.026296662, + -0.0006660128, + -0.03437241, + 0.0062997164, + -0.011110466, + 0.0062050787, + 0.015596293, + 0.0025773, + -0.004785513, + 0.010145161, + -0.02176667, + -0.011899114, + -0.012328138, + -0.029602673, + -0.010511094, + -0.017905453, + -0.010498475, + 0.005618325, + 0.022511154, + 0.019268235, + 0.024782458, + 0.0139180515, + -0.001563888, + 0.012782399, + 0.013451172, + -0.023444913, + -0.012290282, + 0.0012602587, + 0.010908572, + 0.006561547, + -0.004507909, + -0.033287235, + 0.007507924, + 0.029224122, + 0.017791888, + -0.015911752, + 0.014902283, + -0.039899256, + 0.0029921287, + 0.024429144, + 0.041716296, + 0.016845511, + -0.008959035, + -0.009053674, + -0.014183037, + 0.011993751, + 0.029880276, + 0.006914861, + -0.026220951, + -0.00060213235, + 0.011318669, + -0.048025478, + 0.00761518, + -0.03015788, + 0.0017019013, + -0.0023186237, + -0.004255542, + 0.027432315, + -0.029577436, + -0.025337666, + 0.027508024, + 0.024782458, + -0.031520665, + -0.00094085647, + -0.00008300515, + 0.0006277634, + -0.011854949, + -0.0102397995, + 0.01654267, + 0.009911722, + 0.021817144, + 0.014637298, + 0.017640468, + -0.004946397, + 0.005485832, + -0.021968564, + -0.044113785, + -0.005362803, + -0.0021640488, + 0.009413296, + 0.021526922, + 0.015836041, + 0.0018312394, + -0.025640508, + -0.0038643728, + -0.026094768, + 0.028416546, + -0.024656275, + -0.00353945, + 0.009779229, + 0.019558458, + -0.023369202, + -0.0035993871, + 0.019836063, + 0.02861844, + 0.003400648, + -0.0028706768, + -0.0105174035, + -0.030258827, + 0.017779268, + -0.031596374, + 0.0141451815, + 0.020580545, + 0.020984333, + 0.0360128, + -0.008977963, + 0.012662524, + -0.03333771, + 0.013526882, + -0.025716217, + -0.0013304483, + 0.036441825, + -0.006362808, + 0.034321938, + 0.018839212, + 0.017564757, + 0.0049053873, + -0.028366074, + 0.0011963783, + -0.012403848, + 0.035810906, + -0.039571177, + 0.021640487, + 0.007886475, + 0.01523036, + -0.0057034986, + 0.0015607334, + -0.01669409, + -0.0049716337, + -0.041665826, + -0.0055299965, + 0.0111987945, + 0.006681422, + -0.0016798192, + 0.012946437, + 0.016138883, + -0.008353354, + 0.017817125, + 0.0018959086, + 0.021514304, + 0.004731885, + -0.0024479618, + -0.00040891374, + -0.6856312, + -0.017981162, + 0.010132543, + -0.02200642, + 0.02161525, + 0.021526922, + 0.026725687, + 0.0070284265, + -0.01577295, + -0.017211443, + -0.005914856, + -0.0013501645, + -0.010088379, + -0.0015402286, + 0.0032902374, + -0.0035236771, + 0.007829692, + 0.01008207, + 0.0049905614, + 0.005022107, + -0.0075647067, + -0.009324968, + -0.015066322, + 0.001839126, + 0.01577295, + 0.009823393, + 0.014788718, + 0.0016861283, + -0.028896045, + 0.014902283, + -0.015735095, + 0.03470049, + -0.0020094737, + 0.008719287, + 0.03263108, + 0.0047129574, + -0.02114837, + 0.036896084, + 0.021791907, + 0.013829722, + -0.0024952807, + -0.0036151602, + 0.019343946, + -0.00020209092, + -0.010126234, + 0.006255552, + 0.009501625, + -0.010933809, + 0.010334437, + 0.0074069775, + 0.00669404, + -0.009451152, + -0.00892749, + 0.021034807, + 0.021299792, + 0.00046254176, + 0.036492296, + 0.020795057, + -0.010151471, + -0.0066435663, + -0.00815146, + 0.0025268267, + -0.012485867, + -0.021400739, + -0.015129413, + 0.002026824, + -0.027785629, + -0.01608841, + -0.0141451815, + -0.005340721, + -0.00081625016, + 0.017097877, + -0.02294018, + 0.023053743, + 0.0026277734, + -0.0019590005, + 0.03480144, + -0.008877017, + -0.010801316, + 0.013135713, + 0.015343926, + -0.018019019, + -0.012126244, + -0.018813975, + 0.009028437, + -0.015697239, + -0.01885183, + -0.019911772, + 0.004432199, + -0.027104238, + 0.020214614, + -0.0074069775, + -0.014864428, + -0.025135772, + -0.013299751, + 0.009817084, + -0.0067508225, + 0.02015152, + 0.016138883, + -0.021905473, + -0.017577376, + -0.008971654, + 0.0007425116, + 0.010397528, + 0.03210111, + 0.012302901, + -0.004485827, + 0.023508005, + 0.0039022279, + -0.026246188, + 0.02215784, + -0.0056877257, + -0.015066322, + 0.0061956146, + -0.004763431, + -0.02360895, + 0.014940138, + 0.0076404167, + 0.02977933, + -0.013690921, + 0.02016414, + 0.0032586914, + -0.00073304784, + -0.003369102, + 0.0151041765, + 0.0052965567, + -0.010700369, + -0.0050725807, + -0.0048202137, + 0.00042547533, + 0.0031608993, + 0.011671983, + 0.022069512, + 0.009552099, + 0.013186187, + 0.003378566, + 0.00619246, + -0.008612031, + 0.031192586, + -0.007192465, + -0.014637298, + 0.014536351, + -0.01138807, + 0.0065110736, + -0.00946377, + -0.031949688, + -0.037981264, + -0.018978013, + -0.025097918, + 0.01692122, + -0.005851764, + -0.00074448326, + 0.0019858144, + 0.015608911, + -0.01162151, + 0.011224031, + 0.0012571041, + -0.0008667236, + -0.008397519, + 0.013514264, + 0.023419676, + 0.015899133, + -0.0026987516, + 0.006580475, + -0.01530607, + -0.013842341, + -0.018372333, + 0.013413317, + -0.01261205, + -0.022031657, + 0.007810765, + -0.004078885, + -0.013211423, + -0.016214592, + -0.01838495, + 0.006977953, + -0.03333771, + -0.033135813, + -0.004583619, + -0.012996911, + 0.01806949, + 0.015470109, + -0.004763431, + -0.0027397615, + 0.016530052, + 0.0074889967, + 0.037829842, + 0.032429185, + 0.0043060156, + 0.0071483008, + -0.0014771367, + 0.0144480225, + 0.0012768203, + 0.022183077, + 0.011640437, + -0.009375442, + -0.00077997235, + 0.009154621, + -0.004138822, + 0.014889665, + 0.02476984, + 0.0024905489, + 0.013678302, + -0.020366034, + -0.0027413387, + -0.042902425, + 0.020138903, + 0.002561527, + -0.001892754, + 0.005946402, + -0.019356564, + -0.02208213, + -0.01660576, + -0.013375462, + 0.009665663, + -0.012018988, + -0.005662489, + 0.006422745, + 0.009552099, + -0.006971644, + 0.006031576, + 0.00011908577, + 0.029022228, + -0.00438488, + -0.014460641, + -0.012239809, + 0.0004830466, + 0.011160939, + -0.014864428, + -0.010132543, + -0.021198845, + 0.0073123397, + -0.008107296, + 0.009507935, + -0.0028690996, + 0.0105174035, + 0.018296622, + -0.020252468, + 0.0013951174, + -0.0013170413, + 0.019179907, + 0.026296662, + 0.0017381791, + -0.0076845814, + 0.021817144, + -0.0049116965, + 0.010858099, + -0.00034877934, + -0.020504834, + 0.014864428, + -0.007753982, + -0.0049337787, + -0.014889665, + -0.0005788673, + 0.013375462, + -0.01953322, + 0.02685187, + -0.0056025516, + 0.026145242, + 0.017741414, + 0.03321152, + 0.0060662767, + -0.0007535527, + -0.007817074, + 0.00984232, + -0.0016048977, + -0.020631019, + -0.008283953, + -0.005794982, + -0.025968585, + -0.006100977, + -0.009482698, + 0.029224122, + -0.0015694086, + 0.0007488208, + -0.007331267, + 0.0021593168, + -0.0016656235, + 0.012170408, + -0.009880176, + -0.0078486195, + -0.023381822, + 0.0052460833, + 0.012599433, + -0.000050769184, + -0.009438533, + -0.0303093, + 0.02100957, + -0.015507964, + 0.012971674, + 0.026372373, + 0.0016672008, + 0.0063501894, + -0.008567867, + -0.00488646, + -0.02839131, + 0.0025362903, + -0.0027902348, + 0.015722476, + -0.017060023, + 0.008826543, + -0.0193818, + -0.007974803, + -0.0010165666, + 0.008069442, + 0.022296643, + 0.00885178, + 0.0149275195, + -0.012403848, + -0.022801377, + -0.029501725, + -0.0076277987, + 0.008006349, + 0.009104147, + -0.015293452, + -0.0052681654, + -0.025489086, + -0.02476984, + 0.024429144, + 0.013287133, + -0.00066522416, + -0.0055489237, + -0.01276978, + -0.0008895944, + 0.085602954, + -0.018612081, + 0.0021041115, + -0.001769725, + 0.023331348, + -0.017425954, + -0.016201975, + 0.0061829966, + -0.008347045, + 0.026448082, + 0.011413307, + -0.002197172, + 0.0069211703, + 0.012492176, + 0.00043217881, + -0.0014211428, + 0.024164159, + -0.0116152, + 0.012340756, + -0.019507984, + -0.026725687, + 0.0029495417, + 0.014725626, + 0.007829692, + -0.0040410296, + 0.008990581, + 0.012795017, + 0.0006581263, + 0.021413356, + -0.009627809, + -0.004861223, + 0.013981143, + -0.002235027, + -0.019457512, + -0.00091246516, + -0.020138903, + -0.03439765, + -0.007400668, + 0.01238492, + -0.026220951, + 0.029426016, + 0.012151481, + 0.008984272, + -0.009571026, + 0.002984242, + 0.012006369, + -0.0014637298, + 0.0412368, + -0.013022147, + -0.010183017, + 0.030889746, + -0.017123114, + 0.0014353384, + 0.00438488, + 0.013148331, + 0.015810804, + 0.005933784, + 0.005523687, + 0.01755214, + -0.029804567, + -0.0149275195, + -0.025842402, + -0.015899133, + 0.002908532, + -0.002946387, + -0.03886455, + -0.015091559, + -0.00082413666, + -0.022220932, + -0.015318689, + 0.025993822, + -0.011299741, + -0.018359713, + 0.01515465, + 0.024403907, + 0.022952797, + 0.002925882, + -0.018965395, + -0.019634169, + 0.02016414, + -0.012996911, + -0.0021246164, + 0.015041085, + 0.008839161, + -0.0041230493, + -0.0027350294, + 0.023318728, + -0.027255658, + -0.00792433, + 0.022914942, + 0.004823368, + 0.0019558459, + 0.030359775, + 0.009451152, + -0.008984272, + 0.0043817256, + -0.001984237, + 0.009116765, + -0.01669409, + 0.0024448072, + 0.010933809, + -0.031066403, + -0.013577355, + -0.004548919, + -0.0061041317, + 0.0025063218, + 0.010302891, + -0.0005694035, + -0.04138822, + 0.005302866, + 0.016807655, + -0.017135734, + 0.000028194148, + -0.030208353, + 0.003277619, + 0.023861319, + -0.019331327, + 0.017577376, + 0.0023659426, + -0.03538188, + 0.027205184, + -0.036366113, + 0.025123155, + 0.010763461, + -0.007356504, + 0.004744503, + 0.008895944, + -0.0059211655, + -0.016164118, + 0.0039274646, + 0.0022097903, + 0.00082255935, + -0.022145221, + -0.012946437, + -0.01969726, + -0.013047384, + 0.019444892, + 0.0047728946, + 0.00004029496, + -0.011255577, + -0.0111987945, + 0.011911732, + 0.0030883437, + -0.0017634158, + -0.024731986, + -0.016416486, + 0.00276973, + -0.0144480225, + -0.013552119, + 0.022750903, + 0.016731946, + -0.0076593445, + -0.001903795, + 0.022107366, + 0.006839151, + -0.009873867, + -0.017981162, + -0.004100967, + 0.02161525, + 0.029602673, + 0.006681422, + -0.00030402362, + 0.02176667, + -0.009552099, + -0.016290303, + -0.011968515, + 0.0075836345, + -0.0053911945, + -0.021425975, + 0.01962155, + 0.01631554, + 0.027861338, + 0.015457491, + 0.022271406, + 0.0056372522, + 0.015962224, + 0.0049653244, + -0.0027239884, + -0.015205123, + -0.037527002, + -0.01808211, + 0.0024243025, + -0.019672023, + 0.00423346, + 0.021943329, + -0.0035552229, + 0.010883335, + 0.01953322, + 0.0077792187, + 0.001205842, + 0.02439129, + -0.013665684, + 0.042347215, + -0.0028596357, + -0.0072807935, + -0.0058044456, + -0.008914871, + -0.011495326, + 0.008952727, + 0.0023359738, + 0.018498516, + 0.020366034, + -0.021943329, + -0.008208243, + 0.0033943388, + 0.019583695, + -0.0014006379, + -0.0057413536, + 0.005302866, + -0.012037915, + -0.018675173, + -0.018801356, + -0.012719307, + -0.043381922, + 0.003608851, + 0.010788698, + -0.028643677, + 0.022435443, + -0.005239774, + -0.020580545, + -0.008895944, + -0.0040284116, + 0.011829712, + -0.0040599573, + 0.023735136, + 0.0051829913, + -0.02801276, + -0.0150284665, + 0.011047374, + -0.0146499155, + -0.01515465, + 0.010832862, + 0.0036624789, + -0.012700379, + -0.0034038026, + 0.0110978475, + 0.006801296, + 0.012479558, + -0.011690911, + -0.009173548, + 0.0035205225, + 0.017716177, + -0.017955925, + 0.0074637597, + -0.008580484, + 0.025728837, + -0.0068265325, + -0.021741435, + 0.0051672184, + -0.011123084, + -0.015255597, + -0.009564717, + -0.025817165, + 0.012252428, + 0.004848605, + -0.008119915, + 0.0035899235, + 0.0107950065, + -0.012933819, + -0.0073817405, + -0.009104147, + 0.047066484, + 0.0040820395, + 0.012334446, + 0.015533201, + 0.026347136, + 0.0041640587, + -0.011608891, + 0.010353364, + 0.026220951, + -0.0010496898, + 0.0015701972, + -0.0071735377, + 0.05130625, + 0.021590013, + -0.009741374, + -0.005186146, + -0.014952756, + -0.02215784, + -0.013766631, + 0.0145994425, + -0.00087382144, + -0.015419636, + -0.0034101119, + -0.027861338, + -0.010277654, + -0.027810866, + -0.01300953, + 0.010776079, + -0.0031198894, + -0.016353395, + -0.013678302, + -0.021993801, + 0.027987523, + 0.02099695, + 0.00009715151, + -0.005785518, + 0.010050524, + -0.025211483, + 0.018183056, + -0.023104217, + 0.022485917, + -0.013375462, + 0.008447992, + 0.011791857, + -0.018473279, + 0.010599422, + -0.00042271506, + -0.0283156, + -0.04555228, + 0.009804466, + -0.009198785, + 0.012391229, + -0.0063217985, + -0.018612081, + 0.010750842, + 0.009110456, + -0.015444873, + -0.021791907, + 0.010536331, + -0.0060284217, + -0.0019022177, + 0.021943329, + -0.0140947085, + -0.0032050635, + 0.019041106, + -0.016820274, + -0.00033596382, + -0.0263219, + -0.012795017, + 0.016037935, + 0.025640508, + 0.000056092555, + -0.021918092, + 0.000246058, + -0.015356544, + -0.017905453, + 0.0051262085, + -0.005555233, + 0.0014960644, + 0.03591185, + 0.025186246, + -0.003962165, + 0.0054448224, + -0.02677616, + -0.009501625, + -0.021451212, + -0.021261936, + -0.016227212, + -0.027659444, + 0.00777291, + 0.016832892, + -0.0067318953, + -0.019861298, + 0.00078825315, + 0.0122335, + -0.0035741504, + -0.018498516, + 0.011413307, + 0.015659384, + 0.016668854, + -0.0054826774, + -0.0046277833, + 0.02161525, + -0.0016009544, + 0.005952711, + -0.0057508177, + 0.003839136, + 0.0020394425, + -0.01261836, + 0.021123135, + 0.012056843, + 0.0065741655, + -0.019369183, + 0.009135692, + 0.008416446, + 0.0052366196, + 0.012403848, + -0.008485847, + 0.010990592, + -0.008365973, + 0.012933819, + 0.008372282, + 0.0073438855, + 0.007671963, + -0.008290263, + -0.01823353, + -0.0128518, + 0.0014605751, + -0.011356524, + -0.00039294362, + 0.020731965, + 0.00021451213, + -0.022675192, + -0.0139937615, + -0.01323666, + -0.025198866, + -0.016176738, + 0.0065741655, + 0.001552847, + -0.0047918223, + 0.011571036, + 0.0023817155, + 0.011854949, + -0.0071987743, + 0.002176667, + -0.0137161575, + 0.00022614466, + -0.027533261, + -0.01769094, + 0.002523672, + -0.02670045, + -0.022637337, + -0.024782458, + 0.00004091109, + -0.0012839182, + -0.004324943, + -0.028567966, + 0.027205184, + 0.010372292, + -0.0108707175, + 0.0072303205, + -0.043104317, + -0.015091559, + 0.009571026, + -0.005063117, + -0.008719287, + -0.016290303, + 0.010687751, + 0.0033943388, + -0.0044353534, + -0.0057665906, + 0.010151471, + 0.015836041, + 0.0056246337, + 0.04063112, + 0.22591911, + -0.0003475964, + -0.00011977584, + 0.039217863, + 0.016984312, + 0.021564778, + 0.0144732585, + 0.017034786, + 0.00296216, + 0.015205123, + -0.0037634259, + -0.0050315713, + -0.013438554, + 0.014372312, + 0.00046372472, + -0.035129514, + -0.030334538, + -0.00861834, + -0.0063186437, + 0.007501615, + -0.019608932, + -0.026044294, + -0.0071419915, + -0.008990581, + 0.0029590053, + 0.006555238, + -0.01815782, + 0.014283983, + 0.024214633, + -0.0010796584, + -0.0018848676, + -0.035482828, + 0.010731915, + -0.003416421, + -0.007015808, + -0.0043407157, + 0.005501605, + -0.020883385, + 0.025602652, + 0.02685187, + 0.00040043576, + -0.0035615321, + -0.024467, + 0.0043407157, + -0.013653065, + 0.017148351, + -0.0059211655, + -0.00569088, + 0.008119915, + 0.008397519, + -0.024000121, + -0.021400739, + 0.009375442, + 0.047344085, + -0.0052271555, + 0.010927499, + 0.015760332, + -0.0021514304, + 0.017160969, + -0.0044195806, + -0.027937049, + 0.037880316, + -0.020921241, + 0.028138943, + -0.0010110461, + -0.002069411, + -0.015268216, + 0.0010930655, + 0.00853632, + -0.015596293, + 0.01538178, + 0.010012669, + -0.0012878614, + -0.007009499, + -0.0059747933, + -0.014990612, + 0.031142112, + 0.00626817, + 0.030914983, + 0.013690921, + -0.02393703, + 0.03000646, + -0.022183077, + -0.0011695642, + 0.0112745045, + -0.04010115, + 0.012119935, + -0.024517473, + 0.013539501, + 0.0020993797, + 0.011123084, + 0.0071672285, + 0.00037657918, + -0.0039747832, + 0.01984868, + 0.018208293, + 0.0139180515, + 0.027028527, + -0.028643677, + 0.0072240112, + -0.037350345, + -0.029224122, + 0.017905453, + 0.0051293634, + -0.012530032, + 0.008719287, + 0.017148351, + 0.0015694086, + 0.021325028, + -0.008977963, + 0.025754072, + -0.012637287, + 0.0030015924, + 0.000056536166, + 0.016719326, + 0.0001789244, + -0.0056057065, + -0.025060063, + -0.003940083, + 0.0076277987, + -0.020908622, + 0.0043438706, + -0.01515465, + 0.010788698, + 0.014940138, + -0.023280874, + -0.018637318, + 0.0103092, + 0.0010347056, + -0.048429266, + 0.0006498455, + 0.005318639, + 0.039646886, + -0.0034511215, + -0.0142966015, + 0.03437241, + 0.01577295, + -0.0335396, + -0.0112492675, + 0.002411684, + -0.00091246516, + -0.025640508, + -0.0041262037, + -0.016984312, + -0.0012665679, + -0.010094688, + 0.0064732186, + 0.00037993092, + -0.029526962, + -0.017981162, + -0.019949628, + 0.0011963783, + -0.017943308, + -0.011583654, + 0.020366034, + -0.02099695, + -0.019823443, + -0.012586814, + 0.008813924, + 0.029754093, + -0.010176707, + 0.019672023, + 0.022321878, + 0.0039116917, + -0.019571077, + 0.013564737, + -0.16050553, + 0.027280895, + 0.011123084, + 0.005318639, + -0.012479558, + -0.022826614, + 0.006091513, + 0.006485837, + -0.013678302, + 0.024050593, + 0.025261957, + 0.0083849, + -0.016984312, + 0.000029845378, + -0.024277724, + -0.0014053698, + 0.0008194047, + -0.0069211703, + 0.018119965, + 0.013337607, + 0.013148331, + -0.014940138, + 0.015558437, + 0.0014755594, + -0.0068265325, + -0.01007576, + -0.011766621, + 0.030284064, + -0.001716097, + -0.0315459, + -0.0073880497, + 0.0019053724, + 0.0069653345, + 0.0048139044, + 0.014586824, + 0.001315464, + -0.0017350245, + 0.0075647067, + -0.0075647067, + 0.0049337787, + 0.0108959535, + 0.0024369208, + 0.017564757, + 0.013072621, + -0.02730613, + 0.014586824, + 0.02977933, + 0.028870808, + -0.009501625, + -0.012391229, + -0.019104198, + -0.021905473, + -0.006031576, + -0.013653065, + 0.03533141, + 0.02307898, + 0.0048517594, + 0.012176718, + -0.00013919629, + -0.0055836244, + -0.03061214, + -0.009981123, + 0.004608856, + 0.0053281025, + 0.019596312, + -0.009110456, + 0.008574176, + 0.0052839383, + -0.02376037, + 0.012662524, + -0.013337607, + -0.03147019, + -0.013123094, + -0.0034416576, + -0.003501595, + 0.008340736, + -0.017804505, + -0.00015043451, + -0.0049653244, + -0.021211464, + 0.0020189376, + 0.037754133, + -0.031899214, + -0.024681512, + -0.017022168, + 0.020075811, + -0.0057508177, + 0.006504765, + -0.008668813, + -0.009501625, + 0.008725596, + -0.043432396, + -0.0038265176, + -0.024530092, + 0.02116099, + 0.020340797, + 0.017589994, + -0.001494487, + -0.0027192566, + -0.009217712, + 0.005041035, + -0.007671963, + -0.012479558, + 0.0028517493, + 0.036189456, + 0.0139180515, + 0.0036214693, + 0.02715471, + 0.0315459, + 0.022359734, + -0.00892749, + 0.015987461, + 0.012946437, + 0.013123094, + 0.0027933894, + -0.009343895, + 0.018170439, + -0.015444873, + -0.0029369232, + 0.005362803, + 0.048429266, + 0.0051293634, + -0.018448042, + 0.012454322, + 0.00031723347, + 0.0013541077, + -0.094839595, + -0.010649896, + 0.023848701, + 0.01253634, + 0.0032003315, + 0.0055646966, + -0.0070725908, + 0.03447336, + 0.019924391, + 0.018965395, + -0.0041356673, + -0.013539501, + 0.0060820496, + -0.026574265, + 0.010712988, + 0.0063186437, + 0.01115463, + -0.020302942, + -0.032656316, + 0.016706709, + -0.0027192566, + -0.006416436, + -0.013627829, + -0.008826543, + 0.0021482757, + -0.016492197, + -0.04209485, + 0.026498556, + 0.004918006, + 0.013362844, + 0.028694151, + 0.0020410197, + -0.008088369, + -0.0077035087, + -0.0021088433, + -0.0151041765, + 0.0100631425, + -0.008119915, + 0.01947013, + -0.019419655, + -0.0011601005, + -0.02339444, + 0.0017949617, + -0.041943427, + 0.011564727, + 0.00072042947, + -0.01731239, + 0.015583674, + -0.009911722, + -0.000672322, + -0.005375421, + 0.0108454805, + -0.0056593344, + 0.00010163695, + 0.025653126, + -0.01885183, + 0.014258747, + 0.019495366, + -0.046057016, + 0.007993731, + 0.0044385083, + 0.0057034986, + -0.00003728824, + 0.029097939, + -0.005457441, + -0.005653025, + -0.024668893, + -0.005533151, + 0.0073880497, + -0.03384244, + -0.018044256, + 0.033135813, + 0.0011246114, + 0.023684662, + -0.017791888, + -0.006201924, + -0.04461852, + 0.00077129726, + 0.020933859, + -0.02276352, + -0.01130605, + -0.013766631, + 0.007892784, + -0.026372373, + 0.0033375563, + 0.019747734, + 0.007507924, + 0.009817084, + 0.009552099, + 0.00031683914, + 0.018031636, + 0.023899173, + -0.0145742055, + -0.024517473, + -0.007394359, + 0.012012679, + -0.025817165, + 0.004918006, + 0.008132533, + -0.018183056, + -0.022713048, + -0.023142071, + -0.043028608, + 0.01916729, + -0.010914882, + -0.02292756, + 0.008403827, + -0.0144732585, + -0.0050063343, + -0.0140694715, + -0.021842381, + 0.023747753, + 0.0058233733, + 0.026599502, + -0.0030331383, + -0.013564737, + -0.0107445335, + 0.009741374, + -0.0136404475, + -0.0018028482, + 0.009028437, + -0.00016206707, + -0.010731915, + 0.002053638, + 0.011779239, + -0.0017208288, + -0.031066403, + 0.0036403968, + -0.006230315, + 0.010933809, + -0.03793079, + -0.024101067, + 0.006107286, + -0.025325049, + 0.0063501894, + 0.05070057, + -0.021602632, + -0.024214633, + -0.009280804, + 0.007861238, + 0.020782439, + -0.02617048, + -0.034448124, + -0.044139024, + 0.0016577371, + -0.02876986, + 0.0068454603, + 0.012359683, + 0.0009960618, + -0.0006502399, + 0.0073249578, + 0.0064511364, + 0.008365973, + 0.021665724, + -0.0065678563, + -0.008763451, + 0.0039810925, + -0.034220994, + -0.0022287178, + -0.0009810774, + 0.018599462, + -0.005116745, + 0.022410206, + -0.018763501, + 0.0056246337, + 0.0034668944, + 0.026372373, + -0.0043123243, + 0.017943308, + 0.019192526, + -0.0027097927, + -0.04146393, + 0.004533146, + -0.009047364, + 0.038687892, + -0.00041443427, + 0.024744604, + 0.00400002, + 0.014725626, + -0.011091539, + -0.013665684, + 0.030485958, + -0.0018343941, + 0.02407583, + -0.020605782, + 0.024113687, + 0.021287173, + 0.010176707, + -0.023142071, + 0.0015047394, + 0.0017854979, + 0.017438574, + -0.031949688, + 0.0024668893, + 0.013564737, + 0.010555258, + -0.009716137, + 0.004924315, + 0.008656195, + -0.0105931135, + 0.0030788798, + 0.06647352, + -0.011665674, + 0.0014881778, + -0.029552199, + -0.035028566, + -0.02685187, + 0.009451152, + -0.0068517695, + -0.0145742055, + 0.0058454555, + 0.0077981465, + 0.007041045, + -0.0017870752, + -0.0038896094, + 0.021968564, + -0.0077666007, + 0.017968545, + -0.01870041, + -0.011634128, + -0.004290242, + 0.032959156, + -0.010271345, + 0.008277644, + 0.0015938566, + -0.0071356827, + 0.002107266, + 0.0074448325, + 0.01776665, + -0.01130605, + 0.0016261912, + 0.011318669, + 0.011690911, + -0.0019274545, + -0.008492156, + 0.0016766646, + -0.020681491, + -0.0071735377, + 0.00977292, + 0.018776119, + 0.013602592, + 0.0424734, + 0.0062429337, + -0.041337747, + 0.015369163, + -0.00036534097, + 0.016630998, + 0.007930639, + 0.031646848, + 0.015167269, + -0.011287123, + -0.00024802962, + -0.0009692478, + 0.026902344, + 0.0014361271, + -0.03131877, + -0.021325028, + -0.021375502, + 0.026448082, + -0.031268295, + -0.0062366244, + -0.0066120205, + 0.017034786, + 0.022599483, + -0.0034290394, + -0.015457491, + -0.018107347, + 0.012984293, + -0.01770356, + -0.0056120157, + -0.006763441, + 0.006388045, + -0.0030709933, + -0.024668893, + 0.00043967098, + 0.004362798, + 0.0038801457, + -0.009457461, + -0.0043344065, + 0.001630923, + 0.011148321, + 0.002599382, + 0.033438653, + -0.008403827, + -0.006580475, + 0.0074195955, + 0.01123665, + -0.019142052, + -0.013135713, + -0.02147645 + ] + }, + { + "object": "embedding", + "index": 1, + "embedding": [ + 0.00089398306, + -0.00462804, + 0.0042670527, + -0.0047607105, + -0.017598893, + 0.003273567, + -0.024374345, + -0.025522098, + 0.0054086363, + -0.024312638, + -0.018931769, + 0.029347945, + -0.00042616535, + -0.018746648, + -0.011675002, + -0.019425428, + 0.024892684, + -0.012687, + 0.013587926, + -0.008262594, + -0.0074048643, + 0.017352065, + -0.029372627, + 0.011428174, + -0.007238255, + -0.007355498, + 0.02142474, + -0.012582098, + 0.03068082, + -0.008873495, + 0.008237911, + -0.024053467, + -0.0022800812, + -0.018117234, + -0.01122454, + -0.00754062, + 0.004739113, + -0.0063033905, + 0.00008147279, + -0.012150148, + 0.02151113, + -0.0002720902, + 0.001740143, + -0.01875899, + 0.0031362686, + -0.0052574533, + 0.007546791, + 0.010224883, + -0.0011215283, + 0.020894058, + -0.0047175153, + -0.0028323606, + -0.008151521, + -0.032852914, + 0.011496051, + -0.0066952314, + -0.007694888, + 0.033124425, + -0.022732932, + -0.013921144, + 0.0149825085, + 0.0007686403, + -0.00968186, + -0.0025608488, + -0.012384635, + -0.0065162806, + 0.017870406, + 0.0114405155, + -0.005812818, + 0.024756929, + 0.00745423, + -0.00065023964, + 0.013180658, + -0.0019345208, + -0.0083798375, + -0.023029128, + -0.029965017, + 0.003248884, + 0.016586896, + -0.003949261, + 0.010718541, + -0.0034093228, + -0.03127321, + 0.02655878, + 0.024682881, + 0.0031779208, + -0.044676013, + 0.0041528945, + 0.0017771674, + -0.0043842965, + 0.01165649, + 0.03314911, + 0.021992447, + -0.01636475, + -0.0024096663, + 0.0055845017, + 0.020474449, + 0.026237901, + -0.0015565641, + -0.023868345, + 0.01336578, + 0.0058745258, + -0.029718189, + 0.012322928, + -0.03616042, + -0.023596834, + 0.009064788, + 0.006744597, + 0.010132322, + -0.024300296, + -0.021807324, + 0.031075746, + 0.035987638, + -0.03675281, + 0.016846066, + 0.0029403481, + 0.012421659, + -0.009848469, + -0.02673156, + -0.0016167287, + 0.016154945, + 0.032877598, + -0.0011654948, + -0.014143291, + 0.024868002, + 0.0033445302, + -0.011347954, + -0.032359257, + 0.0068001337, + -0.0042824796, + -0.0018357892, + 0.0005187262, + -0.011415832, + 0.016006848, + -0.008972227, + 0.015044216, + -0.02853341, + 0.03872744, + -0.02133835, + -0.033469986, + 0.012150148, + 0.020338694, + -0.02132601, + 0.0056184405, + -0.00847857, + 0.020104205, + 0.012477196, + 0.011767563, + 0.0057233428, + -0.023436395, + 0.028434679, + -0.028829604, + 0.03956666, + 0.009496738, + 0.017512504, + 0.017450796, + 0.0057480256, + -0.01508124, + -0.02981692, + 0.013847096, + -0.00797257, + 0.011162832, + 0.024386685, + -0.0065779877, + 0.014686313, + 0.02365854, + 0.0115947835, + 0.0005488084, + -0.0043380163, + -0.0047144303, + -0.010132322, + 0.050698638, + -0.018536843, + -0.0021767216, + -0.0032612255, + 0.023510443, + 0.015007191, + 0.011551588, + -0.024374345, + -0.010471712, + -0.0039184075, + 0.0011222997, + 0.03386491, + 0.0052481974, + 0.017672943, + 0.013723682, + 0.012847439, + -0.01756187, + -0.0005977885, + -0.012020563, + 0.015179971, + 0.034852225, + 0.01062598, + -0.004362699, + -0.68993586, + -0.02211586, + 0.007546791, + -0.001740143, + 0.013415146, + 0.03386491, + 0.029347945, + 0.0034648594, + -0.016636262, + 0.0011747509, + -0.00736784, + 0.000043002205, + 0.0029372629, + -0.014291388, + 0.007787449, + -0.029347945, + -0.014994849, + 0.009817616, + -0.017500162, + 0.032532036, + -0.0117613925, + -0.019770987, + -0.021498788, + -0.0033291036, + 0.026015757, + 0.025299953, + 0.006991426, + 0.0030745612, + -0.0033167622, + 0.0023587577, + -0.012822757, + -0.0028863542, + -0.0040911874, + -0.008083643, + 0.036283836, + -0.013205341, + -0.01122454, + 0.031075746, + 0.012032905, + 0.031421307, + 0.013995193, + 0.014427143, + -0.00021192567, + -0.026805608, + -0.0029681164, + -0.011113467, + -0.0043318453, + -0.015636604, + 0.016673286, + 0.0029804579, + 0.008614325, + 0.0013591012, + 0.009885494, + 0.02571956, + 0.0050846734, + -0.006068903, + 0.025423367, + 0.015883433, + -0.026435364, + 0.00608433, + -0.0023834407, + 0.011434345, + -0.0010189401, + -0.021548154, + 0.0048039057, + 0.0053839535, + -0.0068803527, + 0.010897492, + 0.009299275, + 0.0042115166, + -0.016006848, + 0.003940005, + -0.010070615, + 0.0067816214, + 0.000030082261, + -0.005371612, + 0.041442554, + 0.012051417, + -0.00924991, + 0.019561183, + 0.018438112, + 0.007392523, + -0.020412741, + -0.008336643, + 0.020671912, + -0.025546782, + -0.033198476, + -0.013958169, + 0.017500162, + -0.010564273, + 0.016241336, + 0.029273896, + -0.021005131, + -0.0051309536, + -0.011094955, + 0.0064484025, + -0.0091511775, + 0.012421659, + 0.0077689365, + -0.0028863542, + 0.0046372963, + -0.030039065, + -0.010317444, + 0.009928688, + 0.019598207, + 0.01884538, + -0.021412399, + 0.002713574, + -0.003427835, + -0.023485761, + 0.028928336, + 0.011045589, + -0.013526218, + 0.03403769, + -0.012921488, + -0.025324635, + 0.015871093, + 0.014710996, + 0.022918055, + -0.04507094, + 0.016031532, + 0.006929719, + 0.00012987437, + 0.0114405155, + -0.0063620126, + -0.022560153, + 0.0029881713, + 0.008077472, + -0.015463824, + -0.029520726, + 0.02742268, + 0.0027922508, + 0.019178597, + 0.007016109, + 0.008645179, + -0.008435374, + 0.016648604, + 0.00063095614, + 0.011687344, + -0.017278016, + -0.017919771, + 0.014945484, + -0.018129576, + 0.008330472, + 0.0024852576, + -0.0066705486, + -0.03401301, + 0.0024405199, + -0.00062671374, + 0.0061151837, + -0.019252647, + -0.008805618, + -0.020585522, + -0.0044922843, + -0.011002394, + 0.0048902957, + -0.0226342, + -0.009712714, + -0.0039369194, + 0.006090501, + 0.021622203, + 0.014661631, + -0.011804587, + 0.0000605984, + -0.0112862475, + -0.011064101, + -0.0070901574, + 0.034062374, + -0.029545408, + -0.014587582, + 0.007923204, + -0.0140692415, + -0.013575585, + -0.008342814, + -0.019203281, + 0.00086235814, + -0.016253676, + -0.024473077, + -0.008540276, + -0.0028385313, + 0.009700372, + -0.005896123, + 0.0033815545, + -0.010348298, + 0.032186475, + 0.002978915, + 0.02571956, + 0.027644826, + -0.013118951, + 0.033815548, + -0.023238933, + -0.013069585, + -0.006615012, + 0.019647572, + -0.0031239272, + 0.00030390796, + -0.008885837, + -0.00033244755, + -0.009527592, + 0.014686313, + 0.01875899, + 0.012551244, + 0.022239275, + -0.020462109, + 0.027274583, + -0.005704831, + 0.008645179, + -0.019166257, + 0.017105237, + 0.034383252, + 0.0016367835, + -0.009033934, + -0.0048810397, + 0.004985942, + 0.007978741, + -0.0023464162, + 0.006892694, + 0.015278703, + 0.0030637626, + -0.019351378, + -0.02621322, + 0.031248527, + 0.03512374, + -0.040010948, + -0.019474793, + -0.010440858, + 0.017364407, + 0.013081927, + 0.0011678088, + -0.017055871, + -0.034210473, + 0.010082956, + 0.0016738079, + 0.0014192656, + -0.0034586887, + -0.00031875627, + 0.013674316, + -0.015315727, + 0.01901816, + -0.0056523797, + 0.015488507, + 0.02870619, + 0.020980448, + -0.018820696, + 0.017290358, + -0.011773734, + 0.022128202, + 0.011002394, + -0.009237568, + 0.022955079, + -0.013242366, + 0.0046403813, + -0.017031187, + -0.005220429, + -0.000036108355, + -0.022239275, + 0.04635445, + -0.0031779208, + 0.012174831, + 0.012785732, + 0.011884807, + 0.0042115166, + -0.00123183, + -0.008151521, + 0.000019440178, + 0.011162832, + -0.019203281, + -0.0034586887, + -0.00033726843, + -0.012748708, + -0.00030545064, + -0.016130263, + -0.0017864235, + -0.030088432, + 0.009077129, + 0.0024220077, + 0.010730882, + -0.003292079, + -0.000076218035, + 0.025065465, + 0.02168391, + -0.0152910445, + 0.017389089, + 0.02981692, + -0.019931426, + -0.027447363, + -0.037394565, + 0.0059855985, + -0.005621526, + 0.004430577, + 0.035025008, + 0.023029128, + 0.0181666, + 0.012896805, + 0.0008515594, + -0.003616042, + 0.019067526, + 0.005991769, + 0.018907087, + -0.014809729, + -0.005828245, + -0.015562556, + -0.032680135, + -0.0056431238, + 0.030433992, + 0.026830291, + 0.029347945, + 0.009811445, + 0.0042886506, + -0.0020286243, + -0.022498446, + -0.020474449, + -0.009749738, + -0.007386352, + -0.011347954, + -0.0018990391, + 0.008768593, + -0.009367153, + 0.024682881, + 0.016673286, + -0.0021921482, + -0.009811445, + 0.0037425417, + -0.004985942, + 0.07557898, + -0.0059269764, + 0.004695918, + 0.0019545755, + 0.007256767, + -0.013032561, + -0.024374345, + -0.02210352, + 0.0014084668, + -0.0022847091, + 0.0007239026, + -0.021943081, + -0.000053849173, + -0.010348298, + 0.0033105914, + -0.0017077468, + 0.0032828231, + -0.014032218, + 0.016006848, + -0.017722309, + -0.015871093, + -0.0027475131, + 0.001075248, + -0.017537186, + -0.0079170335, + -0.0056091845, + 0.017598893, + 0.005741855, + 0.020165913, + -0.020116547, + 0.0181666, + 0.012582098, + -0.015735336, + -0.016920114, + 0.006584158, + -0.013513877, + -0.0025253673, + -0.0037302002, + 0.011212198, + -0.005158722, + 0.015611921, + 0.008015766, + 0.0018728136, + -0.0065162806, + 0.0041004433, + -0.0054456606, + 0.00009458557, + 0.0037147736, + -0.013526218, + -0.02125196, + 0.02544805, + -0.0022245445, + -0.012687, + 0.0042207725, + -0.0026318121, + 0.014636948, + -0.028113801, + 0.0029079518, + -0.02107918, + -0.006584158, + -0.0011770648, + -0.0140692415, + -0.0008330472, + -0.00090709585, + -0.031766865, + -0.010212542, + 0.003119299, + -0.016303042, + -0.0071580354, + 0.00762701, + 0.0003278195, + -0.019573525, + -0.017080553, + 0.025670195, + 0.03435857, + 0.014254363, + 0.0018234478, + -0.017450796, + -0.001894411, + 0.023214249, + -0.003986285, + -0.007083987, + 0.0116071245, + -0.003350701, + -0.0062262565, + 0.006522451, + 0.013180658, + -0.020585522, + -0.012909146, + 0.014994849, + 0.02425093, + -0.0010073701, + 0.01833938, + -0.0068433285, + -0.016130263, + -0.0021042156, + 0.0016228994, + 0.00805279, + -0.01695714, + -0.0067260847, + 0.017981479, + -0.020634888, + -0.016611578, + -0.030656137, + 0.02347342, + -0.009120325, + 0.020499133, + -0.006121354, + -0.01669797, + 0.006436061, + -0.009502909, + -0.0065779877, + 0.0041775773, + -0.018154258, + 0.0032334574, + 0.012699342, + -0.01620431, + 0.024300296, + -0.0026626657, + -0.043096308, + 0.009428861, + -0.032063063, + 0.032186475, + 0.027521411, + 0.010150835, + 0.011422003, + -0.019511817, + -0.0061336956, + -0.015031874, + 0.011946514, + 0.009052446, + 0.018104892, + -0.010983882, + -0.010558102, + -0.009897835, + -0.015179971, + 0.01585875, + 0.020165913, + 0.006349671, + -0.010595126, + -0.023818979, + 0.024954392, + 0.02707712, + -0.011335613, + -0.02038806, + -0.014155632, + 0.01482207, + 0.02262186, + -0.027768241, + 0.017068211, + -0.0026333549, + -0.0028431593, + -0.02836063, + 0.0028693848, + 0.02312786, + 0.0020656486, + -0.025818292, + -0.0054610875, + 0.015229337, + 0.024781613, + 0.028409995, + -0.005297563, + 0.017327381, + -0.0096139815, + -0.008453887, + 0.009965713, + 0.0054641725, + 0.01568597, + -0.018438112, + 0.02406581, + 0.027052436, + -0.0038998951, + 0.003214945, + 0.013871779, + -0.0049304054, + 0.021980105, + 0.00013459883, + -0.0038998951, + -0.0005333816, + -0.036826856, + -0.0030622198, + 0.029027067, + -0.012736366, + 0.004146724, + -0.0006857213, + -0.003099244, + -0.0060966713, + -0.0044151503, + 0.005192661, + 0.020807669, + 0.015537873, + -0.019425428, + 0.011730539, + 0.0018758989, + -0.002883269, + -0.012970854, + -0.032013696, + -0.0009680317, + 0.015155288, + -0.0026009586, + 0.03616042, + 0.023152541, + 0.0073740105, + -0.017376747, + -0.0041004433, + 0.02947136, + 0.01490846, + -0.02947136, + 0.022350349, + -0.0045046257, + -0.019758645, + -0.016611578, + -0.020104205, + -0.039640706, + 0.002232258, + 0.005424063, + -0.039023634, + 0.017450796, + -0.01585875, + -0.016241336, + -0.001154696, + 0.01473568, + 0.015389776, + -0.029249214, + 0.022041813, + 0.00642989, + -0.026978388, + -0.021646887, + 0.01800616, + -0.009589299, + -0.0064052073, + 0.016784359, + 0.021042155, + -0.014957826, + -0.0016275274, + -0.007009938, + 0.0102187125, + 0.015722996, + -0.030063748, + -0.0012248879, + 0.012008221, + 0.015500849, + -0.021992447, + 0.0052667097, + 0.0010305103, + 0.006152208, + -0.014538216, + -0.015389776, + 0.0074048643, + -0.013057244, + -0.02742268, + 0.019499475, + -0.02665751, + -0.0020671913, + 0.00874391, + -0.026435364, + 0.008768593, + -0.019511817, + -0.007738083, + -0.004695918, + -0.018672599, + 0.033889595, + 0.014933143, + 0.030113114, + 0.007324645, + -0.011181345, + -0.0059424033, + -0.009996567, + 0.011662661, + 0.028558092, + -0.0115701, + -0.009996567, + -0.015871093, + 0.035000324, + 0.0076516927, + 0.0058004768, + 0.0023541297, + -0.009552275, + -0.026978388, + -0.0007929375, + 0.020128889, + -0.011434345, + -0.024127515, + 0.018462794, + -0.030532723, + -0.0009965713, + -0.029940333, + 0.003582103, + 0.015895775, + -0.0019283501, + -0.019339036, + 0.003788822, + -0.01208844, + 0.0052142586, + 0.0060874154, + -0.009620152, + 0.018277673, + 0.010261907, + -0.024090491, + 0.012316757, + -0.009262251, + 0.036925588, + 0.00950908, + 0.011366466, + 0.020881716, + -0.01824065, + 0.025250586, + -0.00079910824, + -0.01851216, + -0.009157348, + 0.022214592, + -0.007694888, + 0.009453543, + -0.01671031, + 0.0050599906, + 0.01748782, + 0.024756929, + -0.005766538, + 0.00086081546, + 0.012699342, + -0.01669797, + -0.0066890605, + 0.021906056, + -0.013242366, + -0.0043441867, + -0.0088303005, + -0.012736366, + 0.002724373, + 0.0010567359, + -0.018129576, + -0.020857034, + 0.010878979, + -0.0035018837, + -0.02099279, + -0.007164206, + -0.020104205, + -0.01208227, + 0.012612952, + 0.008811789, + 0.0071271816, + 0.006460744, + 0.025818292, + 0.0006012595, + 0.01620431, + -0.029101117, + 0.0069790846, + 0.0077689365, + 0.00668289, + -0.014254363, + -0.016340068, + 0.0008322759, + 0.010274249, + 0.025768926, + -0.03307506, + -0.017709967, + 0.0046897475, + -0.022523127, + 0.0034000669, + -0.0014570613, + 0.011977368, + 0.020215278, + -0.010033591, + -0.011773734, + 0.0033105914, + 0.004720601, + 0.0074665714, + -0.0019345208, + 0.010996223, + -0.0018990391, + -0.002030167, + 0.011675002, + 0.010866638, + -0.017426113, + -0.018919427, + 0.0076516927, + 0.014427143, + 0.033124425, + 0.019005818, + -0.022436738, + 0.033445302, + -0.014883777, + 0.004038736, + 0.017919771, + 0.02870619, + 0.0020224536, + -0.008552618, + -0.02579361, + -0.0069544017, + 0.013982852, + -0.0060781594, + -0.014488851, + 0.0028693848, + 0.0134521695, + -0.013378121, + -0.016858408, + -0.0030884454, + -0.024645856, + -0.017290358, + -0.002540794, + 0.009101812, + -0.025744244, + 0.013686657, + 0.010311273, + -0.0028092202, + -0.00552588, + -0.008669862, + 0.0013459884, + 0.005707916, + -0.0100644445, + -0.0028308178, + -0.0017771674, + -0.008034278, + 0.0014439485, + -0.023954736, + 0.003341445, + 0.017092895, + -0.0143654365, + -0.03751798, + 0.031001698, + -0.00951525, + -0.018549185, + 0.013094268, + -0.020375717, + -0.021622203, + 0.013822413, + -0.0063805245, + -0.0028431593, + -0.010342127, + 0.008435374, + 0.0015149118, + -0.005004454, + -0.02373259, + -0.001538052, + 0.028212532, + -0.006744597, + 0.03147067, + 0.22056621, + 0.002096502, + 0.0037672247, + 0.027101804, + -0.017635917, + 0.033445302, + 0.0062108296, + -0.010249566, + -0.010582785, + 0.012045246, + 0.009194373, + 0.01191566, + -0.028089117, + 0.0032427134, + 0.013217682, + -0.007941716, + -0.012847439, + -0.015957482, + -0.022066494, + -0.028508727, + -0.016451139, + 0.0014177229, + -0.0116071245, + 0.0025917024, + 0.012069928, + -0.000014125164, + 0.0037086029, + 0.025571464, + 0.012921488, + -0.0021366118, + -0.01627836, + -0.00951525, + 0.015821727, + -0.0067137433, + -0.011082613, + -0.003915322, + 0.00057966204, + 0.014957826, + 0.013513877, + 0.023325322, + 0.020597864, + 0.009274593, + 0.015303385, + -0.026805608, + -0.016080897, + 0.006127525, + -0.016870748, + -0.01740143, + 0.0030406222, + 0.0022091179, + -0.02014123, + -0.024287954, + 0.017413773, + 0.04823035, + -0.004223858, + 0.005390124, + 0.027101804, + 0.005760367, + 0.0074912542, + -0.004257797, + -0.022325665, + 0.008731569, + -0.005982513, + 0.011650319, + -0.0016738079, + 0.015266362, + -0.02184435, + 0.01422968, + 0.011958855, + -0.016056214, + 0.02270825, + -0.008935203, + 0.015204654, + -0.0021288984, + 0.0034741154, + -0.0031686649, + 0.0106815165, + -0.004334931, + 0.032063063, + 0.014316071, + -0.0026379828, + 0.008355155, + 0.003230372, + -0.0032365427, + -0.0062509393, + -0.021646887, + 0.0039523463, + 0.011545417, + 0.028311264, + 0.0016861493, + 0.010638322, + -0.005967086, + -0.010576614, + -0.027620142, + 0.008262594, + 0.025966391, + 0.0055752457, + 0.023596834, + 0.009632494, + 0.0021474105, + -0.028138483, + -0.020536156, + 0.010514907, + -0.0007084758, + -0.0067199143, + 0.014044559, + 0.0041960897, + 0.004763796, + 0.020696595, + -0.024399027, + 0.020351036, + -0.024584148, + 0.022300983, + -0.0072135716, + 0.026410682, + -0.0057788794, + 0.005056905, + -0.02433732, + -0.0034864568, + 0.0039523463, + -0.0045601623, + -0.001086818, + 0.00711484, + -0.008645179, + -0.015969824, + -0.021523472, + -0.031914964, + 0.010298932, + -0.0122118555, + -0.020684253, + 0.003264311, + -0.015661288, + 0.04475006, + -0.0021304411, + -0.008441545, + 0.016191969, + -0.0053345873, + -0.01182927, + 0.006007196, + -0.004140553, + 0.01646348, + 0.0009742024, + 0.005680148, + -0.009546104, + -0.013550902, + -0.009194373, + -0.0054209777, + -0.015994506, + -0.043392505, + -0.008170034, + -0.01988206, + -0.010786419, + -0.019598207, + -0.009725055, + 0.012002051, + -0.014994849, + -0.0363332, + 0.0019345208, + 0.0028909824, + 0.030878283, + -0.009737397, + 0.020276986, + 0.013230024, + -0.009996567, + -0.008725398, + -0.018462794, + -0.15560088, + 0.019388402, + 0.0050846734, + -0.007904693, + -0.009836128, + -0.011724368, + 0.018796014, + 0.015019532, + -0.019339036, + 0.03016248, + 0.027546095, + -0.016722651, + -0.03727115, + -0.012489538, + 0.012810415, + -0.00027131886, + -0.0021258132, + 0.023522785, + 0.0035759322, + 0.008355155, + 0.0049211495, + -0.028780239, + 0.020116547, + 0.0011153576, + -0.011366466, + 0.0029372629, + -0.0031810063, + 0.027792923, + -0.015105923, + -0.0181666, + -0.007670205, + -0.014513534, + 0.011428174, + 0.029841602, + -0.0037980783, + -0.00024200793, + -0.023251273, + 0.0045138816, + -0.017981479, + 0.019770987, + -0.015611921, + 0.009021593, + -0.000009364549, + 0.0047853934, + -0.010039762, + 0.031643454, + 0.015797043, + 0.012822757, + -0.0021798068, + -0.013007878, + 0.0061645494, + -0.015624263, + -0.0114528565, + -0.017179284, + 0.046329767, + 0.03240862, + 0.0058251596, + 0.021449422, + 0.011699685, + 0.019203281, + -0.016241336, + -0.0036407248, + 0.018388746, + 0.0021690081, + 0.015611921, + -0.024028784, + 0.018203624, + 0.006676719, + -0.029101117, + 0.015241679, + -0.0034926275, + -0.009033934, + -0.012921488, + -0.021967763, + 0.0016290701, + 0.0055752457, + -0.020659572, + 0.015130606, + -0.006608841, + -0.026879657, + -0.0013668145, + 0.045712695, + -0.0009680317, + -0.018438112, + -0.0076455222, + 0.012748708, + 0.017981479, + -0.008410691, + -0.013155975, + -0.005735684, + 0.00014520476, + -0.043738063, + 0.023325322, + -0.037246466, + 0.016549872, + 0.010872809, + -0.016944798, + -0.0011894063, + -0.0029125798, + -0.0042732237, + -0.0017092895, + -0.0031285551, + -0.024275612, + -0.0019036671, + 0.010126152, + 0.021474106, + 0.017956795, + 0.01954884, + 0.04114636, + 0.025090149, + -0.008935203, + 0.015229337, + 0.013353438, + 0.028039752, + -0.0030344515, + 0.0047761374, + 0.023461077, + -0.0091511775, + -0.0076455222, + 0.01464929, + 0.03914705, + -0.01996845, + 0.010440858, + 0.014513534, + 0.009990396, + -0.020770645, + -0.09379494, + -0.027373314, + 0.0034556033, + 0.0012865951, + 0.007448059, + 0.0217703, + -0.0054364046, + 0.0115947835, + -0.004732942, + 0.014994849, + -0.00685567, + -0.020869376, + -0.017919771, + -0.012785732, + 0.025040783, + 0.0033599571, + 0.024004102, + -0.011724368, + -0.03830783, + 0.010089127, + -0.020178255, + -0.00951525, + -0.021153228, + 0.006152208, + -0.0014161803, + -0.010601297, + -0.04050461, + 0.016636262, + 0.010891321, + 0.0065101096, + -0.0041436385, + 0.010039762, + 0.01594514, + -0.022584835, + -0.014081583, + -0.013834755, + -0.0140569005, + -0.013513877, + 0.011175174, + -0.03418579, + -0.0018033929, + 0.00008282263, + 0.004393553, + -0.027348632, + -0.018055527, + 0.00847857, + -0.0024405199, + 0.020795327, + 0.0017200882, + -0.00968186, + -0.019215623, + 0.017253334, + -0.0030822747, + 0.0034432618, + 0.030656137, + -0.024522442, + 0.02082001, + 0.005535136, + -0.031569403, + 0.011070272, + -0.0015071984, + 0.00924991, + 0.018487478, + 0.02312786, + -0.017500162, + -0.006590329, + -0.016599238, + 0.0123661235, + 0.019647572, + -0.029890968, + -0.009286934, + 0.010095298, + -0.020289328, + 0.004779223, + -0.010514907, + 0.00056539226, + -0.03050804, + -0.015525532, + 0.020894058, + -0.008151521, + -0.009219056, + -0.007898522, + 0.0029295494, + -0.035469297, + -0.018055527, + 0.0250161, + 0.0053438437, + -0.027546095, + -0.0046156985, + -0.005896123, + 0.0012326014, + 0.031692818, + 0.02347342, + -0.033198476, + -0.026706876, + 0.023559809, + 0.000008370244, + 0.017092895, + -0.015463824, + -0.011835441, + -0.00745423, + -0.018610891, + -0.032951646, + 0.0167967, + -0.009743567, + -0.029150482, + 0.0025809037, + -0.008774764, + 0.009398007, + -0.018833037, + -0.008620496, + 0.022288641, + -0.021461764, + 0.0019391488, + 0.0022384287, + -0.009638665, + -0.0344573, + 0.020931082, + -0.00084307464, + 0.007293791, + -0.00736784, + -0.0066890605, + -0.005655465, + 0.012785732, + -0.00823174, + -0.008768593, + -0.010582785, + 0.004507711, + 0.006254025, + 0.02880492, + -0.019215623, + -0.018018503, + 0.027447363, + -0.012909146, + 0.011175174, + 0.02579361, + -0.02056084, + -0.024756929, + 0.0017000334, + 0.01054576, + 0.008281106, + -0.02406581, + -0.00720123, + -0.0317175, + 0.009206714, + -0.009953371, + -0.010101469, + 0.001460918, + -0.023707906, + -0.0044213207, + 0.0022785384, + 0.017524846, + 0.0137483645, + 0.023868345, + -0.028730873, + -0.007318474, + -0.0062509393, + -0.03102638, + 0.0008723856, + 0.0013297902, + -0.006701402, + -0.015821727, + 0.02665751, + -0.0067569385, + 0.001011998, + -0.014846752, + 0.020696595, + -0.0037949928, + -0.009089471, + -0.0039585168, + -0.004276309, + -0.02511483, + -0.017759332, + 0.008348985, + 0.019055184, + 0.0051463805, + 0.021918397, + -0.015537873, + -0.0072197425, + -0.021634545, + -0.009410348, + 0.007269108, + 0.002695062, + -0.006349671, + -0.035000324, + -0.00094334886, + 0.03699964, + 0.019561183, + -0.013847096, + 0.0007624696, + -0.0021875203, + -0.00075398484, + -0.039048318, + 0.007170377, + -0.0018280759, + -0.0008176204, + -0.013958169, + -0.0046588937, + -0.006272537, + -0.008367497, + 0.004810076, + 0.060522422, + 0.009058617, + 0.0031424393, + -0.025398685, + -0.03418579, + -0.0041498095, + 0.015179971, + -0.001009684, + -0.0023063067, + -0.0126746595, + -0.023448735, + 0.019993134, + -0.022905713, + -0.006374354, + 0.020523814, + 0.003119299, + 0.00066836615, + -0.01721631, + -0.01285978, + -0.024300296, + 0.03857934, + -0.008207058, + 0.02700307, + -0.00968186, + 0.016117921, + 0.02887897, + 0.002729001, + 0.0126746595, + -0.010638322, + 0.010144664, + 0.0044953697, + 0.026929023, + 0.0006228571, + 0.0015642776, + -0.0017231735, + -0.036456615, + 0.000027286153, + 0.011644149, + 0.015871093, + -0.0060565616, + 0.044700697, + -0.0012611409, + -0.04072675, + 0.02766951, + -0.0075961566, + -0.0006085873, + 0.024090491, + -0.0053932094, + -0.013575585, + -0.008095984, + 0.0005711773, + 0.01173671, + 0.018055527, + 0.00565855, + -0.025262928, + -0.0045601623, + -0.020782985, + 0.0075035957, + -0.033692133, + -0.0209064, + 0.014081583, + 0.013180658, + 0.015216996, + 0.0062355124, + 0.0067877923, + -0.017500162, + 0.017858064, + -0.0023541297, + 0.006368183, + -0.0011153576, + 0.0039369194, + 0.014587582, + -0.042355824, + -0.013020219, + 0.0028724703, + 0.0005954745, + -0.018018503, + -0.021227278, + 0.008632838, + 0.02031401, + 0.0004061105, + 0.041417874, + -0.016253676, + -0.03203838, + 0.014303729, + -0.0027274583, + -0.018314697, + -0.019092208, + -0.01714226 + ] + }, + { + "object": "embedding", + "index": 2, + "embedding": [ + 0.013982197, + -0.018476475, + -0.005729884, + -0.023803027, + 0.0031706425, + 0.009507126, + -0.044174526, + -0.0043758387, + 0.01791309, + -0.02065319, + 0.010851568, + 0.010934795, + -0.016222933, + 0.019359965, + -0.024520062, + -0.0053873714, + 0.03178005, + -0.0010819557, + 0.010729928, + -0.022381758, + -0.045480553, + 0.0045486954, + -0.020665996, + 0.017695418, + -0.016619865, + 0.0010731529, + 0.015685158, + -0.015185793, + 0.026453499, + 0.010755536, + 0.02481456, + -0.012765798, + 0.017285684, + -0.037337076, + -0.040947862, + 0.017093621, + -0.0021639115, + 0.010064109, + -0.0013468429, + -0.020627582, + 0.008495593, + 0.0055666305, + -0.003665205, + -0.0038092525, + -0.007996229, + 0.013559658, + 0.013918176, + 0.010256172, + -0.008854112, + 0.010320193, + -0.0048271874, + 0.030858146, + -0.0041229557, + -0.0043150187, + 0.01831002, + -0.025621224, + -0.00086028286, + 0.01782346, + -0.020947687, + -0.016709493, + 0.012714581, + -0.0020694805, + 0.005134488, + -0.0097312, + -0.0075928965, + 0.010204955, + -0.0059027406, + -0.004638325, + -0.0038860778, + 0.0057522915, + 0.02932164, + 0.029372858, + 0.00069662905, + 0.0151473805, + 0.0032106556, + 0.013726113, + -0.0042541986, + -0.0020390705, + -0.0048303884, + -0.017503355, + 0.0042894105, + -0.012977066, + -0.026171805, + -0.0008050647, + 0.027196143, + 0.011869502, + -0.002901754, + 0.0011355734, + -0.031088622, + -0.012035958, + -0.005256128, + 0.029424075, + 0.032471478, + -0.0012075971, + -0.013598071, + 0.016427802, + 0.022368954, + 0.020000177, + 0.005729884, + -0.029065557, + 0.0048976103, + 0.014545582, + -0.03836141, + 0.0026472704, + -0.036824908, + -0.015531506, + 0.015557115, + -0.012573734, + 0.027477834, + -0.03211296, + -0.020269064, + 0.0089885555, + 0.011082044, + -0.020461127, + -0.0070487177, + -0.020025784, + 0.017157642, + -0.0084315725, + -0.017861873, + -0.015697962, + 0.014558387, + 0.037337076, + 0.016824732, + -0.023226837, + 0.027247358, + 0.0114149535, + -0.01256093, + -0.013329183, + 0.0060243807, + -0.0002958973, + 0.011037229, + 0.007829774, + 0.01009612, + 0.017554572, + -0.0070295115, + 0.010179347, + -0.009058978, + 0.03157518, + 0.007855383, + -0.029961852, + 0.01523701, + 0.02834852, + -0.0064757294, + -0.0077337427, + -0.004628722, + 0.030550845, + 0.02025626, + -0.016466213, + 0.0021383031, + 0.00906538, + 0.0049616313, + -0.024507258, + 0.019897742, + 0.013546854, + 0.022983557, + 0.0033098883, + -0.011645429, + -0.0093662795, + -0.020115415, + -0.016094891, + -0.0067926333, + 0.0061332164, + 0.028655821, + 0.002460009, + 0.030730104, + 0.019718483, + 0.009711993, + 0.019001449, + 0.0012700176, + 0.0035115546, + -0.001566115, + 0.035877395, + -0.010569875, + 0.014929709, + 0.0047215526, + 0.010544267, + 0.012048761, + 0.003950099, + -0.014251086, + 0.0031978514, + -0.019001449, + -0.0023671784, + 0.013406008, + 0.005432186, + 0.0010955603, + -0.009756808, + 0.010441833, + -0.020858059, + 0.012208814, + -0.013149924, + 0.014609603, + 0.018348433, + 0.0051024775, + -0.01654304, + -0.6912225, + -0.040282045, + 0.0114789745, + -0.0017381716, + 0.0023895856, + 0.03779803, + 0.005845122, + 0.012580137, + 0.0074264416, + -0.026069371, + 0.0063572903, + 0.008860514, + 0.013092305, + -0.0029545715, + 0.007080728, + -0.030192327, + -0.0099872835, + 0.015749179, + -0.0035819777, + 0.014327911, + -0.009071783, + -0.004180575, + -0.028655821, + -0.0047919755, + 0.020153826, + 0.018258803, + 0.010998816, + -0.0097376015, + -0.0056914715, + 0.020691603, + -0.0045358916, + -0.0046095154, + -0.017951502, + -0.020128218, + 0.038335804, + 0.0019030257, + -0.015172989, + 0.008194694, + -0.008041044, + 0.025185881, + -0.0027897172, + 0.015774786, + -0.0015805197, + -0.014686429, + -0.010627494, + -0.005720281, + 0.0057010744, + -0.0014436747, + 0.033214122, + -0.00071423483, + 0.020819645, + 0.003068209, + 0.023700593, + -0.005480202, + 0.0148400795, + -0.0010651503, + 0.030192327, + 0.0151473805, + 0.0063092746, + -0.007195966, + -0.019564833, + 0.012733787, + -0.029577725, + -0.009654375, + -0.012516115, + 0.00413576, + -0.032164175, + -0.017631397, + -0.0015269021, + -0.0019542426, + 0.006078799, + 0.007458452, + -0.011178075, + 0.029859418, + 0.01651743, + 0.0022791494, + 0.026120588, + -0.01788748, + 0.021395834, + 0.012554528, + 0.0018069941, + 0.003918088, + -0.017324096, + -0.009142206, + 0.027759528, + -0.021254988, + -0.029526507, + -0.02131901, + 0.019475203, + -0.011395747, + 0.033956766, + 0.019641658, + 0.00074744574, + -0.0029673756, + -0.006274063, + 0.014635212, + -0.014443149, + 0.0005897939, + 0.0031306294, + -0.0058003073, + 0.014468757, + -0.035288405, + -0.0016821531, + -0.0015725171, + 0.039846703, + 0.0045230873, + -0.026146198, + 0.033470206, + 0.019808114, + -0.017503355, + 0.019180706, + -0.011747863, + -0.0246353, + 0.0062484546, + 0.0101729445, + -0.024750538, + 0.046223197, + 0.009084587, + 0.011594213, + -0.003205854, + 0.009379084, + 0.0065525547, + -0.00052177155, + -0.014622408, + 0.0006009976, + -0.004820785, + 0.00044174524, + -0.016107697, + -0.027913177, + -0.0037356282, + 0.015531506, + -0.009475116, + 0.009968078, + 0.0053809695, + 0.0030345977, + -0.003841263, + 0.005976365, + -0.017938698, + 0.02578768, + -0.029961852, + -0.025736462, + -0.01073633, + -0.013879764, + -0.013585267, + -0.00032290618, + -0.009103794, + -0.03093497, + -0.0077721556, + -0.019231923, + 0.021447051, + -0.033700682, + -0.021639114, + -0.017144836, + 0.0021879193, + -0.006405306, + -0.0040877443, + -0.022817103, + 0.003543565, + -0.0017749836, + 0.02530112, + 0.008457181, + 0.003469941, + -0.01548029, + -0.00013364395, + -0.00906538, + -0.040077176, + -0.009411095, + 0.037337076, + -0.014481561, + -0.022343347, + -0.006213243, + -0.002821728, + 0.0007470456, + -0.023700593, + -0.024891384, + -0.011773471, + -0.025749266, + -0.023303661, + 0.00018245999, + -0.016248543, + 0.014929709, + 0.010268976, + 0.005598641, + -0.01921912, + 0.035288405, + -0.0067862314, + 0.019795308, + 0.03567253, + -0.0020822845, + 0.01937277, + -0.008405964, + -0.0072791935, + -0.007925806, + -0.011382943, + 0.016094891, + -0.0023031572, + -0.0036524008, + 0.006181232, + 0.0006033984, + -0.00037952478, + 0.013559658, + -0.0044174525, + 0.019078273, + -0.02040991, + 0.01970568, + -0.013265162, + 0.01256093, + -0.002040671, + 0.015505899, + 0.03613348, + 0.002983381, + -0.02259943, + 0.0027513045, + 0.0018566104, + 0.017785048, + -0.00103394, + -0.012330454, + 0.0147120375, + -0.010864372, + -0.014699233, + -0.005419382, + 0.0085532125, + 0.043841615, + -0.012746591, + -0.014558387, + -0.013341987, + 0.03925771, + 0.011357334, + 0.0023879851, + -0.008137075, + -0.028758256, + -0.0025624426, + -0.01243929, + 0.00018986243, + -0.016824732, + -0.0049168165, + 0.00927665, + -0.03129349, + 0.014430345, + 0.011440562, + 0.010640299, + 0.0422795, + 0.032036133, + -0.017925894, + 0.022548214, + -0.020448323, + 0.026299847, + 0.015621136, + -0.0206788, + 0.01426389, + -0.018911818, + -0.010185749, + -0.017644202, + 0.015672352, + 0.022676256, + 0.0028569393, + 0.039488185, + 0.003354703, + 0.0270681, + 0.01749055, + -0.016389389, + -0.011101251, + 0.01475045, + -0.017349705, + 0.003841263, + -0.0040557333, + -0.008700461, + 0.021639114, + -0.007311204, + -0.013393204, + -0.004823986, + 0.00094911206, + 0.016978383, + -0.003908485, + 0.0018149968, + -0.022215305, + -0.011626223, + 0.0031338304, + 0.022164088, + 0.010845166, + 0.00095231313, + -0.021088533, + 0.009199825, + 0.012087175, + 0.0089885555, + -0.021178164, + -0.025646832, + 0.021459855, + -0.0062452536, + 0.011216488, + 0.023162816, + 0.023777418, + 0.01402061, + 0.003482745, + -0.0008050647, + -0.02536514, + 0.0047759702, + -0.010134532, + 0.0033995179, + -0.002375181, + -0.00939829, + -0.015685158, + -0.026555931, + 0.0016949573, + 0.0011403749, + 0.027733918, + -0.009468714, + 0.006837448, + -0.02609498, + -0.011421355, + 0.008745275, + -0.0058131116, + 0.0014132647, + 0.0032490683, + -0.019027056, + -0.0012388073, + -0.029065557, + -0.010550669, + 0.024788952, + 0.022061653, + 0.016875949, + -0.01928314, + -0.01158781, + -0.0032490683, + 0.0684257, + 0.0055826358, + -0.009161413, + 0.010717124, + 0.010192151, + -0.016005263, + -0.016261347, + 0.0043182196, + -0.00802824, + -0.0028265293, + 0.0020038588, + 0.0015381058, + 0.007375225, + 0.0064149094, + -0.00031870478, + -0.014724841, + 0.008706863, + 0.00018716154, + 0.030345978, + -0.02162631, + -0.0047855736, + 0.010134532, + -0.009455909, + -0.0024664109, + -0.0061204126, + 0.0077145365, + 0.022189695, + 0.016402192, + 0.015493094, + -0.022176892, + 0.008642842, + 0.020537952, + 0.00650774, + -0.0121639995, + -0.009558342, + -0.01289384, + -0.0032202587, + 0.0047951764, + 0.00696549, + -0.02122938, + 0.015992459, + 0.0040877443, + 0.0065173428, + -0.021050122, + -0.0066197766, + 0.007291998, + -0.011549397, + 0.013457225, + -0.020064197, + 0.0030586056, + 0.022727473, + -0.010192151, + -0.01265056, + -0.007074326, + 0.011703048, + 0.0149041, + -0.012624951, + -0.008758079, + -0.008444376, + -0.018476475, + 0.004571103, + -0.017311292, + -0.008258715, + -0.0031050208, + -0.0093662795, + -0.013482833, + -0.004468669, + 0.004145363, + -0.011363736, + 0.0134700285, + 0.0013700505, + -0.01766981, + -0.013802938, + -0.0013628481, + 0.030909363, + 0.02627424, + 0.006779829, + -0.022868318, + 0.010499452, + 0.046760976, + -0.0020294674, + -0.0076377112, + -0.0142126735, + -0.0020134621, + 0.005483403, + 0.0008874918, + 0.033290945, + -0.013598071, + 0.003409121, + 0.002317562, + 0.031370316, + 0.0057522915, + 0.0072279763, + -0.0017877878, + -0.007381627, + -0.012087175, + 0.022164088, + 0.004820785, + -0.014302302, + -0.01548029, + 0.0033258935, + -0.023495726, + -0.0058131116, + 0.0009211029, + 0.007624907, + 0.01256093, + 0.025006622, + 0.0056914715, + -0.021254988, + 0.014635212, + 0.026812015, + -0.004551897, + 0.0024584082, + -0.008457181, + 0.0029177594, + 0.010550669, + -0.0016565446, + 0.013457225, + 0.0022599432, + -0.029654551, + 0.005044859, + -0.04437939, + 0.02366218, + 0.0010467442, + -0.0033418988, + -0.001234806, + 0.01161982, + -0.021088533, + -0.0038092525, + -0.00027769132, + -0.013943785, + 0.019628854, + -0.028630214, + -0.02658154, + -0.031703223, + -0.018937428, + 0.009948871, + 0.0069270777, + -0.0023975882, + -0.015006534, + -0.025083447, + 0.017785048, + 0.018258803, + -0.00016935568, + -0.031037405, + -0.022240913, + -0.0065813637, + 0.009539137, + 0.0028297305, + 0.012554528, + -0.0041709715, + 0.013572463, + -0.012945056, + 0.02186959, + 0.0034635388, + -0.012381671, + -0.026043763, + -0.017695418, + 0.018975839, + 0.010576277, + 0.033751898, + -0.006017979, + 0.0011875905, + 0.008886122, + -0.006779829, + -0.008169086, + -0.007925806, + -0.0134700285, + -0.019411182, + 0.013495637, + 0.014724841, + 0.0051568956, + 0.017208857, + -0.011818286, + 0.009654375, + 0.0051985094, + -0.0055346196, + -0.0143407155, + -0.028425347, + -0.022855515, + 0.0014692831, + 0.0015725171, + -0.019846525, + -0.012817014, + 0.010000088, + -0.0077145365, + 0.023623768, + 0.012938654, + 0.0025352335, + -0.0076953303, + 0.028220478, + 0.0068694586, + 0.03014111, + -0.009379084, + 0.0013644486, + 0.00019456397, + -0.025698049, + -0.0009363079, + 0.009097391, + 0.0130346855, + 0.013508442, + 0.0062068407, + 0.0019030257, + -0.020781232, + 0.016235739, + 0.017785048, + 0.021754352, + 0.0147760585, + -0.0026392678, + -0.023879852, + -0.023777418, + -0.03516036, + -0.024584083, + -0.032317825, + 0.003297084, + 0.011639027, + -0.0343665, + 0.021293402, + -0.0013892568, + -0.034929886, + 0.014814471, + 0.010140934, + 0.024007894, + -0.011735058, + 0.005621048, + 0.005496207, + -0.011062837, + -0.013329183, + -0.0008022638, + -0.016645472, + -0.004206183, + 0.033956766, + 0.01021776, + -0.003540364, + 0.017592985, + 0.005685069, + 0.00022887526, + 0.025915721, + -0.017708223, + -0.018079545, + 0.0075352774, + 0.015493094, + -0.021754352, + 0.019987373, + -0.014135848, + 0.013713309, + -0.024763342, + -0.029270424, + -0.004990441, + -0.00024067913, + -0.018604517, + 0.003260272, + -0.038207762, + 0.0041293576, + 0.006363692, + -0.007311204, + -0.0075288755, + -0.0048431926, + -0.01766981, + -0.018706951, + -0.006280465, + 0.0054065776, + -0.012016751, + 0.022663452, + 0.0018117958, + 0.0024744135, + -0.031728834, + -0.0028761458, + 0.004574304, + 0.027426617, + -0.0016309363, + -0.006219645, + -0.010749134, + 0.018002719, + 0.0298082, + -0.0058003073, + -0.0054513924, + -0.001447676, + -0.0054673976, + 0.0058195135, + 0.017746635, + -0.012644158, + -0.008930936, + 0.0139053725, + -0.018899014, + 0.005185705, + -0.015697962, + -0.019091077, + -0.006040386, + -0.01450717, + -0.014251086, + -0.0012083973, + 0.011536594, + 0.0027865162, + 0.0067350143, + -0.02503223, + 0.031242272, + 0.011318922, + -0.021843983, + 0.015377856, + -0.0051024775, + 0.009961676, + 0.0026728788, + 0.015224205, + 0.0059443545, + -0.019718483, + 0.03449454, + -0.009980882, + -0.028066829, + -0.015493094, + 0.006411708, + -0.008930936, + -0.0005221717, + 0.0000951813, + 0.002773712, + -0.013239553, + 0.02624863, + -0.0014812871, + -0.0015861215, + -0.0040013157, + -0.0234189, + -0.015313835, + 0.0026312652, + -0.02019224, + -0.0025112256, + 0.014878492, + -0.0018838194, + 0.008783688, + -0.040128395, + -0.0059443545, + -0.03129349, + 0.01037141, + -0.009660777, + -0.012176803, + -0.027247358, + 0.0011203684, + -0.008527604, + -0.004218987, + -0.009270248, + 0.0013148324, + -0.0058835344, + 0.012304846, + -0.007291998, + 0.014443149, + 0.0025832495, + -0.0008882921, + -0.012266433, + -0.0014036616, + -0.015249814, + 0.0041901777, + 0.0045839073, + -0.017132033, + 0.014161456, + -0.031395923, + -0.030345978, + 0.007266389, + -0.010198553, + -0.0011355734, + 0.011325324, + 0.014545582, + 0.03288121, + -0.0029545715, + -0.0016469415, + 0.022420172, + -0.0016901557, + -0.00083867577, + -0.038668714, + -0.018489279, + 0.0032426661, + -0.017785048, + 0.0041293576, + -0.0034763431, + -0.009942469, + -0.022522606, + 0.008277922, + 0.0034219252, + 0.007516071, + -0.0081818905, + 0.0069718924, + 0.011703048, + -0.001241208, + 0.023098795, + 0.032343436, + 0.013700505, + 0.005662662, + -0.010992414, + -0.010441833, + 0.010742732, + 0.036824908, + -0.0007582493, + -0.00068542536, + -0.0034219252, + -0.011805481, + 0.00988485, + -0.010723526, + 0.014238281, + 0.0054481914, + 0.011094848, + 0.005185705, + -0.0090525765, + -0.0049616313, + 0.017388117, + 0.0014820873, + -0.007202368, + -0.018758168, + 0.013764526, + -0.014443149, + -0.008476387, + 0.009142206, + -0.024366412, + -0.0065429513, + -0.021908004, + 0.00915501, + -0.042049024, + -0.0112292925, + -0.023610963, + -0.004641526, + -0.033828724, + 0.024609692, + 0.01718325, + -0.0170296, + -0.006178031, + -0.023982285, + -0.003902083, + -0.0021078931, + -0.013828547, + -0.02326525, + -0.038694322, + -0.03259952, + -0.0058419206, + 0.010544267, + -0.017119229, + -0.0060819997, + -0.0040589347, + 0.008521202, + 0.024379216, + 0.23068064, + 0.010909187, + -0.0053201495, + 0.03257391, + 0.0033611052, + 0.04962912, + 0.022970753, + -0.008540408, + 0.013201141, + 0.020909276, + 0.0037964482, + 0.0025256304, + 0.009379084, + 0.0043150187, + 0.0061428198, + -0.0041773734, + -0.028092436, + -0.0008682855, + -0.015800396, + 0.010019294, + 0.014635212, + -0.017797852, + 0.011280509, + 0.00383166, + 0.034725018, + -0.001922232, + -0.018169174, + -0.0018197984, + 0.023073187, + 0.0054705986, + -0.0062356503, + -0.011472573, + 0.0033354966, + -0.009097391, + -0.0070359134, + -0.005502609, + -0.01928314, + 0.008201096, + 0.020934884, + 0.026069371, + 0.012138391, + 0.012932252, + -0.032138567, + -0.021818373, + -0.0041261567, + 0.02348292, + -0.009404692, + -0.0061908355, + 0.019193511, + 0.0066261785, + -0.017759439, + -0.001922232, + 0.023777418, + 0.02350853, + 0.0011091647, + 0.023226837, + 0.022061653, + -0.011690244, + 0.029526507, + -0.014891297, + -0.014071827, + 0.023457313, + -0.018668538, + 0.0031882483, + 0.0077081346, + -0.0071575535, + -0.019808114, + 0.009475116, + 0.013457225, + -0.010569875, + 0.017746635, + 0.010992414, + 0.019628854, + 0.0056402544, + -0.006286867, + -0.003236264, + 0.024840167, + 0.008162684, + 0.026940057, + -0.017900286, + -0.0037420304, + -0.014404736, + -0.014404736, + 0.022868318, + -0.018719755, + -0.022804298, + 0.0076313093, + 0.0020566762, + 0.03569814, + -0.008674853, + -0.009263846, + -0.009583951, + 0.00976321, + -0.010032099, + 0.006238851, + 0.024776146, + -0.0134700285, + 0.022151284, + -0.02368779, + 0.0031738435, + -0.036517605, + -0.01700399, + 0.017900286, + -0.010787547, + -0.013649288, + 0.011114054, + 0.00480478, + 0.015531506, + 0.038873583, + -0.008828503, + 0.013457225, + -0.005112081, + 0.012003947, + -0.0023223637, + 0.01833563, + -0.00136845, + 0.0033835126, + -0.012618549, + -0.018450867, + -0.0139053725, + -0.00018806184, + -0.022036046, + -0.01441754, + 0.009628766, + -0.015710765, + -0.0037388294, + -0.0040877443, + 0.020077001, + 0.00031870478, + -0.040282045, + 0.03047402, + -0.0020022583, + 0.030909363, + -0.0023719799, + -0.009289455, + -0.00086748524, + -0.009526332, + -0.005243324, + 0.011504583, + -0.01012813, + -0.008636439, + -0.008918133, + 0.012445692, + -0.013738917, + 0.0056466567, + 0.0077977637, + 0.005105679, + -0.012887438, + -0.013585267, + -0.017119229, + 0.0010091318, + -0.02147266, + -0.00059219473, + 0.003473142, + 0.016146109, + -0.013111511, + -0.026376672, + -0.007618505, + -0.016389389, + 0.019539224, + -0.006824644, + 0.025864504, + -0.006472528, + -0.014225477, + -0.008905328, + 0.0014468757, + -0.16409875, + 0.024071915, + 0.004164569, + -0.004033326, + -0.013828547, + -0.0011675839, + 0.02578768, + 0.018233195, + -0.0010171344, + 0.028322913, + 0.015160184, + -0.008649244, + -0.0520107, + -0.024123132, + 0.008924535, + 0.019001449, + -0.0042285905, + -0.015224205, + 0.026402282, + 0.009961676, + -0.0029785794, + -0.029142382, + 0.012215217, + -0.0026408683, + 0.00465433, + 0.00016485421, + -0.00918702, + 0.030243544, + -0.0017877878, + -0.007080728, + -0.00465433, + -0.0052721333, + 0.0028057224, + 0.036287133, + 0.0072855954, + 0.005067266, + 0.00013964591, + 0.005172901, + 0.0010923592, + 0.003972506, + -0.008137075, + 0.024929797, + -0.006152423, + 0.009628766, + -0.019987373, + 0.022970753, + 0.03505793, + 0.021101339, + -0.0015829204, + -0.0073048016, + 0.008681254, + -0.03157518, + -0.023828635, + -0.008649244, + 0.01784907, + 0.0052049113, + 0.018566104, + 0.009808025, + -0.003850866, + 0.022586627, + 0.0036299936, + -0.0267608, + -0.0009651173, + 0.0026200614, + -0.0011043631, + -0.012810612, + 0.0030714099, + 0.008258715, + -0.031856876, + 0.014788862, + -0.013041088, + -0.0066005704, + 0.02323964, + -0.017349705, + 0.012477702, + 0.009910459, + -0.014571191, + 0.012035958, + -0.005377768, + -0.010838764, + 0.013329183, + 0.02618461, + 0.0016773515, + -0.014519975, + -0.016799124, + 0.014865688, + -0.013687701, + 0.005672265, + -0.006261259, + -0.028246088, + 0.00814988, + -0.039949134, + 0.0040013157, + -0.03877115, + 0.016094891, + 0.0133804, + -0.010448235, + -0.011158869, + -0.0011883908, + -0.021088533, + 0.011575006, + -0.010883578, + -0.012112782, + 0.01809235, + 0.024097523, + 0.024660908, + -0.00043574328, + 0.010397019, + 0.027042491, + 0.008233107, + -0.014699233, + 0.031523965, + 0.0142126735, + 0.03323973, + 0.014545582, + -0.00028869492, + 0.0083035305, + -0.034801845, + -0.0027080905, + 0.006779829, + 0.036773693, + 0.012170401, + -0.009692787, + 0.009219031, + -0.0030522035, + -0.024673713, + -0.095365755, + -0.022919536, + 0.012432888, + 0.01475045, + -0.0013924579, + 0.0151473805, + 0.010185749, + 0.03743951, + 0.00018466072, + 0.02934725, + -0.008322736, + -0.017349705, + -0.015019339, + 0.002871344, + 0.008476387, + -0.013201141, + 0.007996229, + -0.025454769, + -0.024981014, + 0.0053297523, + -0.004010919, + -0.012420083, + 0.0022039246, + -0.004270204, + -0.01629976, + -0.020269064, + -0.03920649, + 0.019936156, + 0.00498724, + -0.00471515, + 0.0152114015, + -0.0072407806, + 0.0048559965, + -0.010768341, + -0.017196054, + 0.013790134, + -0.014827276, + -0.00037292263, + 0.006101206, + -0.03144714, + 0.010268976, + 0.012003947, + 0.006510941, + -0.028578997, + -0.013508442, + 0.0040269243, + -0.013713309, + -0.011971937, + -0.009353476, + -0.01937277, + 0.010883578, + 0.037004165, + -0.0033835126, + -0.011178075, + 0.037516337, + -0.020333085, + 0.021280598, + 0.0206788, + -0.009455909, + 0.004817584, + 0.011088446, + 0.012368867, + 0.008508397, + 0.02551879, + -0.0053809695, + -0.015390661, + -0.027324185, + 0.003533962, + 0.012176803, + -0.041895375, + -0.0005985968, + 0.02092208, + -0.018745363, + 0.013226749, + -0.009603158, + -0.001101162, + -0.020755624, + -0.011523789, + 0.009558342, + -0.00032050538, + -0.026018154, + -0.020614779, + -0.006277264, + -0.02366218, + 0.0070423153, + 0.022253716, + -0.013341987, + -0.004388643, + 0.028604604, + -0.014494366, + 0.0005645856, + 0.04312458, + 0.013802938, + -0.012260031, + -0.0075352774, + 0.011901514, + 0.0122280205, + 0.018284412, + 0.00903337, + -0.019398378, + -0.021664724, + -0.0026504714, + -0.049321815, + 0.010115326, + -0.002378382, + -0.023252446, + -0.0032698752, + 0.009878448, + -0.01578759, + -0.004033326, + -0.005256128, + -0.00535216, + -0.0019750495, + -0.002357575, + -0.0050224513, + 0.00065141416, + -0.01402061, + 0.0027016883, + 0.018002719, + -0.0050288537, + 0.02722175, + 0.00053697656, + -0.0019126289, + 0.014571191, + 0.011101251, + 0.0007462454, + -0.016350977, + 0.01742653, + -0.03096058, + -0.01523701, + -0.016607061, + -0.014468757, + -0.0065493532, + -0.018194782, + 0.015006534, + 0.039283317, + -0.019257532, + -0.01903986, + -0.006155624, + 0.030243544, + 0.008822101, + -0.020179436, + -0.013687701, + -0.043508705, + 0.016632669, + -0.013303574, + -0.016325368, + 0.0188606, + -0.0016453409, + -0.012727384, + 0.005854725, + -0.0013548455, + 0.021050122, + 0.027119316, + -0.0002262744, + -0.009122999, + 0.00036051855, + -0.017144836, + 0.030089894, + 0.008834905, + 0.011120456, + -0.03190809, + 0.016607061, + -0.012490507, + -0.00034311283, + 0.011939926, + 0.008495593, + 0.008521202, + -0.017068012, + -0.014699233, + 0.0075736903, + 0.007618505, + -0.008265117, + -0.00918702, + 0.040256437, + 0.008591625, + 0.02323964, + 0.0109476, + -0.011991142, + 0.0037964482, + -0.0013764526, + 0.008124271, + 0.013239553, + -0.0077721556, + -0.019731287, + 0.02691445, + 0.020422716, + 0.031984918, + -0.038310196, + -0.0009251042, + 0.005364964, + -0.005006446, + -0.031370316, + -0.004567902, + -0.007701732, + -0.002986582, + -0.00413576, + 0.0041901777, + -0.0036620041, + 0.0020870862, + 0.015979653, + 0.035390835, + 0.013802938, + -0.0062100417, + -0.0079066, + -0.026530324, + -0.0088669155, + 0.0077209384, + -0.007804166, + -0.0036363956, + -0.012234422, + 0.0076313093, + 0.007080728, + -0.021575093, + -0.0007982625, + 0.022010436, + -0.0017189652, + -0.005726683, + -0.033316553, + -0.028809473, + -0.018783776, + 0.0065557556, + 0.0013556457, + 0.011722255, + -0.011658234, + -0.010397019, + 0.022253716, + 0.027016884, + 0.040154003, + -0.031523965, + -0.0037388294, + 0.018719755, + 0.011542995, + -0.0032506688, + 0.008469985, + -0.01937277, + -0.024443237, + -0.0075096693, + -0.019103881, + 0.02609498, + 0.016235739, + 0.054084983, + -0.004427056, + -0.03577496, + 0.017055208, + 0.001292425, + 0.007842579, + 0.013802938, + 0.0011843895, + -0.014481561, + -0.013713309, + 0.002469612, + 0.0009987283, + 0.021203771, + 0.0033451, + -0.016837535, + -0.0022279324, + -0.01912949, + 0.020000177, + -0.031088622, + -0.013028284, + 0.022304934, + 0.0052049113, + 0.012356062, + 0.0034571367, + -0.016184522, + -0.007151151, + -0.006818242, + 0.012388073, + -0.005006446, + -0.020909276, + 0.017260075, + -0.022420172, + -0.023201229, + -0.00021547085, + 0.01466082, + -0.018630126, + -0.015685158, + -0.025505986, + -0.006213243, + 0.014583996, + -0.00046975445, + 0.020819645, + -0.015838807, + -0.027452227, + -0.011542995, + -0.010064109, + -0.020025784, + 0.005979566, + -0.023841439 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 24, + "total_tokens": 24 + } +} +265 34463 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 70 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["What color is the desk?"]}HTTP/2.0 200 OK +Content-Length: 33508 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:19:48 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 84 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-59scv +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999995 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_e087ef0f59a84d74aadea6a5c5772442 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.014726514, + -0.0071365014, + 0.0019683642, + -0.024905318, + -0.01816564, + 0.0029745921, + -0.042025365, + -0.011350376, + 0.015494963, + -0.006342857, + 0.004730373, + 0.008112811, + -0.022121266, + 0.0067837704, + -0.014965867, + 0.00699163, + 0.021466194, + 0.010367768, + 0.007438842, + -0.021466194, + -0.044368505, + 0.01642718, + -0.010682707, + 0.009750489, + -0.022373216, + 0.013617931, + 0.023859724, + -0.005798014, + 0.0071365014, + 0.012849482, + 0.025043892, + -0.0020077315, + 0.0032375655, + -0.03648245, + -0.03144344, + 0.019450588, + 0.0027116186, + 0.00944185, + 0.019211235, + -0.021113463, + 0.0053161583, + 0.004629593, + 0.0036186408, + 0.003999716, + -0.002582494, + 0.012792793, + 0.015557951, + 0.012824287, + -0.0026029649, + 0.011312583, + 0.012427464, + 0.044368505, + -0.006308214, + -0.013454163, + 0.004210725, + -0.02459038, + 0.01408404, + 0.025522599, + -0.02571156, + -0.005259469, + 0.008534827, + 0.0007751418, + 0.0073569585, + 0.0065507162, + -0.012049539, + 0.004163484, + -0.010298482, + 0.00995205, + -0.012326684, + 0.013554944, + 0.025698964, + 0.035348672, + 0.022335423, + 0.019715136, + 0.023444006, + 0.0040028654, + 0.0074514397, + 0.011696808, + -0.017346801, + -0.009334771, + 0.0002572652, + 0.005684636, + -0.032174096, + -0.002036076, + 0.014978465, + 0.0061507444, + 0.006588509, + 0.012389672, + -0.031821363, + -0.010386664, + -0.014335991, + 0.029931733, + 0.029528612, + -0.0051964815, + -0.012836885, + 0.009252886, + 0.02540922, + 0.017535763, + 0.0073947506, + -0.029024713, + 0.005429536, + 0.020735536, + -0.023733748, + -0.0016660235, + -0.022310227, + -0.005873599, + 0.004465825, + 0.0014250957, + 0.020634755, + -0.02642962, + -0.035499845, + 0.018304212, + 0.02995693, + -0.01659095, + -0.0008865513, + -0.012950262, + 0.014613137, + -0.018593956, + -0.012055838, + -0.006966435, + 0.012257398, + 0.041974973, + 0.032728385, + -0.029553808, + 0.0382713, + 0.0067837704, + -0.016150035, + -0.0058798976, + -0.003628089, + 0.0044374806, + 0.010575628, + 0.01652796, + 0.0071616964, + 0.014663527, + -0.020433195, + 0.0098638665, + -0.0066326, + 0.034063723, + 0.005520868, + -0.020193843, + -0.0020502482, + 0.029478222, + -0.0032690594, + 0.001273138, + 0.0027368136, + 0.028243665, + 0.018329408, + -0.0145627465, + -0.017926287, + 0.009007235, + 0.0014652504, + -0.006213732, + 0.017573556, + 0.02678235, + 0.00095741235, + 0.024325833, + -0.025686366, + -0.0111425165, + -0.018694736, + -0.0014250957, + -0.019778123, + -0.0035556532, + 0.029075103, + -0.006027919, + 0.03345904, + 0.024628174, + 0.021718144, + 0.013328188, + -0.002443921, + 0.011306284, + -0.025169868, + 0.02673196, + -0.011444857, + 0.013995857, + 0.009126911, + 0.0138320895, + 0.021503985, + -0.0012581784, + -0.021831522, + 0.01336598, + -0.0148902815, + 0.014940672, + 0.0052783657, + 0.011986551, + 0.0068341605, + -0.012893573, + 0.016036658, + -0.02326764, + 0.018253822, + -0.008446645, + 0.015091842, + 0.01704446, + 0.0013188041, + -0.015482366, + -0.67280895, + -0.04918076, + 0.018493176, + -0.0070231236, + -0.0016408284, + 0.03393775, + 0.010374067, + 0.02592572, + -0.003026557, + -0.029100297, + 0.017271215, + 0.0066703926, + 0.01587289, + -0.007256178, + -0.0006956199, + -0.033811774, + 0.0033257483, + 0.019639552, + -0.00403121, + 0.0025935168, + -0.0019242729, + 0.015469768, + -0.008629309, + -0.0031052914, + 0.021781132, + 0.017397191, + 0.01791369, + -0.015948474, + -0.013895077, + -0.008245084, + -0.012301489, + 0.01331559, + -0.02469116, + -0.0074451407, + 0.040538855, + 0.00018354997, + -0.021151256, + 0.025182465, + -0.006506625, + 0.032476436, + -0.0037540642, + 0.011016541, + 0.0010204001, + -0.018518372, + -0.010437055, + -0.004714626, + 0.0130888345, + 0.0066011064, + 0.044116553, + -0.011955057, + 0.018845906, + -0.016288608, + 0.016805107, + 0.015318598, + 0.012515647, + 0.005164988, + 0.04414175, + 0.01985371, + 0.0035462051, + -0.003184026, + -0.008509632, + 0.018556163, + -0.02356998, + -0.015066647, + -0.017825507, + 0.0037981556, + -0.03408892, + -0.02587533, + -0.027991714, + -0.013529749, + 0.00612555, + 0.0043146545, + -0.014411576, + 0.020634755, + 0.030914342, + 0.01117401, + 0.020760732, + -0.018430188, + 0.007791573, + -0.010890566, + -0.010210299, + -0.0053571, + -0.018367201, + -0.026555596, + 0.029402638, + -0.021315023, + -0.013970662, + -0.018039664, + 0.01525561, + 0.006216882, + 0.022814129, + 0.030939536, + -0.0054169386, + -0.0012644771, + -0.0125534395, + 0.030284464, + 0.004342999, + 0.0009959923, + -0.009712697, + 0.00015924066, + 0.005098851, + -0.014827294, + 0.015583146, + 0.012767598, + 0.032224484, + -0.010840176, + -0.029830953, + 0.041849, + 0.013857285, + -0.012257398, + 0.02005527, + -0.025043892, + -0.032552022, + 0.002138431, + 0.01577211, + -0.03025927, + 0.054068603, + 0.005375996, + 0.010525238, + 0.003398184, + 0.01505405, + -0.001191254, + -0.0041004964, + -0.009422953, + 0.012597531, + -0.008150603, + -0.00883087, + -0.013844687, + -0.01612484, + 0.009712697, + 0.00653182, + 0.000116330324, + 0.01657835, + 0.0023084977, + -0.008389955, + -0.0077537806, + 0.016263412, + -0.019626953, + 0.006878252, + -0.011690509, + -0.01229519, + -0.006563314, + -0.012755, + -0.0089883385, + -0.008799376, + -0.01403365, + -0.035701405, + -0.007123904, + -0.020861512, + 0.010204, + -0.018770322, + -0.028520811, + -0.019425394, + 0.005010668, + 0.014487161, + -0.021100866, + -0.016817704, + -0.015293403, + -0.0055271666, + 0.010518938, + 0.0003253706, + 0.002409278, + -0.016956277, + 0.0045036175, + -0.0036627322, + -0.02786574, + -0.02015605, + 0.044746432, + -0.0056909346, + -0.015331196, + -0.011759795, + 0.0026360333, + -0.011281089, + -0.013605334, + -0.018102651, + -0.016049255, + -0.007224684, + -0.033232287, + -0.010109519, + -0.0134793585, + 0.0043304013, + 0.016490169, + -0.008673401, + 0.0056909346, + 0.037817787, + -0.0020045822, + 0.008515931, + 0.045250334, + -0.0074577383, + 0.013126628, + 0.007205788, + -0.011016541, + -0.005259469, + -0.0009432401, + 0.006802667, + 0.00050350756, + 0.0007310505, + -0.0036784792, + 0.0010093772, + -0.0052752164, + 0.020571768, + -0.009618215, + 0.0118605755, + -0.008648206, + 0.007527025, + -0.0122133065, + 0.01495327, + -0.0034013335, + 0.0022565327, + 0.036608424, + 0.0002501791, + -0.017838104, + 0.013378578, + -0.005470478, + 0.029150687, + -0.0031934741, + -0.02224724, + 0.010348872, + -0.023645567, + -0.015406781, + 0.007577415, + 0.013945467, + 0.030763172, + -0.014197418, + -0.01878292, + -0.01209363, + 0.037540644, + 0.015696524, + -0.0037414667, + -0.024678564, + -0.024514796, + -0.008024627, + -0.0021762236, + 0.0039209817, + -0.022751141, + 0.0039115334, + 0.004868946, + -0.018077457, + 0.005539764, + 0.0045477087, + 0.0035021137, + 0.036306083, + 0.023305433, + -0.020219037, + 0.019009674, + -0.006689289, + 0.018556163, + 0.026253255, + -0.025056489, + 0.016666533, + -0.024099078, + -0.0018786069, + -0.012389672, + 0.017901093, + 0.024628174, + -0.010065427, + 0.037061937, + -0.010033933, + 0.009347368, + 0.011350376, + -0.0032627606, + -0.009788282, + 0.0036816285, + -0.009926855, + 0.012786495, + -0.012578635, + -0.010859072, + 0.0018439636, + -0.0065129236, + -0.030939536, + -0.014361186, + -0.0016345297, + 0.012584934, + -0.0019683642, + 0.0025069087, + -0.008560022, + 0.008547425, + -0.0066451975, + 0.012339282, + 0.0055523617, + -0.005259469, + -0.021869315, + 0.02418726, + 0.0012148744, + -0.0004987835, + -0.01806486, + -0.009347368, + 0.014814696, + -0.012162916, + -0.0008715917, + 0.0084529435, + 0.024955709, + 0.004069003, + -0.00821359, + 0.0012298339, + -0.02367076, + 0.011986551, + 0.008207291, + 0.01321481, + -0.0009448148, + -0.009870166, + -0.010632317, + -0.03000732, + -0.009410356, + 0.006853057, + 0.024162065, + -0.0006842034, + -0.0014471414, + -0.014373783, + -0.0321489, + -0.0068089655, + 0.0020439494, + -0.0040564053, + 0.0077033904, + -0.013302993, + 0.0056122, + -0.03464321, + -0.015784707, + 0.027437422, + 0.018770322, + -0.0072183856, + -0.023771541, + 0.0005767307, + -0.007130203, + 0.06540638, + 0.026152475, + -0.009907958, + 0.017208228, + 0.012925067, + -0.006333409, + -0.018304212, + -0.00032340226, + -0.0043398496, + -0.009139509, + 0.012282593, + -0.0004940594, + -0.007130203, + 0.0025887927, + -0.012717208, + 0.00035666762, + 0.013328188, + 0.00038205952, + 0.017749922, + -0.031166293, + -0.011041736, + 0.011602326, + -0.009725294, + 0.00837106, + -0.010386664, + 0.020609561, + 0.005199631, + -0.0075396225, + 0.02259997, + -0.021541778, + -0.0031367852, + 0.024010895, + 0.0020266278, + -0.0058389558, + -0.008667101, + -0.017472776, + -0.017434983, + 0.008018329, + 0.00836476, + -0.006960136, + 0.023179457, + 0.0056247977, + 0.0036406866, + -0.021881912, + -0.0051964815, + 0.009460746, + -0.006081458, + 0.016464973, + -0.012629025, + -0.014147027, + 0.020773329, + -0.0039871186, + -0.019009674, + 0.0008629309, + 0.010078025, + 0.00035095934, + -0.021970095, + -0.02525805, + 0.001359746, + -0.022562178, + -0.0029919136, + 0.008018329, + 0.008679699, + 0.006588509, + -0.016162632, + -0.027739763, + -0.00089442474, + -0.00077553553, + 0.0016691729, + 0.0016644488, + -0.017901093, + -0.016767314, + -0.019223833, + -0.0020785925, + 0.033131506, + 0.029175883, + 0.024678564, + -0.035071526, + 0.0045729037, + 0.031141097, + 0.016301205, + -0.020067867, + 0.0050799544, + -0.005470478, + 0.005281515, + -0.0010440204, + 0.034315675, + -0.0109472545, + -0.00040705773, + 0.0152808055, + 0.03378658, + 0.008786778, + 0.020508781, + -0.015898084, + -0.007199489, + -0.006802667, + 0.02306608, + 0.019110454, + -0.02577455, + -0.019601759, + 0.010008738, + -0.025220258, + 0.0028958574, + -0.008245084, + -0.012440062, + 0.0063145123, + 0.014928075, + -0.00046886437, + -0.01652796, + 0.014235211, + 0.024766747, + -0.014839891, + -0.002393531, + -0.018644346, + 0.01296286, + 0.015797304, + 0.008037225, + 0.016502766, + -0.01714524, + -0.017397191, + 0.023947908, + -0.039077543, + 0.023532188, + 0.013907675, + -0.011048035, + -0.004765016, + 0.020269427, + -0.01898448, + -0.0037320186, + 0.009479642, + -0.001765229, + 0.028999517, + -0.028697176, + -0.0117346, + -0.020130854, + -0.017472776, + 0.024527393, + 0.02122684, + -0.013580139, + 0.0044532274, + -0.013920272, + 0.012792793, + -0.002102213, + -0.001168421, + -0.045930598, + -0.02566117, + -0.0098764645, + 0.019450588, + -0.022751141, + 0.023292836, + -0.006871953, + 0.015507561, + 0.001719563, + 0.011041736, + -0.0016140587, + -0.019916696, + -0.013277798, + -0.008112811, + 0.026656376, + 0.013907675, + 0.014638332, + 0.010701602, + -0.000071353206, + 0.0011731451, + 0.0003409207, + -0.016338998, + -0.0019825364, + -0.012440062, + -0.0013219535, + 0.008963143, + 0.016150035, + 0.006934941, + 0.0209245, + 0.013592736, + -0.0006782983, + 0.030989926, + -0.01672952, + -0.009561527, + -0.036633622, + -0.02612728, + 0.0079049505, + -0.014487161, + -0.020811122, + -0.0046768333, + -0.0041918284, + -0.009070222, + 0.016250815, + 0.002127408, + 0.0016053979, + -0.0037225704, + 0.032375656, + 0.0036910765, + 0.04169783, + -0.01652796, + 0.005139793, + 0.004853199, + -0.034517236, + -0.0049413815, + 0.010619719, + 0.0077789756, + 0.00826398, + 0.012515647, + 0.011671613, + -0.00806242, + 0.0003052933, + -0.0004527238, + 0.013769101, + 0.012383373, + -0.018379798, + -0.019097857, + -0.024829734, + -0.023393616, + -0.02826886, + -0.037112325, + 0.01873253, + -0.0030202582, + -0.041723024, + 0.018203432, + 0.0049476805, + -0.028394835, + -0.00068695913, + 0.0039934176, + 0.026958717, + 0.0035493544, + 0.005520868, + 0.01689329, + -0.01153304, + -0.001339275, + -0.00648143, + -0.01577211, + 0.0038265001, + 0.035399064, + 0.027286252, + -0.015129635, + 0.024703758, + 0.009618215, + -0.0044280323, + 0.010758292, + -0.0122133065, + -0.018304212, + -0.019677343, + 0.002184097, + -0.014928075, + 0.017737323, + -0.014701319, + 0.013378578, + -0.021970095, + -0.012307788, + 0.0009944176, + -0.0016817704, + -0.014348588, + 0.003480068, + -0.024225052, + 0.0234692, + 0.02786574, + 0.0027746062, + -0.016162632, + -0.0049193357, + -0.00959302, + -0.0004641403, + 0.011148815, + 0.016540559, + -0.008975741, + 0.017220825, + -0.005514569, + 0.008295475, + -0.031166293, + 0.00347062, + -0.0046673855, + 0.024199858, + -0.01280539, + -0.00026356397, + -0.012465257, + 0.01158343, + 0.029150687, + -0.012326684, + -0.0073317634, + 0.00131408, + -0.010115817, + 0.00617279, + 0.009196198, + -0.016666533, + -0.020886706, + 0.017271215, + -0.018329408, + 0.0017337352, + -0.027588593, + -0.009416655, + 0.019425394, + -0.020445794, + -0.016364193, + -0.0015140658, + 0.019488381, + 0.020030074, + 0.0042012767, + -0.008465541, + 0.027160278, + -0.00011416513, + -0.027689373, + 0.023242446, + -0.00053145835, + 0.010065427, + -0.011822783, + 0.015734317, + 0.005095701, + -0.033131506, + 0.028394835, + 0.0068089655, + -0.018430188, + -0.031720582, + 0.0055712583, + -0.019815916, + -0.0027541353, + -0.011822783, + -0.0012266845, + 0.0043807914, + 0.0168303, + 0.006878252, + -0.0019683642, + -0.0058767484, + -0.017749922, + 0.0025541494, + 0.00806242, + -0.010235494, + -0.0047114766, + 0.008673401, + -0.004979174, + 0.013403773, + -0.02597611, + -0.006903447, + -0.020647354, + 0.012755, + -0.01602406, + -0.0069223433, + -0.024779344, + -0.0044122855, + -0.011640118, + -0.00069837563, + -0.015646134, + -0.0027399631, + 0.0057161297, + 0.030334854, + -0.0030564761, + 0.009712697, + -0.008667101, + -0.0028690877, + -0.012351879, + -0.021781132, + -0.028445225, + -0.015935877, + 0.007413647, + 0.00095741235, + 0.0036910765, + -0.035600625, + -0.031141097, + 0.01000244, + 0.0063145123, + -0.026958717, + 0.015079245, + 0.0063963966, + 0.03504633, + -0.010361469, + -0.014273003, + 0.019778123, + -0.0024927366, + -0.016288608, + -0.023242446, + -0.009958348, + -0.002045524, + -0.026757156, + 0.0070546176, + -0.015016257, + -0.006383799, + -0.021768535, + 0.024174662, + -0.00398082, + 0.0034674704, + -0.010147312, + 0.009315874, + 0.008081316, + -0.0011196056, + 0.0123959705, + 0.047467496, + 0.022335423, + -0.0019179741, + -0.024955709, + -0.003867442, + -0.00010904738, + 0.03892637, + -0.005117747, + 0.0058515533, + 0.005577557, + -0.013605334, + -0.0056972336, + -0.027588593, + 0.007999432, + -0.0036721805, + 0.018505773, + 0.009479642, + -0.007256178, + -0.00030667114, + 0.02005527, + -0.0065759113, + -0.017951483, + -0.020659951, + -0.0010503192, + -0.027311448, + -0.0069538374, + 0.010367768, + -0.035247892, + 0.002853341, + -0.013542346, + 0.00087789044, + -0.02520766, + -0.03240085, + -0.01801447, + -0.001571542, + -0.03005771, + 0.02791613, + 0.0076341038, + -0.018417591, + -0.0067837704, + -0.017170435, + -0.015482366, + 0.00045036175, + -0.018342005, + -0.011249595, + -0.03383697, + -0.03000732, + 0.0011707831, + -0.0062515247, + -0.020672549, + 0.0014077742, + 0.0055901543, + 0.02663118, + 0.02087411, + 0.2332055, + 0.017346801, + 0.0050610583, + 0.0525569, + -0.0013219535, + 0.031216683, + 0.031367853, + 0.0025415518, + 0.0070294226, + 0.02781535, + 0.007432543, + -0.0074451407, + -0.006821563, + 0.009939452, + 0.010279586, + -0.013920272, + -0.033307873, + -0.022070875, + -0.0062011345, + 0.004793361, + 0.025031295, + -0.0026360333, + 0.011079528, + 0.0003480068, + 0.017246021, + 0.016666533, + -0.0029430983, + -0.0018959284, + 0.005382295, + 0.0003334409, + -0.008238785, + -0.017208228, + -0.002275429, + 0.003924131, + -0.00048776067, + -0.0025447013, + -0.012880975, + -0.002036076, + 0.019047467, + 0.0331567, + 0.015230415, + -0.016515363, + -0.03464321, + -0.0055712583, + -0.013139225, + -0.0025935168, + -0.012666818, + -0.001359746, + 0.006897148, + 0.008755284, + -0.01781291, + -0.002867513, + 0.0280673, + 0.023960505, + -0.01316442, + 0.0098764645, + 0.022184253, + -0.023632968, + 0.008629309, + -0.019047467, + -0.021718144, + 0.029075103, + -0.01500366, + 0.0077789756, + 0.0069538374, + -0.012685714, + -0.018959284, + -0.0014770605, + 0.02428804, + -0.018669542, + 0.0017699532, + 0.013580139, + 0.014713917, + -0.0043335506, + 0.004843751, + -0.009265484, + 0.022373216, + 0.0036658817, + 0.023305433, + 0.0032533125, + -0.009284381, + -0.01408404, + -0.021718144, + 0.021466194, + -0.0074640373, + -0.014386381, + 0.007035721, + -0.0027998013, + 0.035071526, + -0.003306852, + -0.0038170519, + 0.010953553, + 0.00067554263, + 0.002092765, + 0.016490169, + 0.021516584, + 0.0017101149, + 0.029327054, + -0.00847184, + 0.00073734927, + -0.03224968, + -0.002454944, + 0.008408852, + -0.005234274, + -0.019563965, + 0.017787714, + -0.00045744787, + -0.0047083274, + 0.031115903, + -0.008994637, + -0.0014148602, + -0.015910681, + 0.019312015, + -0.007980536, + -0.00070703647, + 0.0023210952, + -0.0011164562, + -0.018228628, + -0.026555596, + -0.020811122, + 0.0016439778, + -0.031241877, + -0.012099929, + 0.00842145, + -0.011287388, + -0.013240005, + 0.017346801, + 0.015117037, + -0.00043540218, + -0.036910765, + 0.008604114, + 0.007016825, + 0.031241877, + -0.010015037, + -0.017409788, + 0.009725294, + 0.005520868, + 0.0039146827, + 0.0060688606, + -0.005986977, + -0.01572172, + -0.020911902, + 0.012578635, + -0.018140445, + 0.017346801, + -0.007596311, + -0.0030690734, + -0.012698311, + -0.012326684, + -0.021390608, + -0.0023415661, + -0.013038445, + -0.0050799544, + 0.008711193, + 0.010991346, + -0.008660803, + -0.004276862, + -0.010997645, + -0.013252603, + 0.019563965, + 0.003842247, + 0.038649227, + 0.013038445, + -0.0077033904, + -0.010430756, + 0.013491956, + -0.1592328, + 0.028697176, + 0.008434047, + -0.0030926939, + -0.0134793585, + 0.009347368, + 0.013605334, + 0.02642962, + -0.008837168, + 0.032350462, + 0.004818556, + -0.009844971, + -0.032677997, + -0.014096637, + -0.0033635409, + 0.0145501485, + 0.001466825, + -0.017901093, + 0.013328188, + 0.0065759113, + 0.0076530003, + -0.02137801, + 0.0031383599, + 0.002872237, + 0.0076530003, + -0.004862647, + -0.025069088, + 0.032224484, + 0.00449102, + -0.0141848205, + -0.005398042, + -0.010241793, + -0.0057791173, + 0.021264633, + 0.0012723507, + 0.008049822, + 0.00836476, + 0.0008582068, + -0.008018329, + 0.009844971, + -0.0030706483, + 0.026706766, + -0.0039934176, + -0.0032170946, + -0.0145501485, + 0.007287672, + 0.017674336, + 0.022763738, + 0.007230983, + -0.018102651, + 0.019123053, + -0.0362305, + -0.018770322, + -0.00801203, + 0.023506993, + 0.0156209385, + 0.016981471, + 0.0034769187, + -0.0027210668, + 0.0010109519, + -0.008226188, + -0.031015122, + -0.0029509717, + 0.0022329125, + 0.0034611716, + -0.0031115902, + 0.0064940276, + -0.00267855, + -0.014159625, + 0.010682707, + -0.008427748, + -0.011942459, + 0.003892637, + -0.026958717, + 0.006827862, + 0.019979684, + -0.015646134, + -0.0035115618, + -0.005375996, + -0.0038453965, + 0.009511136, + 0.038649227, + -0.003810753, + -0.0008645056, + -0.007955341, + -0.0002421088, + -0.013542346, + -0.00852223, + -0.009611917, + -0.013958065, + 0.007344361, + -0.034265283, + 0.012282593, + -0.024716357, + 0.02995693, + 0.009215094, + -0.012874677, + -0.00006579258, + 0.0010204001, + -0.015847694, + -0.010928358, + -0.016616143, + -0.029553808, + 0.0199041, + 0.020395404, + 0.031065512, + -0.010871669, + 0.0122448, + 0.037011545, + 0.008106511, + -0.025648573, + 0.038548447, + 0.016061852, + 0.024766747, + 0.02587533, + 0.01388248, + -0.006525521, + -0.03628089, + -0.0027761809, + -0.006153894, + 0.051498707, + 0.0014660377, + -0.020370208, + 0.022310227, + -0.0033698396, + -0.0075144274, + -0.091004565, + -0.0043807914, + 0.008282877, + 0.015066647, + 0.005675188, + 0.02535883, + 0.014046247, + 0.02990654, + 0.009366265, + 0.030863952, + -0.008465541, + -0.004097347, + -0.004506767, + 0.00026139876, + 0.0014148602, + -0.009933153, + -0.002760434, + -0.02811769, + -0.031720582, + 0.012446361, + -0.003530458, + -0.015835097, + 0.006408994, + -0.0113251805, + 0.0013644701, + -0.02316686, + -0.03403853, + 0.014298198, + 0.014701319, + 0.0149028795, + 0.013000652, + -0.0152682075, + -0.009970946, + -0.00893165, + -0.036406863, + -0.0017069655, + -0.0073506595, + -0.007476635, + 0.009555227, + -0.034013335, + 0.0052941125, + 0.0152808055, + 0.003480068, + -0.043663044, + -0.0010770889, + 0.023506993, + -0.019400198, + 0.00076490635, + -0.00091489573, + -0.012414867, + 0.009189899, + 0.017409788, + 0.00028009823, + -0.016213022, + 0.03383697, + -0.011312583, + 0.019979684, + 0.024628174, + -0.019790722, + 0.0028942828, + 0.0034737692, + 0.034819577, + 0.0028753865, + 0.035499845, + 0.0007987622, + -0.013743906, + -0.027487813, + 0.0059460346, + 0.025736757, + -0.041874193, + -0.005627947, + 0.017737323, + -0.028873542, + -0.00052988366, + -0.012540842, + 0.00081883953, + -0.027538203, + 0.0042422186, + 0.009630812, + -0.0022029933, + -0.020760732, + -0.027613789, + -0.012269995, + -0.020697745, + 0.00076254434, + 0.028445225, + -0.02771457, + -0.009265484, + 0.020382805, + -0.022310227, + -0.014260406, + 0.044620454, + 0.011375571, + -0.020458391, + 0.0030533266, + 0.020937096, + 0.0009463895, + 0.00786086, + 0.010235494, + -0.015331196, + -0.014310796, + -0.003240715, + -0.055882648, + 0.010493743, + -0.012679415, + -0.03892637, + 0.0028643636, + 0.013504554, + -0.0072435807, + -0.017258618, + -0.014096637, + -0.007760079, + 0.00093457935, + 0.011470052, + -0.01010322, + -0.0056877853, + -0.009164704, + 0.0109472545, + 0.020370208, + 0.0039052346, + 0.023381017, + -0.0029525463, + -0.014877684, + 0.011388169, + -0.0030486025, + 0.007067215, + -0.02786574, + 0.016981471, + -0.03388736, + -0.027588593, + -0.019375004, + -0.021466194, + 0.015646134, + -0.01393287, + 0.01577211, + 0.036961157, + -0.021264633, + -0.020420598, + -0.009372563, + 0.037717007, + 0.01515483, + -0.027790153, + -0.004122542, + -0.029982124, + 0.017598752, + -0.015381586, + 0.0015573698, + 0.022562178, + -0.0138320895, + -0.0029871897, + 0.015217817, + -0.0074640373, + 0.022184253, + 0.028747566, + 0.00898204, + -0.0044815717, + -0.009706398, + -0.019072663, + 0.0209245, + -0.0039430275, + 0.010468548, + -0.036961157, + 0.006062562, + 0.0047083274, + 0.0042422186, + 0.023305433, + 0.007199489, + 0.0023714853, + -0.0018282167, + -0.010159909, + -0.0015400482, + -0.010657512, + -0.001678621, + -0.0000913321, + 0.04179861, + -0.007873457, + 0.028394835, + 0.0011172435, + 0.0021951199, + -0.003204497, + -0.0053445026, + 0.028571201, + -0.00075742655, + -0.012377074, + -0.03134266, + 0.0079175485, + 0.037893374, + 0.012925067, + -0.02612728, + 0.0004409136, + 0.004903589, + 0.00083616114, + -0.024149468, + -0.0032060717, + -0.016855497, + -0.0062231803, + 0.003933579, + -0.008018329, + -0.0077537806, + -0.01316442, + 0.014474563, + 0.047366716, + 0.011929862, + -0.0039682225, + -0.003703674, + -0.040992368, + -0.01204324, + 0.008673401, + -0.007363257, + -0.01776252, + -0.00444063, + 0.010751992, + 0.0039871186, + -0.0008456093, + -0.021503985, + 0.018719932, + 0.002780905, + -0.0031304865, + -0.0469384, + -0.027084691, + -0.023028286, + 0.022612568, + 0.0064215916, + 0.000785771, + 0.0042926087, + 0.009164704, + 0.021000085, + 0.02127723, + 0.042226925, + -0.030612001, + -0.0038642928, + 0.031594608, + 0.0131014325, + 0.0014691871, + 0.0037918568, + -0.008874961, + -0.010015037, + -0.009063924, + -0.008679699, + 0.028042104, + -0.0011077954, + 0.06092166, + -0.00021376436, + -0.015646134, + 0.021844119, + 0.0013479359, + 0.006802667, + 0.032627605, + -0.01565873, + -0.012975457, + -0.018140445, + -0.0055492125, + 0.0007235707, + 0.021390608, + 0.005990126, + -0.017636543, + -0.0016723223, + -0.022587374, + 0.03204812, + -0.035852574, + -0.009555227, + 0.01076459, + -0.0109598525, + 0.0022833026, + 0.010997645, + -0.021806326, + -0.0046106963, + -0.004821705, + 0.0018770321, + -0.0022896014, + -0.01005283, + 0.028596396, + -0.018820712, + -0.020659951, + -0.00760261, + 0.008849766, + -0.03388736, + -0.021894509, + -0.020067867, + 0.00003907203, + 0.012610129, + 0.0071868915, + 0.01672952, + -0.019992283, + -0.022751141, + -0.01153304, + -0.0073947506, + -0.014373783, + -0.006169641, + -0.020496184 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 6, + "total_tokens": 6 + } +} +610 1665 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 408 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the desk is orange.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What color is the desk?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 839 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:19:51 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 1550 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999925 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_f0d64514cfd142808121768c0af21580 + +{ + "id": "chatcmpl-EREMoi3S0onz2dcAdb2E6vYfoxoKg", + "object": "chat.completion", + "created": 1790158790, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "The color of the desk is orange.", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 72, + "completion_tokens": 8, + "total_tokens": 80, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_0b80e335b8" +} diff --git a/vectorstores/dolt/testdata/TestDoltAsRetrieverWithMetadataFilterNotSelected.httprr b/vectorstores/dolt/testdata/TestDoltAsRetrieverWithMetadataFilterNotSelected.httprr new file mode 100644 index 000000000..220ea47aa --- /dev/null +++ b/vectorstores/dolt/testdata/TestDoltAsRetrieverWithMetadataFilterNotSelected.httprr @@ -0,0 +1,9416 @@ +httprr trace v1 +554 167935 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 358 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["in kitchen, The color of the lamp beside the desk is black.","in bedroom, The color of the lamp beside the desk is blue.","in office, The color of the lamp beside the desk is orange.","in sitting room, The color of the lamp beside the desk is purple.","in patio, The color of the lamp beside the desk is yellow."]}HTTP/2.0 200 OK +Content-Length: 166978 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:19:58 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 124 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6659cb4779-hks7j +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999926 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_bf45f37c1a704c7883a6070d7aae084e + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.014623884, + -0.017596005, + 0.0050598374, + -0.017043663, + -0.0015764731, + 0.0011359154, + -0.009448975, + -0.02576276, + 0.010014467, + -0.02173856, + 0.0249474, + 0.008127302, + -0.018963706, + -0.008798002, + -0.025618099, + 0.0063650715, + 0.032035775, + 0.02388217, + 0.028353501, + -0.020594425, + -0.02402683, + 0.02538138, + 0.004826408, + 0.008357444, + -0.020305105, + -0.008811153, + 0.0032515784, + -0.017254079, + -0.0040505, + 0.023579698, + 0.0067168605, + -0.013558655, + 0.005138743, + -0.03156234, + -0.03766439, + 0.009659391, + 0.006871384, + -0.010777224, + 0.015886378, + -0.015189376, + -0.0040340615, + -0.000052963496, + -0.001834561, + -0.009133352, + -0.018148344, + 0.02590742, + 0.010487902, + 0.010889007, + -0.02240926, + 0.017122569, + 0.014742242, + 0.01739874, + -0.014715941, + -0.021199372, + 0.008449501, + -0.029116258, + 0.011158602, + 0.01753025, + -0.004047212, + 0.0002204843, + -0.011507102, + -0.000060669143, + -0.00082686753, + -0.013611259, + 0.009429249, + -0.0066083646, + -0.015347187, + 0.0012592059, + -0.005003946, + 0.011138875, + 0.027301423, + 0.04700158, + 0.00438585, + 0.018463967, + 0.029589692, + 0.012920832, + 0.004757365, + 0.018437667, + -6.5819086e-7, + 0.0018657945, + 0.0015805827, + -0.019463442, + -0.03140453, + -0.002475671, + 0.009600212, + -0.0059672548, + -0.016346661, + 0.0059047877, + -0.030326147, + -0.0014663336, + -0.008594162, + 0.030405054, + 0.03156234, + -0.0040603634, + -0.007851132, + 0.020423463, + 0.0068779597, + 0.037453976, + 0.014268807, + -0.03198317, + 0.010954762, + 0.009205682, + -0.034534458, + -0.0035967915, + -0.04155708, + -0.029089956, + -0.0006139861, + -0.0062631518, + 0.026959497, + -0.02035771, + -0.031009998, + 0.02050237, + 0.039374016, + -0.028721727, + -0.018108891, + -0.030457657, + -0.0009896108, + -0.040794324, + -0.025210418, + -0.0075223576, + 0.0021781302, + 0.044765916, + 0.012861653, + -0.016767493, + 0.037322465, + 0.0069174124, + -0.010159127, + -0.025026305, + -0.012039717, + 0.0005691906, + -0.0005696016, + 0.013861127, + 0.009021568, + 0.018569175, + 0.0067168605, + -0.012440822, + -0.014992111, + 0.012638086, + -0.010849554, + -0.02211994, + 0.0077130464, + 0.02685429, + -0.011658339, + 0.006897686, + -0.008515256, + 0.028853238, + 0.012631511, + 0.011901632, + -0.017438192, + -0.009685692, + 0.0011309838, + -0.027248818, + 0.011040243, + -0.0056516314, + 0.025000002, + 0.012421096, + 0.005191347, + 0.0015945557, + -0.033798005, + 0.016149396, + -0.019910576, + -0.006683983, + 0.017069966, + -0.0020482643, + 0.039216205, + 0.0337717, + 0.0042773546, + -0.0016529132, + -0.017043663, + 0.006042873, + 0.0052012103, + 0.021685958, + -0.018450817, + 0.031009998, + -0.016688587, + 0.0057502636, + 0.012019991, + 0.0035211735, + -0.016754342, + 0.014176751, + -0.022843244, + -0.008528407, + 0.019134669, + 0.013216729, + 0.009061022, + -0.0182141, + 0.030405054, + 0.0066149402, + 0.0036921361, + -0.0050729886, + 0.029747505, + 0.02538138, + -0.020554973, + -0.022803789, + -0.68385065, + -0.0296686, + 0.019936878, + -0.00556615, + 0.012532879, + 0.024855342, + 0.018056288, + 0.017609155, + 0.008732247, + -0.02496055, + 0.010731195, + 0.003217057, + 0.014084694, + -0.0087519735, + -0.0051847715, + -0.028169388, + -0.002307996, + 0.013413994, + -0.006424251, + -0.018937403, + -0.008581011, + 0.007943189, + -0.012802473, + 0.0030345875, + 0.017727513, + 0.0023885458, + 0.026735932, + 0.0023786826, + -0.01795108, + -0.014807997, + -0.024473963, + 0.014018939, + -0.009172805, + -0.019055761, + 0.04613362, + -0.013861127, + -0.021672806, + 0.025552344, + 0.014900054, + 0.03182536, + -0.011434772, + -0.009711995, + 0.013190428, + -0.019647555, + -0.00425434, + 0.008219359, + 0.021554448, + -0.0019315494, + 0.03290374, + -0.006371647, + 0.018385062, + -0.029379277, + -0.0045436616, + 0.011855603, + 0.0147027895, + 0.008101, + 0.027985273, + -0.0069831675, + 0.003422541, + 0.016991058, + 0.0053951875, + -0.0007426191, + -0.005523409, + -0.025184115, + -0.031115206, + -0.0021189507, + -0.04481852, + -0.018990006, + -0.011776698, + -0.0012378355, + 0.0008696082, + -0.005796292, + -0.006923988, + 0.012315888, + 0.02793267, + -0.008587587, + 0.032219887, + -0.01783272, + 0.002015387, + -0.0090478705, + 0.0058488958, + -0.011369018, + -0.033955816, + -0.01984482, + 0.024907947, + -0.017990533, + -0.013558655, + -0.02146239, + 0.0042905053, + -0.008705945, + 0.024184642, + -0.005155182, + -0.017267229, + -0.00869937, + -0.0121120475, + 0.040531304, + -0.0036756974, + 0.005710811, + 0.0080418205, + -0.018135194, + -0.009711995, + -0.01781957, + 0.0059836935, + 0.0033567862, + 0.031956866, + 0.00046727055, + -0.02510521, + 0.040110473, + 0.01241452, + -0.015557603, + 0.019660708, + -0.011947661, + -0.018108891, + 0.011408471, + 0.017030513, + -0.028511312, + 0.048211474, + 0.008784851, + 0.0175434, + -0.00869937, + -0.0006953578, + 0.009475277, + -0.0024329303, + -0.013861127, + 0.010566808, + 0.0037809052, + 0.006194109, + -0.01564966, + -0.036743823, + -0.0075618103, + 0.008640191, + 0.012920832, + 0.017372437, + 0.008416624, + 0.0044055763, + 0.00448777, + 0.013078644, + -0.019450292, + 0.022764336, + -0.015005262, + -0.005092715, + -0.008600737, + -0.020857446, + 0.016833248, + -0.001898672, + -0.03345608, + -0.022777488, + -0.0032762366, + -0.018306157, + 0.015478697, + -0.0189111, + -0.006424251, + -0.041899003, + 0.010297213, + 0.023290375, + -0.011086271, + -0.01288138, + -0.0042642034, + -0.014018939, + 0.025315626, + 0.0044943457, + 0.00445818, + -0.0038696742, + -0.0063486327, + -0.008410049, + -0.0148343, + -0.009231984, + 0.02592057, + -0.0011055038, + -0.031378224, + -0.0033156895, + -0.0020466205, + 0.0008141275, + -0.004504209, + -0.010514204, + -0.010468176, + -0.018937403, + -0.011579433, + 0.0061152033, + 0.002783075, + 0.02306681, + 0.0042773546, + -0.008166756, + -0.011829302, + 0.04308259, + -0.0029277357, + 0.006963441, + 0.008120727, + -0.0012674251, + 0.0013298923, + -0.013275909, + -0.011572857, + 0.005924514, + -0.0195555, + 0.007048922, + 0.0028291035, + 0.012453973, + 0.016701737, + -0.010132826, + -0.012644662, + 0.02198843, + -0.00951473, + 0.006552473, + -0.016386114, + 0.021962127, + -0.030694375, + 0.016951606, + -0.021212522, + 0.019318782, + 0.036875334, + 0.0058160187, + -0.025447136, + -0.013249607, + -0.01688585, + 0.018240402, + 0.011237508, + -0.026959497, + 0.0053655975, + 0.004244477, + -0.014229354, + 0.015071017, + 0.0076735937, + 0.024118887, + 0.003721726, + -0.015202527, + 0.0046784594, + 0.025736457, + 0.016333511, + -0.0050236722, + -0.019779066, + -0.017254079, + 0.0059014997, + -0.011724094, + 0.012066019, + -0.020028934, + -0.009554183, + 0.00843635, + -0.028932145, + 0.015399791, + 0.013887429, + -0.01159916, + 0.034297742, + 0.024750134, + 0.006230274, + 0.012874804, + -0.00032980178, + 0.01984482, + 0.004165571, + -0.022448713, + 0.003682273, + -0.010093373, + 0.010803525, + -0.0040702266, + 0.01889795, + 0.047027886, + -0.0050072335, + 0.040426094, + -0.0026351265, + 0.028432406, + 0.034350347, + -0.02361915, + -0.005168333, + 0.00012585893, + -0.0076998957, + 0.003938717, + -0.0132890595, + -0.0028110207, + -0.008725672, + -0.0034324042, + -0.0051091537, + -0.018319307, + -0.01025776, + 0.023395583, + -0.012927408, + 0.012467124, + -0.0087717, + -0.0086336145, + -0.0017836009, + 0.018937403, + 0.013532353, + -0.017556552, + -0.021962127, + 0.023566546, + -0.0011096135, + 0.0006949468, + -0.019910576, + -0.022238297, + 0.017240928, + -0.006693846, + 0.013177277, + 0.021238824, + 0.013611259, + 0.03579695, + -0.009823778, + 0.008127302, + -0.023908472, + 0.0052932673, + -0.0060724625, + 0.017556552, + 0.007180432, + -0.010474751, + -0.016228303, + -0.030115731, + -0.014860601, + 0.02982641, + 0.006148081, + -0.010067071, + 0.008410049, + -0.0112243565, + -0.032509208, + -0.01079695, + 0.01269069, + -0.00022027882, + -0.007903736, + -0.004438454, + -0.008054972, + -0.021659655, + -0.0026877304, + 0.025815362, + 0.017122569, + 0.0042937933, + -0.012848502, + -0.015833773, + 0.007325093, + 0.07390848, + 0.021357182, + 0.0035211735, + 0.0119936885, + 0.0023260787, + 0.0031397953, + -0.0310363, + 0.003346923, + -0.015820622, + -0.006437402, + 0.020344557, + -0.017425042, + -0.0013964691, + -0.00045083184, + -0.001360304, + -0.018437667, + 0.009251711, + -0.009823778, + 0.025697004, + -0.013690164, + 0.008955814, + -0.008968964, + -0.006937139, + 0.012421096, + 0.004066939, + -0.0016701737, + 0.016136246, + 0.00039021406, + 0.024250397, + -0.017477645, + 0.0007319339, + 0.014466072, + -0.0060987645, + -0.01200684, + -0.017609155, + 0.004461468, + 0.0034784328, + 0.0048921625, + 0.011625461, + -0.01295371, + 0.03390321, + 0.008087849, + 0.011027092, + -0.016543927, + -0.011152026, + 0.005779853, + -0.020015784, + 0.020568125, + -0.019792216, + -0.012066019, + 0.025578646, + 0.022106789, + -0.009488428, + 0.002423067, + 0.026814837, + 0.006092189, + -0.003115137, + -0.0069831675, + -0.0008412514, + -0.007219885, + 0.014952658, + -0.008061548, + 0.013295636, + -0.0070883753, + -0.018740138, + 0.00051370997, + -0.01443977, + -0.007298791, + -0.023158867, + 0.0005811087, + 0.0029096531, + -0.021225672, + -0.020804841, + -0.00013695507, + 0.018371912, + 0.011835877, + 0.018398214, + -0.028169388, + -0.015702264, + 0.041793797, + -0.012322463, + -0.004859285, + -0.015031564, + -0.011178329, + -0.0070554977, + 0.0085744355, + 0.025539193, + -0.026367703, + -0.011007366, + -0.014781696, + 0.022567073, + 0.002215939, + 0.007390848, + -0.00351131, + -0.010034193, + -0.020988956, + 0.013203578, + -0.00022007334, + -0.0038762498, + -0.0106391385, + -0.000099608355, + -0.018385062, + -0.0042872177, + -0.012164651, + 0.016162548, + 0.0023819702, + 0.009402947, + 0.008824304, + -0.008166756, + 0.013216729, + 0.020462917, + -0.011625461, + -0.01207917, + -0.0044351663, + 0.00072659133, + 0.017714363, + -0.009343768, + 0.018187799, + 0.008962389, + -0.020620728, + -0.0040702266, + -0.02809048, + 0.013065493, + 0.0031776042, + 0.0057601267, + 0.008114152, + 0.028169388, + -0.010027618, + -0.019594952, + 0.008488954, + -0.008265387, + 0.01929248, + -0.0069700163, + -0.016793795, + -0.03182536, + -0.021409787, + 0.036270387, + -0.001117011, + -0.008890059, + -0.0027682802, + 0.007311942, + 0.00039288535, + 0.0081601795, + 0.0064702793, + -0.032535512, + -0.02402683, + 0.0004220641, + -0.014873752, + -0.0027370467, + 0.023790114, + -0.0025660838, + 0.00032774694, + -0.008311416, + 0.016162548, + -0.004310232, + -0.013690164, + -0.0350868, + -0.0195818, + 0.025000002, + 0.022580223, + 0.023540244, + 0.0011326277, + 0.012033142, + 0.00073933136, + -0.0054708053, + -0.00081083976, + -0.019542348, + 0.0042148875, + -0.038663864, + 0.010415572, + 0.024513416, + -0.0053557344, + 0.014860601, + 0.0004820654, + 0.009100474, + 0.018884799, + 0.0039288537, + 0.0027929381, + -0.022567073, + -0.028642822, + 0.012322463, + -0.0036329567, + -0.01849027, + -0.001077558, + 0.013519201, + -0.012381642, + 0.02618359, + 0.0077130464, + -0.0027584168, + 0.014781696, + 0.025591796, + -0.0087717, + 0.032325096, + -0.007772226, + -0.004500921, + -0.0076078386, + -0.024263548, + -0.006578775, + 0.0033189773, + 0.005359022, + 0.016517624, + 0.004323383, + 0.0019331933, + -0.040031567, + 0.019792216, + 0.019358234, + 0.022475015, + -0.0016225015, + -0.009402947, + -0.024697531, + -0.025710154, + -0.029458184, + -0.03548133, + -0.035954766, + 0.019739613, + -0.0006304248, + -0.037874807, + 0.022987904, + -0.010645714, + -0.019963179, + 0.009567334, + 0.008798002, + 0.034876384, + 0.0023260787, + 0.018266704, + 0.0017474358, + 0.007594688, + -0.005336008, + 0.011441348, + 0.000022063841, + -0.009067597, + 0.017359287, + 0.012105472, + -0.009764599, + 0.020633878, + 0.009435824, + 0.027880065, + 0.018924253, + -0.010790375, + 0.004218175, + -0.0050433986, + 0.010159127, + -0.031220414, + 0.008705945, + -0.027564442, + 0.014110995, + -0.024881644, + -0.007127828, + 0.0011260522, + -0.01120463, + -0.015597056, + 0.007114677, + -0.03061547, + 0.011447923, + 0.017582852, + -0.001834561, + 0.006424251, + -0.0115202535, + -0.01578117, + 0.008982115, + -0.005529985, + 0.032193586, + -0.0006143971, + 0.006450553, + -0.00482312, + 0.0020120991, + -0.013012889, + -0.011730669, + -0.011250659, + 0.024631776, + -0.0009937205, + -0.011395319, + -0.010145977, + 0.012269859, + 0.045896903, + -0.016136246, + -0.0022603238, + -0.013078644, + -0.0011112574, + -0.003243359, + -0.0010594754, + 0.0074697537, + -0.0050960025, + 0.018542875, + -0.016846398, + -0.00830484, + -0.026551818, + -0.0011252302, + 0.008462653, + -0.008114152, + -0.006595214, + -0.029089956, + 0.0049020257, + -0.011546556, + 0.000026430376, + -0.019384537, + 0.020278802, + 0.01086928, + -0.012723568, + 0.018529722, + -0.012315888, + 0.011322989, + 0.0041754344, + 0.017582852, + -0.004859285, + -0.011789849, + 0.03387691, + -0.018950554, + -0.035297215, + -0.031799056, + -0.003912415, + -0.003218701, + 0.005986981, + 0.00024596433, + 0.011947661, + -0.0111323, + 0.01984482, + -0.019042611, + 0.0008424843, + -0.0024164915, + -0.041872703, + 0.021146767, + 0.02714361, + -0.0195555, + 0.00009390618, + 0.006923988, + -0.010632562, + -0.0006953578, + -0.026670177, + -0.0045962655, + 0.00064193195, + 0.02146239, + 0.011579433, + -0.006693846, + 0.0029178725, + -0.0006731655, + -0.018043136, + 0.0029688324, + 0.0018394926, + 0.010455024, + 0.0037776174, + -0.00078248297, + -0.022724884, + 0.016412416, + -0.011145451, + 0.010606261, + -0.006552473, + -0.024079435, + -0.006486718, + -0.01659653, + -0.002063059, + -0.0027337589, + 0.0011326277, + -0.032088377, + -0.013926882, + -0.0026088245, + -0.0002461698, + -0.010994215, + 0.0034948715, + 0.014992111, + 0.013453447, + -0.015478697, + -0.016412416, + 0.01660968, + -0.01120463, + -0.0075289328, + -0.003886113, + -0.012677539, + -0.0076801693, + -0.009192531, + 0.015347187, + 0.0029556814, + -0.0042905053, + -0.019818518, + 0.022001581, + -0.01033009, + 0.0037907683, + -0.005299843, + -0.024210945, + -0.0023523807, + 0.016228303, + 0.0222646, + 0.034297742, + 0.024237245, + -0.0028817074, + -0.013295636, + -0.016254604, + 0.014781696, + 0.030852186, + -0.0115202535, + 0.00795634, + -0.00030678758, + -0.011802999, + 0.0010808457, + -0.016149396, + 0.0014441414, + 0.021633353, + 0.015163073, + 0.02415834, + -0.008850606, + 0.017990533, + 0.024487115, + 0.008061548, + -0.019200424, + -0.009902684, + -0.022777488, + -0.045686487, + -0.0018362048, + 0.006706997, + -0.02173856, + 0.0032055501, + -0.034429252, + -0.004800106, + -0.0148343, + 0.002783075, + -0.00702262, + -0.0074039986, + -0.015478697, + 0.015991585, + 0.0175434, + -0.0059047877, + 0.010994215, + -0.020028934, + -0.007140979, + -0.008982115, + -0.010270911, + -0.014518676, + -0.024539718, + -0.003563914, + -0.0076472918, + -0.004066939, + -0.03361389, + -0.0056088907, + -0.004951342, + 0.010783799, + 0.013210154, + 0.21378224, + 0.008002368, + -0.0118161505, + 0.031956866, + -0.016162548, + 0.028695427, + 0.014860601, + -0.001768806, + 0.033245664, + 0.031088904, + -0.021554448, + -0.0005354913, + -0.0009304315, + -0.007870859, + 0.008883484, + -0.0027814312, + -0.036480803, + -0.015320885, + -0.0038400847, + -0.012026566, + 0.011152026, + -0.00096248696, + -0.000949336, + -0.00088111527, + 0.028537614, + 0.016031038, + -0.003269661, + -0.0005301487, + 0.014466072, + 0.012835351, + -0.0020548399, + -0.015965283, + 0.0031217125, + -0.008344294, + 0.003655971, + -0.0051091537, + 0.008541558, + -0.0135849565, + 0.014650186, + 0.024907947, + 0.006720148, + -0.00644069, + -0.0061349296, + -0.004116255, + -0.009330616, + 0.0016027751, + -0.016767493, + 0.0033650056, + 0.022567073, + 0.010573383, + -0.010021043, + -0.010455024, + 0.04642294, + 0.012092321, + -0.00485271, + 0.021935826, + 0.032219887, + -0.0125263035, + 0.021291427, + 0.00351131, + -0.017477645, + 0.032851133, + -0.027406631, + 0.001334002, + 0.0030855474, + 0.004556813, + -0.0091662295, + 0.0026334827, + 0.024579171, + -0.022764336, + 0.0072790645, + -0.008896634, + -0.0069305636, + 0.004911889, + -0.007884009, + -0.024184642, + 0.024789587, + -0.002168267, + 0.024934247, + 0.015807472, + -0.021436088, + -0.0022044322, + -0.013249607, + 0.015991585, + -0.004500921, + -0.008068123, + 0.00251348, + 0.013953184, + 0.021935826, + -0.0076078386, + 0.005441216, + -0.0003026779, + -0.00080097653, + 0.012677539, + 0.029484484, + 0.014755393, + -0.00543464, + 0.0015238692, + -0.018740138, + -0.0013874278, + -0.037322465, + -0.048606, + 0.007877434, + -0.0034587062, + -0.010954762, + 0.004129406, + -0.002912941, + -0.004553525, + 0.033140454, + 0.0012115336, + 0.009527881, + -0.010875856, + 0.0006078216, + 0.0018756577, + 0.00053672417, + -0.0057009473, + -0.0027238957, + -0.008107576, + -0.01228301, + -0.0105207795, + 0.001859219, + -0.0168727, + 0.00135866, + 0.001513184, + -0.0012887955, + -0.01564966, + -0.0145844305, + -0.002345805, + 0.0026827988, + -0.04210942, + 0.035849556, + -0.012901106, + 0.01713572, + 0.005691084, + 0.0050697005, + 0.010862705, + -0.0024329303, + -0.0046094167, + -0.0058488958, + -0.005503683, + -0.0028488298, + -0.008120727, + 0.0202262, + -0.0082785385, + 0.004451605, + -0.0043661236, + 0.018569175, + -0.013861127, + -0.029615995, + -0.023605999, + -0.015504999, + 0.0031792482, + -0.01847712, + -0.010941611, + 0.015320885, + -0.010895583, + -0.030063128, + -0.0020794978, + -0.0012024923, + 0.019950029, + -0.025210418, + 0.0077130464, + 0.02306681, + -0.011684641, + 0.011493952, + 0.0106391385, + -0.16927934, + 0.026880592, + 0.017714363, + -0.022198845, + 0.004826408, + 0.011684641, + 0.012763021, + 0.025000002, + -0.016280906, + 0.034981593, + -0.013847976, + 0.01295371, + -0.039926358, + -0.014321411, + 0.0024082721, + 0.002140321, + 0.0063420576, + -0.0000573814, + 0.023264075, + 0.011027092, + 0.013190428, + -0.0098698065, + 0.019739613, + 0.009422673, + 0.012098896, + -0.0020811418, + -0.014531827, + 0.017924778, + 0.00034459663, + -0.0068122046, + 0.0044713314, + -0.0029211603, + 0.0025397819, + 0.023763811, + 0.017385589, + -0.0059080753, + -0.007101526, + 0.003731589, + 0.001076736, + -0.004011047, + 0.0011630394, + 0.034218837, + 0.008909785, + -0.000055069704, + -0.00256444, + 0.016820097, + 0.019792216, + 0.016767493, + 0.0008005656, + -0.0051157293, + 0.01971331, + -0.03227249, + -0.006799054, + -0.0096330885, + 0.01688585, + 0.014768545, + 0.0104616005, + 0.002385258, + -0.010428723, + 0.014255656, + -0.0009945425, + -0.041977912, + -0.006522883, + 0.01133614, + -0.013558655, + 0.002400053, + 0.005503683, + 0.017096266, + 0.0044811945, + 0.00197429, + -0.015426093, + -0.0041359817, + -0.0031907551, + -0.020002631, + -0.009218833, + 0.000653439, + -0.004888875, + -0.010303789, + -0.006210548, + -0.023540244, + 0.005977118, + 0.021896373, + -0.024855342, + -0.004530511, + -0.00748948, + 0.009159653, + 0.0026647162, + 0.0045206477, + -0.015136772, + -0.009153078, + 0.030457657, + -0.034297742, + -0.004576539, + -0.026735932, + 0.0053392956, + 0.018029986, + 0.0019677146, + -0.00762099, + 0.0037546032, + 0.015097319, + -0.0016915441, + 0.001949632, + -0.022330355, + 0.01983167, + 0.032745928, + 0.01443977, + -0.019200424, + 0.0075618103, + 0.03387691, + -0.0063321944, + -0.017293531, + 0.026380856, + -0.0007298791, + 0.010474751, + 0.010231459, + 0.011079696, + 0.014650186, + -0.0175434, + 0.015728565, + 0.013742768, + 0.024066284, + -0.0057502636, + 0.005181484, + 0.010810101, + 0.009422673, + -0.030405054, + -0.10352447, + -0.007667018, + 0.015675962, + 0.02859022, + 0.0063387696, + 0.019226724, + 0.009324041, + 0.009902684, + -0.0063289064, + 0.033087853, + -0.00681878, + -0.02227775, + -0.01875329, + 0.0033699372, + 0.006190821, + 0.00044918797, + 0.014676488, + -0.026670177, + -0.034455553, + 0.01443977, + -0.023158867, + 0.003872962, + 0.0016208576, + -0.011454498, + -0.0070357714, + 0.013650712, + -0.01593898, + 0.0100473445, + 0.009672542, + -0.0014794846, + 0.018845346, + -0.008173331, + -0.0046225674, + -0.013808523, + -0.022054184, + -0.008475803, + 0.009304315, + 0.0048198323, + 0.031799056, + -0.03358759, + -0.0010183785, + 0.0068779597, + 0.026262496, + -0.020042086, + 0.0044811945, + 0.012368492, + -0.011355867, + 0.0137033155, + 0.0048165442, + -0.027196215, + 0.009317465, + 0.014281958, + -0.039505526, + -0.008377171, + 0.05063125, + -0.027169913, + 0.023908472, + 0.007463178, + -0.027511839, + 0.0152945835, + -0.0015189375, + 0.009389795, + 0.0035704896, + 0.033982117, + -0.02887954, + -0.01221068, + -0.05628617, + -0.017648607, + 0.023566546, + -0.023435036, + 0.0067037093, + 0.0072396114, + -0.029247768, + 0.006897686, + -0.027643349, + 0.01073777, + -0.020410312, + -0.007029196, + 0.011802999, + -0.01146765, + -0.024197793, + -0.034902688, + 0.00028788304, + -0.00610534, + -0.0042674914, + 0.015728565, + -0.012914257, + -0.011789849, + 0.019055761, + -0.01685955, + 0.009297739, + 0.028853238, + 0.009264861, + -0.014597582, + -0.009856655, + 0.025210418, + 0.0074697537, + -0.003629669, + 0.0054839565, + -0.02901105, + -0.026249345, + -0.00032260985, + -0.03603367, + 0.015702264, + -0.0027534852, + -0.021028409, + -0.017477645, + 0.012322463, + -0.012434246, + 0.008107576, + -0.014281958, + 0.005322857, + -0.011447923, + 0.0005063125, + -0.029300371, + -0.018884799, + -0.005720674, + -0.005753551, + -0.00036596696, + -0.00027925274, + 0.014926356, + 0.0019841532, + -0.001038927, + 0.0065853503, + -0.005845608, + 0.008179906, + -0.034744874, + 0.0041688588, + -0.025578646, + -0.011270385, + -0.020975804, + -0.0071607055, + 0.034508158, + -0.025578646, + 0.0042214626, + 0.03537612, + -0.021870071, + -0.032824833, + 0.0047047613, + 0.02522357, + 0.016044188, + -0.01592583, + -0.030168336, + -0.02619674, + 0.013966335, + 0.0013307142, + -0.017346136, + 0.021962127, + -0.0056614946, + 0.008758549, + -0.004165571, + 0.0088703325, + 0.024934247, + 0.018424515, + 0.016044188, + -0.00448777, + -0.0050729886, + -0.0038630988, + 0.031536035, + 0.010967913, + 0.007233036, + -0.016767493, + 0.0017868887, + -0.011112574, + 0.02307996, + 0.015544452, + -0.010244609, + 0.013690164, + 0.0037940561, + -0.0076998957, + 0.0028702002, + -0.03669122, + -0.011487376, + -0.005217649, + 0.037453976, + 0.017043663, + 0.013275909, + -0.0066774073, + -0.004510784, + -0.0126972655, + -0.0084560765, + 0.025749609, + 0.009876382, + -0.00010058441, + -0.003524461, + 0.008798002, + 0.031483434, + 0.023921622, + -0.04497633, + -0.0074829045, + 0.024921097, + 0.004800106, + -0.016478172, + 0.015583904, + 0.015873225, + 0.0073842723, + 0.019200424, + 0.0012427671, + -0.0054971073, + -0.0056746453, + -0.0049184645, + 0.01174382, + 0.020002631, + -0.014807997, + -0.012809049, + -0.029642297, + -0.01288138, + 0.015097319, + -0.0061710947, + -0.009587061, + -0.013795372, + 0.017503947, + 0.016964758, + -0.01607049, + 0.018700685, + 0.01551815, + -0.011888481, + -0.0019792216, + -0.044292483, + -0.013006314, + -0.022606526, + 0.0009764599, + 0.008863756, + 0.0047310633, + 0.014531827, + -0.0009863231, + 0.01956865, + 0.015281432, + 0.028984748, + -0.0364282, + 0.02350079, + -0.0008424843, + 0.01563651, + 0.0152945835, + -0.017753815, + -0.005737113, + -0.026775384, + -0.01159916, + -0.0025825226, + 0.018832196, + -0.0010693386, + 0.050131515, + -0.007976066, + -0.028800635, + 0.033508684, + -0.012289586, + 0.0003076095, + 0.012828776, + -0.018319307, + -0.025670702, + -0.012243558, + 0.0045173597, + 0.00830484, + 0.018819045, + -0.024210945, + -0.020896899, + -0.0028175963, + -0.02589427, + 0.021896373, + -0.028432406, + -0.0010528999, + 0.012296162, + 0.013611259, + 0.013124673, + 0.015399791, + -0.02861652, + -0.025144663, + 0.015702264, + 0.017056813, + 0.009764599, + -0.0089886915, + 0.017201474, + -0.009297739, + -0.028695427, + -0.016543927, + 0.010810101, + -0.028485011, + -0.00985008, + 0.0025611522, + 0.017280381, + 0.016320359, + 0.005513546, + 0.02144924, + -0.024368756, + -0.023540244, + -0.00022870366, + -0.019516047, + -0.0025562206, + 0.0040241983, + -0.00533272 + ] + }, + { + "object": "embedding", + "index": 1, + "embedding": [ + 0.017523589, + 0.00006212279, + -0.00040200076, + -0.02405605, + -0.0050159977, + 0.018119805, + -0.017679123, + -0.013687063, + 0.0186901, + -0.009098786, + -0.00013609296, + 0.022552546, + -0.006143625, + 0.012384459, + -0.016642224, + -0.008534973, + 0.027711118, + 0.013213978, + 0.027918497, + -0.02352464, + -0.029784916, + 0.021036083, + -0.007368461, + 0.0015593985, + -0.019182626, + -0.016020086, + 0.008035965, + -0.017873542, + -0.0028417506, + 0.018677138, + 0.0047308505, + -0.016694069, + 0.008735872, + -0.03600631, + -0.025170716, + 0.0021823477, + 0.0042383233, + -0.010057918, + 0.018080922, + -0.0109328, + 0.011917855, + 0.011483653, + -0.0006026974, + -0.012015064, + -0.008217422, + 0.012306691, + 0.028125877, + 0.0096626, + -0.009474662, + 0.019273356, + 0.0072453297, + 0.033647362, + -0.013933326, + -0.019247433, + -0.001123577, + -0.028203646, + 0.0036712694, + 0.01186601, + -0.0022098904, + -0.008709949, + -0.021087928, + -0.01817165, + 0.0004909067, + -0.007031469, + -0.0041767578, + 0.0003876219, + -0.016499652, + -0.0052914238, + 0.009636678, + 0.017886503, + 0.02784073, + 0.024937414, + 0.013220458, + 0.02195633, + 0.021723028, + 0.016110813, + -0.0038008818, + 0.000109765446, + 0.00061930396, + -0.0013325769, + -0.0013293365, + -0.020336175, + -0.043186832, + -0.016046008, + 0.0104597155, + 0.0045429124, + -0.025157755, + 0.011042971, + -0.0340362, + -0.020219525, + 0.00037830602, + 0.033362217, + 0.017199557, + -0.011885451, + -0.00018783663, + 0.018223494, + 0.020323215, + 0.02846287, + 0.0071351593, + -0.02877394, + 0.0092543205, + 0.014516582, + -0.04212401, + -0.002499898, + -0.041190803, + -0.017458782, + -0.0018421153, + -0.011567901, + 0.028955396, + -0.019921416, + -0.03958361, + 0.022669198, + 0.03927254, + -0.03004414, + -0.009280244, + -0.011898412, + -0.009882941, + -0.022928422, + -0.02006399, + 0.0071157175, + 0.007971159, + 0.037354276, + 0.008463685, + -0.0052330983, + 0.018223494, + 0.00756288, + -0.017510626, + -0.032014247, + 0.00036190194, + -0.00008986793, + 0.012572397, + 0.013298226, + 0.017497666, + 0.017186597, + -0.016564457, + -0.0134408, + -0.0032516494, + 0.014127745, + -0.006629671, + -0.021437882, + 0.0008570616, + 0.032999303, + -0.018949324, + -0.010861514, + -0.0016549876, + 0.037146896, + 0.0151646435, + -0.004578556, + -0.015618287, + -0.0035902618, + 0.0027461615, + -0.028385103, + 0.013803714, + 0.005223377, + 0.0090275, + 0.02405605, + -0.009312646, + 0.016460767, + -0.026959367, + 0.014555465, + -0.022280362, + 0.0011462591, + 0.030432977, + -0.009183034, + 0.039635453, + 0.0222674, + 0.004756773, + 0.019273356, + -0.018003155, + 0.0051618116, + -0.009144151, + 0.039039236, + -0.03730243, + 0.03214386, + -0.0048896256, + 0.0212305, + 0.0032305876, + 0.0001013609, + -0.016538534, + 0.009934786, + -0.03297338, + -0.010887437, + 0.019053014, + 0.0012418482, + 0.0033277967, + -0.008223902, + 0.011632707, + -0.011386444, + 0.011140181, + -0.0034962927, + 0.024561537, + 0.01712179, + -0.019830687, + -0.026907522, + -0.6847679, + -0.036706213, + 0.016214503, + -0.0060658576, + 0.0059070825, + 0.019947339, + 0.015216488, + 0.023174686, + 0.00283689, + -0.017692083, + 0.0030815334, + -0.000043946682, + 0.012889947, + -0.0058455165, + 0.0039142924, + -0.012015064, + -0.0053724316, + 0.012617761, + 0.0014476078, + -0.018016115, + 0.0078091435, + 0.0052168965, + -0.001502693, + 0.0027785646, + 0.023978282, + 0.0007080074, + 0.02552067, + 0.008554414, + -0.017990192, + 0.0055733304, + -0.0073555, + 0.017199557, + 0.0068240897, + -0.0033018743, + 0.044871792, + -0.013855559, + -0.025624359, + 0.01815869, + 0.027607428, + 0.012481668, + -0.005385393, + -0.017303247, + -0.0023249213, + -0.018249417, + -0.0045655947, + 0.010368987, + 0.014529543, + -0.011742878, + 0.033906586, + 0.009908863, + 0.026298344, + -0.036809903, + -0.0017805495, + 0.0009915344, + 0.015683092, + 0.010116243, + 0.03800234, + 0.0016436465, + -0.005421036, + -0.002363805, + -0.017342132, + -0.01554052, + -0.011315157, + -0.025753971, + -0.020984238, + 0.011535498, + -0.040050212, + -0.031599488, + -0.010621731, + -0.0094357785, + -0.006461175, + 0.011943777, + -0.0134408, + 0.02395236, + 0.017497666, + -0.00059095124, + 0.02763335, + -0.010245855, + -0.001565069, + -0.0036291454, + 0.02500222, + -0.014685078, + -0.027788885, + -0.023602407, + 0.04214993, + -0.015060954, + -0.012481668, + -0.011179064, + 0.015294256, + -0.011658629, + 0.032299396, + -0.0029713628, + -0.015566442, + -0.015190566, + -0.0059524467, + 0.03572116, + -0.0005998621, + -0.0016671387, + 0.012157638, + -0.009882941, + -0.0016314953, + -0.00367775, + -0.0025274407, + 0.003264611, + 0.03258454, + -0.0071027563, + -0.022643276, + 0.03025152, + 0.009202476, + -0.017355092, + 0.021062005, + -0.020413943, + -0.0176532, + 0.0026505722, + -0.00054153654, + -0.027918497, + 0.03362144, + 0.012468707, + 0.013570412, + -0.009105267, + 0.0052330983, + 0.0040179826, + -0.007731376, + -0.008735872, + 0.012857544, + 0.008943251, + -0.010122724, + -0.014736922, + -0.01731621, + -0.00050913345, + -0.0070055467, + -0.0005022478, + 0.025248483, + 0.0061533456, + -0.0036647888, + 0.00079266046, + 0.013609296, + -0.010414352, + 0.04106119, + -0.015773822, + -0.023265414, + -0.005097005, + -0.023226531, + 0.024652267, + -0.005223377, + -0.027140824, + -0.024989258, + -0.007206446, + -0.037017282, + 0.01806796, + -0.014905419, + -0.019299278, + -0.025339212, + 0.032429006, + 0.019986223, + -0.0047535324, + -0.021165695, + 0.008152616, + -0.021334192, + 0.01786058, + 0.003392603, + 0.0041346336, + -0.0018972006, + 0.006986105, + 0.0000714893, + -0.028748017, + -0.012215963, + 0.03541009, + -0.009805174, + -0.032429006, + 0.015696054, + 0.0045234705, + -0.0032224867, + 0.00703795, + -0.024069011, + -0.0096626, + -0.021139773, + -0.03266231, + 0.017082905, + -0.0099801505, + 0.012902908, + 0.021710066, + 0.0022196113, + -0.021800796, + 0.03245493, + 0.004977114, + 0.017743928, + 0.018482719, + 0.008573856, + -0.012520552, + -0.005515005, + 0.004086029, + -0.014335125, + -0.009967189, + 0.017808735, + 0.0011179064, + 0.010142165, + 0.01879379, + 0.014244396, + -0.0029567815, + 0.022034097, + -0.009241359, + 0.0071157175, + -0.010738382, + 0.005725625, + -0.048682395, + 0.019701075, + -0.008684027, + -0.0024545337, + 0.021813756, + -0.0052168965, + -0.023693135, + -0.01261128, + -0.016538534, + 0.020543555, + 0.002593867, + -0.017069945, + 0.015501636, + 0.00019077316, + -0.016201543, + 0.007919314, + 0.008210941, + 0.026596451, + 0.006594028, + -0.012319652, + 0.0066879964, + 0.038106028, + 0.006662074, + -0.011736398, + -0.012805699, + -0.02102312, + -0.0013350071, + -0.016707031, + 0.020699091, + -0.034399115, + -0.008625701, + 0.009831096, + -0.038935546, + 0.016992178, + 0.014399931, + -0.004792416, + 0.043186832, + 0.020452827, + -0.006166307, + 0.004546153, + 0.019947339, + 0.010057918, + 0.008658105, + -0.016525574, + 0.004497548, + -0.028644327, + 0.0012734412, + -0.006321842, + 0.017912425, + 0.030614434, + -0.0052492996, + 0.03416581, + 0.009526507, + 0.03318076, + 0.018210534, + -0.011114258, + -0.0064773764, + 0.0019312239, + -0.00058325555, + -0.0009615615, + -0.0055733304, + -0.008852523, + -0.011684553, + -0.013959249, + -0.014762846, + -0.011315157, + 0.011088336, + 0.028099954, + -0.015605326, + 0.014192551, + -0.013946287, + -0.010031995, + -0.014879497, + 0.020621324, + 0.014011093, + -0.013907404, + -0.039557684, + 0.02426343, + -0.011937296, + -0.007860988, + -0.018314224, + -0.025261445, + 0.020660207, + -0.0017578673, + 0.013518567, + 0.016940333, + 0.0072842133, + 0.023757942, + -0.019130781, + 0.0059070825, + -0.043446057, + 0.0040244632, + -0.002930859, + 0.024613382, + 0.0031641612, + -0.0010952243, + -0.009338569, + -0.035487857, + -0.012060428, + 0.0140759, + -0.0017287045, + -0.004977114, + 0.010524522, + -0.01112722, + -0.037250586, + -0.005061362, + 0.0023152004, + 0.0015310458, + -0.019078936, + -0.012326133, + 0.0069925855, + -0.028203646, + -0.014788768, + 0.02511887, + 0.009753329, + -0.003875409, + -0.016642224, + -0.01312325, + 0.012416862, + 0.08118917, + 0.0067592836, + -0.0043096105, + 0.00504192, + -0.0024853165, + -0.015579403, + -0.02279881, + 0.004662804, + -0.0097403675, + 0.009396895, + 0.016512612, + -0.01712179, + 0.013998132, + 0.004047145, + -0.013738908, + -0.0035578588, + 0.0058746794, + -0.0019782083, + 0.02121754, + -0.022461819, + -0.0007683581, + 0.0065713455, + -0.007303655, + 0.015851589, + 0.009202476, + -0.016421882, + 0.02090647, + 0.0032905333, + 0.027374126, + -0.0045072692, + -0.003593502, + 0.011891932, + -0.014723961, + -0.015851589, + -0.01134108, + -0.006752803, + -0.015151682, + 0.0039142924, + 0.006837051, + -0.014153668, + 0.031884637, + 0.020400982, + 0.012481668, + -0.016888488, + -0.0075369575, + 0.01292235, + -0.0085932985, + 0.022708083, + -0.0067592836, + -0.0048248195, + 0.022980267, + 0.0105828475, + -0.0034282464, + 0.0027364404, + 0.013324148, + 0.008023004, + -0.000054528315, + 0.00012606825, + 0.0016752395, + -0.010466197, + 0.013790753, + -0.013142691, + 0.011263312, + -0.0033990836, + -0.027918497, + -0.0193252, + -0.004273967, + 0.0022860377, + -0.024548577, + -0.004630401, + -0.0015221349, + -0.017614316, + -0.020945353, + -0.0027753243, + 0.02531329, + 0.016240425, + 0.0096172355, + -0.009759809, + -0.015320178, + 0.034943487, + -0.013226939, + -0.00053465087, + -0.0042804475, + 0.0012726311, + -0.007660089, + 0.0025825258, + 0.033310372, + -0.028385103, + -0.015514597, + 0.0010903638, + 0.039039236, + -0.005839036, + 0.013687063, + -0.014477698, + 0.0053141057, + -0.0044424627, + 0.0077961823, + 0.0049933153, + -0.009085825, + -0.011574382, + 0.0126890475, + -0.024885569, + -0.014309202, + -0.013635218, + 0.003998541, + 0.0186901, + 0.009779251, + 0.005485842, + -0.030821813, + -0.001733565, + 0.012377978, + -0.002331402, + -0.009798693, + -0.004277207, + 0.015397945, + 0.018236456, + -0.014412892, + 0.02615577, + 0.0064028497, + -0.020025106, + 0.017666161, + -0.038365252, + 0.023576485, + 0.006733361, + -0.009468181, + -0.00388513, + 0.027374126, + -0.001806472, + -0.012643684, + 0.013712985, + 0.0023913477, + 0.010556925, + -0.013725947, + -0.02708898, + -0.04023167, + -0.025792856, + 0.036602523, + 0.0032484091, + -0.01522945, + -0.0061630667, + 0.0041540754, + 0.014775807, + 0.0030993551, + -0.000056654768, + -0.011703994, + -0.021645261, + 0.011276273, + -0.012436304, + -0.010323623, + 0.023278376, + -0.0047114086, + -0.0024205104, + -0.012682567, + 0.012585358, + 0.004873424, + -0.020323215, + -0.020232486, + -0.023615368, + 0.022721043, + 0.0016250147, + 0.019610347, + -0.0034800912, + 0.0031430991, + -0.00483454, + -0.004380897, + -0.0019036812, + -0.0045072692, + 0.0069601825, + -0.041424103, + 0.014555465, + 0.02373202, + 0.0072647715, + 0.015099837, + -0.0053400286, + 0.010349546, + 0.029758994, + 0.0010020654, + -0.0056510977, + -0.022656238, + -0.021204578, + -0.0041443547, + -0.010485638, + -0.01335007, + -0.017471744, + 0.0020089913, + -0.0057807104, + 0.03543601, + 0.008794197, + 0.0051942146, + -0.0010449995, + 0.029136853, + -0.011457731, + 0.03727651, + -0.0072194072, + 0.00043622652, + -0.0073295776, + -0.014879497, + -0.0061922297, + 0.0042966492, + 0.011269793, + 0.01796427, + 0.011276273, + -0.0078674685, + -0.026505724, + 0.006383408, + 0.017899465, + 0.027063057, + 0.000034985205, + -0.01303252, + -0.014335125, + -0.0042998893, + -0.017277325, + -0.028099954, + -0.053452127, + 0.012047467, + -0.0004054436, + -0.030951427, + 0.027114902, + -0.014555465, + -0.012915869, + -0.00924784, + 0.003023208, + 0.023161724, + -0.0034930524, + 0.019908456, + 0.0060658576, + -0.0075693605, + -0.010518041, + 0.0017627279, + -0.011885451, + -0.0010684917, + 0.025974313, + 0.018236456, + -0.008347034, + 0.025468824, + 0.016797759, + 0.01659038, + 0.02931831, + -0.0052687414, + -0.017588394, + 0.0068111285, + 0.014970225, + -0.026350189, + 0.0062635164, + -0.02447081, + 0.02111385, + -0.017471744, + -0.02111385, + 0.0063412837, + -0.0010490499, + -0.013246381, + -0.003813843, + -0.042797994, + 0.009306166, + 0.009390414, + 0.005417796, + 0.008126694, + -0.0007420306, + -0.028877629, + -0.0039240136, + -0.0050905244, + 0.030173752, + -0.001858317, + 0.008599779, + 0.006419051, + 0.012481668, + -0.018858595, + -0.0053303074, + 0.0030539907, + 0.025637321, + -0.010122724, + 0.004423021, + -0.008003562, + 0.024872608, + 0.04728258, + -0.016007124, + -0.0051488504, + -0.0034282464, + -0.008742352, + -0.0097403675, + 0.007737857, + 0.009921825, + -0.011354041, + 0.006383408, + -0.026090965, + -0.006986105, + -0.0363433, + 0.008431283, + -0.0046206797, + -0.018988207, + -0.0013366273, + -0.0151646435, + 0.009358011, + 0.0066879964, + 0.012766816, + 0.0025015182, + 0.026116887, + 0.009358011, + -0.0135963345, + 0.027244514, + -0.02215075, + 0.02141196, + -0.0038948508, + 0.017160675, + 0.009753329, + -0.022513663, + 0.023045074, + -0.02102312, + -0.028177723, + -0.022384051, + -0.008586817, + -0.017730968, + 0.0069277794, + -0.005644617, + 0.0009356391, + -0.013259342, + 0.0015626388, + -0.02342095, + -0.012164118, + -0.008781236, + -0.026726063, + 0.011263312, + 0.028177723, + -0.018106844, + 0.0036226648, + 0.0061501055, + -0.0010296081, + -0.001040139, + -0.030536667, + -0.0023881074, + -0.012643684, + 0.0155275585, + 0.009396895, + -0.011639188, + 0.0027137583, + -0.013674102, + -0.01889748, + 0.007835066, + -0.0040536257, + 0.014490659, + 0.005631656, + -0.0009842437, + -0.026220577, + 0.01786058, + -0.015203527, + 0.013110288, + -0.014516582, + -0.03204017, + -0.018638255, + 0.0005557129, + 0.014399931, + -0.00924784, + -0.011639188, + -0.040179826, + -0.014361047, + -0.0054048346, + -0.008664585, + 0.00084491045, + 0.010965204, + 0.0134148775, + 0.021645261, + -0.011042971, + -0.011282754, + 0.016642224, + 0.0040082615, + -0.00703795, + -0.02288954, + -0.0019976501, + 0.0032386882, + -0.007187004, + 0.01228725, + 0.012714971, + -0.011405886, + -0.020543555, + 0.012896428, + -0.01292235, + -0.0031544403, + -0.008742352, + -0.007692492, + -0.00054680207, + 0.019467773, + 0.019934379, + 0.026103925, + 0.014218474, + -0.006901857, + -0.016525574, + -0.00011492969, + 0.002068937, + 0.033362217, + -0.026570529, + 0.008074849, + 0.009422817, + -0.011950257, + -0.016227465, + -0.030614434, + 0.013648179, + 0.0116651105, + 0.0084701665, + 0.011775281, + -0.0058260746, + 0.0076536085, + 0.035876695, + -0.0075175157, + -0.0052817026, + -0.00231196, + -0.008580337, + -0.03520271, + -0.010258816, + 0.0009680422, + -0.021152733, + 0.000008442523, + -0.018482719, + -0.003224107, + -0.021100888, + 0.009461701, + -0.025092948, + -0.0063121207, + -0.02225444, + 0.024522655, + 0.019078936, + -0.017730968, + 0.008437763, + -0.031703178, + -0.0027348204, + -0.0051391292, + -0.0069277794, + 0.00096075144, + -0.020802781, + -0.007193485, + -0.0068305703, + -0.0030961148, + -0.021826718, + -0.0019360844, + 0.015994163, + 0.028748017, + 0.01953258, + 0.20841664, + -0.0045105093, + -0.012099312, + 0.0422277, + -0.006338043, + 0.020128796, + 0.018949324, + -0.002362185, + 0.031780947, + 0.024626344, + -0.013933326, + 0.012008583, + -0.0058779195, + -0.0064968183, + 0.000976953, + -0.017912425, + -0.033258528, + -0.009461701, + -0.010414352, + -0.009688523, + -0.006921299, + -0.014516582, + -0.0005455869, + -0.008910848, + 0.015605326, + -0.00086192205, + -0.009818135, + 0.0023994483, + 0.025728049, + 0.018754905, + -0.016940333, + -0.016681109, + -0.010064398, + -0.02216371, + -0.0014354567, + 0.0029778434, + -0.0055182455, + -0.011807684, + 0.021619339, + 0.031806868, + 0.008787717, + -0.010330103, + -0.022954345, + -0.0015326659, + -0.012883467, + 0.02469115, + -0.015683092, + -0.011904893, + 0.01554052, + 0.0132334195, + -0.020660207, + -0.0023670453, + 0.023356143, + 0.022734005, + -0.0015918015, + 0.023615368, + 0.02142492, + -0.0035157346, + 0.0071675624, + 0.00020656966, + -0.018210534, + 0.023589445, + -0.03289561, + 0.0055538886, + 0.0031220373, + -0.0020106114, + -0.003350479, + -0.003235448, + 0.025248483, + -0.030173752, + 0.0065843067, + 0.0043225717, + -0.012274289, + 0.004179998, + -0.01428328, + -0.021969292, + 0.024146779, + -0.0069083376, + 0.019999184, + 0.008956213, + -0.019726997, + 0.0024221307, + -0.014244396, + 0.0057807104, + -0.00095346075, + -0.021710066, + 0.0023589446, + 0.0014532784, + 0.02185264, + -0.0028709134, + 0.0005103486, + -0.008029484, + 0.008800678, + 0.017355092, + 0.028099954, + 0.022604391, + 0.0020964795, + 0.0006699338, + -0.02911093, + -0.0026003476, + -0.03248085, + -0.043575667, + 0.019156704, + -0.003382882, + -0.007854507, + 0.014594349, + -0.0076341666, + 0.008347034, + 0.039428074, + 0.0034055642, + 0.012215963, + -0.013272303, + 0.006739842, + -0.0005609784, + 0.004014742, + -0.01009032, + 0.011697514, + -0.014011093, + -0.008035965, + -0.0026489522, + 0.00031593008, + -0.007608244, + 0.0058163535, + 0.0061987103, + 0.020128796, + -0.017912425, + -0.009811654, + 0.008282228, + 0.002080278, + -0.04274615, + 0.027659273, + -0.0027186188, + 0.030873658, + -0.010524522, + -0.002122402, + 0.029292388, + 0.009695003, + -0.011470692, + -0.0045720753, + 0.0021823477, + 0.005599253, + -0.012034506, + 0.0096172355, + 0.007511035, + 0.004873424, + 0.0009202476, + 0.009513546, + -0.0034476882, + -0.021697106, + -0.022202594, + -0.018288301, + 0.018262379, + -0.00787395, + -0.0050808038, + 0.01691441, + -0.013492645, + -0.01565717, + -0.016564457, + 0.00651302, + 0.026220577, + -0.011334599, + 0.010174569, + 0.009403375, + -0.0045882766, + 0.003235448, + 0.0039272537, + -0.16611117, + 0.017536549, + 0.021360114, + -0.007990601, + -0.0037781997, + 0.012040987, + 0.00041759474, + 0.028618405, + -0.01815869, + 0.026531646, + -0.0043614553, + 0.017069945, + -0.034502804, + -0.0075888024, + -0.002595487, + 0.008917329, + -0.0023103398, + -0.0108226305, + 0.02132123, + 0.01889748, + 0.0038365251, + -0.018832672, + -0.0003612944, + 0.0066361516, + 0.010077359, + -0.0036842306, + -0.0023702856, + 0.02225444, + -0.004818339, + -0.02698529, + 0.005388633, + 0.007394384, + 0.015255372, + 0.020608362, + 0.032195706, + 0.016149698, + -0.014322164, + 0.006966663, + 0.0003718254, + -0.008327593, + 0.0010595808, + 0.020310253, + 0.0036518276, + 0.015372023, + -0.01354449, + 0.014892458, + 0.020025106, + 0.0126307225, + -0.0058033923, + -0.014011093, + 0.008522011, + -0.03297338, + -0.0041637965, + -0.0053918734, + 0.014309202, + 0.030329287, + 0.019726997, + 0.007945237, + -0.008599779, + 0.009234879, + -0.016655186, + -0.0363433, + -0.0043128505, + 0.006564865, + 0.009053422, + -0.004821579, + 0.01627931, + 0.014088862, + -0.021295307, + -0.0023459834, + -0.018741945, + -0.021541571, + -0.0096172355, + -0.022111865, + -0.003425006, + 0.01417959, + -0.009306166, + -0.006772245, + -0.005835796, + -0.020323215, + 0.0017319449, + 0.034839798, + -0.0072194072, + 0.0025663243, + -0.016058968, + 0.007835066, + -0.0047211293, + 0.013790753, + -0.02090647, + -0.0036064633, + 0.03823564, + -0.034217656, + 0.0022552547, + -0.023070997, + 0.010887437, + 0.016551496, + -0.001848596, + -0.007530477, + 0.005482602, + 0.020102873, + 0.014736922, + -0.0056024934, + -0.014490659, + 0.014723961, + 0.03004414, + 0.019195586, + -0.0025128592, + 0.012844583, + 0.024496732, + -0.0014062938, + -0.019351123, + 0.02269512, + -0.009118228, + 0.01954554, + 0.011321638, + -0.0017400456, + 0.015475714, + -0.025922468, + 0.0087747555, + 0.009792212, + 0.04282392, + -0.001953906, + -0.0029276188, + 0.01008384, + -0.01944185, + -0.025365135, + -0.1075264, + -0.0002774514, + 0.0193252, + 0.03235124, + 0.0013819915, + 0.015890473, + -0.0040277033, + 0.022215554, + 0.0030944946, + 0.028203646, + -0.021256423, + -0.012591839, + -0.012572397, + -0.013816675, + 0.0035319363, + -0.010174569, + 0.0040568663, + -0.02784073, + -0.044845868, + 0.024496732, + -0.0055733304, + 0.00064968184, + 0.004497548, + -0.010064398, + -0.0047535324, + -0.0092543205, + -0.029862683, + 0.022824733, + 0.003499533, + -0.0034379673, + 0.026570529, + -0.012429823, + 0.0020284331, + -0.0013220458, + -0.021463804, + -0.0170181, + 0.0076406472, + -0.001973348, + 0.0043614553, + -0.03413989, + -0.003907812, + 0.0066555934, + 0.013298226, + -0.02541698, + 0.002112681, + 0.0055927723, + -0.015553481, + 0.015372023, + -0.010796708, + -0.009163592, + 0.008658105, + 0.018366069, + -0.031340264, + -0.0075693605, + 0.03802826, + -0.012261327, + 0.018534565, + 0.021710066, + -0.028125877, + 0.012844583, + 0.0033099751, + 0.013803714, + -0.009656119, + 0.024535615, + -0.02763335, + -0.009040461, + -0.039246615, + -0.012546474, + 0.028748017, + -0.020841664, + -0.014218474, + 0.017069945, + -0.013725947, + 0.016784798, + -0.026194654, + 0.0048896256, + -0.018923402, + -0.0058649583, + 0.011827126, + -0.01713475, + -0.031210652, + -0.021917446, + -0.005064602, + -0.002742921, + -0.004883145, + 0.02763335, + -0.011094816, + -0.008859003, + 0.021684144, + -0.006146865, + -0.0026084483, + 0.032117937, + -0.0017141232, + -0.02300619, + -0.0039531766, + 0.006176028, + -0.0055085244, + 0.00063712563, + 0.00808781, + -0.02269512, + -0.010790227, + -0.017264364, + -0.042175855, + 0.011652149, + 0.00409575, + -0.017730968, + -0.0009121468, + 0.0035578588, + -0.0027753243, + 0.0027218591, + -0.020932393, + 0.0060852994, + 0.0046206797, + 0.00058690086, + -0.010738382, + -0.02121754, + -0.01576086, + -0.0067592836, + 0.0038948508, + 0.006901857, + 0.012442784, + -0.0062959194, + 0.0024010686, + 0.00096885226, + 0.011166103, + 0.01713475, + -0.037769035, + 0.00346713, + -0.0023168207, + -0.01629227, + -0.02522256, + -0.015346101, + 0.025792856, + -0.030407054, + -0.00178541, + 0.038702246, + -0.022837695, + -0.025883583, + -0.014996148, + 0.02606504, + 0.011211467, + -0.015294256, + -0.027607428, + -0.033102993, + 0.0132334195, + -0.027244514, + -0.00777026, + 0.02877394, + -0.014153668, + -0.0017141232, + -0.00043420133, + 0.008223902, + 0.019454813, + 0.020452827, + 0.008029484, + -0.005576571, + -0.01460731, + -0.0140759, + 0.029188698, + 0.016577419, + 0.02364129, + -0.012066909, + 0.0042836876, + -0.0032516494, + 0.0064125704, + 0.012844583, + 0.005113207, + 0.014231435, + 0.011107777, + 0.0016541774, + -0.0028741537, + -0.013453761, + -0.014011093, + -0.011516056, + 0.036084075, + 0.018055, + 0.0073879035, + -0.0039434554, + 0.0027024173, + -0.009591313, + -0.029396078, + 0.031858712, + 0.020193603, + -0.0043322924, + -0.009520026, + 0.012339095, + 0.023939399, + 0.030847736, + -0.037120976, + 0.008100771, + 0.0060528964, + 0.008483128, + -0.015838629, + 0.005644617, + 0.019921416, + 0.019726997, + 0.01386852, + 0.0044716257, + -0.014062938, + -0.006111222, + 0.00021284776, + 0.031029195, + -0.0039434554, + -0.009111747, + 0.00065575744, + -0.04399043, + -0.023058034, + 0.009947747, + -0.014153668, + -0.013401916, + 0.0018566968, + 0.020400982, + 0.011250351, + 0.00043582148, + -0.0063704466, + 0.016383, + -0.006253795, + -0.0024496731, + -0.013103807, + -0.014062938, + -0.020154718, + 0.010978165, + 0.00703795, + 0.009578352, + 0.01849568, + -0.013427839, + 0.013959249, + 0.008560895, + 0.02867025, + -0.015942318, + 0.015035031, + 0.011438289, + 0.011645668, + 0.0040406645, + -0.0031884636, + 0.0021191617, + 0.00041030406, + -0.03035521, + -0.00987646, + 0.016953293, + 0.0057321056, + 0.0519227, + -0.007154601, + -0.044249654, + 0.026622374, + -0.008969174, + 0.006334803, + 0.017095868, + 0.012902908, + -0.00609178, + -0.005495563, + 0.011606785, + 0.0068759345, + 0.03569524, + -0.009176553, + -0.029033164, + -0.0072129266, + -0.024107896, + 0.022980267, + -0.025753971, + -0.003005386, + 0.009021019, + -0.014127745, + 0.010181049, + 0.008722911, + -0.020012146, + -0.005560369, + 0.011179064, + 0.008165577, + -0.003528696, + -0.0011827126, + 0.021995215, + -0.019208549, + -0.024963336, + -0.001501883, + 0.0043744165, + -0.01870306, + -0.018741945, + -0.00986998, + 0.011593823, + 0.011580862, + 0.012838102, + 0.020828703, + -0.022734005, + -0.008671066, + 0.006250555, + -0.011114258, + 0.0048280596, + 0.011062413, + -0.018366069 + ] + }, + { + "object": "embedding", + "index": 2, + "embedding": [ + 0.016153779, + -0.015616193, + -0.008981606, + -0.01708472, + 0.0021126443, + 0.014409905, + -0.021975433, + -0.0053955195, + 0.0075065247, + -0.018435238, + 0.023837313, + 0.0075327484, + -0.01509172, + 0.016783146, + -0.026525239, + -0.007637643, + 0.03511349, + -0.005415187, + 0.02217211, + -0.015353957, + -0.03875858, + 0.010004329, + -0.01960219, + 0.010850042, + -0.0075327484, + -0.015694864, + 0.008286679, + -0.024256893, + 0.016822482, + -0.0005588919, + 0.012803705, + -0.021372288, + 0.012646363, + -0.03340895, + -0.029370507, + 0.0135969715, + 0.007886767, + -0.004871046, + 0.012253009, + -0.027429955, + 0.017700976, + 0.0026518684, + -0.005215232, + -0.017910764, + -0.0037335947, + 0.022788366, + 0.025371397, + 0.00534635, + -0.011990772, + 0.020008657, + 0.00051709794, + 0.023640636, + -0.011813762, + -0.022631025, + 0.009958438, + -0.03304182, + -0.0017979601, + 0.013570747, + -0.025476292, + -0.02223767, + -0.005359462, + -0.0122989, + -0.0019290785, + -0.007781873, + 0.004313793, + -0.0018684362, + -0.0038974925, + 0.010895934, + -0.0038089876, + -0.0028846033, + 0.030655466, + 0.025135385, + -0.001303808, + 0.019562855, + 0.0118006505, + 0.0113024, + -0.0063297376, + 0.0026944818, + 0.0058609894, + -0.009348737, + -0.00017905848, + -0.023588188, + -0.02517472, + -0.0048612123, + 0.014986826, + 0.0101223355, + -0.004176119, + 0.0034975817, + -0.025830312, + -0.015026161, + -0.0028682137, + 0.02795443, + 0.030288335, + 0.0030566962, + -0.004385908, + 0.015485075, + 0.0151441675, + 0.026656358, + 0.020978933, + -0.022539241, + 0.01380676, + 0.019536631, + -0.035637964, + -0.0039991094, + -0.029318059, + -0.024322452, + 0.010279678, + 0.0008330112, + 0.037709635, + -0.02774464, + -0.027639745, + 0.021359177, + 0.021359177, + -0.020716697, + -0.018697474, + -0.023994654, + -0.0035696966, + -0.021765644, + -0.029921204, + -0.008339126, + -0.00088422926, + 0.040332, + 0.015065497, + -0.01401655, + 0.029370507, + 0.011027052, + -0.007834321, + -0.020978933, + -0.010909045, + 0.0049497173, + 0.012292344, + 0.018238561, + 0.022867037, + 0.016835595, + -0.0058675455, + -0.007237732, + -0.004654701, + 0.026931707, + -0.0075130807, + -0.030943926, + 0.0189466, + 0.028846033, + -0.0030058878, + -0.0044449116, + -0.008227675, + 0.0359002, + 0.028347785, + -0.0035238052, + -0.0015299871, + 0.0017405959, + 0.0071918406, + -0.03367119, + 0.018776145, + -0.00021327217, + 0.011426963, + -0.0030566962, + -0.0000097442435, + 0.0013783815, + -0.03359252, + -0.0033189328, + -0.014567247, + 0.004539972, + 0.027272614, + 0.010705812, + 0.020402012, + 0.021057604, + 0.00024297867, + 0.0151441675, + -0.00815556, + 0.010738592, + 0.0012194006, + 0.030734139, + -0.0169536, + 0.026931707, + -0.007145949, + 0.0134068495, + 0.004330183, + 0.0017110943, + -0.013701866, + 0.008863599, + -0.014331234, + -0.0058839354, + 0.016324233, + -0.00081703113, + 0.011453186, + -0.009558527, + 0.008981606, + -0.008837376, + 0.01408211, + -0.008752149, + 0.021936098, + 0.02246057, + -0.0018553245, + -0.018356567, + -0.69775933, + -0.03325161, + 0.0027141494, + -0.000667884, + 0.007991662, + 0.021608302, + 0.0042088986, + 0.008850488, + -0.0031075045, + -0.015668642, + -0.0011112279, + 0.009912546, + 0.004487525, + -0.010017441, + 0.008745593, + -0.032936927, + -0.011767871, + 0.02761352, + -0.0061527276, + -0.009237287, + -0.0015480159, + -0.0005322585, + -0.02695793, + -0.00213559, + 0.031337284, + 0.013977215, + 0.02474203, + -0.0036155882, + -0.00033496637, + 0.016337344, + -0.0065067476, + -0.0032714026, + -0.0075065247, + -0.01608822, + 0.040961366, + 0.0091651715, + -0.019038383, + 0.008430909, + 0.0034844698, + 0.015839094, + -0.009702757, + -0.0044481894, + -0.0049136598, + -0.02244746, + -0.006942716, + -0.0015578497, + 0.009853543, + -0.00850958, + 0.037735857, + -0.00013111833, + 0.023365287, + -0.014934379, + 0.0012964326, + -0.0038745468, + 0.024191333, + -0.0023076828, + 0.016652029, + -0.0015119583, + 0.006129782, + -0.0023896317, + -0.012200561, + 0.0026420346, + -0.018999048, + -0.017176501, + -0.012233341, + 0.007585196, + -0.03805054, + -0.018723698, + -0.0053004585, + -0.0030353894, + 0.00883082, + 0.013282287, + -0.015131056, + 0.02811177, + 0.014252563, + 0.0016799537, + 0.01652091, + -0.019038383, + 0.026774364, + 0.013131501, + 0.01694049, + -0.006303514, + -0.021188723, + -0.004199065, + 0.020179112, + -0.0113024, + -0.03275336, + -0.02881981, + 0.01644224, + -0.010791039, + 0.04413443, + 0.0019176056, + -0.004628477, + -0.009289734, + -0.002758402, + 0.025751641, + -0.009866655, + -0.00023293991, + 0.013059386, + -0.012089111, + 0.008430909, + -0.026905483, + -0.008699701, + 0.0051562283, + 0.03382853, + 0.010941825, + -0.029108271, + 0.036031317, + 0.011276177, + -0.018972823, + 0.01873681, + -0.019051494, + -0.02295882, + -0.0009342181, + 0.015537523, + -0.022985045, + 0.04568163, + 0.017714087, + 0.0072573996, + -0.0055102482, + -0.0036549235, + -0.0011267982, + -0.0064215204, + -0.024873149, + 0.007932659, + -0.012987271, + -0.0020356122, + -0.0258172, + -0.019077718, + -0.004802209, + 0.0063362936, + -0.0028796864, + 0.009184839, + 0.006480524, + -0.003220594, + -0.003622144, + 0.007926104, + -0.017425627, + 0.031337284, + -0.030209664, + -0.025843425, + -0.012954491, + -0.021136276, + -0.004975941, + -0.00757864, + -0.018081218, + -0.031153716, + -0.0062248427, + -0.029082047, + 0.017989436, + -0.03432678, + -0.019969322, + -0.03217644, + 0.019274395, + -0.00030382577, + -0.006536249, + -0.024178222, + 0.0030353894, + -0.009466744, + 0.0314684, + 0.0026469515, + 0.00944052, + -0.009899435, + -0.004884158, + -0.0017094553, + -0.03784075, + -0.000945691, + 0.032858256, + -0.0035729746, + -0.03482503, + -0.001888104, + -0.0027125105, + 0.010037108, + -0.0065559167, + -0.024584688, + -0.015668642, + -0.016756924, + -0.023470182, + 0.016861819, + -0.010384572, + 0.012515245, + 0.0151441675, + -0.0009383156, + -0.024873149, + 0.035716634, + -0.0064838016, + 0.016324233, + 0.01401655, + -0.0016602859, + 0.008273567, + -0.017032271, + -0.0033697411, + 0.0022339285, + -0.012613583, + 0.02010044, + 0.007657311, + -0.0031910925, + 0.011735091, + 0.0077687614, + -0.0018667973, + 0.015681753, + -0.0010636975, + 0.017399402, + -0.018487684, + 0.028793586, + -0.028950928, + 0.017333845, + -0.006542805, + 0.01147941, + 0.03920438, + 0.00026776822, + -0.01945796, + -0.0090471655, + -0.01147941, + 0.013288843, + 0.015327733, + -0.012259564, + 0.029868757, + 0.0046153655, + -0.01165642, + 0.002519111, + 0.00043596845, + 0.03975508, + 0.0050218324, + -0.013282287, + -0.006001942, + 0.036267333, + 0.014855707, + -0.011446631, + -0.0025928651, + -0.018461462, + -0.0035860864, + -0.020651137, + 0.0052906247, + -0.012279232, + -0.010535358, + 0.0042679016, + -0.039781302, + 0.01709783, + 0.020493796, + 0.006228121, + 0.036346003, + 0.037788305, + -0.012220229, + 0.009368405, + -0.0041269497, + 0.026210556, + 0.008529248, + -0.015825983, + 0.00022003296, + -0.022867037, + -0.0015742395, + -0.0030206386, + 0.01701916, + 0.03312049, + 0.009656865, + 0.037211385, + 0.011715423, + 0.03060302, + 0.025436956, + -0.026984153, + -0.0058577117, + 0.0135183, + -0.012325124, + 0.00022720349, + -0.0037467065, + -0.0043564066, + 0.005765929, + -0.004975941, + -0.004802209, + 0.0008735759, + 0.0048415447, + 0.02488626, + -0.015458852, + 0.01680937, + -0.011853098, + -0.020992046, + -0.004556362, + 0.017582968, + 0.008214564, + -0.006772262, + -0.040515564, + 0.0141870035, + -0.0026977598, + 0.0012898766, + -0.020742921, + -0.02782331, + 0.018527022, + -0.004798931, + 0.011813762, + 0.0102993455, + 0.018579468, + 0.02023156, + 0.0022585134, + 0.014724589, + -0.029685192, + 0.0020601968, + -0.0055758073, + 0.006231399, + 0.0069951634, + -0.0058675455, + -0.0157342, + -0.02573853, + 0.0036516457, + 0.013065942, + 0.01538018, + -0.018540133, + 0.005451245, + -0.017386291, + -0.01966775, + -0.007447521, + -0.00062158285, + -0.0013701866, + -0.005192286, + -0.011086055, + 0.0011694117, + -0.021634525, + -0.009368405, + 0.02774464, + 0.0078408765, + 0.026144996, + -0.021936098, + -0.009506079, + -0.0013398655, + 0.08349615, + 0.012167782, + -0.0063526835, + 0.009020941, + -0.0045137485, + -0.013754313, + -0.0155112995, + 0.01054847, + -0.012725035, + -0.007794985, + 0.0069754953, + -0.009833875, + 0.013819872, + 0.008135892, + -0.0004156861, + -0.0110794995, + 0.01140074, + 0.009250399, + 0.03812921, + -0.012489022, + -0.00082727475, + 0.0019241616, + -0.016652029, + 0.003930272, + 0.0013857569, + -0.011499078, + 0.027797086, + 0.015563746, + 0.018225448, + -0.004871046, + 0.0038188214, + 0.019497296, + -0.001970053, + -0.011558081, + -0.0151441675, + -0.013439629, + -0.010286233, + 0.0033156548, + 0.012305455, + -0.021726308, + 0.029527849, + 0.018553244, + 0.014265675, + -0.020323342, + -0.002442079, + 0.010535358, + -0.0060773348, + 0.010482911, + -0.007342627, + 0.0026174497, + 0.023811089, + 0.005415187, + 0.0012267759, + -0.011571193, + 0.009243842, + 0.01987754, + -0.0024617468, + -0.001981526, + 0.0021536187, + -0.010319013, + 0.0059724404, + -0.01674381, + 0.0024174943, + -0.015340845, + -0.023325952, + -0.0045366944, + 0.00041671045, + -0.001494749, + -0.0036418117, + 0.0026272836, + -0.002351935, + -0.020047994, + -0.022040993, + 0.0075917514, + 0.028059324, + 0.016035773, + 0.009427409, + -0.0055102482, + 0.007073834, + 0.03854879, + -0.010279678, + 0.0005187369, + -0.018540133, + -0.0066411435, + -0.012226785, + 0.010423908, + 0.021555854, + -0.024191333, + -0.0038712688, + -0.009919102, + 0.023876648, + 0.0005437313, + 0.00040953993, + -0.017386291, + -0.0010825457, + -0.0147901485, + 0.018343454, + 0.0015988242, + -0.015603082, + -0.006480524, + 0.0036155882, + -0.02194921, + -0.014436129, + -0.0067525944, + 0.010509134, + 0.023627523, + 0.021005157, + 0.01701916, + -0.018291008, + -0.00021655012, + 0.0280331, + -0.011131947, + 0.0017455128, + -0.008358794, + 0.003553307, + 0.014606583, + -0.017294507, + 0.02631545, + 0.013282287, + -0.024322452, + 0.004825155, + -0.03081281, + 0.019654639, + -0.0025076382, + -0.0049103815, + 0.0016176725, + 0.014475464, + -0.01509172, + -0.0011612168, + 0.0014644279, + 0.00095552485, + 0.016979825, + -0.008883268, + -0.01981198, + -0.042797025, + -0.025017379, + 0.006205175, + -0.007709758, + -0.018028772, + -0.0055102482, + -0.008070334, + 0.020821592, + 0.022355676, + -0.0020749476, + -0.026158107, + -0.01694049, + 0.0057233153, + 0.0072967354, + -0.0009669977, + 0.011558081, + -0.0033599073, + -0.00025568076, + -0.025358286, + 0.02152963, + 0.007349183, + -0.0059658843, + -0.02517472, + -0.021280507, + 0.012600472, + 0.01083693, + 0.030209664, + -0.004726816, + -0.0023863537, + 0.0031271724, + -0.010246898, + 0.0024240501, + -0.017438738, + -0.006539527, + -0.03503482, + 0.0058577117, + 0.013885432, + 0.0019503853, + 0.02181809, + -0.002196232, + 0.00865381, + 0.012534913, + -0.0019110497, + -0.007001719, + -0.023221057, + -0.030786585, + 0.001334129, + -0.0037991537, + -0.023181722, + -0.011131947, + 0.008942271, + -0.011826874, + 0.03262224, + 0.016271785, + 0.0043400167, + -0.0059167147, + 0.023352176, + 0.0022716252, + 0.028059324, + -0.008142449, + -0.005431577, + -0.016638916, + -0.022119664, + -0.0060150535, + 0.014488576, + 0.00929629, + 0.021568965, + 0.005431577, + -0.00045768495, + -0.022919485, + 0.023207946, + 0.018985935, + 0.028426455, + 0.003471358, + -0.007185285, + -0.01952352, + -0.012200561, + -0.026577687, + -0.026525239, + -0.03553307, + 0.010305901, + 0.0018241839, + -0.025895871, + 0.026053213, + -0.0011522024, + -0.019575967, + 0.012856153, + -0.00054004363, + 0.01616689, + -0.004874324, + 0.01151219, + -0.0011661337, + 0.0005957689, + -0.012253009, + -0.0034779138, + -0.014357458, + -0.010686144, + 0.02645968, + 0.010994272, + -0.0019995547, + 0.01687493, + 0.02045446, + 0.013583859, + 0.033146717, + -0.011984216, + -0.013649419, + 0.017530521, + 0.012200561, + -0.022853926, + 0.008083445, + -0.03411699, + 0.016927376, + -0.010502579, + -0.020651137, + -0.0024928874, + -0.012397239, + -0.01902527, + -0.003930272, + -0.042036537, + 0.009630642, + 0.011649864, + -0.0059724404, + 0.0019389124, + -0.01104672, + -0.017110942, + -0.012541469, + -0.0035762526, + 0.016363569, + -0.004231844, + 0.014173892, + -0.009217619, + -0.000510542, + -0.02782331, + -0.002591226, + -0.00002306095, + 0.02517472, + -0.0025076382, + -0.006287124, + -0.014436129, + 0.021306729, + 0.03747362, + -0.010201006, + -0.0076638665, + 0.006392019, + -0.007309847, + -0.0009768317, + 0.025397621, + 0.004871046, + -0.016350456, + 0.0070935017, + -0.01937929, + 0.009027497, + -0.020939598, + -0.0049136598, + -0.012115334, + -0.0050710016, + -0.000452768, + -0.008673478, + 0.0076769786, + -0.0034910257, + 0.008489912, + -0.018120553, + 0.03288448, + 0.0101813385, + -0.008424353, + 0.020978933, + -0.011984216, + 0.01544574, + 0.00093995454, + 0.013793649, + 0.004097448, + -0.018802369, + 0.03524461, + -0.013039718, + -0.029029598, + -0.009519191, + 0.0076966463, + -0.0056282547, + -0.0038417673, + -0.0020913375, + 0.011145058, + 0.0014095221, + 0.020611802, + -0.01652091, + -0.015891543, + 0.003845045, + -0.028767362, + -0.0017373179, + 0.010345236, + -0.016861819, + -0.005739705, + 0.008817708, + 0.0020192224, + 0.011610528, + -0.045366943, + -0.014816372, + -0.015616193, + 0.017936988, + -0.006244511, + -0.01387232, + -0.017556746, + 0.0046415892, + -0.000989124, + 0.009191396, + -0.009381517, + 0.010909045, + -0.008286679, + -0.0064543, + -0.01422634, + 0.021647638, + -0.01859258, + 0.006772262, + -0.021228058, + -0.009964993, + -0.010771371, + 0.010856598, + -0.0057134815, + -0.01658647, + 0.0027207055, + -0.039650183, + -0.021214947, + -0.01265292, + -0.021123163, + -0.002052002, + 0.0089160465, + 0.015957102, + 0.0314684, + -0.007939215, + 0.0011284371, + 0.021398513, + 0.008306347, + 0.0102993455, + -0.036949147, + -0.013282287, + -0.000113601745, + -0.018186113, + 0.016429128, + 0.011787538, + 0.0015094999, + -0.009079944, + 0.002910827, + -0.009984661, + 0.008470245, + -0.0147901485, + -0.014593471, + 0.0024978044, + 0.018225448, + 0.018212337, + 0.031704415, + 0.013354402, + -0.013623195, + -0.012790593, + -0.006188785, + 0.021700084, + 0.025292726, + -0.010305901, + 0.0034057987, + -0.0008752149, + -0.013164281, + 0.011767871, + -0.007388518, + 0.010397684, + 0.004199065, + 0.006451022, + 0.007834321, + -0.010941825, + 0.00086128357, + 0.015209727, + -0.0070935017, + -0.0062609003, + -0.00000721535, + 0.0002074333, + -0.03288448, + -0.0057888743, + 0.01416078, + -0.007853989, + -0.0061035585, + -0.026197443, + 0.0023388234, + -0.04083025, + 0.0055430275, + -0.021306729, + -0.002192954, + -0.024374899, + 0.016035773, + 0.015655529, + -0.031520847, + -0.006451022, + -0.026669469, + -0.002045446, + 0.0030058878, + -0.010817262, + -0.016153779, + -0.020847816, + -0.017045384, + 0.002286376, + 0.011289288, + -0.025279615, + -0.012836485, + -0.0028944372, + 0.01644224, + 0.02874114, + 0.21398512, + 0.01408211, + -0.017320732, + 0.03503482, + -0.009152059, + 0.03917816, + 0.023719307, + -0.007493413, + 0.022001656, + 0.024309339, + -0.011944881, + 0.0053102924, + 0.0023125997, + -0.0033189328, + -0.00028456777, + -0.004330183, + -0.032360006, + 0.0010284594, + -0.011630196, + -0.0061789514, + 0.0024928874, + -0.007152505, + 0.013623195, + -0.006244511, + 0.022683471, + 0.010207563, + -0.009152059, + 0.0021011713, + 0.03262224, + 0.018710587, + -0.011957992, + -0.006677201, + 0.0072967354, + -0.008142449, + -0.0036319778, + -0.0020175835, + -0.011145058, + 0.0014586914, + 0.007939215, + 0.026538352, + 0.011885877, + 0.008811153, + -0.024125773, + -0.018330343, + -0.00039233064, + 0.028583797, + -0.007657311, + -0.0089160465, + 0.022355676, + 0.010863154, + -0.026617022, + -0.008522692, + 0.033225387, + 0.017674752, + -0.001057961, + 0.032648467, + 0.019995546, + -0.00801133, + 0.016901154, + -0.006700147, + -0.008614475, + 0.020205336, + -0.019156389, + -0.0072246203, + 0.010607474, + -0.0027272613, + -0.007650755, + 0.015642418, + 0.009643754, + -0.014960602, + 0.023207946, + 0.01276437, + 0.010876266, + 0.0044645793, + -0.017609192, + -0.018002547, + 0.023719307, + 0.012613583, + 0.014895042, + -0.010522246, + -0.012384127, + -0.0036778692, + 0.0014324678, + 0.023561966, + -0.010142003, + -0.02252613, + -0.008548915, + 0.013465853, + 0.036922924, + 0.0043498506, + -0.0018667973, + -0.009846987, + 0.0146721415, + 0.0069230483, + 0.0009784705, + 0.024204444, + -0.014580359, + 0.018041883, + -0.035506845, + 0.0062740124, + -0.036660686, + -0.024440458, + 0.022198334, + -0.009669977, + -0.007408186, + 0.008857043, + -0.0030517792, + 0.018081218, + 0.037945647, + -0.0035991983, + 0.015498187, + -0.011669531, + 0.008017886, + -0.0011972743, + 0.015760424, + -0.013623195, + 0.011453186, + -0.01558997, + -0.018238561, + -0.0104173515, + 0.0043826303, + -0.01766164, + -0.012357903, + 0.00740163, + -0.0010931991, + -0.0038024317, + -0.015563746, + 0.01679626, + 0.00008609763, + -0.030550571, + 0.032727137, + -0.000109709166, + 0.025895871, + 0.0047464836, + -0.005457801, + 0.0040515563, + -0.01722895, + -0.00037286777, + 0.0039171604, + -0.008450577, + -0.0015439184, + -0.01645535, + 0.0038089876, + -0.0066444217, + -0.0030501403, + 0.0067394823, + 0.018382791, + -0.013321623, + -0.014514799, + -0.026787477, + -0.008765261, + -0.006080613, + -0.0072246203, + -0.013341291, + 0.02331284, + -0.02066425, + -0.01981198, + -0.0031058656, + 0.0027338173, + 0.02294571, + -0.017818982, + 0.008771816, + 0.00028907496, + -0.013741202, + -0.0050742794, + 0.0058708233, + -0.16971958, + 0.013688754, + 0.018173002, + -0.017753422, + -0.0055364715, + 0.004726816, + 0.013819872, + 0.02524028, + -0.0084440205, + 0.031232387, + -0.0028616576, + 0.013380626, + -0.059003253, + -0.00955197, + 0.005274235, + 0.015078609, + -0.014750813, + -0.0072705117, + 0.024348674, + 0.008293235, + -0.0040450008, + -0.024060214, + 0.012738146, + -0.006523137, + -0.00075966684, + 0.004952995, + -0.012790593, + 0.029632743, + -0.0025650025, + -0.0069623836, + -0.0029583573, + 0.00772287, + 0.00048554759, + 0.025279615, + 0.022054104, + -0.0006715717, + -0.000104228835, + 0.00613306, + 0.0019864428, + -0.0045596403, + 0.0005298, + 0.018081218, + -0.0009112724, + 0.0029468846, + -0.017543633, + 0.02031023, + 0.032936927, + 0.010325569, + -0.007906436, + -0.005913437, + 0.020913374, + -0.041276053, + -0.010909045, + -0.004972663, + 0.0139509905, + 0.009525747, + 0.014895042, + 0.016245563, + -0.008280123, + 0.015550635, + 0.001181704, + -0.040568013, + -0.0026993987, + 0.0071918406, + -0.005113615, + -0.011603973, + 0.012161226, + 0.0032074822, + -0.023194833, + 0.0129348235, + -0.019287508, + -0.0138329845, + 0.012849597, + -0.020205336, + 0.0077556497, + 0.0049136598, + -0.004441634, + 0.013544524, + -0.004012221, + -0.019864427, + 0.0033336836, + 0.029868757, + 0.0016996214, + -0.0023486572, + -0.013714978, + 0.022277005, + -0.00740163, + 0.016193114, + -0.0122136725, + -0.027875759, + 0.027193943, + -0.04418688, + 0.004408854, + -0.030078545, + 0.0018717143, + 0.017268285, + -0.00045317775, + -0.011984216, + -0.0017569857, + -0.0045301383, + 0.00441541, + -0.0023027658, + -0.008896379, + 0.021398513, + 0.029763862, + 0.024007767, + 0.000045456065, + 0.0069492715, + 0.022919485, + 0.004887436, + -0.020257782, + 0.020769143, + 0.006074057, + 0.020874038, + -0.00045399723, + 0.0012382488, + 0.004562918, + -0.022840815, + 0.008214564, + 0.01766164, + 0.0280331, + 0.0013882153, + -0.005120171, + -0.0032566516, + -0.005674146, + -0.018238561, + -0.09676533, + -0.023404622, + 0.012528357, + 0.018330343, + 0.0030435843, + 0.011649864, + 0.0040318887, + 0.027141495, + -0.014711477, + 0.037001595, + -0.0071328375, + -0.013354402, + -0.014763924, + 0.0032337059, + 0.009433964, + -0.0083850175, + 0.0030337505, + -0.02230323, + -0.030340783, + 0.009866655, + -0.016625805, + -0.0046973145, + 0.0007965439, + -0.010135448, + -0.02495182, + -0.015747312, + -0.029134493, + 0.014108333, + 0.0056315325, + -0.01151219, + 0.025646746, + -0.014816372, + 0.011361403, + 0.00050890306, + -0.005831488, + 0.006831265, + -0.0124496855, + 0.0025502515, + 0.010423908, + -0.037001595, + -0.002196232, + 0.0006191244, + 0.008457133, + -0.0056512, + -0.00035156103, + -0.0077032023, + -0.01530151, + 0.00033496637, + -0.0054774685, + -0.027508626, + 0.0009293012, + 0.030130994, + -0.024401123, + -0.0031271724, + 0.03697537, + -0.020834703, + 0.015799759, + 0.022919485, + -0.018028772, + 0.011630196, + 0.014829484, + 0.008817708, + -0.0011358126, + 0.03524461, + -0.004628477, + -0.016061995, + -0.032648467, + -0.014606583, + 0.014842596, + -0.0304719, + -0.013144613, + 0.0077490937, + -0.021293618, + 0.012947936, + -0.019995546, + -0.00047981116, + -0.006805042, + -0.016507799, + 0.003690981, + -0.004090892, + -0.028216666, + -0.020638026, + 0.00029665523, + -0.002751846, + 0.003138645, + 0.02109694, + -0.0075327484, + -0.015498187, + 0.03841767, + -0.015367069, + 0.013714978, + 0.028137995, + 0.0067394823, + -0.008693146, + -0.012318567, + 0.018395903, + 0.011879321, + 0.012489022, + 0.009309402, + -0.017740311, + -0.020113552, + -0.009506079, + -0.047779523, + 0.019012159, + 0.0016766757, + -0.022342565, + -0.0028567407, + 0.013478965, + -0.013321623, + 0.008627586, + 0.0028551018, + -0.00173404, + -0.015891543, + -0.0014808177, + -0.01279715, + -0.0035762526, + -0.019326843, + -0.00068878103, + 0.009007829, + -0.0042810137, + 0.033566292, + 0.004572752, + 0.007309847, + 0.0036778692, + 0.007939215, + 0.00009946555, + -0.02424378, + 0.006519859, + -0.01966775, + -0.011033608, + -0.026197443, + -0.011630196, + 0.006398575, + -0.020493796, + 0.0020044716, + 0.047386166, + -0.01437057, + -0.027508626, + 0.004595698, + 0.032438677, + 0.004015499, + -0.013623195, + -0.032779586, + -0.0314684, + 0.027429955, + -0.012495577, + -0.016783146, + 0.013269176, + -0.011636753, + -0.0054053534, + 0.003304182, + -0.0020913375, + 0.01322984, + 0.016625805, + 0.0013218367, + -0.0075917514, + -0.0026617022, + -0.012233341, + 0.038942147, + 0.008339126, + 0.0068968246, + -0.020729808, + 0.014134556, + -0.0036516457, + 0.0034844698, + 0.02617122, + 0.00940774, + 0.0072246203, + -0.0068247095, + -0.015550635, + 0.0047530397, + -0.0017160112, + -0.01844835, + -0.0057757627, + 0.031048821, + 0.018356567, + 0.019287508, + 0.0027223444, + -0.012397239, + 0.0018815481, + -0.0098273195, + 0.017438738, + 0.018068107, + -0.008666922, + -0.001494749, + 0.016638916, + 0.024912484, + 0.046756797, + -0.03739495, + -0.006690313, + 0.004425244, + 0.0006056028, + -0.017530521, + 0.0013013495, + -0.0014488576, + -0.0016766757, + -0.0017209281, + 0.000055417982, + -0.010201006, + 0.008712813, + 0.010135448, + 0.032071546, + 0.02194921, + -0.008358794, + -0.0035631408, + -0.028846033, + -0.01680937, + 0.011289288, + -0.008607918, + -0.015563746, + -0.015485075, + 0.007886767, + 0.0025699195, + -0.012849597, + 0.015576858, + 0.016927376, + -0.0031681468, + -0.007244288, + -0.014829484, + -0.019890651, + -0.020428237, + 0.0020126665, + 0.0036418117, + 0.005733149, + 0.0061265044, + -0.018487684, + 0.03154707, + 0.013701866, + 0.029213166, + -0.031625744, + 0.009034053, + 0.010895934, + 0.004189231, + -0.0020683918, + -0.015563746, + -0.020428237, + -0.017963212, + -0.016258674, + -0.019929986, + 0.024178222, + 0.0032419008, + 0.04625855, + -0.013203616, + -0.03283203, + 0.03254357, + -0.01005022, + 0.008037554, + 0.0043793526, + 0.0032107602, + -0.016717589, + -0.00631007, + 0.010496023, + 0.0045137485, + 0.02503049, + -0.00944052, + -0.031651966, + -0.009742092, + -0.024846924, + 0.010732036, + -0.026499016, + -0.014921267, + 0.026407233, + 0.005425021, + 0.007001719, + 0.0037860419, + -0.026289226, + -0.010135448, + 0.012325124, + 0.0027911814, + -0.01244313, + -0.013557636, + 0.01258736, + -0.014645918, + -0.02167386, + -0.007041055, + 0.022827702, + -0.024545353, + -0.01679626, + -0.020061105, + 0.01380676, + 0.0113155125, + -0.002673175, + 0.027351284, + -0.022709696, + -0.031153716, + -0.008037554, + -0.009230731, + -0.012725035, + 0.014475464, + -0.014632806 + ] + }, + { + "object": "embedding", + "index": 3, + "embedding": [ + 0.01728662, + -0.011963684, + -0.0016601873, + -0.017338298, + -0.0012378731, + 0.020774951, + -0.016756909, + -0.03098155, + 0.008049001, + -0.004266746, + 0.008197579, + 0.010213058, + -0.0022593404, + 0.006853925, + -0.018966187, + -0.0122027, + 0.027441539, + -0.001191039, + 0.029689575, + -0.02687307, + -0.015619972, + 0.01928918, + -0.0042925854, + 0.008914624, + -0.025477737, + -0.0063177557, + 0.011091601, + -0.024792992, + 0.00406326, + 0.018992025, + 0.0015810538, + -0.01472851, + 0.028294243, + -0.039327703, + -0.032247685, + 0.004925653, + 0.014121282, + -0.0054456727, + 0.019095384, + -0.019547574, + 0.003456032, + 0.019780131, + -0.0031217334, + -0.017570853, + -0.014806028, + 0.004664028, + 0.015051504, + 0.006437263, + -0.012254379, + 0.025296861, + 0.011950765, + 0.020284, + -0.01872071, + -0.022519115, + 0.0016553424, + -0.023035906, + 0.004244136, + 0.01768713, + -0.023190944, + 0.0024951259, + -0.014818948, + 0.00024224522, + -0.0037887152, + -0.0018087643, + -0.0034915612, + -0.005410143, + -0.015348657, + 0.0024014576, + 0.016563114, + -0.0008922699, + 0.031679217, + 0.045244947, + 0.0038662339, + 0.009812547, + 0.01927626, + 0.010723389, + 0.00455744, + 0.0003447957, + -0.0071316995, + -0.00863685, + -0.0031136586, + -0.028552637, + -0.021059185, + -0.013100622, + 0.02027108, + 0.012015363, + -0.021989407, + -0.00095686864, + -0.023436418, + -0.020477796, + 0.0067634867, + 0.03844916, + 0.010613571, + -0.0044314726, + 0.013488214, + 0.021937728, + 0.00812652, + 0.02692475, + 0.021433858, + -0.02341058, + -0.00016735107, + 0.015025664, + -0.033177905, + 0.001092526, + -0.043306988, + -0.03237688, + -0.0018216841, + -0.011266018, + 0.0314725, + -0.020632833, + -0.023927368, + 0.020051444, + 0.032816153, + -0.027751613, + 0.0010343872, + -0.02485759, + 0.008979223, + -0.021188382, + -0.025968688, + 0.0011789268, + -0.0004124225, + 0.039792817, + 0.011427515, + -0.009508933, + 0.031782575, + -0.005384304, + -0.013158761, + -0.020852469, + -0.012105801, + 0.0040761796, + 0.007700168, + 0.016136762, + 0.007667869, + 0.006660129, + -0.01271949, + -0.010846126, + -0.020439038, + 0.015930045, + 0.0011813493, + -0.016524354, + 0.0011651996, + 0.019172901, + -0.019818889, + -0.014896466, + -0.0050160913, + 0.02999965, + 0.023668973, + -0.0060658203, + -0.009308676, + 0.0020703892, + 0.008565791, + -0.024650874, + 0.016679391, + -0.007913344, + 0.0052324967, + 0.011065762, + -0.024030726, + 0.017583773, + -0.017338298, + 0.017906766, + -0.019004945, + 0.015981724, + 0.02233824, + -0.007822906, + 0.02635628, + 0.02638212, + 0.012590292, + 0.0128293075, + -0.026562996, + 0.01523238, + -0.008539951, + 0.02684723, + -0.026265843, + 0.017506255, + -0.016408077, + 0.015116102, + 0.015077343, + -0.010490833, + -0.014444276, + -0.00455744, + -0.017041145, + 0.0072738165, + 0.017880928, + 0.012590292, + 0.014405516, + 0.0055005816, + 0.020568235, + -0.01625304, + 0.010561892, + -0.014392597, + 0.022428678, + 0.016356397, + -0.015258219, + -0.0406972, + -0.6904312, + -0.04258348, + 0.027519058, + 0.007661409, + 0.003904993, + 0.029121106, + 0.011601931, + 0.019495895, + -0.0054585924, + -0.013914566, + 0.00863039, + 0.017932607, + 0.004806145, + 0.006350055, + 0.006944363, + -0.018643193, + -0.0132169, + -0.008055462, + 0.008029622, + -0.009592911, + -0.0030151457, + 0.014250479, + -0.008197579, + 0.00090034475, + 0.016059244, + 0.01578793, + 0.021847289, + 0.015284059, + -0.011950765, + 0.0023303991, + -0.020193562, + 0.017971367, + 0.0011651996, + -0.0054036835, + 0.042480122, + 0.0024095324, + -0.018656112, + 0.020671593, + 0.02837176, + 0.016123842, + -0.008081301, + 0.004618809, + 0.004318425, + -0.020568235, + -0.0046963273, + 0.008132979, + 0.0033559038, + -0.016110923, + 0.03457324, + 0.0037273464, + 0.01781633, + -0.03346214, + 0.00606905, + -0.0037887152, + 0.027544897, + 0.005387534, + 0.028681835, + 0.0058041955, + -0.0042958152, + 0.014263399, + -0.004169848, + -0.0017619303, + 0.001522915, + -0.022751672, + -0.009424955, + -0.0042247567, + -0.02994797, + -0.028345922, + -0.027648255, + -0.016808588, + 0.0048545944, + 0.017493336, + -0.016576033, + 0.005742827, + 0.0071769184, + -0.0006576958, + 0.02692475, + -0.0069185235, + 0.004479922, + 0.0050516203, + 0.0074999123, + -0.014586393, + -0.03707967, + -0.0029521617, + 0.032118488, + -0.0030652096, + -0.037338063, + -0.015632892, + 0.018113483, + 0.001501113, + 0.025219344, + -0.0095347725, + -0.025671534, + -0.0056071696, + -0.00812652, + 0.038940113, + -0.010729848, + -0.0021479076, + -0.004780306, + -0.010600651, + 0.0037693358, + -0.018023044, + -0.010820286, + -0.0010707239, + 0.040748876, + -0.009347436, + -0.022118604, + 0.016175522, + 0.013371936, + -0.023501016, + 0.032428563, + -0.02074911, + -0.009928824, + 0.008262177, + 0.014612232, + -0.028500957, + 0.055968337, + 0.011459814, + -0.0036788974, + -0.01066525, + -0.0022060466, + 0.014625152, + -0.00022003941, + -0.0020639293, + -0.0048836637, + -0.002690537, + -0.0014841558, + -0.0054973518, + -0.015271139, + 0.008966303, + 0.0015947811, + 0.0068087056, + 0.026485479, + 0.0009940129, + 0.0009932055, + -0.009379735, + 0.023010066, + -0.007719548, + 0.024973867, + -0.00455744, + -0.01826852, + 0.000482068, + -0.03547762, + 0.0074869925, + 0.004102019, + -0.036795434, + -0.037183028, + -0.0047932253, + -0.02896607, + 0.011266018, + -0.032790314, + -0.014392597, + -0.02592993, + 0.022984227, + -0.0011700444, + -0.0019460367, + -0.020374438, + -0.0039663617, + -0.019689692, + 0.004728627, + -0.009244078, + -0.010458534, + -0.0047480064, + 0.0010440769, + 0.002176977, + -0.036201127, + -0.0075968103, + 0.020516556, + -0.0115114935, + -0.02540022, + 0.0024967408, + 0.004470232, + 0.010309957, + -0.0032590057, + -0.01422464, + -0.012461094, + -0.02081371, + -0.033152066, + 0.0005135599, + -0.0075838906, + 0.010813827, + 0.011052842, + 0.007461153, + -0.006043211, + 0.031214105, + -0.012816387, + 0.004964412, + 0.013720769, + -0.0026582377, + -0.01470267, + 0.00657615, + 0.00711232, + 0.0006415461, + -0.013423615, + -0.0039372924, + 0.0007162384, + 0.012738869, + 0.0065600006, + 0.006853925, + -0.00021761697, + 0.018178081, + -0.016433917, + 0.017803408, + -0.015464935, + 0.012351276, + -0.04514159, + 0.0021204532, + -0.009418494, + 0.0005579715, + 0.026136644, + -0.004815835, + -0.009005062, + -0.009276377, + -0.01768713, + 0.008824186, + 0.022958387, + -0.016808588, + 0.011433975, + -0.0058268053, + -0.0027825902, + 0.009528312, + -0.0074805324, + 0.033772215, + 0.010962404, + -0.017700052, + 0.0025645695, + 0.022880869, + 0.011098062, + -0.0030522898, + -0.010477914, + -0.028190885, + -0.004266746, + -0.011524413, + 0.0144313555, + -0.036821276, + 0.00019480553, + 0.012112262, + -0.044418085, + 0.018035965, + 0.015852528, + -0.0038920734, + 0.035580978, + 0.020141883, + -0.011020543, + 0.015012744, + -0.0081136, + 0.013068322, + 0.003707967, + -0.028604316, + 0.0038210147, + -0.017209101, + -0.008397834, + 0.003297765, + 0.013320258, + 0.02795833, + -0.012112262, + 0.037673976, + 0.0067311875, + 0.02687307, + 0.026097886, + -0.033281263, + -0.009877145, + 0.008714369, + -0.004018041, + -0.0015931661, + 0.0027260662, + -0.011246638, + -0.016640631, + -0.0072738165, + -0.014134201, + -0.011214339, + -0.005222807, + 0.01877239, + -0.024676714, + 0.013036023, + -0.01627888, + -0.00761619, + -0.000735618, + 0.011001163, + 0.015917126, + -0.004447622, + -0.038785074, + 0.022389919, + -0.0024531367, + -0.003995431, + -0.026214164, + -0.035606816, + 0.0013581882, + -0.003000611, + 0.0016618023, + 0.017790489, + 0.0028778734, + 0.035736017, + -0.005313245, + -0.0016618023, + -0.027157305, + 0.01321044, + 0.007461153, + 0.017015304, + 0.007906884, + -0.013759529, + -0.026265843, + -0.03041308, + -0.004618809, + 0.008837106, + 0.01270011, + -0.020710351, + 0.00810068, + -0.010910725, + -0.02790665, + -0.023681894, + 0.010607111, + 0.0026614675, + -0.012254379, + -0.010949484, + 0.00080869533, + -0.024159923, + -0.010846126, + 0.032351043, + 0.0064598727, + 0.004147238, + -0.016989466, + -0.010542512, + -0.0022221962, + 0.07948227, + 0.0039760517, + 0.0009770558, + 0.012267298, + 0.0023449338, + -0.01719618, + -0.017868008, + 0.0017441657, + 0.004163388, + 0.012125181, + 0.0065664607, + -0.008262177, + 0.013397776, + 0.00070654857, + 0.0057557467, + 0.00354647, + 0.0069895824, + 0.0031717974, + 0.019185822, + -0.013966245, + 0.011214339, + -0.0035819993, + -0.005733137, + 0.006737647, + 0.0009294142, + -0.007351335, + 0.029689575, + 0.004114939, + 0.022699993, + -0.00053576566, + -0.0102647375, + 0.0223124, + 0.003401123, + -0.02536146, + -0.014340918, + 0.0025064305, + -0.014172961, + 0.023229701, + 0.0091278, + -0.0043378044, + 0.025503578, + 0.025115985, + 0.014250479, + -0.01067171, + 0.0014324768, + 0.01319752, + -0.018901588, + 0.012977884, + -0.00013919007, + -0.0054585924, + 0.027829131, + 0.002587179, + 0.0012830922, + -0.0032234765, + 0.019172901, + 0.016756909, + -0.0045509804, + -0.007222138, + -0.008527032, + -0.02435372, + 0.005629779, + -0.0052454164, + 0.00456067, + -0.004760926, + -0.036226965, + -0.012790548, + 0.0011014083, + -0.0038210147, + -0.0039663617, + 0.00303937, + -0.008352615, + -0.022557875, + -0.02027108, + -0.0028116596, + 0.03196345, + 0.01877239, + 0.028216723, + -0.015813768, + -0.0074740727, + 0.04374626, + -0.0046575684, + -0.009089041, + -0.018681953, + 0.0030103007, + -0.007848745, + 0.012480474, + 0.03744142, + -0.019612173, + -0.019922247, + -0.0029020978, + 0.0324544, + -0.012790548, + 0.014457195, + -0.016330559, + 0.00759035, + -0.007965023, + 0.011033462, + -0.001449434, + -0.011756969, + -0.0072867363, + 0.023255542, + -0.020400278, + -0.015955886, + -0.011194959, + 0.016085083, + 0.010891345, + 0.013837047, + 0.007047721, + -0.022583716, + 0.0061271894, + 0.006456643, + -0.008701448, + -0.016808588, + -0.00008412975, + 0.009941744, + 0.016459756, + -0.018707791, + 0.021640573, + 0.013223359, + -0.022687074, + 0.005681458, + -0.041291505, + 0.016472675, + -0.006033521, + -0.01418588, + -0.000864008, + 0.019780131, + 0.005519961, + 0.005071, + 0.007809986, + 0.008455973, + 0.030619796, + -0.020852469, + -0.017868008, + -0.03403061, + -0.011498573, + 0.028500957, + 0.006195018, + -0.008036082, + -0.0074676126, + -0.00910842, + -0.001468006, + 0.0063758944, + 0.0010796062, + -0.017454576, + -0.018333118, + 0.007254437, + -0.00037709507, + -0.0076291095, + 0.016291799, + -0.0015317973, + -0.024185764, + -0.008475353, + 0.021666413, + 0.0038759236, + -0.007041261, + -0.01520654, + -0.02481883, + 0.02587825, + 0.0052970955, + 0.020981666, + -0.006233777, + 0.0026372431, + 0.000120113255, + -0.004005121, + 0.004147238, + 0.005936623, + -0.0019347318, + -0.041549902, + 0.021886049, + 0.011375836, + 0.010309957, + 0.022441598, + -0.004980562, + 0.0031734125, + 0.027648255, + -0.0067311875, + 0.0021592125, + -0.033332944, + -0.02687307, + -0.007945644, + 0.005946313, + -0.015154861, + -0.010787987, + -0.0016892568, + -0.0018426786, + 0.030258043, + 0.011905545, + -0.00092456926, + -0.000011405713, + 0.028035847, + -0.016847348, + 0.041859973, + -0.006744107, + 0.0044863815, + 0.0063145254, + -0.008998603, + -0.008371995, + 0.017519174, + -0.002225426, + 0.019211661, + 0.014625152, + -0.018423557, + -0.014250479, + 0.012357736, + 0.018449396, + 0.02030984, + -0.012997264, + -0.015581213, + -0.02233824, + -0.022557875, + -0.016911946, + -0.02837176, + -0.04821649, + 0.017790489, + -0.002797125, + -0.024108244, + 0.025128905, + -0.0040341904, + -0.013010183, + 0.0052647963, + 0.003191177, + 0.026692193, + 0.0015035353, + 0.013591572, + 0.006737647, + -0.013488214, + -0.0031168885, + 0.007060641, + -0.015038583, + -0.013042483, + 0.022002326, + 0.0222478, + -0.01984473, + 0.029973809, + 0.012125181, + 0.005723447, + 0.018371878, + -0.021963567, + -0.0152453, + 0.0030232205, + 0.02635628, + -0.021007506, + 0.010871965, + -0.02994797, + 0.014483035, + -0.020064365, + -0.0051032994, + 0.0009988578, + -0.0041375486, + -0.013656171, + -0.0029570067, + -0.024767151, + 0.008746668, + 0.010258278, + -0.0029150175, + 0.013068322, + -0.006046441, + -0.02999965, + -0.0076937084, + -0.007700168, + 0.035270903, + -0.0036207587, + 0.0128293075, + -0.0074417735, + -0.0002967504, + -0.009489553, + -0.004005121, + -0.019353779, + 0.026666354, + -0.0062014777, + 0.00023517974, + -0.008152359, + 0.036278646, + 0.037312225, + -0.02328138, + -0.00042271792, + 0.0068216254, + -0.006802246, + -0.015413256, + 0.008843565, + -0.0029069427, + -0.014302158, + 0.013242739, + -0.021110864, + 0.0026420879, + -0.0133460965, + 0.005978612, + 0.0064727925, + -0.013158761, + -0.00069564756, + -0.013462375, + 0.0013129691, + 0.006140109, + -0.010833207, + -0.008333236, + 0.023888608, + 0.01821684, + -0.0053100153, + 0.020542394, + -0.019392537, + 0.01418588, + -0.011240179, + 0.011459814, + 0.0011353226, + -0.025736133, + 0.017661292, + -0.013307338, + -0.030128846, + -0.015309898, + -0.000022180579, + -0.0055231913, + 0.0006153029, + -0.009089041, + 0.010245358, + -0.0050160913, + 0.008481813, + -0.023565616, + 0.008107141, + -0.0062047075, + -0.029818771, + 0.011085141, + 0.023733573, + -0.021420937, + 0.0111239, + 0.0040729498, + 0.0015834763, + 0.006327445, + -0.031679217, + -0.0037757957, + -0.01625304, + 0.0037241166, + 0.00070614484, + -0.0033785135, + -0.0034463422, + 0.0052841757, + -0.016149681, + 0.0044024033, + -0.008449513, + 0.003604609, + -0.005549031, + 0.0048481342, + -0.02332014, + 0.0014841558, + -0.018862829, + 0.025710294, + -0.013048943, + -0.026162485, + -0.019534655, + 0.008488272, + -0.011815107, + -0.003197637, + -0.0021559824, + -0.029276144, + -0.019147063, + -0.014612232, + -0.023229701, + 0.0034915612, + 0.022557875, + 0.003002226, + 0.013359017, + -0.018617352, + -0.012357736, + 0.011194959, + 0.0057557467, + -0.0101936795, + -0.018152243, + -0.010142, + -0.0029553918, + -0.009089041, + 0.025232263, + 0.015439096, + -0.01064587, + -0.012667811, + 0.016588952, + 0.0074869925, + 0.004244136, + -0.0038953032, + -0.00456713, + 0.0010771838, + 0.007764767, + 0.02337182, + 0.042661, + 0.009256997, + -0.00609812, + -0.016098002, + -0.016020484, + 0.0072156778, + 0.02992213, + -0.030593958, + 0.001087681, + -0.0028617235, + -0.018785309, + 0.00012788529, + -0.012357736, + 0.0053423145, + 0.010794447, + 0.015129021, + 0.01873363, + -0.011304777, + 0.004273206, + 0.023785252, + -0.00047197446, + -0.006530931, + -0.0120282825, + -0.0052647963, + -0.016433917, + -0.013475294, + 0.012732409, + -0.017570853, + -0.0038953032, + -0.02842344, + 0.006802246, + -0.016588952, + 0.0047383164, + -0.018565673, + -0.0032832304, + -0.022157364, + 0.01012908, + 0.014650991, + -0.013255659, + 0.015271139, + -0.032118488, + 0.0016924867, + -0.0058074254, + -0.007493452, + 0.0014825407, + -0.028087527, + -0.023074666, + 0.0034140428, + 0.00072552444, + -0.02444416, + -0.0048449044, + 0.008494733, + 0.023798171, + 0.020968746, + 0.21209054, + 0.013888726, + -0.011808647, + 0.034289002, + 0.0033785135, + 0.035245065, + 0.021459697, + -0.013927486, + 0.032428563, + 0.020400278, + -0.021188382, + -0.00095283124, + -0.009521852, + -0.005429523, + -0.0020009456, + -0.012357736, + -0.03092987, + -0.007990862, + -0.028165044, + -0.017803408, + -0.0006706155, + -0.0107104685, + -0.0017457806, + 0.0006193403, + 0.02585241, + 0.0015600593, + -0.007719548, + 0.0016682621, + 0.0244054, + 0.018346038, + -0.012079962, + -0.0150902625, + -0.0019524965, + -0.018035965, + 0.00072835066, + -0.004670488, + 0.005687918, + 0.0018378338, + 0.019392537, + 0.027519058, + 0.0036078389, + 0.008798347, + -0.033281263, + -0.010736308, + -0.01719618, + 0.015038583, + -0.023113424, + -0.0073900945, + 0.015258219, + 0.017635452, + -0.007054181, + 0.0050451607, + 0.035606816, + 0.02488343, + -0.008455973, + 0.020632833, + 0.031808414, + -0.00031249636, + 0.003342984, + -0.0014857707, + -0.027312342, + 0.027053947, + -0.024741312, + -0.008404294, + 0.007002502, + -0.0065826103, + -0.012816387, + -0.000052486466, + 0.0023998427, + -0.028345922, + 0.006027061, + -0.0037499561, + -0.006359745, + 0.007235057, + -0.021472616, + -0.019508816, + 0.008843565, + 0.0028568788, + 0.02187313, + -0.00037366326, + -0.0072738165, + -0.0019169672, + -0.0093926545, + 0.0054069133, + -0.0015188776, + -0.016304718, + -0.00071018224, + 0.006750567, + 0.018630274, + -0.00761619, + 0.0075451313, + -0.0032832304, + 0.0018362188, + 0.0031265784, + 0.016576033, + 0.022131523, + -0.0021527526, + 0.010368096, + -0.030852351, + 0.015271139, + -0.027234823, + -0.04919839, + 0.02025816, + 0.00095525366, + -0.019831808, + 0.018475236, + 0.0054908916, + -0.008979223, + 0.02282919, + 0.0032250914, + -0.0029343972, + -0.019780131, + 0.005888174, + 0.00045743975, + 0.01267427, + -0.018333118, + 0.009244078, + -0.023565616, + -0.00610135, + 0.006543851, + -0.0021511377, + -0.0056846878, + -0.0033332943, + -0.0052454164, + 0.01472851, + -0.015529534, + -0.020245241, + 0.013449455, + -0.008740208, + -0.03950858, + 0.029043587, + 0.010290577, + 0.03092987, + -0.0025661844, + -0.0011595471, + 0.02432788, + -0.004153698, + 0.0039857416, + 0.010187219, + -0.010361636, + -0.0024111476, + -0.015839608, + 0.008934004, + 0.018501075, + 0.0031394982, + 0.0055135014, + 0.0049967114, + -0.010206599, + -0.0068280855, + -0.015361577, + -0.018501075, + 0.005277716, + -0.01369493, + -0.024095325, + 0.028681835, + -0.009483093, + -0.013397776, + -0.0069249836, + -0.0018136093, + 0.033255424, + -0.020542394, + 0.007990862, + 0.026136644, + -0.008184658, + 0.002335244, + 0.005032241, + -0.16557945, + 0.016007565, + 0.019948088, + -0.024495836, + -0.0151807, + 0.00203163, + 0.01979305, + 0.02236408, + -0.021214223, + 0.023449337, + -0.0030862042, + 0.01676983, + -0.05379782, + -0.016369317, + 0.00042796656, + 0.020774951, + -0.0014203645, + 0.01062649, + 0.02285503, + 0.012396496, + 0.015917126, + -0.016265959, + 0.0062047075, + 0.0013331563, + 0.013165221, + 0.0004485574, + -0.009560612, + 0.017855087, + -0.00759035, + -0.018669032, + 0.011382296, + 0.016640631, + 0.023152184, + 0.0009819006, + 0.023268461, + 0.0067634867, + -0.005258336, + 0.012041203, + 0.014844787, + -0.002590409, + 0.0045832796, + 0.017635452, + 0.015955886, + 0.007977943, + -0.0087337475, + 0.018333118, + 0.025128905, + 0.026278762, + 0.0019088924, + -0.0024240671, + 0.013068322, + -0.031343304, + -0.013242739, + -0.010930104, + 0.019185822, + 0.023255542, + 0.018927427, + 0.010936565, + -0.017015304, + 0.020193562, + 0.008132979, + -0.055554904, + 0.0027115315, + 0.021588894, + 0.0017393207, + -0.0031685675, + 0.0057525164, + 0.006036751, + -0.024689633, + 0.0048868936, + -0.013074783, + -0.009030902, + -0.01673107, + -0.019948088, + 0.0041343183, + 0.0098900655, + -0.006191788, + -0.0029683115, + -0.011001163, + -0.012564452, + 0.0054489025, + 0.027777452, + -0.008081301, + -0.0028601086, + -0.01370785, + 0.007829365, + 0.001876593, + 0.01118204, + -0.020284, + -0.006660129, + 0.020503636, + -0.03950858, + -0.005536111, + -0.02943118, + 0.015852528, + 0.012409415, + -0.0071639987, + 0.0012507929, + 0.0016408076, + 0.0121704005, + 0.0021527526, + -0.0023239392, + -0.00914072, + 0.0067247273, + 0.02328138, + 0.01418588, + 0.0066278293, + 0.012318977, + 0.038862593, + 0.002936012, + -0.007512832, + 0.02793249, + 0.0026808472, + 0.025749052, + 0.0005240572, + -0.0040018912, + 0.016718151, + -0.01768713, + 0.011718209, + 0.005368154, + 0.040903915, + -0.013849967, + -0.0102647375, + -0.0045735897, + -0.0041763075, + -0.012131641, + -0.10527009, + -0.0109236445, + 0.015839608, + 0.025025547, + 0.01723494, + 0.01373369, + 0.008339696, + 0.023707733, + -0.012209159, + 0.0223124, + -0.018165162, + -0.016343478, + -0.0034075829, + -0.009618751, + 0.000864008, + -0.0037757957, + 0.0086626895, + -0.01821684, + -0.018475236, + 0.01768713, + -0.018010125, + 0.0018152242, + 0.01164069, + -0.0118861655, + -0.022544956, + -0.0063306754, + -0.02793249, + 0.017622532, + 0.0053067855, + -0.006243467, + 0.028630156, + -0.014663911, + 0.0012984345, + 0.0005038701, + -0.015529534, + -0.0036918172, + -0.0037111968, + -0.0037790255, + 0.010878426, + -0.03643368, + -0.004341034, + 0.0029505468, + 0.010632951, + 0.0005151748, + 0.004202147, + 0.00029069427, + -0.026769713, + 0.012570912, + 0.004153698, + -0.01926334, + 0.0021947417, + 0.01979305, + -0.020684512, + -0.013281498, + 0.036717918, + -0.016408077, + 0.019004945, + 0.010497293, + -0.021123784, + 0.01523238, + -0.008772507, + 0.016343478, + -0.0020284, + 0.02444416, + -0.014767269, + -0.021989407, + -0.022997146, + -0.018488156, + 0.02692475, + -0.032299362, + -0.005797736, + 0.0014785033, + -0.034805793, + 0.024198683, + -0.025594015, + 0.006046441, + -0.028785193, + -0.017338298, + 0.011828027, + -0.007254437, + -0.024482917, + -0.011737589, + 0.003456032, + 0.0041892272, + 0.0003774988, + 0.027260663, + -0.0037919453, + -0.0071962983, + 0.024263281, + 0.002073619, + 0.012422335, + 0.027570738, + 0.002543575, + -0.026795551, + -0.021072105, + 0.011608391, + 0.0013048943, + -0.0021446778, + 0.01418588, + -0.013462375, + -0.02333306, + -0.013359017, + -0.038733397, + 0.010917185, + 0.006240237, + -0.011834486, + -0.015826687, + 0.002747061, + -0.0103551755, + 0.0012330282, + -0.017622532, + -0.012402955, + -0.013307338, + -0.00044532746, + -0.0131846005, + -0.0116536105, + -0.014483035, + -0.005917243, + 0.00404711, + 0.010103241, + 0.0007424816, + -0.00033752836, + -0.0023626985, + -0.0021139933, + 0.0022221962, + 0.02285503, + -0.034728274, + 0.006027061, + -0.010032183, + -0.02481883, + -0.025658615, + -0.010322876, + 0.01731246, + -0.025632774, + 0.009030902, + 0.040309604, + -0.012499854, + -0.028475119, + -0.008417214, + 0.039327703, + 0.012913286, + -0.025167665, + -0.03338462, + -0.031524178, + 0.017170342, + -0.023707733, + 0.0064760223, + 0.032738633, + -0.011924925, + 0.0013856427, + 0.015826687, + 0.0078035262, + 0.0060852002, + 0.02328138, + 0.0076807886, + -0.0014130971, + -0.009256997, + -0.006547081, + 0.035193387, + 0.017880928, + 0.0051129893, + -0.02138218, + 0.0049837916, + -0.0193021, + 0.0105489725, + 0.011317697, + 0.0037661057, + 0.0025080456, + 0.008055462, + -0.01067171, + -0.0101226205, + -0.017622532, + -0.004008351, + -0.0070864805, + 0.038707558, + 0.016756909, + 0.020594073, + 0.0034624918, + 0.00086562295, + -0.0046898676, + -0.008333236, + 0.020981666, + 0.011201419, + -0.0056103994, + -0.008914624, + 0.0092505375, + 0.042273406, + 0.03953442, + -0.030232204, + 0.00084624335, + 0.008772507, + 0.0069895824, + -0.01421172, + 0.004903043, + -0.002175362, + 0.010038642, + 0.01521946, + 0.010245358, + 0.0061659487, + -0.0030619795, + 0.009069662, + 0.017596694, + 0.01821684, + -0.0050451607, + 0.008042541, + -0.021550136, + -0.014250479, + -0.0063435948, + -0.017325379, + -0.021601815, + -0.012215619, + 0.002338474, + 0.001776465, + -0.0022706452, + -0.002076849, + 0.01670523, + 0.0046607982, + 0.004092329, + -0.022079844, + -0.018552754, + -0.021989407, + 0.0018588284, + -0.0037919453, + 0.008443054, + 0.02076203, + -0.0018055345, + 0.016679391, + 0.027699934, + 0.031808414, + -0.01877239, + 0.015348657, + 0.013294418, + 0.023100505, + -0.0005870409, + -0.0021398328, + -0.00710586, + -0.002290025, + -0.019056624, + -0.01772589, + 0.024637954, + 0.007719548, + 0.050464526, + -0.020942908, + -0.025594015, + 0.017325379, + -0.016085083, + 0.003456032, + 0.021227142, + 0.005765436, + -0.017622532, + -0.009224698, + 0.009747948, + 0.01826852, + 0.03144666, + -0.018436477, + -0.027674094, + -0.0032832304, + -0.030645637, + 0.011756969, + -0.023113424, + 0.0044960715, + 0.028888552, + -0.0015705565, + 0.009076121, + -0.00005440424, + -0.024211602, + -0.0058009657, + 0.02738986, + 0.016072163, + -0.0066116797, + -0.010012803, + 0.01317814, + -0.020929987, + -0.032661118, + -0.015800849, + 0.014909386, + -0.03400477, + -0.0050354707, + -0.032790314, + -0.0031782573, + 0.009793167, + 0.011873246, + 0.0406972, + -0.019056624, + -0.012267298, + 0.019043704, + -0.008824186, + -0.004273206, + 0.018152243, + -0.0034721815 + ] + }, + { + "object": "embedding", + "index": 4, + "embedding": [ + 0.015786206, + -0.008772285, + -0.0019130354, + -0.027326286, + 0.0032285526, + 0.031754762, + -0.018117666, + -0.011820117, + 0.00031097, + -0.0066492227, + 0.0054737236, + 0.009019759, + -0.0147572365, + 0.020331904, + -0.007919152, + 0.0017176616, + 0.02683134, + 0.0026717372, + 0.034620244, + -0.012881648, + -0.029540524, + 0.013806418, + -0.00920862, + 0.0016753306, + -0.017231973, + -0.012399726, + 0.0116182305, + -0.01852144, + 0.006004489, + 0.018781938, + 0.016606776, + -0.021868844, + 0.0017241741, + -0.032379955, + -0.018560514, + -0.000048207476, + 0.01862564, + 0.0029403763, + 0.020357953, + -0.013780368, + 0.0070790453, + -0.0007969624, + 0.0010672295, + -0.023861658, + -0.010218051, + 0.019706707, + 0.025606997, + 0.004321018, + -0.015017735, + 0.017935317, + 0.0043828865, + 0.0124909, + -0.018534465, + -0.018964287, + 0.0054737236, + -0.02659689, + 0.013324495, + 0.024044007, + -0.015082859, + -0.015603857, + -0.008186163, + 0.0003317285, + -0.0016720744, + 0.0073916432, + 0.008492249, + -0.0062194006, + 0.0060272827, + 0.0036111597, + 0.00060565886, + 0.006632942, + 0.031259812, + 0.03183291, + 0.007847516, + 0.014132041, + 0.023457885, + 0.011305632, + -0.0065938667, + 0.007626092, + -0.012998872, + -0.0021360873, + 0.005271837, + -0.020019306, + -0.018729838, + -0.0013871542, + 0.014666063, + 0.003163428, + -0.0112405075, + 0.008114526, + -0.016658876, + -0.021478096, + -0.00011905593, + 0.037355475, + 0.020344928, + -0.0018251173, + 0.0033083302, + 0.02169952, + 0.011885242, + 0.017739944, + 0.028107783, + -0.02190792, + -0.001680215, + 0.012367164, + -0.029566573, + 0.0015149612, + -0.033135403, + -0.020970125, + 0.011520544, + -0.00057106145, + 0.029722873, + -0.019928131, + -0.03316145, + 0.03342195, + 0.034411844, + -0.027743084, + -0.01841724, + -0.025593972, + 0.006707835, + -0.01918571, + -0.03006152, + 0.00197816, + 0.0063496497, + 0.042956192, + 0.019915106, + -0.013298445, + 0.030895116, + -0.0053858054, + -0.010595774, + -0.021347847, + -0.016502576, + 0.011305632, + -0.01132517, + 0.023106212, + 0.019094536, + 0.023119237, + -0.018534465, + 0.0027270932, + -0.008153602, + 0.0047378154, + -0.012855598, + -0.025685146, + 0.0055518732, + 0.010289689, + -0.017127773, + -0.012933748, + -0.0022891301, + 0.027586786, + 0.012705811, + 0.012868623, + -0.017427346, + -0.013754318, + 0.007736804, + -0.024578027, + 0.010576237, + -0.005929596, + -0.0034483483, + 0.01659375, + -0.020384002, + 0.009221645, + -0.03503704, + -0.0079386905, + -0.010550187, + -0.006385468, + 0.012419263, + 0.0063887243, + 0.023301587, + 0.023119237, + 0.0001985283, + 0.010185489, + -0.011676842, + -0.0040312135, + -0.010081289, + 0.031937107, + -0.018716814, + 0.02516415, + -0.014483714, + 0.02244194, + 0.0104525, + -0.0029208388, + -0.018768912, + -0.003503704, + -0.02265034, + -0.018104643, + 0.01936806, + -0.005574667, + 0.021504147, + -0.015382433, + 0.02341881, + -0.0067599346, + 0.008681111, + 0.003288793, + 0.015525707, + 0.02601077, + -0.02003233, + -0.02598472, + -0.6910503, + -0.034542095, + 0.010856273, + -0.0044187047, + 0.0027222086, + 0.01995418, + 0.0053727804, + 0.019394109, + -0.0011046762, + -0.024994826, + -0.010439475, + 0.000051768977, + 0.018873112, + 0.001510891, + 0.008290363, + -0.015382433, + -0.007827979, + 0.006935771, + 0.009488656, + -0.0009166289, + 0.0023363454, + 0.01762272, + -0.01598158, + 0.012113177, + 0.015564782, + 0.010315739, + 0.017987417, + -0.0021018968, + -0.011839654, + 0.020996174, + -0.013005385, + 0.020683577, + -0.005463955, + -0.018755889, + 0.046212424, + 0.0058807526, + -0.010107339, + 0.012881648, + 0.009664493, + 0.028159881, + -0.014223215, + -0.011377269, + 0.0056267665, + -0.031051414, + -0.01127307, + 0.0009565177, + 0.023991907, + -0.025398599, + 0.018586565, + 0.000116512, + 0.038189072, + -0.020918025, + 0.0018300016, + 0.00095000525, + 0.017687844, + 0.00907837, + 0.022337742, + -0.0062649874, + -0.007919152, + 0.0081015015, + -0.009846841, + -0.0033441489, + -0.017583644, + -0.017023573, + -0.015200084, + -0.003306702, + -0.034385793, + -0.013871542, + -0.0118070915, + -0.0007444557, + -0.005222994, + 0.007951715, + -0.02696159, + 0.016398378, + 0.015121935, + -0.0072939564, + 0.016815174, + -0.009762179, + -0.010589262, + 0.0112665575, + 0.010485062, + -0.025620023, + -0.037381526, + -0.010100828, + 0.03206736, + -0.01757062, + -0.031937107, + -0.008225238, + 0.029097676, + 0.0020888718, + 0.038032774, + 0.0047247903, + -0.029201876, + -0.006411518, + -0.008257801, + 0.026414542, + -0.013532894, + 0.007951715, + 0.019055462, + -0.022064218, + -0.0007212551, + -0.017713895, + 0.0013049344, + -0.0073525687, + 0.039647862, + 0.010061752, + -0.014483714, + 0.03042622, + 0.0033799673, + -0.016893324, + 0.028550629, + -0.012399726, + -0.013317983, + 0.003927014, + 0.014119016, + -0.034047145, + 0.052829083, + 0.017258022, + 0.008121039, + 0.0019048948, + 0.0025089257, + -0.0010688577, + 0.00045017386, + -0.006948796, + 0.013350545, + 0.011813604, + -0.008596448, + -0.021334823, + -0.017323146, + 0.0057244534, + -0.0018951262, + -0.010419938, + 0.016658876, + 0.004477317, + -0.000027550763, + -0.010289689, + 0.0151870595, + -0.010973497, + 0.024200305, + -0.016229052, + -0.026154043, + -0.012100153, + -0.027196037, + 0.010582749, + -0.008524812, + -0.02598472, + -0.030790916, + -0.010081289, + -0.0332917, + 0.027795184, + -0.02701369, + -0.013428695, + -0.027873334, + 0.022858739, + 0.009351894, + -0.0020823595, + -0.023718383, + 0.0011567759, + -0.017739944, + 0.01497866, + 0.007346056, + 0.010406913, + -0.0040865694, + -0.008309901, + -0.006385468, + -0.027560735, + -0.0073395437, + 0.032848854, + -0.0020302597, + -0.02521625, + 0.004027957, + 0.0013293561, + -0.0026440592, + -0.013506845, + -0.02421333, + -0.008570399, + -0.010934422, + -0.027248137, + 0.004871321, + -0.0051057693, + -0.000388509, + 0.01521311, + 0.0061086887, + -0.0093193315, + 0.039205015, + -0.0035330101, + 0.0124909, + 0.028837178, + -0.009169545, + 0.017805068, + -0.014666063, + 0.0019162917, + -0.0072158067, + -0.003813046, + 0.0039009643, + 0.00009580441, + 0.0006793311, + 0.009202108, + 0.003959576, + 0.004311249, + 0.019967206, + -0.010126877, + 0.028915327, + -0.01572108, + 0.010152927, + -0.03464629, + 0.014613963, + -0.01336357, + 0.015343359, + 0.038840316, + 0.008459687, + -0.016268129, + -0.018664714, + -0.013663143, + 0.017375246, + 0.01764877, + -0.02003233, + 0.021269698, + -0.005180663, + -0.017661795, + 0.010699973, + 0.016619802, + 0.019797882, + -0.0064180302, + -0.005268581, + 0.00022651153, + 0.032223657, + 0.0168803, + -0.01944621, + -0.010986522, + -0.015343359, + -0.0042721746, + -0.008583424, + 0.022207493, + -0.030504368, + -0.012849086, + 0.0011917804, + -0.046342675, + 0.017505495, + 0.02418728, + 0.008394563, + 0.021439021, + 0.022936888, + -0.012647199, + 0.010784635, + 0.010869297, + 0.020918025, + -0.0011510774, + -0.014340439, + 0.00913047, + -0.013024922, + 0.005271837, + -0.010797661, + 0.015317309, + 0.04522253, + -0.0019455977, + 0.04011676, + 0.013506845, + 0.04553513, + 0.022142367, + -0.014184141, + -0.01664585, + 0.019823931, + 0.0031162126, + 0.0062975497, + -0.015108909, + 0.0052913744, + -0.016176954, + 0.0051774066, + -0.0059035458, + 0.003503704, + 0.0030413193, + 0.018899161, + -0.023861658, + 0.00044447547, + -0.0104004005, + -0.012139227, + -0.0028899047, + 0.007873566, + 0.015382433, + -0.013545919, + -0.037381526, + 0.015994605, + -0.0035981347, + -0.0004108956, + -0.013207271, + -0.030582517, + 0.0144316135, + -0.0018251173, + 0.0066882977, + 0.013962717, + 0.007137657, + 0.02244194, + -0.0044414983, + 0.01654165, + -0.03550594, + -0.0005755387, + 0.0058970335, + 0.016958449, + -0.0010688577, + -0.006369187, + -0.016763074, + -0.029774971, + -0.011833142, + 0.020449128, + 0.012106665, + -0.012849086, + 0.0076781916, + -0.017140798, + -0.018091617, + -0.012302039, + 0.011481469, + -0.012315064, + -0.0076456293, + -0.018104643, + -0.012360651, + -0.011318658, + -0.012692787, + 0.031155614, + -0.0035232415, + 0.004334043, + -0.012790473, + -0.012061078, + 0.00059955346, + 0.07632604, + 0.008433637, + 0.0028475737, + 0.0137282675, + 0.007613067, + -0.00788659, + -0.01852144, + 0.0030006163, + -0.0020318879, + 0.012152253, + 0.002653828, + -0.0057732966, + 0.018873112, + 0.0022581958, + -0.003249718, + -0.0017404553, + 0.023718383, + 0.015121935, + 0.0337606, + -0.015916456, + 0.0040605194, + 0.008368513, + -0.010485062, + 0.0061054323, + 0.006085895, + 0.0006838084, + 0.029097676, + 0.0031406344, + 0.028993476, + -0.0025366035, + -0.00006807557, + 0.01497866, + -0.0057570157, + -0.012406238, + -0.015747132, + 0.0017176616, + -0.012341114, + 0.00545093, + 0.016320227, + -0.0018381422, + 0.031937107, + 0.013077022, + 0.008720186, + -0.015265209, + 0.004021445, + 0.017036598, + -0.002020491, + 0.012660224, + -0.013845492, + -0.0063398806, + 0.018690763, + 0.005125307, + 0.0040312135, + -0.018104643, + 0.0137282675, + 0.0012023632, + -0.0073655937, + 0.0030836503, + -0.016515601, + -0.011533569, + 0.009723105, + -0.012308551, + 0.0060370513, + -0.016789125, + -0.0072809313, + -0.008576911, + 0.000034495693, + -0.011631255, + -0.023080163, + -0.0037935085, + -0.010517624, + -0.007528405, + -0.026349418, + -0.001989557, + 0.02082685, + 0.014053891, + 0.01659375, + -0.01251695, + -0.0015727594, + 0.038110923, + -0.0075349174, + 0.008987197, + -0.0105567, + -0.012002465, + -0.002245171, + 0.010309226, + 0.03537569, + -0.017583644, + -0.005603973, + 0.004601054, + 0.02667504, + -0.00875926, + 0.0017616207, + -0.025502797, + -0.008114526, + -0.011077696, + 0.01759667, + 0.010361326, + -0.016398378, + -0.0044577797, + 0.007841003, + -0.028211981, + -0.0070920703, + -0.0068445965, + 0.008655061, + 0.011155846, + 0.02677924, + 0.014744212, + -0.016281152, + 0.011579156, + 0.01759667, + -0.012725349, + 0.00052466016, + 0.002429148, + -0.0067729596, + 0.014053891, + -0.011605206, + 0.010634849, + 0.013050972, + -0.02862878, + 0.0002965205, + -0.043555338, + 0.031077465, + 0.004982033, + -0.0011657305, + 0.0023656515, + 0.018039517, + -0.013233321, + 0.0030266664, + 0.0023412297, + 0.0033929923, + 0.020279804, + 0.0004192397, + -0.019394109, + -0.04501413, + -0.021465072, + 0.03704288, + -0.0028785078, + -0.013897592, + -0.0045131356, + 0.0014734443, + 0.01119492, + 0.00920862, + 0.005512798, + -0.027404437, + -0.019420158, + 0.0016688182, + 0.0018055799, + 0.00025663167, + 0.015682006, + -0.015343359, + 0.0024340323, + -0.01497866, + 0.018378165, + -0.0060565886, + -0.005568154, + -0.008446662, + -0.026271269, + 0.017726919, + 0.006567817, + 0.016281152, + -0.00968403, + 0.0023102956, + 0.010810685, + -0.0041191317, + -0.0020839875, + -0.018964287, + -0.00029713105, + -0.036443733, + 0.016528627, + 0.025255324, + -0.0016452104, + 0.024955751, + -0.005268581, + 0.00302341, + 0.007398156, + -0.000059884114, + -0.0019537383, + -0.026180094, + -0.01949831, + -0.007046483, + 0.015082859, + -0.020605426, + -0.00649618, + 0.009482143, + -0.0035330101, + 0.022116318, + 0.0148093365, + -0.0053499867, + -0.007945202, + 0.028368281, + -0.0119699035, + 0.024578027, + -0.004181, + 0.0128360605, + -0.013252858, + -0.018951261, + -0.0054900046, + 0.0016142763, + 0.0035330101, + 0.016841223, + 0.0028312926, + -0.01209364, + -0.0332917, + 0.009690542, + 0.021191549, + 0.022663364, + -0.0011966648, + -0.00463036, + -0.0250339, + -0.0040019075, + -0.025672121, + -0.026531767, + -0.03899662, + 0.0070855576, + -0.0005352429, + -0.03537569, + 0.024434755, + -0.003985626, + -0.023093186, + 0.004548954, + 0.0025480003, + 0.030165719, + -0.0070139207, + 0.019758807, + 0.012881648, + -0.0067143473, + -0.02593262, + 0.011312145, + -0.007385131, + -0.0063887243, + 0.016229052, + 0.011416344, + -0.013897592, + 0.011930829, + 0.009423532, + 0.029019527, + 0.032510206, + 0.0037967649, + 0.0034222982, + 0.013480795, + 0.019576458, + -0.02857668, + -0.002968054, + -0.011520544, + 0.019250834, + -0.010654386, + -0.026180094, + 0.012230402, + -0.004392655, + -0.016476527, + 0.0053011435, + -0.044388935, + 0.011168871, + 0.010621824, + -0.004614079, + 0.00025317192, + -0.013376595, + -0.017831119, + -0.0022435428, + -0.0028622267, + 0.029175825, + -0.0039628325, + 0.016385352, + 0.0058677276, + -0.0010558327, + -0.008713673, + -0.004138669, + 0.011071184, + 0.025828421, + -0.0010558327, + -0.009306307, + -0.009084883, + 0.042904094, + 0.04024701, + -0.020813826, + -0.0068445965, + -0.008713673, + -0.0012308551, + -0.0070529953, + 0.016567701, + 0.00517415, + -0.0067143473, + 0.024122156, + -0.011683355, + -0.001299236, + -0.027743084, + 0.0057570157, + -0.0064766426, + -0.005236019, + -0.0037707149, + -0.006577586, + 0.00751538, + -0.0014302992, + 0.004324274, + -0.005838421, + 0.021217598, + 0.0018853574, + -0.0061933505, + 0.022168418, + -0.0132398335, + 0.013376595, + 0.0009662864, + 0.01862564, + -0.0030396911, + -0.007958228, + 0.03000942, + -0.0151349595, + -0.020553328, + -0.015642932, + 0.015460582, + 0.00028471666, + 0.0013602903, + -0.012894673, + 0.000988266, + -0.009417019, + 0.01129912, + -0.019355034, + -0.012262965, + 0.0013627325, + -0.025046926, + 0.016502576, + 0.02842038, + -0.028081732, + 0.014861437, + 0.012881648, + -0.015629906, + 0.0002995732, + -0.029227925, + -0.0034939353, + -0.019055462, + 0.011175383, + 0.015408483, + -0.013650118, + -0.00788659, + -0.0075218924, + 0.0011225855, + 0.009729617, + -0.005395574, + 0.018065566, + 0.012308551, + -0.0019472259, + -0.02011048, + 0.012575562, + -0.015304283, + 0.005340218, + -0.008720186, + -0.007814953, + -0.015916456, + -0.0059263394, + 0.00019791776, + -0.01344172, + -0.000109694265, + -0.04339904, + -0.019068487, + -0.0035460352, + -0.027404437, + -0.010380863, + 0.010895347, + -0.0023509983, + 0.009970578, + -0.014679087, + -0.007984277, + 0.012959798, + 0.013545919, + 0.006343137, + -0.027352337, + -0.024916677, + -0.009110933, + -0.020566352, + 0.002740118, + 0.0020400283, + -0.006203119, + -0.019328985, + 0.0041614627, + -0.019302934, + 0.00960588, + -0.006170557, + -0.017075673, + -0.0021442277, + -0.0031959903, + 0.009781716, + 0.021608345, + 0.008752747, + -0.002852458, + -0.022741513, + -0.008518299, + 0.0043828865, + 0.027717035, + -0.020514252, + -0.0015849702, + 0.011123284, + -0.02167347, + -0.0047085094, + -0.011357732, + -0.012054565, + -0.010719511, + 0.019693682, + 0.017844144, + -0.010472038, + 0.0029436324, + 0.030478317, + 0.0018283734, + -0.0137282675, + 0.0015426392, + -0.004897371, + -0.021425998, + -0.0035818536, + 0.0140799405, + -0.001088395, + 0.009430043, + -0.02690949, + 0.013285421, + -0.028107783, + 0.003643722, + -0.013949691, + -0.012627662, + -0.01654165, + 0.032041308, + 0.029227925, + -0.015121935, + 0.0019390853, + -0.041106656, + 0.006512461, + -0.00400842, + -0.012660224, + -0.0026033563, + -0.035558037, + -0.024486853, + -0.0020221192, + 0.00066956243, + -0.02521625, + 0.004588029, + 0.014275314, + 0.016229052, + 0.024955751, + 0.21569271, + 0.0076586544, + -0.0075609675, + 0.026271269, + -0.0011274698, + 0.039543662, + 0.0210092, + -0.005916571, + 0.02990522, + 0.019042436, + -0.019355034, + 0.009221645, + 0.006059845, + -0.0006663062, + -0.0019423416, + -0.0015939248, + -0.0330833, + -0.01172243, + -0.023770483, + -0.017948342, + 0.00110142, + -0.017492471, + 0.011546593, + 0.0067013223, + 0.02857668, + 0.015095885, + -0.0059100585, + 0.0066459663, + 0.0333959, + 0.022741513, + -0.015616882, + -0.009879404, + -0.0038163022, + -0.012744887, + 0.00878531, + -0.0034678855, + -0.0075544547, + -0.012770936, + 0.026635965, + 0.02857668, + 0.021347847, + -0.0071962695, + -0.015278234, + -0.013702218, + -0.0031406344, + 0.0057277097, + -0.020344928, + -0.0062715, + 0.013109584, + 0.007626092, + -0.024760377, + -0.009592855, + 0.032379955, + 0.0168282, + -0.0045229043, + 0.027091838, + 0.023874681, + -0.012210865, + 0.00920862, + 0.0007672493, + -0.021660445, + 0.027169988, + -0.022259591, + 0.010126877, + -0.0069748457, + -0.012100153, + -0.009338869, + -0.0040507508, + 0.013663143, + -0.022311691, + 0.022481015, + 0.006554792, + 0.0032562306, + 0.014613963, + -0.016867274, + -0.015525707, + 0.018300015, + -0.00020025818, + 0.0069813584, + 0.00020554956, + -0.011702892, + 0.010491575, + -0.01600763, + 0.008941609, + -0.0025724221, + -0.030504368, + 0.0057960902, + -0.0006740397, + 0.011006059, + 0.0037316403, + 0.0041419254, + -0.0049071396, + 0.008322925, + 0.0060631013, + 0.023926781, + 0.019928131, + -0.016658876, + 0.0035102165, + -0.023145286, + 0.014184141, + -0.035167288, + -0.048817407, + 0.01841724, + -0.0002714882, + -0.00838805, + 0.011051646, + -0.00020412495, + 0.021829769, + 0.034698393, + 0.003686053, + 0.0079386905, + -0.012087128, + 0.0091825705, + 0.0025887033, + 0.01902941, + -0.0155126825, + 0.007997302, + -0.010765098, + -0.009723105, + -0.007730291, + -0.0067859846, + -0.020514252, + -0.011683355, + 0.018951261, + 0.0012984219, + -0.00878531, + -0.021973044, + 0.01595553, + -0.0038456083, + -0.03816302, + 0.032197606, + -0.0047019967, + 0.028368281, + 0.0009573318, + -0.0060761264, + 0.012243426, + -0.00093046785, + 0.00500157, + 0.0059393644, + 0.0023119238, + 0.0022614521, + -0.01936806, + 0.014874461, + -0.0014115759, + 0.0041028503, + 0.0007607369, + 0.0063366247, + -0.022806639, + -0.0155126825, + -0.039309215, + -0.0049494705, + -0.0031162126, + -0.01497866, + -0.00968403, + 0.01503076, + -0.020253753, + -0.009351894, + 0.0025382317, + 0.005320681, + 0.0209571, + -0.025515823, + -0.006812034, + -0.0000794215, + 0.0044805733, + -0.0027466305, + 0.004558723, + -0.167761, + 0.010745561, + 0.014861437, + -0.017661795, + -0.009377944, + 0.021256672, + 0.022832688, + 0.02198607, + -0.012035028, + 0.02672714, + 0.010791148, + 0.025672121, + -0.04694182, + -0.013689193, + 0.0013073765, + 0.021126423, + -0.0054900046, + -0.013194246, + 0.021269698, + 0.02013653, + 0.009351894, + -0.015330333, + 0.023913758, + -0.0026180095, + 0.012178302, + 0.0018625639, + -0.01047855, + 0.0148093365, + -0.011715918, + -0.010647874, + 0.0075935298, + 0.009495168, + 0.014014816, + 0.011377269, + 0.026101943, + 0.007997302, + -0.0039335266, + 0.0010712999, + -0.013962717, + 0.001510891, + 0.0042591495, + 0.008153602, + 0.0060012327, + 0.010804173, + -0.0209571, + 0.01857354, + 0.003332752, + 0.013936667, + -0.016255103, + -0.014379514, + 0.014561863, + -0.042487297, + -0.003205759, + -0.0066296854, + 0.0040247007, + 0.02664899, + 0.012979335, + 0.0049657514, + -0.013637094, + 0.0206445, + -0.000818942, + -0.04009071, + -0.008088477, + 0.013871542, + -0.0105632115, + -0.014119016, + 0.0061673005, + 0.009853354, + -0.018182792, + -0.004194025, + -0.0140799405, + -0.031077465, + 0.018821012, + -0.013233321, + 0.00666876, + 0.01815674, + -0.0074372306, + -0.0060826386, + -0.011084209, + -0.024044007, + 0.004747584, + 0.03699078, + -0.006890184, + 0.011461931, + -0.018638663, + 0.010784635, + 0.008238263, + 0.014040866, + -0.024135182, + -0.018977312, + 0.024499878, + -0.041523453, + 0.0047703777, + -0.032588355, + -0.008140576, + 0.010178977, + -0.0031731967, + -0.0007359081, + -0.00046401285, + 0.0017453396, + 0.0060631013, + 0.0007932992, + -0.013506845, + 0.0123215765, + 0.028680878, + 0.014679087, + -0.0103743505, + 0.016606776, + 0.013272395, + -0.005662585, + -0.010869297, + 0.027560735, + -0.008576911, + 0.010302713, + 0.0069748457, + -0.009351894, + 0.010485062, + -0.024317529, + 0.016333252, + -0.0076521416, + 0.030921165, + -0.0037511776, + -0.008498762, + 0.012543, + 0.005506286, + -0.01849539, + -0.10456408, + -0.0022386585, + 0.021347847, + 0.011976416, + 0.0003828106, + 0.013532894, + 0.003936783, + 0.03508914, + -0.014887486, + 0.03206736, + -0.016932398, + -0.021230623, + -0.019693682, + -0.010647874, + 0.018547488, + -0.012770936, + 0.015734106, + -0.03167661, + -0.048061963, + 0.004109363, + 0.0072092945, + -0.0028736235, + 0.0017013805, + -0.011429369, + -0.02349696, + -0.011865704, + -0.02265034, + 0.016606776, + 0.00011630848, + -0.001086767, + 0.019680656, + -0.010511112, + 0.01577318, + -0.010296201, + -0.009306307, + -0.009560293, + 0.0050960006, + 0.00072573236, + 0.010159439, + -0.023119237, + -0.013155172, + 0.00220284, + 0.024408704, + -0.021712545, + 0.003617672, + -0.005564898, + -0.0046271035, + 0.0067338846, + -0.0061542755, + -0.039517615, + 0.0044121924, + 0.013611044, + -0.010817198, + -0.009762179, + 0.03678238, + -0.023679309, + 0.008863459, + 0.015551757, + -0.025072975, + 0.009475631, + 0.004581516, + 0.0030999314, + 0.019511333, + 0.0144316135, + -0.016111828, + -0.018117666, + -0.02601077, + -0.025398599, + 0.02077475, + -0.024030982, + -0.01572108, + 0.017140798, + -0.022467991, + 0.016619802, + -0.021960018, + -0.006825059, + -0.016333252, + -0.011279583, + 0.008681111, + -0.024030982, + -0.034489993, + -0.018026492, + 0.0007232902, + -0.0023786763, + 0.003936783, + 0.029201876, + -0.005366268, + -0.010328763, + 0.037199177, + -0.015968554, + 0.0035558038, + 0.031129563, + 0.011188408, + -0.019146636, + -0.017687844, + 0.016971475, + 0.0040019075, + -0.0027710523, + 0.010960472, + -0.0100226775, + -0.029722873, + -0.01585133, + -0.040820107, + 0.017726919, + -0.0052523, + -0.001171429, + 0.0033571736, + -0.004972264, + -0.010993035, + 0.007723779, + -0.014275314, + 0.0020025817, + -0.0074372306, + -0.0014522788, + -0.016567701, + -0.01913361, + -0.010172464, + 0.007443743, + 0.009924991, + 0.0039205016, + 0.013624068, + 0.0034874228, + 0.0005747247, + -0.0006386282, + 0.011253533, + 0.009306307, + -0.03383875, + 0.010517624, + -0.024812477, + -0.022129342, + -0.016203003, + -0.011064671, + 0.02172557, + -0.02701369, + 0.004434986, + 0.037589926, + -0.020384002, + -0.025007851, + -0.0013822699, + 0.018951261, + 0.011468444, + -0.027508635, + -0.041601602, + -0.027586786, + 0.029332126, + -0.013988767, + -0.016476527, + 0.020462153, + -0.007945202, + 0.0109409345, + 0.008420612, + 0.00020961984, + 0.012393214, + 0.020566352, + 0.022168418, + -0.0041842563, + -0.0025170662, + -0.017388271, + 0.021504147, + 0.0028703671, + 0.0062356815, + -0.015200084, + -0.0027368618, + -0.0008323739, + 0.010641362, + 0.023002012, + 0.013454745, + 0.016333252, + -0.007163707, + -0.0025024132, + 0.003630697, + -0.013663143, + -0.012236915, + 0.0053011435, + 0.029931271, + 0.016216028, + 0.026635965, + -0.009110933, + -0.007710754, + -0.008589936, + -0.0072092945, + 0.014796312, + 0.025698172, + 0.009371432, + -0.0067729596, + 0.0058221403, + 0.032353908, + 0.027899383, + -0.044310786, + -0.01775297, + 0.009117446, + 0.008824385, + -0.016476527, + 0.0037218714, + -0.010185489, + 0.015343359, + 0.01214574, + -0.007932178, + -0.002386817, + -0.007150682, + -0.011741967, + 0.033448, + -0.0010403657, + -0.0121587645, + 0.00011590146, + -0.021256672, + -0.0151870595, + -0.0063626743, + -0.022975963, + -0.0066361977, + -0.0011893382, + 0.009547268, + 0.0047768904, + -0.010016165, + 0.009202108, + 0.010634849, + 0.0021800464, + 0.0062780124, + -0.008316413, + -0.020266779, + -0.02257219, + 0.010107339, + 0.0055583855, + -0.0057960902, + 0.0109148845, + -0.007919152, + 0.032979105, + 0.010680436, + 0.017687844, + -0.010068265, + 0.01246485, + -0.00019221936, + 0.017883219, + -0.0057374784, + -0.016163928, + -0.01132517, + -0.00711812, + -0.030582517, + -0.010459012, + 0.027117888, + -0.0075218924, + 0.059133146, + -0.008954634, + -0.02423938, + 0.028368281, + -0.0112926075, + 0.012757911, + 0.015747132, + 0.0022614521, + -0.020553328, + -0.022025144, + 0.013975741, + 0.022103293, + 0.03209341, + -0.014913536, + -0.026219169, + -0.018586565, + -0.027508635, + 0.01590343, + -0.023796532, + -0.008238263, + 0.029123725, + 0.019889057, + 0.0046401285, + 0.004317762, + -0.024030982, + -0.012810011, + 0.021504147, + 0.002300527, + -0.0022956426, + -0.013988767, + 0.012100153, + -0.004705253, + -0.021295749, + -0.01301841, + 0.0123215765, + -0.037355475, + -0.012901185, + -0.028550629, + 0.0070725325, + 0.014092966, + 0.015760155, + 0.025046926, + -0.018977312, + -0.028732978, + 0.008094989, + 0.003953064, + -0.009136983, + 0.00928677, + -0.019641582 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 71, + "total_tokens": 71 + } +} +278 34443 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 83 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["What color is the lamp in each room?"]}HTTP/2.0 200 OK +Content-Length: 33488 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:19:59 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 92 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-59scv +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999991 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_0119caf0d99e4b009204c0744bf6f60d + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.02230405, + 0.008771547, + 0.014554557, + -0.011423711, + -0.008448112, + 0.015473112, + 0.0068826885, + -0.008881515, + 0.004744786, + -0.005595419, + -0.016676288, + 0.01731022, + -0.017698342, + 0.024891527, + -0.0063878335, + -0.0012743324, + 0.031618968, + 0.021294935, + 0.013648941, + -0.0046218806, + -0.020337569, + 0.025512522, + -0.01429581, + -0.001887241, + -0.01562836, + -0.008959139, + 0.017374907, + -0.008868577, + -0.011934738, + 0.006138789, + 0.0034187038, + -0.016792726, + -0.012723918, + -0.0168186, + -0.016844476, + 0.0169221, + 0.010860935, + 0.0039006216, + 0.011591896, + -0.014606307, + 0.015718922, + -0.0003416278, + -0.00038286572, + 0.00014958851, + -0.0055177948, + 0.007827118, + -0.0011853878, + 0.0067468463, + -0.039355524, + 0.01296326, + -0.008124677, + 0.0066562844, + -0.012885635, + -0.052706905, + -0.026172329, + 0.00087650784, + 0.008674516, + 0.01811234, + -0.011714802, + -0.0054789823, + -0.0041917125, + -0.0013471051, + -0.014502808, + 0.0060676336, + -0.0006072485, + -0.001574318, + -0.0084093, + 0.010860935, + 0.017038535, + -0.0021136452, + 0.021424308, + 0.028125875, + 0.017581906, + -0.00033576557, + 0.029419612, + -0.008752141, + -0.020712754, + -0.0023740102, + 0.007109093, + 0.00022701068, + 0.0044892724, + 0.0069279694, + -0.03260221, + 0.008758609, + 0.018733334, + 0.013441943, + 0.0025923285, + 0.018371087, + -0.034594566, + -0.0030613088, + -0.013196132, + 0.051439043, + 0.030040607, + -0.021760682, + -0.012445764, + 0.0054854513, + -0.0074325274, + 0.02478803, + 0.0125169195, + -0.013791252, + 0.016119981, + -0.015291989, + -0.031308472, + 0.005977072, + -0.017129097, + -0.023222605, + 0.0037486071, + 0.008480456, + 0.032679833, + -0.040105894, + -0.03487919, + 0.049187936, + 0.039459024, + -0.038449906, + -0.021980617, + -0.0070767496, + 0.0012702894, + -0.024141159, + -0.037337292, + 0.0070055937, + -0.0022672766, + 0.040468138, + 0.017982965, + -0.027530754, + 0.04486685, + -0.002137903, + -0.026482826, + -0.024503406, + -0.024956215, + 0.005016471, + 0.010802716, + 0.014929742, + 0.013467818, + 0.021243185, + -0.008920327, + 0.0013099102, + -0.006513973, + 0.024425782, + -0.03793241, + 0.00328933, + 0.013545441, + 0.006119383, + -0.0047900667, + -0.008059991, + -0.0056406995, + 0.030972099, + 0.0048094727, + -0.0027427257, + -0.020402256, + -0.0018662177, + 0.005673043, + -0.012717449, + 0.023817725, + 0.012827417, + 0.0014692018, + 0.016999723, + -0.0019567795, + 0.017827716, + -0.044219982, + 0.0069538443, + -0.04931731, + 0.0048968, + 0.030402854, + -0.005876807, + 0.012342265, + 0.028772743, + 0.020686878, + 0.0049744244, + -0.010395189, + 0.0075101517, + -0.032576334, + 0.027039135, + -0.020466942, + 0.03330083, + 0.00044795693, + 0.034930937, + 0.007859461, + -0.016158793, + 0.003978246, + 0.01157249, + -0.0095930705, + -0.0068438766, + -0.008538674, + -0.009146731, + 0.0009783898, + -0.017129097, + 0.0017497813, + -0.001466776, + 0.024011785, + -0.004550725, + 0.01143018, + 0.027763627, + -0.015059115, + -0.0069991252, + -0.66901803, + -0.032653958, + 0.004961487, + -0.0085904235, + 0.0080988025, + 0.013390193, + 0.0239471, + 0.028255248, + -0.003522203, + -0.016003545, + 0.009386073, + 0.007063812, + 0.0042078844, + -0.023934161, + 0.0125233885, + -0.021825368, + -0.0053981235, + 0.010893278, + -0.00018577276, + 0.0017788904, + -0.008765078, + 0.019108517, + -0.0018112338, + -0.00398148, + 0.021411372, + 0.022834484, + 0.009638351, + -0.016495166, + -0.015020303, + 0.012102923, + -0.015304926, + 0.011792426, + 0.013099102, + -0.023106169, + 0.025447836, + -0.003709795, + -0.024555156, + 0.028824493, + 0.0054886853, + 0.029962983, + -0.028384622, + -0.0021750978, + 0.017323159, + -0.02305442, + -0.010666873, + 0.010847997, + 0.017568968, + -0.00046129862, + 0.046833333, + -0.014024125, + 0.012769199, + -0.030014733, + -0.015718922, + 0.01844871, + 0.018254649, + 0.015990607, + 0.046212338, + 0.009858287, + -0.008467519, + 0.0031146754, + -0.009987661, + -0.018086463, + 0.0013495309, + 0.002897974, + 0.007445465, + 0.00079120195, + -0.0252279, + -0.023507228, + -0.020104695, + -0.022329926, + -0.0035933587, + 0.016158793, + -0.03904503, + 0.02423172, + 0.0061064456, + -0.010796247, + 0.029911233, + -0.007102624, + -0.0024710405, + -0.017206721, + 0.002055427, + -0.015123802, + -0.02853987, + -0.015123802, + 0.01741372, + -0.010472813, + -0.014670994, + -0.020893876, + 0.015757734, + 0.026987385, + 0.009612476, + 0.015046178, + -0.01839696, + 0.0003299033, + -0.017103223, + 0.03216234, + -0.01646929, + 0.0032181744, + -0.011320212, + -0.025033839, + 0.000618973, + -0.03270571, + -0.0037453729, + 0.013312569, + 0.02913499, + -0.0064428174, + -0.0077494932, + 0.031877715, + 0.015641298, + -0.014399309, + 0.0004980893, + -0.013176726, + -0.021631308, + 0.0009832412, + 0.014502808, + -0.022498112, + 0.04877394, + 0.013234944, + 0.024218785, + -0.015874172, + 0.007607182, + -0.0003988353, + 0.014231123, + -0.0182029, + 0.020570442, + 0.008965608, + -0.013648941, + -0.009146731, + -0.009599539, + 0.024218785, + -0.011967081, + 0.011346086, + 0.010207596, + -0.0065269107, + -0.030583978, + 0.0065269107, + 0.01662454, + -0.026094705, + 0.013881814, + -0.013312569, + -0.01687035, + 0.0033507827, + -0.026651012, + 0.007833586, + -0.023481352, + -0.027065009, + -0.028358746, + -0.007128499, + -0.027686004, + -0.012329328, + -0.018332275, + -0.025991205, + -0.042977992, + 0.007671869, + 0.013299632, + 0.0028947399, + -0.015990607, + -0.0078077116, + -0.028332872, + 0.006614238, + 0.024956215, + 0.011967081, + -0.015421363, + 0.003324908, + -0.010304627, + -0.024205847, + -0.009981193, + 0.02903149, + 0.00025308758, + -0.042822745, + -0.0026004142, + 0.0050229398, + -0.002137903, + 0.013868877, + -0.011837707, + -0.00040328252, + -0.0031454016, + -0.037984163, + -0.006850345, + -0.010298158, + 0.012568669, + 0.029393738, + -0.015304926, + 0.0046024746, + 0.03423232, + 0.012549263, + 0.022679236, + 0.023274355, + 0.0025680708, + 0.010511625, + -0.015123802, + -0.004977659, + 0.013545441, + -0.0077883056, + 0.008726266, + -0.0033281422, + 0.022265239, + -0.012872698, + -0.00095332356, + -0.011087338, + 0.029600736, + -0.0019017955, + -0.005094095, + -0.011514273, + 0.029755985, + -0.033870075, + 0.009159668, + -0.005210532, + 0.013907689, + 0.025253775, + -0.007704213, + -0.025745396, + 0.0020344038, + -0.022627486, + 0.01641754, + 0.010110566, + -0.01687035, + 0.028358746, + -0.0054886853, + -0.00026905717, + 0.01063453, + 0.011954144, + 0.03635405, + 0.0006104828, + -0.015887108, + 0.0037874193, + 0.006649816, + 0.020906813, + 0.009787131, + -0.011281399, + -0.02804825, + -0.0077624307, + 0.000054630127, + 0.006513973, + -0.015279051, + 0.0025179384, + 0.008959139, + -0.016404605, + -0.0049841274, + 0.0050714547, + 0.020402256, + 0.030972099, + 0.022950921, + 0.0077818367, + 0.03244696, + -0.0034963281, + 0.00796296, + 0.026288766, + -0.02449047, + 0.013726565, + -0.008881515, + -0.012374609, + -0.024115285, + 0.0058250576, + 0.018086463, + 0.0038359344, + 0.032628085, + -0.0063781305, + 0.0040396983, + 0.010906215, + -0.0004334024, + -0.0010632913, + 0.016728038, + -0.005912385, + -0.0072578727, + 0.008913858, + -0.023287293, + -0.014554557, + 0.0029189973, + -0.0059447284, + -0.012853292, + -0.008467519, + 0.014774493, + 0.0008178853, + 0.017129097, + 0.0022624251, + -0.0077430247, + -0.017090285, + 0.018358149, + 0.0336372, + -0.0033895948, + -0.02240755, + 0.014308748, + -0.0011603216, + -0.014515745, + -0.018422836, + -0.018177025, + 0.018513398, + -0.017646592, + 0.0072449353, + 0.016326979, + -0.0062519913, + 0.024154097, + -0.0005373058, + 0.0018079996, + -0.022886233, + -0.001822554, + -0.0007689658, + 0.023222605, + 0.005980306, + -0.011139088, + 0.00031231655, + -0.027220257, + -0.013855939, + 0.016378729, + 0.011857113, + -0.016947974, + -0.008364019, + -0.006420177, + -0.0251244, + -0.023093231, + -0.009871225, + 0.004013824, + 0.011223181, + 0.013390193, + 0.008053522, + -0.019328453, + -0.018358149, + 0.023584852, + 0.004159369, + -0.021113811, + -0.029238489, + -0.011449586, + -0.0014821391, + 0.05852873, + 0.009916506, + -0.006306975, + 0.017077347, + -0.002411205, + -0.0194837, + -0.017737154, + 0.012820948, + -0.00930198, + 0.010097628, + 0.013196132, + -0.007859461, + -0.007587776, + -0.009890631, + -0.014748619, + -0.0019406077, + 0.0066821594, + -0.009877693, + 0.019328453, + -0.007594245, + -0.010472813, + 0.0090820445, + -0.0051523135, + 0.02606883, + -0.023390792, + -0.011113213, + 0.022394612, + -0.014567495, + 0.015123802, + -0.01236814, + -0.012161141, + 0.016262293, + -0.0058638696, + -0.0024500173, + -0.025706584, + -0.01697385, + -0.016107043, + 0.008027648, + 0.029238489, + -0.0019001784, + 0.027479006, + 0.0066950964, + 0.0009306831, + -0.025603084, + 0.000605227, + 0.0065754256, + -0.009974724, + 0.02137256, + 0.0066821594, + -0.013687753, + 0.00008136402, + -0.0019858885, + -0.003997652, + -0.0042984462, + 0.0040526357, + 0.00009975937, + -0.013273757, + -0.024645718, + 0.009366667, + -0.01741372, + -0.0038909183, + 0.0034639847, + 0.030816851, + -0.0052364063, + -0.03565543, + -0.024063535, + -0.0013940032, + -0.011798895, + -0.0080858655, + -0.007794774, + -0.0052816872, + -0.015343738, + -0.042072374, + 0.012064111, + 0.04719558, + 0.024645718, + 0.030532228, + -0.0120511735, + 0.0045442563, + 0.01953545, + 0.0043987106, + -0.010375783, + 0.0060223527, + -0.006119383, + -0.0105310315, + -0.0052267034, + 0.021036187, + -0.012070579, + -0.01434756, + 0.027789501, + 0.026198205, + -0.0054304674, + 0.02903149, + -0.027737753, + -0.007937086, + -0.009263167, + -0.0014675845, + 0.02542196, + -0.028074125, + -0.012665699, + 0.017012661, + -0.019781262, + 0.012588075, + -0.035396684, + -0.019781262, + 0.01018819, + -0.0041787755, + -0.009418416, + -0.03169659, + 0.011171431, + 0.0006618281, + -0.020790378, + -0.004023527, + -0.014852118, + 0.028876243, + 0.01627523, + -0.026159393, + 0.012199954, + -0.0047674263, + -0.032032963, + 0.009780663, + -0.03542256, + 0.026935635, + 0.0014683931, + -0.03679392, + 0.005372249, + 0.011928269, + -0.009237292, + 0.01890152, + 0.008629235, + 0.004744786, + 0.01800884, + -0.027789501, + -0.014037062, + -0.026935635, + -0.007212592, + 0.012555731, + 0.009334323, + -0.015097928, + 0.014127624, + -0.009935912, + 0.019600138, + -0.0029545752, + -0.015072053, + -0.011727739, + -0.02631464, + 0.011585428, + -0.0010333736, + 0.0063781305, + 0.028229373, + 0.01608117, + 0.0050358768, + -0.03596593, + 0.017750092, + -0.013073227, + -0.019224953, + -0.006164664, + -0.016145855, + 0.011449586, + 0.013894751, + 0.016042357, + 0.0036192334, + 0.0073225596, + 0.005543669, + -0.0065366137, + 0.0056665745, + 0.009017357, + -0.0019470764, + -0.027116759, + -0.005669809, + 0.011902394, + 0.012083517, + 0.015563673, + 0.008933264, + 0.01152721, + 0.029212615, + -0.005317265, + 0.00062705885, + -0.03482744, + -0.026780386, + 0.001640622, + -0.016999723, + -0.011734208, + 0.0043696016, + 0.0014303896, + 0.013713628, + 0.0067468463, + -0.003897387, + -0.015473112, + -0.00925023, + 0.029652486, + -0.014632182, + 0.044763353, + -0.025344336, + 0.014321685, + -0.009127324, + -0.038812153, + -0.023106169, + -0.0061873044, + -0.020130571, + 0.0059447284, + 0.008376957, + 0.0032197917, + -0.02433522, + 0.021980617, + -0.0027799206, + 0.018979143, + -0.0007612842, + -0.0071996544, + -0.018177025, + -0.03358545, + -0.024050599, + -0.022575736, + -0.02869512, + 0.016585726, + -0.014412247, + -0.03167072, + 0.020454004, + 0.0022769796, + -0.007102624, + -0.010479282, + -0.009269636, + 0.025163213, + 0.013933564, + 0.026237017, + 0.013881814, + -0.0050358768, + -0.011714802, + -0.022523986, + -0.025913581, + -0.017918278, + 0.021424308, + 0.022420488, + 0.0047415514, + 0.010472813, + 0.0135066295, + -0.0030499885, + 0.012866229, + -0.016003545, + -0.0012161141, + 0.013933564, + 0.0068180016, + -0.005026174, + 0.00945076, + -0.017504282, + 0.023339042, + -0.007950023, + -0.008635704, + 0.010291689, + -0.0005227512, + -0.021825368, + -0.0012581607, + -0.01844871, + 0.035629556, + 0.01687035, + -0.011928269, + 0.015744798, + -0.016702164, + -0.009554259, + 0.0026699528, + 0.0068891575, + 0.035344936, + 0.0009694953, + 0.0055080913, + 0.0076848064, + 0.0074389963, + -0.015563673, + -0.00885564, + 0.009431354, + 0.029445488, + -0.015550736, + -0.0043598986, + -0.0110355895, + 0.020764502, + 0.03032523, + -0.01454162, + 0.002259191, + 0.0120252995, + -0.01137843, + 0.015162615, + 0.020001197, + -0.0037033265, + -0.01741372, + 0.0044601634, + -0.03037698, + 0.00420465, + -0.026379328, + -0.011714802, + -0.00026663142, + -0.03423232, + 0.0016737741, + 0.010265815, + 0.024891527, + 0.009515447, + 0.0052331723, + 0.0021136452, + 0.028902117, + -0.014114686, + -0.0052752187, + 0.0033895948, + 0.01068628, + 0.016753914, + -0.016495166, + 0.00413026, + -0.0009694953, + -0.041037384, + 0.017517218, + 0.010311096, + -0.033119705, + -0.0031890653, + 0.022730986, + -0.0038941528, + 0.004773895, + -0.016016481, + -0.0038197627, + 0.002102325, + 0.0012056025, + -0.012866229, + 0.0041884785, + -0.0056924494, + -0.017995901, + 0.015175552, + 0.009683632, + -0.0060126497, + 0.00791768, + 0.0048903315, + -0.010252877, + 0.012284047, + -0.01513674, + 0.0017708045, + 0.0016066615, + 0.018021777, + -0.0014675845, + -0.015990607, + 0.011100276, + -0.004366367, + -0.008364019, + -0.0014643503, + 0.009192012, + 0.008124677, + 0.0036774515, + 0.0144898705, + -0.0039847144, + 0.019651888, + -0.03260221, + -0.0073743095, + -0.014231123, + -0.034542818, + -0.02641814, + -0.020337569, + -0.02547371, + 0.007633057, + -0.010666873, + -0.028125875, + 0.0021815666, + -0.005795948, + 0.008668047, + -0.018384025, + 0.0053690146, + -0.0022478707, + 0.008900921, + -0.0019729512, + -0.004476335, + 0.026094705, + 0.0038068255, + -0.0029092943, + -0.0078077116, + 0.0048968, + 0.006239054, + -0.017271409, + 0.0033863604, + -0.0015597634, + -0.008739203, + -0.018733334, + 0.018319337, + 0.012109392, + 0.011009715, + -0.008972077, + -0.020686878, + 0.00727081, + 0.004579834, + 0.022562798, + 0.02696151, + 0.032886833, + -0.012723918, + -0.027686004, + -0.02286036, + -0.020466942, + 0.014140561, + -0.021657182, + -0.007801243, + 0.030635728, + 0.009166137, + -0.008829765, + -0.031386096, + -0.002327112, + -0.004269337, + 0.0055274977, + 0.014231123, + -0.00022559565, + -0.011274931, + 0.004026761, + 0.016728038, + -0.007044406, + 0.0021055595, + -0.005391655, + -0.011785957, + 0.00027896237, + 0.008913858, + 0.001550869, + -0.0038003568, + -0.014722744, + -0.013338444, + -0.016508102, + -0.0012403717, + -0.007341966, + -0.02156662, + -0.021087937, + 0.024904465, + 0.00939901, + -0.015990607, + 0.0026521639, + -0.040778637, + -0.020285819, + -0.0004916206, + -0.0066110035, + 0.005158782, + -0.030040607, + -0.0050358768, + 0.0011554701, + -0.001466776, + -0.018293463, + -0.022562798, + 0.003690389, + 0.023623664, + 0.012698043, + 0.2370129, + 0.008454581, + 0.0027119992, + 0.04199475, + -0.008875046, + 0.014205248, + 0.027039135, + 0.0049291435, + 0.016443416, + 0.023015607, + -0.02750488, + 0.0011109979, + 0.009386073, + 0.010938559, + -0.011850644, + -0.014554557, + -0.01811234, + -0.015304926, + 0.01310557, + 0.0023109403, + 0.008021179, + 0.000092381015, + 0.0040041204, + -0.021256123, + 0.015304926, + 0.021993553, + -0.0022915343, + -0.001701266, + 0.019328453, + 0.020259945, + 0.005411061, + -0.020945625, + -0.008286395, + -0.00024257596, + -0.004456929, + -0.0085710175, + -0.0023869474, + -0.0026521639, + 0.0222523, + 0.024813903, + -0.0040688077, + -0.0144769335, + -0.020997375, + 0.014127624, + -0.006552785, + -0.0051070326, + -0.019858886, + -0.012782136, + 0.01687035, + 0.0072449353, + -0.017944153, + -0.0072772787, + 0.02324848, + 0.023274355, + -0.00004644319, + 0.0061711324, + 0.02859162, + -0.018138213, + 0.00640724, + 0.00865511, + -0.006119383, + 0.035267312, + -0.020945625, + 0.023636602, + 0.010996777, + -0.008344613, + -0.002513087, + -0.00048515192, + 0.024425782, + -0.012070579, + 0.006300506, + -0.0031421673, + -0.0031648078, + 0.015964733, + 0.01760778, + 0.007937086, + 0.026832135, + 0.010957965, + 0.0095736645, + 0.002344901, + -0.010977371, + -0.0075554326, + -0.004421351, + 0.028384622, + 0.00058056513, + -0.017180847, + -0.0062455223, + 0.008150552, + 0.029419612, + 0.009631883, + 0.00390709, + 0.0017643358, + 0.0052008284, + 0.017193785, + 0.015317864, + 0.022278177, + 0.008422238, + 0.00885564, + -0.018992081, + -0.0023060888, + -0.029109115, + -0.0115207415, + 0.01879802, + 0.002307706, + -0.02696151, + 0.011003246, + 0.004211119, + -0.021760682, + 0.029238489, + 0.0044860383, + 0.004026761, + -0.009192012, + 0.008784484, + 0.0013325507, + 0.0059447284, + -0.0029303175, + 0.005158782, + -0.031618968, + -0.017245533, + -0.0063231466, + -0.008525737, + -0.020738628, + -0.010841528, + -0.0013163789, + -0.008234645, + -0.025486648, + -0.01562836, + 0.013674815, + 0.0073290286, + -0.03780304, + 0.0065107387, + -0.012892104, + 0.024451656, + -0.0026861245, + -0.0017109691, + -0.0021314342, + 0.013687753, + -0.0080858655, + 0.016857412, + -0.012601012, + 0.008519268, + -0.008131146, + 0.016546914, + -0.0010738029, + 0.0052267034, + -0.011876519, + 0.0044439915, + -0.008480456, + -0.014451059, + -0.027530754, + -0.01795709, + -0.006219648, + 0.0018662177, + -0.021152625, + 0.026094705, + -0.012070579, + -0.00045765997, + 0.0020667473, + 0.028436372, + 0.01370069, + -0.009463697, + 0.0063393186, + 0.013817127, + -0.0021087937, + -0.007503683, + 0.0025858597, + -0.16487403, + 0.0057571363, + 0.044219982, + -0.03314558, + -0.022045303, + 0.00796296, + 0.0095801335, + 0.023558978, + -0.014735681, + 0.039640147, + 0.00035961886, + 0.011132619, + -0.04572072, + -0.0026020315, + -0.010847997, + 0.0036095304, + -0.005391655, + 0.019250829, + -0.011578959, + 0.006921501, + 0.011443117, + -0.018616896, + 0.007037937, + 0.014127624, + -0.0037712476, + -0.019431952, + -0.02305442, + 0.021644244, + 0.01038872, + -0.02300267, + -0.009489572, + -0.0003606296, + 0.00051547395, + 0.006400771, + 0.009813006, + 0.0034445787, + 0.003968543, + 0.0026295234, + -0.013868877, + 0.00059754547, + -0.0077688997, + 0.010802716, + 0.017827716, + 0.03348195, + -0.0062778657, + 0.020492818, + 0.011986487, + 0.0009039998, + -0.01221936, + -0.008933264, + 0.009360198, + -0.025137339, + -0.0054045925, + -0.002624672, + 0.005540435, + 0.02067394, + 0.017103223, + 0.01953545, + 0.0009573665, + -0.000321211, + -0.008247583, + -0.03834641, + -0.011766551, + -0.0025454303, + 0.012406952, + 0.009664226, + 0.015887108, + -0.0031551046, + -0.017387845, + 0.008985014, + -0.00221391, + -0.02088094, + -0.0061226175, + -0.019781262, + 0.004903269, + 0.011093807, + 0.0030790975, + -0.026094705, + -0.011934738, + -0.01009116, + -0.002120114, + 0.050171178, + -0.017646592, + 0.0125233885, + -0.013674815, + 0.01592592, + 0.00041803924, + 0.004560428, + -0.027427256, + 0.0015678493, + 0.029109115, + -0.010052348, + 0.00846105, + -0.02853987, + 0.010744498, + 0.0043501956, + 0.0054498734, + -0.00571509, + 0.0004378496, + 0.0018079996, + -0.013674815, + 0.010097628, + -0.018862708, + 0.021605432, + 0.032860957, + -0.00930198, + -0.016339917, + 0.018319337, + 0.03749254, + -0.005210532, + -0.022174677, + 0.010699217, + 0.009819475, + 0.020014133, + 0.016184669, + -0.005857401, + 0.014877993, + -0.0061452575, + 0.024050599, + 0.029471362, + 0.04230525, + -0.020518692, + -0.015473112, + 0.016314043, + 0.0071802484, + -0.016158793, + -0.08569723, + 0.003531906, + -0.0037033265, + 0.021346685, + 0.0077106813, + 0.028798617, + 0.021631308, + 0.035267312, + 0.00687622, + 0.01518849, + -0.012232297, + -0.011669521, + -0.01608117, + 0.009754788, + 0.0008522502, + -0.011391367, + 0.01083506, + -0.032576334, + -0.04574659, + 0.016145855, + 0.000981624, + -0.0030241136, + 0.012801542, + -0.0077300873, + 0.006365193, + -0.037673663, + -0.038605157, + 0.0110355895, + 0.0035157343, + 0.0034154695, + 0.02349429, + -0.027039135, + -0.016986785, + -0.013312569, + -0.021708932, + -0.0149814915, + -0.021281999, + -0.019263767, + 0.011941206, + -0.03961427, + -0.008991483, + 0.018306399, + 0.0168186, + -0.015563673, + 0.015162615, + -0.0058379946, + -0.016197605, + 0.012549263, + -0.009386073, + -0.022627486, + 0.012665699, + 0.0045054443, + -0.008680985, + -0.023416666, + 0.026599264, + -0.011734208, + 0.008564549, + 0.030144107, + -0.013687753, + 0.00895267, + -0.0022656594, + 0.028617496, + -0.0004867691, + 0.020945625, + 0.0050100023, + -0.026482826, + -0.025680708, + -0.0009444291, + 0.009800069, + -0.037259668, + -0.036198802, + -0.003531906, + -0.0029384035, + -0.013894751, + -0.028902117, + -0.008182895, + -0.013648941, + 0.016896224, + -0.0016333448, + -0.0054983883, + -0.017530156, + -0.022562798, + 0.0057991827, + 0.006064399, + -0.001644665, + 0.03555193, + -0.031748343, + -0.018772146, + 0.0024144393, + -0.0015686579, + -0.0060417587, + 0.019134391, + 0.013124976, + -0.016249355, + -0.025098527, + 0.018371087, + -0.0025001497, + 0.014670994, + 0.02734963, + -0.01890152, + -0.022433424, + 0.00079686206, + -0.05387127, + 0.019315515, + -0.005165251, + -0.013959438, + -0.013429006, + -0.0043437267, + 0.005805651, + -0.0063037407, + -0.0067597837, + 0.007193186, + -0.008351082, + 0.017866528, + -0.010343439, + 0.002391799, + -0.0044957413, + 0.0054789823, + 0.009036764, + 0.017504282, + -0.0047577233, + -0.00801471, + -0.015537799, + -0.0018338743, + 0.017672468, + 0.017737154, + -0.029367864, + 0.004773895, + -0.008842702, + 0.001822554, + -0.022394612, + -0.01370069, + 0.03819116, + -0.036923297, + 0.0043404927, + 0.04947256, + -0.010653936, + -0.039950643, + -0.029859483, + 0.030092357, + 0.03423232, + -0.040287014, + -0.00791768, + -0.025848895, + 0.011456054, + -0.024593968, + 0.007982367, + 0.031644844, + -0.015641298, + 0.006921501, + 0.010673342, + 0.0007115562, + 0.022523986, + 0.016883288, + 0.0011045292, + 0.0010754201, + -0.010265815, + -0.025797145, + 0.02354604, + -0.016055295, + 0.029290238, + -0.025745396, + 0.011798895, + 0.0055727786, + 0.013312569, + 0.008079397, + 0.020686878, + -0.011158494, + 0.024865653, + 0.0037680133, + -0.0049905963, + -0.014774493, + 0.005753902, + 0.010446938, + 0.026780386, + 0.016805662, + 0.020363443, + 0.002352987, + 0.023468416, + 0.0075101517, + -0.016404605, + 0.018138213, + 0.019845948, + -0.0027152337, + -0.023313167, + 0.014037062, + 0.035836555, + 0.0002749194, + -0.036172926, + 0.017750092, + 0.010304627, + 0.0036030617, + -0.017504282, + 0.0056762774, + 0.008215239, + 0.004615412, + 0.008351082, + 0.0041076196, + -0.00472538, + 0.01454162, + -0.0036483426, + 0.021100875, + -0.015343738, + -0.022769798, + 0.0066821594, + -0.02552546, + -0.012969729, + 0.005346374, + -0.0050035333, + -0.017970027, + -0.0076395255, + 0.003402532, + 0.0042919773, + 0.0011012949, + 0.004139963, + 0.007658932, + 0.004589537, + -0.006219648, + -0.028953867, + -0.023804788, + -0.022472236, + 0.015615423, + 0.0015557205, + 0.008972077, + -0.005905916, + 0.001896944, + 0.0063748965, + 0.01058278, + 0.018189963, + -0.011197306, + 0.030532228, + 0.02582302, + 0.010479282, + 0.0062455223, + -0.0009436205, + -0.0067015653, + 0.001402089, + -0.022718048, + 0.0034898594, + 0.011747145, + -0.01276273, + 0.06810239, + 0.0030338168, + -0.022601612, + 0.03487919, + -0.013726565, + 0.033430204, + 0.008441644, + 0.009528384, + -0.022032365, + -0.009780663, + -0.0017999136, + 0.019548388, + 0.011404305, + -0.028850367, + -0.02908324, + -0.019224953, + -0.024852715, + 0.0059382594, + -0.0004519999, + -0.015253177, + 0.018707458, + -0.01725847, + 0.007924148, + 0.015059115, + -0.022187615, + -0.024115285, + 0.0144898705, + -0.0020360209, + 0.0006181644, + 0.0032214087, + 0.021683056, + -0.0045539592, + -0.03293858, + -0.0051070326, + 0.014231123, + -0.015822422, + -0.011675989, + -0.019199079, + -0.008887983, + -0.0038100597, + 0.010828591, + 0.027479006, + -0.010155847, + -0.008499862, + 0.013196132, + -0.014049999, + -0.0034995626, + 0.008661579, + -0.0046024746 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 9, + "total_tokens": 9 + } +} +1799 1827 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 1596 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003ein bedroom, The color of the lamp beside the desk is blue.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003ebedroom\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003ein sitting room, The color of the lamp beside the desk is purple.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003esitting room\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003ein patio, The color of the lamp beside the desk is yellow.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003epatio\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003ein kitchen, The color of the lamp beside the desk is black.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003ekitchen\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003ein office, The color of the lamp beside the desk is orange.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003eoffice\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What color is the lamp in each room?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 1000 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:20:02 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 1129 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999735 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_cea6241cc66e4f6e94e0ae31ebdcc36e + +{ + "id": "chatcmpl-EREMzLEFYtHzIQGFbRCaaclRaEqVy", + "object": "chat.completion", + "created": 1790158801, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "In the bedroom, the lamp is blue. \nIn the sitting room, the lamp is purple. \nIn the patio, the lamp is yellow. \nIn the kitchen, the lamp is black. \nIn the office, the lamp is orange.", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 268, + "completion_tokens": 50, + "total_tokens": 318, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_b95af6e96a" +} diff --git a/vectorstores/dolt/testdata/TestDoltAsRetrieverWithMetadataFilters.httprr b/vectorstores/dolt/testdata/TestDoltAsRetrieverWithMetadataFilters.httprr new file mode 100644 index 000000000..9c48b24f3 --- /dev/null +++ b/vectorstores/dolt/testdata/TestDoltAsRetrieverWithMetadataFilters.httprr @@ -0,0 +1,6332 @@ +httprr trace v1 +431 101196 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 235 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["In office, the color of the lamp beside the desk is orange.","in sitting room, the color of the lamp beside the desk is purple.","in patio, the color of the lamp beside the desk is yellow."]}HTTP/2.0 200 OK +Content-Length: 100239 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:20:04 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 152 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6659cb4779-66lnk +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999955 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_6dcfca190ec646908a7169046e86ba11 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.018600795, + -0.0136345, + -0.00045825803, + -0.017818702, + 0.00089533435, + 0.0105452305, + -0.02540501, + -0.0028562713, + 0.011835685, + -0.018978808, + 0.019878216, + 0.0072408845, + -0.011359911, + 0.019187367, + -0.026851885, + -0.006765111, + 0.038192242, + -0.010219358, + 0.023019625, + -0.016502177, + -0.039730363, + 0.0068107327, + -0.018014226, + 0.017453725, + -0.013360768, + -0.011470708, + 0.006882425, + -0.022889277, + 0.018509552, + 0.003705169, + 0.017193027, + -0.018092435, + 0.018248854, + -0.029328514, + -0.034229636, + 0.018092435, + 0.007188745, + 0.00054624357, + 0.009326467, + -0.030188818, + 0.014781571, + 0.0057744584, + -0.0067716283, + -0.015811328, + -0.0063284417, + 0.019174332, + 0.023319427, + 0.01031712, + -0.013080518, + 0.01741462, + -0.0012757904, + 0.019721797, + -0.012239766, + -0.020960111, + 0.006941082, + -0.033212915, + -0.0015161212, + 0.016697701, + -0.024062417, + -0.02178131, + -0.0026216432, + -0.014403559, + 0.00541274, + -0.007293024, + 0.0038843988, + 0.001654617, + -0.0057809763, + 0.013595396, + 0.00086274714, + -0.0017857807, + 0.028520351, + 0.025053069, + 0.000023702125, + 0.015003164, + 0.009567613, + 0.013895199, + -0.012989273, + -0.0009124427, + 0.005862444, + -0.010134631, + 0.00019521793, + -0.019369854, + -0.026030686, + -0.0032636118, + 0.0186399, + 0.0078013847, + -0.0044774865, + 0.003372779, + -0.027190791, + -0.014364455, + -0.006145953, + 0.026982233, + 0.031987634, + -0.0009148867, + -0.0051259724, + 0.010356224, + 0.014103756, + 0.026108894, + 0.021624891, + -0.026278349, + 0.013302111, + 0.014833711, + -0.03986071, + -0.00078820385, + -0.028259654, + -0.025222523, + 0.007847007, + -0.0023169527, + 0.03508994, + -0.029641353, + -0.02606979, + 0.02045175, + 0.025418045, + -0.022680718, + -0.014468734, + -0.02052996, + 0.00076702214, + -0.021038322, + -0.029041747, + -0.0026493424, + 0.0058885138, + 0.04351048, + 0.014103756, + -0.010792893, + 0.030527724, + 0.013777885, + -0.004754478, + -0.022941416, + -0.009645822, + 0.0062795607, + 0.0072278497, + 0.015537595, + 0.014077687, + 0.019669658, + -0.004422088, + -0.003920245, + -0.0057744584, + 0.029511003, + -0.0034379535, + -0.023971172, + 0.02185952, + 0.025574464, + -0.013080518, + -0.006654314, + -0.008948456, + 0.035037797, + 0.01925254, + -0.008029495, + -0.004294998, + -0.0006468567, + 0.0067781457, + -0.032561168, + 0.018092435, + -0.00018696928, + 0.015524561, + -0.0029963965, + -0.0076645184, + 0.005960206, + -0.034333915, + -0.007618896, + -0.0130088255, + 0.005181371, + 0.029693492, + 0.007879594, + 0.021285985, + 0.018496517, + -0.0027780621, + 0.01274161, + -0.008192432, + 0.0044774865, + -0.0009531767, + 0.03146624, + -0.0136345, + 0.027008303, + -0.0075928266, + 0.014195001, + -0.0027682858, + -0.00464694, + -0.013504151, + 0.00638384, + -0.019226471, + -0.009756619, + 0.014364455, + -0.0036530294, + 0.005865703, + -0.009717515, + 0.008739897, + -0.011731406, + 0.015003164, + -0.009287363, + 0.018092435, + 0.021820415, + -0.0043699485, + -0.017362481, + -0.6924136, + -0.03360396, + 0.0027275519, + -0.0012432032, + 0.0038224831, + 0.020490855, + 0.006002569, + 0.013960373, + 0.0024114556, + -0.018626865, + 0.005605005, + 0.008915869, + 0.005807046, + -0.006361029, + 0.009157014, + -0.03219619, + -0.01371271, + 0.026486907, + -0.0028872292, + -0.0072017796, + 0.00065133744, + -0.0020171502, + -0.027998956, + -0.0044057947, + 0.03318684, + 0.0134259425, + 0.018574726, + -0.0046795276, + -0.00079838734, + 0.021038322, + -0.0018151092, + -0.007032326, + -0.009157014, + -0.012239766, + 0.041477036, + 0.009456816, + -0.016997503, + 0.008518304, + -0.0027976143, + 0.015420281, + -0.011307771, + 0.0010835257, + -0.001082711, + -0.025144313, + -0.011379464, + -0.0017368998, + 0.010323637, + -0.011372946, + 0.03993892, + 0.005226993, + 0.018913632, + -0.015224758, + 0.0032782762, + -0.0015234534, + 0.023840824, + -0.0005853483, + 0.022276636, + 0.0010118338, + 0.003858329, + -0.0057288366, + -0.012963204, + 0.0020774365, + -0.020881902, + -0.008238054, + -0.006598916, + 0.008114222, + -0.03725373, + -0.020673344, + 0.000015809903, + 0.0019829334, + 0.005559383, + 0.014416594, + -0.0136084305, + 0.030944841, + 0.008127257, + -0.004461193, + 0.018248854, + -0.019539308, + 0.02285017, + 0.0097305495, + 0.012552604, + -0.0055267955, + -0.023371568, + -0.003033872, + 0.01823582, + -0.015172618, + -0.034438193, + -0.027477559, + 0.022094147, + -0.010199806, + 0.042128783, + 0.004451417, + -0.0052791326, + -0.0068042153, + -0.005305202, + 0.024075452, + -0.013041412, + -0.000100664016, + 0.010864586, + -0.005605005, + 0.010147666, + -0.031049121, + -0.011359911, + 0.0008806701, + 0.031831216, + 0.011920412, + -0.028390002, + 0.03581989, + 0.011118766, + -0.022120217, + 0.021989869, + -0.019109156, + -0.01813154, + 0.0021556458, + 0.015563665, + -0.02295445, + 0.04601318, + 0.017062677, + 0.006647797, + -0.0058233393, + 0.0006892201, + 0.007827454, + -0.004154873, + -0.021768276, + 0.007860042, + -0.014051617, + -0.005402964, + -0.022915347, + -0.023971172, + -0.0030534242, + 0.00957413, + -0.0051976647, + 0.006572846, + 0.0052921674, + -0.001591072, + -0.0014762019, + 0.0065044127, + -0.021794345, + 0.030240957, + -0.024127591, + -0.026956163, + -0.0105452305, + -0.022967486, + -0.0077948673, + -0.0074168555, + -0.016671631, + -0.03235261, + -0.004933708, + -0.026148, + 0.018418306, + -0.03219619, + -0.018405272, + -0.02982384, + 0.011913895, + -0.0018982067, + -0.0019796747, + -0.026148, + 0.0051259724, + -0.011333842, + 0.031023052, + 0.007755763, + 0.004650199, + -0.0073321285, + -0.00029858056, + -0.006501154, + -0.030162748, + -0.0018574726, + 0.029093886, + -0.0056799557, + -0.029719561, + -0.00784049, + -0.0038127068, + 0.0032685, + -0.008544374, + -0.026747605, + -0.017010538, + -0.016580386, + -0.022745892, + 0.016306654, + -0.017127853, + 0.016045956, + 0.015902571, + 0.0013393355, + -0.024427393, + 0.0375405, + -0.0023283581, + 0.022824101, + 0.016319688, + 0.005842892, + 0.009860898, + -0.017140888, + -0.00076335605, + 0.0011038927, + -0.015446351, + 0.015107444, + 0.0072278497, + -0.0043471376, + 0.008544374, + 0.007573274, + -0.0025972028, + 0.0106951315, + 0.00015641874, + 0.02185952, + -0.020399611, + 0.024883615, + -0.027581839, + 0.023123905, + -0.0052009234, + 0.007827454, + 0.04126848, + 0.002620014, + -0.020360507, + -0.009737067, + -0.0102128405, + 0.009176566, + 0.0062111276, + -0.011001452, + 0.023840824, + 0.0051846295, + -0.008016461, + 0.00000814681, + 0.0024782594, + 0.041503105, + 0.0031658502, + -0.0037605674, + -0.0069671515, + 0.03587203, + 0.01605899, + -0.0100629395, + -0.007833972, + -0.022302706, + -0.0054485863, + -0.02009981, + 0.0066510555, + -0.013751814, + -0.008068601, + 0.003250577, + -0.03759264, + 0.01871811, + 0.020399611, + 0.008498752, + 0.033890728, + 0.034281775, + -0.014051617, + 0.015511526, + -0.009515474, + 0.026956163, + 0.014129827, + -0.01823582, + 0.0037475324, + -0.019669658, + -0.001427321, + -0.0059667234, + 0.013399872, + 0.028129304, + 0.0107277185, + 0.038218312, + 0.009241741, + 0.024114557, + 0.022055043, + -0.024753267, + -0.007527652, + 0.013777885, + -0.012363599, + -0.0013515557, + -0.0023022883, + -0.005605005, + 0.006253491, + -0.00109819, + -0.010382294, + -0.003411884, + 0.010356224, + 0.021768276, + -0.014768536, + 0.01690626, + -0.014481769, + -0.019513238, + 0.000036940688, + 0.019656623, + 0.012148523, + 0.00018014632, + -0.03592417, + 0.014312315, + -0.00076620746, + 0.0008586737, + -0.022302706, + -0.027607908, + 0.021259915, + -0.0045948005, + 0.012911064, + 0.009528508, + 0.01626755, + 0.017088749, + 0.007873077, + 0.011425085, + -0.03123161, + -0.0016896483, + -0.004011489, + 0.008739897, + 0.00906577, + -0.004259152, + -0.013895199, + -0.02867677, + 0.0011087807, + 0.008016461, + 0.017844772, + -0.01869204, + 0.005217217, + -0.01427321, + -0.020542994, + -0.004845722, + 0.002818796, + 0.0035976311, + -0.00531172, + -0.007983874, + -0.00084075076, + -0.021390263, + -0.0037116865, + 0.024075452, + 0.0106625445, + 0.025027, + -0.018392237, + -0.01491192, + -0.0040277825, + 0.08154631, + 0.013621465, + -0.0043503963, + 0.007860042, + -0.0023837565, + -0.012826337, + -0.019747866, + 0.012982756, + -0.011992103, + -0.0058722203, + 0.006934564, + -0.012585191, + 0.011933447, + 0.006276302, + 0.0001156847, + -0.009847864, + 0.017688353, + 0.0054811733, + 0.03725373, + -0.014872815, + 0.00043626165, + 0.0076449662, + -0.018535621, + 0.0063805813, + -0.0029295927, + -0.004500298, + 0.023358533, + 0.01728427, + 0.015915608, + -0.011933447, + 0.008616066, + 0.01989125, + 0.00085215626, + -0.013308628, + -0.013491116, + -0.016306654, + -0.006347994, + 0.0057614236, + 0.006784663, + -0.02127295, + 0.029980259, + 0.013882164, + 0.013569326, + -0.017427655, + -0.0050086584, + 0.015107444, + -0.007514617, + 0.014586048, + -0.0077818325, + 0.0036367357, + 0.016280584, + -0.00038717713, + -0.00093525375, + -0.0071235704, + 0.009658857, + 0.020125879, + -0.003457506, + -0.006005828, + -0.00136622, + -0.010975382, + 0.003467282, + -0.011959516, + -0.004109251, + -0.016280584, + -0.019826075, + -0.0043210676, + 0.007058396, + -0.00057801616, + -0.003398849, + 0.00372798, + 0.0022159321, + -0.019226471, + -0.025040034, + 0.009632788, + 0.030788423, + 0.017375516, + 0.010955829, + -0.010095526, + -0.00012668289, + 0.041555244, + -0.0074364077, + 0.0028595303, + -0.019826075, + -0.002574392, + -0.013249971, + 0.0050575393, + 0.025105208, + -0.020386577, + -0.0040668873, + -0.005960206, + 0.023958137, + -0.0011804727, + 0.003975643, + -0.01218111, + -0.010134631, + -0.009808758, + 0.019382888, + 0.004226565, + -0.01940896, + -0.004435123, + 0.0015772224, + -0.022563403, + -0.018444376, + -0.008368403, + 0.009678409, + 0.025235558, + 0.024531674, + 0.010949312, + -0.020347472, + 0.0060449326, + 0.026799744, + -0.009411194, + 0.0034607647, + -0.009046217, + 0.0022680718, + 0.012096383, + -0.008674723, + 0.022837136, + 0.008225019, + -0.033291124, + 0.0042037535, + -0.032587238, + 0.023788683, + -0.0066608316, + -0.0040766634, + 0.0010232393, + 0.01618934, + -0.012878477, + -0.0024554485, + 0.0013735521, + -0.00219638, + 0.017479794, + -0.01432535, + -0.021559717, + -0.043745108, + -0.026460838, + 0.012858924, + -0.0029198166, + -0.018705076, + -0.0062143863, + -0.009639305, + 0.030423446, + 0.020008564, + -0.0042428584, + -0.027894676, + -0.020217123, + 0.004506815, + 0.010121596, + -0.0017222356, + 0.011229563, + 0.002382127, + 0.006064485, + -0.028937468, + 0.022015939, + 0.008114222, + -0.00011497185, + -0.025131278, + -0.024270976, + 0.011372946, + 0.010708166, + 0.0297717, + -0.0037931546, + 0.0006941082, + 0.005666921, + -0.01149026, + -0.0010411623, + -0.016137201, + -0.015850432, + -0.03211798, + 0.010577817, + 0.012956686, + 0.0019845627, + 0.020790659, + -0.0012749757, + 0.012598227, + 0.007221332, + -0.0067716283, + -0.009157014, + -0.02298052, + -0.026930094, + -0.0018623606, + 0.0008945197, + -0.023019625, + -0.003750791, + 0.008746414, + -0.010089009, + 0.028155373, + 0.011431603, + -0.005474656, + -0.007586309, + 0.024192765, + 0.0020872126, + 0.033995006, + -0.007938251, + -0.0046208706, + -0.014729432, + -0.023775648, + -0.005865703, + 0.0109949345, + 0.008355368, + 0.020230157, + 0.00151938, + 0.0005727207, + -0.028807119, + 0.018392237, + 0.016319688, + 0.029719561, + 0.0062600086, + -0.004510074, + -0.018353133, + -0.017232131, + -0.031309817, + -0.029849911, + -0.02745149, + 0.007853525, + 0.005415999, + -0.028520351, + 0.025900338, + -0.00036232936, + -0.024557743, + 0.015615805, + 0.0037801196, + 0.0205821, + -0.0059308773, + 0.013113105, + 0.005155301, + -0.006172023, + -0.013452012, + -0.004904379, + -0.014625153, + -0.011750958, + 0.029667422, + 0.006686901, + -0.0023886445, + 0.015081374, + 0.021572752, + 0.010251945, + 0.035585266, + -0.0109819, + -0.014051617, + 0.014038582, + 0.010395329, + -0.020230157, + 0.011718371, + -0.02497486, + 0.01637183, + -0.014559978, + -0.019448064, + -0.0015503379, + -0.0074885474, + -0.014520873, + -0.0053019435, + -0.039365385, + 0.010897173, + 0.009782689, + -0.0024635952, + 0.00090511056, + -0.009085322, + -0.014794606, + -0.017662283, + -0.0060449326, + 0.014116792, + 0.00076620746, + 0.014794606, + -0.0042656693, + 0.0029051523, + -0.025313767, + -0.007077948, + 0.0034607647, + 0.026799744, + -0.0014004366, + -0.003682358, + -0.0152899325, + 0.019356819, + 0.03868757, + -0.010362742, + -0.0046436815, + 0.00896149, + -0.009189601, + -0.00016344537, + 0.024270976, + 0.004787065, + -0.015928643, + 0.0077036233, + -0.022602508, + 0.009521991, + -0.024023311, + -0.008994077, + -0.008446612, + -0.008185915, + -0.00060571526, + -0.00681725, + 0.015120478, + -0.0016815015, + 0.0038550703, + -0.019539308, + 0.035011727, + 0.007573274, + -0.010356224, + 0.020907972, + -0.0042298236, + 0.016658597, + 0.0028383485, + 0.015524561, + 0.0031691089, + -0.01693233, + 0.0361588, + -0.009873933, + -0.03490745, + -0.009548061, + 0.006217645, + -0.005086868, + -0.0055365716, + -0.0007658001, + 0.007573274, + -0.0053866706, + 0.02242002, + -0.017675318, + -0.0123766335, + 0.00151938, + -0.024635952, + -0.0028904881, + 0.007892629, + -0.021716136, + -0.010721201, + 0.00962627, + -0.0033157514, + 0.006100331, + -0.045100737, + -0.012304941, + -0.021325089, + 0.017988155, + 0.00017016649, + -0.013517186, + -0.018483482, + -0.00018157202, + -0.0029491452, + 0.0027405866, + -0.007905664, + 0.013569326, + -0.0034607647, + -0.0051227137, + -0.010519161, + 0.02548322, + -0.017179992, + 0.0041320617, + -0.01991732, + -0.0077622803, + -0.015211723, + 0.010532196, + -0.006654314, + -0.015759189, + 0.006647797, + -0.042650178, + -0.020086775, + -0.01059737, + -0.015446351, + -0.0025597275, + 0.006641279, + 0.011907377, + 0.030449515, + -0.006706454, + 0.00067129714, + 0.022068078, + 0.006442497, + 0.0087138275, + -0.03595024, + -0.011757475, + -0.0012888253, + -0.013347733, + 0.017127853, + 0.01064951, + 0.005187888, + -0.011066626, + 0.0016179564, + -0.008433578, + 0.0066738664, + -0.017584074, + -0.014442664, + -0.0007706882, + 0.014221071, + 0.02382779, + 0.031205539, + 0.011503295, + -0.011666231, + -0.013947338, + -0.0071822274, + 0.020151949, + 0.027738256, + -0.008277158, + 0.0058494094, + 0.0004831058, + -0.0072017796, + 0.013191314, + -0.009391642, + 0.010688614, + 0.0033434506, + 0.011092696, + 0.0047609955, + -0.011301254, + -0.00035947797, + 0.0072604367, + -0.0040734047, + -0.0105713, + -0.0010753789, + 0.0005083609, + -0.033160772, + -0.001958493, + 0.011985586, + -0.00970448, + -0.0008317893, + -0.024088487, + 0.00018564542, + -0.040564593, + 0.0011193716, + -0.024701126, + -0.0065044127, + -0.02862463, + 0.02124688, + 0.015420281, + -0.028337862, + -0.003529198, + -0.029093886, + -0.0015039011, + 0.0038615877, + -0.011548917, + -0.011835685, + -0.022380915, + -0.020542994, + -0.00219638, + 0.006797698, + -0.020973146, + -0.011379464, + -0.0025906854, + 0.01059737, + 0.027477559, + 0.23754793, + 0.009437264, + -0.017584074, + 0.033291124, + -0.008211984, + 0.0372798, + 0.028233584, + -0.008870246, + 0.024127591, + 0.029458864, + -0.012089865, + 0.0018916891, + 0.0061524706, + 0.0009963549, + 0.002106765, + -0.0028350898, + -0.029276375, + 0.0025515808, + -0.008492234, + -0.003741015, + 0.011412051, + -0.007221332, + 0.01866597, + -0.0020513667, + 0.022680718, + 0.010447469, + -0.014846746, + 0.0021214292, + 0.030058468, + 0.016958399, + -0.006481602, + -0.005914584, + 0.0045556957, + -0.0065044127, + -0.0015299708, + -0.0037344976, + -0.013569326, + 0.00592436, + 0.010154183, + 0.025444116, + 0.011079661, + 0.009600201, + -0.02862463, + -0.012930616, + 0.00012709023, + 0.027894676, + -0.010069457, + -0.011496778, + 0.02438829, + 0.012122452, + -0.022289671, + -0.006031898, + 0.03248296, + 0.019865181, + -0.0037475324, + 0.029302444, + 0.020425681, + -0.009541543, + 0.022237532, + -0.012624296, + -0.009821794, + 0.017610144, + -0.015980782, + -0.0021931212, + 0.009450299, + -0.0036562881, + -0.010375776, + 0.015928643, + 0.010297568, + -0.013790919, + 0.018379202, + 0.014168931, + 0.0155767, + 0.0064001335, + -0.011666231, + -0.010629958, + 0.023593161, + 0.0084140245, + 0.021429367, + -0.007847007, + -0.0136345, + -0.006419686, + -0.0031658502, + 0.027295072, + -0.008114222, + -0.021742206, + -0.0024929238, + 0.0122267315, + 0.036810543, + 0.000016815524, + -0.0016586904, + -0.012669918, + 0.011816133, + 0.0055887112, + 0.0040049716, + 0.025183417, + -0.017936016, + 0.018652935, + -0.030632004, + 0.0059406534, + -0.035011727, + -0.021742206, + 0.018952738, + -0.015329037, + -0.0074755126, + 0.00995866, + 0.0012464619, + 0.015876502, + 0.040147476, + -0.0043112915, + 0.008329298, + -0.0136345, + 0.007462478, + -0.0044579343, + 0.018300993, + -0.013386837, + 0.013452012, + -0.014012513, + -0.017271236, + -0.008211984, + -0.0019226471, + -0.017753527, + -0.0077622803, + 0.007338646, + -0.0006884054, + -0.007221332, + -0.0125135, + 0.018092435, + 0.003506387, + -0.035376705, + 0.03597631, + -0.0046045766, + 0.024961825, + 0.0012089865, + -0.008909351, + 0.00043666898, + -0.014077687, + -0.003972384, + 0.009508956, + -0.012168075, + 0.004070146, + -0.013302111, + 0.008694275, + -0.008915869, + 0.00008885114, + 0.0057223192, + 0.012168075, + -0.017310342, + -0.015537595, + -0.024192765, + -0.011451156, + -0.013093553, + -0.005298685, + -0.008609548, + 0.01879632, + -0.012858924, + -0.021820415, + -0.0010338301, + 0.0043699485, + 0.024427393, + -0.014364455, + 0.005520278, + -0.0022745891, + -0.0091309445, + 0.0006403392, + 0.0061133658, + -0.1682023, + 0.011803098, + 0.01754497, + -0.016736805, + -0.012448325, + 0.00026782637, + 0.013093553, + 0.01994339, + -0.008550892, + 0.037696917, + 0.001764599, + 0.013347733, + -0.059126284, + -0.009391642, + 0.0007886112, + 0.01496406, + -0.01064951, + -0.0057288366, + 0.0225243, + 0.005767941, + -0.007090983, + -0.024010276, + 0.012285389, + -0.0013694786, + -0.0004884012, + 0.0016831309, + -0.018848458, + 0.034438193, + 0.0012440179, + -0.011672749, + -0.0019796747, + 0.005155301, + -0.00071203115, + 0.026526012, + 0.022889277, + -0.0048098764, + 0.0012977867, + 0.0054225163, + 0.0008049048, + -0.009026665, + 0.00032322467, + 0.016137201, + 0.0029198166, + 0.013210867, + -0.020647274, + 0.020725483, + 0.034125354, + 0.009750102, + -0.01085155, + -0.0047609955, + 0.0217031, + -0.037801195, + -0.012298424, + -0.0044774865, + 0.01243529, + 0.01218111, + 0.018444376, + 0.014586048, + -0.0073581985, + 0.01677591, + 0.0048587574, + -0.042415548, + -0.0068954597, + 0.0058233393, + -0.0027047407, + -0.0077622803, + 0.014455699, + 0.007019291, + -0.027216861, + 0.010766824, + -0.015342072, + -0.011933447, + 0.015785258, + -0.016450038, + 0.0068693897, + 0.0042070122, + -0.008159844, + 0.009952143, + -0.0072278497, + -0.01608506, + 0.0058722203, + 0.03008454, + 0.00045703602, + -0.0057646823, + -0.018757215, + 0.02492272, + -0.0065467763, + 0.023149975, + -0.017988155, + -0.029015677, + 0.020125879, + -0.040121406, + 0.004676269, + -0.03863543, + 0.0010598999, + 0.01368664, + 0.00063463644, + -0.009306915, + 0.000065734566, + -0.0002128354, + 0.005002141, + 0.0013637759, + -0.012826337, + 0.020386577, + 0.029432794, + 0.01744069, + -0.005911325, + 0.006856355, + 0.024127591, + 0.0015975893, + -0.021312054, + 0.023527985, + 0.005852668, + 0.018535621, + 0.0040636286, + -0.005275874, + 0.008355368, + -0.023228183, + 0.0047479607, + 0.018287959, + 0.03735801, + -0.00015203984, + -0.0073321285, + -0.00034847978, + -0.009554578, + -0.023567092, + -0.09750102, + -0.023567092, + 0.012546087, + 0.018300993, + 0.0045817657, + 0.013882164, + 0.003920245, + 0.026134966, + -0.0069671515, + 0.031961564, + -0.0027487336, + -0.01688019, + -0.019852147, + 0.0037670848, + 0.007944768, + -0.014729432, + 0.0052595804, + -0.02316301, + -0.031726934, + 0.0065337415, + -0.010558265, + -0.0023560573, + 0.00022953637, + -0.005969982, + -0.024010276, + -0.018157609, + -0.034307845, + 0.016032921, + 0.004943484, + -0.012194145, + 0.02433615, + -0.016423969, + 0.011711854, + -0.0012994162, + -0.0061655054, + 0.008472682, + -0.013843059, + 0.0024196024, + 0.009619753, + -0.034490332, + -0.001899836, + -0.0013580732, + 0.010453986, + -0.015250827, + -0.002660748, + -0.0034477299, + -0.01568098, + 0.0002340171, + -0.0029051523, + -0.026656361, + -0.0019112416, + 0.03318684, + -0.021989869, + -0.005047763, + 0.036419496, + -0.018965773, + 0.016228445, + 0.022771962, + -0.018092435, + 0.010036869, + 0.014924956, + 0.009900003, + -0.0039593494, + 0.02617407, + -0.005086868, + -0.018809354, + -0.03508994, + -0.00957413, + 0.0136345, + -0.036862683, + -0.01488585, + 0.007293024, + -0.012630814, + 0.01504227, + -0.014416594, + 0.0003702725, + -0.008114222, + -0.014924956, + 0.0027161464, + -0.0035585265, + -0.02609586, + -0.01685412, + -0.00034461005, + -0.008818107, + 0.0022729598, + 0.025352871, + -0.01570705, + -0.0107277185, + 0.038322594, + -0.010401847, + 0.009430747, + 0.03008454, + 0.0066510555, + -0.008479199, + -0.013986442, + 0.021911658, + 0.010173736, + 0.013341215, + 0.015016199, + -0.019734832, + -0.0205821, + -0.0049467427, + -0.044162225, + 0.018926669, + -0.0005022508, + -0.01978697, + -0.006266526, + 0.012611262, + -0.0088637285, + 0.007162675, + 0.003943056, + 0.000608974, + -0.014690327, + -0.007104018, + -0.009482887, + -0.002696594, + -0.016658597, + 0.002773174, + 0.011021004, + -0.007873077, + 0.029093886, + -0.003998454, + -0.00045214794, + 0.0032668707, + 0.0029882498, + -0.0006277117, + -0.024909684, + 0.0070649134, + -0.019695727, + -0.016254514, + -0.027946815, + -0.0073907855, + 0.0050445045, + -0.023189079, + 0.008009943, + 0.04353655, + -0.015172618, + -0.02492272, + -0.0026281609, + 0.025470186, + 0.0072734714, + -0.013960373, + -0.030684143, + -0.035793822, + 0.024909684, + -0.022250567, + -0.019291645, + 0.0148076415, + -0.009222188, + -0.010740754, + 0.0042070122, + 0.004285222, + 0.010486573, + 0.01866597, + 0.00045622134, + -0.005145525, + -0.0019193883, + -0.011307771, + 0.03738408, + 0.007573274, + 0.010603887, + -0.020412646, + 0.0134259425, + -0.008883282, + 0.0038420353, + 0.021416333, + 0.009521991, + 0.007697106, + -0.006960634, + -0.01248743, + 0.00063382176, + -0.002691706, + -0.015329037, + -0.0025369164, + 0.037905477, + 0.017036607, + 0.020907972, + 0.005249804, + -0.007130088, + 0.0020057445, + -0.009300398, + 0.013282558, + 0.016541282, + -0.0065663285, + -0.0039951955, + 0.014898885, + 0.02316301, + 0.044162225, + -0.042780526, + -0.0064881193, + 0.0028513833, + -0.00039512027, + -0.018379202, + 0.0005385041, + -0.003143039, + -0.0026770416, + 0.000023651206, + 0.0002839163, + -0.011229563, + 0.005650627, + 0.007032326, + 0.03232654, + 0.017036607, + -0.010949312, + -0.004705597, + -0.029015677, + -0.014651222, + 0.013452012, + -0.010480056, + -0.0121029, + -0.009919555, + 0.009554578, + 0.0047121146, + -0.014155896, + 0.018014226, + 0.017610144, + -0.0051357485, + -0.009554578, + -0.022015939, + -0.020217123, + -0.01813154, + 0.0057646823, + 0.0026037204, + 0.007208297, + -0.0050770915, + -0.017531935, + 0.02755577, + 0.014403559, + 0.031961564, + -0.033004355, + 0.009802241, + 0.013882164, + 0.0043862425, + 0.0011112249, + -0.007586309, + -0.01797512, + -0.017818702, + -0.013673605, + -0.019904286, + 0.024153661, + 0.0042884806, + 0.045387506, + -0.012878477, + -0.039417524, + 0.031779073, + -0.011809615, + 0.007990391, + 0.003552009, + 0.0067911805, + -0.01555063, + -0.0071822274, + 0.0036008898, + 0.006569587, + 0.019682692, + -0.004317809, + -0.026552081, + -0.007019291, + -0.020686379, + 0.008114222, + -0.026877955, + -0.01177051, + 0.03347361, + 0.002183345, + 0.009900003, + 0.0056604035, + -0.025887303, + -0.012272354, + 0.011966034, + 0.009020148, + -0.0086812405, + -0.008368403, + 0.018261889, + -0.015133513, + -0.026526012, + -0.0036986514, + 0.021390263, + -0.024909684, + -0.014221071, + -0.024766302, + 0.008029495, + 0.0121029, + -0.0019112416, + 0.027086513, + -0.017805668, + -0.028337862, + -0.012637331, + -0.007058396, + -0.014768536, + 0.015237792, + -0.011034039 + ] + }, + { + "object": "embedding", + "index": 1, + "embedding": [ + 0.014309701, + -0.0125518, + -0.0020060176, + -0.017319538, + -0.0016354639, + 0.019719623, + -0.018097945, + -0.031162195, + 0.0066683465, + -0.007608921, + 0.00588021, + 0.008140831, + -0.004706114, + 0.008413274, + -0.02128941, + -0.012765862, + 0.028152358, + -0.0009243574, + 0.02838588, + -0.026478784, + -0.015658937, + 0.019693676, + -0.0028963198, + 0.007972177, + -0.025998767, + -0.0053061354, + 0.0092306, + -0.02182132, + 0.0010500376, + 0.018110918, + -0.0002689961, + -0.012311791, + 0.030591363, + -0.038245693, + -0.03258927, + 0.007141877, + 0.0117344735, + -0.005727772, + 0.022301337, + -0.016216796, + 0.00146762, + 0.015594071, + -0.0042293402, + -0.016333558, + -0.01834444, + 0.0019346637, + 0.01717683, + 0.0044952957, + -0.011351757, + 0.022768382, + 0.0112609435, + 0.019719623, + -0.018227678, + -0.020446137, + -0.0021795374, + -0.01913582, + 0.005633715, + 0.017241698, + -0.025064679, + 0.0032303857, + -0.013829684, + -0.00025318473, + -0.006078055, + 0.0022476478, + -0.00416123, + -0.005085587, + -0.016074087, + 0.0019557455, + 0.017682794, + 0.0015981653, + 0.033808775, + 0.04587407, + 0.004968826, + 0.009503042, + 0.023339212, + 0.009055459, + 0.0055591175, + -0.0017497923, + -0.005588308, + -0.00847814, + -0.0017643874, + -0.028697241, + -0.0226127, + -0.012915056, + 0.020238562, + 0.010735519, + -0.025752272, + 0.000900843, + -0.022755409, + -0.017449273, + 0.006230493, + 0.040632803, + 0.014309701, + -0.0075375666, + 0.010119281, + 0.023585709, + 0.009490069, + 0.023300292, + 0.024571689, + -0.022080788, + 0.00010571324, + 0.014711877, + -0.03261522, + -0.0006535369, + -0.041540943, + -0.03271901, + -0.00315741, + -0.011786367, + 0.030772991, + -0.02140617, + -0.026167423, + 0.019836385, + 0.03129193, + -0.027918836, + 0.002667663, + -0.026673386, + 0.009048972, + -0.018603908, + -0.025544697, + 0.0017481706, + -0.0003504855, + 0.038219746, + 0.01344048, + -0.0096522365, + 0.03271901, + -0.007232691, + -0.016385451, + -0.018590935, + -0.014011311, + 0.0053937063, + 0.00709647, + 0.015321629, + 0.0074013458, + 0.0086857155, + -0.01551623, + -0.010696598, + -0.018577961, + 0.012817755, + -0.0011781502, + -0.016489238, + 0.0017530356, + 0.020095853, + -0.021795373, + -0.0157757, + -0.004738548, + 0.03201844, + 0.02480521, + -0.0017497923, + -0.01211719, + 0.000021689964, + 0.005718042, + -0.024506822, + 0.016281663, + -0.007874876, + 0.003467151, + 0.014906479, + -0.02672528, + 0.019356368, + -0.01868175, + 0.017695768, + -0.019927198, + 0.012979924, + 0.023014877, + -0.0081927255, + 0.027737208, + 0.026621493, + 0.011961509, + 0.014659983, + -0.025038732, + 0.01506216, + -0.0067980806, + 0.028567508, + -0.02389707, + 0.01642437, + -0.014491329, + 0.014128072, + 0.014102126, + -0.008082451, + -0.013829684, + -0.0066488865, + -0.021574825, + 0.012772349, + 0.018564988, + 0.012558287, + 0.012623154, + 0.00672024, + 0.019992067, + -0.01600922, + 0.010009007, + -0.013258852, + 0.025168467, + 0.014244833, + -0.015308655, + -0.040373337, + -0.68707323, + -0.042942077, + 0.028982658, + 0.0096327765, + 0.0022200793, + 0.030980567, + 0.01567191, + 0.017773608, + -0.0054683033, + -0.016489238, + 0.009165733, + 0.01608706, + 0.00336985, + 0.0067591607, + 0.009263034, + -0.018552015, + -0.013349666, + -0.008121371, + 0.0072132307, + -0.007226204, + -0.0015551908, + 0.012675048, + -0.008568955, + 0.000035854322, + 0.019096898, + 0.018980138, + 0.019083925, + 0.014179966, + -0.012493419, + 0.0044466453, + -0.019304473, + 0.020433163, + -0.0033568768, + -0.005662905, + 0.033393625, + 0.005118021, + -0.018980138, + 0.019615836, + 0.02763342, + 0.016541133, + -0.008199212, + 0.0019476372, + 0.0027357736, + -0.01834444, + -0.006104002, + 0.009451149, + 0.0051147775, + -0.0124544995, + 0.032978475, + 0.0032044388, + 0.018292546, + -0.03461313, + 0.0038855444, + -0.0025541454, + 0.028230198, + 0.0042877207, + 0.027425844, + 0.005319109, + -0.004002305, + 0.015282708, + -0.0013759951, + -0.0025249552, + 0.004433672, + -0.022794329, + -0.007336478, + -0.0003298091, + -0.03181087, + -0.03344552, + -0.026024714, + -0.019395288, + 0.0041158227, + 0.02144509, + -0.01672276, + 0.006791594, + 0.0072975582, + -0.0017497923, + 0.024558716, + -0.00751162, + 0.004073659, + 0.00917222, + 0.0060715685, + -0.013265339, + -0.03951709, + -0.0024811698, + 0.03378283, + -0.0030276757, + -0.03733755, + -0.016748706, + 0.019654756, + 0.0019330421, + 0.02314461, + -0.009918192, + -0.024480876, + -0.0037266198, + -0.0073753987, + 0.040373337, + -0.011565818, + -0.0052542416, + -0.0061007584, + -0.009016538, + 0.0043947515, + -0.015464337, + -0.009490069, + -0.0015316764, + 0.044109683, + -0.00503045, + -0.01875959, + 0.01423186, + 0.014102126, + -0.023287319, + 0.035417482, + -0.021756453, + -0.0065418556, + 0.0067397, + 0.016138956, + -0.029008605, + 0.05827668, + 0.01004144, + -0.0030049724, + -0.011202563, + -0.00031257875, + 0.013920497, + 0.0006924572, + -0.0017773608, + -0.0036876993, + 0.0020725066, + -0.0012122055, + -0.0046542203, + -0.015191894, + 0.007323505, + 0.00042650173, + 0.0030698394, + 0.028645348, + -0.0016078954, + 0.0024633312, + -0.009885759, + 0.026102554, + -0.006584019, + 0.021834293, + -0.004530973, + -0.022755409, + 0.0012892353, + -0.038583, + 0.0065515856, + 0.00502072, + -0.03809001, + -0.03725971, + -0.0032206557, + -0.025376042, + 0.008062991, + -0.030747045, + -0.012162597, + -0.024052752, + 0.023378134, + -0.00007059374, + -0.0050369366, + -0.018201731, + -0.0027811804, + -0.01626869, + 0.0054747905, + -0.010287935, + -0.012169084, + -0.0071678236, + 0.00230765, + 0.004459619, + -0.037155923, + -0.012785322, + 0.020186668, + -0.008815451, + -0.02476629, + 0.003603372, + 0.0022330529, + 0.0060294047, + -0.0024357627, + -0.014141046, + -0.0071743103, + -0.020030987, + -0.03284874, + -0.0006843488, + -0.0068110544, + 0.009334387, + 0.009970086, + 0.005208835, + -0.00542614, + 0.028852923, + -0.01221449, + 0.004044469, + 0.014621063, + -0.0009657102, + -0.012409092, + 0.0063699572, + 0.009918192, + 0.0013549133, + -0.011935562, + -0.005325596, + -0.0039958186, + 0.013842657, + 0.007368912, + 0.007595947, + -0.0011505816, + 0.016787628, + -0.018370386, + 0.020225588, + -0.017643875, + 0.008860857, + -0.047093574, + -0.00054123555, + -0.010177661, + -0.001103553, + 0.02257378, + -0.00964575, + -0.01043713, + -0.006194816, + -0.018071998, + 0.009885759, + 0.023884097, + -0.0148416115, + 0.009457636, + -0.008199212, + -0.0025444152, + 0.0084392205, + -0.010716058, + 0.031992495, + 0.013764816, + -0.016450318, + 0.0035287747, + 0.022898115, + 0.012519366, + -0.00044312395, + -0.011559332, + -0.028982658, + -0.00008447937, + -0.0100868475, + 0.015243788, + -0.035054225, + -0.0010711193, + 0.012389632, + -0.043928057, + 0.017150883, + 0.015347576, + -0.0022735947, + 0.038894363, + 0.020718578, + -0.009756024, + 0.018655801, + -0.0093473615, + 0.011423111, + 0.0065515856, + -0.029761063, + 0.006084542, + -0.018033076, + -0.0073299916, + 0.0037136462, + 0.012785322, + 0.0269588, + -0.011663119, + 0.041229583, + 0.0046380037, + 0.028022623, + 0.023767335, + -0.033056315, + -0.008860857, + 0.005643445, + -0.0065775323, + -0.0026238775, + 0.0061883293, + -0.007394859, + -0.014348621, + -0.0074208057, + -0.011805828, + -0.010651192, + -0.0014043745, + 0.016606, + -0.024325194, + 0.0131745245, + -0.017306564, + -0.005705069, + -0.002773072, + 0.0125518, + 0.013829684, + -0.00336012, + -0.038531106, + 0.02045911, + -0.0013500482, + -0.005208835, + -0.025350096, + -0.03552127, + 0.0014335647, + -0.005338569, + -0.0014984319, + 0.021458065, + 0.0040250085, + 0.03619589, + -0.0035287747, + -0.0027244217, + -0.027840994, + 0.01296695, + 0.008860857, + 0.02049803, + 0.0072651245, + -0.014309701, + -0.026855014, + -0.03287469, + -0.0056402017, + 0.0057569626, + 0.011059855, + -0.02042019, + 0.009029512, + -0.011578793, + -0.025129547, + -0.026621493, + 0.009516016, + 0.001295722, + -0.0071353903, + -0.012597207, + -0.002636851, + -0.025389016, + -0.009392768, + 0.03386067, + 0.007336478, + 0.0019395287, + -0.018448226, + -0.012039349, + -0.0016735733, + 0.07078307, + 0.005760206, + 0.0015965436, + 0.012934516, + 0.003021189, + -0.01792929, + -0.020523977, + 0.0029692953, + 0.003249846, + 0.011727987, + 0.004453132, + -0.009853325, + 0.0117539335, + 0.0013184255, + 0.004946123, + 0.0045374595, + 0.0058023697, + 0.005263972, + 0.016969256, + -0.013959418, + 0.009379795, + -0.0020741282, + -0.006934302, + 0.009003565, + 0.0032611976, + -0.006214276, + 0.029034551, + 0.0024730614, + 0.022288363, + -0.0019314204, + -0.011520412, + 0.02057587, + 0.004401238, + -0.026699333, + -0.016177876, + 0.0060391347, + -0.012415579, + 0.021691587, + 0.008011097, + -0.0048163882, + 0.023040824, + 0.024960892, + 0.013492374, + -0.01332372, + 0.00033143075, + 0.014517276, + -0.021938082, + 0.014335647, + -0.0016622216, + -0.005945077, + 0.030487576, + 0.0021114268, + 0.0011700419, + -0.0046931407, + 0.020549923, + 0.015710833, + -0.006133192, + -0.008620849, + -0.0072456645, + -0.023352185, + 0.0037201329, + -0.0037979735, + 0.007576487, + -0.007070523, + -0.03834948, + -0.013725896, + 0.0029238884, + -0.0037785135, + -0.0017546574, + 0.007641354, + -0.011598253, + -0.021535905, + -0.021354277, + -0.004676924, + 0.03046163, + 0.019810438, + 0.02480521, + -0.015010267, + -0.0062986035, + 0.044524834, + -0.0063537406, + -0.00847814, + -0.018175784, + 0.0060164314, + -0.009970086, + 0.010884713, + 0.036221836, + -0.018110918, + -0.020965073, + -0.0019606105, + 0.033341732, + -0.0127204545, + 0.013265339, + -0.015827592, + 0.009490069, + -0.009541962, + 0.011170129, + 0.0007719195, + -0.0091397865, + -0.010151714, + 0.021185622, + -0.01785145, + -0.016411398, + -0.011812314, + 0.01650221, + 0.014270781, + 0.016411398, + 0.0056564184, + -0.024117619, + 0.007706221, + 0.0063959043, + -0.008530035, + -0.013712922, + -0.00009562842, + 0.010158201, + 0.016761681, + -0.02186024, + 0.024117619, + 0.009950626, + -0.022132684, + 0.004758008, + -0.038868416, + 0.014958372, + -0.006791594, + -0.012979924, + 0.000024882645, + 0.022379179, + 0.00588994, + 0.0064088777, + 0.0057731792, + 0.0053872196, + 0.030176213, + -0.01958989, + -0.01642437, + -0.034665022, + -0.012363685, + 0.029397808, + 0.00456665, + -0.007894336, + -0.009126813, + -0.013570215, + -0.0035839118, + 0.00375581, + -0.0018438497, + -0.013829684, + -0.019265553, + 0.0077775754, + -0.0014505924, + -0.00585102, + 0.018564988, + -0.0050823437, + -0.025583617, + -0.006888895, + 0.018616881, + 0.0057018255, + -0.008821937, + -0.016100034, + -0.024156539, + 0.023455974, + 0.007271611, + 0.018590935, + -0.003979602, + 0.005208835, + 0.0042650173, + -0.0019525022, + 0.0065159085, + 0.0034963412, + 0.0019411505, + -0.04322749, + 0.026258236, + 0.011358243, + 0.011170129, + 0.023079744, + -0.0062077893, + 0.0023871122, + 0.028852923, + -0.009159246, + 0.002789289, + -0.03362715, + -0.027866943, + -0.006999169, + 0.00915276, + -0.017241698, + -0.011500952, + -0.0029141582, + 0.002374139, + 0.030150266, + 0.012953976, + 0.000075104035, + -0.0013224797, + 0.02747774, + -0.02049803, + 0.041722573, + -0.009600343, + 0.008951671, + 0.0046996274, + -0.013661029, + -0.0066229394, + 0.016748706, + -0.0055688475, + 0.017656848, + 0.012999384, + -0.01883743, + -0.015490283, + 0.0129280295, + 0.015425417, + 0.016826548, + -0.012506393, + -0.016125983, + -0.022249443, + -0.022495938, + -0.01569786, + -0.029864851, + -0.047482777, + 0.015581097, + -0.0017595224, + -0.027088536, + 0.024013832, + -0.005147211, + -0.014179966, + 0.0042228536, + 0.005101804, + 0.024000857, + 0.0016403289, + 0.011676093, + 0.006817541, + -0.016125983, + -0.005163428, + -0.0007394859, + -0.017462246, + -0.010904173, + 0.022846222, + 0.024130592, + -0.022145657, + 0.028022623, + 0.013414534, + 0.0063407673, + 0.01626869, + -0.019810438, + -0.015386496, + 0.0026141475, + 0.027088536, + -0.01868175, + 0.01085228, + -0.031058408, + 0.014556196, + -0.019784492, + -0.0059807543, + 0.003924465, + -0.0057115555, + -0.014076179, + -0.0018357413, + -0.027789101, + 0.008925725, + 0.0093473615, + -0.0052769454, + 0.013764816, + -0.0037914868, + -0.029553488, + -0.0066326694, + -0.0064413114, + 0.034431502, + -0.0020627764, + 0.009055459, + -0.006022918, + 0.0024600879, + -0.013583188, + -0.0003585939, + -0.01955097, + 0.027866943, + -0.009444662, + 0.0011351757, + -0.008160291, + 0.03544343, + 0.036818612, + -0.0226127, + 0.0009843595, + 0.0029595653, + -0.006175356, + -0.014971346, + 0.007855416, + 0.0028152359, + -0.012409092, + 0.015049187, + -0.020939127, + 0.0036649958, + -0.0108912, + 0.0032903878, + 0.0069861957, + -0.0108912, + -0.0009592235, + -0.01219503, + 0.0023773822, + 0.00802407, + -0.013635082, + -0.008562468, + 0.02000504, + 0.017215751, + -0.0071029565, + 0.019537997, + -0.02049803, + 0.01563299, + -0.0103333425, + 0.010754979, + -0.0010573351, + -0.028411826, + 0.016528158, + -0.01373887, + -0.03160329, + -0.012902083, + -0.001088147, + -0.0039860886, + 0.00271307, + -0.013388586, + 0.01456917, + -0.004002305, + 0.008860857, + -0.025869032, + 0.005552631, + -0.008315973, + -0.02664744, + 0.011916102, + 0.020653712, + -0.019654756, + 0.011974482, + 0.0033503901, + 0.0036649958, + 0.0058315597, + -0.03718187, + -0.006882408, + -0.01830552, + 0.0018276329, + -0.0015405955, + -0.0008821937, + -0.002870373, + 0.0011043638, + -0.01464701, + 0.0031347065, + -0.008588415, + 0.0032563326, + -0.005056397, + 0.008977618, + -0.026400944, + 0.004508269, + -0.021925109, + 0.027088536, + -0.011896641, + -0.028982658, + -0.013907524, + 0.0070380894, + -0.012519366, + -0.004336371, + 0.00058218295, + -0.030331895, + -0.020926153, + -0.015957328, + -0.022418099, + 0.0027552336, + 0.019486101, + 0.003943925, + 0.015386496, + -0.018746616, + -0.01262964, + 0.009872786, + 0.005578578, + -0.0083808405, + -0.019330421, + -0.009295467, + 0.0013070737, + -0.006058595, + 0.023417054, + 0.015425417, + -0.013239392, + -0.0122274645, + 0.01668384, + 0.011669606, + 0.006065082, + -0.0019168253, + -0.0022946766, + 0.0002608877, + 0.009528989, + 0.026336076, + 0.043668587, + 0.007608921, + -0.00546506, + -0.018175784, + -0.015204867, + 0.0032141688, + 0.032329805, + -0.03129193, + 0.0034930978, + -0.0032839011, + -0.02008288, + -0.002338462, + -0.009853325, + 0.006856461, + 0.010184147, + 0.015165947, + 0.021496985, + -0.009691157, + 0.0062888735, + 0.026595546, + -0.0031006513, + -0.010385236, + -0.015049187, + -0.0063764444, + -0.01842228, + -0.014711877, + 0.012837215, + -0.016580053, + -0.0034476907, + -0.028619401, + 0.00921114, + -0.01569786, + 0.0046736808, + -0.01962881, + -0.0031444367, + -0.020588843, + 0.010625245, + 0.012636127, + -0.014711877, + 0.014348621, + -0.030643258, + 0.00012912623, + -0.0073559387, + -0.0047450345, + 0.0046801674, + -0.026932854, + -0.022288363, + 0.0053872196, + 0.0024357627, + -0.027218271, + -0.0058737234, + 0.0072197174, + 0.02601174, + 0.022742435, + 0.212453, + 0.016917361, + -0.013427507, + 0.035339642, + 0.00050231523, + 0.03284874, + 0.022262417, + -0.013946445, + 0.035469376, + 0.025959847, + -0.019239606, + 0.000052299165, + -0.008335433, + -0.004965583, + -0.0008075964, + -0.0071548503, + -0.029060498, + -0.0071289036, + -0.030020533, + -0.014828638, + 0.0027163133, + -0.010249015, + -0.0013508591, + 0.003911491, + 0.02646581, + 0.0051991045, + -0.005390463, + -0.0021000751, + 0.024208432, + 0.017111963, + -0.012071783, + -0.016631946, + -0.002207106, + -0.01796821, + 0.0013249122, + -0.0058996705, + 0.00336985, + -0.00021304816, + 0.024247354, + 0.025025759, + 0.00056758785, + 0.010618758, + -0.037700806, + -0.009042486, + -0.020692632, + 0.014089152, + -0.021068862, + -0.008997078, + 0.0124350395, + 0.01709899, + -0.0098598115, + 0.0068110544, + 0.03827164, + 0.024870079, + -0.00792677, + 0.02000504, + 0.029008605, + -0.00083678664, + 0.0033471466, + -0.001624923, + -0.028645348, + 0.026024714, + -0.02352084, + -0.009788458, + 0.0057666926, + -0.012078269, + -0.013414534, + 0.00016845197, + 0.0042131236, + -0.03139572, + 0.0084392205, + -0.0037460797, + -0.0057212855, + 0.0072651245, + -0.022067815, + -0.017695768, + 0.011170129, + 0.0024422496, + 0.020861287, + 0.0024925214, + -0.0063310373, + -0.0031557884, + -0.010242528, + 0.0058866967, + 0.00031521398, + -0.016216796, + -0.0014659984, + 0.0042942073, + 0.014102126, + -0.008445707, + 0.008523548, + -0.0043104244, + 0.0032628193, + 0.0054228967, + 0.013764816, + 0.024104645, + -0.0036228322, + 0.015204867, + -0.033237945, + 0.017189804, + -0.025453882, + -0.05692744, + 0.018357413, + 0.00081732654, + -0.016411398, + 0.01502324, + 0.0063083335, + -0.010754979, + 0.023780309, + 0.002636851, + -0.0014773501, + -0.020601818, + 0.0066034794, + 0.00042893426, + 0.012785322, + -0.017293591, + 0.008607876, + -0.024104645, + -0.00336985, + 0.007628381, + -0.00036203998, + -0.006447798, + -0.0017530356, + -0.0057893964, + 0.01377779, + -0.013161551, + -0.022846222, + 0.01622977, + -0.012506393, + -0.041722573, + 0.03144761, + 0.011572305, + 0.028619401, + -0.002662798, + -0.0022135926, + 0.021951055, + -0.003989332, + 0.0032579543, + 0.01174096, + -0.009483582, + -0.0021941324, + -0.02016072, + 0.01041767, + 0.018071998, + 0.004297451, + 0.005491007, + 0.00423907, + -0.009224113, + -0.0096133165, + -0.0136091355, + -0.015996248, + 0.00066772656, + -0.013699949, + -0.021834293, + 0.02872319, + -0.010657678, + -0.015620017, + -0.006752674, + -0.001300587, + 0.03635157, + -0.020212615, + 0.0100609, + 0.026297156, + -0.006934302, + 0.0010208474, + 0.0040866327, + -0.16647513, + 0.014504302, + 0.01921366, + -0.021717533, + -0.014179966, + 0.0033244432, + 0.018590935, + 0.02581714, + -0.023650575, + 0.021263463, + -0.0023676523, + 0.020368295, + -0.052412685, + -0.019771518, + -0.0018616882, + 0.024883052, + -0.0021552122, + 0.011442571, + 0.02302785, + 0.010994988, + 0.018033076, + -0.01551623, + 0.0077970354, + 0.003739593, + 0.014919452, + 0.0010338208, + -0.009665211, + 0.019096898, + -0.008367866, + -0.017747661, + 0.01567191, + 0.01547731, + 0.02555767, + -0.0017384405, + 0.023417054, + 0.0059094005, + -0.0058996705, + 0.013310746, + 0.012519366, + -0.003061731, + 0.0056239846, + 0.01796821, + 0.011513925, + 0.0093862815, + -0.008568955, + 0.01796821, + 0.024818184, + 0.026180396, + 0.00052704586, + 0.0020400728, + 0.013200472, + -0.030487576, + -0.015334602, + -0.011377704, + 0.021717533, + 0.020342348, + 0.022132684, + 0.013803736, + -0.017124936, + 0.018474175, + 0.0075635137, + -0.055059265, + 0.0035709385, + 0.021484012, + 0.0014238347, + -0.0027698288, + 0.004543946, + 0.008465167, + -0.023961937, + 0.0047547645, + -0.011020934, + -0.011442571, + -0.018642828, + -0.017384404, + 0.007388372, + 0.010638218, + -0.009794945, + -0.004281234, + -0.012688021, + -0.011273917, + 0.006194816, + 0.031110302, + -0.005805613, + 0.0030941647, + -0.018201731, + 0.0068434877, + 0.0031201115, + 0.011196076, + -0.021055888, + -0.007719195, + 0.021042915, + -0.041307423, + -0.0072132307, + -0.029605383, + 0.017734688, + 0.009820892, + -0.0064640148, + 0.0029157798, + -0.0015746509, + 0.012298818, + 0.0031898438, + -0.0017692525, + -0.011799341, + 0.009412228, + 0.018993111, + 0.013388586, + 0.00834192, + 0.012337739, + 0.038660843, + 0.0032790361, + -0.008828424, + 0.028437773, + 0.0030584878, + 0.024857104, + -0.00037927032, + -0.0056402017, + 0.015269735, + -0.015710833, + 0.012272871, + 0.007738655, + 0.041385263, + -0.013155065, + -0.008309486, + -0.002145482, + -0.0031849786, + -0.012876136, + -0.10233447, + -0.01261018, + 0.021224542, + 0.025414962, + 0.013583188, + 0.015386496, + 0.011818801, + 0.02423438, + -0.01381671, + 0.019304473, + -0.013427507, + -0.016670866, + -0.0018097945, + -0.008140831, + -0.0009900354, + -0.0071678236, + 0.008886804, + -0.01642437, + -0.01656708, + 0.016541133, + -0.015723806, + -0.000007582619, + 0.01290857, + -0.010197122, + -0.024831157, + -0.0065775323, + -0.025155494, + 0.018785536, + 0.0047353045, + -0.0065515856, + 0.030850833, + -0.015594071, + 0.00030892997, + 0.0005631282, + -0.01569786, + -0.0072002574, + -0.003999062, + -0.0029547003, + 0.008121371, + -0.035054225, + -0.0034444474, + 0.0047871983, + 0.005915887, + -0.0020157478, + 0.004514756, + -0.0024081941, + -0.026297156, + 0.012863163, + 0.0046023265, + -0.019693676, + 0.0010735518, + 0.01702115, + -0.016255716, + -0.012830729, + 0.038531106, + -0.017566033, + 0.020666685, + 0.010748493, + -0.02397491, + 0.016035168, + -0.008744096, + 0.017449273, + -0.0018503364, + 0.023170559, + -0.015645964, + -0.02087426, + -0.023092717, + -0.021925109, + 0.026673386, + -0.03391256, + -0.002596309, + 0.0001393631, + -0.037285656, + 0.02355976, + -0.024947919, + 0.0044628624, + -0.028282093, + -0.01883743, + 0.012409092, + -0.008821937, + -0.025285227, + -0.016606, + 0.003512558, + 0.0023660306, + 0.0018000643, + 0.028411826, + -0.0030244323, + -0.005779666, + 0.0269588, + 0.004521243, + 0.0105409175, + 0.027399898, + 0.005400193, + -0.02913834, + -0.020018013, + 0.012428552, + -0.0010540917, + -0.0020887232, + 0.015230815, + -0.015321629, + -0.023014877, + -0.014322674, + -0.033237945, + 0.010489023, + 0.0035903987, + -0.009976572, + -0.01619085, + 0.0077256816, + -0.0112804035, + -0.0006721862, + -0.01796821, + -0.01126743, + -0.010897687, + 0.0014197804, + -0.016437344, + -0.00998306, + -0.015581097, + -0.0073299916, + 0.0048520654, + 0.011585279, + 0.0002750774, + -0.00025034678, + -0.0015178921, + -0.0034736376, + 0.0005071803, + 0.022833249, + -0.035261802, + 0.0055688475, + -0.0093668215, + -0.025752272, + -0.025116574, + -0.007829469, + 0.018629855, + -0.022405125, + 0.011098775, + 0.037233762, + -0.0108263325, + -0.028697241, + -0.008568955, + 0.03676672, + 0.011572305, + -0.023884097, + -0.03204439, + -0.029994586, + 0.015334602, + -0.02480521, + 0.006528882, + 0.03349741, + -0.01709899, + 0.0023287318, + 0.015334602, + 0.0068759215, + 0.006327794, + 0.023923017, + 0.009438175, + -0.0011392299, + -0.012675048, + -0.0070056557, + 0.034742862, + 0.022807302, + 0.0054683033, + -0.021561852, + 0.0023822472, + -0.018409306, + 0.0069861957, + 0.008050017, + 0.005695339, + 0.0027455036, + 0.008257592, + -0.010099821, + -0.009775485, + -0.019434208, + -0.0070121423, + -0.008393814, + 0.03733755, + 0.01800713, + 0.022846222, + 0.0032076822, + 0.0020076393, + -0.0045374595, + -0.0076024337, + 0.023378134, + 0.013933471, + -0.007829469, + -0.009704131, + 0.007051063, + 0.039283566, + 0.03785649, + -0.028230198, + 0.0020887232, + 0.008166779, + 0.012448013, + -0.010904173, + 0.0051439675, + -0.0013395073, + 0.009055459, + 0.013051277, + 0.011176616, + 0.0074986466, + -0.006120219, + 0.010184147, + 0.019576916, + 0.016100034, + -0.005186131, + 0.00871815, + -0.020848313, + -0.012402605, + -0.0067656473, + -0.018292546, + -0.017332511, + -0.009496556, + 0.0013459941, + 0.0033276866, + -0.0038271637, + -0.0034444474, + 0.015723806, + 0.004722331, + 0.0050596404, + -0.019732596, + -0.019032031, + -0.021834293, + 0.0027925323, + -0.0034801243, + 0.0044661057, + 0.020173695, + 0.0006162382, + 0.01751414, + 0.025168467, + 0.03251143, + -0.017280618, + 0.017916316, + 0.011877181, + 0.026206343, + -0.002080615, + -0.0014797826, + -0.0061137322, + -0.0034541774, + -0.016618973, + -0.018071998, + 0.024364114, + 0.009198166, + 0.047690354, + -0.022664594, + -0.024883052, + 0.015191894, + -0.016022194, + 0.004012035, + 0.022586754, + 0.006139679, + -0.017617928, + -0.009814405, + 0.011475005, + 0.017916316, + 0.03279685, + -0.018448226, + -0.024169512, + -0.0022427829, + -0.033601202, + 0.014815665, + -0.022171604, + 0.00078367663, + 0.027659368, + -0.0024730614, + 0.009237087, + -0.0008311108, + -0.022794329, + -0.008893291, + 0.02559659, + 0.015321629, + -0.0065386123, + -0.010767953, + 0.012097729, + -0.019343395, + -0.031914655, + -0.01883743, + 0.012545314, + -0.03292658, + -0.0042585307, + -0.031655185, + -0.0032352507, + 0.011935562, + 0.012143137, + 0.039283566, + -0.018785536, + -0.0134794, + 0.02219755, + -0.010164687, + -0.004968826, + 0.01755306, + -0.0054747905 + ] + }, + { + "object": "embedding", + "index": 2, + "embedding": [ + 0.014424977, + -0.008803002, + -0.0020790275, + -0.028590279, + 0.0013365176, + 0.030901391, + -0.019891147, + -0.011133589, + -0.002213734, + -0.007063175, + 0.0026779042, + 0.0068814023, + -0.015970046, + 0.02278653, + -0.011217983, + 0.002093634, + 0.02595457, + 0.0029603012, + 0.03388766, + -0.012126848, + -0.028564312, + 0.014996263, + -0.0065178564, + 0.0009299631, + -0.01859277, + -0.011140081, + 0.010244201, + -0.017969549, + 0.0022461936, + 0.021085655, + 0.014801507, + -0.01807342, + 0.004550814, + -0.03173235, + -0.01825519, + 0.0014103629, + 0.017450197, + 0.002220226, + 0.023604508, + -0.01175681, + 0.0047488166, + -0.003031712, + 0.0005169166, + -0.022929352, + -0.012730594, + 0.016710121, + 0.028434472, + 0.0028759066, + -0.01175681, + 0.01498328, + 0.0054337108, + 0.012393015, + -0.016969798, + -0.015970046, + 0.0038821495, + -0.021566054, + 0.014386025, + 0.023825232, + -0.017865678, + -0.015684403, + -0.0049305893, + 0.0021114869, + -0.0017804005, + 0.013555064, + 0.010062427, + -0.0075760344, + 0.0056674187, + 0.0032151078, + 0.00063011894, + 0.00807591, + 0.03334234, + 0.034978297, + 0.006641202, + 0.0135940155, + 0.02749964, + 0.010101379, + -0.0058816513, + 0.006193262, + -0.014100382, + -0.00093077455, + 0.0072124884, + -0.019566553, + -0.018761558, + -0.00091454486, + 0.01498328, + 0.0016797762, + -0.012464426, + 0.00979626, + -0.013581031, + -0.018346077, + 0.00022701324, + 0.038198274, + 0.023150075, + -0.0035413252, + -0.00074291555, + 0.02478603, + 0.012438459, + 0.013957561, + 0.030174298, + -0.021007752, + 0.000053558084, + 0.011620481, + -0.027837219, + 0.0016124229, + -0.031498645, + -0.022397017, + 0.008932839, + -0.0013697885, + 0.028720116, + -0.020916866, + -0.034043465, + 0.034432977, + 0.033524115, + -0.0282527, + -0.017606003, + -0.029447207, + 0.006261427, + -0.01698278, + -0.029758818, + 0.0028337094, + 0.0039470685, + 0.04014584, + 0.020501385, + -0.010004001, + 0.032563314, + -0.007647445, + -0.01234108, + -0.019371796, + -0.018956315, + 0.012367048, + -0.014528847, + 0.02357854, + 0.018190272, + 0.025318366, + -0.021916617, + 0.0018274667, + -0.0064983806, + -0.0006078031, + -0.015528598, + -0.026240215, + 0.0045735356, + 0.009101628, + -0.018878413, + -0.014178285, + -0.0008650442, + 0.028720116, + 0.01663222, + 0.01615182, + -0.019047203, + -0.014775539, + 0.0060471944, + -0.023903135, + 0.010685649, + -0.0089652985, + -0.0062776566, + 0.020488402, + -0.020436466, + 0.011049194, + -0.035212006, + -0.010653189, + -0.010133838, + -0.008264175, + 0.0131460745, + 0.005777781, + 0.023877166, + 0.02474708, + -0.00008064143, + 0.012315113, + -0.010906373, + -0.0047585545, + -0.006946321, + 0.031888157, + -0.017164554, + 0.024292648, + -0.013308372, + 0.02124146, + 0.009770293, + -0.0007161365, + -0.01825519, + -0.0054629245, + -0.024448453, + -0.015749322, + 0.019475667, + -0.0056284675, + 0.019099137, + -0.01433409, + 0.022539837, + -0.0060991296, + 0.0077383313, + 0.0041126115, + 0.017229473, + 0.022384033, + -0.02086493, + -0.02457829, + -0.6892828, + -0.034796525, + 0.012633216, + -0.0039048712, + 0.0015012493, + 0.020774044, + 0.007069667, + 0.016073916, + -0.00097053737, + -0.025305383, + -0.010971292, + 0.00041142345, + 0.01663222, + 0.0022072422, + 0.009965049, + -0.016281657, + -0.007881153, + 0.006407494, + 0.00862772, + 0.0007490017, + 0.0022380787, + 0.017774792, + -0.017008748, + 0.012406, + 0.016138835, + 0.012633216, + 0.015074166, + -0.0045735356, + -0.012678659, + 0.022254195, + -0.011380281, + 0.024734097, + -0.008582277, + -0.019384779, + 0.043158077, + 0.008342077, + -0.010880406, + 0.011659432, + 0.009367796, + 0.030953325, + -0.015671419, + -0.014476912, + 0.0032459444, + -0.027863186, + -0.011691892, + 0.0027233474, + 0.025941588, + -0.02305919, + 0.01615182, + 0.00082406413, + 0.038795527, + -0.021656942, + 0.001230213, + 0.0025805258, + 0.016658187, + 0.0076344614, + 0.020838963, + -0.008101877, + -0.006829467, + 0.010153314, + -0.0065632993, + -0.0059790295, + -0.012607248, + -0.015139084, + -0.014230221, + 0.0006171352, + -0.033627983, + -0.020709125, + -0.009504125, + -0.0031177297, + -0.007413737, + 0.010400006, + -0.027421739, + 0.015892144, + 0.016203754, + -0.008809493, + 0.014178285, + -0.011523102, + -0.013081156, + 0.01615182, + 0.008621228, + -0.02395507, + -0.040950835, + -0.009783276, + 0.032900892, + -0.017346326, + -0.030979292, + -0.007868169, + 0.030511877, + 0.0026681663, + 0.039262943, + 0.0061965077, + -0.027317869, + -0.0068619265, + -0.008958806, + 0.025928603, + -0.015918111, + 0.0029083663, + 0.01646343, + -0.02069614, + -0.001459052, + -0.01481449, + 0.0022608002, + -0.006835959, + 0.04227518, + 0.014048447, + -0.012698134, + 0.029057695, + 0.003202124, + -0.017774792, + 0.031135099, + -0.010302627, + -0.010523352, + 0.0040736604, + 0.016645202, + -0.03388766, + 0.05406445, + 0.016788024, + 0.0066866456, + 0.0005347693, + 0.0025058691, + -0.0021244707, + 0.00013369233, + -0.008147321, + 0.012185276, + 0.01667117, + -0.00687491, + -0.0228904, + -0.017138587, + 0.005644697, + -0.004609241, + -0.01577529, + 0.018644705, + 0.0017706626, + 0.00035887974, + -0.011841205, + 0.0180085, + -0.008958806, + 0.021085655, + -0.016242705, + -0.030148331, + -0.01261374, + -0.03194009, + 0.010250692, + -0.0069138617, + -0.02814883, + -0.03058978, + -0.0075046234, + -0.030252201, + 0.02495482, + -0.027811252, + -0.011425724, + -0.025474172, + 0.022630725, + 0.0081667965, + -0.0020595517, + -0.021423234, + 0.0020822734, + -0.016619235, + 0.016476413, + 0.0047682924, + 0.008322601, + -0.005200003, + -0.009322353, + -0.004265171, + -0.029083662, + -0.010705125, + 0.032771055, + 0.0019475666, + -0.0272919, + 0.00384969, + -0.0008999381, + -0.005183773, + -0.012620232, + -0.023942085, + -0.0038626739, + -0.009030217, + -0.027188031, + 0.0048169815, + -0.005430465, + -0.002166668, + 0.015385777, + 0.003570539, + -0.009646947, + 0.03503023, + -0.003388766, + 0.013736837, + 0.028382538, + -0.008186271, + 0.019657439, + -0.015749322, + 0.0026389528, + -0.0074851476, + -0.0035835225, + 0.0027233474, + -0.0034764064, + 0.0017300884, + 0.008848445, + 0.0069073695, + 0.0031940092, + 0.01773584, + -0.012938335, + 0.032615248, + -0.016865928, + 0.0065795295, + -0.035861194, + 0.011211492, + -0.0134771615, + 0.013223978, + 0.036614254, + 0.003153435, + -0.017385278, + -0.017411245, + -0.015100134, + 0.019164056, + 0.018566802, + -0.020566303, + 0.02224121, + -0.008608244, + -0.017190522, + 0.011016735, + 0.014347075, + 0.018475916, + -0.0019021234, + -0.0031761567, + 0.0004211613, + 0.03186219, + 0.017995516, + -0.016749073, + -0.012925351, + -0.016995765, + 0.00008611896, + -0.0063945106, + 0.023539588, + -0.030745585, + -0.012074913, + 0.0022413246, + -0.045910638, + 0.016762057, + 0.024032973, + 0.0076149856, + 0.02351362, + 0.020877915, + -0.010607746, + 0.013879659, + 0.011159557, + 0.017476164, + -0.0007396696, + -0.0153078735, + 0.01089339, + -0.014217236, + 0.0079071205, + -0.009582028, + 0.014879409, + 0.043911137, + -0.0025010002, + 0.042742595, + 0.011386773, + 0.04887094, + 0.020319613, + -0.012789021, + -0.016307624, + 0.017567052, + -0.00070152973, + 0.005901127, + -0.013684901, + 0.009926098, + -0.01433409, + 0.006355559, + -0.0013973791, + 0.004086644, + 0.00721898, + 0.019332845, + -0.025591025, + -0.00025987843, + -0.011062179, + -0.011821729, + -0.0040833983, + 0.010159806, + 0.011964551, + -0.012431967, + -0.038042467, + 0.014217236, + -0.0025285906, + -0.0005712862, + -0.0130292205, + -0.031680416, + 0.012626723, + -0.0049370816, + 0.004495633, + 0.017112618, + 0.0075176074, + 0.024007006, + -0.004213236, + 0.013866674, + -0.03503023, + -0.00074494426, + 0.0068619265, + 0.020332595, + -0.0021488152, + -0.004664422, + -0.016554317, + -0.03323847, + -0.012568297, + 0.019631471, + 0.011328346, + -0.013009745, + 0.008634212, + -0.01825519, + -0.015593517, + -0.014853441, + 0.010692141, + -0.014100382, + -0.002973285, + -0.01842398, + -0.01577529, + -0.012412491, + -0.012055437, + 0.030901391, + -0.002976531, + 0.003791263, + -0.013516112, + -0.014009496, + 0.001605931, + 0.069333375, + 0.009283401, + 0.00419376, + 0.01471062, + 0.006375035, + -0.007433213, + -0.0209688, + 0.003437455, + 0.0004002655, + 0.012594264, + 0.0014858311, + -0.007167045, + 0.014918361, + 0.001751187, + -0.0031290904, + 0.00015783405, + 0.024123859, + 0.015346825, + 0.031368807, + -0.016112868, + 0.0015028722, + 0.008205747, + -0.010406498, + 0.008329093, + 0.006887894, + 0.0045767818, + 0.02996656, + 0.0018485653, + 0.030563813, + -0.0027412002, + -0.0021196017, + 0.014775539, + -0.003677655, + -0.012892891, + -0.018852444, + 0.005832962, + -0.011334837, + 0.0037101144, + 0.016099885, + -0.0020011247, + 0.031187033, + 0.012827972, + 0.007894137, + -0.016710121, + 0.0013381406, + 0.01660625, + -0.0046968814, + 0.014827474, + -0.013879659, + -0.007420229, + 0.020955818, + 0.004904622, + 0.0027071177, + -0.01996905, + 0.0143211065, + -0.00039985977, + -0.012237211, + 0.002744446, + -0.015242955, + -0.013632966, + 0.006482151, + -0.010510368, + 0.010698632, + -0.018060435, + -0.00849139, + -0.008458931, + 0.0019605504, + -0.009763801, + -0.02017679, + 0.0010192265, + -0.013905626, + -0.006537332, + -0.028382538, + -0.0041158576, + 0.018462932, + 0.013568047, + 0.012107372, + -0.010425974, + -0.0025496893, + 0.03791263, + -0.007920104, + 0.011185524, + -0.012003503, + -0.010419481, + -0.0033498146, + 0.010387022, + 0.034458946, + -0.016320609, + -0.005245446, + 0.0060277185, + 0.025889652, + -0.008121353, + -0.00017203506, + -0.026486907, + -0.0066866456, + -0.011607497, + 0.017891645, + 0.013055189, + -0.014996263, + -0.009536585, + 0.004245695, + -0.025188528, + -0.007777283, + -0.008147321, + 0.010497384, + 0.012146324, + 0.029836722, + 0.017060684, + -0.016956814, + 0.0112439515, + 0.01780076, + -0.013152567, + 0.004258679, + 0.0017917613, + -0.006952813, + 0.013619983, + -0.015814241, + 0.01354208, + 0.010231216, + -0.025889652, + -0.0005595197, + -0.04344372, + 0.030174298, + 0.0034017498, + 0.00040635167, + 0.0030787783, + 0.021202508, + -0.014035463, + 0.0037425738, + 0.00076360843, + 0.0018469424, + 0.021228475, + 0.0003767324, + -0.019215992, + -0.046144344, + -0.020631222, + 0.037237473, + -0.00433009, + -0.015424727, + -0.0042878925, + -0.0011912616, + 0.008906871, + 0.008919856, + 0.0023159813, + -0.022202259, + -0.020215742, + 0.00091454486, + -0.0005136707, + 0.0023987528, + 0.015515614, + -0.019566553, + 0.0003276375, + -0.014009496, + 0.015957063, + -0.0052097407, + -0.00537853, + -0.008471915, + -0.028434472, + 0.01460675, + 0.008809493, + 0.012821481, + -0.009945573, + 0.0033433228, + 0.014879409, + -0.0018323356, + -0.0011855812, + -0.021189526, + 0.0034601768, + -0.03791263, + 0.019839212, + 0.02522748, + -0.0014833966, + 0.025720863, + -0.00769938, + 0.003340077, + 0.008062926, + -0.0038302145, + -0.00169276, + -0.02739577, + -0.020423481, + -0.007167045, + 0.017008748, + -0.02305919, + -0.006680154, + 0.010523352, + 0.00035218496, + 0.02034558, + 0.014541831, + -0.004080152, + -0.010198757, + 0.026694646, + -0.013529096, + 0.022007503, + -0.007063175, + 0.016554317, + -0.012074913, + -0.02343572, + -0.0059303404, + 0.0006666358, + -0.000043718814, + 0.015762307, + 0.002106618, + -0.011419232, + -0.03303073, + 0.009296385, + 0.018242208, + 0.017489148, + 0.000029162782, + -0.006478905, + -0.024591275, + -0.0019199761, + -0.023747329, + -0.027421739, + -0.036276676, + 0.0061088675, + -0.0008252814, + -0.0389773, + 0.025045708, + -0.0036614253, + -0.021656942, + 0.0045930115, + 0.0043528113, + 0.029265435, + -0.007121602, + 0.01780076, + 0.011562054, + -0.008290142, + -0.027473673, + 0.0030203513, + -0.011205, + -0.0039568064, + 0.014191269, + 0.012711118, + -0.017580034, + 0.01189314, + 0.012457934, + 0.029784786, + 0.028590279, + 0.0029521864, + 0.0051642978, + 0.012698134, + 0.02055332, + -0.026642712, + -0.004596257, + -0.012295637, + 0.019267926, + -0.010205249, + -0.028330602, + 0.014632718, + -0.0065632993, + -0.016177787, + 0.0055732867, + -0.04448242, + 0.012646199, + 0.008854936, + -0.005329841, + -0.0022429475, + -0.011140081, + -0.0194497, + -0.0008691016, + -0.0021098638, + 0.027551576, + -0.0015402007, + 0.013568047, + 0.0060471944, + 0.0010646698, + -0.009504125, + -0.0014209122, + 0.010555811, + 0.02698029, + -0.0049305893, + -0.0072124884, + -0.0052876435, + 0.042560823, + 0.038925365, + -0.021877665, + -0.0039957576, + -0.013555064, + -0.0013292142, + -0.0065178564, + 0.016281657, + 0.008218731, + -0.0050474433, + 0.027317869, + -0.012769545, + 0.00046295283, + -0.024396518, + 0.0037588037, + -0.0053623, + -0.0027769054, + -0.0038659198, + -0.0033222241, + 0.0072709154, + -0.0002022629, + 0.00096161105, + -0.0055505647, + 0.018307127, + 0.0008918232, + -0.0074461964, + 0.022903383, + -0.013308372, + 0.013853691, + 0.00023756256, + 0.018657688, + -0.0055148597, + -0.008127845, + 0.029343337, + -0.014996263, + -0.020877915, + -0.012548821, + 0.014191269, + 0.001983272, + 0.0032232227, + -0.015268923, + 0.0037295902, + -0.009607996, + 0.013529096, + -0.022942334, + -0.014373042, + 0.00004305948, + -0.02330588, + 0.01625569, + 0.026616745, + -0.02649989, + 0.016294641, + 0.0114322165, + -0.013022729, + -0.0010297758, + -0.034926362, + -0.00443396, + -0.021592023, + 0.009835212, + 0.015515614, + -0.012172291, + -0.006404248, + -0.009114612, + 0.0031940092, + 0.008205747, + -0.004833211, + 0.01996905, + 0.013736837, + -0.003388766, + -0.023812247, + 0.015814241, + -0.01735931, + 0.007452688, + -0.008257682, + -0.010088395, + -0.010698632, + -0.00769938, + -0.0007173537, + -0.014191269, + 0.0024766556, + -0.041989535, + -0.019683408, + -0.0059335865, + -0.027110128, + -0.01299027, + 0.010783027, + -0.0016164803, + 0.013658934, + -0.01529489, + -0.0066087428, + 0.010393514, + 0.015165052, + 0.006303624, + -0.028460441, + -0.022046454, + -0.006303624, + -0.0170477, + 0.002171537, + 0.0012496886, + -0.009062677, + -0.019904131, + 0.006894386, + -0.015242955, + 0.011471167, + -0.0037295902, + -0.015216988, + -0.0035478172, + -0.00077212905, + 0.013529096, + 0.02241, + 0.0070242235, + -0.002510738, + -0.027889155, + -0.005732338, + 0.0023240962, + 0.030330105, + -0.020228725, + -0.0010354563, + 0.010601254, + -0.023747329, + -0.008368045, + -0.009614487, + -0.011399757, + -0.011828221, + 0.018268175, + 0.021747828, + -0.008134336, + 0.0030154823, + 0.031394776, + 0.0005708805, + -0.016865928, + -0.0013852068, + -0.00687491, + -0.021838713, + -0.004547568, + 0.014450944, + 0.0005436957, + 0.009413239, + -0.024967805, + 0.016060933, + -0.027188031, + 0.0040022493, + -0.01343821, + -0.012763053, + -0.011503627, + 0.031109132, + 0.027239965, + -0.015061182, + 0.0031096148, + -0.03991213, + 0.0047520627, + -0.0048559327, + -0.011620481, + -0.0016278411, + -0.034978297, + -0.020254694, + -0.0007765922, + 0.0019362058, + -0.02962898, + 0.0038951333, + 0.011776286, + 0.015697388, + 0.026902387, + 0.2141804, + 0.009367796, + -0.010335087, + 0.02708416, + -0.0032345837, + 0.038795527, + 0.02113759, + -0.0070891427, + 0.03269315, + 0.023760313, + -0.01763197, + 0.0077513154, + 0.0051091164, + -0.000626873, + 0.0002450688, + 0.0016862681, + -0.031472676, + -0.011750319, + -0.025292398, + -0.014749572, + 0.0038853954, + -0.01715157, + 0.009069169, + 0.009121104, + 0.030667683, + 0.0175281, + -0.0051578055, + 0.0017414491, + 0.031680416, + 0.02024171, + -0.017203506, + -0.0107246, + -0.0051123626, + -0.011639956, + 0.009121104, + -0.0037652955, + -0.009049693, + -0.01615182, + 0.02942124, + 0.027110128, + 0.01832011, + -0.0061575565, + -0.01832011, + -0.011678908, + -0.0071605532, + 0.0068034995, + -0.017657937, + -0.007569542, + 0.009835212, + 0.0059790295, + -0.026590776, + -0.007881153, + 0.03503023, + 0.016281657, + -0.004372287, + 0.02739577, + 0.020527352, + -0.01412635, + 0.00934832, + 0.00010559463, + -0.024513371, + 0.025188528, + -0.02024171, + 0.010049444, + -0.008932839, + -0.01625569, + -0.0100689195, + -0.005021476, + 0.01529489, + -0.024760064, + 0.022630725, + 0.0045702895, + 0.004787768, + 0.0145807825, + -0.016047949, + -0.014424977, + 0.020371547, + -0.00063214765, + 0.0066736615, + 0.0029927606, + -0.011639956, + 0.0093872715, + -0.015905127, + 0.009575536, + -0.0010979407, + -0.033160567, + 0.0077707907, + -0.0029635471, + 0.009095136, + 0.004508617, + 0.005884897, + -0.007004748, + 0.008887396, + 0.009309368, + 0.022332098, + 0.023461686, + -0.01687891, + 0.007257932, + -0.024084907, + 0.014411993, + -0.032433476, + -0.05520702, + 0.018242208, + 0.0012294014, + -0.0036841468, + 0.007660429, + -0.00035380793, + 0.019995017, + 0.034770556, + 0.0024182287, + 0.011217983, + -0.0120878965, + 0.00934832, + 0.0037880172, + 0.01715157, + -0.013970545, + 0.007420229, + -0.0123475725, + -0.0080239745, + -0.0073877694, + -0.006420478, + -0.022864433, + -0.008647196, + 0.018501883, + 0.0014054939, + -0.006719105, + -0.02389015, + 0.018112369, + -0.008783526, + -0.039678425, + 0.03326444, + -0.0053395787, + 0.026434971, + 0.00065446354, + -0.0072059967, + 0.010094887, + -0.0009397009, + 0.0023143583, + 0.0069073695, + 0.0041840225, + 0.0006378281, + -0.023669427, + 0.016580284, + 0.00079403917, + 0.006241951, + 0.0005335521, + 0.0027217243, + -0.021566054, + -0.015242955, + -0.039029237, + -0.002796381, + -0.008530342, + -0.016385527, + -0.0065632993, + 0.017073667, + -0.020137839, + -0.010536335, + 0.0028369555, + 0.005479154, + 0.020709125, + -0.02468216, + -0.0042327116, + 0.00075427635, + 0.0061023757, + -0.0045118625, + 0.0031972553, + -0.16691944, + 0.008257682, + 0.0155675495, + -0.015905127, + -0.007861678, + 0.02161799, + 0.022864433, + 0.02505869, + -0.0137108695, + 0.02516256, + 0.013295388, + 0.028538343, + -0.046404023, + -0.016788024, + 0.00005026142, + 0.027162062, + -0.0059887674, + -0.011620481, + 0.01959252, + 0.020202758, + 0.012289145, + -0.011568545, + 0.026357068, + -0.0020514368, + 0.013451193, + 0.0024263435, + -0.011613989, + 0.015035215, + -0.010990768, + -0.008335585, + 0.009471666, + 0.010023477, + 0.016515365, + 0.009750817, + 0.026616745, + 0.006063424, + -0.004586519, + 0.0012407623, + -0.016346576, + 0.00034893904, + 0.00807591, + 0.0069593047, + 0.0019102383, + 0.011451691, + -0.021384282, + 0.01687891, + 0.0016611121, + 0.0124189835, + -0.019215992, + -0.008335585, + 0.014788522, + -0.041833732, + -0.0032459444, + -0.006034211, + 0.0057583055, + 0.024071924, + 0.014554814, + 0.0057388297, + -0.013866674, + 0.018540835, + -0.0016797762, + -0.0408989, + -0.0063847727, + 0.015723355, + -0.013684901, + -0.014658685, + 0.0051805275, + 0.012328097, + -0.016398512, + -0.0027558068, + -0.014165301, + -0.031836223, + 0.018865429, + -0.01343821, + 0.011938583, + 0.01769689, + -0.00866018, + -0.007952563, + -0.011802254, + -0.021955568, + 0.006647694, + 0.0360949, + -0.005839454, + 0.018891396, + -0.021955568, + 0.01134133, + 0.009134088, + 0.013801755, + -0.025487155, + -0.019436715, + 0.025279416, + -0.04214534, + 0.0024620488, + -0.032121867, + -0.0070242235, + 0.006822975, + -0.0010906373, + 0.0011182278, + -0.0021828976, + 0.0019134842, + 0.0064107403, + 0.0012391392, + -0.015411744, + 0.013133091, + 0.02749964, + 0.013152567, + -0.006238705, + 0.01715157, + 0.011860681, + -0.003930839, + -0.011295887, + 0.029395273, + -0.00721898, + 0.008777034, + 0.0073228506, + -0.010731092, + 0.010458433, + -0.022825481, + 0.017476164, + -0.005174035, + 0.031290904, + -0.0037652955, + -0.008238207, + 0.013736837, + 0.0057842727, + -0.019735342, + -0.10335087, + -0.0049273437, + 0.026201263, + 0.010237709, + -0.0030544337, + 0.013775788, + 0.007965548, + 0.035861194, + -0.016891895, + 0.030901391, + -0.013321356, + -0.019683408, + -0.017294392, + -0.01062073, + 0.016891895, + -0.015152069, + 0.016242705, + -0.030200267, + -0.04739079, + 0.002871038, + 0.0112439515, + -0.0045767818, + 0.0028272176, + -0.009711865, + -0.022981286, + -0.013347323, + -0.019021234, + 0.018346077, + -0.0005051501, + -0.0016667924, + 0.020890899, + -0.009828719, + 0.014373042, + -0.0077318395, + -0.009088645, + -0.013282404, + 0.0055732867, + -0.00064229127, + 0.008692639, + -0.021436216, + -0.013275913, + 0.0054044975, + 0.022422984, + -0.023500638, + 0.0052843974, + -0.01062073, + -0.003794509, + 0.008127845, + -0.0035770307, + -0.03835408, + 0.003327093, + 0.011393265, + -0.007777283, + -0.0093872715, + 0.03973036, + -0.026798517, + 0.008809493, + 0.013723853, + -0.02553909, + 0.010925849, + 0.0029992526, + 0.0031842715, + 0.019657439, + 0.013308372, + -0.017398262, + -0.017164554, + -0.024123859, + -0.029187532, + 0.023240961, + -0.023656443, + -0.014944328, + 0.015931096, + -0.024889901, + 0.0156065, + -0.021812746, + -0.008809493, + -0.013736837, + -0.011808746, + 0.009465174, + -0.023929102, + -0.03588716, + -0.019761309, + 0.0032637971, + -0.003262174, + 0.0051805275, + 0.02814883, + -0.004670914, + -0.012354065, + 0.03908117, + -0.013957561, + 0.002213734, + 0.03069365, + 0.013159059, + -0.02107267, + -0.017372295, + 0.01694383, + 0.002687642, + -0.0017674167, + 0.012665675, + -0.011821729, + -0.03058978, + -0.016099885, + -0.03248541, + 0.019527601, + -0.0069398293, + 0.00013602535, + 0.0060601784, + 0.0015913242, + -0.010880406, + 0.0034861444, + -0.014087399, + 0.002341949, + -0.0057972567, + -0.0010622353, + -0.02203347, + -0.01732036, + -0.010906373, + 0.0069657965, + 0.010958308, + 0.0042781546, + 0.013879659, + 0.0044631734, + 0.001253746, + -0.0014136088, + 0.0107246, + 0.008270666, + -0.03482249, + 0.010607746, + -0.026279166, + -0.022526855, + -0.014230221, + -0.008640704, + 0.019293893, + -0.022942334, + 0.0060991296, + 0.033524115, + -0.017748823, + -0.02395507, + 0.001635956, + 0.016762057, + 0.009439207, + -0.025850702, + -0.04048342, + -0.025889652, + 0.026201263, + -0.016073916, + -0.016697139, + 0.023734346, + -0.012256686, + 0.012827972, + 0.00903671, + -0.0026438218, + 0.013840707, + 0.02076106, + 0.024409503, + -0.004911114, + -0.0066671697, + -0.018449947, + 0.022098389, + 0.0069073695, + 0.00501823, + -0.015359809, + -0.0035413252, + -0.00097540626, + 0.005917357, + 0.019917116, + 0.015113117, + 0.01625569, + -0.007465672, + -0.0014858311, + 0.00396979, + -0.012568297, + -0.013775788, + 0.003794509, + 0.028408505, + 0.017852694, + 0.027577544, + -0.009640455, + -0.0037036226, + -0.0069982563, + -0.008056434, + 0.01615182, + 0.026746582, + 0.009062677, + -0.009160055, + 0.0056966324, + 0.028953824, + 0.0238512, + -0.041600022, + -0.016125852, + 0.0068684183, + 0.012146324, + -0.016917862, + 0.004310614, + -0.009770293, + 0.01571037, + 0.010166298, + -0.006991764, + -0.0025837717, + -0.010679157, + -0.011763303, + 0.034381043, + -0.0026097393, + -0.014450944, + 0.00042075553, + -0.020293644, + -0.011419232, + -0.008601753, + -0.023864184, + -0.002218603, + -0.0008991266, + 0.009380779, + 0.0051058703, + -0.011107622, + 0.010107871, + 0.011217983, + 0.0033189782, + 0.008192764, + -0.0071475697, + -0.01917704, + -0.021085655, + 0.010296135, + 0.0053460705, + -0.0075435746, + 0.009224974, + -0.005544073, + 0.03326444, + 0.007926596, + 0.017670922, + -0.0052876435, + 0.015113117, + -0.0040119872, + 0.02076106, + -0.0066931373, + -0.015697388, + -0.010224725, + -0.007627969, + -0.028330602, + -0.008861428, + 0.02931737, + -0.006310116, + 0.05406445, + -0.010464924, + -0.02340975, + 0.025616992, + -0.010912865, + 0.014100382, + 0.014762555, + 0.0016505627, + -0.018891396, + -0.023799265, + 0.013386275, + 0.020787029, + 0.032459445, + -0.01471062, + -0.02299427, + -0.01821624, + -0.030252201, + 0.018034467, + -0.022020487, + -0.010432465, + 0.02942124, + 0.022332098, + 0.005245446, + 0.0052422, + -0.023994021, + -0.01498328, + 0.022864433, + 0.0029116122, + -0.0024880164, + -0.015697388, + 0.010581778, + -0.00515456, + -0.019709375, + -0.015814241, + 0.010049444, + -0.03635458, + -0.011380281, + -0.028486408, + 0.00804345, + 0.019644456, + 0.017216489, + 0.022539837, + -0.017411245, + -0.030979292, + 0.011406248, + 0.0023435717, + -0.008731591, + 0.009335336, + -0.022968303 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 43, + "total_tokens": 43 + } +} +278 34443 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 83 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["What color is the lamp in each room?"]}HTTP/2.0 200 OK +Content-Length: 33488 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:20:05 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 70 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-qpwjk +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999991 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_85f14641d8424a6caa87286d180fdb7c + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.02230405, + 0.008771547, + 0.014554557, + -0.011423711, + -0.008448112, + 0.015473112, + 0.0068826885, + -0.008881515, + 0.004744786, + -0.005595419, + -0.016676288, + 0.01731022, + -0.017698342, + 0.024891527, + -0.0063878335, + -0.0012743324, + 0.031618968, + 0.021294935, + 0.013648941, + -0.0046218806, + -0.020337569, + 0.025512522, + -0.01429581, + -0.001887241, + -0.01562836, + -0.008959139, + 0.017374907, + -0.008868577, + -0.011934738, + 0.006138789, + 0.0034187038, + -0.016792726, + -0.012723918, + -0.0168186, + -0.016844476, + 0.0169221, + 0.010860935, + 0.0039006216, + 0.011591896, + -0.014606307, + 0.015718922, + -0.0003416278, + -0.00038286572, + 0.00014958851, + -0.0055177948, + 0.007827118, + -0.0011853878, + 0.0067468463, + -0.039355524, + 0.01296326, + -0.008124677, + 0.0066562844, + -0.012885635, + -0.052706905, + -0.026172329, + 0.00087650784, + 0.008674516, + 0.01811234, + -0.011714802, + -0.0054789823, + -0.0041917125, + -0.0013471051, + -0.014502808, + 0.0060676336, + -0.0006072485, + -0.001574318, + -0.0084093, + 0.010860935, + 0.017038535, + -0.0021136452, + 0.021424308, + 0.028125875, + 0.017581906, + -0.00033576557, + 0.029419612, + -0.008752141, + -0.020712754, + -0.0023740102, + 0.007109093, + 0.00022701068, + 0.0044892724, + 0.0069279694, + -0.03260221, + 0.008758609, + 0.018733334, + 0.013441943, + 0.0025923285, + 0.018371087, + -0.034594566, + -0.0030613088, + -0.013196132, + 0.051439043, + 0.030040607, + -0.021760682, + -0.012445764, + 0.0054854513, + -0.0074325274, + 0.02478803, + 0.0125169195, + -0.013791252, + 0.016119981, + -0.015291989, + -0.031308472, + 0.005977072, + -0.017129097, + -0.023222605, + 0.0037486071, + 0.008480456, + 0.032679833, + -0.040105894, + -0.03487919, + 0.049187936, + 0.039459024, + -0.038449906, + -0.021980617, + -0.0070767496, + 0.0012702894, + -0.024141159, + -0.037337292, + 0.0070055937, + -0.0022672766, + 0.040468138, + 0.017982965, + -0.027530754, + 0.04486685, + -0.002137903, + -0.026482826, + -0.024503406, + -0.024956215, + 0.005016471, + 0.010802716, + 0.014929742, + 0.013467818, + 0.021243185, + -0.008920327, + 0.0013099102, + -0.006513973, + 0.024425782, + -0.03793241, + 0.00328933, + 0.013545441, + 0.006119383, + -0.0047900667, + -0.008059991, + -0.0056406995, + 0.030972099, + 0.0048094727, + -0.0027427257, + -0.020402256, + -0.0018662177, + 0.005673043, + -0.012717449, + 0.023817725, + 0.012827417, + 0.0014692018, + 0.016999723, + -0.0019567795, + 0.017827716, + -0.044219982, + 0.0069538443, + -0.04931731, + 0.0048968, + 0.030402854, + -0.005876807, + 0.012342265, + 0.028772743, + 0.020686878, + 0.0049744244, + -0.010395189, + 0.0075101517, + -0.032576334, + 0.027039135, + -0.020466942, + 0.03330083, + 0.00044795693, + 0.034930937, + 0.007859461, + -0.016158793, + 0.003978246, + 0.01157249, + -0.0095930705, + -0.0068438766, + -0.008538674, + -0.009146731, + 0.0009783898, + -0.017129097, + 0.0017497813, + -0.001466776, + 0.024011785, + -0.004550725, + 0.01143018, + 0.027763627, + -0.015059115, + -0.0069991252, + -0.66901803, + -0.032653958, + 0.004961487, + -0.0085904235, + 0.0080988025, + 0.013390193, + 0.0239471, + 0.028255248, + -0.003522203, + -0.016003545, + 0.009386073, + 0.007063812, + 0.0042078844, + -0.023934161, + 0.0125233885, + -0.021825368, + -0.0053981235, + 0.010893278, + -0.00018577276, + 0.0017788904, + -0.008765078, + 0.019108517, + -0.0018112338, + -0.00398148, + 0.021411372, + 0.022834484, + 0.009638351, + -0.016495166, + -0.015020303, + 0.012102923, + -0.015304926, + 0.011792426, + 0.013099102, + -0.023106169, + 0.025447836, + -0.003709795, + -0.024555156, + 0.028824493, + 0.0054886853, + 0.029962983, + -0.028384622, + -0.0021750978, + 0.017323159, + -0.02305442, + -0.010666873, + 0.010847997, + 0.017568968, + -0.00046129862, + 0.046833333, + -0.014024125, + 0.012769199, + -0.030014733, + -0.015718922, + 0.01844871, + 0.018254649, + 0.015990607, + 0.046212338, + 0.009858287, + -0.008467519, + 0.0031146754, + -0.009987661, + -0.018086463, + 0.0013495309, + 0.002897974, + 0.007445465, + 0.00079120195, + -0.0252279, + -0.023507228, + -0.020104695, + -0.022329926, + -0.0035933587, + 0.016158793, + -0.03904503, + 0.02423172, + 0.0061064456, + -0.010796247, + 0.029911233, + -0.007102624, + -0.0024710405, + -0.017206721, + 0.002055427, + -0.015123802, + -0.02853987, + -0.015123802, + 0.01741372, + -0.010472813, + -0.014670994, + -0.020893876, + 0.015757734, + 0.026987385, + 0.009612476, + 0.015046178, + -0.01839696, + 0.0003299033, + -0.017103223, + 0.03216234, + -0.01646929, + 0.0032181744, + -0.011320212, + -0.025033839, + 0.000618973, + -0.03270571, + -0.0037453729, + 0.013312569, + 0.02913499, + -0.0064428174, + -0.0077494932, + 0.031877715, + 0.015641298, + -0.014399309, + 0.0004980893, + -0.013176726, + -0.021631308, + 0.0009832412, + 0.014502808, + -0.022498112, + 0.04877394, + 0.013234944, + 0.024218785, + -0.015874172, + 0.007607182, + -0.0003988353, + 0.014231123, + -0.0182029, + 0.020570442, + 0.008965608, + -0.013648941, + -0.009146731, + -0.009599539, + 0.024218785, + -0.011967081, + 0.011346086, + 0.010207596, + -0.0065269107, + -0.030583978, + 0.0065269107, + 0.01662454, + -0.026094705, + 0.013881814, + -0.013312569, + -0.01687035, + 0.0033507827, + -0.026651012, + 0.007833586, + -0.023481352, + -0.027065009, + -0.028358746, + -0.007128499, + -0.027686004, + -0.012329328, + -0.018332275, + -0.025991205, + -0.042977992, + 0.007671869, + 0.013299632, + 0.0028947399, + -0.015990607, + -0.0078077116, + -0.028332872, + 0.006614238, + 0.024956215, + 0.011967081, + -0.015421363, + 0.003324908, + -0.010304627, + -0.024205847, + -0.009981193, + 0.02903149, + 0.00025308758, + -0.042822745, + -0.0026004142, + 0.0050229398, + -0.002137903, + 0.013868877, + -0.011837707, + -0.00040328252, + -0.0031454016, + -0.037984163, + -0.006850345, + -0.010298158, + 0.012568669, + 0.029393738, + -0.015304926, + 0.0046024746, + 0.03423232, + 0.012549263, + 0.022679236, + 0.023274355, + 0.0025680708, + 0.010511625, + -0.015123802, + -0.004977659, + 0.013545441, + -0.0077883056, + 0.008726266, + -0.0033281422, + 0.022265239, + -0.012872698, + -0.00095332356, + -0.011087338, + 0.029600736, + -0.0019017955, + -0.005094095, + -0.011514273, + 0.029755985, + -0.033870075, + 0.009159668, + -0.005210532, + 0.013907689, + 0.025253775, + -0.007704213, + -0.025745396, + 0.0020344038, + -0.022627486, + 0.01641754, + 0.010110566, + -0.01687035, + 0.028358746, + -0.0054886853, + -0.00026905717, + 0.01063453, + 0.011954144, + 0.03635405, + 0.0006104828, + -0.015887108, + 0.0037874193, + 0.006649816, + 0.020906813, + 0.009787131, + -0.011281399, + -0.02804825, + -0.0077624307, + 0.000054630127, + 0.006513973, + -0.015279051, + 0.0025179384, + 0.008959139, + -0.016404605, + -0.0049841274, + 0.0050714547, + 0.020402256, + 0.030972099, + 0.022950921, + 0.0077818367, + 0.03244696, + -0.0034963281, + 0.00796296, + 0.026288766, + -0.02449047, + 0.013726565, + -0.008881515, + -0.012374609, + -0.024115285, + 0.0058250576, + 0.018086463, + 0.0038359344, + 0.032628085, + -0.0063781305, + 0.0040396983, + 0.010906215, + -0.0004334024, + -0.0010632913, + 0.016728038, + -0.005912385, + -0.0072578727, + 0.008913858, + -0.023287293, + -0.014554557, + 0.0029189973, + -0.0059447284, + -0.012853292, + -0.008467519, + 0.014774493, + 0.0008178853, + 0.017129097, + 0.0022624251, + -0.0077430247, + -0.017090285, + 0.018358149, + 0.0336372, + -0.0033895948, + -0.02240755, + 0.014308748, + -0.0011603216, + -0.014515745, + -0.018422836, + -0.018177025, + 0.018513398, + -0.017646592, + 0.0072449353, + 0.016326979, + -0.0062519913, + 0.024154097, + -0.0005373058, + 0.0018079996, + -0.022886233, + -0.001822554, + -0.0007689658, + 0.023222605, + 0.005980306, + -0.011139088, + 0.00031231655, + -0.027220257, + -0.013855939, + 0.016378729, + 0.011857113, + -0.016947974, + -0.008364019, + -0.006420177, + -0.0251244, + -0.023093231, + -0.009871225, + 0.004013824, + 0.011223181, + 0.013390193, + 0.008053522, + -0.019328453, + -0.018358149, + 0.023584852, + 0.004159369, + -0.021113811, + -0.029238489, + -0.011449586, + -0.0014821391, + 0.05852873, + 0.009916506, + -0.006306975, + 0.017077347, + -0.002411205, + -0.0194837, + -0.017737154, + 0.012820948, + -0.00930198, + 0.010097628, + 0.013196132, + -0.007859461, + -0.007587776, + -0.009890631, + -0.014748619, + -0.0019406077, + 0.0066821594, + -0.009877693, + 0.019328453, + -0.007594245, + -0.010472813, + 0.0090820445, + -0.0051523135, + 0.02606883, + -0.023390792, + -0.011113213, + 0.022394612, + -0.014567495, + 0.015123802, + -0.01236814, + -0.012161141, + 0.016262293, + -0.0058638696, + -0.0024500173, + -0.025706584, + -0.01697385, + -0.016107043, + 0.008027648, + 0.029238489, + -0.0019001784, + 0.027479006, + 0.0066950964, + 0.0009306831, + -0.025603084, + 0.000605227, + 0.0065754256, + -0.009974724, + 0.02137256, + 0.0066821594, + -0.013687753, + 0.00008136402, + -0.0019858885, + -0.003997652, + -0.0042984462, + 0.0040526357, + 0.00009975937, + -0.013273757, + -0.024645718, + 0.009366667, + -0.01741372, + -0.0038909183, + 0.0034639847, + 0.030816851, + -0.0052364063, + -0.03565543, + -0.024063535, + -0.0013940032, + -0.011798895, + -0.0080858655, + -0.007794774, + -0.0052816872, + -0.015343738, + -0.042072374, + 0.012064111, + 0.04719558, + 0.024645718, + 0.030532228, + -0.0120511735, + 0.0045442563, + 0.01953545, + 0.0043987106, + -0.010375783, + 0.0060223527, + -0.006119383, + -0.0105310315, + -0.0052267034, + 0.021036187, + -0.012070579, + -0.01434756, + 0.027789501, + 0.026198205, + -0.0054304674, + 0.02903149, + -0.027737753, + -0.007937086, + -0.009263167, + -0.0014675845, + 0.02542196, + -0.028074125, + -0.012665699, + 0.017012661, + -0.019781262, + 0.012588075, + -0.035396684, + -0.019781262, + 0.01018819, + -0.0041787755, + -0.009418416, + -0.03169659, + 0.011171431, + 0.0006618281, + -0.020790378, + -0.004023527, + -0.014852118, + 0.028876243, + 0.01627523, + -0.026159393, + 0.012199954, + -0.0047674263, + -0.032032963, + 0.009780663, + -0.03542256, + 0.026935635, + 0.0014683931, + -0.03679392, + 0.005372249, + 0.011928269, + -0.009237292, + 0.01890152, + 0.008629235, + 0.004744786, + 0.01800884, + -0.027789501, + -0.014037062, + -0.026935635, + -0.007212592, + 0.012555731, + 0.009334323, + -0.015097928, + 0.014127624, + -0.009935912, + 0.019600138, + -0.0029545752, + -0.015072053, + -0.011727739, + -0.02631464, + 0.011585428, + -0.0010333736, + 0.0063781305, + 0.028229373, + 0.01608117, + 0.0050358768, + -0.03596593, + 0.017750092, + -0.013073227, + -0.019224953, + -0.006164664, + -0.016145855, + 0.011449586, + 0.013894751, + 0.016042357, + 0.0036192334, + 0.0073225596, + 0.005543669, + -0.0065366137, + 0.0056665745, + 0.009017357, + -0.0019470764, + -0.027116759, + -0.005669809, + 0.011902394, + 0.012083517, + 0.015563673, + 0.008933264, + 0.01152721, + 0.029212615, + -0.005317265, + 0.00062705885, + -0.03482744, + -0.026780386, + 0.001640622, + -0.016999723, + -0.011734208, + 0.0043696016, + 0.0014303896, + 0.013713628, + 0.0067468463, + -0.003897387, + -0.015473112, + -0.00925023, + 0.029652486, + -0.014632182, + 0.044763353, + -0.025344336, + 0.014321685, + -0.009127324, + -0.038812153, + -0.023106169, + -0.0061873044, + -0.020130571, + 0.0059447284, + 0.008376957, + 0.0032197917, + -0.02433522, + 0.021980617, + -0.0027799206, + 0.018979143, + -0.0007612842, + -0.0071996544, + -0.018177025, + -0.03358545, + -0.024050599, + -0.022575736, + -0.02869512, + 0.016585726, + -0.014412247, + -0.03167072, + 0.020454004, + 0.0022769796, + -0.007102624, + -0.010479282, + -0.009269636, + 0.025163213, + 0.013933564, + 0.026237017, + 0.013881814, + -0.0050358768, + -0.011714802, + -0.022523986, + -0.025913581, + -0.017918278, + 0.021424308, + 0.022420488, + 0.0047415514, + 0.010472813, + 0.0135066295, + -0.0030499885, + 0.012866229, + -0.016003545, + -0.0012161141, + 0.013933564, + 0.0068180016, + -0.005026174, + 0.00945076, + -0.017504282, + 0.023339042, + -0.007950023, + -0.008635704, + 0.010291689, + -0.0005227512, + -0.021825368, + -0.0012581607, + -0.01844871, + 0.035629556, + 0.01687035, + -0.011928269, + 0.015744798, + -0.016702164, + -0.009554259, + 0.0026699528, + 0.0068891575, + 0.035344936, + 0.0009694953, + 0.0055080913, + 0.0076848064, + 0.0074389963, + -0.015563673, + -0.00885564, + 0.009431354, + 0.029445488, + -0.015550736, + -0.0043598986, + -0.0110355895, + 0.020764502, + 0.03032523, + -0.01454162, + 0.002259191, + 0.0120252995, + -0.01137843, + 0.015162615, + 0.020001197, + -0.0037033265, + -0.01741372, + 0.0044601634, + -0.03037698, + 0.00420465, + -0.026379328, + -0.011714802, + -0.00026663142, + -0.03423232, + 0.0016737741, + 0.010265815, + 0.024891527, + 0.009515447, + 0.0052331723, + 0.0021136452, + 0.028902117, + -0.014114686, + -0.0052752187, + 0.0033895948, + 0.01068628, + 0.016753914, + -0.016495166, + 0.00413026, + -0.0009694953, + -0.041037384, + 0.017517218, + 0.010311096, + -0.033119705, + -0.0031890653, + 0.022730986, + -0.0038941528, + 0.004773895, + -0.016016481, + -0.0038197627, + 0.002102325, + 0.0012056025, + -0.012866229, + 0.0041884785, + -0.0056924494, + -0.017995901, + 0.015175552, + 0.009683632, + -0.0060126497, + 0.00791768, + 0.0048903315, + -0.010252877, + 0.012284047, + -0.01513674, + 0.0017708045, + 0.0016066615, + 0.018021777, + -0.0014675845, + -0.015990607, + 0.011100276, + -0.004366367, + -0.008364019, + -0.0014643503, + 0.009192012, + 0.008124677, + 0.0036774515, + 0.0144898705, + -0.0039847144, + 0.019651888, + -0.03260221, + -0.0073743095, + -0.014231123, + -0.034542818, + -0.02641814, + -0.020337569, + -0.02547371, + 0.007633057, + -0.010666873, + -0.028125875, + 0.0021815666, + -0.005795948, + 0.008668047, + -0.018384025, + 0.0053690146, + -0.0022478707, + 0.008900921, + -0.0019729512, + -0.004476335, + 0.026094705, + 0.0038068255, + -0.0029092943, + -0.0078077116, + 0.0048968, + 0.006239054, + -0.017271409, + 0.0033863604, + -0.0015597634, + -0.008739203, + -0.018733334, + 0.018319337, + 0.012109392, + 0.011009715, + -0.008972077, + -0.020686878, + 0.00727081, + 0.004579834, + 0.022562798, + 0.02696151, + 0.032886833, + -0.012723918, + -0.027686004, + -0.02286036, + -0.020466942, + 0.014140561, + -0.021657182, + -0.007801243, + 0.030635728, + 0.009166137, + -0.008829765, + -0.031386096, + -0.002327112, + -0.004269337, + 0.0055274977, + 0.014231123, + -0.00022559565, + -0.011274931, + 0.004026761, + 0.016728038, + -0.007044406, + 0.0021055595, + -0.005391655, + -0.011785957, + 0.00027896237, + 0.008913858, + 0.001550869, + -0.0038003568, + -0.014722744, + -0.013338444, + -0.016508102, + -0.0012403717, + -0.007341966, + -0.02156662, + -0.021087937, + 0.024904465, + 0.00939901, + -0.015990607, + 0.0026521639, + -0.040778637, + -0.020285819, + -0.0004916206, + -0.0066110035, + 0.005158782, + -0.030040607, + -0.0050358768, + 0.0011554701, + -0.001466776, + -0.018293463, + -0.022562798, + 0.003690389, + 0.023623664, + 0.012698043, + 0.2370129, + 0.008454581, + 0.0027119992, + 0.04199475, + -0.008875046, + 0.014205248, + 0.027039135, + 0.0049291435, + 0.016443416, + 0.023015607, + -0.02750488, + 0.0011109979, + 0.009386073, + 0.010938559, + -0.011850644, + -0.014554557, + -0.01811234, + -0.015304926, + 0.01310557, + 0.0023109403, + 0.008021179, + 0.000092381015, + 0.0040041204, + -0.021256123, + 0.015304926, + 0.021993553, + -0.0022915343, + -0.001701266, + 0.019328453, + 0.020259945, + 0.005411061, + -0.020945625, + -0.008286395, + -0.00024257596, + -0.004456929, + -0.0085710175, + -0.0023869474, + -0.0026521639, + 0.0222523, + 0.024813903, + -0.0040688077, + -0.0144769335, + -0.020997375, + 0.014127624, + -0.006552785, + -0.0051070326, + -0.019858886, + -0.012782136, + 0.01687035, + 0.0072449353, + -0.017944153, + -0.0072772787, + 0.02324848, + 0.023274355, + -0.00004644319, + 0.0061711324, + 0.02859162, + -0.018138213, + 0.00640724, + 0.00865511, + -0.006119383, + 0.035267312, + -0.020945625, + 0.023636602, + 0.010996777, + -0.008344613, + -0.002513087, + -0.00048515192, + 0.024425782, + -0.012070579, + 0.006300506, + -0.0031421673, + -0.0031648078, + 0.015964733, + 0.01760778, + 0.007937086, + 0.026832135, + 0.010957965, + 0.0095736645, + 0.002344901, + -0.010977371, + -0.0075554326, + -0.004421351, + 0.028384622, + 0.00058056513, + -0.017180847, + -0.0062455223, + 0.008150552, + 0.029419612, + 0.009631883, + 0.00390709, + 0.0017643358, + 0.0052008284, + 0.017193785, + 0.015317864, + 0.022278177, + 0.008422238, + 0.00885564, + -0.018992081, + -0.0023060888, + -0.029109115, + -0.0115207415, + 0.01879802, + 0.002307706, + -0.02696151, + 0.011003246, + 0.004211119, + -0.021760682, + 0.029238489, + 0.0044860383, + 0.004026761, + -0.009192012, + 0.008784484, + 0.0013325507, + 0.0059447284, + -0.0029303175, + 0.005158782, + -0.031618968, + -0.017245533, + -0.0063231466, + -0.008525737, + -0.020738628, + -0.010841528, + -0.0013163789, + -0.008234645, + -0.025486648, + -0.01562836, + 0.013674815, + 0.0073290286, + -0.03780304, + 0.0065107387, + -0.012892104, + 0.024451656, + -0.0026861245, + -0.0017109691, + -0.0021314342, + 0.013687753, + -0.0080858655, + 0.016857412, + -0.012601012, + 0.008519268, + -0.008131146, + 0.016546914, + -0.0010738029, + 0.0052267034, + -0.011876519, + 0.0044439915, + -0.008480456, + -0.014451059, + -0.027530754, + -0.01795709, + -0.006219648, + 0.0018662177, + -0.021152625, + 0.026094705, + -0.012070579, + -0.00045765997, + 0.0020667473, + 0.028436372, + 0.01370069, + -0.009463697, + 0.0063393186, + 0.013817127, + -0.0021087937, + -0.007503683, + 0.0025858597, + -0.16487403, + 0.0057571363, + 0.044219982, + -0.03314558, + -0.022045303, + 0.00796296, + 0.0095801335, + 0.023558978, + -0.014735681, + 0.039640147, + 0.00035961886, + 0.011132619, + -0.04572072, + -0.0026020315, + -0.010847997, + 0.0036095304, + -0.005391655, + 0.019250829, + -0.011578959, + 0.006921501, + 0.011443117, + -0.018616896, + 0.007037937, + 0.014127624, + -0.0037712476, + -0.019431952, + -0.02305442, + 0.021644244, + 0.01038872, + -0.02300267, + -0.009489572, + -0.0003606296, + 0.00051547395, + 0.006400771, + 0.009813006, + 0.0034445787, + 0.003968543, + 0.0026295234, + -0.013868877, + 0.00059754547, + -0.0077688997, + 0.010802716, + 0.017827716, + 0.03348195, + -0.0062778657, + 0.020492818, + 0.011986487, + 0.0009039998, + -0.01221936, + -0.008933264, + 0.009360198, + -0.025137339, + -0.0054045925, + -0.002624672, + 0.005540435, + 0.02067394, + 0.017103223, + 0.01953545, + 0.0009573665, + -0.000321211, + -0.008247583, + -0.03834641, + -0.011766551, + -0.0025454303, + 0.012406952, + 0.009664226, + 0.015887108, + -0.0031551046, + -0.017387845, + 0.008985014, + -0.00221391, + -0.02088094, + -0.0061226175, + -0.019781262, + 0.004903269, + 0.011093807, + 0.0030790975, + -0.026094705, + -0.011934738, + -0.01009116, + -0.002120114, + 0.050171178, + -0.017646592, + 0.0125233885, + -0.013674815, + 0.01592592, + 0.00041803924, + 0.004560428, + -0.027427256, + 0.0015678493, + 0.029109115, + -0.010052348, + 0.00846105, + -0.02853987, + 0.010744498, + 0.0043501956, + 0.0054498734, + -0.00571509, + 0.0004378496, + 0.0018079996, + -0.013674815, + 0.010097628, + -0.018862708, + 0.021605432, + 0.032860957, + -0.00930198, + -0.016339917, + 0.018319337, + 0.03749254, + -0.005210532, + -0.022174677, + 0.010699217, + 0.009819475, + 0.020014133, + 0.016184669, + -0.005857401, + 0.014877993, + -0.0061452575, + 0.024050599, + 0.029471362, + 0.04230525, + -0.020518692, + -0.015473112, + 0.016314043, + 0.0071802484, + -0.016158793, + -0.08569723, + 0.003531906, + -0.0037033265, + 0.021346685, + 0.0077106813, + 0.028798617, + 0.021631308, + 0.035267312, + 0.00687622, + 0.01518849, + -0.012232297, + -0.011669521, + -0.01608117, + 0.009754788, + 0.0008522502, + -0.011391367, + 0.01083506, + -0.032576334, + -0.04574659, + 0.016145855, + 0.000981624, + -0.0030241136, + 0.012801542, + -0.0077300873, + 0.006365193, + -0.037673663, + -0.038605157, + 0.0110355895, + 0.0035157343, + 0.0034154695, + 0.02349429, + -0.027039135, + -0.016986785, + -0.013312569, + -0.021708932, + -0.0149814915, + -0.021281999, + -0.019263767, + 0.011941206, + -0.03961427, + -0.008991483, + 0.018306399, + 0.0168186, + -0.015563673, + 0.015162615, + -0.0058379946, + -0.016197605, + 0.012549263, + -0.009386073, + -0.022627486, + 0.012665699, + 0.0045054443, + -0.008680985, + -0.023416666, + 0.026599264, + -0.011734208, + 0.008564549, + 0.030144107, + -0.013687753, + 0.00895267, + -0.0022656594, + 0.028617496, + -0.0004867691, + 0.020945625, + 0.0050100023, + -0.026482826, + -0.025680708, + -0.0009444291, + 0.009800069, + -0.037259668, + -0.036198802, + -0.003531906, + -0.0029384035, + -0.013894751, + -0.028902117, + -0.008182895, + -0.013648941, + 0.016896224, + -0.0016333448, + -0.0054983883, + -0.017530156, + -0.022562798, + 0.0057991827, + 0.006064399, + -0.001644665, + 0.03555193, + -0.031748343, + -0.018772146, + 0.0024144393, + -0.0015686579, + -0.0060417587, + 0.019134391, + 0.013124976, + -0.016249355, + -0.025098527, + 0.018371087, + -0.0025001497, + 0.014670994, + 0.02734963, + -0.01890152, + -0.022433424, + 0.00079686206, + -0.05387127, + 0.019315515, + -0.005165251, + -0.013959438, + -0.013429006, + -0.0043437267, + 0.005805651, + -0.0063037407, + -0.0067597837, + 0.007193186, + -0.008351082, + 0.017866528, + -0.010343439, + 0.002391799, + -0.0044957413, + 0.0054789823, + 0.009036764, + 0.017504282, + -0.0047577233, + -0.00801471, + -0.015537799, + -0.0018338743, + 0.017672468, + 0.017737154, + -0.029367864, + 0.004773895, + -0.008842702, + 0.001822554, + -0.022394612, + -0.01370069, + 0.03819116, + -0.036923297, + 0.0043404927, + 0.04947256, + -0.010653936, + -0.039950643, + -0.029859483, + 0.030092357, + 0.03423232, + -0.040287014, + -0.00791768, + -0.025848895, + 0.011456054, + -0.024593968, + 0.007982367, + 0.031644844, + -0.015641298, + 0.006921501, + 0.010673342, + 0.0007115562, + 0.022523986, + 0.016883288, + 0.0011045292, + 0.0010754201, + -0.010265815, + -0.025797145, + 0.02354604, + -0.016055295, + 0.029290238, + -0.025745396, + 0.011798895, + 0.0055727786, + 0.013312569, + 0.008079397, + 0.020686878, + -0.011158494, + 0.024865653, + 0.0037680133, + -0.0049905963, + -0.014774493, + 0.005753902, + 0.010446938, + 0.026780386, + 0.016805662, + 0.020363443, + 0.002352987, + 0.023468416, + 0.0075101517, + -0.016404605, + 0.018138213, + 0.019845948, + -0.0027152337, + -0.023313167, + 0.014037062, + 0.035836555, + 0.0002749194, + -0.036172926, + 0.017750092, + 0.010304627, + 0.0036030617, + -0.017504282, + 0.0056762774, + 0.008215239, + 0.004615412, + 0.008351082, + 0.0041076196, + -0.00472538, + 0.01454162, + -0.0036483426, + 0.021100875, + -0.015343738, + -0.022769798, + 0.0066821594, + -0.02552546, + -0.012969729, + 0.005346374, + -0.0050035333, + -0.017970027, + -0.0076395255, + 0.003402532, + 0.0042919773, + 0.0011012949, + 0.004139963, + 0.007658932, + 0.004589537, + -0.006219648, + -0.028953867, + -0.023804788, + -0.022472236, + 0.015615423, + 0.0015557205, + 0.008972077, + -0.005905916, + 0.001896944, + 0.0063748965, + 0.01058278, + 0.018189963, + -0.011197306, + 0.030532228, + 0.02582302, + 0.010479282, + 0.0062455223, + -0.0009436205, + -0.0067015653, + 0.001402089, + -0.022718048, + 0.0034898594, + 0.011747145, + -0.01276273, + 0.06810239, + 0.0030338168, + -0.022601612, + 0.03487919, + -0.013726565, + 0.033430204, + 0.008441644, + 0.009528384, + -0.022032365, + -0.009780663, + -0.0017999136, + 0.019548388, + 0.011404305, + -0.028850367, + -0.02908324, + -0.019224953, + -0.024852715, + 0.0059382594, + -0.0004519999, + -0.015253177, + 0.018707458, + -0.01725847, + 0.007924148, + 0.015059115, + -0.022187615, + -0.024115285, + 0.0144898705, + -0.0020360209, + 0.0006181644, + 0.0032214087, + 0.021683056, + -0.0045539592, + -0.03293858, + -0.0051070326, + 0.014231123, + -0.015822422, + -0.011675989, + -0.019199079, + -0.008887983, + -0.0038100597, + 0.010828591, + 0.027479006, + -0.010155847, + -0.008499862, + 0.013196132, + -0.014049999, + -0.0034995626, + 0.008661579, + -0.0046024746 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 9, + "total_tokens": 9 + } +} +823 1755 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 621 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003ein sitting room, the color of the lamp beside the desk is purple.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003esitting room\u003c/kv\u003e\n\n\u003ckv key=\"square_feet\"\u003e400\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What color is the lamp in each room?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 930 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:20:07 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 512 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999887 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_279715e3786a4b0886008f730b3540e3 + +{ + "id": "chatcmpl-EREN4hkkIWxccR7iFsY4pnbKn3bmV", + "object": "chat.completion", + "created": 1790158806, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "The lamp beside the desk in the sitting room is purple. There is no information provided about lamps in any other rooms.", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 113, + "completion_tokens": 24, + "total_tokens": 137, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_b95af6e96a" +} diff --git a/vectorstores/dolt/testdata/TestDoltAsRetrieverWithScoreThreshold.httprr b/vectorstores/dolt/testdata/TestDoltAsRetrieverWithScoreThreshold.httprr new file mode 100644 index 000000000..a4fcc4ae3 --- /dev/null +++ b/vectorstores/dolt/testdata/TestDoltAsRetrieverWithScoreThreshold.httprr @@ -0,0 +1,9416 @@ +httprr trace v1 +441 168112 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 245 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["The color of the house is blue.","The color of the car is red.","The color of the desk is orange.","The color of the lamp beside the desk is black.","The color of the chair beside the desk is beige."]}HTTP/2.0 200 OK +Content-Length: 167155 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:21:15 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 163 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6659cb4779-9qscs +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999954 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_53fbbfac246b4955aa754489bc792868 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.0045962376, + 0.00861834, + -0.008126223, + -0.0057255807, + -0.016656235, + 0.023255637, + -0.0021608942, + 0.0004629361, + 0.03417052, + -0.009558408, + -0.021224082, + 0.019343946, + 0.008006349, + -0.017110497, + -0.008088369, + -0.009735065, + 0.019672023, + -0.024353435, + 0.018031636, + -0.0012744544, + -0.03485191, + 0.028063232, + -0.0003330064, + -0.0025457542, + -0.0055268416, + -0.005293402, + 0.01669409, + -0.013539501, + 0.017047405, + 0.007836002, + -0.0042019137, + -0.01500323, + -0.011741384, + -0.009659355, + -0.010170398, + -0.0058580735, + -0.0010071029, + 0.0023943337, + -0.007186156, + 0.000008675122, + 0.01755214, + -0.0024795078, + 0.0055457694, + -0.030965455, + -0.0057445085, + 0.005832837, + 0.0017397564, + 0.0144227855, + -0.022713048, + 0.008290263, + 0.0053501846, + 0.026296662, + -0.0006660128, + -0.03437241, + 0.0062997164, + -0.011110466, + 0.0062050787, + 0.015596293, + 0.0025773, + -0.004785513, + 0.010145161, + -0.02176667, + -0.011899114, + -0.012328138, + -0.029602673, + -0.010511094, + -0.017905453, + -0.010498475, + 0.005618325, + 0.022511154, + 0.019268235, + 0.024782458, + 0.0139180515, + -0.001563888, + 0.012782399, + 0.013451172, + -0.023444913, + -0.012290282, + 0.0012602587, + 0.010908572, + 0.006561547, + -0.004507909, + -0.033287235, + 0.007507924, + 0.029224122, + 0.017791888, + -0.015911752, + 0.014902283, + -0.039899256, + 0.0029921287, + 0.024429144, + 0.041716296, + 0.016845511, + -0.008959035, + -0.009053674, + -0.014183037, + 0.011993751, + 0.029880276, + 0.006914861, + -0.026220951, + -0.00060213235, + 0.011318669, + -0.048025478, + 0.00761518, + -0.03015788, + 0.0017019013, + -0.0023186237, + -0.004255542, + 0.027432315, + -0.029577436, + -0.025337666, + 0.027508024, + 0.024782458, + -0.031520665, + -0.00094085647, + -0.00008300515, + 0.0006277634, + -0.011854949, + -0.0102397995, + 0.01654267, + 0.009911722, + 0.021817144, + 0.014637298, + 0.017640468, + -0.004946397, + 0.005485832, + -0.021968564, + -0.044113785, + -0.005362803, + -0.0021640488, + 0.009413296, + 0.021526922, + 0.015836041, + 0.0018312394, + -0.025640508, + -0.0038643728, + -0.026094768, + 0.028416546, + -0.024656275, + -0.00353945, + 0.009779229, + 0.019558458, + -0.023369202, + -0.0035993871, + 0.019836063, + 0.02861844, + 0.003400648, + -0.0028706768, + -0.0105174035, + -0.030258827, + 0.017779268, + -0.031596374, + 0.0141451815, + 0.020580545, + 0.020984333, + 0.0360128, + -0.008977963, + 0.012662524, + -0.03333771, + 0.013526882, + -0.025716217, + -0.0013304483, + 0.036441825, + -0.006362808, + 0.034321938, + 0.018839212, + 0.017564757, + 0.0049053873, + -0.028366074, + 0.0011963783, + -0.012403848, + 0.035810906, + -0.039571177, + 0.021640487, + 0.007886475, + 0.01523036, + -0.0057034986, + 0.0015607334, + -0.01669409, + -0.0049716337, + -0.041665826, + -0.0055299965, + 0.0111987945, + 0.006681422, + -0.0016798192, + 0.012946437, + 0.016138883, + -0.008353354, + 0.017817125, + 0.0018959086, + 0.021514304, + 0.004731885, + -0.0024479618, + -0.00040891374, + -0.6856312, + -0.017981162, + 0.010132543, + -0.02200642, + 0.02161525, + 0.021526922, + 0.026725687, + 0.0070284265, + -0.01577295, + -0.017211443, + -0.005914856, + -0.0013501645, + -0.010088379, + -0.0015402286, + 0.0032902374, + -0.0035236771, + 0.007829692, + 0.01008207, + 0.0049905614, + 0.005022107, + -0.0075647067, + -0.009324968, + -0.015066322, + 0.001839126, + 0.01577295, + 0.009823393, + 0.014788718, + 0.0016861283, + -0.028896045, + 0.014902283, + -0.015735095, + 0.03470049, + -0.0020094737, + 0.008719287, + 0.03263108, + 0.0047129574, + -0.02114837, + 0.036896084, + 0.021791907, + 0.013829722, + -0.0024952807, + -0.0036151602, + 0.019343946, + -0.00020209092, + -0.010126234, + 0.006255552, + 0.009501625, + -0.010933809, + 0.010334437, + 0.0074069775, + 0.00669404, + -0.009451152, + -0.00892749, + 0.021034807, + 0.021299792, + 0.00046254176, + 0.036492296, + 0.020795057, + -0.010151471, + -0.0066435663, + -0.00815146, + 0.0025268267, + -0.012485867, + -0.021400739, + -0.015129413, + 0.002026824, + -0.027785629, + -0.01608841, + -0.0141451815, + -0.005340721, + -0.00081625016, + 0.017097877, + -0.02294018, + 0.023053743, + 0.0026277734, + -0.0019590005, + 0.03480144, + -0.008877017, + -0.010801316, + 0.013135713, + 0.015343926, + -0.018019019, + -0.012126244, + -0.018813975, + 0.009028437, + -0.015697239, + -0.01885183, + -0.019911772, + 0.004432199, + -0.027104238, + 0.020214614, + -0.0074069775, + -0.014864428, + -0.025135772, + -0.013299751, + 0.009817084, + -0.0067508225, + 0.02015152, + 0.016138883, + -0.021905473, + -0.017577376, + -0.008971654, + 0.0007425116, + 0.010397528, + 0.03210111, + 0.012302901, + -0.004485827, + 0.023508005, + 0.0039022279, + -0.026246188, + 0.02215784, + -0.0056877257, + -0.015066322, + 0.0061956146, + -0.004763431, + -0.02360895, + 0.014940138, + 0.0076404167, + 0.02977933, + -0.013690921, + 0.02016414, + 0.0032586914, + -0.00073304784, + -0.003369102, + 0.0151041765, + 0.0052965567, + -0.010700369, + -0.0050725807, + -0.0048202137, + 0.00042547533, + 0.0031608993, + 0.011671983, + 0.022069512, + 0.009552099, + 0.013186187, + 0.003378566, + 0.00619246, + -0.008612031, + 0.031192586, + -0.007192465, + -0.014637298, + 0.014536351, + -0.01138807, + 0.0065110736, + -0.00946377, + -0.031949688, + -0.037981264, + -0.018978013, + -0.025097918, + 0.01692122, + -0.005851764, + -0.00074448326, + 0.0019858144, + 0.015608911, + -0.01162151, + 0.011224031, + 0.0012571041, + -0.0008667236, + -0.008397519, + 0.013514264, + 0.023419676, + 0.015899133, + -0.0026987516, + 0.006580475, + -0.01530607, + -0.013842341, + -0.018372333, + 0.013413317, + -0.01261205, + -0.022031657, + 0.007810765, + -0.004078885, + -0.013211423, + -0.016214592, + -0.01838495, + 0.006977953, + -0.03333771, + -0.033135813, + -0.004583619, + -0.012996911, + 0.01806949, + 0.015470109, + -0.004763431, + -0.0027397615, + 0.016530052, + 0.0074889967, + 0.037829842, + 0.032429185, + 0.0043060156, + 0.0071483008, + -0.0014771367, + 0.0144480225, + 0.0012768203, + 0.022183077, + 0.011640437, + -0.009375442, + -0.00077997235, + 0.009154621, + -0.004138822, + 0.014889665, + 0.02476984, + 0.0024905489, + 0.013678302, + -0.020366034, + -0.0027413387, + -0.042902425, + 0.020138903, + 0.002561527, + -0.001892754, + 0.005946402, + -0.019356564, + -0.02208213, + -0.01660576, + -0.013375462, + 0.009665663, + -0.012018988, + -0.005662489, + 0.006422745, + 0.009552099, + -0.006971644, + 0.006031576, + 0.00011908577, + 0.029022228, + -0.00438488, + -0.014460641, + -0.012239809, + 0.0004830466, + 0.011160939, + -0.014864428, + -0.010132543, + -0.021198845, + 0.0073123397, + -0.008107296, + 0.009507935, + -0.0028690996, + 0.0105174035, + 0.018296622, + -0.020252468, + 0.0013951174, + -0.0013170413, + 0.019179907, + 0.026296662, + 0.0017381791, + -0.0076845814, + 0.021817144, + -0.0049116965, + 0.010858099, + -0.00034877934, + -0.020504834, + 0.014864428, + -0.007753982, + -0.0049337787, + -0.014889665, + -0.0005788673, + 0.013375462, + -0.01953322, + 0.02685187, + -0.0056025516, + 0.026145242, + 0.017741414, + 0.03321152, + 0.0060662767, + -0.0007535527, + -0.007817074, + 0.00984232, + -0.0016048977, + -0.020631019, + -0.008283953, + -0.005794982, + -0.025968585, + -0.006100977, + -0.009482698, + 0.029224122, + -0.0015694086, + 0.0007488208, + -0.007331267, + 0.0021593168, + -0.0016656235, + 0.012170408, + -0.009880176, + -0.0078486195, + -0.023381822, + 0.0052460833, + 0.012599433, + -0.000050769184, + -0.009438533, + -0.0303093, + 0.02100957, + -0.015507964, + 0.012971674, + 0.026372373, + 0.0016672008, + 0.0063501894, + -0.008567867, + -0.00488646, + -0.02839131, + 0.0025362903, + -0.0027902348, + 0.015722476, + -0.017060023, + 0.008826543, + -0.0193818, + -0.007974803, + -0.0010165666, + 0.008069442, + 0.022296643, + 0.00885178, + 0.0149275195, + -0.012403848, + -0.022801377, + -0.029501725, + -0.0076277987, + 0.008006349, + 0.009104147, + -0.015293452, + -0.0052681654, + -0.025489086, + -0.02476984, + 0.024429144, + 0.013287133, + -0.00066522416, + -0.0055489237, + -0.01276978, + -0.0008895944, + 0.085602954, + -0.018612081, + 0.0021041115, + -0.001769725, + 0.023331348, + -0.017425954, + -0.016201975, + 0.0061829966, + -0.008347045, + 0.026448082, + 0.011413307, + -0.002197172, + 0.0069211703, + 0.012492176, + 0.00043217881, + -0.0014211428, + 0.024164159, + -0.0116152, + 0.012340756, + -0.019507984, + -0.026725687, + 0.0029495417, + 0.014725626, + 0.007829692, + -0.0040410296, + 0.008990581, + 0.012795017, + 0.0006581263, + 0.021413356, + -0.009627809, + -0.004861223, + 0.013981143, + -0.002235027, + -0.019457512, + -0.00091246516, + -0.020138903, + -0.03439765, + -0.007400668, + 0.01238492, + -0.026220951, + 0.029426016, + 0.012151481, + 0.008984272, + -0.009571026, + 0.002984242, + 0.012006369, + -0.0014637298, + 0.0412368, + -0.013022147, + -0.010183017, + 0.030889746, + -0.017123114, + 0.0014353384, + 0.00438488, + 0.013148331, + 0.015810804, + 0.005933784, + 0.005523687, + 0.01755214, + -0.029804567, + -0.0149275195, + -0.025842402, + -0.015899133, + 0.002908532, + -0.002946387, + -0.03886455, + -0.015091559, + -0.00082413666, + -0.022220932, + -0.015318689, + 0.025993822, + -0.011299741, + -0.018359713, + 0.01515465, + 0.024403907, + 0.022952797, + 0.002925882, + -0.018965395, + -0.019634169, + 0.02016414, + -0.012996911, + -0.0021246164, + 0.015041085, + 0.008839161, + -0.0041230493, + -0.0027350294, + 0.023318728, + -0.027255658, + -0.00792433, + 0.022914942, + 0.004823368, + 0.0019558459, + 0.030359775, + 0.009451152, + -0.008984272, + 0.0043817256, + -0.001984237, + 0.009116765, + -0.01669409, + 0.0024448072, + 0.010933809, + -0.031066403, + -0.013577355, + -0.004548919, + -0.0061041317, + 0.0025063218, + 0.010302891, + -0.0005694035, + -0.04138822, + 0.005302866, + 0.016807655, + -0.017135734, + 0.000028194148, + -0.030208353, + 0.003277619, + 0.023861319, + -0.019331327, + 0.017577376, + 0.0023659426, + -0.03538188, + 0.027205184, + -0.036366113, + 0.025123155, + 0.010763461, + -0.007356504, + 0.004744503, + 0.008895944, + -0.0059211655, + -0.016164118, + 0.0039274646, + 0.0022097903, + 0.00082255935, + -0.022145221, + -0.012946437, + -0.01969726, + -0.013047384, + 0.019444892, + 0.0047728946, + 0.00004029496, + -0.011255577, + -0.0111987945, + 0.011911732, + 0.0030883437, + -0.0017634158, + -0.024731986, + -0.016416486, + 0.00276973, + -0.0144480225, + -0.013552119, + 0.022750903, + 0.016731946, + -0.0076593445, + -0.001903795, + 0.022107366, + 0.006839151, + -0.009873867, + -0.017981162, + -0.004100967, + 0.02161525, + 0.029602673, + 0.006681422, + -0.00030402362, + 0.02176667, + -0.009552099, + -0.016290303, + -0.011968515, + 0.0075836345, + -0.0053911945, + -0.021425975, + 0.01962155, + 0.01631554, + 0.027861338, + 0.015457491, + 0.022271406, + 0.0056372522, + 0.015962224, + 0.0049653244, + -0.0027239884, + -0.015205123, + -0.037527002, + -0.01808211, + 0.0024243025, + -0.019672023, + 0.00423346, + 0.021943329, + -0.0035552229, + 0.010883335, + 0.01953322, + 0.0077792187, + 0.001205842, + 0.02439129, + -0.013665684, + 0.042347215, + -0.0028596357, + -0.0072807935, + -0.0058044456, + -0.008914871, + -0.011495326, + 0.008952727, + 0.0023359738, + 0.018498516, + 0.020366034, + -0.021943329, + -0.008208243, + 0.0033943388, + 0.019583695, + -0.0014006379, + -0.0057413536, + 0.005302866, + -0.012037915, + -0.018675173, + -0.018801356, + -0.012719307, + -0.043381922, + 0.003608851, + 0.010788698, + -0.028643677, + 0.022435443, + -0.005239774, + -0.020580545, + -0.008895944, + -0.0040284116, + 0.011829712, + -0.0040599573, + 0.023735136, + 0.0051829913, + -0.02801276, + -0.0150284665, + 0.011047374, + -0.0146499155, + -0.01515465, + 0.010832862, + 0.0036624789, + -0.012700379, + -0.0034038026, + 0.0110978475, + 0.006801296, + 0.012479558, + -0.011690911, + -0.009173548, + 0.0035205225, + 0.017716177, + -0.017955925, + 0.0074637597, + -0.008580484, + 0.025728837, + -0.0068265325, + -0.021741435, + 0.0051672184, + -0.011123084, + -0.015255597, + -0.009564717, + -0.025817165, + 0.012252428, + 0.004848605, + -0.008119915, + 0.0035899235, + 0.0107950065, + -0.012933819, + -0.0073817405, + -0.009104147, + 0.047066484, + 0.0040820395, + 0.012334446, + 0.015533201, + 0.026347136, + 0.0041640587, + -0.011608891, + 0.010353364, + 0.026220951, + -0.0010496898, + 0.0015701972, + -0.0071735377, + 0.05130625, + 0.021590013, + -0.009741374, + -0.005186146, + -0.014952756, + -0.02215784, + -0.013766631, + 0.0145994425, + -0.00087382144, + -0.015419636, + -0.0034101119, + -0.027861338, + -0.010277654, + -0.027810866, + -0.01300953, + 0.010776079, + -0.0031198894, + -0.016353395, + -0.013678302, + -0.021993801, + 0.027987523, + 0.02099695, + 0.00009715151, + -0.005785518, + 0.010050524, + -0.025211483, + 0.018183056, + -0.023104217, + 0.022485917, + -0.013375462, + 0.008447992, + 0.011791857, + -0.018473279, + 0.010599422, + -0.00042271506, + -0.0283156, + -0.04555228, + 0.009804466, + -0.009198785, + 0.012391229, + -0.0063217985, + -0.018612081, + 0.010750842, + 0.009110456, + -0.015444873, + -0.021791907, + 0.010536331, + -0.0060284217, + -0.0019022177, + 0.021943329, + -0.0140947085, + -0.0032050635, + 0.019041106, + -0.016820274, + -0.00033596382, + -0.0263219, + -0.012795017, + 0.016037935, + 0.025640508, + 0.000056092555, + -0.021918092, + 0.000246058, + -0.015356544, + -0.017905453, + 0.0051262085, + -0.005555233, + 0.0014960644, + 0.03591185, + 0.025186246, + -0.003962165, + 0.0054448224, + -0.02677616, + -0.009501625, + -0.021451212, + -0.021261936, + -0.016227212, + -0.027659444, + 0.00777291, + 0.016832892, + -0.0067318953, + -0.019861298, + 0.00078825315, + 0.0122335, + -0.0035741504, + -0.018498516, + 0.011413307, + 0.015659384, + 0.016668854, + -0.0054826774, + -0.0046277833, + 0.02161525, + -0.0016009544, + 0.005952711, + -0.0057508177, + 0.003839136, + 0.0020394425, + -0.01261836, + 0.021123135, + 0.012056843, + 0.0065741655, + -0.019369183, + 0.009135692, + 0.008416446, + 0.0052366196, + 0.012403848, + -0.008485847, + 0.010990592, + -0.008365973, + 0.012933819, + 0.008372282, + 0.0073438855, + 0.007671963, + -0.008290263, + -0.01823353, + -0.0128518, + 0.0014605751, + -0.011356524, + -0.00039294362, + 0.020731965, + 0.00021451213, + -0.022675192, + -0.0139937615, + -0.01323666, + -0.025198866, + -0.016176738, + 0.0065741655, + 0.001552847, + -0.0047918223, + 0.011571036, + 0.0023817155, + 0.011854949, + -0.0071987743, + 0.002176667, + -0.0137161575, + 0.00022614466, + -0.027533261, + -0.01769094, + 0.002523672, + -0.02670045, + -0.022637337, + -0.024782458, + 0.00004091109, + -0.0012839182, + -0.004324943, + -0.028567966, + 0.027205184, + 0.010372292, + -0.0108707175, + 0.0072303205, + -0.043104317, + -0.015091559, + 0.009571026, + -0.005063117, + -0.008719287, + -0.016290303, + 0.010687751, + 0.0033943388, + -0.0044353534, + -0.0057665906, + 0.010151471, + 0.015836041, + 0.0056246337, + 0.04063112, + 0.22591911, + -0.0003475964, + -0.00011977584, + 0.039217863, + 0.016984312, + 0.021564778, + 0.0144732585, + 0.017034786, + 0.00296216, + 0.015205123, + -0.0037634259, + -0.0050315713, + -0.013438554, + 0.014372312, + 0.00046372472, + -0.035129514, + -0.030334538, + -0.00861834, + -0.0063186437, + 0.007501615, + -0.019608932, + -0.026044294, + -0.0071419915, + -0.008990581, + 0.0029590053, + 0.006555238, + -0.01815782, + 0.014283983, + 0.024214633, + -0.0010796584, + -0.0018848676, + -0.035482828, + 0.010731915, + -0.003416421, + -0.007015808, + -0.0043407157, + 0.005501605, + -0.020883385, + 0.025602652, + 0.02685187, + 0.00040043576, + -0.0035615321, + -0.024467, + 0.0043407157, + -0.013653065, + 0.017148351, + -0.0059211655, + -0.00569088, + 0.008119915, + 0.008397519, + -0.024000121, + -0.021400739, + 0.009375442, + 0.047344085, + -0.0052271555, + 0.010927499, + 0.015760332, + -0.0021514304, + 0.017160969, + -0.0044195806, + -0.027937049, + 0.037880316, + -0.020921241, + 0.028138943, + -0.0010110461, + -0.002069411, + -0.015268216, + 0.0010930655, + 0.00853632, + -0.015596293, + 0.01538178, + 0.010012669, + -0.0012878614, + -0.007009499, + -0.0059747933, + -0.014990612, + 0.031142112, + 0.00626817, + 0.030914983, + 0.013690921, + -0.02393703, + 0.03000646, + -0.022183077, + -0.0011695642, + 0.0112745045, + -0.04010115, + 0.012119935, + -0.024517473, + 0.013539501, + 0.0020993797, + 0.011123084, + 0.0071672285, + 0.00037657918, + -0.0039747832, + 0.01984868, + 0.018208293, + 0.0139180515, + 0.027028527, + -0.028643677, + 0.0072240112, + -0.037350345, + -0.029224122, + 0.017905453, + 0.0051293634, + -0.012530032, + 0.008719287, + 0.017148351, + 0.0015694086, + 0.021325028, + -0.008977963, + 0.025754072, + -0.012637287, + 0.0030015924, + 0.000056536166, + 0.016719326, + 0.0001789244, + -0.0056057065, + -0.025060063, + -0.003940083, + 0.0076277987, + -0.020908622, + 0.0043438706, + -0.01515465, + 0.010788698, + 0.014940138, + -0.023280874, + -0.018637318, + 0.0103092, + 0.0010347056, + -0.048429266, + 0.0006498455, + 0.005318639, + 0.039646886, + -0.0034511215, + -0.0142966015, + 0.03437241, + 0.01577295, + -0.0335396, + -0.0112492675, + 0.002411684, + -0.00091246516, + -0.025640508, + -0.0041262037, + -0.016984312, + -0.0012665679, + -0.010094688, + 0.0064732186, + 0.00037993092, + -0.029526962, + -0.017981162, + -0.019949628, + 0.0011963783, + -0.017943308, + -0.011583654, + 0.020366034, + -0.02099695, + -0.019823443, + -0.012586814, + 0.008813924, + 0.029754093, + -0.010176707, + 0.019672023, + 0.022321878, + 0.0039116917, + -0.019571077, + 0.013564737, + -0.16050553, + 0.027280895, + 0.011123084, + 0.005318639, + -0.012479558, + -0.022826614, + 0.006091513, + 0.006485837, + -0.013678302, + 0.024050593, + 0.025261957, + 0.0083849, + -0.016984312, + 0.000029845378, + -0.024277724, + -0.0014053698, + 0.0008194047, + -0.0069211703, + 0.018119965, + 0.013337607, + 0.013148331, + -0.014940138, + 0.015558437, + 0.0014755594, + -0.0068265325, + -0.01007576, + -0.011766621, + 0.030284064, + -0.001716097, + -0.0315459, + -0.0073880497, + 0.0019053724, + 0.0069653345, + 0.0048139044, + 0.014586824, + 0.001315464, + -0.0017350245, + 0.0075647067, + -0.0075647067, + 0.0049337787, + 0.0108959535, + 0.0024369208, + 0.017564757, + 0.013072621, + -0.02730613, + 0.014586824, + 0.02977933, + 0.028870808, + -0.009501625, + -0.012391229, + -0.019104198, + -0.021905473, + -0.006031576, + -0.013653065, + 0.03533141, + 0.02307898, + 0.0048517594, + 0.012176718, + -0.00013919629, + -0.0055836244, + -0.03061214, + -0.009981123, + 0.004608856, + 0.0053281025, + 0.019596312, + -0.009110456, + 0.008574176, + 0.0052839383, + -0.02376037, + 0.012662524, + -0.013337607, + -0.03147019, + -0.013123094, + -0.0034416576, + -0.003501595, + 0.008340736, + -0.017804505, + -0.00015043451, + -0.0049653244, + -0.021211464, + 0.0020189376, + 0.037754133, + -0.031899214, + -0.024681512, + -0.017022168, + 0.020075811, + -0.0057508177, + 0.006504765, + -0.008668813, + -0.009501625, + 0.008725596, + -0.043432396, + -0.0038265176, + -0.024530092, + 0.02116099, + 0.020340797, + 0.017589994, + -0.001494487, + -0.0027192566, + -0.009217712, + 0.005041035, + -0.007671963, + -0.012479558, + 0.0028517493, + 0.036189456, + 0.0139180515, + 0.0036214693, + 0.02715471, + 0.0315459, + 0.022359734, + -0.00892749, + 0.015987461, + 0.012946437, + 0.013123094, + 0.0027933894, + -0.009343895, + 0.018170439, + -0.015444873, + -0.0029369232, + 0.005362803, + 0.048429266, + 0.0051293634, + -0.018448042, + 0.012454322, + 0.00031723347, + 0.0013541077, + -0.094839595, + -0.010649896, + 0.023848701, + 0.01253634, + 0.0032003315, + 0.0055646966, + -0.0070725908, + 0.03447336, + 0.019924391, + 0.018965395, + -0.0041356673, + -0.013539501, + 0.0060820496, + -0.026574265, + 0.010712988, + 0.0063186437, + 0.01115463, + -0.020302942, + -0.032656316, + 0.016706709, + -0.0027192566, + -0.006416436, + -0.013627829, + -0.008826543, + 0.0021482757, + -0.016492197, + -0.04209485, + 0.026498556, + 0.004918006, + 0.013362844, + 0.028694151, + 0.0020410197, + -0.008088369, + -0.0077035087, + -0.0021088433, + -0.0151041765, + 0.0100631425, + -0.008119915, + 0.01947013, + -0.019419655, + -0.0011601005, + -0.02339444, + 0.0017949617, + -0.041943427, + 0.011564727, + 0.00072042947, + -0.01731239, + 0.015583674, + -0.009911722, + -0.000672322, + -0.005375421, + 0.0108454805, + -0.0056593344, + 0.00010163695, + 0.025653126, + -0.01885183, + 0.014258747, + 0.019495366, + -0.046057016, + 0.007993731, + 0.0044385083, + 0.0057034986, + -0.00003728824, + 0.029097939, + -0.005457441, + -0.005653025, + -0.024668893, + -0.005533151, + 0.0073880497, + -0.03384244, + -0.018044256, + 0.033135813, + 0.0011246114, + 0.023684662, + -0.017791888, + -0.006201924, + -0.04461852, + 0.00077129726, + 0.020933859, + -0.02276352, + -0.01130605, + -0.013766631, + 0.007892784, + -0.026372373, + 0.0033375563, + 0.019747734, + 0.007507924, + 0.009817084, + 0.009552099, + 0.00031683914, + 0.018031636, + 0.023899173, + -0.0145742055, + -0.024517473, + -0.007394359, + 0.012012679, + -0.025817165, + 0.004918006, + 0.008132533, + -0.018183056, + -0.022713048, + -0.023142071, + -0.043028608, + 0.01916729, + -0.010914882, + -0.02292756, + 0.008403827, + -0.0144732585, + -0.0050063343, + -0.0140694715, + -0.021842381, + 0.023747753, + 0.0058233733, + 0.026599502, + -0.0030331383, + -0.013564737, + -0.0107445335, + 0.009741374, + -0.0136404475, + -0.0018028482, + 0.009028437, + -0.00016206707, + -0.010731915, + 0.002053638, + 0.011779239, + -0.0017208288, + -0.031066403, + 0.0036403968, + -0.006230315, + 0.010933809, + -0.03793079, + -0.024101067, + 0.006107286, + -0.025325049, + 0.0063501894, + 0.05070057, + -0.021602632, + -0.024214633, + -0.009280804, + 0.007861238, + 0.020782439, + -0.02617048, + -0.034448124, + -0.044139024, + 0.0016577371, + -0.02876986, + 0.0068454603, + 0.012359683, + 0.0009960618, + -0.0006502399, + 0.0073249578, + 0.0064511364, + 0.008365973, + 0.021665724, + -0.0065678563, + -0.008763451, + 0.0039810925, + -0.034220994, + -0.0022287178, + -0.0009810774, + 0.018599462, + -0.005116745, + 0.022410206, + -0.018763501, + 0.0056246337, + 0.0034668944, + 0.026372373, + -0.0043123243, + 0.017943308, + 0.019192526, + -0.0027097927, + -0.04146393, + 0.004533146, + -0.009047364, + 0.038687892, + -0.00041443427, + 0.024744604, + 0.00400002, + 0.014725626, + -0.011091539, + -0.013665684, + 0.030485958, + -0.0018343941, + 0.02407583, + -0.020605782, + 0.024113687, + 0.021287173, + 0.010176707, + -0.023142071, + 0.0015047394, + 0.0017854979, + 0.017438574, + -0.031949688, + 0.0024668893, + 0.013564737, + 0.010555258, + -0.009716137, + 0.004924315, + 0.008656195, + -0.0105931135, + 0.0030788798, + 0.06647352, + -0.011665674, + 0.0014881778, + -0.029552199, + -0.035028566, + -0.02685187, + 0.009451152, + -0.0068517695, + -0.0145742055, + 0.0058454555, + 0.0077981465, + 0.007041045, + -0.0017870752, + -0.0038896094, + 0.021968564, + -0.0077666007, + 0.017968545, + -0.01870041, + -0.011634128, + -0.004290242, + 0.032959156, + -0.010271345, + 0.008277644, + 0.0015938566, + -0.0071356827, + 0.002107266, + 0.0074448325, + 0.01776665, + -0.01130605, + 0.0016261912, + 0.011318669, + 0.011690911, + -0.0019274545, + -0.008492156, + 0.0016766646, + -0.020681491, + -0.0071735377, + 0.00977292, + 0.018776119, + 0.013602592, + 0.0424734, + 0.0062429337, + -0.041337747, + 0.015369163, + -0.00036534097, + 0.016630998, + 0.007930639, + 0.031646848, + 0.015167269, + -0.011287123, + -0.00024802962, + -0.0009692478, + 0.026902344, + 0.0014361271, + -0.03131877, + -0.021325028, + -0.021375502, + 0.026448082, + -0.031268295, + -0.0062366244, + -0.0066120205, + 0.017034786, + 0.022599483, + -0.0034290394, + -0.015457491, + -0.018107347, + 0.012984293, + -0.01770356, + -0.0056120157, + -0.006763441, + 0.006388045, + -0.0030709933, + -0.024668893, + 0.00043967098, + 0.004362798, + 0.0038801457, + -0.009457461, + -0.0043344065, + 0.001630923, + 0.011148321, + 0.002599382, + 0.033438653, + -0.008403827, + -0.006580475, + 0.0074195955, + 0.01123665, + -0.019142052, + -0.013135713, + -0.02147645 + ] + }, + { + "object": "embedding", + "index": 1, + "embedding": [ + 0.00089398306, + -0.00462804, + 0.0042670527, + -0.0047607105, + -0.017598893, + 0.003273567, + -0.024374345, + -0.025522098, + 0.0054086363, + -0.024312638, + -0.018931769, + 0.029347945, + -0.00042616535, + -0.018746648, + -0.011675002, + -0.019425428, + 0.024892684, + -0.012687, + 0.013587926, + -0.008262594, + -0.0074048643, + 0.017352065, + -0.029372627, + 0.011428174, + -0.007238255, + -0.007355498, + 0.02142474, + -0.012582098, + 0.03068082, + -0.008873495, + 0.008237911, + -0.024053467, + -0.0022800812, + -0.018117234, + -0.01122454, + -0.00754062, + 0.004739113, + -0.0063033905, + 0.00008147279, + -0.012150148, + 0.02151113, + -0.0002720902, + 0.001740143, + -0.01875899, + 0.0031362686, + -0.0052574533, + 0.007546791, + 0.010224883, + -0.0011215283, + 0.020894058, + -0.0047175153, + -0.0028323606, + -0.008151521, + -0.032852914, + 0.011496051, + -0.0066952314, + -0.007694888, + 0.033124425, + -0.022732932, + -0.013921144, + 0.0149825085, + 0.0007686403, + -0.00968186, + -0.0025608488, + -0.012384635, + -0.0065162806, + 0.017870406, + 0.0114405155, + -0.005812818, + 0.024756929, + 0.00745423, + -0.00065023964, + 0.013180658, + -0.0019345208, + -0.0083798375, + -0.023029128, + -0.029965017, + 0.003248884, + 0.016586896, + -0.003949261, + 0.010718541, + -0.0034093228, + -0.03127321, + 0.02655878, + 0.024682881, + 0.0031779208, + -0.044676013, + 0.0041528945, + 0.0017771674, + -0.0043842965, + 0.01165649, + 0.03314911, + 0.021992447, + -0.01636475, + -0.0024096663, + 0.0055845017, + 0.020474449, + 0.026237901, + -0.0015565641, + -0.023868345, + 0.01336578, + 0.0058745258, + -0.029718189, + 0.012322928, + -0.03616042, + -0.023596834, + 0.009064788, + 0.006744597, + 0.010132322, + -0.024300296, + -0.021807324, + 0.031075746, + 0.035987638, + -0.03675281, + 0.016846066, + 0.0029403481, + 0.012421659, + -0.009848469, + -0.02673156, + -0.0016167287, + 0.016154945, + 0.032877598, + -0.0011654948, + -0.014143291, + 0.024868002, + 0.0033445302, + -0.011347954, + -0.032359257, + 0.0068001337, + -0.0042824796, + -0.0018357892, + 0.0005187262, + -0.011415832, + 0.016006848, + -0.008972227, + 0.015044216, + -0.02853341, + 0.03872744, + -0.02133835, + -0.033469986, + 0.012150148, + 0.020338694, + -0.02132601, + 0.0056184405, + -0.00847857, + 0.020104205, + 0.012477196, + 0.011767563, + 0.0057233428, + -0.023436395, + 0.028434679, + -0.028829604, + 0.03956666, + 0.009496738, + 0.017512504, + 0.017450796, + 0.0057480256, + -0.01508124, + -0.02981692, + 0.013847096, + -0.00797257, + 0.011162832, + 0.024386685, + -0.0065779877, + 0.014686313, + 0.02365854, + 0.0115947835, + 0.0005488084, + -0.0043380163, + -0.0047144303, + -0.010132322, + 0.050698638, + -0.018536843, + -0.0021767216, + -0.0032612255, + 0.023510443, + 0.015007191, + 0.011551588, + -0.024374345, + -0.010471712, + -0.0039184075, + 0.0011222997, + 0.03386491, + 0.0052481974, + 0.017672943, + 0.013723682, + 0.012847439, + -0.01756187, + -0.0005977885, + -0.012020563, + 0.015179971, + 0.034852225, + 0.01062598, + -0.004362699, + -0.68993586, + -0.02211586, + 0.007546791, + -0.001740143, + 0.013415146, + 0.03386491, + 0.029347945, + 0.0034648594, + -0.016636262, + 0.0011747509, + -0.00736784, + 0.000043002205, + 0.0029372629, + -0.014291388, + 0.007787449, + -0.029347945, + -0.014994849, + 0.009817616, + -0.017500162, + 0.032532036, + -0.0117613925, + -0.019770987, + -0.021498788, + -0.0033291036, + 0.026015757, + 0.025299953, + 0.006991426, + 0.0030745612, + -0.0033167622, + 0.0023587577, + -0.012822757, + -0.0028863542, + -0.0040911874, + -0.008083643, + 0.036283836, + -0.013205341, + -0.01122454, + 0.031075746, + 0.012032905, + 0.031421307, + 0.013995193, + 0.014427143, + -0.00021192567, + -0.026805608, + -0.0029681164, + -0.011113467, + -0.0043318453, + -0.015636604, + 0.016673286, + 0.0029804579, + 0.008614325, + 0.0013591012, + 0.009885494, + 0.02571956, + 0.0050846734, + -0.006068903, + 0.025423367, + 0.015883433, + -0.026435364, + 0.00608433, + -0.0023834407, + 0.011434345, + -0.0010189401, + -0.021548154, + 0.0048039057, + 0.0053839535, + -0.0068803527, + 0.010897492, + 0.009299275, + 0.0042115166, + -0.016006848, + 0.003940005, + -0.010070615, + 0.0067816214, + 0.000030082261, + -0.005371612, + 0.041442554, + 0.012051417, + -0.00924991, + 0.019561183, + 0.018438112, + 0.007392523, + -0.020412741, + -0.008336643, + 0.020671912, + -0.025546782, + -0.033198476, + -0.013958169, + 0.017500162, + -0.010564273, + 0.016241336, + 0.029273896, + -0.021005131, + -0.0051309536, + -0.011094955, + 0.0064484025, + -0.0091511775, + 0.012421659, + 0.0077689365, + -0.0028863542, + 0.0046372963, + -0.030039065, + -0.010317444, + 0.009928688, + 0.019598207, + 0.01884538, + -0.021412399, + 0.002713574, + -0.003427835, + -0.023485761, + 0.028928336, + 0.011045589, + -0.013526218, + 0.03403769, + -0.012921488, + -0.025324635, + 0.015871093, + 0.014710996, + 0.022918055, + -0.04507094, + 0.016031532, + 0.006929719, + 0.00012987437, + 0.0114405155, + -0.0063620126, + -0.022560153, + 0.0029881713, + 0.008077472, + -0.015463824, + -0.029520726, + 0.02742268, + 0.0027922508, + 0.019178597, + 0.007016109, + 0.008645179, + -0.008435374, + 0.016648604, + 0.00063095614, + 0.011687344, + -0.017278016, + -0.017919771, + 0.014945484, + -0.018129576, + 0.008330472, + 0.0024852576, + -0.0066705486, + -0.03401301, + 0.0024405199, + -0.00062671374, + 0.0061151837, + -0.019252647, + -0.008805618, + -0.020585522, + -0.0044922843, + -0.011002394, + 0.0048902957, + -0.0226342, + -0.009712714, + -0.0039369194, + 0.006090501, + 0.021622203, + 0.014661631, + -0.011804587, + 0.0000605984, + -0.0112862475, + -0.011064101, + -0.0070901574, + 0.034062374, + -0.029545408, + -0.014587582, + 0.007923204, + -0.0140692415, + -0.013575585, + -0.008342814, + -0.019203281, + 0.00086235814, + -0.016253676, + -0.024473077, + -0.008540276, + -0.0028385313, + 0.009700372, + -0.005896123, + 0.0033815545, + -0.010348298, + 0.032186475, + 0.002978915, + 0.02571956, + 0.027644826, + -0.013118951, + 0.033815548, + -0.023238933, + -0.013069585, + -0.006615012, + 0.019647572, + -0.0031239272, + 0.00030390796, + -0.008885837, + -0.00033244755, + -0.009527592, + 0.014686313, + 0.01875899, + 0.012551244, + 0.022239275, + -0.020462109, + 0.027274583, + -0.005704831, + 0.008645179, + -0.019166257, + 0.017105237, + 0.034383252, + 0.0016367835, + -0.009033934, + -0.0048810397, + 0.004985942, + 0.007978741, + -0.0023464162, + 0.006892694, + 0.015278703, + 0.0030637626, + -0.019351378, + -0.02621322, + 0.031248527, + 0.03512374, + -0.040010948, + -0.019474793, + -0.010440858, + 0.017364407, + 0.013081927, + 0.0011678088, + -0.017055871, + -0.034210473, + 0.010082956, + 0.0016738079, + 0.0014192656, + -0.0034586887, + -0.00031875627, + 0.013674316, + -0.015315727, + 0.01901816, + -0.0056523797, + 0.015488507, + 0.02870619, + 0.020980448, + -0.018820696, + 0.017290358, + -0.011773734, + 0.022128202, + 0.011002394, + -0.009237568, + 0.022955079, + -0.013242366, + 0.0046403813, + -0.017031187, + -0.005220429, + -0.000036108355, + -0.022239275, + 0.04635445, + -0.0031779208, + 0.012174831, + 0.012785732, + 0.011884807, + 0.0042115166, + -0.00123183, + -0.008151521, + 0.000019440178, + 0.011162832, + -0.019203281, + -0.0034586887, + -0.00033726843, + -0.012748708, + -0.00030545064, + -0.016130263, + -0.0017864235, + -0.030088432, + 0.009077129, + 0.0024220077, + 0.010730882, + -0.003292079, + -0.000076218035, + 0.025065465, + 0.02168391, + -0.0152910445, + 0.017389089, + 0.02981692, + -0.019931426, + -0.027447363, + -0.037394565, + 0.0059855985, + -0.005621526, + 0.004430577, + 0.035025008, + 0.023029128, + 0.0181666, + 0.012896805, + 0.0008515594, + -0.003616042, + 0.019067526, + 0.005991769, + 0.018907087, + -0.014809729, + -0.005828245, + -0.015562556, + -0.032680135, + -0.0056431238, + 0.030433992, + 0.026830291, + 0.029347945, + 0.009811445, + 0.0042886506, + -0.0020286243, + -0.022498446, + -0.020474449, + -0.009749738, + -0.007386352, + -0.011347954, + -0.0018990391, + 0.008768593, + -0.009367153, + 0.024682881, + 0.016673286, + -0.0021921482, + -0.009811445, + 0.0037425417, + -0.004985942, + 0.07557898, + -0.0059269764, + 0.004695918, + 0.0019545755, + 0.007256767, + -0.013032561, + -0.024374345, + -0.02210352, + 0.0014084668, + -0.0022847091, + 0.0007239026, + -0.021943081, + -0.000053849173, + -0.010348298, + 0.0033105914, + -0.0017077468, + 0.0032828231, + -0.014032218, + 0.016006848, + -0.017722309, + -0.015871093, + -0.0027475131, + 0.001075248, + -0.017537186, + -0.0079170335, + -0.0056091845, + 0.017598893, + 0.005741855, + 0.020165913, + -0.020116547, + 0.0181666, + 0.012582098, + -0.015735336, + -0.016920114, + 0.006584158, + -0.013513877, + -0.0025253673, + -0.0037302002, + 0.011212198, + -0.005158722, + 0.015611921, + 0.008015766, + 0.0018728136, + -0.0065162806, + 0.0041004433, + -0.0054456606, + 0.00009458557, + 0.0037147736, + -0.013526218, + -0.02125196, + 0.02544805, + -0.0022245445, + -0.012687, + 0.0042207725, + -0.0026318121, + 0.014636948, + -0.028113801, + 0.0029079518, + -0.02107918, + -0.006584158, + -0.0011770648, + -0.0140692415, + -0.0008330472, + -0.00090709585, + -0.031766865, + -0.010212542, + 0.003119299, + -0.016303042, + -0.0071580354, + 0.00762701, + 0.0003278195, + -0.019573525, + -0.017080553, + 0.025670195, + 0.03435857, + 0.014254363, + 0.0018234478, + -0.017450796, + -0.001894411, + 0.023214249, + -0.003986285, + -0.007083987, + 0.0116071245, + -0.003350701, + -0.0062262565, + 0.006522451, + 0.013180658, + -0.020585522, + -0.012909146, + 0.014994849, + 0.02425093, + -0.0010073701, + 0.01833938, + -0.0068433285, + -0.016130263, + -0.0021042156, + 0.0016228994, + 0.00805279, + -0.01695714, + -0.0067260847, + 0.017981479, + -0.020634888, + -0.016611578, + -0.030656137, + 0.02347342, + -0.009120325, + 0.020499133, + -0.006121354, + -0.01669797, + 0.006436061, + -0.009502909, + -0.0065779877, + 0.0041775773, + -0.018154258, + 0.0032334574, + 0.012699342, + -0.01620431, + 0.024300296, + -0.0026626657, + -0.043096308, + 0.009428861, + -0.032063063, + 0.032186475, + 0.027521411, + 0.010150835, + 0.011422003, + -0.019511817, + -0.0061336956, + -0.015031874, + 0.011946514, + 0.009052446, + 0.018104892, + -0.010983882, + -0.010558102, + -0.009897835, + -0.015179971, + 0.01585875, + 0.020165913, + 0.006349671, + -0.010595126, + -0.023818979, + 0.024954392, + 0.02707712, + -0.011335613, + -0.02038806, + -0.014155632, + 0.01482207, + 0.02262186, + -0.027768241, + 0.017068211, + -0.0026333549, + -0.0028431593, + -0.02836063, + 0.0028693848, + 0.02312786, + 0.0020656486, + -0.025818292, + -0.0054610875, + 0.015229337, + 0.024781613, + 0.028409995, + -0.005297563, + 0.017327381, + -0.0096139815, + -0.008453887, + 0.009965713, + 0.0054641725, + 0.01568597, + -0.018438112, + 0.02406581, + 0.027052436, + -0.0038998951, + 0.003214945, + 0.013871779, + -0.0049304054, + 0.021980105, + 0.00013459883, + -0.0038998951, + -0.0005333816, + -0.036826856, + -0.0030622198, + 0.029027067, + -0.012736366, + 0.004146724, + -0.0006857213, + -0.003099244, + -0.0060966713, + -0.0044151503, + 0.005192661, + 0.020807669, + 0.015537873, + -0.019425428, + 0.011730539, + 0.0018758989, + -0.002883269, + -0.012970854, + -0.032013696, + -0.0009680317, + 0.015155288, + -0.0026009586, + 0.03616042, + 0.023152541, + 0.0073740105, + -0.017376747, + -0.0041004433, + 0.02947136, + 0.01490846, + -0.02947136, + 0.022350349, + -0.0045046257, + -0.019758645, + -0.016611578, + -0.020104205, + -0.039640706, + 0.002232258, + 0.005424063, + -0.039023634, + 0.017450796, + -0.01585875, + -0.016241336, + -0.001154696, + 0.01473568, + 0.015389776, + -0.029249214, + 0.022041813, + 0.00642989, + -0.026978388, + -0.021646887, + 0.01800616, + -0.009589299, + -0.0064052073, + 0.016784359, + 0.021042155, + -0.014957826, + -0.0016275274, + -0.007009938, + 0.0102187125, + 0.015722996, + -0.030063748, + -0.0012248879, + 0.012008221, + 0.015500849, + -0.021992447, + 0.0052667097, + 0.0010305103, + 0.006152208, + -0.014538216, + -0.015389776, + 0.0074048643, + -0.013057244, + -0.02742268, + 0.019499475, + -0.02665751, + -0.0020671913, + 0.00874391, + -0.026435364, + 0.008768593, + -0.019511817, + -0.007738083, + -0.004695918, + -0.018672599, + 0.033889595, + 0.014933143, + 0.030113114, + 0.007324645, + -0.011181345, + -0.0059424033, + -0.009996567, + 0.011662661, + 0.028558092, + -0.0115701, + -0.009996567, + -0.015871093, + 0.035000324, + 0.0076516927, + 0.0058004768, + 0.0023541297, + -0.009552275, + -0.026978388, + -0.0007929375, + 0.020128889, + -0.011434345, + -0.024127515, + 0.018462794, + -0.030532723, + -0.0009965713, + -0.029940333, + 0.003582103, + 0.015895775, + -0.0019283501, + -0.019339036, + 0.003788822, + -0.01208844, + 0.0052142586, + 0.0060874154, + -0.009620152, + 0.018277673, + 0.010261907, + -0.024090491, + 0.012316757, + -0.009262251, + 0.036925588, + 0.00950908, + 0.011366466, + 0.020881716, + -0.01824065, + 0.025250586, + -0.00079910824, + -0.01851216, + -0.009157348, + 0.022214592, + -0.007694888, + 0.009453543, + -0.01671031, + 0.0050599906, + 0.01748782, + 0.024756929, + -0.005766538, + 0.00086081546, + 0.012699342, + -0.01669797, + -0.0066890605, + 0.021906056, + -0.013242366, + -0.0043441867, + -0.0088303005, + -0.012736366, + 0.002724373, + 0.0010567359, + -0.018129576, + -0.020857034, + 0.010878979, + -0.0035018837, + -0.02099279, + -0.007164206, + -0.020104205, + -0.01208227, + 0.012612952, + 0.008811789, + 0.0071271816, + 0.006460744, + 0.025818292, + 0.0006012595, + 0.01620431, + -0.029101117, + 0.0069790846, + 0.0077689365, + 0.00668289, + -0.014254363, + -0.016340068, + 0.0008322759, + 0.010274249, + 0.025768926, + -0.03307506, + -0.017709967, + 0.0046897475, + -0.022523127, + 0.0034000669, + -0.0014570613, + 0.011977368, + 0.020215278, + -0.010033591, + -0.011773734, + 0.0033105914, + 0.004720601, + 0.0074665714, + -0.0019345208, + 0.010996223, + -0.0018990391, + -0.002030167, + 0.011675002, + 0.010866638, + -0.017426113, + -0.018919427, + 0.0076516927, + 0.014427143, + 0.033124425, + 0.019005818, + -0.022436738, + 0.033445302, + -0.014883777, + 0.004038736, + 0.017919771, + 0.02870619, + 0.0020224536, + -0.008552618, + -0.02579361, + -0.0069544017, + 0.013982852, + -0.0060781594, + -0.014488851, + 0.0028693848, + 0.0134521695, + -0.013378121, + -0.016858408, + -0.0030884454, + -0.024645856, + -0.017290358, + -0.002540794, + 0.009101812, + -0.025744244, + 0.013686657, + 0.010311273, + -0.0028092202, + -0.00552588, + -0.008669862, + 0.0013459884, + 0.005707916, + -0.0100644445, + -0.0028308178, + -0.0017771674, + -0.008034278, + 0.0014439485, + -0.023954736, + 0.003341445, + 0.017092895, + -0.0143654365, + -0.03751798, + 0.031001698, + -0.00951525, + -0.018549185, + 0.013094268, + -0.020375717, + -0.021622203, + 0.013822413, + -0.0063805245, + -0.0028431593, + -0.010342127, + 0.008435374, + 0.0015149118, + -0.005004454, + -0.02373259, + -0.001538052, + 0.028212532, + -0.006744597, + 0.03147067, + 0.22056621, + 0.002096502, + 0.0037672247, + 0.027101804, + -0.017635917, + 0.033445302, + 0.0062108296, + -0.010249566, + -0.010582785, + 0.012045246, + 0.009194373, + 0.01191566, + -0.028089117, + 0.0032427134, + 0.013217682, + -0.007941716, + -0.012847439, + -0.015957482, + -0.022066494, + -0.028508727, + -0.016451139, + 0.0014177229, + -0.0116071245, + 0.0025917024, + 0.012069928, + -0.000014125164, + 0.0037086029, + 0.025571464, + 0.012921488, + -0.0021366118, + -0.01627836, + -0.00951525, + 0.015821727, + -0.0067137433, + -0.011082613, + -0.003915322, + 0.00057966204, + 0.014957826, + 0.013513877, + 0.023325322, + 0.020597864, + 0.009274593, + 0.015303385, + -0.026805608, + -0.016080897, + 0.006127525, + -0.016870748, + -0.01740143, + 0.0030406222, + 0.0022091179, + -0.02014123, + -0.024287954, + 0.017413773, + 0.04823035, + -0.004223858, + 0.005390124, + 0.027101804, + 0.005760367, + 0.0074912542, + -0.004257797, + -0.022325665, + 0.008731569, + -0.005982513, + 0.011650319, + -0.0016738079, + 0.015266362, + -0.02184435, + 0.01422968, + 0.011958855, + -0.016056214, + 0.02270825, + -0.008935203, + 0.015204654, + -0.0021288984, + 0.0034741154, + -0.0031686649, + 0.0106815165, + -0.004334931, + 0.032063063, + 0.014316071, + -0.0026379828, + 0.008355155, + 0.003230372, + -0.0032365427, + -0.0062509393, + -0.021646887, + 0.0039523463, + 0.011545417, + 0.028311264, + 0.0016861493, + 0.010638322, + -0.005967086, + -0.010576614, + -0.027620142, + 0.008262594, + 0.025966391, + 0.0055752457, + 0.023596834, + 0.009632494, + 0.0021474105, + -0.028138483, + -0.020536156, + 0.010514907, + -0.0007084758, + -0.0067199143, + 0.014044559, + 0.0041960897, + 0.004763796, + 0.020696595, + -0.024399027, + 0.020351036, + -0.024584148, + 0.022300983, + -0.0072135716, + 0.026410682, + -0.0057788794, + 0.005056905, + -0.02433732, + -0.0034864568, + 0.0039523463, + -0.0045601623, + -0.001086818, + 0.00711484, + -0.008645179, + -0.015969824, + -0.021523472, + -0.031914964, + 0.010298932, + -0.0122118555, + -0.020684253, + 0.003264311, + -0.015661288, + 0.04475006, + -0.0021304411, + -0.008441545, + 0.016191969, + -0.0053345873, + -0.01182927, + 0.006007196, + -0.004140553, + 0.01646348, + 0.0009742024, + 0.005680148, + -0.009546104, + -0.013550902, + -0.009194373, + -0.0054209777, + -0.015994506, + -0.043392505, + -0.008170034, + -0.01988206, + -0.010786419, + -0.019598207, + -0.009725055, + 0.012002051, + -0.014994849, + -0.0363332, + 0.0019345208, + 0.0028909824, + 0.030878283, + -0.009737397, + 0.020276986, + 0.013230024, + -0.009996567, + -0.008725398, + -0.018462794, + -0.15560088, + 0.019388402, + 0.0050846734, + -0.007904693, + -0.009836128, + -0.011724368, + 0.018796014, + 0.015019532, + -0.019339036, + 0.03016248, + 0.027546095, + -0.016722651, + -0.03727115, + -0.012489538, + 0.012810415, + -0.00027131886, + -0.0021258132, + 0.023522785, + 0.0035759322, + 0.008355155, + 0.0049211495, + -0.028780239, + 0.020116547, + 0.0011153576, + -0.011366466, + 0.0029372629, + -0.0031810063, + 0.027792923, + -0.015105923, + -0.0181666, + -0.007670205, + -0.014513534, + 0.011428174, + 0.029841602, + -0.0037980783, + -0.00024200793, + -0.023251273, + 0.0045138816, + -0.017981479, + 0.019770987, + -0.015611921, + 0.009021593, + -0.000009364549, + 0.0047853934, + -0.010039762, + 0.031643454, + 0.015797043, + 0.012822757, + -0.0021798068, + -0.013007878, + 0.0061645494, + -0.015624263, + -0.0114528565, + -0.017179284, + 0.046329767, + 0.03240862, + 0.0058251596, + 0.021449422, + 0.011699685, + 0.019203281, + -0.016241336, + -0.0036407248, + 0.018388746, + 0.0021690081, + 0.015611921, + -0.024028784, + 0.018203624, + 0.006676719, + -0.029101117, + 0.015241679, + -0.0034926275, + -0.009033934, + -0.012921488, + -0.021967763, + 0.0016290701, + 0.0055752457, + -0.020659572, + 0.015130606, + -0.006608841, + -0.026879657, + -0.0013668145, + 0.045712695, + -0.0009680317, + -0.018438112, + -0.0076455222, + 0.012748708, + 0.017981479, + -0.008410691, + -0.013155975, + -0.005735684, + 0.00014520476, + -0.043738063, + 0.023325322, + -0.037246466, + 0.016549872, + 0.010872809, + -0.016944798, + -0.0011894063, + -0.0029125798, + -0.0042732237, + -0.0017092895, + -0.0031285551, + -0.024275612, + -0.0019036671, + 0.010126152, + 0.021474106, + 0.017956795, + 0.01954884, + 0.04114636, + 0.025090149, + -0.008935203, + 0.015229337, + 0.013353438, + 0.028039752, + -0.0030344515, + 0.0047761374, + 0.023461077, + -0.0091511775, + -0.0076455222, + 0.01464929, + 0.03914705, + -0.01996845, + 0.010440858, + 0.014513534, + 0.009990396, + -0.020770645, + -0.09379494, + -0.027373314, + 0.0034556033, + 0.0012865951, + 0.007448059, + 0.0217703, + -0.0054364046, + 0.0115947835, + -0.004732942, + 0.014994849, + -0.00685567, + -0.020869376, + -0.017919771, + -0.012785732, + 0.025040783, + 0.0033599571, + 0.024004102, + -0.011724368, + -0.03830783, + 0.010089127, + -0.020178255, + -0.00951525, + -0.021153228, + 0.006152208, + -0.0014161803, + -0.010601297, + -0.04050461, + 0.016636262, + 0.010891321, + 0.0065101096, + -0.0041436385, + 0.010039762, + 0.01594514, + -0.022584835, + -0.014081583, + -0.013834755, + -0.0140569005, + -0.013513877, + 0.011175174, + -0.03418579, + -0.0018033929, + 0.00008282263, + 0.004393553, + -0.027348632, + -0.018055527, + 0.00847857, + -0.0024405199, + 0.020795327, + 0.0017200882, + -0.00968186, + -0.019215623, + 0.017253334, + -0.0030822747, + 0.0034432618, + 0.030656137, + -0.024522442, + 0.02082001, + 0.005535136, + -0.031569403, + 0.011070272, + -0.0015071984, + 0.00924991, + 0.018487478, + 0.02312786, + -0.017500162, + -0.006590329, + -0.016599238, + 0.0123661235, + 0.019647572, + -0.029890968, + -0.009286934, + 0.010095298, + -0.020289328, + 0.004779223, + -0.010514907, + 0.00056539226, + -0.03050804, + -0.015525532, + 0.020894058, + -0.008151521, + -0.009219056, + -0.007898522, + 0.0029295494, + -0.035469297, + -0.018055527, + 0.0250161, + 0.0053438437, + -0.027546095, + -0.0046156985, + -0.005896123, + 0.0012326014, + 0.031692818, + 0.02347342, + -0.033198476, + -0.026706876, + 0.023559809, + 0.000008370244, + 0.017092895, + -0.015463824, + -0.011835441, + -0.00745423, + -0.018610891, + -0.032951646, + 0.0167967, + -0.009743567, + -0.029150482, + 0.0025809037, + -0.008774764, + 0.009398007, + -0.018833037, + -0.008620496, + 0.022288641, + -0.021461764, + 0.0019391488, + 0.0022384287, + -0.009638665, + -0.0344573, + 0.020931082, + -0.00084307464, + 0.007293791, + -0.00736784, + -0.0066890605, + -0.005655465, + 0.012785732, + -0.00823174, + -0.008768593, + -0.010582785, + 0.004507711, + 0.006254025, + 0.02880492, + -0.019215623, + -0.018018503, + 0.027447363, + -0.012909146, + 0.011175174, + 0.02579361, + -0.02056084, + -0.024756929, + 0.0017000334, + 0.01054576, + 0.008281106, + -0.02406581, + -0.00720123, + -0.0317175, + 0.009206714, + -0.009953371, + -0.010101469, + 0.001460918, + -0.023707906, + -0.0044213207, + 0.0022785384, + 0.017524846, + 0.0137483645, + 0.023868345, + -0.028730873, + -0.007318474, + -0.0062509393, + -0.03102638, + 0.0008723856, + 0.0013297902, + -0.006701402, + -0.015821727, + 0.02665751, + -0.0067569385, + 0.001011998, + -0.014846752, + 0.020696595, + -0.0037949928, + -0.009089471, + -0.0039585168, + -0.004276309, + -0.02511483, + -0.017759332, + 0.008348985, + 0.019055184, + 0.0051463805, + 0.021918397, + -0.015537873, + -0.0072197425, + -0.021634545, + -0.009410348, + 0.007269108, + 0.002695062, + -0.006349671, + -0.035000324, + -0.00094334886, + 0.03699964, + 0.019561183, + -0.013847096, + 0.0007624696, + -0.0021875203, + -0.00075398484, + -0.039048318, + 0.007170377, + -0.0018280759, + -0.0008176204, + -0.013958169, + -0.0046588937, + -0.006272537, + -0.008367497, + 0.004810076, + 0.060522422, + 0.009058617, + 0.0031424393, + -0.025398685, + -0.03418579, + -0.0041498095, + 0.015179971, + -0.001009684, + -0.0023063067, + -0.0126746595, + -0.023448735, + 0.019993134, + -0.022905713, + -0.006374354, + 0.020523814, + 0.003119299, + 0.00066836615, + -0.01721631, + -0.01285978, + -0.024300296, + 0.03857934, + -0.008207058, + 0.02700307, + -0.00968186, + 0.016117921, + 0.02887897, + 0.002729001, + 0.0126746595, + -0.010638322, + 0.010144664, + 0.0044953697, + 0.026929023, + 0.0006228571, + 0.0015642776, + -0.0017231735, + -0.036456615, + 0.000027286153, + 0.011644149, + 0.015871093, + -0.0060565616, + 0.044700697, + -0.0012611409, + -0.04072675, + 0.02766951, + -0.0075961566, + -0.0006085873, + 0.024090491, + -0.0053932094, + -0.013575585, + -0.008095984, + 0.0005711773, + 0.01173671, + 0.018055527, + 0.00565855, + -0.025262928, + -0.0045601623, + -0.020782985, + 0.0075035957, + -0.033692133, + -0.0209064, + 0.014081583, + 0.013180658, + 0.015216996, + 0.0062355124, + 0.0067877923, + -0.017500162, + 0.017858064, + -0.0023541297, + 0.006368183, + -0.0011153576, + 0.0039369194, + 0.014587582, + -0.042355824, + -0.013020219, + 0.0028724703, + 0.0005954745, + -0.018018503, + -0.021227278, + 0.008632838, + 0.02031401, + 0.0004061105, + 0.041417874, + -0.016253676, + -0.03203838, + 0.014303729, + -0.0027274583, + -0.018314697, + -0.019092208, + -0.01714226 + ] + }, + { + "object": "embedding", + "index": 2, + "embedding": [ + 0.013982197, + -0.018476475, + -0.005729884, + -0.023803027, + 0.0031706425, + 0.009507126, + -0.044174526, + -0.0043758387, + 0.01791309, + -0.02065319, + 0.010851568, + 0.010934795, + -0.016222933, + 0.019359965, + -0.024520062, + -0.0053873714, + 0.03178005, + -0.0010819557, + 0.010729928, + -0.022381758, + -0.045480553, + 0.0045486954, + -0.020665996, + 0.017695418, + -0.016619865, + 0.0010731529, + 0.015685158, + -0.015185793, + 0.026453499, + 0.010755536, + 0.02481456, + -0.012765798, + 0.017285684, + -0.037337076, + -0.040947862, + 0.017093621, + -0.0021639115, + 0.010064109, + -0.0013468429, + -0.020627582, + 0.008495593, + 0.0055666305, + -0.003665205, + -0.0038092525, + -0.007996229, + 0.013559658, + 0.013918176, + 0.010256172, + -0.008854112, + 0.010320193, + -0.0048271874, + 0.030858146, + -0.0041229557, + -0.0043150187, + 0.01831002, + -0.025621224, + -0.00086028286, + 0.01782346, + -0.020947687, + -0.016709493, + 0.012714581, + -0.0020694805, + 0.005134488, + -0.0097312, + -0.0075928965, + 0.010204955, + -0.0059027406, + -0.004638325, + -0.0038860778, + 0.0057522915, + 0.02932164, + 0.029372858, + 0.00069662905, + 0.0151473805, + 0.0032106556, + 0.013726113, + -0.0042541986, + -0.0020390705, + -0.0048303884, + -0.017503355, + 0.0042894105, + -0.012977066, + -0.026171805, + -0.0008050647, + 0.027196143, + 0.011869502, + -0.002901754, + 0.0011355734, + -0.031088622, + -0.012035958, + -0.005256128, + 0.029424075, + 0.032471478, + -0.0012075971, + -0.013598071, + 0.016427802, + 0.022368954, + 0.020000177, + 0.005729884, + -0.029065557, + 0.0048976103, + 0.014545582, + -0.03836141, + 0.0026472704, + -0.036824908, + -0.015531506, + 0.015557115, + -0.012573734, + 0.027477834, + -0.03211296, + -0.020269064, + 0.0089885555, + 0.011082044, + -0.020461127, + -0.0070487177, + -0.020025784, + 0.017157642, + -0.0084315725, + -0.017861873, + -0.015697962, + 0.014558387, + 0.037337076, + 0.016824732, + -0.023226837, + 0.027247358, + 0.0114149535, + -0.01256093, + -0.013329183, + 0.0060243807, + -0.0002958973, + 0.011037229, + 0.007829774, + 0.01009612, + 0.017554572, + -0.0070295115, + 0.010179347, + -0.009058978, + 0.03157518, + 0.007855383, + -0.029961852, + 0.01523701, + 0.02834852, + -0.0064757294, + -0.0077337427, + -0.004628722, + 0.030550845, + 0.02025626, + -0.016466213, + 0.0021383031, + 0.00906538, + 0.0049616313, + -0.024507258, + 0.019897742, + 0.013546854, + 0.022983557, + 0.0033098883, + -0.011645429, + -0.0093662795, + -0.020115415, + -0.016094891, + -0.0067926333, + 0.0061332164, + 0.028655821, + 0.002460009, + 0.030730104, + 0.019718483, + 0.009711993, + 0.019001449, + 0.0012700176, + 0.0035115546, + -0.001566115, + 0.035877395, + -0.010569875, + 0.014929709, + 0.0047215526, + 0.010544267, + 0.012048761, + 0.003950099, + -0.014251086, + 0.0031978514, + -0.019001449, + -0.0023671784, + 0.013406008, + 0.005432186, + 0.0010955603, + -0.009756808, + 0.010441833, + -0.020858059, + 0.012208814, + -0.013149924, + 0.014609603, + 0.018348433, + 0.0051024775, + -0.01654304, + -0.6912225, + -0.040282045, + 0.0114789745, + -0.0017381716, + 0.0023895856, + 0.03779803, + 0.005845122, + 0.012580137, + 0.0074264416, + -0.026069371, + 0.0063572903, + 0.008860514, + 0.013092305, + -0.0029545715, + 0.007080728, + -0.030192327, + -0.0099872835, + 0.015749179, + -0.0035819777, + 0.014327911, + -0.009071783, + -0.004180575, + -0.028655821, + -0.0047919755, + 0.020153826, + 0.018258803, + 0.010998816, + -0.0097376015, + -0.0056914715, + 0.020691603, + -0.0045358916, + -0.0046095154, + -0.017951502, + -0.020128218, + 0.038335804, + 0.0019030257, + -0.015172989, + 0.008194694, + -0.008041044, + 0.025185881, + -0.0027897172, + 0.015774786, + -0.0015805197, + -0.014686429, + -0.010627494, + -0.005720281, + 0.0057010744, + -0.0014436747, + 0.033214122, + -0.00071423483, + 0.020819645, + 0.003068209, + 0.023700593, + -0.005480202, + 0.0148400795, + -0.0010651503, + 0.030192327, + 0.0151473805, + 0.0063092746, + -0.007195966, + -0.019564833, + 0.012733787, + -0.029577725, + -0.009654375, + -0.012516115, + 0.00413576, + -0.032164175, + -0.017631397, + -0.0015269021, + -0.0019542426, + 0.006078799, + 0.007458452, + -0.011178075, + 0.029859418, + 0.01651743, + 0.0022791494, + 0.026120588, + -0.01788748, + 0.021395834, + 0.012554528, + 0.0018069941, + 0.003918088, + -0.017324096, + -0.009142206, + 0.027759528, + -0.021254988, + -0.029526507, + -0.02131901, + 0.019475203, + -0.011395747, + 0.033956766, + 0.019641658, + 0.00074744574, + -0.0029673756, + -0.006274063, + 0.014635212, + -0.014443149, + 0.0005897939, + 0.0031306294, + -0.0058003073, + 0.014468757, + -0.035288405, + -0.0016821531, + -0.0015725171, + 0.039846703, + 0.0045230873, + -0.026146198, + 0.033470206, + 0.019808114, + -0.017503355, + 0.019180706, + -0.011747863, + -0.0246353, + 0.0062484546, + 0.0101729445, + -0.024750538, + 0.046223197, + 0.009084587, + 0.011594213, + -0.003205854, + 0.009379084, + 0.0065525547, + -0.00052177155, + -0.014622408, + 0.0006009976, + -0.004820785, + 0.00044174524, + -0.016107697, + -0.027913177, + -0.0037356282, + 0.015531506, + -0.009475116, + 0.009968078, + 0.0053809695, + 0.0030345977, + -0.003841263, + 0.005976365, + -0.017938698, + 0.02578768, + -0.029961852, + -0.025736462, + -0.01073633, + -0.013879764, + -0.013585267, + -0.00032290618, + -0.009103794, + -0.03093497, + -0.0077721556, + -0.019231923, + 0.021447051, + -0.033700682, + -0.021639114, + -0.017144836, + 0.0021879193, + -0.006405306, + -0.0040877443, + -0.022817103, + 0.003543565, + -0.0017749836, + 0.02530112, + 0.008457181, + 0.003469941, + -0.01548029, + -0.00013364395, + -0.00906538, + -0.040077176, + -0.009411095, + 0.037337076, + -0.014481561, + -0.022343347, + -0.006213243, + -0.002821728, + 0.0007470456, + -0.023700593, + -0.024891384, + -0.011773471, + -0.025749266, + -0.023303661, + 0.00018245999, + -0.016248543, + 0.014929709, + 0.010268976, + 0.005598641, + -0.01921912, + 0.035288405, + -0.0067862314, + 0.019795308, + 0.03567253, + -0.0020822845, + 0.01937277, + -0.008405964, + -0.0072791935, + -0.007925806, + -0.011382943, + 0.016094891, + -0.0023031572, + -0.0036524008, + 0.006181232, + 0.0006033984, + -0.00037952478, + 0.013559658, + -0.0044174525, + 0.019078273, + -0.02040991, + 0.01970568, + -0.013265162, + 0.01256093, + -0.002040671, + 0.015505899, + 0.03613348, + 0.002983381, + -0.02259943, + 0.0027513045, + 0.0018566104, + 0.017785048, + -0.00103394, + -0.012330454, + 0.0147120375, + -0.010864372, + -0.014699233, + -0.005419382, + 0.0085532125, + 0.043841615, + -0.012746591, + -0.014558387, + -0.013341987, + 0.03925771, + 0.011357334, + 0.0023879851, + -0.008137075, + -0.028758256, + -0.0025624426, + -0.01243929, + 0.00018986243, + -0.016824732, + -0.0049168165, + 0.00927665, + -0.03129349, + 0.014430345, + 0.011440562, + 0.010640299, + 0.0422795, + 0.032036133, + -0.017925894, + 0.022548214, + -0.020448323, + 0.026299847, + 0.015621136, + -0.0206788, + 0.01426389, + -0.018911818, + -0.010185749, + -0.017644202, + 0.015672352, + 0.022676256, + 0.0028569393, + 0.039488185, + 0.003354703, + 0.0270681, + 0.01749055, + -0.016389389, + -0.011101251, + 0.01475045, + -0.017349705, + 0.003841263, + -0.0040557333, + -0.008700461, + 0.021639114, + -0.007311204, + -0.013393204, + -0.004823986, + 0.00094911206, + 0.016978383, + -0.003908485, + 0.0018149968, + -0.022215305, + -0.011626223, + 0.0031338304, + 0.022164088, + 0.010845166, + 0.00095231313, + -0.021088533, + 0.009199825, + 0.012087175, + 0.0089885555, + -0.021178164, + -0.025646832, + 0.021459855, + -0.0062452536, + 0.011216488, + 0.023162816, + 0.023777418, + 0.01402061, + 0.003482745, + -0.0008050647, + -0.02536514, + 0.0047759702, + -0.010134532, + 0.0033995179, + -0.002375181, + -0.00939829, + -0.015685158, + -0.026555931, + 0.0016949573, + 0.0011403749, + 0.027733918, + -0.009468714, + 0.006837448, + -0.02609498, + -0.011421355, + 0.008745275, + -0.0058131116, + 0.0014132647, + 0.0032490683, + -0.019027056, + -0.0012388073, + -0.029065557, + -0.010550669, + 0.024788952, + 0.022061653, + 0.016875949, + -0.01928314, + -0.01158781, + -0.0032490683, + 0.0684257, + 0.0055826358, + -0.009161413, + 0.010717124, + 0.010192151, + -0.016005263, + -0.016261347, + 0.0043182196, + -0.00802824, + -0.0028265293, + 0.0020038588, + 0.0015381058, + 0.007375225, + 0.0064149094, + -0.00031870478, + -0.014724841, + 0.008706863, + 0.00018716154, + 0.030345978, + -0.02162631, + -0.0047855736, + 0.010134532, + -0.009455909, + -0.0024664109, + -0.0061204126, + 0.0077145365, + 0.022189695, + 0.016402192, + 0.015493094, + -0.022176892, + 0.008642842, + 0.020537952, + 0.00650774, + -0.0121639995, + -0.009558342, + -0.01289384, + -0.0032202587, + 0.0047951764, + 0.00696549, + -0.02122938, + 0.015992459, + 0.0040877443, + 0.0065173428, + -0.021050122, + -0.0066197766, + 0.007291998, + -0.011549397, + 0.013457225, + -0.020064197, + 0.0030586056, + 0.022727473, + -0.010192151, + -0.01265056, + -0.007074326, + 0.011703048, + 0.0149041, + -0.012624951, + -0.008758079, + -0.008444376, + -0.018476475, + 0.004571103, + -0.017311292, + -0.008258715, + -0.0031050208, + -0.0093662795, + -0.013482833, + -0.004468669, + 0.004145363, + -0.011363736, + 0.0134700285, + 0.0013700505, + -0.01766981, + -0.013802938, + -0.0013628481, + 0.030909363, + 0.02627424, + 0.006779829, + -0.022868318, + 0.010499452, + 0.046760976, + -0.0020294674, + -0.0076377112, + -0.0142126735, + -0.0020134621, + 0.005483403, + 0.0008874918, + 0.033290945, + -0.013598071, + 0.003409121, + 0.002317562, + 0.031370316, + 0.0057522915, + 0.0072279763, + -0.0017877878, + -0.007381627, + -0.012087175, + 0.022164088, + 0.004820785, + -0.014302302, + -0.01548029, + 0.0033258935, + -0.023495726, + -0.0058131116, + 0.0009211029, + 0.007624907, + 0.01256093, + 0.025006622, + 0.0056914715, + -0.021254988, + 0.014635212, + 0.026812015, + -0.004551897, + 0.0024584082, + -0.008457181, + 0.0029177594, + 0.010550669, + -0.0016565446, + 0.013457225, + 0.0022599432, + -0.029654551, + 0.005044859, + -0.04437939, + 0.02366218, + 0.0010467442, + -0.0033418988, + -0.001234806, + 0.01161982, + -0.021088533, + -0.0038092525, + -0.00027769132, + -0.013943785, + 0.019628854, + -0.028630214, + -0.02658154, + -0.031703223, + -0.018937428, + 0.009948871, + 0.0069270777, + -0.0023975882, + -0.015006534, + -0.025083447, + 0.017785048, + 0.018258803, + -0.00016935568, + -0.031037405, + -0.022240913, + -0.0065813637, + 0.009539137, + 0.0028297305, + 0.012554528, + -0.0041709715, + 0.013572463, + -0.012945056, + 0.02186959, + 0.0034635388, + -0.012381671, + -0.026043763, + -0.017695418, + 0.018975839, + 0.010576277, + 0.033751898, + -0.006017979, + 0.0011875905, + 0.008886122, + -0.006779829, + -0.008169086, + -0.007925806, + -0.0134700285, + -0.019411182, + 0.013495637, + 0.014724841, + 0.0051568956, + 0.017208857, + -0.011818286, + 0.009654375, + 0.0051985094, + -0.0055346196, + -0.0143407155, + -0.028425347, + -0.022855515, + 0.0014692831, + 0.0015725171, + -0.019846525, + -0.012817014, + 0.010000088, + -0.0077145365, + 0.023623768, + 0.012938654, + 0.0025352335, + -0.0076953303, + 0.028220478, + 0.0068694586, + 0.03014111, + -0.009379084, + 0.0013644486, + 0.00019456397, + -0.025698049, + -0.0009363079, + 0.009097391, + 0.0130346855, + 0.013508442, + 0.0062068407, + 0.0019030257, + -0.020781232, + 0.016235739, + 0.017785048, + 0.021754352, + 0.0147760585, + -0.0026392678, + -0.023879852, + -0.023777418, + -0.03516036, + -0.024584083, + -0.032317825, + 0.003297084, + 0.011639027, + -0.0343665, + 0.021293402, + -0.0013892568, + -0.034929886, + 0.014814471, + 0.010140934, + 0.024007894, + -0.011735058, + 0.005621048, + 0.005496207, + -0.011062837, + -0.013329183, + -0.0008022638, + -0.016645472, + -0.004206183, + 0.033956766, + 0.01021776, + -0.003540364, + 0.017592985, + 0.005685069, + 0.00022887526, + 0.025915721, + -0.017708223, + -0.018079545, + 0.0075352774, + 0.015493094, + -0.021754352, + 0.019987373, + -0.014135848, + 0.013713309, + -0.024763342, + -0.029270424, + -0.004990441, + -0.00024067913, + -0.018604517, + 0.003260272, + -0.038207762, + 0.0041293576, + 0.006363692, + -0.007311204, + -0.0075288755, + -0.0048431926, + -0.01766981, + -0.018706951, + -0.006280465, + 0.0054065776, + -0.012016751, + 0.022663452, + 0.0018117958, + 0.0024744135, + -0.031728834, + -0.0028761458, + 0.004574304, + 0.027426617, + -0.0016309363, + -0.006219645, + -0.010749134, + 0.018002719, + 0.0298082, + -0.0058003073, + -0.0054513924, + -0.001447676, + -0.0054673976, + 0.0058195135, + 0.017746635, + -0.012644158, + -0.008930936, + 0.0139053725, + -0.018899014, + 0.005185705, + -0.015697962, + -0.019091077, + -0.006040386, + -0.01450717, + -0.014251086, + -0.0012083973, + 0.011536594, + 0.0027865162, + 0.0067350143, + -0.02503223, + 0.031242272, + 0.011318922, + -0.021843983, + 0.015377856, + -0.0051024775, + 0.009961676, + 0.0026728788, + 0.015224205, + 0.0059443545, + -0.019718483, + 0.03449454, + -0.009980882, + -0.028066829, + -0.015493094, + 0.006411708, + -0.008930936, + -0.0005221717, + 0.0000951813, + 0.002773712, + -0.013239553, + 0.02624863, + -0.0014812871, + -0.0015861215, + -0.0040013157, + -0.0234189, + -0.015313835, + 0.0026312652, + -0.02019224, + -0.0025112256, + 0.014878492, + -0.0018838194, + 0.008783688, + -0.040128395, + -0.0059443545, + -0.03129349, + 0.01037141, + -0.009660777, + -0.012176803, + -0.027247358, + 0.0011203684, + -0.008527604, + -0.004218987, + -0.009270248, + 0.0013148324, + -0.0058835344, + 0.012304846, + -0.007291998, + 0.014443149, + 0.0025832495, + -0.0008882921, + -0.012266433, + -0.0014036616, + -0.015249814, + 0.0041901777, + 0.0045839073, + -0.017132033, + 0.014161456, + -0.031395923, + -0.030345978, + 0.007266389, + -0.010198553, + -0.0011355734, + 0.011325324, + 0.014545582, + 0.03288121, + -0.0029545715, + -0.0016469415, + 0.022420172, + -0.0016901557, + -0.00083867577, + -0.038668714, + -0.018489279, + 0.0032426661, + -0.017785048, + 0.0041293576, + -0.0034763431, + -0.009942469, + -0.022522606, + 0.008277922, + 0.0034219252, + 0.007516071, + -0.0081818905, + 0.0069718924, + 0.011703048, + -0.001241208, + 0.023098795, + 0.032343436, + 0.013700505, + 0.005662662, + -0.010992414, + -0.010441833, + 0.010742732, + 0.036824908, + -0.0007582493, + -0.00068542536, + -0.0034219252, + -0.011805481, + 0.00988485, + -0.010723526, + 0.014238281, + 0.0054481914, + 0.011094848, + 0.005185705, + -0.0090525765, + -0.0049616313, + 0.017388117, + 0.0014820873, + -0.007202368, + -0.018758168, + 0.013764526, + -0.014443149, + -0.008476387, + 0.009142206, + -0.024366412, + -0.0065429513, + -0.021908004, + 0.00915501, + -0.042049024, + -0.0112292925, + -0.023610963, + -0.004641526, + -0.033828724, + 0.024609692, + 0.01718325, + -0.0170296, + -0.006178031, + -0.023982285, + -0.003902083, + -0.0021078931, + -0.013828547, + -0.02326525, + -0.038694322, + -0.03259952, + -0.0058419206, + 0.010544267, + -0.017119229, + -0.0060819997, + -0.0040589347, + 0.008521202, + 0.024379216, + 0.23068064, + 0.010909187, + -0.0053201495, + 0.03257391, + 0.0033611052, + 0.04962912, + 0.022970753, + -0.008540408, + 0.013201141, + 0.020909276, + 0.0037964482, + 0.0025256304, + 0.009379084, + 0.0043150187, + 0.0061428198, + -0.0041773734, + -0.028092436, + -0.0008682855, + -0.015800396, + 0.010019294, + 0.014635212, + -0.017797852, + 0.011280509, + 0.00383166, + 0.034725018, + -0.001922232, + -0.018169174, + -0.0018197984, + 0.023073187, + 0.0054705986, + -0.0062356503, + -0.011472573, + 0.0033354966, + -0.009097391, + -0.0070359134, + -0.005502609, + -0.01928314, + 0.008201096, + 0.020934884, + 0.026069371, + 0.012138391, + 0.012932252, + -0.032138567, + -0.021818373, + -0.0041261567, + 0.02348292, + -0.009404692, + -0.0061908355, + 0.019193511, + 0.0066261785, + -0.017759439, + -0.001922232, + 0.023777418, + 0.02350853, + 0.0011091647, + 0.023226837, + 0.022061653, + -0.011690244, + 0.029526507, + -0.014891297, + -0.014071827, + 0.023457313, + -0.018668538, + 0.0031882483, + 0.0077081346, + -0.0071575535, + -0.019808114, + 0.009475116, + 0.013457225, + -0.010569875, + 0.017746635, + 0.010992414, + 0.019628854, + 0.0056402544, + -0.006286867, + -0.003236264, + 0.024840167, + 0.008162684, + 0.026940057, + -0.017900286, + -0.0037420304, + -0.014404736, + -0.014404736, + 0.022868318, + -0.018719755, + -0.022804298, + 0.0076313093, + 0.0020566762, + 0.03569814, + -0.008674853, + -0.009263846, + -0.009583951, + 0.00976321, + -0.010032099, + 0.006238851, + 0.024776146, + -0.0134700285, + 0.022151284, + -0.02368779, + 0.0031738435, + -0.036517605, + -0.01700399, + 0.017900286, + -0.010787547, + -0.013649288, + 0.011114054, + 0.00480478, + 0.015531506, + 0.038873583, + -0.008828503, + 0.013457225, + -0.005112081, + 0.012003947, + -0.0023223637, + 0.01833563, + -0.00136845, + 0.0033835126, + -0.012618549, + -0.018450867, + -0.0139053725, + -0.00018806184, + -0.022036046, + -0.01441754, + 0.009628766, + -0.015710765, + -0.0037388294, + -0.0040877443, + 0.020077001, + 0.00031870478, + -0.040282045, + 0.03047402, + -0.0020022583, + 0.030909363, + -0.0023719799, + -0.009289455, + -0.00086748524, + -0.009526332, + -0.005243324, + 0.011504583, + -0.01012813, + -0.008636439, + -0.008918133, + 0.012445692, + -0.013738917, + 0.0056466567, + 0.0077977637, + 0.005105679, + -0.012887438, + -0.013585267, + -0.017119229, + 0.0010091318, + -0.02147266, + -0.00059219473, + 0.003473142, + 0.016146109, + -0.013111511, + -0.026376672, + -0.007618505, + -0.016389389, + 0.019539224, + -0.006824644, + 0.025864504, + -0.006472528, + -0.014225477, + -0.008905328, + 0.0014468757, + -0.16409875, + 0.024071915, + 0.004164569, + -0.004033326, + -0.013828547, + -0.0011675839, + 0.02578768, + 0.018233195, + -0.0010171344, + 0.028322913, + 0.015160184, + -0.008649244, + -0.0520107, + -0.024123132, + 0.008924535, + 0.019001449, + -0.0042285905, + -0.015224205, + 0.026402282, + 0.009961676, + -0.0029785794, + -0.029142382, + 0.012215217, + -0.0026408683, + 0.00465433, + 0.00016485421, + -0.00918702, + 0.030243544, + -0.0017877878, + -0.007080728, + -0.00465433, + -0.0052721333, + 0.0028057224, + 0.036287133, + 0.0072855954, + 0.005067266, + 0.00013964591, + 0.005172901, + 0.0010923592, + 0.003972506, + -0.008137075, + 0.024929797, + -0.006152423, + 0.009628766, + -0.019987373, + 0.022970753, + 0.03505793, + 0.021101339, + -0.0015829204, + -0.0073048016, + 0.008681254, + -0.03157518, + -0.023828635, + -0.008649244, + 0.01784907, + 0.0052049113, + 0.018566104, + 0.009808025, + -0.003850866, + 0.022586627, + 0.0036299936, + -0.0267608, + -0.0009651173, + 0.0026200614, + -0.0011043631, + -0.012810612, + 0.0030714099, + 0.008258715, + -0.031856876, + 0.014788862, + -0.013041088, + -0.0066005704, + 0.02323964, + -0.017349705, + 0.012477702, + 0.009910459, + -0.014571191, + 0.012035958, + -0.005377768, + -0.010838764, + 0.013329183, + 0.02618461, + 0.0016773515, + -0.014519975, + -0.016799124, + 0.014865688, + -0.013687701, + 0.005672265, + -0.006261259, + -0.028246088, + 0.00814988, + -0.039949134, + 0.0040013157, + -0.03877115, + 0.016094891, + 0.0133804, + -0.010448235, + -0.011158869, + -0.0011883908, + -0.021088533, + 0.011575006, + -0.010883578, + -0.012112782, + 0.01809235, + 0.024097523, + 0.024660908, + -0.00043574328, + 0.010397019, + 0.027042491, + 0.008233107, + -0.014699233, + 0.031523965, + 0.0142126735, + 0.03323973, + 0.014545582, + -0.00028869492, + 0.0083035305, + -0.034801845, + -0.0027080905, + 0.006779829, + 0.036773693, + 0.012170401, + -0.009692787, + 0.009219031, + -0.0030522035, + -0.024673713, + -0.095365755, + -0.022919536, + 0.012432888, + 0.01475045, + -0.0013924579, + 0.0151473805, + 0.010185749, + 0.03743951, + 0.00018466072, + 0.02934725, + -0.008322736, + -0.017349705, + -0.015019339, + 0.002871344, + 0.008476387, + -0.013201141, + 0.007996229, + -0.025454769, + -0.024981014, + 0.0053297523, + -0.004010919, + -0.012420083, + 0.0022039246, + -0.004270204, + -0.01629976, + -0.020269064, + -0.03920649, + 0.019936156, + 0.00498724, + -0.00471515, + 0.0152114015, + -0.0072407806, + 0.0048559965, + -0.010768341, + -0.017196054, + 0.013790134, + -0.014827276, + -0.00037292263, + 0.006101206, + -0.03144714, + 0.010268976, + 0.012003947, + 0.006510941, + -0.028578997, + -0.013508442, + 0.0040269243, + -0.013713309, + -0.011971937, + -0.009353476, + -0.01937277, + 0.010883578, + 0.037004165, + -0.0033835126, + -0.011178075, + 0.037516337, + -0.020333085, + 0.021280598, + 0.0206788, + -0.009455909, + 0.004817584, + 0.011088446, + 0.012368867, + 0.008508397, + 0.02551879, + -0.0053809695, + -0.015390661, + -0.027324185, + 0.003533962, + 0.012176803, + -0.041895375, + -0.0005985968, + 0.02092208, + -0.018745363, + 0.013226749, + -0.009603158, + -0.001101162, + -0.020755624, + -0.011523789, + 0.009558342, + -0.00032050538, + -0.026018154, + -0.020614779, + -0.006277264, + -0.02366218, + 0.0070423153, + 0.022253716, + -0.013341987, + -0.004388643, + 0.028604604, + -0.014494366, + 0.0005645856, + 0.04312458, + 0.013802938, + -0.012260031, + -0.0075352774, + 0.011901514, + 0.0122280205, + 0.018284412, + 0.00903337, + -0.019398378, + -0.021664724, + -0.0026504714, + -0.049321815, + 0.010115326, + -0.002378382, + -0.023252446, + -0.0032698752, + 0.009878448, + -0.01578759, + -0.004033326, + -0.005256128, + -0.00535216, + -0.0019750495, + -0.002357575, + -0.0050224513, + 0.00065141416, + -0.01402061, + 0.0027016883, + 0.018002719, + -0.0050288537, + 0.02722175, + 0.00053697656, + -0.0019126289, + 0.014571191, + 0.011101251, + 0.0007462454, + -0.016350977, + 0.01742653, + -0.03096058, + -0.01523701, + -0.016607061, + -0.014468757, + -0.0065493532, + -0.018194782, + 0.015006534, + 0.039283317, + -0.019257532, + -0.01903986, + -0.006155624, + 0.030243544, + 0.008822101, + -0.020179436, + -0.013687701, + -0.043508705, + 0.016632669, + -0.013303574, + -0.016325368, + 0.0188606, + -0.0016453409, + -0.012727384, + 0.005854725, + -0.0013548455, + 0.021050122, + 0.027119316, + -0.0002262744, + -0.009122999, + 0.00036051855, + -0.017144836, + 0.030089894, + 0.008834905, + 0.011120456, + -0.03190809, + 0.016607061, + -0.012490507, + -0.00034311283, + 0.011939926, + 0.008495593, + 0.008521202, + -0.017068012, + -0.014699233, + 0.0075736903, + 0.007618505, + -0.008265117, + -0.00918702, + 0.040256437, + 0.008591625, + 0.02323964, + 0.0109476, + -0.011991142, + 0.0037964482, + -0.0013764526, + 0.008124271, + 0.013239553, + -0.0077721556, + -0.019731287, + 0.02691445, + 0.020422716, + 0.031984918, + -0.038310196, + -0.0009251042, + 0.005364964, + -0.005006446, + -0.031370316, + -0.004567902, + -0.007701732, + -0.002986582, + -0.00413576, + 0.0041901777, + -0.0036620041, + 0.0020870862, + 0.015979653, + 0.035390835, + 0.013802938, + -0.0062100417, + -0.0079066, + -0.026530324, + -0.0088669155, + 0.0077209384, + -0.007804166, + -0.0036363956, + -0.012234422, + 0.0076313093, + 0.007080728, + -0.021575093, + -0.0007982625, + 0.022010436, + -0.0017189652, + -0.005726683, + -0.033316553, + -0.028809473, + -0.018783776, + 0.0065557556, + 0.0013556457, + 0.011722255, + -0.011658234, + -0.010397019, + 0.022253716, + 0.027016884, + 0.040154003, + -0.031523965, + -0.0037388294, + 0.018719755, + 0.011542995, + -0.0032506688, + 0.008469985, + -0.01937277, + -0.024443237, + -0.0075096693, + -0.019103881, + 0.02609498, + 0.016235739, + 0.054084983, + -0.004427056, + -0.03577496, + 0.017055208, + 0.001292425, + 0.007842579, + 0.013802938, + 0.0011843895, + -0.014481561, + -0.013713309, + 0.002469612, + 0.0009987283, + 0.021203771, + 0.0033451, + -0.016837535, + -0.0022279324, + -0.01912949, + 0.020000177, + -0.031088622, + -0.013028284, + 0.022304934, + 0.0052049113, + 0.012356062, + 0.0034571367, + -0.016184522, + -0.007151151, + -0.006818242, + 0.012388073, + -0.005006446, + -0.020909276, + 0.017260075, + -0.022420172, + -0.023201229, + -0.00021547085, + 0.01466082, + -0.018630126, + -0.015685158, + -0.025505986, + -0.006213243, + 0.014583996, + -0.00046975445, + 0.020819645, + -0.015838807, + -0.027452227, + -0.011542995, + -0.010064109, + -0.020025784, + 0.005979566, + -0.023841439 + ] + }, + { + "object": "embedding", + "index": 3, + "embedding": [ + 0.01577385, + -0.0072296807, + 0.0065341513, + -0.021912377, + -0.006553294, + 0.0037105556, + -0.01824968, + -0.033232283, + 0.011862292, + -0.017496722, + 0.019436548, + 0.009731036, + -0.0045847534, + -0.0013471901, + -0.016896907, + -0.00010548602, + 0.03307914, + 0.011607052, + 0.026468417, + -0.016514046, + -0.022308, + 0.018185869, + -0.008920648, + 0.011626194, + -0.020878654, + -0.010196849, + 0.008014545, + -0.016654428, + 0.0024199968, + 0.015505847, + 0.010509518, + -0.018236918, + 0.012238772, + -0.025102882, + -0.035759162, + 0.015595181, + 0.0045209434, + -0.0034936012, + 0.017062813, + -0.018619778, + -0.0006265351, + 0.009845894, + 0.0032798375, + -0.007835876, + -0.008984458, + 0.012130294, + 0.019538643, + 0.0072871097, + -0.017586054, + 0.011638957, + 0.003598888, + 0.019181307, + -0.018096536, + -0.018734636, + 0.011192286, + -0.035248682, + 0.0039466526, + 0.017675389, + 0.0057237633, + -0.008180451, + -0.0126024885, + -0.016922431, + 0.0041348925, + -0.014050977, + 0.004409276, + -0.000938008, + -0.009539605, + 0.004303989, + 0.00019840944, + 0.0054972377, + 0.021325326, + 0.038005278, + 0.006368245, + 0.019359974, + 0.025077358, + 0.009265222, + -0.013770213, + 0.023418296, + -0.004466705, + -0.0031474316, + 0.0009906513, + -0.008735598, + -0.03073093, + -0.0048080888, + 0.0144338375, + -0.0017388244, + -0.009628939, + 0.00431037, + -0.034993444, + -0.0030772407, + -0.011262477, + 0.03073093, + 0.026596038, + -0.012111152, + 0.00066123187, + 0.014803936, + 0.011313525, + 0.029709969, + 0.015735563, + -0.035350777, + 0.014931556, + 0.004524134, + -0.042446457, + 0.0029831207, + -0.024745544, + -0.02059789, + 0.0024790212, + 0.003978558, + 0.026162129, + -0.020559605, + -0.022256952, + 0.023903253, + 0.046683446, + -0.023035435, + -0.0019318499, + -0.021044562, + 0.012870491, + -0.028306147, + -0.017981678, + -0.006052385, + 0.0065245796, + 0.051175676, + 0.01799444, + -0.015225083, + 0.037060887, + -0.0001232332, + -0.008914267, + -0.028969772, + -0.0042178454, + 0.015684515, + -0.0063395305, + 0.01730529, + 0.0020706367, + 0.01350221, + 0.007274348, + -0.0010265445, + -0.0144338375, + 0.02731071, + -0.005950289, + -0.019411024, + 0.010815807, + 0.032313418, + -0.016067376, + 0.0039307005, + -0.006546913, + 0.034993444, + 0.015978042, + -0.003972177, + -0.020380937, + -0.005615286, + 0.0032479325, + -0.011256096, + 0.003187313, + -0.0035765544, + 0.015416513, + 0.0052515687, + -0.0071722516, + 0.005302617, + -0.027234137, + 0.001990874, + -0.019436548, + -0.006451198, + 0.030143877, + -0.011875054, + 0.04354399, + 0.027872238, + 0.0016104067, + -0.002837953, + -0.016258806, + -0.002268448, + 0.0006664164, + 0.025166692, + -0.012985349, + 0.032313418, + -0.017586054, + 0.0121941045, + 0.0077848285, + -0.0018106108, + -0.016360901, + 0.004367799, + -0.02491145, + -0.003314933, + 0.016207758, + 0.004587944, + 0.006033242, + -0.00506971, + 0.02547298, + -0.008646265, + 0.014880508, + -0.004852756, + 0.023801155, + 0.025945174, + -0.02160609, + -0.033538572, + -0.68118525, + -0.043952376, + 0.020074647, + -0.0036339834, + 0.0017978487, + 0.02464345, + 0.0067192004, + 0.015442037, + 0.0057173823, + -0.01629709, + 0.011811243, + 0.005442999, + 0.011077428, + -0.013566021, + -0.0060491944, + -0.02243562, + -0.0033851243, + 0.022205904, + -0.002155185, + -0.015480323, + 0.0005595345, + 0.0069297734, + -0.017649865, + -0.011696386, + 0.021963425, + 0.009029125, + 0.017445672, + -0.00071148225, + -0.017394625, + -0.0018536826, + -0.016845858, + 0.015122986, + -0.020827606, + -0.013023635, + 0.04696421, + -0.011415621, + -0.007070156, + 0.024758307, + 0.008799409, + 0.026417369, + -0.009635321, + -0.0017547769, + 0.01204096, + -0.030935122, + -0.013808499, + 0.010694568, + 0.015071939, + -0.006680914, + 0.0321858, + 0.0014157859, + 0.019500358, + -0.03187951, + 0.0051048053, + 0.00994799, + 0.007893305, + 0.0015099058, + 0.04234436, + 0.00076292915, + 0.0009435914, + 0.007210538, + 0.007133966, + 0.0022174, + -0.004664516, + -0.016194995, + -0.016628904, + -0.0009108887, + -0.038209468, + -0.015850421, + -0.018415585, + -0.00071227987, + -0.0053377124, + 0.0041859406, + -0.015850421, + 0.02382668, + 0.02027884, + -0.005152663, + 0.030756453, + -0.009029125, + 0.00024207945, + -0.0021583757, + 0.011141238, + -0.014446599, + -0.03111379, + -0.017318053, + 0.029633395, + -0.021695424, + -0.016246043, + -0.025421932, + 0.016105661, + -0.0045751818, + 0.025000785, + -0.0013774999, + -0.016105661, + -0.0081357835, + -0.013795737, + 0.03614202, + 0.002204638, + 0.0030086448, + 0.0034457438, + 0.0059470986, + -0.0026305702, + -0.015978042, + -0.0045177527, + -0.0000015173586, + 0.026264224, + -0.012213247, + -0.027361758, + 0.028408242, + 0.0111795245, + -0.015926993, + 0.025077358, + -0.0111795245, + -0.009916085, + 0.017662628, + 0.011989912, + -0.027846714, + 0.04821489, + 0.0024247826, + 0.018709112, + -0.008678169, + 0.0065915803, + 0.024822118, + -0.009156745, + -0.008295309, + -0.0017834915, + -0.013195923, + -0.008907885, + -0.012442963, + -0.044207618, + 0.0014556672, + 0.0031649794, + 0.009750179, + 0.01679481, + 0.006757486, + 0.008646265, + 0.0035574113, + 0.010949808, + -0.021618852, + 0.024439257, + -0.005797145, + -0.011332668, + -0.0010289374, + -0.026008984, + 0.013578783, + 0.0033978862, + -0.034253243, + -0.03461058, + -0.006119386, + -0.012328105, + 0.015352703, + -0.023813918, + -0.012315343, + -0.039255954, + 0.009903323, + 0.015620705, + -0.016526807, + -0.02211657, + -0.005430237, + -0.013285256, + 0.029837588, + 0.016628904, + 0.0011182715, + 0.001812206, + -0.0007577446, + -0.0104329465, + -0.0216699, + -0.008295309, + 0.0413234, + -0.0007465778, + -0.026442893, + -0.021133894, + 0.0010066038, + -0.0039275098, + -0.008212356, + -0.015161272, + -0.019972552, + -0.0062629585, + -0.015071939, + 0.0034010767, + -0.009437509, + 0.01850492, + 0.017164908, + 0.009986276, + -0.017407387, + 0.04739812, + 0.006999965, + 0.016501283, + 0.0028507148, + 0.0015226678, + -0.0018473015, + -0.012525917, + -0.010254278, + 0.002959192, + -0.0092779845, + 0.009928847, + 0.012149437, + 0.010656281, + 0.011211429, + 0.0023817108, + -0.0021950663, + 0.00944389, + -0.011351812, + 0.017535007, + -0.014280694, + 0.00602048, + -0.026876802, + 0.017905105, + -0.010694568, + 0.0005623262, + 0.026442893, + 0.004367799, + -0.023979824, + -0.0032096466, + -0.007574255, + 0.016143948, + -0.00589286, + -0.024311636, + 0.002935263, + 0.0020339459, + -0.0123344865, + 0.0011836768, + 0.014791174, + 0.023520391, + -0.014076501, + -0.0037616035, + 0.0016383235, + 0.032338943, + 0.01761158, + -0.0070254887, + -0.018173108, + -0.023035435, + -0.005101615, + -0.012034579, + 0.010700949, + -0.032543134, + -0.006077909, + 0.0056408104, + -0.0320837, + 0.022308, + 0.011938864, + -0.011319906, + 0.03517211, + 0.025613362, + 0.0048878514, + 0.0039370814, + -0.0013487854, + 0.016335377, + 0.011709148, + -0.017854057, + 0.006617104, + -0.012525917, + 0.009424747, + -0.0034010767, + 0.015658991, + 0.039255954, + -0.0083655, + 0.036780123, + 0.0015936565, + 0.017101098, + 0.023405533, + -0.026085556, + -0.0063714352, + 0.0058450024, + -0.0057684304, + 0.013049159, + -0.0009427938, + -0.0054717134, + -0.0018058249, + 0.0050984244, + -0.009386461, + -0.017420148, + -0.0018329442, + 0.02876558, + -0.007299872, + 0.02674918, + -0.010471232, + -0.0052707116, + -0.004361418, + 0.0308075, + 0.011422003, + -0.008097498, + -0.026111081, + 0.014816698, + -0.0011900578, + -0.0047729933, + -0.030118352, + -0.023048198, + 0.0177392, + -0.0006349102, + 0.009979894, + 0.008378262, + 0.009533225, + 0.029199488, + -0.0060842903, + 0.0076189223, + -0.02579203, + 0.0057716207, + 0.007880543, + 0.01660338, + 0.002325877, + -0.004568801, + -0.018275203, + -0.032134753, + -0.015875945, + 0.011824006, + 0.009845894, + -0.006744724, + 0.008422929, + -0.01013942, + -0.028740056, + -0.011492194, + -0.0005914396, + 0.00079363777, + -0.013770213, + -0.005430237, + -0.002332258, + -0.029250536, + 0.004530515, + 0.034431912, + 0.020802082, + 0.005232426, + -0.010113896, + -0.012034579, + -0.00880579, + 0.077235706, + 0.0249625, + 0.008052831, + 0.010094753, + -0.002775738, + -0.011562385, + -0.028586911, + 0.011983531, + -0.01324697, + -0.0065915803, + 0.01660338, + -0.026060032, + 0.001767539, + 0.004485848, + 0.005165425, + -0.006680914, + 0.0071148225, + -0.0013128922, + 0.033793814, + -0.020138457, + 0.0061321477, + 0.0017563722, + -0.0140254535, + 0.0123344865, + 0.0037296985, + -0.006483103, + 0.007529588, + -0.010228754, + 0.015710039, + -0.011568765, + 0.00899722, + 0.009737416, + -0.007567874, + -0.006572437, + -0.017573293, + 0.0024471162, + -0.0017946583, + 0.0056248577, + 0.010145801, + -0.014650792, + 0.03606545, + 0.004460324, + 0.012787538, + -0.0068851067, + -0.02142742, + 0.007076537, + -0.014012692, + 0.020546842, + -0.011989912, + -0.018173108, + 0.026315272, + 0.007357301, + -0.015263368, + 0.0059215743, + 0.010720092, + 0.0035893165, + -0.010956189, + -0.01807101, + -0.007861401, + 0.00093880564, + 0.000978687, + -0.007331777, + 0.0024423304, + -0.005494047, + -0.015033652, + -0.008659027, + 0.0038636997, + -0.0031043598, + -0.017981678, + -0.0034616962, + 0.014625268, + -0.012659918, + -0.021874093, + 0.0079954015, + 0.027285187, + 0.008544168, + 0.017624341, + -0.024311636, + -0.01781577, + 0.041655213, + -0.0004343073, + -0.0077401614, + -0.0038668902, + -0.0029879066, + -0.0070382506, + 0.0010345208, + 0.025957936, + -0.023494868, + -0.014408314, + -0.010560567, + 0.03236447, + -0.0018935638, + 0.013068303, + -0.005293045, + -0.013770213, + -0.010343612, + 0.029607872, + 0.0084612155, + -0.009679987, + 0.005293045, + 0.003605269, + -0.024783831, + -0.00066163065, + -0.015442037, + 0.015799373, + 0.01425517, + 0.02851034, + 0.0034553153, + -0.017968915, + 0.013195923, + 0.0070127267, + -0.009450272, + -0.012557821, + -0.0038987952, + 0.004734707, + 0.0068276776, + -0.006065147, + 0.014357266, + -0.008722836, + -0.027157566, + -0.0015202749, + -0.040838443, + 0.027157566, + 0.0017005383, + 0.010675425, + 0.0017101099, + 0.027616998, + -0.005755668, + -0.013259732, + 0.013323543, + -0.009131221, + 0.020648938, + -0.010649901, + -0.017330814, + -0.033946957, + -0.025485741, + 0.033538572, + 0.0022923767, + -0.01604185, + -0.0048814705, + 0.011626194, + 0.012762014, + 0.009839512, + 0.0026911898, + -0.03529973, + -0.023035435, + -0.0055801906, + 0.0040072724, + -0.007070156, + 0.016935192, + -0.00957151, + 0.0055546667, + -0.009456652, + 0.011071047, + -0.001292154, + -0.012666299, + -0.031905036, + -0.025562314, + 0.03047569, + 0.016743762, + 0.017356338, + -0.0026401416, + 0.0038828426, + 0.0016718238, + -0.005666334, + 0.0028826199, + -0.00893341, + 0.0018361347, + -0.030118352, + 0.014497648, + 0.0138850715, + -0.0028491195, + 0.023941537, + -0.005545095, + 0.012436583, + 0.013400114, + -0.0042306078, + -0.00003614242, + -0.026442893, + -0.027412806, + 0.007638065, + -0.0001354967, + -0.0076827323, + -0.0018808017, + -0.0001483584, + -0.018594254, + 0.01754777, + 0.0029225012, + -0.008008163, + 0.0037616035, + 0.03338543, + -0.0009826751, + 0.034304295, + -0.0045528486, + -0.002211019, + -0.0052770926, + -0.026902325, + -0.0035223158, + 0.013463925, + 0.0068787253, + 0.007236062, + 0.005570619, + 0.011906959, + -0.024860403, + 0.01577385, + 0.01286411, + 0.03149665, + 0.008537787, + -0.009207793, + -0.01976836, + -0.031011693, + -0.036014404, + -0.03662698, + -0.03226237, + 0.013336305, + 0.0022317572, + -0.031598747, + 0.021542279, + -0.008225118, + -0.020457508, + 0.008040069, + 0.011530479, + 0.029122915, + 0.0008414953, + 0.008907885, + 0.02160609, + -0.008595216, + -0.008659027, + 0.008320833, + -0.011402859, + -0.0067766295, + 0.019270642, + 0.019500358, + -0.020227792, + 0.024809355, + 0.012723728, + 0.011760196, + 0.022091046, + -0.009373699, + -0.0033532192, + -0.005289855, + 0.010777521, + -0.020776559, + 0.011868672, + -0.026136605, + 0.005848193, + -0.037290603, + 0.0022923767, + -0.0024168063, + -0.010420185, + -0.014663554, + -0.0056535723, + -0.03338543, + 0.015327179, + 0.021631613, + 0.008391025, + 0.006250196, + -0.0068978686, + -0.008384643, + -0.0032176226, + -0.010483994, + 0.032721803, + 0.00030868122, + 0.0015354297, + 0.006476722, + -0.00128338, + -0.010196849, + -0.008257023, + -0.003212837, + 0.025370883, + -0.0034489343, + -0.0022174, + -0.024132969, + 0.008148545, + 0.038617853, + -0.01653957, + -0.0007577446, + -0.002136042, + -0.0054334276, + 0.0027214994, + 0.006680914, + 0.0018345395, + -0.015199559, + 0.018607017, + -0.024069158, + -0.012245152, + -0.028050907, + -0.0036084594, + 0.008193213, + -0.015607943, + -0.005248378, + -0.028050907, + 0.014982604, + 0.00004454242, + -0.0038381757, + -0.017394625, + 0.031037217, + 0.005107996, + -0.018594254, + 0.01939826, + 0.00013669314, + 0.015901469, + 0.002268448, + 0.014318979, + 0.004240179, + -0.02515393, + 0.030654358, + 0.0021583757, + -0.03529973, + -0.027080994, + -0.008907885, + -0.0111795245, + 0.0012618441, + -0.005031424, + 0.009335414, + -0.0021902807, + 0.013157636, + -0.020636177, + 0.0005794752, + -0.005924765, + -0.026340798, + 0.018147584, + 0.020623414, + -0.020891417, + -0.017522246, + 0.0090099815, + -0.011173143, + 0.0013695236, + -0.027361758, + -0.008499501, + -0.012647156, + 0.01863254, + 0.013221446, + -0.01933445, + -0.0039434624, + -0.012321725, + -0.012423821, + 0.0033276952, + -0.0021934712, + 0.014370028, + -0.0026991658, + -0.0012474868, + -0.024579639, + 0.0142934555, + -0.021465708, + 0.013936119, + 0.0016135972, + -0.019755598, + -0.017968915, + -0.002136042, + 0.0042050835, + -0.004594325, + -0.004811279, + -0.030424641, + -0.018351777, + 0.0027023565, + -0.003225599, + -0.0027932858, + 0.0017850867, + 0.0081357835, + 0.018262442, + -0.0056535723, + -0.015480323, + 0.020546842, + 0.0007437861, + -0.0015936565, + -0.018045487, + -0.017841296, + -0.008403786, + -0.009297127, + 0.013936119, + 0.0038892238, + 0.004556039, + -0.008327214, + 0.026442893, + -0.016922431, + 0.004916566, + -0.004125321, + -0.022997148, + -0.00071307755, + 0.02142742, + 0.0200236, + 0.031343505, + 0.010069229, + -0.008129403, + -0.02313753, + -0.005545095, + 0.009469414, + 0.037111938, + -0.012513154, + 0.0149698425, + 0.009431128, + -0.01033085, + 0.0013926547, + -0.03098617, + 0.0075423503, + 0.011683623, + 0.021312563, + 0.005596143, + -0.0074849213, + 0.011989912, + 0.028586911, + -0.0028507148, + -0.022780195, + -0.0014907627, + -0.005360046, + -0.03504449, + 0.0014046192, + 0.009533225, + -0.028740056, + 0.0076061604, + -0.023673536, + -0.004169988, + -0.02344382, + -0.007523207, + -0.024796592, + -0.00880579, + -0.03392143, + 0.028791104, + 0.024554115, + -0.009552367, + 0.0088696, + -0.028535863, + -0.0027470235, + -0.007006346, + -0.009156745, + -0.00969275, + -0.026570512, + -0.006623485, + -0.007861401, + 0.0006995179, + -0.031649794, + -0.005564238, + 0.006540532, + 0.0069170115, + 0.020368174, + 0.23420848, + 0.008754741, + -0.013591545, + 0.032134753, + -0.01812206, + 0.025077358, + 0.02376287, + -0.015875945, + 0.028484816, + 0.036652505, + -0.021657137, + 0.0006440829, + 0.00089174573, + -0.0018345395, + 0.011989912, + -0.013030016, + -0.03376829, + -0.002338639, + -0.0014357265, + -0.0090801725, + 0.01685862, + 0.002649713, + 0.009169507, + 0.00033121413, + 0.028995296, + 0.015697276, + -0.0069042495, + 0.0036116499, + 0.004476276, + 0.01178572, + -0.0012068079, + -0.018721875, + 0.004364609, + -0.0060619568, + 0.002522093, + -0.0029065486, + -0.0067383433, + 0.003219218, + 0.009386461, + 0.038617853, + 0.006058766, + 0.0062629585, + -0.024873165, + -0.008550549, + 0.004785755, + 0.00849312, + -0.015735563, + -0.0067383433, + 0.021950664, + 0.015046414, + -0.010152182, + -0.0061449097, + 0.044513904, + 0.023214104, + -0.011007237, + 0.021823043, + 0.033615146, + -0.011268858, + 0.025715457, + -0.010349994, + -0.0151102245, + 0.023673536, + -0.019883217, + 0.004594325, + 0.019155784, + -0.0015721206, + -0.015799373, + 0.0051399013, + 0.021912377, + -0.022780195, + 0.011332668, + 0.0024550925, + 0.0077146376, + 0.0018042297, + -0.0057173823, + -0.019653501, + 0.022716384, + -0.006128957, + 0.027897762, + 0.006508627, + -0.016360901, + -0.008129403, + -0.007644446, + 0.01799444, + -0.006700057, + -0.008914267, + -0.0018329442, + 0.015684515, + 0.022831243, + -0.0068659633, + 0.0041029872, + -0.0029575967, + 0.0016925621, + 0.010273421, + 0.030373594, + 0.022550479, + -0.005360046, + 0.007363682, + -0.026111081, + -0.000995437, + -0.034942392, + -0.035657067, + 0.004214655, + -0.017190432, + -0.00912484, + 0.007248824, + -0.0009746988, + 0.0015107034, + 0.033666193, + -0.0004159619, + 0.0040710825, + -0.011996293, + 0.0083335955, + -0.008308071, + 0.009003601, + -0.0061576716, + 0.013961643, + -0.013234208, + -0.017101098, + -0.018747399, + -0.0034648867, + -0.020687224, + 0.0017866819, + -0.006700057, + -0.000046710964, + -0.019857693, + -0.0027342616, + -0.0025045453, + 0.007261586, + -0.042778272, + 0.036473837, + -0.0046868497, + 0.02136361, + -0.00008260413, + -0.005417475, + 0.011906959, + 0.00017288541, + -0.0077210185, + -0.00047059925, + -0.008129403, + 0.001628752, + 0.0017404197, + 0.00988418, + -0.0052579497, + 0.0014756079, + -0.0066745332, + 0.005886479, + -0.02782119, + -0.02718309, + -0.024298875, + -0.025396409, + -0.010401041, + -0.009405605, + -0.0070573934, + 0.009354556, + 0.0030836216, + -0.021478469, + -0.008952552, + 0.00095156766, + 0.03111379, + -0.0113773355, + -0.0014588577, + 0.026468417, + -0.014803936, + 0.013310781, + 0.0030469308, + -0.16253701, + 0.024069158, + 0.014140312, + -0.014918794, + -0.0050473763, + -0.0026832134, + 0.016182235, + 0.020444747, + -0.020189505, + 0.028714532, + -0.0036403644, + 0.024630686, + -0.042446457, + -0.009137602, + -0.012557821, + 0.0009013172, + 0.00013061124, + -0.0009866632, + 0.017407387, + 0.0033564097, + 0.007491302, + -0.02091694, + 0.022767432, + 0.021057323, + 0.0151102245, + -0.0032559088, + -0.026315272, + 0.03256866, + 0.0074721593, + -0.007191395, + -0.0070191077, + -0.0034712679, + -0.00025763316, + 0.02491145, + 0.016488522, + -0.0026018557, + 0.0023242817, + 0.010547805, + -0.00024566878, + -0.010381898, + 0.002238138, + 0.028612435, + 0.009609796, + 0.012181343, + 0.001036116, + 0.02743833, + 0.029097391, + 0.02117218, + 0.0035510303, + -0.009597034, + 0.023265151, + -0.03338543, + -0.013425639, + -0.0078550195, + 0.022154856, + 0.020317126, + 0.016399188, + 0.009297127, + -0.00817407, + 0.009214174, + 0.00066721404, + -0.03864338, + -0.023456581, + 0.006377816, + 0.0010608424, + -0.0069808215, + 0.01083495, + 0.011906959, + -0.004473086, + 0.006052385, + -0.020508556, + -0.006259768, + -0.0058450024, + -0.02136361, + -0.006559675, + 0.0008973291, + -0.01159429, + -0.0026066413, + -0.0035382684, + -0.013183161, + 0.010318088, + 0.02249943, + -0.015008128, + -0.008786647, + -0.008844076, + 0.008927029, + 0.004903804, + 0.00823788, + -0.024235064, + -0.0005890467, + 0.023290675, + -0.036218595, + 0.0037296985, + -0.03946015, + 0.008971696, + 0.017343577, + 0.0015737158, + -0.011077428, + 0.007848638, + 0.012200485, + 0.00022393346, + 0.0013184756, + -0.023839442, + 0.00957151, + 0.030322544, + 0.018466635, + -0.012238772, + 0.0062151006, + 0.030450165, + -0.0040742727, + -0.01685862, + 0.022359049, + -0.0046964213, + 0.0067638676, + 0.022984387, + 0.010190468, + 0.013731927, + -0.02851034, + -0.0014429052, + 0.009597034, + 0.048878513, + -0.0061672432, + -0.0062852916, + 0.019500358, + -0.0023099245, + -0.030960646, + -0.099952094, + -0.013668117, + 0.01780301, + 0.020751035, + 0.013706403, + 0.02700442, + 0.004986757, + 0.0173691, + 0.0023418295, + 0.02414573, + 0.0021870902, + -0.022805719, + -0.019500358, + 0.0103627555, + 0.005315379, + -0.013463925, + 0.018594254, + -0.023022672, + -0.05063967, + 0.0037775561, + -0.003924319, + 0.0068532014, + -0.0034234102, + -0.016743762, + -0.005296236, + 0.0034457438, + -0.024184017, + 0.0058577643, + 0.01786682, + -0.0040327962, + 0.010662663, + -0.014791174, + 0.0041923216, + -0.0066681523, + -0.008665407, + -0.00039263134, + -0.0047602314, + 0.0012658322, + 0.027514901, + -0.030935122, + -0.0045975153, + 0.0022237808, + 0.015263368, + -0.032823898, + -0.004138083, + 0.010273421, + -0.00010468839, + 0.012296201, + 0.0042497506, + -0.019245116, + 0.006077909, + 0.020636177, + -0.034636106, + -0.009711892, + 0.04410552, + -0.029480252, + 0.011613432, + 0.01703729, + -0.027080994, + 0.021810282, + 0.0048176604, + 0.01703729, + 0.0013152851, + 0.029250536, + -0.02598346, + -0.016386425, + -0.049006134, + -0.008595216, + 0.023022672, + -0.031471126, + 0.0034776488, + 0.017535007, + -0.016156709, + -0.0040774634, + -0.019819407, + 0.019181307, + -0.025192216, + -0.013010873, + 0.00842931, + -0.012219628, + -0.026417369, + -0.020380937, + 0.0081357835, + -0.005666334, + -0.0074147303, + 0.029556824, + -0.021950664, + -0.008442072, + 0.025549551, + -0.002971954, + 0.0133490665, + 0.038617853, + 0.013285256, + -0.019525882, + -0.008614359, + 0.020967988, + 0.007331777, + 0.0028570958, + 0.019206831, + -0.018134821, + -0.019755598, + -0.0079252105, + -0.035886783, + 0.014778412, + -0.014791174, + -0.02445202, + -0.0118559105, + 0.013157636, + -0.011709148, + 0.0034680772, + -0.011543241, + -0.004476276, + -0.011224192, + -0.007344539, + -0.012634394, + -0.015978042, + -0.005369617, + 0.0027103326, + 0.016756523, + -0.001984493, + 0.011875054, + -0.009226936, + -0.007248824, + -0.0014915604, + 0.0003704972, + 0.008033688, + -0.033232283, + 0.0067192004, + -0.016462998, + -0.01906645, + -0.029454729, + -0.0020052313, + 0.024184017, + -0.02649394, + 0.011485812, + 0.026978897, + -0.018709112, + -0.03193056, + -0.012162199, + 0.021376373, + 0.008435691, + -0.020074647, + -0.02389049, + -0.022984387, + 0.017152147, + -0.0109817125, + -0.01976836, + 0.030781977, + -0.01260887, + -0.0076508275, + 0.002065851, + 0.012787538, + 0.01850492, + 0.017700912, + 0.0027645712, + -0.0052834735, + -0.01159429, + -0.008563311, + 0.029148439, + 0.012149437, + 0.0067766295, + -0.013821261, + 0.0063522924, + -0.0046868497, + 0.013476687, + 0.011664481, + -0.0032463372, + 0.018658064, + -0.005666334, + -0.0031266934, + -0.0043199416, + -0.023877729, + -0.01425517, + -0.0040264153, + 0.050792817, + 0.01634814, + 0.012564203, + -0.005950289, + -0.009654463, + -0.018262442, + -0.012015436, + 0.01703729, + 0.0048240414, + -0.0037233175, + -0.01236001, + -0.0010496756, + 0.027642522, + 0.023596963, + -0.053243123, + -0.008231499, + 0.018262442, + -0.0013639402, + -0.024809355, + 0.012755632, + -0.0038605093, + 0.008505883, + 0.0132086845, + 0.00033719634, + -0.001473215, + -0.006103433, + -0.0029496204, + 0.022333525, + 0.0062246723, + -0.017586054, + -0.007382825, + -0.03440639, + -0.010113896, + 0.024247827, + -0.0069425358, + -0.018339014, + -0.0144338375, + 0.018275203, + 0.009112078, + -0.014523172, + 0.0035382684, + 0.014114787, + -0.0070382506, + -0.0020291603, + -0.039434623, + -0.01013942, + -0.013527735, + 0.01362983, + 0.011492194, + 0.005190949, + 0.009099316, + -0.0032622898, + 0.021376373, + 0.010656281, + 0.02649394, + -0.038388137, + 0.018466635, + 0.007465778, + 0.0027613807, + 0.012876872, + -0.015352703, + 0.00228121, + -0.024120206, + -0.011996293, + -0.016360901, + 0.017956154, + 0.0031346697, + 0.0512012, + -0.008856838, + -0.031726368, + 0.033308856, + -0.024158493, + 0.0015027272, + 0.0121941045, + 0.0007314229, + -0.022831243, + -0.0118559105, + -0.0111795245, + 0.013706403, + 0.020176744, + -0.016590618, + -0.0045751818, + -0.00020319519, + -0.029812064, + 0.027463853, + -0.02807643, + -0.0013352257, + 0.028714532, + 0.002611427, + 0.011236954, + 0.015442037, + -0.018709112, + -0.019053686, + 0.014459361, + 0.026111081, + 0.0031665748, + -0.0010576519, + 0.019998075, + -0.008754741, + -0.022027235, + -0.011504956, + 0.0010209611, + -0.0361165, + -0.01596528, + -0.014459361, + -0.00003359999, + 0.014625268, + 0.0084612155, + 0.029888637, + -0.020036362, + -0.020100173, + 0.005685477, + -0.012781157, + -0.0077848285, + 0.007185014, + -0.006240625 + ] + }, + { + "object": "embedding", + "index": 4, + "embedding": [ + 0.006868671, + -0.005114832, + -0.0014453228, + -0.01894146, + -0.0009566394, + 0.019796059, + -0.027321622, + -0.020331776, + 0.010363594, + -0.009776855, + 0.0014493087, + 0.009668436, + -0.0074171443, + 0.008392916, + -0.017372573, + -0.0047576865, + 0.030357357, + 0.021938931, + 0.024796093, + -0.0060714716, + -0.031377774, + 0.013520503, + 0.0034949228, + 0.0038935225, + -0.020752698, + 0.00006497176, + 0.013941425, + -0.015790928, + 0.016785832, + 0.0129784085, + 0.022079239, + -0.011664623, + 0.007468165, + -0.036071684, + -0.02051035, + 0.0104528805, + 0.0019148733, + -0.005797235, + 0.018660847, + -0.012672284, + 0.0058355005, + 0.0063201976, + 0.0041007944, + 0.000064324035, + -0.008590622, + 0.016058788, + 0.017806249, + 0.0016836853, + -0.012933765, + 0.008826593, + 0.009190116, + 0.03048491, + -0.032959417, + -0.0052934047, + -0.00075255637, + -0.02719407, + -0.01589297, + 0.022653222, + -0.022091992, + -0.02061239, + -0.002448997, + -0.010025581, + -0.00020358483, + -0.01690063, + 0.0022034594, + -0.0035013002, + -0.021364948, + 0.0033131612, + -0.0030453021, + 0.005006413, + 0.024821604, + 0.03446453, + 0.002297529, + 0.006431806, + 0.040714573, + 0.0072768372, + 0.0016597694, + 0.023941496, + -0.01212381, + -0.0018431253, + -0.002724828, + -0.018469518, + -0.011651868, + -0.011824063, + 0.02658182, + 0.0041805143, + -0.0021014179, + 0.01029344, + -0.0021540332, + -0.018852174, + -0.004215591, + 0.026785905, + 0.027449174, + 0.0045791143, + -0.0018510973, + 0.021722093, + 0.022512915, + 0.015714398, + 0.03178594, + -0.032398187, + 0.005338048, + 0.03127573, + -0.034260448, + 0.006505148, + -0.033010438, + -0.021033311, + 0.0036894393, + -0.010446503, + 0.021862399, + -0.017181244, + -0.015561335, + 0.021109844, + 0.0373472, + -0.013762852, + -0.012506466, + -0.02318894, + 0.03530637, + -0.007927352, + -0.010395481, + -0.011951615, + -0.00053930545, + 0.046046246, + 0.022640467, + -0.040791105, + 0.026760394, + 0.0011989881, + -0.009477108, + -0.026811413, + 0.0031696653, + 0.007104642, + 0.005067, + 0.016288381, + 0.00695158, + 0.02024249, + -0.011135283, + -0.004014697, + -0.03199002, + 0.018686356, + 0.004945826, + -0.018635336, + 0.012825346, + 0.031377774, + -0.017308796, + -0.009668436, + -0.008494958, + 0.031913493, + 0.022423629, + -0.010350838, + -0.012908255, + -0.002881079, + 0.0034853562, + -0.008909502, + 0.0031537213, + 0.0024904513, + 0.00944522, + 0.0039541097, + -0.0018654469, + 0.004454751, + -0.032755334, + -0.0014859799, + -0.018188905, + 0.014081732, + 0.03308697, + -0.0028842678, + 0.038010474, + 0.018507784, + 0.0028954286, + -0.003252574, + -0.002217809, + -0.0074745426, + -0.006125681, + 0.041275803, + -0.013584279, + 0.012225851, + 0.00880746, + 0.008794705, + 0.0025701711, + 0.002401165, + -0.017347062, + -0.008877614, + -0.026556311, + -0.0025127728, + 0.011384009, + -0.0018813908, + 0.007391634, + -0.00504149, + 0.014617451, + -0.0060140733, + 0.005382691, + -0.015790928, + 0.030357357, + 0.010287062, + 0.0035618874, + -0.028418569, + -0.6865355, + -0.036811486, + 0.018852174, + 0.0051275874, + 0.018456763, + 0.031505324, + 0.010554922, + 0.023571596, + 0.0046779667, + -0.010344461, + 0.010242419, + 0.011039619, + 0.016301136, + -0.009355933, + -0.009037054, + -0.015306231, + -0.008839348, + 0.001682091, + 0.011773042, + 0.007053621, + 0.0009598282, + 0.0090944525, + -0.019515444, + 0.0056409836, + 0.020739943, + -0.002053586, + 0.0067921397, + 0.004330388, + -0.010650585, + 0.0031919868, + -0.02051035, + 0.010414614, + -0.028801223, + -0.009387822, + 0.046684004, + 0.0048565394, + -0.00541139, + 0.017155733, + 0.008105924, + 0.012640395, + -0.0029018063, + 0.0041422485, + 0.013482238, + -0.027576726, + -0.012270495, + 0.019681262, + 0.005035112, + 0.010274308, + 0.021160863, + 0.00012944527, + 0.023507819, + -0.00565055, + 0.024005271, + 0.006868671, + 0.023507819, + 0.00048669032, + 0.031403285, + -0.0006281932, + -0.003759593, + 0.0052360063, + -0.00068718597, + 0.006881426, + -0.026887946, + -0.0226022, + -0.022653222, + 0.01321438, + -0.02719407, + -0.029719599, + -0.008507714, + 0.0037978585, + -0.0015370006, + 0.0143368365, + -0.008654398, + 0.015943991, + 0.022768019, + -0.0027391776, + 0.02053586, + 0.007008978, + 0.0022879627, + 0.0080804145, + -0.0011128905, + -0.02215577, + -0.0060045067, + -0.00022819836, + 0.031709407, + -0.03324003, + -0.03053593, + -0.028622651, + 0.015905725, + -0.017347062, + 0.0351278, + 0.023035876, + -0.016798588, + -0.006747497, + -0.0072066835, + 0.014681227, + 0.0089669, + 0.007863576, + 0.005302971, + -0.010414614, + 0.010057469, + -0.005574019, + -0.0011304289, + 0.010338083, + 0.01798482, + -0.00018833838, + -0.022079239, + 0.026352227, + 0.014017956, + 0.0038425017, + 0.026683861, + -0.010287062, + -0.011664623, + 0.018775644, + 0.008775572, + -0.025676202, + 0.038316596, + 0.0013560364, + 0.011581714, + -0.00926027, + 0.014413367, + 0.023074143, + -0.0057111373, + -0.00073222775, + 0.0015314203, + -0.0012555892, + -0.011639113, + -0.009253892, + -0.037500266, + -0.0027487439, + 0.003443902, + 0.0011862329, + 0.016071543, + 0.005586774, + 0.0073661236, + -0.004292122, + 0.005685627, + -0.014974596, + 0.022487404, + -0.016479708, + -0.01491082, + -0.006170324, + -0.01321438, + 0.0050191684, + -0.0012173237, + -0.01913279, + -0.04326561, + -0.0072704596, + -0.012538354, + 0.018711867, + -0.016326645, + -0.009847009, + -0.02918388, + 0.0143368365, + 0.016632771, + 0.00010742264, + -0.022729753, + -0.010338083, + 0.0010435341, + 0.015191434, + 0.014579184, + -0.007659493, + -0.012047279, + -0.0031186445, + -0.00894139, + -0.033571664, + -0.006919692, + 0.02650529, + -0.009011543, + -0.016097052, + 0.0017187622, + -0.012659528, + -0.01658175, + -0.013341931, + -0.018061353, + -0.016913384, + -0.024579255, + -0.025421098, + -0.00076571014, + -0.01825268, + 0.002225781, + 0.025561405, + 0.010070224, + -0.020841984, + 0.047525845, + -0.019668506, + 0.012659528, + 0.025969572, + -0.012544732, + 0.015331741, + -0.0019356004, + -0.011613603, + -0.018137883, + -0.0020312644, + 0.020778209, + 0.008450315, + 0.0028061422, + 0.008603377, + 0.012308761, + -0.012034524, + 0.015242455, + -0.0031409662, + 0.015408272, + -0.026148144, + 0.0006250044, + -0.036301278, + 0.021084333, + -0.002337389, + 0.01422204, + 0.019655751, + 0.010880179, + -0.014783268, + -0.0039285994, + -0.012940142, + 0.008871236, + -0.018214414, + -0.013992446, + 0.008112302, + 0.006505148, + -0.009107207, + 0.004091228, + 0.018341966, + 0.018609826, + -0.008233476, + -0.019872589, + 0.0027870096, + 0.029770618, + 0.016658282, + -0.004008319, + -0.005991752, + -0.021428723, + 0.005178608, + -0.01886493, + 0.003852068, + -0.036148217, + -0.0004815085, + 0.0030453021, + -0.026760394, + 0.010261552, + 0.0079082195, + -0.0099362945, + 0.035408415, + 0.018150639, + -0.018775644, + 0.020829229, + -0.0082972525, + 0.027245091, + 0.021709338, + -0.013724587, + 0.012972031, + -0.005618662, + -0.0009725834, + -0.016122563, + 0.01825268, + 0.027653256, + -0.02016596, + 0.044056434, + 0.0021205507, + 0.031454302, + 0.008125057, + -0.0075383186, + -0.012359781, + 0.0031792317, + -0.021237396, + 0.023788434, + -0.0066837207, + -0.012372537, + 0.0015808466, + -0.008973278, + -0.01599501, + -0.008086792, + 0.0059758076, + 0.0020886627, + 0.0063106315, + 0.0035714537, + -0.01159447, + 0.000062032086, + -0.0031776372, + 0.031887982, + 0.013035807, + 0.005845067, + -0.032704312, + 0.012965653, + 0.0068304054, + -0.0063393307, + -0.006983468, + -0.007952862, + 0.0073342356, + -0.0038775785, + -0.0063393307, + 0.0039572986, + 0.020178715, + 0.0063425195, + -0.009183738, + 0.011371254, + -0.017385326, + -0.0029512327, + 0.005746214, + 0.0022991234, + 0.0066709653, + 0.0028874567, + -0.030025722, + -0.026084369, + -0.008705419, + -0.0023517385, + 0.010121245, + -0.0073788785, + 0.010599565, + -0.026887946, + -0.026275696, + 0.018469518, + 0.001002877, + 0.0066837207, + -0.0077168914, + -0.0037245161, + -0.0076658707, + -0.032576762, + -0.000911199, + 0.036122706, + 0.0103891045, + 0.0098725185, + -0.021186374, + -0.02218128, + -0.00062380865, + 0.073980115, + 0.0265308, + 0.0063265753, + 0.010867423, + 0.02016596, + -0.008692663, + -0.021709338, + 0.0028460023, + -0.007391634, + -0.010701606, + 0.005589963, + 0.00090242986, + -0.00088249985, + 0.006779385, + 0.0130421845, + -0.012697794, + 0.0089669, + -0.004690722, + 0.02520426, + -0.026964476, + -0.008730929, + 0.029719599, + -0.014375102, + 0.0041326825, + 0.0029097782, + 0.0053890687, + 0.017602166, + 0.0043814084, + 0.024183845, + -0.020497594, + 0.006773007, + 0.019808814, + -0.0031409662, + -0.014668471, + -0.011466918, + 0.0075829616, + -0.02650529, + -0.005765347, + 0.008705419, + -0.027423663, + 0.02989817, + 0.01047839, + 0.00912634, + -0.009802366, + -0.011313856, + 0.011945237, + -0.010376349, + 0.033316564, + -0.01783176, + -0.017780738, + 0.02549763, + -0.0032430077, + -0.010140378, + -0.012799836, + 0.013826628, + 0.0068559158, + -0.025790999, + 0.0077998, + -0.010325328, + -0.0053986353, + -0.0016900629, + -0.0037149498, + -0.009898029, + -0.008673531, + -0.010159511, + -0.008960523, + 0.0009263458, + -0.0037882922, + -0.016568994, + 0.01591848, + 0.0080804145, + -0.012168453, + -0.016913384, + -0.00061902544, + 0.02321445, + 0.011001353, + 0.010261552, + -0.006728364, + -0.0083610285, + 0.04510236, + 0.007315103, + -0.014745003, + -0.003101106, + 0.011020486, + -0.00013691901, + 0.000087542474, + 0.02119913, + -0.017066447, + -0.01822717, + 0.00038923268, + 0.041581925, + -0.006431806, + 0.027245091, + -0.009847009, + -0.009776855, + -0.002804548, + 0.014285815, + 0.0038967112, + -0.022423629, + -0.010280685, + 0.010586809, + -0.018877685, + -0.002181138, + -0.025765488, + 0.006811273, + 0.004327199, + 0.012825346, + -0.012327894, + -0.02783183, + 0.007844443, + 0.021862399, + -0.011817685, + -0.0023740602, + -0.0119643705, + -0.008048526, + 0.010682474, + 0.0061224923, + 0.01228325, + -0.0036894393, + -0.024745073, + 0.017066447, + -0.050076883, + 0.028188976, + -0.00046994913, + -0.0072768372, + -0.014081732, + 0.01146054, + -0.013877649, + -0.003268518, + 0.026683861, + -0.008494958, + 0.0179338, + -0.02287006, + -0.013915915, + -0.05505141, + -0.02852061, + 0.025637936, + 0.017002672, + -0.015982255, + -0.010695228, + -0.0026482968, + 0.015178679, + 0.002504801, + -0.0012810996, + -0.041479886, + -0.019961877, + -0.0008179267, + 0.02650529, + -0.014655716, + 0.02650529, + -0.007219439, + 0.021033311, + 0.0038169913, + 0.023099653, + 0.0008434371, + -0.0031298052, + -0.015637865, + -0.009719457, + 0.023520574, + 0.024132824, + 0.0008243043, + -0.0006098576, + 0.0008769195, + -0.0020631524, + -0.011390387, + -0.0009446814, + -0.009030676, + -0.0026036536, + -0.019196564, + 0.011065129, + 0.034668613, + 0.012111055, + 0.019426158, + -0.0066900984, + 0.015765417, + 0.008973278, + 0.0018431253, + -0.015765417, + -0.035025757, + -0.045536038, + 0.0023724658, + -0.0010762194, + -0.013992446, + -0.0011407925, + -0.001626287, + 0.002793387, + 0.018239925, + 0.007391634, + 0.007920975, + 0.006297876, + 0.033673707, + -0.0014827912, + 0.041250292, + -0.010019204, + -0.0022050538, + -0.002672213, + -0.022372607, + -0.0006509134, + 0.013163358, + -0.0052360063, + 0.014234794, + 0.0041263048, + 0.0106697185, + -0.020076673, + 0.019489935, + 0.009241137, + 0.024069048, + 0.0011790581, + -0.0008099547, + -0.009783233, + -0.025012933, + -0.032806356, + -0.038648233, + -0.028826734, + 0.009100829, + 0.00036073278, + -0.030561442, + 0.020076673, + 0.007659493, + -0.032194104, + 0.005009602, + 0.014668471, + 0.02326547, + -0.009406954, + 0.022653222, + 0.007901842, + -0.013201624, + -0.0022927457, + -0.0034375244, + -0.016517974, + 0.012869989, + 0.033648197, + 0.01783176, + -0.009623793, + 0.0075128083, + 0.010912067, + 0.0060108844, + 0.0118559515, + -0.013188869, + -0.011345743, + 0.009961805, + 0.008144191, + -0.020893006, + 0.012487333, + -0.010988598, + 0.019489935, + -0.021148108, + -0.0098725185, + -0.0003443902, + -0.022742508, + -0.0024745073, + 0.0042347237, + -0.037933942, + 0.010216909, + 0.018354721, + 0.011256457, + -0.0071939286, + 0.008431182, + -0.002705695, + -0.0028141143, + -0.013992446, + 0.004805519, + -0.015446538, + 0.0023118786, + -0.00040497736, + 0.007755157, + -0.019081768, + -0.004263423, + -0.00060826325, + 0.025995081, + -0.0069388244, + -0.0070344885, + -0.01724502, + 0.01010849, + 0.042653363, + -0.03196451, + -0.00028141143, + 0.0033354827, + -0.0013042184, + -0.009770477, + 0.0028619464, + -0.0014341619, + -0.0109503325, + 0.026479779, + -0.01228325, + -0.011753909, + -0.016275626, + -0.016543485, + 0.0035714537, + -0.0073023476, + -0.0038138025, + -0.01702818, + 0.011045996, + 0.013775608, + 0.003000659, + -0.0023246338, + 0.015510314, + 0.0034949228, + -0.027474685, + 0.03303595, + -0.015523069, + 0.005586774, + 0.00025012135, + 0.010912067, + -0.0024474026, + 0.0011288346, + 0.029949192, + -0.0010969465, + -0.02056137, + -0.008418427, + 0.004703477, + -0.0074745426, + -0.004942637, + -0.015370007, + -0.005417768, + -0.00397962, + 0.015535824, + -0.009566395, + -0.008341895, + -0.016211849, + -0.014885309, + -0.008329141, + 0.014961841, + -0.0148342885, + -0.0067857625, + 0.01894146, + -0.0031537213, + -0.00018235939, + -0.021415967, + -0.014107242, + -0.011020486, + 0.007901842, + 0.0026865625, + -0.019222075, + 0.0017745661, + -0.017997576, + 0.0008031785, + -0.0034534682, + 0.0012611697, + 0.008265365, + 0.007072754, + 0.014362346, + -0.022347096, + 0.023507819, + -0.007838066, + 0.0021349003, + -0.009457975, + -0.0022895571, + -0.02650529, + 0.0021380892, + -0.008552357, + 0.0052551394, + 0.0060682828, + -0.027551215, + -0.026058858, + 0.012844479, + -0.0121365655, + 0.0087500615, + 0.0067347414, + -0.0048087076, + 0.01424755, + 0.0014230012, + -0.017359817, + 0.030178785, + -0.0095919045, + 0.0055357534, + -0.023584351, + 0.002146061, + -0.010918445, + -0.01955371, + -0.009477108, + 0.020000141, + -0.0004902777, + -0.018010331, + 0.019273095, + -0.0042442903, + -0.0014859799, + -0.012697794, + 0.0035140554, + -0.0016932518, + 0.016109807, + 0.0032908395, + 0.027092028, + -0.0048597283, + 0.010912067, + -0.0077168914, + 0.00039501235, + 0.007952862, + 0.0226022, + -0.008520468, + -0.0067921397, + 0.012040902, + -0.010318951, + -0.01109064, + -0.028239995, + 0.023622615, + -0.012315138, + 0.013380197, + 0.019617485, + -0.016734812, + -0.00037986558, + 0.03125022, + -0.0078061777, + -0.016033277, + -0.018010331, + 0.0029671765, + -0.020038407, + -0.006919692, + 0.005035112, + -0.016364912, + 0.0038743897, + -0.025561405, + -0.0073788785, + -0.030995118, + -0.015102148, + -0.019349627, + 0.004897994, + -0.026352227, + 0.02397976, + 0.028342037, + -0.025140485, + 0.00045320793, + -0.028316528, + -0.0022736131, + -0.011932482, + -0.0072768372, + -0.0070344885, + -0.04186254, + -0.026734883, + -0.010159511, + -0.007882709, + -0.020255245, + 0.00096939463, + -0.0025558216, + 0.00058992766, + 0.021148108, + 0.22857304, + -0.0031298052, + -0.016862364, + 0.034770653, + -0.0035618874, + 0.02387772, + 0.03456657, + -0.0063106315, + 0.013533259, + 0.042296216, + -0.008310008, + 0.0077615343, + 0.00030014562, + 0.00043806114, + 0.022130258, + -0.02589304, + -0.015421027, + -0.020114938, + -0.013316421, + -0.010248797, + 0.020433819, + -0.015586845, + 0.00928578, + 0.008067659, + 0.03997477, + 0.002058369, + -0.017308796, + 0.0074043893, + 0.01913279, + 0.0038425017, + -0.004591869, + -0.0027343943, + 0.0013329176, + -0.012015391, + -0.014489898, + 0.01294652, + 0.00636803, + 0.012557487, + 0.026709372, + 0.037576795, + 0.0048852386, + 0.016734812, + -0.022716997, + -0.00530616, + -0.008246232, + 0.016824098, + -0.020459328, + 0.010216909, + 0.022806283, + 0.00472261, + -0.0154592935, + 0.0052487617, + 0.019107278, + 0.01727053, + -0.002700912, + 0.02164556, + 0.033393092, + -0.0027184503, + 0.021007802, + -0.019668506, + -0.008501336, + 0.017500123, + -0.019107278, + 0.00880746, + 0.0015808466, + -0.016364912, + -0.007059999, + -0.005338048, + 0.016824098, + -0.008998788, + 0.015012861, + 0.010548544, + 0.019451668, + 0.0159695, + -0.007755157, + -0.01395418, + 0.031097159, + 0.002433053, + 0.02323996, + -0.0010124433, + -0.008386539, + -0.0020950404, + -0.022780774, + 0.0016549862, + -0.0049490146, + -0.024643032, + 0.015025617, + 0.0038456905, + 0.022283321, + -0.015165923, + 0.0015593222, + -0.0029735542, + 0.011205437, + -0.012863612, + 0.020178715, + 0.025446609, + -0.009234759, + 0.021632805, + -0.026071614, + 0.012340648, + -0.03165839, + -0.026632842, + 0.0072768372, + -0.016466953, + -0.007787045, + 0.008839348, + 0.002525528, + 0.011224569, + 0.020905761, + 0.008271743, + -0.015714398, + -0.0018463141, + 0.010312573, + -0.017500123, + 0.020038407, + -0.005905654, + 0.00472261, + -0.019694017, + -0.004869295, + -0.021071577, + -0.01292101, + -0.027602237, + -0.0075128083, + 0.008086792, + -0.008673531, + -0.0028109255, + 0.006205401, + 0.00880746, + 0.0014652527, + -0.050102394, + 0.017155733, + 0.0059120315, + 0.023686392, + -0.011109772, + -0.011741155, + 0.004343143, + -0.010994975, + 0.008935012, + -0.003284462, + 0.007155663, + -0.012595752, + -0.017500123, + 0.017729716, + -0.016811343, + 0.0027072895, + -0.003164882, + 0.00008684492, + -0.020446572, + -0.032041043, + -0.031046137, + -0.008418427, + -0.023673637, + 0.0009072131, + -0.015943991, + 0.02982164, + 0.0024840736, + -0.018239925, + -0.016568994, + -0.007563829, + 0.029438984, + -0.005309349, + 0.017117469, + 0.023992516, + -0.022678731, + -0.0077487794, + -0.008227099, + -0.16255218, + 0.030459398, + 0.007767912, + -0.0041454374, + -0.0028794846, + 0.0018766077, + 0.021071577, + 0.020995047, + -0.00963017, + 0.026275696, + 0.003284462, + 0.002740772, + -0.037933942, + -0.012710549, + -0.00421878, + 0.02156903, + -0.010625076, + -0.003048491, + 0.015676131, + 0.006932447, + 0.012563865, + -0.027984891, + 0.012640395, + 0.013482238, + 0.009802366, + 0.007251327, + -0.016250115, + 0.03584209, + -0.002053586, + -0.009247514, + -0.004971336, + 0.0017028182, + 0.017372573, + 0.021964442, + 0.011607225, + 0.011575337, + -0.003128211, + 0.0033673707, + -0.0032605461, + -0.0003272504, + 0.0027870096, + 0.022768019, + -0.008762817, + 0.008635265, + -0.0052519506, + 0.013762852, + 0.03566352, + 0.013456728, + 0.006380785, + -0.006428617, + 0.0036894393, + -0.042780913, + -0.01862258, + -0.013864894, + 0.020867495, + 0.022780774, + 0.03058695, + 0.0097640995, + -0.0179338, + 0.015701642, + 0.010790893, + -0.03655638, + -0.010019204, + 0.020688921, + -0.006030017, + -0.017997576, + 0.014796023, + 0.000645333, + 0.001262764, + 0.0020806908, + -0.019745037, + -0.009968183, + 0.004014697, + -0.032729823, + 0.010880179, + 0.012149321, + 0.004330388, + -0.0084694475, + -0.009075319, + -0.011970748, + -0.0042761783, + 0.026173655, + -0.0117475325, + -0.0012492116, + -0.007927352, + 0.018239925, + -0.005175419, + -0.007283215, + -0.026084369, + -0.020357287, + 0.02562518, + -0.050051376, + -0.0028460023, + -0.038061492, + 0.0119643705, + 0.018316457, + 0.00245378, + -0.004595058, + 0.0060045067, + -0.0042857444, + 0.016517974, + -0.005449656, + -0.01658175, + 0.011881461, + 0.015727151, + 0.017372573, + -0.009394199, + 0.0012763165, + 0.029745108, + 0.009273025, + -0.0057749134, + 0.027984891, + 0.006202212, + 0.025739977, + 0.011511561, + 0.005762158, + -0.00026506884, + -0.028367547, + -0.00096620584, + -0.0070982645, + 0.042245198, + -0.0016868742, + -0.005513432, + 0.013494994, + -0.004196458, + -0.0017586221, + -0.10663341, + 0.00070592016, + 0.017194, + 0.015370007, + -0.0019005237, + 0.006836783, + -0.007723269, + 0.016441442, + 0.0120983, + 0.030306337, + -0.003332294, + -0.017755227, + -0.014796023, + -0.0019722716, + 0.0008960523, + -0.0106697185, + 0.005551697, + -0.032296147, + -0.03043389, + 0.003199959, + -0.012225851, + -0.005717515, + 0.004735365, + -0.02443895, + -0.006779385, + 0.0072768372, + -0.033495136, + 0.016377667, + 0.0090944525, + -0.0028300583, + 0.010765382, + -0.009528128, + 0.022449138, + -0.008628887, + -0.015344496, + -0.007812555, + -0.01491082, + -0.016122563, + 0.007965618, + -0.024451703, + -0.0039987527, + 0.0029464494, + 0.0012356592, + -0.024056293, + -0.016887875, + 0.010459257, + 0.0016964406, + 0.0064158617, + -0.0017044125, + -0.021594541, + 0.0057749134, + 0.024145579, + -0.011148038, + -0.0063552745, + 0.03994926, + -0.0060746605, + 0.00878195, + 0.01660726, + -0.016492464, + -0.00078045833, + -0.0065944344, + 0.023176184, + -0.0136353, + 0.034158405, + -0.017066447, + -0.012716927, + -0.037321694, + 0.009706701, + 0.018495029, + -0.02181138, + 0.0059471084, + 0.022704242, + -0.017870024, + 0.020076673, + -0.0082526095, + 0.0049362592, + -0.019489935, + -0.02454099, + 0.015395517, + -0.02788285, + -0.032219615, + -0.03114818, + 0.00947073, + -0.022283321, + -0.0071429075, + 0.02589304, + -0.003982809, + -0.01191335, + 0.02780632, + -0.0026706185, + 0.0074298996, + 0.04247479, + 0.007487298, + -0.03632679, + -0.016390422, + 0.02591855, + -0.0011256457, + -0.0131506035, + -0.008067659, + -0.014451633, + -0.021798624, + -0.0057430253, + -0.036939036, + 0.023762923, + -0.028979797, + -0.026199166, + 0.007085509, + 0.0124618225, + 0.0014955463, + -0.009725834, + -0.019528199, + -0.0066582104, + -0.026811413, + 0.0081888335, + -0.010459257, + -0.017921045, + -0.017347062, + -0.0006728364, + 0.021926176, + -0.0026275697, + 0.018354721, + -0.00033781328, + 0.0056728716, + 0.006457316, + 0.015676131, + 0.002165194, + -0.03372473, + 0.012493711, + -0.032194104, + -0.011103394, + -0.023609862, + 0.0006425428, + 0.014171018, + -0.012729682, + 0.02146699, + 0.029566536, + -0.020918515, + -0.022359852, + -0.0108865565, + 0.026734883, + 0.011358499, + -0.01724502, + -0.022487404, + -0.026007837, + 0.0145536745, + -0.016645527, + -0.016824098, + 0.02051035, + 0.0005568439, + -0.0059439195, + 0.007213061, + -0.0018845797, + 0.00843756, + 0.023418533, + 0.027678767, + -0.014464388, + -0.003947732, + -0.0018399365, + 0.022933835, + 0.021097088, + -0.007876331, + -0.009623793, + 0.0063552745, + -0.006537036, + 0.011371254, + 0.020995047, + -0.0029719598, + 0.007219439, + -0.009853386, + 0.0061129257, + 0.010574054, + -0.03127573, + -0.010803648, + -0.008718174, + 0.03336758, + 0.0012308761, + 0.02984715, + 0.0012165265, + -0.004499394, + -0.007965618, + -0.009783233, + 0.019489935, + 0.009668436, + -0.000117586926, + -0.019936366, + 0.0003408028, + 0.02589304, + 0.025752733, + -0.03584209, + -0.01947718, + 0.016097052, + -0.0044483733, + -0.02321445, + 0.013750098, + -0.011007731, + 0.014349591, + 0.0028874567, + 0.0015210566, + 0.008105924, + -0.0057430253, + -0.0037053833, + 0.03966865, + 0.0006297876, + -0.0041613816, + -0.0120983, + -0.020382797, + -0.019591976, + 0.00040597384, + -0.01894146, + -0.009560017, + -0.010325328, + 0.0001715972, + -0.010867423, + 0.0041103605, + -0.009636547, + 0.02454099, + -0.0113393655, + 0.007187551, + -0.043546226, + -0.016492464, + -0.02294659, + 0.014681227, + 0.0017793493, + 0.005414579, + 0.00811868, + -0.0044451845, + 0.025038442, + 0.017474614, + 0.03181145, + -0.011715644, + -0.0052934047, + 0.0245665, + 0.006336142, + -0.015216945, + 0.0150511265, + -0.020357287, + -0.021607297, + -0.0080804145, + -0.015676131, + 0.028852245, + -0.00020318622, + 0.04770442, + -0.0029209391, + -0.018418498, + 0.02928592, + -0.005290216, + -0.00029655822, + 0.007391634, + 0.012908255, + -0.0126340175, + -0.011766665, + -0.012997541, + -0.0012452257, + 0.025688957, + -0.0016996294, + -0.009802366, + -0.00012725298, + -0.03265329, + 0.033316564, + -0.039719667, + -0.011766665, + 0.0096556805, + 0.0049362592, + 0.024655787, + 0.008979656, + -0.016454197, + -0.00039182356, + 0.010408237, + 0.015688887, + -0.019158298, + -0.008246232, + 0.014005201, + -0.0113011, + -0.03721965, + -0.0096556805, + 0.0077742897, + -0.02783183, + -0.015012861, + -0.026377738, + -0.0013456728, + 0.014171018, + 0.012187586, + 0.010580432, + -0.029081838, + -0.032882884, + -0.0073852562, + -0.004355898, + -0.023762923, + -0.0035140554, + -0.022053728 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 46, + "total_tokens": 46 + } +} +327 34444 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 131 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["What colors are all of the pieces of furniture next to the desk and the desk itself?"]}HTTP/2.0 200 OK +Content-Length: 33489 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:21:16 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 92 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-ft5fh +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999979 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_a838924c5ea54e388a8418a22227a237 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.010940914, + 0.00037101895, + 0.0019054401, + -0.018620905, + -0.012196111, + 0.010196854, + -0.024728665, + -0.0048946193, + 0.019022051, + 0.0058942474, + 0.0070329825, + -0.0033191538, + -0.022502957, + 0.0068453504, + -0.005832782, + 0.0009373536, + 0.010552709, + 0.016097572, + 0.026281487, + -0.020885436, + -0.032816272, + 0.009122821, + -0.003642658, + -0.0032479828, + -0.021040717, + 0.008708735, + 0.030823486, + -0.004545235, + 0.009433384, + 0.01748217, + 0.03421381, + -0.010170974, + 0.0015277489, + -0.039596923, + -0.012558435, + 0.02888246, + 0.00837229, + 0.0072982563, + 0.01519176, + -0.007815863, + -0.0021076303, + 0.009562786, + 0.00030207212, + 0.00009371514, + -0.0046228757, + 0.0040761535, + 0.011186778, + 0.016226973, + -0.015748188, + 0.0040082177, + 0.021959469, + 0.036517162, + -0.02049723, + -0.017805675, + 0.009291043, + -0.018426802, + 0.0032415127, + 0.041434426, + -0.035973676, + -0.011549102, + 0.009724538, + 0.002754639, + -0.0017954487, + -0.001341734, + -0.004102034, + -0.015049418, + -0.01288841, + 0.0018569145, + -0.0029940319, + 0.0110250255, + 0.034343213, + 0.055849776, + 0.015101179, + 0.01589053, + 0.033152718, + -0.0014484903, + 0.0087928455, + 0.0023809914, + -0.0065024355, + -0.0027853716, + 0.00987335, + 0.0012762243, + -0.027873127, + -0.0019572007, + 0.023175845, + 0.00016347074, + 0.02357699, + 0.027588444, + -0.007912914, + -0.0021302756, + -0.015372923, + 0.028494256, + 0.009769829, + -0.011251478, + -0.0077058715, + 0.01586465, + 0.019229094, + 0.022671178, + 0.004791098, + -0.02968475, + 0.015579965, + 0.017715093, + -0.03856171, + 0.0033417991, + -0.019034991, + -0.027484922, + -0.000926031, + -0.020717213, + 0.020354887, + -0.014907076, + -0.034472615, + 0.028261332, + 0.023318186, + -0.016201094, + -0.002047782, + -0.01818094, + 0.035559587, + -0.018698547, + -0.009815119, + -0.016421076, + 0.0045064143, + 0.043634254, + 0.026126204, + -0.026993196, + 0.028753059, + 0.002591269, + -0.008864017, + -0.0067030084, + -0.026372068, + -0.016472837, + 0.007692931, + 0.022671178, + 0.009316923, + 0.027536683, + -0.006596252, + 0.0040308633, + -0.016252855, + 0.021687726, + 0.00646685, + -0.008171718, + 0.011736735, + 0.015424684, + -0.009252222, + -0.0074858884, + 0.00986688, + 0.034162052, + 0.012364333, + -0.011283829, + -0.021739487, + -0.0035132563, + 0.01445417, + 0.00044684028, + 0.015411743, + 0.0130372215, + 0.0069488715, + 0.017145727, + -0.03623248, + -0.018336222, + -0.030849367, + -0.012726658, + -0.023357008, + -0.010119214, + 0.025957981, + -0.0077705723, + 0.028649537, + 0.020238427, + 0.027226118, + 0.012364333, + -0.0064215595, + -0.003500316, + -0.012435504, + 0.019940803, + -0.020303128, + 0.0072335554, + 0.004037333, + 0.0078029227, + 0.017249247, + -0.0077899825, + -0.008876957, + -0.0038917563, + 0.0061336407, + -0.020290187, + 0.01749511, + -0.009232812, + -0.0095174955, + -0.023939315, + 0.0104103675, + -0.01666694, + 0.0027061133, + -0.006631837, + 0.030487042, + 0.005842487, + -0.0058133714, + -0.011245009, + -0.65384096, + -0.046429332, + 0.023887554, + -0.02202417, + 0.012344923, + 0.03035764, + 0.02357699, + 0.030849367, + 0.00004443129, + -0.02348641, + 0.012830179, + 0.0069553414, + 0.027743725, + -0.017702153, + -0.0037300042, + -0.024625145, + 0.022425316, + 0.014285948, + -0.011490871, + 0.0017356004, + -0.0060527646, + 0.020885436, + 0.00063164206, + -0.006389209, + 0.02820957, + 0.009045179, + 0.017702153, + -0.008488752, + -0.009679248, + 0.015308222, + -0.024366342, + 0.015321162, + -0.020354887, + -0.005528688, + 0.037552375, + -0.00085647753, + -0.0212607, + 0.015359983, + 0.0062953928, + 0.024819247, + -0.0097439485, + 0.008482282, + 0.008495222, + -0.01589053, + 0.0074729486, + 0.00025597276, + 0.018944409, + 0.0017792735, + 0.0377853, + -0.014492991, + 0.00914223, + -0.017081026, + -0.0031638716, + 0.014156546, + 0.03284215, + 0.0013207061, + 0.04461771, + 0.019306734, + 0.005751906, + 0.006282453, + 0.003338564, + -0.001672517, + -0.035326667, + -0.008132897, + -0.031366974, + 0.0043737777, + -0.038173504, + -0.03470554, + -0.023046443, + -0.02346053, + 0.010462128, + 0.011122077, + -0.01900911, + 0.020393709, + 0.028468376, + 0.0073306067, + 0.02952947, + 0.0032091623, + 0.011458521, + -0.012260811, + -0.0056645595, + -0.0049916706, + -0.03108229, + -0.0145447515, + 0.029348306, + -0.016615178, + -0.019280855, + -0.01667988, + 0.016511658, + 0.005020786, + 0.013496598, + 0.018646786, + 0.00041812926, + -0.006165991, + -0.00142908, + 0.026941435, + -0.004781393, + 0.0017339828, + -0.00045411912, + -0.001118516, + 0.006123936, + -0.012435504, + -0.0060074744, + 0.0031800468, + 0.024081657, + -0.015722306, + -0.027484922, + 0.03411029, + 0.01977258, + -0.00685829, + 0.008728145, + -0.04182263, + -0.015994051, + 0.0071947346, + 0.009362213, + -0.032221023, + 0.045989364, + 0.0014808407, + 0.0024553973, + -0.0042023202, + 0.017663334, + 0.0045064143, + -0.007945265, + -0.009232812, + 0.024482803, + 0.0016102424, + 0.0017792735, + -0.02509099, + -0.018439744, + 0.017986838, + 0.019086752, + 0.0007299065, + 0.008119957, + -0.00094058865, + -0.009426914, + -0.013276615, + 0.009595136, + -0.011070316, + 0.023887554, + -0.023952255, + -0.021674786, + -0.009051649, + 0.0006474129, + 0.0032318076, + -0.004878444, + -0.016563417, + -0.030150598, + -0.0001479021, + -0.028546017, + -0.0063374485, + -0.03403265, + -0.014648273, + -0.04016629, + 0.0066835983, + 0.025686238, + 0.001750158, + -0.03328212, + 0.00026648663, + -0.0035035512, + 0.016485777, + 0.0033029786, + -0.012551965, + 0.0028533076, + 0.005839252, + -0.008139367, + -0.021571264, + -0.020587811, + 0.023796974, + -0.0003390729, + -0.02505217, + -0.0032512178, + -0.008779906, + -0.0055675083, + -0.0077770427, + -0.024599263, + -0.004923735, + -0.0044158334, + -0.014790615, + -0.00012242615, + -0.0073370766, + -0.00047595563, + 0.008074666, + -0.0029244786, + 0.010772692, + 0.032945674, + 0.000028913193, + 0.016861042, + 0.018413862, + -0.017042205, + 0.006243632, + 0.002578329, + -0.0057195555, + -0.014609452, + -0.017728034, + 0.0074664783, + 0.0052569443, + -0.005463987, + -0.0063180383, + 0.01062388, + -0.0060333544, + 0.025401555, + -0.0032835682, + 0.018802067, + -0.028261332, + 0.013406017, + -0.02511687, + 0.011542632, + -0.008954598, + -0.008391701, + 0.028623657, + 0.017792735, + -0.042935487, + 0.0024246646, + -0.019345555, + 0.017960956, + -0.01291429, + -0.020950137, + 0.016861042, + -0.019707879, + 0.0038141152, + 0.005011081, + 0.0037720597, + 0.02958123, + -0.006227457, + -0.015023538, + -0.01065623, + 0.023227606, + 0.024547504, + 0.0013902596, + -0.013418957, + -0.018879708, + -0.012299632, + -0.0061142305, + 0.013444837, + -0.017676273, + 0.00681947, + 0.0050434317, + -0.017844494, + -0.0035164913, + 0.009756888, + -0.006696538, + 0.03266099, + 0.0021852714, + -0.005451047, + 0.029814152, + -0.0038335256, + 0.007660581, + 0.028313093, + -0.027510803, + 0.01138088, + 0.0070847436, + -0.00042823877, + -0.01749511, + 0.02197241, + 0.018672666, + -0.0107468115, + 0.045212954, + -0.012351393, + 0.01290135, + 0.012610196, + -0.0020332243, + -0.017236307, + 0.012707247, + -0.021623025, + 0.014324768, + -0.009808649, + -0.025621537, + -0.00493991, + 0.012331982, + -0.012293162, + 0.000027598957, + 0.010843863, + 0.012991931, + 0.0070265126, + 0.009316923, + -0.00681947, + 0.0012835031, + -0.018620905, + 0.025699178, + 0.0076864613, + -0.006140111, + -0.020898376, + 0.021726547, + 0.00683241, + -0.0080681965, + -0.008268769, + -0.021687726, + 0.01440241, + -0.012759008, + 0.009718068, + 0.016511658, + 0.027459042, + 0.020419588, + -0.0082364185, + -0.00569691, + -0.030538803, + 0.007938795, + 0.0078029227, + 0.021765366, + 0.0044352436, + -0.009899231, + -0.0009575726, + -0.041356783, + -0.013690701, + 0.017042205, + 0.010953855, + 0.004710222, + -0.015631726, + -0.026203845, + -0.04927617, + -0.012564906, + 0.00022584641, + -0.01220258, + -0.0042929016, + -0.00569691, + -0.008398171, + -0.044255383, + -0.009957462, + 0.04557528, + 0.0258674, + -0.017365709, + -0.028390734, + -0.008689324, + 0.0007481036, + 0.07049805, + 0.02743316, + -0.013393076, + 0.01587759, + -0.00081765704, + -0.010455658, + -0.0034841408, + -0.0019620534, + 0.008022905, + -0.008935188, + 0.003068438, + 0.002510393, + 0.0032593054, + -0.0079582045, + 0.0036361879, + -0.0070071025, + -0.005628974, + -0.019358495, + 0.011743205, + -0.03113405, + -0.02127364, + 0.017637452, + -0.005758376, + 0.020846615, + -0.0070912135, + 0.028002528, + 0.014117726, + 0.00058109453, + 0.01667988, + -0.026061503, + 0.0099121705, + 0.023072325, + -0.012739598, + 0.0050369613, + -0.027717846, + -0.030487042, + -0.010889154, + 0.021713607, + 0.0070847436, + -0.003581192, + 0.022412375, + 0.0019749936, + -0.0024780426, + -0.02274882, + -0.0035456067, + 0.025401555, + -0.016175212, + 0.011704384, + -0.0076799914, + -0.015554085, + 0.007505299, + -0.007117094, + -0.0017275128, + -0.0069359313, + 0.0052342988, + -0.011173837, + -0.033825606, + -0.014040085, + -0.003869111, + -0.022127692, + 0.0061271708, + 0.014040085, + 0.009750418, + 0.00084596366, + -0.018310342, + -0.032790393, + -0.013975384, + 0.0027837541, + -0.008482282, + -0.02192065, + -0.020794854, + -0.0036232478, + -0.0073241363, + -0.004244376, + 0.03364444, + 0.02655323, + 0.025336854, + -0.023589931, + 0.005011081, + 0.033592682, + 0.0008322147, + -0.010229205, + 0.006690068, + 0.0056225043, + 0.010138623, + -0.0012592403, + 0.035896033, + -0.009996282, + -0.0048428588, + 0.006224222, + 0.030668205, + -0.0019539658, + 0.021480683, + -0.015735248, + -0.007867624, + -0.0036620682, + 0.01290782, + 0.016589299, + -0.025453316, + -0.024443982, + 0.013574239, + -0.023991076, + 0.0052342988, + -0.017158667, + -0.009938051, + 0.0038270555, + 0.008508163, + -0.0028436026, + -0.011982598, + 0.013794222, + 0.011866136, + -0.0057195555, + -0.016654, + -0.005848957, + 0.008844607, + 0.008113487, + 0.009614547, + 0.024172239, + -0.021403043, + -0.0019086752, + 0.033049196, + -0.046843417, + 0.030823486, + -0.0040632137, + -0.030927008, + -0.0005730069, + 0.008993419, + -0.0039014614, + 0.004930205, + 0.0082881795, + -0.018413862, + 0.03656892, + -0.0041376194, + -0.011924367, + -0.032428067, + -0.010073923, + 0.015450563, + 0.014764735, + -0.018620905, + 0.0010384487, + -0.011898487, + 0.01366482, + -0.008139367, + -0.018659726, + -0.03871699, + -0.029891795, + -0.0028565426, + 0.017158667, + -0.004260551, + 0.026035624, + -0.0045937607, + 0.0068906406, + -0.011963188, + 0.0023098204, + -0.022412375, + -0.012060239, + -0.01441535, + -0.012681367, + 0.021519504, + 0.010520359, + 0.008935188, + 0.0019151452, + 0.0070200423, + 0.009724538, + 0.0039273417, + 0.0085146325, + -0.016239913, + -0.0073758974, + 0.0008872104, + 0.016188154, + 0.010403897, + 0.008669915, + 0.010733872, + 0.012713717, + 0.008728145, + 0.036931247, + -0.017922137, + -0.0110250255, + -0.019552598, + -0.032324545, + 0.013781281, + -0.014285948, + -0.017378649, + -0.0008221052, + -0.0053604655, + -0.000670867, + 0.005454282, + 0.0033547392, + 0.0011872606, + -0.016343435, + 0.036206596, + 0.0006227457, + 0.033722084, + -0.019707879, + 0.01441535, + 0.0075829397, + -0.019863162, + -0.014764735, + -0.0065380214, + -0.004344662, + 0.0041635, + 0.018931469, + 0.008967538, + -0.020303128, + 0.0007489124, + -0.008087606, + 0.013354256, + 0.0043964228, + -0.016356375, + -0.021830067, + -0.030927008, + -0.017210428, + -0.017365709, + -0.032143384, + 0.012571376, + -0.004402893, + -0.045471758, + 0.010552709, + 0.007136504, + -0.035430185, + -0.009996282, + -0.010830923, + 0.026165025, + 0.012978991, + 0.0032835682, + 0.017106906, + -0.010319786, + 0.0036103076, + -0.023978136, + -0.027795486, + 0.00456788, + 0.026734393, + 0.03737121, + -0.028494256, + 0.027303759, + 0.010073923, + -0.015411743, + 0.0009624252, + -0.025530957, + -0.00835288, + -0.007822333, + 0.017042205, + -0.025919162, + 0.011225598, + -0.011613803, + 0.0046714013, + -0.011050906, + -0.019086752, + 0.02120894, + -0.003788235, + -0.002358346, + 0.020160785, + -0.0438413, + 0.03258335, + 0.021687726, + 0.00911635, + -0.019565538, + 0.0020639573, + -0.003642658, + 0.0013465865, + -0.0009041944, + 0.017275129, + -0.00454847, + 0.009659837, + 0.0063406834, + 0.011911427, + -0.022334734, + -0.013354256, + 0.0005232681, + 0.026385007, + -0.018517384, + 0.0066447775, + -0.009672778, + 0.017986838, + 0.048189197, + -0.014182427, + -0.0044417134, + -0.0016708996, + -0.02355111, + 0.0037526495, + 0.003720299, + -0.016175212, + -0.00014274626, + 0.02129952, + -0.017689213, + -0.008909307, + -0.013858923, + -0.011989068, + 0.004474064, + -0.019358495, + -0.02199829, + -0.010086863, + 0.0142083075, + 0.009633957, + 0.004855799, + -0.021040717, + 0.00906459, + -0.008443461, + -0.02494865, + 0.035093743, + -0.0069359313, + 0.007667051, + -0.014868256, + 0.021428922, + -0.0076799914, + -0.023085264, + 0.04404834, + 0.0065768417, + -0.029011862, + -0.013910683, + 0.016796341, + -0.012972521, + 0.0029180085, + -0.013231324, + -0.0015689956, + -0.006677128, + 0.012325512, + -0.001672517, + 0.0044546537, + 0.0034776707, + -0.012733128, + 0.0047619827, + 0.0027869893, + -0.0049043247, + 0.02114424, + -0.0004650374, + 0.007751162, + 0.018245641, + -0.024379281, + -0.014855316, + -0.012810769, + 0.007518239, + -0.0084564015, + -0.006922991, + -0.010805042, + -0.0054995725, + -0.0052116537, + -0.007738222, + -0.004655226, + -0.004014688, + 0.007447068, + 0.02503923, + -0.00015700066, + 0.027148478, + -0.011037965, + 0.005017551, + -0.018491503, + -0.04026981, + -0.03721593, + -0.007207675, + 0.007000632, + 0.0034582606, + 0.009808649, + -0.044565946, + -0.03405853, + 0.020380769, + -0.002689938, + -0.02048429, + 0.025207452, + 0.007964675, + 0.030202357, + -0.0056580896, + -0.024676906, + 0.03263511, + 0.008081136, + -0.006961812, + -0.019966682, + -0.011102666, + 0.0030797606, + -0.024806308, + 0.00606247, + 0.0038497008, + -0.0074988287, + -0.030098837, + 0.042210836, + 0.0031881344, + -0.013910683, + -0.019177333, + 0.0018763248, + 0.0010344048, + 0.0024634849, + 0.014078906, + 0.039648682, + 0.01744335, + -0.012448444, + -0.02052311, + -0.00058271206, + 0.0056030937, + 0.033980887, + -0.016369315, + -0.0035973673, + 0.009336333, + -0.012241402, + -0.011665564, + -0.014842375, + 0.00986688, + 0.013975384, + 0.025065111, + 0.011710854, + -0.014298889, + 0.008281709, + 0.018491503, + -0.007712342, + -0.027096717, + -0.012480794, + -0.017766854, + -0.032764513, + -0.02582858, + 0.014518871, + -0.021066597, + 0.0048202137, + -0.009756888, + -0.006288923, + -0.013380136, + -0.031004649, + -0.02743316, + -0.010242145, + -0.009401034, + 0.01891853, + 0.019190272, + -0.0030393226, + 0.008249358, + -0.032039862, + -0.020096084, + -0.018789127, + -0.015411743, + -0.01371658, + -0.04459183, + -0.014687094, + 0.0060980553, + -0.012196111, + -0.01515294, + 0.0024133418, + 0.007343547, + 0.025142752, + 0.022826461, + 0.23830618, + 0.0027449336, + -0.0038464656, + 0.029814152, + 0.0019572007, + 0.032945674, + 0.028338974, + 0.004490239, + 0.029193025, + 0.04707634, + -0.0068647605, + 0.003869111, + 0.0036264828, + 0.006974752, + 0.01965612, + -0.011982598, + -0.047024578, + -0.015748188, + -0.008113487, + 0.018543264, + 0.014078906, + 0.00759588, + 0.0093492735, + -0.0057486705, + 0.026294427, + 0.010973264, + -0.0060948203, + 0.00028124652, + 0.0006882553, + 0.0050466666, + 0.0014218013, + -0.017948017, + 0.0050434317, + 0.004389953, + -0.000111103494, + -0.0033806195, + -0.011814375, + -0.004639051, + 0.03273863, + 0.023732273, + 0.0105268285, + -0.0125907855, + -0.041434426, + -0.0070718033, + -0.0036717735, + 0.008210538, + -0.01890559, + 0.0015277489, + 0.02045841, + 0.0027724316, + -0.020005504, + -0.006327743, + 0.017003383, + 0.027950767, + -0.0020186666, + 0.019099692, + 0.016472837, + -0.021079538, + 0.018491503, + -0.0033320938, + -0.018387983, + 0.038354665, + -0.01444123, + 0.010824453, + 0.0060074744, + -0.011296769, + 0.0018569145, + -0.002000874, + 0.032479826, + -0.016861042, + 0.021027777, + 0.017016325, + 0.00170325, + 0.0070718033, + 0.016576359, + -0.006159521, + 0.020393709, + -0.0101321535, + 0.018620905, + -0.0005256944, + -0.0002980283, + -0.025414495, + -0.026294427, + 0.025634477, + -0.005528688, + -0.019345555, + 0.008721675, + -0.004389953, + 0.022955863, + -0.007925854, + -0.002916391, + 0.017365709, + -0.0039952775, + 0.014273008, + 0.015722306, + 0.016628118, + 0.0019636708, + 0.01586465, + -0.020212546, + 0.0048105083, + -0.02808017, + 0.005389581, + -0.008327, + 0.0052828244, + -0.021674786, + 0.017184546, + -0.013218384, + -0.0066383076, + 0.013302496, + 0.00023393401, + -0.003108876, + -0.013470718, + 0.011199717, + -0.021066597, + 0.019280855, + 0.007880564, + 0.0038529357, + -0.012597256, + -0.0227747, + -0.009511026, + -0.00913576, + -0.02743316, + -0.0156058455, + 0.009316923, + 0.0007266714, + -0.018064478, + 0.005897483, + 0.015062358, + 0.008948128, + -0.034317333, + 0.015463504, + -0.020665452, + 0.023253486, + -0.016058752, + -0.007997026, + 0.010067453, + -0.0034388504, + -0.011212658, + 0.008449932, + -0.000091642694, + -0.0069424016, + -0.0095174955, + 0.011329119, + -0.018167999, + 0.0075635295, + -0.0077641024, + -0.019565538, + -0.023369947, + -0.014091846, + -0.023149965, + -0.0051307776, + -0.0024101068, + -0.0048913844, + -0.005302235, + 0.0061271708, + -0.005444577, + 0.00906459, + -0.02278764, + 0.0003433189, + 0.021403043, + -0.0025217158, + 0.004344662, + 0.013250735, + -0.0039014614, + -0.022813521, + 0.01603287, + -0.16356376, + 0.022554718, + 0.018387983, + -0.0018536794, + -0.0009373536, + 0.010817982, + 0.014661213, + 0.038949914, + -0.019707879, + 0.025246272, + 0.010999145, + -0.011367939, + -0.027769607, + -0.01890559, + 0.004477299, + 0.013897743, + -0.006897111, + 0.0027805192, + 0.012416094, + 0.017236307, + 0.009672778, + -0.024832187, + 0.004085859, + 0.013263674, + 0.008475812, + -0.010921504, + -0.026993196, + 0.026708512, + 0.016162273, + 0.0020186666, + -0.008941658, + -0.00571632, + 0.010824453, + 0.0035326665, + 0.0049916706, + 0.013457777, + 0.0036038375, + 0.003788235, + -0.012616666, + -0.005687205, + -0.00841111, + 0.024146358, + -0.00571632, + 0.01821976, + -0.014234188, + -0.00050062285, + 0.029943554, + 0.016925743, + 0.0009737478, + -0.020406649, + 0.010313316, + -0.03046116, + -0.0061045256, + -0.002875953, + 0.011012085, + 0.014932957, + 0.03335976, + 0.008385231, + 0.004771688, + 0.012733128, + 0.017986838, + -0.035714872, + 0.007647641, + 0.004609936, + 0.0142083075, + -0.013153683, + 0.007673521, + 0.0047425725, + -0.012759008, + -0.004859034, + -0.014570632, + -0.011691444, + 0.021079538, + -0.01371658, + 0.006813, + 0.030150598, + -0.012319042, + -0.014182427, + 0.0046681664, + 0.012959581, + -0.0058295466, + 0.0394934, + -0.0154376235, + -0.003196222, + 0.0085146325, + 0.0020623396, + -0.01906087, + -0.0030182947, + -0.032298665, + -0.0079582045, + 0.01215082, + -0.03346328, + 0.0030328524, + -0.029814152, + 0.02193359, + 0.011102666, + -0.008553453, + -0.005020786, + 0.007162384, + -0.0154893845, + 0.006690068, + -0.016265795, + -0.013845982, + 0.017262187, + 0.028571896, + 0.0064053843, + -0.01811624, + 0.016912803, + 0.03423969, + 0.0052342988, + -0.016912803, + 0.024780426, + 0.01220258, + 0.030176478, + 0.024081657, + 0.011697914, + 0.0049754954, + -0.02952947, + 0.00042015116, + 0.017210428, + 0.038949914, + -0.008145837, + -0.030512922, + 0.022929981, + -0.007130034, + -0.009769829, + -0.10212383, + 0.009841, + 0.012500205, + 0.014273008, + 0.0032560704, + 0.019410256, + 0.009433384, + 0.021726547, + 0.00757, + 0.03568899, + -0.0010578589, + -0.013418957, + -0.0050499015, + 0.009038709, + -0.011290299, + -0.014803555, + -0.008974008, + -0.027226118, + -0.021778308, + 0.012836649, + 0.0009915406, + -0.022981742, + 0.004102034, + -0.0073758974, + 0.012765478, + -0.011704384, + -0.02808017, + 0.008003496, + 0.01666694, + 0.011581453, + 0.019474957, + -0.014130666, + -0.01603287, + -0.0035294315, + -0.01366482, + -0.008993419, + -0.01752099, + -0.032013983, + 0.012778418, + -0.045627043, + 0.009316923, + 0.005451047, + 0.002000874, + -0.047412783, + 0.0005968654, + -0.003568252, + -0.02268412, + 0.0038205853, + -0.0015350278, + -0.009310452, + 0.012002008, + 0.013535419, + -0.006677128, + -0.01140029, + 0.045989364, + -0.004205555, + 0.011633214, + 0.030719966, + -0.00837229, + -0.0033288589, + -0.0020380768, + 0.017999778, + 0.0067288885, + 0.028649537, + 0.0013740844, + -0.01827152, + -0.028364854, + 0.0013069572, + 0.019306734, + -0.036775965, + -0.0042087906, + 0.0068712304, + -0.023512289, + 0.0109150335, + -0.02122188, + 0.00030106117, + -0.0228394, + -0.0062759826, + 0.023434648, + -0.007447068, + -0.02968475, + -0.029296545, + -0.004412598, + -0.006146581, + 0.011335589, + 0.027691964, + -0.023253486, + 0.0020041089, + 0.0052828244, + -0.008605214, + 0.0011541015, + 0.052821778, + 0.015204701, + -0.030538803, + 0.0015131911, + 0.011329119, + -0.0003821394, + 0.00026385815, + 0.010293906, + -0.0089610685, + -0.024055777, + -0.0014412114, + -0.051165435, + 0.017909195, + -0.003632953, + -0.022205332, + 0.0068259398, + 0.008831667, + 0.012875469, + -0.020096084, + -0.006324508, + 0.013833042, + -0.019462017, + 0.0062533375, + -0.015722306, + -0.0019410256, + 0.0011904957, + 0.019358495, + 0.029348306, + 0.006651248, + 0.009174581, + -0.012021419, + -0.007453538, + 0.008132897, + 0.0125325555, + 0.013004871, + -0.019850222, + 0.01436359, + -0.017896255, + -0.014803555, + -0.02494865, + -0.012196111, + 0.031651657, + -0.0071688546, + 0.011574983, + 0.047179863, + -0.022218272, + -0.019992564, + -0.020587811, + 0.035404306, + 0.021610085, + -0.029917674, + -0.017805675, + -0.029374188, + -0.00052933383, + -0.022502957, + 0.004037333, + 0.03423969, + 0.010462128, + -0.010151564, + 0.016809281, + -0.008838137, + 0.016226973, + 0.028934222, + 0.017624512, + -0.012377273, + -0.015851708, + -0.0061174654, + 0.022929981, + -0.009562786, + 0.008217008, + -0.025660358, + 0.0019992564, + 0.005059607, + 0.022619419, + 0.009653367, + 0.010798573, + 0.0060462947, + 0.015579965, + 0.0045387647, + 0.0041343844, + 0.00032754807, + -0.023227606, + 0.009569256, + 0.022606477, + -0.0020170491, + 0.018866768, + -0.014014205, + -0.0069359313, + 0.005975124, + -0.014583572, + 0.019940803, + 0.007304726, + -0.008799316, + -0.021648906, + 0.010073923, + 0.043323692, + -0.0100803925, + -0.032039862, + 0.015476444, + -0.005693675, + -0.0059298333, + -0.03038352, + 0.0051728333, + -0.021131298, + -0.0024084894, + -0.0005022404, + -0.010319786, + -0.017663334, + -0.0011775555, + 0.010824453, + 0.03719005, + 0.0006716757, + -0.009970401, + 0.0009041944, + -0.036646564, + -0.017236307, + 0.020743093, + -0.01441535, + -0.018090358, + -0.02127364, + 0.01673164, + 0.0017081025, + 0.004037333, + -0.0069294614, + 0.010397427, + -0.0035035512, + 0.013406017, + -0.028157812, + -0.020846615, + -0.022619419, + 0.016058752, + 0.013897743, + 0.010274495, + 0.001939408, + 0.011555572, + 0.028701298, + 0.024883948, + 0.029141264, + -0.019254973, + 0.009808649, + 0.021648906, + 0.010093333, + -0.010966795, + 0.008449932, + -0.0061692265, + -0.01827152, + -0.022347674, + -0.0022386494, + 0.021532444, + -0.0040114527, + 0.059680067, + 0.00533135, + -0.009989812, + 0.028390734, + -0.0008010774, + 0.0020801325, + 0.024016956, + -0.0064377347, + -0.0046843416, + -0.020872494, + -0.004250846, + 0.010753281, + 0.026242666, + -0.004736102, + -0.014945897, + 0.0066447775, + -0.036284238, + 0.021687726, + -0.033670325, + -0.0037364743, + 0.006586547, + -0.017948017, + 0.01590347, + 0.0029066857, + -0.026837913, + -0.010287436, + 0.009569256, + -0.0020801325, + -0.0066835983, + -0.024793366, + 0.023214666, + -0.016899863, + -0.038820513, + -0.0100803925, + -0.0028516902, + -0.023033503, + -0.025543896, + -0.019138511, + -0.00007218189, + 0.0039920425, + 0.00161833, + 0.00091389957, + -0.032298665, + 0.0037300042, + -0.0062371623, + -0.0058004316, + -0.01604581, + 0.0069359313, + -0.03030588 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 18, + "total_tokens": 18 + } +} +954 1730 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 752 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the chair beside the desk is beige.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the desk is orange.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is black.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What colors are all of the pieces of furniture next to the desk and the desk itself?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 904 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:21:19 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 1237 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999862 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_9926a98b9a3d49bf8f5604c3dd741331 + +{ + "id": "chatcmpl-EREOFm054yeUZZqb0tRxk6Xd650Qu", + "object": "chat.completion", + "created": 1790158879, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "The desk is orange, the chair beside the desk is beige, and the lamp beside the desk is black.", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 126, + "completion_tokens": 22, + "total_tokens": 148, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_109d5ede69" +} diff --git a/vectorstores/dolt/testdata/TestDoltStoreRest.httprr b/vectorstores/dolt/testdata/TestDoltStoreRest.httprr new file mode 100644 index 000000000..3eeedeb17 --- /dev/null +++ b/vectorstores/dolt/testdata/TestDoltStoreRest.httprr @@ -0,0 +1,4721 @@ +httprr trace v1 +256 67811 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 61 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["tokyo","potato"]}HTTP/2.0 200 OK +Content-Length: 66856 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:19:27 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 83 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6659cb4779-xzdkj +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999998 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_3d26589cc30c4fde99c41f2578488263 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + -0.008533556, + 0.0014080032, + -0.010539479, + -0.014651955, + -0.010988966, + 0.012142874, + -0.036978744, + 0.00235981, + -0.014812965, + -0.038239993, + 0.0062223845, + -0.015269161, + 0.011740348, + -0.02619104, + -0.015228909, + -0.01734888, + 0.022621974, + -0.01937493, + 0.017093947, + -0.01806001, + -0.009070258, + 0.015618018, + -0.004125894, + -0.027371783, + -0.012498439, + -0.014504362, + 0.007305851, + -0.0207301, + 0.01004303, + -0.020864276, + 0.01631573, + -0.013820067, + -0.010646819, + -0.017254958, + 0.0031111923, + -0.004622343, + -0.010606566, + -0.008741528, + 0.0027019572, + -0.0042097536, + 0.005702455, + -0.016235225, + -0.0030893888, + -0.012578945, + -0.023977146, + 0.0073729386, + -0.01140491, + 0.012968053, + -0.0033761887, + 0.014168924, + 0.010807829, + 0.018999238, + -0.0352613, + -0.0080706505, + -0.02373563, + -0.0012956313, + -0.030779839, + -0.0047934167, + 0.0034449536, + 0.0035858378, + -0.002752273, + -0.006460546, + -0.01745622, + 0.011847689, + 0.018100264, + -0.018140515, + -0.011136559, + 0.02836468, + -0.017697737, + -0.0014717365, + 0.022943996, + 0.020649595, + -0.0025107574, + 0.00168474, + 0.036549382, + -0.01200199, + 0.0014599962, + -0.00029015433, + 0.008305457, + 0.0134510845, + 0.021763252, + -0.042372596, + 0.004920883, + -0.0032285957, + 0.009157471, + 0.010982257, + -0.010707198, + 0.032604624, + 0.0072387634, + -0.004162792, + 0.010136953, + 0.008540265, + 0.010901752, + 0.011069471, + -0.02836468, + -0.0015295997, + -0.007654707, + 0.048866685, + -0.02313184, + -0.013196152, + -0.006688644, + 0.0035221046, + 0.0070643355, + -0.00834571, + -0.032336272, + 0.00905684, + 0.015336249, + -0.0129278, + 0.0025057257, + -0.0144238565, + -0.00014235172, + 0.031504385, + -0.0054039145, + -0.05342865, + -0.02346728, + -0.018905316, + -0.0015648208, + -0.018650383, + -0.008828742, + -0.012800334, + 0.009479493, + 0.010660237, + 0.026445974, + 0.0047397465, + 0.025775095, + -0.0072119283, + -0.0086408965, + -0.0103717595, + 0.0003601771, + -0.010519352, + 0.03469776, + 0.01069378, + 0.0101101175, + 0.015953457, + -0.028820878, + 0.015483842, + -0.01615472, + 0.009613669, + -0.019254172, + -0.009076967, + 0.0037502027, + 0.010982257, + -0.008842159, + 0.010579731, + 0.0066651637, + 0.021427812, + 0.029116064, + 0.005746062, + 0.0036428624, + -0.004830315, + -0.0010306349, + -0.011740348, + 0.021146044, + -0.000048035847, + 0.0046693045, + 0.006950286, + 0.029760106, + 0.008969626, + 0.00024507978, + 0.0132632395, + -0.000092088354, + 0.0027002802, + 0.03475143, + -0.019683532, + 0.0006000157, + 0.023037918, + 0.0075540757, + 0.020985033, + 0.0032185325, + -0.0101101175, + -0.013444376, + 0.01418234, + -0.038535178, + 0.01042543, + 0.002062947, + 0.023588037, + 0.01718787, + 0.015779028, + -0.024191827, + -0.009123928, + -0.0011388138, + 0.0026583504, + 0.03359752, + 0.020864276, + -0.011331113, + 0.0046625957, + 0.029116064, + 0.018194186, + -0.0019438663, + -0.008251788, + 0.022353623, + 0.031584892, + 0.0312092, + 0.005907072, + -0.67409724, + -0.028337847, + 0.014370186, + -0.00327388, + 0.026123952, + 0.01129086, + 0.014799547, + 0.0065444056, + -0.013303492, + 0.013706018, + -0.03378537, + 0.014276263, + -0.014115253, + -0.014262846, + -0.010707198, + -0.00095683837, + 0.012773499, + -0.009217851, + 0.0007991823, + 0.01025771, + -0.0012327366, + 0.016932936, + -0.0148398, + 0.0017694383, + 0.013323618, + -0.01718787, + 0.00943924, + -0.01140491, + -0.009727717, + 0.023936894, + -0.034295235, + 0.04086983, + 0.0069435774, + -0.015872952, + 0.035824835, + -0.012116039, + -0.024849286, + 0.026553314, + 0.025077384, + 0.040011108, + -0.004266778, + 0.0004216043, + -0.0020277258, + 0.0064202934, + 0.0042131077, + 0.004595508, + 0.03268513, + -0.03104819, + 0.0066752266, + -0.014101836, + 0.015779028, + -0.037032414, + -0.021964515, + -0.01877114, + -0.0018616838, + 0.0050550587, + 0.010921879, + -0.022621974, + -0.0007715086, + -0.00048345077, + -0.011720222, + -0.0025476555, + -0.021011868, + -0.020220235, + -0.008245079, + 0.008587226, + -0.011988573, + -0.018261272, + 0.0036529256, + -0.021722998, + 0.010083282, + 0.015000811, + -0.010318089, + -0.0022273117, + 0.013873737, + 0.015524095, + 0.031799573, + -0.03126287, + -0.001854975, + -0.008218244, + 0.0069368687, + 0.011592755, + -0.017805077, + 0.0018868417, + 0.02341361, + -0.02946492, + -0.035798, + -0.010660237, + 0.020891111, + -0.018382031, + 0.0048739216, + -0.003475143, + -0.001501926, + 0.001458319, + 0.00017883067, + 0.005222778, + -0.0006138525, + -0.012592362, + 0.0035321678, + -0.0051255007, + -0.016409652, + -0.008976335, + 0.013390706, + 0.0005387981, + -0.0105126435, + -0.002769045, + -0.016396236, + 0.017308628, + 0.028901383, + -0.0122435065, + 0.01391399, + -0.010687072, + -0.014638538, + -0.00867444, + 0.021561988, + -0.024151573, + 0.021374144, + 0.009533163, + 0.026754577, + 0.010391885, + 0.0063263704, + -0.003683115, + 0.018194186, + 0.014772712, + 0.01233072, + 0.023574619, + 0.014973976, + -0.0062123216, + -0.0068831984, + 0.0053066374, + -0.01074745, + 0.012498439, + 0.016409652, + -0.016181555, + 0.016033962, + -0.009975942, + -0.000742577, + -0.005424041, + 0.01227705, + -0.042855624, + -0.040950336, + -0.013732853, + -0.0014901856, + 0.0012042243, + 0.013565134, + -0.028176837, + -0.017885583, + 0.0066047846, + -0.01679876, + 0.007715086, + -0.006889907, + -0.004135957, + -0.025989776, + 0.013303492, + -0.008305457, + -0.015067899, + -0.0033543853, + -0.0015681752, + -0.013981078, + 0.009123928, + 0.006661809, + 0.0064639, + -0.036737226, + 0.0028461958, + 0.0015623049, + -0.025721425, + 0.010264419, + 0.015966874, + -0.00055724726, + -0.017992923, + -0.017214704, + -0.019267589, + -0.017979505, + 0.0027355012, + 0.020394662, + 0.006956995, + 0.0052999286, + -0.013008306, + -0.0012218348, + 0.006393458, + 0.006074792, + -0.022474382, + -0.0044378517, + 0.004830315, + 0.025949525, + -0.029062394, + 0.007943184, + 0.019764038, + -0.0070710443, + 0.0040554516, + -0.01293451, + 0.019790873, + 0.003022301, + 0.0042365887, + 0.018543042, + -0.010338215, + 0.013350453, + 0.009419113, + -0.020394662, + 0.018046593, + 0.033758532, + -0.026043447, + 0.0045217113, + -0.01004303, + 0.012679576, + -0.02384297, + -0.0043674097, + -0.020287322, + 0.025493328, + 0.010049738, + 0.0030960976, + -0.017120782, + -0.0055582165, + 0.012954636, + -0.0036696976, + 0.04282879, + 0.006990539, + 0.019401764, + -0.026123952, + -0.0081847, + 0.017590396, + -0.033463348, + -0.009855184, + -0.017550144, + -0.012800334, + 0.010143661, + 0.001518698, + 0.03236311, + 0.01806001, + -0.006651746, + -0.02941125, + -0.021360725, + -0.004068869, + 0.023990564, + -0.0112237735, + -0.035610154, + 0.00096606294, + -0.027197355, + 0.034724597, + 0.008573809, + 0.020824024, + 0.01795267, + 0.035180792, + -0.024621187, + 0.007319269, + 0.006722188, + 0.03612002, + 0.013498046, + -0.0084262155, + 0.022554886, + -0.011586047, + -0.003938048, + -0.00496449, + 0.0010440524, + 0.011344531, + -0.029169735, + 0.01681218, + -0.0015061189, + 0.016543828, + 0.02700951, + 0.0045082937, + 0.0021702873, + 0.011867815, + 0.0019992136, + 0.0035053326, + -0.0006184648, + 0.026620401, + 0.015014228, + -0.0021652556, + 0.008298749, + -0.01729521, + 0.009144054, + -0.007218637, + -0.005313346, + 0.017483056, + -0.017415969, + -0.022554886, + -0.013873737, + 0.014933723, + 0.013229695, + -0.0137127265, + -0.051335514, + -0.0033543853, + 0.008318875, + -0.0014591576, + -0.030189468, + -0.0013761366, + -0.022138942, + -0.015457007, + 0.02078377, + 0.010613275, + 0.023668543, + 0.013940825, + -0.02085086, + -0.017845329, + -0.006651746, + 0.019240754, + -0.0155375125, + -0.0032537538, + -0.008446342, + 0.0064538373, + -0.012397808, + -0.009405696, + 0.0112707345, + 0.013498046, + 0.0134510845, + 0.009211142, + -0.0055414443, + -0.00785597, + 0.00012274954, + 0.002577845, + -0.013571843, + -0.017375715, + 0.01309552, + 0.010344924, + -0.0066148476, + -0.010217457, + 0.0024151574, + 0.02407107, + -0.007319269, + -0.017590396, + -0.0019891504, + -0.02204502, + -0.004588799, + 0.06606797, + 0.00845976, + 0.013524882, + -0.0010541156, + 0.006265992, + 0.0022558242, + -0.020287322, + 0.00009701511, + 0.012847295, + 0.007507114, + 0.0054609394, + -0.0066819354, + 0.0010390208, + 0.0070643355, + 0.00046835604, + -0.002802589, + -0.011559212, + -0.019388346, + 0.022782985, + -0.023386775, + 0.00089226646, + 0.0036864693, + 0.008285332, + 0.02252805, + 0.0006360753, + -0.0050550587, + 0.019093161, + 0.021400979, + 0.015483842, + -0.02400398, + -0.0009954139, + 0.012921092, + -0.015631435, + 0.012592362, + -0.010734033, + 0.002760659, + 0.004102413, + 0.0155375125, + 0.005021515, + -0.009975942, + 0.012216671, + 0.01932126, + 0.0026801538, + -0.0056991004, + 0.021977931, + -0.025198141, + -0.015148404, + 0.018247856, + -0.016731674, + -0.029947951, + 0.03389271, + 0.0076681245, + -0.04014528, + -0.020864276, + -0.014075001, + 0.013115646, + -0.020917946, + -0.018690635, + -0.000033255586, + 0.02280982, + 0.007996854, + -0.050181605, + 0.006658455, + -0.009727717, + -0.028176837, + -0.030457819, + -0.01167997, + -0.0046022166, + -0.028337847, + -0.002445347, + -0.007647998, + -0.021790087, + -0.024862703, + 0.024044234, + 0.019442016, + -0.024232078, + 0.004457978, + -0.00992898, + 0.00055389287, + 0.03617369, + -0.030350478, + -0.013430959, + -0.021105792, + -0.008204826, + -0.02476878, + 0.0201934, + 0.02941125, + -0.03410739, + -0.009606959, + -0.0005840823, + 0.011378075, + -0.0016713225, + 0.011284152, + 0.020649595, + 0.0148263825, + -0.011451871, + 0.0111768115, + 0.029706435, + -0.0045116483, + -0.01663775, + 0.0151349865, + -0.00943924, + 0.0016193294, + 0.012062369, + 0.00774863, + 0.02117288, + 0.01626206, + 0.019240754, + -0.011304278, + 0.00041321834, + 0.041943233, + -0.014558032, + 0.0118879415, + 0.017724572, + -0.0072320546, + 0.021454647, + 0.007339395, + 0.029438084, + 0.01893215, + -0.01462512, + 0.0055246726, + -0.023266016, + 0.016355982, + 0.017147617, + 0.011384783, + -0.003934694, + 0.019079743, + -0.007715086, + -0.008157865, + 0.00466595, + -0.0055615706, + 0.011995282, + -0.015054481, + -0.018019758, + -0.023588037, + 0.0018214312, + -0.027854815, + 0.013397414, + 0.0056957463, + -0.03628103, + -0.010063156, + -0.004987971, + 0.008741528, + -0.002576168, + -0.026553314, + -0.023990564, + -0.00035933853, + 0.012485022, + 0.0029669537, + 0.019442016, + -0.0009232945, + 0.013061976, + -0.015255744, + -0.00216861, + -0.018261272, + -0.032497283, + -0.022957413, + -0.023655124, + 0.008097486, + 0.015872952, + 0.024030816, + 0.011035928, + -0.0023279435, + -0.010948714, + -0.0067725037, + 0.013209569, + -0.004920883, + 0.025453076, + -0.017845329, + 0.023400191, + 0.014987393, + 0.01271312, + -0.022460964, + 0.0015857856, + -0.02798899, + 0.02199135, + -0.0037300764, + 0.0035724202, + -0.012565527, + -0.029706435, + -0.0009107156, + -0.014142089, + -0.0051422725, + -0.0002387903, + -0.0015388242, + 0.0019522522, + 0.0049745534, + -0.006732251, + 0.03142388, + -0.0039850096, + 0.010385177, + -0.012404516, + 0.0031413818, + -0.004300322, + 0.0005509578, + 0.004327157, + -0.011814144, + -0.0040889955, + -0.0030105608, + 0.02668749, + 0.02264881, + -0.009452658, + -0.0010356664, + 0.0003169894, + 0.011908067, + 0.035744328, + -0.00009811577, + -0.014772712, + -0.0043774727, + -0.014034748, + -0.025385987, + -0.018341778, + 0.00033921222, + -0.019723786, + -0.022514634, + 0.012907675, + -0.017067112, + 0.022501215, + -0.02951859, + -0.02635205, + 0.021951096, + 0.0090434225, + 0.022729315, + 0.016355982, + 0.010251001, + -0.00025430432, + -0.001171519, + -0.009835058, + -0.005182525, + -0.013981078, + -0.001215126, + 0.016396236, + 0.030484654, + -0.020609343, + -0.028928218, + -0.010009485, + 0.0024705047, + 0.0022776276, + -0.008419507, + 0.014222593, + 0.0005153174, + 0.009566707, + -0.024057651, + -0.0011497155, + -0.025882436, + 0.038481507, + -0.014772712, + 0.0047062025, + -0.002480568, + -0.030618828, + -0.0054106233, + 0.018153934, + -0.010029612, + 0.009311774, + 0.013833485, + -0.016959772, + 0.0020478521, + -0.018462537, + -0.018194186, + 0.02046175, + 0.0029568905, + 0.026647236, + 0.009513036, + -0.008285332, + 0.013779814, + 0.010599857, + -0.013632222, + 0.0006297858, + 0.004833669, + 0.024419924, + -0.007943184, + -0.009526454, + -0.018797975, + -0.0017006734, + 0.00094090507, + 0.0022776276, + 0.009298356, + -0.013176025, + -0.02003239, + -0.005746062, + 0.009700882, + 0.006269346, + -0.004572027, + -0.007044209, + -0.025278646, + -0.030350478, + -0.009117219, + 0.0016620979, + 0.012169709, + -0.01663775, + -0.009224559, + -0.0037233676, + -0.02946492, + 0.01745622, + -0.011693387, + -0.0042097536, + 0.009935689, + 0.027251026, + -0.016906101, + 0.009620377, + -0.007547367, + 0.019455435, + -0.025090802, + -0.006044602, + -0.0030742942, + -0.01674509, + 0.013887155, + -0.01358526, + -0.0122904675, + -0.021253385, + 0.012357555, + 0.0021971224, + 0.0062794094, + 0.021843757, + 0.042962965, + -0.020354409, + -0.0024654733, + -0.025761679, + -0.025520163, + 0.009452658, + -0.009996068, + 0.02008606, + 0.024916373, + -0.001707382, + 0.0012134488, + 0.013061976, + -0.012082496, + -0.00878849, + -0.010391885, + -0.03115553, + -0.008647605, + 0.0130015975, + -0.014142089, + -0.007815718, + -0.017469639, + 0.0012578944, + -0.0071716756, + 0.0097545525, + 0.008151156, + 0.0011295893, + 0.0004297806, + 0.025171306, + 0.011492124, + 0.012022117, + -0.013310201, + -0.024352837, + 0.011310987, + -0.007654707, + -0.026902169, + -0.03459042, + -0.0025979714, + 0.01544359, + 0.0014096803, + -0.02085086, + -0.022675645, + 0.010727324, + -0.02836468, + -0.0049376553, + -0.010821247, + 0.026110535, + 0.017670901, + -0.010848082, + 0.0077888826, + 0.006651746, + 0.019737203, + 0.008037107, + 0.004048743, + 0.01042543, + 0.034134224, + -0.031128695, + 0.03252412, + 0.0111768115, + -0.019160248, + -0.008748237, + 0.008828742, + -0.002343038, + 0.005712518, + 0.013591969, + -0.008251788, + -0.008567099, + -0.011357948, + 0.0051020198, + -0.025560416, + 0.018757721, + 0.006198904, + -0.046854053, + 0.026365468, + 0.013155899, + -0.010861499, + 0.00041133148, + 0.0111768115, + -0.0046894304, + -0.0024252206, + 0.0062928265, + -0.030243138, + -0.0018063365, + 0.0004939332, + -0.023708794, + 0.029760106, + -0.011753766, + 0.0111768115, + 0.02307817, + 0.021481482, + -0.0052730935, + -0.02471511, + -0.003683115, + -0.011384783, + -0.008694567, + 0.025520163, + -0.0027623363, + -0.027452288, + -0.004042034, + 0.02199135, + -0.042426266, + 0.011304278, + 0.009828349, + -0.0056018233, + -0.018086845, + 0.0098015135, + 0.025493328, + -0.02984061, + -0.0151349865, + 0.009117219, + -0.015738776, + -0.009311774, + -0.010244292, + 0.028472021, + -0.026392303, + 0.018408867, + 0.0017207996, + -0.002237375, + -0.03874986, + -0.01467879, + 0.0053871428, + -0.0077687562, + -0.008466468, + 0.21124576, + -0.019656697, + -0.00076354196, + 0.04103084, + -0.009996068, + 0.03775696, + 0.027251026, + 0.0010784349, + -0.011344531, + 0.0022055083, + -0.038320497, + 0.0075339493, + 0.01544359, + -0.0013962629, + -0.00020388373, + -0.01871747, + -0.024191827, + -0.02782798, + -0.041379698, + 0.0017358944, + 0.009197724, + 0.0018683926, + 0.0033208414, + -0.014544615, + 0.018784557, + 0.011250608, + -0.005222778, + -0.008868994, + 0.017563561, + 0.018891897, + 0.0015430172, + 0.0030172695, + -0.0014792839, + 0.014866635, + -0.0057661883, + -0.0026633819, + -0.005642076, + -0.008137738, + 0.031772736, + 0.023762465, + -0.0022541468, + 0.0028965117, + -0.005947325, + -0.009009879, + -0.007446735, + 0.023091588, + -0.007929767, + 0.0031279642, + -0.011921485, + 0.030296808, + -0.037354436, + -0.015121569, + 0.040574644, + 0.02471511, + 0.011592755, + -0.013732853, + 0.03322183, + 0.00682282, + -0.009915562, + -0.008104195, + -0.020126311, + 0.02291716, + -0.010358342, + 0.02352095, + 0.005216069, + -0.0038810237, + -0.01478613, + 0.0061888406, + -0.0007912156, + -0.010324798, + 0.017254958, + -0.011431745, + -0.009070258, + -0.021092374, + -0.033517018, + -0.023547783, + 0.032711964, + 0.005598469, + 0.011398201, + 0.0348051, + -0.005088602, + 0.009486201, + 0.02580193, + 0.004535129, + 0.00022180872, + -0.01937493, + 0.017415969, + 0.010130243, + 0.015309414, + -0.00709117, + -0.008761655, + -0.024205243, + -0.008976335, + -0.017872164, + -0.009781388, + 0.01200199, + -0.005940616, + 0.016074214, + -0.010848082, + -0.014061583, + -0.009499619, + -0.028015826, + 0.011438454, + -0.0069368687, + 0.0058299215, + 0.007829135, + -0.00030021748, + -0.0067792125, + -0.00050525425, + -0.030967684, + 0.0037233676, + -0.037569113, + 0.0070643355, + 0.01615472, + 0.0077016684, + -0.0020881048, + -0.016248642, + -0.025949525, + 0.018140515, + -0.019401764, + 0.02307817, + -0.017872164, + -0.009519746, + -0.006363269, + -0.004726329, + -0.008889121, + -0.0062794094, + -0.014303098, + 0.0056823287, + -0.041621212, + 0.003022301, + -0.0030742942, + 0.022514634, + -0.0012444769, + -0.0064639, + 0.018556459, + 0.0053670164, + -0.010707198, + -0.017268375, + 0.026164206, + 0.008969626, + -0.008385963, + 0.019683532, + 0.0026617048, + -0.0051758164, + -0.020904528, + 0.0063431426, + 0.021105792, + -0.016074214, + 0.010861499, + -0.021548571, + -0.021065539, + -0.0011471998, + -0.014061583, + 0.030162632, + -0.007882806, + -0.022943996, + -0.01985796, + 0.0033225187, + 0.0111768115, + -0.030243138, + -0.009204433, + 0.049725406, + -0.02193768, + -0.027532794, + -0.011539085, + -0.17464271, + 0.028981889, + 0.019133413, + -0.022165777, + 0.026767993, + 0.010807829, + -0.0056991004, + -0.018247856, + -0.0051925885, + 0.016758509, + 0.05173804, + 0.013075394, + -0.008600644, + -0.011243899, + 0.0037032412, + -0.007876096, + -0.0034784975, + 0.0049477182, + 0.028981889, + 0.013692601, + 0.0470419, + -0.03137021, + 0.0148263825, + -0.00062517356, + -0.0007048402, + 0.024084486, + -0.00038973763, + -0.00087381736, + 0.016275477, + -0.010633402, + -0.023333104, + -0.013216278, + 0.03501978, + 0.022353623, + 0.009989359, + 0.013659056, + -0.008627479, + -0.018207602, + -0.019348094, + 0.03595901, + 0.005779606, + 0.010666945, + -0.003039073, + -0.012672868, + 0.0124313515, + 0.03088718, + 0.008278623, + -0.003917922, + -0.025761679, + -0.008775072, + 0.021454647, + -0.016610915, + -0.0030172695, + 0.01936151, + 0.00867444, + -0.0107742855, + 0.008627479, + 0.0098954365, + 0.0017845329, + -0.013752979, + -0.03469776, + -0.012283759, + 0.021602241, + 0.0018415574, + -0.015067899, + 0.0014172278, + -0.01222338, + -0.010546187, + -0.019281005, + 0.017805077, + 0.0009258103, + -0.016194971, + 0.021199714, + -0.043177646, + 0.019240754, + 0.005024869, + -0.009647212, + 0.024191827, + 0.019670116, + -0.0005023192, + -0.022474382, + 0.052999288, + -0.0148263825, + -0.0047665816, + 0.0010633401, + 0.009955815, + 0.0043841815, + -0.011438454, + -0.029277075, + -0.021696163, + 0.02199135, + -0.025520163, + -0.014638538, + -0.0109151695, + -0.0012620875, + 0.010687072, + -0.007876096, + 0.023695378, + -0.021951096, + 0.004692785, + 0.011834271, + -0.009700882, + -0.010163788, + 0.043231316, + 0.026003195, + 0.023910059, + 0.018301526, + 0.026016612, + 0.01930784, + 0.008057233, + -0.020837441, + 0.002262533, + 0.015175239, + 0.02629838, + -0.024876121, + 0.0036965325, + 0.013122355, + -0.01320286, + 0.009519746, + 0.007574202, + 0.037086084, + -0.015819281, + 0.0041393116, + 0.023883224, + -0.008936082, + -0.026445974, + -0.07358179, + 0.0043674097, + 0.006765795, + 0.022393877, + -0.0055951145, + 0.039501242, + 0.0112707345, + 0.011310987, + -0.0024067715, + 0.018449118, + -0.0077352123, + -0.018019758, + 0.00911051, + -0.01985796, + 0.024809033, + -0.0033208414, + -0.0022876908, + -0.002638224, + -0.0043170936, + 0.023091588, + -0.014973976, + -0.016839014, + 0.004830315, + -0.010479099, + -0.01473246, + 0.0066752266, + -0.010713906, + 0.017831912, + 0.015725357, + 0.0072991424, + 0.0033493536, + 0.004387536, + 0.00965392, + -0.026982674, + -0.013310201, + 0.013954243, + -0.010700489, + 0.008278623, + 0.03365119, + -0.051469687, + -0.0030189466, + 0.012760081, + -0.0061687143, + -0.0034717887, + -0.009828349, + -0.013383997, + -0.028579362, + 0.00679263, + -0.00336948, + -0.015966874, + -0.018838227, + -0.0043170936, + 0.0026650592, + -0.008271914, + 0.017415969, + -0.005625304, + 0.004927592, + 0.0253189, + -0.03464409, + 0.01681218, + 0.0035824834, + -0.0038072274, + -0.014920305, + 0.02925024, + 0.008667732, + 0.011411618, + -0.018435702, + -0.033114493, + 0.031853244, + -0.018757721, + -0.015577765, + 0.021239968, + -0.020810606, + 0.00534689, + -0.027693804, + -0.010633402, + -0.00274221, + -0.017120782, + 0.018972402, + -0.024057651, + -0.014236011, + -0.028391516, + 0.0015069576, + 0.007050918, + 0.0030357186, + 0.0041762097, + 0.010942005, + -0.0034248272, + 0.018314943, + -0.016476741, + 0.005407269, + 0.008164573, + 0.0094929105, + -0.029438084, + -0.006276055, + 0.022380458, + 0.002037789, + -0.015000811, + 0.002542624, + 0.0071783843, + -0.013457794, + -0.022340206, + -0.07546025, + 0.028659867, + 0.0013124032, + -0.008292041, + 0.020502003, + 0.005128855, + 0.018704053, + 0.0069704126, + 0.0116732605, + -0.022541469, + -0.045082938, + 0.009459366, + -0.013457794, + -0.0042466517, + -0.032953482, + -0.024809033, + 0.024996879, + 0.020743519, + 0.008681149, + 0.015913203, + 0.011357948, + 0.0013442698, + 0.024272332, + 0.010391885, + -0.03410739, + 0.0077620475, + -0.0030055293, + 0.026593566, + -0.024970043, + -0.015779028, + 0.0258556, + -0.027479123, + -0.007963311, + 0.009157471, + 0.0001614298, + -0.0061620055, + 0.0016956418, + 0.0126929935, + 0.009432531, + 0.031450715, + -0.020555673, + -0.0069435774, + 0.012283759, + -0.011257317, + 0.00649409, + 0.0001541969, + 0.0020797187, + 0.0052294866, + 0.017120782, + 0.016329147, + -0.010526061, + 0.03349018, + -0.008258496, + -0.0069033247, + -0.0057628336, + -0.026284963, + 0.017000025, + 0.0105126435, + -0.008493303, + -0.0113176955, + 0.023252599, + 0.004424434, + 0.016825596, + 0.010948714, + 0.012404516, + -0.007822426, + -0.02286349, + -0.0028428414, + 0.012491731, + -0.035529647, + -0.02930391, + 0.007970019, + 0.009808223, + 0.014397021, + 0.008714693, + 0.0009325191, + 0.0090903845, + -0.0067456686, + -0.03357069, + 0.023923475, + 0.005085248, + -0.000054613585, + -0.053348143, + 0.0060546654, + 0.01255211, + -0.01816735, + -0.0072052195, + -0.012458187, + -0.01953594, + 0.026835082, + -0.005447522, + -0.0075674932, + 0.0049846163, + 0.0030524905, + 0.0028327783, + 0.018757721, + -0.008325584, + -0.022031602, + 0.026794828, + 0.028418351, + 0.01871747, + -0.0074936966, + -0.011633008, + -0.0070106653, + -0.012833878, + -0.009747843, + -0.019884795, + -0.022018185, + 0.009975942, + 0.01462512, + 0.02286349, + 0.015792446, + -0.0005379595, + 0.018596712, + -0.01031138, + 0.006520925, + -0.017831912, + -0.036254197, + -0.01936151, + 0.018891897, + 0.03378537, + 0.021213133, + 0.026942423, + -0.005997641, + 0.016047379, + -0.0019203855, + 0.008942791, + -0.02613737, + 0.0029417959, + -0.0035153958, + 0.01626206, + 0.00976797, + -0.017899, + -0.0025308838, + -0.00878849, + 0.0038273535, + 0.0076681245, + 0.02836468, + -0.003978301, + 0.05291878, + -0.01135124, + 0.0014675435, + -0.0017375716, + 0.0059607425, + 0.02122655, + -0.004655887, + 0.016718255, + -0.025412822, + -0.014705625, + 0.0030575222, + -0.011163394, + 0.00698383, + -0.014598285, + -0.02471511, + -0.0051355637, + -0.020354409, + 0.019442016, + -0.010398595, + 0.015685106, + 0.037783794, + -0.003874315, + 0.02658015, + 0.018395448, + -0.013571843, + 0.0013308524, + 0.021535153, + 0.011612882, + 0.009305065, + -0.02389664, + 0.016825596, + -0.00226421, + -0.018650383, + -0.0112707345, + 0.0061519425, + -0.015054481, + -0.02613737, + 0.009996068, + 0.0024587645, + 0.014665373, + 0.0005983385, + 0.019227337, + -0.020985033, + -0.024299167, + 0.01734888, + -0.005806441, + -0.003579129, + -0.0024621189, + -0.01948227 + ] + }, + { + "object": "embedding", + "index": 1, + "embedding": [ + -0.0023426407, + -0.031335898, + 0.0022720497, + -0.026686734, + -0.028682984, + -0.00530911, + -0.026870599, + -0.019752385, + -0.0106050875, + -0.029996308, + 0.00056267704, + 0.0222083, + -0.0049840626, + 0.026581667, + -0.0053452267, + 0.035197068, + 0.029602312, + -0.01461729, + 0.047857508, + -0.021302108, + -0.0134090325, + -0.0044160504, + 0.014288959, + -0.009574128, + -0.032911886, + -0.012995336, + 0.00978426, + -0.026213937, + 0.004136969, + -0.007400578, + 0.021105109, + -0.027474727, + -0.020855578, + -0.017769266, + -0.035249602, + -0.023744889, + -0.0021932502, + -0.013776763, + 0.02797379, + 0.004202635, + 0.0021308674, + 0.002152209, + -0.008549736, + -0.001971627, + -0.018439062, + -0.00013943802, + -0.025045078, + -0.027789924, + -0.018373396, + 0.012719538, + 0.027474727, + 0.023298359, + -0.0069080815, + -0.0013042943, + 0.0061036707, + 0.010053491, + -0.00037819613, + 0.023652956, + -0.020632312, + -0.016955007, + -0.005542225, + 0.017716734, + -0.033647347, + 0.02127584, + -0.017743, + -0.0037298386, + 0.0028794617, + -0.005433876, + -0.004402917, + 0.009226098, + 0.006317086, + 0.034277745, + 0.017756134, + -0.00803754, + 0.01660041, + -0.010342423, + -0.015050687, + -0.0052565774, + 0.0033407665, + -0.0009373846, + 0.015431551, + -0.019030057, + 0.0026627635, + 0.008457803, + 0.016022546, + 0.005085845, + -0.024953146, + 0.010020658, + -0.014288959, + -0.01737527, + -0.0010490172, + 0.020120116, + 0.014013162, + 0.01900379, + -0.029339647, + 0.029365914, + 0.018727994, + 0.03333215, + -0.023311492, + -0.027264595, + -0.017349003, + 0.010086324, + -0.004924963, + -0.018741125, + -0.008090072, + 0.00020397555, + 0.010683887, + -0.0021686254, + 0.02078991, + -0.010316156, + -0.009002833, + 0.04554606, + 0.007853675, + -0.020225182, + 0.00070837385, + -0.0048658634, + 0.019108856, + -0.01900379, + -0.014879955, + -0.008884633, + 0.012995336, + -0.00022716392, + 0.018911859, + -0.038060114, + 0.017073205, + -0.0011089375, + -0.01372423, + 0.0060150214, + -0.005584908, + -0.0035689566, + 0.03459294, + 0.010513155, + -0.0036214895, + 0.0058804057, + -0.025439076, + -0.0046721483, + -0.035722397, + -0.02321956, + -0.017769266, + -0.020225182, + 0.012883703, + 0.021420306, + -0.028998183, + -0.018990658, + -0.006986881, + 0.03779745, + 0.030075109, + 0.010184824, + -0.010046924, + -0.0034474742, + 0.016574143, + 0.0023853239, + 0.028814318, + -0.020120116, + -0.00037388678, + -0.009212964, + -0.01073642, + 0.013934362, + 0.006796449, + 0.009035666, + -0.021341506, + -0.0041074194, + 0.008142605, + -0.018767392, + 0.0055586416, + 0.036562927, + 0.019332122, + -0.003058402, + 0.0013830938, + -0.013402466, + -0.0034080744, + 0.031073233, + -0.021105109, + 0.02090811, + 0.017861199, + -0.009245797, + -0.0013822729, + 0.0054732757, + 0.010506588, + 0.008930599, + -0.02585934, + 0.0026315718, + 0.025347143, + 0.04210515, + -0.0068752486, + 0.005689974, + 0.004136969, + 0.0015530051, + -0.01879366, + -0.009061932, + 0.022457832, + 0.010204524, + 0.01826833, + 0.005259861, + -0.68965244, + -0.025990672, + 0.018058198, + -0.015168887, + 0.030180173, + 0.036195196, + 0.010092891, + -0.0030239273, + -0.011596646, + -0.015195153, + 0.0041862186, + 0.016206412, + 0.001814028, + -0.0022720497, + 0.00007690125, + -0.025439076, + 0.024782414, + 0.0021998168, + -0.010762686, + 0.008641669, + -0.023810554, + 0.018977525, + -0.008956866, + 0.004094286, + 0.005253294, + 0.005447009, + 0.01110415, + 0.0052368776, + -0.005906672, + 0.017427802, + -0.016666075, + -0.012450307, + 0.012601339, + -0.03170363, + 0.049564827, + -0.01021109, + -0.012003777, + 0.030784303, + -0.00087746425, + 0.024138886, + -0.008733601, + -0.025439076, + 0.031440966, + -0.0063761855, + -0.019621054, + 0.0054371594, + 0.019634185, + 0.00038743042, + -0.005200761, + -0.032544155, + -0.0007428486, + 0.009902459, + -0.005978905, + -0.009160431, + 0.016390277, + 0.00076501095, + 0.0013280984, + -0.015405284, + -0.018412795, + 0.0074071446, + -0.025097612, + 0.009521595, + -0.019358387, + -0.035144538, + -0.0070656803, + -0.012332108, + -0.022313366, + 0.0037692385, + 0.01815013, + -0.010591954, + 0.01461729, + 0.018583527, + 0.014551624, + -0.023561023, + 0.009534729, + 0.021341506, + 0.003276742, + 0.009928726, + 0.002127584, + -0.002217875, + -0.010769253, + 0.013947495, + -0.004698415, + -0.005647291, + 0.046228986, + -0.011819911, + -0.025058212, + 0.0057293735, + 0.0082805045, + 0.00012035378, + 0.004087719, + 0.035985064, + -0.007249546, + -0.016350877, + -0.027343394, + -0.0061857537, + -0.042683013, + -0.017309604, + 0.005689974, + -0.00069277815, + -0.008057239, + -0.003624773, + 0.0071116467, + 0.014525358, + 0.0057392237, + 0.03422521, + -0.022523498, + 0.0128180375, + 0.024900613, + -0.037666116, + 0.0131266685, + -0.0015513634, + -0.006986881, + -0.026647333, + 0.015694216, + -0.029707378, + 0.008884633, + 0.009876193, + -0.0008076939, + -0.021341506, + 0.020697977, + 0.007945607, + 0.016902473, + -0.0039925035, + 0.0010375256, + -0.00066487, + -0.013750497, + -0.03356855, + -0.029576045, + -0.012936236, + -0.012844304, + -0.0046754316, + 0.011734545, + -0.010526287, + 0.009823659, + 0.009863059, + 0.014945622, + -0.002255633, + 0.006954048, + 0.0028860283, + -0.008582569, + -0.0005680124, + 0.0054273093, + 0.008030973, + 0.0019962518, + -0.030784303, + -0.012194209, + -0.004402917, + -0.0036641725, + 0.013205468, + 0.014748623, + -0.010112591, + -0.013803029, + 0.013829296, + 0.020409048, + -0.014604157, + -0.009613528, + -0.010257056, + -0.013711097, + -0.00807694, + 0.007190446, + 0.025688607, + 0.000911939, + 0.008411837, + -0.004274868, + -0.034330275, + -0.021643572, + 0.013047868, + -0.04375994, + -0.021091975, + 0.02057978, + -0.0046425983, + 0.01021109, + -0.0060544214, + -0.015694216, + 0.027711125, + -0.0036313394, + -0.005847573, + 0.015076954, + 0.0075056436, + -0.017926866, + -0.007807708, + -0.009928726, + 0.0013092194, + 0.0067077996, + 0.0017237371, + -0.011767378, + 0.025018813, + -0.004297851, + 0.014013162, + 0.00086186855, + -0.0019190939, + 0.0057720565, + 0.0046951314, + -0.0002177244, + -0.008208272, + -0.0060609877, + 0.011012217, + 0.002759621, + 0.023823688, + 0.027553527, + -0.015720483, + -0.0015439759, + -0.0079718735, + -0.0010859544, + -0.038401578, + -0.00080974604, + 0.0074071446, + 0.014446558, + 0.0019601353, + -0.0013691398, + -0.024257084, + -0.014788022, + -0.0069606146, + 0.01956852, + 0.04052916, + 0.0108020855, + -0.0051843445, + -0.006189037, + 0.012719538, + 0.017191404, + 0.0030025858, + -0.0013198901, + 0.0072167125, + -0.022667963, + 0.018530995, + 0.016350877, + 0.046544183, + 0.022195166, + -0.016022546, + -0.0040122033, + 0.0026775382, + 0.010506588, + 0.0088124005, + 0.003211076, + 0.0043438175, + 0.01684994, + -0.01244374, + 0.02537341, + 0.006287536, + -0.022287099, + 0.01465669, + 0.0062481365, + -0.011839611, + -0.0076632425, + 0.01067732, + 0.016429678, + 0.0017434369, + -0.013067569, + -0.0049807793, + -0.011458747, + 0.031519763, + -0.023600424, + -0.02570174, + -0.0070262807, + -0.031493496, + -0.003966237, + 0.0358012, + 0.035958797, + 0.022418432, + 0.029129514, + 0.000092496964, + -0.007380878, + 0.003509857, + -0.00067513034, + 0.00530911, + 0.0028794617, + -0.014288959, + 0.0012886986, + 0.021840569, + -0.017349003, + 0.0057096737, + 0.008221405, + -0.004619615, + -0.009580695, + -0.0028088705, + -0.0050168955, + 0.03309575, + -0.012614472, + -0.008661368, + -0.028446587, + -0.017834933, + 0.020146383, + 0.008608836, + -0.0036083562, + -0.000045068544, + -0.01945032, + 0.011990643, + -0.022733629, + 0.0031240683, + 0.0046327487, + 0.020277714, + 0.0051350947, + 0.007945607, + -0.010933418, + 0.010151991, + 0.0049052634, + -0.013310534, + 0.010848052, + 0.008576002, + 0.0044226167, + -0.013369633, + -0.013474699, + -0.010060058, + 0.034067612, + -0.0017352287, + 0.017230805, + -0.014709223, + 0.009823659, + -0.008694202, + 0.0015743466, + 0.0043733674, + 0.012548806, + -0.010197957, + -0.010394955, + 0.0056078914, + -0.012476573, + 0.017966265, + 0.036510393, + 0.00623172, + -0.015720483, + -0.003050194, + -0.01469609, + -0.0022966745, + 0.04938096, + 0.041107025, + 0.006796449, + 0.0012386282, + 0.016863074, + 0.006106954, + -0.030994434, + -0.0002626647, + 0.024401551, + 0.0027054464, + 0.010500021, + 0.0003295621, + 0.026056338, + -0.0005347689, + 0.007939041, + 0.010591954, + 0.00623172, + -0.0046327487, + -0.009580695, + -0.009639794, + 0.020435313, + 0.00081426057, + 0.019016923, + 0.011025351, + 0.0071444795, + 0.0026808216, + 0.03832278, + 0.02071111, + 0.030994434, + 0.014091961, + -0.02366609, + -0.0018780526, + 0.00038127424, + -0.017467203, + -0.00443575, + -0.025951272, + 0.022024434, + 0.010999084, + -0.00577534, + 0.012634172, + 0.02789499, + -0.004225618, + -0.0038710209, + -0.0063105193, + 0.016258944, + -0.01822893, + 0.0026069472, + 0.03191376, + 0.00013092194, + -0.010046924, + 0.0049840626, + 0.016088212, + -0.01388183, + 0.0004998837, + -0.006366336, + 0.00036690975, + -0.003020644, + 0.0057819067, + -0.0061200876, + 0.0027136547, + -0.010953118, + -0.022681097, + 0.00014025884, + -0.00042149477, + -0.010545988, + -0.0068358486, + -0.010920284, + -0.0119775105, + -0.020238316, + 0.018452195, + -0.011767378, + 0.0035656733, + -0.028577918, + -0.0076501095, + 0.030626703, + 0.019673586, + 0.0043733674, + 0.00484288, + 0.009534729, + 0.034277745, + 0.005138378, + -0.024349017, + -0.019594787, + -0.011622913, + -0.0046819984, + -0.001624417, + 0.023088226, + -0.008339604, + -0.0047148312, + 0.0011606496, + 0.034698006, + -0.012640739, + -0.0054502925, + -0.0050267456, + 0.009712027, + -0.0053222436, + 0.0088518, + 0.00033366625, + -0.0064517017, + -0.012765504, + 0.004885563, + -0.012923103, + -0.00050603994, + -0.010303022, + 0.0035394067, + 0.0051843445, + 0.010683887, + 0.018517861, + -0.011439048, + 0.0030813853, + 0.029208314, + -0.0068424153, + -0.007847108, + -0.004698415, + 0.005272994, + 0.01692874, + 0.007032847, + 0.006940915, + -0.025544142, + 0.001823878, + -0.011544113, + -0.021052575, + 0.014026294, + 0.01469609, + -0.0013830938, + 0.0010424505, + 0.023324626, + -0.03167736, + -0.02789499, + 0.002137434, + 0.017283337, + 0.009022532, + 0.002245783, + -0.0023442823, + -0.021814303, + -0.0010793877, + 0.015562884, + 0.018570393, + 0.006402452, + -0.021853702, + -0.01822893, + -0.018045064, + -0.00757131, + -0.014394025, + -0.020803044, + -0.03475054, + 0.00398922, + 0.012548806, + 0.01199721, + 0.01737527, + 0.0058869724, + 0.0057884734, + -0.012023477, + 0.0075581768, + 0.008208272, + -0.03369988, + -0.035144538, + 0.000012607393, + 0.019831184, + 0.013566632, + 0.026699867, + 0.0034080744, + 0.005857423, + 0.022155767, + -0.011583513, + -0.0043372507, + 0.026122004, + 0.0024493483, + -0.011242049, + 0.0058311564, + 0.036431592, + 0.035092004, + 0.0021505672, + -0.0021719087, + -0.024060085, + 0.0052631437, + -0.0040351865, + 0.0057523567, + -0.039005708, + -0.017243937, + 0.0048691467, + 0.000645991, + -0.012161375, + 0.015234552, + 0.009968125, + -0.022589164, + 0.010053491, + -0.016836807, + 0.012975636, + -0.0049479464, + 0.0125685055, + -0.0058541396, + 0.013750497, + -0.0055290917, + 0.022707364, + -0.013474699, + 0.0017697033, + 0.019305855, + -0.0056111747, + 0.002170267, + 0.0068555484, + 0.0054273093, + -0.033148285, + -0.0021669837, + -0.010644487, + 0.03065297, + -0.011800212, + -0.012660438, + 0.0040122033, + -0.045493525, + 0.00001976398, + -0.0041139857, + -0.015470951, + -0.02191937, + 0.00799814, + 0.015484083, + -0.020553512, + 0.026607934, + -0.023626689, + -0.013251434, + 0.009863059, + 0.00006607659, + 0.03438281, + 0.024454083, + 0.04218395, + -0.004402917, + -0.003660889, + -0.02975991, + 0.010414655, + 0.012233608, + 0.00044488834, + -0.0010145424, + 0.0014947263, + -0.004488283, + -0.028525386, + 0.014459692, + -0.0017976115, + 0.020330248, + -0.04129089, + 0.0132777, + -0.00492168, + 0.020566646, + -0.018754259, + -0.03348975, + -0.015773015, + 0.024073219, + -0.010165124, + 0.0077157756, + -0.026082605, + -0.023324626, + -0.029943775, + 0.029812442, + 0.0012591489, + 0.011714846, + 0.007518777, + -0.017939998, + -0.0004896234, + -0.0044587334, + -0.019791786, + 0.013231734, + -0.00057827274, + 0.021249574, + -0.011130417, + 0.023600424, + -0.010033791, + 0.004796914, + -0.012962502, + 0.0024690481, + -0.002418157, + 0.022667963, + -0.014131361, + -0.021157641, + -0.009140732, + 0.010447488, + 0.007814275, + -0.003143768, + -0.017270204, + -0.001106475, + 0.004819897, + -0.021788036, + 0.010710153, + -0.010086324, + -0.036431592, + -0.014144494, + -0.0013239942, + -0.017559135, + -0.019699853, + -0.006940915, + 0.0067570494, + -0.015300219, + -0.013606031, + 0.00023414096, + 0.008687635, + 0.023902487, + 0.010526287, + -0.002749771, + 0.009101332, + 0.014879955, + -0.030968167, + 0.033936277, + -0.009147298, + 0.004491566, + -0.010427789, + 0.0017073206, + -0.024624815, + -0.008746735, + 0.018977525, + -0.020067582, + -0.029365914, + 0.0017729867, + -0.0046327487, + 0.0034803073, + 0.020290848, + -0.011517847, + 0.054056395, + -0.007479377, + -0.0037068555, + -0.025833072, + -0.0033588249, + -0.0030452688, + -0.018517861, + 0.025885606, + 0.01240434, + 0.01628521, + -0.005200761, + -0.0011836328, + 0.010985951, + 0.00032730485, + -0.044810597, + -0.041264623, + -0.00039153456, + 0.036195196, + 0.00053846266, + 0.0071379133, + -0.000006310109, + -0.0039925035, + -0.015050687, + 0.00929833, + -0.01558915, + -0.0111369835, + -0.008004706, + 0.01290997, + -0.0024985978, + -0.007840541, + -0.007833974, + -0.02139404, + -0.012699838, + -0.0016465794, + -0.022470964, + -0.005640724, + -0.009180131, + 0.034855604, + 0.0036773058, + -0.015746748, + -0.0050989785, + 0.0016638167, + -0.033516016, + -0.013008469, + 0.004928246, + -0.008306771, + 0.008201705, + -0.019870585, + 0.0047509475, + 0.021459706, + -0.022759896, + 0.017060071, + -0.0039925035, + 0.0012484782, + 0.016009413, + -0.019292722, + 0.0033456916, + -0.009403396, + -0.028315254, + -0.02123644, + 0.019699853, + 0.0028679701, + -0.00032525277, + 0.011931544, + 0.005072712, + -0.025570408, + -0.020448446, + 0.017585402, + -0.0102964565, + 0.007866807, + 0.012627605, + -0.023193292, + 0.008983132, + -0.0026003805, + 0.0068424153, + -0.019634185, + 0.0044948496, + -0.0011507997, + 0.0037790884, + 0.014144494, + -0.034803074, + -0.012397774, + -0.0050365957, + -0.027553527, + 0.0059526386, + 0.001956852, + -0.0077289087, + 0.022300232, + -0.0100731915, + -0.030600438, + 0.0025987388, + -0.013645431, + -0.021853702, + -0.01285087, + 0.025504742, + 0.0070262807, + 0.0033653914, + -0.013566632, + 0.03309575, + -0.02102631, + 0.0049479464, + -0.012647305, + -0.03333215, + 0.0037922217, + 0.008050673, + 0.0063630524, + 0.0030288522, + 0.0071510463, + -0.0015644965, + 0.008818967, + -0.010710153, + -0.012391207, + 0.015300219, + -0.013290834, + -0.019266456, + 0.014827422, + -0.016955007, + -0.024677347, + -0.012581639, + 0.017204538, + 0.0029516944, + 0.010670753, + 0.19762892, + -0.009475629, + 0.020671712, + 0.045178328, + 0.005253294, + 0.022116367, + 0.031230832, + -0.0069737476, + -0.0019749103, + 0.012975636, + -0.011800212, + 0.014078828, + -0.016337745, + -0.0019732686, + -0.024940012, + -0.016232679, + -0.014105095, + -0.013829296, + -0.020028183, + -0.018439062, + 0.0017729867, + -0.019778652, + -0.007472811, + -0.009488762, + 0.032622956, + -0.009915592, + -0.0031618262, + 0.0053419434, + 0.03309575, + -0.010782386, + -0.008273938, + -0.0088124005, + 0.0037167054, + 0.0006455806, + -0.0111107165, + 0.0045572324, + 0.0038874375, + -0.010552554, + 0.024230817, + 0.02776366, + -0.009981259, + -0.0026627635, + 0.013225167, + -0.0011286373, + -0.0071970127, + 0.007499077, + 0.0064090188, + -0.023626689, + 0.01729647, + 0.021157641, + -0.0112223495, + 0.013973762, + 0.014958754, + 0.021249574, + -0.01729647, + 0.0091210315, + 0.009291763, + 0.014538491, + -0.012936236, + -0.001738512, + -0.0046425983, + 0.031887494, + -0.018320862, + 0.016981272, + 0.00010403984, + 0.014078828, + -0.025425943, + 0.0027711126, + -0.008674501, + -0.03876931, + 0.013290834, + -0.03362108, + 0.0001390276, + 0.012653871, + -0.017532868, + -0.03220269, + 0.01937152, + 0.018005665, + 0.0004867505, + 0.03690439, + -0.018570393, + -0.016626675, + 0.004619615, + 0.010782386, + -0.036247727, + -0.024585415, + 0.026489735, + -0.010408089, + -0.003585373, + 0.002313091, + 0.021971902, + -0.008825534, + 0.004957796, + -0.021735504, + 0.008267371, + 0.027185796, + 0.0010481963, + 0.03372615, + -0.0009480554, + -0.0073020784, + -0.015457817, + -0.03527587, + 0.021656705, + -0.0026036638, + -0.018977525, + 0.0033686748, + -0.0015382301, + 0.020553512, + 0.00583444, + -0.027422193, + 0.0015218136, + -0.019292722, + 0.0011926619, + -0.0006858011, + 0.01558915, + 0.006235003, + 0.008306771, + -0.027474727, + -0.0019076023, + -0.0025560558, + 0.023652956, + -0.017598534, + -0.017283337, + 0.011307715, + -0.036641724, + -0.010092891, + -0.020041317, + 0.023232693, + -0.013028169, + -0.037639853, + 0.020028183, + -0.022103235, + -0.0055225254, + 0.010624787, + 0.004534249, + 0.035827465, + -0.0013075777, + -0.011156683, + -0.016836807, + 0.0055126753, + 0.007032847, + -0.01636401, + 0.004179652, + 0.019174524, + 0.0041730856, + -0.0061332206, + -0.0034507574, + 0.007019714, + -0.006136504, + -0.022983162, + -0.011288015, + -0.023075094, + 0.0057687736, + -0.0030222856, + -0.0069737476, + -0.018005665, + -0.04938096, + -0.039688636, + 0.0019141689, + 0.010756119, + -0.026502868, + 0.0020126682, + 0.01993625, + -0.0028400621, + -0.017651068, + -0.0040056366, + -0.16978645, + 0.014236427, + 0.0061824704, + -0.013487833, + 0.009672628, + 0.016061947, + 0.011747679, + 0.009915592, + 0.0091210315, + 0.011990643, + 0.022379031, + 0.0077420417, + -0.021788036, + -0.029418446, + 0.010440921, + -0.01013229, + -0.01993625, + 0.023206426, + 0.020540379, + 0.013382766, + 0.03288562, + -0.015195153, + 0.020330248, + 0.0033309166, + 0.011760811, + 0.010631354, + 0.008510336, + 0.0027776791, + -0.010165124, + -0.012936236, + -0.01558915, + -0.004711548, + 0.015602283, + 0.017322736, + 0.0005343585, + 0.0016375502, + -0.00022552226, + -0.013428733, + -0.0015152469, + 0.015457817, + 0.023285225, + 0.048908167, + -0.0025560558, + -0.00716418, + -0.0114456145, + 0.020514112, + 0.020737378, + -0.01201691, + 0.017243937, + -0.009928726, + 0.033962544, + -0.005128528, + -0.009449363, + 0.0024542732, + 0.03178243, + 0.0012041535, + -0.007774875, + 0.005712957, + -0.0123715075, + 0.01834713, + -0.013934362, + -0.0034277742, + 0.011366814, + 0.005108828, + 0.0019749103, + -0.015733615, + -0.0077354754, + 0.0026036638, + -0.01989685, + -0.0050398787, + -0.011596646, + -0.03028524, + 0.016350877, + -0.01506382, + -0.00076501095, + 0.025609808, + -0.019765519, + 0.02335089, + -0.011268316, + 0.00041061878, + 0.0006706158, + 0.013251434, + -0.0039334036, + -0.006454985, + -0.0019683435, + -0.004317551, + -0.0048133307, + 0.0035689566, + -0.005942789, + -0.015667949, + 0.028131388, + -0.011826478, + -0.014551624, + -0.006967181, + 0.019384654, + 0.021052575, + -0.012752371, + 0.003660889, + -0.001600613, + -0.017861199, + -0.010316156, + -0.0021834003, + -0.020120116, + 0.010125724, + 0.051508546, + 0.016416544, + 0.023048827, + 0.011872444, + 0.034067612, + 0.02057978, + -0.00710508, + 0.002982886, + 0.03593253, + 0.04168489, + 0.011800212, + -0.0015997922, + 0.008779568, + -0.0035656733, + 0.014958754, + 0.007807708, + 0.025281478, + -0.0016375502, + 0.002812154, + 0.009199831, + -0.0007190446, + -0.003903854, + -0.10065311, + -0.03414641, + 0.016692342, + 0.019739252, + 0.00049906294, + 0.018465329, + 0.0016153879, + 0.008667935, + 0.006415585, + 0.021157641, + -0.012358374, + -0.045046996, + -0.0049052634, + -0.017637935, + 0.011071317, + 0.014065694, + -0.009147298, + 0.004288001, + -0.0099878255, + 0.013973762, + -0.0043996335, + -0.012049743, + -0.0056735575, + -0.014499092, + 0.007177313, + 0.011150116, + -0.013789897, + 0.02090811, + 0.008136039, + 0.00753191, + 0.0023344324, + -0.00795874, + 0.013487833, + -0.021617305, + 0.0021505672, + 0.007820841, + -0.031152032, + -0.0038743042, + 0.013540365, + -0.0051974775, + 0.0037462553, + 0.0010884168, + 0.003424491, + -0.027474727, + 0.017440936, + -0.029287113, + -0.024506615, + -0.0010284964, + 0.0103818225, + -0.0017450786, + -0.00669795, + -0.0018485028, + -0.02480868, + 0.010151991, + -0.011097583, + -0.021302108, + 0.017427802, + 0.012194209, + -0.011872444, + 0.0006677429, + -0.027290862, + -0.010197957, + -0.007879941, + 0.019988783, + -0.0045999154, + 0.002616797, + -0.020198915, + -0.043628607, + 0.0179006, + -0.022260834, + -0.014840555, + -0.01595688, + 0.0007682942, + 0.025911873, + -0.034356542, + -0.008989699, + -0.025189545, + -0.024821814, + 0.005942789, + -0.02082931, + -0.01432836, + -0.020172648, + 0.020894976, + -0.008838667, + 0.029260848, + 0.014013162, + 0.005870556, + 0.012010343, + 0.0077683083, + -0.018727994, + 0.0041993516, + 0.008858367, + 0.010467188, + -0.01432836, + 0.011905277, + 0.024992546, + -0.009823659, + 0.023626689, + 0.02797379, + -0.011005651, + -0.016508477, + -0.0049085463, + -0.045782458, + 0.023193292, + -0.002820362, + -0.0059592053, + 0.025110746, + -0.006921215, + 0.013947495, + -0.008530036, + -0.007630409, + 0.012141676, + -0.014013162, + -0.0013239942, + -0.0026479885, + -0.0102964565, + -0.024086352, + -0.031729896, + 0.02290436, + 0.001462714, + 0.026699867, + 0.008917467, + 0.0082805045, + 0.017716734, + 0.022457832, + 0.023403425, + -0.018517861, + 0.0017089621, + -0.005085845, + 0.018202664, + -0.014302093, + -0.032334026, + 0.025767406, + -0.018806793, + 0.00445545, + 0.02752726, + -0.009863059, + -0.005660424, + -0.0013469774, + 0.013776763, + 0.0022720497, + -0.0025675474, + -0.006862115, + -0.023075094, + 0.029602312, + -0.016981272, + -0.013947495, + -0.0030304939, + -0.019673586, + 0.001951927, + 0.01937152, + -0.006674967, + 0.02147284, + 0.017848067, + 0.00978426, + -0.0010432714, + -0.010756119, + -0.041028224, + 0.022195166, + 0.019844318, + 0.0062547033, + -0.02480868, + 0.018452195, + 0.010335856, + 0.01289027, + -0.014354626, + 0.000795792, + -0.010099458, + 0.0017056789, + -0.014827422, + 0.011557247, + -0.034960672, + -0.0002417336, + -0.002503523, + 0.011583513, + 0.0035295568, + 0.03333215, + 0.016114479, + 0.010401522, + -0.0060544214, + -0.012332108, + 0.02046158, + 0.004777214, + 0.0020241598, + -0.030941902, + 0.018373396, + 0.018557262, + 0.014236427, + -0.030810568, + 0.015694216, + -0.004793631, + 0.008654802, + -0.010723286, + 0.015681082, + 0.0017631368, + -0.0265948, + 0.0057359403, + 0.027133264, + -0.0049413797, + -0.016324611, + 0.004432467, + 0.014433425, + 0.024165152, + -0.011859311, + -0.025596675, + -0.0223265, + -0.0041107023, + 0.0041533853, + -0.027553527, + -0.028709251, + -0.0060150214, + 0.0066487, + 0.028840583, + 0.014814289, + 0.015208286, + 0.023955021, + -0.015260818, + 0.012857437, + -0.028157655, + -0.024178285, + -0.00094969705, + 0.013527232, + 0.04136969, + 0.011360249, + 0.031020701, + -0.015641682, + 0.009948425, + 0.002730071, + 0.0058442894, + -0.018176397, + 0.0088715, + -0.005049729, + -0.0047607976, + -0.010079757, + -0.013947495, + -0.02589874, + -0.017624801, + -0.002687388, + 0.024060085, + 0.029628579, + -0.036142662, + 0.04257795, + 0.00073012576, + -0.0071116467, + -0.009212964, + 0.033016954, + 0.022562897, + 0.02768486, + -0.0065896004, + -0.017874332, + -0.041317157, + -0.00935743, + 0.0028285705, + 0.012962502, + -0.020435313, + -0.0046852813, + 0.012712971, + -0.005617741, + -0.0020931093, + -0.013133235, + -0.0037561052, + 0.024388418, + 0.0015447967, + 0.014288959, + 0.0055684918, + -0.013527232, + -0.0011754245, + 0.019988783, + -0.030311506, + -0.018530995, + -0.024020687, + 0.0074202777, + -0.0035722398, + -0.046228986, + -0.022733629, + 0.0033686748, + -0.017401537, + -0.005128528, + 0.0031043685, + 0.011498147, + -0.00010896481, + -0.0060478547, + 0.010316156, + -0.016981272, + -0.02574114, + 0.009580695, + -0.0068424153, + 0.008969999, + -0.019082591, + -0.0052467273 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 4, + "total_tokens": 4 + } +} +247 34475 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 52 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["japan"]}HTTP/2.0 200 OK +Content-Length: 33520 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:19:30 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 90 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-wftmv +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999999 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_28943efa2b9f4d58b3a294053b6896a4 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.0025093954, + -0.014704405, + -0.0073522027, + -0.02217393, + -0.008075691, + 0.017116033, + -0.024598593, + 0.0051230774, + 0.014808692, + -0.039342105, + -0.0152910175, + 0.011536702, + 0.005507634, + -0.023177689, + 0.0012546977, + -0.0012180345, + 0.019983914, + -0.018875869, + 0.02467681, + -0.017037818, + -0.009405345, + 0.026501823, + 0.0047776285, + -0.0016522902, + 0.008303817, + 0.0038748977, + 0.0046766005, + -0.019006226, + 0.008773107, + -0.005448973, + 0.00782801, + -0.007977922, + -0.0087079285, + -0.027140578, + 0.0075477404, + -0.009196771, + -0.011621434, + -0.01291198, + -0.0018624929, + -0.012527424, + 0.019579802, + -0.009066413, + -0.012436173, + -0.00083307043, + -0.010213565, + 0.022108752, + -0.014743513, + 0.005768351, + -0.008492837, + 0.026058605, + 0.02089642, + 0.03381492, + -0.030243104, + -0.014274224, + -0.026827719, + -0.005315356, + -0.03334563, + -0.0094379345, + -0.0065146512, + 0.00045136528, + 0.0052729896, + 0.021678569, + -0.03459707, + 0.012768586, + 0.012827247, + -0.012468763, + -0.00036948404, + 0.012560013, + -0.016672814, + -0.008544981, + 0.030634178, + 0.027922727, + 0.006045362, + 0.003698914, + 0.024624664, + -0.006325632, + -0.0067069298, + -0.008584088, + 0.0030406052, + 0.013765827, + 0.019162657, + -0.031259898, + 0.0016294776, + -0.0118625965, + 0.007899707, + 0.0049307994, + -0.034232065, + 0.03449278, + 0.006967646, + -0.0044680275, + 0.011100002, + 0.01160188, + 0.011504112, + 0.02024463, + -0.028887378, + -0.014443689, + -0.0041095424, + 0.043617856, + -0.006182238, + -0.025719674, + -0.017142104, + 0.0192148, + -0.008773107, + -0.012879391, + -0.024116268, + 0.010037581, + 0.0064788028, + -0.010115797, + 0.016359955, + -0.0086362315, + -0.009118557, + 0.0281313, + 0.006100764, + -0.053290434, + -0.010721963, + -0.018980155, + 0.011256431, + 0.0030520116, + -0.008942573, + -0.01930605, + 0.017572286, + 0.023490548, + 0.016425135, + 0.000037987196, + 0.026749505, + 0.003094378, + -0.008193013, + -0.017702645, + 0.000025320554, + -0.0077497954, + 0.022916973, + 0.0109175, + 0.0000014878531, + 0.016751029, + -0.017441928, + 0.0029949797, + -0.0130293025, + -0.00095080014, + -0.018380508, + -0.016894424, + 0.0015748901, + 0.0033925723, + -0.0026055346, + 0.007065415, + 0.011113037, + 0.018302292, + 0.014795656, + -0.00048925064, + -0.005377276, + 0.001883676, + -0.0040965066, + -0.020049091, + 0.028835235, + 0.00043425578, + 0.023894658, + 0.011269467, + 0.0125926025, + 0.01319225, + 0.011784382, + 0.0039596306, + -0.0012579567, + -0.006032326, + 0.01753318, + -0.012116795, + -0.009333648, + 0.024533415, + 0.013896185, + 0.00623764, + 0.00089621264, + -0.0038879334, + -0.02420752, + 0.01800247, + -0.03746495, + 0.01565602, + -0.0050839703, + 0.0017158398, + 0.0050285677, + 0.015760306, + -0.024194483, + -0.0127751045, + -0.011425897, + 0.021639463, + 0.01977534, + 0.006693894, + -0.005813976, + -0.002207942, + 0.011947329, + 0.008740517, + 0.0064788028, + -0.016829245, + 0.014482797, + 0.038820673, + 0.022890901, + 0.016021024, + -0.6841199, + -0.04638145, + 0.011191252, + 0.007638991, + 0.03477957, + 0.021078922, + 0.017076924, + 0.008883912, + -0.01001151, + 0.019136585, + -0.024155376, + 0.012735996, + -0.008747036, + -0.011184734, + 0.0005059528, + -0.0062930426, + 0.011210806, + -0.030373462, + -0.0038716388, + -0.0065113925, + -0.015369233, + 0.008003994, + -0.015173695, + 0.0005088044, + -0.0022600854, + -0.0021036556, + 0.00041205416, + 0.001955373, + -0.0053674993, + 0.034883857, + -0.04270535, + 0.033554204, + 0.01827622, + -0.0109696435, + 0.03384099, + -0.025067883, + -0.02199143, + 0.03728245, + 0.020453202, + 0.029956317, + -0.0021199503, + -0.010278745, + -0.0013483927, + -0.009183736, + -0.004164945, + -0.0027081918, + 0.024807166, + -0.018419614, + 0.0036174401, + -0.015864594, + 0.012234118, + -0.01565602, + -0.01755925, + -0.012762069, + 0.00075567025, + 0.019345157, + -0.0024458459, + -0.02495056, + 0.003200294, + -0.003995479, + -0.019123549, + 0.0070849685, + -0.016920496, + -0.005282766, + -0.0075216684, + -0.003175852, + -0.034075636, + 0.0024491048, + 0.013179215, + -0.018315328, + -0.0013964623, + 0.009744276, + -0.0033632417, + -0.0030520116, + 0.010682855, + 0.022186967, + 0.013987436, + -0.026149856, + -0.019801412, + -0.019996949, + 0.008512391, + 0.0064136237, + -0.009359719, + 0.0025631683, + 0.018758547, + 0.002545244, + -0.021261424, + 0.0027407813, + 0.013739755, + -0.019201763, + 0.006980682, + 0.0020107753, + 0.006377775, + -0.0051882565, + -0.01035696, + 0.01793729, + -0.0003220255, + -0.026723431, + 0.009568293, + -0.0011919629, + -0.017911218, + -0.0056836177, + 0.001955373, + -0.0027163392, + -0.0020841018, + -0.0026674548, + -0.014730478, + 0.008303817, + 0.034883857, + -0.030712394, + 0.022486791, + -0.011621434, + -0.022369469, + 0.0036826194, + 0.028704876, + -0.026540931, + 0.012898944, + -0.0028825458, + 0.016320847, + -0.00063997734, + 0.011875632, + 0.0023937025, + 0.018719438, + 0.0024458459, + 0.00901427, + 0.021469997, + 0.004132355, + -0.02595432, + -0.007762831, + 0.004494099, + -0.011882151, + 0.014000472, + 0.021417852, + -0.019671053, + 0.025120026, + -0.007801939, + 0.0061137998, + 0.0053414274, + 0.01493905, + -0.046511807, + -0.03003453, + -0.01619049, + 0.0016042207, + -0.0010070171, + 0.0077563133, + -0.015864594, + -0.0023822961, + 0.002483324, + -0.0003623551, + 0.010122315, + 0.024559487, + -0.005093747, + -0.021039814, + 0.021548212, + -0.00034157923, + -0.015369233, + -0.008883912, + -0.007912743, + 0.012312332, + -0.012416619, + 0.026905933, + -0.0012408472, + -0.02940881, + -0.0028890637, + 0.014039579, + -0.01254046, + 0.004634234, + 0.030686323, + -0.019540695, + -0.026254144, + -0.0030552705, + -0.001484454, + -0.009581328, + 0.016555492, + 0.008388551, + 0.0100441, + 0.0013451338, + -0.011934293, + 0.0042529367, + -0.0031514096, + 0.0043702587, + -0.022447683, + -0.00667434, + -0.004226865, + 0.032015976, + -0.01840658, + 0.0151997665, + 0.014352438, + 0.0028108489, + 0.00033180238, + -0.031025253, + 0.024572521, + 0.011465005, + 0.0118625965, + 0.0082712285, + -0.013479038, + 0.015369233, + 0.016751029, + -0.0077823848, + 0.022421611, + 0.024259662, + -0.011627952, + 0.007938814, + -0.016086202, + 0.014978158, + -0.021065885, + -0.013439931, + -0.025628423, + 0.025432887, + 0.013700647, + 0.011412861, + -0.024220554, + -0.0029314302, + -0.008649267, + -0.0011691501, + 0.028652733, + 0.010389549, + 0.0063484446, + -0.006045362, + 0.0018869351, + 0.003241031, + -0.020596597, + 0.0032068118, + -0.01603406, + 0.0030291989, + 0.015551734, + -0.019605875, + 0.014052615, + 0.01849783, + -0.017324606, + -0.025524138, + -0.020414095, + -0.011660541, + 0.020974636, + 0.015017265, + -0.0011194511, + 0.016451206, + -0.024898417, + 0.035692077, + 0.022695364, + -0.0006326447, + 0.0111521445, + 0.008101762, + 0.011869115, + 0.013557253, + -0.009340165, + 0.050605055, + -0.00006920187, + -0.02313858, + 0.019253908, + -0.006693894, + -0.0071175583, + -0.006602643, + 0.010207048, + 0.009900706, + -0.029904172, + 0.015147624, + 0.0011830007, + 0.038221028, + 0.03796031, + 0.007990958, + -0.003946595, + 0.009385791, + -0.0017875369, + 0.0027733708, + -0.0049307994, + 0.021065885, + 0.014248152, + -0.0020726954, + 0.00001147636, + -0.015030301, + 0.0014518645, + 0.000006034159, + -0.023699122, + 0.02685379, + -0.014821728, + -0.0035196715, + 0.0008807326, + 0.021235352, + 0.01771568, + -0.0077823848, + -0.05034434, + 0.018654259, + 0.001085232, + -0.007502115, + -0.021626426, + -0.00355552, + -0.012853319, + -0.021900179, + 0.027088435, + 0.02747951, + 0.028470233, + -0.0023154877, + -0.023047332, + -0.014091722, + 0.0065570176, + 0.024989668, + -0.019436408, + -0.011908222, + 0.0027489287, + 0.014404582, + -0.021183208, + 0.006902467, + 0.010780623, + 0.017846039, + -0.006961128, + 0.0072283624, + -0.010415621, + 0.0035848506, + 0.0033893134, + -0.011223841, + -0.009301058, + -0.003848826, + 0.008427658, + 0.0046114214, + -0.004481063, + -0.019449444, + 0.01254046, + 0.013948328, + -0.00661242, + -0.013009749, + -0.012879391, + -0.010715445, + 0.0023839257, + 0.06450124, + -0.010982679, + 0.0016384397, + 0.0041258372, + 0.0022503086, + -0.010154904, + -0.02098767, + -0.015642984, + -0.0008636231, + 0.0041844985, + -0.0038390493, + 0.008968645, + 0.011047858, + 0.014052615, + -0.0012832136, + 0.0020678071, + -0.009431416, + -0.018354435, + 0.006902467, + -0.015903702, + 0.012846801, + -0.007606401, + 0.01469137, + 0.013042338, + 0.0036923962, + 0.004142132, + 0.0134138595, + 0.027427366, + 0.018302292, + -0.017833002, + 0.0059769237, + -0.0020238112, + -0.025067883, + 0.012455727, + -0.014991194, + 0.009718204, + 0.020388024, + 0.032693837, + 0.0020759543, + -0.006322373, + 0.0149260145, + 0.015108516, + 0.009033823, + -0.004601645, + 0.008962126, + -0.031859547, + -0.031233827, + 0.018145863, + -0.02651486, + -0.012077688, + 0.04364393, + 0.0017679832, + -0.02891345, + -0.024285734, + -0.0070849685, + 0.031129539, + -0.021978393, + -0.00019716678, + 0.0013980918, + -0.004132355, + -0.0012326998, + -0.04544287, + 0.0045462423, + -0.00973124, + -0.020596597, + -0.041844983, + -0.015512627, + -0.029643456, + -0.02732308, + -0.013622433, + -0.019045334, + -0.03000846, + -0.01937123, + 0.008003994, + 0.025185205, + -0.01755925, + 0.008303817, + -0.00589545, + -0.0012791399, + 0.021013742, + -0.022017501, + -0.016633706, + -0.030217033, + -0.008127834, + -0.0043246336, + 0.022069644, + 0.025902176, + -0.028548447, + -0.0074630072, + 0.0019407078, + 0.025237348, + -0.0033990901, + 0.015577805, + 0.017415857, + 0.005963888, + 0.0006827511, + 0.02152214, + 0.03206812, + -0.0046928953, + -0.010220083, + 0.02380341, + -0.01637299, + 0.0038748977, + 0.007925779, + 0.0011520407, + 0.020661775, + 0.0048884326, + 0.01191474, + -0.005533706, + -0.0075086327, + 0.02548503, + -0.014899943, + 0.007489079, + 0.017428892, + -0.0049829422, + 0.02049231, + -0.0085254265, + 0.008095245, + 0.008023548, + 0.0009874634, + 0.021821965, + -0.019970877, + 0.013387788, + 0.021065885, + 0.0015431152, + 0.021039814, + 0.0071175583, + -0.0025810925, + -0.0054848217, + -0.0073587205, + -0.019879626, + 0.018967118, + -0.01469137, + -0.011373754, + -0.022538934, + 0.006746037, + -0.009046859, + 0.008740517, + -0.010233119, + -0.027010221, + -0.0075086327, + -0.011249913, + 0.006635233, + 0.0038586028, + -0.023972875, + -0.019736232, + 0.00017058593, + 0.010832767, + 0.00268212, + 0.01699871, + -0.004793923, + 0.0009565033, + -0.01203858, + -0.0009842045, + -0.026019499, + -0.044895366, + -0.041375693, + -0.023646979, + 0.019879626, + 0.021795891, + 0.030686323, + 0.015421376, + 0.004934058, + -0.0016604377, + -0.017598357, + 0.018132826, + 0.0021199503, + 0.02906988, + -0.0064983563, + 0.0020564008, + 0.026215035, + 0.018354435, + -0.020309808, + -0.009529185, + -0.010383031, + 0.027297009, + -0.00421057, + 0.010024546, + -0.010220083, + -0.0255111, + 0.00866882, + -0.01977534, + -0.0029737966, + -0.0006033141, + 0.008473284, + -0.0075998832, + 0.009053377, + -0.0023562245, + 0.011119555, + -0.002264974, + 0.0042627132, + -0.023034295, + 0.0009100632, + -0.01874551, + -0.001924413, + -0.012064652, + -0.0008945832, + -0.006739519, + 0.014248152, + 0.014143866, + 0.023281975, + 0.010083207, + 0.00097198336, + -0.01406565, + 0.00302594, + 0.028548447, + -0.016490312, + -0.026827719, + 0.00031428548, + -0.01578638, + -0.02017945, + -0.018419614, + -0.0022226074, + -0.022213038, + -0.020596597, + 0.017363712, + -0.0065830895, + 0.030164888, + -0.00044403263, + -0.019671053, + -0.002872769, + 0.012221082, + 0.03939425, + 0.0039661485, + 0.019019263, + 0.0006118688, + -0.0033697595, + -0.026905933, + -0.01699871, + -0.014417618, + 0.00066197524, + 0.010304816, + 0.020453202, + -0.022695364, + -0.043748215, + -0.0058596013, + 0.008968645, + -0.00627023, + -0.009379273, + 0.02192625, + 0.010780623, + 0.009952849, + -0.020726955, + -0.010845803, + -0.00988767, + 0.03000846, + -0.0034544924, + -0.00010561052, + -0.0100441, + -0.018823724, + -0.021013742, + 0.021887142, + -0.011627952, + 0.014847799, + 0.0034773052, + -0.017194247, + 0.0036435118, + -0.009379273, + -0.013309573, + 0.009548739, + -0.0070132716, + 0.009868116, + 0.0077302414, + -0.010532943, + 0.003852085, + 0.011386789, + -0.014326367, + -0.0016302923, + -0.019814447, + 0.022447683, + -0.012885909, + -0.023125546, + -0.018888904, + 0.01619049, + 0.024572521, + -0.006733001, + -0.00027538172, + 0.010402584, + -0.022578042, + -0.0009662802, + 0.020270701, + 0.008812215, + -0.024976632, + -0.007058897, + -0.0165946, + -0.021561246, + -0.021821965, + -0.0005246918, + -0.0050578984, + -0.0025419851, + -0.0067525553, + -0.0033795366, + -0.024585558, + 0.010487318, + -0.011856079, + -0.013479038, + 0.0013019526, + 0.02293001, + -0.019345157, + 0.00842114, + -0.0014665298, + 0.020361952, + -0.023646979, + 0.0022405316, + 0.00024381059, + -0.016777102, + 0.020401059, + -0.01603406, + -0.002385555, + -0.03081668, + 0.00014868983, + 0.019253908, + 0.017363712, + 0.028235588, + 0.02239554, + -0.024168411, + 0.0036141812, + -0.042679276, + -0.025054848, + 0.013909221, + 0.009164182, + 0.017963361, + -0.004705931, + -0.00552067, + 0.002941207, + 0.010839284, + -0.013179215, + -0.0152910175, + -0.012501352, + -0.030451678, + -0.017846039, + 0.01406565, + -0.011158663, + 0.0018282739, + -0.017102996, + 0.0046733418, + -0.0024474752, + 0.018941047, + 0.0018820466, + 0.0068568415, + 0.004780887, + 0.032667767, + 0.00645599, + 0.0007678913, + -0.0021557987, + -0.019658018, + 0.01908444, + -0.019188728, + -0.01771568, + -0.025915211, + -0.017663537, + 0.037908167, + 0.010910982, + -0.015043337, + -0.024689844, + 0.008590606, + -0.025654495, + -0.02058356, + -0.009620436, + 0.031624902, + 0.016816208, + 0.0005605403, + 0.011627952, + -0.0022014242, + 0.0071827373, + 0.0030650473, + -0.0010583457, + -0.00007072951, + 0.021730714, + -0.028000943, + 0.021939287, + 0.0002782333, + -0.034388494, + -0.010982679, + 0.023295011, + 0.0004073694, + 0.001618886, + 0.007847564, + -0.003421903, + -0.017324606, + -0.000569095, + 0.0009622065, + -0.019384265, + 0.0054880804, + 0.008206049, + -0.044738937, + 0.013544218, + -0.0026299767, + -0.011556255, + -0.017819967, + 0.009483559, + -0.0063386676, + 0.0012579567, + -0.00047865903, + -0.008994716, + 0.0024882122, + -0.00073489436, + -0.03256348, + 0.019970877, + -0.008395068, + 0.0047352617, + 0.038664244, + 0.0077367597, + -0.0008571052, + -0.021391781, + -0.006605902, + -0.020388024, + -0.013290019, + 0.0235818, + -0.0100766895, + -0.018914975, + -0.016855316, + 0.0069350568, + -0.031624902, + 0.0130293025, + 0.0024588816, + 0.0134138595, + -0.028027015, + 0.021339638, + 0.018576045, + -0.039263893, + 0.0015919995, + 0.023555728, + -0.023125546, + 0.0056836177, + -0.013335644, + 0.010689373, + -0.029200237, + 0.022630185, + 0.0071827373, + -0.0064853206, + -0.025328599, + 0.007697652, + -0.006416883, + -0.027583797, + -0.004230124, + 0.18563008, + -0.017767824, + 0.015877629, + 0.038247097, + -0.00052917283, + 0.03587458, + 0.02860059, + -0.0005393571, + -0.0031025254, + 0.008166942, + -0.040776048, + 0.020766063, + 0.014274224, + -0.0005866119, + -0.001288102, + -0.043331068, + -0.029956317, + -0.011465005, + -0.036656726, + 0.009431416, + 0.009314094, + -0.0054750447, + -0.013922256, + -0.00910552, + 0.013557253, + -0.0019977395, + -0.006462508, + 0.009222843, + 0.023881624, + 0.016737994, + 0.0025941283, + 0.008153906, + 0.004748298, + -0.0010208677, + -0.019488553, + -0.014417618, + -0.0043148566, + -0.0037477985, + 0.012468763, + 0.019006226, + 0.0023122288, + 0.008225603, + 0.0069220206, + -0.0042333826, + -0.013557253, + 0.019188728, + 0.003786906, + -0.0077432776, + -0.008968645, + 0.026032533, + -0.03066025, + -0.017089961, + 0.03496207, + 0.03285027, + 0.014547976, + -0.008219085, + 0.02826166, + 0.0053186147, + -0.0005430234, + -0.010734999, + -0.017102996, + 0.01619049, + -0.012677335, + 0.025185205, + -0.011673577, + 0.0043539642, + -0.035222787, + -0.0038129776, + -0.0016262187, + -0.016555492, + 0.014508869, + -0.018198006, + -0.01818497, + -0.013896185, + -0.030399533, + -0.02747951, + 0.037099946, + 0.015499591, + 0.00826471, + 0.038507815, + 0.0039074873, + 0.0065928665, + -0.0036206993, + 0.011908222, + 0.00110723, + -0.021131065, + 0.008336407, + -0.008916501, + 0.01437851, + 0.0008265525, + -0.0017370231, + -0.01883676, + -0.003770611, + -0.020674812, + -0.0057716095, + 0.008492837, + 0.0000075172384, + 0.016724957, + -0.014182973, + 0.002862992, + -0.010995715, + -0.010734999, + 0.0026348652, + 0.007899707, + 0.010669819, + 0.01469137, + -0.018237114, + 0.004376777, + -0.002167205, + -0.010891428, + -0.011921258, + -0.028079158, + -0.000112433954, + 0.005892191, + -0.017259426, + 0.004494099, + -0.0050024963, + -0.015538698, + 0.018615153, + -0.026619146, + 0.015369233, + -0.021874107, + -0.011556255, + -0.011621434, + -0.021874107, + -0.013726719, + 0.0004872138, + -0.01930605, + 0.0010477541, + -0.0331892, + 0.0016359955, + -0.012403583, + 0.026958076, + -0.026723431, + 0.00095161493, + 0.01774175, + 0.017324606, + 0.0038586028, + -0.0072544343, + 0.033137057, + 0.0047352617, + -0.011249913, + 0.025850032, + 0.006746037, + -0.000620831, + -0.005892191, + 0.0043050796, + 0.025250385, + -0.009985439, + 0.0099658845, + -0.00941838, + -0.016777102, + 0.0014388287, + -0.005735761, + 0.04082819, + -0.010220083, + -0.0333717, + -0.015825486, + 0.013283501, + 0.021483032, + -0.03558779, + -0.0043050796, + 0.061685503, + -0.010311334, + -0.027114507, + 0.004503876, + -0.16800566, + 0.0165946, + 0.02064874, + -0.022408575, + 0.021848036, + 0.022486791, + -0.01780693, + -0.0060160314, + 0.004376777, + 0.016021024, + 0.047919676, + 0.03384099, + -0.0165946, + -0.013622433, + 0.01493905, + -0.008655785, + -0.01927998, + 0.0030080157, + 0.01968409, + 0.014052615, + 0.036917444, + -0.012664299, + 0.0035066358, + 0.00017160436, + -0.016490312, + 0.023242868, + 0.0023464477, + 0.01381797, + -0.0085254265, + 0.015695129, + -0.021065885, + -0.0100766895, + 0.02875702, + 0.018719438, + 0.0030585295, + 0.0019635204, + -0.021913214, + -0.020322844, + -0.0151997665, + 0.01646424, + 0.0065081334, + 0.011334646, + 0.00227638, + -0.014287259, + 0.0017582063, + 0.024051089, + 0.014717441, + -0.024663772, + -0.014143866, + -0.011686613, + 0.014613155, + -0.012520906, + -0.011438932, + 0.028704876, + 0.014313331, + -0.0050187907, + 0.008603642, + 0.008290782, + 0.004787405, + 0.024363948, + -0.039316036, + -0.02255197, + 0.017037818, + -0.0062148273, + -0.02622807, + -0.00458535, + -0.0074434537, + 0.0033958312, + -0.010187494, + -0.0026967854, + 0.004138873, + -0.020192485, + 0.0047189672, + -0.034883857, + 0.011373754, + 0.005667323, + 0.0068177343, + 0.02398591, + -0.01325743, + -0.014600119, + -0.036448155, + 0.02860059, + -0.009359719, + -0.0040867296, + -0.013778863, + 0.032302763, + 0.015916737, + 0.005533706, + -0.038455673, + -0.01755925, + 0.027349152, + -0.01827622, + 0.005025309, + -0.009744276, + 0.0024230331, + 0.022617148, + -0.010369996, + 0.028704876, + -0.02938274, + 0.013231358, + 0.008303817, + -0.007573812, + -0.013583325, + 0.02685379, + 0.019723197, + 0.0009499854, + 0.023373226, + 0.024898417, + 0.03782995, + 0.012612157, + -0.018224077, + 0.008199532, + 0.028339874, + 0.010363477, + -0.008355961, + 0.008975162, + 0.014000472, + -0.0047352617, + 0.025693603, + 0.013987436, + 0.019983914, + -0.007104522, + 0.0057487967, + 0.010930535, + -0.007176219, + -0.016177453, + -0.08222996, + 0.0022454201, + -0.0041128015, + 0.020036057, + 0.005009014, + 0.045234296, + 0.01297716, + 0.0062017916, + -0.010207048, + 0.024246626, + -0.0002056197, + -0.019592838, + -0.017389785, + -0.024624664, + 0.0153822685, + 0.0021085439, + -0.018628187, + -0.013374752, + -0.010559015, + 0.010461246, + -0.018980155, + -0.008734, + 0.0034642692, + -0.0076455087, + -0.018054612, + 0.006967646, + -0.010389549, + 0.012879391, + 0.0076194373, + -0.0019570026, + -0.0033665006, + -0.0016213302, + -0.0050350856, + -0.032433122, + -0.013426895, + -0.005292543, + -0.02264322, + 0.0077563133, + 0.036630657, + -0.045651443, + 0.00988767, + -0.00011620212, + -0.0008090356, + -0.020374987, + 0.0062083094, + -0.014587083, + -0.019423373, + 0.013400824, + 0.008303817, + -0.023321083, + -0.035379216, + -0.0057781273, + -0.0025501323, + 0.0017859074, + 0.027714154, + -0.009522667, + 0.017285498, + 0.0073522027, + -0.034988143, + 0.02217393, + 0.009464006, + -0.005729243, + -0.009196771, + 0.027297009, + 0.015343161, + 0.009548739, + -0.016216561, + -0.041740697, + 0.02940881, + -0.015225839, + -0.017911218, + 0.028313803, + -0.02423359, + -0.0068503236, + -0.025563244, + -0.009274987, + -0.016021024, + -0.003135115, + 0.015017265, + -0.023868587, + -0.011510629, + -0.021874107, + 0.010780623, + -0.0065342053, + 0.0018804171, + 0.021600354, + 0.008414622, + -0.0066580456, + 0.0119538475, + -0.009705168, + 0.026553966, + 0.024064125, + 0.023099475, + -0.015095481, + 0.0010941942, + 0.048310753, + -0.0067786267, + -0.009457488, + -0.000286177, + -0.0026593073, + 0.0049307994, + -0.019762304, + -0.06820341, + 0.019175692, + -0.0050383448, + -0.011465005, + 0.028053086, + 0.0034088672, + 0.012768586, + -0.005807458, + 0.014912979, + -0.01690746, + -0.048258606, + 0.015017265, + -0.0078084567, + -0.014600119, + -0.03863817, + -0.025198242, + 0.024168411, + 0.016307812, + 0.00085140206, + -0.005282766, + 0.01995784, + 0.011549737, + 0.024168411, + 0.030399533, + -0.038455673, + 0.00552067, + -0.0038423082, + 0.021417852, + -0.026671289, + -0.011393307, + 0.003500118, + -0.024624664, + -0.0027798887, + 0.01800247, + 0.0021590579, + -0.005729243, + 0.010956607, + -0.0007507818, + 0.021887142, + 0.047293957, + -0.018015504, + -0.009718204, + 0.022069644, + -0.0038455671, + -0.0054750447, + 0.012625192, + -0.0032638435, + -0.0014184603, + -0.0040541403, + 0.01493905, + 0.011575809, + 0.019501587, + -0.0017142104, + -0.008382033, + -0.0048558433, + -0.039811395, + 0.012058134, + 0.008499355, + -0.010050618, + -0.0014828246, + 0.023047332, + -0.0030357167, + 0.029591313, + 0.0014673446, + 0.0013394306, + 0.00056257716, + -0.017116033, + -0.0051133004, + 0.0025615387, + -0.026188964, + -0.025719674, + 0.011940812, + -0.0028809165, + 0.021222316, + 0.008219085, + -0.014965122, + -0.00057276135, + -0.010669819, + -0.016021024, + 0.025367707, + -0.005312097, + -0.0044354377, + -0.044530362, + 0.017194247, + 0.01665978, + -0.017507108, + -0.016777102, + -0.00029615755, + -0.00558259, + 0.020844277, + 0.00012546977, + -0.0015357826, + 0.025993425, + 0.00421057, + 0.00033689447, + 0.009959367, + -0.008688374, + -0.028027015, + 0.037882093, + 0.0016115534, + 0.023373226, + -0.0038846745, + -0.0022812686, + -0.0151997665, + -0.02488538, + -0.009118557, + -0.018954083, + -0.011614916, + -0.00008422362, + 0.016607635, + 0.03034739, + 0.025185205, + -0.010891428, + 0.025367707, + -0.011308574, + -0.0107871415, + -0.015212802, + -0.022604113, + -0.018445686, + 0.02158732, + 0.024116268, + 0.014495833, + 0.016555492, + -0.020205522, + 0.019423373, + -0.0072479164, + 0.00997892, + -0.028704876, + 0.009529185, + -0.012931534, + 0.014339402, + 0.017324606, + -0.006693894, + -0.018875869, + -0.03736066, + 0.013791898, + 0.011693131, + 0.018797653, + -0.01643817, + 0.041688554, + -0.0020629186, + -0.006843806, + 0.003019422, + 0.0024230331, + 0.028027015, + -0.009027306, + 0.016151382, + -0.0038032006, + -0.015017265, + -0.007632473, + 0.0007255249, + -0.013452967, + 0.00648858, + -0.031833474, + -0.0048330305, + -0.024038054, + 0.030634178, + 0.00049454643, + -0.0013418748, + 0.037126016, + -0.0116083985, + 0.03642208, + 0.008179978, + -0.020518381, + -0.012181974, + 0.026723431, + 0.00048151062, + 0.010141868, + -0.007990958, + 0.01175831, + 0.001750059, + -0.022812687, + -0.0014608266, + 0.009040342, + -0.0059736646, + -0.014196008, + 0.0030210514, + 0.008883912, + 0.03081668, + 0.00083673676, + 0.027427366, + -0.0183414, + -0.017050853, + 0.004295303, + 0.00973124, + 0.008193013, + 0.0003967778, + -0.020283736 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 2, + "total_tokens": 2 + } +} diff --git a/vectorstores/dolt/testdata/TestDoltStoreRestWithScoreThreshold.httprr b/vectorstores/dolt/testdata/TestDoltStoreRestWithScoreThreshold.httprr new file mode 100644 index 000000000..fb740ff3d --- /dev/null +++ b/vectorstores/dolt/testdata/TestDoltStoreRestWithScoreThreshold.httprr @@ -0,0 +1,18646 @@ +httprr trace v1 +333 334599 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 137 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["Tokyo","Yokohama","Osaka","Nagoya","Sapporo","Fukuoka","Dublin","Paris","London","New York"]}HTTP/2.0 200 OK +Content-Length: 333642 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:19:32 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 154 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6659cb4779-rnb7h +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999985 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_5d2d9e7b35a4434c9dee3237c2d64041 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.001070031, + 0.008037085, + -0.008887224, + -0.008638722, + -0.010875242, + 0.014713947, + -0.029375577, + 0.013065985, + -0.011051809, + -0.035548896, + 0.001566218, + -0.02474559, + 0.016296513, + -0.027125979, + -0.007997848, + -0.021070372, + 0.021711247, + -0.01803603, + 0.0024016432, + -0.02207746, + -0.011306851, + 0.012686692, + -0.0024065478, + -0.019016959, + -0.008344443, + -0.011803855, + 0.0013651273, + -0.015302505, + 0.008965698, + -0.020010969, + 0.019043118, + -0.019095434, + -0.010522107, + -0.022875283, + 0.008828368, + -0.004652877, + -0.015328663, + -0.0060261786, + -0.0023493269, + -0.0118496325, + 0.009122647, + -0.008207113, + 0.0015155366, + -0.017251285, + -0.018323768, + 0.01607417, + -0.016649649, + 0.016571173, + -0.00018801155, + 0.012255083, + 0.015119398, + 0.020311786, + -0.032331448, + -0.0067684157, + -0.026602816, + -0.016388068, + -0.028486202, + -0.0007291578, + 0.000018967197, + 0.0041558724, + -0.0033645893, + -0.0059934813, + -0.015982617, + 0.0117123015, + 0.014269259, + -0.011346088, + -0.011241456, + 0.028616993, + -0.015302505, + 0.0038223565, + 0.013242552, + 0.017395156, + -0.0010079053, + -0.0024752128, + 0.031625178, + -0.008010927, + -0.0015245284, + 0.004652877, + 0.011856171, + 0.009848535, + 0.01523711, + -0.035601214, + 0.004365138, + 0.0026583197, + 0.013190236, + 0.007605476, + -0.008743354, + 0.0360459, + -0.002671399, + -0.00082071126, + 0.009534637, + 0.003756961, + 0.00992047, + 0.01062674, + -0.024850221, + -0.016113406, + -0.006454518, + 0.043344017, + -0.01857227, + -0.013196776, + -0.0015964633, + 0.009815837, + -0.0037242635, + -0.011529195, + -0.025883468, + 0.011568432, + 0.014321575, + -0.016440384, + 0.008906842, + -0.008710656, + -0.0019765736, + 0.027989198, + -0.013085604, + -0.059065055, + -0.017722132, + -0.012961352, + 0.005476858, + -0.01662349, + -0.010234368, + -0.014753184, + 0.018807694, + 0.019265462, + 0.011856171, + 0.002682843, + 0.02725677, + 0.00033167689, + -0.006483946, + -0.019330857, + 0.00050926604, + -0.009613113, + 0.026995188, + 0.011744999, + -0.0058986577, + 0.015629482, + -0.021004977, + 0.013903045, + -0.016440384, + 0.01131993, + -0.01103873, + -0.006441439, + 0.0063368063, + 0.0090637915, + -0.01286326, + 0.013347185, + 0.0097242845, + 0.02502025, + 0.023136863, + -0.0030392476, + 0.015851825, + -0.005967323, + 0.003730803, + -0.0050256304, + 0.016976625, + 0.0071804062, + 0.009580415, + 0.0035738542, + 0.03225297, + 0.018611507, + 0.0059280857, + 0.010548265, + 0.006931904, + 0.004237617, + 0.031389754, + -0.021345032, + 0.0030081847, + 0.0127063105, + 0.012032739, + 0.014413129, + -0.00033699026, + -0.011588051, + -0.018336847, + 0.019448569, + -0.04049278, + 0.018624587, + 0.005208737, + 0.017578263, + 0.011006032, + 0.009292675, + -0.019854018, + -0.007971689, + -0.0023803897, + 0.00003410264, + 0.02683824, + 0.009927009, + -0.007919373, + 0.005771137, + 0.027779931, + 0.01551177, + -0.0011803856, + -0.014504682, + 0.025870388, + 0.035548896, + 0.031180488, + 0.0071346294, + -0.67843723, + -0.03280229, + 0.0011599495, + 0.004224538, + 0.020468736, + 0.005329719, + 0.018245295, + 0.015498691, + -0.012830562, + 0.013562989, + -0.027230611, + 0.017996792, + -0.01789216, + -0.012601678, + -0.008749894, + 0.0048032864, + 0.015263268, + -0.0027139059, + -0.004208189, + 0.0105548045, + 0.0047771283, + 0.017813684, + -0.008409838, + -0.0052348953, + 0.013236013, + -0.010567884, + 0.007697029, + -0.004306282, + -0.009416926, + 0.02362079, + -0.029794108, + 0.049700443, + 0.0050485185, + -0.01508016, + 0.039917305, + -0.015694877, + -0.02305839, + 0.017565183, + 0.02054721, + 0.031258963, + 0.0014574982, + 0.003841975, + 0.0028806638, + -0.0026027337, + 0.005336258, + 0.002027255, + 0.022208251, + -0.023280734, + 0.008991856, + -0.008220192, + 0.021828959, + -0.036229007, + -0.016675808, + -0.01634883, + -0.0004142385, + 0.0098354565, + 0.0035967426, + -0.0034332543, + -0.0009694856, + -0.009534637, + -0.015851825, + -0.0092011215, + -0.027779931, + -0.021279637, + -0.012366255, + 0.012405492, + -0.010437093, + -0.023306891, + -0.0006384218, + -0.01968399, + 0.004554784, + 0.021397348, + -0.0070365365, + -0.009586954, + 0.017656736, + 0.006235444, + 0.0259881, + -0.031991392, + -0.0034169054, + -0.007618555, + 0.004201649, + 0.012183148, + -0.01969707, + -0.0053035603, + 0.015681798, + -0.040178884, + -0.035967425, + 0.002808729, + 0.026602816, + -0.012882878, + 0.0046430677, + 0.0036719472, + 0.0063923923, + 0.00908995, + -0.011810395, + 0.011882329, + -0.0016970086, + -0.008050164, + 0.006748797, + -0.0071346294, + -0.014216943, + -0.015446375, + 0.009750443, + 0.0036261706, + -0.015302505, + -0.004280124, + -0.014910133, + 0.017238207, + 0.021894353, + -0.014923212, + 0.006107923, + -0.010240907, + -0.017722132, + 0.00039257627, + 0.018493796, + -0.023019154, + 0.017839843, + -0.00011781375, + 0.022391358, + 0.0090637915, + 0.007363513, + 0.0019733037, + 0.016374988, + 0.022574464, + 0.017251285, + 0.015106319, + 0.006078495, + 0.0010798402, + -0.00642509, + 0.0061733183, + -0.001871941, + 0.014426208, + 0.010574424, + -0.006467597, + 0.023176102, + -0.009488861, + -0.009181503, + -0.0059346254, + 0.018493796, + -0.036385957, + -0.033587035, + -0.012425111, + -0.0015277981, + -0.003521538, + 0.012085055, + -0.026419709, + -0.016937388, + 0.0007418282, + -0.019827861, + 0.00503217, + -0.008213652, + 0.0026615895, + -0.029794108, + 0.01914775, + -0.0060065603, + -0.013484515, + -0.00008174415, + -0.0026632245, + -0.021057293, + 0.0029525987, + 0.019043118, + 0.0080697825, + -0.03832166, + -0.0014574982, + 0.0060686856, + -0.012071976, + 0.012804404, + 0.017447472, + -0.0054833977, + -0.008867606, + -0.02151506, + -0.019265462, + -0.02388237, + 0.003953147, + 0.018925406, + 0.0033090033, + 0.010541726, + -0.013628385, + -0.0012694866, + 0.002153141, + 0.011091046, + -0.020730317, + -0.013602227, + 0.011758079, + 0.02027255, + -0.01971015, + 0.011267614, + 0.017944476, + -0.00084196473, + 0.0032043706, + -0.0073308153, + 0.015877984, + 0.008030545, + -0.000106778294, + 0.0120981345, + -0.012909036, + 0.009730823, + -0.003897561, + -0.021828959, + 0.015825668, + 0.032933082, + -0.01523711, + 0.0024572292, + -0.00950194, + 0.016322672, + -0.012124293, + -0.00656569, + -0.018951563, + 0.031206647, + 0.014596236, + 0.014648552, + -0.015210952, + -0.0068861274, + 0.01857227, + -0.006931904, + 0.03288077, + 0.006833811, + 0.023019154, + -0.019396253, + -0.0068665086, + 0.021201164, + -0.034214832, + -0.016257277, + -0.018415323, + -0.012765166, + 0.016741201, + -0.0011983692, + 0.033456247, + 0.0073308153, + -0.0059738625, + -0.034450255, + -0.013406041, + 0.001732976, + 0.021188084, + -0.01522403, + -0.029009365, + 0.00009017401, + -0.024640957, + 0.030081848, + 0.012562441, + 0.023267655, + 0.010253986, + 0.028957048, + -0.019670913, + -0.000803545, + 0.001984748, + 0.035862792, + 0.014269259, + -0.009632731, + 0.01886001, + -0.016688885, + -0.009096489, + -0.005699202, + -0.004064319, + 0.0011893774, + -0.03382246, + 0.021619692, + -0.00048596898, + 0.014831658, + 0.038504764, + -0.0002630118, + 0.0009237089, + 0.0055128257, + 0.005270863, + -0.0011632192, + -0.0044926587, + 0.02725677, + 0.012941734, + -0.007906294, + -0.008298666, + -0.015315584, + 0.006369504, + -0.012967892, + -0.0045318957, + 0.019893257, + -0.016701965, + -0.025831152, + -0.0170551, + 0.01285672, + 0.01647962, + -0.007389671, + -0.04444266, + -0.005100835, + 0.0046365284, + 0.0043945657, + -0.024654036, + -0.01076407, + -0.013039826, + -0.01131339, + 0.019801702, + 0.009966247, + 0.023816975, + 0.001081475, + -0.01789216, + -0.017866002, + -0.009789679, + 0.02207746, + -0.013334106, + -0.011908487, + -0.01048941, + 0.015197872, + -0.008148257, + -0.00030837982, + 0.005431081, + 0.026210444, + 0.011267614, + 0.005355877, + -0.011143362, + -0.0051891184, + -0.0034365242, + 0.017565183, + -0.011091046, + -0.006304109, + 0.010528646, + 0.012549362, + -0.009874693, + -0.0146093145, + 0.008056703, + 0.02417011, + -0.0012057262, + -0.017709052, + 0.006680132, + -0.026668211, + -0.0089526195, + 0.08569403, + 0.0059607835, + 0.01145726, + -0.005633807, + 0.0029362498, + 0.0073308153, + -0.016008774, + 0.0008820194, + 0.0099727865, + 0.008056703, + 0.0038452449, + -0.009233819, + -0.0020174456, + 0.011130284, + -0.0024294362, + -0.00656569, + -0.01676736, + -0.027361402, + 0.02418319, + -0.01969707, + 0.00038338007, + 0.00628776, + 0.0027972849, + 0.012130832, + -0.000813763, + -0.0035476962, + 0.024797905, + 0.018101424, + 0.01913467, + -0.025778836, + 0.0021040945, + 0.019644754, + -0.018402243, + 0.017133573, + -0.008226731, + -0.00004115307, + 0.009966247, + 0.0212404, + 0.0062092855, + -0.01160113, + 0.007513922, + 0.015394058, + 0.00824635, + 0.00038481058, + 0.014138469, + -0.019592438, + -0.018101424, + 0.02024639, + -0.019500885, + -0.018506875, + 0.032776136, + 0.006944983, + -0.041042104, + -0.017656736, + -0.017473629, + 0.008900303, + -0.009547717, + -0.013615306, + -0.0027694919, + 0.010038181, + 0.0066016577, + -0.042114586, + 0.005257784, + -0.011921567, + -0.024614798, + -0.037903126, + -0.002767857, + -0.016741201, + -0.03633364, + -0.0063923923, + -0.005558602, + -0.029401736, + -0.022796808, + 0.024300901, + 0.01607417, + -0.03047422, + 0.008095941, + -0.01621804, + -0.0010790228, + 0.036935277, + -0.026027337, + -0.011398404, + -0.012117753, + -0.008710656, + -0.031886756, + 0.025268752, + 0.031651337, + -0.03280229, + -0.0027760314, + -0.00006381153, + 0.0148055, + -0.00684689, + 0.0153679, + 0.0212404, + 0.0027466035, + -0.011359167, + 0.010155893, + 0.032357603, + -0.016034933, + -0.01313138, + 0.023660026, + -0.014033835, + 0.008462154, + 0.015812589, + 0.015119398, + 0.011346088, + 0.012922116, + 0.018820774, + -0.010777148, + 0.0012743913, + 0.02934942, + -0.018402243, + 0.0084294565, + 0.013484515, + -0.013824571, + 0.021920511, + 0.010280144, + 0.021397348, + 0.011928107, + -0.019762466, + 0.0070299967, + -0.023293814, + 0.015681798, + 0.02989874, + 0.0058855787, + -0.014334654, + 0.0138376495, + -0.009070331, + -0.0061242715, + 0.00097193796, + -0.009259977, + 0.013772255, + -0.02178972, + -0.008050164, + -0.022836046, + 0.001999462, + -0.033482403, + 0.0128436405, + 0.0031079126, + -0.031075856, + -0.007415829, + 0.007481225, + 0.01160113, + -0.0012327018, + -0.03675217, + -0.021985907, + 0.0017297062, + 0.010665976, + -0.0066310856, + 0.017826764, + 0.005404923, + 0.020442577, + -0.01061366, + 0.0062975693, + -0.030918907, + -0.02628892, + -0.025124881, + -0.028172305, + 0.0058299927, + 0.008847987, + 0.031520545, + 0.011189139, + 0.005404923, + -0.011640367, + -0.007997848, + 0.002779301, + 0.004253966, + 0.020939581, + -0.013445278, + 0.02516412, + 0.012366255, + 0.01816682, + -0.02751835, + 0.007487764, + -0.02780609, + 0.023568474, + -0.0027482384, + -0.011195679, + -0.009652349, + -0.02516412, + -0.00907687, + -0.019213146, + 0.005195658, + 0.0005362416, + -0.0025929245, + -0.0032763055, + -0.00060163694, + -0.0124578085, + 0.023555394, + 0.007991308, + 0.007605476, + -0.009338452, + 0.0002950964, + -0.0023918338, + -0.006346616, + 0.005257784, + -0.012680152, + -0.005404923, + -0.0026926524, + 0.025961943, + 0.018820774, + -0.014334654, + -0.0045482446, + 0.002601099, + 0.012130832, + 0.03944646, + 0.0059084673, + -0.015302505, + 0.007278499, + -0.012215846, + -0.026053496, + -0.011751539, + 0.007383132, + -0.01940933, + -0.02359463, + 0.010090498, + -0.006676862, + 0.028303094, + -0.0248633, + -0.015642561, + 0.019893257, + 0.011862711, + 0.032043707, + 0.015681798, + 0.010665976, + 0.008913382, + -0.0071346294, + -0.004737891, + 0.004201649, + -0.015982617, + -0.0070692343, + 0.023110706, + 0.020913424, + -0.011496497, + -0.037301492, + -0.016322672, + 0.004247426, + -0.0016087248, + -0.0010675786, + 0.023856213, + 0.0015899237, + 0.00489157, + -0.026184287, + -0.0014599506, + -0.022875283, + 0.036569063, + -0.015276347, + -0.002754778, + -0.0008574961, + -0.019108513, + -0.0015980981, + 0.014269259, + -0.003802738, + 0.003662138, + 0.015027844, + -0.012621297, + 0.0031226266, + -0.018258374, + -0.00531337, + 0.013942283, + 0.00043201784, + 0.024810985, + 0.009325373, + -0.0010871972, + 0.012804404, + 0.005467049, + -0.011267614, + 0.0054016532, + -0.00014376752, + 0.023686185, + -0.004260505, + -0.011594591, + -0.021358112, + -0.0018523225, + 0.003202736, + 0.009214201, + 0.005215277, + -0.007291578, + -0.01774829, + -0.0049209977, + 0.008409838, + 0.007468146, + -0.0029248057, + -0.011758079, + -0.025216436, + -0.024797905, + -0.022260567, + -0.0061831274, + 0.025948863, + -0.018768458, + 0.0013634925, + 0.0025880197, + -0.018977722, + 0.023960846, + -0.013347185, + -0.0044795796, + 0.017852923, + 0.027884565, + -0.024379376, + 0.011431102, + 0.0070496155, + 0.021763563, + -0.020507973, + -0.0012531378, + 0.00030286208, + -0.011404944, + 0.012928654, + -0.0138376495, + -0.0099727865, + -0.030500377, + 0.006451248, + 0.012124293, + 0.0069384435, + 0.025595728, + 0.033717826, + -0.026158128, + -0.0028888383, + -0.020298708, + -0.015564086, + 0.0181799, + -0.0051466115, + 0.014504682, + 0.020442577, + -0.012464348, + -0.0010021833, + 0.013536831, + -0.013458357, + -0.0059411647, + -0.0073308153, + -0.027701458, + -0.0069580623, + 0.0068534296, + -0.0110779675, + -0.012078515, + -0.02054721, + 0.0036261706, + -0.010947176, + 0.008900303, + 0.010430554, + 0.0046201795, + 0.0011158077, + 0.015446375, + 0.01453084, + 0.012281241, + -0.0113264695, + -0.029113997, + 0.006160239, + -0.0033367963, + -0.029584844, + -0.03897561, + -0.005100835, + 0.020926502, + 0.0034201753, + -0.014897054, + -0.020141758, + 0.011208758, + -0.021449665, + -0.007389671, + -0.013536831, + 0.018846931, + 0.012202767, + -0.012340097, + 0.007808201, + 0.0061275414, + 0.014779342, + 0.00823981, + -0.0034790311, + 0.018336847, + 0.038766347, + -0.036569063, + 0.032226812, + 0.006408741, + -0.016610412, + -0.010502488, + 0.005493207, + 0.005646886, + -0.002699192, + 0.0068534296, + -0.01702894, + -0.010136275, + -0.012111213, + 0.0022724874, + -0.026642054, + 0.017996792, + 0.007605476, + -0.03591511, + 0.026158128, + 0.017695975, + -0.01494937, + 0.005656695, + 0.0059346254, + -0.00475097, + -0.0011787507, + 0.004162412, + -0.025791915, + -0.0034005567, + -0.000193938, + -0.031991392, + 0.01984094, + -0.012261623, + 0.014713947, + 0.0045318957, + 0.00922074, + -0.01075753, + -0.019854018, + 0.0005378765, + -0.015642561, + -0.014413129, + 0.026040416, + -0.0013667622, + -0.025621887, + -0.0122354645, + 0.017983712, + -0.045619775, + 0.009214201, + 0.008834908, + -0.007808201, + -0.024928696, + 0.008167876, + 0.023581553, + -0.026380472, + -0.016937388, + 0.009998945, + -0.022862203, + -0.0003002054, + -0.011888869, + 0.027570667, + -0.031102015, + 0.015616402, + -0.0011501402, + -0.0022463293, + -0.031625178, + -0.0061177323, + 0.011391865, + -0.008043624, + -0.008468694, + 0.23981772, + -0.023542315, + -0.0048000165, + 0.038949452, + -0.0032223545, + 0.039629564, + 0.030134164, + -0.0012049088, + -0.014687789, + 0.00032452427, + -0.03131128, + 0.001627526, + 0.020834949, + -0.0019160829, + -0.0029591382, + -0.025098724, + -0.021292716, + -0.03301156, + -0.038190868, + -0.0060294485, + 0.020141758, + -0.00258475, + -0.002694287, + -0.01341912, + 0.014269259, + 0.012693232, + -0.011287232, + -0.0056665046, + 0.020442577, + 0.019867098, + 0.0048588724, + 0.008017466, + -0.00517277, + 0.02122732, + 0.00013763671, + -0.009600033, + -0.015040924, + -0.0046626865, + 0.02725677, + 0.023673106, + -0.004567863, + 0.0020861106, + -0.010796768, + -0.010247447, + 0.00038848908, + 0.021894353, + -0.007873597, + 0.008364062, + -0.011980423, + 0.034162514, + -0.032933082, + -0.01048941, + 0.030788116, + 0.01662349, + 0.0094234655, + -0.013602227, + 0.036412116, + 0.015250188, + -0.009573875, + -0.017172812, + -0.020861108, + 0.010417474, + -0.010012023, + 0.027230611, + 0.0048163654, + 0.0001181203, + -0.023411525, + 0.012869799, + 0.0062092855, + -0.00083624263, + 0.014923212, + -0.011470339, + -0.0033940172, + -0.01734284, + -0.02893089, + -0.016597332, + 0.032226812, + -0.0033874775, + 0.02177664, + 0.037118383, + -0.008403298, + 0.006833811, + 0.022718335, + 0.0007839264, + 0.009279596, + -0.016793517, + 0.023503078, + 0.0156033235, + 0.0077885827, + -0.008468694, + -0.01369378, + -0.018140662, + -0.014596236, + -0.020390261, + -0.0070757736, + 0.014700868, + 0.0005292934, + 0.008978778, + -7.4080634e-7, + -0.016793517, + -0.008187494, + -0.001349596, + 0.015904142, + -0.009586954, + 0.004257235, + 0.0059869415, + -0.000112091664, + -0.0023264384, + -0.006052337, + -0.03060501, + -0.006232174, + -0.03479031, + 0.008972238, + 0.016989704, + 0.0020713967, + -0.0068926667, + -0.008861066, + -0.023660026, + 0.017368997, + -0.02263986, + 0.014910133, + -0.02024639, + -0.015001686, + 0.00115341, + -0.0036850262, + -0.011025651, + -0.0018212596, + -0.01607417, + 0.0069711413, + -0.035732005, + 0.010541726, + 0.0032730359, + 0.014230021, + 0.0020223502, + -0.0090637915, + 0.021266557, + 0.011542274, + -0.008004387, + -0.014779342, + 0.014975528, + 0.018807694, + -0.012745548, + 0.018075267, + -0.0004217998, + -0.0018572271, + -0.011548813, + 0.0101951305, + 0.012085055, + -0.013458357, + 0.008677959, + -0.0100578, + -0.024000082, + -0.0058365325, + -0.01675428, + 0.031128172, + -0.0050550583, + -0.0127063105, + -0.020298708, + -0.00038276697, + 0.01704202, + -0.029506369, + -0.016231118, + 0.046927683, + -0.017277444, + -0.030029532, + -0.0043520587, + -0.16908614, + 0.027884565, + 0.020848028, + -0.021148847, + 0.019357014, + 0.012948274, + -0.0101951305, + -0.019644754, + -0.0063793133, + 0.023372287, + 0.053101, + 0.018611507, + -0.007952071, + -0.014190785, + 0.0032615915, + -0.019082354, + 0.00040769894, + -0.006382583, + 0.025674203, + 0.01229432, + 0.044364184, + -0.02976795, + 0.002838157, + 0.0011722111, + -0.0028659499, + 0.026053496, + -0.014556998, + 0.009881233, + 0.023136863, + -0.015917221, + -0.02390853, + -0.017447472, + 0.037223015, + 0.0265505, + 0.009979326, + 0.008887224, + 0.00011883556, + -0.01760442, + -0.019880177, + 0.027989198, + 0.006464327, + 0.013916125, + -0.0006760241, + -0.0034496032, + 0.008128638, + 0.027282927, + 0.0042703142, + -0.0068272715, + -0.016244197, + -0.011287232, + 0.031651337, + -0.015694877, + -0.007154248, + 0.018650746, + 0.0056959325, + -0.0024425152, + 0.0062289042, + 0.0106202, + 0.004165682, + -0.012653994, + -0.032906923, + 0.0010160798, + 0.019016959, + -0.0011010937, + -0.012183148, + -0.0034430637, + -0.007873597, + -0.0070757736, + -0.017172812, + 0.020586446, + 0.0003275897, + -0.011915027, + 0.017578263, + -0.03295924, + 0.015446375, + 0.00017779352, + -0.0087041175, + 0.025556492, + 0.011686143, + 0.0088414475, + -0.022208251, + 0.042951647, + -0.014190785, + -0.013680701, + -0.0022872014, + 0.010999493, + -0.0076774107, + -0.0022103619, + -0.03175597, + -0.01956628, + 0.007363513, + -0.018467639, + -0.007814741, + -0.011673065, + 0.000020998028, + 0.008854526, + -0.007952071, + 0.02934942, + -0.021972828, + 0.003253417, + 0.006735718, + -0.008697578, + -0.010077419, + 0.033796303, + 0.024784826, + 0.025922704, + 0.019827861, + 0.019278541, + 0.01104527, + 0.011012572, + -0.029297104, + -0.005084486, + 0.012915576, + 0.028747782, + -0.032906923, + 0.002151506, + 0.01940933, + -0.0082921265, + 0.018323768, + 0.01257552, + 0.044808872, + -0.0100839585, + 0.002180934, + 0.025648044, + -0.016374988, + -0.023660026, + -0.07219643, + -0.000642509, + 0.0045318957, + 0.018546114, + -0.004384756, + 0.042402327, + 0.0056501557, + 0.01691123, + 0.00377331, + 0.013432199, + -0.0024212617, + -0.017238207, + 0.0048523326, + -0.016322672, + 0.028041514, + -0.00335478, + 0.0059313555, + -0.002205457, + -0.0023362478, + 0.023960846, + -0.018389164, + -0.016414225, + 0.0028446964, + -0.008965698, + -0.014844738, + 0.008847987, + -0.026785923, + 0.011398404, + 0.01508016, + 0.007853978, + -0.003701375, + -0.0012931925, + 0.0024555943, + -0.029140154, + -0.02109653, + 0.024536325, + -0.019618597, + 0.013183696, + 0.033299297, + -0.045096613, + -0.010783688, + 0.0100839585, + 0.003004915, + -0.011071428, + -0.013615306, + -0.0029575033, + -0.028538518, + 0.005421272, + 0.0048163654, + -0.018768458, + -0.0122354645, + -0.0019226224, + -0.00081049325, + 0.0025455127, + 0.014779342, + -0.0028005545, + 0.0037536914, + 0.01565564, + -0.030003373, + 0.0070823133, + 0.010594042, + -0.0046201795, + -0.018768458, + 0.026458947, + 0.01551177, + 0.008762973, + -0.019200066, + -0.026668211, + 0.025765756, + -0.022992995, + -0.021384269, + 0.013098682, + -0.016871992, + 0.00684689, + -0.018506875, + -0.014046915, + -0.0028561407, + -0.003212545, + 0.014897054, + -0.02362079, + -0.011346088, + -0.030526536, + -0.0023934687, + 0.007376592, + -0.0024931966, + 0.014910133, + 0.012058897, + -0.0058071045, + 0.013301408, + -0.01916083, + 0.014883975, + 0.009403847, + 0.0030997382, + -0.0159303, + -0.007572778, + 0.026432788, + 0.0051662303, + -0.009698126, + 0.005143342, + 0.018977722, + -0.015524849, + -0.024078557, + -0.09129187, + 0.027910722, + 0.007520462, + -0.008409838, + 0.016545016, + -0.006807653, + 0.022312883, + 0.0057907556, + 0.01732976, + -0.018088346, + -0.04852333, + 0.00049904804, + -0.00922728, + -0.011411483, + -0.033796303, + -0.025543412, + 0.014203863, + 0.016466541, + 0.0056926627, + 0.011588051, + 0.0013250727, + 0.0027318895, + 0.016453462, + 0.010587502, + -0.027466035, + 0.011431102, + -0.006189667, + 0.023764659, + -0.031808283, + -0.013013668, + 0.022129776, + -0.031494386, + -0.0011166251, + 0.01857227, + -0.0063368063, + -0.0127063105, + 0.005473588, + 0.01354991, + 0.0070169177, + 0.0405451, + -0.019749386, + -0.005002742, + 0.009070331, + -0.010796768, + 0.0069515225, + -0.0056795836, + 0.017525947, + 0.000104734696, + 0.016832756, + 0.022129776, + -0.009815837, + 0.038949452, + -0.0104436325, + -0.003032708, + -0.0049733142, + -0.016139565, + 0.0040904772, + 0.0019651293, + -0.0077493456, + -0.008782592, + 0.023450762, + 0.0040479703, + 0.011803855, + 0.01047633, + 0.021959748, + -0.0068141925, + -0.02025947, + 0.007167327, + 0.008115559, + -0.03452873, + -0.026079653, + 0.010234368, + 0.016701965, + 0.014687789, + 0.00076512527, + -0.0061536995, + 0.014386971, + -0.008220192, + -0.034345623, + 0.01914775, + 0.004708463, + 0.0035411566, + -0.05367648, + 0.004093747, + 0.014713947, + -0.01789216, + -0.0079324525, + -0.010744452, + -0.01732976, + 0.0265505, + -0.00036396584, + -0.005503016, + 0.00740275, + 0.004404375, + 0.004021812, + 0.012902496, + -0.006245253, + -0.026066575, + 0.030866591, + 0.02403932, + 0.0088414475, + -0.016191881, + -0.012183148, + -0.0079324525, + -0.020730317, + -0.0019749387, + -0.019030038, + -0.02151506, + 0.018363006, + 0.025281832, + 0.015459454, + 0.02097882, + -0.0052054673, + 0.011097586, + -0.0037536914, + -0.002738429, + -0.013746097, + -0.028538518, + -0.011012572, + 0.013562989, + 0.024130873, + 0.029218629, + 0.01620496, + -0.013876887, + 0.010672516, + -0.005198928, + 0.009998945, + -0.027753774, + 0.0010896495, + -0.0051368023, + 0.011496497, + 0.009279596, + -0.010999493, + 0.0015384249, + -0.0023362478, + 0.012497046, + 0.0037406124, + 0.019030038, + -0.0026109081, + 0.024300901, + 0.0005570864, + 0.0034921102, + -0.0027155406, + 0.004355328, + 0.025674203, + -0.006820732, + 0.0254257, + -0.029846424, + -0.022718335, + -0.00642836, + -0.0077885827, + -0.002543878, + -0.00188502, + -0.023777738, + -0.007598936, + -0.020782633, + 0.019631675, + -0.004361868, + 0.014570077, + 0.03983883, + -0.0085929455, + 0.026485104, + 0.023843134, + -0.014831658, + 0.00089101127, + 0.014844738, + 0.015106319, + 0.007716648, + -0.01634883, + 0.01872922, + -0.0015220761, + -0.022535227, + -0.01341912, + 0.0077755037, + -0.013641464, + -0.021410428, + 0.0014215307, + 0.0059444346, + 0.008468694, + 0.002136792, + 0.014190785, + -0.021292716, + -0.026890555, + 0.009796219, + -0.004149333, + -0.011476879, + -0.0071869455, + -0.017643657 + ] + }, + { + "object": "embedding", + "index": 1, + "embedding": [ + 0.0026680413, + -0.0026349186, + 0.008843787, + -0.0049684197, + -0.033255287, + 0.01970144, + -0.02827362, + 0.0020668625, + -0.012116319, + -0.035746124, + 0.00008668857, + -0.0036931918, + 0.016720388, + -0.018151293, + -0.036779553, + -0.024100147, + 0.012487294, + -0.023715923, + 0.009870593, + -0.023212455, + 0.0044020195, + 0.0038091217, + -0.010128952, + -0.015819447, + -0.011096137, + 0.008585429, + 0.0054586367, + -0.017488837, + 0.006253584, + -0.018800499, + 0.020045916, + 0.0018300345, + -0.00961886, + 0.0020685187, + 0.003918427, + -0.00977785, + -0.0061608404, + -0.0112153785, + -0.0011576418, + 0.00024324554, + 0.001564224, + 0.0026713535, + -0.0020635503, + -0.01999292, + -0.0040476057, + 0.013348487, + 0.003825683, + -0.0020536133, + -0.01968819, + 0.028538601, + 0.0107715335, + 0.020655377, + -0.008201204, + -0.005057851, + -0.021092597, + 0.014905258, + -0.020483138, + 0.005163844, + -0.012467421, + -0.006396012, + 0.007333387, + 0.0032874376, + -0.023980904, + 0.011573105, + 0.0063893874, + -0.017038366, + -0.016786633, + 0.011261751, + -0.021145593, + -0.0028286867, + 0.019012485, + 0.0014847293, + -0.020112162, + -0.014229554, + 0.036938544, + 0.013474354, + -0.014706521, + -0.0053957035, + -0.0013091785, + 0.0020171783, + 0.022364512, + -0.023119712, + 0.0028253745, + -0.004888925, + 0.03428872, + 0.0007568559, + -0.010976895, + 0.018230787, + 0.0062204613, + -0.019197972, + 0.024762603, + 0.019423207, + 0.009532741, + -0.004322525, + -0.016495153, + -0.026643978, + -0.0054188897, + 0.01938346, + 0.012898017, + -0.029678026, + -0.018959489, + 0.02571654, + 0.001242933, + -0.01968819, + -0.019303966, + -0.00054611213, + -0.002073487, + -0.020098913, + -0.0015857539, + 0.0011071295, + 0.007823604, + 0.020509636, + -0.0027690658, + -0.05079712, + -0.015845945, + -0.010890775, + 0.005670623, + -0.0001018526, + -0.026723472, + -0.022470506, + 0.011374368, + 0.023543684, + 0.004216532, + -0.0033785251, + 0.028035134, + 0.0016669048, + -0.005034665, + -0.011619477, + -0.0076447413, + -0.001836659, + 0.006134342, + 0.01217594, + 0.027293185, + 0.0031350728, + -0.024020651, + 0.012003701, + -0.013938073, + 0.0210396, + -0.026259754, + -0.01909198, + 0.007260517, + 0.01926422, + -0.00810846, + -0.00009802278, + 0.016362661, + 0.024325382, + 0.03439471, + 0.023517186, + 0.0013373329, + 0.000698477, + -0.007638117, + -0.0040608547, + 0.014335547, + -0.002936336, + -0.0014648556, + 0.0055944403, + 0.015103995, + 0.004206595, + -0.012527042, + 0.025358813, + -0.004832616, + 0.005283086, + 0.030790951, + -0.027902644, + 0.016349413, + 0.01457403, + 0.016813131, + 0.005978665, + -0.0018234099, + -0.022814982, + -0.018866746, + 0.017793566, + -0.027160693, + 0.010619168, + -0.010692039, + 0.01233493, + 0.027213689, + 0.007836854, + -0.026948707, + -0.01909198, + -0.009645359, + 0.0157797, + 0.02045664, + 0.011705596, + 0.01923772, + 0.0017356345, + 0.020006169, + 0.016932374, + 0.021596063, + -0.009711604, + 0.015090746, + 0.046583902, + 0.005081037, + -0.0046703145, + -0.67114735, + -0.04674289, + -0.011785091, + 0.018204289, + 0.023331698, + 0.024444625, + 0.023291951, + -0.006409261, + -0.020072415, + 0.012228937, + -0.02314621, + 0.024550617, + -0.028247122, + -0.0026581045, + 0.0068895416, + -0.016627643, + 0.0049087983, + -0.025001086, + 0.02253675, + 0.01759483, + -0.0065285033, + 0.010764909, + -0.007187647, + 0.0074791275, + 0.039296884, + -0.011314747, + -0.007532124, + -0.008459562, + -0.008664924, + 0.036011104, + -0.040038835, + 0.04030382, + 0.0029048692, + -0.002283817, + 0.056017272, + -0.0071942713, + -0.005922356, + 0.028538601, + 0.023358196, + 0.048544772, + 0.0044682655, + -0.015753202, + 0.0071942713, + 0.0063893874, + 0.0056805597, + -0.0021413888, + 0.030737955, + -0.04239718, + 0.0058263, + -0.022059783, + 0.013328614, + -0.0066113104, + -0.021079348, + -0.00080488395, + 0.00025173326, + 0.013885076, + 0.009420123, + -0.006574875, + -0.011751968, + -0.006184026, + -0.020032667, + -0.0040177954, + -0.030631963, + -0.024736105, + -0.011314747, + 0.020628877, + -0.019515952, + -0.006442384, + -0.00007613068, + -0.0038389321, + -0.0058428613, + 0.022351263, + 0.0051174723, + -0.0035607007, + 0.034050234, + 0.027452175, + 0.0285651, + -0.017011868, + -0.0056772474, + -0.003221192, + 0.010705288, + 0.019356962, + 0.0058196755, + -0.010665541, + 0.019462956, + -0.022642743, + -0.0330698, + -0.0065814997, + 0.006005163, + -0.017846562, + 0.020642126, + 0.0068630436, + -0.0076646153, + 0.0013820487, + -0.0013174593, + 0.03094994, + -0.0033851499, + 0.0034878305, + 0.03847544, + -0.0048690513, + -0.019476205, + -0.006313205, + -0.0025073958, + -0.012427674, + -0.004892237, + -0.023676176, + -0.0035010795, + 0.005919044, + 0.015925441, + -0.014004318, + 0.021543067, + 0.0009845751, + -0.02074812, + -0.009327379, + 0.0072075203, + -0.027929142, + 0.019052232, + -0.0060217245, + 0.03895241, + -0.017846562, + 0.0018499081, + -0.0044583282, + 0.03243384, + 0.011539983, + 0.007863352, + 0.024245888, + 0.007724236, + -0.012990761, + -0.007287015, + -0.0064854436, + -0.01849577, + 0.01850902, + 0.003128448, + -0.011944081, + 0.01909198, + 0.011639351, + -0.010115702, + 0.0068895416, + 0.0023301886, + -0.028671093, + -0.026524736, + -0.020549383, + -0.0056639984, + 0.010393933, + 0.0025587361, + -0.012984136, + -0.0021182029, + -0.010506551, + -0.012566789, + 0.028618095, + -0.0010731786, + -0.016296417, + -0.03145341, + 0.021715306, + -0.02510708, + -0.028220622, + -0.0107715335, + -0.014295799, + -0.005875984, + 0.018389776, + 0.008313822, + 0.006690805, + -0.018654758, + 0.018588513, + 0.016468655, + -0.024378378, + 0.003766062, + -0.0077308607, + -0.0026796341, + -0.02525282, + -0.01864151, + -0.00969173, + -0.012209062, + -0.0038157462, + 0.022642743, + -0.0051174723, + 0.011169007, + 0.0025421747, + 0.0051505947, + 0.0003231543, + 0.008221078, + -0.030843949, + -0.011937456, + 0.015117245, + 0.031479906, + -0.010095828, + 0.012646284, + 0.026378995, + -0.021278085, + 0.0107847825, + -0.012725779, + 0.022073032, + 0.0032857815, + 0.0023401256, + 0.016468655, + -0.03198337, + 0.0032973744, + 0.013911574, + 0.002522301, + 0.018866746, + 0.024921592, + -0.0016834661, + 0.0042695287, + -0.013818831, + 0.022218771, + -0.012189189, + -0.004368897, + -0.012944389, + 0.02660423, + 0.012507168, + 0.009519491, + -0.012884768, + -0.02674997, + 0.0050975983, + 0.00072000676, + 0.026167009, + -0.012401175, + 0.016945623, + -0.001420968, + 0.0029711148, + 0.021649059, + -0.00916839, + 0.012056698, + -0.033599764, + -0.008936531, + 0.004491451, + 0.027584665, + 0.03656757, + 0.016667392, + -0.010307814, + -0.03622309, + -0.009433373, + -0.005498384, + 0.0051108473, + -0.00234675, + -0.015686957, + 0.0079494715, + -0.02058913, + 0.041708227, + 0.024431374, + 0.033043303, + 0.0039846725, + 0.033043303, + -0.018893244, + -0.0012893048, + 0.016587896, + 0.0360376, + 0.009651983, + -0.005452012, + 0.0044583282, + -0.025067333, + 0.001219747, + -0.016402408, + 0.0009696699, + -0.00857218, + -0.030287486, + 0.0003328841, + 0.0038588059, + 0.019476205, + 0.022642743, + 0.012520417, + 0.011891084, + 0.000675291, + 0.0030506095, + 0.015488219, + -0.007684489, + 0.014534283, + 0.001232168, + 0.011526734, + -0.0042629037, + -0.01142074, + 0.003941613, + -0.0026200132, + -0.014097062, + -0.0057699913, + -0.0008044699, + 0.013222621, + -0.012997385, + 0.0055480683, + 0.0066113104, + -0.021728555, + -0.037786487, + 0.004984981, + -0.005044602, + -0.0042099073, + -0.01623017, + -0.025809282, + 0.014865511, + -0.01503775, + 0.03428872, + 0.01697212, + 0.017409341, + 0.0009547646, + -0.02224527, + -0.011983828, + 0.0074195066, + 0.027425675, + -0.005498384, + -0.01457403, + -0.009307506, + 0.010254818, + -0.019436456, + 0.0064821313, + 0.010148825, + 0.018310282, + -0.003138385, + 0.005495072, + -0.0072472678, + -0.00424303, + -0.0048624263, + 0.014680023, + -0.003138385, + 0.00909552, + 0.002237445, + 0.0062038996, + -0.002726006, + -0.015647208, + -0.015289483, + 0.027293185, + -0.010599295, + -0.019621944, + -0.0051207845, + -0.020615628, + -0.0069491626, + 0.086331256, + -0.011765217, + 0.017846562, + 0.005991914, + 0.0093605025, + -0.0071015274, + -0.01742259, + -0.0047001247, + 0.0070087835, + 0.0079627205, + 0.0017372906, + -0.016481904, + 0.018601762, + 0.012725779, + 0.015859194, + -0.01986043, + -0.031347416, + -0.023821915, + 0.030711457, + -0.025491305, + -0.018760752, + 0.0019045608, + 0.0047796196, + 0.0050412896, + 0.005591128, + 0.005746805, + 0.0065947487, + 0.020469889, + 0.03712403, + -0.014415041, + 0.0054321387, + 0.010817905, + -0.010407182, + -0.00043887706, + -0.0044351425, + -0.008989527, + 0.017515335, + 0.003660069, + -0.006849794, + -0.017064866, + 0.016071182, + 0.0088504115, + 0.007379759, + -0.029121563, + 0.010075955, + -0.0056639984, + 0.0073863836, + 0.010281316, + -0.014746269, + -0.0180188, + 0.030658461, + -0.001954245, + -0.028061634, + -0.025411809, + -0.01746234, + 0.01670714, + -0.014600528, + 0.008565555, + 0.0053923912, + 0.011222003, + 0.011758593, + -0.021172091, + 0.0116724735, + -0.023093214, + -0.026034517, + -0.023093214, + -0.0022655993, + -0.021013102, + -0.036620565, + -0.0058362368, + 0.008631801, + 0.001326568, + -0.013116627, + 0.009837471, + 0.012606536, + -0.008201204, + 0.016998619, + -0.016998619, + 0.008671548, + 0.029810516, + -0.010195197, + -0.010148825, + -0.017170858, + -0.018005552, + -0.0058561102, + 0.008002467, + 0.020801116, + -0.037389014, + 0.00015919644, + -0.0018581889, + 0.041072268, + -0.005018104, + 0.0041635353, + -0.0003494455, + 0.003424897, + -0.027531669, + 0.012162691, + 0.014216304, + -0.011937456, + -0.009506242, + 0.017382843, + -0.013792332, + 0.016919125, + 0.012864894, + 0.006571563, + 0.012096445, + 0.018985987, + 0.01835003, + 0.01307688, + 0.013050382, + 0.024259137, + -0.032062866, + -0.017926058, + 0.02451087, + -0.031903878, + 0.02930705, + 0.007929597, + 0.023424441, + -0.008115085, + -0.0108974, + 0.0046636895, + -0.031055935, + 0.020827614, + 0.029837016, + 0.003941613, + 0.017528584, + -0.008042215, + -0.015978437, + 0.0018697819, + 0.002027115, + -0.016773384, + 0.0072340188, + -0.0016876064, + -0.0089034075, + -0.035004172, + -0.000004062718, + -0.0069822855, + 0.008585429, + 0.0079494715, + -0.031850882, + -0.012407799, + -0.00698891, + 0.008505934, + -0.010486677, + -0.022920975, + -0.023490688, + -0.009744727, + 0.02343769, + -0.0011692347, + 0.013646592, + 0.013911574, + 0.020072415, + -0.009088895, + -0.004415269, + -0.017833313, + -0.030049002, + -0.024457874, + -0.014256052, + 0.010042832, + 0.028432608, + 0.018972738, + -0.009685106, + 0.016680641, + -0.0021463572, + -0.0009199857, + 0.0027193816, + -0.0058693597, + 0.024643362, + -0.0059057944, + 0.007412882, + 0.019356962, + 0.0300755, + -0.022682492, + 0.0061608404, + -0.027041452, + 0.01015545, + 0.0006504489, + 0.0066874926, + 0.0018118169, + -0.034209225, + -0.0045113247, + -0.0057534296, + -0.013739336, + -0.0035607007, + -0.003660069, + -0.007406257, + -0.0040939776, + -0.01939671, + 0.016415657, + -0.0022407572, + 0.00096470147, + -0.014401792, + 0.004166848, + -0.00033681744, + 0.010102453, + -0.013633343, + -0.008598678, + -0.0034911428, + 0.009042524, + 0.019423207, + 0.03145341, + -0.010480053, + 0.009724853, + -0.00043887706, + 0.0203109, + 0.015554465, + 0.011467112, + -0.01179834, + 0.018469272, + -0.029731022, + -0.01518349, + -0.017369594, + 0.0054884474, + -0.020337397, + -0.027478673, + 0.02615376, + -0.009512867, + 0.015660457, + -0.026617479, + -0.011149134, + 0.018774, + -0.0064688823, + 0.024471123, + -0.0063761384, + 0.028777085, + 0.016468655, + -0.011175632, + 0.006386075, + -0.007273766, + -0.027584665, + -0.014865511, + 0.020403642, + -0.004382146, + -0.0050081667, + -0.033043303, + 0.0015203364, + 0.021927292, + -0.002500771, + -0.020814365, + 0.027902644, + 0.00037387357, + -0.004832616, + -0.003481206, + 0.009320755, + -0.008704671, + 0.00835357, + -0.007452629, + -0.00894978, + -0.008254201, + -0.012507168, + -0.009665232, + 0.016905876, + -0.020403642, + 0.0093605025, + 0.016243419, + -0.021437073, + -0.0026316063, + -0.008989527, + -0.013275617, + 0.015382227, + -0.004408644, + 0.03818396, + 0.0028568413, + 0.0049352967, + 0.014666774, + 0.015249736, + -0.0066113104, + -0.002866778, + 0.003931676, + 0.021423824, + -0.013951322, + -0.013924824, + 0.017356345, + -0.014083813, + 0.00034385602, + -0.0045179497, + 0.006323142, + -0.0145077845, + -0.036620565, + -0.006551689, + 0.0135405995, + 0.014812514, + 0.003448083, + -0.014309048, + -0.016852878, + -0.029890012, + -0.018813748, + 0.00023827712, + 0.0032973744, + -0.022497004, + -0.013487603, + 0.002191073, + -0.012407799, + 0.013898325, + -0.015236487, + -0.013964571, + 0.012732403, + 0.0076182433, + -0.01759483, + 0.01894624, + 0.0066510574, + 0.01788631, + -0.022497004, + -0.0078037307, + -0.0038323076, + -0.007154524, + 0.016495153, + 0.00008156489, + -0.024444625, + -0.009029275, + 0.011334621, + 0.02194054, + -0.002485866, + 0.013229245, + 0.03296381, + -0.0247891, + -0.0029893324, + -0.019277468, + -0.022033283, + 0.0026481675, + 0.008512558, + 0.018204289, + 0.001989024, + -0.020337397, + 0.0026912272, + 0.023782168, + -0.035984606, + 0.0012172628, + -0.013169624, + -0.027425675, + 0.005296335, + 0.0136068445, + -0.020695124, + -0.013182873, + -0.02163581, + -0.010029583, + -0.0130835045, + 0.009552615, + 0.0048061176, + -0.0020105538, + 0.005968728, + 0.010837779, + -0.014057315, + 0.028697591, + -0.0070286575, + -0.014017567, + 0.008399941, + -0.008187955, + -0.027041452, + -0.008247577, + -0.0010913962, + 0.04088678, + -0.0012214031, + -0.025173325, + -0.025968272, + 0.0070750294, + -0.0391114, + -0.010652292, + -0.013355112, + 0.017753819, + 0.00326922, + -0.0021463572, + 0.0041039144, + 0.018734254, + 0.0021331082, + 0.02538531, + 0.0032377534, + 0.001243761, + 0.026484989, + -0.01862826, + 0.026935458, + 0.010890775, + -0.023119712, + 0.0069822855, + 0.0165349, + 0.004905486, + 0.00336362, + 0.016110929, + -0.0030506095, + -0.008426439, + 0.01015545, + -0.009857344, + -0.012434298, + -0.0010922243, + 0.01224881, + -0.047140364, + 0.016574647, + 0.0038521811, + -0.013129877, + 0.01774057, + -0.007154524, + 0.005316209, + -0.0037726865, + 0.006882917, + -0.010996768, + -0.0088636605, + -0.0121428175, + -0.011334621, + 0.01697212, + 0.0015948627, + -0.021331081, + 0.021238336, + 0.01637591, + -0.0038223707, + -0.016905876, + 0.0069822855, + -0.0031317605, + 0.008075338, + 0.0016768415, + -0.018323531, + -0.010321063, + -0.014004318, + 0.004971732, + -0.032142363, + -0.0030737955, + 0.009380376, + -0.016309666, + -0.019515952, + 0.018548766, + 0.025981521, + -0.013885076, + -0.0038687426, + 0.0026117326, + -0.007684489, + 0.016998619, + -0.024219388, + 0.006256896, + -0.029439542, + 0.0029810518, + 0.0026730096, + -0.00819458, + -0.027266687, + 0.010427057, + 0.0020238028, + -0.020178407, + -0.008711295, + 0.23572832, + -0.0058594225, + -0.0018267222, + 0.022351263, + -0.001126175, + 0.023623178, + 0.025663543, + -0.008234328, + -0.008081962, + 0.008022341, + 0.00052292616, + -0.005339395, + 0.010062706, + -0.0154352235, + -0.0070617804, + -0.03216886, + -0.016733637, + -0.02178155, + -0.036620565, + 0.016004935, + 0.020946857, + -0.014945006, + -0.011937456, + -0.006382763, + 0.022894477, + 0.002653136, + -0.011447239, + 0.013494227, + 0.01605793, + 0.023490688, + -0.005852798, + 0.0043258374, + -0.0037230023, + 0.009757976, + 0.000064278924, + 0.008181331, + -0.00014149645, + 0.0024924905, + 0.027452175, + 0.03219536, + -0.007929597, + -0.015196739, + -0.0165349, + -0.004312588, + -0.010115702, + 0.016124178, + 0.0040177954, + -0.006299956, + -0.015395476, + 0.01922447, + -0.03407673, + -0.026855964, + 0.03023449, + 0.022126028, + 0.017170858, + -0.006445696, + 0.023252204, + -0.0023070027, + -0.00518703, + -0.016428906, + -0.011513484, + 0.02255, + -0.01788631, + 0.025133578, + -0.02044339, + 0.017091364, + -0.009281008, + -0.0157797, + 0.011838088, + -0.0041072266, + 0.015209988, + -0.0021331082, + -0.0002641543, + -0.01367309, + -0.026869213, + -0.025001086, + 0.032831315, + 0.008969653, + 0.015991686, + 0.026617479, + -0.030446475, + 0.016919125, + 0.01862826, + -0.008525807, + -0.003742876, + -0.03110893, + 0.0054884474, + 0.0054553244, + 0.009479744, + -0.0013795645, + 0.0008218594, + -0.02706795, + -0.016587896, + -0.028300118, + 0.006111156, + 0.0015799574, + -0.007856728, + 0.006170777, + -0.010572797, + 0.016322915, + -0.004888925, + 0.006929289, + 0.010612544, + -0.000272642, + 0.003471269, + -0.008963029, + -0.0144812865, + 0.0068299207, + -0.016733637, + -0.020204905, + -0.006326454, + -0.01894624, + 0.014083813, + -0.00036186655, + -0.0012487294, + 0.01789956, + 0.008307197, + 0.006326454, + 0.014242803, + -0.026683725, + 0.009486369, + -0.028141128, + -0.011910957, + 0.0108974, + -0.0032129113, + -0.0054453877, + -0.019330464, + -0.0012594943, + -0.0006641121, + -0.0315859, + 0.013964571, + 0.0011270031, + 0.02194054, + -0.004193346, + 0.0074923765, + 0.0029247429, + -0.009221386, + -0.010837779, + -0.020814365, + 0.0058826087, + 0.023861663, + -0.0103144385, + 0.015011251, + 0.0130967535, + -0.021410575, + -0.026710223, + 0.021529818, + 0.0068166717, + -0.024444625, + -0.002995957, + -0.017674325, + -0.024550617, + -0.016640892, + -0.014110311, + 0.021728555, + -0.0032410657, + -0.015156992, + -0.0024428063, + -0.0064125736, + 0.022523502, + -0.039482374, + -0.013414732, + 0.028538601, + -0.027478673, + -0.020536134, + -0.012262059, + -0.17170858, + 0.018204289, + 0.033546768, + -0.020496387, + 0.025146827, + 0.0210661, + 0.010380684, + -0.011301498, + -0.022046532, + -0.00048400686, + 0.035110164, + -0.0033470585, + -0.03667356, + -0.017475588, + -0.006634496, + -0.008088587, + -0.02162256, + 0.0055050086, + 0.015050999, + 0.00061028753, + 0.026087515, + -0.026670476, + 0.01609768, + -0.0046206303, + -0.021331081, + 0.023106463, + -0.015408725, + 0.003706441, + 0.0016627643, + -0.003411648, + -0.005587816, + -0.017912809, + 0.014521034, + 0.020827614, + -0.0021297957, + 0.014229554, + -0.008134959, + -0.008081962, + -0.018363278, + 0.0072936397, + -0.01593869, + 0.004859114, + 0.015488219, + -0.01262641, + -0.0017240415, + 0.0144680375, + 0.008671548, + -0.0055348193, + -0.0010516488, + -0.042768154, + 0.008896783, + -0.017541833, + 0.0036865673, + 0.022430757, + 0.0015004626, + 0.017237103, + -0.0053658932, + 0.016905876, + 0.023689425, + -0.0017372906, + -0.03142691, + -0.005011479, + 0.015806198, + -0.0093340045, + -0.0130437575, + -0.007412882, + -0.013368361, + -0.0027972201, + -0.02959853, + 0.007333387, + 0.007903099, + -0.016561398, + 0.009857344, + -0.040674794, + 0.014640276, + -0.0103011895, + 0.006492068, + 0.022470506, + 0.012401175, + -0.018151293, + -0.03216886, + 0.029360047, + -0.01970144, + -0.005061163, + -0.0056308755, + 0.045311987, + 0.010009709, + -0.00073035766, + -0.031347416, + -0.0028121255, + 0.015329231, + -0.014269301, + -0.009393625, + -0.013321989, + -0.005554693, + 0.012845021, + -0.011539983, + 0.031320915, + -0.0016486872, + 0.01233493, + -0.0008334524, + -0.008062089, + -0.01819104, + 0.013633343, + 0.024736105, + 0.018972738, + 0.019873679, + 0.014547532, + 0.024563866, + -0.0035441392, + -0.023623178, + -0.011374368, + 0.0144812865, + 0.015315982, + -0.00095145236, + 0.011977203, + 0.0233052, + -0.009439997, + 0.024524119, + 0.007903099, + 0.048465274, + -0.012527042, + -0.004772995, + 0.016760135, + -0.0017025118, + -0.028194124, + -0.05591128, + 0.010440306, + 0.012765526, + -0.013845329, + 0.0011990452, + 0.03852844, + 0.02195379, + 0.035136662, + -0.0041734725, + 0.013335238, + -0.0077639837, + -0.0037329393, + 0.0030953253, + -0.011380993, + 0.036726557, + -0.01608443, + 0.0054288264, + 0.0030853886, + -0.024391627, + 0.004951858, + -0.005389079, + -0.02239101, + -0.01669389, + -0.008433064, + -0.020006169, + 0.015739953, + -0.03094994, + 0.026710223, + 0.01730335, + 0.0052897106, + 0.0103144385, + 0.00045999285, + -0.0017356345, + -0.020377144, + 0.00003317455, + 0.014322298, + -0.02391466, + -0.0026034517, + 0.03410323, + -0.023397943, + -0.0036302586, + -0.009400249, + 0.01323587, + -0.011851337, + -0.009274383, + -0.009890467, + -0.01608443, + 0.009413498, + 0.022814982, + -0.017714072, + -0.024285635, + 0.008274075, + -0.0053460193, + -0.008929906, + 0.030737955, + -0.025650294, + -0.0004691016, + 0.009016025, + -0.052122034, + 0.02150332, + -0.008843787, + 0.002003929, + -0.007823604, + 0.025425058, + 0.032672327, + -0.0042595915, + -0.017078115, + -0.043086134, + 0.01997967, + -0.0039681112, + -0.009453246, + 0.031294417, + -0.006150903, + 0.0054321387, + -0.010208446, + -0.017555082, + -0.037177026, + -0.013169624, + 0.0023898098, + -0.016163925, + -0.004739872, + -0.02358343, + -0.0135538485, + 0.013315364, + -0.016269919, + 0.028750587, + -0.0063463277, + -0.006710679, + 0.016508402, + -0.01143399, + 0.0063562645, + 0.028856581, + 0.030472973, + -0.01059267, + -0.010195197, + 0.016839629, + 0.021158842, + 0.010566172, + -0.00064258225, + 0.017621327, + -0.007406257, + -0.027293185, + -0.08818613, + 0.026034517, + 0.017117862, + -0.01850902, + 0.012440923, + -0.009989835, + 0.023941157, + -0.0027773464, + 0.026405493, + -0.005173781, + -0.042900644, + 0.020986604, + -0.022510253, + -0.015064248, + -0.031506404, + -0.016654141, + 0.031506404, + 0.016627643, + 0.008346945, + 0.016150676, + 0.017992303, + -0.012434298, + 0.028538601, + 0.0028634658, + -0.018548766, + 0.011440614, + -0.04642491, + 0.039906345, + -0.0036799428, + -0.002321908, + 0.012560165, + -0.031029437, + 0.0036136971, + 0.013752585, + -0.0037826234, + 0.01081128, + -0.010393933, + -0.012646284, + 0.001006105, + 0.044861514, + -0.032990307, + 0.0028982447, + 0.0064721946, + -0.00492536, + -0.0026829466, + -0.0062668333, + 0.019515952, + 0.00480943, + 0.0070087835, + 0.0145077845, + -0.017661076, + 0.01983393, + -0.0046239425, + -0.015302732, + -0.0032394095, + -0.043987073, + 0.028247122, + -0.004915423, + 0.00058130507, + -0.0029181184, + 0.014521034, + 0.016269919, + 0.020231403, + 0.0050247284, + 0.0016735293, + -0.008724544, + -0.009188264, + -0.0046206303, + 0.016163925, + -0.026392244, + -0.037309516, + 0.012401175, + -0.004537823, + 0.037230022, + -0.0021397327, + -0.023543684, + -0.0052599, + 0.0043755216, + -0.021755053, + 0.014587279, + -0.00061898225, + 0.009002776, + -0.04014483, + 0.012189189, + 0.009797723, + -0.013726087, + -0.00473656, + -0.005352644, + -0.0077109872, + 0.020072415, + -0.02538531, + 0.012712529, + 0.01805855, + 0.0011245189, + 0.00097546633, + 0.01833678, + -0.0023335011, + -0.027982138, + 0.022377761, + 0.023106463, + 0.02314621, + -0.011520108, + 0.002545487, + -0.014640276, + -0.0075387484, + 0.012613161, + -0.022920975, + 0.009877218, + 0.009651983, + 0.009088895, + 0.02255, + 0.0034282093, + 0.0011924207, + 0.020655377, + 0.026061017, + -0.008512558, + -0.017647825, + -0.024881845, + -0.017064866, + 0.008797415, + 0.020377144, + 0.0144415395, + 0.013739336, + 0.0011468768, + 0.017184107, + -0.016481904, + 0.005425514, + -0.018866746, + -0.0009936839, + -0.008009092, + 0.0039482373, + 0.001657796, + -0.009380376, + -0.0073068887, + -0.025226321, + 0.0070551555, + 0.012315055, + 0.006303268, + 0.008333696, + 0.049366217, + 0.0051572192, + 0.009969962, + 0.019025734, + 0.008068713, + 0.0105198, + 0.008028965, + -0.00046123494, + -0.034050234, + -0.02420614, + 0.009022649, + -0.014534283, + 0.0055845035, + -0.010102453, + -0.018615011, + -0.026551234, + -0.0011063014, + 0.009221386, + -0.00037242443, + 0.008101836, + 0.037044536, + -0.0073400117, + 0.023225704, + 0.014256052, + -0.0008479436, + 0.007896475, + 0.0300755, + -0.0018300345, + -0.0004927016, + -0.019476205, + 0.0144547885, + 0.007393008, + -0.028512103, + -0.02225852, + -0.018707756, + -0.0028319992, + -0.016998619, + 0.01789956, + 0.004938609, + 0.0031582587, + 0.0019857117, + 0.018668009, + -0.022165775, + -0.02538531, + 0.031188425, + -0.020072415, + -0.000031751304, + 0.0067636753, + -0.017700823 + ] + }, + { + "object": "embedding", + "index": 2, + "embedding": [ + -0.0044841906, + 0.00023355159, + -0.00082493754, + 0.010029372, + -0.015641283, + 0.02653146, + -0.026091048, + -0.0066962577, + -0.008347801, + -0.021913812, + 0.017136013, + -0.013826254, + 0.012485, + -0.010282942, + -0.008074212, + -0.017709883, + 0.03384496, + -0.008374493, + 0.026838413, + -0.0343521, + 0.0005384198, + -0.005495135, + -0.010082755, + -0.006906454, + -0.009889241, + 0.006275865, + -0.0017316182, + -0.020539194, + 0.0030695351, + -0.032296848, + 0.02372884, + 0.010356344, + 0.0012778608, + -0.019031117, + -0.019645024, + -0.009628998, + -0.009955971, + -0.008194324, + -0.011243841, + -0.017136013, + 0.016748985, + -0.009228624, + -0.015441096, + -0.004170564, + -0.014333394, + 0.01742962, + 0.0025173523, + 0.016655564, + -0.028106265, + 0.012311505, + 0.0062091355, + 0.024329402, + -0.027705891, + -0.0017182723, + -0.014159899, + 0.0021203146, + -0.0042840033, + 0.002655815, + 0.0074269404, + -0.0026708292, + 0.024436168, + 0.011877766, + -0.018951043, + -0.003623386, + 0.014053132, + 0.000584296, + -0.0009575615, + 0.030054752, + -0.012992141, + -0.009115185, + 0.01901777, + 0.02137998, + -0.012731898, + 0.008234361, + 0.015040722, + -0.019458184, + -0.049539626, + 0.0010468116, + 0.00804752, + 0.001294543, + -0.003364811, + -0.019538257, + 0.012311505, + -0.0006247505, + 0.008094231, + 0.010643279, + -0.005154817, + 0.04406785, + -0.021019643, + -0.01533433, + 0.018283753, + 0.0029227312, + 0.005051387, + -0.009268661, + -0.03878291, + 0.004617648, + -0.016108386, + 0.027652508, + -0.007306828, + -0.032697223, + -0.010923541, + 0.008287745, + -0.016775677, + -0.014546927, + -0.02984122, + 0.010342998, + 0.012411598, + 0.007453632, + 0.015894853, + -0.0026674927, + 0.0011010289, + 0.012131336, + -0.009115185, + -0.05519825, + -0.015347675, + -0.037234794, + 0.0069932016, + 0.00059430534, + -0.019524911, + -0.019645024, + 0.012698533, + 0.018884314, + 0.016882444, + -0.026704956, + 0.0056219203, + -0.014573619, + -0.017202742, + -0.0058688177, + -0.0016457045, + -0.002824306, + 0.02853333, + 0.038996443, + 0.00025794937, + -0.013973057, + -0.021046335, + 0.008594698, + -0.035419766, + 0.006225818, + -0.011010289, + -0.029654378, + 0.0069798557, + 0.0028109602, + -0.0038435918, + 0.0027308853, + -0.009989335, + 0.0036734329, + 0.032136697, + 0.00459763, + 0.009849204, + 0.015027376, + 0.017976798, + 0.0032113343, + 0.0075470526, + -0.0009950965, + 0.0076938565, + 0.00986255, + 0.022287494, + 0.023328466, + -0.003823573, + -0.024382785, + -0.01211799, + -0.010509822, + 0.021460054, + -0.014400124, + -0.0030361705, + 0.016375303, + 0.005671967, + 0.054130584, + 0.0027909414, + -0.0036801056, + -0.0069398186, + 0.018043527, + -0.023995757, + 0.004791144, + 0.025637291, + 0.009362082, + 0.006886435, + 0.009302026, + -0.023982411, + 0.014533581, + -0.019564949, + 0.0028209696, + 0.010129466, + 0.012431617, + -0.008995072, + 0.019378109, + 0.018016836, + -0.0007114982, + 0.0057420325, + 0.000746948, + 0.013285749, + 0.029067162, + 0.0017449639, + 0.001951824, + -0.6700662, + -0.04406785, + -0.027999498, + 0.0029260677, + 0.04081147, + 0.030214902, + 0.018497285, + 0.027225442, + -0.00887496, + -0.010710008, + -0.046656933, + 0.0064393505, + -0.017202742, + 0.007867352, + 0.01377287, + -0.025357028, + 0.010296288, + -0.012171374, + 0.008868287, + 0.0120979715, + 0.011851074, + 0.007827315, + -0.0036200495, + -0.0065928274, + 0.018790893, + -0.0070065474, + -0.005805425, + -0.026718302, + -0.012284813, + 0.044841904, + -0.032136697, + 0.033417895, + -0.0017699874, + -0.008534642, + 0.044735137, + -0.024836542, + -0.025637291, + 0.03445887, + -0.011704271, + 0.049165946, + 0.003446554, + -0.006559463, + -0.010449765, + -0.017376238, + -0.00474777, + 0.010463111, + 0.022541065, + -0.023061551, + -0.014266665, + -0.010663298, + 0.008914998, + -0.013892983, + -0.0017533051, + -0.011670906, + 0.007894044, + 0.010349671, + 0.014653694, + -0.0001789172, + 0.015307638, + -0.019044463, + -0.008307763, + 0.0056519485, + -0.03795547, + -0.028239723, + -0.002780932, + -0.0026441375, + -0.037848704, + -0.0026825068, + 0.015214218, + -0.018924352, + -0.007860679, + 0.014159899, + -0.000095297386, + 0.020539194, + 0.0252903, + 0.031949855, + 0.01616177, + -0.0070198933, + -0.019364763, + -0.0009900919, + 0.008307763, + -0.017603116, + -0.0030661987, + -0.008768193, + 0.02172697, + -0.03331113, + -0.02853333, + 0.00665622, + 0.008200997, + -0.024676394, + 0.01809691, + 0.010423074, + -0.0063359207, + 0.0023521981, + -0.002750904, + 0.005331649, + -0.011090363, + 0.023501962, + 0.014720422, + -0.032110006, + 0.00526492, + 0.0029010442, + 0.007867352, + -0.0027559088, + -0.02039239, + -0.001042641, + -0.01839052, + 0.02503673, + 0.010556531, + -0.016188461, + 0.008074212, + -0.025570562, + -0.012224757, + -0.020045398, + 0.009468849, + -0.018857623, + 0.011036981, + 0.01717605, + 0.022767942, + -0.0057687243, + 0.010950233, + 0.006212472, + 0.027132021, + -0.0018750855, + 0.008728156, + 0.011750981, + -0.006182444, + -0.010423074, + -0.010289615, + 0.010903522, + -0.0013429216, + -0.00019737193, + 0.004237293, + -0.007780604, + 0.0038169, + -0.030294977, + -0.004974649, + 0.0071199867, + 0.02952092, + -0.02554387, + -0.043881007, + -0.025276953, + -0.0075337067, + 0.0035599933, + -0.021620203, + -0.009415465, + 0.012872029, + 0.015240909, + -0.012565075, + 0.019938633, + 0.0068130335, + -0.021873774, + -0.03961035, + 0.019524911, + 0.0120045515, + -0.008788212, + -0.029600995, + -0.007046585, + -0.02137998, + 0.008608044, + -0.0043073585, + -0.0043073585, + -0.033551354, + -0.009135203, + 0.005611911, + -0.015494479, + -0.004220611, + 0.011777673, + -0.0011744308, + -0.02653146, + -0.015187526, + -0.013706141, + -0.013826254, + 0.012992141, + 0.009555596, + -0.0010735032, + 0.012458309, + -0.0045309006, + 0.0138529455, + 0.010850139, + 0.005184845, + -0.031042341, + -0.021620203, + -0.0060890233, + 0.027225442, + 0.009201933, + -0.0022821326, + 0.02439613, + -0.014253319, + 0.011203803, + -0.031949855, + 0.015761396, + -0.0017266135, + -0.009021764, + 0.0138529455, + -0.01730951, + -0.0013103912, + 0.0044041155, + 0.015214218, + 0.008834923, + 0.026424693, + -0.0035966944, + 0.007059931, + -0.015240909, + 0.018337136, + -0.01975179, + -0.00028776893, + -0.0042339563, + 0.024169253, + 0.029627686, + 0.002655815, + -0.025677329, + 0.0011719285, + -0.005855472, + 0.011003616, + 0.012077954, + 0.025410412, + 0.019925287, + -0.004340723, + -0.014733768, + 0.023074897, + -0.011410663, + 0.006662893, + -0.023301775, + 0.0069198, + 0.021500092, + 0.023288429, + 0.022541065, + 0.026731648, + 0.0040537883, + -0.014013095, + -0.007473651, + -0.012204738, + -0.0050180224, + 0.0084812585, + -0.013919674, + 0.0036300588, + -0.0036367318, + 0.030561892, + -0.016415339, + 0.010783411, + -0.0015197535, + 0.016535452, + -0.011497411, + 0.005695322, + -0.016121732, + 0.04745768, + 0.0112571865, + -0.0069464915, + 0.020419082, + -0.025490487, + -0.003860274, + -0.01800349, + 0.028159648, + 0.002388899, + -0.031789705, + -0.00402376, + 0.009422138, + 0.007974118, + 0.0256106, + 0.014800497, + -0.0078339875, + 0.0018350482, + 0.024062486, + -0.016455377, + -0.00021686933, + 0.018110257, + 0.026051011, + -0.007914063, + -0.034832552, + -0.02531699, + -0.020218894, + 0.003519956, + 0.009535577, + 0.0043073585, + -0.009689054, + -0.015894853, + -0.011417336, + 0.014119862, + 0.0057553784, + -0.002882694, + -0.040250946, + 0.030001368, + 0.01492061, + -0.01016283, + -0.0077405665, + -0.009388774, + 0.008868287, + -0.01673564, + 0.01965837, + 0.026357964, + 0.020699343, + -0.004304022, + -0.018857623, + -0.0133991875, + 0.0074002487, + 0.02589086, + -0.041345302, + 0.013946366, + -0.019898595, + 0.0014004754, + -0.025930898, + -0.00903511, + -0.009188587, + 0.020218894, + 0.0027342218, + 0.00001191869, + -0.01673564, + -0.013459244, + -0.008427876, + 0.022180727, + -0.02885363, + -0.0024656374, + 0.009462176, + -0.0058621448, + 0.0050847516, + -0.006205799, + -0.016108386, + 0.016708948, + -0.0024089178, + -0.015828125, + 0.009095166, + -0.022848018, + -0.005925537, + 0.10890177, + -0.0012027906, + -0.003973713, + 0.021073025, + 0.0057854066, + 0.023328466, + -0.0040904894, + -0.0011410663, + 0.006352603, + 0.008307763, + -0.022287494, + 0.003483255, + -0.0039837225, + 0.0037368254, + 0.009849204, + -0.0012711879, + -0.013479263, + -0.052876078, + 0.030108135, + -0.009555596, + -0.012304832, + 0.017296163, + 0.0029911285, + 0.02045912, + 0.007960772, + -0.012985468, + 0.01689579, + 0.008794885, + 0.031896472, + -0.009849204, + -0.000403085, + 0.002167025, + 0.014119862, + 0.013292422, + -0.01730951, + -0.008274399, + 0.036914498, + -0.0035366383, + 0.008454567, + -0.003947022, + 0.01988525, + 0.00045792793, + -0.0020435764, + -0.003947022, + -0.002173698, + -0.0062825377, + -0.015000684, + 0.024489552, + -0.036700964, + -0.019858558, + 0.01418659, + 0.00031904815, + -0.03750171, + -0.009395447, + -0.026918488, + 0.024916617, + -0.0057120044, + -0.007974118, + 0.002056922, + 0.023635421, + 0.009642344, + -0.013879637, + -0.013372497, + -0.020525848, + -0.0013304099, + -0.043747548, + 0.0009709073, + -0.013205674, + -0.018884314, + -0.01476046, + 0.0102429055, + -0.011203803, + -0.025076767, + 0.02007209, + 0.015454442, + -0.009261988, + 0.016642218, + -0.02360873, + -0.007900717, + 0.020552538, + -0.013639413, + -0.0133991875, + -0.017349547, + -0.015908198, + -0.011784346, + 0.009689054, + 0.0130255055, + 0.0038736197, + -0.017669845, + 0.017189397, + 0.038596068, + -0.011951168, + 0.006522762, + -0.0035166196, + -0.011710944, + -0.009075147, + 0.008241034, + 0.017829996, + -0.018857623, + -0.0023488617, + 0.021927157, + -0.021940503, + -0.0069398186, + 0.021126408, + -0.0017850014, + -0.0021853754, + 0.010129466, + -0.003298082, + -0.010102774, + -0.001996866, + 0.02888032, + -0.0093153715, + 0.014360086, + 0.001457195, + 0.003616713, + 0.0082076695, + 0.00006532146, + 0.023114935, + 0.00850795, + 0.010189522, + -0.0147871515, + -0.0016231835, + 0.015427751, + 0.015027376, + 0.024195943, + -0.018817585, + 0.002757577, + -0.010896849, + 0.009101839, + 0.0016657233, + 0.008234361, + 0.018377174, + -0.019858558, + -0.016708948, + -0.0015189194, + 0.0044841906, + -0.0138396, + 0.023755532, + 0.003653414, + -0.029814528, + -0.008434549, + 0.005485126, + 0.018764202, + -0.015921544, + -0.039556965, + -0.028132956, + 0.0036033674, + 0.035286307, + 0.0026674927, + 0.008174306, + 0.009322044, + 0.028773556, + -0.007607109, + -0.010022699, + -0.011070345, + -0.006032304, + -0.015227563, + -0.013419206, + 0.012331524, + 0.005501808, + 0.020565884, + 0.00030507674, + 0.010816774, + 0.0043006856, + -0.0049946676, + 0.005395042, + -0.001981852, + 0.006886435, + 0.010409728, + 0.029067162, + 0.008174306, + 0.022073962, + -0.005131462, + -0.0011961177, + -0.030108135, + 0.0061323973, + -0.0135193, + -0.015521171, + -0.021099716, + -0.030268285, + -0.0015614592, + -0.00871481, + -0.010563204, + 0.009382101, + 0.0015005689, + 0.02595759, + 0.025223572, + -0.00041726494, + 0.013692795, + -0.008267726, + 0.009769129, + -0.011504084, + -0.023341812, + 0.008654755, + 0.00018559009, + -0.005014686, + -0.020886185, + 0.008788212, + 0.0062892106, + 0.008788212, + 0.010036045, + 0.0009784143, + -0.009949298, + 0.014680386, + -0.0007957436, + 0.041211843, + -0.00928868, + -0.008354474, + 0.015667975, + -0.0346724, + -0.016014965, + -0.007653819, + 0.0065861545, + -0.04409454, + -0.020832801, + 0.013145617, + -0.010249578, + 0.02255441, + -0.017736575, + -0.019645024, + 0.01959164, + 0.016535452, + 0.025717366, + -0.015828125, + 0.023061551, + 0.0083878385, + -0.010796756, + 0.011370625, + 0.015948236, + -0.01689579, + -0.023208354, + 0.018937698, + 0.018363828, + -0.020485811, + -0.020218894, + 0.002595759, + 0.009622325, + -0.03451225, + 0.006365949, + 0.027252134, + 0.029787837, + 0.0010835126, + 0.00572535, + 0.009582288, + -0.0054817894, + 0.023929028, + -0.015788088, + -0.020525848, + -0.01666891, + -0.004577611, + -0.015107451, + 0.006833052, + -0.002046913, + 0.0031095725, + 0.020552538, + -0.009322044, + -0.011010289, + -0.019898595, + 0.010016026, + 0.0069998745, + -0.02917393, + 0.023101589, + 0.0022737915, + 0.007053258, + 0.0107033355, + 0.0034699093, + -0.008628063, + 0.0013821248, + 0.014400124, + 0.024703085, + -0.0071333325, + 0.0059989393, + 0.002167025, + -0.011644214, + 0.0122781405, + 0.009248642, + -0.0009875896, + -0.00830109, + -0.0054250695, + -0.008781539, + 0.0106165875, + 0.0048678825, + 0.011070345, + -0.012138009, + -0.03002806, + -0.014707076, + -0.007994137, + -0.015467788, + 0.00079032185, + -0.011944495, + -0.0170159, + -0.020605922, + -0.0046710316, + 0.022207418, + 0.014013095, + -0.021446709, + 0.009141876, + 0.0044474895, + -0.0107033355, + 0.006646211, + -0.01717605, + 0.010509822, + 0.0018584033, + 0.0006201629, + -0.0147871515, + -0.025757402, + 0.027999498, + -0.023982411, + -0.0018250388, + -0.029387463, + -0.01377287, + 0.023501962, + -0.002078609, + 0.019217959, + 0.025850823, + -0.017189397, + 0.008527969, + -0.03333782, + -0.014627002, + 0.0028142966, + 0.010563204, + -0.0020902867, + 0.026291234, + -0.007366884, + 0.01517418, + 0.018977735, + 0.015454442, + 0.0035633298, + -0.010716681, + -0.013906329, + -0.009789147, + -0.00836782, + 0.00007934498, + -0.0073001552, + -0.017149359, + 0.0040137507, + -0.00944883, + -0.0053516678, + 0.01924465, + -0.0072134077, + 0.0067262854, + 0.013652759, + 0.022701213, + -0.0010526504, + -0.006803024, + -0.020685997, + -0.0127452435, + -0.006752977, + -0.02379557, + -0.006065668, + -0.0152676, + 0.02519688, + 0.027412282, + -0.040678013, + -0.02338185, + 0.026891796, + -0.031576175, + 0.003166292, + -0.02214069, + 0.015361021, + 0.014453506, + -0.00045167207, + -0.00036429876, + 0.010603242, + -0.010262924, + 0.009048455, + -0.029307388, + -0.003750171, + 0.022260802, + -0.017616462, + 0.008588025, + 0.00816096, + -0.014293357, + 0.0039236667, + 0.007580417, + -0.0014705409, + 0.01492061, + -0.006676239, + 0.00314961, + 0.0003401095, + 0.00036617552, + 0.01492061, + -0.0083878385, + 0.023942374, + 0.0071533513, + -0.0349927, + 0.012291486, + 0.010783411, + -0.016588835, + 0.008354474, + 0.013425879, + 0.0014421811, + -0.02080611, + 0.00541506, + -0.02089953, + 0.014573619, + -0.0012745244, + -0.0081075765, + 0.016415339, + -0.012972122, + -0.00024001596, + 0.031389333, + 0.000569282, + -0.0065394444, + -0.022474336, + 0.010543185, + -0.012391579, + 0.0085746795, + 0.013279076, + 0.0031712968, + -0.009201933, + -0.022113997, + 0.008354474, + -0.027492357, + -0.020178856, + 0.0065561268, + -0.0019801839, + -0.021793699, + 0.02519688, + 0.0011026971, + -0.0019234641, + -0.0062224814, + -0.011003616, + 0.00190845, + -0.006722949, + -0.025770748, + -0.003373152, + -0.03878291, + -0.018030182, + 0.0060756775, + -0.01393302, + -0.00020310647, + 0.0008024165, + 0.024556281, + -0.020525848, + 0.009155222, + 0.25111467, + -0.007520361, + -0.0110770175, + 0.028293107, + -0.0070799496, + 0.029414153, + 0.03387165, + -0.013158963, + -0.0097024, + 0.019831866, + -0.015107451, + -0.0027275488, + 0.01409317, + -0.0038402553, + 0.0082944175, + -0.011097036, + -0.019364763, + -0.04062463, + -0.0030862174, + -0.009375428, + 0.034378793, + -0.008914998, + -0.0014580291, + -0.0066495473, + 0.0050680693, + 0.013973057, + -0.0041238535, + 0.008434549, + 0.020152165, + 0.023261737, + 0.010683317, + 0.019578295, + 0.0003943268, + 0.03331113, + 0.0043507325, + 0.0070132203, + -0.0011886107, + -0.007787277, + 0.024943309, + 0.008321109, + 0.0021136417, + -0.012144682, + -0.0077472394, + -0.0011585826, + 0.0095022125, + 0.028613405, + -0.011270532, + -0.0061857803, + -0.003194652, + 0.02262114, + -0.029707761, + -0.004017087, + 0.01682906, + 0.023021514, + 0.011250514, + 0.0014229964, + 0.009048455, + -0.020619268, + -0.01915123, + -0.010509822, + 0.0008983395, + 0.024316056, + 0.003623386, + 0.024075832, + 0.0000784066, + -0.010823447, + -0.028266415, + 0.024502898, + -0.004871219, + 0.004140536, + -0.0005375857, + -0.003446554, + -0.0011844402, + -0.029787837, + -0.029013779, + -0.0026925162, + 0.03864945, + 0.00074152625, + 0.018150294, + 0.015881507, + -0.016175115, + 0.009835858, + -0.0013862954, + 0.0008512121, + -0.006893108, + -0.040384404, + 0.0027108665, + 0.0037835357, + 0.016281882, + -0.004387433, + 0.0052315556, + -0.021433363, + -0.0017166041, + -0.0077072023, + 0.0048478637, + -0.019351417, + -0.00092920166, + 0.006395977, + 0.000065217195, + 0.0056686304, + -0.0197251, + 0.004771125, + 0.0048512, + -0.022354223, + -0.01285201, + 0.0060890233, + 0.010556531, + 0.013679449, + 0.013138944, + -0.011710944, + -0.016014965, + -0.01682906, + 0.0060022757, + -0.010496476, + 0.00040663, + -0.0013270734, + -0.025930898, + -0.016975863, + 0.03267053, + -0.033898342, + 0.012158028, + -0.025010038, + -0.0071533513, + 0.0053516678, + -0.018457249, + 0.002078609, + -0.016081695, + 0.00060598296, + 0.009268661, + -0.031816397, + 0.030401744, + -0.016175115, + 0.014400124, + 0.0045142183, + -0.015881507, + 0.007320174, + 0.003947022, + -0.0033247736, + -0.0014446834, + -0.02137998, + 0.009969316, + -0.0074002487, + 0.008094231, + 0.00402376, + -0.0145068895, + -0.019231305, + 0.0069264728, + 0.017963452, + -0.013205674, + 0.0132990945, + -0.022380915, + -0.013158963, + 0.0022654503, + -0.016748985, + 0.015761396, + 0.00092836755, + 0.00026274554, + -0.008374493, + 0.011270532, + 0.027332207, + -0.015601246, + 0.0141332075, + 0.011744308, + -0.00578207, + -0.02188712, + -0.015734704, + -0.17306839, + 0.032910753, + 0.010896849, + -0.01632192, + 0.015187526, + 0.013499281, + 0.011824383, + -0.021633549, + 0.012358215, + 0.009328717, + 0.025263608, + 0.031202491, + -0.018777547, + -0.014733768, + 0.01151743, + -0.012358215, + -0.0040137507, + 0.0055451817, + 0.030161519, + 0.010489803, + 0.02166024, + -0.02057923, + 0.0009500545, + 0.0071600243, + -0.029814528, + 0.033925034, + 0.011183784, + 0.025877515, + -0.016855752, + -0.009015091, + -0.02751905, + -0.026344618, + 0.0120912995, + 0.032056622, + -0.0010001012, + 0.008601371, + 0.00053299806, + -0.024102524, + -0.012658495, + 0.022567756, + 0.003750171, + 0.020138819, + 0.00028568364, + -0.008654755, + 0.014653694, + 0.017629808, + 0.0013787885, + 0.0023021514, + -0.011791019, + -0.017789958, + 0.0256106, + -0.013919674, + 0.020298969, + 0.0006706267, + 0.0032380258, + 0.020032052, + 0.0141332075, + -0.0009216946, + 0.015948236, + -0.0214734, + -0.019551603, + -0.008601371, + 0.018403865, + -0.016415339, + -0.020672651, + 0.0063792947, + -0.016522106, + -0.0026257872, + -0.043267097, + 0.026998563, + -0.010029372, + -0.013225692, + 0.0026357963, + -0.012978795, + 0.0013103912, + -0.019338071, + -0.00022375076, + 0.030161519, + 0.0041805734, + -0.017629808, + -0.018684126, + 0.025490487, + -0.018363828, + -0.018564014, + 0.0025006703, + -0.008120922, + 0.0034231988, + 0.022954784, + -0.007053258, + -0.021913812, + 0.027572433, + -0.025410412, + 0.007954099, + -0.010756719, + 0.026264545, + 0.006576145, + -0.0031846426, + 0.021967195, + -0.004017087, + -0.010583223, + -0.00066520495, + -0.011550794, + -0.014280011, + 0.012838664, + 0.026704956, + -0.0019551604, + 0.008227688, + 0.0010217882, + 0.012298159, + -0.005361677, + -0.028426563, + 0.00093587453, + 0.015227563, + 0.021046335, + -0.026224507, + -0.00464434, + 0.016188461, + 0.0017583098, + 0.019578295, + -0.023341812, + 0.05207533, + -0.008314436, + 0.016628873, + 0.009775802, + 0.00029152242, + -0.01616177, + -0.06897112, + -0.021713624, + 0.002854334, + 0.005641939, + -0.011684252, + 0.029013779, + 0.007954099, + 0.01867078, + 0.008441222, + 0.02681172, + -0.0026891797, + -0.024489552, + -0.0020902867, + -0.0011427345, + 0.026838413, + -0.001641534, + 0.011010289, + -0.02853333, + 0.0060990327, + 0.026931833, + -0.000014557875, + -0.0046543493, + 0.008868287, + -0.011604177, + -0.015054068, + -0.0009208605, + -0.02554387, + 0.022420952, + 0.022848018, + 0.0031112407, + 0.001441347, + -0.0032430305, + 0.0025540534, + -0.028319798, + 0.0074002487, + 0.019271342, + -0.038729526, + -0.0016440363, + 0.020258931, + -0.024449514, + -0.0020102118, + -0.011584158, + 0.017216088, + -0.02137998, + -0.010196195, + 0.005962238, + -0.01800349, + -0.009622325, + 0.01593489, + -0.025637291, + -0.026357964, + -0.023195008, + 0.00068063603, + 0.01022956, + 0.008521296, + -0.017456312, + -0.018483939, + 0.0012545056, + -0.009635671, + -0.003166292, + 0.014560273, + 0.010850139, + -0.013879637, + 0.011303897, + 0.022594448, + 0.0028960395, + -0.021206483, + -0.02710533, + 0.009528904, + -0.0049713124, + 0.0068597435, + 0.010963579, + -0.007473651, + 0.0005559362, + -0.009008418, + -0.03680773, + -0.01800349, + -0.01119713, + 0.012725225, + -0.016775677, + 0.0028293105, + -0.03477917, + -0.0007181711, + -0.0019551604, + 0.025156843, + 0.015294292, + -0.0060623316, + 0.010302961, + -0.0016673915, + -0.034058493, + -0.006065668, + 0.036220513, + 0.008541315, + -0.03186978, + -0.014693731, + 0.032296848, + 0.0152676, + -0.014933956, + 0.005805425, + 0.014480198, + 0.00052590814, + -0.01816364, + -0.08295752, + 0.012698533, + 0.010356344, + -0.0037001243, + 0.014693731, + -0.0086681, + 0.015601246, + -0.018817585, + -0.0021837072, + -0.0061757714, + -0.017950106, + -0.00036054527, + -0.0054050507, + 0.0076938565, + -0.028960396, + -0.018523976, + 0.025050076, + -0.0014563609, + 0.015120797, + 0.012618458, + 0.0058821635, + 0.00526492, + 0.033097595, + -0.001323737, + -0.009755783, + 0.008354474, + -0.014266665, + 0.031202491, + -0.021193137, + -0.007867352, + -0.00056761375, + -0.029067162, + -0.013639413, + 0.016348612, + -0.0053082937, + -0.01896439, + -0.01068999, + 0.0024222636, + 0.0003165458, + 0.02602432, + -0.017029246, + -0.009615652, + 0.029654378, + -0.01476046, + -0.010082755, + 0.0061390703, + -0.0007736396, + -0.004941284, + 0.01616177, + 0.016762331, + -0.00049963355, + 0.01717605, + 0.015347675, + -0.0141332075, + 0.017042592, + -0.054504268, + 0.009055128, + 0.010649952, + -0.018203678, + 0.013178982, + 0.019645024, + 0.010790084, + 0.0025173523, + 0.011984533, + -0.0012294822, + -0.0143200485, + -0.0038502647, + -0.0014229964, + 0.007053258, + -0.02968107, + -0.04118515, + 0.014360086, + 0.015067413, + 0.020152165, + 0.020138819, + 0.0033531333, + 0.009842531, + -0.024409477, + -0.030081443, + 0.03248369, + -0.0012670173, + 0.0070866225, + -0.026785031, + 0.019137884, + 0.004814499, + -0.007046585, + -0.014907264, + -0.006913127, + -0.0058855, + 0.032777295, + -0.0077005294, + 0.0027792638, + 0.01581478, + 0.0042339563, + 0.023008168, + -0.002046913, + -0.008721483, + -0.027625816, + 0.025917552, + 0.01823037, + 0.016642218, + -0.0007899048, + -0.002382226, + -0.024649702, + -0.0068664164, + 0.00015358102, + -0.03931674, + -0.0052849385, + 0.01533433, + 0.0031079042, + 0.013352478, + 0.019965325, + -0.0037835357, + 0.03400511, + 0.008868287, + -0.0012895383, + -0.011343934, + -0.037741937, + -0.020685997, + 0.028907012, + 0.023275083, + 0.007653819, + 0.021913812, + -0.006676239, + -0.006906454, + 0.0069264728, + 0.008120922, + -0.017002555, + -0.00598893, + -0.007813969, + 0.013332459, + -0.0058888365, + -0.02738559, + 0.004200592, + -0.00804752, + -0.023848953, + 0.00183338, + 0.005975584, + -0.012444963, + 0.03632728, + 0.016989209, + 0.023421887, + -0.0036467412, + 0.0042172745, + 0.02039239, + 0.008060866, + 0.013652759, + -0.016855752, + -0.015921544, + 0.00862139, + -0.002714203, + -0.000095245254, + -0.01119713, + -0.020312315, + -0.011630869, + 0.006072341, + 0.024129216, + -0.012885374, + -0.0032380258, + 0.042679884, + 0.025076767, + 0.014773806, + 0.0105164945, + -0.006786342, + -0.008694792, + 0.023208354, + 0.0077605853, + 0.0095022125, + -0.008881633, + 0.022594448, + 0.012938757, + -0.017296163, + -0.008834923, + 0.014533581, + -0.010676644, + 0.0013871295, + -0.009942625, + 0.012771935, + 0.012605113, + -0.014853881, + 0.0077472394, + -0.016108386, + -0.040838163, + 0.0040270966, + 0.0019551604, + -0.0047677886, + 0.0013337464, + -0.013759525 + ] + }, + { + "object": "embedding", + "index": 3, + "embedding": [ + -0.0010213737, + 0.008644082, + 0.0023587057, + 0.009380755, + -0.0029162795, + 0.0086643575, + -0.018856129, + 0.0043659713, + -0.0068497085, + -0.04287573, + -0.0075086593, + -0.010408043, + 0.021775788, + -0.019937484, + -0.0062008956, + -0.013003294, + 0.023168033, + -0.006413787, + 0.010455352, + -0.025371293, + -0.013476388, + 0.023438372, + -0.016044606, + -0.009150967, + 0.0061704824, + 0.005903523, + 0.007907409, + -0.021383796, + 0.013523697, + -0.0016980654, + 0.0190724, + -0.0030886205, + 0.0021998817, + -0.004203768, + 0.0023468784, + -0.013625074, + -0.015490412, + -0.005937315, + -0.0011193715, + -0.011164991, + 0.02591197, + -0.02397905, + -0.010833826, + -0.008637324, + -0.0030210358, + 0.0026172171, + -0.016977275, + 0.017409816, + -0.024695447, + 0.010536454, + 0.0074951425, + 0.0034941286, + -0.03752302, + -0.012422066, + -0.019829348, + -0.00043676607, + -0.028196333, + 0.0045011407, + -0.006494889, + -0.014706429, + 0.011678635, + 0.000102855454, + -0.0281693, + 0.016409563, + -0.0037779843, + 0.00011837881, + -0.008157472, + 0.011901665, + -0.04260539, + -0.021140492, + 0.022843625, + 0.01858579, + -0.011219059, + -0.021478415, + 0.018639859, + -0.006626679, + -0.024560276, + 0.007522176, + 0.00737349, + 0.0059001436, + 0.016842104, + -0.018639859, + 0.01726113, + 0.004882994, + 0.024695447, + 0.0069071557, + -0.010921686, + 0.022613838, + 0.008191264, + -0.026425615, + 0.03173777, + 0.0031545155, + 0.011746219, + -0.0048221676, + -0.03033201, + -0.011556982, + -0.015517445, + 0.019194052, + -0.0077722394, + -0.010556729, + -0.01770719, + 0.011151474, + -0.004264594, + -0.015612064, + -0.016788037, + 0.00671116, + 0.008704908, + 0.0002832221, + 0.010293148, + 0.005704148, + 0.0093537215, + 0.024763031, + -0.016450115, + -0.052526824, + -0.02185689, + -0.016869139, + 0.03522514, + 0.0117259445, + -0.013260117, + -0.03381938, + 0.0075356932, + 0.036144294, + -0.007893892, + -0.0050046463, + 0.031818874, + 0.012307173, + -0.0087387, + -0.01046211, + -0.004720791, + -0.012090902, + 0.005271606, + 0.014760497, + 0.010867618, + 0.020762017, + -0.009664611, + 0.024735996, + -0.022938244, + 0.022897694, + -0.034278955, + -0.018707443, + 0.02203261, + 0.019045366, + -0.025155023, + 0.011935457, + 0.010313424, + 0.02662837, + 0.024465658, + 0.022438118, + 0.00737349, + 0.0055216695, + 0.018072147, + -0.016612317, + 0.020032102, + -0.014314438, + 0.0032085832, + 0.016990792, + 0.026141759, + 0.018964265, + -0.005197263, + 0.003558334, + 0.003761088, + 0.009286136, + 0.015598547, + -0.008927938, + -0.011219059, + 0.019613078, + 0.006728056, + 0.013834586, + 0.0060150377, + -0.021613585, + -0.013226325, + 0.020964772, + -0.0014032272, + 0.009772747, + 0.008252091, + 0.010313424, + 0.03222438, + 0.01761257, + -0.021208076, + 0.0067922617, + -0.0031359298, + -0.0132466, + 0.006227929, + 0.008434569, + -0.013239841, + -0.002096815, + 0.009941708, + 0.008015544, + 0.006643575, + 0.002061333, + 0.008488637, + 0.0397398, + 0.018031595, + 0.0026510095, + -0.67217034, + -0.051850975, + 0.0032254795, + 0.0016161189, + 0.020910705, + 0.0067719864, + 0.0150713865, + 0.006079243, + -0.0040415647, + -0.001850131, + -0.0314404, + 0.0071504605, + -0.007988511, + -0.0019126468, + -0.0027067668, + -0.0028317985, + -0.0006935879, + -0.012030075, + 0.014976768, + 0.012178762, + -0.006379995, + 0.0045856214, + -0.005704148, + 0.0048593394, + 0.021154009, + -0.015341725, + -0.0040753568, + -0.019275155, + -0.008718425, + 0.032602854, + -0.031007856, + 0.0381448, + 0.009475374, + 0.005268227, + 0.047011912, + -0.009948467, + -0.022776041, + 0.026236378, + 0.011279885, + 0.03425192, + -0.022654388, + -0.016585283, + 0.0058021457, + -0.025046887, + -0.011928698, + 0.012070626, + 0.017855875, + -0.04498437, + -0.0045450707, + -0.018991299, + 0.020248374, + -0.013219566, + -0.011894906, + -0.01942384, + 0.004626172, + 0.0143279545, + 0.02207316, + -0.014963251, + 0.006809158, + -0.00710991, + -0.021559516, + -0.0066570924, + -0.029548027, + -0.02287066, + -0.014638844, + -0.0017403058, + -0.029277688, + -0.0031883079, + 0.006278618, + -0.008427811, + 0.010259356, + 0.023789812, + -0.013571006, + 0.010293148, + 0.019923966, + 0.017274648, + 0.008988764, + 0.0015966883, + -0.007974993, + -0.01695024, + -0.007332939, + -0.003612402, + -0.0157202, + 0.0077114133, + 0.028764045, + -0.035684716, + -0.020910705, + 0.005548703, + 0.023032863, + -0.027790826, + 0.005656839, + 0.012253105, + -0.005224297, + 0.018004563, + -0.008157472, + 0.0095835095, + 0.0065861284, + -0.00096223707, + 0.014652361, + -0.011847597, + -0.017761257, + -0.011104165, + 0.0052918815, + -0.015544479, + -0.024965785, + -0.0029754161, + -0.0053662243, + 0.0087387, + 0.025939004, + -0.012895159, + 0.007718172, + -0.011577258, + -0.030223874, + -0.008725184, + 0.0097254375, + -0.027980063, + 0.017936977, + 0.0012925572, + 0.016531216, + 0.003686745, + 0.0035110246, + -0.0069747404, + 0.031467434, + 0.0033268565, + 0.00020835093, + 0.014598293, + -0.0020495057, + -0.014963251, + -0.010773, + 0.00238405, + 0.00037657344, + 0.002578356, + -0.006565853, + -0.008535947, + 0.026587818, + -0.017639605, + -0.018788544, + -0.0031646532, + 0.030602349, + -0.042443186, + -0.041037425, + -0.0081507135, + 0.004230802, + 0.0074072825, + 0.0111244405, + -0.023816846, + -0.022127228, + 0.02697981, + -0.0029720368, + 0.032467686, + 0.002101884, + -0.0038523274, + -0.037712257, + 0.022329982, + -0.0035346793, + -0.0032660302, + -0.022248881, + -0.011164991, + 0.0025749768, + 0.012624821, + 0.012205795, + 0.010326941, + -0.040577848, + 0.0012410239, + 0.008840078, + -0.015206556, + 0.014152234, + 0.014963251, + 0.002318155, + -0.018423587, + -0.003717158, + -0.005788629, + -0.009651094, + 0.015422827, + 0.015084904, + -0.01125961, + 0.009995776, + -0.0045247953, + -0.0035786096, + 0.006839571, + 0.0065489565, + -0.023965532, + -0.012983019, + 0.006545577, + 0.026371546, + -0.007055842, + 0.0077114133, + 0.014179269, + -0.0062448257, + 0.002874039, + -0.027358284, + 0.02437104, + -0.0007628622, + 0.0025935625, + 0.015949987, + -0.023384303, + 0.005359466, + 0.0055824956, + -0.0035313002, + 0.023478922, + 0.021924473, + -0.010739207, + 0.010489144, + -0.009319929, + 0.0051905042, + -0.02193799, + -0.0058021457, + -0.007359973, + 0.02176227, + 0.0281693, + 0.020342993, + -0.025966039, + -0.010658106, + 0.0064475797, + 0.022478668, + 0.03738785, + 0.015652616, + 0.009394272, + -0.005592633, + -0.002441497, + 0.0030869308, + -0.030304976, + 0.015220073, + -0.018558756, + -0.003541438, + 0.0019278533, + 0.006177241, + 0.038334038, + 0.015449861, + -0.0040145307, + -0.022059644, + -0.011333953, + -0.0077992734, + 0.008988764, + 0.012895159, + -0.019910451, + 0.0059542116, + -0.013787277, + 0.035792854, + 0.007927684, + 0.0147875305, + -0.0036968826, + 0.03676607, + -0.010705415, + -0.0039706007, + -0.009401031, + 0.040172342, + 0.015179521, + -0.0058798683, + 0.018328968, + -0.025438879, + -0.015990539, + -0.017964011, + 0.0067652278, + 0.014341472, + -0.035522513, + 0.009319929, + 0.0031714116, + 0.019369774, + 0.04211878, + 0.02397905, + -0.0010357354, + 0.0062718596, + 0.009968742, + 0.008137197, + -0.00023802483, + 0.032467686, + 0.0049776128, + -0.008143956, + -0.0061130356, + -0.02022134, + -0.0086643575, + -0.01593647, + -0.014706429, + -0.004095632, + -0.012604545, + -0.0014632086, + -0.018639859, + 0.026141759, + 0.0043423166, + -0.008731943, + -0.037279718, + 0.027561037, + -0.009529442, + -0.0007624398, + -0.013064121, + -0.009745712, + -0.009455099, + -0.026141759, + 0.021356763, + 0.009211794, + 0.016260877, + -0.008285883, + 0.00073878514, + -0.009042832, + 0.007130185, + 0.019315705, + -0.037144545, + -0.016923208, + -0.019234603, + 0.016801555, + -0.022708457, + 0.0029382445, + -0.0014311059, + 0.012435583, + -0.006596266, + 0.01774774, + -0.025709217, + -0.012834333, + 0.000044669257, + 0.022911211, + -0.012124694, + -0.0027135254, + 0.009482132, + 0.011252851, + 0.0013778829, + -0.00489989, + 0.0038219143, + 0.012401791, + -0.013908929, + -0.0052479515, + -0.021505449, + -0.024046633, + -0.00043148603, + 0.084778234, + -0.0034180959, + 0.00657937, + 0.002101884, + 0.011043339, + 0.008995523, + -0.004305145, + 0.0067517105, + 0.0062448257, + 0.016409563, + -0.011502914, + -0.018991299, + 0.012023317, + 0.001227507, + 0.0063833743, + -0.012124694, + -0.013537214, + -0.019194052, + 0.026033623, + -0.0063056517, + 0.00865084, + 0.012340965, + -0.001894061, + 0.018518206, + -0.0064002704, + -0.004115908, + 0.013097913, + 0.010049844, + 0.0013128327, + -0.025411844, + 0.012793782, + 0.0005677114, + -0.015409309, + -0.0016718763, + -0.020113204, + -0.0016271014, + 0.018085664, + 0.020586297, + -0.008157472, + -0.012199037, + 0.010212047, + 0.0063124103, + 0.0051195403, + -0.005082369, + -0.0018687168, + -0.0077384473, + 0.0021255387, + 0.012489651, + -0.027304215, + 0.004798513, + 0.03541438, + -0.0046025175, + -0.037279718, + -0.014909183, + -0.00094618567, + 0.01333446, + -0.012003041, + -0.0038557067, + 0.0017943736, + 0.014841598, + -0.00017962744, + -0.021559516, + 0.01457126, + -0.009421306, + -0.03400862, + -0.044524796, + -0.0015468446, + -0.014855116, + -0.03827997, + -0.021248627, + 0.016004056, + -0.013179015, + -0.029602095, + 0.009752471, + 0.017369267, + -0.004538312, + 0.026168793, + -0.010056602, + -0.0101850135, + 0.02662837, + -0.01607164, + -0.03417082, + -0.02392498, + -0.027817858, + 0.00040402974, + 0.009968742, + 0.020559262, + -0.017098928, + 0.002115401, + -0.016720453, + 0.040415645, + -0.011827321, + 0.014733463, + 0.0009689955, + -0.014368505, + -0.020829601, + 0.013239841, + 0.020599814, + -0.02949396, + -0.004896511, + 0.013354735, + -0.021708203, + 0.0019041987, + -0.013800794, + -0.0059069023, + 0.007846583, + 0.01690969, + 0.000936048, + -0.0072923885, + 0.00485596, + 0.029034384, + -0.036495734, + 0.00984709, + 0.013030329, + -0.020424094, + 0.03354904, + 0.013990032, + 0.0348737, + 0.007691138, + -0.00083382614, + 0.008421052, + -0.011002788, + 0.022154262, + 0.015963504, + 0.00047478246, + 0.006802399, + -0.0013381769, + -0.00034827236, + 0.006423925, + -0.0026594577, + -0.011131199, + 0.013388528, + -0.019491425, + -0.022235364, + -0.022194812, + -0.0075694853, + -0.0083805015, + 0.010563487, + 0.0037847427, + -0.03611726, + -0.01461181, + -0.016004056, + 0.011543466, + -0.008576497, + -0.020464644, + -0.016896173, + 0.006140069, + 0.015868885, + -0.0076505872, + 0.01377376, + 0.02012672, + 0.024398074, + -0.01426037, + -0.0075289346, + -0.024492692, + -0.030304976, + -0.021018839, + -0.030791586, + 0.002321534, + 0.017869392, + 0.034900736, + 0.0057751117, + -0.0041902508, + -0.01642308, + -0.0014648982, + 0.011151474, + -0.014733463, + 0.02397905, + -0.006298893, + 0.0135304555, + 0.027871927, + 0.018991299, + -0.015517445, + -0.004967475, + -0.037063446, + 0.028250402, + 0.0006534595, + -0.011408296, + -0.0067483317, + -0.03346794, + -0.0020106446, + -0.0037374336, + -0.015125454, + 0.008583256, + -0.0038962576, + -0.00024013685, + 0.021600068, + -0.004291628, + 0.015747232, + -0.013935964, + 0.020059137, + -0.009198276, + -0.0097254375, + -0.010252598, + 0.0026391821, + 0.0025935625, + -0.026817605, + 0.0026459408, + 0.01337501, + -0.001041649, + 0.024425108, + -0.0143279545, + -0.005612909, + -0.01037425, + 0.006386753, + 0.028412605, + -0.009421306, + -0.013706176, + 0.00036094448, + -0.027817858, + -0.037333783, + -0.006292135, + 0.0106107965, + -0.01284785, + -0.014017065, + 0.0043997634, + -0.0048863734, + 0.018315451, + -0.011604291, + -0.0026915604, + 0.026344514, + -0.004176734, + 0.021748753, + -0.016801555, + 0.015963504, + 0.0100092925, + -0.014733463, + -0.0010450283, + -0.00079707697, + -0.016152741, + -0.018883163, + 0.009637577, + 0.019491425, + -0.011469122, + -0.02675002, + -0.0045856214, + 0.009002281, + -0.014422573, + -0.0040246686, + 0.04322717, + 0.019085918, + -0.0059846244, + -0.015287657, + 0.0037982597, + -0.010725691, + 0.020897187, + -0.0024347384, + -0.009914674, + -0.0074951425, + -0.013949481, + 0.0018822337, + -0.0016144293, + -0.009157726, + 0.013746726, + 0.018612824, + -0.015017319, + 0.005646701, + -0.014165752, + 0.018815579, + 0.0039266706, + -0.012949227, + 0.016058123, + 0.010401284, + 0.0079209255, + 0.020194305, + 0.018247867, + -0.0013145222, + 0.016531216, + 0.008306159, + 0.029710231, + -0.013537214, + -0.019045366, + -0.001580637, + 0.0036326773, + 0.015436344, + -0.005822421, + 0.004578863, + 0.0014370196, + -0.03757709, + -0.0011261299, + 0.015476895, + 0.0034518882, + 0.004420039, + 0.0047444454, + -0.024479175, + -0.022965278, + 0.0041091493, + 0.00016452649, + -0.01006336, + -0.0015400861, + -0.0075019007, + -0.007434316, + -0.004825547, + 0.019045366, + -0.01205035, + -0.014706429, + 0.021546, + 0.016693419, + -0.008495396, + 0.000274774, + 0.009630819, + 0.0057818703, + -0.0016085156, + 0.0047714794, + -0.014138717, + -0.006238067, + 0.014246853, + -0.009542959, + 0.00042916278, + -0.020464644, + 0.005400017, + 0.043416407, + 0.025817353, + 0.013456112, + 0.025749767, + -0.030169807, + -0.0017960632, + -0.030791586, + -0.026087692, + 0.018288417, + 0.024884684, + 0.02666892, + 0.004626172, + -0.016301427, + 0.021126974, + 0.02339782, + -0.019477908, + -0.006940948, + -0.022221847, + -0.04182141, + -0.01108389, + 0.0039942553, + -0.01841007, + -0.024384556, + -0.018802062, + -0.0140981665, + -0.005136437, + 0.007630312, + 0.00067120045, + 0.0045315535, + 0.0056872517, + 0.022681423, + -0.00035650926, + 0.010577004, + -0.031197093, + -0.0070085325, + 0.0064171664, + -0.019545494, + -0.036090225, + -0.019207569, + -0.016517699, + 0.014679395, + -0.0015721889, + -0.020694433, + -0.016450115, + 0.013618316, + -0.034143787, + -0.0062177917, + -0.027142012, + 0.01258427, + 0.019761764, + 0.0005677114, + 0.010955479, + -0.0077722394, + -0.008704908, + 0.011685393, + -0.01443609, + 0.0073802485, + 0.012151727, + -0.023641124, + 0.0256957, + 0.019180536, + -0.021464897, + -0.008258849, + 0.012523443, + 0.005704148, + -0.0072721126, + -0.007420799, + -0.01103658, + 0.00084692065, + 0.009820056, + -0.013091154, + -0.008745459, + 0.022667905, + 0.017950494, + -0.045633186, + 0.0010264425, + -0.0039773593, + -0.006940948, + -0.0042882487, + -0.01258427, + 0.009907916, + 0.005815663, + 0.010806792, + -0.02710146, + -0.0134425955, + -0.0033674072, + -0.010766242, + 0.013037087, + 0.0039874967, + 0.004220664, + 0.009617302, + 0.0071369433, + -0.0021508827, + -0.0138143115, + -0.002586804, + -0.030899722, + -0.01108389, + 0.012077385, + -0.00856298, + -0.012509926, + -0.014246853, + 0.010340458, + -0.037982598, + -0.015355242, + 0.0033606489, + -0.0014370196, + -0.035117008, + 0.020802569, + 0.013037087, + -0.023330236, + -0.0050012674, + 0.0038388106, + -0.009455099, + -0.0063056517, + -0.021478415, + 0.008968488, + -0.03133226, + -0.010441835, + -0.0039976346, + 0.0031156542, + -0.024087185, + -0.00856298, + -0.0029720368, + -0.011185266, + -0.013449354, + 0.21756864, + -0.00763707, + -0.0062887557, + 0.021708203, + -0.014909183, + 0.035171073, + 0.028601842, + -0.00057911634, + -0.0031122752, + 0.0024431867, + -0.015341725, + -0.011320436, + 0.007359973, + -0.0031511362, + 0.0016693419, + -0.03576582, + -0.022911211, + -0.027898962, + -0.028574808, + -0.02057278, + 0.032062177, + -0.009441582, + 0.014517192, + -0.007745206, + 0.026506716, + 0.0058697304, + -0.018018078, + 0.015963504, + 0.02039706, + 0.025601082, + 0.017517952, + 0.014517192, + -0.0041699754, + 0.015625581, + -0.0023722227, + 0.012854609, + 0.0024617724, + -0.0026037002, + 0.024776548, + 0.014814565, + 0.009178001, + -0.019045366, + -0.021140492, + -0.0015882403, + -0.017842358, + 0.018747993, + -0.009279378, + 0.0015890851, + -0.0298454, + 0.025790319, + -0.038712513, + -0.0055655995, + 0.020315958, + 0.031467434, + 0.014287404, + -0.00543043, + 0.020099688, + -0.009015798, + -0.0016668075, + -0.002608769, + -0.014354989, + 0.026479682, + -0.012550477, + 0.037766326, + -0.007170736, + -0.00026062346, + -0.014409056, + -0.0023384304, + 0.011685393, + -0.002529357, + 0.027479935, + 0.0027287318, + -0.00018659711, + -0.034143787, + -0.021532483, + -0.021518966, + 0.04206471, + 0.024289938, + 0.016747486, + 0.01682859, + 0.003832052, + 0.004737687, + 0.006940948, + 0.015368759, + -0.013577765, + -0.014314438, + -0.008225057, + 0.00068767427, + 0.01002281, + -0.015571513, + 0.011759737, + -0.005285123, + -0.0027912478, + -0.015787784, + 0.00012355327, + 0.010347216, + 0.0007434316, + 0.007954719, + -0.006467855, + 0.015044352, + -0.025574047, + 0.0073261806, + 0.005893385, + -0.0051330575, + -0.006961223, + 0.004071978, + -0.0019836107, + 0.0030092085, + -0.006900397, + 0.0013770381, + -0.0077384473, + -0.010928445, + -0.00042219312, + -0.0039976346, + 0.00008706809, + -0.005974487, + -0.005589254, + -0.020478161, + 0.024492692, + -0.033873446, + 0.020586297, + -0.014706429, + -0.014652361, + 0.014409056, + -0.014503675, + -0.015463377, + -0.006481372, + -0.019045366, + -0.018612824, + -0.036847174, + 0.026722988, + -0.025628116, + 0.020613331, + -0.0030058292, + 0.0028571428, + 0.0086643575, + -0.012604545, + 0.006025175, + -0.005014784, + -0.0082926415, + 0.010745966, + -0.012719439, + 0.02631748, + 0.005427051, + -0.001880544, + 0.003448509, + 0.018139731, + 0.015260624, + -0.010712174, + 0.015449861, + -0.0066030244, + -0.025925487, + -0.0037272957, + 0.015882403, + 0.023289684, + 0.00018469628, + -0.013483146, + -0.021708203, + 0.010299907, + 0.019139985, + -0.033062432, + -0.013800794, + 0.04790403, + 0.0032085832, + -0.019450875, + -0.014300921, + -0.1757202, + 0.015030836, + 0.024722481, + -0.026966292, + 0.025925487, + 0.028764045, + 0.00441328, + -0.017112443, + -0.0037779843, + 0.008394019, + 0.03452226, + 0.017896427, + -0.01695024, + -0.008914421, + -0.0024448761, + -0.0035448172, + -0.000100849036, + 0.017017825, + 0.017044859, + 0.0065185437, + 0.025803836, + -0.015706683, + 0.008218299, + -0.0038962576, + -0.02635803, + 0.03262989, + -0.010293148, + 0.0052378136, + 0.0043456955, + -0.0033217876, + -0.0095362, + 0.0011050097, + 0.013767002, + 0.02887218, + 0.01673397, + 0.019748246, + -0.00251584, + -0.011861114, + -0.014354989, + 0.018139731, + -0.009022556, + 0.0003429923, + 0.009860607, + -0.0033302356, + -0.011793529, + 0.018639859, + 0.0145577425, + -0.0044605895, + 0.0056061503, + -0.009637577, + 0.03284616, + -0.025668666, + 0.016666384, + 0.01854524, + 0.016166259, + 0.018626342, + 0.023168033, + 0.004582242, + 0.005143195, + -0.019329222, + -0.019045366, + 0.0078601, + 0.0034603362, + -0.005345949, + -0.017342232, + -0.02715553, + -0.009326687, + 0.021532483, + -0.016490664, + 0.008164231, + 0.0027354904, + -0.008860353, + 0.014354989, + -0.028115232, + 0.022830108, + -0.008975247, + 0.0056230463, + 0.02914252, + 0.012158486, + -0.0022133987, + -0.029061418, + 0.03395455, + -0.014449608, + -0.009117175, + 0.009428064, + 0.01337501, + 0.012753231, + 0.004132804, + -0.035468448, + -0.016544733, + 0.022329982, + -0.019194052, + 0.014530709, + -0.02697981, + -0.0038388106, + 0.01068514, + -0.017909944, + 0.03235955, + -0.014909183, + -0.0005427896, + -0.0040314267, + -0.015963504, + -0.021789305, + 0.020937737, + 0.010806792, + 0.016409563, + 0.0035617133, + 0.019937484, + 0.018247867, + -0.008576497, + -0.0068497085, + 0.0029281068, + 0.009651094, + 0.008319676, + -0.023843879, + 0.015612064, + 0.02573625, + -0.009373996, + 0.016842104, + -0.0056940103, + 0.032305483, + -0.0004671792, + 0.006927431, + 0.011185266, + -0.0074410746, + -0.028358538, + -0.07585706, + 0.0118678715, + -0.0029855538, + 0.008542705, + -0.010941962, + 0.04387598, + 0.016517699, + 0.03711751, + -0.0091239335, + 0.022897694, + -0.0053628455, + -0.009245586, + 0.00033665626, + -0.0074681086, + 0.03290023, + -0.010408043, + -0.0016921518, + -0.007346456, + -0.0029179691, + 0.022681423, + -0.0060217963, + -0.027033877, + -0.0016262566, + 0.0027321111, + -0.018396553, + 0.010421559, + -0.023735743, + 0.02962913, + 0.023127481, + 0.011665118, + -0.0046329307, + -0.007846583, + 0.020288924, + -0.025817353, + -0.039820902, + 0.0140981665, + -0.024830615, + 0.0025682184, + 0.026898708, + -0.029926501, + -0.0070220493, + 0.00010385866, + 0.00242798, + -0.007968235, + -0.015774267, + -0.005558841, + -0.014125201, + 0.01527414, + 0.0140981665, + -0.009009039, + -0.016679902, + -0.012104418, + 0.014882149, + -0.021600068, + 0.028493706, + 0.0030210358, + 0.010299907, + 0.016436597, + -0.046768606, + 0.002816592, + 0.00927262, + 0.012597786, + -0.015747232, + 0.013523697, + 0.031115992, + 0.0241007, + -0.022492185, + -0.029791333, + 0.023262652, + -0.008880628, + 0.00037087098, + 0.016341979, + -0.006106277, + -0.0062346878, + -0.01757202, + -0.021072907, + -0.016896173, + -0.011671877, + 0.016382528, + -0.018004563, + 0.0012942469, + -0.034900736, + 0.005568979, + 0.0059001436, + -0.0054676016, + 0.026939258, + 0.015368759, + -0.008238574, + 0.015517445, + -0.016666384, + -0.003585368, + 0.009907916, + 0.022478668, + -0.030413112, + -0.022140745, + 0.0314404, + 0.019613078, + 0.00095463375, + 0.010036327, + 0.0097795045, + -0.005041818, + -0.027520487, + -0.095267385, + 0.01872096, + 0.012530202, + -0.0006243136, + 0.0061434484, + -0.017544987, + 0.04038861, + -0.008556222, + 0.0122733805, + -0.011300161, + -0.057906564, + 0.006538819, + -0.013652108, + -0.014273887, + -0.024654895, + -0.027953029, + 0.03903692, + 0.012003041, + 0.006089381, + 0.0076573454, + 0.016869139, + 0.011009546, + 0.007312664, + -0.0008621272, + -0.026777055, + 0.010225564, + -0.0082994, + 0.024560276, + -0.009549717, + 0.0006733125, + -0.009029315, + -0.046173863, + 0.017680155, + 0.026303962, + -0.007332939, + -0.019491425, + -0.006873363, + 0.013449354, + 0.010779758, + 0.03682014, + -0.04509251, + 0.012111177, + 0.022248881, + -0.0052209175, + -0.004122666, + -0.01099603, + 0.019018332, + 0.008116921, + 0.026020106, + 0.009211794, + 0.0027963165, + 0.02406015, + 0.0051905042, + -0.0050350595, + -0.0035110246, + -0.03773929, + 0.023614092, + -0.009063107, + -0.004686998, + 0.007988511, + 0.014030582, + 0.004247698, + 0.01143533, + 0.012016558, + 0.025155023, + -0.011225818, + -0.014814565, + 0.0043152827, + 0.020545747, + -0.016815072, + -0.018856129, + 0.01218552, + -0.003818535, + 0.0134425955, + 0.009029315, + -0.0029940018, + 0.010766242, + -0.0063495818, + -0.028115232, + 0.021478415, + -0.00014330067, + -0.0018129593, + -0.031494465, + 0.01823435, + 0.026858157, + -0.012908677, + -0.024019599, + -0.02962913, + 0.000034927558, + 0.02269494, + -0.015220073, + 0.0045011407, + 0.010543212, + 0.010455352, + -0.005058714, + 0.013429078, + -0.010786517, + -0.019085918, + 0.03184591, + 0.02485765, + 0.0052918815, + -0.001196249, + -0.005663597, + -0.03208921, + -0.009279378, + 0.014463124, + -0.033630144, + -0.018707443, + 0.026479682, + 0.015787784, + 0.009259103, + 0.020153755, + 0.00041374503, + 0.019951, + 0.0064205457, + 0.010103911, + -0.007576244, + -0.03249472, + -0.02357354, + 0.018612824, + 0.0134425955, + 0.024438625, + 0.0031207232, + -0.014706429, + 0.0024178424, + -0.011678635, + 0.014368505, + -0.024006082, + 0.006450959, + -0.013949481, + 0.004071978, + 0.010097153, + -0.000086487285, + 0.0026374925, + -0.0042443187, + -0.0023519474, + 0.0017293233, + 0.010441835, + -0.024127735, + 0.034414124, + 0.005200642, + 0.014030582, + 0.0091239335, + -0.01509842, + 0.0265743, + -0.0047782375, + 0.008535947, + 0.004997888, + -0.04025344, + -0.0056433217, + -0.0014277266, + 0.0011117682, + -0.02843964, + -0.028277434, + -0.0074816253, + -0.011266368, + 0.019356256, + -0.005288502, + -0.013050604, + 0.038712513, + -0.00058840925, + 0.008319676, + 0.021424348, + -0.02339782, + 0.0021069527, + 0.020640366, + 0.005751457, + 0.008657599, + -0.038712513, + 0.00944834, + 0.018802062, + -0.018666891, + -0.013821069, + -0.008867112, + -0.0101512205, + -0.016652867, + -0.004247698, + -0.0066030244, + 0.01319929, + -0.009772747, + 0.020451128, + -0.024654895, + -0.0011007857, + 0.039793868, + -0.0051330575, + -0.0133006675, + 0.010570246, + -0.022586804 + ] + }, + { + "object": "embedding", + "index": 4, + "embedding": [ + 0.019221356, + 0.0036138783, + -0.007965014, + -0.0067472225, + -0.024066191, + 0.013718256, + -0.00505548, + -0.01043351, + 0.0065530343, + -0.04420912, + 0.015508738, + 0.0044893716, + 0.012171331, + -0.031412434, + -0.014574001, + -0.018997546, + 0.02109083, + -0.020788029, + -0.0024273545, + -0.024145182, + 0.0010812012, + -0.012987581, + -0.014258034, + -0.014073719, + -0.020603715, + 0.013757751, + 0.0028387704, + -0.028753042, + 0.009880567, + -0.0032534779, + 0.02904268, + -0.0067735533, + -0.009307876, + -0.030490864, + -0.008037423, + -0.019642645, + -0.035230376, + -0.00874835, + -0.020630045, + -0.028489737, + 0.009742331, + -0.017575692, + -0.0019023876, + 0.0013996373, + -0.007563472, + 0.008491627, + -0.006510247, + -0.010644155, + -0.004374175, + 0.00862328, + 0.011348499, + 0.012809849, + -0.034809086, + -0.009900315, + 0.0029523212, + 0.010736313, + -0.019274017, + -0.006329224, + -0.0033538633, + -0.011809285, + 0.0025985036, + 0.0050521884, + -0.032544654, + 0.013810413, + -0.009413199, + -0.0071750954, + -0.029569292, + -0.005197007, + -0.020235086, + -0.004663812, + 0.026054153, + 0.030543525, + -0.0048382524, + -0.030227557, + 0.010525667, + 0.0027087631, + -0.01702275, + 0.005789446, + -0.0062436494, + -0.0027169914, + 0.029937921, + -0.025567036, + 0.018233957, + 0.002512929, + 0.035572674, + 0.016956922, + -0.011282673, + 0.012842762, + -0.0035348863, + -0.015324424, + 0.018984381, + 0.012934919, + 0.0049139527, + 0.015495572, + -0.023486918, + -0.030675178, + 0.0009191034, + 0.04434077, + -0.0020291037, + -0.036020294, + -0.006832797, + 0.012625535, + 0.0066682305, + -0.0084258, + -0.008807594, + 0.02128831, + 0.01811547, + 0.0011494963, + 0.015008456, + -0.0037027441, + 0.0133759575, + 0.031149128, + -0.0011708899, + -0.04426178, + -0.018444603, + -0.019432, + 0.03243933, + -0.009465859, + -0.014429183, + -0.026804576, + 0.016127508, + 0.027673487, + 0.01209234, + -0.0064641684, + 0.023895042, + -0.005187133, + -0.014442348, + -0.0035381778, + 0.021696435, + -0.01092721, + 0.028805703, + -0.000857391, + 0.0066254437, + -0.0017197189, + -0.021577947, + 0.018273454, + -0.017615188, + -0.0025902751, + -0.0048119216, + -0.013744586, + 0.014416017, + 0.015087448, + -0.013836743, + 0.025145747, + -0.0012210828, + 0.018839562, + 0.019589985, + -0.00042129, + 0.01957682, + -0.0073989057, + 0.013468115, + -0.030464534, + 0.009860819, + 0.005628171, + 0.0079321, + -0.00002769344, + 0.021617442, + 0.028042115, + -0.002312158, + 0.014284364, + -0.004792174, + 0.003060935, + 0.0158642, + -0.024158347, + -0.0265676, + 0.009274962, + 0.018984381, + 0.00787944, + 0.0052200463, + -0.0061909882, + -0.013468115, + 0.01179612, + -0.025619699, + 0.014968961, + -0.0010984808, + 0.020156093, + -0.00038343974, + 0.0022232921, + -0.016180169, + -0.019050207, + -0.0072475043, + -0.018997546, + 0.01516644, + 0.020932848, + 0.0061547835, + -0.028621389, + 0.0019451749, + 0.009090648, + 0.008978743, + -0.014218537, + 0.013784082, + 0.04183936, + 0.014942629, + 0.014600332, + -0.6736427, + -0.040312186, + 0.000431164, + -0.013277218, + 0.028753042, + 0.015126944, + 0.022446858, + -0.0015321132, + -0.009228884, + 0.01224374, + -0.016193334, + 0.014310694, + 0.0010392369, + -0.0006257637, + 0.0054274, + -0.024053026, + 0.0031086593, + -0.0096830875, + 0.016469806, + -0.0012836179, + -0.0061909882, + 0.013290383, + -0.017430874, + 0.008307312, + 0.026620261, + -0.024105687, + 0.002277599, + -0.02446115, + -0.01273744, + 0.04162872, + -0.012941502, + 0.048658993, + 0.03451945, + -0.004943575, + 0.042787265, + -0.014863637, + -0.0048777484, + 0.03754747, + 0.022762826, + 0.05397778, + -0.005786155, + -0.012691361, + 0.006177823, + -0.009005073, + -0.0030197934, + -0.01288884, + 0.032228686, + -0.032886952, + 0.014679323, + -0.015535069, + 0.0120660085, + -0.02446115, + -0.0158642, + 0.010861383, + -0.0043215137, + 0.0062173186, + 0.019945448, + -0.011223429, + -0.0026445822, + 0.0011503191, + 0.0012432992, + 0.014955794, + -0.002351654, + -0.0156008955, + -0.0024849528, + 0.0016341445, + -0.038548034, + -0.01729922, + 0.0031432183, + -0.015679887, + 0.016588293, + 0.028147439, + -0.007517393, + 0.0014317278, + 0.011032532, + 0.027726147, + 0.009623843, + -0.008320478, + -0.008537705, + -0.02218355, + -0.003992381, + 0.018181296, + -0.0136919245, + -0.017259724, + 0.00014378989, + -0.038416382, + -0.032965943, + 0.025619699, + 0.009900315, + -0.0071750954, + 0.018971216, + 0.014613497, + 0.0022035441, + 0.022565346, + -0.0030428327, + 0.0129809985, + -0.003179423, + 0.004854709, + 0.0069578676, + -0.03157042, + -0.010229448, + -0.0031942339, + -0.005940847, + -0.011453822, + 0.0127440225, + -0.014613497, + -0.030490864, + -0.0042392304, + 0.038442712, + -0.014889969, + 0.028963687, + -0.010604659, + -0.023855546, + -0.0016423727, + 0.013639264, + -0.02047206, + 0.02572502, + -0.010630989, + 0.03451945, + -0.019668976, + 0.013277218, + 0.0069578676, + 0.0246323, + 0.0053319517, + -0.0029572584, + 0.014982126, + 0.0022232921, + -0.00054841756, + -0.0065267035, + -0.012987581, + 0.00051015586, + 0.018233957, + -0.016733112, + -0.012711109, + 0.012474134, + -0.0064115073, + 0.0027350937, + 0.0014638181, + 0.023565909, + -0.013106069, + -0.048237704, + -0.020985508, + -0.006230484, + 0.0039594676, + -0.0100451335, + -0.021920245, + -0.0016917427, + 0.0023993782, + -0.010703399, + 0.008438965, + -0.004344553, + -0.0032370212, + -0.013560272, + 0.013955231, + -0.016680451, + -0.0035546343, + 0.011677632, + -0.009847654, + -0.020564217, + 0.00579932, + 0.009873984, + 0.014468678, + -0.030701509, + -0.00308562, + 0.003531595, + -0.010005637, + 0.005644628, + 0.003531595, + 0.02215722, + -0.015653556, + -0.023631737, + -0.027647156, + -0.017154401, + 0.02954296, + -0.0027844636, + -0.008735185, + 0.005206881, + -0.0034460204, + 0.016746277, + -0.0069578676, + -0.0033193044, + -0.0032567692, + -0.03615195, + 0.009873984, + 0.027594496, + -0.012869093, + 0.013836743, + 0.014982126, + -0.004713182, + 0.0073594097, + -0.017694179, + 0.0340455, + 0.01095354, + 0.0028683925, + 0.010933792, + -0.013744586, + 0.017351883, + 0.011901442, + -0.0020373322, + 0.01980063, + 0.022065064, + -0.0078070303, + 0.006520121, + -0.033360902, + 0.026027823, + -0.022012403, + 0.0010589848, + -0.008195407, + 0.009821323, + -0.009834488, + 0.0116249705, + -0.012632118, + -0.01452134, + -0.0033176588, + -0.005197007, + 0.02091968, + 0.0053286604, + 0.009992472, + 0.0051015588, + 0.009511938, + 0.01918186, + -0.029569292, + 0.018892223, + -0.022828652, + -0.004433419, + -0.0027449676, + 0.014402851, + 0.029727275, + 0.0025688815, + 0.0005064531, + -0.036494248, + -0.01578521, + -0.006990781, + -0.002958904, + 0.0004784768, + -0.011434074, + 0.0011700671, + -0.023500083, + 0.01727289, + 0.004453167, + 0.02322361, + -0.0053681564, + 0.019458331, + -0.0119936, + 0.009103813, + -0.01107861, + 0.035651665, + -0.00025980923, + -0.017825833, + 0.028674051, + -0.01937934, + -0.018892223, + -0.008188824, + 0.008616697, + 0.0037850274, + -0.01105228, + 0.004301766, + 0.0143238595, + -0.0011338625, + 0.036072955, + 0.016311822, + 0.0018233957, + 0.0014885032, + -0.0079781795, + 0.0073396615, + -0.007293583, + 0.017786337, + -0.009228884, + 0.003521721, + -0.005177259, + -0.012829597, + 0.0031958795, + -0.007984762, + -0.0055590533, + 0.0055623446, + -0.009228884, + -0.01606168, + -0.0040285857, + 0.013389123, + -0.000023720704, + 0.0019534032, + -0.04347186, + 0.012039678, + -0.009097231, + -0.008702272, + -0.014495009, + -0.022736495, + -0.0049304096, + -0.018523594, + 0.030569855, + 0.010170204, + 0.009841071, + -0.007451567, + -0.0072540874, + -0.012072591, + -0.010163621, + 0.018826397, + -0.028937357, + -0.019023877, + 0.0033867767, + 0.008346808, + -0.007945266, + 0.015324424, + -0.02044573, + 0.03625727, + -0.009037987, + -0.0035447604, + -0.018944884, + -0.0015938256, + -0.003943011, + 0.01030844, + -0.0061514922, + -0.01338254, + 0.016509302, + -0.004170113, + -0.0028058572, + -0.025145747, + 0.0059210993, + 0.013310131, + 0.0017081993, + -0.0181418, + -0.01606168, + -0.023855546, + -0.021275144, + 0.075937524, + -0.008853673, + 0.018523594, + 0.011822451, + 0.014797811, + 0.0104400925, + -0.0120660085, + -0.0158642, + -0.003531595, + -0.011124689, + 0.0035941303, + 0.0005315495, + 0.0029572584, + 0.00066978525, + 0.0017213646, + -0.0223547, + -0.0074054883, + -0.016272327, + 0.007234339, + -0.015113778, + 0.013547107, + 0.006753805, + -0.008629862, + 0.038100414, + 0.008234903, + 0.017430874, + 0.008511375, + 0.035704326, + 0.02577768, + -0.0127769355, + -0.0035447604, + 0.03675755, + -0.020063937, + 0.008991908, + -0.0012013348, + -0.0007475429, + 0.032623645, + 0.013955231, + -0.018813232, + 0.0032386668, + 0.005424109, + 0.017983817, + 0.02039307, + -0.009314459, + 0.014863637, + -0.014863637, + 0.00021023359, + 0.010512502, + -0.0061416184, + -0.000029621953, + 0.036915537, + 0.022762826, + -0.026909899, + -0.0143238595, + -0.016088013, + 0.034782756, + 0.009360537, + -0.0057137455, + 0.01105228, + 0.0040252944, + -0.0022446858, + -0.02292081, + 0.0073659923, + -0.0129020065, + -0.028884696, + -0.033913843, + -0.0063983416, + -0.019708473, + -0.026778245, + 0.000012953176, + 0.0053615733, + -0.017615188, + -0.02215722, + 0.009933229, + 0.022473188, + -0.0034558945, + 0.020287747, + -0.032807957, + -0.0036731223, + 0.021893915, + 0.009426364, + -0.03117546, + -0.011894859, + -0.0052233376, + -0.0068525453, + 0.018918553, + 0.025409052, + -0.02091968, + -0.018497264, + -0.0029128254, + 0.0265676, + 0.0075766374, + 0.008169076, + -0.0016563609, + -0.023355264, + 0.0060428786, + 0.018273454, + 0.026449112, + -0.013422036, + -0.016733112, + 0.025330061, + 0.00009375143, + 0.007392323, + -0.0031168878, + 0.01682527, + -0.0012646929, + 0.015614061, + 0.0040779556, + -0.008307312, + 0.00032584148, + 0.04834303, + -0.021670105, + 0.010920627, + -0.00078292465, + -0.022565346, + 0.020748531, + 0.016193334, + 0.03375586, + -0.0074384017, + -0.010473006, + 0.003551343, + -0.022710163, + 0.025119416, + 0.023210445, + 0.006971033, + -0.03154409, + 0.008195407, + -0.009827905, + -0.007155347, + -0.016640956, + -0.019524159, + 0.015311258, + -0.00916964, + -0.020458896, + -0.046947505, + -0.0056117144, + -0.02342109, + 0.0168516, + -0.01273744, + -0.02064321, + -0.0018579547, + -0.00014049857, + 0.004779008, + 0.006088957, + -0.010301857, + -0.016719947, + 0.0117500415, + 0.0037586966, + -0.00025919208, + 0.0028058572, + 0.014639827, + 0.020063937, + -0.0021130326, + 0.008906334, + -0.0034756425, + -0.035388358, + -0.020880185, + -0.011256342, + 0.009577765, + 0.00864961, + 0.020735366, + 0.02544855, + 0.018049642, + -0.010986453, + -0.01244122, + 0.0024635592, + -0.021235649, + -0.00031411613, + -0.016311822, + 0.00914331, + 0.01625916, + 0.027857801, + -0.022762826, + -0.007997927, + -0.008366556, + 0.024987763, + -0.011190516, + -0.014481843, + -0.011651302, + -0.03907465, + -0.0026248342, + -0.0064049247, + 0.0016004083, + -0.0037652794, + 0.006289728, + -0.002081765, + 0.022091394, + -0.014402851, + -0.009742331, + -0.013448367, + 0.019142365, + 0.003380194, + 0.019484662, + 0.008491627, + -0.0032633517, + -0.010038551, + -0.023763388, + 0.004351136, + -0.0047987564, + 0.0002133192, + 0.008109832, + -0.021051334, + 0.00520359, + -0.0019484663, + 0.0052990383, + 0.03446679, + 0.008188824, + -0.013797248, + 0.008873421, + -0.012566291, + -0.031149128, + -0.017088575, + -0.015324424, + -0.025659194, + 0.007813613, + 0.03117546, + -0.0018694743, + 0.040233195, + -0.023263106, + -0.016088013, + 0.014942629, + -0.008208572, + 0.022460023, + 0.006911789, + 0.04581529, + 0.010604659, + -0.0048876223, + -0.021340972, + -0.011987017, + -0.015442912, + -0.0077280384, + -0.006148201, + 0.0102097, + 0.0019369465, + -0.03615195, + 0.008465296, + 0.02485611, + -0.010288692, + -0.008807594, + 0.024553308, + 0.0030494155, + -0.0042820177, + -0.018707909, + -0.016561963, + -0.0036764136, + 0.022446858, + -0.02668609, + -0.01296125, + -0.0052002985, + -0.0128230145, + -0.008445548, + 0.010492754, + -0.025066756, + 0.0035645084, + 0.023236776, + -0.02698889, + 0.008866838, + -0.019142365, + -0.014192207, + 0.0008812531, + -0.001876057, + 0.029148001, + 0.0027729438, + 0.00617124, + -0.013428618, + 0.014810977, + -0.002777881, + 0.0064246724, + -0.020630045, + 0.025830343, + -0.012276654, + -0.020287747, + -0.006898624, + -0.008175659, + 0.009966142, + 0.0054043606, + -0.0045157024, + -0.006421381, + -0.021788592, + -0.0028700382, + 0.036915537, + 0.0102097, + -0.018220792, + -0.01679894, + -0.005325369, + -0.019366175, + -0.010946957, + -0.0041371994, + -0.019313512, + -0.023486918, + -0.018457768, + -0.010881131, + 0.00308562, + 0.014508175, + -0.0045025367, + -0.005980343, + 0.02109083, + 0.011493318, + -0.027568163, + 0.018879058, + 0.02059055, + 0.023881877, + -0.004897496, + 0.020261416, + -0.005851981, + -0.01477148, + 0.011605223, + 0.0025639446, + -0.00039681073, + -0.027647156, + 0.020090267, + 0.019247686, + 0.0168516, + 0.023355264, + 0.029305985, + -0.026370121, + 0.0015855973, + -0.031149128, + -0.02213089, + 0.00021599341, + 0.010525667, + 0.004867874, + 0.02448748, + -0.030569855, + 0.014824142, + 0.028331753, + -0.020340407, + 0.007675377, + -0.027594496, + -0.01283618, + 0.007102686, + -0.0035184298, + -0.007971597, + -0.023131454, + -0.016469806, + 0.005516266, + -0.0032057536, + 0.004963323, + 0.00080267264, + 0.0005689883, + 0.0024668504, + 0.03035921, + -0.0150479525, + 0.0008861901, + -0.010551997, + -0.019129198, + -0.01117735, + 0.0018612461, + -0.03199171, + -0.023802884, + -0.01169738, + 0.01679894, + 0.008544288, + -0.028911026, + -0.04170771, + -0.00034332665, + -0.022249378, + -0.0010556935, + -0.021512121, + 0.0074054883, + 0.02213089, + -0.008735185, + 0.010940375, + 0.018576255, + 0.006230484, + 0.0126189515, + -0.015350754, + -0.024303166, + 0.007971597, + -0.016575128, + 0.04299791, + 0.000023245004, + -0.022960305, + -0.022051899, + 0.030464534, + 0.013402288, + 0.0052792905, + 0.0038278145, + -0.03199171, + 0.006760388, + -0.010328188, + -0.0028338335, + -0.005578801, + 0.0009520167, + 0.006760388, + -0.038916662, + 0.008261234, + 0.0013222911, + -0.012803267, + -0.005697289, + 0.009873984, + 0.0014193852, + 0.012079174, + 0.025790848, + -0.016548797, + -0.026383286, + 0.0045157024, + -0.019221356, + 0.005489935, + 0.0000777062, + -0.0070961034, + 0.009617261, + -0.01276377, + -0.018036477, + -0.023078792, + 0.014731985, + -0.025685525, + -0.013797248, + 0.011302421, + 0.0033571546, + -0.014258034, + -0.01918186, + 0.003913389, + -0.022723328, + 0.008307312, + 0.0013247596, + -0.03401917, + -0.0030905572, + 0.017417708, + 0.010802139, + -0.013520776, + -0.02342109, + 0.004973197, + 0.0084521305, + 0.011565727, + -0.007168513, + 0.019919118, + -0.024842944, + 0.0022578512, + -0.008656193, + -0.017773172, + -0.046921175, + -0.016351318, + 0.0039561763, + 0.00021002788, + 0.0056413366, + 0.23507982, + 0.0023549453, + -0.0056512104, + 0.03420348, + 0.009439529, + 0.035309367, + 0.012507047, + -0.006059335, + -0.011256342, + 0.01982696, + -0.0229998, + -0.0013823578, + -0.003281454, + -0.0046572294, + 0.012467551, + -0.024948267, + -0.023039296, + -0.022644337, + -0.03243933, + -0.013560272, + 0.017338717, + -0.005226629, + 0.001489326, + -0.010604659, + -0.003130053, + 0.020801194, + -0.026054153, + -0.0023944413, + 0.023328934, + 0.028805703, + 0.0076687946, + 0.011940938, + -0.0018447894, + 0.0073462445, + 0.009854237, + -0.002988526, + 0.02361857, + -0.0013510901, + 0.00052249833, + 0.005358282, + -0.023763388, + -0.0008664421, + 0.011835616, + -0.006352263, + 0.0051838416, + 0.0012745669, + 0.008801011, + 0.0067373486, + -0.0062864367, + 0.024290001, + -0.017365048, + 0.005888186, + 0.03249199, + 0.027752478, + 0.00022319319, + -0.00453545, + 0.029648283, + -0.019432, + -0.0073594097, + 0.00091334357, + -0.014705654, + 0.030885823, + -0.021841254, + 0.017259724, + -0.021393633, + -0.0061284527, + -0.030069573, + -0.000862328, + -0.0015066054, + -0.025935665, + 0.007997927, + -0.030517194, + -0.02109083, + -0.005907934, + -0.032281347, + -0.023434255, + 0.017509865, + 0.010802139, + 0.012842762, + 0.02909534, + -0.015074283, + 0.006421381, + -0.00007791191, + 0.009709418, + -0.00083147176, + -0.019537324, + 0.007675377, + 0.0021821505, + 0.0040680817, + -0.0112760905, + 0.0030773918, + -0.02059055, + -0.0009799929, + -0.030464534, + -0.0019846708, + -0.0014531213, + -0.011190516, + 0.014705654, + 0.0034756425, + 0.0046901423, + -0.010380849, + -0.001915553, + 0.020735366, + 0.010894296, + -0.0070171114, + -0.0100451335, + 0.026580766, + -0.00047971107, + -0.0022216465, + -0.022288874, + -0.009505356, + -0.031860057, + 0.007622716, + -0.010644155, + -0.0027416763, + 0.0155219035, + -0.010881131, + -0.014982126, + 0.009702835, + -0.01053225, + 0.030464534, + -0.02693623, + -0.015693052, + -0.00041018176, + -0.017549362, + -0.013250887, + 0.017259724, + -0.019695308, + -0.0037652794, + -0.042050008, + 0.017391378, + 0.010466424, + 0.022499518, + -0.009340789, + 0.013244304, + 0.016509302, + 0.000004605931, + -0.011842199, + -0.0069183717, + 0.00055623444, + 0.009149892, + -0.00929471, + 0.01937934, + 0.016298657, + -0.011769789, + -0.013211391, + 0.01603535, + 0.0007997927, + -0.013171895, + 0.020998674, + -0.0025392596, + -0.035520013, + -0.015943194, + -0.009538269, + 0.039522268, + -0.0030823287, + -0.023328934, + 0.00369287, + 0.014810977, + 0.013626099, + -0.03209703, + -0.0029967541, + 0.016601458, + -0.032176025, + -0.03828473, + -0.008583784, + -0.17030647, + -0.007965014, + 0.009380285, + -0.031149128, + 0.013955231, + 0.0028042116, + 0.005878312, + 0.0029556127, + -0.010380849, + -0.0013659012, + 0.032413, + 0.017207064, + -0.010973288, + -0.035441022, + 0.0050719366, + -0.020169258, + -0.019432, + 0.006599113, + 0.024803448, + 0.0019747969, + 0.021577947, + -0.011124689, + 0.0027153457, + -0.0005368979, + -0.0026561017, + 0.03157042, + -0.009755497, + -0.008017675, + -0.0067735533, + -0.015666721, + -0.017259724, + 0.0035381778, + 0.015153275, + 0.024092522, + -0.004301766, + -0.0013823578, + -0.024579639, + -0.00919597, + -0.004522285, + 0.013560272, + -0.010848218, + 0.00803084, + 0.0009824614, + -0.01157231, + -0.0059869257, + 0.010802139, + 0.011282673, + -0.008866838, + -0.006056044, + -0.006572782, + 0.017970651, + -0.011842199, + 0.0012564645, + 0.019010711, + 0.022446858, + 0.00192049, + 0.0036237522, + 0.018102305, + 0.0132969655, + 0.0091301445, + -0.01876057, + -0.009505356, + 0.013981562, + -0.0026890151, + -0.020182423, + -0.011756624, + 0.008366556, + 0.022315204, + -0.02317095, + 0.01980063, + 0.0051476373, + 0.003712618, + -0.01747037, + -0.009452694, + 0.01960315, + -0.00079362147, + -0.009176223, + 0.03580965, + 0.0105980765, + -0.013211391, + -0.020774864, + 0.044525087, + -0.021275144, + 0.005977052, + 0.0022051898, + 0.026093649, + 0.0030066282, + -0.0076095504, + -0.01606168, + -0.021591112, + 0.01231615, + -0.008419218, + -0.0066089868, + -0.006984198, + 0.0009939811, + 0.0013988145, + -0.021670105, + 0.03831106, + -0.0012054489, + -0.000015813803, + -0.00014574412, + -0.014429183, + -0.007221174, + 0.022065064, + 0.01253996, + 0.018800067, + 0.016772607, + 0.016970087, + 0.0046802685, + 0.00016559495, + -0.027410181, + -0.009643591, + 0.011223429, + 0.006500373, + -0.012230575, + 0.0136919245, + 0.019037042, + -0.015298093, + 0.021591112, + 0.006483916, + 0.02128831, + -0.0132969655, + 0.013125816, + -0.0001234248, + -0.014363356, + -0.013448367, + -0.058822617, + -0.009472442, + 0.009419781, + 0.01727289, + -0.010782391, + 0.04839569, + 0.02091968, + 0.028358083, + -0.0082151545, + -0.003041187, + 0.0043708836, + -0.029990582, + 0.0022627881, + -0.00020848507, + 0.045393996, + 0.0010836698, + 0.011710545, + -0.00028531702, + 0.004094412, + 0.01957682, + -0.009841071, + -0.0037455314, + -0.014350191, + -0.013705091, + -0.0076292986, + 0.0022315204, + -0.0174967, + 0.008564035, + 0.015772045, + 0.01851043, + 0.02698889, + -0.0068130493, + 0.0005599372, + -0.013033659, + -0.004252396, + 0.005878312, + -0.022367865, + 0.005684124, + 0.0379161, + -0.029964251, + -0.0014539441, + 0.0057664067, + 0.0010647447, + -0.013705091, + -0.016601458, + -0.0008664421, + -0.021472625, + 0.019010711, + 0.03754747, + -0.020656375, + -0.019682143, + -0.003771862, + 0.00010809956, + -0.0084258, + 0.028647719, + -0.0015600895, + 0.020208754, + 0.00874835, + -0.025040423, + 0.007602968, + 0.01918186, + 0.006780136, + -0.0116710495, + 0.003972633, + 0.021419963, + 0.0015806603, + -0.015930029, + -0.026383286, + 0.020300912, + -0.0024997636, + -0.01305999, + -0.00023512426, + -0.010492754, + 0.0063983416, + -0.0106770685, + -0.034756426, + -0.020774864, + -0.006158075, + -0.0008236549, + -0.021999236, + 0.010670486, + -0.041102104, + -0.004637481, + 0.0011009492, + 0.0013025431, + 0.020551052, + 0.012263489, + -0.013277218, + 0.016088013, + -0.01288884, + 0.020169258, + 0.0053944867, + 0.03425614, + -0.03167574, + -0.009222302, + 0.029305985, + 0.005486644, + 0.02213089, + 0.0052134637, + 0.02086702, + -0.01519277, + -0.031781062, + -0.09600146, + 0.007221174, + 0.016522467, + -0.0017065536, + 0.007129017, + -0.017378213, + 0.020959178, + -0.0049995272, + 0.010512502, + -0.02059055, + -0.037758116, + 0.009261797, + -0.004005546, + -0.01980063, + -0.03151776, + -0.0017888368, + 0.028121108, + 0.01600902, + 0.017773172, + 0.02294714, + 0.015574564, + 0.0032732259, + 0.008392886, + -0.00049411063, + -0.03633626, + 0.011565727, + 0.0028535814, + 0.03170207, + -0.01224374, + 0.013053407, + 0.0015288219, + -0.026778245, + 0.015877366, + 0.03154409, + -0.014982126, + -0.010196535, + 0.004933701, + 0.014587166, + 0.018721074, + 0.03580965, + -0.034861747, + 0.0108350525, + 0.02002444, + -0.0059968, + -0.015679887, + 0.005233212, + 0.015574564, + 0.018233957, + 0.035362028, + -0.007793865, + 0.013402288, + 0.030622516, + -0.004170113, + -0.006559617, + -0.0077280384, + -0.03654691, + 0.010762643, + -0.0021969615, + -0.0050686453, + -0.010453258, + 0.02361857, + 0.01045984, + 0.01732555, + 0.007352827, + 0.014982126, + -0.007352827, + -0.017694179, + 0.007155347, + 0.01876057, + -0.0053418255, + -0.03459844, + 0.006161366, + 0.014337026, + 0.02901635, + 0.019853292, + -0.013448367, + -0.01598269, + -0.0099200625, + -0.019432, + 0.019339845, + 0.0040483335, + -0.019168695, + -0.0340455, + 0.021314641, + 0.028963687, + -0.010315022, + -0.012553126, + -0.015205936, + -0.009235467, + 0.034756426, + -0.005726911, + -0.009933229, + 0.012164748, + -0.00612187, + 0.019932283, + 0.03246566, + 0.006589239, + -0.01789166, + 0.035888642, + -0.0072870003, + 0.0023138036, + 0.016167004, + 0.013112651, + -0.0021574656, + -0.02339476, + 0.013560272, + -0.014113215, + -0.0217096, + 0.00916964, + 0.0014917945, + 0.006602404, + 0.008346808, + 0.009064318, + 0.028121108, + 0.0064345463, + 0.0040252944, + -0.016127508, + -0.02954296, + -0.01603535, + -0.0060922485, + 0.013836743, + 0.013586602, + 0.013652429, + -0.005506392, + 0.014995291, + -0.00966334, + 0.008208572, + -0.030648848, + 0.007826778, + 0.001890868, + 0.0050324406, + 0.0070566074, + -0.000534018, + -0.007115851, + -0.019129198, + 0.0075108106, + 0.012052843, + 0.011677632, + -0.0062568146, + 0.03617828, + 0.018194461, + -0.00322221, + 0.0031168878, + -0.0024717874, + 0.019260852, + 0.0057400763, + 0.012204245, + -0.0030839744, + -0.032202356, + 0.027410181, + -0.0021969615, + 0.013270635, + -0.014402851, + -0.01224374, + -0.026409617, + -0.0015329361, + 0.016693616, + -0.0034163985, + 0.0076095504, + 0.025514375, + -0.006266689, + 0.02002444, + 0.0073594097, + -0.011164185, + -0.009926646, + 0.026554435, + 0.0021327806, + 0.009518521, + -0.0156008955, + 0.013547107, + 0.0011050634, + -0.0252774, + -0.024763953, + 0.009623843, + 0.00852454, + -0.0008680878, + 0.006342389, + 0.007945266, + 0.008616697, + -0.0037586966, + 0.020801194, + -0.016601458, + -0.014271199, + 0.019168695, + -0.01851043, + 0.004301766, + 0.0047822995, + -0.003248541 + ] + }, + { + "object": "embedding", + "index": 5, + "embedding": [ + 0.0021845475, + 0.008128393, + 0.0016116065, + -0.0032902234, + -0.03658782, + 0.004707499, + -0.017878445, + -0.0045868796, + 0.010058301, + -0.03318368, + -0.004885077, + 0.0063559613, + 0.019768145, + -0.014166054, + -0.02752798, + -0.01904443, + 0.02173826, + -0.025544465, + -0.0021460163, + -0.026670244, + -0.00603431, + 0.033022854, + -0.012115528, + -0.020331034, + 0.0038229583, + 0.005575287, + -0.002809422, + -0.015680496, + -0.0014516185, + -0.011733566, + 0.01049387, + 0.0016526504, + 0.009689742, + -0.021537228, + 0.0055250293, + -0.02439188, + -0.014233065, + -0.009863969, + -0.016993904, + -0.020331034, + 0.019392885, + -0.018722778, + -0.008249013, + -0.00634926, + -0.007458287, + 0.01150573, + 0.0060008047, + 0.005149769, + -0.011840784, + 0.013227904, + 0.023560949, + 0.014005228, + -0.017865043, + -0.0012363467, + -0.000084129795, + -0.009046439, + -0.023467133, + -0.013817598, + -0.01125109, + -0.0092072645, + 0.0038665151, + 0.005173223, + -0.018092878, + -0.0010579309, + -0.0025363537, + -0.009488709, + -0.006342559, + 0.008007774, + -0.03224553, + -0.011780474, + 0.010949542, + 0.021698052, + -0.008604169, + -0.0045734774, + 0.038732164, + 0.003682236, + -0.031655837, + -0.00010491357, + 0.011793876, + -0.00007125118, + 0.021255782, + -0.018856801, + 0.0066709113, + 0.015613484, + 0.0046203854, + 0.015626887, + -0.016136168, + 0.025785703, + -0.008222208, + -0.00311097, + 0.010916037, + 0.008966027, + -0.00591034, + 0.004627086, + -0.030127993, + -0.025343433, + 0.0064765806, + 0.018883605, + -0.0061549293, + -0.043128062, + -0.0096562365, + 0.02161764, + -0.011874289, + -0.018012466, + -0.030020777, + 0.014045435, + 0.010835624, + -0.01521142, + 0.0017339009, + 0.011137172, + 0.0020287477, + 0.03181666, + -0.006838438, + -0.039080616, + -0.032272335, + -0.018374324, + 0.014460901, + -0.011512431, + -0.019567113, + -0.026817666, + 0.017784629, + 0.017302154, + -0.00015025047, + 0.001991892, + 0.018709376, + -0.003588421, + -0.017597, + -0.0056523494, + 0.0057461644, + 0.002444214, + 0.020974336, + 0.02299806, + 0.017865043, + 0.0012505865, + -0.014809356, + 0.015546474, + -0.021322792, + 0.010574282, + -0.0115928445, + -0.012209343, + 0.021135163, + 0.017985662, + -0.013790794, + 0.0056422977, + 0.0020320984, + 0.017717618, + 0.027259937, + 0.02180527, + 0.018803192, + -0.0025631578, + 0.008456745, + -0.005022449, + 0.006278899, + 0.008470148, + 0.016417611, + 0.0046203854, + 0.0141124455, + 0.01740937, + 0.0044160024, + 0.0034778533, + 0.009783557, + -0.003551565, + 0.009763453, + 0.008510354, + 0.0048281183, + 0.013650072, + 0.022555789, + 0.018937213, + 0.017114524, + 0.00068392756, + -0.014702139, + 0.03004758, + -0.0020220468, + 0.02445889, + 0.017422773, + 0.010373251, + 0.013710381, + 0.00414796, + -0.023668166, + -0.0054144613, + -0.033290897, + -0.0002041731, + 0.007310863, + 0.007994372, + 0.0028931852, + -0.007310863, + 0.0182269, + 0.00855056, + 0.006406219, + -0.013026873, + 0.0058734845, + 0.038303293, + 0.03229914, + 0.025115596, + -0.6776118, + -0.042752802, + -0.007404678, + -0.0079005575, + 0.019218657, + 0.028224891, + 0.010225827, + 0.012276353, + 0.004741004, + -0.005776319, + -0.018977419, + 0.032593984, + 0.0061448775, + 0.0013418884, + 0.008872212, + -0.015801115, + -0.013274812, + -0.015787711, + 0.006881995, + 0.006272198, + -0.0101990225, + 0.024445489, + -0.0063593118, + 0.0055149775, + 0.02238156, + -0.030127993, + 0.013650072, + -0.013965022, + -0.013375328, + 0.016055755, + -0.030181602, + 0.036346585, + 0.0028747574, + -0.016953697, + 0.051705427, + -0.008148496, + -0.010708304, + 0.024043426, + 0.008899016, + 0.045808487, + 0.00094987615, + -0.028064065, + 0.023614557, + -0.018561954, + -0.024525901, + 0.007518596, + 0.020156806, + -0.01941969, + 0.010400055, + -0.013670175, + -0.0028077466, + -0.029216649, + -0.02708571, + -0.011425318, + 0.010507272, + -0.0069356035, + 0.0069356035, + -0.007257255, + -0.0017523288, + 0.003129398, + -0.005990753, + 0.020625882, + -0.039482683, + -0.012678417, + -0.0042216717, + -0.0014733969, + -0.04393219, + 0.0018210147, + 0.018025868, + 0.008188703, + -0.0077062263, + 0.007679422, + -0.009642834, + 0.008919119, + 0.038169272, + 0.022220735, + 0.01754339, + -0.026201168, + -0.016833078, + -0.011948001, + 0.010916037, + -0.003608524, + -0.013180997, + -0.0049755415, + 0.005129666, + -0.015305235, + -0.023172287, + 0.0044294046, + 0.009750051, + -0.022033105, + 0.017717618, + 0.009863969, + 0.012953161, + 0.018066075, + -0.016296992, + 0.01584132, + -0.019727938, + 0.0044160024, + 0.02218053, + -0.027032102, + -0.00004824244, + -0.013100584, + -0.0007304162, + -0.0108289225, + -0.012805738, + -0.0069222013, + -0.024793945, + 0.00204215, + 0.0119413, + -0.02439188, + 0.0043020844, + -0.012336663, + -0.02376198, + -0.0043858476, + 0.019821754, + -0.03211151, + 0.0099711865, + -0.0062185894, + 0.00798097, + -0.00011171934, + 0.0141124455, + -0.01011861, + 0.038624946, + -0.008537158, + -0.00072622806, + 0.030690882, + 0.01062119, + -0.003323729, + -0.009629432, + 0.0056221946, + -0.007217048, + 0.018883605, + 0.012497488, + -0.0067144684, + 0.0038162572, + -0.0101521155, + 0.0037123905, + -0.00008203571, + 0.01539905, + -0.041519806, + -0.0439858, + -0.0067647262, + 0.019513505, + -0.000016072088, + -0.0036286274, + -0.023426928, + -0.017020708, + 0.0007655968, + -0.011432019, + 0.037499167, + -0.0029266907, + -0.011170677, + -0.03280842, + 0.01998258, + 0.0015110904, + -0.013469143, + 0.0014717217, + -0.012939759, + -0.0008837031, + -0.012329962, + 0.0088923145, + 0.0014859614, + -0.029136235, + 0.019768145, + 0.00710313, + -0.00066549965, + 0.013643371, + 0.0067044166, + 0.010440261, + -0.026335191, + -0.018709376, + -0.011988208, + 0.004657241, + 0.01766401, + 0.013221203, + 0.004784561, + 0.0005616331, + -0.0073510697, + -0.0053206463, + -0.025450649, + 0.010567581, + -0.03776721, + -0.02502178, + 0.0024676677, + 0.014621726, + -0.008852108, + 0.004013939, + 0.017141327, + -0.016859882, + 0.0012489113, + -0.017422773, + 0.012236147, + 0.01326141, + 0.005866783, + 0.021644443, + -0.008429941, + 0.00035390005, + 0.010279436, + 0.006895397, + 0.019245462, + 0.014715541, + -0.010373251, + 0.014099043, + -0.018334117, + 0.029297061, + -0.04141259, + -0.006868593, + -0.0132145025, + 0.02520941, + 0.019299071, + 0.0025028482, + -0.010949542, + -0.013938217, + -0.0076191123, + 0.01609596, + 0.015787711, + 0.01614957, + 0.010822222, + -0.004486364, + -0.0038899689, + 0.019634124, + -0.020880522, + 0.013382029, + 0.003796154, + -0.0065469416, + 0.004117805, + 0.0009054816, + 0.023239298, + 0.02224754, + 0.0017925352, + -0.005776319, + -0.010259332, + -0.01017892, + 0.017865043, + 0.005769618, + -0.014594922, + 0.012651613, + -0.010574282, + 0.038356904, + 0.0021644444, + 0.019701134, + 0.0047477055, + 0.027849631, + -0.010534076, + -0.011083564, + -0.0082155075, + 0.033961, + -0.008376333, + 0.0031578774, + 0.0065770964, + -0.018159889, + -0.0060376604, + -0.008751593, + 0.0012732026, + 0.009756752, + -0.017516587, + -0.0041446094, + 0.007585607, + 0.004298734, + 0.045594055, + 0.0017439525, + -0.00090799446, + 0.0010947867, + -0.011867588, + 0.005990753, + 0.008832005, + 0.011318101, + 0.0036889368, + -0.013790794, + -0.0055551836, + -0.026817666, + -0.0124036735, + -0.007404678, + -0.0033170278, + 0.014715541, + -0.018937213, + 0.0024592914, + -0.0026502716, + 0.02275682, + 0.01143872, + -0.014889769, + -0.03640019, + 0.01766401, + -0.005762917, + 0.0034678017, + -0.022783626, + -0.028439324, + 0.003665483, + -0.02841252, + 0.018468138, + 0.011204183, + 0.009482008, + 0.002784293, + -0.010922737, + -0.016176375, + 0.0056925556, + 0.018829996, + -0.03607854, + -0.019513505, + -0.0049688406, + -0.008074785, + -0.006248744, + -0.002023722, + 0.0007999398, + 0.019660927, + 0.003601823, + -0.006587148, + -0.0037291434, + 0.013040274, + -0.00077941775, + 0.019526906, + -0.020786706, + -0.0026201168, + 0.02067949, + 0.003953629, + 0.007954165, + -0.02110836, + -0.0017690815, + 0.031629033, + -0.00032311704, + -0.010815521, + 0.005096161, + -0.024365077, + -0.005119615, + 0.087596335, + 0.0031059443, + 0.013368627, + -0.0042317235, + 0.02570529, + 0.016873285, + -0.006077867, + -0.0048917783, + -0.0030054282, + -0.009287678, + -0.0118608875, + -0.010788716, + 0.009173759, + 0.00867788, + 0.00052980304, + -0.005166522, + -0.008302621, + -0.039080616, + 0.009167058, + -0.0068618916, + -0.003400791, + 0.011659855, + -0.00041232497, + 0.01288615, + -0.013053677, + 0.0100516, + 0.011840784, + 0.033961, + 0.017315555, + -0.011740268, + 0.014876367, + 0.018092878, + 0.0031059443, + -0.0031662537, + -0.006523488, + -0.0013779068, + 0.014795954, + 0.014246467, + -0.0049688406, + -0.0072639557, + 0.013616567, + -0.0015680495, + 0.01137841, + 0.008731489, + 0.021443412, + 0.00008318746, + -0.0087113865, + 0.019969177, + -0.012015012, + 0.0125712, + 0.029243452, + 0.009274276, + -0.026214572, + -0.01665885, + -0.01206862, + 0.020398045, + 0.005618844, + -0.0099711865, + 0.022019703, + 0.026201168, + -0.00515312, + -0.02357435, + -0.004342291, + -0.020639284, + -0.0070294184, + -0.041787848, + 0.0106815, + -0.032888833, + -0.011914495, + -0.019808352, + 0.00760571, + -0.022904243, + -0.0061113723, + 0.02067949, + 0.016511427, + 0.00597065, + 0.02350734, + -0.021765063, + -0.0059572477, + 0.012041816, + 0.009602628, + -0.024485696, + -0.027447566, + -0.01716813, + -0.006406219, + 0.014635129, + 0.017650608, + -0.016484622, + 0.007954165, + 0.009696443, + 0.027688805, + -0.00591034, + 0.015452659, + 0.0073510697, + -0.016189776, + -0.017489783, + 0.010078403, + 0.002017021, + -0.016645448, + -0.014018631, + 0.025249617, + -0.01986196, + -0.008751593, + 0.005317296, + 0.004915232, + -0.016390808, + 0.01728875, + -0.0008204618, + -0.0126717165, + 0.006309054, + 0.021885682, + -0.025812507, + 0.006881995, + 0.019098038, + -0.019151647, + 0.046424985, + -0.00057335995, + 0.022716613, + -0.006121424, + -0.001206192, + 0.01087583, + 0.0007924011, + 0.016109362, + 0.0066508083, + -0.011961403, + -0.008704685, + 0.0055015753, + -0.017462978, + 0.003268445, + -0.0023805539, + -0.00848355, + 0.026321787, + -0.012242848, + -0.03425585, + -0.027608393, + 0.00521678, + -0.017771227, + 0.019071234, + -0.011043357, + -0.02771561, + -0.035220806, + -0.009039738, + 0.012001609, + -0.009220667, + -0.018762985, + -0.021349598, + 0.007833546, + 0.0063392087, + 0.014313477, + 0.011974805, + 0.008161899, + 0.01628359, + -0.02776922, + -0.0029618712, + -0.03294244, + -0.035864107, + -0.022515582, + -0.014795954, + 0.01614957, + 0.009575823, + 0.026268179, + 0.029752733, + 0.007880454, + -0.012946459, + -0.007310863, + 0.0058835363, + -0.0008506166, + 0.009401596, + -0.015760908, + 0.0108289225, + 0.026831068, + 0.029377474, + -0.0030071035, + -0.026335191, + -0.017556794, + 0.020719696, + -0.016940296, + -0.00037693497, + -0.00993098, + -0.019272266, + 0.0018109631, + -0.0045801788, + -0.005297193, + -0.017114524, + 0.0058801854, + 0.008885614, + 0.00006428835, + -0.005045903, + 0.010641293, + -0.010406756, + 0.020974336, + -0.010601087, + -0.015693897, + -0.023172287, + -0.012162435, + 0.011686659, + -0.017449576, + 0.01182068, + 0.0118608875, + 0.010728407, + 0.023091873, + -0.012048517, + -0.01275883, + 0.0040809494, + 0.011043357, + 0.018950615, + 0.0060008047, + -0.017838238, + 0.005002346, + -0.037070297, + -0.023614557, + -0.015613484, + -0.009240771, + -0.026254777, + -0.011076862, + 0.021014543, + 0.0022565841, + 0.02105475, + -0.0073443684, + -0.008664479, + 0.018628964, + 0.008510354, + 0.012979965, + -0.020625882, + 0.02790324, + 0.018267106, + 0.0036889368, + -0.01413925, + -0.01991557, + -0.011887691, + -0.017985662, + 0.02275682, + 0.027876435, + -0.006875294, + -0.023520742, + 0.013871207, + 0.024097035, + -0.02570529, + -0.008249013, + 0.019768145, + 0.027822826, + 0.0019416339, + -0.01991557, + 0.0091603575, + -0.017516587, + 0.021952692, + -0.017503185, + -0.0017154729, + -0.015881527, + -0.010172218, + -0.018508345, + 0.015667092, + -0.023735177, + 0.0015018765, + 0.02652282, + -0.020960934, + 0.011545937, + -0.0008259064, + 0.004623736, + 0.0044093016, + -0.0105139725, + 0.02432487, + 0.01691349, + 0.0034644513, + -0.0037928035, + 0.013341823, + -0.0003802855, + 0.0005612143, + -0.0040273406, + 0.026227973, + -0.006228641, + -0.015988745, + -0.0039502787, + -0.00892582, + -0.0016291967, + -0.0063325074, + 0.0035616166, + 0.0010470416, + -0.016457818, + -0.007330966, + 0.02790324, + -0.0056791534, + -0.0029434434, + -0.017597, + -0.0056925556, + -0.019111441, + -0.004657241, + -0.0054613687, + 0.007592308, + -0.013274812, + -0.020880522, + -0.01923206, + 0.0074515855, + 0.027018698, + -0.008496952, + -0.018937213, + 0.013321719, + 0.011827381, + -0.02790324, + 0.007424781, + 0.010272735, + 0.0055015753, + -0.03256718, + 0.00086527516, + -0.01388461, + -0.010266033, + 0.0063559613, + -0.025504258, + -0.00911345, + -0.02972593, + -0.022676408, + 0.03739195, + 0.008952624, + 0.022207333, + 0.0257723, + -0.022864038, + -0.00070947537, + -0.01558668, + -0.010004692, + 0.008336126, + 0.007987671, + 0.011365009, + 0.024445489, + -0.016833078, + 0.01647122, + 0.0067345714, + 0.00049755414, + -0.0037123905, + -0.024539305, + -0.0327012, + 0.0025179256, + 0.0063593118, + -0.027930044, + -0.01206862, + -0.02047846, + -0.02117537, + -0.0027641898, + -0.0024224354, + 0.008838707, + -0.0005004859, + 0.0133485235, + 0.035408434, + 0.0018746232, + 0.016806275, + -0.01640421, + -0.015975341, + 0.0025815857, + -0.013804196, + -0.01628359, + -0.01125109, + -0.0025514308, + 0.02067949, + 0.009917578, + -0.017275348, + -0.019808352, + 0.019473298, + -0.037847623, + 0.0066005504, + -0.02180527, + 0.021094956, + 0.011948001, + -0.0072438526, + 0.004720901, + 0.027983652, + -0.0069557065, + 0.030556861, + -0.015077399, + -0.009723247, + 0.013026873, + -0.026281582, + 0.04846211, + 0.00021862228, + -0.01175367, + -0.0022214034, + 0.008282518, + 0.020371241, + 0.004312136, + 0.0030188302, + -0.021832073, + -0.0019466598, + -0.0020723047, + -0.0124505805, + -0.018990822, + 0.019580515, + 0.012350065, + -0.04631777, + 0.01439389, + -0.0005499062, + -0.007699525, + -0.0063023525, + -0.0008162736, + -0.0059036394, + -0.00081376074, + 0.022971256, + -0.013341823, + -0.012638211, + 0.0069289026, + -0.027259937, + 0.008604169, + 0.0017112847, + 0.0043255384, + 0.0028730822, + 0.0019081286, + -0.013703681, + -0.027930044, + 0.0004301247, + -0.029699124, + -0.0032918989, + 0.011539236, + -0.0010261007, + -0.009488709, + -0.0106479945, + 0.011217585, + -0.037365146, + -0.018079476, + 0.0029501445, + -0.029645517, + -0.02570529, + 0.018789789, + 0.0027156072, + -0.021537228, + -0.011545937, + -0.0066742618, + 0.0038363603, + -0.012725324, + -0.017382566, + 0.011338204, + -0.027018698, + 0.0024040076, + -0.0073376675, + -0.017690815, + -0.0257723, + 0.005890237, + 0.005437915, + -0.004436106, + 0.0010269384, + 0.23652083, + -0.010527375, + -0.0022599346, + 0.01998258, + -0.0075521017, + 0.017529989, + 0.028358912, + -0.0007073813, + 0.0017389266, + 0.02256919, + -0.017811434, + -0.000539017, + 0.018722778, + -0.004543323, + -0.0062018367, + -0.021832073, + -0.032888833, + -0.02551766, + -0.031012535, + -0.0015412453, + 0.02483415, + -0.015546474, + 0.005632246, + -0.002117537, + 0.0099711865, + -0.011994909, + -0.0017623804, + 0.01162635, + 0.011043357, + 0.024793945, + 0.0027072306, + 0.009327884, + -0.007699525, + 0.0038732162, + -0.006362662, + 0.008999532, + 0.007987671, + -0.012041816, + 0.029886754, + -0.0038330099, + -0.0036889368, + -0.0151042035, + -0.018722778, + 0.0059170416, + -0.0044897143, + 0.0076526175, + 0.007934063, + 0.0074515855, + -0.009736649, + 0.021041349, + -0.040367223, + -0.0007986833, + 0.014045435, + 0.026080549, + 0.012209343, + -0.021523824, + 0.030771296, + 0.0031729548, + -0.015063996, + -0.006121424, + 0.004456209, + 0.030396037, + -0.010728407, + 0.036855865, + -0.02407023, + -0.0011333178, + -0.009917578, + 0.0038531132, + 0.029779539, + -0.012732026, + 0.022515582, + 0.0124036735, + 0.004342291, + -0.021188771, + -0.010741809, + -0.023453731, + 0.027501175, + 0.0157207, + 0.016940296, + 0.041707437, + -0.009012934, + -0.012819139, + 0.008992831, + 0.007585607, + 0.0005260337, + -0.034095023, + 0.012209343, + -0.000043975746, + 0.0129866665, + -0.031575423, + 0.0037425454, + -0.0032835223, + -0.011257791, + -0.020076394, + 0.0021711455, + 0.009951083, + 0.009602628, + 0.01590833, + -0.01118408, + 0.021041349, + -0.015827918, + 0.0021610938, + 0.004895129, + -0.005739463, + -0.017141327, + -0.005990753, + -0.006888696, + 0.011177379, + -0.009461906, + -0.013871207, + 0.0011500705, + -0.03602493, + -0.0048281183, + -0.017570196, + 0.0071366355, + 0.008041279, + -0.02047846, + -0.011793876, + 0.034523893, + -0.021979498, + 0.019848557, + -0.027608393, + -0.013650072, + -0.012524293, + -0.017462978, + -0.010312941, + 0.009977887, + -0.01640421, + 0.0032282386, + -0.048220873, + 0.028305303, + -0.0032667697, + 0.020652685, + -0.0063258065, + -0.0022766872, + 0.02110836, + 0.006543591, + -0.006881995, + 0.012356766, + -0.0020387995, + 0.008986129, + -0.018159889, + 0.035435237, + 0.03640019, + -0.021161968, + 0.0021577433, + 0.02413724, + -0.0026754006, + -0.018508345, + 0.008912418, + -0.0100516, + -0.02149702, + -0.013341823, + -0.02110836, + 0.011351606, + 0.0046203854, + 0.0015035517, + -0.003930175, + 0.003638679, + 0.0019014275, + -0.04135898, + 0.0067647262, + 0.026429005, + -0.0075655035, + -0.036158953, + -0.02752798, + -0.17454937, + 0.027045503, + -0.00021548115, + -0.014487705, + 0.011545937, + 0.034389872, + 0.0079474645, + -0.022287747, + -0.00810829, + 0.015506268, + 0.031253774, + 0.019526906, + -0.005488173, + -0.014889769, + -0.0019684383, + -0.026040344, + -0.028921802, + 0.017556794, + 0.026683645, + 0.013408833, + 0.03042284, + -0.022153724, + -0.0005792234, + -0.016390808, + -0.001614957, + 0.024619717, + -0.009997991, + 0.012892852, + 0.0012313209, + 0.0013779068, + -0.017395968, + -0.019553712, + 0.026965091, + 0.014702139, + -0.004184816, + 0.0040440937, + -0.0077464324, + -0.009951083, + -0.00018270875, + 0.014742346, + -0.012651613, + 0.018923812, + 0.012236147, + 0.0163506, + -0.0012857671, + 0.019098038, + 0.005297193, + -0.0065134363, + -0.010185621, + -0.005380956, + 0.02092073, + -0.00760571, + 0.009066543, + 0.020652685, + 0.020009384, + 0.00019412152, + 0.007813443, + 0.005166522, + 0.012745428, + -0.008369632, + -0.025263019, + -0.016015548, + -0.00033044632, + -0.010507272, + -0.0046940967, + -0.00396033, + -0.021912487, + 0.022033105, + -0.017395968, + 0.010594386, + 0.0061683315, + -0.009924279, + 0.01049387, + -0.016551634, + -0.0039234743, + 0.0008112478, + -0.011425318, + 0.020826913, + 0.0021711455, + -0.015814517, + -0.03310327, + 0.026348593, + -0.03626617, + -0.009187162, + 0.00358172, + 0.03130738, + 0.0019198555, + 0.0101990225, + -0.025624877, + -0.003638679, + 0.022528984, + -0.013375328, + 0.0037525971, + -0.0045600757, + 0.011036656, + 0.022528984, + -0.01363667, + 0.037123907, + -0.025785703, + 0.004858273, + -0.01017892, + -0.005538431, + -0.012021713, + -0.00083763327, + 0.029109431, + 0.0007630839, + 0.020384643, + 0.035810497, + 0.027983652, + -0.012289755, + -0.015131007, + 0.0031913829, + 0.00848355, + -0.0030623872, + -0.016498026, + 0.016256787, + 0.019928971, + -0.013596463, + 0.016632047, + -0.00798097, + 0.029431082, + -0.0092072645, + 0.010473766, + 0.010353147, + -0.02236816, + 0.0056791534, + -0.053930182, + 0.023292907, + 0.005193326, + 0.018977419, + -0.012685118, + 0.037123907, + 0.02112176, + 0.032325942, + -0.00810829, + 0.016136168, + -0.012953161, + -0.011807279, + -0.0028496285, + -0.0005783858, + 0.03444348, + -0.005166522, + 0.0056724525, + 0.004154661, + 0.0010076729, + 0.024432087, + -0.007753134, + -0.011572741, + 0.00078402477, + -0.004111104, + -0.024177447, + 0.019017626, + -0.021403205, + 0.027742414, + 0.0327012, + 0.02187228, + 0.021537228, + 0.0018025868, + 0.014045435, + -0.013562958, + -0.01495678, + 0.014501107, + -0.01017892, + -0.0038531132, + 0.023453731, + -0.033666156, + 0.003085841, + -0.016605241, + -0.019580515, + -0.020947533, + -0.008597468, + 0.016270189, + -0.034148633, + 0.011492329, + 0.014192858, + -0.0033790127, + -0.033773374, + -0.028948605, + -0.013308317, + -0.011425318, + 0.027849631, + -0.010500571, + 0.01074851, + 0.00010899703, + -0.035730086, + -0.0031511763, + -0.0070629236, + 0.0074180802, + -0.041895065, + 0.018535148, + 0.022917647, + 0.008443343, + -0.012557798, + -0.03575689, + 0.01665885, + -0.0011483952, + -0.013234606, + -0.0036621327, + -0.026750656, + -0.00055535085, + -0.019098038, + -0.031226968, + -0.038169272, + 0.003281847, + -0.0016962073, + -0.0050291503, + 0.011445421, + -0.035542455, + -0.020076394, + -0.010292837, + 0.001948335, + 0.042029087, + 0.011137172, + -0.014621726, + 0.008818603, + -0.011579443, + 0.006530189, + 0.008691283, + 0.029752733, + -0.01991557, + -0.016605241, + 0.029002214, + 0.01149903, + 0.023413526, + 0.0010034847, + 0.010279436, + -0.010266033, + -0.026388798, + -0.090973675, + 0.015988745, + 0.026804265, + 0.007585607, + 0.0006826711, + -0.0219929, + 0.009957785, + -0.009012934, + 0.008141795, + 0.00849025, + -0.025343433, + 0.014192858, + -0.0069356035, + -0.016551634, + -0.032272335, + -0.010835624, + 0.011545937, + 0.0033086515, + 0.0074113794, + 0.01747638, + 0.0026301686, + 0.025383638, + 0.028680563, + -0.0072304504, + -0.022354757, + 0.000009966527, + -0.021322792, + 0.036239367, + -0.014755747, + -0.0073376675, + -0.0059672995, + -0.033773374, + -0.01232326, + 0.01659184, + -0.012624809, + -0.014246467, + 0.0035917715, + 0.020759903, + 0.0031277225, + 0.032325942, + -0.01614957, + 0.008778397, + 0.016310396, + 0.0015378947, + -0.010225827, + 0.01439389, + -0.0000051010556, + 0.002992026, + 0.02533003, + 0.0033203783, + 0.0011911145, + 0.020143405, + 0.0033220535, + -0.0050258, + 0.0014566443, + -0.025892919, + 0.013831001, + -0.006637406, + -0.006215239, + 0.0076727206, + 0.009173759, + 0.0076124114, + 0.023601156, + 0.010849026, + 0.005618844, + -0.013911413, + -0.005833278, + 0.010929439, + 0.027849631, + -0.022354757, + -0.039884746, + 0.023976415, + 0.004034042, + 0.014916574, + 0.015063996, + -0.0003350533, + 0.000020050846, + 0.0048917783, + -0.015827918, + 0.035783693, + 0.0075789057, + -0.010567581, + -0.03235275, + 0.01703411, + 0.023896001, + -0.019768145, + 0.0000081931, + -0.0039871344, + -0.0046739937, + 0.04449508, + -0.018829996, + -0.0013829325, + 0.008195404, + -0.001062119, + -0.005096161, + 0.031387795, + -0.0018310663, + -0.028734172, + 0.043262083, + 0.023078471, + 0.014568117, + 0.004117805, + 0.003876567, + -0.017704217, + -0.027474372, + 0.012631509, + -0.014434096, + -0.0064497762, + -0.002224754, + 0.022609398, + 0.0141124455, + 0.016377406, + -0.0017204988, + 0.025115596, + 0.0129866665, + -0.0076526175, + -0.00091469556, + -0.020706294, + -0.010889232, + 0.016377406, + 0.008758293, + 0.00515312, + 0.012055218, + -0.016444417, + -0.005367554, + 0.0009951083, + 0.010225827, + -0.024298066, + -0.0003149501, + 0.011358307, + 0.018401127, + 0.016766068, + -0.023735177, + -0.008979429, + -0.009079944, + -0.0037324938, + 0.0028211488, + 0.0018293911, + -0.038383707, + 0.022354757, + 0.019004224, + 0.0039938353, + -0.004278631, + -0.002697179, + 0.0152382245, + -0.0045466735, + 0.002638545, + -0.012658314, + -0.02533003, + 0.010346446, + -0.025933126, + -0.0059538973, + -0.01791865, + -0.014246467, + -0.012618108, + 0.009106749, + 0.006701066, + 0.006255445, + -0.0057729683, + 0.024847554, + -0.0074850908, + 0.025745496, + 0.014782552, + -0.023453731, + -0.0073778736, + 0.00993098, + -0.0039569796, + 0.011874289, + -0.014554716, + 0.021416608, + 0.000161035, + -0.016243385, + -0.019392885, + 0.02520941, + -0.01143872, + -0.026991894, + 0.00013747656, + -0.003538163, + 0.014125847, + -0.015988745, + 0.011666556, + -0.016189776, + -0.00792066, + 0.027688805, + -0.003926825, + 0.007826845, + -0.0019064533, + -0.012839243 + ] + }, + { + "object": "embedding", + "index": 6, + "embedding": [ + -0.0131454775, + -0.007023479, + -0.007137846, + -0.028793573, + -0.03425628, + 0.0073396703, + -0.032803144, + 0.013912409, + -0.007124391, + -0.025228014, + 0.000104275794, + -0.007595314, + 0.018890737, + -0.0022755668, + -0.0018584637, + 0.0096404655, + 0.019994043, + -0.006337277, + 0.004726048, + -0.005577073, + -0.044078387, + 0.001702891, + 0.012815831, + -0.005116241, + 0.0020535602, + -0.00840261, + 0.011147418, + -0.0054458873, + -0.010407397, + -0.012217086, + -0.007992235, + -0.008557342, + -0.004463677, + -0.010817773, + -0.0130109275, + -0.0073733074, + -0.00095698267, + -0.006098452, + 0.027246255, + -0.01677831, + 0.015917195, + -0.011066689, + 0.0026657602, + -0.01789507, + 0.008294971, + 0.0343101, + 0.00424167, + 0.020895522, + -0.008624617, + 0.0009553008, + -0.00075095386, + 0.056295473, + -0.024420718, + -0.011618341, + -0.018688913, + -0.0019139653, + -0.011584704, + 0.004816869, + -0.009034993, + -0.023653787, + -0.013737494, + -0.020020952, + -0.026721513, + 0.003582378, + 0.0043156724, + 0.008079692, + 0.0014716341, + 0.008079692, + 0.002578303, + 0.0019072378, + 0.020693699, + 0.017706702, + 0.0112550575, + 0.005775533, + 0.013461668, + -0.01710123, + -0.0072051208, + -0.002921404, + 0.012129629, + 0.011678888, + 0.01691286, + -0.023842156, + -0.024286168, + 0.029520141, + 0.04106448, + 0.021245351, + -0.010003748, + 0.04701156, + -0.009526098, + -0.009230089, + 0.001309334, + 0.01614593, + 0.0010965776, + 0.032534048, + -0.009660647, + -0.006313731, + -0.0038682956, + 0.03880405, + -0.01683213, + -0.0013900636, + 0.004460313, + 0.01183362, + -0.008469885, + -0.020518785, + -0.004039846, + -0.004167668, + -0.0129369255, + 0.0053517027, + 0.010508309, + 0.0006235524, + 0.02938559, + 0.026748423, + 0.022429386, + -0.047872677, + -0.010071023, + -0.018096896, + -0.0019358296, + -0.01813726, + -0.009647192, + -0.0047327755, + 0.024689816, + -0.0039187516, + -0.006414643, + -0.027663358, + 0.021164622, + 0.015580822, + -0.00594372, + -0.004779868, + 0.0035790142, + 0.0028877666, + 0.010999414, + 0.0112550575, + -0.000038788072, + -0.0018315538, + -0.034229368, + 0.013239662, + -0.026398594, + 0.014975349, + -0.029681599, + -0.009620283, + -0.00480005, + 0.015190628, + -0.032238036, + -0.0005697326, + 0.019576939, + 0.014719705, + 0.014127688, + -0.0027111706, + 0.021339536, + -0.01305802, + 0.013502033, + -0.03207658, + 0.01119451, + -0.0048673246, + 0.010858137, + 0.0038279307, + 0.007292578, + 0.023411596, + -0.009479006, + 0.009115722, + -0.004359401, + -0.015123353, + 0.0048101414, + -0.013286754, + 0.022617755, + 0.008624617, + 0.00739349, + 0.013044565, + 0.0025127102, + -0.007783683, + 0.008557342, + 0.022402477, + -0.02401707, + 0.02018241, + 0.032964606, + 0.01364331, + 0.0067510167, + -0.01903874, + -0.030569626, + -0.031134732, + -0.014612066, + 0.005476161, + 0.016119018, + 0.018352538, + -0.0049110535, + 0.016374663, + -0.0024925277, + -0.011187783, + 0.011853803, + -0.012930198, + 0.014558246, + 0.004463677, + 0.004103757, + -0.0125870975, + -0.6824346, + -0.027770998, + -0.01186053, + -0.011450155, + -0.011820165, + 0.025241468, + 0.014100778, + 0.0026489415, + -0.011389608, + -0.0132194795, + -0.0073800352, + 0.018554363, + 0.007595314, + 0.0053113378, + -0.012963835, + -0.0022335202, + 0.0064684628, + 0.016859042, + -0.0034747384, + 0.024864731, + -0.014961895, + 0.020720609, + 0.0075751315, + -0.004742867, + 0.012714919, + 0.006656832, + 0.0018197808, + -0.011954715, + -0.010952322, + 0.004921145, + -0.030650355, + 0.0035151034, + 0.0072185756, + -0.018904192, + 0.043970745, + 0.0144775165, + -0.019711489, + 0.01462552, + 0.012573642, + 0.03657053, + 0.015917195, + 0.0054257046, + 0.024676362, + -0.0050893314, + -0.010938867, + 0.010501581, + 0.013858589, + 0.0002537518, + 0.017303053, + -0.01949621, + -0.0076020416, + -0.03172675, + -0.017854707, + -0.01079759, + 0.007050389, + -0.003632834, + 0.01792198, + 0.006290185, + 0.007736591, + 0.014517881, + 0.0085909795, + 0.0049245083, + -0.02973542, + -0.014033503, + 0.0170205, + -0.008765894, + -0.015378998, + -0.0075145843, + 0.009384821, + 0.01358949, + 0.00038619884, + 0.017477969, + 0.0042248513, + -0.009613555, + 0.031296194, + 0.012149812, + 0.010030658, + 0.002450481, + 0.0040196637, + -0.0056073465, + 0.011766345, + -0.008860079, + -0.025308743, + 0.0060513597, + 0.037458554, + -0.024985826, + 0.0025244833, + -0.005758715, + 0.009021537, + 0.002909631, + 0.01903874, + 0.037862204, + -0.0052642454, + -0.011954715, + -0.022954129, + 0.02508001, + -0.01680522, + 0.0006550874, + 0.0201555, + -0.021218441, + 0.010602494, + -0.003266187, + -0.00032207766, + -0.005829353, + 0.007178211, + 0.022456296, + -0.017558698, + 0.015190628, + 0.014100778, + -0.022563936, + -0.009660647, + -0.0058259894, + -0.028820483, + -0.010030658, + -0.013132022, + -0.026358228, + 0.011685616, + -0.011187783, + 0.01745106, + -0.011322333, + 0.009748105, + -0.0151098985, + 0.022375567, + -0.005122969, + -0.010804318, + -0.0015313404, + -0.011699071, + -0.014329512, + 0.0045410427, + 0.0022402476, + -0.008227697, + 0.02976233, + 0.026842607, + -0.005499707, + 0.035251945, + 0.009458823, + -0.01130215, + -0.011732709, + -0.0056342566, + -0.028793573, + -0.013690402, + -0.0047966866, + 0.006949477, + -0.01568846, + -0.0065996484, + -0.03910006, + -0.013286754, + -0.015217538, + -0.01130215, + 0.014571701, + -0.006132089, + -0.013676947, + -0.025564387, + -0.009135905, + -0.0075011295, + -0.010467944, + 0.009674102, + -0.017303053, + -0.014316057, + -0.012196904, + 0.027905548, + 0.007709681, + -0.021352991, + -0.011403062, + -0.011154146, + -0.014046958, + 0.018446723, + 0.0028120826, + -0.013481851, + -0.015621186, + -0.0059100827, + 0.00023293866, + 0.0025648482, + 0.0011251695, + 0.020411145, + -0.010420851, + 0.013461668, + -0.0031097732, + -0.0031013638, + -0.0023478873, + -0.009956656, + -0.010817773, + -0.026923336, + -0.020855159, + 0.018783098, + -0.0074203997, + 0.015163718, + 0.016737947, + -0.019940222, + 0.0030727722, + 0.008503523, + 0.005516526, + 0.0010427579, + -0.0035420132, + -0.0060513597, + 0.012910016, + -0.0022654757, + -0.00003250735, + 0.0034848296, + 0.013468396, + 0.026075676, + 0.0067409254, + 0.014531336, + 0.028255375, + 0.0007866936, + -0.026210224, + -0.000914095, + -0.012903288, + 0.04830324, + 0.008046054, + 0.010111388, + -0.017383784, + -0.026936792, + 0.012775466, + -0.0061690905, + 0.033368252, + 0.011974897, + -0.0019005104, + -0.00808642, + -0.0031602292, + 0.013730767, + -0.01584992, + -0.006895657, + 0.018877283, + -0.027851727, + -0.0058461716, + 0.0052137896, + 0.023129044, + 0.0063843695, + -0.032507136, + -0.011820165, + 0.008046054, + -0.0014724751, + 0.016105564, + -0.006697197, + -0.0020064681, + 0.0010721906, + -0.010259393, + 0.03412173, + -0.0027548992, + 0.01917329, + 0.022308292, + 0.027824817, + -0.02146063, + -0.0172896, + -0.011059961, + 0.024030523, + 0.0036025604, + -0.012573642, + 0.009909564, + -0.019509664, + -0.0019795583, + -0.00085817295, + -0.011100326, + 0.017666338, + -0.028336106, + 0.011228148, + 0.007918233, + 0.0108312275, + 0.027932458, + 0.012842741, + -0.009795197, + 0.015123353, + -0.000015347041, + -0.017007045, + 0.020747518, + 0.010145025, + 0.008934081, + -0.009465551, + -0.012439093, + 0.011880713, + -0.000118887016, + -0.009721194, + 0.005015329, + 0.015136808, + -0.000084251056, + -0.010124843, + -0.009304091, + 0.013105112, + 0.029116493, + -0.01789507, + -0.021689365, + 0.0021141076, + 0.032910787, + -0.00962701, + -0.034686837, + -0.01481389, + 0.0020905614, + -0.0096001, + 0.0035487406, + -0.0001552574, + 0.03234568, + -0.004941327, + -0.0047159567, + -0.0045645884, + -0.0053416113, + 0.033475894, + -0.034283187, + -0.02154136, + 0.007090754, + 0.006054723, + -0.008368974, + -0.0035285582, + -0.025941126, + 0.04970255, + -0.0037606559, + -0.018971467, + 0.00011405165, + 0.0009670739, + -0.009620283, + -0.006629922, + 0.0003853579, + -0.012466002, + 0.013656765, + 0.0006336436, + 0.015177174, + -0.009331001, + 0.01478698, + 0.024716726, + -0.021608636, + -0.009526098, + -0.0069629317, + -0.021877734, + 0.011584704, + 0.096014455, + 0.020115137, + 0.022833034, + -0.00030084405, + 0.030677265, + 0.004904326, + -0.015634641, + -0.009801924, + 0.012008535, + 0.010481399, + -0.007649134, + -0.038050573, + 0.0012521504, + 0.01079759, + -0.012910016, + -0.0036765626, + -0.022927219, + -0.0065458287, + 0.021285716, + -0.011638524, + -0.0060849967, + -0.0024302986, + 0.0022637937, + 0.003468011, + 0.014208417, + -0.010461217, + 0.029331772, + 0.0075751315, + 0.011557794, + 0.010441034, + 0.0061455444, + 0.014181508, + 0.0076424065, + 0.011826893, + -0.0037202912, + -0.01130215, + 0.022644665, + -0.005092695, + 0.014221872, + -0.017625973, + 0.019106016, + 0.003834658, + 0.009028265, + -0.0023747971, + 0.0315922, + -0.025833486, + -0.012714919, + 0.016751401, + -0.0034646473, + -0.017464513, + 0.026519688, + 0.016024834, + -0.024003614, + -0.017356874, + -0.0019543301, + 0.011181056, + 0.0068250187, + -0.00026510438, + -0.0001514732, + 0.017114684, + -0.019765308, + -0.028712844, + 0.0039591165, + -0.01566155, + -0.012324726, + -0.028389925, + 0.002159518, + -0.011880713, + -0.013172387, + -0.025456747, + -0.0022419295, + -0.019859493, + -0.007548222, + 0.008927354, + 0.018043075, + -0.0060244496, + 0.020626424, + 0.014692795, + 0.013690402, + 0.027797908, + 0.0032207766, + -0.014221872, + -0.008490068, + -0.012647645, + -0.01584992, + 0.01693977, + 0.024743635, + -0.017733611, + -0.010737043, + 0.024649452, + 0.016253568, + 0.0005579596, + 0.015473182, + -0.007871141, + -0.012788922, + 0.0016473893, + 0.007036934, + 0.021675909, + -0.018769642, + -0.009546281, + 0.04098375, + -0.009822107, + 0.003126592, + -0.0014968622, + 0.025779666, + -0.008994628, + 0.005193607, + 0.0051633334, + -0.014168053, + -0.023209773, + 0.044751134, + -0.031242372, + 0.025187649, + 0.025201105, + 0.0051263324, + 0.018702367, + -0.004726048, + 0.024743635, + -0.018769642, + 0.0058058067, + -0.01802962, + -0.03248023, + 0.0063070036, + 0.037216365, + -0.012277634, + 0.015405907, + 0.022617755, + -0.014006593, + -0.0020047862, + -0.008348791, + 0.021070438, + 0.028416835, + -0.014046958, + -0.012136357, + -0.00019478129, + -0.0039927536, + -0.0050489665, + 0.011557794, + -0.019590395, + -0.005082604, + -0.010723588, + -0.00507924, + 0.01704741, + -0.010071023, + -0.025672028, + -0.020572605, + -0.00022473956, + -0.0038582042, + 0.0015616141, + 0.03425628, + -0.0029819512, + 0.012815831, + -0.0046184086, + 0.00070680486, + -0.037862204, + -0.010649585, + 0.0037942934, + -0.034283187, + 0.002781809, + 0.021366445, + 0.027905548, + -0.0016145929, + 0.019711489, + -0.0048875073, + -0.006771199, + -0.00039986402, + 0.0074203997, + -0.00041079617, + -0.018635092, + 0.010441034, + 0.01922711, + 0.011470337, + -0.010615949, + -0.005778897, + -0.015553911, + 0.012042172, + 0.0047495943, + -0.008220969, + -0.0033418708, + -0.025228014, + -0.018460179, + -0.017114684, + 0.014571701, + 0.0043257633, + -0.0040196637, + 0.0049245083, + 0.029224131, + -0.004534315, + 0.033314433, + -0.005139787, + 0.014181508, + -0.0036799263, + 0.005957175, + 0.019240566, + -0.0011066688, + -0.012062354, + 0.002120835, + 0.005183516, + 0.012190176, + 0.038238943, + 0.01590374, + -0.0019795583, + -0.018608183, + 0.023048313, + -0.0031854573, + 0.018123806, + 0.0056208014, + -0.0056611663, + 0.01843327, + -0.021285716, + -0.0025766212, + -0.016213203, + -0.023236683, + -0.01933475, + -0.011295423, + 0.011793256, + 0.0017222324, + 0.024339987, + -0.011059961, + -0.009048448, + -0.010676496, + 0.009162814, + 0.013939318, + 0.0007496925, + 0.022792669, + 0.023707606, + -0.012082537, + -0.016576488, + -0.010911957, + 0.009297364, + -0.021837369, + 0.012230542, + 0.035870872, + -0.005462706, + -0.00909554, + -0.0059134467, + 0.003239277, + -0.0001609337, + -0.014235327, + 0.026506234, + 0.012546732, + 0.0048202327, + -0.0028793574, + 0.0012672872, + 0.002388252, + 0.026519688, + -0.026869517, + -0.0116721615, + -0.02736735, + -0.006744289, + -0.0014977031, + 0.005640984, + -0.022052648, + 0.03883096, + -0.0025093465, + -0.010286302, + 0.004265216, + -0.019792218, + -0.0004406493, + -0.0035016483, + 0.008584253, + 0.0039187516, + -0.004140758, + -0.008624617, + -0.0015128399, + -0.0059672664, + -0.006172454, + 0.018998377, + -0.015096444, + 0.021070438, + -0.010932139, + -0.005893264, + 0.0008152853, + -0.025833486, + 0.006566011, + 0.018917646, + 0.013515488, + -0.0024656178, + -0.015230993, + -0.010555401, + 0.0015355451, + 0.009061903, + -0.010609221, + 0.008947535, + -0.013071475, + -0.009916292, + -0.00256653, + -0.021137713, + 0.018796552, + -0.0023344322, + -0.020101681, + -0.013125295, + -0.008436248, + 0.029116493, + -0.015015714, + 0.009976839, + 0.021985373, + 0.012990746, + -0.0046520457, + 0.011160874, + 0.0006151431, + -0.0057856245, + -0.011140691, + 0.0047933226, + -0.008712074, + -0.0099902935, + 0.028955033, + -0.027636448, + -0.002921404, + -0.0034141913, + 0.009337729, + 0.0067812903, + 0.0065021003, + -0.0019021922, + 0.032614775, + -0.0035588318, + 0.0018567818, + -0.0031669566, + -0.011477064, + 0.020464964, + -0.0068889298, + -0.002312568, + 0.006730834, + -0.004369492, + 0.009727922, + 0.017706702, + -0.012876378, + -0.0044704042, + -0.016415028, + -0.019698033, + -0.0034326918, + 0.015594277, + -0.016065199, + -0.025577843, + -0.012883106, + 0.00928391, + -0.0071042087, + 0.02962778, + -0.015944105, + -0.0077029536, + -0.0011739436, + 0.003177048, + 0.010387214, + -0.0055266167, + -0.006592921, + -0.032641686, + -0.015836466, + 0.0037438374, + -0.029816149, + -0.006710652, + -0.01829872, + 0.023546146, + 0.0071983933, + -0.026465869, + -0.005116241, + 0.01486771, + -0.017975802, + 0.015352087, + 0.00008703665, + 0.01707432, + 0.020559149, + 0.008712074, + 0.015500092, + 0.022779215, + 0.009801924, + 0.021164622, + -0.03923461, + -0.012560187, + 0.018635092, + -0.015163718, + 0.0077164085, + 0.006340641, + -0.030246707, + -0.0015860011, + 0.01677831, + 0.010938867, + 0.0038178395, + -0.0014884528, + -0.024703272, + -0.00784423, + -0.02704443, + -0.014141142, + -0.02499928, + 0.012614007, + -0.00073623756, + -0.019267475, + -0.0015304995, + 0.010595766, + -0.017868161, + -0.012614007, + -0.005462706, + -0.0030626808, + 0.00079215964, + 0.0024336623, + -0.0018180988, + 0.016078655, + 0.017639427, + -0.050913494, + -0.0043762196, + 0.004080211, + 0.0028154464, + 0.0015473182, + -0.007857685, + -0.010030658, + -0.007063844, + -0.004964873, + -0.025968036, + -0.009337729, + -0.0027616266, + -0.017545242, + 0.0024740272, + -0.028847393, + -0.0017045728, + -0.03401409, + 0.0032813237, + -0.026479324, + 0.0007740796, + -0.012143084, + 0.011066689, + 0.01481389, + -0.027582629, + -0.017787432, + -0.0137105845, + -0.01590374, + -0.016334299, + 0.0070571164, + 0.007265668, + -0.014423696, + -0.016267024, + 0.00970774, + -0.025362564, + -0.03396027, + 0.00035130008, + 0.0040331185, + -0.0065727388, + 0.004127303, + 0.23917502, + -0.022119923, + 0.004927872, + 0.021527905, + 0.0017693248, + 0.015056078, + 0.0343101, + -0.018608183, + -0.010737043, + -0.00068998616, + -0.019603848, + 0.010528491, + -0.005398795, + 0.007904777, + -0.013912409, + -0.014881165, + -0.035817053, + -0.037593104, + -0.019092562, + -0.013246389, + 0.0009098904, + -0.008839896, + -0.006158999, + -0.008079692, + 0.028524475, + 0.0099902935, + -0.015163718, + -0.014046958, + 0.020908978, + 0.022079557, + 0.0055333446, + 0.0032527319, + -0.0054088864, + 0.03662435, + 0.00041668268, + -0.006438189, + -0.0123045435, + -0.027609538, + 0.007050389, + 0.012943653, + -0.025120374, + -0.004100393, + -0.02390943, + -0.008153694, + -0.010178663, + 0.016240114, + -0.0063843695, + -0.0023478873, + 0.019846037, + 0.014100778, + -0.019671123, + -0.010676496, + 0.03891169, + 0.031672932, + 0.0010461217, + -0.012398728, + 0.010017203, + 0.01486771, + 0.009230089, + -0.010017203, + -0.018648548, + 0.01712814, + 0.00797878, + 0.019321295, + -0.01710123, + -0.0034579197, + -0.044159114, + 0.022119923, + 0.00068115635, + 0.005462706, + 0.007232031, + -0.013602945, + -0.009808652, + -0.01313875, + -0.032318767, + -0.014585156, + 0.023330867, + 0.010609221, + 0.00792496, + 0.035440315, + -0.0043728556, + 0.0065727388, + 0.016119018, + -0.009734649, + -0.0036361977, + -0.02148754, + 0.023425052, + -0.0016532758, + -0.008476613, + -0.0063473685, + 0.0029129947, + 0.004204669, + -0.021649, + -0.013925863, + 0.024864731, + 0.013313664, + 0.0054862523, + 0.03406791, + 0.001156284, + 0.0027246254, + -0.024434172, + 0.031107822, + 0.000033584794, + -0.010992686, + -0.015271358, + 0.00368329, + 0.012614007, + -0.0041104844, + -0.010488126, + -0.012640917, + -0.009815379, + -0.03172675, + -0.00281881, + -0.0016448665, + 0.006394461, + 0.01031994, + 0.012990746, + -0.0030794996, + 0.0033855995, + -0.012741829, + -0.006895657, + 0.0025143921, + -0.0054896157, + 0.0096404655, + -0.0048706885, + 0.0001105828, + -0.0038043845, + 0.016132474, + 0.00092334533, + -0.03686654, + 0.014329512, + -0.014746615, + 0.017989255, + -0.004164304, + -0.034659926, + 0.04109139, + 0.0022856581, + -0.01571537, + -0.019819127, + -0.0067779263, + 0.015029169, + -0.015096444, + 0.0066097397, + -0.0019896494, + -0.024905095, + -0.006138817, + 0.01925402, + 0.000007647242, + -0.0005571186, + -0.008617889, + -0.0030895907, + -0.011584704, + -0.0065391012, + -0.041925594, + 0.022981038, + -0.019294385, + -0.0076625887, + -0.026627328, + -0.017733611, + 0.017881617, + -0.044051476, + -0.0055568907, + 0.021931553, + -0.014692795, + -0.020962797, + 0.013925863, + -0.17523715, + 0.02031696, + 0.019119471, + -0.020088227, + 0.0010208937, + 0.0092906365, + 0.010447761, + 0.0028675843, + 0.0021443812, + 0.0018887373, + 0.012533277, + -0.0027347167, + -0.024461083, + 0.0055568907, + 0.0012311271, + -0.024784, + -0.0048740525, + -0.00027057045, + 0.0037101998, + -0.007090754, + 0.0117461635, + -0.036139973, + 0.010030658, + -0.023317412, + -0.0060244496, + 0.010938867, + -0.013562581, + 0.021635545, + -0.017168505, + -0.01598447, + -0.0063440045, + -0.0011974897, + 0.028820483, + 0.0030172705, + 0.0072723953, + 0.010017203, + -0.009532825, + -0.009230089, + -0.006350732, + 0.030784905, + 0.012291089, + 0.016253568, + -0.003811112, + 0.008409338, + 0.005038875, + 0.029089581, + 0.025281833, + 0.0006916681, + 0.007911505, + 0.004507405, + 0.028147737, + -0.01819108, + 0.0026523052, + -0.008812986, + -0.009775015, + -0.0043661282, + 0.0012269224, + 0.017370328, + 0.0007459083, + -0.014800435, + -0.034740657, + -0.029869968, + -0.007837503, + -0.010447761, + 0.0036092878, + -0.027582629, + -0.019698033, + 0.0075549493, + -0.0135693075, + 0.0100642955, + -0.016253568, + -0.033583533, + -0.0055871643, + -0.0037572922, + 0.0058259894, + 0.014100778, + -0.0054929797, + 0.005321429, + 0.00027288301, + -0.00070554344, + -0.014316057, + 0.030219797, + -0.0029264495, + -0.005536708, + -0.0049312357, + 0.0045645884, + -0.005015329, + 0.020586058, + -0.009849017, + -0.017383784, + 0.0044502215, + -0.02047842, + -0.006428098, + -0.0012101037, + 0.011342515, + 0.022927219, + -0.0052507906, + 0.022671575, + -0.005859627, + -0.0067846538, + 0.0068014725, + -0.0071042087, + -0.015863376, + 0.022631211, + 0.028766664, + 0.030327436, + 0.01481389, + -0.0040499372, + 0.0057217134, + 0.014437151, + -0.024380352, + -0.025174195, + 0.015190628, + 0.035063576, + -0.020411145, + 0.0042853984, + 0.029358681, + -0.014612066, + 0.016482303, + -0.0029634507, + 0.057264227, + -0.0015725462, + 0.005499707, + 0.015325177, + -0.015607731, + -0.001993013, + -0.09219325, + -0.022456296, + 0.022254473, + 0.009297364, + -0.006798109, + 0.017410694, + -0.0016179567, + -0.0022133377, + 0.0012656053, + 0.013105112, + -0.010656313, + -0.003060999, + 0.026761876, + -0.018756187, + 0.04327109, + 0.0029029034, + -0.017612517, + -0.0064617353, + -0.020693699, + 0.023115588, + -0.0070436615, + 0.0045780437, + -0.0024992554, + -0.008059509, + -0.0021141076, + -0.0038481131, + -0.019846037, + 0.018554363, + 0.007945143, + 0.020868612, + 0.0007084867, + -0.00006837843, + 0.014033503, + -0.006418007, + -0.0012000125, + 0.012802376, + -0.014221872, + 0.015378998, + 0.024313077, + -0.015096444, + -0.014854254, + 0.0013042883, + 0.0204246, + -0.007783683, + -0.005577073, + -0.00027162163, + -0.0058461716, + 0.006969659, + 0.006387733, + -0.013858589, + -0.013367483, + -0.008974445, + 0.001727278, + -0.0038481131, + 0.0042853984, + -0.010723588, + 0.027770998, + 0.016159384, + -0.035063576, + -0.010925412, + -0.0032964605, + 0.007124391, + -0.021608636, + 0.016051745, + 0.017558698, + 0.0012075809, + -0.02992379, + -0.00017806773, + 0.0039523887, + -0.028981943, + -0.012842741, + 0.0074809473, + -0.007353125, + -0.007736591, + -0.01568846, + 0.00011720515, + -0.0069629317, + 0.009196452, + 0.006175818, + -0.0023462053, + -0.035225034, + -0.023155954, + -0.0025446657, + -0.02641205, + 0.02595458, + 0.035386495, + 0.0014623839, + -0.015405907, + 0.016374663, + -0.017222324, + -0.0121699935, + 0.010387214, + 0.021191532, + -0.022981038, + -0.018123806, + 0.021352991, + 0.022994494, + -0.004524224, + -0.017666338, + 0.024609087, + -0.024299623, + 0.0057250774, + -0.08847969, + 0.011006142, + 0.009189725, + -0.00853716, + 0.0039086603, + -0.028120827, + 0.017706702, + -0.0034511923, + 0.012768739, + 0.0062060915, + -0.026802242, + -0.0137778595, + 0.008187331, + 0.0024185255, + -0.03643598, + -0.026990611, + 0.022227563, + 0.01590374, + 0.016576488, + 0.017773977, + -0.013347302, + 0.0047933226, + -0.0010007112, + 0.0072051208, + -0.021016618, + 0.006734198, + 0.009055175, + 0.017208869, + -0.004480495, + 0.0034781022, + 0.029035762, + -0.03654362, + -0.01077068, + 0.015419362, + -0.011981625, + -0.03215731, + -0.015271358, + 0.030354347, + -0.0047529577, + 0.044239845, + -0.0046049533, + -0.006172454, + 0.028578294, + 0.005001874, + -0.005751987, + -0.021420266, + 0.016576488, + 0.011692343, + 0.026654238, + 0.008826441, + -0.003912024, + 0.026290955, + -0.016697582, + 0.0027919002, + -0.01617284, + -0.011927805, + 0.013239662, + 0.016267024, + -0.0005323111, + -0.023734516, + 0.024891641, + -0.00015820067, + -0.004742867, + 0.019711489, + 0.03624761, + -0.00006328027, + -0.015325177, + -0.0032039578, + -0.00022852376, + -0.01462552, + -0.024757091, + 0.0038043845, + 0.029331772, + 0.0055299806, + 0.010642858, + -0.00077702285, + 0.011174329, + 0.0024084344, + -0.020088227, + 0.017181959, + 0.01856782, + -0.014100778, + -0.032883875, + 0.02606222, + 0.032722417, + 0.0004662978, + -0.0058663543, + -0.006552556, + -0.00731276, + 0.03248023, + 0.0101988455, + 0.015971014, + 0.0021763367, + -0.011288695, + 0.011470337, + 0.017060865, + -0.00092418626, + -0.03584396, + -0.006996569, + 0.03673199, + -0.0008644799, + -0.004379583, + -0.008705347, + -0.026802242, + -0.04087611, + 0.008638072, + -0.015446272, + -0.03178057, + 0.008335336, + 0.02595458, + 0.010461217, + -0.0017390511, + -0.00077954563, + 0.018984921, + 0.0014321102, + 0.0042080325, + 0.010367032, + -0.018608183, + -0.016441938, + 0.0003891421, + 0.01566155, + 0.03616688, + 0.00851025, + -0.026317865, + 0.02063988, + -0.0029701781, + 0.013979684, + -0.019778762, + 0.0040331185, + 0.013925863, + 0.006606376, + -0.018608183, + -0.008066237, + -0.021649, + -0.0040331185, + -0.0031854573, + -0.016509213, + 0.018258354, + -0.018527454, + 0.037377827, + 0.010145025, + -0.028551385, + -0.005338248, + 0.0074136723, + 0.023317412, + 0.0075751315, + 0.03624761, + -0.02273885, + -0.0121699935, + 0.02497237, + 0.000634905, + 0.0033469165, + -0.0294125, + -0.023223227, + 0.0053819763, + -0.018608183, + -0.0026321227, + -0.01726269, + -0.007783683, + 0.03802366, + -0.0033485985, + 0.0053819763, + 0.0104141245, + -0.024649452, + -0.007063844, + 0.023317412, + 0.015056078, + 0.0021948372, + -0.021770094, + 0.014437151, + 0.010367032, + -0.0074002175, + -0.025376018, + 0.022644665, + 0.0027885365, + -0.01699359, + -0.014840799, + 0.030300526, + -0.0006176659, + -0.028928123, + 0.023815244, + -0.02957396, + -0.033395164, + 0.025066555, + -0.015917195, + -0.022510115, + -0.02404398, + -0.01063613 + ] + }, + { + "object": "embedding", + "index": 7, + "embedding": [ + 0.024549589, + -0.006144328, + -0.0028832944, + -0.013314444, + -0.0069968407, + 0.013993681, + -0.026268475, + -0.008857813, + -0.020072164, + -0.013064927, + 0.022997046, + 0.018325554, + 0.0039887885, + -0.021319743, + -0.0155808795, + -0.009024157, + 0.04932097, + -0.0061477935, + 0.014118439, + -0.011817348, + -0.004775456, + -0.005073489, + 0.0033060852, + 0.0011115585, + 0.008712262, + -0.009516258, + 0.008746917, + -0.013238203, + -0.0026129854, + -0.013737234, + -0.003250637, + -0.0150541235, + -0.025783306, + -0.0341005, + -0.020987056, + -0.01412537, + -0.01635715, + -0.0047823875, + 0.0049002143, + -0.0023201508, + 0.012392621, + -0.009620222, + -0.004837835, + 0.0061270003, + -0.009661809, + 0.038453165, + -0.0066468255, + -0.013245134, + -0.025603099, + 0.0003155769, + 0.02205443, + 0.0023704006, + -0.020113751, + -0.02108409, + -0.026074408, + -0.026254613, + -0.018256243, + 0.03276975, + 0.0028763635, + -0.018588932, + -0.0022144532, + -0.0104658045, + 0.0045952504, + 0.013210478, + 0.0078112325, + -0.01461054, + -0.009620222, + 0.005371522, + -0.017064113, + -0.0048828865, + 0.011172766, + 0.005461625, + 0.0011860667, + -0.02136133, + 0.022484152, + -0.0065393946, + -0.0055967793, + 0.0025783305, + -0.01183121, + 0.005752727, + 0.026434818, + -0.014305576, + -0.007617165, + 0.021444501, + -0.0032610337, + 0.0035937214, + -0.005260626, + 0.02991418, + -0.012344104, + 0.007825094, + 0.015123433, + 0.019046377, + -0.016066048, + -0.0027931915, + -0.031910308, + -0.0038848233, + -0.011706453, + 0.04502375, + 0.016897768, + -0.0039160126, + 0.014035267, + 0.006414637, + -0.022373255, + -0.022109877, + -0.006972582, + -0.0012137907, + -0.00049383345, + 0.0022387118, + 0.008365712, + 0.010382632, + -0.0013385486, + 0.033296507, + 0.01935134, + -0.05838671, + 0.00013656229, + -0.040144328, + -0.010410356, + 0.0024812967, + -0.011644074, + -0.036484763, + 0.023149528, + 0.033989605, + 0.010548976, + 0.0018107228, + 0.027973501, + -0.0084072985, + -0.010590562, + -0.03493222, + 0.0013082256, + 0.01926817, + 0.01092325, + 0.011789625, + 0.029110184, + 0.014915504, + -0.0037947204, + 0.005943329, + -0.027848743, + 0.013155031, + -0.022345532, + -0.015622465, + -0.007894404, + 0.03166079, + -0.020127613, + 0.0046160435, + 0.011054939, + 0.013064927, + 0.005874019, + 0.012697585, + 0.017868107, + -0.0040061157, + 0.03263113, + -0.011914383, + 0.007021099, + -0.0015586078, + 0.005655693, + 0.025007034, + -0.004896749, + 0.031078586, + 0.005558659, + 0.0073329937, + 0.005246764, + 0.006525533, + 0.012725309, + 0.0008650749, + 0.019947406, + 0.002574865, + 0.0043006833, + 0.02922108, + 0.007346856, + -0.010514321, + 0.0050076446, + 0.023856489, + -0.034849048, + 0.018769138, + 0.006986444, + 0.03590256, + 0.016856182, + -0.013681786, + -0.026753645, + -0.0056348997, + -0.00897564, + 0.014776884, + 0.020432577, + 0.01996127, + -0.01447192, + 0.022151463, + 0.022802977, + -0.0017474773, + -0.008116197, + -0.01962858, + -0.0022560393, + 0.0153175015, + 0.02999735, + -0.014291714, + -0.66404486, + -0.0057042097, + -0.010278667, + 0.011359903, + 0.0086984, + 0.016523495, + 0.010847009, + 0.013064927, + -0.019531546, + -0.013155031, + -0.006109673, + -0.012572827, + -0.004751198, + -0.000104181534, + -0.0065844464, + -0.023468353, + 0.005063093, + -0.01718887, + 0.009446948, + 0.017216595, + 0.0065324637, + 0.013300582, + 0.007755785, + -0.0040234434, + 0.00036907554, + 0.011477729, + 0.012468862, + -0.023343595, + -0.003002854, + 0.012115381, + -0.02247029, + 0.033712365, + -0.023204975, + -0.02894384, + 0.013016411, + 0.011456937, + -0.010313322, + 0.038591787, + 0.024826828, + 0.050651718, + -0.0024067883, + 0.005867088, + 0.010874732, + 0.0046437676, + -0.017507697, + -0.011117318, + 0.027266538, + -0.014291714, + 0.0006905005, + 0.0030704313, + 0.01064601, + -0.040809706, + -0.00018410459, + 0.013758027, + 0.03069045, + 0.0009781368, + 0.03673428, + 0.009211293, + 0.0022543066, + 0.008920192, + 0.0025384773, + -0.027807156, + -0.003569463, + -0.0084696775, + -0.006882479, + 0.0020637042, + -0.0155808795, + -0.011297524, + -0.0020637042, + -0.019739477, + -0.011630211, + 0.03437774, + -0.018006727, + -0.006702273, + 0.0109994905, + 0.0060576904, + 0.011678728, + -0.010119255, + -0.014929365, + -0.0026112527, + -0.021278158, + -0.01732749, + -0.034571808, + 0.009571706, + 0.007076547, + -0.01691163, + -0.031300377, + 0.017590867, + 0.0293597, + -0.015539293, + 0.016897768, + 0.021735603, + 0.009828152, + -0.0075686476, + -0.0016062583, + 0.0058636228, + -0.007880542, + -0.014028336, + 0.0028226483, + -0.0059052086, + 0.010174702, + -0.004924473, + 0.0062725516, + 0.010410356, + 0.02894384, + -0.002160738, + -0.016246255, + 0.020765264, + 0.025797168, + -0.013536235, + -0.0020844971, + -0.012004485, + -0.01940679, + -0.006546326, + -0.0024691673, + -0.028777495, + 0.023981247, + -0.0029370096, + 0.032326166, + -0.0023149527, + 0.008656814, + -0.014804607, + 0.010611355, + -0.021042503, + 0.0034187138, + 0.02366242, + 0.0004886352, + -0.01774335, + -0.0007715065, + 0.008372643, + 0.0007702069, + 0.016371014, + 0.0069829784, + -0.010687596, + -0.0006029967, + 0.012018347, + 0.020155337, + -0.011560901, + 0.012441138, + -0.008656814, + -0.01663439, + -0.013771889, + -0.01002222, + 0.004914076, + -0.006764652, + -0.034072775, + -0.014097646, + -0.009446948, + -0.035375804, + -0.00031406077, + -0.0009971971, + 0.011886658, + -0.01642646, + 0.013695648, + 0.010237081, + -0.011581695, + 0.016759148, + -0.014499644, + -0.029831007, + -0.0019285496, + 0.015636327, + -0.0038986853, + -0.012565896, + -0.00078017026, + 0.0029768627, + -0.0051947813, + 0.0058705537, + 0.019365203, + 0.004775456, + -0.037760068, + 0.01231638, + -0.013071858, + -0.01454123, + 0.021042503, + 0.006511671, + 0.009578637, + 0.013203547, + -0.007956783, + -0.002713485, + 0.008733055, + 0.019794924, + -0.017632455, + -0.02852798, + -0.0075270617, + 0.010555907, + -0.005378453, + 0.011505454, + 0.017798798, + -0.02380104, + 0.011713384, + 0.0137233725, + 0.010521252, + -0.010250943, + -0.003437774, + -0.0049903174, + 0.0011427479, + 0.00028265468, + 0.021319743, + -0.011983693, + 0.03193803, + 0.020072164, + 0.0014355825, + 0.02156926, + 0.0067854454, + 0.018783, + -0.039229438, + -0.010292529, + -0.007838957, + 0.03179941, + 0.019254306, + 0.00025428092, + -0.019808786, + -0.015081847, + 0.0009486801, + -0.000596932, + 0.02037713, + -0.0029959232, + 0.0058948123, + -0.004584854, + -0.0042209765, + 0.016509634, + -0.012011416, + -0.015830396, + 0.012940169, + -0.020501886, + 0.0144580575, + 0.029831007, + 0.03451636, + 0.012891653, + -0.035569873, + -0.019171136, + 0.008691469, + -0.005960657, + -0.003912547, + -0.0027308124, + -0.0006081949, + 0.023191113, + -0.02330201, + 0.01551157, + 0.009550912, + 0.033241056, + 0.017798798, + 0.026351647, + -0.008199369, + -0.00897564, + -0.022400979, + 0.0058151055, + 0.012718378, + -0.0095370505, + 0.01488778, + -0.011935175, + 0.015969016, + 0.008019162, + 0.01260055, + 0.0018211192, + 0.0033355418, + 0.019794924, + 0.007173581, + 0.018450312, + 0.02525655, + -0.008871675, + -0.011318317, + -0.0052710227, + 0.013425339, + 0.00077627157, + -0.008441953, + 0.007242891, + -0.028417084, + -0.016925493, + -0.019101825, + -0.014763022, + -0.010244012, + 0.024799105, + -0.004896749, + -0.003957599, + -0.02999735, + -0.01635715, + -0.008317195, + 0.0023028234, + 0.0029647336, + -0.017369077, + -0.045633677, + 0.003624911, + 0.021056365, + -0.01134604, + -0.010680665, + -0.023884213, + -0.0038189788, + -0.0040996843, + 0.0023738663, + 0.0056660892, + 0.020862298, + -0.011124249, + -0.004307614, + 0.009641016, + -0.028236877, + 0.032326166, + -0.011713384, + 0.002968199, + -0.0034412395, + -0.0065775155, + -0.02357925, + -0.0079429215, + -0.027141782, + 0.027918052, + 0.036512487, + -0.018796861, + -0.04216818, + -0.02400897, + -0.026393233, + 0.007845888, + 0.0068027726, + 0.0016487107, + 0.005142799, + -0.00723596, + -0.007915198, + -0.012642137, + -0.0012510448, + 0.032464787, + 0.0090726735, + -0.02073754, + -0.02407828, + -0.036318418, + -0.01064601, + 0.10180247, + 0.03263113, + 0.0059537254, + 0.007270615, + -0.004165529, + 0.007388442, + -0.008642952, + -0.0019285496, + 0.021804914, + 0.0007793039, + 0.012787688, + 0.01190052, + 0.009308328, + 0.0040303743, + 0.012954032, + 0.011401488, + -0.014527367, + -0.033435125, + -0.0033961881, + -0.010146978, + -0.0069344616, + -0.01990582, + -0.013508512, + 0.041585978, + -0.013792682, + 0.0012822343, + 0.021832637, + 0.023094079, + 0.0012250536, + -0.025658548, + -0.014236266, + 0.008005301, + -0.00995291, + 0.003860565, + -0.022997046, + 0.00967567, + 0.025298135, + 0.0008516461, + 0.019642442, + 0.0016209867, + 0.013155031, + 0.014596677, + -0.005343798, + -0.0053195395, + 0.027945776, + -0.0026667006, + -0.017979003, + 0.012489655, + -0.002444909, + -0.02366242, + 0.030939966, + -0.008039955, + -0.03598573, + -0.0012302519, + 0.0023218838, + 0.013023342, + 0.02080685, + 0.0056660892, + -0.023260422, + 0.001045714, + -0.001802059, + -0.035514425, + 0.007818163, + -0.01071532, + -0.010840078, + -0.03346285, + 0.007242891, + -0.0065671187, + -0.03199348, + -0.0011748038, + 0.0046056467, + -0.023981247, + -0.012143105, + 0.016343288, + 0.004969524, + -0.006206707, + 0.02567241, + -0.012753033, + -0.021333605, + 0.019600857, + -0.021181123, + -0.016176945, + -0.0052329022, + -0.008601367, + -0.021139538, + 0.03437774, + 0.006123535, + -0.01822852, + -0.014970952, + 0.011637143, + 0.026102131, + -0.01642646, + 0.007326063, + -0.0018332484, + -0.016246255, + -0.0017700031, + 0.016828459, + 0.019517684, + -0.022525737, + -0.019642442, + 0.034904495, + -0.029831007, + -0.017424524, + -0.008296402, + 0.029331975, + 0.019157274, + 0.00608888, + -0.0068027726, + -0.017369077, + 0.0017301498, + 0.03742738, + -0.019988993, + -0.00855978, + 0.008733055, + -0.002181531, + 0.014555092, + -0.014305576, + 0.019697892, + 0.015497707, + -0.035514425, + -0.023856489, + -0.00904495, + 0.0023010906, + 0.037676893, + -0.005052696, + -0.008289471, + -0.0018869637, + -0.011082663, + 0.009377638, + -0.00290582, + 0.0047962493, + 0.0347936, + 0.0077904398, + -0.012364897, + -0.024535727, + 0.0086706765, + -0.012856998, + 0.009100398, + -0.009211293, + -0.011644074, + -0.012545103, + 0.009051881, + -0.005364591, + -0.0059537254, + -0.023704007, + -0.04183549, + 0.015386811, + -0.013543166, + -0.0147214355, + 0.021208849, + -0.011228214, + 0.015816534, + -0.0047789216, + 0.016163083, + -0.03897992, + -0.022345532, + -0.007908267, + -0.005295281, + 0.0054928144, + 0.023066355, + 0.028472532, + -0.0062240344, + 0.003562532, + -0.0013342168, + 0.0066191014, + 0.003992254, + 0.027252676, + -0.0055136075, + -0.014707574, + 0.023676282, + 0.011997554, + -0.004182856, + -0.015691776, + -0.00038142139, + -0.012863928, + 0.015705638, + 0.020418715, + -0.01649577, + -0.0056452965, + -0.020307818, + -0.010361839, + -0.009966772, + -0.035514425, + 0.002479564, + -0.0061547244, + -0.008504332, + 0.025353584, + 0.0025020896, + 0.005101213, + -0.014596677, + 0.0327143, + -0.0045536645, + 0.00046914179, + 0.020058302, + 0.0014052595, + 0.0046576294, + 0.0047096116, + -0.0016556417, + -0.005122006, + 0.013889716, + 0.012489655, + -0.008913261, + -0.015123433, + -0.0011626746, + 0.008379574, + 0.020224646, + 0.010535114, + -0.013619407, + 0.019171136, + -0.025062481, + -0.011657936, + -0.010535114, + -0.013813475, + -0.018076038, + -0.018394863, + 0.023426767, + -0.029692387, + 0.017979003, + -0.013064927, + -0.03124493, + 0.0075339926, + 0.00883702, + 0.017105699, + 0.004217511, + 0.025020896, + 0.018020589, + 0.00018702859, + -0.014638264, + 0.017147284, + 0.006310672, + -0.023898074, + 0.028555704, + 0.017687902, + -0.0035937214, + -0.012170829, + -0.009516258, + 0.004363062, + -0.018810723, + -0.0033736622, + 0.03590256, + 0.017992865, + 0.00876771, + -0.0078112325, + -0.009141983, + -0.01781266, + 0.028583428, + -0.02219305, + -0.00995291, + -0.0096687395, + -0.02330201, + -0.012399552, + 0.018672103, + -0.02219305, + 0.004706146, + 0.007845888, + -0.021319743, + 0.011124249, + -0.018519621, + -0.013570891, + 0.011373765, + 0.016412599, + 0.017272042, + -0.027613088, + -0.0058151055, + 0.0076379576, + 0.0058497605, + -0.013459994, + -0.006615636, + -0.008053818, + 0.028500255, + -0.007478545, + 0.0007112935, + 0.0098836, + -0.02032168, + 0.03046866, + -0.0027931915, + -0.011852004, + -0.01892162, + -0.0068201004, + -0.01836714, + 0.0045536645, + 0.020224646, + -0.008199369, + -0.009550912, + -0.017563144, + -0.008989502, + -0.007915198, + -0.0048586284, + 0.010528183, + 0.0038155133, + -0.010036082, + -0.011145041, + -0.0073953727, + 0.014943227, + -0.0062794825, + -0.0019302825, + 0.008920192, + 0.028028948, + -0.02776557, + 0.0074369586, + 0.006650291, + 0.0018956275, + -0.029193355, + 0.009862808, + -0.008448884, + -0.010410356, + 0.019448375, + 0.018311692, + -0.020335542, + 0.008227092, + -0.0038536338, + 0.007984508, + 0.009876669, + 0.009446948, + 0.031965755, + 0.0014693711, + -0.020820713, + -0.0013515443, + -0.021070229, + 0.011845073, + -0.016038325, + 0.00828254, + 0.02344063, + -0.013557028, + 0.01711956, + 0.0024414433, + 0.019226583, + 0.037593722, + -0.016412599, + -0.012787688, + -0.00476506, + 0.0005271889, + -0.011470798, + -0.04632678, + -0.01705025, + -0.003583325, + -0.021680156, + 0.042057283, + -0.003583325, + 0.00042603965, + 0.012863928, + 0.019670166, + 0.01962858, + 0.009585568, + -0.0030271125, + -0.01795128, + -0.014638264, + -0.0061616553, + 0.0054165735, + -0.0100014275, + -0.007457752, + 0.026102131, + 0.01064601, + -0.02581103, + -0.006632963, + 0.0020810317, + -0.022373255, + 0.01962858, + -0.02227622, + 0.02073754, + 0.022096016, + 0.012392621, + 0.0016166548, + 0.00959943, + 0.013217409, + 0.0040130466, + -0.022165326, + -0.03102314, + -0.0034065845, + -0.029886454, + -0.0050007137, + -0.025824891, + -0.016870044, + -0.010957905, + 0.03041321, + -0.0050353687, + 0.0116648665, + 0.012080726, + -0.011172766, + 0.0035729285, + 0.0022629702, + 0.0014962287, + -0.00049340026, + 0.014139232, + 0.026975436, + -0.027280401, + 0.006137397, + 0.030219143, + 0.010902457, + -0.01677301, + -0.010978698, + 0.010084599, + -0.014104577, + 0.011041077, + -0.014305576, + 0.01935134, + 0.006650291, + -0.030357763, + 0.009294466, + -0.018173072, + -0.025492204, + 0.009661809, + -0.012496586, + -0.0017509429, + -0.012753033, + 0.013148099, + -0.029193355, + -0.011519316, + 0.023329733, + -0.006813169, + 0.0028347773, + -0.013626338, + -0.015691776, + -0.017424524, + 0.006868617, + -0.0036907555, + -0.014527367, + 0.0008711396, + 0.028444808, + 0.024161452, + -0.015594741, + -0.00765182, + 0.0016963613, + -0.027543778, + 0.014513506, + -0.014527367, + 0.0014832332, + -0.023482215, + -0.0013567425, + -0.00055924477, + -0.022913873, + -0.017105699, + -0.007478545, + -0.00821323, + -0.00849047, + 0.0015170218, + 0.20615555, + -0.010361839, + 0.005316074, + 0.03498767, + 0.006359189, + 0.020002855, + 0.010569769, + 0.022622772, + -0.0043388037, + 0.012822343, + -0.024410969, + 0.0005024972, + 0.014832332, + 0.013494649, + 0.01767404, + -0.011470798, + -0.022844562, + -0.037593722, + -0.026628887, + 0.025575375, + 0.013688717, + 0.0070938743, + -0.014132301, + -0.016537357, + 0.0015768016, + 0.008393437, + -0.02414759, + -0.017992865, + 0.02894384, + 0.011096525, + 0.00946081, + 0.011359903, + -0.025436755, + -0.00009031954, + -0.00029478394, + 0.019850373, + -0.0025696668, + 0.032880645, + 0.019947406, + 0.0016833657, + -0.0060854144, + -0.0077141984, + -0.014665987, + 0.0013550097, + -0.0038813578, + -0.011158904, + -0.0043388037, + 0.008455815, + -0.0034741617, + 0.027557641, + -0.033157885, + -0.008739986, + 0.020488024, + 0.026310062, + 0.0031154826, + -0.02324656, + 0.035597596, + 0.030108247, + 0.0028295792, + -0.015456121, + -0.02269208, + 0.01948996, + -0.0048482316, + 0.010722251, + -0.0019770667, + 0.020404853, + -0.023204975, + -0.003694221, + 0.012288656, + -0.0045536645, + -0.00062812155, + -0.013709511, + -0.0017492102, + 0.0068720826, + -0.02547834, + -0.017771075, + 0.027931914, + -0.01120742, + 0.0008572776, + 0.022345532, + 0.0006632097, + -0.0056452965, + -0.0043318723, + 0.003203853, + 0.0029907248, + -0.028153706, + 0.03645704, + 0.013356029, + -0.023981247, + 0.00026294467, + -0.0057735196, + -0.0056868824, + 0.0048413007, + -0.012337173, + 0.0003433009, + 0.005402711, + 0.0015308837, + 0.041696873, + -0.02310794, + -0.009821221, + -0.016662115, + -0.02484069, + 0.021527674, + -0.0028191826, + 0.009232087, + 0.008150851, + -0.008296402, + 0.017881969, + -0.006979513, + -0.014943227, + -0.015705638, + -0.012413414, + 0.020931609, + -0.014790745, + 0.022082154, + 0.0040823566, + -0.005364591, + -0.011997554, + 0.0015048925, + -0.0125936195, + 0.017244319, + 0.0049972483, + 0.0010630415, + -0.0035365408, + 0.016398737, + -0.012579758, + -0.026115993, + 0.009627153, + -0.002236979, + -0.036346145, + 0.011699521, + -0.0011574763, + 0.01260055, + 0.011110387, + -0.039201714, + 0.007014168, + 0.0024466417, + 0.007173581, + -0.006736928, + 0.018214658, + 0.0016556417, + -0.021236572, + -0.0068304967, + 0.01467985, + 0.0013541434, + 0.006276017, + 0.024119867, + -0.0045813886, + -0.0063661197, + -0.010978698, + -0.012572827, + 0.00010591428, + -0.023080217, + -0.020501886, + 0.0293597, + 0.006234431, + -0.021860361, + -0.026129855, + 0.0113321785, + 0.0115955565, + -0.018048314, + -0.0001495579, + 0.025464479, + 0.007686475, + -0.0003125446, + -0.010424218, + -0.17987321, + 0.017105699, + 0.016967079, + -0.01537295, + 0.025228826, + 0.020723678, + 0.021194985, + -0.0026805627, + -0.013411477, + 0.0053126086, + 0.02129202, + -0.0075339926, + -0.027613088, + -0.008462747, + -0.020917745, + 0.0026476404, + 0.0013913974, + 0.013563959, + 0.018200796, + 0.009828152, + 0.02380104, + -0.03396188, + 0.023856489, + -0.000010633394, + -0.011865865, + 0.00019287663, + -0.011366834, + 0.00932219, + -0.0020255835, + -0.033379678, + -0.01635715, + 0.000749414, + 0.041336462, + 0.02533972, + 0.008532057, + 0.03227072, + 0.0011921313, + 0.0057146065, + -0.015622465, + 0.010375701, + 0.00849047, + 0.006352258, + -0.0023946592, + -0.009433086, + -0.007901335, + 0.01621853, + 0.012704516, + -0.0065948428, + -0.0037704618, + 0.003167465, + -0.007048823, + -0.02636551, + -0.010743044, + -0.002940475, + 0.0076587508, + 0.013203547, + 0.0054512285, + 0.0013784019, + -0.0005761391, + 0.008871675, + -0.035874836, + -0.00025428092, + 0.017784936, + -0.021139538, + -0.011443075, + -0.011810417, + -0.02477138, + -0.013709511, + -0.021319743, + 0.016592804, + -0.012607482, + -0.015650189, + -0.0017076242, + -0.039700747, + -0.016010601, + 0.020765264, + -0.025921926, + 0.0051289373, + -0.008227092, + 0.0037704618, + -0.0067923763, + 0.046520844, + -0.013619407, + -0.0029040873, + 0.0058324332, + -0.005385384, + 0.0034568342, + 0.020418715, + -0.010847009, + -0.016939355, + 0.007346856, + -0.010382632, + -0.006546326, + -0.0097380495, + 0.023288148, + 0.016925493, + -0.016232394, + 0.027640812, + -0.013959026, + -0.016925493, + -0.00084731425, + -0.005551728, + -0.02136133, + 0.014090715, + 0.044053413, + 0.01447192, + -0.00060559576, + -0.0019372134, + 0.013605545, + -0.0006012639, + -0.019018654, + 0.0021018246, + 0.030856794, + 0.010763837, + -0.016010601, + 0.013515443, + 0.012323311, + -0.009135053, + 0.025145654, + -0.01760473, + 0.04410886, + -0.0073607177, + 0.0047026807, + 0.013113445, + 0.015109572, + -0.013418408, + -0.13895261, + -0.031272653, + 0.012129243, + 0.038647234, + 0.0032229132, + 0.02122271, + 0.008573642, + 0.0056314343, + 0.012940169, + 0.020862298, + -0.022816839, + -0.02212374, + 0.005447763, + 0.020973194, + 0.018741414, + -0.009377638, + -0.0021936602, + -0.023620835, + -0.012011416, + 0.022719806, + -0.0068998067, + -0.0014633066, + 0.0105767, + 0.006068087, + 0.008441953, + 0.008726124, + -0.020474162, + 0.021264296, + 0.012448069, + 0.0005076955, + 0.0013558761, + -0.023288148, + 0.019642442, + -0.036900625, + -0.0150264, + 0.024341658, + -0.009398431, + 0.000066169356, + 0.026102131, + -0.035375804, + 0.003411783, + -0.0036283764, + 0.024438692, + -0.02136133, + -0.007977577, + 0.0022733668, + -0.015650189, + 0.020224646, + 0.013903578, + -0.02073754, + -0.030302314, + 0.003527877, + -0.00959943, + -0.009356845, + 0.01940679, + -0.015469983, + -0.0005536133, + 0.024161452, + -0.004245235, + -0.0033060852, + 0.0023513404, + -0.009051881, + -0.0055274693, + 0.0034499033, + 0.0066260323, + 0.005343798, + -0.013321375, + -0.009211293, + 0.010458873, + -0.0014451126, + 0.0025367446, + 0.014901642, + -0.005420039, + 0.026670473, + -0.031050863, + -0.0069552544, + -0.015761085, + -0.0037600654, + 0.010950974, + -0.03069045, + -0.010978698, + -0.0155808795, + 0.006262155, + -0.0010517787, + 0.020196922, + 0.020890022, + 0.024854552, + 0.006137397, + 0.0030323109, + -0.0071943738, + 0.008608297, + -0.0058601573, + 0.023814902, + -0.0197672, + 0.008344919, + -0.00723596, + 0.012205484, + -0.021056365, + -0.007277546, + 0.02665661, + -0.02832005, + -0.02366242, + -0.10518479, + 0.017701764, + -0.0063487925, + -0.0024709, + 0.0029266132, + -0.002706554, + -0.0002720416, + -0.008109265, + 0.0049348692, + -0.037732344, + -0.03276975, + 0.013155031, + -0.0077141984, + 0.0068270313, + -0.031189483, + -0.014804607, + 0.026947713, + 0.018034453, + -0.0025280807, + -0.0100014275, + 0.00006822699, + 0.0013818673, + 0.012198553, + 0.016800735, + -0.024064418, + -0.005586383, + 0.011775763, + -0.0067750486, + -0.014160025, + 0.0057908474, + 0.0016253185, + -0.024549589, + 0.0033615332, + 0.040948324, + -0.004120477, + -0.01585812, + -0.03742738, + 0.01474916, + 0.012884722, + 0.0204603, + -0.023745593, + -0.026698196, + 0.025755582, + -0.017285904, + 0.014166956, + 0.021070229, + 0.0013264194, + 0.02400897, + 0.020903884, + 0.008220161, + -0.005822037, + 0.022068292, + 0.009897462, + -0.01843645, + -0.021264296, + -0.020931609, + 0.01642646, + 0.027640812, + 0.013965957, + -0.020987056, + 0.031633068, + 0.011962899, + 0.017355215, + -0.005402711, + 0.003238508, + -0.02170788, + -0.020557335, + -0.01405606, + -0.006255224, + -0.026060546, + -0.015733361, + -0.011644074, + 0.020432577, + 0.0064596883, + 0.034682706, + -0.006553257, + -0.00090622774, + -0.0044843545, + 0.0063765165, + 0.03160534, + -0.004879421, + 0.012829274, + -0.0456614, + 0.020820713, + 0.013563959, + 0.0033961881, + -0.014430334, + -0.016066048, + -0.021305881, + 0.020141475, + 0.019753339, + 0.010084599, + 0.02463276, + -0.010819285, + -0.003086026, + 0.01426399, + 0.019309755, + -0.019711753, + 0.0016504434, + 0.014638264, + 0.003673428, + -0.011290593, + -0.025977373, + -0.0016920294, + -0.018685965, + -0.013945164, + -0.026850678, + -0.022442566, + -0.0065740496, + 0.013702579, + 0.0093360515, + 0.021097952, + 0.008663745, + 0.02991418, + -0.0045605954, + 0.0057908474, + 0.00723596, + -0.014652126, + -0.026864542, + 0.017577006, + 0.046160433, + 0.019434514, + 0.028555704, + 0.0032575682, + 0.014180818, + 0.003694221, + -0.005489349, + -0.03681745, + 0.01767404, + -0.0073329937, + 0.0022491082, + -0.013861992, + -0.016454184, + -0.0030548365, + -0.008587504, + 0.0012934972, + 0.0026961574, + 0.018783, + -0.032242995, + 0.049431864, + -0.018519621, + -0.015885843, + -0.0016253185, + -0.005343798, + 0.017646316, + 0.00240159, + 0.018186934, + -0.032326166, + -0.005752727, + 0.007915198, + 0.0013454796, + 0.013758027, + -0.009065743, + -0.010535114, + -0.0056452965, + -0.040976048, + 0.0027117522, + -0.019850373, + 0.001718887, + 0.03415595, + 0.01495709, + 0.015899705, + 0.012552034, + -0.025686271, + -0.020474162, + 0.011498523, + 0.0055136075, + 0.00008230558, + -0.012053003, + 0.013314444, + -0.009751911, + -0.038924474, + -0.03096769, + -0.0020238508, + -0.0019891958, + -0.011165835, + -0.003458567, + 0.0043041487, + 0.014638264, + -0.0064388956, + 0.0429999, + -0.011290593, + -0.029526044, + 0.0103964945, + -0.0064354297, + -0.007346856, + -0.013584753, + -0.0008802365 + ] + }, + { + "object": "embedding", + "index": 8, + "embedding": [ + 0.011767127, + 0.006192154, + -0.0037607332, + -0.028241105, + -0.003828555, + 0.013503372, + -0.025406143, + 0.0040421947, + -0.009298404, + -0.010261477, + -0.004018457, + 0.0074604265, + -0.0018278045, + 0.0119773755, + -0.013076093, + -0.0055546267, + 0.033314195, + -0.00091305445, + 0.020034635, + -0.005205343, + -0.020780679, + 0.010403904, + 0.020210974, + -0.022530487, + -0.01789146, + -0.0061141583, + 0.015368478, + 0.0002994768, + -0.008905036, + -0.009352662, + -0.008735481, + -0.017376011, + -0.020333054, + -0.0075011197, + -0.010152962, + -0.0062396294, + -0.010770143, + 0.0021414815, + 0.0021041792, + -0.020021072, + 0.028078333, + -0.003923506, + -0.011305937, + 0.00513413, + -0.024253167, + 0.03917402, + 0.000032453914, + 0.012289356, + -0.020088894, + 0.026125057, + 0.004445736, + 0.019180078, + -0.021051968, + -0.018474728, + -0.02327653, + -0.015856797, + -0.013198173, + 0.019315721, + 0.0029129575, + -0.00022169335, + -0.025758818, + -0.024985647, + -0.018881662, + 0.008206469, + 0.0032673276, + 0.0022499969, + -0.015015803, + 0.006232847, + -0.0065414375, + 0.008769392, + 0.02859378, + -0.0094137015, + 0.008674441, + -0.004571207, + 0.018298391, + -0.01592462, + -0.026545553, + -0.0027891821, + -0.009725683, + -0.0009537477, + 0.010064794, + -0.011197422, + -0.015707588, + 0.026681198, + 0.022639003, + 0.012133366, + 0.004255834, + 0.029489031, + -0.0065448284, + 0.011923118, + 0.011061777, + 0.012764111, + -0.010749796, + 0.007080623, + -0.028729424, + -0.021255434, + -0.020441568, + 0.048045147, + -0.019966815, + -0.025107726, + 0.023466432, + -0.024958517, + -0.032147657, + -0.012811586, + -0.024985647, + -0.015368478, + -0.0141341165, + 0.0130354, + 0.009040681, + -0.004849277, + -0.014093423, + 0.03133379, + 0.021567414, + -0.06516343, + 0.005303685, + -0.01417481, + -0.022408407, + -0.031659335, + -0.009637514, + -0.02364277, + 0.023561383, + 0.031713594, + 0.017660864, + 0.0018244133, + 0.028485265, + -0.009149196, + -0.0013479633, + -0.021594543, + 0.0015031063, + -0.0018735843, + 0.027698528, + 0.008525233, + 0.021160481, + 0.0084235, + -0.017633734, + 0.018651066, + -0.015856797, + 0.023018807, + -0.012235099, + -0.023791978, + -0.016060263, + 0.01509719, + -0.032635976, + 0.0055546267, + -0.01220797, + 0.025894461, + 0.024700794, + 0.014459663, + 0.0021838702, + -0.0073044356, + 0.018705323, + -0.01589749, + 0.010098704, + -0.01669779, + 0.0071009696, + 0.010349646, + 0.008626966, + 0.027779914, + -0.011312719, + 0.0013589845, + -0.008498104, + 0.011895989, + 0.01405273, + -0.0033046298, + 0.037492033, + 0.009325533, + -0.0029044796, + 0.014961546, + 0.016236601, + -0.013510154, + -0.015015803, + 0.007826665, + -0.038821347, + 0.016874127, + 0.02361564, + 0.033287067, + 0.013693273, + -0.0076231994, + -0.020889195, + -0.0010478508, + -0.0061378963, + 0.021933654, + 0.030465668, + 0.026423473, + -0.033070035, + -0.012960795, + 0.03255459, + -0.013510154, + 0.0278613, + -0.01266916, + 0.019139385, + 0.026179314, + 0.021947218, + -0.01152975, + -0.66194326, + -0.003367365, + -0.010980391, + 0.021268997, + 0.0051002186, + 0.018189875, + 0.010573459, + 0.00056334696, + -0.025867334, + 0.0013691578, + -0.021363948, + 0.0028078333, + -0.0089999875, + 0.0003458925, + -0.0089999875, + -0.00086218794, + 0.0006595695, + -0.001080914, + 0.0008346352, + 0.009210235, + 0.0023144276, + 0.022082862, + 0.004238879, + -0.013455897, + 0.021920089, + 0.014120553, + 0.027942687, + -0.036813814, + -0.0042592254, + -0.0023686853, + -0.013062528, + 0.016250165, + -0.012472477, + -0.0058530434, + 0.020156715, + -0.00061675685, + -0.025080597, + 0.022462666, + -0.0069585433, + 0.04430137, + -0.014812337, + 0.0049408367, + 0.01869176, + -0.010512419, + -0.000081545426, + 0.004255834, + 0.026816841, + -0.0060531185, + 0.014066295, + 0.00074519485, + 0.010064794, + -0.025053468, + -0.012675943, + 0.0051917783, + 0.012621685, + 0.0023992052, + 0.016779177, + 0.0032673276, + 0.0030096038, + 0.012418219, + -0.0002490341, + -0.019030869, + -0.021174047, + -0.012370744, + 0.0007621504, + 0.015042933, + -0.01393065, + 0.00321307, + 0.0034826626, + -0.011027867, + -0.0049272724, + 0.022910291, + -0.011339848, + 0.010193655, + 0.0010359819, + 0.01346946, + 0.02026523, + -0.027752787, + 0.0006358318, + -0.011448364, + 0.007087405, + -0.004313483, + -0.04362315, + -0.010308953, + 0.040286303, + -0.021011274, + -0.011292373, + -0.011855296, + 0.033721127, + -0.02029236, + 0.012628467, + 0.01881384, + -0.008328549, + 0.010837965, + -0.0077927546, + 0.017457398, + -0.0039438526, + 0.01441897, + 0.008416717, + -0.016670661, + -0.0033588875, + -0.006215892, + 0.016507888, + 0.0053308136, + 0.012784458, + 0.0040896703, + -0.025039904, + 0.031496562, + 0.023086628, + -0.030547054, + -0.015599073, + -0.0017014858, + -0.0018871487, + 0.00043406116, + 0.02499921, + -0.034752022, + 0.009325533, + 0.029461902, + 0.03255459, + -0.015232834, + -0.0018735843, + -0.00079309416, + 0.0018244133, + -0.012397872, + -0.027467933, + 0.006880548, + -0.004221923, + -0.021146918, + 0.0033470185, + 0.0216488, + 0.004449127, + 0.0040998436, + 0.028648037, + -0.0063786646, + 0.039011247, + 0.009122067, + 0.033124294, + -0.011658612, + 0.007941963, + 0.005524107, + -0.031686466, + -0.012065544, + -0.00968499, + 0.0007252721, + -0.010397121, + -0.03846867, + -0.012099455, + -0.0051137833, + -0.03477915, + 0.016073829, + 0.001085153, + -0.0035030092, + -0.015110754, + 0.0010902396, + -0.016223036, + -0.020305924, + 0.0006366796, + -0.003050297, + -0.022096427, + -0.0068398546, + 0.0024314208, + 0.0065177, + -0.01122455, + -0.015639767, + 0.0022059125, + -0.0018295, + 0.02521624, + 0.011319501, + -0.012831934, + -0.014106988, + -0.0062192827, + 0.00008382383, + -0.015029368, + 0.024456633, + 0.0154634295, + -0.0060904208, + 0.01122455, + 0.015232834, + 0.0076978034, + 0.023018807, + 0.010519201, + -0.0033521052, + -0.029868834, + -0.010492072, + 0.029380515, + -0.00038086323, + 0.028566651, + -0.0012555559, + -0.011631483, + 0.0016116217, + 0.0076503283, + 0.0034657072, + 0.0006366796, + 0.0027739222, + 0.002623018, + 0.0054257647, + -0.007019583, + -0.0019532752, + 0.010505637, + 0.0057173995, + 0.021133354, + 0.0078198835, + 0.019478494, + 0.009305187, + 0.0062396294, + -0.018935919, + -0.014269761, + -0.016440067, + 0.019505624, + 0.0036149158, + 0.021418206, + -0.021445334, + -0.020102458, + -0.0015861883, + -0.0040659322, + 0.03111676, + -0.015666895, + 0.004225314, + -0.0042897454, + -0.007745279, + 0.009603604, + -0.017335318, + -0.0048967525, + 0.010186873, + -0.045549296, + 0.013089657, + 0.011122817, + 0.01958701, + -0.0038014264, + -0.013781442, + -0.017253932, + 0.003984546, + 0.003659, + 0.011177075, + -0.029895963, + 0.0066126506, + 0.018434035, + -0.020563647, + 0.03543024, + -0.0011394105, + 0.02330366, + 0.028213976, + 0.024877131, + -0.024822874, + 0.0031774633, + -0.007704586, + 0.026925357, + 0.008213251, + -0.007908052, + -0.0012487737, + -0.011319501, + 0.01331347, + -0.0025941937, + -0.0067855967, + 0.0020855283, + -0.0051002186, + 0.018705323, + -0.0120791085, + 0.01854255, + 0.022462666, + -0.010871876, + -0.0044694734, + 0.006656735, + -0.006883939, + -0.00055020646, + 0.013164261, + 0.016833434, + 0.0017565913, + -0.032174785, + -0.02422604, + -0.0034114495, + -0.020590777, + 0.01168574, + -0.011394106, + 0.01134663, + -0.018732453, + -0.015694024, + -0.025080597, + 0.0060056434, + 0.005476631, + -0.005144303, + -0.029570417, + 0.011461928, + 0.016087392, + -0.01116351, + -0.021879395, + -0.015273527, + 0.00019021968, + -0.00412019, + 0.018149182, + 0.014147681, + 0.014364712, + -0.007541813, + 0.0038658574, + -0.011611137, + -0.011550097, + 0.029190613, + -0.021282561, + -0.005710617, + -0.003367365, + -0.007948745, + -0.02429386, + 0.0066024773, + -0.008247162, + 0.024185346, + 0.011109253, + -0.013015053, + -0.014120553, + 0.0029875617, + -0.019139385, + -0.0019142776, + 0.015816104, + 0.0033724518, + 0.014785209, + 0.002041444, + 0.007806319, + -0.0040455856, + 0.0054596756, + 0.018244134, + -0.007643546, + 0.004903535, + -0.030357152, + -0.023710592, + -0.020834936, + 0.121645644, + -0.0028061375, + -0.0020516173, + 0.002687449, + 0.006293887, + -0.0049883123, + -0.010654845, + -0.0035538757, + 0.0024941561, + -0.00027467933, + 0.0071348804, + -0.01337451, + -0.00839637, + 0.0119773755, + -0.00059174746, + -0.0060395543, + -0.016467195, + 0.0031384658, + 0.0047916286, + -0.015259963, + -0.00056037976, + -0.031035373, + 0.011536532, + 0.03358548, + -0.005931039, + 0.01488016, + 0.013510154, + 0.009373008, + 0.01226901, + -0.032853004, + -0.007813101, + 0.029678933, + -0.008152211, + 0.022299893, + 0.0062091094, + 0.026721891, + 0.021119788, + 0.013984908, + 0.023113757, + -0.013449114, + 0.009590039, + 0.012580992, + 0.0135305, + -0.018284827, + 0.032527458, + -0.021363948, + 0.0012903146, + 0.016874127, + -0.0016523149, + -0.021363948, + 0.03274449, + 0.016155215, + -0.03160508, + 0.0032842832, + -0.010688757, + 0.013944215, + 0.0041778386, + -0.0007443471, + 0.0008295485, + 0.012811586, + -0.0032045923, + -0.038360156, + 0.00642614, + -0.0014954763, + -0.01036321, + -0.024036137, + -0.0013293123, + 0.015965313, + -0.021784445, + -0.010180091, + 0.0051544765, + -0.027481498, + -0.013849264, + 0.023886928, + 0.010892223, + -0.0073383464, + 0.027237339, + -0.004717024, + -0.010295388, + 0.02339861, + -0.022856034, + 0.00039485155, + -0.010946481, + -0.010756578, + -0.03225617, + 0.024632972, + 0.023832671, + -0.015300657, + -0.011482274, + 0.0069381967, + 0.010458161, + 0.017850766, + 0.019139385, + 0.014256196, + -0.006822899, + -0.012587774, + -0.01263525, + 0.012614903, + -0.016223036, + -0.019573446, + 0.020238101, + -0.01696908, + 0.001300488, + 0.005049352, + 0.019898992, + 0.031822108, + 0.018271262, + 0.015178576, + -0.010661627, + 0.012499605, + 0.027549319, + -0.034236576, + 0.0260708, + 0.012804804, + -0.015259963, + 0.0049544014, + -0.0015319308, + 0.01205198, + 0.020183844, + -0.0042049675, + -0.008003003, + -0.011970594, + 0.012859062, + 0.027006743, + -0.0051137833, + 0.0050391788, + -0.015734717, + 0.001179256, + -0.0011343239, + 0.015571944, + 0.0024687229, + 0.023357917, + -0.018054232, + -0.00590391, + -0.026247136, + 0.0019871863, + -0.018366214, + 0.013028617, + -0.009291622, + -0.009834198, + -0.012770893, + 0.014825902, + 0.0061684162, + -0.022828905, + -0.026437039, + -0.024958517, + 0.0025009385, + 0.0004192251, + -0.023127321, + 0.01577541, + -0.00020802298, + 0.011102471, + -0.011326283, + 0.007813101, + -0.019085128, + -0.014364712, + -0.027264467, + -0.02330366, + -0.0029044796, + 0.02337148, + 0.03871283, + -0.0048255394, + 0.025012774, + -0.0033843208, + 0.013449114, + -0.00035479415, + 0.008348895, + 0.012140148, + -0.027996946, + 0.0032825875, + 0.010003754, + -0.0071009696, + -0.009895238, + 0.01079049, + -0.011733216, + 0.021798009, + -0.0001939287, + -0.0117196515, + -0.011482274, + -0.0063074515, + -0.023385046, + -0.029299129, + -0.015599073, + -0.001655706, + -0.016521454, + -0.007284089, + 0.022055734, + 0.0025297627, + 0.0097731585, + -0.017362447, + -0.0014446098, + -0.008369242, + 0.02878368, + -0.000865579, + -0.020305924, + -0.0027111867, + 0.00581235, + -0.020468697, + -0.018990176, + 0.024022574, + 0.000786312, + 0.0019804041, + -0.012926884, + 0.021892961, + 0.0047509354, + 0.01325243, + 0.01266916, + 0.0044355625, + 0.010770143, + -0.018949483, + -0.016467195, + -0.008470975, + -0.0112584615, + -0.021825138, + -0.009020334, + 0.012418219, + 0.0021346994, + 0.027807044, + -0.028159719, + -0.01881384, + 0.012106237, + 0.006965325, + 0.011183857, + 0.004316874, + 0.025067033, + 0.013598323, + 0.0029739973, + -0.022747518, + 0.014500356, + -0.011482274, + -0.009020334, + 0.047475442, + 0.022367714, + 0.004686504, + -0.022856034, + 0.0004115951, + 0.0035504848, + -0.006866983, + -0.0008626118, + 0.04427424, + 0.0100783575, + -0.0015200619, + -0.0067381216, + -0.004157492, + -0.030248638, + 0.0049544014, + -0.0084913215, + -0.005941212, + -0.026789714, + -0.015504123, + -0.0094611775, + 0.00044635392, + -0.0076910215, + 0.0075689415, + 0.0061378963, + -0.018623937, + -0.0045915535, + 0.0038794216, + -0.014636, + 0.02524337, + 0.02398188, + 0.011611137, + -0.0125402985, + 0.013523718, + 0.023900494, + -0.0043338295, + -0.013754313, + -0.016006006, + -0.00359796, + 0.022245634, + -0.01395778, + 0.0010495463, + 0.0071416628, + -0.010214002, + 0.024307426, + 0.003129988, + 0.017552348, + -0.0032215477, + -0.012872627, + -0.0020550084, + 0.005602102, + 0.030411411, + 0.006144678, + -0.003209679, + -0.034724895, + -0.020373747, + -0.004744153, + -0.0065821307, + 0.02152672, + 0.014825902, + -0.0055614086, + 0.002407683, + -0.024578713, + 0.011733216, + 0.0022533878, + -0.01749809, + 0.0012428393, + 0.029353386, + -0.021784445, + 0.00777919, + 0.008688006, + 0.022340586, + -0.023168014, + -0.008199687, + 0.004676331, + -0.006226065, + 0.021024838, + 0.0031537258, + -0.0027162733, + -0.011448364, + -0.016440067, + -0.0044966023, + -0.008165776, + -0.0050222236, + 0.037709065, + -0.0021635236, + -0.0039981105, + -0.0034182316, + -0.023534253, + 0.03363974, + -0.017240368, + 0.006677082, + 0.020129588, + -0.014866595, + 0.0015980572, + 0.022367714, + 0.0094137015, + 0.007860577, + -0.005005268, + -0.030004479, + 0.0061209407, + 0.016223036, + -0.007324782, + -0.028539522, + -0.01577541, + -0.013564412, + -0.012519952, + 0.027549319, + -0.0050696987, + -0.006907677, + 0.008464193, + 0.017782943, + 0.05577686, + 0.003662391, + -0.004649202, + -0.023317223, + -0.011495839, + -0.0009774854, + -0.03391103, + -0.00029269457, + -0.0041371454, + 0.02364277, + -0.011509404, + -0.014825902, + -0.022055734, + 0.008199687, + -0.039770856, + 0.008118301, + -0.014324019, + 0.020929888, + 0.008755827, + 0.008321767, + 0.013110003, + 0.004544078, + 0.0013572889, + 0.0061514606, + -0.018067796, + -0.006622824, + 0.02232702, + -0.04061185, + 0.016128086, + -0.012018069, + -0.014703822, + 0.017606607, + 0.020319488, + 0.0041642743, + -0.0009791809, + 0.02152672, + -0.029434772, + 0.0070399297, + 0.0039404617, + 0.014012037, + -0.0020075329, + 0.021174047, + 0.0014081554, + -0.024619406, + 0.012506387, + 0.024470199, + -0.012065544, + 0.0012716636, + 0.018339084, + 0.000033884535, + 0.0063854465, + 0.015382043, + -0.013639016, + 0.002948564, + 0.024266733, + -0.025962284, + 0.024755051, + -0.015219269, + 0.0060124253, + 0.0067313393, + -0.008247162, + 0.0026399735, + 0.004052368, + 0.017850766, + -0.03206627, + -0.011597572, + 0.01786433, + -0.014947982, + -0.0077249324, + 0.005469849, + 0.0145953065, + -0.03751916, + -0.009508653, + -0.014907288, + -0.0064498778, + -0.015124319, + 0.027508626, + 0.019478494, + -0.013150697, + -0.012614903, + -0.009671425, + -0.020780679, + 0.005340987, + -0.023045935, + 0.006656735, + -0.013110003, + -0.009352662, + -0.0010936307, + -0.0047543263, + -0.02133682, + -0.0060836384, + 0.002139786, + 0.008403153, + 0.0057614837, + 0.2369974, + -0.027996946, + 0.0017379402, + 0.025962284, + 0.007975874, + 0.011292373, + 0.03382964, + 0.0141341165, + -0.012465694, + 0.000540457, + -0.031008245, + 0.0068873297, + 0.004554251, + 0.007880923, + 0.0063447533, + 0.0011190639, + -0.032418944, + -0.05669924, + -0.019600574, + -0.009556128, + -0.0020702684, + -0.000778682, + -0.008755827, + -0.013428767, + 0.022299893, + 0.010776925, + -0.010770143, + -0.014446098, + 0.017660864, + 0.0056224484, + -0.012553863, + -0.0012046893, + -0.018895226, + 0.007941963, + 0.0037471687, + 0.015273527, + -0.01657571, + -0.0022211724, + 0.0013683101, + 0.020129588, + -0.009637514, + -0.004327047, + -0.0024941561, + -0.021892961, + -0.023262966, + 0.015219269, + -0.011631483, + -0.005378289, + -0.014527485, + 0.027617142, + -0.04796376, + -0.0069348053, + 0.019641267, + 0.03339558, + 0.002389032, + -0.012920102, + 0.0445184, + 0.012302921, + -0.009020334, + -0.015042933, + -0.038875602, + 0.0072637424, + -0.011299155, + 0.0008672746, + -0.009528999, + 0.0145410495, + -0.029597547, + -0.00830142, + 0.0029282174, + 0.0120791085, + -0.008572708, + -0.02398188, + -0.009786723, + -0.0017938934, + -0.019112255, + -0.036216978, + 0.013815354, + 0.0077588432, + -0.004510167, + 0.02432099, + -0.0031435525, + -0.009474741, + 0.017036902, + 0.014120553, + 0.016467195, + -0.015354914, + 0.0064668334, + 0.0222592, + -0.009386573, + -0.0096171675, + 0.0012682725, + -0.016331552, + -0.003726822, + -0.0099766245, + 0.00986811, + 0.016385809, + 0.003246981, + 0.02582664, + -0.030438539, + -0.02133682, + -0.0073722578, + -0.02063147, + 0.025596045, + 0.013123568, + 0.017782943, + -0.010661627, + 0.006619433, + 0.012648813, + -0.013849264, + -0.013869611, + -0.0057818303, + -0.022544052, + -0.00025030578, + -0.009495088, + 0.018013539, + -0.00030901426, + 0.014256196, + -0.020739986, + 0.0150022395, + -0.01980404, + 0.010939698, + -0.014364712, + 0.014093423, + 0.0084913215, + 0.0010351342, + -0.0096171675, + -0.020943452, + 0.0030486016, + -0.014215503, + -0.0432976, + -0.011556879, + 0.007975874, + 0.0040693237, + -0.008057261, + -0.031930625, + -0.0013801788, + -0.00035288665, + -0.008437064, + -0.006198936, + 0.005683488, + 0.0019804041, + -0.0076638926, + 0.011088907, + 0.0042320965, + -0.009657861, + -0.0021804792, + 0.0025806292, + -0.0050663077, + -0.008565926, + -0.007514684, + -0.006002252, + -0.0061819805, + -0.015788974, + -0.026314959, + 0.036542524, + -0.017552348, + 0.0044355625, + -0.024917824, + 0.0041676653, + 0.022164248, + -0.033558354, + -0.012248663, + 0.027834173, + -0.014473227, + -0.0063820556, + 0.010044447, + -0.17655438, + 0.025311192, + 0.019790476, + -0.0055274977, + 0.013218519, + 0.0091017205, + 0.0186375, + 0.01128559, + -0.025107726, + -0.0005629231, + 0.022896728, + 0.0038963773, + -0.043080572, + -0.024158217, + -0.018203441, + -0.021174047, + -0.0057038353, + -0.0063379714, + 0.009705337, + 0.016765613, + 0.02693892, + -0.019912556, + 0.022544052, + -0.016290858, + 0.00538168, + -0.011706087, + -0.014012037, + 0.0154634295, + -0.008464193, + -0.018054232, + -0.027942687, + -0.010987174, + 0.03184924, + 0.007080623, + 0.0032842832, + 0.040666107, + -0.01233005, + 0.005364725, + -0.01681987, + 0.016358681, + 0.02813259, + 0.033721127, + -0.004971357, + 0.0026671025, + -0.015327785, + 0.021798009, + -0.0040693237, + -0.0050595254, + 0.0013920477, + -0.0069280234, + 0.013598323, + -0.010770143, + 0.01417481, + 0.021947218, + 0.008403153, + 0.004384696, + -0.0041167988, + -0.0077588432, + -0.0097731585, + 0.002555196, + -0.03502331, + -0.011909554, + 0.0059513855, + -0.019980378, + -0.009142414, + -0.010715885, + -0.022530487, + -0.0041405368, + -0.019424237, + 0.017972846, + -0.015192141, + -0.021079095, + 0.011210986, + -0.0140798595, + 0.018271262, + 0.009081374, + -0.0107972715, + 0.018596807, + 0.014378277, + 0.011149947, + 0.0045983354, + 0.051816054, + -0.012804804, + 0.025677431, + -0.0056631416, + -0.005144303, + -0.007514684, + 0.012309703, + -0.019546317, + -0.011061777, + 0.01774225, + -0.009467959, + -0.018311955, + -0.022408407, + 0.011502621, + 0.025379013, + -0.0042320965, + 0.0036013513, + -0.0033656696, + -0.0006430379, + 0.0108244, + 0.0065380465, + -0.023195144, + 0.019790476, + 0.032853004, + 0.02536545, + 0.017131852, + -0.0035742226, + 0.00535116, + 0.02235415, + -0.0278613, + -0.01497511, + 0.011265243, + 0.016833434, + -0.030465668, + 0.01614165, + 0.015300657, + -0.024334554, + 0.012567427, + -0.024850002, + 0.048018016, + -0.0036149158, + 0.00071085995, + 0.019329287, + -0.0040388037, + 0.0035674402, + -0.090990074, + -0.041344326, + 0.0052833385, + 0.02533832, + -0.00067525334, + 0.029190613, + -0.008938947, + -0.011407671, + 0.021540286, + 0.029461902, + -0.030058736, + 0.0044999938, + 0.018718887, + 0.011645047, + 0.03155082, + -0.01263525, + 0.004717024, + -0.009203454, + -0.011292373, + 0.017782943, + -0.008118301, + -0.003923506, + -0.00016118336, + -0.0014963242, + -0.009196671, + -0.0014708908, + -0.025650302, + 0.010614152, + 0.024185346, + 0.010810836, + 0.00802335, + -0.032120526, + 0.014798773, + -0.02337148, + -0.014147681, + 0.0052901204, + -0.016901257, + 0.013442332, + 0.030248638, + -0.012445347, + -0.011278808, + -0.002112657, + 0.030492797, + -0.023683462, + 0.008586273, + -0.010817618, + -0.009888456, + 0.015721153, + 0.015911054, + -0.0178372, + -0.013204955, + -0.01180782, + -0.028186847, + -0.0184476, + 0.019437801, + -0.028702294, + -0.0058225235, + 0.014378277, + -0.014730951, + 0.0011699304, + -0.0031706812, + -0.007155227, + -0.028892197, + 0.032825876, + -0.005700444, + 0.0044084336, + -0.020360181, + -0.0014395232, + 0.01856968, + -0.008667659, + -0.0033436276, + 0.0033131074, + -0.02997735, + 0.013408421, + -0.013279559, + 0.009237364, + 0.0001644685, + -0.009752812, + -0.00019668396, + -0.035565887, + -0.009495088, + -0.022286328, + 0.0047305888, + -0.00916276, + 0.026735455, + 0.014798773, + -0.0037471687, + -0.005568191, + 0.0054528937, + -0.033015776, + 0.008898254, + -0.00013479634, + 0.018434035, + -0.025202677, + -0.00003764654, + 0.010261477, + -0.00928484, + -0.017810073, + 0.02444307, + 0.018203441, + -0.019275028, + -0.019315721, + -0.10292675, + 0.0049374457, + 0.0071687917, + -0.0027145778, + 0.014812337, + -0.0044999938, + 0.014527485, + -0.015666895, + -0.0020380528, + -0.007019583, + -0.040259175, + 0.0020990926, + -0.015368478, + 0.0020397485, + -0.016670661, + -0.009501871, + 0.025677431, + 0.02613862, + -0.009474741, + 0.013727184, + 0.018718887, + 0.0013979821, + -0.008504886, + 0.00050061155, + -0.0073926044, + 0.004686504, + 0.00042367593, + 0.015219269, + -0.015219269, + -0.01152975, + 0.01970909, + -0.02711526, + 0.0034572294, + 0.026084363, + 0.00096646434, + -0.009908803, + -0.008660877, + 0.0054495023, + -0.010492072, + 0.031523693, + -0.013327034, + -0.0059106923, + 0.012228317, + -0.01239109, + 0.003338541, + -0.009088156, + 0.012235099, + 0.018556114, + 0.011489057, + 0.019912556, + -0.01337451, + 0.023412174, + -0.0045949444, + -0.013293123, + -0.015165012, + -0.009508653, + 0.011509404, + 0.007914834, + 0.016494324, + -0.01614165, + 0.010295388, + -0.00470346, + 0.010675192, + -0.0006421901, + 0.019410674, + -0.029000713, + -0.016562147, + 0.004198185, + 0.00088083895, + -0.026274266, + -0.009271275, + -0.023344353, + 0.025813075, + 0.013110003, + 0.02121474, + -0.0034267094, + 0.01174678, + -0.02533832, + -0.03206627, + 0.04077462, + 0.0055308887, + 0.008966076, + -0.024741488, + 0.015883926, + 0.023778414, + -0.00676525, + -0.018434035, + -0.014486792, + 0.0021720014, + 0.010905787, + 0.007813101, + -0.000060509992, + 0.01587036, + -0.011265243, + -0.0094611775, + -0.003950635, + -0.015883926, + -0.004917099, + -0.0045372956, + 0.02133682, + 0.026152186, + 0.006527873, + -0.01079049, + -0.01100752, + -0.015571944, + 0.025379013, + -0.0006040402, + -0.021051968, + -0.0007231527, + 0.026599811, + 0.020156715, + 0.004645811, + -0.0060124253, + 0.01657571, + -0.0016336638, + 0.014351147, + 0.0012504692, + -0.004445736, + -0.02330366, + 0.0017498091, + 0.031876367, + 0.02213712, + 0.025894461, + -0.0012665769, + 0.019980378, + 0.0065143085, + 0.0032859787, + -0.02650486, + -0.01128559, + -0.003338541, + -0.0075214664, + -0.0055546267, + -0.031496562, + -0.01842047, + -0.004649202, + -0.0020227928, + 0.022964548, + 0.025718125, + -0.025161983, + 0.037898965, + -0.012642032, + -0.013733966, + 0.008084389, + -0.015110754, + 0.019424237, + -0.00081513636, + 0.027264467, + -0.025609609, + -0.024632972, + 0.0007235766, + 0.014405405, + 0.0005769114, + -0.036759555, + -0.025636738, + -0.016684227, + -0.03415519, + 0.016331552, + -0.023045935, + 0.02060434, + 0.040449075, + 0.01568046, + -0.006158243, + 0.0067279483, + -0.027101694, + 0.004601727, + 0.028376749, + 0.0073383464, + -0.003360583, + -0.022530487, + 0.023412174, + 0.0047339797, + -0.028431006, + -0.021798009, + 0.010865093, + -0.0058089592, + -0.007704586, + -0.010749796, + 0.030764086, + 0.012764111, + -0.02133682, + 0.033097163, + -0.022042168, + -0.04514236, + 0.014934417, + -0.0092238, + -0.012587774, + -0.0022652568, + -0.020007508 + ] + }, + { + "object": "embedding", + "index": 9, + "embedding": [ + -0.008189119, + -0.0015157744, + 0.0074148276, + -0.034777507, + -0.021128977, + 0.0044751437, + -0.019960977, + 0.020341562, + -0.017729968, + -0.0353287, + 0.022835044, + -0.0058432776, + 0.012998914, + 0.0019521337, + -0.010229837, + -0.01561707, + 0.016115766, + -0.011404398, + 0.008445029, + -0.0051181996, + -0.008208805, + 0.027297063, + -0.010879455, + -0.008215366, + 0.0019783808, + 0.0065093, + -0.002918358, + -0.016535722, + 0.0061976146, + -0.024475493, + 0.013307318, + -0.028793152, + -0.024449244, + -0.037244745, + 0.011791544, + -0.011798106, + -0.015984531, + -0.008733748, + 0.006151682, + -0.009494917, + 0.012887363, + -0.011023814, + -0.003313706, + -0.010026421, + -0.021404572, + 0.015722059, + -0.0073098387, + -0.003343234, + -0.028688164, + 0.006670064, + 0.021535808, + 0.022441337, + -0.0248692, + 0.0019258866, + -0.025590997, + -0.013806015, + -0.015577699, + -0.0004457919, + -0.017323136, + -0.010761342, + -0.0062993225, + -0.01956727, + -0.015630193, + 0.024081785, + 0.0025951895, + -0.018438641, + -0.0024196615, + 0.0134385545, + 0.0038714586, + 0.02171954, + 0.030525466, + -0.0061352775, + 0.012847993, + -0.0032087173, + 0.014212846, + 0.0012319769, + -0.019829743, + 0.013333566, + -0.0075263777, + 0.0059023337, + 0.004183144, + -0.042940382, + -0.030079264, + 0.026247177, + 0.017415002, + 0.009199635, + -0.031549107, + 0.023950549, + -0.006975187, + -0.0041929865, + 0.022034505, + 0.021916393, + 0.022467583, + 0.0011507747, + -0.032756478, + 0.014147229, + -0.0021407853, + 0.037717193, + -0.014186599, + -0.012231184, + 0.011955589, + -0.005836716, + -0.010846646, + -0.02040718, + -0.0014239093, + 0.008930602, + -0.02175891, + -0.034357555, + 0.013543543, + -0.016378239, + -0.013451678, + 0.014750914, + 0.0056398623, + -0.041234314, + -0.002867504, + -0.023071269, + 0.003335032, + -0.0158008, + -0.025840346, + -0.038609598, + 0.020538416, + 0.021772033, + 0.010754781, + -0.020367809, + 0.037795935, + 0.0056004915, + -0.00057210645, + -0.019304799, + -0.008504085, + 0.0029298412, + 0.021207718, + -0.0065093, + -0.0076576136, + 0.0034711892, + -0.013327004, + 0.023058144, + -0.033412658, + 0.009711456, + -0.018123675, + -0.035197463, + 0.0015379206, + 0.028241962, + -0.0060926257, + 0.020748394, + -0.007040805, + 0.020039719, + 0.0023310774, + 0.004842604, + 0.013195768, + -0.025407268, + 0.018661743, + -0.022808796, + 0.0075066923, + 0.0073229624, + 0.0025361334, + 0.012559274, + 0.012847993, + 0.019409787, + 0.007972579, + 0.0030331893, + -0.0024311447, + -0.007106423, + 0.030997915, + -0.034278814, + 0.020328438, + 0.016207632, + 0.012008083, + -0.0034908745, + 0.0060335696, + -0.016430732, + -0.010347949, + 0.020275945, + -0.018254912, + 0.02077464, + 0.013792891, + 0.009914871, + 0.0066208504, + 0.022716932, + -0.022231359, + -0.0051542893, + 0.007244221, + 0.008655006, + 0.007841344, + 0.028688164, + 0.0038124025, + 0.0062665134, + 0.025761604, + -0.017139407, + -0.00019572601, + -0.02282192, + -0.004406245, + 0.02398992, + 0.023635583, + -0.010846646, + -0.6702479, + -0.016666956, + -0.011286286, + -0.0068701985, + 0.017454373, + 0.0113847125, + 0.022401966, + 0.017651226, + -0.02165392, + -0.013117027, + -0.011732488, + 0.0056004915, + 0.0064469627, + -0.012933296, + -0.013963498, + -0.0033547173, + 0.01459343, + -0.0063583786, + -0.029370591, + 0.0076641757, + -0.013451678, + -0.0011868646, + -0.0036253913, + -0.004334065, + 0.024436122, + 0.0033924475, + 0.0030594366, + -0.0072639063, + -0.010525118, + 0.0064141536, + -0.03566991, + 0.016614463, + 0.018044934, + -0.0039042674, + 0.047271166, + 0.0016666957, + -0.023740571, + -0.0036549193, + 0.024344256, + 0.009389928, + 0.0054397276, + -0.0039436384, + 0.009055276, + -0.010420129, + -0.001067932, + 0.008864984, + 0.014068487, + -0.006830828, + 0.015564576, + 0.018569877, + 0.017861204, + 0.0023720886, + -0.013215453, + -0.005255997, + 0.007165479, + -0.0031102905, + 0.008733748, + 0.0010654713, + 0.019659135, + -0.009245568, + -0.004215953, + -0.005095233, + -0.036116116, + -0.008727186, + -0.01232305, + 0.014094734, + -0.010288893, + 0.0016552126, + -0.00054914015, + -0.009265253, + 0.008438467, + 0.035092477, + -0.018189294, + -0.001996426, + 0.01748062, + 0.019002955, + 0.015498958, + -0.006817704, + 0.006214019, + -0.0067783333, + 0.018373024, + 0.004275009, + -0.008536894, + 0.014107858, + 0.011620938, + -0.027218321, + -0.033412658, + 0.008641883, + 0.0015239767, + -0.0006393648, + 0.01057105, + 0.024724841, + -0.01700817, + 0.001861909, + -0.014002869, + 0.01085977, + 0.013884757, + 0.020827135, + 0.013832262, + -0.008943725, + -0.011030376, + -0.024987312, + -0.011305971, + 0.0008915838, + 0.0012877521, + 0.008038198, + 0.009245568, + 0.01155532, + 0.025039807, + -0.043622807, + 0.004199548, + -0.02128646, + -0.048583522, + -0.008674691, + 0.025722234, + -0.029239355, + 0.022428213, + -0.0057875025, + 0.016338868, + -0.014882149, + -0.0033727621, + -0.007447636, + 0.012054016, + -0.008333478, + 0.018228665, + 0.009501478, + 0.008661568, + -0.017205024, + -0.009258691, + 0.001945572, + -0.0033104252, + 0.018386148, + 0.014724666, + 0.001847145, + 0.023740571, + 0.0032497286, + 0.005416761, + -0.0147377895, + 0.0049508736, + -0.019331045, + -0.023228751, + -0.0043110987, + -0.012716757, + -0.008976534, + -0.0056234575, + -0.020538416, + -0.012382106, + -0.023058144, + -0.041890495, + 0.011647184, + -0.021496437, + -0.010282331, + -0.0408931, + 0.009711456, + -0.00541348, + -0.015328351, + 0.004275009, + -0.02194264, + 0.0049279076, + -0.0041503347, + 0.021181472, + 0.021968886, + -0.03162785, + -0.003251369, + 0.022362594, + -0.0034875935, + 0.023136886, + 0.016430732, + -0.0013189206, + -0.010708848, + -0.00113355, + -0.009567096, + 0.0021342235, + 0.0020948527, + 0.032231532, + 0.016443856, + -0.006243547, + -0.0026690098, + -0.0036221105, + -0.0005782581, + 0.00039739866, + -0.02161455, + -0.01389788, + 0.00892404, + 0.009718017, + 0.005160851, + 0.01631262, + 0.019751001, + -0.022769425, + 0.00041236775, + -0.016811317, + 0.0034318184, + -0.014829655, + 0.005761255, + -0.0048918175, + -0.00039657843, + -0.0082481755, + 0.005964671, + 0.0003272695, + 0.022113247, + 0.025315402, + -0.010892578, + 0.0017733249, + -0.005679233, + -0.006670064, + -0.031549107, + 0.012624892, + -0.02161455, + 0.021010865, + 0.0066339737, + 0.014291587, + -0.024344256, + 0.0053445813, + 0.015236486, + 0.021955764, + 0.04047315, + -0.01013141, + 0.0011868646, + 0.014396576, + 0.01013141, + -0.010807275, + -0.022953156, + -0.0036811666, + 0.0059056147, + -0.012099949, + 0.015669564, + 0.006177929, + 0.027769513, + -0.004809795, + -0.023556842, + -0.022283852, + 0.008385973, + 0.010052669, + 0.008169434, + -0.01645698, + -0.0076379282, + 0.011719365, + -0.028556928, + 0.019698506, + -0.0035597733, + 0.02556475, + -0.010741657, + 0.033780117, + 0.0023671673, + -0.005446289, + -0.00314474, + 0.032940205, + 0.005767817, + -0.024987312, + 0.02673275, + -0.014252217, + -0.00438984, + 0.00043758965, + -0.004685121, + 0.010183904, + -0.016443856, + 0.03262524, + -0.008490962, + 0.005797345, + 0.037061013, + -0.0019586955, + -0.0102495225, + 0.014803408, + 0.002326156, + 0.00047942108, + -0.018438641, + 0.029738052, + -0.010623544, + -0.007677299, + -0.010374197, + -0.010052669, + -0.01232305, + 0.031286635, + -0.021877022, + 0.011588128, + -0.028530682, + -0.004078155, + -0.013248262, + -0.0003565925, + -0.00917995, + -0.014422824, + -0.023097515, + 0.014449071, + 0.009173389, + -0.0076116812, + -0.017454373, + -0.0017536395, + 0.0048196376, + -0.008359726, + 0.051234487, + 0.0031004478, + 0.03236277, + -0.0054955026, + -0.00259683, + -0.0030692792, + -0.0050394577, + 0.029318096, + -0.017834956, + -0.010223275, + -0.017401878, + 0.018281158, + -0.010649792, + -0.008162872, + 0.0011745611, + 0.05141822, + 0.007139232, + 0.00053642667, + -0.0068964455, + -0.005922019, + -0.009501478, + 0.008930602, + 0.0059909183, + -0.005101795, + -0.0030988073, + -0.011102555, + -0.018858597, + -0.006975187, + 0.009875501, + 0.015643317, + -0.009534287, + -0.005236312, + -0.030840432, + -0.017992439, + -0.016155137, + 0.10467374, + -0.0028100885, + -0.0047376156, + 0.004537481, + 0.0029052345, + 0.014278464, + 0.00071441534, + 0.005823592, + 0.015971407, + -0.0052428734, + 0.009823006, + -0.033727624, + 0.016391361, + 0.0060795024, + -0.0020981338, + -0.008353164, + -0.0046916828, + -0.033045195, + 0.019790372, + -0.012841431, + 0.009527725, + -0.0100854775, + 0.011673432, + 0.02658839, + -0.0066799065, + -0.007769164, + 0.03968573, + 0.012441162, + 0.021811403, + -0.008733748, + -0.005987637, + 0.022467583, + 0.0029462455, + 0.01872736, + 0.00003957582, + -0.020656528, + 0.030919174, + 0.006889884, + 0.0063911877, + -0.011811229, + 0.025105424, + -0.007112985, + -0.0027608748, + -0.017113158, + 0.011483139, + -0.0010613702, + -0.02333374, + 0.013208891, + -0.029711803, + -0.0043110987, + 0.048216064, + -0.008792805, + -0.0054659746, + -0.00009171133, + -0.0024295042, + 0.015315227, + -0.0067061535, + -0.021168347, + 0.005003368, + -0.0070736143, + -0.016653834, + -0.023976795, + -0.0074082655, + -0.011679994, + -0.018792978, + -0.03698227, + -0.012375544, + -0.0032661331, + -0.042546675, + -0.030892927, + 0.01085977, + -0.029921781, + -0.004048627, + -0.0011286286, + 0.024173649, + -0.025932211, + 0.020249696, + 0.004275009, + 0.009737702, + 0.022743179, + -0.0014255497, + -0.029134367, + 0.0066372547, + 0.011732488, + 0.0022277292, + 0.022913786, + 0.026772121, + -0.031470366, + -0.0019111226, + 0.02040718, + 0.0015830329, + -0.007237659, + 0.021732662, + 0.012664263, + -0.009055276, + -0.023202505, + 0.006758648, + 0.025761604, + -0.010991005, + -0.016522598, + 0.022152618, + -0.02552538, + 0.007906962, + -0.008353164, + 0.015577699, + 0.014094734, + 0.009639275, + 0.023254998, + -0.025000436, + -0.0029380433, + 0.028005738, + -0.03013176, + 0.0069555016, + 0.009632714, + -0.01846489, + 0.026798368, + 0.008910917, + 0.009015905, + -0.01085977, + -0.00917995, + 0.025814097, + -0.025735356, + 0.01375352, + 0.03734973, + 0.001441134, + -0.00081612315, + -0.006128716, + 0.0008440108, + -0.019803494, + -0.0051444466, + -0.010485747, + 0.0017290327, + -0.012697072, + -0.018911092, + -0.028136974, + -0.00943586, + -0.011942466, + 0.011470016, + -0.007920085, + -0.022835044, + -0.0024114593, + -0.004911503, + 0.0072639063, + -0.0034547846, + -0.031732835, + -0.012979229, + 0.017401878, + 0.0037369418, + -0.027165828, + 0.012218061, + -0.017113158, + 0.007828221, + -0.022677561, + 0.0014435947, + -0.0143572055, + -0.018766731, + -0.028399445, + -0.013504173, + 0.017821833, + 0.010420129, + 0.027218321, + 0.0017257519, + 0.013235139, + 0.0030348299, + -0.017821833, + 0.0018635496, + -0.009711456, + 0.0151708685, + 0.001002314, + 0.016876934, + 0.027060838, + 0.013543543, + -0.015538328, + 0.0014362127, + -0.016063273, + 0.018609248, + 0.011804667, + -0.018123675, + -0.017100036, + -0.019029204, + -0.016719451, + 0.0028871894, + -0.012080263, + 0.0030331893, + -0.019396663, + -0.015288981, + 0.022664437, + -0.01210651, + -0.0021899987, + 0.006624131, + 0.009737702, + -0.01938354, + 0.010964758, + 0.020197202, + -0.016194507, + -0.013622285, + -0.015498958, + -0.0038681778, + 0.008425344, + 0.023753695, + 0.018661743, + 0.0017798867, + -0.016404485, + -0.0034219758, + -0.0004466121, + 0.015328351, + -0.00079233665, + -0.016653834, + 0.017953068, + -0.02779576, + -0.015420216, + -0.0022687404, + 0.0033990094, + -0.018058058, + -0.010452938, + 0.012585521, + -0.022362594, + 0.017467497, + -0.02750704, + -0.009514602, + -0.011076309, + -0.010964758, + 0.019737877, + -0.0053773904, + 0.018596124, + 0.013418869, + -0.013005476, + -0.013287633, + 0.017310012, + 0.0036910092, + -0.022585696, + 0.021824528, + 0.0021850774, + -0.010918826, + -0.022191988, + -0.0039305147, + -0.0026903355, + 0.009980489, + -0.0065617943, + 0.035984877, + 0.023740571, + 0.0031709871, + -0.03178533, + -0.02194264, + 0.0073360857, + 0.013235139, + -0.0086812535, + 0.008576265, + -0.0071851644, + -0.0023130325, + -0.01729689, + 0.007040805, + -0.02640466, + 0.019803494, + 0.009927995, + -0.025669739, + -0.009941118, + -0.012099949, + 0.0030988073, + -0.00097442645, + 0.0050525814, + 0.019357292, + 0.018819226, + 0.012401791, + -0.003946919, + -0.00030655882, + -0.032494005, + 0.01784808, + -0.019987226, + 0.020932123, + -0.014186599, + -0.013701026, + -0.002252336, + 0.0045834132, + 0.02644403, + 0.028583175, + 0.004527638, + -0.01960664, + -0.014580307, + 0.0027789199, + 0.024396751, + 0.0030610769, + -0.003269414, + -0.00837285, + -0.021640796, + -0.014514688, + -0.014790284, + 0.0089502875, + 0.012821746, + -0.007493569, + -0.0086812535, + -0.007966018, + -0.0052166265, + 0.020604033, + -0.0020472798, + -0.0138716325, + 0.03616861, + 0.027034592, + -0.004970559, + -0.0028691445, + -0.002472156, + 0.013300757, + -0.034226317, + -0.001879954, + -0.007854467, + -0.007966018, + 0.013648531, + -0.012598645, + -0.00035741273, + -0.011699679, + 0.015774554, + 0.012972667, + 0.016247002, + 0.01225087, + 0.023727447, + -0.010426691, + 0.0062960414, + -0.014659048, + 0.0017241114, + 0.024527987, + -0.0075132544, + 0.006059817, + 0.009225883, + -0.008175995, + 0.03010551, + 0.013182645, + 0.00976395, + 0.012152443, + -0.020131584, + -0.011371589, + -0.012231184, + 0.014711542, + -0.011896533, + -0.008149749, + -0.013701026, + -0.014449071, + -0.0053445813, + 0.015945159, + 0.015302104, + -0.014829655, + -0.021050235, + 0.032756478, + 0.03921328, + 0.012624892, + -0.0059023337, + -0.020354686, + -0.00859595, + 0.002677212, + -0.05448914, + -0.013556667, + -0.0030249872, + 0.030840432, + 0.009376803, + -0.018294282, + -0.031732835, + 0.0062173, + -0.024659222, + -0.006082783, + -0.007493569, + 0.023097515, + 0.01524961, + -0.008116939, + -0.012664263, + -0.0021785158, + 0.0041044024, + 0.022690684, + -0.00010550135, + 0.0061943335, + 0.030158006, + -0.031207893, + 0.02458048, + 0.0014304711, + -0.009494917, + 0.010229837, + 0.0137666445, + -0.00025611502, + 0.00021407854, + 0.0013952014, + -0.017493743, + -0.013609161, + -0.016732575, + 0.0004293874, + -0.011515949, + 0.021522684, + 0.033622634, + -0.037244745, + 0.0027198638, + 0.021667045, + -0.026129065, + 0.0036713239, + 0.008497523, + 0.0007603479, + 0.0069883107, + 0.00015574008, + -0.028530682, + -0.0068242657, + -0.005446289, + -0.041129325, + 0.015682688, + 0.012598645, + -0.012565835, + 0.0076969843, + -0.0027756388, + 0.0055906484, + -0.010557927, + -0.0067192772, + -0.037979666, + -0.007880715, + 0.020997742, + -0.026877109, + -0.008280984, + -0.010741657, + 0.012565835, + -0.034357555, + 0.0047310535, + 0.0003309605, + -0.012821746, + -0.014514688, + -0.0020128305, + 0.016470103, + -0.007106423, + -0.0027297065, + 0.0062533896, + -0.021312708, + -0.001503471, + -0.006528985, + 0.01758561, + -0.010518556, + 0.024436122, + 0.013464802, + -0.007040805, + -0.042494178, + -0.004524357, + 0.013622285, + 0.0016265047, + 0.0060106036, + 0.23475474, + 0.018110553, + 0.0013000554, + 0.031207893, + -0.0067783333, + 0.030525466, + 0.025249785, + -0.005735008, + -0.00994768, + -0.010098601, + -0.018058058, + -0.007749479, + -0.0077626025, + -0.0012992353, + -0.0091668265, + -0.015669564, + -0.020958371, + -0.039160788, + -0.01027577, + -0.022428213, + 0.0016256846, + 0.005928581, + -0.0018291001, + -0.020302191, + 0.033333912, + 0.004567009, + -0.016509473, + 0.013884757, + 0.03228403, + 0.0059154574, + -0.003167706, + 0.009475231, + 0.014606554, + 0.008609074, + -0.012185251, + -0.012185251, + -0.022428213, + -0.0034711892, + 0.015538328, + 0.01872736, + 0.0007808535, + -0.008904355, + 0.005794064, + -0.0053905137, + -0.0031168521, + 0.040210675, + 0.0006287019, + -0.004143773, + 0.018412394, + 0.019449158, + -0.023635583, + -0.009639275, + 0.00980332, + 0.039475754, + 0.013687903, + 0.0080841305, + 0.026024075, + 0.013195768, + 0.0033891667, + 0.0019833022, + -0.017782463, + 0.0065913224, + -0.014435947, + 0.006204176, + -0.003992852, + 0.0025295718, + -0.029134367, + 0.03514497, + 0.005767817, + 0.0020948527, + 0.0146852955, + -0.016811317, + -0.011975274, + -0.010026421, + -0.02051217, + -0.032494005, + 0.027822006, + 0.037953418, + 0.0037763126, + 0.0183599, + -0.022178864, + 0.015288981, + 0.018766731, + -0.00076198834, + 0.011417522, + -0.03404259, + 0.004970559, + 0.008451591, + 0.0037172565, + 0.00175528, + 0.007565749, + 0.0043832785, + -0.014015992, + -0.0038124025, + 0.010544803, + 0.0057186037, + 0.0035466498, + 0.012847993, + -0.01408161, + 0.008405658, + -0.010702286, + -0.005397076, + 0.02519729, + -0.0023655267, + -0.0050985143, + 0.0011097634, + 0.008891231, + 0.015498958, + -0.027008345, + -0.037323486, + -0.01013141, + -0.010439814, + -0.008766557, + -0.0012631454, + 0.029081872, + 0.003628672, + 0.032572746, + -0.0126839485, + 0.012172128, + -0.01608952, + 0.00057374686, + -0.01923918, + -0.018858597, + 0.012933296, + 0.0071917265, + -0.011837477, + -0.018569877, + 0.0038353687, + 0.0082481755, + -0.031732835, + 0.0022392122, + 0.010354511, + -0.00057989854, + -0.0061221537, + -0.006496176, + 0.027926996, + 0.0037402227, + -0.021076484, + -0.010761342, + -0.0017175496, + 0.026929604, + 0.006410873, + 0.011305971, + 0.017572485, + -0.006666783, + -0.0040748743, + 0.022979403, + 0.0016404486, + 0.0028428973, + -0.012368982, + -0.013366375, + -0.017165653, + -0.0035433688, + -0.018884843, + 0.01803181, + -0.019002955, + -0.023451852, + -0.023963673, + -0.014908397, + 0.03616861, + -0.014580307, + 0.0073820185, + 0.033963848, + -0.013431992, + -0.030525466, + -0.0007845445, + -0.16934678, + 0.0274283, + 0.039108295, + -0.00028092682, + 0.010052669, + 0.01989536, + -0.005587368, + -0.012204937, + -0.0038386495, + 0.017113158, + 0.039187036, + 0.0019980664, + -0.025171041, + -0.016522598, + 0.0012483813, + -0.026982097, + -0.008313793, + -0.0037369418, + 0.010931949, + -0.002874066, + 0.016443856, + -0.013806015, + 0.022178864, + -0.027585782, + -0.006597884, + 0.017165653, + 0.0010728533, + 0.02220511, + -0.0019997067, + -0.018609248, + -0.02761203, + -0.010630107, + 0.016076395, + 0.0048918175, + 0.022021381, + 0.021312708, + 0.0015379206, + -0.012565835, + -0.0076707373, + 0.008359726, + 0.009029029, + 0.019331045, + 0.015328351, + 0.008490962, + -0.0035204026, + 0.024698593, + 0.03517122, + 0.0027854815, + 0.0061024684, + -0.014606554, + 0.016037025, + -0.021496437, + -0.003533526, + 0.014475318, + 0.0012811903, + 0.011634061, + -0.0018192574, + -0.0011614376, + 0.0073492094, + -0.016627586, + -0.021995135, + 0.0008579546, + -0.005426604, + -0.0054692556, + -0.022795673, + -0.022323223, + -0.0050985143, + 0.009593343, + -0.026220929, + 0.018163046, + 0.0044849864, + -0.03632609, + 0.013327004, + -0.024947941, + 0.026247177, + 0.018819226, + -0.015000261, + 0.014934643, + -0.009914871, + -0.001301696, + -0.020105338, + 0.027533289, + -0.020840257, + -0.022520078, + 0.010662915, + 0.009396489, + -0.008497523, + 0.0026050322, + -0.0071326704, + -0.016693205, + -0.014317835, + -0.02542039, + 0.0056693903, + -0.03262524, + 0.0063419743, + 0.007867591, + -0.010872893, + -0.002897032, + -0.011424083, + 0.008477838, + 0.027848255, + 0.0021457067, + -0.030420478, + 0.02845194, + 0.029606815, + 0.010833522, + -0.009448984, + 0.014619677, + 0.012408352, + -0.012460847, + -0.028294457, + -0.01129941, + 0.021023989, + 0.0042782896, + -0.009134018, + 0.0009826287, + 0.012939858, + -0.006981749, + 0.004176582, + -0.0014723026, + 0.05496159, + -0.0007816737, + -0.0076969843, + 0.039738227, + -0.00015850834, + -0.013543543, + -0.07690423, + -0.027218321, + 0.02106336, + 0.016194507, + -0.013674779, + 0.04433148, + -0.0055808057, + 0.01762498, + 0.0036188294, + 0.019436033, + 0.0068439515, + -0.018084304, + 0.01371415, + -0.013976621, + 0.0427829, + 0.019081697, + 0.008792805, + -0.028294457, + -0.008182557, + 0.016601339, + -0.017126283, + 0.0041240877, + -0.011634061, + -0.016483227, + 0.000017788614, + -0.0018012126, + -0.029475579, + 0.01755936, + 0.011889971, + 0.011876848, + -0.010807275, + -0.020604033, + -0.01960664, + -0.00281665, + -0.014147229, + 0.009849253, + -0.034173824, + 0.010879455, + 0.020131584, + -0.04015818, + -0.007565749, + 0.00208501, + 0.0046687163, + -0.021850774, + -0.010492309, + -0.004078155, + 0.015735183, + -0.0130186, + 0.023793066, + -0.009527725, + -0.0022687404, + -0.0022917066, + -0.008504085, + 0.015525205, + -0.016443856, + -0.016430732, + -0.01024296, + 0.011430645, + -0.020787764, + -0.0067652096, + -0.00917995, + -0.0043078177, + -0.025945334, + 0.010800713, + 0.016194507, + 0.014882149, + -0.031339128, + -0.026181558, + 0.012605207, + -0.0169688, + -0.016942553, + 0.009081523, + -0.02695585, + -0.00071277487, + -0.023071269, + -0.010518556, + -0.013556667, + -0.0156039465, + 0.024737963, + -0.029239355, + -0.027926996, + -0.028845647, + 0.008746872, + 0.013136712, + 0.023924302, + 0.025879717, + 0.0012024487, + -0.015813924, + -0.0068045803, + -0.024265515, + 0.015315227, + 0.031207893, + -0.0020308753, + -0.025066053, + -0.008707501, + 0.024186773, + 0.0031939533, + -0.006378064, + 0.007447636, + 0.0158008, + -0.012710195, + -0.010072354, + -0.08887294, + 0.013648531, + -0.0027854815, + -0.019094821, + 0.030289242, + -0.014882149, + 0.0027379086, + -0.021352079, + -0.001368134, + 0.012027768, + -0.047271166, + -0.007985704, + 0.0021243808, + 0.0117062405, + -0.020302191, + -0.02490857, + 0.031207893, + 0.012172128, + 0.009665523, + 0.010439814, + 0.014816531, + 0.0035630541, + 0.014514688, + -0.008307232, + -0.020879628, + -0.00073902204, + -0.010945072, + 0.017375631, + 0.0015805722, + -0.0052133454, + 0.009560534, + -0.039187036, + 0.005613615, + 0.0446202, + -0.00075952767, + -0.021575179, + 0.013412307, + 0.024698593, + 0.03446254, + 0.008641883, + -0.009672085, + -0.008602512, + 0.008202243, + -0.020695899, + -0.009744264, + 0.0073229624, + 0.009927995, + -0.002040718, + 0.016470103, + 0.031654093, + 0.0014271903, + 0.03923953, + 0.00039145202, + -0.02304502, + -0.0092193205, + -0.023254998, + 0.017716844, + 0.0036713239, + -0.007723232, + 0.011017253, + 0.023963673, + 0.0125199035, + 0.011640623, + 0.024173649, + 0.023766818, + -0.011056623, + -0.02545976, + 0.0020472798, + 0.021863898, + -0.015341475, + -0.00015502238, + 0.0011679993, + 0.023071269, + 0.0009777073, + 0.028268209, + -0.0183599, + 0.015905788, + -0.0027149424, + -0.029974276, + 0.02212637, + 0.0020718866, + 0.000023261047, + -0.01758561, + 0.020761516, + 0.01254615, + -0.0006791457, + -0.023018774, + 0.00318247, + -0.005954828, + 0.0167457, + -0.004212672, + -0.010649792, + 0.012847993, + -0.0031217735, + 0.010557927, + 0.011279725, + 0.010945072, + -0.005108357, + 0.017782463, + 0.01758561, + 0.008792805, + -0.023018774, + -0.0044423346, + -0.016338868, + -0.016010778, + 0.030315489, + -0.0005606233, + -0.015367722, + -0.012093387, + 0.011050061, + 0.023386234, + 0.026654009, + 0.009613029, + 0.02538102, + -0.026378412, + 0.01700817, + -0.0138191385, + -0.029055625, + -0.03244151, + 0.015695812, + 0.013464802, + 0.023359988, + 0.0060040415, + -0.0077035464, + 0.012716757, + 0.015236486, + -0.0066208504, + -0.008622197, + 0.008038198, + -0.0068964455, + 0.023622459, + 0.007578872, + -0.020564662, + 0.006027008, + -0.013622285, + 0.013661656, + -0.008182557, + -0.0034908745, + -0.017073788, + 0.024186773, + -0.0037336608, + 0.00961959, + 0.0058465586, + 0.012198376, + 0.031837825, + 0.012992352, + 0.022401966, + -0.027664524, + -0.019659135, + 0.009724579, + 0.01729689, + 0.006975187, + -0.012480533, + -0.016706329, + 0.0034022902, + 0.002165392, + 0.017533114, + -0.014278464, + 0.012040893, + 0.039370764, + 0.005219907, + 0.029606815, + -0.01733626, + -0.022730054, + -0.005105076, + 0.017310012, + 0.010991005, + -0.0013927408, + -0.026798368, + 0.0107875895, + 0.00032644926, + -0.016286373, + -0.023241876, + 0.012237746, + -0.014068487, + -0.02431801, + 0.0028806275, + 0.026535895, + 0.018648619, + -0.007723232, + 0.024790458, + -0.020052843, + -0.0042651664, + 0.013477925, + -0.014029116, + -0.007355771, + 0.0037795934, + -0.013340128 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 23, + "total_tokens": 23 + } +} +276 34131 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 81 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["Which of these are cities in Japan"]}HTTP/2.0 200 OK +Content-Length: 33176 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:19:33 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 64 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-qpwjk +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999992 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_d26c339b889a48e98afe974ba3bc4727 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.01976611, + 0.003909019, + 0.00026493086, + 0.013577655, + -0.01501591, + 0.02332876, + -0.03802799, + -0.0021227456, + -0.00035028602, + -0.048372872, + -0.011829318, + 0.01184911, + 0.011684173, + -0.009757702, + -0.011994255, + -0.010377868, + 0.024252411, + -0.0069867526, + 0.011479651, + -0.02113839, + -0.01522703, + 0.01448811, + 0.0046908227, + -0.03370003, + 0.0010646716, + 0.029029, + 0.008860443, + -0.02335515, + -0.00997542, + 0.0027725995, + 0.011459858, + 0.0018753394, + -0.0049679177, + -0.0051130624, + -0.0041498276, + -0.0030942275, + -0.008490982, + -0.00704613, + -0.019700136, + 0.0027247677, + 0.04235595, + -0.0035428575, + -0.009361853, + -0.0066304877, + -0.00332514, + 0.004621549, + -0.025373986, + 0.022734985, + -0.01638819, + 0.018697316, + 0.019198725, + 0.015161055, + -0.034623682, + -0.000048347305, + -0.025849005, + 0.0034537914, + -0.020808516, + 0.01659931, + -0.023051666, + 0.00027874438, + 0.013696411, + 0.005456133, + -0.018987605, + 0.012317533, + 0.0068745953, + -0.0089726, + -0.0012155893, + 0.008359033, + -0.014606865, + -0.0076596974, + 0.03055962, + 0.011961267, + -0.007323225, + -0.01274637, + 0.014303381, + -0.03417505, + -0.012416495, + -0.013709606, + 0.012581433, + 0.028685931, + 0.008847248, + -0.019964036, + 0.0048326687, + -0.025123281, + 0.02113839, + 0.004601756, + -0.0093156705, + 0.029767921, + -0.00026080743, + 0.0018225594, + 0.01419782, + 0.029847091, + -0.000028090919, + 0.017298644, + -0.027445601, + -0.01884246, + 0.0014283587, + 0.02016196, + -0.008807663, + -0.012073426, + 0.0079104025, + 0.013267573, + 0.002462517, + -0.01050322, + -0.008279863, + 0.02280096, + 0.005898165, + -0.021784946, + 0.005848684, + -0.008570152, + -0.0017714287, + 0.026469171, + 0.0040607615, + -0.07478926, + -0.03190551, + -0.02707614, + 0.02937207, + -0.0074749677, + -0.01498952, + -0.015847195, + 0.0002001929, + 0.04048226, + 0.012614421, + -0.011354297, + 0.04449354, + 0.0095004, + -0.012845333, + -0.02340793, + -0.014474915, + -0.01396031, + 0.03005821, + -0.0021079013, + 0.0064094714, + 0.0050998675, + -0.0072638476, + 0.01462006, + -0.0018374037, + -0.0062907166, + -0.014633255, + -0.01828827, + 0.006795425, + -0.0054891203, + 0.00635999, + 0.01509508, + 0.0269178, + 0.010232722, + 0.03422783, + 0.00786422, + 0.007738868, + -0.020914076, + -0.00094179314, + -0.015583295, + 0.0009648844, + 0.0063072103, + 0.0038100563, + 0.00910455, + 0.016216656, + 0.01388114, + 0.0028765101, + -0.012944295, + -0.010015005, + 0.0124098975, + 0.02435797, + -0.010588988, + -0.013122428, + 0.020095985, + 0.01831466, + 0.024846185, + 0.0025235438, + 0.000048218448, + -0.03116659, + 0.0075013577, + -0.04488939, + 0.012053633, + 0.014276991, + -0.005977335, + 0.01411865, + 0.01467284, + -0.03179995, + 0.008194095, + 0.004925034, + -0.00480298, + 0.019607771, + 0.001966055, + 0.013999895, + 0.0018291569, + 0.0166257, + 0.0006869647, + 0.010325087, + -0.01931748, + 0.03557372, + 0.02773589, + 0.02997904, + 0.011440065, + -0.6232262, + -0.039321102, + -0.0020996544, + 0.0044533126, + 0.03211663, + 0.00934206, + 0.0321958, + 0.0057761115, + 0.0035824426, + 0.02995265, + -0.010965046, + 0.01562288, + -0.027419211, + -0.004525885, + -0.010364673, + -0.006267625, + 0.008583347, + -0.01348529, + 0.003813355, + 0.02053142, + -0.0069867526, + 0.0002610136, + -0.011255335, + -0.014316576, + 0.012396703, + -0.01129492, + -0.023658635, + -0.009012185, + -0.012053633, + 0.04631445, + -0.03222219, + 0.04312126, + 0.020544615, + -0.00504049, + 0.031008251, + 0.0021128494, + -0.031034641, + 0.02240511, + 0.0139867, + 0.024846185, + -0.02675946, + 0.00467103, + 0.013524875, + -0.0013821763, + 0.0008584997, + 0.01364363, + 0.04053504, + -0.023394736, + 0.005307689, + -0.0017301944, + 0.02372461, + -0.0314041, + -0.03731546, + -0.009467413, + 0.013577655, + 0.010694548, + 0.019013995, + -0.012647408, + -0.0070659225, + -0.021362705, + -0.022787765, + 0.0038661351, + -0.0179452, + -0.010094175, + -0.013999895, + 0.013313755, + -0.008174303, + -0.008596542, + 0.00725725, + -0.03546816, + 0.0045324825, + 0.0076465025, + -0.011195958, + 0.009724715, + 0.020848101, + 0.03955861, + 0.019805696, + -0.007323225, + -0.01359085, + -0.013366535, + 0.012027243, + -0.00069191284, + -0.02055781, + -0.03346252, + -0.00032451455, + -0.03528343, + -0.015002715, + 0.011228945, + 0.01712711, + -0.01572844, + 0.0032624637, + -0.0027725995, + -0.014817986, + 0.0055089127, + -0.010008408, + 0.015385371, + -0.002027082, + 0.002172227, + 0.004938229, + -0.019462625, + -0.022471085, + -0.009876458, + 0.008352435, + -0.0015083535, + -0.014211015, + -0.029873481, + -0.01783964, + 0.0081677055, + 0.02562469, + -0.017166695, + 0.010932058, + 0.002040277, + -0.017826445, + -0.00665028, + 0.02615249, + -0.02251067, + 0.02127034, + -0.0051526474, + 0.01517425, + 0.0087218955, + 0.0057200324, + 0.017536156, + 0.021758555, + 0.0011067307, + 0.02720809, + 0.0155041255, + -0.006442459, + -0.005423145, + -0.006478745, + 0.010015005, + -0.011479651, + 0.014554085, + 0.01789242, + -0.018961215, + 0.004502794, + 0.022154406, + -0.0005183161, + -0.006082895, + 0.02789423, + -0.01717989, + -0.02997904, + -0.01981889, + 0.01799798, + -0.017087525, + 0.00038079947, + -0.024291996, + -0.0008609738, + -0.00134589, + -0.03288194, + 0.006224741, + 0.011156373, + -0.017391011, + -0.02047864, + 0.01274637, + -0.009249696, + -0.0057728128, + -0.0023272682, + -0.00054594316, + 0.007296835, + 0.00947401, + 0.03623347, + 0.0008782922, + -0.019581381, + 0.0032162813, + 0.013551265, + -0.020650174, + 0.04280458, + 0.012178985, + -0.0020617188, + -0.022009261, + -0.020571005, + -0.012832138, + 0.0011809525, + 0.008741688, + -0.00841841, + -0.0055880826, + 0.008979198, + -0.010707743, + 0.00030101094, + 0.006867998, + 0.0138151655, + -0.01712711, + -0.02483299, + -0.0051625436, + 0.034623682, + -0.01356446, + 0.01704794, + -0.00024369516, + 0.007217665, + 0.0145145, + -0.02578303, + 0.014211015, + 0.0043378565, + 0.0043411553, + 0.02836925, + 0.0020831607, + 0.01419782, + 0.016111095, + -0.024661455, + 0.0060169203, + 0.015768025, + -0.0032756587, + 0.001594121, + -0.024608675, + 0.03736824, + -0.01462006, + -0.0101535525, + -0.023130836, + 0.024107266, + 0.01026571, + 0.022048846, + -0.01754935, + -0.00477659, + 0.017536156, + -0.0068152174, + 0.027419211, + 0.00022575821, + 0.014844376, + -0.0153062, + -0.004130035, + 0.019739721, + -0.019911256, + 0.009810483, + -0.012277948, + -0.019607771, + 0.0021920195, + -0.010285502, + 0.030955471, + -0.0008094308, + -0.008128121, + -0.02784145, + -0.017166695, + -0.0061323764, + 0.0031173187, + -0.0060433103, + -0.008655921, + 0.022629425, + -0.011341102, + 0.02726087, + 0.0069867526, + 0.015240225, + 0.010443843, + 0.018473001, + -0.00828646, + 0.01158521, + 0.006769035, + 0.04525885, + 0.017615326, + 0.007006545, + 0.02121756, + -0.03042767, + -0.017496571, + -0.00248066, + 0.016282631, + 0.005291195, + -0.02551913, + 0.02496494, + 0.0060268166, + 0.01361724, + 0.03356808, + 0.0044038314, + -0.006867998, + -0.0024790107, + -0.00921011, + 0.0009269488, + 0.0059278538, + 0.0129311, + 0.02026752, + -0.021837726, + -0.01765491, + -0.025585106, + -0.0042191013, + -0.015556905, + 0.0017202982, + 0.00556829, + -0.0023322164, + -0.0058519826, + -0.0043510515, + 0.01604512, + 0.03005821, + 0.0064721475, + -0.059588622, + 0.01359085, + 0.02728726, + -0.019634161, + -0.020465445, + -0.010892473, + -0.0066700727, + -0.017470181, + 0.0065843053, + 0.020861296, + 0.018776486, + 0.0073562125, + -0.009724715, + -0.01702155, + 0.0066073965, + 0.03000543, + -0.02134951, + -0.019383455, + -0.017061135, + -0.0003364725, + -0.027445601, + -0.0031222668, + 0.0030315514, + 0.03137771, + -0.024872575, + -0.00035234774, + -0.010621975, + 0.012686993, + -0.006867998, + -0.009388243, + -0.012614421, + -0.006953765, + 0.011802928, + 0.021798141, + -0.02565108, + -0.019964036, + 0.008253473, + 0.021494655, + -0.0036715087, + -0.014791595, + -0.01607151, + -0.022576645, + -0.0025433362, + 0.11579932, + -0.00944762, + 0.007824635, + -0.019330675, + 0.01704794, + 0.006953765, + -0.00266539, + 0.0059707374, + -0.010325087, + 0.01118936, + -0.01683682, + -0.010509818, + 0.012522055, + 0.005518809, + 0.019172335, + -0.013472095, + -0.04201288, + -0.04095728, + 0.0087218955, + -0.013359938, + 0.001095185, + -0.015108275, + 0.028553981, + 0.007857623, + -0.02013557, + 0.022497475, + 0.02567747, + 0.01652014, + 0.015213835, + -0.012343923, + -0.0012188881, + 0.0055484977, + -0.01947582, + 0.01797159, + -0.016374996, + 0.011070605, + 0.011090398, + 0.03676127, + 0.0011826019, + -0.0011380687, + -0.005888269, + 0.007171483, + -0.0002983307, + -0.01401309, + 0.008675713, + -0.03198468, + 0.0035560525, + 0.0101667475, + -0.0071648853, + -0.0145145, + 0.028659541, + -0.014316576, + -0.032565262, + -0.03528343, + -0.019409845, + 0.012211973, + -0.003786965, + -0.0033944137, + 0.009269488, + -0.0155041255, + -0.00009179803, + -0.0072638476, + 0.0057068374, + -0.0032690612, + -0.02174536, + -0.03884608, + 0.011987657, + -0.03108742, + -0.05140772, + -0.0044698063, + 0.0005814047, + -0.016981965, + -0.02897622, + 0.020095985, + 0.03148327, + -0.012000852, + 0.02430519, + -0.024846185, + 0.008906625, + 0.01797159, + -0.0168896, + -0.03396393, + -0.024291996, + -0.01417143, + -0.01937026, + 0.02464826, + 0.013577655, + -0.02274818, + -0.01301027, + -0.010015005, + 0.0060795965, + -0.0027890932, + 0.008273265, + 0.01997723, + -0.0030233045, + -0.009559778, + 0.01079351, + 0.019660551, + -0.00749476, + -0.02916095, + 0.03855579, + -0.0018308063, + -0.00847119, + -0.008405215, + 0.0070791175, + 0.010668158, + 0.014554085, + -0.002942485, + -0.00002896715, + 0.002726417, + 0.02491216, + -0.02945124, + 0.02272179, + 0.007903805, + -0.01351168, + 0.03676127, + 0.014329771, + 0.020439055, + -0.0035560525, + -0.0134589, + 0.010285502, + -0.0067756325, + 0.023473905, + 0.03211663, + -0.02997904, + 0.008900028, + -0.009348658, + 0.00041997212, + 0.0007108806, + -0.01411865, + -0.016031925, + 0.037104342, + -0.0069603627, + -0.029794311, + -0.01889524, + -0.009638947, + -0.01016015, + 0.018670926, + -0.017325036, + -0.0129311, + -0.020966856, + -0.0070263376, + 0.020940466, + -0.008345838, + -0.05219942, + -0.02335515, + 0.01142687, + 0.014580475, + 0.011255335, + 0.010041395, + 0.015385371, + 0.0050206976, + -0.012614421, + -0.0030084602, + -0.04436159, + -0.02810535, + -0.015438151, + -0.016850015, + -0.001156212, + 0.0197925, + 0.04953403, + 0.024041291, + 0.02905539, + 0.0017301944, + -0.010542805, + -0.00078798895, + -0.0046380428, + 0.0321958, + -0.008405215, + -0.002916095, + 0.018327855, + 0.02171897, + -0.024199631, + -0.006138974, + -0.012080023, + 0.04892706, + 0.002335515, + -0.009790691, + -0.011209153, + -0.05204108, + -0.0013368184, + -0.00847119, + 0.0042388937, + -0.011433467, + 0.011420272, + -0.0033234907, + 0.0031849432, + -0.0126935905, + 0.005106465, + -0.009177122, + 0.008728493, + 0.0012708434, + 0.010780315, + 0.009863263, + 0.0027462095, + -0.008352435, + -0.017417401, + -0.01517425, + -0.0004362597, + 0.023051666, + 0.01649375, + 0.0009162278, + -0.006000426, + 0.01229774, + -0.0029457838, + 0.012865125, + -0.00760032, + -0.01681043, + -0.016506946, + -0.0023190214, + -0.024252411, + 0.0047502, + 0.0025565312, + -0.03288194, + -0.016374996, + -0.009487205, + -0.010938656, + 0.028738711, + -0.02549274, + -0.020821711, + 0.01287832, + 0.00020472867, + 0.02288013, + 0.0121130105, + 0.012383508, + 0.0064754463, + 0.005782709, + -0.010430648, + -0.026086515, + -0.024978135, + 0.0008403566, + 0.015715245, + 0.02615249, + -0.01799798, + -0.031008251, + -0.005657356, + 0.0107209375, + -0.003496675, + -0.0033218414, + 0.03607513, + 0.03435978, + -0.0145145, + -0.0056672525, + 0.012950893, + -0.01612429, + 0.032433312, + -0.010298697, + -0.012634213, + 0.00533078, + 0.0022893324, + -0.0017747275, + 0.0031371112, + -0.015424956, + -0.0041498276, + 0.000092983515, + -0.016256241, + 0.01781325, + -0.022682205, + 0.0014473266, + 0.012522055, + 0.0019165737, + 0.013867945, + 0.0040442673, + 0.0068482053, + 0.01385475, + 0.0115720155, + -0.000658513, + -0.010984838, + 0.0010069434, + 0.03182634, + -0.009150732, + -0.016823625, + -0.00353626, + 0.0004201783, + 0.011908487, + -0.0035329612, + 0.009935835, + 0.01182272, + -0.02881788, + 0.0074617728, + 0.04441437, + -0.0058915676, + -0.007949987, + -0.014686035, + -0.022655815, + -0.020544615, + 0.0075277477, + 0.0015075288, + -0.0025532325, + -0.02161341, + -0.0155173205, + 0.017588936, + -0.002805587, + 0.015372176, + -0.013894335, + -0.01295749, + 0.011888695, + 0.0093024755, + -0.013221391, + 0.008556957, + -0.00007540736, + 0.02277457, + -0.022207186, + -0.01596595, + -0.013359938, + -0.013947115, + 0.012330728, + -0.0076069175, + -0.013452303, + -0.02934568, + -0.006719554, + 0.03048045, + 0.03132493, + 0.03169439, + 0.018354245, + -0.025453156, + -0.011888695, + -0.015715245, + -0.02997904, + 0.022391915, + 0.0002653432, + 0.018143125, + 0.02470104, + -0.01005459, + 0.02372461, + 0.009935835, + -0.00009071563, + -0.011816123, + 0.009638947, + -0.02884427, + -0.016823625, + -0.0032377231, + -0.023843365, + -0.016902795, + -0.004473105, + -0.00046965954, + -0.006086194, + -0.006557915, + 0.012106413, + 0.0069207777, + 0.008708701, + 0.041590642, + -0.0095861675, + 0.013656825, + -0.010727535, + -0.01440894, + 0.009559778, + -0.0049943076, + -0.023658635, + -0.013762386, + -0.015794415, + 0.027577551, + 0.005746423, + -0.008570152, + -0.02335515, + -0.0017499869, + -0.02100644, + -0.03222219, + -0.00361543, + 0.016638895, + 0.012416495, + -0.001147965, + 0.004288375, + 0.010648365, + 0.008253473, + 0.0168896, + -0.01514786, + 0.009533388, + 0.0074023954, + -0.037236292, + 0.02245789, + 0.01778686, + -0.0050239963, + -0.011156373, + 0.0048590587, + 0.008847248, + 0.017219475, + 0.020689761, + -0.022959301, + -0.02282735, + -0.0034867788, + -0.011882097, + -0.02953041, + 0.02330237, + 0.006482044, + -0.03348891, + 0.01762852, + 0.01778686, + -0.017747276, + 0.0016939081, + 0.01058239, + -0.0018786382, + -0.005000905, + 0.0010770418, + 0.00042471406, + -0.015213835, + 0.0107473275, + -0.02778867, + 0.018380634, + -0.0027445601, + -0.011308115, + 0.01905358, + -0.025176061, + -0.021705775, + -0.017509766, + -0.00675584, + -0.009850068, + -0.014079065, + -0.002444374, + -0.011380687, + -0.012812345, + -0.001224661, + -0.01021293, + -0.03734185, + 0.0047996813, + -0.0006828413, + -0.014606865, + -0.023473905, + 0.022009261, + 0.011750148, + -0.013775581, + -0.012574836, + 0.02129673, + -0.03319862, + 0.0031024744, + -0.0232232, + 0.013293963, + -0.04095728, + 0.021811336, + -0.0077058803, + -0.021468265, + -0.028501201, + 0.00498771, + 0.01118936, + -0.03019016, + -0.016084705, + 0.22104265, + -0.01018654, + -0.0043609478, + 0.03446534, + -0.0044665076, + 0.03420144, + 0.028659541, + -0.009361853, + -0.015952755, + 0.010391063, + -0.03288194, + -0.009546583, + 0.0064358613, + 0.011149775, + -0.003346582, + -0.04438798, + -0.026139295, + -0.02997904, + 0.0036781062, + 0.020729346, + -0.0038760314, + 0.0017565844, + -0.008088535, + -0.0043906365, + -0.004331259, + 0.03731546, + -0.014831181, + 0.010602183, + 0.023579465, + 0.009236501, + 0.013735996, + 0.017852835, + 0.0051493486, + 0.022497475, + 0.0020518226, + -0.014356161, + -0.0068482053, + 0.0036451188, + 0.01778686, + 0.016612506, + -0.007639905, + -0.0013153766, + -0.01140048, + 0.019251505, + -0.014276991, + 0.00757393, + -0.0073430175, + 0.011756745, + -0.0077916477, + 0.00994903, + -0.03016377, + -0.014606865, + 0.0398489, + 0.022734985, + 0.01913275, + -0.023025276, + 0.02802618, + 0.0003393589, + -0.015319395, + -0.015688855, + 0.0027033256, + 0.03040128, + -0.01459367, + 0.03277638, + -0.011096995, + 0.0061191814, + -0.03119298, + -0.0035296625, + 0.01572844, + -0.008708701, + -0.00947401, + -0.0028402237, + 0.0023371645, + -0.0190008, + -0.021996066, + -0.00841841, + 0.043701842, + 0.02235233, + 0.023091251, + 0.014263796, + -0.0061587663, + -0.015029105, + 0.023064861, + 0.024978135, + 0.01599234, + -0.02319681, + 0.006310509, + 0.0042289975, + -0.0035197663, + -0.011756745, + -0.017773665, + -0.0271817, + 0.0009904497, + -0.026429586, + -0.0056639537, + -0.0061818575, + 0.0017038044, + 0.0036220276, + 0.0068152174, + -0.019489015, + 0.0041894126, + 0.013524875, + 0.00902538, + -0.0017169995, + -0.012106413, + 0.006376484, + -0.0048194737, + -0.012917905, + -0.008662518, + -0.015609685, + 0.002441075, + -0.03119298, + 0.010173345, + -0.0049976064, + 0.0010250866, + -0.00031358743, + -0.00709891, + -0.02720809, + 0.01396031, + -0.014831181, + 0.014422135, + -0.013129026, + -0.023526685, + 0.0066568777, + -0.009817081, + -0.02124395, + -0.0037209901, + -0.03042767, + 0.009902848, + -0.028606761, + 0.03063879, + -0.0154909305, + 0.01617707, + -0.012502262, + 0.009355255, + 0.022787765, + 0.005835489, + -0.008266668, + 0.017377816, + -0.007917, + 0.005558394, + 0.008425008, + 0.02359266, + 0.0066733714, + -0.007798245, + -0.00796978, + 0.00477659, + 0.022814155, + -0.026495561, + 0.0019578082, + -0.011670978, + -0.018829266, + 0.00833924, + -0.0037308864, + 0.05404672, + 0.002734664, + 0.0038166537, + -0.01462006, + 0.021969676, + 0.03591679, + -0.04042948, + -0.0063171065, + 0.03372642, + -0.018512586, + -0.03639181, + 0.0058156964, + -0.16657369, + 0.02388295, + 0.03887247, + -0.03069157, + 0.018802876, + 0.020742541, + 0.0072110677, + -0.030902691, + -0.001330221, + -0.0039881887, + 0.057266302, + 0.017404206, + -0.02668029, + -0.02264262, + -0.016137484, + -0.021705775, + -0.018195905, + 0.01393392, + 0.021824531, + 0.00335153, + 0.037104342, + -0.011123385, + -0.01227135, + 0.0043180636, + -0.02681224, + 0.03005821, + -0.0025268425, + -0.009744507, + 0.026587926, + -0.00997542, + -0.0015355682, + -0.02055781, + 0.01615068, + 0.0277095, + 0.015345785, + 0.0077322703, + -0.009012185, + -0.007903805, + -0.01818271, + -0.0024361268, + 0.00039420064, + -0.0028996014, + 0.004647939, + 0.01947582, + 0.01462006, + 0.005818995, + 0.007870818, + -0.020755736, + -0.0066964626, + -0.0069207777, + 0.03029572, + -0.012040438, + -0.0007537644, + 0.015741635, + -0.0008040703, + 0.0022596437, + 0.0138019705, + 0.03507231, + 0.006237936, + -0.010509818, + -0.029715141, + -0.0008189147, + 0.016559726, + -0.011941475, + -0.0056309663, + -0.0060169203, + -0.008088535, + 0.025954565, + -0.03119298, + 0.01403948, + -0.009434425, + -0.012198778, + 0.021824531, + -0.02884427, + -0.0005323358, + 0.01221857, + -0.0037539776, + 0.01638819, + 0.002792392, + -0.00027915672, + -0.030876301, + 0.0591136, + -0.021125196, + -0.0030266033, + -0.0074749677, + 0.02396212, + 0.0057266303, + 0.012845333, + -0.0398489, + 0.001264246, + 0.029794311, + -0.01947582, + -0.005861879, + 0.004915138, + 0.010015005, + 0.0108199, + -0.00955318, + 0.023869755, + -0.021257145, + -0.026535146, + 0.0059410487, + -0.016981965, + -0.0059806337, + 0.02050503, + 0.03285555, + 0.00878787, + 0.0047172126, + 0.030902691, + 0.00913094, + 0.010932058, + -0.0065513174, + 0.0013277469, + 0.011921682, + 0.012937698, + -0.01572844, + -0.00045935094, + 0.02142868, + 0.009196915, + 0.0543634, + 0.013551265, + 0.010984838, + -0.0054000537, + 0.013346743, + 0.0024377762, + -0.0016279331, + -0.002739612, + -0.087720364, + 0.03794882, + -0.0071780803, + 0.015055495, + -0.008873638, + 0.05370365, + 0.03449173, + 0.021837726, + 0.010371271, + 0.010509818, + -0.00625443, + -0.015688855, + -0.0030513438, + -0.003892525, + 0.004258686, + -0.02908178, + -0.0017433894, + 0.009823678, + 0.0056045763, + 0.03182634, + -0.00424879, + -0.01580761, + 0.004393935, + -0.03019016, + -0.012528652, + -0.0033449326, + -0.019660551, + 0.007323225, + 0.02364544, + 0.009256293, + 0.0026505457, + -0.018908435, + -0.009144135, + -0.011591808, + -0.00596414, + 0.03346252, + -0.02731365, + 0.00014906227, + 0.03581123, + -0.03596957, + -0.0015421656, + 0.0074155903, + 0.006613994, + -0.010391063, + -0.00971152, + -0.022761375, + -0.039426662, + -0.012752968, + -0.0039552012, + -0.019304285, + -0.02134951, + -0.013498485, + 0.0021392393, + -0.012970685, + 0.010272307, + -0.0057233316, + 0.0010283854, + 0.008246875, + -0.03876691, + 0.0028517693, + 0.013722801, + -0.0077454653, + -0.02910817, + 0.026086515, + 0.04214483, + 0.0046182503, + -0.016005535, + -0.019700136, + 0.014738815, + -0.0364182, + -0.02493855, + 0.023421125, + -0.03111381, + -0.009177122, + -0.02211482, + -0.02900261, + 0.0039881887, + 0.0072638476, + 0.015820805, + -0.015715245, + 0.0035956376, + -0.01902719, + -0.009751105, + -0.007686088, + 0.0012931101, + 0.017879225, + 0.01351168, + -0.01501591, + 0.014474915, + -0.03055962, + 0.030929081, + 0.007376005, + 0.029029, + -0.01287832, + -0.012654006, + 0.016638895, + 0.005241714, + 0.01058239, + 0.02016196, + 0.01918553, + -0.016533336, + -0.02459548, + -0.0865592, + 0.012673798, + -0.005660655, + -0.009520193, + 0.0069999476, + -0.0101799425, + 0.01422421, + -0.0045951586, + 0.023896145, + -0.00778505, + -0.028685931, + 0.02261623, + -0.00899899, + -0.019779306, + -0.02583581, + 0.000015501548, + 0.013722801, + 0.018855656, + 0.025228841, + -0.011149775, + -0.0092892805, + 0.0047567976, + 0.02132312, + 0.0022266563, + -0.04499495, + 0.0070263376, + -0.00899899, + 0.03106103, + -0.03005821, + 0.0013928972, + 0.006953765, + -0.045813043, + 0.0057068374, + -0.00079664815, + -0.0084448, + -0.014580475, + -0.014131845, + 0.018697316, + 0.02390934, + 0.037183512, + -0.023117641, + -0.009638947, + 0.01356446, + -0.01475201, + -0.011011228, + -0.009137537, + 0.01403948, + 0.0072242627, + 0.02343432, + 0.009348658, + 0.0031255656, + 0.021072416, + 0.008279863, + -0.0115588205, + 0.005142751, + -0.048452042, + 0.007844428, + -0.0013862997, + -0.00683501, + 0.0033680238, + 0.020676566, + 0.025532326, + 0.024291996, + 0.00567385, + 0.010259112, + -0.028791491, + -0.010173345, + 0.0132477805, + 0.019013995, + -0.017668106, + -0.029715141, + 0.0129311, + 0.002124395, + 0.022576645, + -0.00038244884, + -0.01641458, + 0.026799046, + -0.02277457, + -0.03385837, + 0.009454218, + 0.003922214, + -0.0029886675, + -0.05547178, + 0.017325036, + 0.021098806, + -0.03063879, + -0.021679385, + -0.01158521, + -0.016929185, + 0.0279734, + 0.00261261, + -0.007844428, + 0.017509766, + -0.0015363928, + 0.000819327, + 0.020755736, + -0.017984785, + -0.02734004, + 0.01776047, + 0.017298644, + 0.010377868, + -0.016955575, + -0.017113915, + -0.02119117, + -0.00849758, + 0.02039947, + -0.019660551, + -0.024687845, + 0.010727535, + 0.023341956, + -0.0047963825, + 0.02908178, + -0.00881426, + 0.01612429, + 0.008504177, + -0.004245491, + -0.012997075, + -0.017470181, + -0.0068877903, + 0.015979145, + 0.02258984, + 0.019713331, + 0.0018934825, + -0.0068745953, + 0.03834467, + 0.00960596, + 0.010813302, + -0.017298644, + 0.019660551, + -0.00083252206, + 0.0095861675, + -0.0023338657, + -0.021916896, + -0.0017054537, + -0.00839202, + -0.0095861675, + 0.009091355, + 0.0049547227, + -0.01419782, + 0.057319082, + 0.018433416, + 0.009282683, + -0.014250601, + -0.00833924, + 0.04127396, + 0.009005588, + 0.014079065, + -0.0055748876, + -0.029794311, + 0.012805748, + -0.005192233, + -0.012416495, + -0.03533621, + -0.020795321, + -0.008009365, + -0.021916896, + 0.0054957177, + 0.0084513975, + 0.0029787712, + 0.03195829, + -0.0072506526, + 0.03063879, + 0.01517425, + -0.02892344, + -0.0039123176, + 0.03868774, + -0.012997075, + 0.021969676, + -0.028633151, + 0.021098806, + 0.0149631305, + -0.017219475, + -0.024226021, + 0.00781144, + -0.01348529, + -0.011103593, + -0.017298644, + 0.00799617, + 0.02807896, + 0.0024691145, + -0.006313808, + -0.01673126, + -0.01562288, + -0.0024790107, + -0.0059311525, + -0.01367002, + -0.0055122115, + -0.010457038 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 7, + "total_tokens": 7 + } +} +276 34131 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 81 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["Which of these are cities in Japan"]}HTTP/2.0 200 OK +Content-Length: 33176 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:19:34 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 82 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6659cb4779-xzdkj +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999992 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_76c89ea05c7e4eaab229e6051202e070 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.01976611, + 0.003909019, + 0.00026493086, + 0.013577655, + -0.01501591, + 0.02332876, + -0.03802799, + -0.0021227456, + -0.00035028602, + -0.048372872, + -0.011829318, + 0.01184911, + 0.011684173, + -0.009757702, + -0.011994255, + -0.010377868, + 0.024252411, + -0.0069867526, + 0.011479651, + -0.02113839, + -0.01522703, + 0.01448811, + 0.0046908227, + -0.03370003, + 0.0010646716, + 0.029029, + 0.008860443, + -0.02335515, + -0.00997542, + 0.0027725995, + 0.011459858, + 0.0018753394, + -0.0049679177, + -0.0051130624, + -0.0041498276, + -0.0030942275, + -0.008490982, + -0.00704613, + -0.019700136, + 0.0027247677, + 0.04235595, + -0.0035428575, + -0.009361853, + -0.0066304877, + -0.00332514, + 0.004621549, + -0.025373986, + 0.022734985, + -0.01638819, + 0.018697316, + 0.019198725, + 0.015161055, + -0.034623682, + -0.000048347305, + -0.025849005, + 0.0034537914, + -0.020808516, + 0.01659931, + -0.023051666, + 0.00027874438, + 0.013696411, + 0.005456133, + -0.018987605, + 0.012317533, + 0.0068745953, + -0.0089726, + -0.0012155893, + 0.008359033, + -0.014606865, + -0.0076596974, + 0.03055962, + 0.011961267, + -0.007323225, + -0.01274637, + 0.014303381, + -0.03417505, + -0.012416495, + -0.013709606, + 0.012581433, + 0.028685931, + 0.008847248, + -0.019964036, + 0.0048326687, + -0.025123281, + 0.02113839, + 0.004601756, + -0.0093156705, + 0.029767921, + -0.00026080743, + 0.0018225594, + 0.01419782, + 0.029847091, + -0.000028090919, + 0.017298644, + -0.027445601, + -0.01884246, + 0.0014283587, + 0.02016196, + -0.008807663, + -0.012073426, + 0.0079104025, + 0.013267573, + 0.002462517, + -0.01050322, + -0.008279863, + 0.02280096, + 0.005898165, + -0.021784946, + 0.005848684, + -0.008570152, + -0.0017714287, + 0.026469171, + 0.0040607615, + -0.07478926, + -0.03190551, + -0.02707614, + 0.02937207, + -0.0074749677, + -0.01498952, + -0.015847195, + 0.0002001929, + 0.04048226, + 0.012614421, + -0.011354297, + 0.04449354, + 0.0095004, + -0.012845333, + -0.02340793, + -0.014474915, + -0.01396031, + 0.03005821, + -0.0021079013, + 0.0064094714, + 0.0050998675, + -0.0072638476, + 0.01462006, + -0.0018374037, + -0.0062907166, + -0.014633255, + -0.01828827, + 0.006795425, + -0.0054891203, + 0.00635999, + 0.01509508, + 0.0269178, + 0.010232722, + 0.03422783, + 0.00786422, + 0.007738868, + -0.020914076, + -0.00094179314, + -0.015583295, + 0.0009648844, + 0.0063072103, + 0.0038100563, + 0.00910455, + 0.016216656, + 0.01388114, + 0.0028765101, + -0.012944295, + -0.010015005, + 0.0124098975, + 0.02435797, + -0.010588988, + -0.013122428, + 0.020095985, + 0.01831466, + 0.024846185, + 0.0025235438, + 0.000048218448, + -0.03116659, + 0.0075013577, + -0.04488939, + 0.012053633, + 0.014276991, + -0.005977335, + 0.01411865, + 0.01467284, + -0.03179995, + 0.008194095, + 0.004925034, + -0.00480298, + 0.019607771, + 0.001966055, + 0.013999895, + 0.0018291569, + 0.0166257, + 0.0006869647, + 0.010325087, + -0.01931748, + 0.03557372, + 0.02773589, + 0.02997904, + 0.011440065, + -0.6232262, + -0.039321102, + -0.0020996544, + 0.0044533126, + 0.03211663, + 0.00934206, + 0.0321958, + 0.0057761115, + 0.0035824426, + 0.02995265, + -0.010965046, + 0.01562288, + -0.027419211, + -0.004525885, + -0.010364673, + -0.006267625, + 0.008583347, + -0.01348529, + 0.003813355, + 0.02053142, + -0.0069867526, + 0.0002610136, + -0.011255335, + -0.014316576, + 0.012396703, + -0.01129492, + -0.023658635, + -0.009012185, + -0.012053633, + 0.04631445, + -0.03222219, + 0.04312126, + 0.020544615, + -0.00504049, + 0.031008251, + 0.0021128494, + -0.031034641, + 0.02240511, + 0.0139867, + 0.024846185, + -0.02675946, + 0.00467103, + 0.013524875, + -0.0013821763, + 0.0008584997, + 0.01364363, + 0.04053504, + -0.023394736, + 0.005307689, + -0.0017301944, + 0.02372461, + -0.0314041, + -0.03731546, + -0.009467413, + 0.013577655, + 0.010694548, + 0.019013995, + -0.012647408, + -0.0070659225, + -0.021362705, + -0.022787765, + 0.0038661351, + -0.0179452, + -0.010094175, + -0.013999895, + 0.013313755, + -0.008174303, + -0.008596542, + 0.00725725, + -0.03546816, + 0.0045324825, + 0.0076465025, + -0.011195958, + 0.009724715, + 0.020848101, + 0.03955861, + 0.019805696, + -0.007323225, + -0.01359085, + -0.013366535, + 0.012027243, + -0.00069191284, + -0.02055781, + -0.03346252, + -0.00032451455, + -0.03528343, + -0.015002715, + 0.011228945, + 0.01712711, + -0.01572844, + 0.0032624637, + -0.0027725995, + -0.014817986, + 0.0055089127, + -0.010008408, + 0.015385371, + -0.002027082, + 0.002172227, + 0.004938229, + -0.019462625, + -0.022471085, + -0.009876458, + 0.008352435, + -0.0015083535, + -0.014211015, + -0.029873481, + -0.01783964, + 0.0081677055, + 0.02562469, + -0.017166695, + 0.010932058, + 0.002040277, + -0.017826445, + -0.00665028, + 0.02615249, + -0.02251067, + 0.02127034, + -0.0051526474, + 0.01517425, + 0.0087218955, + 0.0057200324, + 0.017536156, + 0.021758555, + 0.0011067307, + 0.02720809, + 0.0155041255, + -0.006442459, + -0.005423145, + -0.006478745, + 0.010015005, + -0.011479651, + 0.014554085, + 0.01789242, + -0.018961215, + 0.004502794, + 0.022154406, + -0.0005183161, + -0.006082895, + 0.02789423, + -0.01717989, + -0.02997904, + -0.01981889, + 0.01799798, + -0.017087525, + 0.00038079947, + -0.024291996, + -0.0008609738, + -0.00134589, + -0.03288194, + 0.006224741, + 0.011156373, + -0.017391011, + -0.02047864, + 0.01274637, + -0.009249696, + -0.0057728128, + -0.0023272682, + -0.00054594316, + 0.007296835, + 0.00947401, + 0.03623347, + 0.0008782922, + -0.019581381, + 0.0032162813, + 0.013551265, + -0.020650174, + 0.04280458, + 0.012178985, + -0.0020617188, + -0.022009261, + -0.020571005, + -0.012832138, + 0.0011809525, + 0.008741688, + -0.00841841, + -0.0055880826, + 0.008979198, + -0.010707743, + 0.00030101094, + 0.006867998, + 0.0138151655, + -0.01712711, + -0.02483299, + -0.0051625436, + 0.034623682, + -0.01356446, + 0.01704794, + -0.00024369516, + 0.007217665, + 0.0145145, + -0.02578303, + 0.014211015, + 0.0043378565, + 0.0043411553, + 0.02836925, + 0.0020831607, + 0.01419782, + 0.016111095, + -0.024661455, + 0.0060169203, + 0.015768025, + -0.0032756587, + 0.001594121, + -0.024608675, + 0.03736824, + -0.01462006, + -0.0101535525, + -0.023130836, + 0.024107266, + 0.01026571, + 0.022048846, + -0.01754935, + -0.00477659, + 0.017536156, + -0.0068152174, + 0.027419211, + 0.00022575821, + 0.014844376, + -0.0153062, + -0.004130035, + 0.019739721, + -0.019911256, + 0.009810483, + -0.012277948, + -0.019607771, + 0.0021920195, + -0.010285502, + 0.030955471, + -0.0008094308, + -0.008128121, + -0.02784145, + -0.017166695, + -0.0061323764, + 0.0031173187, + -0.0060433103, + -0.008655921, + 0.022629425, + -0.011341102, + 0.02726087, + 0.0069867526, + 0.015240225, + 0.010443843, + 0.018473001, + -0.00828646, + 0.01158521, + 0.006769035, + 0.04525885, + 0.017615326, + 0.007006545, + 0.02121756, + -0.03042767, + -0.017496571, + -0.00248066, + 0.016282631, + 0.005291195, + -0.02551913, + 0.02496494, + 0.0060268166, + 0.01361724, + 0.03356808, + 0.0044038314, + -0.006867998, + -0.0024790107, + -0.00921011, + 0.0009269488, + 0.0059278538, + 0.0129311, + 0.02026752, + -0.021837726, + -0.01765491, + -0.025585106, + -0.0042191013, + -0.015556905, + 0.0017202982, + 0.00556829, + -0.0023322164, + -0.0058519826, + -0.0043510515, + 0.01604512, + 0.03005821, + 0.0064721475, + -0.059588622, + 0.01359085, + 0.02728726, + -0.019634161, + -0.020465445, + -0.010892473, + -0.0066700727, + -0.017470181, + 0.0065843053, + 0.020861296, + 0.018776486, + 0.0073562125, + -0.009724715, + -0.01702155, + 0.0066073965, + 0.03000543, + -0.02134951, + -0.019383455, + -0.017061135, + -0.0003364725, + -0.027445601, + -0.0031222668, + 0.0030315514, + 0.03137771, + -0.024872575, + -0.00035234774, + -0.010621975, + 0.012686993, + -0.006867998, + -0.009388243, + -0.012614421, + -0.006953765, + 0.011802928, + 0.021798141, + -0.02565108, + -0.019964036, + 0.008253473, + 0.021494655, + -0.0036715087, + -0.014791595, + -0.01607151, + -0.022576645, + -0.0025433362, + 0.11579932, + -0.00944762, + 0.007824635, + -0.019330675, + 0.01704794, + 0.006953765, + -0.00266539, + 0.0059707374, + -0.010325087, + 0.01118936, + -0.01683682, + -0.010509818, + 0.012522055, + 0.005518809, + 0.019172335, + -0.013472095, + -0.04201288, + -0.04095728, + 0.0087218955, + -0.013359938, + 0.001095185, + -0.015108275, + 0.028553981, + 0.007857623, + -0.02013557, + 0.022497475, + 0.02567747, + 0.01652014, + 0.015213835, + -0.012343923, + -0.0012188881, + 0.0055484977, + -0.01947582, + 0.01797159, + -0.016374996, + 0.011070605, + 0.011090398, + 0.03676127, + 0.0011826019, + -0.0011380687, + -0.005888269, + 0.007171483, + -0.0002983307, + -0.01401309, + 0.008675713, + -0.03198468, + 0.0035560525, + 0.0101667475, + -0.0071648853, + -0.0145145, + 0.028659541, + -0.014316576, + -0.032565262, + -0.03528343, + -0.019409845, + 0.012211973, + -0.003786965, + -0.0033944137, + 0.009269488, + -0.0155041255, + -0.00009179803, + -0.0072638476, + 0.0057068374, + -0.0032690612, + -0.02174536, + -0.03884608, + 0.011987657, + -0.03108742, + -0.05140772, + -0.0044698063, + 0.0005814047, + -0.016981965, + -0.02897622, + 0.020095985, + 0.03148327, + -0.012000852, + 0.02430519, + -0.024846185, + 0.008906625, + 0.01797159, + -0.0168896, + -0.03396393, + -0.024291996, + -0.01417143, + -0.01937026, + 0.02464826, + 0.013577655, + -0.02274818, + -0.01301027, + -0.010015005, + 0.0060795965, + -0.0027890932, + 0.008273265, + 0.01997723, + -0.0030233045, + -0.009559778, + 0.01079351, + 0.019660551, + -0.00749476, + -0.02916095, + 0.03855579, + -0.0018308063, + -0.00847119, + -0.008405215, + 0.0070791175, + 0.010668158, + 0.014554085, + -0.002942485, + -0.00002896715, + 0.002726417, + 0.02491216, + -0.02945124, + 0.02272179, + 0.007903805, + -0.01351168, + 0.03676127, + 0.014329771, + 0.020439055, + -0.0035560525, + -0.0134589, + 0.010285502, + -0.0067756325, + 0.023473905, + 0.03211663, + -0.02997904, + 0.008900028, + -0.009348658, + 0.00041997212, + 0.0007108806, + -0.01411865, + -0.016031925, + 0.037104342, + -0.0069603627, + -0.029794311, + -0.01889524, + -0.009638947, + -0.01016015, + 0.018670926, + -0.017325036, + -0.0129311, + -0.020966856, + -0.0070263376, + 0.020940466, + -0.008345838, + -0.05219942, + -0.02335515, + 0.01142687, + 0.014580475, + 0.011255335, + 0.010041395, + 0.015385371, + 0.0050206976, + -0.012614421, + -0.0030084602, + -0.04436159, + -0.02810535, + -0.015438151, + -0.016850015, + -0.001156212, + 0.0197925, + 0.04953403, + 0.024041291, + 0.02905539, + 0.0017301944, + -0.010542805, + -0.00078798895, + -0.0046380428, + 0.0321958, + -0.008405215, + -0.002916095, + 0.018327855, + 0.02171897, + -0.024199631, + -0.006138974, + -0.012080023, + 0.04892706, + 0.002335515, + -0.009790691, + -0.011209153, + -0.05204108, + -0.0013368184, + -0.00847119, + 0.0042388937, + -0.011433467, + 0.011420272, + -0.0033234907, + 0.0031849432, + -0.0126935905, + 0.005106465, + -0.009177122, + 0.008728493, + 0.0012708434, + 0.010780315, + 0.009863263, + 0.0027462095, + -0.008352435, + -0.017417401, + -0.01517425, + -0.0004362597, + 0.023051666, + 0.01649375, + 0.0009162278, + -0.006000426, + 0.01229774, + -0.0029457838, + 0.012865125, + -0.00760032, + -0.01681043, + -0.016506946, + -0.0023190214, + -0.024252411, + 0.0047502, + 0.0025565312, + -0.03288194, + -0.016374996, + -0.009487205, + -0.010938656, + 0.028738711, + -0.02549274, + -0.020821711, + 0.01287832, + 0.00020472867, + 0.02288013, + 0.0121130105, + 0.012383508, + 0.0064754463, + 0.005782709, + -0.010430648, + -0.026086515, + -0.024978135, + 0.0008403566, + 0.015715245, + 0.02615249, + -0.01799798, + -0.031008251, + -0.005657356, + 0.0107209375, + -0.003496675, + -0.0033218414, + 0.03607513, + 0.03435978, + -0.0145145, + -0.0056672525, + 0.012950893, + -0.01612429, + 0.032433312, + -0.010298697, + -0.012634213, + 0.00533078, + 0.0022893324, + -0.0017747275, + 0.0031371112, + -0.015424956, + -0.0041498276, + 0.000092983515, + -0.016256241, + 0.01781325, + -0.022682205, + 0.0014473266, + 0.012522055, + 0.0019165737, + 0.013867945, + 0.0040442673, + 0.0068482053, + 0.01385475, + 0.0115720155, + -0.000658513, + -0.010984838, + 0.0010069434, + 0.03182634, + -0.009150732, + -0.016823625, + -0.00353626, + 0.0004201783, + 0.011908487, + -0.0035329612, + 0.009935835, + 0.01182272, + -0.02881788, + 0.0074617728, + 0.04441437, + -0.0058915676, + -0.007949987, + -0.014686035, + -0.022655815, + -0.020544615, + 0.0075277477, + 0.0015075288, + -0.0025532325, + -0.02161341, + -0.0155173205, + 0.017588936, + -0.002805587, + 0.015372176, + -0.013894335, + -0.01295749, + 0.011888695, + 0.0093024755, + -0.013221391, + 0.008556957, + -0.00007540736, + 0.02277457, + -0.022207186, + -0.01596595, + -0.013359938, + -0.013947115, + 0.012330728, + -0.0076069175, + -0.013452303, + -0.02934568, + -0.006719554, + 0.03048045, + 0.03132493, + 0.03169439, + 0.018354245, + -0.025453156, + -0.011888695, + -0.015715245, + -0.02997904, + 0.022391915, + 0.0002653432, + 0.018143125, + 0.02470104, + -0.01005459, + 0.02372461, + 0.009935835, + -0.00009071563, + -0.011816123, + 0.009638947, + -0.02884427, + -0.016823625, + -0.0032377231, + -0.023843365, + -0.016902795, + -0.004473105, + -0.00046965954, + -0.006086194, + -0.006557915, + 0.012106413, + 0.0069207777, + 0.008708701, + 0.041590642, + -0.0095861675, + 0.013656825, + -0.010727535, + -0.01440894, + 0.009559778, + -0.0049943076, + -0.023658635, + -0.013762386, + -0.015794415, + 0.027577551, + 0.005746423, + -0.008570152, + -0.02335515, + -0.0017499869, + -0.02100644, + -0.03222219, + -0.00361543, + 0.016638895, + 0.012416495, + -0.001147965, + 0.004288375, + 0.010648365, + 0.008253473, + 0.0168896, + -0.01514786, + 0.009533388, + 0.0074023954, + -0.037236292, + 0.02245789, + 0.01778686, + -0.0050239963, + -0.011156373, + 0.0048590587, + 0.008847248, + 0.017219475, + 0.020689761, + -0.022959301, + -0.02282735, + -0.0034867788, + -0.011882097, + -0.02953041, + 0.02330237, + 0.006482044, + -0.03348891, + 0.01762852, + 0.01778686, + -0.017747276, + 0.0016939081, + 0.01058239, + -0.0018786382, + -0.005000905, + 0.0010770418, + 0.00042471406, + -0.015213835, + 0.0107473275, + -0.02778867, + 0.018380634, + -0.0027445601, + -0.011308115, + 0.01905358, + -0.025176061, + -0.021705775, + -0.017509766, + -0.00675584, + -0.009850068, + -0.014079065, + -0.002444374, + -0.011380687, + -0.012812345, + -0.001224661, + -0.01021293, + -0.03734185, + 0.0047996813, + -0.0006828413, + -0.014606865, + -0.023473905, + 0.022009261, + 0.011750148, + -0.013775581, + -0.012574836, + 0.02129673, + -0.03319862, + 0.0031024744, + -0.0232232, + 0.013293963, + -0.04095728, + 0.021811336, + -0.0077058803, + -0.021468265, + -0.028501201, + 0.00498771, + 0.01118936, + -0.03019016, + -0.016084705, + 0.22104265, + -0.01018654, + -0.0043609478, + 0.03446534, + -0.0044665076, + 0.03420144, + 0.028659541, + -0.009361853, + -0.015952755, + 0.010391063, + -0.03288194, + -0.009546583, + 0.0064358613, + 0.011149775, + -0.003346582, + -0.04438798, + -0.026139295, + -0.02997904, + 0.0036781062, + 0.020729346, + -0.0038760314, + 0.0017565844, + -0.008088535, + -0.0043906365, + -0.004331259, + 0.03731546, + -0.014831181, + 0.010602183, + 0.023579465, + 0.009236501, + 0.013735996, + 0.017852835, + 0.0051493486, + 0.022497475, + 0.0020518226, + -0.014356161, + -0.0068482053, + 0.0036451188, + 0.01778686, + 0.016612506, + -0.007639905, + -0.0013153766, + -0.01140048, + 0.019251505, + -0.014276991, + 0.00757393, + -0.0073430175, + 0.011756745, + -0.0077916477, + 0.00994903, + -0.03016377, + -0.014606865, + 0.0398489, + 0.022734985, + 0.01913275, + -0.023025276, + 0.02802618, + 0.0003393589, + -0.015319395, + -0.015688855, + 0.0027033256, + 0.03040128, + -0.01459367, + 0.03277638, + -0.011096995, + 0.0061191814, + -0.03119298, + -0.0035296625, + 0.01572844, + -0.008708701, + -0.00947401, + -0.0028402237, + 0.0023371645, + -0.0190008, + -0.021996066, + -0.00841841, + 0.043701842, + 0.02235233, + 0.023091251, + 0.014263796, + -0.0061587663, + -0.015029105, + 0.023064861, + 0.024978135, + 0.01599234, + -0.02319681, + 0.006310509, + 0.0042289975, + -0.0035197663, + -0.011756745, + -0.017773665, + -0.0271817, + 0.0009904497, + -0.026429586, + -0.0056639537, + -0.0061818575, + 0.0017038044, + 0.0036220276, + 0.0068152174, + -0.019489015, + 0.0041894126, + 0.013524875, + 0.00902538, + -0.0017169995, + -0.012106413, + 0.006376484, + -0.0048194737, + -0.012917905, + -0.008662518, + -0.015609685, + 0.002441075, + -0.03119298, + 0.010173345, + -0.0049976064, + 0.0010250866, + -0.00031358743, + -0.00709891, + -0.02720809, + 0.01396031, + -0.014831181, + 0.014422135, + -0.013129026, + -0.023526685, + 0.0066568777, + -0.009817081, + -0.02124395, + -0.0037209901, + -0.03042767, + 0.009902848, + -0.028606761, + 0.03063879, + -0.0154909305, + 0.01617707, + -0.012502262, + 0.009355255, + 0.022787765, + 0.005835489, + -0.008266668, + 0.017377816, + -0.007917, + 0.005558394, + 0.008425008, + 0.02359266, + 0.0066733714, + -0.007798245, + -0.00796978, + 0.00477659, + 0.022814155, + -0.026495561, + 0.0019578082, + -0.011670978, + -0.018829266, + 0.00833924, + -0.0037308864, + 0.05404672, + 0.002734664, + 0.0038166537, + -0.01462006, + 0.021969676, + 0.03591679, + -0.04042948, + -0.0063171065, + 0.03372642, + -0.018512586, + -0.03639181, + 0.0058156964, + -0.16657369, + 0.02388295, + 0.03887247, + -0.03069157, + 0.018802876, + 0.020742541, + 0.0072110677, + -0.030902691, + -0.001330221, + -0.0039881887, + 0.057266302, + 0.017404206, + -0.02668029, + -0.02264262, + -0.016137484, + -0.021705775, + -0.018195905, + 0.01393392, + 0.021824531, + 0.00335153, + 0.037104342, + -0.011123385, + -0.01227135, + 0.0043180636, + -0.02681224, + 0.03005821, + -0.0025268425, + -0.009744507, + 0.026587926, + -0.00997542, + -0.0015355682, + -0.02055781, + 0.01615068, + 0.0277095, + 0.015345785, + 0.0077322703, + -0.009012185, + -0.007903805, + -0.01818271, + -0.0024361268, + 0.00039420064, + -0.0028996014, + 0.004647939, + 0.01947582, + 0.01462006, + 0.005818995, + 0.007870818, + -0.020755736, + -0.0066964626, + -0.0069207777, + 0.03029572, + -0.012040438, + -0.0007537644, + 0.015741635, + -0.0008040703, + 0.0022596437, + 0.0138019705, + 0.03507231, + 0.006237936, + -0.010509818, + -0.029715141, + -0.0008189147, + 0.016559726, + -0.011941475, + -0.0056309663, + -0.0060169203, + -0.008088535, + 0.025954565, + -0.03119298, + 0.01403948, + -0.009434425, + -0.012198778, + 0.021824531, + -0.02884427, + -0.0005323358, + 0.01221857, + -0.0037539776, + 0.01638819, + 0.002792392, + -0.00027915672, + -0.030876301, + 0.0591136, + -0.021125196, + -0.0030266033, + -0.0074749677, + 0.02396212, + 0.0057266303, + 0.012845333, + -0.0398489, + 0.001264246, + 0.029794311, + -0.01947582, + -0.005861879, + 0.004915138, + 0.010015005, + 0.0108199, + -0.00955318, + 0.023869755, + -0.021257145, + -0.026535146, + 0.0059410487, + -0.016981965, + -0.0059806337, + 0.02050503, + 0.03285555, + 0.00878787, + 0.0047172126, + 0.030902691, + 0.00913094, + 0.010932058, + -0.0065513174, + 0.0013277469, + 0.011921682, + 0.012937698, + -0.01572844, + -0.00045935094, + 0.02142868, + 0.009196915, + 0.0543634, + 0.013551265, + 0.010984838, + -0.0054000537, + 0.013346743, + 0.0024377762, + -0.0016279331, + -0.002739612, + -0.087720364, + 0.03794882, + -0.0071780803, + 0.015055495, + -0.008873638, + 0.05370365, + 0.03449173, + 0.021837726, + 0.010371271, + 0.010509818, + -0.00625443, + -0.015688855, + -0.0030513438, + -0.003892525, + 0.004258686, + -0.02908178, + -0.0017433894, + 0.009823678, + 0.0056045763, + 0.03182634, + -0.00424879, + -0.01580761, + 0.004393935, + -0.03019016, + -0.012528652, + -0.0033449326, + -0.019660551, + 0.007323225, + 0.02364544, + 0.009256293, + 0.0026505457, + -0.018908435, + -0.009144135, + -0.011591808, + -0.00596414, + 0.03346252, + -0.02731365, + 0.00014906227, + 0.03581123, + -0.03596957, + -0.0015421656, + 0.0074155903, + 0.006613994, + -0.010391063, + -0.00971152, + -0.022761375, + -0.039426662, + -0.012752968, + -0.0039552012, + -0.019304285, + -0.02134951, + -0.013498485, + 0.0021392393, + -0.012970685, + 0.010272307, + -0.0057233316, + 0.0010283854, + 0.008246875, + -0.03876691, + 0.0028517693, + 0.013722801, + -0.0077454653, + -0.02910817, + 0.026086515, + 0.04214483, + 0.0046182503, + -0.016005535, + -0.019700136, + 0.014738815, + -0.0364182, + -0.02493855, + 0.023421125, + -0.03111381, + -0.009177122, + -0.02211482, + -0.02900261, + 0.0039881887, + 0.0072638476, + 0.015820805, + -0.015715245, + 0.0035956376, + -0.01902719, + -0.009751105, + -0.007686088, + 0.0012931101, + 0.017879225, + 0.01351168, + -0.01501591, + 0.014474915, + -0.03055962, + 0.030929081, + 0.007376005, + 0.029029, + -0.01287832, + -0.012654006, + 0.016638895, + 0.005241714, + 0.01058239, + 0.02016196, + 0.01918553, + -0.016533336, + -0.02459548, + -0.0865592, + 0.012673798, + -0.005660655, + -0.009520193, + 0.0069999476, + -0.0101799425, + 0.01422421, + -0.0045951586, + 0.023896145, + -0.00778505, + -0.028685931, + 0.02261623, + -0.00899899, + -0.019779306, + -0.02583581, + 0.000015501548, + 0.013722801, + 0.018855656, + 0.025228841, + -0.011149775, + -0.0092892805, + 0.0047567976, + 0.02132312, + 0.0022266563, + -0.04499495, + 0.0070263376, + -0.00899899, + 0.03106103, + -0.03005821, + 0.0013928972, + 0.006953765, + -0.045813043, + 0.0057068374, + -0.00079664815, + -0.0084448, + -0.014580475, + -0.014131845, + 0.018697316, + 0.02390934, + 0.037183512, + -0.023117641, + -0.009638947, + 0.01356446, + -0.01475201, + -0.011011228, + -0.009137537, + 0.01403948, + 0.0072242627, + 0.02343432, + 0.009348658, + 0.0031255656, + 0.021072416, + 0.008279863, + -0.0115588205, + 0.005142751, + -0.048452042, + 0.007844428, + -0.0013862997, + -0.00683501, + 0.0033680238, + 0.020676566, + 0.025532326, + 0.024291996, + 0.00567385, + 0.010259112, + -0.028791491, + -0.010173345, + 0.0132477805, + 0.019013995, + -0.017668106, + -0.029715141, + 0.0129311, + 0.002124395, + 0.022576645, + -0.00038244884, + -0.01641458, + 0.026799046, + -0.02277457, + -0.03385837, + 0.009454218, + 0.003922214, + -0.0029886675, + -0.05547178, + 0.017325036, + 0.021098806, + -0.03063879, + -0.021679385, + -0.01158521, + -0.016929185, + 0.0279734, + 0.00261261, + -0.007844428, + 0.017509766, + -0.0015363928, + 0.000819327, + 0.020755736, + -0.017984785, + -0.02734004, + 0.01776047, + 0.017298644, + 0.010377868, + -0.016955575, + -0.017113915, + -0.02119117, + -0.00849758, + 0.02039947, + -0.019660551, + -0.024687845, + 0.010727535, + 0.023341956, + -0.0047963825, + 0.02908178, + -0.00881426, + 0.01612429, + 0.008504177, + -0.004245491, + -0.012997075, + -0.017470181, + -0.0068877903, + 0.015979145, + 0.02258984, + 0.019713331, + 0.0018934825, + -0.0068745953, + 0.03834467, + 0.00960596, + 0.010813302, + -0.017298644, + 0.019660551, + -0.00083252206, + 0.0095861675, + -0.0023338657, + -0.021916896, + -0.0017054537, + -0.00839202, + -0.0095861675, + 0.009091355, + 0.0049547227, + -0.01419782, + 0.057319082, + 0.018433416, + 0.009282683, + -0.014250601, + -0.00833924, + 0.04127396, + 0.009005588, + 0.014079065, + -0.0055748876, + -0.029794311, + 0.012805748, + -0.005192233, + -0.012416495, + -0.03533621, + -0.020795321, + -0.008009365, + -0.021916896, + 0.0054957177, + 0.0084513975, + 0.0029787712, + 0.03195829, + -0.0072506526, + 0.03063879, + 0.01517425, + -0.02892344, + -0.0039123176, + 0.03868774, + -0.012997075, + 0.021969676, + -0.028633151, + 0.021098806, + 0.0149631305, + -0.017219475, + -0.024226021, + 0.00781144, + -0.01348529, + -0.011103593, + -0.017298644, + 0.00799617, + 0.02807896, + 0.0024691145, + -0.006313808, + -0.01673126, + -0.01562288, + -0.0024790107, + -0.0059311525, + -0.01367002, + -0.0055122115, + -0.010457038 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 7, + "total_tokens": 7 + } +} diff --git a/vectorstores/dolt/testdata/TestDoltStoreSimilarityScore.httprr b/vectorstores/dolt/testdata/TestDoltStoreSimilarityScore.httprr new file mode 100644 index 000000000..4c4a37244 --- /dev/null +++ b/vectorstores/dolt/testdata/TestDoltStoreSimilarityScore.httprr @@ -0,0 +1,6263 @@ +httprr trace v1 +333 101190 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 137 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["Tokyo is the capital city of Japan.","Paris is the city of love.","I like to visit London."]}HTTP/2.0 200 OK +Content-Length: 100233 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:19:36 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 157 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-p6w2b +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999979 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_6b6f4d402ea5493280d751561e20200d + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.00077703263, + -0.005729557, + -0.029226901, + -0.0020885158, + -0.00060029427, + 0.0071896696, + -0.01998568, + 0.011939657, + 0.0037827396, + -0.042435687, + -0.0044943136, + 0.0011613134, + 0.007325208, + -0.035190567, + -0.019172452, + -0.024175033, + 0.020207468, + -0.03960171, + -0.0002475877, + -0.022831976, + -0.0072019915, + 0.016289191, + -0.004639093, + -0.00832942, + -0.01596883, + -0.0050364654, + 0.0012452545, + -0.021180877, + 0.025234694, + -0.017435104, + -0.011397505, + 0.0010057528, + -0.0064072465, + -0.01847012, + 0.004497394, + -0.011508401, + -0.010682851, + 0.0003284484, + -0.006943237, + -0.015537572, + 0.02959655, + -0.005344506, + -0.00476847, + -0.004799274, + -0.00938908, + 0.020983731, + -0.0050611086, + -0.00017510189, + -0.003314518, + 0.010430258, + 0.018322261, + 0.012678955, + -0.037728824, + -0.011292771, + -0.028512247, + -0.019973358, + -0.033785902, + -0.0125619, + -0.0019160131, + 0.006752252, + 0.005131958, + -0.0013068626, + -0.004130826, + -0.002293363, + 0.0053537474, + -0.015648467, + -0.018223688, + 0.039330635, + -0.020712657, + 0.0055385716, + 0.020527832, + 0.012481809, + 0.010836871, + -0.0070294887, + 0.026466856, + -0.00908104, + -0.022758046, + 0.011446792, + 0.0065058195, + 0.011520722, + 0.0129623525, + -0.027649732, + 0.010029805, + -0.01907388, + 0.014009691, + 0.008871572, + -0.019591387, + 0.028216528, + 0.0024566245, + -0.010325524, + 0.013430574, + -0.000298992, + 0.0052551744, + -0.00023295578, + -0.023263233, + -0.009795694, + 0.00037946762, + 0.016215261, + -0.016153654, + -0.018642623, + 0.016264549, + 0.0008009058, + -0.00025066812, + -0.0014262284, + -0.026737932, + 0.023250911, + 0.015549894, + -0.0032652314, + 0.014650416, + -0.011157234, + 0.011206521, + 0.02400253, + -0.005815808, + -0.055792328, + -0.019394241, + -0.014009691, + 0.011785637, + -0.013048603, + -0.011563848, + 0.0029695123, + 0.032726243, + 0.027156867, + 0.011058661, + 0.011415988, + 0.020823551, + 0.010873836, + -0.011791797, + -0.027230797, + -0.008409511, + -0.011939657, + 0.016486337, + 0.010313203, + -0.014638093, + 0.029842982, + 0.000703873, + 0.012777528, + -0.018630302, + 0.014835239, + -0.0053106216, + -0.010109896, + 0.020823551, + 0.002240996, + -0.0048085153, + 0.009795694, + 0.027082937, + 0.019813176, + 0.030877998, + 0.018383868, + 0.019443529, + 0.0062039397, + 0.0074607455, + -0.005649466, + 0.021525884, + 0.006943237, + 0.018728875, + 0.00976489, + 0.019961037, + 0.00991891, + 0.005738798, + 0.0064934976, + -0.0028678589, + 0.008822286, + 0.028857252, + -0.0065304628, + -0.0066783223, + 0.016165975, + -0.008483441, + 0.01189037, + 0.0015078592, + -0.004072298, + -0.013713972, + 0.0002454699, + -0.036545947, + 0.016005794, + 0.0040846197, + 0.010744459, + 0.00091026025, + -0.001127429, + -0.022450006, + -0.0023734535, + -0.017915646, + -0.0018975306, + 0.033884477, + 0.012321628, + -0.001249105, + 0.009795694, + 0.01786636, + 0.012888422, + 0.019505136, + -0.025234694, + 0.032578383, + 0.035091996, + 0.01295003, + 0.008163079, + -0.66990227, + -0.02838903, + 0.005649466, + 0.0062871105, + 0.031025859, + 0.00628095, + 0.0011697846, + 0.030631566, + 0.0019052316, + 0.012463327, + -0.023213947, + -0.004805435, + -0.03745775, + -0.01590722, + -0.01732421, + -0.008729873, + -0.008655943, + -0.011853406, + -0.0021054582, + 0.013640041, + 0.0066906437, + 0.016855987, + -0.016289191, + -0.018457798, + 0.0045158765, + 0.0020915964, + 0.024840401, + -0.014145228, + -0.020047288, + 0.039034918, + -0.035018064, + 0.029005112, + 0.01590722, + -0.0059636678, + 0.028413674, + 0.012549577, + -0.03814776, + 0.019258704, + 0.016695805, + 0.011477596, + -0.009617031, + 0.021784637, + 0.0072019915, + -0.008391028, + -0.0034315733, + -0.0017897164, + 0.033416253, + -0.021759994, + 0.006647518, + 0.0033976887, + 0.006548945, + -0.037063457, + -0.013344322, + -0.002778527, + -0.008095309, + 0.0034716185, + -0.012839136, + -0.0034623775, + -0.014958456, + -0.011662421, + -0.014465591, + 0.0010042127, + -0.024975939, + 0.001703465, + -0.013972726, + 0.012851458, + -0.017053133, + 0.0062439847, + 0.0022795012, + -0.029621193, + -0.0017666133, + 0.002565979, + 0.0017465907, + -0.008095309, + 0.011637777, + 0.008803803, + 0.028980467, + -0.009869624, + -0.0027292406, + -0.003194382, + -0.0064380504, + 0.0008756057, + -0.020108895, + -0.014169872, + 0.0074299416, + -0.045984313, + -0.03376126, + -0.0037519357, + 0.026368283, + -0.025678271, + -0.0030311204, + 0.00196684, + 0.0050919126, + 0.0011359, + -0.013861831, + 0.008637461, + 0.011779476, + -0.012426361, + 0.014847562, + 0.00024932044, + -0.008144596, + -0.016437052, + 0.009549261, + 0.00658591, + -0.0076332483, + -0.005686431, + -0.018137436, + 0.009216578, + 0.029769052, + -0.004050735, + 0.013455218, + -0.01757064, + -0.0037889006, + 0.014921491, + 0.017127063, + -0.01582097, + 0.033120535, + 0.012629668, + 0.036521304, + 0.014650416, + 0.016326157, + 0.023041444, + 0.021821603, + 0.0036071565, + 0.015636146, + 0.020416938, + 0.0005186635, + -0.0015656168, + -0.025555056, + 0.002890962, + -0.01249413, + 0.009105682, + 0.018260652, + -0.0013345863, + 0.019591387, + 0.0020638725, + 0.0030018566, + -0.023965565, + 0.019973358, + -0.015044707, + -0.027871521, + -0.012136803, + -0.005455401, + 0.0007812682, + 0.0064072465, + -0.026466856, + -0.021365702, + -0.0043957406, + -0.027970094, + 0.012851458, + 0.0003475084, + 0.0066105532, + -0.00022121173, + 0.024557004, + -0.026491499, + 0.0021455034, + -0.024433788, + 0.0030542235, + -0.0022225135, + -0.002906364, + 0.015069351, + 0.0128021715, + -0.0407353, + -0.008772999, + -0.010830711, + -0.008680587, + 0.0066043925, + 0.019480493, + -0.009475332, + -0.026491499, + -0.030902643, + -0.018186722, + -0.012974674, + -0.012025909, + 0.0054708025, + 0.0059605874, + 0.022228217, + -0.011902692, + 0.000022212622, + -0.007965933, + 0.008754516, + -0.0075469967, + -0.0018944503, + -0.009185773, + 0.024840401, + -0.022437684, + 0.01702849, + 0.00492249, + -0.0032282665, + 0.00749771, + -0.019344956, + 0.013553791, + 0.0051566013, + -0.0072327955, + 0.004404982, + 0.0039244383, + 0.023953244, + 0.013455218, + -0.0251238, + 0.007676374, + 0.0138987955, + -0.009358277, + 0.005390712, + -0.02407646, + 0.0052982997, + -0.011797958, + -0.015044707, + -0.025949348, + 0.011588491, + 0.0047530676, + 0.016560268, + -0.021981783, + -0.012352432, + 0.017582962, + -0.018371547, + 0.026811862, + 0.013566112, + 0.0143546965, + -0.011853406, + -0.00067730446, + 0.013935761, + -0.010380971, + -0.0060006324, + -0.030606924, + -0.025173085, + 0.01567311, + 0.013110212, + 0.03573272, + -0.00855737, + -0.015944187, + -0.0336134, + -0.025407197, + 0.0021100787, + 0.023152338, + -0.016535625, + -0.022240538, + 0.007879681, + -0.011415988, + 0.03149408, + 0.0146134505, + 0.02498826, + -0.003209784, + 0.023448057, + -0.02861082, + 0.0081877215, + -0.009315151, + 0.055447325, + 0.014835239, + -0.006647518, + 0.013516826, + -0.026097206, + -0.011841084, + -0.0067214477, + -0.004149308, + 0.0052212896, + -0.044308573, + 0.029892268, + -0.0018944503, + 0.033145178, + 0.037383817, + 0.01423148, + 0.0073868157, + -0.00893318, + 0.0044542686, + 0.002612185, + -0.005843532, + 0.017398138, + 0.019616032, + -0.0005787315, + -0.0054153553, + -0.036398087, + 0.012999317, + 0.0070664533, + -0.010725977, + 0.014983099, + -0.01415755, + -0.028734036, + -0.019800855, + 0.010652047, + 0.01377558, + 0.002277961, + -0.054708026, + -0.0113913445, + 0.019677639, + 0.0093213115, + -0.045688596, + -0.020712657, + -0.009801854, + -0.02294287, + 0.022474648, + -0.00166496, + 0.0036934079, + -0.0012329329, + -0.0032683117, + -0.00651198, + -0.021710709, + 0.015562216, + 0.013295036, + -0.017915646, + -0.007836555, + 0.014477912, + -0.028758679, + -0.003791981, + 0.0028293538, + 0.01128045, + 0.0029156052, + -0.004626771, + 0.004648334, + 0.008939341, + -0.008317099, + 0.0060067936, + -0.02400253, + -0.0064380504, + -0.0038628303, + 0.006616714, + -0.0019036914, + -0.010596599, + 0.020688012, + 0.013258072, + -0.008070666, + -0.010350167, + -0.00064303493, + -0.033194464, + 0.01468738, + 0.09985447, + -0.004934812, + 0.013048603, + -0.01014686, + -0.008822286, + 0.007208152, + -0.010553474, + -0.009931232, + 0.0009017891, + 0.010966249, + -0.002037689, + -0.021106947, + -0.018975306, + 0.01938192, + 0.008292455, + 0.0062501454, + -0.0163508, + -0.025333267, + 0.01211216, + -0.0044173035, + 0.0071650264, + -0.0010581198, + -0.004066137, + -0.0011004753, + -0.010239272, + -0.0006376442, + 0.0336134, + 0.020909801, + 0.0129623525, + -0.021168556, + -0.0035332267, + 0.014983099, + -0.03580665, + 0.008908537, + -0.026516143, + 0.024421467, + -0.0061146077, + 0.01702849, + -0.010430258, + -0.009432206, + 0.0024473832, + 0.018137436, + 0.01256806, + -0.010005161, + 0.009050235, + -0.011878049, + -0.017225636, + 0.014440947, + -0.012678955, + -0.025678271, + 0.024630934, + 0.0046236906, + -0.041523885, + -0.021168556, + -0.0098388195, + 0.008686747, + -0.01165626, + -0.010528831, + -0.0027354013, + -0.017681535, + 0.0019622191, + -0.029645836, + -0.028635463, + -0.0283151, + -0.011064822, + -0.034574486, + 0.0090872, + -0.005532411, + -0.028955825, + -0.0023765338, + 0.0072635994, + -0.017829396, + -0.016239906, + 0.025579698, + 0.018913697, + -0.021057662, + 0.012136803, + -0.01847012, + 0.005988311, + 0.03573272, + -0.030040128, + -0.019603709, + -0.024175033, + -0.011767155, + -0.03730989, + 0.021944819, + 0.023213947, + -0.015328105, + -0.00083325006, + 0.0043125697, + 0.008391028, + -0.0018713472, + 0.019579066, + 0.031149074, + -0.00018703846, + 0.003058844, + 0.0030095575, + 0.0147736315, + -0.012728241, + -0.012974674, + 0.019061558, + -0.0061238487, + -0.0029387083, + 0.019320313, + 0.017891003, + -0.0013769419, + 0.015759362, + 0.0055601345, + -0.0015278818, + 0.0052798176, + 0.0100975735, + -0.016252227, + 0.017237958, + 0.009740246, + -0.020540154, + 0.017274922, + 0.00938908, + 0.023657525, + 0.025333267, + -0.024815759, + -0.012401718, + -0.005553974, + 0.026442213, + 0.02838903, + -0.00006555491, + -0.00073544716, + 0.013640041, + -0.0047007008, + -0.0054091946, + -0.008890054, + -0.008588174, + 0.01695456, + -0.022758046, + -0.014256123, + -0.010947766, + 0.008354063, + -0.022992156, + 0.015414356, + -0.019110844, + -0.014588807, + -0.011643938, + 0.015722398, + 0.01664652, + -0.015057029, + -0.04209068, + -0.022548579, + 0.008434154, + 0.009475332, + -0.0032898746, + 0.011348219, + 0.0036287194, + 0.016104367, + -0.011643938, + 0.016868308, + -0.0076948563, + -0.008261652, + -0.031740513, + -0.029350117, + -0.006672161, + 0.012900744, + 0.030040128, + 0.0026676324, + 0.01536507, + -0.015882578, + -0.015475964, + 0.0036441213, + 0.006758413, + 0.008200043, + -0.018125115, + 0.0084649585, + 0.036225583, + 0.02445843, + -0.016966881, + -0.009475332, + -0.020219792, + 0.031223005, + -0.0007916646, + 0.0062717083, + -0.011933496, + -0.021833925, + -0.009364437, + -0.001499388, + -0.0006538164, + 0.009031753, + -0.0086313, + -0.009672478, + 0.007282082, + -0.002080815, + 0.031518724, + 0.01249413, + 0.007910485, + -0.013368966, + 0.009881945, + 0.0070356494, + 0.0062778695, + 0.009216578, + -0.012777528, + -0.00072505075, + -0.00065304624, + 0.02201875, + 0.022905905, + -0.007337529, + -0.011009375, + 0.0029910752, + 0.0049194098, + 0.024791114, + -0.0007154245, + -0.009653995, + 0.004445027, + -0.0058496925, + -0.013677007, + -0.011348219, + -0.01899995, + -0.018938342, + -0.013763258, + -0.00085019233, + -0.01816208, + 0.022979835, + -0.032110162, + -0.017533677, + 0.0071280617, + -0.007411459, + 0.035239857, + 0.00087098504, + 0.011163395, + -0.008095309, + -0.0055262498, + 0.000110509594, + -0.0018066587, + 0.0010303961, + -0.0012968513, + 0.01823601, + 0.017077776, + -0.018605657, + -0.044702865, + -0.023509666, + 0.01582097, + -0.0109539265, + -0.006542784, + 0.0023441897, + 0.004411143, + -0.0012829895, + -0.021981783, + 0.016831344, + -0.008046023, + 0.029276187, + -0.015796326, + -0.017755466, + -0.0015093994, + -0.013911118, + -0.003776579, + 0.007540836, + -0.009684799, + -0.0005510078, + 0.0007985955, + -0.002096217, + 0.009962036, + -0.02907904, + -0.016547946, + 0.00056140416, + -0.005926703, + 0.01309789, + 0.003573272, + 0.022659473, + 0.0105349915, + 0.00325599, + -0.0022456166, + 0.010454901, + 0.008206204, + 0.02590006, + -0.0013661605, + -0.025259336, + -0.015623824, + 0.01983782, + 0.01036865, + -0.0019791615, + -0.0026768737, + -0.010405614, + -0.030582279, + -0.011496078, + 0.020219792, + 0.009937393, + -0.003542468, + -0.019332634, + -0.02663936, + -0.028019382, + -0.03043442, + 0.0030033968, + 0.01839619, + -0.006290191, + -0.007208152, + 0.012826814, + -0.017804751, + 0.024938975, + 0.009869624, + -0.0052798176, + 0.017151706, + 0.01642473, + -0.019739248, + -0.0051750834, + -0.0013908037, + 0.03716203, + -0.027033651, + -0.0061454116, + -0.0060529998, + -0.024273606, + 0.023201624, + -0.020207468, + -0.014169872, + -0.031321578, + 0.019123167, + 0.01499542, + 0.0017311887, + 0.01627687, + 0.018815124, + -0.019369598, + -0.0032991157, + -0.009715604, + -0.026614716, + 0.03156801, + 0.0038412674, + 0.012216894, + 0.014933812, + -0.012549577, + -0.007109579, + 0.020688012, + -0.022979835, + -0.007935128, + -0.0038628303, + -0.028561532, + -0.028413674, + 0.0045620827, + -0.014293088, + 0.010140699, + -0.0038135438, + 0.0025320945, + -0.0062316633, + -0.004201675, + 0.009093361, + -0.0022055714, + 0.0011151073, + 0.029424047, + 0.004860882, + -0.004867043, + -0.0011482217, + -0.00961087, + 0.018088149, + -0.008292455, + -0.023793062, + -0.0143546965, + -0.021772316, + 0.0029648917, + -0.0037580964, + -0.023041444, + -0.021710709, + -0.0058342908, + -0.039084204, + -0.017607605, + -0.00257368, + 0.034820918, + 0.025259336, + 0.003308357, + 0.002732321, + 0.007996736, + 0.017410459, + 0.0067399302, + -0.008871572, + 0.018297616, + 0.033835188, + -0.029276187, + 0.023706812, + 0.0077934293, + -0.0046914597, + -0.0075285146, + -0.0081754, + -0.005051867, + 0.004019931, + 0.027526516, + 0.0027908487, + -0.0150323855, + -0.012937709, + 0.009481492, + -0.029497977, + 0.017040811, + 0.012999317, + -0.022474648, + 0.02824117, + 0.020798907, + -0.006856986, + -0.013677007, + 0.011459114, + -0.003915197, + -0.006752252, + 0.0002633748, + -0.027797591, + -0.016301513, + -0.004226318, + -0.017927969, + 0.012155286, + -0.01763225, + 0.0043402934, + 0.0020238273, + 0.0073868157, + -0.0040877, + -0.022918228, + 0.0051874053, + -0.017237958, + 0.002022287, + -0.00054253667, + -0.005131958, + -0.022437684, + -0.013344322, + 0.009647834, + -0.035609502, + -0.012937709, + 0.019394241, + -0.0041000214, + -0.04504787, + 0.013233428, + 0.02111927, + -0.016338479, + -0.0074052983, + 0.00734369, + -0.020096574, + 0.013344322, + -0.016030438, + 0.011711707, + -0.033194464, + 0.02044158, + 0.0025228532, + -0.007540836, + -0.017977254, + -0.0032036232, + 0.009259704, + -0.033120535, + -0.0045928867, + 0.2261265, + -0.0152911395, + 0.015931865, + 0.02809331, + -0.016005794, + 0.04965616, + 0.015944187, + -0.010467223, + -0.023053765, + 0.0008979386, + -0.037211314, + 0.010251594, + 0.0146134505, + 0.010079091, + -0.0015925703, + -0.030532993, + -0.025074512, + -0.021106947, + -0.021242486, + 0.0007477688, + 0.0010558094, + -0.0087237125, + 0.009210417, + 0.001445481, + 0.000023812989, + 0.014071299, + -0.0216491, + 0.010473384, + 0.027107581, + -0.00009765852, + 0.0025351748, + 0.00011811435, + 0.0011466815, + 0.01384951, + -0.01590722, + -0.012543417, + -0.009118005, + 0.002103918, + 0.026121851, + 0.013245749, + 0.0115700085, + 0.0071958303, + -0.01302396, + 0.00070964877, + 0.0008910077, + 0.011089465, + -0.019640675, + -0.001120498, + -0.016400086, + 0.02769902, + -0.028586175, + -0.022918228, + 0.030680852, + 0.034081623, + 0.011144912, + -0.0063949246, + 0.05618662, + 0.023793062, + 0.0070602926, + -0.011415988, + -0.014071299, + 0.04135138, + -0.01642473, + 0.021230165, + 0.006542784, + 0.009783372, + -0.03245517, + 0.020121219, + 0.019628353, + 0.0032036232, + 0.015562216, + 0.007639409, + 0.0053475862, + -0.015599181, + -0.01688063, + 0.0052674958, + 0.032578383, + -0.004528198, + 0.029399404, + 0.021390345, + -0.00317898, + -0.0016464775, + 0.017102418, + -0.005042626, + 0.011477596, + -0.010307042, + 0.021599812, + 0.005935944, + 0.0077934293, + -0.0022302147, + -0.005815808, + -0.02294287, + 0.0031327738, + -0.021796959, + -0.004324891, + 0.006912433, + -0.007910485, + 0.0074299416, + 0.009931232, + -0.005557054, + -0.010701333, + 0.0035948348, + 0.022376075, + -0.004528198, + 0.0015363529, + 0.0032190252, + 0.002188629, + -0.007214313, + -0.003376126, + -0.020158183, + 0.0002633748, + -0.017817074, + 0.009000949, + 0.017065454, + 0.007910485, + 0.0033021963, + 0.010134539, + -0.014182193, + 0.03193766, + -0.014330053, + 0.009771051, + -0.018112792, + -0.021612136, + 0.00079320476, + -0.0052674958, + -0.020269077, + -0.007349851, + -0.010725977, + -0.003733453, + -0.04036565, + 0.027871521, + -0.0015910302, + 0.010467223, + 0.008298616, + -0.0041585495, + 0.009241221, + 0.005230531, + -0.020626405, + -0.01749671, + 0.021920176, + 0.009697121, + -0.0018821287, + -0.0019745408, + -0.0150323855, + -0.0066906437, + -0.012161447, + 0.005957507, + 0.01211216, + -0.0168067, + 0.010528831, + -0.031444795, + -0.029547263, + -0.0012290824, + -0.016868308, + 0.027748305, + 0.006758413, + -0.016289191, + -0.016375443, + 0.0168067, + 0.02468022, + -0.027772948, + -0.010140699, + 0.032430522, + -0.025037548, + -0.022918228, + -0.00011195354, + -0.15367533, + 0.024606291, + 0.007226635, + -0.012149124, + 0.016129011, + 0.00249821, + 0.008526566, + -0.033983048, + 0.0060283565, + 0.030163344, + 0.052342273, + 0.023411093, + -0.018753517, + -0.0062409043, + 0.007226635, + -0.024593968, + -0.011539204, + -0.008317099, + 0.027649732, + 0.015303462, + 0.028339744, + -0.02270876, + 0.0046791383, + 0.015438999, + -0.0046144496, + 0.034401983, + -0.016769735, + -0.0026260468, + 0.027575802, + -0.010923123, + -0.021994105, + -0.025259336, + 0.041302096, + 0.036003795, + 0.012925387, + 0.001355379, + -0.013553791, + -0.011459114, + -0.0074484237, + 0.02013354, + 0.008970145, + -0.011767155, + 0.00042740646, + -0.008267812, + 0.0042509614, + 0.023830028, + 0.019123167, + 0.010263916, + -0.0073621725, + -0.0070233275, + 0.031149074, + -0.03050835, + -0.012432522, + 0.0026291274, + 0.018667266, + 0.0025228532, + 0.0037827396, + 0.010571957, + 0.0137386145, + -0.01582097, + -0.009185773, + 0.0068323426, + 0.011083304, + -0.00847728, + 0.000124949, + -0.0018128195, + -0.010498026, + 0.007047971, + -0.016437052, + 0.012284663, + -0.0020038048, + -0.013208785, + 0.0061792964, + -0.027082937, + -0.010658208, + -0.0020130458, + -0.004740746, + 0.024532361, + 0.010732138, + 0.012451004, + -0.013159499, + 0.049853306, + -0.011169556, + -0.016892951, + -0.00032171, + 0.0198255, + 0.006850825, + 0.011687064, + -0.038221687, + -0.010485705, + 0.014527199, + -0.033736616, + -0.0064010858, + -0.007818073, + 0.005597099, + 0.015857935, + 0.0062624672, + 0.02157517, + -0.019788533, + -0.0048516407, + 0.013405931, + 0.003286794, + -0.0143546965, + 0.026294352, + 0.029128328, + 0.032726243, + 0.014884526, + 0.02378074, + -0.0034315733, + 0.022659473, + -0.01757064, + -0.005707994, + 0.010411776, + 0.014921491, + -0.0069001117, + 0.015857935, + 0.02111927, + -0.01445327, + 0.0095431, + 0.03284946, + 0.04292855, + -0.00052559446, + -0.0066228746, + 0.014625772, + -0.01362772, + -0.011915014, + -0.09665085, + 0.0034254126, + 0.0046606557, + 0.020774264, + -0.0016033518, + 0.06397389, + 0.012469487, + 0.017755466, + 0.0008686747, + 0.005563215, + 0.003385367, + -0.029226901, + -0.014169872, + -0.0094014015, + 0.01521721, + -0.018088149, + 0.0040784585, + 0.00628403, + -0.008310938, + 0.029029755, + -0.010473384, + -0.01453952, + 0.0054862048, + -0.029719766, + -0.019369598, + 0.010855354, + -0.028881894, + 0.0010157642, + 0.011305094, + -0.00074391824, + 0.0026491499, + -0.01885209, + 0.010048287, + -0.01309789, + 0.010818389, + 0.016634198, + -0.024261285, + 0.019344956, + 0.03368733, + -0.024877366, + -0.0059482655, + 0.005270576, + 0.015882578, + -0.027132224, + -0.009426045, + 0.00029398632, + -0.012395557, + -0.0012506451, + -0.00802138, + -0.01362772, + -0.024310572, + -0.010916962, + -0.0056433054, + -0.016018115, + 0.012426361, + -0.006943237, + 0.0076886956, + 0.007682535, + -0.03997136, + 0.024248963, + 0.0071650264, + -0.010467223, + -0.019024594, + 0.0076332483, + 0.010621243, + 0.009617031, + -0.013516826, + -0.0029417886, + 0.02641757, + -0.03230731, + -0.013011639, + 0.020121219, + -0.019998001, + -0.009426045, + -0.029916912, + -0.020540154, + -0.0040784585, + -0.00038274055, + 0.014650416, + -0.008939341, + -0.010830711, + -0.019172452, + -0.0031327738, + -0.009955875, + -0.0087052295, + 0.006413407, + 0.00055062276, + -0.021895532, + 0.021772316, + -0.015574537, + 0.022006426, + 0.0040168506, + 0.0061731352, + -0.014884526, + -0.0077564646, + 0.029867625, + 0.019160131, + 0.00022775758, + 0.012826814, + 0.0081754, + -0.0077256607, + -0.032652315, + -0.0566302, + 0.019406563, + -0.0054461593, + -0.009653995, + 0.0038227849, + -0.0038443478, + 0.027058294, + 0.01521721, + 0.019887106, + -0.02634364, + -0.038492765, + 0.010159182, + -0.016609553, + -0.0037519357, + -0.03694024, + -0.008391028, + 0.009204255, + 0.023509666, + 0.012161447, + 0.0035701916, + -0.006641357, + 0.0020392293, + 0.031986944, + 0.011107948, + -0.02188321, + 0.015278818, + -0.004512796, + 0.028807966, + -0.040932447, + -0.009074879, + 0.012999317, + -0.021562848, + 0.009493814, + 0.002732321, + -0.002907904, + -0.008908537, + 0.0023210866, + 0.019197095, + 0.0009757189, + 0.04088316, + -0.016757414, + -0.035018064, + 0.018568693, + -0.020959089, + -0.0009048695, + -0.01604276, + -0.0009025592, + -0.014022012, + 0.022831976, + 0.0216491, + -0.019271025, + 0.022203572, + -0.0029371679, + 0.016708126, + 0.0003034201, + -0.02060176, + 0.0048393193, + 0.006216261, + -0.0021177798, + 0.0067399302, + 0.01901227, + -0.0010773723, + 0.020946767, + 0.015106316, + 0.029793695, + -0.011120269, + -0.029497977, + 0.009888106, + -0.0011158774, + -0.04487537, + -0.027994737, + 0.0055262498, + 0.018987628, + 0.017841717, + -0.0027461827, + 0.01408362, + 0.009789533, + -0.01476131, + -0.0317898, + 0.005769602, + 0.0029710524, + -0.01219225, + -0.045910385, + 0.023300197, + 0.0069678803, + -0.003490101, + -0.01590722, + -0.0065612667, + -0.027920809, + 0.012075195, + -0.014058977, + -0.0011451413, + 0.009056396, + 0.00514736, + 0.010159182, + 0.01195814, + -0.005640225, + -0.023411093, + 0.03036049, + 0.028191883, + 0.009191934, + -0.021439632, + -0.023078408, + -0.014034334, + -0.011200359, + -0.010645886, + -0.0027677456, + -0.018026542, + 0.012777528, + 0.021821603, + -0.009734086, + 0.037654895, + 0.00066228746, + 0.013282714, + 0.01423148, + -0.010331685, + -0.005738798, + -0.0058835773, + -0.010208469, + 0.024692541, + 0.007325208, + 0.011471435, + 0.014169872, + -0.011305094, + 0.020503188, + 0.004032253, + -0.0076578916, + -0.024359858, + 0.0080090575, + 0.001604892, + 0.010528831, + 0.01998568, + -0.013011639, + 0.0010873836, + 0.00047592286, + 0.0027954692, + 0.011194198, + 0.025530413, + 0.011508401, + 0.034106266, + -0.002287202, + 0.0016865227, + 0.0027846878, + 0.011101786, + 0.040612083, + -0.0005579387, + 0.021094626, + -0.020022646, + -0.009684799, + -0.0065920707, + 0.0077995905, + -0.0033884477, + -0.00514736, + -0.025333267, + 0.002914065, + -0.023411093, + 0.021784637, + -0.015611502, + 0.017127063, + 0.03262767, + 0.0067645735, + 0.025197728, + 0.013418253, + -0.016498659, + -0.0001567157, + 0.040143862, + 0.013566112, + 0.03413091, + -0.0013130234, + 0.018802803, + -0.0075223534, + -0.014810597, + -0.010171504, + 0.0039614034, + 0.0017573722, + 0.0059821503, + 0.00832942, + 0.009808016, + 0.018741196, + 0.009265864, + 0.022499291, + -0.020404615, + -0.027354013, + -0.021291772, + 0.018679587, + -0.0022456166, + -0.009093361, + -0.025148442 + ] + }, + { + "object": "embedding", + "index": 1, + "embedding": [ + 0.003444411, + -0.00001404399, + -0.004434365, + -0.01983679, + -0.010440086, + 0.0020883314, + -0.012162291, + 0.0062885643, + -0.005836014, + -0.020867601, + -0.008743022, + 0.020377338, + -0.0024780275, + -0.020641325, + -0.018152298, + -0.023306344, + 0.036757145, + -0.020113349, + 0.0036769717, + -0.021885838, + -0.0018997687, + 0.011276047, + 0.010829782, + -0.010295521, + -0.009591553, + 0.0040132417, + 0.024601141, + -0.024211444, + -0.0035261216, + -0.01759918, + 0.007460796, + -0.009905824, + -0.022740657, + -0.024085736, + -0.025154257, + -0.01341309, + -0.0063985595, + 0.007907061, + 0.002971433, + -0.010647505, + 0.016254101, + -0.016115822, + 0.0038655344, + -0.016606085, + -0.011577747, + 0.02727873, + -0.017486043, + -0.009886969, + -0.025694804, + 0.017108917, + 0.022878936, + 0.0039378167, + -0.022564664, + 0.0029871466, + -0.034167554, + -0.025543954, + -0.025254825, + 0.0050597647, + 0.014871308, + -0.008975582, + -0.00038753555, + -0.018956833, + -0.0046292134, + 0.0058203004, + 0.006750543, + -0.0031945657, + -0.018793412, + 0.02594622, + 0.0053206095, + 0.015889546, + 0.022451527, + -0.0033061318, + -0.0050786207, + -0.009000724, + -0.001538357, + 0.0071716662, + -0.008824732, + 0.0061439998, + 0.0032558485, + 0.0023774607, + 0.01699578, + -0.022464097, + -0.01199887, + 0.013928494, + 0.0042992285, + 0.012036582, + -0.010603506, + 0.037209697, + -0.008680168, + -0.008837303, + 0.01593983, + 0.0143684745, + -0.019560233, + -0.0007491437, + 0.0030719999, + 0.0104212295, + 0.009472131, + 0.016052967, + 0.015889546, + 0.0022878936, + 0.018403715, + -0.0032212788, + -0.021521283, + -0.012564559, + -0.010748072, + -0.01117548, + -0.011225764, + -0.0011148767, + 0.022577235, + 0.013337665, + 0.015688412, + 0.042238034, + 0.00984297, + -0.046688113, + 0.0015949258, + -0.030622575, + -0.016505517, + 0.012470277, + -0.017347764, + 0.005543742, + 0.010515511, + 0.021961264, + 0.005380321, + -0.015512421, + 0.034016702, + 0.0029195785, + -0.014720458, + -0.039321598, + -0.02758043, + 0.013086248, + 0.009792687, + 0.015524992, + -0.011112626, + 0.007731069, + -0.004176663, + 0.0122377165, + -0.0065808366, + 0.008642455, + -0.011288618, + -0.013199386, + 0.003915818, + 0.021483572, + -0.011156623, + 0.0047643497, + 0.025229683, + 0.02502855, + -0.0015030014, + -0.009069864, + 0.026926747, + -0.018278006, + 0.028560957, + -0.019019686, + 0.008353326, + 0.0023884603, + 0.009893253, + 0.0009820971, + -0.0144061865, + 0.018981975, + 0.011093769, + 0.0056914496, + 0.014959304, + 0.016266672, + 0.000103807666, + -0.015059871, + 0.008931585, + 0.015386713, + 0.0143433325, + 0.024978267, + -0.01169717, + -0.008761878, + 0.011049772, + 0.02652448, + -0.03326245, + 0.031326544, + 0.01786317, + 0.049227424, + 0.00954127, + -0.0103458045, + -0.0123257125, + 0.009792687, + -0.03482124, + -0.006291707, + 0.032633908, + 0.029692333, + -0.023721183, + 0.025242254, + 0.0035261216, + 0.00047376368, + -0.008372182, + -0.00039735652, + 0.002957291, + -0.0052137575, + 0.029415773, + -0.017108917, + -0.67741764, + -0.007749925, + -0.0040446687, + 0.009522414, + 0.024827417, + 0.009113861, + 0.024349725, + 0.015449567, + -0.0143433325, + 0.008831018, + -0.02861124, + -0.010414944, + -0.01272798, + 0.011923445, + -0.004355797, + -0.016027825, + 0.003815251, + -0.022313247, + -0.016668938, + 0.015977543, + 0.009817828, + 0.009270997, + 0.00073107315, + 0.020503046, + 0.011162909, + 0.023130352, + 0.01296054, + -0.024751991, + -0.026449054, + -0.0032338495, + -0.005424319, + 0.024261728, + -0.012507989, + -0.0058768694, + 0.03517322, + 0.02114416, + -0.005779445, + 0.031527676, + 0.031703666, + 0.029415773, + 0.009327566, + 0.016480375, + 0.00092238566, + -0.0058171577, + -0.0029337206, + -0.0015257861, + 0.029516341, + -0.00083438976, + -0.015889546, + 0.021370433, + 0.004817776, + -0.015085013, + 0.0015854976, + 0.016580943, + -0.002971433, + 0.008409894, + 0.031929944, + -0.0071716662, + 0.0057700174, + -0.003434983, + 0.0021009021, + -0.013626794, + -0.0034161268, + 0.0036518301, + 0.013526227, + -0.0021433288, + 0.013501086, + -0.013425661, + 0.0038309647, + -0.024663996, + 0.0030468581, + 0.017033493, + -0.0051886155, + -0.01386564, + 0.0030390015, + 0.002020763, + 0.01891912, + -0.005493459, + -0.037209697, + -0.011571461, + -0.026700472, + -0.0040446687, + -0.034368686, + 0.010930348, + 0.018944262, + -0.019748796, + -0.03803937, + 0.0019154823, + 0.034972087, + -0.01771232, + 0.0052891825, + 0.029038649, + -0.021948693, + -0.008384753, + -0.0027577288, + 0.028586099, + -0.006530553, + -0.0029227212, + -0.0080013415, + -0.018743128, + 0.018567136, + -0.026801039, + 0.007272233, + 0.0039409595, + 0.027153023, + -0.019321386, + -0.012947969, + 0.0142804785, + 0.010094387, + -0.012143435, + -0.006681403, + -0.012495418, + -0.018893978, + -0.007938487, + -0.026901605, + -0.018353432, + 0.013827928, + 0.02429944, + 0.024601141, + -0.0060402905, + 0.011540035, + 0.003931531, + -0.0070271017, + 0.003337559, + 0.0019076255, + 0.01861742, + -0.0015792123, + 0.008604743, + -0.014645033, + 0.007938487, + 0.007416798, + 0.020213917, + 0.015424425, + -0.0036235456, + -0.004292943, + 0.007837921, + 0.017398048, + -0.028812373, + 0.025543954, + 0.0034412683, + -0.022376101, + -0.004968626, + -0.017674606, + 0.009886969, + 0.014481612, + -0.036380023, + -0.010119529, + -0.025116546, + -0.05465803, + -0.0031175693, + -0.005870584, + -0.0007306803, + -0.015977543, + 0.012426279, + 0.0015281432, + 0.008397323, + 0.01386564, + 0.0150473, + -0.030748283, + -0.011527464, + 0.020452762, + 0.0037021134, + -0.0145193245, + 0.0031128551, + 0.004902629, + 0.00049772684, + 0.01147718, + 0.0103080915, + -0.0025440245, + -0.026901605, + 0.0007027887, + -0.008441322, + -0.010974347, + 0.021207012, + -0.007284804, + 0.024827417, + 0.0077687814, + -0.03803937, + -0.00841618, + -0.014946733, + 0.02189841, + -0.010496655, + -0.038240507, + 0.0005629381, + 0.011728597, + -0.0061157155, + -0.00096402655, + 0.028762091, + 0.002430887, + -0.0027420153, + -0.0017724889, + -0.0021606137, + -0.019610517, + -0.016052967, + -0.009396706, + 0.0064331293, + 0.0012390137, + 0.015059871, + -0.009402991, + 0.012947969, + 0.007944773, + -0.00085874577, + 0.017787743, + 0.004726637, + -0.0022627518, + -0.04319342, + -0.0043463693, + -0.002808012, + 0.035248645, + -0.006769399, + 0.009314995, + -0.022489239, + -0.013752503, + 0.0030484295, + -0.007856777, + 0.03816508, + 0.009201857, + 0.0035858331, + -0.017762601, + -0.0064205583, + 0.020314483, + 0.0072156643, + -0.018240293, + 0.0019641942, + -0.015826693, + 0.008673882, + 0.013677077, + 0.009937252, + -0.015110154, + -0.026474196, + -0.03218136, + 0.00082339026, + -0.0025707376, + 0.032131076, + -0.02609707, + -0.022904078, + 0.016316954, + -0.016228959, + 0.014557037, + 0.017196914, + 0.04289172, + 0.014582179, + 0.005898868, + -0.019019686, + -0.013551369, + 0.011854306, + 0.008837303, + 0.04485277, + -0.018743128, + 0.013576511, + -0.011282332, + 0.0051414752, + -0.006030862, + 0.010044104, + -0.015147867, + -0.018152298, + 0.015336429, + 0.00886873, + 0.026423912, + 0.030949418, + -0.0050849062, + 0.006869966, + 0.0038183937, + 0.018856265, + -0.008824732, + -0.0016153534, + 0.011470894, + -0.014003919, + -0.017322622, + -0.0027891558, + -0.009057293, + -0.018416286, + 0.0023146067, + -0.019660799, + 0.005509172, + -0.02323092, + -0.01787574, + -0.017913451, + -0.00079117744, + 0.03336302, + -0.0055186003, + -0.039145608, + -0.0044186516, + 0.043268844, + -0.004789491, + -0.018076872, + -0.012759406, + 0.024462862, + -0.008472749, + -0.00095145573, + 0.017196914, + 0.015022158, + 0.00025534525, + -0.017662035, + -0.008384753, + -0.034167554, + 0.018127156, + -0.018567136, + 0.011980014, + 0.00051108334, + -0.016606085, + -0.02220011, + -0.013174244, + -0.030572291, + 0.016379809, + -0.01489645, + -0.011816593, + -0.015876975, + 0.0070585287, + -0.020867601, + 0.022036688, + 0.019208249, + -0.004424937, + -0.014066774, + -0.0009813114, + 0.0040635252, + -0.022979502, + 0.02667533, + 0.03937188, + -0.01057208, + 0.0027954413, + -0.027856989, + -0.03605318, + -0.004934056, + 0.10308092, + 0.0030594291, + 0.010628648, + -0.0049434844, + -0.001343509, + 0.012595985, + -0.0002011335, + -0.0025895939, + -0.011703456, + 0.034494396, + -0.0034758383, + -0.020741891, + 0.008359611, + 0.011062343, + 0.017310051, + 0.007316231, + -0.01102463, + -0.022162396, + -0.00221404, + -0.0015501422, + 0.0005319038, + -0.016769506, + -0.0015980685, + 0.026298204, + -0.027203305, + -0.0059491517, + 0.020063067, + 0.010848638, + 0.0016923498, + -0.019007115, + -0.018906549, + 0.018667703, + -0.0072093788, + -0.013375377, + -0.035575487, + 0.019095112, + 0.012910256, + 0.011294903, + 0.012608556, + 0.0056663076, + 0.007328802, + 0.012357139, + 0.0011887304, + -0.0016687795, + 0.018303148, + -0.018755699, + -0.021936122, + 0.020012783, + 0.004714066, + -0.020138491, + 0.019811649, + -0.016115822, + -0.017611751, + -0.010138385, + 0.014557037, + 0.01983679, + 0.013664507, + -0.0021150445, + -0.03560063, + -0.0072910893, + -0.0122879995, + -0.03635488, + -0.0101320995, + -0.022627518, + -0.001016667, + -0.04422423, + -0.004638641, + -0.018366002, + -0.024601141, + 0.0050943345, + 0.010616077, + -0.025732517, + 0.005053479, + 0.005163474, + 0.010609792, + -0.010295521, + -0.0018981973, + -0.0147456, + -0.0010763785, + 0.015851833, + -0.024211444, + -0.0083030425, + 0.0014346475, + 0.000438801, + -0.04352026, + 0.024626283, + 0.00849789, + -0.012734264, + -0.02130758, + 0.01772489, + 0.028460389, + 0.0037555394, + 0.008064196, + 0.0036612581, + -0.0017960593, + 0.0027781564, + -0.0027875847, + 0.009051007, + -0.017611751, + -0.007643073, + 0.012665125, + -0.012539417, + -0.020880172, + 0.019698512, + 0.029767757, + 0.019786507, + 0.012344568, + -0.005663165, + -0.021383004, + 0.0007063243, + 0.005229471, + -0.02818383, + 0.0013843641, + 0.010289235, + 0.004519218, + 0.017171772, + -0.0045129326, + 0.039296456, + 0.0300946, + -0.032030508, + -0.028334681, + -0.024337154, + 0.013878211, + 0.036606297, + 0.02354519, + -0.010452656, + -0.009679549, + -0.0080264835, + 0.011703456, + 0.009032151, + 0.0025911652, + 0.020691609, + -0.01243885, + -0.015386713, + -0.011961157, + -0.01341309, + 0.008831018, + -0.021320151, + -0.022011546, + 0.0021103304, + -0.014946733, + 0.024789704, + -0.0026948745, + -0.017121488, + -0.0036549729, + -0.023620615, + 0.015537563, + -0.01938424, + -0.023293773, + 0.021181872, + -0.023054928, + 0.006901393, + -0.023432052, + 0.016191246, + -0.022250393, + 0.0040383837, + -0.008724165, + -0.02220011, + 0.0147456, + 0.0034538393, + 0.02309264, + -0.00078567775, + 0.019761367, + -0.013325094, + -0.0010001677, + -0.010704073, + 0.011898303, + 0.001019024, + -0.027505007, + 0.03693314, + 0.02115673, + 0.01728491, + -0.014054203, + -0.009660693, + -0.007944773, + 0.033614434, + -0.0052797543, + -0.026197638, + -0.008397323, + -0.0156507, + -0.0032369923, + 0.0011156624, + -0.017523756, + 0.0029635765, + 0.0034601246, + 0.0058768694, + 0.011200622, + -0.0080264835, + 0.0010370946, + 0.0145193245, + 0.038617633, + -0.019597946, + 0.005000053, + 0.01846657, + -0.0038749625, + -0.02326863, + -0.011508607, + 0.01146461, + -0.011973728, + 0.0028567242, + 0.012445135, + 0.0023617472, + -0.013501086, + 0.0042458023, + -0.011760024, + 0.018152298, + 0.0044940766, + -0.01326224, + 0.0067316866, + -0.014984446, + 0.0075173643, + 0.0016452092, + -0.03590233, + -0.03351387, + -0.028887799, + -0.0066876886, + -0.034972087, + 0.024173733, + -0.026046788, + -0.032457918, + -0.022489239, + 0.008541889, + 0.0045412173, + -0.008761878, + 0.024500575, + 0.0065808366, + -0.007297375, + -0.0023664613, + 0.031401966, + 0.010339519, + -0.02176013, + 0.023658328, + 0.006574551, + -0.009811544, + -0.015110154, + -0.030773425, + 0.03396642, + -0.008108194, + 0.004468935, + 0.013312523, + -0.0015776409, + -0.010138385, + -0.023494907, + -0.0018526281, + -0.0052169003, + 0.031175692, + -0.0121874325, + 0.011188051, + 0.0058737267, + -0.0018369146, + -0.013488515, + 0.017938593, + -0.0061942833, + 0.00402267, + 0.010176098, + -0.020239059, + 0.016782077, + -0.02326863, + 0.0020317626, + 0.010176098, + 0.008743022, + 0.0076745, + -0.014783312, + -0.005380321, + 0.015210721, + 0.00841618, + 0.012495418, + 0.02235096, + 0.02277837, + 0.02280351, + -0.0050723352, + -0.013174244, + -0.016807217, + -0.011885732, + 0.029717473, + -0.0035072654, + -0.012143435, + -0.017008351, + 0.003510408, + -0.011496036, + 0.013312523, + -0.0070271017, + 0.015424425, + -0.007812779, + -0.021973835, + -0.019107683, + -0.011307474, + -0.00078607054, + 0.011797736, + 0.011804022, + -0.016819788, + -0.012049153, + -0.009302424, + 0.01846657, + 0.016882643, + -0.00066389766, + 0.005732305, + 0.015851833, + -0.01937167, + 0.00886873, + 0.01252056, + 0.023457194, + -0.0045915004, + -0.007907061, + -0.013174244, + 0.0054306043, + 0.022765798, + 0.020477904, + 0.0053771785, + 0.00061714987, + 0.0013890782, + 0.011426897, + 0.000079500765, + -0.006869966, + 0.008321898, + 0.0046480694, + -0.0023554617, + 0.002140186, + 0.0073225163, + 0.0052483273, + -0.01146461, + -0.004503505, + 0.034343544, + -0.032281928, + 0.004786349, + 0.012432564, + -0.017926022, + 0.010861209, + -0.0065682656, + -0.017083777, + -0.015235863, + 0.001869913, + -0.014129628, + -0.036983423, + -0.0059397235, + -0.009855541, + -0.016756935, + 0.014909021, + 0.023180636, + -0.009352707, + 0.00510062, + 0.032005366, + 0.009792687, + 0.004519218, + 0.00051697594, + 0.021031022, + -0.009226999, + -0.0014880736, + -0.0066562616, + -0.031728808, + -0.018240293, + 0.017033493, + 0.008629885, + -0.044148803, + -0.01684493, + -0.0003893033, + -0.017825456, + -0.0008642455, + -0.023344057, + 0.022577235, + 0.019472236, + 0.022124685, + -0.02369604, + 0.01713406, + 0.02934035, + 0.024048023, + -0.013689648, + -0.008051625, + 0.022262964, + -0.012947969, + 0.014192482, + 0.004588358, + -0.021483572, + -0.0037335407, + 0.009547556, + 0.008233903, + 0.019396812, + 0.007033387, + -0.008761878, + -0.005631738, + -0.00819619, + -0.002710588, + -0.0066876886, + 0.025870796, + 0.021772701, + -0.025367962, + 0.01876827, + 0.019321386, + 0.015713554, + -0.00025357748, + 0.015675843, + -0.010729215, + -0.024475433, + 0.00900701, + -0.011012059, + 0.007020816, + 0.010880065, + -0.01759918, + 0.0017457759, + -0.023482336, + -0.027178165, + 0.012947969, + -0.014393616, + -0.0031615673, + -0.016191246, + 0.0142679075, + -0.016442664, + 0.0021574711, + -0.000396178, + -0.016266672, + -0.0032652766, + -0.020943025, + 0.014104486, + -0.011294903, + 0.010100673, + 0.013023394, + -0.0027373012, + -0.011439468, + 0.03572634, + 0.03771253, + -0.029516341, + 0.019509949, + -0.009340137, + -0.011250905, + 0.002528311, + -0.019484807, + 0.0061377143, + -0.029918607, + -0.010678932, + 0.023457194, + -0.021018451, + -0.02622278, + -0.0045569306, + 0.0016970639, + 0.008070482, + 0.005348894, + 0.22044231, + -0.0105217965, + -0.004956055, + 0.03451954, + -0.010446371, + 0.0294912, + -0.01199887, + 0.01876827, + -0.0078002084, + -0.013538798, + -0.033840712, + -0.0036675436, + 0.0010260951, + 0.0061314288, + -0.0124765625, + -0.009132718, + -0.019208249, + -0.02265266, + 0.0038875334, + 0.011684599, + -0.008353326, + 0.008447607, + -0.0020223344, + -0.016216388, + -0.004340084, + 0.028736949, + -0.022011546, + -0.02682618, + 0.022464097, + 0.013061106, + 0.009095006, + -0.012162291, + -0.014695317, + 0.014682746, + -0.0012233002, + -0.0050251945, + -0.0017143488, + 0.005185473, + 0.027680997, + 0.0074545103, + 0.009365278, + -0.008032769, + -0.00885616, + 0.00878702, + -0.0023271774, + 0.0156507, + -0.009830399, + 0.011288618, + 0.0021197584, + 0.043268844, + -0.022237822, + -0.021207012, + 0.04259002, + 0.033011034, + 0.009126432, + -0.007982486, + 0.038994756, + 0.032030508, + -0.0035261216, + -0.030019175, + -0.012507989, + 0.0003447161, + 0.0057103056, + 0.005968008, + 0.012306856, + 0.013362806, + -0.04714066, + -0.0028724377, + 0.009622981, + 0.005524886, + 0.0066436906, + -0.009930966, + 0.021093875, + 0.002126044, + -0.022074401, + -0.000038571867, + 0.014934163, + -0.031376824, + 0.0039252457, + 0.011954872, + -0.004553788, + -0.009289853, + 0.008642455, + -0.004638641, + -0.0026885893, + -0.02326863, + 0.029013507, + 0.0055940254, + -0.025204541, + -0.013211956, + 0.0021653278, + -0.025820512, + 0.0034632673, + -0.008491605, + 0.011785165, + 0.011049772, + 0.013601652, + 0.01593983, + -0.007705927, + 0.009509843, + -0.0070271017, + -0.047643498, + 0.02534282, + 0.005317467, + -0.018252864, + -0.005389749, + 0.003739826, + -0.0031364255, + 0.011118911, + -0.018705415, + -0.011238334, + -0.016115822, + -0.009868112, + 0.01758661, + 0.007599075, + 0.00878702, + 0.0080264835, + -0.0015147866, + 0.006316849, + -0.019346528, + -0.0046292134, + 0.0003920532, + -0.012193718, + -0.00059515086, + 0.021269867, + -0.0144187575, + -0.042112324, + 0.0040823813, + 0.0038781052, + -0.03451954, + 0.02221268, + 0.008667597, + 0.0012665124, + 0.015713554, + -0.014934163, + 0.02353262, + 0.011232048, + -0.017335193, + 0.0023303202, + 0.021923551, + 0.008843589, + 0.0020474761, + -0.006153428, + -0.003456982, + -0.0034946946, + -0.0042269463, + 0.017083777, + 0.000108128894, + -0.009516128, + 0.008051625, + -0.0080893375, + -0.015135296, + 0.0024811702, + -0.03665658, + 0.033715002, + -0.02055333, + -0.04007585, + -0.010584651, + 0.016266672, + 0.009132718, + -0.008560744, + -0.002077332, + 0.013739932, + -0.006291707, + -0.00012786905, + -0.007749925, + -0.15839262, + 0.028762091, + 0.020603612, + 0.0055940254, + 0.006414273, + 0.026926747, + 0.016153535, + -0.008604743, + -0.004274087, + 0.01297311, + 0.034217834, + -0.013438232, + -0.025468528, + -0.0009310281, + -0.020452762, + -0.00752365, + 0.0015792123, + 0.015751267, + 0.025845654, + 0.020905312, + 0.014003919, + -0.032734476, + 0.010119529, + 0.00071339536, + -0.0065808366, + -0.009880683, + 0.0027153022, + -0.0033784143, + 0.01020124, + -0.013702219, + -0.01728491, + 0.0011690884, + 0.03741083, + 0.034770954, + 0.013739932, + -0.0010999488, + 0.001396935, + -0.005238899, + 0.0020474761, + -0.0019830505, + 0.019170536, + -0.0011015201, + -0.0101446705, + -0.025103975, + -0.0032039937, + 0.0010842353, + 0.030698, + 0.009057293, + -0.0009318138, + 0.010188669, + 0.016379809, + -0.005782588, + 0.002267466, + -0.0025581666, + 0.00051894016, + 0.0046449266, + 0.009660693, + 0.016379809, + -0.0024905985, + -0.0051383325, + -0.028007839, + 0.008435036, + 0.006869966, + -0.00045137186, + -0.0017206342, + -0.010383517, + -0.006769399, + -0.007416798, + -0.016668938, + 0.02339434, + 0.0017960593, + -0.014833596, + 0.013274811, + -0.026172496, + -0.0037461114, + 0.008604743, + -0.027505007, + 0.011565176, + -0.00082653295, + 0.002391603, + -0.00804534, + 0.02609707, + 0.013224527, + 0.025707375, + -0.017523756, + 0.0040792385, + -0.0016672082, + 0.014569608, + -0.027680997, + -0.0028111548, + -0.0029305778, + -0.026298204, + -0.017775172, + -0.012853688, + 0.0012570843, + -0.00021409718, + -0.00499691, + 0.02338177, + -0.009874398, + -0.0040698107, + 0.0072030933, + -0.008994439, + -0.011087484, + 0.0038749625, + 0.04110666, + 0.016279243, + 0.009629266, + -0.00027518361, + 0.019044828, + 0.01087378, + -0.020377338, + 0.0018384858, + 0.020515617, + 0.030873992, + -0.013061106, + 0.010993203, + 0.034192696, + -0.01937167, + 0.031049984, + 0.021810414, + 0.03653087, + 0.0029054363, + 0.0009954537, + 0.021244725, + -0.011219478, + 0.0025770229, + -0.09810286, + -0.026599905, + 0.019007115, + 0.035399497, + -0.009264711, + 0.043117993, + 0.010044104, + -0.004698353, + 0.0076619294, + 0.0020663324, + 0.005839157, + -0.017888311, + 0.0009585268, + 0.0080264835, + 0.03084885, + -0.0017426332, + -0.0027247304, + -0.01967337, + -0.03326245, + 0.006706545, + -0.020314483, + 0.010741786, + 0.014079344, + -0.005751161, + 0.003947245, + 0.006543124, + -0.0303963, + 0.0064739846, + 0.002635163, + 0.01341309, + 0.0016452092, + -0.021471001, + 0.013312523, + -0.01580155, + -0.013425661, + 0.0019327672, + -0.0053363233, + 0.0071213827, + 0.02607193, + -0.028460389, + -0.002454457, + -0.0010237381, + 0.023620615, + -0.043721393, + 0.005330038, + -0.004283515, + -0.007951058, + -0.009736118, + -0.0065494096, + -0.0297929, + -0.029767757, + 0.00834704, + -0.006285422, + -0.0017174915, + 0.019723654, + -0.027630715, + -0.005298611, + 0.0002386496, + -0.021395575, + -0.0017473473, + -0.008818447, + 0.0075299353, + -0.014821025, + 0.004446936, + -0.012457706, + -0.0022470383, + -0.01758661, + -0.011043486, + 0.03456982, + -0.008573315, + -0.0069516767, + 0.00088703015, + -0.009886969, + -0.0025927364, + -0.026298204, + -0.017121488, + -0.0035638341, + 0.0012610127, + -0.0016672082, + -0.003934674, + -0.015436996, + -0.01802659, + 0.010905207, + -0.010163527, + 0.0040258127, + 0.011929731, + 0.024161162, + -0.0019704797, + -0.005040908, + 0.0076933564, + 0.0297929, + -0.0014590035, + 0.022539522, + -0.041508924, + -0.009723548, + 0.0061502852, + 0.007492223, + -0.016153535, + 0.014205053, + 0.0051729023, + -0.037486255, + -0.02144586, + -0.05350151, + 0.026549622, + -0.0070271017, + -0.007951058, + 0.01274055, + -0.013777644, + 0.0009781688, + 0.008560744, + 0.012998252, + -0.027555289, + 0.0020239057, + 0.009472131, + 0.007196808, + 0.019019686, + -0.037083987, + 0.01147718, + 0.017536327, + 0.024462862, + 0.0032212788, + -0.0020993308, + -0.01176631, + -0.013199386, + 0.014129628, + 0.0074545103, + -0.030773425, + 0.0010638076, + 0.0041043805, + 0.0035921186, + -0.0062257103, + 0.0028095834, + 0.0017033493, + -0.039598156, + 0.015512421, + 0.01743576, + -0.0032102792, + -0.030421441, + -0.026700472, + 0.020653896, + 0.026549622, + 0.025845654, + -0.02250181, + -0.046914387, + 0.032080792, + -0.018453998, + 0.005663165, + 0.013752503, + -0.0071716662, + 0.0014927876, + 0.024563428, + 0.015424425, + 0.0010284522, + 0.0313014, + -0.01610325, + -0.019170536, + -0.02458857, + -0.01169717, + 0.008397323, + 0.021533854, + 0.00095067004, + 0.0025330249, + 0.04098095, + 0.0032621338, + 0.019899646, + 0.0070710997, + 0.026474196, + -0.015110154, + -0.023557762, + 0.0016750649, + 0.0055060294, + -0.026775897, + -0.01937167, + -0.009817828, + 0.014821025, + 0.033287592, + 0.022225251, + 0.008673882, + 0.002896008, + -0.008171048, + -0.0061345715, + 0.009201857, + -0.004952912, + 0.00144329, + -0.037335407, + 0.015814122, + 0.011100055, + 0.009874398, + -0.025217112, + 0.0018589135, + -0.009402991, + 0.018994546, + 0.0024041738, + -0.0055500274, + 0.027630715, + -0.012011441, + -0.004921485, + 0.011797736, + 0.005534314, + -0.03997528, + -0.027102739, + 0.012809689, + 0.0030248591, + -0.020138491, + -0.01878084, + -0.024022883, + -0.004968626, + -0.0011313759, + -0.031024842, + -0.0026445913, + -0.006605978, + 0.019912217, + 0.01773746, + 0.02549367, + 0.024978267, + 0.0081647625, + 0.009830399, + -0.034242976, + 0.022325817, + -0.0025141686, + -0.019283675, + 0.019120254, + 0.0032024223, + 0.018089443, + 0.028460389, + 0.0070585287, + 0.014833596, + 0.016166104, + -0.0015682128, + -0.009503557, + 0.020540759, + 0.00002415959, + 0.011301189, + -0.0030264305, + -0.011282332, + 0.012539417, + 0.003978672, + -0.0042552305, + 0.01326224, + 0.016505517, + -0.009578982, + 0.045883577, + -0.01206801, + -0.0038435354, + 0.0006933606, + 0.011364043, + 0.03205565, + -0.0031317114, + -0.008975582, + -0.007328802, + -0.0043746536, + -0.0010182384, + 0.0044815056, + 0.010597222, + -0.034318402, + -0.017071206, + -0.00070239586, + -0.027052455, + 0.0017033493, + -0.02994375, + -0.0056254524, + 0.016932927, + 0.013450802, + -0.006530553, + 0.01847914, + -0.011012059, + -0.0144187575, + 0.007316231, + -0.0010370946, + 0.012602271, + -0.015675843, + -0.008969297, + -0.019660799, + -0.037586823, + -0.013978778, + 0.019711083, + 0.016455235, + -0.000989954, + -0.030195165, + -0.0026383058, + 0.021822985, + -0.012753121, + 0.010609792, + -0.0141673405, + -0.03886905, + 0.01236971, + 0.0065934076, + -0.011062343, + -0.0072470913, + -0.03326245 + ] + }, + { + "object": "embedding", + "index": 2, + "embedding": [ + 0.0036616856, + 0.0023591535, + -0.005305319, + -0.0354111, + -0.011245246, + 0.025130458, + -0.013479064, + -0.0065428037, + 0.000525931, + -0.014710203, + -0.015865188, + -0.010839097, + 0.015966726, + -0.015052891, + -0.005124456, + -0.01776901, + 0.03292344, + -0.0066951094, + 0.013682139, + -0.016131723, + -0.016944021, + 0.013161761, + 0.020510515, + -0.030664237, + -0.01723594, + -0.0044390797, + 0.010394871, + -0.016093647, + -0.008859121, + -0.0033888044, + 0.023569325, + 0.008979697, + -0.007088566, + -0.010128336, + -0.019368222, + -0.014177132, + -0.01663941, + -0.0054798364, + -0.0033221706, + -0.023912013, + 0.009538151, + 0.0030048667, + 0.0062255003, + -0.009830071, + 0.000304215, + 0.02713582, + 0.0030318375, + -0.0020259847, + -0.015230581, + 0.007881826, + -0.0069997213, + 0.004991188, + -0.024978153, + -0.01434213, + -0.01599211, + 0.0025796797, + -0.026348906, + -0.0015373367, + 0.020573977, + -0.012546191, + -0.015484424, + 0.0025542954, + -0.025587376, + 0.0034046695, + 0.005736852, + 0.004534271, + 0.0036204362, + 0.017794395, + 0.023772398, + 0.013923289, + 0.011454666, + 0.0065364577, + -0.0017546898, + 0.016119031, + 0.027186587, + -0.008275283, + -0.013466372, + 0.0014770491, + -0.0071076048, + -0.0044263876, + 0.0008249898, + -0.030968849, + -0.021843191, + 0.025930064, + 0.014900586, + 0.027465815, + -0.007145681, + 0.0349288, + 0.01206389, + -0.007456639, + -0.024216624, + 0.0038012993, + -0.013974058, + 0.010401217, + -0.009918916, + -0.0046675387, + -0.0011875094, + 0.024229316, + -0.01793401, + -0.01144832, + 0.02071359, + -0.025803143, + -0.015382887, + -0.0058701197, + -0.025511224, + 0.0013445747, + -0.018568616, + -0.012343117, + 0.016195185, + 0.008319705, + 0.006019253, + 0.03297421, + 0.016131723, + -0.041351028, + 0.004724653, + -0.035208028, + -0.014189824, + -0.029242717, + -0.023582017, + -0.013034839, + 0.023772398, + 0.011143709, + 0.01587788, + -0.0018657462, + 0.021906653, + -0.004194756, + 0.009182772, + -0.022097034, + -0.0076089446, + 0.009969684, + -0.001427867, + 0.012006775, + 0.009328731, + 0.004988015, + -0.023087023, + 0.021805115, + -0.016715562, + 0.020535901, + -0.01806093, + -0.01194966, + -0.0018133911, + 0.020688206, + -0.0031936625, + -0.013948674, + 0.001388204, + 0.04708788, + 0.008027785, + -0.014354823, + 0.011315052, + -0.018720923, + 0.020929357, + -0.011410244, + 0.035030335, + -0.00031869198, + 0.010471025, + 0.004861094, + 0.014583281, + 0.025561992, + -0.0099443, + -0.011886199, + 0.00060843, + 0.0037917802, + 0.019406298, + -0.022706259, + 0.024242008, + 0.022033574, + 0.017312095, + 0.01356791, + -0.00740587, + -0.008725854, + 0.010604292, + 0.009239886, + -0.061683852, + 0.024203932, + 0.028481187, + 0.043508694, + -0.0031143366, + -0.0013255365, + -0.009855455, + -0.005463971, + -0.019990139, + 0.019152455, + 0.033837274, + 0.025054306, + -0.03051193, + -0.0095698815, + 0.023455095, + -0.0071837576, + 0.013885213, + -0.017781703, + 0.010077568, + 0.0071774116, + -0.016398259, + -0.02260472, + -0.67339474, + -0.008015093, + 0.0062826145, + 0.012197157, + 0.02584122, + 0.022871256, + 0.0082625905, + 0.012584268, + -0.013174453, + -0.00046643656, + -0.030004244, + 0.0075391377, + -0.0015111592, + 0.025295457, + 0.008884505, + -0.019406298, + 0.005657526, + -0.006317518, + -0.0003151223, + -0.0022131938, + -0.0078310575, + 0.048052482, + -0.005286281, + -0.0066189566, + 0.018276697, + 0.022909332, + 0.011391206, + -0.048306327, + -0.012146388, + 0.0068601076, + -0.015789036, + 0.0026685249, + 0.002014879, + 0.011892545, + 0.04784941, + 0.014621358, + -0.018746307, + 0.017007483, + -0.0077104815, + 0.024800463, + 0.0031302017, + 0.015014814, + -0.008287975, + 0.0037917802, + 0.0100204535, + 0.0076343287, + 0.023455095, + 0.022020882, + 0.0181117, + -0.0067712627, + -0.016842484, + 0.0011065969, + -0.025752375, + -0.0042360052, + 0.02507969, + 0.0019672834, + 0.022033574, + -0.022325493, + 0.008947967, + 0.004708788, + -0.02601891, + 0.005054649, + -0.014786356, + -0.011486396, + -0.011219862, + 0.025168536, + -0.007456639, + -0.0035918788, + -0.0051530134, + -0.020193212, + -0.0106677525, + 0.036426473, + -0.012146388, + -0.0044898484, + 0.0010026799, + 0.006082713, + 0.0142152095, + -0.027465815, + -0.017629398, + 0.0006778402, + 0.021107048, + 0.008421242, + -0.037314925, + -0.011632357, + 0.045310978, + -0.007424908, + -0.0128888795, + -0.027491199, + 0.02307433, + -0.013428296, + 0.00047159274, + 0.023582017, + -0.0016991617, + -0.017515168, + -0.023772398, + -0.012247926, + -0.017439015, + 0.009728534, + -0.004264563, + -0.016969405, + -0.004883305, + -0.017489783, + 0.0046675387, + -0.004562828, + 0.008713162, + -0.0009915743, + -0.01641095, + 0.014481745, + 0.0011113564, + -0.0323396, + -0.023480479, + -0.010432948, + 0.012349463, + 0.01634749, + 0.011905238, + -0.024902001, + 0.009601613, + 0.011956006, + 0.015890572, + -0.012622344, + 0.006472997, + 0.02507969, + 0.0043248506, + -0.03355805, + -0.0054449327, + 0.023150483, + 0.0008091246, + -0.003782261, + -0.003017559, + 0.012311387, + -0.008027785, + 0.007450293, + 0.024584696, + -0.0069235684, + 0.013123685, + 0.009868148, + 0.020853205, + -0.028125806, + 0.014177132, + -0.016131723, + -0.013669447, + -0.012698497, + -0.010401217, + -0.006898184, + 0.007977017, + -0.038787212, + 0.005720987, + 0.006790301, + -0.02100551, + 0.00044065563, + -0.0041693714, + -0.0035696675, + -0.0060002143, + -0.008662393, + -0.017908625, + -0.0028176575, + 0.00008002004, + 0.021855883, + -0.023569325, + 0.010331411, + 0.008706816, + 0.0062128077, + -0.016956713, + -0.010610638, + 0.014735587, + -0.006063675, + -0.0031508266, + 0.022680873, + -0.022795103, + -0.028455803, + -0.01416444, + -0.0124383075, + 0.010299681, + 0.011518127, + 0.018670155, + -0.0128888795, + 0.0038108183, + -0.010045838, + 0.0022703086, + -0.0022179533, + 0.0070124133, + 0.0038425487, + -0.010724868, + -0.0015555818, + 0.035258796, + 0.0035760135, + 0.017096328, + 0.014913278, + -0.0011637115, + -0.00944296, + 0.037543382, + -0.010001415, + -0.01971091, + -0.016550565, + -0.004454945, + 0.004280428, + -0.01062333, + 0.0007484403, + 0.00028101215, + 0.0030001071, + -0.0003750134, + 0.0068410696, + 0.018264005, + -0.0039948546, + -0.0034903416, + -0.031121153, + 0.003928221, + -0.0012160668, + 0.023378942, + 0.014532513, + 0.003921875, + -0.0153067345, + -0.008103939, + -0.001684883, + -0.0066633793, + 0.024330853, + 0.013783676, + 0.013022147, + -0.027237356, + 0.006463478, + -0.010293335, + -0.0014453187, + 0.0006794267, + -0.0012739747, + -0.020091675, + 0.010248912, + 0.015433656, + 0.0054988745, + -0.00074645714, + -0.0009701563, + -0.043661, + -0.00941123, + 0.009747572, + 0.027110435, + -0.011727547, + -0.0009638102, + 0.015471732, + -0.024280084, + 0.035360333, + 0.0029604442, + 0.02690736, + 0.006720494, + 0.016182493, + -0.010185451, + 0.016499797, + 0.010566216, + 0.0052608964, + 0.017159788, + -0.019444376, + -0.0045882124, + -0.012844456, + 0.0012406578, + -0.013390219, + -0.018759, + -0.014481745, + -0.021360891, + 0.011746585, + 0.0035918788, + 0.02624737, + 0.029471174, + -0.0068537616, + 0.0015087795, + 0.019507837, + -0.0011272216, + -0.022084342, + 0.013720215, + 0.018923998, + -0.00532753, + -0.016677486, + -0.020269366, + 0.0042360052, + -0.020307442, + 0.009347769, + -0.022617413, + 0.03074039, + -0.028760415, + 0.0067776088, + -0.016233262, + 0.0035760135, + 0.032948826, + 0.021767039, + -0.023315482, + -0.0025431898, + 0.031298846, + 0.004889651, + -0.03228883, + -0.0065491498, + -0.0019418991, + -0.00030342172, + 0.013072915, + 0.010578908, + 0.0036743777, + -0.018555924, + -0.017261324, + -0.017121712, + 0.007577214, + 0.054170102, + -0.010534485, + 0.021919345, + -0.0051593594, + -0.011797355, + -0.023315482, + -0.00926527, + -0.019875908, + 0.027846579, + -0.014938662, + -0.009563535, + 0.003861587, + -0.0047754217, + 0.0034332268, + -0.00036251955, + 0.014024827, + -0.0023591535, + 0.000115022616, + -0.0076597133, + 0.016144415, + -0.0113340905, + 0.022668181, + 0.01912707, + -0.010045838, + -0.0055750273, + -0.024800463, + -0.027618121, + -0.0049118623, + 0.12011851, + -0.015382887, + -0.0066697253, + -0.001366786, + 0.015154428, + -0.0030413566, + -0.0016468066, + -0.004191583, + 0.0061810776, + 0.023061639, + -0.0016626718, + -0.024089703, + -0.0146467425, + 0.019495144, + -0.0022131938, + -0.008744892, + -0.018733615, + 0.0047722487, + 0.0012700084, + -0.008859121, + 0.0069235684, + -0.032314215, + 0.014773664, + 0.011257938, + 0.0044073495, + 0.024140472, + 0.008332397, + -0.010762944, + 0.016867869, + -0.02614583, + -0.010934288, + 0.0035538024, + -0.021640118, + 0.0037378385, + -0.011023133, + 0.006050983, + -0.0001546856, + 0.020078983, + 0.009607959, + -0.025511224, + 0.008129323, + 0.019368222, + 0.015471732, + -0.02230011, + 0.02655198, + -0.0198886, + -0.009227194, + 0.03051193, + -0.013301374, + -0.017616706, + 0.023759706, + 0.0059272344, + -0.022312801, + -0.0087004695, + -0.011867161, + 0.011099286, + -0.02283318, + -0.006752224, + -0.041224107, + 0.014062903, + 0.001889544, + -0.042163327, + -0.0055083935, + -0.018720923, + -0.0062096347, + -0.034446497, + -0.013390219, + 0.004613597, + -0.0016737774, + 0.004553309, + 0.0033380357, + -0.034192655, + -0.005121283, + -0.008890851, + 0.015446348, + -0.013885213, + 0.012355809, + -0.0065110736, + 0.0073741395, + 0.026958128, + -0.018162468, + 0.006707802, + 0.0018974766, + -0.009703149, + -0.043661, + 0.021208584, + 0.01345368, + -0.020142443, + -0.018923998, + 0.0021354544, + 0.014227902, + 0.020637438, + 0.014684819, + 0.01764209, + -0.009277962, + 0.025790451, + -0.003953605, + 0.01510366, + -0.015382887, + 0.0039853356, + 0.027110435, + 0.002100551, + 0.001223206, + 0.007996055, + 0.03787338, + 0.034801878, + 0.015205197, + 0.023175867, + -0.018251313, + -0.007799327, + 0.018517848, + -0.031704992, + 0.02637429, + 0.009633343, + -0.002843042, + 0.013821753, + -0.0054512788, + 0.032542676, + 0.018733615, + -0.013072915, + -0.008992389, + -0.017477091, + 0.022795103, + 0.008827391, + 0.00607954, + 0.0026336212, + -0.009373154, + -0.0041122567, + -0.029420406, + -0.0024876615, + -0.006060502, + 0.0029318868, + -0.05386549, + -0.018264005, + -0.027161203, + 0.006453959, + 0.0019768025, + -0.0047817677, + -0.0155225005, + -0.0026177561, + -0.025955448, + 0.014139056, + 0.00784375, + -0.0080341315, + -0.038863365, + -0.026526596, + 0.008465664, + -0.022223957, + -0.03335497, + 0.03599494, + 0.002354394, + 0.006783955, + -0.011975044, + 0.007964325, + 0.003953605, + -0.01283811, + -0.013656754, + -0.006701456, + -0.011810047, + 0.013225221, + 0.03221268, + 0.009563535, + 0.031298846, + -0.029471174, + -0.009684111, + -0.010718522, + -0.0016864695, + -0.009633343, + -0.014291362, + 0.023455095, + 0.0042455243, + 0.0021671848, + 0.004182064, + 0.025358917, + -0.016677486, + 0.032542676, + -0.014088288, + -0.003696589, + -0.0062223272, + -0.0012866668, + -0.012216195, + -0.0084783565, + -0.025460456, + -0.002308385, + 0.0025400168, + -0.0050927256, + 0.025536608, + -0.0055147395, + 0.03015655, + -0.014227902, + -0.000683393, + -0.0119940825, + 0.013377527, + -0.0068410696, + -0.0135552175, + -0.021195892, + -0.009690457, + -0.020129751, + -0.011841777, + 0.020662822, + 0.03327882, + -0.0034363999, + -0.0011399138, + 0.013796368, + -0.011816393, + 0.029166562, + 0.0057622367, + -0.000033713524, + -0.008427588, + -0.006644341, + -0.018771691, + -0.020434363, + -0.004274082, + -0.007735866, + 0.00022806208, + 0.00013941535, + -0.005644834, + 0.016309414, + -0.01793401, + -0.001592865, + -0.016449027, + 0.019050919, + -0.0009289068, + 0.022782411, + 0.0031476535, + 0.0019434856, + 0.012901572, + -0.027998885, + 0.02637429, + -0.0051752245, + 0.006657033, + -0.0008075381, + 0.036858007, + -0.00057233666, + -0.04196025, + -0.025790451, + -0.0061525204, + -0.0019545914, + 0.013149069, + 0.01893669, + -0.000504513, + 0.0018990631, + -0.005654353, + 0.007856442, + -0.015217889, + -0.00092176744, + -0.0018308428, + 0.0041439873, + -0.019520529, + -0.006361941, + -0.0029858286, + 0.0022703086, + -0.025155844, + 0.0089289285, + -0.016766332, + 0.005283108, + -0.019203225, + -0.011042171, + -0.008795661, + 0.026095062, + 0.01710902, + 0.0061017517, + -0.01946976, + 0.0031539996, + 0.022287417, + 0.0031651051, + -0.0020466093, + -0.0064349207, + -0.0017419977, + 0.019964753, + -0.002479729, + -0.012279656, + -0.00973488, + 0.014786356, + 0.015065583, + -0.009423922, + 0.0014373861, + -0.0055972384, + 0.014519821, + -0.007139335, + 0.006472997, + 0.014012135, + -0.010966019, + -0.00844028, + -0.02359471, + -0.016271338, + -0.011518127, + 0.0024130952, + 0.014469052, + 0.0041059107, + -0.015154428, + -0.00494042, + -0.009887186, + 0.008643355, + 0.01641095, + -0.0047754217, + 0.0035887058, + 0.025130458, + -0.017908625, + 0.026856592, + 0.007139335, + 0.009855455, + -0.011759277, + 0.0000119732595, + 0.009398538, + 0.005695603, + 0.0218305, + 0.004981669, + -0.002106897, + -0.028709646, + 0.004204275, + 0.007386832, + 0.011410244, + -0.020104367, + 0.016944021, + 0.0016690178, + 0.008218167, + -0.001592865, + -0.028506571, + 0.011327744, + -0.01481174, + 0.009309692, + 0.019964753, + -0.02519392, + 0.004708788, + 0.020015523, + 0.0076089446, + -0.0044454257, + -0.0073487554, + -0.023340866, + -0.0229601, + 0.023861244, + -0.001327123, + -0.02672967, + 0.008326051, + -0.0144182835, + -0.0058383895, + 0.02650121, + 0.0012938061, + -0.004534271, + 0.00080833136, + 0.048128635, + 0.034903415, + 0.007171065, + -0.0006853762, + 0.008414896, + 0.00973488, + -0.012514461, + -0.03244114, + -0.00086385955, + -0.012869841, + 0.031679608, + 0.0061112707, + -0.012006775, + -0.01498943, + 0.0040138927, + -0.044980984, + -0.0023892974, + -0.004981669, + 0.019482452, + 0.019317454, + 0.010889865, + -0.01351714, + 0.019253993, + 0.0012858736, + 0.0080849, + -0.009982376, + -0.005682911, + 0.034141887, + -0.025993526, + -0.0084720105, + -0.026678901, + -0.033380356, + 0.025270073, + 0.0048230174, + 0.0008932101, + 0.020688206, + 0.016893253, + 0.00018264799, + -0.0017229595, + -0.018187853, + 0.0104646785, + 0.013872521, + 0.026323522, + -0.005695603, + -0.00554647, + -0.014012135, + 0.026577365, + -0.008865467, + 0.007507407, + 0.017667474, + -0.006146174, + -0.0011272216, + -0.002828763, + -0.004302639, + -0.009481037, + 0.016309414, + -0.017756319, + 0.02124666, + -0.015649423, + 0.009144695, + 0.01893669, + -0.0020450228, + -0.008129323, + -0.000619139, + 0.005029265, + 0.0064983815, + -0.01191793, + 0.009614305, + -0.020548593, + -0.010515447, + 0.007507407, + 0.0071901036, + -0.016969405, + -0.0041281222, + -0.011632357, + -0.021627426, + -0.02318856, + 0.016791716, + 0.024914693, + -0.013136377, + -0.006885492, + -0.014367515, + 0.00032087346, + -0.010629676, + -0.018860536, + 0.013694831, + -0.019050919, + 0.001507193, + 0.018746307, + -0.008681431, + -0.022173189, + -0.012514461, + 0.010566216, + 0.014494437, + -0.000041075964, + 0.22196034, + -0.030664237, + -0.003871106, + 0.023518555, + 0.006472997, + 0.029395021, + 0.028075038, + -0.00772952, + 0.008180091, + -0.004029758, + -0.029674249, + -0.0040963916, + -0.020612054, + 0.0033888044, + 0.006035118, + -0.016982097, + -0.017616706, + -0.043990996, + -0.016017495, + -0.003369766, + 0.0011994083, + 0.013529833, + 0.0048103253, + -0.012876187, + 0.018264005, + 0.021741655, + -0.018048238, + -0.015078275, + 0.028075038, + 0.011257938, + 0.0072916406, + -0.0014794288, + -0.016931329, + -0.0062286733, + 0.00926527, + 0.0025780932, + 0.0021211756, + -0.0126667665, + 0.021094356, + 0.003544283, + -0.0051910896, + 0.0024559312, + -0.012723882, + -0.01828939, + -0.009144695, + 0.03657878, + 0.0012065476, + -0.007932594, + 0.0005402097, + 0.036172632, + -0.04005643, + -0.027821194, + 0.022706259, + 0.02519392, + -0.00095905067, + -0.029902708, + 0.04320408, + 0.017616706, + -0.038761828, + -0.016855177, + -0.0043248506, + 0.01198139, + -0.006783955, + -0.004978496, + 0.009760264, + 0.009557189, + -0.016385566, + -0.0003672791, + 0.0065999185, + 0.013504448, + 0.021640118, + -0.006031945, + -0.013859829, + -0.0084783565, + -0.02501623, + -0.01005853, + 0.011549857, + 0.011105632, + 0.011626011, + 0.005733679, + -0.003379285, + 0.0008955899, + 0.023226636, + 0.0004791287, + 0.025435071, + -0.028075038, + 0.015865188, + 0.01941899, + -0.008935275, + -0.037314925, + 0.011257938, + -0.020967433, + 0.008135669, + -0.019050919, + 0.0069489526, + 0.006469824, + 0.006479343, + 0.024902001, + -0.0037378385, + -0.0016737774, + -0.029115794, + -0.03777184, + 0.017147096, + 0.0091383485, + 0.0065174196, + 0.0035791865, + -0.0031270287, + -0.002060888, + -0.024457775, + -0.009614305, + 0.0056733913, + -0.014253286, + 0.008332397, + 0.020269366, + -0.002018052, + -0.004194756, + 0.02436893, + -0.0038330297, + 0.017261324, + -0.003607744, + 0.00082419656, + -0.003225393, + 0.0044866754, + 0.005654353, + 0.0010954912, + -0.021767039, + -0.041934866, + -0.0035855325, + -0.028582724, + -0.037746456, + 0.008852775, + 0.021335505, + 0.013885213, + -0.013821753, + -0.017895933, + 0.0064349207, + -0.008218167, + -0.018124392, + -0.013301374, + 0.013161761, + 0.015420963, + 0.011511781, + -0.011816393, + -0.018657463, + -0.01463405, + -0.007113951, + -0.0071012583, + 0.010204489, + -0.012101966, + 0.0016610853, + 0.005064168, + -0.018517848, + 0.011029479, + -0.023480479, + 0.053053193, + -0.018048238, + -0.029902708, + -0.0124319615, + 0.01888592, + 0.017007483, + -0.017274018, + -0.02690736, + 0.032187294, + -0.0018022854, + 0.0011748172, + 0.0020402633, + -0.16012418, + 0.022020882, + 0.025219304, + -0.0064983815, + 0.024445083, + 0.0023385289, + 0.024077011, + -0.00504513, + -0.004696096, + -0.0036870698, + 0.033888042, + 0.010972365, + -0.024343546, + -0.012336771, + -0.020434363, + -0.018835152, + 0.019609373, + -0.01510366, + 0.01935553, + 0.010014107, + 0.019558605, + -0.025384301, + 0.031222692, + 0.00059613446, + 0.020675514, + -0.0047722487, + 0.01070583, + 0.023556633, + -0.010318719, + -0.01793401, + -0.02289664, + -0.0010375833, + 0.013694831, + -0.0058510816, + 0.014062903, + 0.02590468, + 0.005625796, + 0.0029160217, + -0.011518127, + 0.0020196384, + 0.027186587, + 0.008649701, + -0.0037949532, + -0.009722188, + -0.013085607, + 0.012698497, + 0.017096328, + 0.0010201316, + -0.018302081, + 0.002271895, + 0.023620093, + -0.004715134, + 0.026323522, + -0.0035093797, + -0.008795661, + 0.000028755654, + 0.015547885, + 0.012412923, + -0.009449306, + -0.00074963016, + -0.022947408, + -0.00058344234, + 0.0013905838, + -0.0142025165, + 0.0006853762, + -0.021157816, + -0.023645477, + -0.00009484408, + -0.0041788905, + 0.02071359, + -0.019114379, + -0.026653517, + 0.018911306, + -0.008243552, + 0.022452416, + 0.025460456, + -0.0075454838, + 0.012844456, + 0.008078554, + -0.01828939, + 0.0055274316, + 0.044574834, + -0.016690178, + 0.034801878, + -0.041579485, + -0.0033856314, + 0.0036331282, + -0.0001255333, + -0.012546191, + -0.0126667665, + 0.027389662, + -0.010858135, + -0.021107048, + -0.003207941, + -0.00096619, + 0.015725575, + 0.019139763, + 0.033583432, + -0.017439015, + -0.010712176, + 0.027897349, + 0.0011867161, + -0.0068791457, + 0.015662115, + 0.032542676, + 0.034141887, + 0.035436485, + 0.017020175, + 0.010794674, + 0.018898612, + -0.020345518, + -0.027643505, + 0.006419055, + 0.010502755, + -0.031781144, + 0.009258924, + 0.032085758, + -0.015217889, + 0.008757584, + 0.003060395, + 0.026628133, + -0.012044852, + -0.0033412087, + 0.004258217, + -0.006650687, + 0.00926527, + -0.10935558, + -0.043001007, + 0.011683125, + 0.022617413, + -0.014545205, + 0.024038933, + 0.00016648532, + -0.022757027, + 0.009703149, + -0.0069616446, + -0.015547885, + -0.003617263, + 0.020472439, + 0.00063460757, + 0.037162617, + -0.017667474, + 0.003073087, + -0.0054988745, + -0.0062762685, + 0.0004069421, + -0.00015309907, + 0.010940634, + 0.0010177519, + 0.0073424093, + -0.02726274, + -0.0058796387, + -0.01971091, + 0.0066760713, + 0.019279378, + 0.0047722487, + 0.0038298566, + -0.040919494, + 0.009252578, + -0.0033983234, + -0.001724546, + -0.0034681302, + 0.0021116566, + 0.030308856, + 0.0022417512, + -0.02336625, + -0.0047278265, + 0.0006710975, + 0.021132432, + -0.03015655, + -0.013910597, + -0.002486075, + -0.0011859229, + 0.027389662, + 0.011378514, + -0.01434213, + 0.0059177154, + -0.0012247926, + -0.028709646, + -0.016436335, + 0.01770555, + -0.009093926, + 0.0032460175, + 0.010432948, + -0.010712176, + 0.013770984, + -0.036832623, + -0.017984778, + -0.016715562, + 0.01787055, + 0.020269366, + 0.012787342, + -0.017692858, + 0.007989709, + -0.009328731, + -0.003537937, + -0.008510088, + 0.01274292, + -0.014380207, + 0.009030465, + -0.015141736, + -0.007075874, + 0.007507407, + 0.0040773535, + 0.0018356023, + -0.015738267, + -0.013897905, + -0.0040487964, + -0.0055623353, + -0.032415755, + 0.024102395, + 0.012311387, + -0.00045295115, + -0.008725854, + -0.010661406, + -0.005736852, + 0.013390219, + -0.0020783397, + 0.029065026, + -0.025447764, + -0.011276976, + 0.01295234, + -0.017553246, + -0.008935275, + 0.02507969, + -0.01416444, + -0.037670303, + -0.021259353, + -0.044650987, + 0.003934567, + -0.011930622, + -0.013770984, + 0.0038139913, + -0.010788328, + 0.019038226, + 0.009290654, + -0.0053370497, + -0.0015389234, + -0.017007483, + 0.0020450228, + 0.0012779409, + 0.017312095, + -0.0011549857, + -0.0093604615, + 0.025714299, + 0.008275283, + -0.0065428037, + 0.019406298, + -0.0039155288, + -0.0011906824, + 0.012717536, + -0.0032840942, + -0.009125656, + 0.012254272, + -0.0033824584, + 0.023340866, + -0.028531956, + -0.011702163, + 0.016664794, + -0.029039642, + 0.006898184, + -0.008960659, + -0.009525459, + -0.029826555, + -0.00772952, + 0.018949382, + -0.0055401237, + 0.025523916, + -0.0075327917, + -0.013187145, + 0.037974916, + -0.0078183655, + 0.014037519, + -0.011454666, + -0.0015254379, + 0.0100204535, + -0.0009209742, + 0.029775785, + -0.017248632, + 0.03114654, + -0.010775636, + -0.015738267, + -0.013720215, + 0.00087655167, + 0.0029493386, + 0.033075746, + 0.009239886, + -0.0016991617, + 0.018962074, + -0.021678194, + 0.017134404, + 0.013390219, + 0.021145124, + -0.01893669, + -0.017946701, + 0.0058542546, + 0.015839804, + -0.022046266, + -0.016956713, + -0.009626997, + 0.014799048, + 0.04277255, + 0.02147512, + 0.006415882, + 0.010610638, + -0.028811183, + -0.02868426, + 0.025028922, + 0.008091247, + -0.025206612, + -0.0026161696, + 0.004705615, + 0.020040907, + 0.0024686235, + -0.016588641, + -0.013593294, + 0.002489248, + 0.03150192, + -0.0012866668, + -0.011226208, + 0.026602749, + 0.0072726025, + 0.0032523638, + 0.009487383, + -0.00675857, + -0.024889309, + -0.010781982, + 0.027745042, + 0.017375555, + -0.003867933, + -0.038685676, + -0.005708295, + -0.010248912, + 0.008224513, + -0.011048517, + -0.0069997213, + 0.0048198444, + 0.007056836, + 0.008897197, + 0.021132432, + 0.015738267, + 0.0062508844, + -0.0052577234, + 0.0029858286, + 0.0046485, + -0.000010938304, + -0.022807796, + 0.02024398, + 0.013847137, + 0.01610634, + 0.015014814, + -0.032085758, + 0.009030465, + 0.0148625085, + 0.014316746, + -0.021360891, + -0.0119940825, + 0.00890989, + -0.012558883, + -0.0218305, + -0.039167978, + -0.009855455, + 0.0045120595, + -0.023061639, + 0.014748279, + 0.02873503, + -0.0142025165, + 0.049144007, + -0.0071076048, + -0.023569325, + 0.006644341, + -0.010286989, + 0.027313508, + 0.0040614884, + 0.016664794, + -0.012349463, + -0.026095062, + -0.007393178, + 0.0040773535, + -0.008211821, + -0.031704992, + -0.032466523, + -0.008465664, + -0.017185172, + -0.013123685, + -0.0024067492, + 0.008008747, + 0.03190807, + 0.013377527, + -0.0036553396, + 0.011422936, + -0.017223248, + -0.0040805265, + 0.025308149, + 0.013923289, + -0.012495423, + -0.030308856, + 0.009189118, + 0.0174644, + -0.025041614, + -0.0026066506, + -0.00018592019, + -0.0089225825, + -0.007113951, + -0.014837124, + 0.005054649, + 0.021868575, + -0.024026241, + 0.02431816, + -0.005698776, + -0.03510649, + 0.009316039, + 0.0035855325, + -0.0025336707, + 0.0128888795, + -0.03612186 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 22, + "total_tokens": 22 + } +} +276 34376 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 81 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["What is the capital city of Japan?"]}HTTP/2.0 200 OK +Content-Length: 33421 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:19:38 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 81 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-p6w2b +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999992 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_878f6e594e6244619c3aaf9186987e0b + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.008851459, + -0.013955677, + -0.013557299, + 0.00080998323, + -0.017902108, + 0.015374898, + -0.022782238, + 0.0062557785, + -0.0017662459, + -0.042178262, + -0.000029226701, + 0.004540886, + -0.0050668693, + -0.018873155, + -0.022234468, + -0.01136622, + 0.021562206, + -0.024512691, + 0.0057702553, + -0.01858682, + -0.0068720193, + 0.013880981, + -0.0065981345, + -0.007513159, + -0.008621148, + -0.0012597146, + 0.015312652, + -0.019097243, + 0.016781671, + -0.013457704, + 0.009175141, + 0.007961334, + -0.025695376, + -0.008540227, + -0.006442518, + 0.0061406223, + -0.012654724, + -0.0060099047, + -0.0034142234, + -0.023554096, + 0.037522223, + 0.00496105, + -0.020292375, + 0.0016588706, + -0.01952052, + 0.017441483, + -0.013843633, + 0.0074820356, + -0.0039464314, + 0.00894483, + 0.025471289, + 0.02417656, + -0.033065367, + -0.004167407, + -0.03861776, + -0.008067153, + -0.026392538, + -0.01696841, + -0.008739416, + 0.018151095, + 0.0066168085, + 0.009144018, + -0.016931063, + 0.01985665, + 0.00054310117, + -0.01983175, + -0.013669343, + 0.030724898, + -0.029679157, + 0.0027123934, + 0.016383292, + 0.014291808, + 0.012343491, + -0.0050979927, + 0.007824391, + -0.007973784, + -0.02385288, + 0.0043728203, + 0.0043665958, + 0.012860138, + 0.015063666, + -0.006529663, + 0.00075590657, + -0.017902108, + 0.008004907, + -0.0003059807, + -0.0074011153, + 0.027687266, + -0.0019887774, + -0.012038483, + 0.021649351, + 0.013781386, + 0.008776763, + 0.013868532, + -0.028981995, + -0.009349432, + 0.0117397, + 0.010133739, + -0.0076625505, + -0.01840008, + 0.00393087, + -0.0015071447, + 0.0036974452, + -0.009505048, + -0.0074260137, + 0.023429602, + 0.005157127, + -0.006735077, + 0.01101764, + 0.010525892, + 0.0024727443, + 0.027537875, + 0.003230596, + -0.05691825, + -0.021786293, + -0.021387916, + 0.027139496, + -0.007675, + -0.0050917678, + -0.009486374, + 0.026467234, + 0.03821938, + 0.019682359, + 0.00061896414, + 0.036949553, + 0.0075380574, + -0.014702636, + -0.017989254, + -0.012044708, + -0.016296146, + 0.027761962, + 0.011801946, + -0.005104217, + 0.017117802, + -0.0063398113, + 0.020466667, + -0.0030174016, + 0.01246176, + -0.014279359, + -0.022184672, + 0.02544639, + 0.0018160432, + 0.02004339, + 0.016980859, + 0.024761679, + 0.0144660985, + 0.02456249, + 0.024151662, + 0.013943228, + 0.0016215227, + -0.008957279, + -0.004761861, + 0.030774696, + 0.014391403, + 0.0024369524, + 0.017715368, + 0.013594647, + 0.007089882, + 0.006109499, + 0.0018471665, + -0.0016899939, + 0.009262287, + 0.01932133, + -0.001395879, + -0.012474209, + 0.018698864, + -0.007326419, + 0.0043946067, + 0.003716119, + -0.0031559002, + -0.039265126, + -0.007089882, + -0.031695943, + 0.00286801, + 0.005664436, + 0.013669343, + 0.013021979, + -0.007096107, + -0.013955677, + 0.0025443279, + -0.01318382, + 0.0012425968, + 0.021549756, + 0.019906448, + -0.007008962, + 0.0025240977, + 0.019097243, + 0.005567954, + 0.020628508, + -0.028782805, + 0.023429602, + 0.03144696, + 0.015586536, + 0.017964356, + -0.6413885, + -0.030202027, + -0.019819302, + 0.0009235832, + 0.031197973, + -0.0004341697, + 0.007058759, + 0.029305676, + 0.0005053642, + 0.013619546, + -0.01335811, + -0.0070649837, + -0.041381508, + -0.005767143, + -0.022172222, + -0.0135324, + -0.0017693583, + -0.014129967, + -0.009834955, + 0.0055523925, + 0.001993446, + 0.022371411, + -0.012760543, + -0.0055243815, + -0.0076252026, + -0.0033799878, + 0.009685564, + -0.024313504, + -0.0025598893, + 0.05074339, + -0.034882966, + 0.034783375, + 0.023765733, + -0.0041549574, + 0.035107054, + 0.017441483, + -0.04048516, + 0.032418005, + 0.0011826844, + 0.02943017, + -0.008347263, + 0.006529663, + 0.010731306, + -0.012405738, + -0.0050886557, + -0.017441483, + 0.04890089, + -0.018362733, + 0.01100519, + 0.0048490064, + 0.008048479, + -0.034609083, + -0.025023114, + -0.0014884707, + 0.0065607866, + 0.014752433, + 0.0062184306, + -0.007631427, + 0.0012083612, + -0.0033799878, + -0.010202209, + 0.01663228, + -0.015213057, + -0.008197871, + -0.012480434, + 0.017055554, + -0.018424978, + -0.0030329633, + 0.0047400747, + -0.044892214, + -0.00096482155, + 0.0029878344, + 0.004883242, + -0.00290847, + 0.017429035, + -0.0051166667, + 0.026143553, + 0.0054963706, + 0.0021023774, + -0.019059895, + -0.012443086, + -0.00005334724, + -0.029504865, + -0.00976026, + -0.007438463, + -0.035256445, + -0.025595782, + -0.007164578, + 0.01878601, + -0.016657177, + 0.008994627, + 0.01589777, + 0.0027046127, + 0.013420356, + -0.022321614, + 0.016009813, + 0.006548337, + -0.013146472, + -0.005387439, + 0.005356316, + -0.0083908355, + -0.017130252, + -0.0008379942, + 0.0028197689, + -0.0020930404, + -0.011503163, + -0.0012511557, + 0.0062931264, + 0.032069422, + -0.017727818, + 0.021250973, + -0.03179554, + -0.01985665, + 0.007998682, + 0.02313082, + -0.014702636, + 0.03677526, + 0.013507502, + 0.040012084, + 0.020342173, + 0.0148271285, + 0.01533755, + 0.015623884, + -0.0063615977, + 0.02456249, + 0.010164862, + -0.013619546, + -0.006308688, + -0.031471856, + 0.020130536, + 0.0025816758, + 0.021960584, + 0.0022844484, + -0.012175426, + 0.020902392, + 0.016321046, + 0.011048763, + -0.023628792, + 0.009953224, + -0.0198442, + -0.037123844, + -0.014528345, + 0.011210604, + -0.021973033, + 0.0019420924, + -0.030849392, + -0.00731397, + -0.0047929846, + -0.031671047, + 0.010476095, + 0.011335097, + -0.0030345195, + -0.0014199995, + 0.017130252, + -0.02564558, + -0.013781386, + -0.01389343, + 0.0011313311, + 0.0155491885, + -0.00794266, + 0.018275587, + 0.01317137, + -0.03234331, + 0.00045284367, + -0.0046684914, + -0.0023607004, + 0.018163543, + 0.005197587, + -0.009617092, + -0.01696841, + -0.02581987, + -0.017927008, + -0.012019809, + 0.0024260595, + -0.002004339, + -0.007531833, + 0.021562206, + 0.004444404, + -0.003448459, + -0.0020323498, + 0.009698013, + -0.0075567313, + -0.004148733, + 0.0019809965, + 0.025409043, + -0.020653406, + 0.0133954575, + 0.020479115, + 0.0037379055, + -0.006772425, + -0.031322464, + 0.028135441, + 0.0076625505, + -0.005586628, + 0.005863625, + 0.0056955596, + 0.021736495, + 0.011714801, + -0.016333494, + 0.014553244, + 0.020827696, + -0.008558901, + 0.012038483, + -0.005079319, + 0.015872872, + -0.0108931465, + -0.019557867, + -0.030102432, + 0.016134307, + 0.00014491775, + 0.01254268, + -0.021325668, + -0.0112417275, + 0.0076812245, + -0.0005252053, + 0.027961152, + 0.013955677, + 0.0133954575, + -0.01894785, + 0.007824391, + 0.02671622, + 0.00029469852, + -0.0075567313, + -0.027761962, + -0.020255027, + 0.014528345, + 0.009890977, + 0.046909, + -0.0044319546, + -0.01589777, + -0.034360096, + -0.025234751, + -0.01535, + 0.011403568, + -0.00033107385, + 0.001520372, + 0.013270965, + -0.005605302, + 0.026218249, + 0.0030267385, + 0.026965206, + 0.003163681, + 0.022097526, + -0.022657745, + 0.017316991, + -0.019234184, + 0.050942577, + 0.023081021, + 0.0023591444, + 0.015424696, + -0.027139496, + -0.026417436, + 0.0031730179, + -0.0007345093, + -0.002678158, + -0.04048516, + 0.0069778385, + 0.004572009, + 0.015200608, + 0.029156284, + 0.024437996, + 0.008235219, + -0.007967559, + -0.0010791996, + 0.008720742, + -0.012760543, + 0.004030464, + 0.023155717, + -0.00013947119, + -0.01029558, + -0.03861776, + 0.0041176095, + 0.0042638886, + -0.001862728, + -0.0018611719, + -0.0198442, + -0.012362165, + -0.024935968, + 0.01300953, + 0.014528345, + 0.0019327555, + -0.058710948, + 0.0031107715, + 0.015872872, + -0.002573895, + -0.034733575, + -0.011403568, + -0.015872872, + -0.020142984, + 0.03821938, + -0.004341697, + 0.008919931, + -0.002953599, + -0.010264456, + -0.011534286, + -0.021400364, + 0.023043673, + 0.00627134, + -0.014777332, + -0.0063989456, + 0.013383009, + -0.03956391, + 0.0038530615, + -0.008882583, + 0.02310592, + -0.007008962, + -0.004039801, + -0.01766557, + 0.016719423, + -0.010662834, + -0.00043650393, + -0.013295864, + -0.012642275, + 0.025720276, + 0.019047445, + 0.002195747, + -0.008216545, + 0.014889375, + 0.016047161, + -0.0006419176, + -0.005956995, + -0.01145959, + -0.026517032, + 0.014565693, + 0.08216545, + -0.011036314, + 0.003675659, + 0.0045937956, + -0.01127285, + 0.00554928, + -0.01199491, + -0.024861272, + -0.0018098186, + -0.0005252053, + -0.008334814, + -0.0070338603, + -0.02398982, + 0.009523722, + 0.008527777, + 0.0021973033, + -0.006809773, + -0.043248903, + 0.004114497, + 0.0049081407, + 0.0029473742, + -0.0018876267, + 0.007494485, + 0.018213341, + -0.01335811, + 0.020367071, + 0.036725465, + 0.0137440385, + 0.014167315, + -0.014677737, + 0.0021615115, + 0.018885603, + -0.025371695, + 0.011341322, + -0.023703488, + 0.010774878, + 0.0017444596, + 0.023616342, + -0.02076545, + 0.0013515282, + -0.0022657744, + 0.012069606, + 0.005045083, + -0.019358678, + 0.019171938, + -0.020715652, + -0.016906163, + 0.0058947485, + -0.005826277, + -0.0029582675, + 0.018039051, + -0.007002737, + -0.046336334, + -0.016047161, + -0.008235219, + 0.00976026, + -0.013320762, + -0.017254744, + 0.0049050283, + -0.0016791008, + -0.011397344, + -0.017715368, + -0.013706691, + -0.015611435, + -0.01029558, + -0.04601265, + 0.011496938, + -0.010631711, + -0.01786476, + -0.0019701035, + 0.007923986, + -0.02671622, + -0.018910503, + 0.016146755, + 0.02346695, + -0.020018492, + 0.020690754, + -0.012947283, + -0.0014223338, + 0.027861556, + -0.016669627, + -0.023952473, + -0.03846837, + -0.024114314, + -0.028757907, + 0.023504298, + 0.032044526, + -0.0063615977, + -0.006442518, + 0.010463646, + 0.015947567, + 0.012573804, + 0.018935401, + 0.01299708, + 0.0024338402, + -0.0021770732, + -0.0029582675, + 0.030550608, + -0.009890977, + -0.027338685, + 0.022271816, + -0.014951622, + -0.0035262671, + 0.006791099, + 0.005888524, + 0.008789213, + 0.01642064, + -0.005331417, + 0.0029893906, + 0.008951054, + 0.01933378, + -0.026815815, + 0.0162339, + 0.008421958, + -0.022122424, + 0.014117518, + 0.020665856, + 0.028135441, + 0.027562773, + -0.015213057, + 0.00088934763, + -0.016209003, + 0.024450446, + 0.035405837, + -0.02491107, + 0.002793314, + 0.0066354824, + -0.002270443, + 0.0007998682, + -0.013656894, + -0.015013868, + 0.020479115, + -0.022072628, + -0.022246918, + -0.013943228, + -0.009442802, + -0.019719707, + 0.026492132, + -0.018549472, + -0.010152413, + -0.02471188, + 0.0018829582, + 0.006716403, + -0.018039051, + -0.050519302, + -0.025197404, + 0.018898053, + 0.017951906, + 0.00069599424, + 0.013233617, + 0.0012029146, + 0.014055272, + -0.030475913, + 0.011048763, + -0.013806285, + -0.0033270782, + -0.01425446, + -0.028757907, + -0.0019420924, + 0.011216829, + 0.041032925, + 0.014117518, + 0.033961717, + -0.020802798, + -0.019034995, + 0.0029847221, + -0.008085827, + 0.008191646, + -0.0020572485, + 0.00632425, + 0.040709246, + 0.024263706, + -0.017628223, + -0.0005014738, + -0.02364124, + 0.037771206, + -0.013781386, + 0.006479866, + -0.02581987, + -0.036600973, + -0.0036818834, + -0.009523722, + -0.006666606, + 0.003753467, + -0.020516463, + -0.010525892, + -0.0066728303, + -0.014042822, + 0.019981144, + 0.0015693912, + 0.007986233, + -0.014279359, + 0.0080422545, + 0.0064736414, + 0.020379521, + 0.011814396, + -0.006890693, + -0.0014192214, + 0.0012340379, + 0.028733008, + 0.0026532593, + -0.0026236922, + 0.0012807228, + 0.014739984, + -0.00015308762, + 0.017615775, + -0.011901541, + -0.0098225055, + 0.01048232, + -0.0023295772, + -0.013071776, + -0.0040273517, + -0.0061904197, + -0.012772992, + -0.010233333, + 0.010718856, + -0.017080454, + 0.028210137, + -0.030600404, + -0.009617092, + 0.013631995, + -0.007911537, + 0.022906732, + -0.00088312296, + 0.01535, + -0.015586536, + -0.008720742, + -0.0015802843, + -0.0083908355, + -0.002069698, + -0.0040211272, + 0.026292944, + 0.024076967, + -0.018263139, + -0.052386697, + -0.00695294, + 0.013320762, + -0.015200608, + -0.0063398113, + 0.012511557, + 0.008807887, + -0.020105636, + -0.00011739311, + 0.008409509, + -0.011440916, + 0.018200891, + -0.010563239, + -0.018972749, + -0.008590024, + -0.0126796225, + 0.003656985, + -0.008235219, + -0.006610584, + -0.0012223667, + 0.009866078, + -0.015287753, + 0.012922384, + -0.03182044, + -0.014329156, + 0.0151881585, + -0.006567011, + 0.019047445, + -0.0067973235, + 0.030600404, + 0.008870133, + 0.00042016423, + -0.013046877, + 0.0016697637, + 0.007799493, + 0.02457494, + -0.016756771, + -0.03284128, + -0.019396026, + 0.012984631, + 0.0026734895, + 0.009635766, + 0.000103582155, + 0.002592569, + -0.032816384, + -0.006548337, + 0.025396593, + 0.0090942215, + -0.0074260137, + -0.011839294, + -0.027737064, + -0.020541362, + -0.024973316, + 0.0014417857, + 0.0011819064, + -0.004842782, + -0.0144660985, + 0.010233333, + -0.0038592862, + 0.025359245, + 0.008085827, + -0.0013289639, + 0.016570032, + 0.0040989355, + -0.02599416, + -0.0038810726, + 0.005393664, + 0.030376317, + -0.0180515, + -0.0013095118, + -0.010258231, + -0.02997794, + 0.027512977, + -0.010444972, + -0.0045191, + -0.020728102, + 0.006299351, + 0.02059116, + 0.0151881585, + 0.017752716, + 0.020429319, + -0.013320762, + -0.018848255, + -0.009754035, + -0.026915409, + 0.032791484, + 0.012187875, + 0.015735928, + 0.008857684, + -0.018910503, + 0.00609705, + 0.014304258, + -0.020504015, + -0.0108993715, + -0.016096959, + -0.030326521, + -0.024774129, + 0.001615298, + -0.030202027, + 0.0005427121, + -0.0043634833, + -0.00096793385, + -0.0010589694, + -0.0062744524, + 0.008347263, + -0.009044424, + -0.0026952757, + 0.03465888, + 0.010500994, + -0.0028462235, + -0.011154582, + -0.029280778, + 0.0065421127, + -0.024462895, + -0.031496756, + -0.016819019, + -0.022346511, + 0.026990104, + -0.0058107157, + -0.029355474, + -0.039464314, + -0.013059326, + -0.041381508, + -0.02671622, + -0.0015997364, + 0.013059326, + 0.022570599, + 0.0010932051, + 0.0008208764, + -0.0005956217, + 0.015213057, + 0.005303406, + -0.0077745942, + 0.020416869, + 0.02562068, + -0.0451163, + 0.02905669, + 0.0048863543, + -0.00596322, + -0.00037192315, + -0.0119575625, + -0.0030376317, + 0.008172972, + 0.0270648, + -0.0005785039, + -0.024400648, + -0.006809773, + -0.000902575, + -0.01661983, + 0.02313082, + 0.002071254, + -0.0433236, + 0.022147324, + 0.0137440385, + -0.004491089, + -0.011509388, + 0.020367071, + -0.0032835056, + -0.01335811, + -0.010849574, + -0.023591444, + -0.02346695, + -0.0027497415, + -0.016657177, + -0.0026921635, + -0.0066977288, + -0.005944546, + -0.002782421, + 0.0022066403, + -0.005583516, + -0.013109124, + 0.0012223667, + -0.047780454, + -0.0047556367, + 0.010071492, + -0.014640389, + -0.0133954575, + -0.01933378, + 0.0119637875, + -0.04257664, + -0.019719707, + 0.012243897, + -0.006548337, + -0.04202887, + 0.0116089815, + 0.012405738, + -0.008670945, + -0.00659191, + 0.01300953, + -0.03680016, + 0.010949168, + -0.02634274, + 0.015984915, + -0.035555232, + 0.034210704, + 0.007388666, + -0.015374898, + -0.026641523, + -0.006716403, + 0.018686416, + -0.012237672, + -0.005966332, + 0.23245353, + -0.00021222184, + 0.0031418947, + 0.023330009, + -0.0012215886, + 0.027139496, + 0.029330576, + -0.013507502, + -0.01952052, + 0.002088372, + -0.024301054, + -0.012785442, + -0.002678158, + 0.013818734, + -0.004970387, + -0.034733575, + -0.025222303, + -0.020192781, + -0.012206549, + -0.0047680857, + 0.0017491281, + -0.0044350666, + -0.00069015863, + 0.0023840428, + 0.008204096, + 0.023367357, + -0.006946715, + 0.009735361, + 0.029106488, + 0.00993455, + -0.005767143, + 0.012467984, + 0.003924645, + 0.030052636, + -0.008502879, + -0.0075940792, + -0.0057795923, + 0.0155242905, + 0.02021768, + 0.030027736, + 0.0005843395, + -0.0011624544, + -0.017802514, + 0.024301054, + 0.00090024073, + -0.0044599655, + -0.012405738, + -0.010034144, + -0.010874473, + 0.03050081, + -0.034011517, + -0.009890977, + 0.04165539, + 0.03234331, + 0.014951622, + -0.020416869, + 0.030177128, + 0.009262287, + -0.014378954, + -0.01425446, + -0.0075816303, + 0.041281912, + -0.012872587, + 0.027936252, + 0.0123310415, + 0.013993025, + -0.03919043, + 0.003495144, + 0.017404135, + -0.0069965124, + 0.012262571, + 0.004310574, + -0.0018985198, + -0.023043673, + -0.00976026, + 0.002689051, + 0.021798743, + 0.018113747, + 0.033189863, + 0.023865327, + -0.0021941909, + -0.006392721, + 0.010650385, + 0.008602474, + 0.0091066705, + -0.012872587, + 0.003544941, + 0.0041082725, + -0.0016557582, + -0.002430728, + 0.004855231, + -0.008832785, + -0.0058107157, + -0.028060745, + -0.010233333, + 0.01182062, + 0.0051540146, + 0.025035564, + 0.015561638, + -0.001510257, + -0.003513818, + 0.019234184, + 0.019408476, + -0.009548621, + -0.0022875608, + 0.0043977187, + 0.008608698, + 0.007693674, + -0.0035200424, + -0.006535888, + -0.0056270882, + -0.012374614, + 0.005203812, + 0.004615582, + 0.0144660985, + -0.0003828163, + 0.007257948, + -0.0101835355, + 0.020516463, + -0.021885887, + 0.01910969, + -0.03122287, + -0.029529763, + 0.011808171, + -0.0025038675, + -0.025346795, + 0.0010013914, + -0.009299635, + -0.014042822, + -0.033837225, + 0.01838763, + -0.008795437, + 0.014055272, + -0.005748469, + 0.0022922293, + 0.012735644, + -0.0017537966, + -0.020105636, + 0.0015693912, + 0.012505332, + -0.007152129, + -0.00095704076, + 0.010052818, + 0.00043494778, + -0.007183252, + -0.01859927, + 0.008602474, + 0.012586253, + -0.0039370945, + -0.004609357, + -0.02689051, + -0.037148744, + 0.002422947, + -0.012885036, + 0.008888808, + 0.009785158, + -0.006349148, + -0.030401217, + 0.025222303, + 0.016358394, + -0.022807136, + -0.008689619, + 0.04297502, + -0.017478831, + -0.03956391, + 0.003467133, + -0.15467024, + 0.02418901, + 0.026591728, + -0.020080738, + 0.016358394, + 0.019781955, + -0.007544282, + -0.03142206, + 0.0026501468, + 0.030002838, + 0.043597486, + 0.012113179, + -0.015611435, + -0.023292659, + -0.0012052489, + -0.018537024, + -0.014366504, + 0.006215318, + 0.021064233, + 0.017491281, + 0.026093755, + -0.0116152065, + 0.00042055326, + 0.016769221, + -0.018512124, + 0.017516179, + -0.022807136, + 0.0044257296, + 0.011416018, + -0.012922384, + -0.01337056, + -0.0288824, + 0.025670478, + 0.039464314, + 0.0020261253, + -0.000465682, + -0.0077683697, + -0.0041985298, + -0.014901824, + 0.021213625, + 0.004662267, + -0.00046295873, + 0.007040085, + -0.0068844687, + -0.011030089, + 0.021973033, + 0.00929341, + -0.0019778842, + -0.008863909, + -0.008801662, + 0.03560503, + -0.02469943, + -0.0034515713, + 0.004528437, + 0.015872872, + -0.0054185623, + 0.0070525343, + 0.01985665, + 0.019757055, + -0.0074260137, + -0.01272942, + 0.0019607665, + 0.02671622, + -0.008851459, + 0.0043946067, + 0.0032368207, + 0.0012231447, + 0.016507786, + -0.010270681, + 0.013134022, + -0.00037114506, + -0.024139212, + 0.008789213, + -0.027886456, + -0.0004065478, + 0.008359712, + 0.009529947, + 0.01462794, + 0.006031691, + 0.007905312, + -0.039613705, + 0.049598053, + -0.010438747, + -0.012094505, + -0.0069778385, + 0.019582765, + 0.01183307, + 0.011814396, + -0.013121573, + -0.0049486007, + 0.025359245, + -0.03142206, + -0.008845235, + -0.012299919, + 0.024052069, + 0.017603325, + -0.00133052, + 0.026492132, + -0.029181184, + -0.018325385, + 0.0021241636, + -0.0058947485, + -0.019993592, + 0.028558718, + 0.028683212, + 0.029380372, + 0.00524116, + 0.011478264, + 0.009249838, + 0.020130536, + -0.01840008, + -0.0075567313, + 0.02469943, + 0.017180048, + -0.020977087, + 0.014603041, + 0.0076625505, + -0.017117802, + 0.01589777, + 0.031073479, + 0.037920598, + -0.0026065744, + -0.0060099047, + 0.006090825, + -0.014279359, + -0.0066541564, + -0.074895054, + 0.015997363, + 0.006221543, + 0.015860422, + 0.004824108, + 0.07449667, + 0.026118653, + 0.025695376, + -0.004123834, + 0.0006870463, + 0.010258231, + -0.026043957, + 0.00009443969, + -0.0101835355, + 0.016171655, + -0.017043106, + -0.0005858957, + -0.0067662, + 0.009585969, + 0.028210137, + -0.0076252026, + -0.028010948, + -0.0034235604, + -0.0307, + -0.005063757, + -0.00069366, + -0.027886456, + -0.0020354623, + 0.022620397, + 0.005623976, + 0.003943319, + -0.03821938, + -0.008092051, + -0.008129399, + 0.0011367777, + 0.006318025, + -0.028857501, + 0.011073662, + 0.0270648, + -0.03754712, + 0.00092202704, + 0.014964071, + 0.018499676, + -0.024276156, + -0.0038997466, + 0.005113554, + -0.017839862, + 0.004447516, + 0.008658496, + -0.016171655, + -0.02923098, + -0.023043673, + 0.0038997466, + -0.003162125, + 0.015051216, + -0.0022953416, + 0.0031029906, + 0.002953599, + -0.036426682, + 0.0042265407, + 0.014590592, + 0.011291524, + -0.025359245, + -0.011801946, + 0.032268614, + 0.012293694, + -0.015486942, + -0.011434692, + 0.0234794, + -0.03535604, + -0.021612003, + 0.018163543, + -0.023193065, + -0.021786293, + -0.04299992, + -0.031994727, + -0.0016993309, + 0.0036787712, + 0.01147204, + -0.0019405363, + 0.0011274407, + -0.020118086, + -0.006461192, + -0.0014682405, + -0.016072059, + 0.009641991, + 0.0011087666, + -0.029629359, + 0.007836841, + -0.027488077, + 0.013930778, + 0.008608698, + 0.024350852, + -0.0162339, + -0.016395742, + 0.02634274, + 0.025794972, + 0.00604414, + 0.024064517, + 0.010127514, + -0.0018222678, + -0.013644444, + -0.07564201, + 0.017192498, + -0.00668528, + -0.027886456, + 0.01029558, + -0.0070338603, + 0.03811979, + 0.00016942734, + 0.020852596, + -0.016134307, + -0.03769651, + 0.027338685, + -0.013121573, + -0.0024431772, + -0.027239092, + -0.0078057176, + 0.011777048, + 0.024786577, + 0.017765166, + 0.006411395, + -0.005045083, + 0.000011045116, + 0.03702425, + -0.00025754512, + -0.04534039, + 0.02149996, + -0.011652554, + 0.037248336, + -0.044219952, + -0.01029558, + 0.00541545, + -0.021400364, + 0.0005574957, + 0.0243882, + -0.003968218, + -0.00250698, + -0.006479866, + 0.024649635, + 0.005203812, + 0.030052636, + -0.022433657, + -0.008228994, + 0.01335811, + -0.017715368, + 0.0032430454, + -0.010195985, + 0.0012480434, + -0.014242011, + 0.03177064, + 0.012573804, + -0.0060846005, + 0.028135441, + 0.018213341, + 0.010837125, + 0.002841555, + -0.024749229, + 0.00076213124, + -0.00048863544, + -0.0069404906, + 0.012225223, + 0.031322464, + 0.004257664, + 0.02508536, + 0.01571103, + 0.023155717, + -0.024101865, + -0.01894785, + 0.01910969, + 0.0010986517, + -0.036327086, + -0.03876715, + 0.018026602, + 0.0069778385, + 0.018449878, + 0.013482603, + 0.0050295214, + 0.020429319, + -0.026193349, + -0.031720843, + 0.01535, + 0.003828163, + -0.013034428, + -0.045913056, + 0.0073015206, + 0.022309164, + -0.013420356, + -0.008919931, + -0.017777616, + -0.037248336, + 0.02564558, + -0.01299708, + 0.005424787, + 0.005900973, + 0.0015600543, + 0.016856367, + 0.007867964, + -0.014291808, + -0.017018206, + 0.026068855, + 0.024612287, + 0.0049361517, + -0.011895316, + -0.015611435, + -0.022358961, + -0.021524858, + 0.011496938, + -0.0023140155, + -0.034235604, + 0.022657745, + 0.02417656, + -0.01571103, + 0.040335767, + -0.002412054, + 0.019545417, + 0.015300202, + -0.015125912, + -0.011559185, + -0.015038767, + -0.017715368, + 0.030600404, + 0.012218998, + 0.010500994, + 0.013283414, + -0.010009246, + 0.02274489, + 0.0008488874, + -0.00501396, + -0.019707259, + 0.01695596, + 0.0056395377, + -0.0037285686, + 0.023417152, + -0.0047743106, + -0.0039557684, + 0.0005283176, + 0.0029006894, + 0.018138645, + 0.013021979, + 0.00007707874, + 0.021188727, + 0.010115065, + 0.011048763, + -0.002811988, + -0.0060565895, + 0.03560503, + 0.015673682, + 0.011702352, + -0.021773843, + -0.013930778, + 0.006585685, + 0.011229278, + 0.005521269, + 0.004618694, + -0.03284128, + 0.014403852, + -0.013482603, + 0.036401782, + -0.0059818937, + 0.014030373, + 0.026591728, + -0.0020167883, + 0.015076115, + 0.008141849, + -0.036849957, + 0.005169576, + 0.044269748, + -0.0028151004, + 0.033588238, + -0.010276906, + 0.022060178, + 0.004699615, + -0.020429319, + -0.020616058, + 0.0024198347, + -0.00518825, + 0.0043759327, + -0.0010574133, + 0.017839862, + 0.0234794, + 0.008577575, + 0.0037970396, + -0.01073753, + -0.022520803, + -0.015499392, + 0.0162339, + -0.005832502, + -0.0059040855, + -0.02238386 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 8, + "total_tokens": 8 + } +} diff --git a/vectorstores/dolt/testdata/TestSimilaritySearchWithDifferentDimensions.httprr b/vectorstores/dolt/testdata/TestSimilaritySearchWithDifferentDimensions.httprr new file mode 100644 index 000000000..bbee8865d --- /dev/null +++ b/vectorstores/dolt/testdata/TestSimilaritySearchWithDifferentDimensions.httprr @@ -0,0 +1,20160 @@ +httprr trace v1 +333 334599 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 137 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["Tokyo","Yokohama","Osaka","Nagoya","Sapporo","Fukuoka","Dublin","Paris","London","New York"]}HTTP/2.0 200 OK +Content-Length: 333642 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:19:42 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 158 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6659cb4779-66lnk +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999985 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_90be83943bc0413a83eb93a2c424dbd2 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.001070031, + 0.008037085, + -0.008887224, + -0.008638722, + -0.010875242, + 0.014713947, + -0.029375577, + 0.013065985, + -0.011051809, + -0.035548896, + 0.001566218, + -0.02474559, + 0.016296513, + -0.027125979, + -0.007997848, + -0.021070372, + 0.021711247, + -0.01803603, + 0.0024016432, + -0.02207746, + -0.011306851, + 0.012686692, + -0.0024065478, + -0.019016959, + -0.008344443, + -0.011803855, + 0.0013651273, + -0.015302505, + 0.008965698, + -0.020010969, + 0.019043118, + -0.019095434, + -0.010522107, + -0.022875283, + 0.008828368, + -0.004652877, + -0.015328663, + -0.0060261786, + -0.0023493269, + -0.0118496325, + 0.009122647, + -0.008207113, + 0.0015155366, + -0.017251285, + -0.018323768, + 0.01607417, + -0.016649649, + 0.016571173, + -0.00018801155, + 0.012255083, + 0.015119398, + 0.020311786, + -0.032331448, + -0.0067684157, + -0.026602816, + -0.016388068, + -0.028486202, + -0.0007291578, + 0.000018967197, + 0.0041558724, + -0.0033645893, + -0.0059934813, + -0.015982617, + 0.0117123015, + 0.014269259, + -0.011346088, + -0.011241456, + 0.028616993, + -0.015302505, + 0.0038223565, + 0.013242552, + 0.017395156, + -0.0010079053, + -0.0024752128, + 0.031625178, + -0.008010927, + -0.0015245284, + 0.004652877, + 0.011856171, + 0.009848535, + 0.01523711, + -0.035601214, + 0.004365138, + 0.0026583197, + 0.013190236, + 0.007605476, + -0.008743354, + 0.0360459, + -0.002671399, + -0.00082071126, + 0.009534637, + 0.003756961, + 0.00992047, + 0.01062674, + -0.024850221, + -0.016113406, + -0.006454518, + 0.043344017, + -0.01857227, + -0.013196776, + -0.0015964633, + 0.009815837, + -0.0037242635, + -0.011529195, + -0.025883468, + 0.011568432, + 0.014321575, + -0.016440384, + 0.008906842, + -0.008710656, + -0.0019765736, + 0.027989198, + -0.013085604, + -0.059065055, + -0.017722132, + -0.012961352, + 0.005476858, + -0.01662349, + -0.010234368, + -0.014753184, + 0.018807694, + 0.019265462, + 0.011856171, + 0.002682843, + 0.02725677, + 0.00033167689, + -0.006483946, + -0.019330857, + 0.00050926604, + -0.009613113, + 0.026995188, + 0.011744999, + -0.0058986577, + 0.015629482, + -0.021004977, + 0.013903045, + -0.016440384, + 0.01131993, + -0.01103873, + -0.006441439, + 0.0063368063, + 0.0090637915, + -0.01286326, + 0.013347185, + 0.0097242845, + 0.02502025, + 0.023136863, + -0.0030392476, + 0.015851825, + -0.005967323, + 0.003730803, + -0.0050256304, + 0.016976625, + 0.0071804062, + 0.009580415, + 0.0035738542, + 0.03225297, + 0.018611507, + 0.0059280857, + 0.010548265, + 0.006931904, + 0.004237617, + 0.031389754, + -0.021345032, + 0.0030081847, + 0.0127063105, + 0.012032739, + 0.014413129, + -0.00033699026, + -0.011588051, + -0.018336847, + 0.019448569, + -0.04049278, + 0.018624587, + 0.005208737, + 0.017578263, + 0.011006032, + 0.009292675, + -0.019854018, + -0.007971689, + -0.0023803897, + 0.00003410264, + 0.02683824, + 0.009927009, + -0.007919373, + 0.005771137, + 0.027779931, + 0.01551177, + -0.0011803856, + -0.014504682, + 0.025870388, + 0.035548896, + 0.031180488, + 0.0071346294, + -0.67843723, + -0.03280229, + 0.0011599495, + 0.004224538, + 0.020468736, + 0.005329719, + 0.018245295, + 0.015498691, + -0.012830562, + 0.013562989, + -0.027230611, + 0.017996792, + -0.01789216, + -0.012601678, + -0.008749894, + 0.0048032864, + 0.015263268, + -0.0027139059, + -0.004208189, + 0.0105548045, + 0.0047771283, + 0.017813684, + -0.008409838, + -0.0052348953, + 0.013236013, + -0.010567884, + 0.007697029, + -0.004306282, + -0.009416926, + 0.02362079, + -0.029794108, + 0.049700443, + 0.0050485185, + -0.01508016, + 0.039917305, + -0.015694877, + -0.02305839, + 0.017565183, + 0.02054721, + 0.031258963, + 0.0014574982, + 0.003841975, + 0.0028806638, + -0.0026027337, + 0.005336258, + 0.002027255, + 0.022208251, + -0.023280734, + 0.008991856, + -0.008220192, + 0.021828959, + -0.036229007, + -0.016675808, + -0.01634883, + -0.0004142385, + 0.0098354565, + 0.0035967426, + -0.0034332543, + -0.0009694856, + -0.009534637, + -0.015851825, + -0.0092011215, + -0.027779931, + -0.021279637, + -0.012366255, + 0.012405492, + -0.010437093, + -0.023306891, + -0.0006384218, + -0.01968399, + 0.004554784, + 0.021397348, + -0.0070365365, + -0.009586954, + 0.017656736, + 0.006235444, + 0.0259881, + -0.031991392, + -0.0034169054, + -0.007618555, + 0.004201649, + 0.012183148, + -0.01969707, + -0.0053035603, + 0.015681798, + -0.040178884, + -0.035967425, + 0.002808729, + 0.026602816, + -0.012882878, + 0.0046430677, + 0.0036719472, + 0.0063923923, + 0.00908995, + -0.011810395, + 0.011882329, + -0.0016970086, + -0.008050164, + 0.006748797, + -0.0071346294, + -0.014216943, + -0.015446375, + 0.009750443, + 0.0036261706, + -0.015302505, + -0.004280124, + -0.014910133, + 0.017238207, + 0.021894353, + -0.014923212, + 0.006107923, + -0.010240907, + -0.017722132, + 0.00039257627, + 0.018493796, + -0.023019154, + 0.017839843, + -0.00011781375, + 0.022391358, + 0.0090637915, + 0.007363513, + 0.0019733037, + 0.016374988, + 0.022574464, + 0.017251285, + 0.015106319, + 0.006078495, + 0.0010798402, + -0.00642509, + 0.0061733183, + -0.001871941, + 0.014426208, + 0.010574424, + -0.006467597, + 0.023176102, + -0.009488861, + -0.009181503, + -0.0059346254, + 0.018493796, + -0.036385957, + -0.033587035, + -0.012425111, + -0.0015277981, + -0.003521538, + 0.012085055, + -0.026419709, + -0.016937388, + 0.0007418282, + -0.019827861, + 0.00503217, + -0.008213652, + 0.0026615895, + -0.029794108, + 0.01914775, + -0.0060065603, + -0.013484515, + -0.00008174415, + -0.0026632245, + -0.021057293, + 0.0029525987, + 0.019043118, + 0.0080697825, + -0.03832166, + -0.0014574982, + 0.0060686856, + -0.012071976, + 0.012804404, + 0.017447472, + -0.0054833977, + -0.008867606, + -0.02151506, + -0.019265462, + -0.02388237, + 0.003953147, + 0.018925406, + 0.0033090033, + 0.010541726, + -0.013628385, + -0.0012694866, + 0.002153141, + 0.011091046, + -0.020730317, + -0.013602227, + 0.011758079, + 0.02027255, + -0.01971015, + 0.011267614, + 0.017944476, + -0.00084196473, + 0.0032043706, + -0.0073308153, + 0.015877984, + 0.008030545, + -0.000106778294, + 0.0120981345, + -0.012909036, + 0.009730823, + -0.003897561, + -0.021828959, + 0.015825668, + 0.032933082, + -0.01523711, + 0.0024572292, + -0.00950194, + 0.016322672, + -0.012124293, + -0.00656569, + -0.018951563, + 0.031206647, + 0.014596236, + 0.014648552, + -0.015210952, + -0.0068861274, + 0.01857227, + -0.006931904, + 0.03288077, + 0.006833811, + 0.023019154, + -0.019396253, + -0.0068665086, + 0.021201164, + -0.034214832, + -0.016257277, + -0.018415323, + -0.012765166, + 0.016741201, + -0.0011983692, + 0.033456247, + 0.0073308153, + -0.0059738625, + -0.034450255, + -0.013406041, + 0.001732976, + 0.021188084, + -0.01522403, + -0.029009365, + 0.00009017401, + -0.024640957, + 0.030081848, + 0.012562441, + 0.023267655, + 0.010253986, + 0.028957048, + -0.019670913, + -0.000803545, + 0.001984748, + 0.035862792, + 0.014269259, + -0.009632731, + 0.01886001, + -0.016688885, + -0.009096489, + -0.005699202, + -0.004064319, + 0.0011893774, + -0.03382246, + 0.021619692, + -0.00048596898, + 0.014831658, + 0.038504764, + -0.0002630118, + 0.0009237089, + 0.0055128257, + 0.005270863, + -0.0011632192, + -0.0044926587, + 0.02725677, + 0.012941734, + -0.007906294, + -0.008298666, + -0.015315584, + 0.006369504, + -0.012967892, + -0.0045318957, + 0.019893257, + -0.016701965, + -0.025831152, + -0.0170551, + 0.01285672, + 0.01647962, + -0.007389671, + -0.04444266, + -0.005100835, + 0.0046365284, + 0.0043945657, + -0.024654036, + -0.01076407, + -0.013039826, + -0.01131339, + 0.019801702, + 0.009966247, + 0.023816975, + 0.001081475, + -0.01789216, + -0.017866002, + -0.009789679, + 0.02207746, + -0.013334106, + -0.011908487, + -0.01048941, + 0.015197872, + -0.008148257, + -0.00030837982, + 0.005431081, + 0.026210444, + 0.011267614, + 0.005355877, + -0.011143362, + -0.0051891184, + -0.0034365242, + 0.017565183, + -0.011091046, + -0.006304109, + 0.010528646, + 0.012549362, + -0.009874693, + -0.0146093145, + 0.008056703, + 0.02417011, + -0.0012057262, + -0.017709052, + 0.006680132, + -0.026668211, + -0.0089526195, + 0.08569403, + 0.0059607835, + 0.01145726, + -0.005633807, + 0.0029362498, + 0.0073308153, + -0.016008774, + 0.0008820194, + 0.0099727865, + 0.008056703, + 0.0038452449, + -0.009233819, + -0.0020174456, + 0.011130284, + -0.0024294362, + -0.00656569, + -0.01676736, + -0.027361402, + 0.02418319, + -0.01969707, + 0.00038338007, + 0.00628776, + 0.0027972849, + 0.012130832, + -0.000813763, + -0.0035476962, + 0.024797905, + 0.018101424, + 0.01913467, + -0.025778836, + 0.0021040945, + 0.019644754, + -0.018402243, + 0.017133573, + -0.008226731, + -0.00004115307, + 0.009966247, + 0.0212404, + 0.0062092855, + -0.01160113, + 0.007513922, + 0.015394058, + 0.00824635, + 0.00038481058, + 0.014138469, + -0.019592438, + -0.018101424, + 0.02024639, + -0.019500885, + -0.018506875, + 0.032776136, + 0.006944983, + -0.041042104, + -0.017656736, + -0.017473629, + 0.008900303, + -0.009547717, + -0.013615306, + -0.0027694919, + 0.010038181, + 0.0066016577, + -0.042114586, + 0.005257784, + -0.011921567, + -0.024614798, + -0.037903126, + -0.002767857, + -0.016741201, + -0.03633364, + -0.0063923923, + -0.005558602, + -0.029401736, + -0.022796808, + 0.024300901, + 0.01607417, + -0.03047422, + 0.008095941, + -0.01621804, + -0.0010790228, + 0.036935277, + -0.026027337, + -0.011398404, + -0.012117753, + -0.008710656, + -0.031886756, + 0.025268752, + 0.031651337, + -0.03280229, + -0.0027760314, + -0.00006381153, + 0.0148055, + -0.00684689, + 0.0153679, + 0.0212404, + 0.0027466035, + -0.011359167, + 0.010155893, + 0.032357603, + -0.016034933, + -0.01313138, + 0.023660026, + -0.014033835, + 0.008462154, + 0.015812589, + 0.015119398, + 0.011346088, + 0.012922116, + 0.018820774, + -0.010777148, + 0.0012743913, + 0.02934942, + -0.018402243, + 0.0084294565, + 0.013484515, + -0.013824571, + 0.021920511, + 0.010280144, + 0.021397348, + 0.011928107, + -0.019762466, + 0.0070299967, + -0.023293814, + 0.015681798, + 0.02989874, + 0.0058855787, + -0.014334654, + 0.0138376495, + -0.009070331, + -0.0061242715, + 0.00097193796, + -0.009259977, + 0.013772255, + -0.02178972, + -0.008050164, + -0.022836046, + 0.001999462, + -0.033482403, + 0.0128436405, + 0.0031079126, + -0.031075856, + -0.007415829, + 0.007481225, + 0.01160113, + -0.0012327018, + -0.03675217, + -0.021985907, + 0.0017297062, + 0.010665976, + -0.0066310856, + 0.017826764, + 0.005404923, + 0.020442577, + -0.01061366, + 0.0062975693, + -0.030918907, + -0.02628892, + -0.025124881, + -0.028172305, + 0.0058299927, + 0.008847987, + 0.031520545, + 0.011189139, + 0.005404923, + -0.011640367, + -0.007997848, + 0.002779301, + 0.004253966, + 0.020939581, + -0.013445278, + 0.02516412, + 0.012366255, + 0.01816682, + -0.02751835, + 0.007487764, + -0.02780609, + 0.023568474, + -0.0027482384, + -0.011195679, + -0.009652349, + -0.02516412, + -0.00907687, + -0.019213146, + 0.005195658, + 0.0005362416, + -0.0025929245, + -0.0032763055, + -0.00060163694, + -0.0124578085, + 0.023555394, + 0.007991308, + 0.007605476, + -0.009338452, + 0.0002950964, + -0.0023918338, + -0.006346616, + 0.005257784, + -0.012680152, + -0.005404923, + -0.0026926524, + 0.025961943, + 0.018820774, + -0.014334654, + -0.0045482446, + 0.002601099, + 0.012130832, + 0.03944646, + 0.0059084673, + -0.015302505, + 0.007278499, + -0.012215846, + -0.026053496, + -0.011751539, + 0.007383132, + -0.01940933, + -0.02359463, + 0.010090498, + -0.006676862, + 0.028303094, + -0.0248633, + -0.015642561, + 0.019893257, + 0.011862711, + 0.032043707, + 0.015681798, + 0.010665976, + 0.008913382, + -0.0071346294, + -0.004737891, + 0.004201649, + -0.015982617, + -0.0070692343, + 0.023110706, + 0.020913424, + -0.011496497, + -0.037301492, + -0.016322672, + 0.004247426, + -0.0016087248, + -0.0010675786, + 0.023856213, + 0.0015899237, + 0.00489157, + -0.026184287, + -0.0014599506, + -0.022875283, + 0.036569063, + -0.015276347, + -0.002754778, + -0.0008574961, + -0.019108513, + -0.0015980981, + 0.014269259, + -0.003802738, + 0.003662138, + 0.015027844, + -0.012621297, + 0.0031226266, + -0.018258374, + -0.00531337, + 0.013942283, + 0.00043201784, + 0.024810985, + 0.009325373, + -0.0010871972, + 0.012804404, + 0.005467049, + -0.011267614, + 0.0054016532, + -0.00014376752, + 0.023686185, + -0.004260505, + -0.011594591, + -0.021358112, + -0.0018523225, + 0.003202736, + 0.009214201, + 0.005215277, + -0.007291578, + -0.01774829, + -0.0049209977, + 0.008409838, + 0.007468146, + -0.0029248057, + -0.011758079, + -0.025216436, + -0.024797905, + -0.022260567, + -0.0061831274, + 0.025948863, + -0.018768458, + 0.0013634925, + 0.0025880197, + -0.018977722, + 0.023960846, + -0.013347185, + -0.0044795796, + 0.017852923, + 0.027884565, + -0.024379376, + 0.011431102, + 0.0070496155, + 0.021763563, + -0.020507973, + -0.0012531378, + 0.00030286208, + -0.011404944, + 0.012928654, + -0.0138376495, + -0.0099727865, + -0.030500377, + 0.006451248, + 0.012124293, + 0.0069384435, + 0.025595728, + 0.033717826, + -0.026158128, + -0.0028888383, + -0.020298708, + -0.015564086, + 0.0181799, + -0.0051466115, + 0.014504682, + 0.020442577, + -0.012464348, + -0.0010021833, + 0.013536831, + -0.013458357, + -0.0059411647, + -0.0073308153, + -0.027701458, + -0.0069580623, + 0.0068534296, + -0.0110779675, + -0.012078515, + -0.02054721, + 0.0036261706, + -0.010947176, + 0.008900303, + 0.010430554, + 0.0046201795, + 0.0011158077, + 0.015446375, + 0.01453084, + 0.012281241, + -0.0113264695, + -0.029113997, + 0.006160239, + -0.0033367963, + -0.029584844, + -0.03897561, + -0.005100835, + 0.020926502, + 0.0034201753, + -0.014897054, + -0.020141758, + 0.011208758, + -0.021449665, + -0.007389671, + -0.013536831, + 0.018846931, + 0.012202767, + -0.012340097, + 0.007808201, + 0.0061275414, + 0.014779342, + 0.00823981, + -0.0034790311, + 0.018336847, + 0.038766347, + -0.036569063, + 0.032226812, + 0.006408741, + -0.016610412, + -0.010502488, + 0.005493207, + 0.005646886, + -0.002699192, + 0.0068534296, + -0.01702894, + -0.010136275, + -0.012111213, + 0.0022724874, + -0.026642054, + 0.017996792, + 0.007605476, + -0.03591511, + 0.026158128, + 0.017695975, + -0.01494937, + 0.005656695, + 0.0059346254, + -0.00475097, + -0.0011787507, + 0.004162412, + -0.025791915, + -0.0034005567, + -0.000193938, + -0.031991392, + 0.01984094, + -0.012261623, + 0.014713947, + 0.0045318957, + 0.00922074, + -0.01075753, + -0.019854018, + 0.0005378765, + -0.015642561, + -0.014413129, + 0.026040416, + -0.0013667622, + -0.025621887, + -0.0122354645, + 0.017983712, + -0.045619775, + 0.009214201, + 0.008834908, + -0.007808201, + -0.024928696, + 0.008167876, + 0.023581553, + -0.026380472, + -0.016937388, + 0.009998945, + -0.022862203, + -0.0003002054, + -0.011888869, + 0.027570667, + -0.031102015, + 0.015616402, + -0.0011501402, + -0.0022463293, + -0.031625178, + -0.0061177323, + 0.011391865, + -0.008043624, + -0.008468694, + 0.23981772, + -0.023542315, + -0.0048000165, + 0.038949452, + -0.0032223545, + 0.039629564, + 0.030134164, + -0.0012049088, + -0.014687789, + 0.00032452427, + -0.03131128, + 0.001627526, + 0.020834949, + -0.0019160829, + -0.0029591382, + -0.025098724, + -0.021292716, + -0.03301156, + -0.038190868, + -0.0060294485, + 0.020141758, + -0.00258475, + -0.002694287, + -0.01341912, + 0.014269259, + 0.012693232, + -0.011287232, + -0.0056665046, + 0.020442577, + 0.019867098, + 0.0048588724, + 0.008017466, + -0.00517277, + 0.02122732, + 0.00013763671, + -0.009600033, + -0.015040924, + -0.0046626865, + 0.02725677, + 0.023673106, + -0.004567863, + 0.0020861106, + -0.010796768, + -0.010247447, + 0.00038848908, + 0.021894353, + -0.007873597, + 0.008364062, + -0.011980423, + 0.034162514, + -0.032933082, + -0.01048941, + 0.030788116, + 0.01662349, + 0.0094234655, + -0.013602227, + 0.036412116, + 0.015250188, + -0.009573875, + -0.017172812, + -0.020861108, + 0.010417474, + -0.010012023, + 0.027230611, + 0.0048163654, + 0.0001181203, + -0.023411525, + 0.012869799, + 0.0062092855, + -0.00083624263, + 0.014923212, + -0.011470339, + -0.0033940172, + -0.01734284, + -0.02893089, + -0.016597332, + 0.032226812, + -0.0033874775, + 0.02177664, + 0.037118383, + -0.008403298, + 0.006833811, + 0.022718335, + 0.0007839264, + 0.009279596, + -0.016793517, + 0.023503078, + 0.0156033235, + 0.0077885827, + -0.008468694, + -0.01369378, + -0.018140662, + -0.014596236, + -0.020390261, + -0.0070757736, + 0.014700868, + 0.0005292934, + 0.008978778, + -7.4080634e-7, + -0.016793517, + -0.008187494, + -0.001349596, + 0.015904142, + -0.009586954, + 0.004257235, + 0.0059869415, + -0.000112091664, + -0.0023264384, + -0.006052337, + -0.03060501, + -0.006232174, + -0.03479031, + 0.008972238, + 0.016989704, + 0.0020713967, + -0.0068926667, + -0.008861066, + -0.023660026, + 0.017368997, + -0.02263986, + 0.014910133, + -0.02024639, + -0.015001686, + 0.00115341, + -0.0036850262, + -0.011025651, + -0.0018212596, + -0.01607417, + 0.0069711413, + -0.035732005, + 0.010541726, + 0.0032730359, + 0.014230021, + 0.0020223502, + -0.0090637915, + 0.021266557, + 0.011542274, + -0.008004387, + -0.014779342, + 0.014975528, + 0.018807694, + -0.012745548, + 0.018075267, + -0.0004217998, + -0.0018572271, + -0.011548813, + 0.0101951305, + 0.012085055, + -0.013458357, + 0.008677959, + -0.0100578, + -0.024000082, + -0.0058365325, + -0.01675428, + 0.031128172, + -0.0050550583, + -0.0127063105, + -0.020298708, + -0.00038276697, + 0.01704202, + -0.029506369, + -0.016231118, + 0.046927683, + -0.017277444, + -0.030029532, + -0.0043520587, + -0.16908614, + 0.027884565, + 0.020848028, + -0.021148847, + 0.019357014, + 0.012948274, + -0.0101951305, + -0.019644754, + -0.0063793133, + 0.023372287, + 0.053101, + 0.018611507, + -0.007952071, + -0.014190785, + 0.0032615915, + -0.019082354, + 0.00040769894, + -0.006382583, + 0.025674203, + 0.01229432, + 0.044364184, + -0.02976795, + 0.002838157, + 0.0011722111, + -0.0028659499, + 0.026053496, + -0.014556998, + 0.009881233, + 0.023136863, + -0.015917221, + -0.02390853, + -0.017447472, + 0.037223015, + 0.0265505, + 0.009979326, + 0.008887224, + 0.00011883556, + -0.01760442, + -0.019880177, + 0.027989198, + 0.006464327, + 0.013916125, + -0.0006760241, + -0.0034496032, + 0.008128638, + 0.027282927, + 0.0042703142, + -0.0068272715, + -0.016244197, + -0.011287232, + 0.031651337, + -0.015694877, + -0.007154248, + 0.018650746, + 0.0056959325, + -0.0024425152, + 0.0062289042, + 0.0106202, + 0.004165682, + -0.012653994, + -0.032906923, + 0.0010160798, + 0.019016959, + -0.0011010937, + -0.012183148, + -0.0034430637, + -0.007873597, + -0.0070757736, + -0.017172812, + 0.020586446, + 0.0003275897, + -0.011915027, + 0.017578263, + -0.03295924, + 0.015446375, + 0.00017779352, + -0.0087041175, + 0.025556492, + 0.011686143, + 0.0088414475, + -0.022208251, + 0.042951647, + -0.014190785, + -0.013680701, + -0.0022872014, + 0.010999493, + -0.0076774107, + -0.0022103619, + -0.03175597, + -0.01956628, + 0.007363513, + -0.018467639, + -0.007814741, + -0.011673065, + 0.000020998028, + 0.008854526, + -0.007952071, + 0.02934942, + -0.021972828, + 0.003253417, + 0.006735718, + -0.008697578, + -0.010077419, + 0.033796303, + 0.024784826, + 0.025922704, + 0.019827861, + 0.019278541, + 0.01104527, + 0.011012572, + -0.029297104, + -0.005084486, + 0.012915576, + 0.028747782, + -0.032906923, + 0.002151506, + 0.01940933, + -0.0082921265, + 0.018323768, + 0.01257552, + 0.044808872, + -0.0100839585, + 0.002180934, + 0.025648044, + -0.016374988, + -0.023660026, + -0.07219643, + -0.000642509, + 0.0045318957, + 0.018546114, + -0.004384756, + 0.042402327, + 0.0056501557, + 0.01691123, + 0.00377331, + 0.013432199, + -0.0024212617, + -0.017238207, + 0.0048523326, + -0.016322672, + 0.028041514, + -0.00335478, + 0.0059313555, + -0.002205457, + -0.0023362478, + 0.023960846, + -0.018389164, + -0.016414225, + 0.0028446964, + -0.008965698, + -0.014844738, + 0.008847987, + -0.026785923, + 0.011398404, + 0.01508016, + 0.007853978, + -0.003701375, + -0.0012931925, + 0.0024555943, + -0.029140154, + -0.02109653, + 0.024536325, + -0.019618597, + 0.013183696, + 0.033299297, + -0.045096613, + -0.010783688, + 0.0100839585, + 0.003004915, + -0.011071428, + -0.013615306, + -0.0029575033, + -0.028538518, + 0.005421272, + 0.0048163654, + -0.018768458, + -0.0122354645, + -0.0019226224, + -0.00081049325, + 0.0025455127, + 0.014779342, + -0.0028005545, + 0.0037536914, + 0.01565564, + -0.030003373, + 0.0070823133, + 0.010594042, + -0.0046201795, + -0.018768458, + 0.026458947, + 0.01551177, + 0.008762973, + -0.019200066, + -0.026668211, + 0.025765756, + -0.022992995, + -0.021384269, + 0.013098682, + -0.016871992, + 0.00684689, + -0.018506875, + -0.014046915, + -0.0028561407, + -0.003212545, + 0.014897054, + -0.02362079, + -0.011346088, + -0.030526536, + -0.0023934687, + 0.007376592, + -0.0024931966, + 0.014910133, + 0.012058897, + -0.0058071045, + 0.013301408, + -0.01916083, + 0.014883975, + 0.009403847, + 0.0030997382, + -0.0159303, + -0.007572778, + 0.026432788, + 0.0051662303, + -0.009698126, + 0.005143342, + 0.018977722, + -0.015524849, + -0.024078557, + -0.09129187, + 0.027910722, + 0.007520462, + -0.008409838, + 0.016545016, + -0.006807653, + 0.022312883, + 0.0057907556, + 0.01732976, + -0.018088346, + -0.04852333, + 0.00049904804, + -0.00922728, + -0.011411483, + -0.033796303, + -0.025543412, + 0.014203863, + 0.016466541, + 0.0056926627, + 0.011588051, + 0.0013250727, + 0.0027318895, + 0.016453462, + 0.010587502, + -0.027466035, + 0.011431102, + -0.006189667, + 0.023764659, + -0.031808283, + -0.013013668, + 0.022129776, + -0.031494386, + -0.0011166251, + 0.01857227, + -0.0063368063, + -0.0127063105, + 0.005473588, + 0.01354991, + 0.0070169177, + 0.0405451, + -0.019749386, + -0.005002742, + 0.009070331, + -0.010796768, + 0.0069515225, + -0.0056795836, + 0.017525947, + 0.000104734696, + 0.016832756, + 0.022129776, + -0.009815837, + 0.038949452, + -0.0104436325, + -0.003032708, + -0.0049733142, + -0.016139565, + 0.0040904772, + 0.0019651293, + -0.0077493456, + -0.008782592, + 0.023450762, + 0.0040479703, + 0.011803855, + 0.01047633, + 0.021959748, + -0.0068141925, + -0.02025947, + 0.007167327, + 0.008115559, + -0.03452873, + -0.026079653, + 0.010234368, + 0.016701965, + 0.014687789, + 0.00076512527, + -0.0061536995, + 0.014386971, + -0.008220192, + -0.034345623, + 0.01914775, + 0.004708463, + 0.0035411566, + -0.05367648, + 0.004093747, + 0.014713947, + -0.01789216, + -0.0079324525, + -0.010744452, + -0.01732976, + 0.0265505, + -0.00036396584, + -0.005503016, + 0.00740275, + 0.004404375, + 0.004021812, + 0.012902496, + -0.006245253, + -0.026066575, + 0.030866591, + 0.02403932, + 0.0088414475, + -0.016191881, + -0.012183148, + -0.0079324525, + -0.020730317, + -0.0019749387, + -0.019030038, + -0.02151506, + 0.018363006, + 0.025281832, + 0.015459454, + 0.02097882, + -0.0052054673, + 0.011097586, + -0.0037536914, + -0.002738429, + -0.013746097, + -0.028538518, + -0.011012572, + 0.013562989, + 0.024130873, + 0.029218629, + 0.01620496, + -0.013876887, + 0.010672516, + -0.005198928, + 0.009998945, + -0.027753774, + 0.0010896495, + -0.0051368023, + 0.011496497, + 0.009279596, + -0.010999493, + 0.0015384249, + -0.0023362478, + 0.012497046, + 0.0037406124, + 0.019030038, + -0.0026109081, + 0.024300901, + 0.0005570864, + 0.0034921102, + -0.0027155406, + 0.004355328, + 0.025674203, + -0.006820732, + 0.0254257, + -0.029846424, + -0.022718335, + -0.00642836, + -0.0077885827, + -0.002543878, + -0.00188502, + -0.023777738, + -0.007598936, + -0.020782633, + 0.019631675, + -0.004361868, + 0.014570077, + 0.03983883, + -0.0085929455, + 0.026485104, + 0.023843134, + -0.014831658, + 0.00089101127, + 0.014844738, + 0.015106319, + 0.007716648, + -0.01634883, + 0.01872922, + -0.0015220761, + -0.022535227, + -0.01341912, + 0.0077755037, + -0.013641464, + -0.021410428, + 0.0014215307, + 0.0059444346, + 0.008468694, + 0.002136792, + 0.014190785, + -0.021292716, + -0.026890555, + 0.009796219, + -0.004149333, + -0.011476879, + -0.0071869455, + -0.017643657 + ] + }, + { + "object": "embedding", + "index": 1, + "embedding": [ + 0.0026680413, + -0.0026349186, + 0.008843787, + -0.0049684197, + -0.033255287, + 0.01970144, + -0.02827362, + 0.0020668625, + -0.012116319, + -0.035746124, + 0.00008668857, + -0.0036931918, + 0.016720388, + -0.018151293, + -0.036779553, + -0.024100147, + 0.012487294, + -0.023715923, + 0.009870593, + -0.023212455, + 0.0044020195, + 0.0038091217, + -0.010128952, + -0.015819447, + -0.011096137, + 0.008585429, + 0.0054586367, + -0.017488837, + 0.006253584, + -0.018800499, + 0.020045916, + 0.0018300345, + -0.00961886, + 0.0020685187, + 0.003918427, + -0.00977785, + -0.0061608404, + -0.0112153785, + -0.0011576418, + 0.00024324554, + 0.001564224, + 0.0026713535, + -0.0020635503, + -0.01999292, + -0.0040476057, + 0.013348487, + 0.003825683, + -0.0020536133, + -0.01968819, + 0.028538601, + 0.0107715335, + 0.020655377, + -0.008201204, + -0.005057851, + -0.021092597, + 0.014905258, + -0.020483138, + 0.005163844, + -0.012467421, + -0.006396012, + 0.007333387, + 0.0032874376, + -0.023980904, + 0.011573105, + 0.0063893874, + -0.017038366, + -0.016786633, + 0.011261751, + -0.021145593, + -0.0028286867, + 0.019012485, + 0.0014847293, + -0.020112162, + -0.014229554, + 0.036938544, + 0.013474354, + -0.014706521, + -0.0053957035, + -0.0013091785, + 0.0020171783, + 0.022364512, + -0.023119712, + 0.0028253745, + -0.004888925, + 0.03428872, + 0.0007568559, + -0.010976895, + 0.018230787, + 0.0062204613, + -0.019197972, + 0.024762603, + 0.019423207, + 0.009532741, + -0.004322525, + -0.016495153, + -0.026643978, + -0.0054188897, + 0.01938346, + 0.012898017, + -0.029678026, + -0.018959489, + 0.02571654, + 0.001242933, + -0.01968819, + -0.019303966, + -0.00054611213, + -0.002073487, + -0.020098913, + -0.0015857539, + 0.0011071295, + 0.007823604, + 0.020509636, + -0.0027690658, + -0.05079712, + -0.015845945, + -0.010890775, + 0.005670623, + -0.0001018526, + -0.026723472, + -0.022470506, + 0.011374368, + 0.023543684, + 0.004216532, + -0.0033785251, + 0.028035134, + 0.0016669048, + -0.005034665, + -0.011619477, + -0.0076447413, + -0.001836659, + 0.006134342, + 0.01217594, + 0.027293185, + 0.0031350728, + -0.024020651, + 0.012003701, + -0.013938073, + 0.0210396, + -0.026259754, + -0.01909198, + 0.007260517, + 0.01926422, + -0.00810846, + -0.00009802278, + 0.016362661, + 0.024325382, + 0.03439471, + 0.023517186, + 0.0013373329, + 0.000698477, + -0.007638117, + -0.0040608547, + 0.014335547, + -0.002936336, + -0.0014648556, + 0.0055944403, + 0.015103995, + 0.004206595, + -0.012527042, + 0.025358813, + -0.004832616, + 0.005283086, + 0.030790951, + -0.027902644, + 0.016349413, + 0.01457403, + 0.016813131, + 0.005978665, + -0.0018234099, + -0.022814982, + -0.018866746, + 0.017793566, + -0.027160693, + 0.010619168, + -0.010692039, + 0.01233493, + 0.027213689, + 0.007836854, + -0.026948707, + -0.01909198, + -0.009645359, + 0.0157797, + 0.02045664, + 0.011705596, + 0.01923772, + 0.0017356345, + 0.020006169, + 0.016932374, + 0.021596063, + -0.009711604, + 0.015090746, + 0.046583902, + 0.005081037, + -0.0046703145, + -0.67114735, + -0.04674289, + -0.011785091, + 0.018204289, + 0.023331698, + 0.024444625, + 0.023291951, + -0.006409261, + -0.020072415, + 0.012228937, + -0.02314621, + 0.024550617, + -0.028247122, + -0.0026581045, + 0.0068895416, + -0.016627643, + 0.0049087983, + -0.025001086, + 0.02253675, + 0.01759483, + -0.0065285033, + 0.010764909, + -0.007187647, + 0.0074791275, + 0.039296884, + -0.011314747, + -0.007532124, + -0.008459562, + -0.008664924, + 0.036011104, + -0.040038835, + 0.04030382, + 0.0029048692, + -0.002283817, + 0.056017272, + -0.0071942713, + -0.005922356, + 0.028538601, + 0.023358196, + 0.048544772, + 0.0044682655, + -0.015753202, + 0.0071942713, + 0.0063893874, + 0.0056805597, + -0.0021413888, + 0.030737955, + -0.04239718, + 0.0058263, + -0.022059783, + 0.013328614, + -0.0066113104, + -0.021079348, + -0.00080488395, + 0.00025173326, + 0.013885076, + 0.009420123, + -0.006574875, + -0.011751968, + -0.006184026, + -0.020032667, + -0.0040177954, + -0.030631963, + -0.024736105, + -0.011314747, + 0.020628877, + -0.019515952, + -0.006442384, + -0.00007613068, + -0.0038389321, + -0.0058428613, + 0.022351263, + 0.0051174723, + -0.0035607007, + 0.034050234, + 0.027452175, + 0.0285651, + -0.017011868, + -0.0056772474, + -0.003221192, + 0.010705288, + 0.019356962, + 0.0058196755, + -0.010665541, + 0.019462956, + -0.022642743, + -0.0330698, + -0.0065814997, + 0.006005163, + -0.017846562, + 0.020642126, + 0.0068630436, + -0.0076646153, + 0.0013820487, + -0.0013174593, + 0.03094994, + -0.0033851499, + 0.0034878305, + 0.03847544, + -0.0048690513, + -0.019476205, + -0.006313205, + -0.0025073958, + -0.012427674, + -0.004892237, + -0.023676176, + -0.0035010795, + 0.005919044, + 0.015925441, + -0.014004318, + 0.021543067, + 0.0009845751, + -0.02074812, + -0.009327379, + 0.0072075203, + -0.027929142, + 0.019052232, + -0.0060217245, + 0.03895241, + -0.017846562, + 0.0018499081, + -0.0044583282, + 0.03243384, + 0.011539983, + 0.007863352, + 0.024245888, + 0.007724236, + -0.012990761, + -0.007287015, + -0.0064854436, + -0.01849577, + 0.01850902, + 0.003128448, + -0.011944081, + 0.01909198, + 0.011639351, + -0.010115702, + 0.0068895416, + 0.0023301886, + -0.028671093, + -0.026524736, + -0.020549383, + -0.0056639984, + 0.010393933, + 0.0025587361, + -0.012984136, + -0.0021182029, + -0.010506551, + -0.012566789, + 0.028618095, + -0.0010731786, + -0.016296417, + -0.03145341, + 0.021715306, + -0.02510708, + -0.028220622, + -0.0107715335, + -0.014295799, + -0.005875984, + 0.018389776, + 0.008313822, + 0.006690805, + -0.018654758, + 0.018588513, + 0.016468655, + -0.024378378, + 0.003766062, + -0.0077308607, + -0.0026796341, + -0.02525282, + -0.01864151, + -0.00969173, + -0.012209062, + -0.0038157462, + 0.022642743, + -0.0051174723, + 0.011169007, + 0.0025421747, + 0.0051505947, + 0.0003231543, + 0.008221078, + -0.030843949, + -0.011937456, + 0.015117245, + 0.031479906, + -0.010095828, + 0.012646284, + 0.026378995, + -0.021278085, + 0.0107847825, + -0.012725779, + 0.022073032, + 0.0032857815, + 0.0023401256, + 0.016468655, + -0.03198337, + 0.0032973744, + 0.013911574, + 0.002522301, + 0.018866746, + 0.024921592, + -0.0016834661, + 0.0042695287, + -0.013818831, + 0.022218771, + -0.012189189, + -0.004368897, + -0.012944389, + 0.02660423, + 0.012507168, + 0.009519491, + -0.012884768, + -0.02674997, + 0.0050975983, + 0.00072000676, + 0.026167009, + -0.012401175, + 0.016945623, + -0.001420968, + 0.0029711148, + 0.021649059, + -0.00916839, + 0.012056698, + -0.033599764, + -0.008936531, + 0.004491451, + 0.027584665, + 0.03656757, + 0.016667392, + -0.010307814, + -0.03622309, + -0.009433373, + -0.005498384, + 0.0051108473, + -0.00234675, + -0.015686957, + 0.0079494715, + -0.02058913, + 0.041708227, + 0.024431374, + 0.033043303, + 0.0039846725, + 0.033043303, + -0.018893244, + -0.0012893048, + 0.016587896, + 0.0360376, + 0.009651983, + -0.005452012, + 0.0044583282, + -0.025067333, + 0.001219747, + -0.016402408, + 0.0009696699, + -0.00857218, + -0.030287486, + 0.0003328841, + 0.0038588059, + 0.019476205, + 0.022642743, + 0.012520417, + 0.011891084, + 0.000675291, + 0.0030506095, + 0.015488219, + -0.007684489, + 0.014534283, + 0.001232168, + 0.011526734, + -0.0042629037, + -0.01142074, + 0.003941613, + -0.0026200132, + -0.014097062, + -0.0057699913, + -0.0008044699, + 0.013222621, + -0.012997385, + 0.0055480683, + 0.0066113104, + -0.021728555, + -0.037786487, + 0.004984981, + -0.005044602, + -0.0042099073, + -0.01623017, + -0.025809282, + 0.014865511, + -0.01503775, + 0.03428872, + 0.01697212, + 0.017409341, + 0.0009547646, + -0.02224527, + -0.011983828, + 0.0074195066, + 0.027425675, + -0.005498384, + -0.01457403, + -0.009307506, + 0.010254818, + -0.019436456, + 0.0064821313, + 0.010148825, + 0.018310282, + -0.003138385, + 0.005495072, + -0.0072472678, + -0.00424303, + -0.0048624263, + 0.014680023, + -0.003138385, + 0.00909552, + 0.002237445, + 0.0062038996, + -0.002726006, + -0.015647208, + -0.015289483, + 0.027293185, + -0.010599295, + -0.019621944, + -0.0051207845, + -0.020615628, + -0.0069491626, + 0.086331256, + -0.011765217, + 0.017846562, + 0.005991914, + 0.0093605025, + -0.0071015274, + -0.01742259, + -0.0047001247, + 0.0070087835, + 0.0079627205, + 0.0017372906, + -0.016481904, + 0.018601762, + 0.012725779, + 0.015859194, + -0.01986043, + -0.031347416, + -0.023821915, + 0.030711457, + -0.025491305, + -0.018760752, + 0.0019045608, + 0.0047796196, + 0.0050412896, + 0.005591128, + 0.005746805, + 0.0065947487, + 0.020469889, + 0.03712403, + -0.014415041, + 0.0054321387, + 0.010817905, + -0.010407182, + -0.00043887706, + -0.0044351425, + -0.008989527, + 0.017515335, + 0.003660069, + -0.006849794, + -0.017064866, + 0.016071182, + 0.0088504115, + 0.007379759, + -0.029121563, + 0.010075955, + -0.0056639984, + 0.0073863836, + 0.010281316, + -0.014746269, + -0.0180188, + 0.030658461, + -0.001954245, + -0.028061634, + -0.025411809, + -0.01746234, + 0.01670714, + -0.014600528, + 0.008565555, + 0.0053923912, + 0.011222003, + 0.011758593, + -0.021172091, + 0.0116724735, + -0.023093214, + -0.026034517, + -0.023093214, + -0.0022655993, + -0.021013102, + -0.036620565, + -0.0058362368, + 0.008631801, + 0.001326568, + -0.013116627, + 0.009837471, + 0.012606536, + -0.008201204, + 0.016998619, + -0.016998619, + 0.008671548, + 0.029810516, + -0.010195197, + -0.010148825, + -0.017170858, + -0.018005552, + -0.0058561102, + 0.008002467, + 0.020801116, + -0.037389014, + 0.00015919644, + -0.0018581889, + 0.041072268, + -0.005018104, + 0.0041635353, + -0.0003494455, + 0.003424897, + -0.027531669, + 0.012162691, + 0.014216304, + -0.011937456, + -0.009506242, + 0.017382843, + -0.013792332, + 0.016919125, + 0.012864894, + 0.006571563, + 0.012096445, + 0.018985987, + 0.01835003, + 0.01307688, + 0.013050382, + 0.024259137, + -0.032062866, + -0.017926058, + 0.02451087, + -0.031903878, + 0.02930705, + 0.007929597, + 0.023424441, + -0.008115085, + -0.0108974, + 0.0046636895, + -0.031055935, + 0.020827614, + 0.029837016, + 0.003941613, + 0.017528584, + -0.008042215, + -0.015978437, + 0.0018697819, + 0.002027115, + -0.016773384, + 0.0072340188, + -0.0016876064, + -0.0089034075, + -0.035004172, + -0.000004062718, + -0.0069822855, + 0.008585429, + 0.0079494715, + -0.031850882, + -0.012407799, + -0.00698891, + 0.008505934, + -0.010486677, + -0.022920975, + -0.023490688, + -0.009744727, + 0.02343769, + -0.0011692347, + 0.013646592, + 0.013911574, + 0.020072415, + -0.009088895, + -0.004415269, + -0.017833313, + -0.030049002, + -0.024457874, + -0.014256052, + 0.010042832, + 0.028432608, + 0.018972738, + -0.009685106, + 0.016680641, + -0.0021463572, + -0.0009199857, + 0.0027193816, + -0.0058693597, + 0.024643362, + -0.0059057944, + 0.007412882, + 0.019356962, + 0.0300755, + -0.022682492, + 0.0061608404, + -0.027041452, + 0.01015545, + 0.0006504489, + 0.0066874926, + 0.0018118169, + -0.034209225, + -0.0045113247, + -0.0057534296, + -0.013739336, + -0.0035607007, + -0.003660069, + -0.007406257, + -0.0040939776, + -0.01939671, + 0.016415657, + -0.0022407572, + 0.00096470147, + -0.014401792, + 0.004166848, + -0.00033681744, + 0.010102453, + -0.013633343, + -0.008598678, + -0.0034911428, + 0.009042524, + 0.019423207, + 0.03145341, + -0.010480053, + 0.009724853, + -0.00043887706, + 0.0203109, + 0.015554465, + 0.011467112, + -0.01179834, + 0.018469272, + -0.029731022, + -0.01518349, + -0.017369594, + 0.0054884474, + -0.020337397, + -0.027478673, + 0.02615376, + -0.009512867, + 0.015660457, + -0.026617479, + -0.011149134, + 0.018774, + -0.0064688823, + 0.024471123, + -0.0063761384, + 0.028777085, + 0.016468655, + -0.011175632, + 0.006386075, + -0.007273766, + -0.027584665, + -0.014865511, + 0.020403642, + -0.004382146, + -0.0050081667, + -0.033043303, + 0.0015203364, + 0.021927292, + -0.002500771, + -0.020814365, + 0.027902644, + 0.00037387357, + -0.004832616, + -0.003481206, + 0.009320755, + -0.008704671, + 0.00835357, + -0.007452629, + -0.00894978, + -0.008254201, + -0.012507168, + -0.009665232, + 0.016905876, + -0.020403642, + 0.0093605025, + 0.016243419, + -0.021437073, + -0.0026316063, + -0.008989527, + -0.013275617, + 0.015382227, + -0.004408644, + 0.03818396, + 0.0028568413, + 0.0049352967, + 0.014666774, + 0.015249736, + -0.0066113104, + -0.002866778, + 0.003931676, + 0.021423824, + -0.013951322, + -0.013924824, + 0.017356345, + -0.014083813, + 0.00034385602, + -0.0045179497, + 0.006323142, + -0.0145077845, + -0.036620565, + -0.006551689, + 0.0135405995, + 0.014812514, + 0.003448083, + -0.014309048, + -0.016852878, + -0.029890012, + -0.018813748, + 0.00023827712, + 0.0032973744, + -0.022497004, + -0.013487603, + 0.002191073, + -0.012407799, + 0.013898325, + -0.015236487, + -0.013964571, + 0.012732403, + 0.0076182433, + -0.01759483, + 0.01894624, + 0.0066510574, + 0.01788631, + -0.022497004, + -0.0078037307, + -0.0038323076, + -0.007154524, + 0.016495153, + 0.00008156489, + -0.024444625, + -0.009029275, + 0.011334621, + 0.02194054, + -0.002485866, + 0.013229245, + 0.03296381, + -0.0247891, + -0.0029893324, + -0.019277468, + -0.022033283, + 0.0026481675, + 0.008512558, + 0.018204289, + 0.001989024, + -0.020337397, + 0.0026912272, + 0.023782168, + -0.035984606, + 0.0012172628, + -0.013169624, + -0.027425675, + 0.005296335, + 0.0136068445, + -0.020695124, + -0.013182873, + -0.02163581, + -0.010029583, + -0.0130835045, + 0.009552615, + 0.0048061176, + -0.0020105538, + 0.005968728, + 0.010837779, + -0.014057315, + 0.028697591, + -0.0070286575, + -0.014017567, + 0.008399941, + -0.008187955, + -0.027041452, + -0.008247577, + -0.0010913962, + 0.04088678, + -0.0012214031, + -0.025173325, + -0.025968272, + 0.0070750294, + -0.0391114, + -0.010652292, + -0.013355112, + 0.017753819, + 0.00326922, + -0.0021463572, + 0.0041039144, + 0.018734254, + 0.0021331082, + 0.02538531, + 0.0032377534, + 0.001243761, + 0.026484989, + -0.01862826, + 0.026935458, + 0.010890775, + -0.023119712, + 0.0069822855, + 0.0165349, + 0.004905486, + 0.00336362, + 0.016110929, + -0.0030506095, + -0.008426439, + 0.01015545, + -0.009857344, + -0.012434298, + -0.0010922243, + 0.01224881, + -0.047140364, + 0.016574647, + 0.0038521811, + -0.013129877, + 0.01774057, + -0.007154524, + 0.005316209, + -0.0037726865, + 0.006882917, + -0.010996768, + -0.0088636605, + -0.0121428175, + -0.011334621, + 0.01697212, + 0.0015948627, + -0.021331081, + 0.021238336, + 0.01637591, + -0.0038223707, + -0.016905876, + 0.0069822855, + -0.0031317605, + 0.008075338, + 0.0016768415, + -0.018323531, + -0.010321063, + -0.014004318, + 0.004971732, + -0.032142363, + -0.0030737955, + 0.009380376, + -0.016309666, + -0.019515952, + 0.018548766, + 0.025981521, + -0.013885076, + -0.0038687426, + 0.0026117326, + -0.007684489, + 0.016998619, + -0.024219388, + 0.006256896, + -0.029439542, + 0.0029810518, + 0.0026730096, + -0.00819458, + -0.027266687, + 0.010427057, + 0.0020238028, + -0.020178407, + -0.008711295, + 0.23572832, + -0.0058594225, + -0.0018267222, + 0.022351263, + -0.001126175, + 0.023623178, + 0.025663543, + -0.008234328, + -0.008081962, + 0.008022341, + 0.00052292616, + -0.005339395, + 0.010062706, + -0.0154352235, + -0.0070617804, + -0.03216886, + -0.016733637, + -0.02178155, + -0.036620565, + 0.016004935, + 0.020946857, + -0.014945006, + -0.011937456, + -0.006382763, + 0.022894477, + 0.002653136, + -0.011447239, + 0.013494227, + 0.01605793, + 0.023490688, + -0.005852798, + 0.0043258374, + -0.0037230023, + 0.009757976, + 0.000064278924, + 0.008181331, + -0.00014149645, + 0.0024924905, + 0.027452175, + 0.03219536, + -0.007929597, + -0.015196739, + -0.0165349, + -0.004312588, + -0.010115702, + 0.016124178, + 0.0040177954, + -0.006299956, + -0.015395476, + 0.01922447, + -0.03407673, + -0.026855964, + 0.03023449, + 0.022126028, + 0.017170858, + -0.006445696, + 0.023252204, + -0.0023070027, + -0.00518703, + -0.016428906, + -0.011513484, + 0.02255, + -0.01788631, + 0.025133578, + -0.02044339, + 0.017091364, + -0.009281008, + -0.0157797, + 0.011838088, + -0.0041072266, + 0.015209988, + -0.0021331082, + -0.0002641543, + -0.01367309, + -0.026869213, + -0.025001086, + 0.032831315, + 0.008969653, + 0.015991686, + 0.026617479, + -0.030446475, + 0.016919125, + 0.01862826, + -0.008525807, + -0.003742876, + -0.03110893, + 0.0054884474, + 0.0054553244, + 0.009479744, + -0.0013795645, + 0.0008218594, + -0.02706795, + -0.016587896, + -0.028300118, + 0.006111156, + 0.0015799574, + -0.007856728, + 0.006170777, + -0.010572797, + 0.016322915, + -0.004888925, + 0.006929289, + 0.010612544, + -0.000272642, + 0.003471269, + -0.008963029, + -0.0144812865, + 0.0068299207, + -0.016733637, + -0.020204905, + -0.006326454, + -0.01894624, + 0.014083813, + -0.00036186655, + -0.0012487294, + 0.01789956, + 0.008307197, + 0.006326454, + 0.014242803, + -0.026683725, + 0.009486369, + -0.028141128, + -0.011910957, + 0.0108974, + -0.0032129113, + -0.0054453877, + -0.019330464, + -0.0012594943, + -0.0006641121, + -0.0315859, + 0.013964571, + 0.0011270031, + 0.02194054, + -0.004193346, + 0.0074923765, + 0.0029247429, + -0.009221386, + -0.010837779, + -0.020814365, + 0.0058826087, + 0.023861663, + -0.0103144385, + 0.015011251, + 0.0130967535, + -0.021410575, + -0.026710223, + 0.021529818, + 0.0068166717, + -0.024444625, + -0.002995957, + -0.017674325, + -0.024550617, + -0.016640892, + -0.014110311, + 0.021728555, + -0.0032410657, + -0.015156992, + -0.0024428063, + -0.0064125736, + 0.022523502, + -0.039482374, + -0.013414732, + 0.028538601, + -0.027478673, + -0.020536134, + -0.012262059, + -0.17170858, + 0.018204289, + 0.033546768, + -0.020496387, + 0.025146827, + 0.0210661, + 0.010380684, + -0.011301498, + -0.022046532, + -0.00048400686, + 0.035110164, + -0.0033470585, + -0.03667356, + -0.017475588, + -0.006634496, + -0.008088587, + -0.02162256, + 0.0055050086, + 0.015050999, + 0.00061028753, + 0.026087515, + -0.026670476, + 0.01609768, + -0.0046206303, + -0.021331081, + 0.023106463, + -0.015408725, + 0.003706441, + 0.0016627643, + -0.003411648, + -0.005587816, + -0.017912809, + 0.014521034, + 0.020827614, + -0.0021297957, + 0.014229554, + -0.008134959, + -0.008081962, + -0.018363278, + 0.0072936397, + -0.01593869, + 0.004859114, + 0.015488219, + -0.01262641, + -0.0017240415, + 0.0144680375, + 0.008671548, + -0.0055348193, + -0.0010516488, + -0.042768154, + 0.008896783, + -0.017541833, + 0.0036865673, + 0.022430757, + 0.0015004626, + 0.017237103, + -0.0053658932, + 0.016905876, + 0.023689425, + -0.0017372906, + -0.03142691, + -0.005011479, + 0.015806198, + -0.0093340045, + -0.0130437575, + -0.007412882, + -0.013368361, + -0.0027972201, + -0.02959853, + 0.007333387, + 0.007903099, + -0.016561398, + 0.009857344, + -0.040674794, + 0.014640276, + -0.0103011895, + 0.006492068, + 0.022470506, + 0.012401175, + -0.018151293, + -0.03216886, + 0.029360047, + -0.01970144, + -0.005061163, + -0.0056308755, + 0.045311987, + 0.010009709, + -0.00073035766, + -0.031347416, + -0.0028121255, + 0.015329231, + -0.014269301, + -0.009393625, + -0.013321989, + -0.005554693, + 0.012845021, + -0.011539983, + 0.031320915, + -0.0016486872, + 0.01233493, + -0.0008334524, + -0.008062089, + -0.01819104, + 0.013633343, + 0.024736105, + 0.018972738, + 0.019873679, + 0.014547532, + 0.024563866, + -0.0035441392, + -0.023623178, + -0.011374368, + 0.0144812865, + 0.015315982, + -0.00095145236, + 0.011977203, + 0.0233052, + -0.009439997, + 0.024524119, + 0.007903099, + 0.048465274, + -0.012527042, + -0.004772995, + 0.016760135, + -0.0017025118, + -0.028194124, + -0.05591128, + 0.010440306, + 0.012765526, + -0.013845329, + 0.0011990452, + 0.03852844, + 0.02195379, + 0.035136662, + -0.0041734725, + 0.013335238, + -0.0077639837, + -0.0037329393, + 0.0030953253, + -0.011380993, + 0.036726557, + -0.01608443, + 0.0054288264, + 0.0030853886, + -0.024391627, + 0.004951858, + -0.005389079, + -0.02239101, + -0.01669389, + -0.008433064, + -0.020006169, + 0.015739953, + -0.03094994, + 0.026710223, + 0.01730335, + 0.0052897106, + 0.0103144385, + 0.00045999285, + -0.0017356345, + -0.020377144, + 0.00003317455, + 0.014322298, + -0.02391466, + -0.0026034517, + 0.03410323, + -0.023397943, + -0.0036302586, + -0.009400249, + 0.01323587, + -0.011851337, + -0.009274383, + -0.009890467, + -0.01608443, + 0.009413498, + 0.022814982, + -0.017714072, + -0.024285635, + 0.008274075, + -0.0053460193, + -0.008929906, + 0.030737955, + -0.025650294, + -0.0004691016, + 0.009016025, + -0.052122034, + 0.02150332, + -0.008843787, + 0.002003929, + -0.007823604, + 0.025425058, + 0.032672327, + -0.0042595915, + -0.017078115, + -0.043086134, + 0.01997967, + -0.0039681112, + -0.009453246, + 0.031294417, + -0.006150903, + 0.0054321387, + -0.010208446, + -0.017555082, + -0.037177026, + -0.013169624, + 0.0023898098, + -0.016163925, + -0.004739872, + -0.02358343, + -0.0135538485, + 0.013315364, + -0.016269919, + 0.028750587, + -0.0063463277, + -0.006710679, + 0.016508402, + -0.01143399, + 0.0063562645, + 0.028856581, + 0.030472973, + -0.01059267, + -0.010195197, + 0.016839629, + 0.021158842, + 0.010566172, + -0.00064258225, + 0.017621327, + -0.007406257, + -0.027293185, + -0.08818613, + 0.026034517, + 0.017117862, + -0.01850902, + 0.012440923, + -0.009989835, + 0.023941157, + -0.0027773464, + 0.026405493, + -0.005173781, + -0.042900644, + 0.020986604, + -0.022510253, + -0.015064248, + -0.031506404, + -0.016654141, + 0.031506404, + 0.016627643, + 0.008346945, + 0.016150676, + 0.017992303, + -0.012434298, + 0.028538601, + 0.0028634658, + -0.018548766, + 0.011440614, + -0.04642491, + 0.039906345, + -0.0036799428, + -0.002321908, + 0.012560165, + -0.031029437, + 0.0036136971, + 0.013752585, + -0.0037826234, + 0.01081128, + -0.010393933, + -0.012646284, + 0.001006105, + 0.044861514, + -0.032990307, + 0.0028982447, + 0.0064721946, + -0.00492536, + -0.0026829466, + -0.0062668333, + 0.019515952, + 0.00480943, + 0.0070087835, + 0.0145077845, + -0.017661076, + 0.01983393, + -0.0046239425, + -0.015302732, + -0.0032394095, + -0.043987073, + 0.028247122, + -0.004915423, + 0.00058130507, + -0.0029181184, + 0.014521034, + 0.016269919, + 0.020231403, + 0.0050247284, + 0.0016735293, + -0.008724544, + -0.009188264, + -0.0046206303, + 0.016163925, + -0.026392244, + -0.037309516, + 0.012401175, + -0.004537823, + 0.037230022, + -0.0021397327, + -0.023543684, + -0.0052599, + 0.0043755216, + -0.021755053, + 0.014587279, + -0.00061898225, + 0.009002776, + -0.04014483, + 0.012189189, + 0.009797723, + -0.013726087, + -0.00473656, + -0.005352644, + -0.0077109872, + 0.020072415, + -0.02538531, + 0.012712529, + 0.01805855, + 0.0011245189, + 0.00097546633, + 0.01833678, + -0.0023335011, + -0.027982138, + 0.022377761, + 0.023106463, + 0.02314621, + -0.011520108, + 0.002545487, + -0.014640276, + -0.0075387484, + 0.012613161, + -0.022920975, + 0.009877218, + 0.009651983, + 0.009088895, + 0.02255, + 0.0034282093, + 0.0011924207, + 0.020655377, + 0.026061017, + -0.008512558, + -0.017647825, + -0.024881845, + -0.017064866, + 0.008797415, + 0.020377144, + 0.0144415395, + 0.013739336, + 0.0011468768, + 0.017184107, + -0.016481904, + 0.005425514, + -0.018866746, + -0.0009936839, + -0.008009092, + 0.0039482373, + 0.001657796, + -0.009380376, + -0.0073068887, + -0.025226321, + 0.0070551555, + 0.012315055, + 0.006303268, + 0.008333696, + 0.049366217, + 0.0051572192, + 0.009969962, + 0.019025734, + 0.008068713, + 0.0105198, + 0.008028965, + -0.00046123494, + -0.034050234, + -0.02420614, + 0.009022649, + -0.014534283, + 0.0055845035, + -0.010102453, + -0.018615011, + -0.026551234, + -0.0011063014, + 0.009221386, + -0.00037242443, + 0.008101836, + 0.037044536, + -0.0073400117, + 0.023225704, + 0.014256052, + -0.0008479436, + 0.007896475, + 0.0300755, + -0.0018300345, + -0.0004927016, + -0.019476205, + 0.0144547885, + 0.007393008, + -0.028512103, + -0.02225852, + -0.018707756, + -0.0028319992, + -0.016998619, + 0.01789956, + 0.004938609, + 0.0031582587, + 0.0019857117, + 0.018668009, + -0.022165775, + -0.02538531, + 0.031188425, + -0.020072415, + -0.000031751304, + 0.0067636753, + -0.017700823 + ] + }, + { + "object": "embedding", + "index": 2, + "embedding": [ + -0.0044841906, + 0.00023355159, + -0.00082493754, + 0.010029372, + -0.015641283, + 0.02653146, + -0.026091048, + -0.0066962577, + -0.008347801, + -0.021913812, + 0.017136013, + -0.013826254, + 0.012485, + -0.010282942, + -0.008074212, + -0.017709883, + 0.03384496, + -0.008374493, + 0.026838413, + -0.0343521, + 0.0005384198, + -0.005495135, + -0.010082755, + -0.006906454, + -0.009889241, + 0.006275865, + -0.0017316182, + -0.020539194, + 0.0030695351, + -0.032296848, + 0.02372884, + 0.010356344, + 0.0012778608, + -0.019031117, + -0.019645024, + -0.009628998, + -0.009955971, + -0.008194324, + -0.011243841, + -0.017136013, + 0.016748985, + -0.009228624, + -0.015441096, + -0.004170564, + -0.014333394, + 0.01742962, + 0.0025173523, + 0.016655564, + -0.028106265, + 0.012311505, + 0.0062091355, + 0.024329402, + -0.027705891, + -0.0017182723, + -0.014159899, + 0.0021203146, + -0.0042840033, + 0.002655815, + 0.0074269404, + -0.0026708292, + 0.024436168, + 0.011877766, + -0.018951043, + -0.003623386, + 0.014053132, + 0.000584296, + -0.0009575615, + 0.030054752, + -0.012992141, + -0.009115185, + 0.01901777, + 0.02137998, + -0.012731898, + 0.008234361, + 0.015040722, + -0.019458184, + -0.049539626, + 0.0010468116, + 0.00804752, + 0.001294543, + -0.003364811, + -0.019538257, + 0.012311505, + -0.0006247505, + 0.008094231, + 0.010643279, + -0.005154817, + 0.04406785, + -0.021019643, + -0.01533433, + 0.018283753, + 0.0029227312, + 0.005051387, + -0.009268661, + -0.03878291, + 0.004617648, + -0.016108386, + 0.027652508, + -0.007306828, + -0.032697223, + -0.010923541, + 0.008287745, + -0.016775677, + -0.014546927, + -0.02984122, + 0.010342998, + 0.012411598, + 0.007453632, + 0.015894853, + -0.0026674927, + 0.0011010289, + 0.012131336, + -0.009115185, + -0.05519825, + -0.015347675, + -0.037234794, + 0.0069932016, + 0.00059430534, + -0.019524911, + -0.019645024, + 0.012698533, + 0.018884314, + 0.016882444, + -0.026704956, + 0.0056219203, + -0.014573619, + -0.017202742, + -0.0058688177, + -0.0016457045, + -0.002824306, + 0.02853333, + 0.038996443, + 0.00025794937, + -0.013973057, + -0.021046335, + 0.008594698, + -0.035419766, + 0.006225818, + -0.011010289, + -0.029654378, + 0.0069798557, + 0.0028109602, + -0.0038435918, + 0.0027308853, + -0.009989335, + 0.0036734329, + 0.032136697, + 0.00459763, + 0.009849204, + 0.015027376, + 0.017976798, + 0.0032113343, + 0.0075470526, + -0.0009950965, + 0.0076938565, + 0.00986255, + 0.022287494, + 0.023328466, + -0.003823573, + -0.024382785, + -0.01211799, + -0.010509822, + 0.021460054, + -0.014400124, + -0.0030361705, + 0.016375303, + 0.005671967, + 0.054130584, + 0.0027909414, + -0.0036801056, + -0.0069398186, + 0.018043527, + -0.023995757, + 0.004791144, + 0.025637291, + 0.009362082, + 0.006886435, + 0.009302026, + -0.023982411, + 0.014533581, + -0.019564949, + 0.0028209696, + 0.010129466, + 0.012431617, + -0.008995072, + 0.019378109, + 0.018016836, + -0.0007114982, + 0.0057420325, + 0.000746948, + 0.013285749, + 0.029067162, + 0.0017449639, + 0.001951824, + -0.6700662, + -0.04406785, + -0.027999498, + 0.0029260677, + 0.04081147, + 0.030214902, + 0.018497285, + 0.027225442, + -0.00887496, + -0.010710008, + -0.046656933, + 0.0064393505, + -0.017202742, + 0.007867352, + 0.01377287, + -0.025357028, + 0.010296288, + -0.012171374, + 0.008868287, + 0.0120979715, + 0.011851074, + 0.007827315, + -0.0036200495, + -0.0065928274, + 0.018790893, + -0.0070065474, + -0.005805425, + -0.026718302, + -0.012284813, + 0.044841904, + -0.032136697, + 0.033417895, + -0.0017699874, + -0.008534642, + 0.044735137, + -0.024836542, + -0.025637291, + 0.03445887, + -0.011704271, + 0.049165946, + 0.003446554, + -0.006559463, + -0.010449765, + -0.017376238, + -0.00474777, + 0.010463111, + 0.022541065, + -0.023061551, + -0.014266665, + -0.010663298, + 0.008914998, + -0.013892983, + -0.0017533051, + -0.011670906, + 0.007894044, + 0.010349671, + 0.014653694, + -0.0001789172, + 0.015307638, + -0.019044463, + -0.008307763, + 0.0056519485, + -0.03795547, + -0.028239723, + -0.002780932, + -0.0026441375, + -0.037848704, + -0.0026825068, + 0.015214218, + -0.018924352, + -0.007860679, + 0.014159899, + -0.000095297386, + 0.020539194, + 0.0252903, + 0.031949855, + 0.01616177, + -0.0070198933, + -0.019364763, + -0.0009900919, + 0.008307763, + -0.017603116, + -0.0030661987, + -0.008768193, + 0.02172697, + -0.03331113, + -0.02853333, + 0.00665622, + 0.008200997, + -0.024676394, + 0.01809691, + 0.010423074, + -0.0063359207, + 0.0023521981, + -0.002750904, + 0.005331649, + -0.011090363, + 0.023501962, + 0.014720422, + -0.032110006, + 0.00526492, + 0.0029010442, + 0.007867352, + -0.0027559088, + -0.02039239, + -0.001042641, + -0.01839052, + 0.02503673, + 0.010556531, + -0.016188461, + 0.008074212, + -0.025570562, + -0.012224757, + -0.020045398, + 0.009468849, + -0.018857623, + 0.011036981, + 0.01717605, + 0.022767942, + -0.0057687243, + 0.010950233, + 0.006212472, + 0.027132021, + -0.0018750855, + 0.008728156, + 0.011750981, + -0.006182444, + -0.010423074, + -0.010289615, + 0.010903522, + -0.0013429216, + -0.00019737193, + 0.004237293, + -0.007780604, + 0.0038169, + -0.030294977, + -0.004974649, + 0.0071199867, + 0.02952092, + -0.02554387, + -0.043881007, + -0.025276953, + -0.0075337067, + 0.0035599933, + -0.021620203, + -0.009415465, + 0.012872029, + 0.015240909, + -0.012565075, + 0.019938633, + 0.0068130335, + -0.021873774, + -0.03961035, + 0.019524911, + 0.0120045515, + -0.008788212, + -0.029600995, + -0.007046585, + -0.02137998, + 0.008608044, + -0.0043073585, + -0.0043073585, + -0.033551354, + -0.009135203, + 0.005611911, + -0.015494479, + -0.004220611, + 0.011777673, + -0.0011744308, + -0.02653146, + -0.015187526, + -0.013706141, + -0.013826254, + 0.012992141, + 0.009555596, + -0.0010735032, + 0.012458309, + -0.0045309006, + 0.0138529455, + 0.010850139, + 0.005184845, + -0.031042341, + -0.021620203, + -0.0060890233, + 0.027225442, + 0.009201933, + -0.0022821326, + 0.02439613, + -0.014253319, + 0.011203803, + -0.031949855, + 0.015761396, + -0.0017266135, + -0.009021764, + 0.0138529455, + -0.01730951, + -0.0013103912, + 0.0044041155, + 0.015214218, + 0.008834923, + 0.026424693, + -0.0035966944, + 0.007059931, + -0.015240909, + 0.018337136, + -0.01975179, + -0.00028776893, + -0.0042339563, + 0.024169253, + 0.029627686, + 0.002655815, + -0.025677329, + 0.0011719285, + -0.005855472, + 0.011003616, + 0.012077954, + 0.025410412, + 0.019925287, + -0.004340723, + -0.014733768, + 0.023074897, + -0.011410663, + 0.006662893, + -0.023301775, + 0.0069198, + 0.021500092, + 0.023288429, + 0.022541065, + 0.026731648, + 0.0040537883, + -0.014013095, + -0.007473651, + -0.012204738, + -0.0050180224, + 0.0084812585, + -0.013919674, + 0.0036300588, + -0.0036367318, + 0.030561892, + -0.016415339, + 0.010783411, + -0.0015197535, + 0.016535452, + -0.011497411, + 0.005695322, + -0.016121732, + 0.04745768, + 0.0112571865, + -0.0069464915, + 0.020419082, + -0.025490487, + -0.003860274, + -0.01800349, + 0.028159648, + 0.002388899, + -0.031789705, + -0.00402376, + 0.009422138, + 0.007974118, + 0.0256106, + 0.014800497, + -0.0078339875, + 0.0018350482, + 0.024062486, + -0.016455377, + -0.00021686933, + 0.018110257, + 0.026051011, + -0.007914063, + -0.034832552, + -0.02531699, + -0.020218894, + 0.003519956, + 0.009535577, + 0.0043073585, + -0.009689054, + -0.015894853, + -0.011417336, + 0.014119862, + 0.0057553784, + -0.002882694, + -0.040250946, + 0.030001368, + 0.01492061, + -0.01016283, + -0.0077405665, + -0.009388774, + 0.008868287, + -0.01673564, + 0.01965837, + 0.026357964, + 0.020699343, + -0.004304022, + -0.018857623, + -0.0133991875, + 0.0074002487, + 0.02589086, + -0.041345302, + 0.013946366, + -0.019898595, + 0.0014004754, + -0.025930898, + -0.00903511, + -0.009188587, + 0.020218894, + 0.0027342218, + 0.00001191869, + -0.01673564, + -0.013459244, + -0.008427876, + 0.022180727, + -0.02885363, + -0.0024656374, + 0.009462176, + -0.0058621448, + 0.0050847516, + -0.006205799, + -0.016108386, + 0.016708948, + -0.0024089178, + -0.015828125, + 0.009095166, + -0.022848018, + -0.005925537, + 0.10890177, + -0.0012027906, + -0.003973713, + 0.021073025, + 0.0057854066, + 0.023328466, + -0.0040904894, + -0.0011410663, + 0.006352603, + 0.008307763, + -0.022287494, + 0.003483255, + -0.0039837225, + 0.0037368254, + 0.009849204, + -0.0012711879, + -0.013479263, + -0.052876078, + 0.030108135, + -0.009555596, + -0.012304832, + 0.017296163, + 0.0029911285, + 0.02045912, + 0.007960772, + -0.012985468, + 0.01689579, + 0.008794885, + 0.031896472, + -0.009849204, + -0.000403085, + 0.002167025, + 0.014119862, + 0.013292422, + -0.01730951, + -0.008274399, + 0.036914498, + -0.0035366383, + 0.008454567, + -0.003947022, + 0.01988525, + 0.00045792793, + -0.0020435764, + -0.003947022, + -0.002173698, + -0.0062825377, + -0.015000684, + 0.024489552, + -0.036700964, + -0.019858558, + 0.01418659, + 0.00031904815, + -0.03750171, + -0.009395447, + -0.026918488, + 0.024916617, + -0.0057120044, + -0.007974118, + 0.002056922, + 0.023635421, + 0.009642344, + -0.013879637, + -0.013372497, + -0.020525848, + -0.0013304099, + -0.043747548, + 0.0009709073, + -0.013205674, + -0.018884314, + -0.01476046, + 0.0102429055, + -0.011203803, + -0.025076767, + 0.02007209, + 0.015454442, + -0.009261988, + 0.016642218, + -0.02360873, + -0.007900717, + 0.020552538, + -0.013639413, + -0.0133991875, + -0.017349547, + -0.015908198, + -0.011784346, + 0.009689054, + 0.0130255055, + 0.0038736197, + -0.017669845, + 0.017189397, + 0.038596068, + -0.011951168, + 0.006522762, + -0.0035166196, + -0.011710944, + -0.009075147, + 0.008241034, + 0.017829996, + -0.018857623, + -0.0023488617, + 0.021927157, + -0.021940503, + -0.0069398186, + 0.021126408, + -0.0017850014, + -0.0021853754, + 0.010129466, + -0.003298082, + -0.010102774, + -0.001996866, + 0.02888032, + -0.0093153715, + 0.014360086, + 0.001457195, + 0.003616713, + 0.0082076695, + 0.00006532146, + 0.023114935, + 0.00850795, + 0.010189522, + -0.0147871515, + -0.0016231835, + 0.015427751, + 0.015027376, + 0.024195943, + -0.018817585, + 0.002757577, + -0.010896849, + 0.009101839, + 0.0016657233, + 0.008234361, + 0.018377174, + -0.019858558, + -0.016708948, + -0.0015189194, + 0.0044841906, + -0.0138396, + 0.023755532, + 0.003653414, + -0.029814528, + -0.008434549, + 0.005485126, + 0.018764202, + -0.015921544, + -0.039556965, + -0.028132956, + 0.0036033674, + 0.035286307, + 0.0026674927, + 0.008174306, + 0.009322044, + 0.028773556, + -0.007607109, + -0.010022699, + -0.011070345, + -0.006032304, + -0.015227563, + -0.013419206, + 0.012331524, + 0.005501808, + 0.020565884, + 0.00030507674, + 0.010816774, + 0.0043006856, + -0.0049946676, + 0.005395042, + -0.001981852, + 0.006886435, + 0.010409728, + 0.029067162, + 0.008174306, + 0.022073962, + -0.005131462, + -0.0011961177, + -0.030108135, + 0.0061323973, + -0.0135193, + -0.015521171, + -0.021099716, + -0.030268285, + -0.0015614592, + -0.00871481, + -0.010563204, + 0.009382101, + 0.0015005689, + 0.02595759, + 0.025223572, + -0.00041726494, + 0.013692795, + -0.008267726, + 0.009769129, + -0.011504084, + -0.023341812, + 0.008654755, + 0.00018559009, + -0.005014686, + -0.020886185, + 0.008788212, + 0.0062892106, + 0.008788212, + 0.010036045, + 0.0009784143, + -0.009949298, + 0.014680386, + -0.0007957436, + 0.041211843, + -0.00928868, + -0.008354474, + 0.015667975, + -0.0346724, + -0.016014965, + -0.007653819, + 0.0065861545, + -0.04409454, + -0.020832801, + 0.013145617, + -0.010249578, + 0.02255441, + -0.017736575, + -0.019645024, + 0.01959164, + 0.016535452, + 0.025717366, + -0.015828125, + 0.023061551, + 0.0083878385, + -0.010796756, + 0.011370625, + 0.015948236, + -0.01689579, + -0.023208354, + 0.018937698, + 0.018363828, + -0.020485811, + -0.020218894, + 0.002595759, + 0.009622325, + -0.03451225, + 0.006365949, + 0.027252134, + 0.029787837, + 0.0010835126, + 0.00572535, + 0.009582288, + -0.0054817894, + 0.023929028, + -0.015788088, + -0.020525848, + -0.01666891, + -0.004577611, + -0.015107451, + 0.006833052, + -0.002046913, + 0.0031095725, + 0.020552538, + -0.009322044, + -0.011010289, + -0.019898595, + 0.010016026, + 0.0069998745, + -0.02917393, + 0.023101589, + 0.0022737915, + 0.007053258, + 0.0107033355, + 0.0034699093, + -0.008628063, + 0.0013821248, + 0.014400124, + 0.024703085, + -0.0071333325, + 0.0059989393, + 0.002167025, + -0.011644214, + 0.0122781405, + 0.009248642, + -0.0009875896, + -0.00830109, + -0.0054250695, + -0.008781539, + 0.0106165875, + 0.0048678825, + 0.011070345, + -0.012138009, + -0.03002806, + -0.014707076, + -0.007994137, + -0.015467788, + 0.00079032185, + -0.011944495, + -0.0170159, + -0.020605922, + -0.0046710316, + 0.022207418, + 0.014013095, + -0.021446709, + 0.009141876, + 0.0044474895, + -0.0107033355, + 0.006646211, + -0.01717605, + 0.010509822, + 0.0018584033, + 0.0006201629, + -0.0147871515, + -0.025757402, + 0.027999498, + -0.023982411, + -0.0018250388, + -0.029387463, + -0.01377287, + 0.023501962, + -0.002078609, + 0.019217959, + 0.025850823, + -0.017189397, + 0.008527969, + -0.03333782, + -0.014627002, + 0.0028142966, + 0.010563204, + -0.0020902867, + 0.026291234, + -0.007366884, + 0.01517418, + 0.018977735, + 0.015454442, + 0.0035633298, + -0.010716681, + -0.013906329, + -0.009789147, + -0.00836782, + 0.00007934498, + -0.0073001552, + -0.017149359, + 0.0040137507, + -0.00944883, + -0.0053516678, + 0.01924465, + -0.0072134077, + 0.0067262854, + 0.013652759, + 0.022701213, + -0.0010526504, + -0.006803024, + -0.020685997, + -0.0127452435, + -0.006752977, + -0.02379557, + -0.006065668, + -0.0152676, + 0.02519688, + 0.027412282, + -0.040678013, + -0.02338185, + 0.026891796, + -0.031576175, + 0.003166292, + -0.02214069, + 0.015361021, + 0.014453506, + -0.00045167207, + -0.00036429876, + 0.010603242, + -0.010262924, + 0.009048455, + -0.029307388, + -0.003750171, + 0.022260802, + -0.017616462, + 0.008588025, + 0.00816096, + -0.014293357, + 0.0039236667, + 0.007580417, + -0.0014705409, + 0.01492061, + -0.006676239, + 0.00314961, + 0.0003401095, + 0.00036617552, + 0.01492061, + -0.0083878385, + 0.023942374, + 0.0071533513, + -0.0349927, + 0.012291486, + 0.010783411, + -0.016588835, + 0.008354474, + 0.013425879, + 0.0014421811, + -0.02080611, + 0.00541506, + -0.02089953, + 0.014573619, + -0.0012745244, + -0.0081075765, + 0.016415339, + -0.012972122, + -0.00024001596, + 0.031389333, + 0.000569282, + -0.0065394444, + -0.022474336, + 0.010543185, + -0.012391579, + 0.0085746795, + 0.013279076, + 0.0031712968, + -0.009201933, + -0.022113997, + 0.008354474, + -0.027492357, + -0.020178856, + 0.0065561268, + -0.0019801839, + -0.021793699, + 0.02519688, + 0.0011026971, + -0.0019234641, + -0.0062224814, + -0.011003616, + 0.00190845, + -0.006722949, + -0.025770748, + -0.003373152, + -0.03878291, + -0.018030182, + 0.0060756775, + -0.01393302, + -0.00020310647, + 0.0008024165, + 0.024556281, + -0.020525848, + 0.009155222, + 0.25111467, + -0.007520361, + -0.0110770175, + 0.028293107, + -0.0070799496, + 0.029414153, + 0.03387165, + -0.013158963, + -0.0097024, + 0.019831866, + -0.015107451, + -0.0027275488, + 0.01409317, + -0.0038402553, + 0.0082944175, + -0.011097036, + -0.019364763, + -0.04062463, + -0.0030862174, + -0.009375428, + 0.034378793, + -0.008914998, + -0.0014580291, + -0.0066495473, + 0.0050680693, + 0.013973057, + -0.0041238535, + 0.008434549, + 0.020152165, + 0.023261737, + 0.010683317, + 0.019578295, + 0.0003943268, + 0.03331113, + 0.0043507325, + 0.0070132203, + -0.0011886107, + -0.007787277, + 0.024943309, + 0.008321109, + 0.0021136417, + -0.012144682, + -0.0077472394, + -0.0011585826, + 0.0095022125, + 0.028613405, + -0.011270532, + -0.0061857803, + -0.003194652, + 0.02262114, + -0.029707761, + -0.004017087, + 0.01682906, + 0.023021514, + 0.011250514, + 0.0014229964, + 0.009048455, + -0.020619268, + -0.01915123, + -0.010509822, + 0.0008983395, + 0.024316056, + 0.003623386, + 0.024075832, + 0.0000784066, + -0.010823447, + -0.028266415, + 0.024502898, + -0.004871219, + 0.004140536, + -0.0005375857, + -0.003446554, + -0.0011844402, + -0.029787837, + -0.029013779, + -0.0026925162, + 0.03864945, + 0.00074152625, + 0.018150294, + 0.015881507, + -0.016175115, + 0.009835858, + -0.0013862954, + 0.0008512121, + -0.006893108, + -0.040384404, + 0.0027108665, + 0.0037835357, + 0.016281882, + -0.004387433, + 0.0052315556, + -0.021433363, + -0.0017166041, + -0.0077072023, + 0.0048478637, + -0.019351417, + -0.00092920166, + 0.006395977, + 0.000065217195, + 0.0056686304, + -0.0197251, + 0.004771125, + 0.0048512, + -0.022354223, + -0.01285201, + 0.0060890233, + 0.010556531, + 0.013679449, + 0.013138944, + -0.011710944, + -0.016014965, + -0.01682906, + 0.0060022757, + -0.010496476, + 0.00040663, + -0.0013270734, + -0.025930898, + -0.016975863, + 0.03267053, + -0.033898342, + 0.012158028, + -0.025010038, + -0.0071533513, + 0.0053516678, + -0.018457249, + 0.002078609, + -0.016081695, + 0.00060598296, + 0.009268661, + -0.031816397, + 0.030401744, + -0.016175115, + 0.014400124, + 0.0045142183, + -0.015881507, + 0.007320174, + 0.003947022, + -0.0033247736, + -0.0014446834, + -0.02137998, + 0.009969316, + -0.0074002487, + 0.008094231, + 0.00402376, + -0.0145068895, + -0.019231305, + 0.0069264728, + 0.017963452, + -0.013205674, + 0.0132990945, + -0.022380915, + -0.013158963, + 0.0022654503, + -0.016748985, + 0.015761396, + 0.00092836755, + 0.00026274554, + -0.008374493, + 0.011270532, + 0.027332207, + -0.015601246, + 0.0141332075, + 0.011744308, + -0.00578207, + -0.02188712, + -0.015734704, + -0.17306839, + 0.032910753, + 0.010896849, + -0.01632192, + 0.015187526, + 0.013499281, + 0.011824383, + -0.021633549, + 0.012358215, + 0.009328717, + 0.025263608, + 0.031202491, + -0.018777547, + -0.014733768, + 0.01151743, + -0.012358215, + -0.0040137507, + 0.0055451817, + 0.030161519, + 0.010489803, + 0.02166024, + -0.02057923, + 0.0009500545, + 0.0071600243, + -0.029814528, + 0.033925034, + 0.011183784, + 0.025877515, + -0.016855752, + -0.009015091, + -0.02751905, + -0.026344618, + 0.0120912995, + 0.032056622, + -0.0010001012, + 0.008601371, + 0.00053299806, + -0.024102524, + -0.012658495, + 0.022567756, + 0.003750171, + 0.020138819, + 0.00028568364, + -0.008654755, + 0.014653694, + 0.017629808, + 0.0013787885, + 0.0023021514, + -0.011791019, + -0.017789958, + 0.0256106, + -0.013919674, + 0.020298969, + 0.0006706267, + 0.0032380258, + 0.020032052, + 0.0141332075, + -0.0009216946, + 0.015948236, + -0.0214734, + -0.019551603, + -0.008601371, + 0.018403865, + -0.016415339, + -0.020672651, + 0.0063792947, + -0.016522106, + -0.0026257872, + -0.043267097, + 0.026998563, + -0.010029372, + -0.013225692, + 0.0026357963, + -0.012978795, + 0.0013103912, + -0.019338071, + -0.00022375076, + 0.030161519, + 0.0041805734, + -0.017629808, + -0.018684126, + 0.025490487, + -0.018363828, + -0.018564014, + 0.0025006703, + -0.008120922, + 0.0034231988, + 0.022954784, + -0.007053258, + -0.021913812, + 0.027572433, + -0.025410412, + 0.007954099, + -0.010756719, + 0.026264545, + 0.006576145, + -0.0031846426, + 0.021967195, + -0.004017087, + -0.010583223, + -0.00066520495, + -0.011550794, + -0.014280011, + 0.012838664, + 0.026704956, + -0.0019551604, + 0.008227688, + 0.0010217882, + 0.012298159, + -0.005361677, + -0.028426563, + 0.00093587453, + 0.015227563, + 0.021046335, + -0.026224507, + -0.00464434, + 0.016188461, + 0.0017583098, + 0.019578295, + -0.023341812, + 0.05207533, + -0.008314436, + 0.016628873, + 0.009775802, + 0.00029152242, + -0.01616177, + -0.06897112, + -0.021713624, + 0.002854334, + 0.005641939, + -0.011684252, + 0.029013779, + 0.007954099, + 0.01867078, + 0.008441222, + 0.02681172, + -0.0026891797, + -0.024489552, + -0.0020902867, + -0.0011427345, + 0.026838413, + -0.001641534, + 0.011010289, + -0.02853333, + 0.0060990327, + 0.026931833, + -0.000014557875, + -0.0046543493, + 0.008868287, + -0.011604177, + -0.015054068, + -0.0009208605, + -0.02554387, + 0.022420952, + 0.022848018, + 0.0031112407, + 0.001441347, + -0.0032430305, + 0.0025540534, + -0.028319798, + 0.0074002487, + 0.019271342, + -0.038729526, + -0.0016440363, + 0.020258931, + -0.024449514, + -0.0020102118, + -0.011584158, + 0.017216088, + -0.02137998, + -0.010196195, + 0.005962238, + -0.01800349, + -0.009622325, + 0.01593489, + -0.025637291, + -0.026357964, + -0.023195008, + 0.00068063603, + 0.01022956, + 0.008521296, + -0.017456312, + -0.018483939, + 0.0012545056, + -0.009635671, + -0.003166292, + 0.014560273, + 0.010850139, + -0.013879637, + 0.011303897, + 0.022594448, + 0.0028960395, + -0.021206483, + -0.02710533, + 0.009528904, + -0.0049713124, + 0.0068597435, + 0.010963579, + -0.007473651, + 0.0005559362, + -0.009008418, + -0.03680773, + -0.01800349, + -0.01119713, + 0.012725225, + -0.016775677, + 0.0028293105, + -0.03477917, + -0.0007181711, + -0.0019551604, + 0.025156843, + 0.015294292, + -0.0060623316, + 0.010302961, + -0.0016673915, + -0.034058493, + -0.006065668, + 0.036220513, + 0.008541315, + -0.03186978, + -0.014693731, + 0.032296848, + 0.0152676, + -0.014933956, + 0.005805425, + 0.014480198, + 0.00052590814, + -0.01816364, + -0.08295752, + 0.012698533, + 0.010356344, + -0.0037001243, + 0.014693731, + -0.0086681, + 0.015601246, + -0.018817585, + -0.0021837072, + -0.0061757714, + -0.017950106, + -0.00036054527, + -0.0054050507, + 0.0076938565, + -0.028960396, + -0.018523976, + 0.025050076, + -0.0014563609, + 0.015120797, + 0.012618458, + 0.0058821635, + 0.00526492, + 0.033097595, + -0.001323737, + -0.009755783, + 0.008354474, + -0.014266665, + 0.031202491, + -0.021193137, + -0.007867352, + -0.00056761375, + -0.029067162, + -0.013639413, + 0.016348612, + -0.0053082937, + -0.01896439, + -0.01068999, + 0.0024222636, + 0.0003165458, + 0.02602432, + -0.017029246, + -0.009615652, + 0.029654378, + -0.01476046, + -0.010082755, + 0.0061390703, + -0.0007736396, + -0.004941284, + 0.01616177, + 0.016762331, + -0.00049963355, + 0.01717605, + 0.015347675, + -0.0141332075, + 0.017042592, + -0.054504268, + 0.009055128, + 0.010649952, + -0.018203678, + 0.013178982, + 0.019645024, + 0.010790084, + 0.0025173523, + 0.011984533, + -0.0012294822, + -0.0143200485, + -0.0038502647, + -0.0014229964, + 0.007053258, + -0.02968107, + -0.04118515, + 0.014360086, + 0.015067413, + 0.020152165, + 0.020138819, + 0.0033531333, + 0.009842531, + -0.024409477, + -0.030081443, + 0.03248369, + -0.0012670173, + 0.0070866225, + -0.026785031, + 0.019137884, + 0.004814499, + -0.007046585, + -0.014907264, + -0.006913127, + -0.0058855, + 0.032777295, + -0.0077005294, + 0.0027792638, + 0.01581478, + 0.0042339563, + 0.023008168, + -0.002046913, + -0.008721483, + -0.027625816, + 0.025917552, + 0.01823037, + 0.016642218, + -0.0007899048, + -0.002382226, + -0.024649702, + -0.0068664164, + 0.00015358102, + -0.03931674, + -0.0052849385, + 0.01533433, + 0.0031079042, + 0.013352478, + 0.019965325, + -0.0037835357, + 0.03400511, + 0.008868287, + -0.0012895383, + -0.011343934, + -0.037741937, + -0.020685997, + 0.028907012, + 0.023275083, + 0.007653819, + 0.021913812, + -0.006676239, + -0.006906454, + 0.0069264728, + 0.008120922, + -0.017002555, + -0.00598893, + -0.007813969, + 0.013332459, + -0.0058888365, + -0.02738559, + 0.004200592, + -0.00804752, + -0.023848953, + 0.00183338, + 0.005975584, + -0.012444963, + 0.03632728, + 0.016989209, + 0.023421887, + -0.0036467412, + 0.0042172745, + 0.02039239, + 0.008060866, + 0.013652759, + -0.016855752, + -0.015921544, + 0.00862139, + -0.002714203, + -0.000095245254, + -0.01119713, + -0.020312315, + -0.011630869, + 0.006072341, + 0.024129216, + -0.012885374, + -0.0032380258, + 0.042679884, + 0.025076767, + 0.014773806, + 0.0105164945, + -0.006786342, + -0.008694792, + 0.023208354, + 0.0077605853, + 0.0095022125, + -0.008881633, + 0.022594448, + 0.012938757, + -0.017296163, + -0.008834923, + 0.014533581, + -0.010676644, + 0.0013871295, + -0.009942625, + 0.012771935, + 0.012605113, + -0.014853881, + 0.0077472394, + -0.016108386, + -0.040838163, + 0.0040270966, + 0.0019551604, + -0.0047677886, + 0.0013337464, + -0.013759525 + ] + }, + { + "object": "embedding", + "index": 3, + "embedding": [ + -0.0010213737, + 0.008644082, + 0.0023587057, + 0.009380755, + -0.0029162795, + 0.0086643575, + -0.018856129, + 0.0043659713, + -0.0068497085, + -0.04287573, + -0.0075086593, + -0.010408043, + 0.021775788, + -0.019937484, + -0.0062008956, + -0.013003294, + 0.023168033, + -0.006413787, + 0.010455352, + -0.025371293, + -0.013476388, + 0.023438372, + -0.016044606, + -0.009150967, + 0.0061704824, + 0.005903523, + 0.007907409, + -0.021383796, + 0.013523697, + -0.0016980654, + 0.0190724, + -0.0030886205, + 0.0021998817, + -0.004203768, + 0.0023468784, + -0.013625074, + -0.015490412, + -0.005937315, + -0.0011193715, + -0.011164991, + 0.02591197, + -0.02397905, + -0.010833826, + -0.008637324, + -0.0030210358, + 0.0026172171, + -0.016977275, + 0.017409816, + -0.024695447, + 0.010536454, + 0.0074951425, + 0.0034941286, + -0.03752302, + -0.012422066, + -0.019829348, + -0.00043676607, + -0.028196333, + 0.0045011407, + -0.006494889, + -0.014706429, + 0.011678635, + 0.000102855454, + -0.0281693, + 0.016409563, + -0.0037779843, + 0.00011837881, + -0.008157472, + 0.011901665, + -0.04260539, + -0.021140492, + 0.022843625, + 0.01858579, + -0.011219059, + -0.021478415, + 0.018639859, + -0.006626679, + -0.024560276, + 0.007522176, + 0.00737349, + 0.0059001436, + 0.016842104, + -0.018639859, + 0.01726113, + 0.004882994, + 0.024695447, + 0.0069071557, + -0.010921686, + 0.022613838, + 0.008191264, + -0.026425615, + 0.03173777, + 0.0031545155, + 0.011746219, + -0.0048221676, + -0.03033201, + -0.011556982, + -0.015517445, + 0.019194052, + -0.0077722394, + -0.010556729, + -0.01770719, + 0.011151474, + -0.004264594, + -0.015612064, + -0.016788037, + 0.00671116, + 0.008704908, + 0.0002832221, + 0.010293148, + 0.005704148, + 0.0093537215, + 0.024763031, + -0.016450115, + -0.052526824, + -0.02185689, + -0.016869139, + 0.03522514, + 0.0117259445, + -0.013260117, + -0.03381938, + 0.0075356932, + 0.036144294, + -0.007893892, + -0.0050046463, + 0.031818874, + 0.012307173, + -0.0087387, + -0.01046211, + -0.004720791, + -0.012090902, + 0.005271606, + 0.014760497, + 0.010867618, + 0.020762017, + -0.009664611, + 0.024735996, + -0.022938244, + 0.022897694, + -0.034278955, + -0.018707443, + 0.02203261, + 0.019045366, + -0.025155023, + 0.011935457, + 0.010313424, + 0.02662837, + 0.024465658, + 0.022438118, + 0.00737349, + 0.0055216695, + 0.018072147, + -0.016612317, + 0.020032102, + -0.014314438, + 0.0032085832, + 0.016990792, + 0.026141759, + 0.018964265, + -0.005197263, + 0.003558334, + 0.003761088, + 0.009286136, + 0.015598547, + -0.008927938, + -0.011219059, + 0.019613078, + 0.006728056, + 0.013834586, + 0.0060150377, + -0.021613585, + -0.013226325, + 0.020964772, + -0.0014032272, + 0.009772747, + 0.008252091, + 0.010313424, + 0.03222438, + 0.01761257, + -0.021208076, + 0.0067922617, + -0.0031359298, + -0.0132466, + 0.006227929, + 0.008434569, + -0.013239841, + -0.002096815, + 0.009941708, + 0.008015544, + 0.006643575, + 0.002061333, + 0.008488637, + 0.0397398, + 0.018031595, + 0.0026510095, + -0.67217034, + -0.051850975, + 0.0032254795, + 0.0016161189, + 0.020910705, + 0.0067719864, + 0.0150713865, + 0.006079243, + -0.0040415647, + -0.001850131, + -0.0314404, + 0.0071504605, + -0.007988511, + -0.0019126468, + -0.0027067668, + -0.0028317985, + -0.0006935879, + -0.012030075, + 0.014976768, + 0.012178762, + -0.006379995, + 0.0045856214, + -0.005704148, + 0.0048593394, + 0.021154009, + -0.015341725, + -0.0040753568, + -0.019275155, + -0.008718425, + 0.032602854, + -0.031007856, + 0.0381448, + 0.009475374, + 0.005268227, + 0.047011912, + -0.009948467, + -0.022776041, + 0.026236378, + 0.011279885, + 0.03425192, + -0.022654388, + -0.016585283, + 0.0058021457, + -0.025046887, + -0.011928698, + 0.012070626, + 0.017855875, + -0.04498437, + -0.0045450707, + -0.018991299, + 0.020248374, + -0.013219566, + -0.011894906, + -0.01942384, + 0.004626172, + 0.0143279545, + 0.02207316, + -0.014963251, + 0.006809158, + -0.00710991, + -0.021559516, + -0.0066570924, + -0.029548027, + -0.02287066, + -0.014638844, + -0.0017403058, + -0.029277688, + -0.0031883079, + 0.006278618, + -0.008427811, + 0.010259356, + 0.023789812, + -0.013571006, + 0.010293148, + 0.019923966, + 0.017274648, + 0.008988764, + 0.0015966883, + -0.007974993, + -0.01695024, + -0.007332939, + -0.003612402, + -0.0157202, + 0.0077114133, + 0.028764045, + -0.035684716, + -0.020910705, + 0.005548703, + 0.023032863, + -0.027790826, + 0.005656839, + 0.012253105, + -0.005224297, + 0.018004563, + -0.008157472, + 0.0095835095, + 0.0065861284, + -0.00096223707, + 0.014652361, + -0.011847597, + -0.017761257, + -0.011104165, + 0.0052918815, + -0.015544479, + -0.024965785, + -0.0029754161, + -0.0053662243, + 0.0087387, + 0.025939004, + -0.012895159, + 0.007718172, + -0.011577258, + -0.030223874, + -0.008725184, + 0.0097254375, + -0.027980063, + 0.017936977, + 0.0012925572, + 0.016531216, + 0.003686745, + 0.0035110246, + -0.0069747404, + 0.031467434, + 0.0033268565, + 0.00020835093, + 0.014598293, + -0.0020495057, + -0.014963251, + -0.010773, + 0.00238405, + 0.00037657344, + 0.002578356, + -0.006565853, + -0.008535947, + 0.026587818, + -0.017639605, + -0.018788544, + -0.0031646532, + 0.030602349, + -0.042443186, + -0.041037425, + -0.0081507135, + 0.004230802, + 0.0074072825, + 0.0111244405, + -0.023816846, + -0.022127228, + 0.02697981, + -0.0029720368, + 0.032467686, + 0.002101884, + -0.0038523274, + -0.037712257, + 0.022329982, + -0.0035346793, + -0.0032660302, + -0.022248881, + -0.011164991, + 0.0025749768, + 0.012624821, + 0.012205795, + 0.010326941, + -0.040577848, + 0.0012410239, + 0.008840078, + -0.015206556, + 0.014152234, + 0.014963251, + 0.002318155, + -0.018423587, + -0.003717158, + -0.005788629, + -0.009651094, + 0.015422827, + 0.015084904, + -0.01125961, + 0.009995776, + -0.0045247953, + -0.0035786096, + 0.006839571, + 0.0065489565, + -0.023965532, + -0.012983019, + 0.006545577, + 0.026371546, + -0.007055842, + 0.0077114133, + 0.014179269, + -0.0062448257, + 0.002874039, + -0.027358284, + 0.02437104, + -0.0007628622, + 0.0025935625, + 0.015949987, + -0.023384303, + 0.005359466, + 0.0055824956, + -0.0035313002, + 0.023478922, + 0.021924473, + -0.010739207, + 0.010489144, + -0.009319929, + 0.0051905042, + -0.02193799, + -0.0058021457, + -0.007359973, + 0.02176227, + 0.0281693, + 0.020342993, + -0.025966039, + -0.010658106, + 0.0064475797, + 0.022478668, + 0.03738785, + 0.015652616, + 0.009394272, + -0.005592633, + -0.002441497, + 0.0030869308, + -0.030304976, + 0.015220073, + -0.018558756, + -0.003541438, + 0.0019278533, + 0.006177241, + 0.038334038, + 0.015449861, + -0.0040145307, + -0.022059644, + -0.011333953, + -0.0077992734, + 0.008988764, + 0.012895159, + -0.019910451, + 0.0059542116, + -0.013787277, + 0.035792854, + 0.007927684, + 0.0147875305, + -0.0036968826, + 0.03676607, + -0.010705415, + -0.0039706007, + -0.009401031, + 0.040172342, + 0.015179521, + -0.0058798683, + 0.018328968, + -0.025438879, + -0.015990539, + -0.017964011, + 0.0067652278, + 0.014341472, + -0.035522513, + 0.009319929, + 0.0031714116, + 0.019369774, + 0.04211878, + 0.02397905, + -0.0010357354, + 0.0062718596, + 0.009968742, + 0.008137197, + -0.00023802483, + 0.032467686, + 0.0049776128, + -0.008143956, + -0.0061130356, + -0.02022134, + -0.0086643575, + -0.01593647, + -0.014706429, + -0.004095632, + -0.012604545, + -0.0014632086, + -0.018639859, + 0.026141759, + 0.0043423166, + -0.008731943, + -0.037279718, + 0.027561037, + -0.009529442, + -0.0007624398, + -0.013064121, + -0.009745712, + -0.009455099, + -0.026141759, + 0.021356763, + 0.009211794, + 0.016260877, + -0.008285883, + 0.00073878514, + -0.009042832, + 0.007130185, + 0.019315705, + -0.037144545, + -0.016923208, + -0.019234603, + 0.016801555, + -0.022708457, + 0.0029382445, + -0.0014311059, + 0.012435583, + -0.006596266, + 0.01774774, + -0.025709217, + -0.012834333, + 0.000044669257, + 0.022911211, + -0.012124694, + -0.0027135254, + 0.009482132, + 0.011252851, + 0.0013778829, + -0.00489989, + 0.0038219143, + 0.012401791, + -0.013908929, + -0.0052479515, + -0.021505449, + -0.024046633, + -0.00043148603, + 0.084778234, + -0.0034180959, + 0.00657937, + 0.002101884, + 0.011043339, + 0.008995523, + -0.004305145, + 0.0067517105, + 0.0062448257, + 0.016409563, + -0.011502914, + -0.018991299, + 0.012023317, + 0.001227507, + 0.0063833743, + -0.012124694, + -0.013537214, + -0.019194052, + 0.026033623, + -0.0063056517, + 0.00865084, + 0.012340965, + -0.001894061, + 0.018518206, + -0.0064002704, + -0.004115908, + 0.013097913, + 0.010049844, + 0.0013128327, + -0.025411844, + 0.012793782, + 0.0005677114, + -0.015409309, + -0.0016718763, + -0.020113204, + -0.0016271014, + 0.018085664, + 0.020586297, + -0.008157472, + -0.012199037, + 0.010212047, + 0.0063124103, + 0.0051195403, + -0.005082369, + -0.0018687168, + -0.0077384473, + 0.0021255387, + 0.012489651, + -0.027304215, + 0.004798513, + 0.03541438, + -0.0046025175, + -0.037279718, + -0.014909183, + -0.00094618567, + 0.01333446, + -0.012003041, + -0.0038557067, + 0.0017943736, + 0.014841598, + -0.00017962744, + -0.021559516, + 0.01457126, + -0.009421306, + -0.03400862, + -0.044524796, + -0.0015468446, + -0.014855116, + -0.03827997, + -0.021248627, + 0.016004056, + -0.013179015, + -0.029602095, + 0.009752471, + 0.017369267, + -0.004538312, + 0.026168793, + -0.010056602, + -0.0101850135, + 0.02662837, + -0.01607164, + -0.03417082, + -0.02392498, + -0.027817858, + 0.00040402974, + 0.009968742, + 0.020559262, + -0.017098928, + 0.002115401, + -0.016720453, + 0.040415645, + -0.011827321, + 0.014733463, + 0.0009689955, + -0.014368505, + -0.020829601, + 0.013239841, + 0.020599814, + -0.02949396, + -0.004896511, + 0.013354735, + -0.021708203, + 0.0019041987, + -0.013800794, + -0.0059069023, + 0.007846583, + 0.01690969, + 0.000936048, + -0.0072923885, + 0.00485596, + 0.029034384, + -0.036495734, + 0.00984709, + 0.013030329, + -0.020424094, + 0.03354904, + 0.013990032, + 0.0348737, + 0.007691138, + -0.00083382614, + 0.008421052, + -0.011002788, + 0.022154262, + 0.015963504, + 0.00047478246, + 0.006802399, + -0.0013381769, + -0.00034827236, + 0.006423925, + -0.0026594577, + -0.011131199, + 0.013388528, + -0.019491425, + -0.022235364, + -0.022194812, + -0.0075694853, + -0.0083805015, + 0.010563487, + 0.0037847427, + -0.03611726, + -0.01461181, + -0.016004056, + 0.011543466, + -0.008576497, + -0.020464644, + -0.016896173, + 0.006140069, + 0.015868885, + -0.0076505872, + 0.01377376, + 0.02012672, + 0.024398074, + -0.01426037, + -0.0075289346, + -0.024492692, + -0.030304976, + -0.021018839, + -0.030791586, + 0.002321534, + 0.017869392, + 0.034900736, + 0.0057751117, + -0.0041902508, + -0.01642308, + -0.0014648982, + 0.011151474, + -0.014733463, + 0.02397905, + -0.006298893, + 0.0135304555, + 0.027871927, + 0.018991299, + -0.015517445, + -0.004967475, + -0.037063446, + 0.028250402, + 0.0006534595, + -0.011408296, + -0.0067483317, + -0.03346794, + -0.0020106446, + -0.0037374336, + -0.015125454, + 0.008583256, + -0.0038962576, + -0.00024013685, + 0.021600068, + -0.004291628, + 0.015747232, + -0.013935964, + 0.020059137, + -0.009198276, + -0.0097254375, + -0.010252598, + 0.0026391821, + 0.0025935625, + -0.026817605, + 0.0026459408, + 0.01337501, + -0.001041649, + 0.024425108, + -0.0143279545, + -0.005612909, + -0.01037425, + 0.006386753, + 0.028412605, + -0.009421306, + -0.013706176, + 0.00036094448, + -0.027817858, + -0.037333783, + -0.006292135, + 0.0106107965, + -0.01284785, + -0.014017065, + 0.0043997634, + -0.0048863734, + 0.018315451, + -0.011604291, + -0.0026915604, + 0.026344514, + -0.004176734, + 0.021748753, + -0.016801555, + 0.015963504, + 0.0100092925, + -0.014733463, + -0.0010450283, + -0.00079707697, + -0.016152741, + -0.018883163, + 0.009637577, + 0.019491425, + -0.011469122, + -0.02675002, + -0.0045856214, + 0.009002281, + -0.014422573, + -0.0040246686, + 0.04322717, + 0.019085918, + -0.0059846244, + -0.015287657, + 0.0037982597, + -0.010725691, + 0.020897187, + -0.0024347384, + -0.009914674, + -0.0074951425, + -0.013949481, + 0.0018822337, + -0.0016144293, + -0.009157726, + 0.013746726, + 0.018612824, + -0.015017319, + 0.005646701, + -0.014165752, + 0.018815579, + 0.0039266706, + -0.012949227, + 0.016058123, + 0.010401284, + 0.0079209255, + 0.020194305, + 0.018247867, + -0.0013145222, + 0.016531216, + 0.008306159, + 0.029710231, + -0.013537214, + -0.019045366, + -0.001580637, + 0.0036326773, + 0.015436344, + -0.005822421, + 0.004578863, + 0.0014370196, + -0.03757709, + -0.0011261299, + 0.015476895, + 0.0034518882, + 0.004420039, + 0.0047444454, + -0.024479175, + -0.022965278, + 0.0041091493, + 0.00016452649, + -0.01006336, + -0.0015400861, + -0.0075019007, + -0.007434316, + -0.004825547, + 0.019045366, + -0.01205035, + -0.014706429, + 0.021546, + 0.016693419, + -0.008495396, + 0.000274774, + 0.009630819, + 0.0057818703, + -0.0016085156, + 0.0047714794, + -0.014138717, + -0.006238067, + 0.014246853, + -0.009542959, + 0.00042916278, + -0.020464644, + 0.005400017, + 0.043416407, + 0.025817353, + 0.013456112, + 0.025749767, + -0.030169807, + -0.0017960632, + -0.030791586, + -0.026087692, + 0.018288417, + 0.024884684, + 0.02666892, + 0.004626172, + -0.016301427, + 0.021126974, + 0.02339782, + -0.019477908, + -0.006940948, + -0.022221847, + -0.04182141, + -0.01108389, + 0.0039942553, + -0.01841007, + -0.024384556, + -0.018802062, + -0.0140981665, + -0.005136437, + 0.007630312, + 0.00067120045, + 0.0045315535, + 0.0056872517, + 0.022681423, + -0.00035650926, + 0.010577004, + -0.031197093, + -0.0070085325, + 0.0064171664, + -0.019545494, + -0.036090225, + -0.019207569, + -0.016517699, + 0.014679395, + -0.0015721889, + -0.020694433, + -0.016450115, + 0.013618316, + -0.034143787, + -0.0062177917, + -0.027142012, + 0.01258427, + 0.019761764, + 0.0005677114, + 0.010955479, + -0.0077722394, + -0.008704908, + 0.011685393, + -0.01443609, + 0.0073802485, + 0.012151727, + -0.023641124, + 0.0256957, + 0.019180536, + -0.021464897, + -0.008258849, + 0.012523443, + 0.005704148, + -0.0072721126, + -0.007420799, + -0.01103658, + 0.00084692065, + 0.009820056, + -0.013091154, + -0.008745459, + 0.022667905, + 0.017950494, + -0.045633186, + 0.0010264425, + -0.0039773593, + -0.006940948, + -0.0042882487, + -0.01258427, + 0.009907916, + 0.005815663, + 0.010806792, + -0.02710146, + -0.0134425955, + -0.0033674072, + -0.010766242, + 0.013037087, + 0.0039874967, + 0.004220664, + 0.009617302, + 0.0071369433, + -0.0021508827, + -0.0138143115, + -0.002586804, + -0.030899722, + -0.01108389, + 0.012077385, + -0.00856298, + -0.012509926, + -0.014246853, + 0.010340458, + -0.037982598, + -0.015355242, + 0.0033606489, + -0.0014370196, + -0.035117008, + 0.020802569, + 0.013037087, + -0.023330236, + -0.0050012674, + 0.0038388106, + -0.009455099, + -0.0063056517, + -0.021478415, + 0.008968488, + -0.03133226, + -0.010441835, + -0.0039976346, + 0.0031156542, + -0.024087185, + -0.00856298, + -0.0029720368, + -0.011185266, + -0.013449354, + 0.21756864, + -0.00763707, + -0.0062887557, + 0.021708203, + -0.014909183, + 0.035171073, + 0.028601842, + -0.00057911634, + -0.0031122752, + 0.0024431867, + -0.015341725, + -0.011320436, + 0.007359973, + -0.0031511362, + 0.0016693419, + -0.03576582, + -0.022911211, + -0.027898962, + -0.028574808, + -0.02057278, + 0.032062177, + -0.009441582, + 0.014517192, + -0.007745206, + 0.026506716, + 0.0058697304, + -0.018018078, + 0.015963504, + 0.02039706, + 0.025601082, + 0.017517952, + 0.014517192, + -0.0041699754, + 0.015625581, + -0.0023722227, + 0.012854609, + 0.0024617724, + -0.0026037002, + 0.024776548, + 0.014814565, + 0.009178001, + -0.019045366, + -0.021140492, + -0.0015882403, + -0.017842358, + 0.018747993, + -0.009279378, + 0.0015890851, + -0.0298454, + 0.025790319, + -0.038712513, + -0.0055655995, + 0.020315958, + 0.031467434, + 0.014287404, + -0.00543043, + 0.020099688, + -0.009015798, + -0.0016668075, + -0.002608769, + -0.014354989, + 0.026479682, + -0.012550477, + 0.037766326, + -0.007170736, + -0.00026062346, + -0.014409056, + -0.0023384304, + 0.011685393, + -0.002529357, + 0.027479935, + 0.0027287318, + -0.00018659711, + -0.034143787, + -0.021532483, + -0.021518966, + 0.04206471, + 0.024289938, + 0.016747486, + 0.01682859, + 0.003832052, + 0.004737687, + 0.006940948, + 0.015368759, + -0.013577765, + -0.014314438, + -0.008225057, + 0.00068767427, + 0.01002281, + -0.015571513, + 0.011759737, + -0.005285123, + -0.0027912478, + -0.015787784, + 0.00012355327, + 0.010347216, + 0.0007434316, + 0.007954719, + -0.006467855, + 0.015044352, + -0.025574047, + 0.0073261806, + 0.005893385, + -0.0051330575, + -0.006961223, + 0.004071978, + -0.0019836107, + 0.0030092085, + -0.006900397, + 0.0013770381, + -0.0077384473, + -0.010928445, + -0.00042219312, + -0.0039976346, + 0.00008706809, + -0.005974487, + -0.005589254, + -0.020478161, + 0.024492692, + -0.033873446, + 0.020586297, + -0.014706429, + -0.014652361, + 0.014409056, + -0.014503675, + -0.015463377, + -0.006481372, + -0.019045366, + -0.018612824, + -0.036847174, + 0.026722988, + -0.025628116, + 0.020613331, + -0.0030058292, + 0.0028571428, + 0.0086643575, + -0.012604545, + 0.006025175, + -0.005014784, + -0.0082926415, + 0.010745966, + -0.012719439, + 0.02631748, + 0.005427051, + -0.001880544, + 0.003448509, + 0.018139731, + 0.015260624, + -0.010712174, + 0.015449861, + -0.0066030244, + -0.025925487, + -0.0037272957, + 0.015882403, + 0.023289684, + 0.00018469628, + -0.013483146, + -0.021708203, + 0.010299907, + 0.019139985, + -0.033062432, + -0.013800794, + 0.04790403, + 0.0032085832, + -0.019450875, + -0.014300921, + -0.1757202, + 0.015030836, + 0.024722481, + -0.026966292, + 0.025925487, + 0.028764045, + 0.00441328, + -0.017112443, + -0.0037779843, + 0.008394019, + 0.03452226, + 0.017896427, + -0.01695024, + -0.008914421, + -0.0024448761, + -0.0035448172, + -0.000100849036, + 0.017017825, + 0.017044859, + 0.0065185437, + 0.025803836, + -0.015706683, + 0.008218299, + -0.0038962576, + -0.02635803, + 0.03262989, + -0.010293148, + 0.0052378136, + 0.0043456955, + -0.0033217876, + -0.0095362, + 0.0011050097, + 0.013767002, + 0.02887218, + 0.01673397, + 0.019748246, + -0.00251584, + -0.011861114, + -0.014354989, + 0.018139731, + -0.009022556, + 0.0003429923, + 0.009860607, + -0.0033302356, + -0.011793529, + 0.018639859, + 0.0145577425, + -0.0044605895, + 0.0056061503, + -0.009637577, + 0.03284616, + -0.025668666, + 0.016666384, + 0.01854524, + 0.016166259, + 0.018626342, + 0.023168033, + 0.004582242, + 0.005143195, + -0.019329222, + -0.019045366, + 0.0078601, + 0.0034603362, + -0.005345949, + -0.017342232, + -0.02715553, + -0.009326687, + 0.021532483, + -0.016490664, + 0.008164231, + 0.0027354904, + -0.008860353, + 0.014354989, + -0.028115232, + 0.022830108, + -0.008975247, + 0.0056230463, + 0.02914252, + 0.012158486, + -0.0022133987, + -0.029061418, + 0.03395455, + -0.014449608, + -0.009117175, + 0.009428064, + 0.01337501, + 0.012753231, + 0.004132804, + -0.035468448, + -0.016544733, + 0.022329982, + -0.019194052, + 0.014530709, + -0.02697981, + -0.0038388106, + 0.01068514, + -0.017909944, + 0.03235955, + -0.014909183, + -0.0005427896, + -0.0040314267, + -0.015963504, + -0.021789305, + 0.020937737, + 0.010806792, + 0.016409563, + 0.0035617133, + 0.019937484, + 0.018247867, + -0.008576497, + -0.0068497085, + 0.0029281068, + 0.009651094, + 0.008319676, + -0.023843879, + 0.015612064, + 0.02573625, + -0.009373996, + 0.016842104, + -0.0056940103, + 0.032305483, + -0.0004671792, + 0.006927431, + 0.011185266, + -0.0074410746, + -0.028358538, + -0.07585706, + 0.0118678715, + -0.0029855538, + 0.008542705, + -0.010941962, + 0.04387598, + 0.016517699, + 0.03711751, + -0.0091239335, + 0.022897694, + -0.0053628455, + -0.009245586, + 0.00033665626, + -0.0074681086, + 0.03290023, + -0.010408043, + -0.0016921518, + -0.007346456, + -0.0029179691, + 0.022681423, + -0.0060217963, + -0.027033877, + -0.0016262566, + 0.0027321111, + -0.018396553, + 0.010421559, + -0.023735743, + 0.02962913, + 0.023127481, + 0.011665118, + -0.0046329307, + -0.007846583, + 0.020288924, + -0.025817353, + -0.039820902, + 0.0140981665, + -0.024830615, + 0.0025682184, + 0.026898708, + -0.029926501, + -0.0070220493, + 0.00010385866, + 0.00242798, + -0.007968235, + -0.015774267, + -0.005558841, + -0.014125201, + 0.01527414, + 0.0140981665, + -0.009009039, + -0.016679902, + -0.012104418, + 0.014882149, + -0.021600068, + 0.028493706, + 0.0030210358, + 0.010299907, + 0.016436597, + -0.046768606, + 0.002816592, + 0.00927262, + 0.012597786, + -0.015747232, + 0.013523697, + 0.031115992, + 0.0241007, + -0.022492185, + -0.029791333, + 0.023262652, + -0.008880628, + 0.00037087098, + 0.016341979, + -0.006106277, + -0.0062346878, + -0.01757202, + -0.021072907, + -0.016896173, + -0.011671877, + 0.016382528, + -0.018004563, + 0.0012942469, + -0.034900736, + 0.005568979, + 0.0059001436, + -0.0054676016, + 0.026939258, + 0.015368759, + -0.008238574, + 0.015517445, + -0.016666384, + -0.003585368, + 0.009907916, + 0.022478668, + -0.030413112, + -0.022140745, + 0.0314404, + 0.019613078, + 0.00095463375, + 0.010036327, + 0.0097795045, + -0.005041818, + -0.027520487, + -0.095267385, + 0.01872096, + 0.012530202, + -0.0006243136, + 0.0061434484, + -0.017544987, + 0.04038861, + -0.008556222, + 0.0122733805, + -0.011300161, + -0.057906564, + 0.006538819, + -0.013652108, + -0.014273887, + -0.024654895, + -0.027953029, + 0.03903692, + 0.012003041, + 0.006089381, + 0.0076573454, + 0.016869139, + 0.011009546, + 0.007312664, + -0.0008621272, + -0.026777055, + 0.010225564, + -0.0082994, + 0.024560276, + -0.009549717, + 0.0006733125, + -0.009029315, + -0.046173863, + 0.017680155, + 0.026303962, + -0.007332939, + -0.019491425, + -0.006873363, + 0.013449354, + 0.010779758, + 0.03682014, + -0.04509251, + 0.012111177, + 0.022248881, + -0.0052209175, + -0.004122666, + -0.01099603, + 0.019018332, + 0.008116921, + 0.026020106, + 0.009211794, + 0.0027963165, + 0.02406015, + 0.0051905042, + -0.0050350595, + -0.0035110246, + -0.03773929, + 0.023614092, + -0.009063107, + -0.004686998, + 0.007988511, + 0.014030582, + 0.004247698, + 0.01143533, + 0.012016558, + 0.025155023, + -0.011225818, + -0.014814565, + 0.0043152827, + 0.020545747, + -0.016815072, + -0.018856129, + 0.01218552, + -0.003818535, + 0.0134425955, + 0.009029315, + -0.0029940018, + 0.010766242, + -0.0063495818, + -0.028115232, + 0.021478415, + -0.00014330067, + -0.0018129593, + -0.031494465, + 0.01823435, + 0.026858157, + -0.012908677, + -0.024019599, + -0.02962913, + 0.000034927558, + 0.02269494, + -0.015220073, + 0.0045011407, + 0.010543212, + 0.010455352, + -0.005058714, + 0.013429078, + -0.010786517, + -0.019085918, + 0.03184591, + 0.02485765, + 0.0052918815, + -0.001196249, + -0.005663597, + -0.03208921, + -0.009279378, + 0.014463124, + -0.033630144, + -0.018707443, + 0.026479682, + 0.015787784, + 0.009259103, + 0.020153755, + 0.00041374503, + 0.019951, + 0.0064205457, + 0.010103911, + -0.007576244, + -0.03249472, + -0.02357354, + 0.018612824, + 0.0134425955, + 0.024438625, + 0.0031207232, + -0.014706429, + 0.0024178424, + -0.011678635, + 0.014368505, + -0.024006082, + 0.006450959, + -0.013949481, + 0.004071978, + 0.010097153, + -0.000086487285, + 0.0026374925, + -0.0042443187, + -0.0023519474, + 0.0017293233, + 0.010441835, + -0.024127735, + 0.034414124, + 0.005200642, + 0.014030582, + 0.0091239335, + -0.01509842, + 0.0265743, + -0.0047782375, + 0.008535947, + 0.004997888, + -0.04025344, + -0.0056433217, + -0.0014277266, + 0.0011117682, + -0.02843964, + -0.028277434, + -0.0074816253, + -0.011266368, + 0.019356256, + -0.005288502, + -0.013050604, + 0.038712513, + -0.00058840925, + 0.008319676, + 0.021424348, + -0.02339782, + 0.0021069527, + 0.020640366, + 0.005751457, + 0.008657599, + -0.038712513, + 0.00944834, + 0.018802062, + -0.018666891, + -0.013821069, + -0.008867112, + -0.0101512205, + -0.016652867, + -0.004247698, + -0.0066030244, + 0.01319929, + -0.009772747, + 0.020451128, + -0.024654895, + -0.0011007857, + 0.039793868, + -0.0051330575, + -0.0133006675, + 0.010570246, + -0.022586804 + ] + }, + { + "object": "embedding", + "index": 4, + "embedding": [ + 0.019221356, + 0.0036138783, + -0.007965014, + -0.0067472225, + -0.024066191, + 0.013718256, + -0.00505548, + -0.01043351, + 0.0065530343, + -0.04420912, + 0.015508738, + 0.0044893716, + 0.012171331, + -0.031412434, + -0.014574001, + -0.018997546, + 0.02109083, + -0.020788029, + -0.0024273545, + -0.024145182, + 0.0010812012, + -0.012987581, + -0.014258034, + -0.014073719, + -0.020603715, + 0.013757751, + 0.0028387704, + -0.028753042, + 0.009880567, + -0.0032534779, + 0.02904268, + -0.0067735533, + -0.009307876, + -0.030490864, + -0.008037423, + -0.019642645, + -0.035230376, + -0.00874835, + -0.020630045, + -0.028489737, + 0.009742331, + -0.017575692, + -0.0019023876, + 0.0013996373, + -0.007563472, + 0.008491627, + -0.006510247, + -0.010644155, + -0.004374175, + 0.00862328, + 0.011348499, + 0.012809849, + -0.034809086, + -0.009900315, + 0.0029523212, + 0.010736313, + -0.019274017, + -0.006329224, + -0.0033538633, + -0.011809285, + 0.0025985036, + 0.0050521884, + -0.032544654, + 0.013810413, + -0.009413199, + -0.0071750954, + -0.029569292, + -0.005197007, + -0.020235086, + -0.004663812, + 0.026054153, + 0.030543525, + -0.0048382524, + -0.030227557, + 0.010525667, + 0.0027087631, + -0.01702275, + 0.005789446, + -0.0062436494, + -0.0027169914, + 0.029937921, + -0.025567036, + 0.018233957, + 0.002512929, + 0.035572674, + 0.016956922, + -0.011282673, + 0.012842762, + -0.0035348863, + -0.015324424, + 0.018984381, + 0.012934919, + 0.0049139527, + 0.015495572, + -0.023486918, + -0.030675178, + 0.0009191034, + 0.04434077, + -0.0020291037, + -0.036020294, + -0.006832797, + 0.012625535, + 0.0066682305, + -0.0084258, + -0.008807594, + 0.02128831, + 0.01811547, + 0.0011494963, + 0.015008456, + -0.0037027441, + 0.0133759575, + 0.031149128, + -0.0011708899, + -0.04426178, + -0.018444603, + -0.019432, + 0.03243933, + -0.009465859, + -0.014429183, + -0.026804576, + 0.016127508, + 0.027673487, + 0.01209234, + -0.0064641684, + 0.023895042, + -0.005187133, + -0.014442348, + -0.0035381778, + 0.021696435, + -0.01092721, + 0.028805703, + -0.000857391, + 0.0066254437, + -0.0017197189, + -0.021577947, + 0.018273454, + -0.017615188, + -0.0025902751, + -0.0048119216, + -0.013744586, + 0.014416017, + 0.015087448, + -0.013836743, + 0.025145747, + -0.0012210828, + 0.018839562, + 0.019589985, + -0.00042129, + 0.01957682, + -0.0073989057, + 0.013468115, + -0.030464534, + 0.009860819, + 0.005628171, + 0.0079321, + -0.00002769344, + 0.021617442, + 0.028042115, + -0.002312158, + 0.014284364, + -0.004792174, + 0.003060935, + 0.0158642, + -0.024158347, + -0.0265676, + 0.009274962, + 0.018984381, + 0.00787944, + 0.0052200463, + -0.0061909882, + -0.013468115, + 0.01179612, + -0.025619699, + 0.014968961, + -0.0010984808, + 0.020156093, + -0.00038343974, + 0.0022232921, + -0.016180169, + -0.019050207, + -0.0072475043, + -0.018997546, + 0.01516644, + 0.020932848, + 0.0061547835, + -0.028621389, + 0.0019451749, + 0.009090648, + 0.008978743, + -0.014218537, + 0.013784082, + 0.04183936, + 0.014942629, + 0.014600332, + -0.6736427, + -0.040312186, + 0.000431164, + -0.013277218, + 0.028753042, + 0.015126944, + 0.022446858, + -0.0015321132, + -0.009228884, + 0.01224374, + -0.016193334, + 0.014310694, + 0.0010392369, + -0.0006257637, + 0.0054274, + -0.024053026, + 0.0031086593, + -0.0096830875, + 0.016469806, + -0.0012836179, + -0.0061909882, + 0.013290383, + -0.017430874, + 0.008307312, + 0.026620261, + -0.024105687, + 0.002277599, + -0.02446115, + -0.01273744, + 0.04162872, + -0.012941502, + 0.048658993, + 0.03451945, + -0.004943575, + 0.042787265, + -0.014863637, + -0.0048777484, + 0.03754747, + 0.022762826, + 0.05397778, + -0.005786155, + -0.012691361, + 0.006177823, + -0.009005073, + -0.0030197934, + -0.01288884, + 0.032228686, + -0.032886952, + 0.014679323, + -0.015535069, + 0.0120660085, + -0.02446115, + -0.0158642, + 0.010861383, + -0.0043215137, + 0.0062173186, + 0.019945448, + -0.011223429, + -0.0026445822, + 0.0011503191, + 0.0012432992, + 0.014955794, + -0.002351654, + -0.0156008955, + -0.0024849528, + 0.0016341445, + -0.038548034, + -0.01729922, + 0.0031432183, + -0.015679887, + 0.016588293, + 0.028147439, + -0.007517393, + 0.0014317278, + 0.011032532, + 0.027726147, + 0.009623843, + -0.008320478, + -0.008537705, + -0.02218355, + -0.003992381, + 0.018181296, + -0.0136919245, + -0.017259724, + 0.00014378989, + -0.038416382, + -0.032965943, + 0.025619699, + 0.009900315, + -0.0071750954, + 0.018971216, + 0.014613497, + 0.0022035441, + 0.022565346, + -0.0030428327, + 0.0129809985, + -0.003179423, + 0.004854709, + 0.0069578676, + -0.03157042, + -0.010229448, + -0.0031942339, + -0.005940847, + -0.011453822, + 0.0127440225, + -0.014613497, + -0.030490864, + -0.0042392304, + 0.038442712, + -0.014889969, + 0.028963687, + -0.010604659, + -0.023855546, + -0.0016423727, + 0.013639264, + -0.02047206, + 0.02572502, + -0.010630989, + 0.03451945, + -0.019668976, + 0.013277218, + 0.0069578676, + 0.0246323, + 0.0053319517, + -0.0029572584, + 0.014982126, + 0.0022232921, + -0.00054841756, + -0.0065267035, + -0.012987581, + 0.00051015586, + 0.018233957, + -0.016733112, + -0.012711109, + 0.012474134, + -0.0064115073, + 0.0027350937, + 0.0014638181, + 0.023565909, + -0.013106069, + -0.048237704, + -0.020985508, + -0.006230484, + 0.0039594676, + -0.0100451335, + -0.021920245, + -0.0016917427, + 0.0023993782, + -0.010703399, + 0.008438965, + -0.004344553, + -0.0032370212, + -0.013560272, + 0.013955231, + -0.016680451, + -0.0035546343, + 0.011677632, + -0.009847654, + -0.020564217, + 0.00579932, + 0.009873984, + 0.014468678, + -0.030701509, + -0.00308562, + 0.003531595, + -0.010005637, + 0.005644628, + 0.003531595, + 0.02215722, + -0.015653556, + -0.023631737, + -0.027647156, + -0.017154401, + 0.02954296, + -0.0027844636, + -0.008735185, + 0.005206881, + -0.0034460204, + 0.016746277, + -0.0069578676, + -0.0033193044, + -0.0032567692, + -0.03615195, + 0.009873984, + 0.027594496, + -0.012869093, + 0.013836743, + 0.014982126, + -0.004713182, + 0.0073594097, + -0.017694179, + 0.0340455, + 0.01095354, + 0.0028683925, + 0.010933792, + -0.013744586, + 0.017351883, + 0.011901442, + -0.0020373322, + 0.01980063, + 0.022065064, + -0.0078070303, + 0.006520121, + -0.033360902, + 0.026027823, + -0.022012403, + 0.0010589848, + -0.008195407, + 0.009821323, + -0.009834488, + 0.0116249705, + -0.012632118, + -0.01452134, + -0.0033176588, + -0.005197007, + 0.02091968, + 0.0053286604, + 0.009992472, + 0.0051015588, + 0.009511938, + 0.01918186, + -0.029569292, + 0.018892223, + -0.022828652, + -0.004433419, + -0.0027449676, + 0.014402851, + 0.029727275, + 0.0025688815, + 0.0005064531, + -0.036494248, + -0.01578521, + -0.006990781, + -0.002958904, + 0.0004784768, + -0.011434074, + 0.0011700671, + -0.023500083, + 0.01727289, + 0.004453167, + 0.02322361, + -0.0053681564, + 0.019458331, + -0.0119936, + 0.009103813, + -0.01107861, + 0.035651665, + -0.00025980923, + -0.017825833, + 0.028674051, + -0.01937934, + -0.018892223, + -0.008188824, + 0.008616697, + 0.0037850274, + -0.01105228, + 0.004301766, + 0.0143238595, + -0.0011338625, + 0.036072955, + 0.016311822, + 0.0018233957, + 0.0014885032, + -0.0079781795, + 0.0073396615, + -0.007293583, + 0.017786337, + -0.009228884, + 0.003521721, + -0.005177259, + -0.012829597, + 0.0031958795, + -0.007984762, + -0.0055590533, + 0.0055623446, + -0.009228884, + -0.01606168, + -0.0040285857, + 0.013389123, + -0.000023720704, + 0.0019534032, + -0.04347186, + 0.012039678, + -0.009097231, + -0.008702272, + -0.014495009, + -0.022736495, + -0.0049304096, + -0.018523594, + 0.030569855, + 0.010170204, + 0.009841071, + -0.007451567, + -0.0072540874, + -0.012072591, + -0.010163621, + 0.018826397, + -0.028937357, + -0.019023877, + 0.0033867767, + 0.008346808, + -0.007945266, + 0.015324424, + -0.02044573, + 0.03625727, + -0.009037987, + -0.0035447604, + -0.018944884, + -0.0015938256, + -0.003943011, + 0.01030844, + -0.0061514922, + -0.01338254, + 0.016509302, + -0.004170113, + -0.0028058572, + -0.025145747, + 0.0059210993, + 0.013310131, + 0.0017081993, + -0.0181418, + -0.01606168, + -0.023855546, + -0.021275144, + 0.075937524, + -0.008853673, + 0.018523594, + 0.011822451, + 0.014797811, + 0.0104400925, + -0.0120660085, + -0.0158642, + -0.003531595, + -0.011124689, + 0.0035941303, + 0.0005315495, + 0.0029572584, + 0.00066978525, + 0.0017213646, + -0.0223547, + -0.0074054883, + -0.016272327, + 0.007234339, + -0.015113778, + 0.013547107, + 0.006753805, + -0.008629862, + 0.038100414, + 0.008234903, + 0.017430874, + 0.008511375, + 0.035704326, + 0.02577768, + -0.0127769355, + -0.0035447604, + 0.03675755, + -0.020063937, + 0.008991908, + -0.0012013348, + -0.0007475429, + 0.032623645, + 0.013955231, + -0.018813232, + 0.0032386668, + 0.005424109, + 0.017983817, + 0.02039307, + -0.009314459, + 0.014863637, + -0.014863637, + 0.00021023359, + 0.010512502, + -0.0061416184, + -0.000029621953, + 0.036915537, + 0.022762826, + -0.026909899, + -0.0143238595, + -0.016088013, + 0.034782756, + 0.009360537, + -0.0057137455, + 0.01105228, + 0.0040252944, + -0.0022446858, + -0.02292081, + 0.0073659923, + -0.0129020065, + -0.028884696, + -0.033913843, + -0.0063983416, + -0.019708473, + -0.026778245, + 0.000012953176, + 0.0053615733, + -0.017615188, + -0.02215722, + 0.009933229, + 0.022473188, + -0.0034558945, + 0.020287747, + -0.032807957, + -0.0036731223, + 0.021893915, + 0.009426364, + -0.03117546, + -0.011894859, + -0.0052233376, + -0.0068525453, + 0.018918553, + 0.025409052, + -0.02091968, + -0.018497264, + -0.0029128254, + 0.0265676, + 0.0075766374, + 0.008169076, + -0.0016563609, + -0.023355264, + 0.0060428786, + 0.018273454, + 0.026449112, + -0.013422036, + -0.016733112, + 0.025330061, + 0.00009375143, + 0.007392323, + -0.0031168878, + 0.01682527, + -0.0012646929, + 0.015614061, + 0.0040779556, + -0.008307312, + 0.00032584148, + 0.04834303, + -0.021670105, + 0.010920627, + -0.00078292465, + -0.022565346, + 0.020748531, + 0.016193334, + 0.03375586, + -0.0074384017, + -0.010473006, + 0.003551343, + -0.022710163, + 0.025119416, + 0.023210445, + 0.006971033, + -0.03154409, + 0.008195407, + -0.009827905, + -0.007155347, + -0.016640956, + -0.019524159, + 0.015311258, + -0.00916964, + -0.020458896, + -0.046947505, + -0.0056117144, + -0.02342109, + 0.0168516, + -0.01273744, + -0.02064321, + -0.0018579547, + -0.00014049857, + 0.004779008, + 0.006088957, + -0.010301857, + -0.016719947, + 0.0117500415, + 0.0037586966, + -0.00025919208, + 0.0028058572, + 0.014639827, + 0.020063937, + -0.0021130326, + 0.008906334, + -0.0034756425, + -0.035388358, + -0.020880185, + -0.011256342, + 0.009577765, + 0.00864961, + 0.020735366, + 0.02544855, + 0.018049642, + -0.010986453, + -0.01244122, + 0.0024635592, + -0.021235649, + -0.00031411613, + -0.016311822, + 0.00914331, + 0.01625916, + 0.027857801, + -0.022762826, + -0.007997927, + -0.008366556, + 0.024987763, + -0.011190516, + -0.014481843, + -0.011651302, + -0.03907465, + -0.0026248342, + -0.0064049247, + 0.0016004083, + -0.0037652794, + 0.006289728, + -0.002081765, + 0.022091394, + -0.014402851, + -0.009742331, + -0.013448367, + 0.019142365, + 0.003380194, + 0.019484662, + 0.008491627, + -0.0032633517, + -0.010038551, + -0.023763388, + 0.004351136, + -0.0047987564, + 0.0002133192, + 0.008109832, + -0.021051334, + 0.00520359, + -0.0019484663, + 0.0052990383, + 0.03446679, + 0.008188824, + -0.013797248, + 0.008873421, + -0.012566291, + -0.031149128, + -0.017088575, + -0.015324424, + -0.025659194, + 0.007813613, + 0.03117546, + -0.0018694743, + 0.040233195, + -0.023263106, + -0.016088013, + 0.014942629, + -0.008208572, + 0.022460023, + 0.006911789, + 0.04581529, + 0.010604659, + -0.0048876223, + -0.021340972, + -0.011987017, + -0.015442912, + -0.0077280384, + -0.006148201, + 0.0102097, + 0.0019369465, + -0.03615195, + 0.008465296, + 0.02485611, + -0.010288692, + -0.008807594, + 0.024553308, + 0.0030494155, + -0.0042820177, + -0.018707909, + -0.016561963, + -0.0036764136, + 0.022446858, + -0.02668609, + -0.01296125, + -0.0052002985, + -0.0128230145, + -0.008445548, + 0.010492754, + -0.025066756, + 0.0035645084, + 0.023236776, + -0.02698889, + 0.008866838, + -0.019142365, + -0.014192207, + 0.0008812531, + -0.001876057, + 0.029148001, + 0.0027729438, + 0.00617124, + -0.013428618, + 0.014810977, + -0.002777881, + 0.0064246724, + -0.020630045, + 0.025830343, + -0.012276654, + -0.020287747, + -0.006898624, + -0.008175659, + 0.009966142, + 0.0054043606, + -0.0045157024, + -0.006421381, + -0.021788592, + -0.0028700382, + 0.036915537, + 0.0102097, + -0.018220792, + -0.01679894, + -0.005325369, + -0.019366175, + -0.010946957, + -0.0041371994, + -0.019313512, + -0.023486918, + -0.018457768, + -0.010881131, + 0.00308562, + 0.014508175, + -0.0045025367, + -0.005980343, + 0.02109083, + 0.011493318, + -0.027568163, + 0.018879058, + 0.02059055, + 0.023881877, + -0.004897496, + 0.020261416, + -0.005851981, + -0.01477148, + 0.011605223, + 0.0025639446, + -0.00039681073, + -0.027647156, + 0.020090267, + 0.019247686, + 0.0168516, + 0.023355264, + 0.029305985, + -0.026370121, + 0.0015855973, + -0.031149128, + -0.02213089, + 0.00021599341, + 0.010525667, + 0.004867874, + 0.02448748, + -0.030569855, + 0.014824142, + 0.028331753, + -0.020340407, + 0.007675377, + -0.027594496, + -0.01283618, + 0.007102686, + -0.0035184298, + -0.007971597, + -0.023131454, + -0.016469806, + 0.005516266, + -0.0032057536, + 0.004963323, + 0.00080267264, + 0.0005689883, + 0.0024668504, + 0.03035921, + -0.0150479525, + 0.0008861901, + -0.010551997, + -0.019129198, + -0.01117735, + 0.0018612461, + -0.03199171, + -0.023802884, + -0.01169738, + 0.01679894, + 0.008544288, + -0.028911026, + -0.04170771, + -0.00034332665, + -0.022249378, + -0.0010556935, + -0.021512121, + 0.0074054883, + 0.02213089, + -0.008735185, + 0.010940375, + 0.018576255, + 0.006230484, + 0.0126189515, + -0.015350754, + -0.024303166, + 0.007971597, + -0.016575128, + 0.04299791, + 0.000023245004, + -0.022960305, + -0.022051899, + 0.030464534, + 0.013402288, + 0.0052792905, + 0.0038278145, + -0.03199171, + 0.006760388, + -0.010328188, + -0.0028338335, + -0.005578801, + 0.0009520167, + 0.006760388, + -0.038916662, + 0.008261234, + 0.0013222911, + -0.012803267, + -0.005697289, + 0.009873984, + 0.0014193852, + 0.012079174, + 0.025790848, + -0.016548797, + -0.026383286, + 0.0045157024, + -0.019221356, + 0.005489935, + 0.0000777062, + -0.0070961034, + 0.009617261, + -0.01276377, + -0.018036477, + -0.023078792, + 0.014731985, + -0.025685525, + -0.013797248, + 0.011302421, + 0.0033571546, + -0.014258034, + -0.01918186, + 0.003913389, + -0.022723328, + 0.008307312, + 0.0013247596, + -0.03401917, + -0.0030905572, + 0.017417708, + 0.010802139, + -0.013520776, + -0.02342109, + 0.004973197, + 0.0084521305, + 0.011565727, + -0.007168513, + 0.019919118, + -0.024842944, + 0.0022578512, + -0.008656193, + -0.017773172, + -0.046921175, + -0.016351318, + 0.0039561763, + 0.00021002788, + 0.0056413366, + 0.23507982, + 0.0023549453, + -0.0056512104, + 0.03420348, + 0.009439529, + 0.035309367, + 0.012507047, + -0.006059335, + -0.011256342, + 0.01982696, + -0.0229998, + -0.0013823578, + -0.003281454, + -0.0046572294, + 0.012467551, + -0.024948267, + -0.023039296, + -0.022644337, + -0.03243933, + -0.013560272, + 0.017338717, + -0.005226629, + 0.001489326, + -0.010604659, + -0.003130053, + 0.020801194, + -0.026054153, + -0.0023944413, + 0.023328934, + 0.028805703, + 0.0076687946, + 0.011940938, + -0.0018447894, + 0.0073462445, + 0.009854237, + -0.002988526, + 0.02361857, + -0.0013510901, + 0.00052249833, + 0.005358282, + -0.023763388, + -0.0008664421, + 0.011835616, + -0.006352263, + 0.0051838416, + 0.0012745669, + 0.008801011, + 0.0067373486, + -0.0062864367, + 0.024290001, + -0.017365048, + 0.005888186, + 0.03249199, + 0.027752478, + 0.00022319319, + -0.00453545, + 0.029648283, + -0.019432, + -0.0073594097, + 0.00091334357, + -0.014705654, + 0.030885823, + -0.021841254, + 0.017259724, + -0.021393633, + -0.0061284527, + -0.030069573, + -0.000862328, + -0.0015066054, + -0.025935665, + 0.007997927, + -0.030517194, + -0.02109083, + -0.005907934, + -0.032281347, + -0.023434255, + 0.017509865, + 0.010802139, + 0.012842762, + 0.02909534, + -0.015074283, + 0.006421381, + -0.00007791191, + 0.009709418, + -0.00083147176, + -0.019537324, + 0.007675377, + 0.0021821505, + 0.0040680817, + -0.0112760905, + 0.0030773918, + -0.02059055, + -0.0009799929, + -0.030464534, + -0.0019846708, + -0.0014531213, + -0.011190516, + 0.014705654, + 0.0034756425, + 0.0046901423, + -0.010380849, + -0.001915553, + 0.020735366, + 0.010894296, + -0.0070171114, + -0.0100451335, + 0.026580766, + -0.00047971107, + -0.0022216465, + -0.022288874, + -0.009505356, + -0.031860057, + 0.007622716, + -0.010644155, + -0.0027416763, + 0.0155219035, + -0.010881131, + -0.014982126, + 0.009702835, + -0.01053225, + 0.030464534, + -0.02693623, + -0.015693052, + -0.00041018176, + -0.017549362, + -0.013250887, + 0.017259724, + -0.019695308, + -0.0037652794, + -0.042050008, + 0.017391378, + 0.010466424, + 0.022499518, + -0.009340789, + 0.013244304, + 0.016509302, + 0.000004605931, + -0.011842199, + -0.0069183717, + 0.00055623444, + 0.009149892, + -0.00929471, + 0.01937934, + 0.016298657, + -0.011769789, + -0.013211391, + 0.01603535, + 0.0007997927, + -0.013171895, + 0.020998674, + -0.0025392596, + -0.035520013, + -0.015943194, + -0.009538269, + 0.039522268, + -0.0030823287, + -0.023328934, + 0.00369287, + 0.014810977, + 0.013626099, + -0.03209703, + -0.0029967541, + 0.016601458, + -0.032176025, + -0.03828473, + -0.008583784, + -0.17030647, + -0.007965014, + 0.009380285, + -0.031149128, + 0.013955231, + 0.0028042116, + 0.005878312, + 0.0029556127, + -0.010380849, + -0.0013659012, + 0.032413, + 0.017207064, + -0.010973288, + -0.035441022, + 0.0050719366, + -0.020169258, + -0.019432, + 0.006599113, + 0.024803448, + 0.0019747969, + 0.021577947, + -0.011124689, + 0.0027153457, + -0.0005368979, + -0.0026561017, + 0.03157042, + -0.009755497, + -0.008017675, + -0.0067735533, + -0.015666721, + -0.017259724, + 0.0035381778, + 0.015153275, + 0.024092522, + -0.004301766, + -0.0013823578, + -0.024579639, + -0.00919597, + -0.004522285, + 0.013560272, + -0.010848218, + 0.00803084, + 0.0009824614, + -0.01157231, + -0.0059869257, + 0.010802139, + 0.011282673, + -0.008866838, + -0.006056044, + -0.006572782, + 0.017970651, + -0.011842199, + 0.0012564645, + 0.019010711, + 0.022446858, + 0.00192049, + 0.0036237522, + 0.018102305, + 0.0132969655, + 0.0091301445, + -0.01876057, + -0.009505356, + 0.013981562, + -0.0026890151, + -0.020182423, + -0.011756624, + 0.008366556, + 0.022315204, + -0.02317095, + 0.01980063, + 0.0051476373, + 0.003712618, + -0.01747037, + -0.009452694, + 0.01960315, + -0.00079362147, + -0.009176223, + 0.03580965, + 0.0105980765, + -0.013211391, + -0.020774864, + 0.044525087, + -0.021275144, + 0.005977052, + 0.0022051898, + 0.026093649, + 0.0030066282, + -0.0076095504, + -0.01606168, + -0.021591112, + 0.01231615, + -0.008419218, + -0.0066089868, + -0.006984198, + 0.0009939811, + 0.0013988145, + -0.021670105, + 0.03831106, + -0.0012054489, + -0.000015813803, + -0.00014574412, + -0.014429183, + -0.007221174, + 0.022065064, + 0.01253996, + 0.018800067, + 0.016772607, + 0.016970087, + 0.0046802685, + 0.00016559495, + -0.027410181, + -0.009643591, + 0.011223429, + 0.006500373, + -0.012230575, + 0.0136919245, + 0.019037042, + -0.015298093, + 0.021591112, + 0.006483916, + 0.02128831, + -0.0132969655, + 0.013125816, + -0.0001234248, + -0.014363356, + -0.013448367, + -0.058822617, + -0.009472442, + 0.009419781, + 0.01727289, + -0.010782391, + 0.04839569, + 0.02091968, + 0.028358083, + -0.0082151545, + -0.003041187, + 0.0043708836, + -0.029990582, + 0.0022627881, + -0.00020848507, + 0.045393996, + 0.0010836698, + 0.011710545, + -0.00028531702, + 0.004094412, + 0.01957682, + -0.009841071, + -0.0037455314, + -0.014350191, + -0.013705091, + -0.0076292986, + 0.0022315204, + -0.0174967, + 0.008564035, + 0.015772045, + 0.01851043, + 0.02698889, + -0.0068130493, + 0.0005599372, + -0.013033659, + -0.004252396, + 0.005878312, + -0.022367865, + 0.005684124, + 0.0379161, + -0.029964251, + -0.0014539441, + 0.0057664067, + 0.0010647447, + -0.013705091, + -0.016601458, + -0.0008664421, + -0.021472625, + 0.019010711, + 0.03754747, + -0.020656375, + -0.019682143, + -0.003771862, + 0.00010809956, + -0.0084258, + 0.028647719, + -0.0015600895, + 0.020208754, + 0.00874835, + -0.025040423, + 0.007602968, + 0.01918186, + 0.006780136, + -0.0116710495, + 0.003972633, + 0.021419963, + 0.0015806603, + -0.015930029, + -0.026383286, + 0.020300912, + -0.0024997636, + -0.01305999, + -0.00023512426, + -0.010492754, + 0.0063983416, + -0.0106770685, + -0.034756426, + -0.020774864, + -0.006158075, + -0.0008236549, + -0.021999236, + 0.010670486, + -0.041102104, + -0.004637481, + 0.0011009492, + 0.0013025431, + 0.020551052, + 0.012263489, + -0.013277218, + 0.016088013, + -0.01288884, + 0.020169258, + 0.0053944867, + 0.03425614, + -0.03167574, + -0.009222302, + 0.029305985, + 0.005486644, + 0.02213089, + 0.0052134637, + 0.02086702, + -0.01519277, + -0.031781062, + -0.09600146, + 0.007221174, + 0.016522467, + -0.0017065536, + 0.007129017, + -0.017378213, + 0.020959178, + -0.0049995272, + 0.010512502, + -0.02059055, + -0.037758116, + 0.009261797, + -0.004005546, + -0.01980063, + -0.03151776, + -0.0017888368, + 0.028121108, + 0.01600902, + 0.017773172, + 0.02294714, + 0.015574564, + 0.0032732259, + 0.008392886, + -0.00049411063, + -0.03633626, + 0.011565727, + 0.0028535814, + 0.03170207, + -0.01224374, + 0.013053407, + 0.0015288219, + -0.026778245, + 0.015877366, + 0.03154409, + -0.014982126, + -0.010196535, + 0.004933701, + 0.014587166, + 0.018721074, + 0.03580965, + -0.034861747, + 0.0108350525, + 0.02002444, + -0.0059968, + -0.015679887, + 0.005233212, + 0.015574564, + 0.018233957, + 0.035362028, + -0.007793865, + 0.013402288, + 0.030622516, + -0.004170113, + -0.006559617, + -0.0077280384, + -0.03654691, + 0.010762643, + -0.0021969615, + -0.0050686453, + -0.010453258, + 0.02361857, + 0.01045984, + 0.01732555, + 0.007352827, + 0.014982126, + -0.007352827, + -0.017694179, + 0.007155347, + 0.01876057, + -0.0053418255, + -0.03459844, + 0.006161366, + 0.014337026, + 0.02901635, + 0.019853292, + -0.013448367, + -0.01598269, + -0.0099200625, + -0.019432, + 0.019339845, + 0.0040483335, + -0.019168695, + -0.0340455, + 0.021314641, + 0.028963687, + -0.010315022, + -0.012553126, + -0.015205936, + -0.009235467, + 0.034756426, + -0.005726911, + -0.009933229, + 0.012164748, + -0.00612187, + 0.019932283, + 0.03246566, + 0.006589239, + -0.01789166, + 0.035888642, + -0.0072870003, + 0.0023138036, + 0.016167004, + 0.013112651, + -0.0021574656, + -0.02339476, + 0.013560272, + -0.014113215, + -0.0217096, + 0.00916964, + 0.0014917945, + 0.006602404, + 0.008346808, + 0.009064318, + 0.028121108, + 0.0064345463, + 0.0040252944, + -0.016127508, + -0.02954296, + -0.01603535, + -0.0060922485, + 0.013836743, + 0.013586602, + 0.013652429, + -0.005506392, + 0.014995291, + -0.00966334, + 0.008208572, + -0.030648848, + 0.007826778, + 0.001890868, + 0.0050324406, + 0.0070566074, + -0.000534018, + -0.007115851, + -0.019129198, + 0.0075108106, + 0.012052843, + 0.011677632, + -0.0062568146, + 0.03617828, + 0.018194461, + -0.00322221, + 0.0031168878, + -0.0024717874, + 0.019260852, + 0.0057400763, + 0.012204245, + -0.0030839744, + -0.032202356, + 0.027410181, + -0.0021969615, + 0.013270635, + -0.014402851, + -0.01224374, + -0.026409617, + -0.0015329361, + 0.016693616, + -0.0034163985, + 0.0076095504, + 0.025514375, + -0.006266689, + 0.02002444, + 0.0073594097, + -0.011164185, + -0.009926646, + 0.026554435, + 0.0021327806, + 0.009518521, + -0.0156008955, + 0.013547107, + 0.0011050634, + -0.0252774, + -0.024763953, + 0.009623843, + 0.00852454, + -0.0008680878, + 0.006342389, + 0.007945266, + 0.008616697, + -0.0037586966, + 0.020801194, + -0.016601458, + -0.014271199, + 0.019168695, + -0.01851043, + 0.004301766, + 0.0047822995, + -0.003248541 + ] + }, + { + "object": "embedding", + "index": 5, + "embedding": [ + 0.0021845475, + 0.008128393, + 0.0016116065, + -0.0032902234, + -0.03658782, + 0.004707499, + -0.017878445, + -0.0045868796, + 0.010058301, + -0.03318368, + -0.004885077, + 0.0063559613, + 0.019768145, + -0.014166054, + -0.02752798, + -0.01904443, + 0.02173826, + -0.025544465, + -0.0021460163, + -0.026670244, + -0.00603431, + 0.033022854, + -0.012115528, + -0.020331034, + 0.0038229583, + 0.005575287, + -0.002809422, + -0.015680496, + -0.0014516185, + -0.011733566, + 0.01049387, + 0.0016526504, + 0.009689742, + -0.021537228, + 0.0055250293, + -0.02439188, + -0.014233065, + -0.009863969, + -0.016993904, + -0.020331034, + 0.019392885, + -0.018722778, + -0.008249013, + -0.00634926, + -0.007458287, + 0.01150573, + 0.0060008047, + 0.005149769, + -0.011840784, + 0.013227904, + 0.023560949, + 0.014005228, + -0.017865043, + -0.0012363467, + -0.000084129795, + -0.009046439, + -0.023467133, + -0.013817598, + -0.01125109, + -0.0092072645, + 0.0038665151, + 0.005173223, + -0.018092878, + -0.0010579309, + -0.0025363537, + -0.009488709, + -0.006342559, + 0.008007774, + -0.03224553, + -0.011780474, + 0.010949542, + 0.021698052, + -0.008604169, + -0.0045734774, + 0.038732164, + 0.003682236, + -0.031655837, + -0.00010491357, + 0.011793876, + -0.00007125118, + 0.021255782, + -0.018856801, + 0.0066709113, + 0.015613484, + 0.0046203854, + 0.015626887, + -0.016136168, + 0.025785703, + -0.008222208, + -0.00311097, + 0.010916037, + 0.008966027, + -0.00591034, + 0.004627086, + -0.030127993, + -0.025343433, + 0.0064765806, + 0.018883605, + -0.0061549293, + -0.043128062, + -0.0096562365, + 0.02161764, + -0.011874289, + -0.018012466, + -0.030020777, + 0.014045435, + 0.010835624, + -0.01521142, + 0.0017339009, + 0.011137172, + 0.0020287477, + 0.03181666, + -0.006838438, + -0.039080616, + -0.032272335, + -0.018374324, + 0.014460901, + -0.011512431, + -0.019567113, + -0.026817666, + 0.017784629, + 0.017302154, + -0.00015025047, + 0.001991892, + 0.018709376, + -0.003588421, + -0.017597, + -0.0056523494, + 0.0057461644, + 0.002444214, + 0.020974336, + 0.02299806, + 0.017865043, + 0.0012505865, + -0.014809356, + 0.015546474, + -0.021322792, + 0.010574282, + -0.0115928445, + -0.012209343, + 0.021135163, + 0.017985662, + -0.013790794, + 0.0056422977, + 0.0020320984, + 0.017717618, + 0.027259937, + 0.02180527, + 0.018803192, + -0.0025631578, + 0.008456745, + -0.005022449, + 0.006278899, + 0.008470148, + 0.016417611, + 0.0046203854, + 0.0141124455, + 0.01740937, + 0.0044160024, + 0.0034778533, + 0.009783557, + -0.003551565, + 0.009763453, + 0.008510354, + 0.0048281183, + 0.013650072, + 0.022555789, + 0.018937213, + 0.017114524, + 0.00068392756, + -0.014702139, + 0.03004758, + -0.0020220468, + 0.02445889, + 0.017422773, + 0.010373251, + 0.013710381, + 0.00414796, + -0.023668166, + -0.0054144613, + -0.033290897, + -0.0002041731, + 0.007310863, + 0.007994372, + 0.0028931852, + -0.007310863, + 0.0182269, + 0.00855056, + 0.006406219, + -0.013026873, + 0.0058734845, + 0.038303293, + 0.03229914, + 0.025115596, + -0.6776118, + -0.042752802, + -0.007404678, + -0.0079005575, + 0.019218657, + 0.028224891, + 0.010225827, + 0.012276353, + 0.004741004, + -0.005776319, + -0.018977419, + 0.032593984, + 0.0061448775, + 0.0013418884, + 0.008872212, + -0.015801115, + -0.013274812, + -0.015787711, + 0.006881995, + 0.006272198, + -0.0101990225, + 0.024445489, + -0.0063593118, + 0.0055149775, + 0.02238156, + -0.030127993, + 0.013650072, + -0.013965022, + -0.013375328, + 0.016055755, + -0.030181602, + 0.036346585, + 0.0028747574, + -0.016953697, + 0.051705427, + -0.008148496, + -0.010708304, + 0.024043426, + 0.008899016, + 0.045808487, + 0.00094987615, + -0.028064065, + 0.023614557, + -0.018561954, + -0.024525901, + 0.007518596, + 0.020156806, + -0.01941969, + 0.010400055, + -0.013670175, + -0.0028077466, + -0.029216649, + -0.02708571, + -0.011425318, + 0.010507272, + -0.0069356035, + 0.0069356035, + -0.007257255, + -0.0017523288, + 0.003129398, + -0.005990753, + 0.020625882, + -0.039482683, + -0.012678417, + -0.0042216717, + -0.0014733969, + -0.04393219, + 0.0018210147, + 0.018025868, + 0.008188703, + -0.0077062263, + 0.007679422, + -0.009642834, + 0.008919119, + 0.038169272, + 0.022220735, + 0.01754339, + -0.026201168, + -0.016833078, + -0.011948001, + 0.010916037, + -0.003608524, + -0.013180997, + -0.0049755415, + 0.005129666, + -0.015305235, + -0.023172287, + 0.0044294046, + 0.009750051, + -0.022033105, + 0.017717618, + 0.009863969, + 0.012953161, + 0.018066075, + -0.016296992, + 0.01584132, + -0.019727938, + 0.0044160024, + 0.02218053, + -0.027032102, + -0.00004824244, + -0.013100584, + -0.0007304162, + -0.0108289225, + -0.012805738, + -0.0069222013, + -0.024793945, + 0.00204215, + 0.0119413, + -0.02439188, + 0.0043020844, + -0.012336663, + -0.02376198, + -0.0043858476, + 0.019821754, + -0.03211151, + 0.0099711865, + -0.0062185894, + 0.00798097, + -0.00011171934, + 0.0141124455, + -0.01011861, + 0.038624946, + -0.008537158, + -0.00072622806, + 0.030690882, + 0.01062119, + -0.003323729, + -0.009629432, + 0.0056221946, + -0.007217048, + 0.018883605, + 0.012497488, + -0.0067144684, + 0.0038162572, + -0.0101521155, + 0.0037123905, + -0.00008203571, + 0.01539905, + -0.041519806, + -0.0439858, + -0.0067647262, + 0.019513505, + -0.000016072088, + -0.0036286274, + -0.023426928, + -0.017020708, + 0.0007655968, + -0.011432019, + 0.037499167, + -0.0029266907, + -0.011170677, + -0.03280842, + 0.01998258, + 0.0015110904, + -0.013469143, + 0.0014717217, + -0.012939759, + -0.0008837031, + -0.012329962, + 0.0088923145, + 0.0014859614, + -0.029136235, + 0.019768145, + 0.00710313, + -0.00066549965, + 0.013643371, + 0.0067044166, + 0.010440261, + -0.026335191, + -0.018709376, + -0.011988208, + 0.004657241, + 0.01766401, + 0.013221203, + 0.004784561, + 0.0005616331, + -0.0073510697, + -0.0053206463, + -0.025450649, + 0.010567581, + -0.03776721, + -0.02502178, + 0.0024676677, + 0.014621726, + -0.008852108, + 0.004013939, + 0.017141327, + -0.016859882, + 0.0012489113, + -0.017422773, + 0.012236147, + 0.01326141, + 0.005866783, + 0.021644443, + -0.008429941, + 0.00035390005, + 0.010279436, + 0.006895397, + 0.019245462, + 0.014715541, + -0.010373251, + 0.014099043, + -0.018334117, + 0.029297061, + -0.04141259, + -0.006868593, + -0.0132145025, + 0.02520941, + 0.019299071, + 0.0025028482, + -0.010949542, + -0.013938217, + -0.0076191123, + 0.01609596, + 0.015787711, + 0.01614957, + 0.010822222, + -0.004486364, + -0.0038899689, + 0.019634124, + -0.020880522, + 0.013382029, + 0.003796154, + -0.0065469416, + 0.004117805, + 0.0009054816, + 0.023239298, + 0.02224754, + 0.0017925352, + -0.005776319, + -0.010259332, + -0.01017892, + 0.017865043, + 0.005769618, + -0.014594922, + 0.012651613, + -0.010574282, + 0.038356904, + 0.0021644444, + 0.019701134, + 0.0047477055, + 0.027849631, + -0.010534076, + -0.011083564, + -0.0082155075, + 0.033961, + -0.008376333, + 0.0031578774, + 0.0065770964, + -0.018159889, + -0.0060376604, + -0.008751593, + 0.0012732026, + 0.009756752, + -0.017516587, + -0.0041446094, + 0.007585607, + 0.004298734, + 0.045594055, + 0.0017439525, + -0.00090799446, + 0.0010947867, + -0.011867588, + 0.005990753, + 0.008832005, + 0.011318101, + 0.0036889368, + -0.013790794, + -0.0055551836, + -0.026817666, + -0.0124036735, + -0.007404678, + -0.0033170278, + 0.014715541, + -0.018937213, + 0.0024592914, + -0.0026502716, + 0.02275682, + 0.01143872, + -0.014889769, + -0.03640019, + 0.01766401, + -0.005762917, + 0.0034678017, + -0.022783626, + -0.028439324, + 0.003665483, + -0.02841252, + 0.018468138, + 0.011204183, + 0.009482008, + 0.002784293, + -0.010922737, + -0.016176375, + 0.0056925556, + 0.018829996, + -0.03607854, + -0.019513505, + -0.0049688406, + -0.008074785, + -0.006248744, + -0.002023722, + 0.0007999398, + 0.019660927, + 0.003601823, + -0.006587148, + -0.0037291434, + 0.013040274, + -0.00077941775, + 0.019526906, + -0.020786706, + -0.0026201168, + 0.02067949, + 0.003953629, + 0.007954165, + -0.02110836, + -0.0017690815, + 0.031629033, + -0.00032311704, + -0.010815521, + 0.005096161, + -0.024365077, + -0.005119615, + 0.087596335, + 0.0031059443, + 0.013368627, + -0.0042317235, + 0.02570529, + 0.016873285, + -0.006077867, + -0.0048917783, + -0.0030054282, + -0.009287678, + -0.0118608875, + -0.010788716, + 0.009173759, + 0.00867788, + 0.00052980304, + -0.005166522, + -0.008302621, + -0.039080616, + 0.009167058, + -0.0068618916, + -0.003400791, + 0.011659855, + -0.00041232497, + 0.01288615, + -0.013053677, + 0.0100516, + 0.011840784, + 0.033961, + 0.017315555, + -0.011740268, + 0.014876367, + 0.018092878, + 0.0031059443, + -0.0031662537, + -0.006523488, + -0.0013779068, + 0.014795954, + 0.014246467, + -0.0049688406, + -0.0072639557, + 0.013616567, + -0.0015680495, + 0.01137841, + 0.008731489, + 0.021443412, + 0.00008318746, + -0.0087113865, + 0.019969177, + -0.012015012, + 0.0125712, + 0.029243452, + 0.009274276, + -0.026214572, + -0.01665885, + -0.01206862, + 0.020398045, + 0.005618844, + -0.0099711865, + 0.022019703, + 0.026201168, + -0.00515312, + -0.02357435, + -0.004342291, + -0.020639284, + -0.0070294184, + -0.041787848, + 0.0106815, + -0.032888833, + -0.011914495, + -0.019808352, + 0.00760571, + -0.022904243, + -0.0061113723, + 0.02067949, + 0.016511427, + 0.00597065, + 0.02350734, + -0.021765063, + -0.0059572477, + 0.012041816, + 0.009602628, + -0.024485696, + -0.027447566, + -0.01716813, + -0.006406219, + 0.014635129, + 0.017650608, + -0.016484622, + 0.007954165, + 0.009696443, + 0.027688805, + -0.00591034, + 0.015452659, + 0.0073510697, + -0.016189776, + -0.017489783, + 0.010078403, + 0.002017021, + -0.016645448, + -0.014018631, + 0.025249617, + -0.01986196, + -0.008751593, + 0.005317296, + 0.004915232, + -0.016390808, + 0.01728875, + -0.0008204618, + -0.0126717165, + 0.006309054, + 0.021885682, + -0.025812507, + 0.006881995, + 0.019098038, + -0.019151647, + 0.046424985, + -0.00057335995, + 0.022716613, + -0.006121424, + -0.001206192, + 0.01087583, + 0.0007924011, + 0.016109362, + 0.0066508083, + -0.011961403, + -0.008704685, + 0.0055015753, + -0.017462978, + 0.003268445, + -0.0023805539, + -0.00848355, + 0.026321787, + -0.012242848, + -0.03425585, + -0.027608393, + 0.00521678, + -0.017771227, + 0.019071234, + -0.011043357, + -0.02771561, + -0.035220806, + -0.009039738, + 0.012001609, + -0.009220667, + -0.018762985, + -0.021349598, + 0.007833546, + 0.0063392087, + 0.014313477, + 0.011974805, + 0.008161899, + 0.01628359, + -0.02776922, + -0.0029618712, + -0.03294244, + -0.035864107, + -0.022515582, + -0.014795954, + 0.01614957, + 0.009575823, + 0.026268179, + 0.029752733, + 0.007880454, + -0.012946459, + -0.007310863, + 0.0058835363, + -0.0008506166, + 0.009401596, + -0.015760908, + 0.0108289225, + 0.026831068, + 0.029377474, + -0.0030071035, + -0.026335191, + -0.017556794, + 0.020719696, + -0.016940296, + -0.00037693497, + -0.00993098, + -0.019272266, + 0.0018109631, + -0.0045801788, + -0.005297193, + -0.017114524, + 0.0058801854, + 0.008885614, + 0.00006428835, + -0.005045903, + 0.010641293, + -0.010406756, + 0.020974336, + -0.010601087, + -0.015693897, + -0.023172287, + -0.012162435, + 0.011686659, + -0.017449576, + 0.01182068, + 0.0118608875, + 0.010728407, + 0.023091873, + -0.012048517, + -0.01275883, + 0.0040809494, + 0.011043357, + 0.018950615, + 0.0060008047, + -0.017838238, + 0.005002346, + -0.037070297, + -0.023614557, + -0.015613484, + -0.009240771, + -0.026254777, + -0.011076862, + 0.021014543, + 0.0022565841, + 0.02105475, + -0.0073443684, + -0.008664479, + 0.018628964, + 0.008510354, + 0.012979965, + -0.020625882, + 0.02790324, + 0.018267106, + 0.0036889368, + -0.01413925, + -0.01991557, + -0.011887691, + -0.017985662, + 0.02275682, + 0.027876435, + -0.006875294, + -0.023520742, + 0.013871207, + 0.024097035, + -0.02570529, + -0.008249013, + 0.019768145, + 0.027822826, + 0.0019416339, + -0.01991557, + 0.0091603575, + -0.017516587, + 0.021952692, + -0.017503185, + -0.0017154729, + -0.015881527, + -0.010172218, + -0.018508345, + 0.015667092, + -0.023735177, + 0.0015018765, + 0.02652282, + -0.020960934, + 0.011545937, + -0.0008259064, + 0.004623736, + 0.0044093016, + -0.0105139725, + 0.02432487, + 0.01691349, + 0.0034644513, + -0.0037928035, + 0.013341823, + -0.0003802855, + 0.0005612143, + -0.0040273406, + 0.026227973, + -0.006228641, + -0.015988745, + -0.0039502787, + -0.00892582, + -0.0016291967, + -0.0063325074, + 0.0035616166, + 0.0010470416, + -0.016457818, + -0.007330966, + 0.02790324, + -0.0056791534, + -0.0029434434, + -0.017597, + -0.0056925556, + -0.019111441, + -0.004657241, + -0.0054613687, + 0.007592308, + -0.013274812, + -0.020880522, + -0.01923206, + 0.0074515855, + 0.027018698, + -0.008496952, + -0.018937213, + 0.013321719, + 0.011827381, + -0.02790324, + 0.007424781, + 0.010272735, + 0.0055015753, + -0.03256718, + 0.00086527516, + -0.01388461, + -0.010266033, + 0.0063559613, + -0.025504258, + -0.00911345, + -0.02972593, + -0.022676408, + 0.03739195, + 0.008952624, + 0.022207333, + 0.0257723, + -0.022864038, + -0.00070947537, + -0.01558668, + -0.010004692, + 0.008336126, + 0.007987671, + 0.011365009, + 0.024445489, + -0.016833078, + 0.01647122, + 0.0067345714, + 0.00049755414, + -0.0037123905, + -0.024539305, + -0.0327012, + 0.0025179256, + 0.0063593118, + -0.027930044, + -0.01206862, + -0.02047846, + -0.02117537, + -0.0027641898, + -0.0024224354, + 0.008838707, + -0.0005004859, + 0.0133485235, + 0.035408434, + 0.0018746232, + 0.016806275, + -0.01640421, + -0.015975341, + 0.0025815857, + -0.013804196, + -0.01628359, + -0.01125109, + -0.0025514308, + 0.02067949, + 0.009917578, + -0.017275348, + -0.019808352, + 0.019473298, + -0.037847623, + 0.0066005504, + -0.02180527, + 0.021094956, + 0.011948001, + -0.0072438526, + 0.004720901, + 0.027983652, + -0.0069557065, + 0.030556861, + -0.015077399, + -0.009723247, + 0.013026873, + -0.026281582, + 0.04846211, + 0.00021862228, + -0.01175367, + -0.0022214034, + 0.008282518, + 0.020371241, + 0.004312136, + 0.0030188302, + -0.021832073, + -0.0019466598, + -0.0020723047, + -0.0124505805, + -0.018990822, + 0.019580515, + 0.012350065, + -0.04631777, + 0.01439389, + -0.0005499062, + -0.007699525, + -0.0063023525, + -0.0008162736, + -0.0059036394, + -0.00081376074, + 0.022971256, + -0.013341823, + -0.012638211, + 0.0069289026, + -0.027259937, + 0.008604169, + 0.0017112847, + 0.0043255384, + 0.0028730822, + 0.0019081286, + -0.013703681, + -0.027930044, + 0.0004301247, + -0.029699124, + -0.0032918989, + 0.011539236, + -0.0010261007, + -0.009488709, + -0.0106479945, + 0.011217585, + -0.037365146, + -0.018079476, + 0.0029501445, + -0.029645517, + -0.02570529, + 0.018789789, + 0.0027156072, + -0.021537228, + -0.011545937, + -0.0066742618, + 0.0038363603, + -0.012725324, + -0.017382566, + 0.011338204, + -0.027018698, + 0.0024040076, + -0.0073376675, + -0.017690815, + -0.0257723, + 0.005890237, + 0.005437915, + -0.004436106, + 0.0010269384, + 0.23652083, + -0.010527375, + -0.0022599346, + 0.01998258, + -0.0075521017, + 0.017529989, + 0.028358912, + -0.0007073813, + 0.0017389266, + 0.02256919, + -0.017811434, + -0.000539017, + 0.018722778, + -0.004543323, + -0.0062018367, + -0.021832073, + -0.032888833, + -0.02551766, + -0.031012535, + -0.0015412453, + 0.02483415, + -0.015546474, + 0.005632246, + -0.002117537, + 0.0099711865, + -0.011994909, + -0.0017623804, + 0.01162635, + 0.011043357, + 0.024793945, + 0.0027072306, + 0.009327884, + -0.007699525, + 0.0038732162, + -0.006362662, + 0.008999532, + 0.007987671, + -0.012041816, + 0.029886754, + -0.0038330099, + -0.0036889368, + -0.0151042035, + -0.018722778, + 0.0059170416, + -0.0044897143, + 0.0076526175, + 0.007934063, + 0.0074515855, + -0.009736649, + 0.021041349, + -0.040367223, + -0.0007986833, + 0.014045435, + 0.026080549, + 0.012209343, + -0.021523824, + 0.030771296, + 0.0031729548, + -0.015063996, + -0.006121424, + 0.004456209, + 0.030396037, + -0.010728407, + 0.036855865, + -0.02407023, + -0.0011333178, + -0.009917578, + 0.0038531132, + 0.029779539, + -0.012732026, + 0.022515582, + 0.0124036735, + 0.004342291, + -0.021188771, + -0.010741809, + -0.023453731, + 0.027501175, + 0.0157207, + 0.016940296, + 0.041707437, + -0.009012934, + -0.012819139, + 0.008992831, + 0.007585607, + 0.0005260337, + -0.034095023, + 0.012209343, + -0.000043975746, + 0.0129866665, + -0.031575423, + 0.0037425454, + -0.0032835223, + -0.011257791, + -0.020076394, + 0.0021711455, + 0.009951083, + 0.009602628, + 0.01590833, + -0.01118408, + 0.021041349, + -0.015827918, + 0.0021610938, + 0.004895129, + -0.005739463, + -0.017141327, + -0.005990753, + -0.006888696, + 0.011177379, + -0.009461906, + -0.013871207, + 0.0011500705, + -0.03602493, + -0.0048281183, + -0.017570196, + 0.0071366355, + 0.008041279, + -0.02047846, + -0.011793876, + 0.034523893, + -0.021979498, + 0.019848557, + -0.027608393, + -0.013650072, + -0.012524293, + -0.017462978, + -0.010312941, + 0.009977887, + -0.01640421, + 0.0032282386, + -0.048220873, + 0.028305303, + -0.0032667697, + 0.020652685, + -0.0063258065, + -0.0022766872, + 0.02110836, + 0.006543591, + -0.006881995, + 0.012356766, + -0.0020387995, + 0.008986129, + -0.018159889, + 0.035435237, + 0.03640019, + -0.021161968, + 0.0021577433, + 0.02413724, + -0.0026754006, + -0.018508345, + 0.008912418, + -0.0100516, + -0.02149702, + -0.013341823, + -0.02110836, + 0.011351606, + 0.0046203854, + 0.0015035517, + -0.003930175, + 0.003638679, + 0.0019014275, + -0.04135898, + 0.0067647262, + 0.026429005, + -0.0075655035, + -0.036158953, + -0.02752798, + -0.17454937, + 0.027045503, + -0.00021548115, + -0.014487705, + 0.011545937, + 0.034389872, + 0.0079474645, + -0.022287747, + -0.00810829, + 0.015506268, + 0.031253774, + 0.019526906, + -0.005488173, + -0.014889769, + -0.0019684383, + -0.026040344, + -0.028921802, + 0.017556794, + 0.026683645, + 0.013408833, + 0.03042284, + -0.022153724, + -0.0005792234, + -0.016390808, + -0.001614957, + 0.024619717, + -0.009997991, + 0.012892852, + 0.0012313209, + 0.0013779068, + -0.017395968, + -0.019553712, + 0.026965091, + 0.014702139, + -0.004184816, + 0.0040440937, + -0.0077464324, + -0.009951083, + -0.00018270875, + 0.014742346, + -0.012651613, + 0.018923812, + 0.012236147, + 0.0163506, + -0.0012857671, + 0.019098038, + 0.005297193, + -0.0065134363, + -0.010185621, + -0.005380956, + 0.02092073, + -0.00760571, + 0.009066543, + 0.020652685, + 0.020009384, + 0.00019412152, + 0.007813443, + 0.005166522, + 0.012745428, + -0.008369632, + -0.025263019, + -0.016015548, + -0.00033044632, + -0.010507272, + -0.0046940967, + -0.00396033, + -0.021912487, + 0.022033105, + -0.017395968, + 0.010594386, + 0.0061683315, + -0.009924279, + 0.01049387, + -0.016551634, + -0.0039234743, + 0.0008112478, + -0.011425318, + 0.020826913, + 0.0021711455, + -0.015814517, + -0.03310327, + 0.026348593, + -0.03626617, + -0.009187162, + 0.00358172, + 0.03130738, + 0.0019198555, + 0.0101990225, + -0.025624877, + -0.003638679, + 0.022528984, + -0.013375328, + 0.0037525971, + -0.0045600757, + 0.011036656, + 0.022528984, + -0.01363667, + 0.037123907, + -0.025785703, + 0.004858273, + -0.01017892, + -0.005538431, + -0.012021713, + -0.00083763327, + 0.029109431, + 0.0007630839, + 0.020384643, + 0.035810497, + 0.027983652, + -0.012289755, + -0.015131007, + 0.0031913829, + 0.00848355, + -0.0030623872, + -0.016498026, + 0.016256787, + 0.019928971, + -0.013596463, + 0.016632047, + -0.00798097, + 0.029431082, + -0.0092072645, + 0.010473766, + 0.010353147, + -0.02236816, + 0.0056791534, + -0.053930182, + 0.023292907, + 0.005193326, + 0.018977419, + -0.012685118, + 0.037123907, + 0.02112176, + 0.032325942, + -0.00810829, + 0.016136168, + -0.012953161, + -0.011807279, + -0.0028496285, + -0.0005783858, + 0.03444348, + -0.005166522, + 0.0056724525, + 0.004154661, + 0.0010076729, + 0.024432087, + -0.007753134, + -0.011572741, + 0.00078402477, + -0.004111104, + -0.024177447, + 0.019017626, + -0.021403205, + 0.027742414, + 0.0327012, + 0.02187228, + 0.021537228, + 0.0018025868, + 0.014045435, + -0.013562958, + -0.01495678, + 0.014501107, + -0.01017892, + -0.0038531132, + 0.023453731, + -0.033666156, + 0.003085841, + -0.016605241, + -0.019580515, + -0.020947533, + -0.008597468, + 0.016270189, + -0.034148633, + 0.011492329, + 0.014192858, + -0.0033790127, + -0.033773374, + -0.028948605, + -0.013308317, + -0.011425318, + 0.027849631, + -0.010500571, + 0.01074851, + 0.00010899703, + -0.035730086, + -0.0031511763, + -0.0070629236, + 0.0074180802, + -0.041895065, + 0.018535148, + 0.022917647, + 0.008443343, + -0.012557798, + -0.03575689, + 0.01665885, + -0.0011483952, + -0.013234606, + -0.0036621327, + -0.026750656, + -0.00055535085, + -0.019098038, + -0.031226968, + -0.038169272, + 0.003281847, + -0.0016962073, + -0.0050291503, + 0.011445421, + -0.035542455, + -0.020076394, + -0.010292837, + 0.001948335, + 0.042029087, + 0.011137172, + -0.014621726, + 0.008818603, + -0.011579443, + 0.006530189, + 0.008691283, + 0.029752733, + -0.01991557, + -0.016605241, + 0.029002214, + 0.01149903, + 0.023413526, + 0.0010034847, + 0.010279436, + -0.010266033, + -0.026388798, + -0.090973675, + 0.015988745, + 0.026804265, + 0.007585607, + 0.0006826711, + -0.0219929, + 0.009957785, + -0.009012934, + 0.008141795, + 0.00849025, + -0.025343433, + 0.014192858, + -0.0069356035, + -0.016551634, + -0.032272335, + -0.010835624, + 0.011545937, + 0.0033086515, + 0.0074113794, + 0.01747638, + 0.0026301686, + 0.025383638, + 0.028680563, + -0.0072304504, + -0.022354757, + 0.000009966527, + -0.021322792, + 0.036239367, + -0.014755747, + -0.0073376675, + -0.0059672995, + -0.033773374, + -0.01232326, + 0.01659184, + -0.012624809, + -0.014246467, + 0.0035917715, + 0.020759903, + 0.0031277225, + 0.032325942, + -0.01614957, + 0.008778397, + 0.016310396, + 0.0015378947, + -0.010225827, + 0.01439389, + -0.0000051010556, + 0.002992026, + 0.02533003, + 0.0033203783, + 0.0011911145, + 0.020143405, + 0.0033220535, + -0.0050258, + 0.0014566443, + -0.025892919, + 0.013831001, + -0.006637406, + -0.006215239, + 0.0076727206, + 0.009173759, + 0.0076124114, + 0.023601156, + 0.010849026, + 0.005618844, + -0.013911413, + -0.005833278, + 0.010929439, + 0.027849631, + -0.022354757, + -0.039884746, + 0.023976415, + 0.004034042, + 0.014916574, + 0.015063996, + -0.0003350533, + 0.000020050846, + 0.0048917783, + -0.015827918, + 0.035783693, + 0.0075789057, + -0.010567581, + -0.03235275, + 0.01703411, + 0.023896001, + -0.019768145, + 0.0000081931, + -0.0039871344, + -0.0046739937, + 0.04449508, + -0.018829996, + -0.0013829325, + 0.008195404, + -0.001062119, + -0.005096161, + 0.031387795, + -0.0018310663, + -0.028734172, + 0.043262083, + 0.023078471, + 0.014568117, + 0.004117805, + 0.003876567, + -0.017704217, + -0.027474372, + 0.012631509, + -0.014434096, + -0.0064497762, + -0.002224754, + 0.022609398, + 0.0141124455, + 0.016377406, + -0.0017204988, + 0.025115596, + 0.0129866665, + -0.0076526175, + -0.00091469556, + -0.020706294, + -0.010889232, + 0.016377406, + 0.008758293, + 0.00515312, + 0.012055218, + -0.016444417, + -0.005367554, + 0.0009951083, + 0.010225827, + -0.024298066, + -0.0003149501, + 0.011358307, + 0.018401127, + 0.016766068, + -0.023735177, + -0.008979429, + -0.009079944, + -0.0037324938, + 0.0028211488, + 0.0018293911, + -0.038383707, + 0.022354757, + 0.019004224, + 0.0039938353, + -0.004278631, + -0.002697179, + 0.0152382245, + -0.0045466735, + 0.002638545, + -0.012658314, + -0.02533003, + 0.010346446, + -0.025933126, + -0.0059538973, + -0.01791865, + -0.014246467, + -0.012618108, + 0.009106749, + 0.006701066, + 0.006255445, + -0.0057729683, + 0.024847554, + -0.0074850908, + 0.025745496, + 0.014782552, + -0.023453731, + -0.0073778736, + 0.00993098, + -0.0039569796, + 0.011874289, + -0.014554716, + 0.021416608, + 0.000161035, + -0.016243385, + -0.019392885, + 0.02520941, + -0.01143872, + -0.026991894, + 0.00013747656, + -0.003538163, + 0.014125847, + -0.015988745, + 0.011666556, + -0.016189776, + -0.00792066, + 0.027688805, + -0.003926825, + 0.007826845, + -0.0019064533, + -0.012839243 + ] + }, + { + "object": "embedding", + "index": 6, + "embedding": [ + -0.0131454775, + -0.007023479, + -0.007137846, + -0.028793573, + -0.03425628, + 0.0073396703, + -0.032803144, + 0.013912409, + -0.007124391, + -0.025228014, + 0.000104275794, + -0.007595314, + 0.018890737, + -0.0022755668, + -0.0018584637, + 0.0096404655, + 0.019994043, + -0.006337277, + 0.004726048, + -0.005577073, + -0.044078387, + 0.001702891, + 0.012815831, + -0.005116241, + 0.0020535602, + -0.00840261, + 0.011147418, + -0.0054458873, + -0.010407397, + -0.012217086, + -0.007992235, + -0.008557342, + -0.004463677, + -0.010817773, + -0.0130109275, + -0.0073733074, + -0.00095698267, + -0.006098452, + 0.027246255, + -0.01677831, + 0.015917195, + -0.011066689, + 0.0026657602, + -0.01789507, + 0.008294971, + 0.0343101, + 0.00424167, + 0.020895522, + -0.008624617, + 0.0009553008, + -0.00075095386, + 0.056295473, + -0.024420718, + -0.011618341, + -0.018688913, + -0.0019139653, + -0.011584704, + 0.004816869, + -0.009034993, + -0.023653787, + -0.013737494, + -0.020020952, + -0.026721513, + 0.003582378, + 0.0043156724, + 0.008079692, + 0.0014716341, + 0.008079692, + 0.002578303, + 0.0019072378, + 0.020693699, + 0.017706702, + 0.0112550575, + 0.005775533, + 0.013461668, + -0.01710123, + -0.0072051208, + -0.002921404, + 0.012129629, + 0.011678888, + 0.01691286, + -0.023842156, + -0.024286168, + 0.029520141, + 0.04106448, + 0.021245351, + -0.010003748, + 0.04701156, + -0.009526098, + -0.009230089, + 0.001309334, + 0.01614593, + 0.0010965776, + 0.032534048, + -0.009660647, + -0.006313731, + -0.0038682956, + 0.03880405, + -0.01683213, + -0.0013900636, + 0.004460313, + 0.01183362, + -0.008469885, + -0.020518785, + -0.004039846, + -0.004167668, + -0.0129369255, + 0.0053517027, + 0.010508309, + 0.0006235524, + 0.02938559, + 0.026748423, + 0.022429386, + -0.047872677, + -0.010071023, + -0.018096896, + -0.0019358296, + -0.01813726, + -0.009647192, + -0.0047327755, + 0.024689816, + -0.0039187516, + -0.006414643, + -0.027663358, + 0.021164622, + 0.015580822, + -0.00594372, + -0.004779868, + 0.0035790142, + 0.0028877666, + 0.010999414, + 0.0112550575, + -0.000038788072, + -0.0018315538, + -0.034229368, + 0.013239662, + -0.026398594, + 0.014975349, + -0.029681599, + -0.009620283, + -0.00480005, + 0.015190628, + -0.032238036, + -0.0005697326, + 0.019576939, + 0.014719705, + 0.014127688, + -0.0027111706, + 0.021339536, + -0.01305802, + 0.013502033, + -0.03207658, + 0.01119451, + -0.0048673246, + 0.010858137, + 0.0038279307, + 0.007292578, + 0.023411596, + -0.009479006, + 0.009115722, + -0.004359401, + -0.015123353, + 0.0048101414, + -0.013286754, + 0.022617755, + 0.008624617, + 0.00739349, + 0.013044565, + 0.0025127102, + -0.007783683, + 0.008557342, + 0.022402477, + -0.02401707, + 0.02018241, + 0.032964606, + 0.01364331, + 0.0067510167, + -0.01903874, + -0.030569626, + -0.031134732, + -0.014612066, + 0.005476161, + 0.016119018, + 0.018352538, + -0.0049110535, + 0.016374663, + -0.0024925277, + -0.011187783, + 0.011853803, + -0.012930198, + 0.014558246, + 0.004463677, + 0.004103757, + -0.0125870975, + -0.6824346, + -0.027770998, + -0.01186053, + -0.011450155, + -0.011820165, + 0.025241468, + 0.014100778, + 0.0026489415, + -0.011389608, + -0.0132194795, + -0.0073800352, + 0.018554363, + 0.007595314, + 0.0053113378, + -0.012963835, + -0.0022335202, + 0.0064684628, + 0.016859042, + -0.0034747384, + 0.024864731, + -0.014961895, + 0.020720609, + 0.0075751315, + -0.004742867, + 0.012714919, + 0.006656832, + 0.0018197808, + -0.011954715, + -0.010952322, + 0.004921145, + -0.030650355, + 0.0035151034, + 0.0072185756, + -0.018904192, + 0.043970745, + 0.0144775165, + -0.019711489, + 0.01462552, + 0.012573642, + 0.03657053, + 0.015917195, + 0.0054257046, + 0.024676362, + -0.0050893314, + -0.010938867, + 0.010501581, + 0.013858589, + 0.0002537518, + 0.017303053, + -0.01949621, + -0.0076020416, + -0.03172675, + -0.017854707, + -0.01079759, + 0.007050389, + -0.003632834, + 0.01792198, + 0.006290185, + 0.007736591, + 0.014517881, + 0.0085909795, + 0.0049245083, + -0.02973542, + -0.014033503, + 0.0170205, + -0.008765894, + -0.015378998, + -0.0075145843, + 0.009384821, + 0.01358949, + 0.00038619884, + 0.017477969, + 0.0042248513, + -0.009613555, + 0.031296194, + 0.012149812, + 0.010030658, + 0.002450481, + 0.0040196637, + -0.0056073465, + 0.011766345, + -0.008860079, + -0.025308743, + 0.0060513597, + 0.037458554, + -0.024985826, + 0.0025244833, + -0.005758715, + 0.009021537, + 0.002909631, + 0.01903874, + 0.037862204, + -0.0052642454, + -0.011954715, + -0.022954129, + 0.02508001, + -0.01680522, + 0.0006550874, + 0.0201555, + -0.021218441, + 0.010602494, + -0.003266187, + -0.00032207766, + -0.005829353, + 0.007178211, + 0.022456296, + -0.017558698, + 0.015190628, + 0.014100778, + -0.022563936, + -0.009660647, + -0.0058259894, + -0.028820483, + -0.010030658, + -0.013132022, + -0.026358228, + 0.011685616, + -0.011187783, + 0.01745106, + -0.011322333, + 0.009748105, + -0.0151098985, + 0.022375567, + -0.005122969, + -0.010804318, + -0.0015313404, + -0.011699071, + -0.014329512, + 0.0045410427, + 0.0022402476, + -0.008227697, + 0.02976233, + 0.026842607, + -0.005499707, + 0.035251945, + 0.009458823, + -0.01130215, + -0.011732709, + -0.0056342566, + -0.028793573, + -0.013690402, + -0.0047966866, + 0.006949477, + -0.01568846, + -0.0065996484, + -0.03910006, + -0.013286754, + -0.015217538, + -0.01130215, + 0.014571701, + -0.006132089, + -0.013676947, + -0.025564387, + -0.009135905, + -0.0075011295, + -0.010467944, + 0.009674102, + -0.017303053, + -0.014316057, + -0.012196904, + 0.027905548, + 0.007709681, + -0.021352991, + -0.011403062, + -0.011154146, + -0.014046958, + 0.018446723, + 0.0028120826, + -0.013481851, + -0.015621186, + -0.0059100827, + 0.00023293866, + 0.0025648482, + 0.0011251695, + 0.020411145, + -0.010420851, + 0.013461668, + -0.0031097732, + -0.0031013638, + -0.0023478873, + -0.009956656, + -0.010817773, + -0.026923336, + -0.020855159, + 0.018783098, + -0.0074203997, + 0.015163718, + 0.016737947, + -0.019940222, + 0.0030727722, + 0.008503523, + 0.005516526, + 0.0010427579, + -0.0035420132, + -0.0060513597, + 0.012910016, + -0.0022654757, + -0.00003250735, + 0.0034848296, + 0.013468396, + 0.026075676, + 0.0067409254, + 0.014531336, + 0.028255375, + 0.0007866936, + -0.026210224, + -0.000914095, + -0.012903288, + 0.04830324, + 0.008046054, + 0.010111388, + -0.017383784, + -0.026936792, + 0.012775466, + -0.0061690905, + 0.033368252, + 0.011974897, + -0.0019005104, + -0.00808642, + -0.0031602292, + 0.013730767, + -0.01584992, + -0.006895657, + 0.018877283, + -0.027851727, + -0.0058461716, + 0.0052137896, + 0.023129044, + 0.0063843695, + -0.032507136, + -0.011820165, + 0.008046054, + -0.0014724751, + 0.016105564, + -0.006697197, + -0.0020064681, + 0.0010721906, + -0.010259393, + 0.03412173, + -0.0027548992, + 0.01917329, + 0.022308292, + 0.027824817, + -0.02146063, + -0.0172896, + -0.011059961, + 0.024030523, + 0.0036025604, + -0.012573642, + 0.009909564, + -0.019509664, + -0.0019795583, + -0.00085817295, + -0.011100326, + 0.017666338, + -0.028336106, + 0.011228148, + 0.007918233, + 0.0108312275, + 0.027932458, + 0.012842741, + -0.009795197, + 0.015123353, + -0.000015347041, + -0.017007045, + 0.020747518, + 0.010145025, + 0.008934081, + -0.009465551, + -0.012439093, + 0.011880713, + -0.000118887016, + -0.009721194, + 0.005015329, + 0.015136808, + -0.000084251056, + -0.010124843, + -0.009304091, + 0.013105112, + 0.029116493, + -0.01789507, + -0.021689365, + 0.0021141076, + 0.032910787, + -0.00962701, + -0.034686837, + -0.01481389, + 0.0020905614, + -0.0096001, + 0.0035487406, + -0.0001552574, + 0.03234568, + -0.004941327, + -0.0047159567, + -0.0045645884, + -0.0053416113, + 0.033475894, + -0.034283187, + -0.02154136, + 0.007090754, + 0.006054723, + -0.008368974, + -0.0035285582, + -0.025941126, + 0.04970255, + -0.0037606559, + -0.018971467, + 0.00011405165, + 0.0009670739, + -0.009620283, + -0.006629922, + 0.0003853579, + -0.012466002, + 0.013656765, + 0.0006336436, + 0.015177174, + -0.009331001, + 0.01478698, + 0.024716726, + -0.021608636, + -0.009526098, + -0.0069629317, + -0.021877734, + 0.011584704, + 0.096014455, + 0.020115137, + 0.022833034, + -0.00030084405, + 0.030677265, + 0.004904326, + -0.015634641, + -0.009801924, + 0.012008535, + 0.010481399, + -0.007649134, + -0.038050573, + 0.0012521504, + 0.01079759, + -0.012910016, + -0.0036765626, + -0.022927219, + -0.0065458287, + 0.021285716, + -0.011638524, + -0.0060849967, + -0.0024302986, + 0.0022637937, + 0.003468011, + 0.014208417, + -0.010461217, + 0.029331772, + 0.0075751315, + 0.011557794, + 0.010441034, + 0.0061455444, + 0.014181508, + 0.0076424065, + 0.011826893, + -0.0037202912, + -0.01130215, + 0.022644665, + -0.005092695, + 0.014221872, + -0.017625973, + 0.019106016, + 0.003834658, + 0.009028265, + -0.0023747971, + 0.0315922, + -0.025833486, + -0.012714919, + 0.016751401, + -0.0034646473, + -0.017464513, + 0.026519688, + 0.016024834, + -0.024003614, + -0.017356874, + -0.0019543301, + 0.011181056, + 0.0068250187, + -0.00026510438, + -0.0001514732, + 0.017114684, + -0.019765308, + -0.028712844, + 0.0039591165, + -0.01566155, + -0.012324726, + -0.028389925, + 0.002159518, + -0.011880713, + -0.013172387, + -0.025456747, + -0.0022419295, + -0.019859493, + -0.007548222, + 0.008927354, + 0.018043075, + -0.0060244496, + 0.020626424, + 0.014692795, + 0.013690402, + 0.027797908, + 0.0032207766, + -0.014221872, + -0.008490068, + -0.012647645, + -0.01584992, + 0.01693977, + 0.024743635, + -0.017733611, + -0.010737043, + 0.024649452, + 0.016253568, + 0.0005579596, + 0.015473182, + -0.007871141, + -0.012788922, + 0.0016473893, + 0.007036934, + 0.021675909, + -0.018769642, + -0.009546281, + 0.04098375, + -0.009822107, + 0.003126592, + -0.0014968622, + 0.025779666, + -0.008994628, + 0.005193607, + 0.0051633334, + -0.014168053, + -0.023209773, + 0.044751134, + -0.031242372, + 0.025187649, + 0.025201105, + 0.0051263324, + 0.018702367, + -0.004726048, + 0.024743635, + -0.018769642, + 0.0058058067, + -0.01802962, + -0.03248023, + 0.0063070036, + 0.037216365, + -0.012277634, + 0.015405907, + 0.022617755, + -0.014006593, + -0.0020047862, + -0.008348791, + 0.021070438, + 0.028416835, + -0.014046958, + -0.012136357, + -0.00019478129, + -0.0039927536, + -0.0050489665, + 0.011557794, + -0.019590395, + -0.005082604, + -0.010723588, + -0.00507924, + 0.01704741, + -0.010071023, + -0.025672028, + -0.020572605, + -0.00022473956, + -0.0038582042, + 0.0015616141, + 0.03425628, + -0.0029819512, + 0.012815831, + -0.0046184086, + 0.00070680486, + -0.037862204, + -0.010649585, + 0.0037942934, + -0.034283187, + 0.002781809, + 0.021366445, + 0.027905548, + -0.0016145929, + 0.019711489, + -0.0048875073, + -0.006771199, + -0.00039986402, + 0.0074203997, + -0.00041079617, + -0.018635092, + 0.010441034, + 0.01922711, + 0.011470337, + -0.010615949, + -0.005778897, + -0.015553911, + 0.012042172, + 0.0047495943, + -0.008220969, + -0.0033418708, + -0.025228014, + -0.018460179, + -0.017114684, + 0.014571701, + 0.0043257633, + -0.0040196637, + 0.0049245083, + 0.029224131, + -0.004534315, + 0.033314433, + -0.005139787, + 0.014181508, + -0.0036799263, + 0.005957175, + 0.019240566, + -0.0011066688, + -0.012062354, + 0.002120835, + 0.005183516, + 0.012190176, + 0.038238943, + 0.01590374, + -0.0019795583, + -0.018608183, + 0.023048313, + -0.0031854573, + 0.018123806, + 0.0056208014, + -0.0056611663, + 0.01843327, + -0.021285716, + -0.0025766212, + -0.016213203, + -0.023236683, + -0.01933475, + -0.011295423, + 0.011793256, + 0.0017222324, + 0.024339987, + -0.011059961, + -0.009048448, + -0.010676496, + 0.009162814, + 0.013939318, + 0.0007496925, + 0.022792669, + 0.023707606, + -0.012082537, + -0.016576488, + -0.010911957, + 0.009297364, + -0.021837369, + 0.012230542, + 0.035870872, + -0.005462706, + -0.00909554, + -0.0059134467, + 0.003239277, + -0.0001609337, + -0.014235327, + 0.026506234, + 0.012546732, + 0.0048202327, + -0.0028793574, + 0.0012672872, + 0.002388252, + 0.026519688, + -0.026869517, + -0.0116721615, + -0.02736735, + -0.006744289, + -0.0014977031, + 0.005640984, + -0.022052648, + 0.03883096, + -0.0025093465, + -0.010286302, + 0.004265216, + -0.019792218, + -0.0004406493, + -0.0035016483, + 0.008584253, + 0.0039187516, + -0.004140758, + -0.008624617, + -0.0015128399, + -0.0059672664, + -0.006172454, + 0.018998377, + -0.015096444, + 0.021070438, + -0.010932139, + -0.005893264, + 0.0008152853, + -0.025833486, + 0.006566011, + 0.018917646, + 0.013515488, + -0.0024656178, + -0.015230993, + -0.010555401, + 0.0015355451, + 0.009061903, + -0.010609221, + 0.008947535, + -0.013071475, + -0.009916292, + -0.00256653, + -0.021137713, + 0.018796552, + -0.0023344322, + -0.020101681, + -0.013125295, + -0.008436248, + 0.029116493, + -0.015015714, + 0.009976839, + 0.021985373, + 0.012990746, + -0.0046520457, + 0.011160874, + 0.0006151431, + -0.0057856245, + -0.011140691, + 0.0047933226, + -0.008712074, + -0.0099902935, + 0.028955033, + -0.027636448, + -0.002921404, + -0.0034141913, + 0.009337729, + 0.0067812903, + 0.0065021003, + -0.0019021922, + 0.032614775, + -0.0035588318, + 0.0018567818, + -0.0031669566, + -0.011477064, + 0.020464964, + -0.0068889298, + -0.002312568, + 0.006730834, + -0.004369492, + 0.009727922, + 0.017706702, + -0.012876378, + -0.0044704042, + -0.016415028, + -0.019698033, + -0.0034326918, + 0.015594277, + -0.016065199, + -0.025577843, + -0.012883106, + 0.00928391, + -0.0071042087, + 0.02962778, + -0.015944105, + -0.0077029536, + -0.0011739436, + 0.003177048, + 0.010387214, + -0.0055266167, + -0.006592921, + -0.032641686, + -0.015836466, + 0.0037438374, + -0.029816149, + -0.006710652, + -0.01829872, + 0.023546146, + 0.0071983933, + -0.026465869, + -0.005116241, + 0.01486771, + -0.017975802, + 0.015352087, + 0.00008703665, + 0.01707432, + 0.020559149, + 0.008712074, + 0.015500092, + 0.022779215, + 0.009801924, + 0.021164622, + -0.03923461, + -0.012560187, + 0.018635092, + -0.015163718, + 0.0077164085, + 0.006340641, + -0.030246707, + -0.0015860011, + 0.01677831, + 0.010938867, + 0.0038178395, + -0.0014884528, + -0.024703272, + -0.00784423, + -0.02704443, + -0.014141142, + -0.02499928, + 0.012614007, + -0.00073623756, + -0.019267475, + -0.0015304995, + 0.010595766, + -0.017868161, + -0.012614007, + -0.005462706, + -0.0030626808, + 0.00079215964, + 0.0024336623, + -0.0018180988, + 0.016078655, + 0.017639427, + -0.050913494, + -0.0043762196, + 0.004080211, + 0.0028154464, + 0.0015473182, + -0.007857685, + -0.010030658, + -0.007063844, + -0.004964873, + -0.025968036, + -0.009337729, + -0.0027616266, + -0.017545242, + 0.0024740272, + -0.028847393, + -0.0017045728, + -0.03401409, + 0.0032813237, + -0.026479324, + 0.0007740796, + -0.012143084, + 0.011066689, + 0.01481389, + -0.027582629, + -0.017787432, + -0.0137105845, + -0.01590374, + -0.016334299, + 0.0070571164, + 0.007265668, + -0.014423696, + -0.016267024, + 0.00970774, + -0.025362564, + -0.03396027, + 0.00035130008, + 0.0040331185, + -0.0065727388, + 0.004127303, + 0.23917502, + -0.022119923, + 0.004927872, + 0.021527905, + 0.0017693248, + 0.015056078, + 0.0343101, + -0.018608183, + -0.010737043, + -0.00068998616, + -0.019603848, + 0.010528491, + -0.005398795, + 0.007904777, + -0.013912409, + -0.014881165, + -0.035817053, + -0.037593104, + -0.019092562, + -0.013246389, + 0.0009098904, + -0.008839896, + -0.006158999, + -0.008079692, + 0.028524475, + 0.0099902935, + -0.015163718, + -0.014046958, + 0.020908978, + 0.022079557, + 0.0055333446, + 0.0032527319, + -0.0054088864, + 0.03662435, + 0.00041668268, + -0.006438189, + -0.0123045435, + -0.027609538, + 0.007050389, + 0.012943653, + -0.025120374, + -0.004100393, + -0.02390943, + -0.008153694, + -0.010178663, + 0.016240114, + -0.0063843695, + -0.0023478873, + 0.019846037, + 0.014100778, + -0.019671123, + -0.010676496, + 0.03891169, + 0.031672932, + 0.0010461217, + -0.012398728, + 0.010017203, + 0.01486771, + 0.009230089, + -0.010017203, + -0.018648548, + 0.01712814, + 0.00797878, + 0.019321295, + -0.01710123, + -0.0034579197, + -0.044159114, + 0.022119923, + 0.00068115635, + 0.005462706, + 0.007232031, + -0.013602945, + -0.009808652, + -0.01313875, + -0.032318767, + -0.014585156, + 0.023330867, + 0.010609221, + 0.00792496, + 0.035440315, + -0.0043728556, + 0.0065727388, + 0.016119018, + -0.009734649, + -0.0036361977, + -0.02148754, + 0.023425052, + -0.0016532758, + -0.008476613, + -0.0063473685, + 0.0029129947, + 0.004204669, + -0.021649, + -0.013925863, + 0.024864731, + 0.013313664, + 0.0054862523, + 0.03406791, + 0.001156284, + 0.0027246254, + -0.024434172, + 0.031107822, + 0.000033584794, + -0.010992686, + -0.015271358, + 0.00368329, + 0.012614007, + -0.0041104844, + -0.010488126, + -0.012640917, + -0.009815379, + -0.03172675, + -0.00281881, + -0.0016448665, + 0.006394461, + 0.01031994, + 0.012990746, + -0.0030794996, + 0.0033855995, + -0.012741829, + -0.006895657, + 0.0025143921, + -0.0054896157, + 0.0096404655, + -0.0048706885, + 0.0001105828, + -0.0038043845, + 0.016132474, + 0.00092334533, + -0.03686654, + 0.014329512, + -0.014746615, + 0.017989255, + -0.004164304, + -0.034659926, + 0.04109139, + 0.0022856581, + -0.01571537, + -0.019819127, + -0.0067779263, + 0.015029169, + -0.015096444, + 0.0066097397, + -0.0019896494, + -0.024905095, + -0.006138817, + 0.01925402, + 0.000007647242, + -0.0005571186, + -0.008617889, + -0.0030895907, + -0.011584704, + -0.0065391012, + -0.041925594, + 0.022981038, + -0.019294385, + -0.0076625887, + -0.026627328, + -0.017733611, + 0.017881617, + -0.044051476, + -0.0055568907, + 0.021931553, + -0.014692795, + -0.020962797, + 0.013925863, + -0.17523715, + 0.02031696, + 0.019119471, + -0.020088227, + 0.0010208937, + 0.0092906365, + 0.010447761, + 0.0028675843, + 0.0021443812, + 0.0018887373, + 0.012533277, + -0.0027347167, + -0.024461083, + 0.0055568907, + 0.0012311271, + -0.024784, + -0.0048740525, + -0.00027057045, + 0.0037101998, + -0.007090754, + 0.0117461635, + -0.036139973, + 0.010030658, + -0.023317412, + -0.0060244496, + 0.010938867, + -0.013562581, + 0.021635545, + -0.017168505, + -0.01598447, + -0.0063440045, + -0.0011974897, + 0.028820483, + 0.0030172705, + 0.0072723953, + 0.010017203, + -0.009532825, + -0.009230089, + -0.006350732, + 0.030784905, + 0.012291089, + 0.016253568, + -0.003811112, + 0.008409338, + 0.005038875, + 0.029089581, + 0.025281833, + 0.0006916681, + 0.007911505, + 0.004507405, + 0.028147737, + -0.01819108, + 0.0026523052, + -0.008812986, + -0.009775015, + -0.0043661282, + 0.0012269224, + 0.017370328, + 0.0007459083, + -0.014800435, + -0.034740657, + -0.029869968, + -0.007837503, + -0.010447761, + 0.0036092878, + -0.027582629, + -0.019698033, + 0.0075549493, + -0.0135693075, + 0.0100642955, + -0.016253568, + -0.033583533, + -0.0055871643, + -0.0037572922, + 0.0058259894, + 0.014100778, + -0.0054929797, + 0.005321429, + 0.00027288301, + -0.00070554344, + -0.014316057, + 0.030219797, + -0.0029264495, + -0.005536708, + -0.0049312357, + 0.0045645884, + -0.005015329, + 0.020586058, + -0.009849017, + -0.017383784, + 0.0044502215, + -0.02047842, + -0.006428098, + -0.0012101037, + 0.011342515, + 0.022927219, + -0.0052507906, + 0.022671575, + -0.005859627, + -0.0067846538, + 0.0068014725, + -0.0071042087, + -0.015863376, + 0.022631211, + 0.028766664, + 0.030327436, + 0.01481389, + -0.0040499372, + 0.0057217134, + 0.014437151, + -0.024380352, + -0.025174195, + 0.015190628, + 0.035063576, + -0.020411145, + 0.0042853984, + 0.029358681, + -0.014612066, + 0.016482303, + -0.0029634507, + 0.057264227, + -0.0015725462, + 0.005499707, + 0.015325177, + -0.015607731, + -0.001993013, + -0.09219325, + -0.022456296, + 0.022254473, + 0.009297364, + -0.006798109, + 0.017410694, + -0.0016179567, + -0.0022133377, + 0.0012656053, + 0.013105112, + -0.010656313, + -0.003060999, + 0.026761876, + -0.018756187, + 0.04327109, + 0.0029029034, + -0.017612517, + -0.0064617353, + -0.020693699, + 0.023115588, + -0.0070436615, + 0.0045780437, + -0.0024992554, + -0.008059509, + -0.0021141076, + -0.0038481131, + -0.019846037, + 0.018554363, + 0.007945143, + 0.020868612, + 0.0007084867, + -0.00006837843, + 0.014033503, + -0.006418007, + -0.0012000125, + 0.012802376, + -0.014221872, + 0.015378998, + 0.024313077, + -0.015096444, + -0.014854254, + 0.0013042883, + 0.0204246, + -0.007783683, + -0.005577073, + -0.00027162163, + -0.0058461716, + 0.006969659, + 0.006387733, + -0.013858589, + -0.013367483, + -0.008974445, + 0.001727278, + -0.0038481131, + 0.0042853984, + -0.010723588, + 0.027770998, + 0.016159384, + -0.035063576, + -0.010925412, + -0.0032964605, + 0.007124391, + -0.021608636, + 0.016051745, + 0.017558698, + 0.0012075809, + -0.02992379, + -0.00017806773, + 0.0039523887, + -0.028981943, + -0.012842741, + 0.0074809473, + -0.007353125, + -0.007736591, + -0.01568846, + 0.00011720515, + -0.0069629317, + 0.009196452, + 0.006175818, + -0.0023462053, + -0.035225034, + -0.023155954, + -0.0025446657, + -0.02641205, + 0.02595458, + 0.035386495, + 0.0014623839, + -0.015405907, + 0.016374663, + -0.017222324, + -0.0121699935, + 0.010387214, + 0.021191532, + -0.022981038, + -0.018123806, + 0.021352991, + 0.022994494, + -0.004524224, + -0.017666338, + 0.024609087, + -0.024299623, + 0.0057250774, + -0.08847969, + 0.011006142, + 0.009189725, + -0.00853716, + 0.0039086603, + -0.028120827, + 0.017706702, + -0.0034511923, + 0.012768739, + 0.0062060915, + -0.026802242, + -0.0137778595, + 0.008187331, + 0.0024185255, + -0.03643598, + -0.026990611, + 0.022227563, + 0.01590374, + 0.016576488, + 0.017773977, + -0.013347302, + 0.0047933226, + -0.0010007112, + 0.0072051208, + -0.021016618, + 0.006734198, + 0.009055175, + 0.017208869, + -0.004480495, + 0.0034781022, + 0.029035762, + -0.03654362, + -0.01077068, + 0.015419362, + -0.011981625, + -0.03215731, + -0.015271358, + 0.030354347, + -0.0047529577, + 0.044239845, + -0.0046049533, + -0.006172454, + 0.028578294, + 0.005001874, + -0.005751987, + -0.021420266, + 0.016576488, + 0.011692343, + 0.026654238, + 0.008826441, + -0.003912024, + 0.026290955, + -0.016697582, + 0.0027919002, + -0.01617284, + -0.011927805, + 0.013239662, + 0.016267024, + -0.0005323111, + -0.023734516, + 0.024891641, + -0.00015820067, + -0.004742867, + 0.019711489, + 0.03624761, + -0.00006328027, + -0.015325177, + -0.0032039578, + -0.00022852376, + -0.01462552, + -0.024757091, + 0.0038043845, + 0.029331772, + 0.0055299806, + 0.010642858, + -0.00077702285, + 0.011174329, + 0.0024084344, + -0.020088227, + 0.017181959, + 0.01856782, + -0.014100778, + -0.032883875, + 0.02606222, + 0.032722417, + 0.0004662978, + -0.0058663543, + -0.006552556, + -0.00731276, + 0.03248023, + 0.0101988455, + 0.015971014, + 0.0021763367, + -0.011288695, + 0.011470337, + 0.017060865, + -0.00092418626, + -0.03584396, + -0.006996569, + 0.03673199, + -0.0008644799, + -0.004379583, + -0.008705347, + -0.026802242, + -0.04087611, + 0.008638072, + -0.015446272, + -0.03178057, + 0.008335336, + 0.02595458, + 0.010461217, + -0.0017390511, + -0.00077954563, + 0.018984921, + 0.0014321102, + 0.0042080325, + 0.010367032, + -0.018608183, + -0.016441938, + 0.0003891421, + 0.01566155, + 0.03616688, + 0.00851025, + -0.026317865, + 0.02063988, + -0.0029701781, + 0.013979684, + -0.019778762, + 0.0040331185, + 0.013925863, + 0.006606376, + -0.018608183, + -0.008066237, + -0.021649, + -0.0040331185, + -0.0031854573, + -0.016509213, + 0.018258354, + -0.018527454, + 0.037377827, + 0.010145025, + -0.028551385, + -0.005338248, + 0.0074136723, + 0.023317412, + 0.0075751315, + 0.03624761, + -0.02273885, + -0.0121699935, + 0.02497237, + 0.000634905, + 0.0033469165, + -0.0294125, + -0.023223227, + 0.0053819763, + -0.018608183, + -0.0026321227, + -0.01726269, + -0.007783683, + 0.03802366, + -0.0033485985, + 0.0053819763, + 0.0104141245, + -0.024649452, + -0.007063844, + 0.023317412, + 0.015056078, + 0.0021948372, + -0.021770094, + 0.014437151, + 0.010367032, + -0.0074002175, + -0.025376018, + 0.022644665, + 0.0027885365, + -0.01699359, + -0.014840799, + 0.030300526, + -0.0006176659, + -0.028928123, + 0.023815244, + -0.02957396, + -0.033395164, + 0.025066555, + -0.015917195, + -0.022510115, + -0.02404398, + -0.01063613 + ] + }, + { + "object": "embedding", + "index": 7, + "embedding": [ + 0.024549589, + -0.006144328, + -0.0028832944, + -0.013314444, + -0.0069968407, + 0.013993681, + -0.026268475, + -0.008857813, + -0.020072164, + -0.013064927, + 0.022997046, + 0.018325554, + 0.0039887885, + -0.021319743, + -0.0155808795, + -0.009024157, + 0.04932097, + -0.0061477935, + 0.014118439, + -0.011817348, + -0.004775456, + -0.005073489, + 0.0033060852, + 0.0011115585, + 0.008712262, + -0.009516258, + 0.008746917, + -0.013238203, + -0.0026129854, + -0.013737234, + -0.003250637, + -0.0150541235, + -0.025783306, + -0.0341005, + -0.020987056, + -0.01412537, + -0.01635715, + -0.0047823875, + 0.0049002143, + -0.0023201508, + 0.012392621, + -0.009620222, + -0.004837835, + 0.0061270003, + -0.009661809, + 0.038453165, + -0.0066468255, + -0.013245134, + -0.025603099, + 0.0003155769, + 0.02205443, + 0.0023704006, + -0.020113751, + -0.02108409, + -0.026074408, + -0.026254613, + -0.018256243, + 0.03276975, + 0.0028763635, + -0.018588932, + -0.0022144532, + -0.0104658045, + 0.0045952504, + 0.013210478, + 0.0078112325, + -0.01461054, + -0.009620222, + 0.005371522, + -0.017064113, + -0.0048828865, + 0.011172766, + 0.005461625, + 0.0011860667, + -0.02136133, + 0.022484152, + -0.0065393946, + -0.0055967793, + 0.0025783305, + -0.01183121, + 0.005752727, + 0.026434818, + -0.014305576, + -0.007617165, + 0.021444501, + -0.0032610337, + 0.0035937214, + -0.005260626, + 0.02991418, + -0.012344104, + 0.007825094, + 0.015123433, + 0.019046377, + -0.016066048, + -0.0027931915, + -0.031910308, + -0.0038848233, + -0.011706453, + 0.04502375, + 0.016897768, + -0.0039160126, + 0.014035267, + 0.006414637, + -0.022373255, + -0.022109877, + -0.006972582, + -0.0012137907, + -0.00049383345, + 0.0022387118, + 0.008365712, + 0.010382632, + -0.0013385486, + 0.033296507, + 0.01935134, + -0.05838671, + 0.00013656229, + -0.040144328, + -0.010410356, + 0.0024812967, + -0.011644074, + -0.036484763, + 0.023149528, + 0.033989605, + 0.010548976, + 0.0018107228, + 0.027973501, + -0.0084072985, + -0.010590562, + -0.03493222, + 0.0013082256, + 0.01926817, + 0.01092325, + 0.011789625, + 0.029110184, + 0.014915504, + -0.0037947204, + 0.005943329, + -0.027848743, + 0.013155031, + -0.022345532, + -0.015622465, + -0.007894404, + 0.03166079, + -0.020127613, + 0.0046160435, + 0.011054939, + 0.013064927, + 0.005874019, + 0.012697585, + 0.017868107, + -0.0040061157, + 0.03263113, + -0.011914383, + 0.007021099, + -0.0015586078, + 0.005655693, + 0.025007034, + -0.004896749, + 0.031078586, + 0.005558659, + 0.0073329937, + 0.005246764, + 0.006525533, + 0.012725309, + 0.0008650749, + 0.019947406, + 0.002574865, + 0.0043006833, + 0.02922108, + 0.007346856, + -0.010514321, + 0.0050076446, + 0.023856489, + -0.034849048, + 0.018769138, + 0.006986444, + 0.03590256, + 0.016856182, + -0.013681786, + -0.026753645, + -0.0056348997, + -0.00897564, + 0.014776884, + 0.020432577, + 0.01996127, + -0.01447192, + 0.022151463, + 0.022802977, + -0.0017474773, + -0.008116197, + -0.01962858, + -0.0022560393, + 0.0153175015, + 0.02999735, + -0.014291714, + -0.66404486, + -0.0057042097, + -0.010278667, + 0.011359903, + 0.0086984, + 0.016523495, + 0.010847009, + 0.013064927, + -0.019531546, + -0.013155031, + -0.006109673, + -0.012572827, + -0.004751198, + -0.000104181534, + -0.0065844464, + -0.023468353, + 0.005063093, + -0.01718887, + 0.009446948, + 0.017216595, + 0.0065324637, + 0.013300582, + 0.007755785, + -0.0040234434, + 0.00036907554, + 0.011477729, + 0.012468862, + -0.023343595, + -0.003002854, + 0.012115381, + -0.02247029, + 0.033712365, + -0.023204975, + -0.02894384, + 0.013016411, + 0.011456937, + -0.010313322, + 0.038591787, + 0.024826828, + 0.050651718, + -0.0024067883, + 0.005867088, + 0.010874732, + 0.0046437676, + -0.017507697, + -0.011117318, + 0.027266538, + -0.014291714, + 0.0006905005, + 0.0030704313, + 0.01064601, + -0.040809706, + -0.00018410459, + 0.013758027, + 0.03069045, + 0.0009781368, + 0.03673428, + 0.009211293, + 0.0022543066, + 0.008920192, + 0.0025384773, + -0.027807156, + -0.003569463, + -0.0084696775, + -0.006882479, + 0.0020637042, + -0.0155808795, + -0.011297524, + -0.0020637042, + -0.019739477, + -0.011630211, + 0.03437774, + -0.018006727, + -0.006702273, + 0.0109994905, + 0.0060576904, + 0.011678728, + -0.010119255, + -0.014929365, + -0.0026112527, + -0.021278158, + -0.01732749, + -0.034571808, + 0.009571706, + 0.007076547, + -0.01691163, + -0.031300377, + 0.017590867, + 0.0293597, + -0.015539293, + 0.016897768, + 0.021735603, + 0.009828152, + -0.0075686476, + -0.0016062583, + 0.0058636228, + -0.007880542, + -0.014028336, + 0.0028226483, + -0.0059052086, + 0.010174702, + -0.004924473, + 0.0062725516, + 0.010410356, + 0.02894384, + -0.002160738, + -0.016246255, + 0.020765264, + 0.025797168, + -0.013536235, + -0.0020844971, + -0.012004485, + -0.01940679, + -0.006546326, + -0.0024691673, + -0.028777495, + 0.023981247, + -0.0029370096, + 0.032326166, + -0.0023149527, + 0.008656814, + -0.014804607, + 0.010611355, + -0.021042503, + 0.0034187138, + 0.02366242, + 0.0004886352, + -0.01774335, + -0.0007715065, + 0.008372643, + 0.0007702069, + 0.016371014, + 0.0069829784, + -0.010687596, + -0.0006029967, + 0.012018347, + 0.020155337, + -0.011560901, + 0.012441138, + -0.008656814, + -0.01663439, + -0.013771889, + -0.01002222, + 0.004914076, + -0.006764652, + -0.034072775, + -0.014097646, + -0.009446948, + -0.035375804, + -0.00031406077, + -0.0009971971, + 0.011886658, + -0.01642646, + 0.013695648, + 0.010237081, + -0.011581695, + 0.016759148, + -0.014499644, + -0.029831007, + -0.0019285496, + 0.015636327, + -0.0038986853, + -0.012565896, + -0.00078017026, + 0.0029768627, + -0.0051947813, + 0.0058705537, + 0.019365203, + 0.004775456, + -0.037760068, + 0.01231638, + -0.013071858, + -0.01454123, + 0.021042503, + 0.006511671, + 0.009578637, + 0.013203547, + -0.007956783, + -0.002713485, + 0.008733055, + 0.019794924, + -0.017632455, + -0.02852798, + -0.0075270617, + 0.010555907, + -0.005378453, + 0.011505454, + 0.017798798, + -0.02380104, + 0.011713384, + 0.0137233725, + 0.010521252, + -0.010250943, + -0.003437774, + -0.0049903174, + 0.0011427479, + 0.00028265468, + 0.021319743, + -0.011983693, + 0.03193803, + 0.020072164, + 0.0014355825, + 0.02156926, + 0.0067854454, + 0.018783, + -0.039229438, + -0.010292529, + -0.007838957, + 0.03179941, + 0.019254306, + 0.00025428092, + -0.019808786, + -0.015081847, + 0.0009486801, + -0.000596932, + 0.02037713, + -0.0029959232, + 0.0058948123, + -0.004584854, + -0.0042209765, + 0.016509634, + -0.012011416, + -0.015830396, + 0.012940169, + -0.020501886, + 0.0144580575, + 0.029831007, + 0.03451636, + 0.012891653, + -0.035569873, + -0.019171136, + 0.008691469, + -0.005960657, + -0.003912547, + -0.0027308124, + -0.0006081949, + 0.023191113, + -0.02330201, + 0.01551157, + 0.009550912, + 0.033241056, + 0.017798798, + 0.026351647, + -0.008199369, + -0.00897564, + -0.022400979, + 0.0058151055, + 0.012718378, + -0.0095370505, + 0.01488778, + -0.011935175, + 0.015969016, + 0.008019162, + 0.01260055, + 0.0018211192, + 0.0033355418, + 0.019794924, + 0.007173581, + 0.018450312, + 0.02525655, + -0.008871675, + -0.011318317, + -0.0052710227, + 0.013425339, + 0.00077627157, + -0.008441953, + 0.007242891, + -0.028417084, + -0.016925493, + -0.019101825, + -0.014763022, + -0.010244012, + 0.024799105, + -0.004896749, + -0.003957599, + -0.02999735, + -0.01635715, + -0.008317195, + 0.0023028234, + 0.0029647336, + -0.017369077, + -0.045633677, + 0.003624911, + 0.021056365, + -0.01134604, + -0.010680665, + -0.023884213, + -0.0038189788, + -0.0040996843, + 0.0023738663, + 0.0056660892, + 0.020862298, + -0.011124249, + -0.004307614, + 0.009641016, + -0.028236877, + 0.032326166, + -0.011713384, + 0.002968199, + -0.0034412395, + -0.0065775155, + -0.02357925, + -0.0079429215, + -0.027141782, + 0.027918052, + 0.036512487, + -0.018796861, + -0.04216818, + -0.02400897, + -0.026393233, + 0.007845888, + 0.0068027726, + 0.0016487107, + 0.005142799, + -0.00723596, + -0.007915198, + -0.012642137, + -0.0012510448, + 0.032464787, + 0.0090726735, + -0.02073754, + -0.02407828, + -0.036318418, + -0.01064601, + 0.10180247, + 0.03263113, + 0.0059537254, + 0.007270615, + -0.004165529, + 0.007388442, + -0.008642952, + -0.0019285496, + 0.021804914, + 0.0007793039, + 0.012787688, + 0.01190052, + 0.009308328, + 0.0040303743, + 0.012954032, + 0.011401488, + -0.014527367, + -0.033435125, + -0.0033961881, + -0.010146978, + -0.0069344616, + -0.01990582, + -0.013508512, + 0.041585978, + -0.013792682, + 0.0012822343, + 0.021832637, + 0.023094079, + 0.0012250536, + -0.025658548, + -0.014236266, + 0.008005301, + -0.00995291, + 0.003860565, + -0.022997046, + 0.00967567, + 0.025298135, + 0.0008516461, + 0.019642442, + 0.0016209867, + 0.013155031, + 0.014596677, + -0.005343798, + -0.0053195395, + 0.027945776, + -0.0026667006, + -0.017979003, + 0.012489655, + -0.002444909, + -0.02366242, + 0.030939966, + -0.008039955, + -0.03598573, + -0.0012302519, + 0.0023218838, + 0.013023342, + 0.02080685, + 0.0056660892, + -0.023260422, + 0.001045714, + -0.001802059, + -0.035514425, + 0.007818163, + -0.01071532, + -0.010840078, + -0.03346285, + 0.007242891, + -0.0065671187, + -0.03199348, + -0.0011748038, + 0.0046056467, + -0.023981247, + -0.012143105, + 0.016343288, + 0.004969524, + -0.006206707, + 0.02567241, + -0.012753033, + -0.021333605, + 0.019600857, + -0.021181123, + -0.016176945, + -0.0052329022, + -0.008601367, + -0.021139538, + 0.03437774, + 0.006123535, + -0.01822852, + -0.014970952, + 0.011637143, + 0.026102131, + -0.01642646, + 0.007326063, + -0.0018332484, + -0.016246255, + -0.0017700031, + 0.016828459, + 0.019517684, + -0.022525737, + -0.019642442, + 0.034904495, + -0.029831007, + -0.017424524, + -0.008296402, + 0.029331975, + 0.019157274, + 0.00608888, + -0.0068027726, + -0.017369077, + 0.0017301498, + 0.03742738, + -0.019988993, + -0.00855978, + 0.008733055, + -0.002181531, + 0.014555092, + -0.014305576, + 0.019697892, + 0.015497707, + -0.035514425, + -0.023856489, + -0.00904495, + 0.0023010906, + 0.037676893, + -0.005052696, + -0.008289471, + -0.0018869637, + -0.011082663, + 0.009377638, + -0.00290582, + 0.0047962493, + 0.0347936, + 0.0077904398, + -0.012364897, + -0.024535727, + 0.0086706765, + -0.012856998, + 0.009100398, + -0.009211293, + -0.011644074, + -0.012545103, + 0.009051881, + -0.005364591, + -0.0059537254, + -0.023704007, + -0.04183549, + 0.015386811, + -0.013543166, + -0.0147214355, + 0.021208849, + -0.011228214, + 0.015816534, + -0.0047789216, + 0.016163083, + -0.03897992, + -0.022345532, + -0.007908267, + -0.005295281, + 0.0054928144, + 0.023066355, + 0.028472532, + -0.0062240344, + 0.003562532, + -0.0013342168, + 0.0066191014, + 0.003992254, + 0.027252676, + -0.0055136075, + -0.014707574, + 0.023676282, + 0.011997554, + -0.004182856, + -0.015691776, + -0.00038142139, + -0.012863928, + 0.015705638, + 0.020418715, + -0.01649577, + -0.0056452965, + -0.020307818, + -0.010361839, + -0.009966772, + -0.035514425, + 0.002479564, + -0.0061547244, + -0.008504332, + 0.025353584, + 0.0025020896, + 0.005101213, + -0.014596677, + 0.0327143, + -0.0045536645, + 0.00046914179, + 0.020058302, + 0.0014052595, + 0.0046576294, + 0.0047096116, + -0.0016556417, + -0.005122006, + 0.013889716, + 0.012489655, + -0.008913261, + -0.015123433, + -0.0011626746, + 0.008379574, + 0.020224646, + 0.010535114, + -0.013619407, + 0.019171136, + -0.025062481, + -0.011657936, + -0.010535114, + -0.013813475, + -0.018076038, + -0.018394863, + 0.023426767, + -0.029692387, + 0.017979003, + -0.013064927, + -0.03124493, + 0.0075339926, + 0.00883702, + 0.017105699, + 0.004217511, + 0.025020896, + 0.018020589, + 0.00018702859, + -0.014638264, + 0.017147284, + 0.006310672, + -0.023898074, + 0.028555704, + 0.017687902, + -0.0035937214, + -0.012170829, + -0.009516258, + 0.004363062, + -0.018810723, + -0.0033736622, + 0.03590256, + 0.017992865, + 0.00876771, + -0.0078112325, + -0.009141983, + -0.01781266, + 0.028583428, + -0.02219305, + -0.00995291, + -0.0096687395, + -0.02330201, + -0.012399552, + 0.018672103, + -0.02219305, + 0.004706146, + 0.007845888, + -0.021319743, + 0.011124249, + -0.018519621, + -0.013570891, + 0.011373765, + 0.016412599, + 0.017272042, + -0.027613088, + -0.0058151055, + 0.0076379576, + 0.0058497605, + -0.013459994, + -0.006615636, + -0.008053818, + 0.028500255, + -0.007478545, + 0.0007112935, + 0.0098836, + -0.02032168, + 0.03046866, + -0.0027931915, + -0.011852004, + -0.01892162, + -0.0068201004, + -0.01836714, + 0.0045536645, + 0.020224646, + -0.008199369, + -0.009550912, + -0.017563144, + -0.008989502, + -0.007915198, + -0.0048586284, + 0.010528183, + 0.0038155133, + -0.010036082, + -0.011145041, + -0.0073953727, + 0.014943227, + -0.0062794825, + -0.0019302825, + 0.008920192, + 0.028028948, + -0.02776557, + 0.0074369586, + 0.006650291, + 0.0018956275, + -0.029193355, + 0.009862808, + -0.008448884, + -0.010410356, + 0.019448375, + 0.018311692, + -0.020335542, + 0.008227092, + -0.0038536338, + 0.007984508, + 0.009876669, + 0.009446948, + 0.031965755, + 0.0014693711, + -0.020820713, + -0.0013515443, + -0.021070229, + 0.011845073, + -0.016038325, + 0.00828254, + 0.02344063, + -0.013557028, + 0.01711956, + 0.0024414433, + 0.019226583, + 0.037593722, + -0.016412599, + -0.012787688, + -0.00476506, + 0.0005271889, + -0.011470798, + -0.04632678, + -0.01705025, + -0.003583325, + -0.021680156, + 0.042057283, + -0.003583325, + 0.00042603965, + 0.012863928, + 0.019670166, + 0.01962858, + 0.009585568, + -0.0030271125, + -0.01795128, + -0.014638264, + -0.0061616553, + 0.0054165735, + -0.0100014275, + -0.007457752, + 0.026102131, + 0.01064601, + -0.02581103, + -0.006632963, + 0.0020810317, + -0.022373255, + 0.01962858, + -0.02227622, + 0.02073754, + 0.022096016, + 0.012392621, + 0.0016166548, + 0.00959943, + 0.013217409, + 0.0040130466, + -0.022165326, + -0.03102314, + -0.0034065845, + -0.029886454, + -0.0050007137, + -0.025824891, + -0.016870044, + -0.010957905, + 0.03041321, + -0.0050353687, + 0.0116648665, + 0.012080726, + -0.011172766, + 0.0035729285, + 0.0022629702, + 0.0014962287, + -0.00049340026, + 0.014139232, + 0.026975436, + -0.027280401, + 0.006137397, + 0.030219143, + 0.010902457, + -0.01677301, + -0.010978698, + 0.010084599, + -0.014104577, + 0.011041077, + -0.014305576, + 0.01935134, + 0.006650291, + -0.030357763, + 0.009294466, + -0.018173072, + -0.025492204, + 0.009661809, + -0.012496586, + -0.0017509429, + -0.012753033, + 0.013148099, + -0.029193355, + -0.011519316, + 0.023329733, + -0.006813169, + 0.0028347773, + -0.013626338, + -0.015691776, + -0.017424524, + 0.006868617, + -0.0036907555, + -0.014527367, + 0.0008711396, + 0.028444808, + 0.024161452, + -0.015594741, + -0.00765182, + 0.0016963613, + -0.027543778, + 0.014513506, + -0.014527367, + 0.0014832332, + -0.023482215, + -0.0013567425, + -0.00055924477, + -0.022913873, + -0.017105699, + -0.007478545, + -0.00821323, + -0.00849047, + 0.0015170218, + 0.20615555, + -0.010361839, + 0.005316074, + 0.03498767, + 0.006359189, + 0.020002855, + 0.010569769, + 0.022622772, + -0.0043388037, + 0.012822343, + -0.024410969, + 0.0005024972, + 0.014832332, + 0.013494649, + 0.01767404, + -0.011470798, + -0.022844562, + -0.037593722, + -0.026628887, + 0.025575375, + 0.013688717, + 0.0070938743, + -0.014132301, + -0.016537357, + 0.0015768016, + 0.008393437, + -0.02414759, + -0.017992865, + 0.02894384, + 0.011096525, + 0.00946081, + 0.011359903, + -0.025436755, + -0.00009031954, + -0.00029478394, + 0.019850373, + -0.0025696668, + 0.032880645, + 0.019947406, + 0.0016833657, + -0.0060854144, + -0.0077141984, + -0.014665987, + 0.0013550097, + -0.0038813578, + -0.011158904, + -0.0043388037, + 0.008455815, + -0.0034741617, + 0.027557641, + -0.033157885, + -0.008739986, + 0.020488024, + 0.026310062, + 0.0031154826, + -0.02324656, + 0.035597596, + 0.030108247, + 0.0028295792, + -0.015456121, + -0.02269208, + 0.01948996, + -0.0048482316, + 0.010722251, + -0.0019770667, + 0.020404853, + -0.023204975, + -0.003694221, + 0.012288656, + -0.0045536645, + -0.00062812155, + -0.013709511, + -0.0017492102, + 0.0068720826, + -0.02547834, + -0.017771075, + 0.027931914, + -0.01120742, + 0.0008572776, + 0.022345532, + 0.0006632097, + -0.0056452965, + -0.0043318723, + 0.003203853, + 0.0029907248, + -0.028153706, + 0.03645704, + 0.013356029, + -0.023981247, + 0.00026294467, + -0.0057735196, + -0.0056868824, + 0.0048413007, + -0.012337173, + 0.0003433009, + 0.005402711, + 0.0015308837, + 0.041696873, + -0.02310794, + -0.009821221, + -0.016662115, + -0.02484069, + 0.021527674, + -0.0028191826, + 0.009232087, + 0.008150851, + -0.008296402, + 0.017881969, + -0.006979513, + -0.014943227, + -0.015705638, + -0.012413414, + 0.020931609, + -0.014790745, + 0.022082154, + 0.0040823566, + -0.005364591, + -0.011997554, + 0.0015048925, + -0.0125936195, + 0.017244319, + 0.0049972483, + 0.0010630415, + -0.0035365408, + 0.016398737, + -0.012579758, + -0.026115993, + 0.009627153, + -0.002236979, + -0.036346145, + 0.011699521, + -0.0011574763, + 0.01260055, + 0.011110387, + -0.039201714, + 0.007014168, + 0.0024466417, + 0.007173581, + -0.006736928, + 0.018214658, + 0.0016556417, + -0.021236572, + -0.0068304967, + 0.01467985, + 0.0013541434, + 0.006276017, + 0.024119867, + -0.0045813886, + -0.0063661197, + -0.010978698, + -0.012572827, + 0.00010591428, + -0.023080217, + -0.020501886, + 0.0293597, + 0.006234431, + -0.021860361, + -0.026129855, + 0.0113321785, + 0.0115955565, + -0.018048314, + -0.0001495579, + 0.025464479, + 0.007686475, + -0.0003125446, + -0.010424218, + -0.17987321, + 0.017105699, + 0.016967079, + -0.01537295, + 0.025228826, + 0.020723678, + 0.021194985, + -0.0026805627, + -0.013411477, + 0.0053126086, + 0.02129202, + -0.0075339926, + -0.027613088, + -0.008462747, + -0.020917745, + 0.0026476404, + 0.0013913974, + 0.013563959, + 0.018200796, + 0.009828152, + 0.02380104, + -0.03396188, + 0.023856489, + -0.000010633394, + -0.011865865, + 0.00019287663, + -0.011366834, + 0.00932219, + -0.0020255835, + -0.033379678, + -0.01635715, + 0.000749414, + 0.041336462, + 0.02533972, + 0.008532057, + 0.03227072, + 0.0011921313, + 0.0057146065, + -0.015622465, + 0.010375701, + 0.00849047, + 0.006352258, + -0.0023946592, + -0.009433086, + -0.007901335, + 0.01621853, + 0.012704516, + -0.0065948428, + -0.0037704618, + 0.003167465, + -0.007048823, + -0.02636551, + -0.010743044, + -0.002940475, + 0.0076587508, + 0.013203547, + 0.0054512285, + 0.0013784019, + -0.0005761391, + 0.008871675, + -0.035874836, + -0.00025428092, + 0.017784936, + -0.021139538, + -0.011443075, + -0.011810417, + -0.02477138, + -0.013709511, + -0.021319743, + 0.016592804, + -0.012607482, + -0.015650189, + -0.0017076242, + -0.039700747, + -0.016010601, + 0.020765264, + -0.025921926, + 0.0051289373, + -0.008227092, + 0.0037704618, + -0.0067923763, + 0.046520844, + -0.013619407, + -0.0029040873, + 0.0058324332, + -0.005385384, + 0.0034568342, + 0.020418715, + -0.010847009, + -0.016939355, + 0.007346856, + -0.010382632, + -0.006546326, + -0.0097380495, + 0.023288148, + 0.016925493, + -0.016232394, + 0.027640812, + -0.013959026, + -0.016925493, + -0.00084731425, + -0.005551728, + -0.02136133, + 0.014090715, + 0.044053413, + 0.01447192, + -0.00060559576, + -0.0019372134, + 0.013605545, + -0.0006012639, + -0.019018654, + 0.0021018246, + 0.030856794, + 0.010763837, + -0.016010601, + 0.013515443, + 0.012323311, + -0.009135053, + 0.025145654, + -0.01760473, + 0.04410886, + -0.0073607177, + 0.0047026807, + 0.013113445, + 0.015109572, + -0.013418408, + -0.13895261, + -0.031272653, + 0.012129243, + 0.038647234, + 0.0032229132, + 0.02122271, + 0.008573642, + 0.0056314343, + 0.012940169, + 0.020862298, + -0.022816839, + -0.02212374, + 0.005447763, + 0.020973194, + 0.018741414, + -0.009377638, + -0.0021936602, + -0.023620835, + -0.012011416, + 0.022719806, + -0.0068998067, + -0.0014633066, + 0.0105767, + 0.006068087, + 0.008441953, + 0.008726124, + -0.020474162, + 0.021264296, + 0.012448069, + 0.0005076955, + 0.0013558761, + -0.023288148, + 0.019642442, + -0.036900625, + -0.0150264, + 0.024341658, + -0.009398431, + 0.000066169356, + 0.026102131, + -0.035375804, + 0.003411783, + -0.0036283764, + 0.024438692, + -0.02136133, + -0.007977577, + 0.0022733668, + -0.015650189, + 0.020224646, + 0.013903578, + -0.02073754, + -0.030302314, + 0.003527877, + -0.00959943, + -0.009356845, + 0.01940679, + -0.015469983, + -0.0005536133, + 0.024161452, + -0.004245235, + -0.0033060852, + 0.0023513404, + -0.009051881, + -0.0055274693, + 0.0034499033, + 0.0066260323, + 0.005343798, + -0.013321375, + -0.009211293, + 0.010458873, + -0.0014451126, + 0.0025367446, + 0.014901642, + -0.005420039, + 0.026670473, + -0.031050863, + -0.0069552544, + -0.015761085, + -0.0037600654, + 0.010950974, + -0.03069045, + -0.010978698, + -0.0155808795, + 0.006262155, + -0.0010517787, + 0.020196922, + 0.020890022, + 0.024854552, + 0.006137397, + 0.0030323109, + -0.0071943738, + 0.008608297, + -0.0058601573, + 0.023814902, + -0.0197672, + 0.008344919, + -0.00723596, + 0.012205484, + -0.021056365, + -0.007277546, + 0.02665661, + -0.02832005, + -0.02366242, + -0.10518479, + 0.017701764, + -0.0063487925, + -0.0024709, + 0.0029266132, + -0.002706554, + -0.0002720416, + -0.008109265, + 0.0049348692, + -0.037732344, + -0.03276975, + 0.013155031, + -0.0077141984, + 0.0068270313, + -0.031189483, + -0.014804607, + 0.026947713, + 0.018034453, + -0.0025280807, + -0.0100014275, + 0.00006822699, + 0.0013818673, + 0.012198553, + 0.016800735, + -0.024064418, + -0.005586383, + 0.011775763, + -0.0067750486, + -0.014160025, + 0.0057908474, + 0.0016253185, + -0.024549589, + 0.0033615332, + 0.040948324, + -0.004120477, + -0.01585812, + -0.03742738, + 0.01474916, + 0.012884722, + 0.0204603, + -0.023745593, + -0.026698196, + 0.025755582, + -0.017285904, + 0.014166956, + 0.021070229, + 0.0013264194, + 0.02400897, + 0.020903884, + 0.008220161, + -0.005822037, + 0.022068292, + 0.009897462, + -0.01843645, + -0.021264296, + -0.020931609, + 0.01642646, + 0.027640812, + 0.013965957, + -0.020987056, + 0.031633068, + 0.011962899, + 0.017355215, + -0.005402711, + 0.003238508, + -0.02170788, + -0.020557335, + -0.01405606, + -0.006255224, + -0.026060546, + -0.015733361, + -0.011644074, + 0.020432577, + 0.0064596883, + 0.034682706, + -0.006553257, + -0.00090622774, + -0.0044843545, + 0.0063765165, + 0.03160534, + -0.004879421, + 0.012829274, + -0.0456614, + 0.020820713, + 0.013563959, + 0.0033961881, + -0.014430334, + -0.016066048, + -0.021305881, + 0.020141475, + 0.019753339, + 0.010084599, + 0.02463276, + -0.010819285, + -0.003086026, + 0.01426399, + 0.019309755, + -0.019711753, + 0.0016504434, + 0.014638264, + 0.003673428, + -0.011290593, + -0.025977373, + -0.0016920294, + -0.018685965, + -0.013945164, + -0.026850678, + -0.022442566, + -0.0065740496, + 0.013702579, + 0.0093360515, + 0.021097952, + 0.008663745, + 0.02991418, + -0.0045605954, + 0.0057908474, + 0.00723596, + -0.014652126, + -0.026864542, + 0.017577006, + 0.046160433, + 0.019434514, + 0.028555704, + 0.0032575682, + 0.014180818, + 0.003694221, + -0.005489349, + -0.03681745, + 0.01767404, + -0.0073329937, + 0.0022491082, + -0.013861992, + -0.016454184, + -0.0030548365, + -0.008587504, + 0.0012934972, + 0.0026961574, + 0.018783, + -0.032242995, + 0.049431864, + -0.018519621, + -0.015885843, + -0.0016253185, + -0.005343798, + 0.017646316, + 0.00240159, + 0.018186934, + -0.032326166, + -0.005752727, + 0.007915198, + 0.0013454796, + 0.013758027, + -0.009065743, + -0.010535114, + -0.0056452965, + -0.040976048, + 0.0027117522, + -0.019850373, + 0.001718887, + 0.03415595, + 0.01495709, + 0.015899705, + 0.012552034, + -0.025686271, + -0.020474162, + 0.011498523, + 0.0055136075, + 0.00008230558, + -0.012053003, + 0.013314444, + -0.009751911, + -0.038924474, + -0.03096769, + -0.0020238508, + -0.0019891958, + -0.011165835, + -0.003458567, + 0.0043041487, + 0.014638264, + -0.0064388956, + 0.0429999, + -0.011290593, + -0.029526044, + 0.0103964945, + -0.0064354297, + -0.007346856, + -0.013584753, + -0.0008802365 + ] + }, + { + "object": "embedding", + "index": 8, + "embedding": [ + 0.011767127, + 0.006192154, + -0.0037607332, + -0.028241105, + -0.003828555, + 0.013503372, + -0.025406143, + 0.0040421947, + -0.009298404, + -0.010261477, + -0.004018457, + 0.0074604265, + -0.0018278045, + 0.0119773755, + -0.013076093, + -0.0055546267, + 0.033314195, + -0.00091305445, + 0.020034635, + -0.005205343, + -0.020780679, + 0.010403904, + 0.020210974, + -0.022530487, + -0.01789146, + -0.0061141583, + 0.015368478, + 0.0002994768, + -0.008905036, + -0.009352662, + -0.008735481, + -0.017376011, + -0.020333054, + -0.0075011197, + -0.010152962, + -0.0062396294, + -0.010770143, + 0.0021414815, + 0.0021041792, + -0.020021072, + 0.028078333, + -0.003923506, + -0.011305937, + 0.00513413, + -0.024253167, + 0.03917402, + 0.000032453914, + 0.012289356, + -0.020088894, + 0.026125057, + 0.004445736, + 0.019180078, + -0.021051968, + -0.018474728, + -0.02327653, + -0.015856797, + -0.013198173, + 0.019315721, + 0.0029129575, + -0.00022169335, + -0.025758818, + -0.024985647, + -0.018881662, + 0.008206469, + 0.0032673276, + 0.0022499969, + -0.015015803, + 0.006232847, + -0.0065414375, + 0.008769392, + 0.02859378, + -0.0094137015, + 0.008674441, + -0.004571207, + 0.018298391, + -0.01592462, + -0.026545553, + -0.0027891821, + -0.009725683, + -0.0009537477, + 0.010064794, + -0.011197422, + -0.015707588, + 0.026681198, + 0.022639003, + 0.012133366, + 0.004255834, + 0.029489031, + -0.0065448284, + 0.011923118, + 0.011061777, + 0.012764111, + -0.010749796, + 0.007080623, + -0.028729424, + -0.021255434, + -0.020441568, + 0.048045147, + -0.019966815, + -0.025107726, + 0.023466432, + -0.024958517, + -0.032147657, + -0.012811586, + -0.024985647, + -0.015368478, + -0.0141341165, + 0.0130354, + 0.009040681, + -0.004849277, + -0.014093423, + 0.03133379, + 0.021567414, + -0.06516343, + 0.005303685, + -0.01417481, + -0.022408407, + -0.031659335, + -0.009637514, + -0.02364277, + 0.023561383, + 0.031713594, + 0.017660864, + 0.0018244133, + 0.028485265, + -0.009149196, + -0.0013479633, + -0.021594543, + 0.0015031063, + -0.0018735843, + 0.027698528, + 0.008525233, + 0.021160481, + 0.0084235, + -0.017633734, + 0.018651066, + -0.015856797, + 0.023018807, + -0.012235099, + -0.023791978, + -0.016060263, + 0.01509719, + -0.032635976, + 0.0055546267, + -0.01220797, + 0.025894461, + 0.024700794, + 0.014459663, + 0.0021838702, + -0.0073044356, + 0.018705323, + -0.01589749, + 0.010098704, + -0.01669779, + 0.0071009696, + 0.010349646, + 0.008626966, + 0.027779914, + -0.011312719, + 0.0013589845, + -0.008498104, + 0.011895989, + 0.01405273, + -0.0033046298, + 0.037492033, + 0.009325533, + -0.0029044796, + 0.014961546, + 0.016236601, + -0.013510154, + -0.015015803, + 0.007826665, + -0.038821347, + 0.016874127, + 0.02361564, + 0.033287067, + 0.013693273, + -0.0076231994, + -0.020889195, + -0.0010478508, + -0.0061378963, + 0.021933654, + 0.030465668, + 0.026423473, + -0.033070035, + -0.012960795, + 0.03255459, + -0.013510154, + 0.0278613, + -0.01266916, + 0.019139385, + 0.026179314, + 0.021947218, + -0.01152975, + -0.66194326, + -0.003367365, + -0.010980391, + 0.021268997, + 0.0051002186, + 0.018189875, + 0.010573459, + 0.00056334696, + -0.025867334, + 0.0013691578, + -0.021363948, + 0.0028078333, + -0.0089999875, + 0.0003458925, + -0.0089999875, + -0.00086218794, + 0.0006595695, + -0.001080914, + 0.0008346352, + 0.009210235, + 0.0023144276, + 0.022082862, + 0.004238879, + -0.013455897, + 0.021920089, + 0.014120553, + 0.027942687, + -0.036813814, + -0.0042592254, + -0.0023686853, + -0.013062528, + 0.016250165, + -0.012472477, + -0.0058530434, + 0.020156715, + -0.00061675685, + -0.025080597, + 0.022462666, + -0.0069585433, + 0.04430137, + -0.014812337, + 0.0049408367, + 0.01869176, + -0.010512419, + -0.000081545426, + 0.004255834, + 0.026816841, + -0.0060531185, + 0.014066295, + 0.00074519485, + 0.010064794, + -0.025053468, + -0.012675943, + 0.0051917783, + 0.012621685, + 0.0023992052, + 0.016779177, + 0.0032673276, + 0.0030096038, + 0.012418219, + -0.0002490341, + -0.019030869, + -0.021174047, + -0.012370744, + 0.0007621504, + 0.015042933, + -0.01393065, + 0.00321307, + 0.0034826626, + -0.011027867, + -0.0049272724, + 0.022910291, + -0.011339848, + 0.010193655, + 0.0010359819, + 0.01346946, + 0.02026523, + -0.027752787, + 0.0006358318, + -0.011448364, + 0.007087405, + -0.004313483, + -0.04362315, + -0.010308953, + 0.040286303, + -0.021011274, + -0.011292373, + -0.011855296, + 0.033721127, + -0.02029236, + 0.012628467, + 0.01881384, + -0.008328549, + 0.010837965, + -0.0077927546, + 0.017457398, + -0.0039438526, + 0.01441897, + 0.008416717, + -0.016670661, + -0.0033588875, + -0.006215892, + 0.016507888, + 0.0053308136, + 0.012784458, + 0.0040896703, + -0.025039904, + 0.031496562, + 0.023086628, + -0.030547054, + -0.015599073, + -0.0017014858, + -0.0018871487, + 0.00043406116, + 0.02499921, + -0.034752022, + 0.009325533, + 0.029461902, + 0.03255459, + -0.015232834, + -0.0018735843, + -0.00079309416, + 0.0018244133, + -0.012397872, + -0.027467933, + 0.006880548, + -0.004221923, + -0.021146918, + 0.0033470185, + 0.0216488, + 0.004449127, + 0.0040998436, + 0.028648037, + -0.0063786646, + 0.039011247, + 0.009122067, + 0.033124294, + -0.011658612, + 0.007941963, + 0.005524107, + -0.031686466, + -0.012065544, + -0.00968499, + 0.0007252721, + -0.010397121, + -0.03846867, + -0.012099455, + -0.0051137833, + -0.03477915, + 0.016073829, + 0.001085153, + -0.0035030092, + -0.015110754, + 0.0010902396, + -0.016223036, + -0.020305924, + 0.0006366796, + -0.003050297, + -0.022096427, + -0.0068398546, + 0.0024314208, + 0.0065177, + -0.01122455, + -0.015639767, + 0.0022059125, + -0.0018295, + 0.02521624, + 0.011319501, + -0.012831934, + -0.014106988, + -0.0062192827, + 0.00008382383, + -0.015029368, + 0.024456633, + 0.0154634295, + -0.0060904208, + 0.01122455, + 0.015232834, + 0.0076978034, + 0.023018807, + 0.010519201, + -0.0033521052, + -0.029868834, + -0.010492072, + 0.029380515, + -0.00038086323, + 0.028566651, + -0.0012555559, + -0.011631483, + 0.0016116217, + 0.0076503283, + 0.0034657072, + 0.0006366796, + 0.0027739222, + 0.002623018, + 0.0054257647, + -0.007019583, + -0.0019532752, + 0.010505637, + 0.0057173995, + 0.021133354, + 0.0078198835, + 0.019478494, + 0.009305187, + 0.0062396294, + -0.018935919, + -0.014269761, + -0.016440067, + 0.019505624, + 0.0036149158, + 0.021418206, + -0.021445334, + -0.020102458, + -0.0015861883, + -0.0040659322, + 0.03111676, + -0.015666895, + 0.004225314, + -0.0042897454, + -0.007745279, + 0.009603604, + -0.017335318, + -0.0048967525, + 0.010186873, + -0.045549296, + 0.013089657, + 0.011122817, + 0.01958701, + -0.0038014264, + -0.013781442, + -0.017253932, + 0.003984546, + 0.003659, + 0.011177075, + -0.029895963, + 0.0066126506, + 0.018434035, + -0.020563647, + 0.03543024, + -0.0011394105, + 0.02330366, + 0.028213976, + 0.024877131, + -0.024822874, + 0.0031774633, + -0.007704586, + 0.026925357, + 0.008213251, + -0.007908052, + -0.0012487737, + -0.011319501, + 0.01331347, + -0.0025941937, + -0.0067855967, + 0.0020855283, + -0.0051002186, + 0.018705323, + -0.0120791085, + 0.01854255, + 0.022462666, + -0.010871876, + -0.0044694734, + 0.006656735, + -0.006883939, + -0.00055020646, + 0.013164261, + 0.016833434, + 0.0017565913, + -0.032174785, + -0.02422604, + -0.0034114495, + -0.020590777, + 0.01168574, + -0.011394106, + 0.01134663, + -0.018732453, + -0.015694024, + -0.025080597, + 0.0060056434, + 0.005476631, + -0.005144303, + -0.029570417, + 0.011461928, + 0.016087392, + -0.01116351, + -0.021879395, + -0.015273527, + 0.00019021968, + -0.00412019, + 0.018149182, + 0.014147681, + 0.014364712, + -0.007541813, + 0.0038658574, + -0.011611137, + -0.011550097, + 0.029190613, + -0.021282561, + -0.005710617, + -0.003367365, + -0.007948745, + -0.02429386, + 0.0066024773, + -0.008247162, + 0.024185346, + 0.011109253, + -0.013015053, + -0.014120553, + 0.0029875617, + -0.019139385, + -0.0019142776, + 0.015816104, + 0.0033724518, + 0.014785209, + 0.002041444, + 0.007806319, + -0.0040455856, + 0.0054596756, + 0.018244134, + -0.007643546, + 0.004903535, + -0.030357152, + -0.023710592, + -0.020834936, + 0.121645644, + -0.0028061375, + -0.0020516173, + 0.002687449, + 0.006293887, + -0.0049883123, + -0.010654845, + -0.0035538757, + 0.0024941561, + -0.00027467933, + 0.0071348804, + -0.01337451, + -0.00839637, + 0.0119773755, + -0.00059174746, + -0.0060395543, + -0.016467195, + 0.0031384658, + 0.0047916286, + -0.015259963, + -0.00056037976, + -0.031035373, + 0.011536532, + 0.03358548, + -0.005931039, + 0.01488016, + 0.013510154, + 0.009373008, + 0.01226901, + -0.032853004, + -0.007813101, + 0.029678933, + -0.008152211, + 0.022299893, + 0.0062091094, + 0.026721891, + 0.021119788, + 0.013984908, + 0.023113757, + -0.013449114, + 0.009590039, + 0.012580992, + 0.0135305, + -0.018284827, + 0.032527458, + -0.021363948, + 0.0012903146, + 0.016874127, + -0.0016523149, + -0.021363948, + 0.03274449, + 0.016155215, + -0.03160508, + 0.0032842832, + -0.010688757, + 0.013944215, + 0.0041778386, + -0.0007443471, + 0.0008295485, + 0.012811586, + -0.0032045923, + -0.038360156, + 0.00642614, + -0.0014954763, + -0.01036321, + -0.024036137, + -0.0013293123, + 0.015965313, + -0.021784445, + -0.010180091, + 0.0051544765, + -0.027481498, + -0.013849264, + 0.023886928, + 0.010892223, + -0.0073383464, + 0.027237339, + -0.004717024, + -0.010295388, + 0.02339861, + -0.022856034, + 0.00039485155, + -0.010946481, + -0.010756578, + -0.03225617, + 0.024632972, + 0.023832671, + -0.015300657, + -0.011482274, + 0.0069381967, + 0.010458161, + 0.017850766, + 0.019139385, + 0.014256196, + -0.006822899, + -0.012587774, + -0.01263525, + 0.012614903, + -0.016223036, + -0.019573446, + 0.020238101, + -0.01696908, + 0.001300488, + 0.005049352, + 0.019898992, + 0.031822108, + 0.018271262, + 0.015178576, + -0.010661627, + 0.012499605, + 0.027549319, + -0.034236576, + 0.0260708, + 0.012804804, + -0.015259963, + 0.0049544014, + -0.0015319308, + 0.01205198, + 0.020183844, + -0.0042049675, + -0.008003003, + -0.011970594, + 0.012859062, + 0.027006743, + -0.0051137833, + 0.0050391788, + -0.015734717, + 0.001179256, + -0.0011343239, + 0.015571944, + 0.0024687229, + 0.023357917, + -0.018054232, + -0.00590391, + -0.026247136, + 0.0019871863, + -0.018366214, + 0.013028617, + -0.009291622, + -0.009834198, + -0.012770893, + 0.014825902, + 0.0061684162, + -0.022828905, + -0.026437039, + -0.024958517, + 0.0025009385, + 0.0004192251, + -0.023127321, + 0.01577541, + -0.00020802298, + 0.011102471, + -0.011326283, + 0.007813101, + -0.019085128, + -0.014364712, + -0.027264467, + -0.02330366, + -0.0029044796, + 0.02337148, + 0.03871283, + -0.0048255394, + 0.025012774, + -0.0033843208, + 0.013449114, + -0.00035479415, + 0.008348895, + 0.012140148, + -0.027996946, + 0.0032825875, + 0.010003754, + -0.0071009696, + -0.009895238, + 0.01079049, + -0.011733216, + 0.021798009, + -0.0001939287, + -0.0117196515, + -0.011482274, + -0.0063074515, + -0.023385046, + -0.029299129, + -0.015599073, + -0.001655706, + -0.016521454, + -0.007284089, + 0.022055734, + 0.0025297627, + 0.0097731585, + -0.017362447, + -0.0014446098, + -0.008369242, + 0.02878368, + -0.000865579, + -0.020305924, + -0.0027111867, + 0.00581235, + -0.020468697, + -0.018990176, + 0.024022574, + 0.000786312, + 0.0019804041, + -0.012926884, + 0.021892961, + 0.0047509354, + 0.01325243, + 0.01266916, + 0.0044355625, + 0.010770143, + -0.018949483, + -0.016467195, + -0.008470975, + -0.0112584615, + -0.021825138, + -0.009020334, + 0.012418219, + 0.0021346994, + 0.027807044, + -0.028159719, + -0.01881384, + 0.012106237, + 0.006965325, + 0.011183857, + 0.004316874, + 0.025067033, + 0.013598323, + 0.0029739973, + -0.022747518, + 0.014500356, + -0.011482274, + -0.009020334, + 0.047475442, + 0.022367714, + 0.004686504, + -0.022856034, + 0.0004115951, + 0.0035504848, + -0.006866983, + -0.0008626118, + 0.04427424, + 0.0100783575, + -0.0015200619, + -0.0067381216, + -0.004157492, + -0.030248638, + 0.0049544014, + -0.0084913215, + -0.005941212, + -0.026789714, + -0.015504123, + -0.0094611775, + 0.00044635392, + -0.0076910215, + 0.0075689415, + 0.0061378963, + -0.018623937, + -0.0045915535, + 0.0038794216, + -0.014636, + 0.02524337, + 0.02398188, + 0.011611137, + -0.0125402985, + 0.013523718, + 0.023900494, + -0.0043338295, + -0.013754313, + -0.016006006, + -0.00359796, + 0.022245634, + -0.01395778, + 0.0010495463, + 0.0071416628, + -0.010214002, + 0.024307426, + 0.003129988, + 0.017552348, + -0.0032215477, + -0.012872627, + -0.0020550084, + 0.005602102, + 0.030411411, + 0.006144678, + -0.003209679, + -0.034724895, + -0.020373747, + -0.004744153, + -0.0065821307, + 0.02152672, + 0.014825902, + -0.0055614086, + 0.002407683, + -0.024578713, + 0.011733216, + 0.0022533878, + -0.01749809, + 0.0012428393, + 0.029353386, + -0.021784445, + 0.00777919, + 0.008688006, + 0.022340586, + -0.023168014, + -0.008199687, + 0.004676331, + -0.006226065, + 0.021024838, + 0.0031537258, + -0.0027162733, + -0.011448364, + -0.016440067, + -0.0044966023, + -0.008165776, + -0.0050222236, + 0.037709065, + -0.0021635236, + -0.0039981105, + -0.0034182316, + -0.023534253, + 0.03363974, + -0.017240368, + 0.006677082, + 0.020129588, + -0.014866595, + 0.0015980572, + 0.022367714, + 0.0094137015, + 0.007860577, + -0.005005268, + -0.030004479, + 0.0061209407, + 0.016223036, + -0.007324782, + -0.028539522, + -0.01577541, + -0.013564412, + -0.012519952, + 0.027549319, + -0.0050696987, + -0.006907677, + 0.008464193, + 0.017782943, + 0.05577686, + 0.003662391, + -0.004649202, + -0.023317223, + -0.011495839, + -0.0009774854, + -0.03391103, + -0.00029269457, + -0.0041371454, + 0.02364277, + -0.011509404, + -0.014825902, + -0.022055734, + 0.008199687, + -0.039770856, + 0.008118301, + -0.014324019, + 0.020929888, + 0.008755827, + 0.008321767, + 0.013110003, + 0.004544078, + 0.0013572889, + 0.0061514606, + -0.018067796, + -0.006622824, + 0.02232702, + -0.04061185, + 0.016128086, + -0.012018069, + -0.014703822, + 0.017606607, + 0.020319488, + 0.0041642743, + -0.0009791809, + 0.02152672, + -0.029434772, + 0.0070399297, + 0.0039404617, + 0.014012037, + -0.0020075329, + 0.021174047, + 0.0014081554, + -0.024619406, + 0.012506387, + 0.024470199, + -0.012065544, + 0.0012716636, + 0.018339084, + 0.000033884535, + 0.0063854465, + 0.015382043, + -0.013639016, + 0.002948564, + 0.024266733, + -0.025962284, + 0.024755051, + -0.015219269, + 0.0060124253, + 0.0067313393, + -0.008247162, + 0.0026399735, + 0.004052368, + 0.017850766, + -0.03206627, + -0.011597572, + 0.01786433, + -0.014947982, + -0.0077249324, + 0.005469849, + 0.0145953065, + -0.03751916, + -0.009508653, + -0.014907288, + -0.0064498778, + -0.015124319, + 0.027508626, + 0.019478494, + -0.013150697, + -0.012614903, + -0.009671425, + -0.020780679, + 0.005340987, + -0.023045935, + 0.006656735, + -0.013110003, + -0.009352662, + -0.0010936307, + -0.0047543263, + -0.02133682, + -0.0060836384, + 0.002139786, + 0.008403153, + 0.0057614837, + 0.2369974, + -0.027996946, + 0.0017379402, + 0.025962284, + 0.007975874, + 0.011292373, + 0.03382964, + 0.0141341165, + -0.012465694, + 0.000540457, + -0.031008245, + 0.0068873297, + 0.004554251, + 0.007880923, + 0.0063447533, + 0.0011190639, + -0.032418944, + -0.05669924, + -0.019600574, + -0.009556128, + -0.0020702684, + -0.000778682, + -0.008755827, + -0.013428767, + 0.022299893, + 0.010776925, + -0.010770143, + -0.014446098, + 0.017660864, + 0.0056224484, + -0.012553863, + -0.0012046893, + -0.018895226, + 0.007941963, + 0.0037471687, + 0.015273527, + -0.01657571, + -0.0022211724, + 0.0013683101, + 0.020129588, + -0.009637514, + -0.004327047, + -0.0024941561, + -0.021892961, + -0.023262966, + 0.015219269, + -0.011631483, + -0.005378289, + -0.014527485, + 0.027617142, + -0.04796376, + -0.0069348053, + 0.019641267, + 0.03339558, + 0.002389032, + -0.012920102, + 0.0445184, + 0.012302921, + -0.009020334, + -0.015042933, + -0.038875602, + 0.0072637424, + -0.011299155, + 0.0008672746, + -0.009528999, + 0.0145410495, + -0.029597547, + -0.00830142, + 0.0029282174, + 0.0120791085, + -0.008572708, + -0.02398188, + -0.009786723, + -0.0017938934, + -0.019112255, + -0.036216978, + 0.013815354, + 0.0077588432, + -0.004510167, + 0.02432099, + -0.0031435525, + -0.009474741, + 0.017036902, + 0.014120553, + 0.016467195, + -0.015354914, + 0.0064668334, + 0.0222592, + -0.009386573, + -0.0096171675, + 0.0012682725, + -0.016331552, + -0.003726822, + -0.0099766245, + 0.00986811, + 0.016385809, + 0.003246981, + 0.02582664, + -0.030438539, + -0.02133682, + -0.0073722578, + -0.02063147, + 0.025596045, + 0.013123568, + 0.017782943, + -0.010661627, + 0.006619433, + 0.012648813, + -0.013849264, + -0.013869611, + -0.0057818303, + -0.022544052, + -0.00025030578, + -0.009495088, + 0.018013539, + -0.00030901426, + 0.014256196, + -0.020739986, + 0.0150022395, + -0.01980404, + 0.010939698, + -0.014364712, + 0.014093423, + 0.0084913215, + 0.0010351342, + -0.0096171675, + -0.020943452, + 0.0030486016, + -0.014215503, + -0.0432976, + -0.011556879, + 0.007975874, + 0.0040693237, + -0.008057261, + -0.031930625, + -0.0013801788, + -0.00035288665, + -0.008437064, + -0.006198936, + 0.005683488, + 0.0019804041, + -0.0076638926, + 0.011088907, + 0.0042320965, + -0.009657861, + -0.0021804792, + 0.0025806292, + -0.0050663077, + -0.008565926, + -0.007514684, + -0.006002252, + -0.0061819805, + -0.015788974, + -0.026314959, + 0.036542524, + -0.017552348, + 0.0044355625, + -0.024917824, + 0.0041676653, + 0.022164248, + -0.033558354, + -0.012248663, + 0.027834173, + -0.014473227, + -0.0063820556, + 0.010044447, + -0.17655438, + 0.025311192, + 0.019790476, + -0.0055274977, + 0.013218519, + 0.0091017205, + 0.0186375, + 0.01128559, + -0.025107726, + -0.0005629231, + 0.022896728, + 0.0038963773, + -0.043080572, + -0.024158217, + -0.018203441, + -0.021174047, + -0.0057038353, + -0.0063379714, + 0.009705337, + 0.016765613, + 0.02693892, + -0.019912556, + 0.022544052, + -0.016290858, + 0.00538168, + -0.011706087, + -0.014012037, + 0.0154634295, + -0.008464193, + -0.018054232, + -0.027942687, + -0.010987174, + 0.03184924, + 0.007080623, + 0.0032842832, + 0.040666107, + -0.01233005, + 0.005364725, + -0.01681987, + 0.016358681, + 0.02813259, + 0.033721127, + -0.004971357, + 0.0026671025, + -0.015327785, + 0.021798009, + -0.0040693237, + -0.0050595254, + 0.0013920477, + -0.0069280234, + 0.013598323, + -0.010770143, + 0.01417481, + 0.021947218, + 0.008403153, + 0.004384696, + -0.0041167988, + -0.0077588432, + -0.0097731585, + 0.002555196, + -0.03502331, + -0.011909554, + 0.0059513855, + -0.019980378, + -0.009142414, + -0.010715885, + -0.022530487, + -0.0041405368, + -0.019424237, + 0.017972846, + -0.015192141, + -0.021079095, + 0.011210986, + -0.0140798595, + 0.018271262, + 0.009081374, + -0.0107972715, + 0.018596807, + 0.014378277, + 0.011149947, + 0.0045983354, + 0.051816054, + -0.012804804, + 0.025677431, + -0.0056631416, + -0.005144303, + -0.007514684, + 0.012309703, + -0.019546317, + -0.011061777, + 0.01774225, + -0.009467959, + -0.018311955, + -0.022408407, + 0.011502621, + 0.025379013, + -0.0042320965, + 0.0036013513, + -0.0033656696, + -0.0006430379, + 0.0108244, + 0.0065380465, + -0.023195144, + 0.019790476, + 0.032853004, + 0.02536545, + 0.017131852, + -0.0035742226, + 0.00535116, + 0.02235415, + -0.0278613, + -0.01497511, + 0.011265243, + 0.016833434, + -0.030465668, + 0.01614165, + 0.015300657, + -0.024334554, + 0.012567427, + -0.024850002, + 0.048018016, + -0.0036149158, + 0.00071085995, + 0.019329287, + -0.0040388037, + 0.0035674402, + -0.090990074, + -0.041344326, + 0.0052833385, + 0.02533832, + -0.00067525334, + 0.029190613, + -0.008938947, + -0.011407671, + 0.021540286, + 0.029461902, + -0.030058736, + 0.0044999938, + 0.018718887, + 0.011645047, + 0.03155082, + -0.01263525, + 0.004717024, + -0.009203454, + -0.011292373, + 0.017782943, + -0.008118301, + -0.003923506, + -0.00016118336, + -0.0014963242, + -0.009196671, + -0.0014708908, + -0.025650302, + 0.010614152, + 0.024185346, + 0.010810836, + 0.00802335, + -0.032120526, + 0.014798773, + -0.02337148, + -0.014147681, + 0.0052901204, + -0.016901257, + 0.013442332, + 0.030248638, + -0.012445347, + -0.011278808, + -0.002112657, + 0.030492797, + -0.023683462, + 0.008586273, + -0.010817618, + -0.009888456, + 0.015721153, + 0.015911054, + -0.0178372, + -0.013204955, + -0.01180782, + -0.028186847, + -0.0184476, + 0.019437801, + -0.028702294, + -0.0058225235, + 0.014378277, + -0.014730951, + 0.0011699304, + -0.0031706812, + -0.007155227, + -0.028892197, + 0.032825876, + -0.005700444, + 0.0044084336, + -0.020360181, + -0.0014395232, + 0.01856968, + -0.008667659, + -0.0033436276, + 0.0033131074, + -0.02997735, + 0.013408421, + -0.013279559, + 0.009237364, + 0.0001644685, + -0.009752812, + -0.00019668396, + -0.035565887, + -0.009495088, + -0.022286328, + 0.0047305888, + -0.00916276, + 0.026735455, + 0.014798773, + -0.0037471687, + -0.005568191, + 0.0054528937, + -0.033015776, + 0.008898254, + -0.00013479634, + 0.018434035, + -0.025202677, + -0.00003764654, + 0.010261477, + -0.00928484, + -0.017810073, + 0.02444307, + 0.018203441, + -0.019275028, + -0.019315721, + -0.10292675, + 0.0049374457, + 0.0071687917, + -0.0027145778, + 0.014812337, + -0.0044999938, + 0.014527485, + -0.015666895, + -0.0020380528, + -0.007019583, + -0.040259175, + 0.0020990926, + -0.015368478, + 0.0020397485, + -0.016670661, + -0.009501871, + 0.025677431, + 0.02613862, + -0.009474741, + 0.013727184, + 0.018718887, + 0.0013979821, + -0.008504886, + 0.00050061155, + -0.0073926044, + 0.004686504, + 0.00042367593, + 0.015219269, + -0.015219269, + -0.01152975, + 0.01970909, + -0.02711526, + 0.0034572294, + 0.026084363, + 0.00096646434, + -0.009908803, + -0.008660877, + 0.0054495023, + -0.010492072, + 0.031523693, + -0.013327034, + -0.0059106923, + 0.012228317, + -0.01239109, + 0.003338541, + -0.009088156, + 0.012235099, + 0.018556114, + 0.011489057, + 0.019912556, + -0.01337451, + 0.023412174, + -0.0045949444, + -0.013293123, + -0.015165012, + -0.009508653, + 0.011509404, + 0.007914834, + 0.016494324, + -0.01614165, + 0.010295388, + -0.00470346, + 0.010675192, + -0.0006421901, + 0.019410674, + -0.029000713, + -0.016562147, + 0.004198185, + 0.00088083895, + -0.026274266, + -0.009271275, + -0.023344353, + 0.025813075, + 0.013110003, + 0.02121474, + -0.0034267094, + 0.01174678, + -0.02533832, + -0.03206627, + 0.04077462, + 0.0055308887, + 0.008966076, + -0.024741488, + 0.015883926, + 0.023778414, + -0.00676525, + -0.018434035, + -0.014486792, + 0.0021720014, + 0.010905787, + 0.007813101, + -0.000060509992, + 0.01587036, + -0.011265243, + -0.0094611775, + -0.003950635, + -0.015883926, + -0.004917099, + -0.0045372956, + 0.02133682, + 0.026152186, + 0.006527873, + -0.01079049, + -0.01100752, + -0.015571944, + 0.025379013, + -0.0006040402, + -0.021051968, + -0.0007231527, + 0.026599811, + 0.020156715, + 0.004645811, + -0.0060124253, + 0.01657571, + -0.0016336638, + 0.014351147, + 0.0012504692, + -0.004445736, + -0.02330366, + 0.0017498091, + 0.031876367, + 0.02213712, + 0.025894461, + -0.0012665769, + 0.019980378, + 0.0065143085, + 0.0032859787, + -0.02650486, + -0.01128559, + -0.003338541, + -0.0075214664, + -0.0055546267, + -0.031496562, + -0.01842047, + -0.004649202, + -0.0020227928, + 0.022964548, + 0.025718125, + -0.025161983, + 0.037898965, + -0.012642032, + -0.013733966, + 0.008084389, + -0.015110754, + 0.019424237, + -0.00081513636, + 0.027264467, + -0.025609609, + -0.024632972, + 0.0007235766, + 0.014405405, + 0.0005769114, + -0.036759555, + -0.025636738, + -0.016684227, + -0.03415519, + 0.016331552, + -0.023045935, + 0.02060434, + 0.040449075, + 0.01568046, + -0.006158243, + 0.0067279483, + -0.027101694, + 0.004601727, + 0.028376749, + 0.0073383464, + -0.003360583, + -0.022530487, + 0.023412174, + 0.0047339797, + -0.028431006, + -0.021798009, + 0.010865093, + -0.0058089592, + -0.007704586, + -0.010749796, + 0.030764086, + 0.012764111, + -0.02133682, + 0.033097163, + -0.022042168, + -0.04514236, + 0.014934417, + -0.0092238, + -0.012587774, + -0.0022652568, + -0.020007508 + ] + }, + { + "object": "embedding", + "index": 9, + "embedding": [ + -0.008189119, + -0.0015157744, + 0.0074148276, + -0.034777507, + -0.021128977, + 0.0044751437, + -0.019960977, + 0.020341562, + -0.017729968, + -0.0353287, + 0.022835044, + -0.0058432776, + 0.012998914, + 0.0019521337, + -0.010229837, + -0.01561707, + 0.016115766, + -0.011404398, + 0.008445029, + -0.0051181996, + -0.008208805, + 0.027297063, + -0.010879455, + -0.008215366, + 0.0019783808, + 0.0065093, + -0.002918358, + -0.016535722, + 0.0061976146, + -0.024475493, + 0.013307318, + -0.028793152, + -0.024449244, + -0.037244745, + 0.011791544, + -0.011798106, + -0.015984531, + -0.008733748, + 0.006151682, + -0.009494917, + 0.012887363, + -0.011023814, + -0.003313706, + -0.010026421, + -0.021404572, + 0.015722059, + -0.0073098387, + -0.003343234, + -0.028688164, + 0.006670064, + 0.021535808, + 0.022441337, + -0.0248692, + 0.0019258866, + -0.025590997, + -0.013806015, + -0.015577699, + -0.0004457919, + -0.017323136, + -0.010761342, + -0.0062993225, + -0.01956727, + -0.015630193, + 0.024081785, + 0.0025951895, + -0.018438641, + -0.0024196615, + 0.0134385545, + 0.0038714586, + 0.02171954, + 0.030525466, + -0.0061352775, + 0.012847993, + -0.0032087173, + 0.014212846, + 0.0012319769, + -0.019829743, + 0.013333566, + -0.0075263777, + 0.0059023337, + 0.004183144, + -0.042940382, + -0.030079264, + 0.026247177, + 0.017415002, + 0.009199635, + -0.031549107, + 0.023950549, + -0.006975187, + -0.0041929865, + 0.022034505, + 0.021916393, + 0.022467583, + 0.0011507747, + -0.032756478, + 0.014147229, + -0.0021407853, + 0.037717193, + -0.014186599, + -0.012231184, + 0.011955589, + -0.005836716, + -0.010846646, + -0.02040718, + -0.0014239093, + 0.008930602, + -0.02175891, + -0.034357555, + 0.013543543, + -0.016378239, + -0.013451678, + 0.014750914, + 0.0056398623, + -0.041234314, + -0.002867504, + -0.023071269, + 0.003335032, + -0.0158008, + -0.025840346, + -0.038609598, + 0.020538416, + 0.021772033, + 0.010754781, + -0.020367809, + 0.037795935, + 0.0056004915, + -0.00057210645, + -0.019304799, + -0.008504085, + 0.0029298412, + 0.021207718, + -0.0065093, + -0.0076576136, + 0.0034711892, + -0.013327004, + 0.023058144, + -0.033412658, + 0.009711456, + -0.018123675, + -0.035197463, + 0.0015379206, + 0.028241962, + -0.0060926257, + 0.020748394, + -0.007040805, + 0.020039719, + 0.0023310774, + 0.004842604, + 0.013195768, + -0.025407268, + 0.018661743, + -0.022808796, + 0.0075066923, + 0.0073229624, + 0.0025361334, + 0.012559274, + 0.012847993, + 0.019409787, + 0.007972579, + 0.0030331893, + -0.0024311447, + -0.007106423, + 0.030997915, + -0.034278814, + 0.020328438, + 0.016207632, + 0.012008083, + -0.0034908745, + 0.0060335696, + -0.016430732, + -0.010347949, + 0.020275945, + -0.018254912, + 0.02077464, + 0.013792891, + 0.009914871, + 0.0066208504, + 0.022716932, + -0.022231359, + -0.0051542893, + 0.007244221, + 0.008655006, + 0.007841344, + 0.028688164, + 0.0038124025, + 0.0062665134, + 0.025761604, + -0.017139407, + -0.00019572601, + -0.02282192, + -0.004406245, + 0.02398992, + 0.023635583, + -0.010846646, + -0.6702479, + -0.016666956, + -0.011286286, + -0.0068701985, + 0.017454373, + 0.0113847125, + 0.022401966, + 0.017651226, + -0.02165392, + -0.013117027, + -0.011732488, + 0.0056004915, + 0.0064469627, + -0.012933296, + -0.013963498, + -0.0033547173, + 0.01459343, + -0.0063583786, + -0.029370591, + 0.0076641757, + -0.013451678, + -0.0011868646, + -0.0036253913, + -0.004334065, + 0.024436122, + 0.0033924475, + 0.0030594366, + -0.0072639063, + -0.010525118, + 0.0064141536, + -0.03566991, + 0.016614463, + 0.018044934, + -0.0039042674, + 0.047271166, + 0.0016666957, + -0.023740571, + -0.0036549193, + 0.024344256, + 0.009389928, + 0.0054397276, + -0.0039436384, + 0.009055276, + -0.010420129, + -0.001067932, + 0.008864984, + 0.014068487, + -0.006830828, + 0.015564576, + 0.018569877, + 0.017861204, + 0.0023720886, + -0.013215453, + -0.005255997, + 0.007165479, + -0.0031102905, + 0.008733748, + 0.0010654713, + 0.019659135, + -0.009245568, + -0.004215953, + -0.005095233, + -0.036116116, + -0.008727186, + -0.01232305, + 0.014094734, + -0.010288893, + 0.0016552126, + -0.00054914015, + -0.009265253, + 0.008438467, + 0.035092477, + -0.018189294, + -0.001996426, + 0.01748062, + 0.019002955, + 0.015498958, + -0.006817704, + 0.006214019, + -0.0067783333, + 0.018373024, + 0.004275009, + -0.008536894, + 0.014107858, + 0.011620938, + -0.027218321, + -0.033412658, + 0.008641883, + 0.0015239767, + -0.0006393648, + 0.01057105, + 0.024724841, + -0.01700817, + 0.001861909, + -0.014002869, + 0.01085977, + 0.013884757, + 0.020827135, + 0.013832262, + -0.008943725, + -0.011030376, + -0.024987312, + -0.011305971, + 0.0008915838, + 0.0012877521, + 0.008038198, + 0.009245568, + 0.01155532, + 0.025039807, + -0.043622807, + 0.004199548, + -0.02128646, + -0.048583522, + -0.008674691, + 0.025722234, + -0.029239355, + 0.022428213, + -0.0057875025, + 0.016338868, + -0.014882149, + -0.0033727621, + -0.007447636, + 0.012054016, + -0.008333478, + 0.018228665, + 0.009501478, + 0.008661568, + -0.017205024, + -0.009258691, + 0.001945572, + -0.0033104252, + 0.018386148, + 0.014724666, + 0.001847145, + 0.023740571, + 0.0032497286, + 0.005416761, + -0.0147377895, + 0.0049508736, + -0.019331045, + -0.023228751, + -0.0043110987, + -0.012716757, + -0.008976534, + -0.0056234575, + -0.020538416, + -0.012382106, + -0.023058144, + -0.041890495, + 0.011647184, + -0.021496437, + -0.010282331, + -0.0408931, + 0.009711456, + -0.00541348, + -0.015328351, + 0.004275009, + -0.02194264, + 0.0049279076, + -0.0041503347, + 0.021181472, + 0.021968886, + -0.03162785, + -0.003251369, + 0.022362594, + -0.0034875935, + 0.023136886, + 0.016430732, + -0.0013189206, + -0.010708848, + -0.00113355, + -0.009567096, + 0.0021342235, + 0.0020948527, + 0.032231532, + 0.016443856, + -0.006243547, + -0.0026690098, + -0.0036221105, + -0.0005782581, + 0.00039739866, + -0.02161455, + -0.01389788, + 0.00892404, + 0.009718017, + 0.005160851, + 0.01631262, + 0.019751001, + -0.022769425, + 0.00041236775, + -0.016811317, + 0.0034318184, + -0.014829655, + 0.005761255, + -0.0048918175, + -0.00039657843, + -0.0082481755, + 0.005964671, + 0.0003272695, + 0.022113247, + 0.025315402, + -0.010892578, + 0.0017733249, + -0.005679233, + -0.006670064, + -0.031549107, + 0.012624892, + -0.02161455, + 0.021010865, + 0.0066339737, + 0.014291587, + -0.024344256, + 0.0053445813, + 0.015236486, + 0.021955764, + 0.04047315, + -0.01013141, + 0.0011868646, + 0.014396576, + 0.01013141, + -0.010807275, + -0.022953156, + -0.0036811666, + 0.0059056147, + -0.012099949, + 0.015669564, + 0.006177929, + 0.027769513, + -0.004809795, + -0.023556842, + -0.022283852, + 0.008385973, + 0.010052669, + 0.008169434, + -0.01645698, + -0.0076379282, + 0.011719365, + -0.028556928, + 0.019698506, + -0.0035597733, + 0.02556475, + -0.010741657, + 0.033780117, + 0.0023671673, + -0.005446289, + -0.00314474, + 0.032940205, + 0.005767817, + -0.024987312, + 0.02673275, + -0.014252217, + -0.00438984, + 0.00043758965, + -0.004685121, + 0.010183904, + -0.016443856, + 0.03262524, + -0.008490962, + 0.005797345, + 0.037061013, + -0.0019586955, + -0.0102495225, + 0.014803408, + 0.002326156, + 0.00047942108, + -0.018438641, + 0.029738052, + -0.010623544, + -0.007677299, + -0.010374197, + -0.010052669, + -0.01232305, + 0.031286635, + -0.021877022, + 0.011588128, + -0.028530682, + -0.004078155, + -0.013248262, + -0.0003565925, + -0.00917995, + -0.014422824, + -0.023097515, + 0.014449071, + 0.009173389, + -0.0076116812, + -0.017454373, + -0.0017536395, + 0.0048196376, + -0.008359726, + 0.051234487, + 0.0031004478, + 0.03236277, + -0.0054955026, + -0.00259683, + -0.0030692792, + -0.0050394577, + 0.029318096, + -0.017834956, + -0.010223275, + -0.017401878, + 0.018281158, + -0.010649792, + -0.008162872, + 0.0011745611, + 0.05141822, + 0.007139232, + 0.00053642667, + -0.0068964455, + -0.005922019, + -0.009501478, + 0.008930602, + 0.0059909183, + -0.005101795, + -0.0030988073, + -0.011102555, + -0.018858597, + -0.006975187, + 0.009875501, + 0.015643317, + -0.009534287, + -0.005236312, + -0.030840432, + -0.017992439, + -0.016155137, + 0.10467374, + -0.0028100885, + -0.0047376156, + 0.004537481, + 0.0029052345, + 0.014278464, + 0.00071441534, + 0.005823592, + 0.015971407, + -0.0052428734, + 0.009823006, + -0.033727624, + 0.016391361, + 0.0060795024, + -0.0020981338, + -0.008353164, + -0.0046916828, + -0.033045195, + 0.019790372, + -0.012841431, + 0.009527725, + -0.0100854775, + 0.011673432, + 0.02658839, + -0.0066799065, + -0.007769164, + 0.03968573, + 0.012441162, + 0.021811403, + -0.008733748, + -0.005987637, + 0.022467583, + 0.0029462455, + 0.01872736, + 0.00003957582, + -0.020656528, + 0.030919174, + 0.006889884, + 0.0063911877, + -0.011811229, + 0.025105424, + -0.007112985, + -0.0027608748, + -0.017113158, + 0.011483139, + -0.0010613702, + -0.02333374, + 0.013208891, + -0.029711803, + -0.0043110987, + 0.048216064, + -0.008792805, + -0.0054659746, + -0.00009171133, + -0.0024295042, + 0.015315227, + -0.0067061535, + -0.021168347, + 0.005003368, + -0.0070736143, + -0.016653834, + -0.023976795, + -0.0074082655, + -0.011679994, + -0.018792978, + -0.03698227, + -0.012375544, + -0.0032661331, + -0.042546675, + -0.030892927, + 0.01085977, + -0.029921781, + -0.004048627, + -0.0011286286, + 0.024173649, + -0.025932211, + 0.020249696, + 0.004275009, + 0.009737702, + 0.022743179, + -0.0014255497, + -0.029134367, + 0.0066372547, + 0.011732488, + 0.0022277292, + 0.022913786, + 0.026772121, + -0.031470366, + -0.0019111226, + 0.02040718, + 0.0015830329, + -0.007237659, + 0.021732662, + 0.012664263, + -0.009055276, + -0.023202505, + 0.006758648, + 0.025761604, + -0.010991005, + -0.016522598, + 0.022152618, + -0.02552538, + 0.007906962, + -0.008353164, + 0.015577699, + 0.014094734, + 0.009639275, + 0.023254998, + -0.025000436, + -0.0029380433, + 0.028005738, + -0.03013176, + 0.0069555016, + 0.009632714, + -0.01846489, + 0.026798368, + 0.008910917, + 0.009015905, + -0.01085977, + -0.00917995, + 0.025814097, + -0.025735356, + 0.01375352, + 0.03734973, + 0.001441134, + -0.00081612315, + -0.006128716, + 0.0008440108, + -0.019803494, + -0.0051444466, + -0.010485747, + 0.0017290327, + -0.012697072, + -0.018911092, + -0.028136974, + -0.00943586, + -0.011942466, + 0.011470016, + -0.007920085, + -0.022835044, + -0.0024114593, + -0.004911503, + 0.0072639063, + -0.0034547846, + -0.031732835, + -0.012979229, + 0.017401878, + 0.0037369418, + -0.027165828, + 0.012218061, + -0.017113158, + 0.007828221, + -0.022677561, + 0.0014435947, + -0.0143572055, + -0.018766731, + -0.028399445, + -0.013504173, + 0.017821833, + 0.010420129, + 0.027218321, + 0.0017257519, + 0.013235139, + 0.0030348299, + -0.017821833, + 0.0018635496, + -0.009711456, + 0.0151708685, + 0.001002314, + 0.016876934, + 0.027060838, + 0.013543543, + -0.015538328, + 0.0014362127, + -0.016063273, + 0.018609248, + 0.011804667, + -0.018123675, + -0.017100036, + -0.019029204, + -0.016719451, + 0.0028871894, + -0.012080263, + 0.0030331893, + -0.019396663, + -0.015288981, + 0.022664437, + -0.01210651, + -0.0021899987, + 0.006624131, + 0.009737702, + -0.01938354, + 0.010964758, + 0.020197202, + -0.016194507, + -0.013622285, + -0.015498958, + -0.0038681778, + 0.008425344, + 0.023753695, + 0.018661743, + 0.0017798867, + -0.016404485, + -0.0034219758, + -0.0004466121, + 0.015328351, + -0.00079233665, + -0.016653834, + 0.017953068, + -0.02779576, + -0.015420216, + -0.0022687404, + 0.0033990094, + -0.018058058, + -0.010452938, + 0.012585521, + -0.022362594, + 0.017467497, + -0.02750704, + -0.009514602, + -0.011076309, + -0.010964758, + 0.019737877, + -0.0053773904, + 0.018596124, + 0.013418869, + -0.013005476, + -0.013287633, + 0.017310012, + 0.0036910092, + -0.022585696, + 0.021824528, + 0.0021850774, + -0.010918826, + -0.022191988, + -0.0039305147, + -0.0026903355, + 0.009980489, + -0.0065617943, + 0.035984877, + 0.023740571, + 0.0031709871, + -0.03178533, + -0.02194264, + 0.0073360857, + 0.013235139, + -0.0086812535, + 0.008576265, + -0.0071851644, + -0.0023130325, + -0.01729689, + 0.007040805, + -0.02640466, + 0.019803494, + 0.009927995, + -0.025669739, + -0.009941118, + -0.012099949, + 0.0030988073, + -0.00097442645, + 0.0050525814, + 0.019357292, + 0.018819226, + 0.012401791, + -0.003946919, + -0.00030655882, + -0.032494005, + 0.01784808, + -0.019987226, + 0.020932123, + -0.014186599, + -0.013701026, + -0.002252336, + 0.0045834132, + 0.02644403, + 0.028583175, + 0.004527638, + -0.01960664, + -0.014580307, + 0.0027789199, + 0.024396751, + 0.0030610769, + -0.003269414, + -0.00837285, + -0.021640796, + -0.014514688, + -0.014790284, + 0.0089502875, + 0.012821746, + -0.007493569, + -0.0086812535, + -0.007966018, + -0.0052166265, + 0.020604033, + -0.0020472798, + -0.0138716325, + 0.03616861, + 0.027034592, + -0.004970559, + -0.0028691445, + -0.002472156, + 0.013300757, + -0.034226317, + -0.001879954, + -0.007854467, + -0.007966018, + 0.013648531, + -0.012598645, + -0.00035741273, + -0.011699679, + 0.015774554, + 0.012972667, + 0.016247002, + 0.01225087, + 0.023727447, + -0.010426691, + 0.0062960414, + -0.014659048, + 0.0017241114, + 0.024527987, + -0.0075132544, + 0.006059817, + 0.009225883, + -0.008175995, + 0.03010551, + 0.013182645, + 0.00976395, + 0.012152443, + -0.020131584, + -0.011371589, + -0.012231184, + 0.014711542, + -0.011896533, + -0.008149749, + -0.013701026, + -0.014449071, + -0.0053445813, + 0.015945159, + 0.015302104, + -0.014829655, + -0.021050235, + 0.032756478, + 0.03921328, + 0.012624892, + -0.0059023337, + -0.020354686, + -0.00859595, + 0.002677212, + -0.05448914, + -0.013556667, + -0.0030249872, + 0.030840432, + 0.009376803, + -0.018294282, + -0.031732835, + 0.0062173, + -0.024659222, + -0.006082783, + -0.007493569, + 0.023097515, + 0.01524961, + -0.008116939, + -0.012664263, + -0.0021785158, + 0.0041044024, + 0.022690684, + -0.00010550135, + 0.0061943335, + 0.030158006, + -0.031207893, + 0.02458048, + 0.0014304711, + -0.009494917, + 0.010229837, + 0.0137666445, + -0.00025611502, + 0.00021407854, + 0.0013952014, + -0.017493743, + -0.013609161, + -0.016732575, + 0.0004293874, + -0.011515949, + 0.021522684, + 0.033622634, + -0.037244745, + 0.0027198638, + 0.021667045, + -0.026129065, + 0.0036713239, + 0.008497523, + 0.0007603479, + 0.0069883107, + 0.00015574008, + -0.028530682, + -0.0068242657, + -0.005446289, + -0.041129325, + 0.015682688, + 0.012598645, + -0.012565835, + 0.0076969843, + -0.0027756388, + 0.0055906484, + -0.010557927, + -0.0067192772, + -0.037979666, + -0.007880715, + 0.020997742, + -0.026877109, + -0.008280984, + -0.010741657, + 0.012565835, + -0.034357555, + 0.0047310535, + 0.0003309605, + -0.012821746, + -0.014514688, + -0.0020128305, + 0.016470103, + -0.007106423, + -0.0027297065, + 0.0062533896, + -0.021312708, + -0.001503471, + -0.006528985, + 0.01758561, + -0.010518556, + 0.024436122, + 0.013464802, + -0.007040805, + -0.042494178, + -0.004524357, + 0.013622285, + 0.0016265047, + 0.0060106036, + 0.23475474, + 0.018110553, + 0.0013000554, + 0.031207893, + -0.0067783333, + 0.030525466, + 0.025249785, + -0.005735008, + -0.00994768, + -0.010098601, + -0.018058058, + -0.007749479, + -0.0077626025, + -0.0012992353, + -0.0091668265, + -0.015669564, + -0.020958371, + -0.039160788, + -0.01027577, + -0.022428213, + 0.0016256846, + 0.005928581, + -0.0018291001, + -0.020302191, + 0.033333912, + 0.004567009, + -0.016509473, + 0.013884757, + 0.03228403, + 0.0059154574, + -0.003167706, + 0.009475231, + 0.014606554, + 0.008609074, + -0.012185251, + -0.012185251, + -0.022428213, + -0.0034711892, + 0.015538328, + 0.01872736, + 0.0007808535, + -0.008904355, + 0.005794064, + -0.0053905137, + -0.0031168521, + 0.040210675, + 0.0006287019, + -0.004143773, + 0.018412394, + 0.019449158, + -0.023635583, + -0.009639275, + 0.00980332, + 0.039475754, + 0.013687903, + 0.0080841305, + 0.026024075, + 0.013195768, + 0.0033891667, + 0.0019833022, + -0.017782463, + 0.0065913224, + -0.014435947, + 0.006204176, + -0.003992852, + 0.0025295718, + -0.029134367, + 0.03514497, + 0.005767817, + 0.0020948527, + 0.0146852955, + -0.016811317, + -0.011975274, + -0.010026421, + -0.02051217, + -0.032494005, + 0.027822006, + 0.037953418, + 0.0037763126, + 0.0183599, + -0.022178864, + 0.015288981, + 0.018766731, + -0.00076198834, + 0.011417522, + -0.03404259, + 0.004970559, + 0.008451591, + 0.0037172565, + 0.00175528, + 0.007565749, + 0.0043832785, + -0.014015992, + -0.0038124025, + 0.010544803, + 0.0057186037, + 0.0035466498, + 0.012847993, + -0.01408161, + 0.008405658, + -0.010702286, + -0.005397076, + 0.02519729, + -0.0023655267, + -0.0050985143, + 0.0011097634, + 0.008891231, + 0.015498958, + -0.027008345, + -0.037323486, + -0.01013141, + -0.010439814, + -0.008766557, + -0.0012631454, + 0.029081872, + 0.003628672, + 0.032572746, + -0.0126839485, + 0.012172128, + -0.01608952, + 0.00057374686, + -0.01923918, + -0.018858597, + 0.012933296, + 0.0071917265, + -0.011837477, + -0.018569877, + 0.0038353687, + 0.0082481755, + -0.031732835, + 0.0022392122, + 0.010354511, + -0.00057989854, + -0.0061221537, + -0.006496176, + 0.027926996, + 0.0037402227, + -0.021076484, + -0.010761342, + -0.0017175496, + 0.026929604, + 0.006410873, + 0.011305971, + 0.017572485, + -0.006666783, + -0.0040748743, + 0.022979403, + 0.0016404486, + 0.0028428973, + -0.012368982, + -0.013366375, + -0.017165653, + -0.0035433688, + -0.018884843, + 0.01803181, + -0.019002955, + -0.023451852, + -0.023963673, + -0.014908397, + 0.03616861, + -0.014580307, + 0.0073820185, + 0.033963848, + -0.013431992, + -0.030525466, + -0.0007845445, + -0.16934678, + 0.0274283, + 0.039108295, + -0.00028092682, + 0.010052669, + 0.01989536, + -0.005587368, + -0.012204937, + -0.0038386495, + 0.017113158, + 0.039187036, + 0.0019980664, + -0.025171041, + -0.016522598, + 0.0012483813, + -0.026982097, + -0.008313793, + -0.0037369418, + 0.010931949, + -0.002874066, + 0.016443856, + -0.013806015, + 0.022178864, + -0.027585782, + -0.006597884, + 0.017165653, + 0.0010728533, + 0.02220511, + -0.0019997067, + -0.018609248, + -0.02761203, + -0.010630107, + 0.016076395, + 0.0048918175, + 0.022021381, + 0.021312708, + 0.0015379206, + -0.012565835, + -0.0076707373, + 0.008359726, + 0.009029029, + 0.019331045, + 0.015328351, + 0.008490962, + -0.0035204026, + 0.024698593, + 0.03517122, + 0.0027854815, + 0.0061024684, + -0.014606554, + 0.016037025, + -0.021496437, + -0.003533526, + 0.014475318, + 0.0012811903, + 0.011634061, + -0.0018192574, + -0.0011614376, + 0.0073492094, + -0.016627586, + -0.021995135, + 0.0008579546, + -0.005426604, + -0.0054692556, + -0.022795673, + -0.022323223, + -0.0050985143, + 0.009593343, + -0.026220929, + 0.018163046, + 0.0044849864, + -0.03632609, + 0.013327004, + -0.024947941, + 0.026247177, + 0.018819226, + -0.015000261, + 0.014934643, + -0.009914871, + -0.001301696, + -0.020105338, + 0.027533289, + -0.020840257, + -0.022520078, + 0.010662915, + 0.009396489, + -0.008497523, + 0.0026050322, + -0.0071326704, + -0.016693205, + -0.014317835, + -0.02542039, + 0.0056693903, + -0.03262524, + 0.0063419743, + 0.007867591, + -0.010872893, + -0.002897032, + -0.011424083, + 0.008477838, + 0.027848255, + 0.0021457067, + -0.030420478, + 0.02845194, + 0.029606815, + 0.010833522, + -0.009448984, + 0.014619677, + 0.012408352, + -0.012460847, + -0.028294457, + -0.01129941, + 0.021023989, + 0.0042782896, + -0.009134018, + 0.0009826287, + 0.012939858, + -0.006981749, + 0.004176582, + -0.0014723026, + 0.05496159, + -0.0007816737, + -0.0076969843, + 0.039738227, + -0.00015850834, + -0.013543543, + -0.07690423, + -0.027218321, + 0.02106336, + 0.016194507, + -0.013674779, + 0.04433148, + -0.0055808057, + 0.01762498, + 0.0036188294, + 0.019436033, + 0.0068439515, + -0.018084304, + 0.01371415, + -0.013976621, + 0.0427829, + 0.019081697, + 0.008792805, + -0.028294457, + -0.008182557, + 0.016601339, + -0.017126283, + 0.0041240877, + -0.011634061, + -0.016483227, + 0.000017788614, + -0.0018012126, + -0.029475579, + 0.01755936, + 0.011889971, + 0.011876848, + -0.010807275, + -0.020604033, + -0.01960664, + -0.00281665, + -0.014147229, + 0.009849253, + -0.034173824, + 0.010879455, + 0.020131584, + -0.04015818, + -0.007565749, + 0.00208501, + 0.0046687163, + -0.021850774, + -0.010492309, + -0.004078155, + 0.015735183, + -0.0130186, + 0.023793066, + -0.009527725, + -0.0022687404, + -0.0022917066, + -0.008504085, + 0.015525205, + -0.016443856, + -0.016430732, + -0.01024296, + 0.011430645, + -0.020787764, + -0.0067652096, + -0.00917995, + -0.0043078177, + -0.025945334, + 0.010800713, + 0.016194507, + 0.014882149, + -0.031339128, + -0.026181558, + 0.012605207, + -0.0169688, + -0.016942553, + 0.009081523, + -0.02695585, + -0.00071277487, + -0.023071269, + -0.010518556, + -0.013556667, + -0.0156039465, + 0.024737963, + -0.029239355, + -0.027926996, + -0.028845647, + 0.008746872, + 0.013136712, + 0.023924302, + 0.025879717, + 0.0012024487, + -0.015813924, + -0.0068045803, + -0.024265515, + 0.015315227, + 0.031207893, + -0.0020308753, + -0.025066053, + -0.008707501, + 0.024186773, + 0.0031939533, + -0.006378064, + 0.007447636, + 0.0158008, + -0.012710195, + -0.010072354, + -0.08887294, + 0.013648531, + -0.0027854815, + -0.019094821, + 0.030289242, + -0.014882149, + 0.0027379086, + -0.021352079, + -0.001368134, + 0.012027768, + -0.047271166, + -0.007985704, + 0.0021243808, + 0.0117062405, + -0.020302191, + -0.02490857, + 0.031207893, + 0.012172128, + 0.009665523, + 0.010439814, + 0.014816531, + 0.0035630541, + 0.014514688, + -0.008307232, + -0.020879628, + -0.00073902204, + -0.010945072, + 0.017375631, + 0.0015805722, + -0.0052133454, + 0.009560534, + -0.039187036, + 0.005613615, + 0.0446202, + -0.00075952767, + -0.021575179, + 0.013412307, + 0.024698593, + 0.03446254, + 0.008641883, + -0.009672085, + -0.008602512, + 0.008202243, + -0.020695899, + -0.009744264, + 0.0073229624, + 0.009927995, + -0.002040718, + 0.016470103, + 0.031654093, + 0.0014271903, + 0.03923953, + 0.00039145202, + -0.02304502, + -0.0092193205, + -0.023254998, + 0.017716844, + 0.0036713239, + -0.007723232, + 0.011017253, + 0.023963673, + 0.0125199035, + 0.011640623, + 0.024173649, + 0.023766818, + -0.011056623, + -0.02545976, + 0.0020472798, + 0.021863898, + -0.015341475, + -0.00015502238, + 0.0011679993, + 0.023071269, + 0.0009777073, + 0.028268209, + -0.0183599, + 0.015905788, + -0.0027149424, + -0.029974276, + 0.02212637, + 0.0020718866, + 0.000023261047, + -0.01758561, + 0.020761516, + 0.01254615, + -0.0006791457, + -0.023018774, + 0.00318247, + -0.005954828, + 0.0167457, + -0.004212672, + -0.010649792, + 0.012847993, + -0.0031217735, + 0.010557927, + 0.011279725, + 0.010945072, + -0.005108357, + 0.017782463, + 0.01758561, + 0.008792805, + -0.023018774, + -0.0044423346, + -0.016338868, + -0.016010778, + 0.030315489, + -0.0005606233, + -0.015367722, + -0.012093387, + 0.011050061, + 0.023386234, + 0.026654009, + 0.009613029, + 0.02538102, + -0.026378412, + 0.01700817, + -0.0138191385, + -0.029055625, + -0.03244151, + 0.015695812, + 0.013464802, + 0.023359988, + 0.0060040415, + -0.0077035464, + 0.012716757, + 0.015236486, + -0.0066208504, + -0.008622197, + 0.008038198, + -0.0068964455, + 0.023622459, + 0.007578872, + -0.020564662, + 0.006027008, + -0.013622285, + 0.013661656, + -0.008182557, + -0.0034908745, + -0.017073788, + 0.024186773, + -0.0037336608, + 0.00961959, + 0.0058465586, + 0.012198376, + 0.031837825, + 0.012992352, + 0.022401966, + -0.027664524, + -0.019659135, + 0.009724579, + 0.01729689, + 0.006975187, + -0.012480533, + -0.016706329, + 0.0034022902, + 0.002165392, + 0.017533114, + -0.014278464, + 0.012040893, + 0.039370764, + 0.005219907, + 0.029606815, + -0.01733626, + -0.022730054, + -0.005105076, + 0.017310012, + 0.010991005, + -0.0013927408, + -0.026798368, + 0.0107875895, + 0.00032644926, + -0.016286373, + -0.023241876, + 0.012237746, + -0.014068487, + -0.02431801, + 0.0028806275, + 0.026535895, + 0.018648619, + -0.007723232, + 0.024790458, + -0.020052843, + -0.0042651664, + 0.013477925, + -0.014029116, + -0.007355771, + 0.0037795934, + -0.013340128 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 23, + "total_tokens": 23 + } +} +436 67292 +POST https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:batchEmbedContents HTTP/1.1 +Host: generativelanguage.googleapis.com +User-Agent: langchaingo-httprr +Content-Length: 109 +Content-Type: application/json +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X +X-Goog-Api-Key: test-api-key + +{"requests":[{"content":{"parts":[{"text":"Beijing"}],"role":"user"},"model":"models/gemini-embedding-001"}]}HTTP/2.0 200 OK +Content-Length: 66912 +Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 +Content-Type: application/json; charset=UTF-8 +Date: Wed, 23 Sep 2026 10:19:43 GMT +Server: scaffolding on HTTPServer2 +Server-Timing: gfet4t7; dur=261 +Vary: Origin +Vary: X-Origin +Vary: Referer +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Xss-Protection: 0 + +{ + "embeddings": [ + { + "values": [ + -0.0063551543, + 0.016102875, + 0.0025184422, + -0.06450228, + -0.011145094, + -0.0017095193, + -0.010466754, + -0.014819786, + 0.007944607, + -0.009844465, + 0.02627988, + 0.0005290811, + 0.021550694, + 0.014117757, + 0.08421562, + 0.007890114, + 0.021590482, + -0.036296967, + 0.008239877, + -0.033143397, + -0.024023073, + -0.0071394015, + 0.026021717, + -0.016012026, + -0.0013396433, + 0.011513916, + -0.00964948, + -0.02027911, + 0.020185934, + 0.026132856, + 0.022241998, + -0.019913755, + 0.0060549704, + -0.017460946, + 0.013950326, + -0.013509957, + 0.0044174525, + 0.0081113335, + -0.014121574, + 0.0071531185, + 0.015969781, + 0.013153238, + -0.004400515, + 0.014650824, + 0.0046382556, + -0.019576825, + 0.0066992207, + -0.025219817, + 0.028843993, + 0.009681094, + 0.028219955, + 0.017304933, + 0.003994314, + -0.14916469, + -0.0020506408, + -0.022159234, + -0.01220226, + -0.0005695116, + 0.016322328, + 0.0036592477, + -0.017106129, + -0.013098781, + -0.011157898, + -0.0071095936, + 0.0017108265, + -0.0071799583, + 0.022572618, + 0.0046764133, + -0.0512339, + 0.00329169, + 0.009588029, + -0.011635375, + -0.0017702867, + 0.004274009, + 0.0022750008, + -0.018372174, + -0.017434062, + -0.009578391, + -0.019144882, + 0.02661255, + -0.0058826096, + 0.019118166, + 0.0038887938, + 0.0049904794, + 0.008675974, + 0.009201594, + 0.0034076595, + -0.0063505503, + -0.0120315775, + 0.022470584, + 0.02058215, + -0.00012978374, + -0.0039833416, + -0.022589803, + 0.021844324, + 0.018430045, + -0.021536823, + 0.007484924, + 0.0023836636, + 0.0020405757, + -0.005447644, + -0.0041501103, + 0.009563024, + 0.008413351, + -0.0024128684, + -0.02541384, + 0.009046341, + -0.0021488206, + -0.0085451305, + 0.014438212, + -0.002896873, + 0.007498084, + -0.0025235151, + 0.02277479, + 0.016626634, + -0.18287012, + -0.0073958687, + 0.012745881, + 0.013355627, + -0.006209894, + 0.029279338, + 0.010433714, + 0.0098551065, + -0.006656174, + -0.020760003, + -0.003321761, + 0.010822108, + -0.015899125, + 0.009552324, + 0.010090353, + 0.0136583485, + -0.0018861623, + -0.005349075, + -0.001015341, + -0.034654666, + 0.024294017, + -0.008448941, + -0.021153277, + -0.020333815, + -0.02146894, + 0.007534668, + -0.009168525, + -0.010094172, + -0.025726954, + -0.012099901, + -0.04991192, + 0.004274897, + 0.021763584, + 0.010298866, + 0.007188806, + -0.007859624, + 0.0034723051, + -0.0051036524, + 0.00055222417, + -0.0030106427, + -0.05011998, + 0.0070394934, + -0.009704327, + 0.0045076204, + -0.0029967614, + -0.0018685178, + 0.00027954477, + 0.0057056723, + 0.004698614, + 0.015422536, + 0.018253483, + -0.02473913, + 0.011234085, + 0.01670005, + 0.016503641, + 0.02322702, + 0.014981803, + -0.011549604, + 0.0030360892, + 0.0034499634, + -0.006891598, + -0.011392665, + 0.0053600525, + 0.0017250235, + -0.015849752, + 0.0019526418, + 0.00441381, + 0.0011083069, + 0.00879632, + -0.006487191, + -0.006071513, + -0.014979449, + 0.002908953, + 0.007734771, + -0.00062810123, + -0.013057615, + 0.004856765, + -0.028751146, + -0.0378328, + 0.0071902177, + -0.0026101978, + -0.006176157, + -0.014301397, + 0.009311645, + 0.005812043, + 0.006216182, + -0.028744193, + -0.026385684, + -0.0117400745, + -0.016666705, + -0.03396553, + -0.026202817, + 0.007959171, + -0.00038143582, + 0.0060949964, + 0.010590929, + 0.0046335543, + 0.017146029, + 0.00062021264, + 0.011148049, + 6.3616985e-06, + -0.026893452, + 0.016917495, + 0.012630638, + 0.00021880504, + 0.008228402, + -0.0035598008, + 0.004849153, + -0.00068987056, + 0.020476872, + 0.015225312, + 0.011713798, + 0.010487364, + -0.021695467, + -0.004192251, + -0.008274628, + 0.002563185, + -0.007375835, + -0.004681318, + -0.025145316, + 0.0067083687, + 0.033540048, + -0.0061201155, + -0.0024181919, + 0.025476867, + 0.018105075, + 0.007092122, + -0.04112829, + 0.01879443, + 0.012370854, + -0.021660259, + 0.01008139, + -0.015663356, + 0.023410449, + 0.018574718, + -0.020436762, + 0.0044952407, + -0.008403982, + -0.0048802453, + 0.009639978, + -0.01811318, + -0.023762362, + 0.0104453005, + 0.016646363, + 0.019754373, + -0.04181457, + -0.0061548315, + -0.009867979, + 0.0033878842, + -0.018200044, + -0.012585777, + 0.02678131, + 0.024188522, + -0.03144448, + 0.033384383, + -0.0007540113, + 0.009400057, + -0.00971263, + 0.0021998873, + 0.0009807494, + 0.0032415488, + -0.124622345, + 0.011174502, + 0.024572065, + -0.011790753, + -0.012057281, + -0.010909291, + -0.029012749, + 0.0068161655, + 0.01376444, + -0.003577031, + -0.0074938694, + -0.023549544, + 0.029214898, + 0.009093398, + -0.010575748, + -0.008189132, + -0.0037616221, + 0.0145715065, + 0.030900769, + -0.035605688, + 0.0020199956, + 0.0041381693, + -0.020411737, + -0.028485753, + 0.011085002, + 0.0035083066, + 0.025516436, + 0.016869627, + -0.004033204, + -0.006885995, + -0.0040293713, + -0.011581048, + 0.033477582, + 0.02492992, + 0.008761239, + -0.010692216, + -0.006940811, + -0.024590697, + 0.0025437665, + -0.006774471, + -0.004200975, + -0.00869821, + 0.00758568, + 0.01852672, + -0.01876319, + 0.0045159985, + -0.013281693, + -0.0004899191, + -0.01579372, + 0.018986015, + -0.021734033, + -0.006706007, + 0.0060647964, + -0.0019459872, + -0.007123383, + 0.012118385, + 0.01166797, + 0.0020355766, + -0.005540299, + 0.004892636, + 0.0064751203, + -0.0013884788, + 0.0037279443, + -0.023315618, + -0.018937973, + 0.011611779, + -0.015195095, + 0.016511658, + -0.005727811, + 0.025226949, + 0.009488917, + -0.021378398, + -0.019656911, + -0.016410029, + 0.021136995, + 0.035832502, + -0.013867513, + 0.004386308, + 0.0015575212, + -0.003359174, + 0.005140994, + -0.016254758, + 0.026736539, + -0.0062967846, + 0.027923945, + 0.008575099, + 0.019918622, + 0.0152424155, + 0.021759192, + -0.0379675, + 0.013200135, + 0.006362793, + 0.017756319, + -0.006131732, + 0.009085887, + -0.013920091, + 0.013506577, + 0.0013176923, + 0.0068232627, + 0.00810692, + -0.023185266, + -0.013748858, + 0.013784822, + -0.0053748903, + 0.0012270955, + -0.018692145, + -0.0025695444, + 0.033486832, + 0.013972321, + -0.0046645477, + 0.007211459, + 0.003860303, + 0.033323407, + 0.03173955, + 0.0022209324, + 0.008125612, + 0.00032341457, + -0.003504367, + 0.008849454, + -0.014901913, + 0.020093285, + 0.010984518, + 0.020708168, + -0.027557617, + -0.019866042, + -0.019064197, + -0.009329451, + -0.001619139, + 0.017031545, + 0.008624701, + 0.0075506493, + -0.00046830848, + -0.012231559, + 0.005261167, + -0.009973151, + 0.012327313, + -0.00029284228, + -0.012177945, + 0.026138522, + -0.0052511594, + -0.032983255, + 0.0019666967, + -0.01631379, + -0.005283866, + 0.0067007225, + -0.018335393, + -0.01242996, + 0.023244824, + 0.004459207, + -0.012739205, + -0.023677023, + -0.008792814, + -0.015042924, + -0.015243082, + -0.01852342, + -0.00979116, + -0.010403343, + 0.011183803, + -0.014179961, + -0.01996088, + 0.008711537, + 0.01358377, + -0.017433995, + -0.009293668, + 0.0025363783, + -0.0039437036, + 0.003040843, + 0.014627929, + -0.01513753, + -0.010893818, + 0.028436167, + -0.00030052045, + -0.016798263, + -0.0037398995, + 0.013743322, + 0.024623534, + 0.0017090314, + 0.021805495, + 0.0021703215, + -0.0035057694, + 0.021018457, + 0.03189835, + 0.009966769, + -0.012396259, + 0.01910743, + 0.01285138, + -0.008228967, + 0.042157833, + -0.0034584103, + 0.014909452, + -0.037549157, + 0.0023912285, + 0.0041717207, + -0.0024750216, + -0.0026060815, + -0.0011443269, + -0.010756205, + 0.02133299, + 0.0049221194, + -0.006027957, + -0.021874117, + 0.011923416, + -0.017914725, + -0.027032953, + -0.004819454, + -0.0038527464, + 0.005984662, + -0.003016204, + -0.014474656, + -0.0059804735, + -0.0024918262, + -0.0051547373, + -0.019267162, + -0.0043931603, + 0.0015678286, + 0.005682289, + -0.004605099, + -0.018670866, + 0.013046881, + 0.012114228, + -0.0049528107, + -0.0049569765, + 0.0076052253, + 0.019269137, + 0.0035500932, + 0.017008971, + -0.009618731, + -0.0027449355, + -0.0066079027, + -0.025162073, + 0.023254089, + 0.020586526, + 0.020907655, + 0.0078194635, + 0.017589271, + -0.0093044415, + 0.03972411, + -0.01367009, + 0.021820767, + 0.0065663103, + 0.022037128, + 0.0033105027, + -0.017324902, + 0.01886154, + -0.0024833062, + -0.033237927, + -0.029825876, + -0.007130667, + 0.008148691, + -0.013622872, + 0.008215217, + 0.023586703, + -0.0032375052, + 0.018134532, + 0.003340157, + 0.062084984, + 0.024971696, + 0.00078927726, + -0.008140991, + 0.022751125, + 0.0024958488, + 0.021983938, + 0.030028807, + 0.013055454, + 0.021202512, + 0.008967539, + 0.014477907, + -0.024139725, + -0.007268213, + -0.08979645, + 0.009827532, + 0.0044519864, + 0.006242123, + -0.028093224, + -0.007492523, + 0.0108569795, + -0.038266905, + -0.00062515767, + -0.020292485, + 0.0069982656, + -0.009460653, + -0.022561941, + -0.0016777073, + 0.009359358, + -0.0056340685, + 0.0009903106, + 0.02589537, + 0.013633952, + -0.008307132, + 0.022135915, + 0.022014154, + -0.0015987023, + -0.008531485, + -0.038564667, + 0.0136941, + 0.007536604, + -0.0034995447, + 0.0077190925, + 0.003736426, + -0.005453855, + -0.0037902861, + -0.009574276, + 0.02503652, + -0.009713838, + 0.025748665, + -0.0030429803, + -0.0017319445, + -0.005556372, + 0.007151899, + 0.00044861686, + 0.024243254, + -0.0011174859, + -0.0042923554, + -0.0034043856, + 0.0020586264, + -0.0024652036, + 0.0010641557, + 0.0063525126, + 0.0061083874, + -0.033520598, + 0.024725132, + -0.009062996, + -0.018589048, + -0.027296893, + 0.009039292, + -0.019942956, + -0.014651528, + 0.008203328, + 0.006380216, + -0.0029732834, + 0.0148180835, + -0.0037313567, + 0.018803854, + 0.009569448, + 0.0015683277, + 0.007917696, + -0.0044776164, + 0.02532016, + -0.0073694712, + -0.012464774, + -0.008975098, + -0.029023916, + 0.0112504475, + -0.0024546199, + 0.008568983, + -0.0025914637, + 0.007500221, + 0.01136516, + 0.006178373, + 0.00065487315, + -0.0010890116, + -0.111340486, + 0.0076107616, + -0.011710949, + 0.002834612, + -0.01966956, + 0.00855262, + -0.0010161481, + -0.011820341, + -0.0019463799, + 0.0014960662, + 0.02480435, + 0.0032408242, + -0.013242925, + 4.790979e-05, + -0.0032446042, + -0.009810685, + -0.0024709958, + -0.002814128, + -7.2203e-05, + 7.994804e-05, + 0.007851277, + 0.0056396984, + 0.009152572, + 0.011867177, + 0.004770401, + -0.012824003, + 0.0012317409, + -0.0285443, + -0.010837693, + -0.0030892438, + -0.005758533, + -0.13255383, + 0.0047593284, + 0.028043093, + -0.023309993, + -0.0077553773, + -0.029166562, + -0.0064552925, + 0.02165724, + 0.0039130286, + -0.009785951, + -0.0125840865, + 0.013915085, + -0.010369048, + 0.011079606, + -0.015707199, + 0.14853208, + -0.0194613, + -0.0038884897, + 0.014487094, + -0.022777615, + -0.0142748235, + 0.009197172, + -0.0061391294, + -0.01160789, + 0.0054051797, + 0.0031735098, + 0.004734277, + 0.019488329, + -0.009929215, + -0.0153087545, + -0.00031808962, + -0.011743752, + -0.0063962415, + 0.009748386, + -0.0021266262, + -0.009444004, + -0.01820517, + 0.010775697, + 0.009769245, + 0.0023124106, + 0.011758359, + 0.0019383354, + -0.025756916, + -0.0058244932, + -0.016744541, + -0.005177213, + -0.0010623655, + -0.007505421, + -0.010191935, + 0.023054658, + -0.020112004, + -0.063145414, + 0.005531174, + -0.0010751032, + -0.014058348, + 0.029796744, + -0.002334073, + 0.017840018, + 0.009151701, + -0.0042541544, + -0.0019743878, + -0.06923265, + -0.009436598, + 0.0233867, + -0.007027338, + 0.008806033, + 0.012857061, + 0.018439652, + 0.025269529, + 0.017095635, + 0.0062048156, + 0.010068323, + -0.022050511, + 0.007765344, + 0.0005873925, + -0.0069274115, + 0.015783776, + 0.0015900064, + 0.010024876, + -0.0115946885, + -0.007553512, + -0.0017752476, + 0.014310054, + -0.0014167057, + 0.010843936, + -0.00752356, + 0.015507261, + 0.027154377, + -0.021629224, + 0.0020533637, + 0.008390171, + -0.01356634, + 0.012175692, + 0.00056733814, + -0.0029302756, + 0.007758077, + -0.013251133, + 0.03735139, + -0.011355253, + -0.0008606549, + 0.018703135, + -0.031041395, + 0.001513347, + -0.03283054, + 0.036566976, + 0.015855275, + -0.01553206, + -0.0018216535, + 0.026656386, + 0.009425796, + 0.013647747, + -0.0038406998, + -0.0034908426, + 0.032966126, + -0.020823695, + 0.014203207, + 0.0035750426, + -0.008039023, + -0.0061734766, + -0.018390669, + 0.0031592986, + 0.01102675, + -0.009378094, + 0.01946, + 0.0056270505, + -0.006576176, + -0.0036247377, + 0.002222759, + -0.005955491, + 0.0033926242, + -0.0022702909, + 0.004542753, + -0.0020777804, + 0.0069348146, + 0.018808065, + 0.002593777, + 0.00035886414, + 0.0023482353, + 0.0053278566, + -0.0048979986, + -0.0027712337, + -0.01519547, + 0.014016227, + -0.003993287, + -0.0039424673, + 0.0068112765, + 0.0009354211, + 0.009655554, + -0.0021440438, + -0.01173959, + -0.009086621, + -0.003311498, + -0.0075752395, + -0.005547464, + -0.012148378, + 0.0055227103, + 0.004714189, + 0.0074225753, + -0.008678949, + -0.006936506, + -0.011988269, + 0.0145136425, + 0.008268353, + 0.0013511959, + 0.0022097428, + 0.0067520393, + -0.015721671, + 0.0015095283, + 0.0018876757, + 0.0131803, + -0.0052125994, + 0.013240421, + 0.0032718752, + 0.011470708, + 0.019719018, + -0.007868722, + -0.0031630448, + -0.013607919, + -0.007671135, + 0.02265445, + -0.018993057, + 0.0011178631, + 0.0030184465, + -0.0032923226, + -0.012910732, + 0.0055696806, + -0.004385955, + -0.014097004, + 0.013098738, + 0.009927833, + -0.020466123, + -0.031790804, + 0.008953468, + -0.007841991, + 0.009622844, + 0.011689912, + 0.014736357, + 0.011966775, + -0.0049949824, + -0.013456217, + 0.0029761053, + -0.0004972462, + 0.0018124623, + 0.023450242, + 0.008818961, + 0.015578403, + 0.006838381, + 0.011787743, + 0.006401848, + -0.008554068, + 0.0032769984, + 0.005691664, + 0.0033446192, + 0.004996657, + -0.012328935, + -0.00014337787, + -0.0072276476, + -0.013489926, + 0.006542398, + 0.0024200412, + 0.006407659, + 0.00658257, + 0.0098438375, + -0.006926448, + -0.0018434568, + -0.011406963, + 0.002057549, + -0.0028111308, + -0.0062484816, + 0.0047938316, + -0.007665935, + 0.014911896, + 0.012184405, + -0.0004537209, + 0.017269272, + 0.0015187316, + 0.022711638, + -0.009039745, + 0.000566125, + 0.0057224897, + -0.014241028, + 0.00728214, + -0.012275623, + -0.003991845, + 0.0031499718, + 0.013683913, + 0.005002052, + 0.007791011, + -0.006061983, + 0.012462491, + -0.017259948, + -0.003294801, + 0.020635586, + 0.0064685466, + -0.0032722915, + -0.010588137, + 0.0055095153, + 0.012568544, + 0.020467281, + 0.0039871284, + -0.006567104, + -0.0052050436, + 0.019310508, + 0.0007541559, + -0.0039628134, + 0.0018161333, + -0.025565801, + 0.0022170816, + 0.008383371, + 0.0016976749, + 0.0013169087, + 0.0072280904, + 0.00043818206, + 0.006487496, + -0.008234987, + -0.013804775, + -0.0071011824, + 0.004301779, + 0.0076040607, + 0.00026553465, + -0.013978863, + -0.0022398445, + -0.010073331, + 0.001378665, + -0.011655543, + -0.0025281853, + 0.0064877234, + 0.005105184, + -0.001253591, + -0.016037136, + 0.0022178087, + -0.00018209097, + -0.0017776627, + 9.390462e-05, + -0.010127431, + 0.010108842, + 0.008802711, + 0.0012650582, + 0.0014346605, + -0.0022895061, + -0.009721528, + 0.002106671, + -0.0032146594, + 0.0012294214, + 0.025103608, + -0.0060916333, + -0.004375702, + 0.0031169306, + -0.002403232, + 0.0036379022, + 0.099150434, + 0.0050977077, + 0.019103516, + 0.018123176, + -0.00641615, + -0.007812411, + 0.01689265, + 0.006873689, + 0.0012032719, + -0.010745668, + -0.0072558033, + -0.0057703336, + -0.016017653, + 0.011575295, + -0.014287684, + 0.0040288507, + 0.00035499665, + 0.0038425853, + -0.0059944894, + 0.0064374455, + -0.01055123, + -0.011411333, + -0.0020794396, + -0.03357867, + 0.023145113, + 0.0038708441, + 0.013038566, + 0.0013081246, + 0.0137445815, + 0.0037631444, + 0.006775272, + -0.014702711, + -0.012787806, + -0.011213579, + 0.0018051929, + 0.007411551, + 0.0012860112, + 0.0023756204, + 0.008827388, + 0.008103292, + -0.006595727, + 0.009404119, + 0.005707071, + -0.0076382444, + 0.0044162855, + -0.011250839, + -0.007862551, + -0.004038489, + -0.013900646, + 0.009726302, + -0.010318265, + -0.0049637896, + -0.008849078, + 0.011831046, + -0.018245734, + 0.0026684778, + 0.0030156735, + 0.002048939, + -0.017357029, + -0.006360324, + -0.0031979224, + 0.013873581, + -0.011460241, + 0.015699241, + -0.006945846, + -0.014704577, + 0.001639534, + -0.0036077767, + 7.477201e-05, + -0.0070529534, + -0.0074082003, + 0.008105086, + 0.0027408854, + -0.012404076, + 0.047166396, + -0.023610884, + 0.005393696, + -0.009819781, + -0.020763718, + 0.016728906, + -0.0044856705, + -0.011954361, + -0.005414105, + 0.0039427187, + -0.003017932, + -0.005948869, + -0.018116254, + -0.0055170427, + -0.012061531, + 0.0025465896, + 0.019162923, + -0.0038469536, + -0.02426238, + 0.0033866293, + 0.001715548, + -0.0126257595, + 0.110108815, + 0.009526291, + 0.015302868, + -0.0018256153, + 0.009874081, + -0.015023826, + -0.0026252833, + -0.007113226, + 0.012222318, + 0.010760951, + -0.0006905928, + 0.008161423, + 0.017670702, + -0.0023108753, + 0.014374014, + -0.008081441, + -0.008081291, + 0.0125306295, + -0.0026793822, + -0.0032000365, + -0.007764513, + 0.008264854, + -0.017081711, + 0.01505305, + 0.015108973, + -0.0058961324, + -0.008967146, + -0.0009737416, + -0.026299978, + -0.010576113, + -0.009151786, + 0.000629556, + -0.00080465974, + 0.009976492, + -0.005365671, + -0.014674663, + 0.0056867753, + 0.00039618395, + -0.008198037, + -0.019754961, + -0.006353381, + -0.0047243657, + 0.011523915, + -0.003669543, + -0.001969544, + 0.009289482, + -0.0057113664, + 7.804169e-05, + -0.005704618, + 0.017114911, + -0.00028992468, + 0.0021905575, + 0.0032700768, + -0.003848536, + -0.0069853826, + 0.0154455695, + -0.008593011, + -0.01874888, + 0.00533686, + -0.013470405, + 0.010130901, + 0.0016556757, + 0.01733363, + 0.012311638, + 0.0010464182, + 0.016613899, + -0.0018007389, + -0.0075159017, + 2.5645355e-05, + -0.010907435, + 0.013142811, + -0.022482142, + -0.011474547, + 0.018076569, + 0.005050351, + -0.001997235, + 0.008096223, + 0.0043833777, + 0.00949188, + 0.01515072, + 0.00046413866, + -0.00854549, + -0.004377132, + -0.0063424995, + -0.000576798, + 0.004404358, + -0.0059497557, + 0.019253355, + 0.005373753, + -0.005796289, + -0.0045998674, + 0.015444049, + 0.013625838, + -0.0019261105, + -0.0049046995, + -0.028571926, + 0.028330754, + -0.0026768905, + -0.014038912, + 0.017988183, + -0.012462325, + -0.0029675905, + 0.016606113, + -0.014302834, + -0.018672237, + -0.015079303, + -0.0022023825, + -0.026077606, + 0.010548628, + -0.023084678, + -0.005073793, + -0.004002584, + 0.00067545514, + -0.0009742146, + -0.018017456, + 0.0034590624, + -0.0023994674, + 0.0032991623, + 0.003367507, + -0.0026153838, + 0.0057632807, + -0.008392058, + -0.0018211775, + 0.0071298676, + 0.012505902, + 0.0028128691, + -0.021341728, + 0.0074576484, + 0.016159458, + 0.0098391455, + 0.0046103573, + -0.029048951, + 0.0044192513, + -0.035650607, + -0.0012240071, + -0.01462015, + -0.0025579168, + 0.01802885, + -0.016236685, + -0.0030668057, + -0.012446593, + -0.013280719, + 0.0039154715, + -0.019768277, + -0.0018593695, + 0.013105579, + -0.012902612, + -0.0011059877, + 0.008373417, + 0.024523573, + -0.0046463627, + 0.012843337, + -0.01789186, + 0.0013248714, + -0.008297413, + -0.0017105504, + 0.002998413, + 0.008483556, + 0.0025365911, + -0.01965758, + -0.00034947516, + -0.07128841, + 0.02114405, + 0.012849592, + 0.0044030068, + 0.012301979, + 0.0012762411, + 0.010948455, + -0.009778161, + -0.0076717194, + -0.004807137, + 0.011057163, + -0.0027344066, + 0.0039713355, + 0.014307493, + -0.004719575, + -0.005606275, + -0.004857556, + 0.0030969298, + -0.0071502356, + 0.0071694753, + 0.0056118337, + -0.011003906, + -0.013242454, + -0.002201133, + -0.011210143, + 0.011707216, + 0.014977044, + 0.01779632, + 0.0049853637, + 0.011419012, + -0.015742203, + -0.00091059506, + 0.019840932, + -0.0076076766, + 0.014827489, + -0.0013193649, + -0.004084095, + -0.0046535544, + -0.0033257792, + 0.016922941, + 0.00933627, + -0.0029515675, + -0.019037096, + -0.011801967, + -0.009330346, + -0.010905885, + 0.007985489, + 0.009175586, + -0.0026117398, + -0.017909586, + -0.018827332, + 0.010766246, + -0.012840325, + -0.010998265, + 0.016460525, + 0.006236891, + 0.010233909, + 0.0026413705, + -0.008256922, + 0.00972893, + 0.007981085, + 0.01276551, + 0.0018061681, + -0.0043630814, + -0.00842181, + 0.004283824, + -0.0077637713, + 0.015816802, + -0.009293964, + 0.012796772, + 0.0040589576, + 0.0011082987, + 0.010102504, + -0.01052493, + -0.008747211, + 0.012556736, + -0.0055830814, + 0.014535094, + -0.0045808023, + 0.00898575, + 0.0039800196, + -0.00030643796, + -0.009707205, + -0.0021455677, + 0.004889441, + -0.0019278255, + -0.00551531, + -0.00697778, + -0.009371127, + -0.007763565, + 0.0070936517, + 0.010226026, + -0.025632773, + -0.0029757218, + -0.0073764855, + -0.0039766, + -0.01939676, + -0.005446109, + -0.009669013, + 0.013183179, + 0.005567823, + -0.019986682, + -0.009758843, + -0.00025886044, + -0.0105059445, + 0.020477045, + 0.011233786, + 0.0077587278, + 0.0035075815, + 0.007340564, + -0.0016727118, + -0.0027424465, + 0.01035379, + 0.007912738, + -0.000476204, + 0.004735652, + 0.0073024845, + 0.01843886, + 0.019832747, + -0.00910018, + -0.015345127, + 0.008405346, + 0.0019537315, + 0.0019164104, + 0.002299855, + 0.002696311, + 0.005631684, + 0.00578032, + 0.00852868, + 0.0028267794, + 0.008999864, + -0.007418031, + 0.02282058, + 0.011151882, + -0.024318231, + 0.0009780303, + 0.0048498465, + 0.012158211, + 0.013832286, + 0.005164173, + 0.0015807186, + -0.011898483, + -0.009008129, + -0.008798536, + -0.010670915, + 0.014252894, + 0.009829728, + -0.009099043, + 0.0069771223, + 0.02418554, + 0.015512573, + 0.00018900732, + 0.0064851698, + 0.019639648, + 0.0027836817, + -0.008141263, + -0.001998092, + -0.008841341, + -0.0021694945, + -0.027253378, + 0.021251235, + 0.0019023509, + 0.0038814552, + 0.0021502986, + 0.014704044, + 0.0013565895, + 0.007978371, + -0.0006929121, + 0.010177474, + 0.0063588684, + -0.0010999792, + 0.011858147, + 0.00059684494, + 0.013481803, + -0.0013868957, + -0.0039049794, + 0.0035277978, + -0.0069398256, + 0.013482031, + 0.0053362814, + 0.011165399, + -0.0091067515, + 0.009329792, + 8.713115e-05, + 0.001329974, + 0.003414262, + 0.009019938, + 0.0031056672, + -0.009470695, + -0.0022317746, + -0.027405925, + 0.025359284, + 0.012371703, + -0.0037342575, + 0.0018377325, + 0.00076526735, + -0.015860876, + 0.0033443947, + 0.0005435608, + 0.011880754, + 0.0064352187, + -0.0040956065, + 0.0013957444, + -0.0019419627, + -0.004247217, + -0.10113446, + -0.0049007274, + 0.005112618, + 0.014931993, + -0.004185019, + -0.011393176, + 0.01751062, + 0.0077599576, + -0.0061833723, + -0.029866148, + 0.004701496, + -0.0037799496, + -0.0043319985, + -0.0015041421, + -0.004327486, + -0.01946988, + 0.0157463, + -0.009110845, + -0.0012058119, + 0.010209955, + 0.012683676, + 0.008276147, + -0.009890312, + 0.009617936, + 0.0058802175, + -0.0015596602, + 0.011550261, + 0.009336738, + 0.01749894, + 0.010255385, + -0.027008766, + 0.013050459, + 0.008046472, + 0.0030197853, + -0.004652549, + 0.0069988957, + 0.009348113, + 0.0010765893, + -0.13154635, + 0.0012652715, + -0.0071356157, + -0.0040416284, + -5.566019e-05, + 0.00078611454, + -1.2464685e-05, + 0.00022251309, + -0.0005219734, + 0.017187934, + 0.0023682495, + 0.0081900945, + 0.003430522, + -0.0023826663, + -0.007831453, + -0.0032064104, + -0.01439624, + 0.023305664, + -0.0075669624, + 0.015986707, + -0.0068884487, + 0.00775772, + 0.01839717, + 0.008425049, + 0.00012909493, + -0.014745144, + 0.004739198, + 0.020555062, + -0.014311922, + -0.0004176774, + -0.0014121381, + -0.0014468001, + -0.009847998, + -0.0040604915, + 0.0064213397, + 0.0001540802, + -0.0045972574, + 0.004563926, + 5.513047e-05, + -0.013095992, + -2.350623e-05, + 0.00257934, + -0.022639152, + -0.004979251, + -0.0066806725, + 0.01242826, + -0.01733605, + 0.015073579, + 0.004502074, + -0.013236162, + 0.005460156, + 0.008564144, + -0.018589975, + 0.011798008, + 0.01764574, + -0.006389439, + 0.013675649, + 0.0027546242, + 0.004415887, + 0.0009002774, + 0.0007691865, + 0.008201844, + -0.0050344197, + -0.0043231295, + 0.0039198464, + -0.00011188745, + -0.011282626, + 0.0126269655, + 0.013221059, + 0.011627293, + -0.006934167, + -0.00085665955, + -0.018859025, + -0.014511176, + -0.00013327446, + 7.926157e-05, + -0.0009064932, + 0.009159476, + 0.007928088, + -0.007916146, + -0.0027911032, + -0.0050543775, + -0.0042212503, + 0.014304856, + 0.009245745, + -0.03528282, + -7.623171e-05, + -0.00063225004, + -0.00079313794, + -0.041682914, + -0.022347867, + 0.008790185, + 0.010286237, + 0.01932483, + 0.009303921, + 0.014143503, + -0.00030344658, + 0.008106611, + 0.0033638885, + 0.013180762, + 0.00077922305, + -0.005838258, + 0.012066535, + 0.0051860586, + -0.0070442194, + -0.006834165, + -0.00023954672, + 0.007342173, + -0.023239428, + -0.003617059, + -0.0026720944, + -0.003708353, + 0.0154788615, + 0.009052739, + 0.0043318435, + 0.0039538904, + -0.0017184541, + -0.002295819, + -0.008554293, + -0.007275183, + 0.024533488, + -0.01794375, + -0.007010153, + 0.0021689893, + 0.009303209, + -0.0012250267, + 0.028254261, + 0.0009670305, + -0.010763198, + -0.016930241, + 0.0051692757, + 0.0061168987, + -0.012951033, + -0.0076493258, + -0.0026840272, + 0.011222177, + -0.0010592218, + 0.011700341, + -0.03209625, + -0.006637757, + 0.014856078, + -0.0023493082, + -0.003142559, + -0.0010250331, + -0.0064032343, + 0.00408636, + -0.008821977, + -0.009490421, + 0.009515141, + 0.0054991934, + -0.011902213, + -0.024442425, + -0.005363275, + 0.005948597, + 0.019373002, + 0.00038308738, + 0.0071736826, + -0.0068738596, + -0.0050033713, + 0.010404801, + 0.01242861, + 0.003386588, + -0.01729966, + 0.0044065197, + -0.0056427605, + 0.01180931, + 0.013047892, + -0.011034325, + -0.009681939, + 0.0023137769, + -0.013493431, + -0.001059334, + 0.0094511295, + 0.016935976, + -0.006434127, + 0.010116888, + 0.0014509656, + 0.0135692, + 0.017733265, + 0.007530965, + -0.0008389675, + -0.020920306, + -0.01974019, + -0.011524619, + 0.020378327, + 0.0011572792, + 0.0057896916, + -0.0076154163, + -0.007968624, + 0.0062724855, + -0.02427061, + 0.011058769, + -0.002157005, + -0.0049139075, + -0.022619544, + 0.0036295229, + -0.00033956114, + 0.0061540008, + 0.011330802, + -0.0016705551, + -0.0006477638, + 0.008865951, + 0.008978624, + -0.12549376, + 0.0011483863, + -0.0007791609, + 0.0005772204, + 0.007218184, + -0.010967211, + -0.01324162, + 0.00046197567, + 0.00034464907, + -0.01693338, + 0.014493383, + -0.0025178269, + 0.0027948504, + 0.0036025217, + -0.009861312, + -0.0225297, + -0.000573024, + -0.012890834, + -0.0013044835, + -0.0038721594, + -0.006036357, + 0.009784855, + -0.00015153433, + 0.0011565959, + 0.004817443, + -0.018549193, + 0.0057863165, + 0.012938486, + 0.003984826, + 0.008245914, + -0.00889808, + 0.0015177145, + 0.0004841874, + 0.0023484682, + 0.0063209306, + -0.019559119, + -0.013507841, + 0.009482627, + -0.010881602, + 0.011027014, + -0.011760992, + 0.0031759902, + -0.0015512988, + 0.0014484901, + 0.014865368, + -0.016976962, + -0.02547821, + -0.0065713366, + -0.02425702, + -0.00451906, + 0.020565875, + -0.013748187, + 0.025450295, + 0.008542114, + 0.019847086, + 0.011130348, + -0.021192199, + -0.003708448, + -0.0078379, + -0.0063854987, + 0.0025960186, + -0.029646127, + 0.0044672065, + -0.013433558, + -0.0058213654, + 0.0012396253, + 0.003019675, + 0.15411599, + 0.010998347, + 0.029062161, + 0.006693313, + -0.0054720165, + 0.019001098, + 0.0017947664, + 0.009643303, + -0.019859176, + -0.013053867, + -0.0014972056, + 0.012968202, + 0.022594115, + 0.0042089564, + 0.0057625542, + 0.012586268, + -0.002975285, + 0.0036044864, + 0.002609338, + -0.013938287, + 0.0072566983, + 0.0050863284, + -0.0026246917, + -0.012773603, + 0.017351517, + 0.0008529758, + -0.0040164003, + 0.026201462, + -0.0035293067, + 0.029804457, + -0.03150015, + -0.025760215, + -0.011178453, + 0.00096790073, + 0.022471966, + -0.013772505, + 0.0046933587, + -0.00025096192, + -0.00555039, + -0.0049909786, + 0.004744763, + 0.017482406, + 0.001062143, + 0.0011754198, + -0.01266103, + 0.030516041, + -0.009300723, + 0.028953398, + 0.013668008, + 0.012296531, + -0.01588032, + 0.01264528, + -0.016288685, + 0.0040984144, + 0.008894846, + -0.009905231, + -0.0031888848, + -0.019149061, + -0.022689741, + 0.005309861, + -0.010596462, + -0.02324654, + 0.0013965329, + -0.029675262, + -0.0043770433, + -0.003507999, + -0.0064335177, + -0.0103402445, + 0.01674405, + -0.13440363, + 0.0075927963, + -0.026676102, + -0.032818712, + -0.0067202155, + -0.014972761, + 0.027623676, + 0.004783768, + 0.010645377, + 0.012571089, + -0.0047334954, + -0.001073749, + -0.010340614, + -0.0057129604, + -0.019388748, + -0.002851394, + 0.0018149882, + 0.0051914062, + -0.003441121, + 0.031389713, + -0.0032258602, + 0.019027298, + -0.008462774, + 0.012915185, + 0.0032007927, + -0.010973557, + -0.034335855, + -0.0059200427, + -0.03785064, + -0.0037700073, + 8.772684e-05, + 0.012637739, + -0.0051584966, + 0.009722612, + -0.0118046375, + -0.015749305, + 0.0069755847, + -0.0036867931, + -0.011300213, + -0.031987187, + 0.027123645, + -0.016610831, + 0.0005068831, + -0.01626866, + 0.004232682, + -0.0039797314, + 0.0006992772, + 0.008946579, + 0.009619923, + 0.008039646, + 0.006433071, + 0.0083857635, + 0.029214738, + -0.0034094984, + -0.0071839793, + -0.014568484, + 0.025239041, + -0.023112576, + -0.0040391656, + 0.0025568993, + 0.005448043, + 0.008596333, + -0.01949378, + -0.024491489, + 0.015189006, + 0.0069937613, + -0.0015614115, + 0.0022333695, + 0.0013130095, + 0.027399655, + -0.021442642, + -0.0027017589, + 0.024845898, + 0.0042768396, + -0.015303012, + -0.0012927616, + -0.014212585, + -0.008490385, + -0.012857499, + 0.0026918866, + 0.0024612076, + -0.01787842, + 0.00016677297, + -0.013076192, + 0.01851199, + -0.020004472, + -0.018267537, + -0.008571638, + 0.009272392, + 0.009917584, + 2.2427668e-05, + -0.0001679924, + 0.001495124, + 0.0029355432, + -0.009955851, + 0.011481669, + -0.018617634, + -0.012655013, + 0.002959863, + -0.010551828, + 0.010566976, + -0.00547638, + -0.007314806, + 0.007814827, + 0.017825393, + -0.011271756, + 0.0015437632, + 0.026420074, + 0.011520657, + 0.0028496024, + -0.009558027, + -0.003171749, + -0.026519092, + 0.00839664, + 0.010000108, + -0.00984401, + -0.012995163, + 0.01792866, + 0.0103383735, + 0.008174345, + -0.013954868, + -0.0008839658, + -0.0016546377, + -0.0014585721, + -0.003730229, + 0.008337699, + 0.021007448, + -0.0116751855, + 0.006853999, + 0.010470975, + 0.0047475155, + -0.017074361, + -0.0036898616, + 0.007525888, + 0.014242162, + -0.0031338038, + -0.010483396, + 0.004184124, + 0.004200691, + -0.0047563063, + 0.0067842705, + 0.006841096, + -0.006166926, + 0.0073447954, + -0.00331166, + -0.0033253352, + 0.014838811, + 0.03302482, + 0.013676978, + -0.003965307, + 0.00034891054, + -0.0070057632, + -0.031226847, + 0.008741119, + 7.7074925e-05, + 0.002309868, + -0.021092178, + 0.004424756, + -0.010805343, + -0.0070582503, + 0.0009030877, + 0.0047311857, + 0.00027707225, + -0.015054697, + 0.011745699, + -0.015118417, + 0.0020726868, + -0.0074079563, + -0.003979076, + -0.0373274, + 0.0076907068, + -0.0033847496, + 0.009676019, + 0.003989316, + 0.00537552, + -0.0102131115, + 0.01604806, + -0.0021019657, + -0.0036074242, + -0.07370773, + 0.016251508, + 0.01913491, + -0.0075744167, + -0.0057346495, + -0.019592883, + -0.00089839625, + -0.008792925, + -0.0062233307, + -0.0034513252, + -0.0009158271, + 0.006966837, + -0.021693151, + -0.022992263, + 0.011297129, + 0.012391907, + -0.028648555, + 0.010610384, + -0.010035838, + 0.0014479007, + 0.0036349122, + 0.0019729754, + 0.027745439, + 0.0024648064, + 0.002361533, + -0.0014738202, + -0.003769813, + -0.020667529, + -0.01568652, + -0.006640782, + 0.007305903, + -0.001541139, + 0.0011563754, + 0.012078278, + 0.014150128, + 0.0066564083, + 0.0012767742, + -0.0030075193, + 0.008200627, + -0.059310015, + 0.025066322, + 0.00867268, + -0.10115889, + 0.001994195, + -0.018544506, + 0.0028172724, + -0.008930844, + -0.0077836025, + -0.015807088, + -0.0027923172, + 0.011694538, + 0.022896796, + -0.002467835, + -0.014921493, + -0.0013206194, + -0.0022400932, + 0.0028951548, + -0.015705826, + -0.009918975, + -0.022789411, + -0.0011261936, + 0.015051474, + 0.006905711, + 0.007927853, + 0.001767738, + 0.003032793, + -9.9784564e-05, + 0.010290896, + 0.0037157934, + -0.0009753703, + 0.0030746039, + -0.01603226, + 0.008226444, + 0.010678811, + -0.001846853, + -0.01040114, + -0.0029527647, + -0.0107408315, + 0.0031248461, + -0.002524024, + -0.0051562926, + 0.0032902923, + -0.008285604, + 0.030032016, + 0.008766954, + -0.012917063, + -0.0019435539, + -0.12764004, + -0.0117520355, + -0.026418528, + 0.0015738814, + -0.0022685546, + 0.01869576, + 0.007770697, + 0.1321313, + -0.031599507, + 0.0009070102, + -0.013740191, + -0.0071907807, + 0.00022861015, + -0.0064419587, + 0.0021176182, + -0.00010337344, + 0.011212686, + -0.010468846, + -0.016620316, + -0.0018967239, + -0.0239491, + 0.00014967505, + -0.004005274, + -0.0051165093, + -0.0032032167, + -0.041815303, + 0.0073320684, + 0.019712688, + 0.00586059, + -0.0021483193, + -0.0046662134, + -0.0040648635, + 0.015170731, + 0.005767225, + 0.0012438516, + 0.017445898, + -0.00781913, + -0.00075357634, + -0.0026311597, + 0.0015433509, + 0.005465703, + 0.009966477, + 0.012214459, + -0.025185978, + -0.01744069, + -0.010157152, + -0.015251515, + -0.007837943, + 0.026992958, + -0.014606038, + 0.0125807235, + 0.012833016, + -0.007330095, + 0.006914375, + -0.022544127, + -0.00012776212, + 0.0022015842, + -0.013039287, + -0.0064494205, + 0.00250702, + -0.014849575, + -0.0054368586, + -0.003328686, + -0.013628556, + 0.0036707746, + 0.018588293, + 0.0033171338, + -0.005719763, + -0.0046660253, + -0.00085371744, + 0.006026803, + 0.01482038, + 0.008803959, + 0.0050346083, + -0.0071692043, + 0.0038208691, + 0.010881046, + -0.00025067513, + -0.025629546, + 0.015926838, + 0.012460762, + -0.0012118124, + -0.0003016765, + -0.012153138, + 0.015534729, + -0.0044092545, + -0.00095768174, + -0.0016420397, + 0.013804815, + -0.010450318, + -0.009980672, + -0.016674217, + -0.018013258, + -0.0026939707, + 0.006385547, + -0.00022842591, + 0.010432637, + 0.0026066245, + -0.015953293, + -0.0056060944, + -0.022458443, + -0.022350803, + -0.008945824, + -0.0022699353, + 0.0007100897, + -0.0075403196, + -0.0020852736, + -0.008612602, + 0.003081507, + -0.0063186265, + 0.015791815, + -0.008857787, + 0.012388251, + 0.0036018589, + 0.003696184, + 0.014438639, + 0.0069463286, + 0.008595042, + -0.014976479, + 0.005360097, + -0.0008863557, + 0.0021500725, + -0.009453832, + -0.01975644, + -0.005339055, + -0.012412678, + 0.022777477, + 0.0026788148, + 0.004590457, + -0.019592844, + -0.010005164, + -0.0024333696, + 0.0029599476, + 0.013824455, + -0.011126957, + -0.0044667856, + -0.0027832435, + 0.009864287, + -0.010240515, + -0.02289832, + -0.018920938, + 0.0055165305, + -0.021835156, + -0.010456208, + 0.016913459, + 0.007766291, + 0.0077063288, + -0.02810555, + -0.016521297, + -0.023434367, + 0.0053794077, + 0.0036307161, + 0.02542831, + -0.0025094163, + -0.006459824, + 0.0063279364, + -0.005066118, + 0.0075214356, + 0.011747835, + -0.002646805, + -0.029509472, + -0.00086615206, + -0.007892074, + -0.003725141, + -0.021037554, + -0.0011267157, + -5.579391e-05, + -0.010627381, + 0.023485506, + 0.005429961, + -0.004252876, + -0.017227678, + -6.281759e-05, + 0.003560077, + 0.017644353, + 0.0030251953, + 0.0035889088, + 0.006534239, + 0.010435479, + -0.010141574, + -0.003465907, + 3.264064e-05, + -0.0017140793, + -3.5351193e-05, + 0.0045308904, + 0.00033461765, + -0.0051832167, + 0.0012082846, + -0.0068293232, + 0.0032011736, + -0.0020273188, + 0.012943087, + 0.007367056, + 0.015017999, + -0.0009245704, + 0.00767235, + 0.0054951287, + -0.019832144, + -0.0026459172, + 0.017353136, + 0.014508564, + -0.008996641, + -0.008176985, + -0.023621656, + 0.016050432, + 0.016184215, + 0.00855087, + 0.0077263364, + -0.022535987, + -0.0062524043, + 0.00948866, + 0.007980636, + -0.006194562, + 0.008656705, + 0.011052535, + 0.006233825, + 0.013555629, + -0.001158201, + 0.0016663927, + 0.003887912, + 0.016378049, + 0.010259253, + 0.03075573, + -0.0073310076, + 0.002906897, + -0.023796588, + -0.0049516573, + 0.009867118, + 0.009279919, + -0.0013618099, + 0.004735957, + -0.011912313, + 0.014314374, + -0.010991461, + -0.01793626, + -0.0042441883, + -0.011599214, + -0.004664947, + -0.007730245, + -0.023849424, + -0.008907767, + 0.001680627, + 0.0021082838, + 0.004427241, + -0.009299997, + -0.027704282, + 0.013674968, + 0.018026924, + -0.013029633, + -0.013729332, + -0.005878005, + 0.0016829204, + -0.0051390175, + 0.010078276, + 0.0030407524, + 0.013154401, + 0.010024837, + 0.007754739, + 0.010033473, + 0.004688279, + -0.004011831, + 0.006805001, + 0.009030964, + -0.0032740508, + -0.024805795, + -0.012260087, + -0.017885132, + 0.022400007, + -0.019947696, + 0.0022859147, + 0.0013856788, + 0.0060809995, + -0.022569733, + -0.021946022, + -0.0054134256, + -0.017881397, + -0.009177422, + 0.0107345125, + -0.010607636, + 0.013973255, + 0.003978502, + -0.012738835, + 0.000791927, + -0.022167979, + -0.010027519, + -0.006300139, + 0.0016046254, + -0.0011658802, + 0.0128343385, + -0.025260564, + 0.004826241, + -0.0064358516, + 0.0054054204, + -0.0033747216, + -0.0011064982, + -0.004175435, + 0.010213595, + -0.012992344, + 0.010516374, + -0.004002639, + 0.028947463, + -0.006851498, + -0.008816499, + -0.012853919, + -0.005094008, + -0.014931464, + -0.0034168812, + -0.01646018, + -0.02397455, + -0.0047775037, + -0.02043237, + -0.0029183512, + 0.02339196, + 0.0010641259, + -0.035893433, + 0.015418697, + -0.00570236, + 0.022694616, + 0.032251097, + 0.0014124541, + 0.014922707, + 0.006191483, + 0.021030203, + 0.011940469, + 0.02959254, + -0.0066985167, + 0.01737022, + 0.001593132, + -0.0024463893, + -0.008048572, + 0.016283758, + -0.0076325587, + -0.022071593, + -0.009680199, + -0.009991326, + -0.008559377, + -0.003527623, + 0.009898091, + -0.0239721, + -0.006869922, + 0.005094324, + 0.014594455, + -0.0042542615, + -0.018695602, + -0.0059096892, + 0.010420368, + -0.0024047978, + -0.005004349, + -0.018082088, + -0.0026000964, + -0.0023837327, + -0.011441631, + -0.0074695516, + 0.008580243, + -0.0063919043, + -0.0017962483, + 0.011074562, + -0.0025787882, + 0.005604805, + -0.0037249092, + -0.016371569, + 0.03919583, + 0.0032451504, + 0.004928544, + 0.011013678, + 0.005899762, + -0.038711008, + -0.006520802, + -0.009998993, + 0.01638301, + 0.01924471, + 0.008516619, + 0.012274732, + -0.004723619, + -0.015955744, + -0.01359156, + -0.010410402, + -0.00184826, + -8.660255e-05, + 0.014252323, + -0.004730456, + 0.013736535, + 0.012686817, + -0.013235756, + -0.0009964491, + 0.0037149363, + -0.020582091, + 0.02038097, + 0.028052317, + -0.007478327, + 0.0033647777, + -0.0037701842, + 0.0016368731, + 0.0045173857, + 0.011923115, + -0.011889629, + -0.0012407245, + -0.0010608097, + 0.0019567208, + -0.0248674, + 0.033993214, + 0.00042667708, + -0.0034449252, + -0.022427725, + 0.009021254, + -0.027144741, + -0.0023788041, + 0.011085944, + -0.023597613, + -0.009491141, + -0.005776225, + -0.0016031681, + -0.021279635, + 0.012437693, + -0.016642189, + 0.025417395, + -0.014908248, + -0.008183821, + 0.039981786, + 0.0040104603, + -0.0074198744, + -0.015832355, + 0.021973945, + 0.010837469, + 0.0030428884, + -0.0038051778, + -0.012305103, + -0.020555655, + 0.03235212, + -0.010549047, + 0.015897121, + -0.013503583, + -0.015522676, + -0.021551834, + -0.0021402794, + -0.003645485, + -0.013429839, + -0.007476074, + -0.0013966657, + 0.011476252, + -0.011817603, + 0.0143499, + 0.026428957, + -0.0056521515, + 0.019470528, + -0.009124, + -0.018970879, + 0.015043343, + 0.0004576729, + 0.040772706, + 0.002367863, + 0.0028462203, + -0.002960511, + 0.012848347, + -0.009437713, + 0.008334162, + -0.005632875, + 0.0031996076, + 0.029671298, + 0.008185566, + 0.0084228795, + 0.005100863, + 0.011880753, + 0.0012442798, + -0.019727675, + -0.023113897, + 0.0035514317, + -0.012268589, + -0.0054680523, + -0.0017859386, + -0.046230547, + -0.013419785, + -0.033217926, + 0.011873421, + -0.003891995, + 0.012969521, + 0.0065369657, + 0.0013104244, + 0.011228913, + -0.04874567, + -0.0065299175, + -0.012434343, + -0.026985493, + -0.0038235527, + 0.018916523, + -0.0042355824, + 0.009603488, + -0.034257222, + -0.014229425, + 0.017436275, + 0.0023552575, + 0.004705255, + -0.0017279481, + -0.015836205, + -0.011282497, + 0.00075895473, + -0.011368437, + 0.0042966832, + -0.0017585753, + 0.01659405, + -0.012923276, + -0.0059640934, + -0.0046882005, + -0.011100364, + 0.014342708, + 0.015982203, + -0.00887332, + -0.0022998685, + 0.030196847, + -0.018628055, + -0.006706339, + 0.014671887, + -0.0099548185, + -0.0067233085, + -0.009807834, + -0.01689993, + -0.008447269, + -0.01216179, + -0.017622743, + 0.017328693, + 0.017838366, + -0.011037993, + 0.0039087404, + -0.0032270402, + 0.011305451, + -0.0068248753, + 0.0034847471, + 0.0033400392, + 0.021361908, + 0.019645192, + -0.011504775, + 0.020355903, + -0.017869975, + 0.008740273, + 0.0040119006, + -0.02039089, + 0.010365827, + 0.011100598, + 0.012329933, + 0.0031863514, + 0.025081683, + 0.0017841234, + -0.012944432, + 0.008082693, + 0.012554458, + -0.0070418385, + 8.4894644e-05, + -0.031730615, + 0.009901145, + 0.009566268, + -0.007260933, + -0.016410906, + 0.0039879605, + -0.014069598, + 0.024369983, + 0.00776768, + 0.013354023, + 0.0076537197, + 0.008906825, + -0.011182678, + -0.01077545, + -0.0007510319, + -0.0010947599, + 0.002254599, + 0.01809531, + -0.024941899, + 0.025307592, + -0.012712451, + -0.00095111044, + 0.012815936, + -0.007110248, + 0.0022671574, + 0.0070549324, + -0.009609365, + 0.0030197115, + 0.013972379, + -0.010187787, + -0.015748797, + -0.010865253, + 0.0046360004, + -0.0028331748, + -0.003289964, + -0.01276741, + -0.005548282, + -0.026381258, + 0.01732164, + 0.0051409523, + 0.014974104, + 0.012286174, + -0.004700372, + 0.011064182, + -0.008523704, + 0.024264384, + 0.011873411, + -0.009858362, + 0.020916112, + -0.0016135278, + -0.028254904, + -0.020963738, + 0.0061805816, + 0.011928123, + -0.016326925, + -0.017728625, + -0.028945975, + -0.008378486, + 0.018371321, + -0.00047020285, + 0.0050460277, + -0.0014687211, + -0.008961886, + -0.027412, + 0.02813198, + -0.015013141, + 0.0026996767, + 0.015116287, + 0.0007102734, + 0.024283363, + -0.023386529, + 0.0022846186, + -0.007687656, + -0.0033755803, + -0.0020437601, + -0.0054740226, + -0.0036424045, + 0.0028392277, + -0.012008524, + 0.031928256, + 0.0041273134, + -0.0089144325, + -0.032349136, + 0.018246403, + 0.0064425273, + 0.013568862, + -0.0056619854, + -0.011318169, + 0.009910818, + 0.005976557, + -0.0024324104, + -0.009070891, + 0.02609382, + 0.009164383, + 0.0067841965, + -0.0003882786, + -0.00662996, + 0.0072617503, + -0.0032657527, + 0.0012167445, + -0.0037888796, + 0.012696804, + -0.001716066, + -0.0024137483, + -0.00061802333, + 0.009255335, + 0.013259118, + 0.010822346, + -0.0022604822, + 0.007705501, + -0.0062117274, + 0.022560894, + 0.005789997, + 0.009870279, + -0.016180025, + 0.008896671, + -0.017942028, + -0.00044274877, + 0.016847199, + 0.0148135545, + -0.008388685, + 0.0025089493, + 0.00496837, + -0.010412286, + -0.00950524, + -0.012983192, + 0.011212081, + 0.00030424952, + -0.015531045, + 0.0068566757, + 0.00036008502, + -0.015272015, + 0.011732208, + -0.033582006, + 0.01810853, + -0.00037915682, + -0.0044306708, + 0.016721655, + 0.0024983326, + 0.18192898, + 0.11574661, + -0.006695629, + 0.00040009964, + -0.0012250019, + 0.0076864487, + 0.0034757166, + 0.012513828, + 0.0037730555, + -0.016599694, + -0.02198299, + -0.012400087, + -0.0046616937, + -0.0045308257, + -0.008734685, + -0.018628504, + -0.0053031123, + -0.009979567, + -0.012507724, + -0.0038312646, + 0.007432121, + 0.025419325, + 0.015787736, + 0.016439037, + -0.01633571, + -0.0069500324, + -0.028771466, + 0.0007385791, + 0.0042925347, + 0.0098091485, + 0.0053268457, + 0.0054380856, + -0.0075696036, + 0.00061018346, + 0.00820882, + 0.0011488122, + -0.004683429, + -0.00546984, + 0.0011713504, + -0.008540978, + -0.008693511, + 0.009943681, + -0.027417703, + 0.008421478, + -0.004617386, + -0.0036036822, + -0.00806491, + 0.006609918, + -0.002115457, + -0.006302717, + -0.0004683854, + -0.0011388202, + 0.0023845516, + 0.005539582, + -0.02458794, + 0.0066834376, + 0.009032304, + 0.022472192, + -0.024583867, + 0.011357299, + 0.030708237, + 0.006286613, + -0.024127001, + -0.004261912, + 0.0060589416, + -0.019336466, + 0.011349811, + -0.017727597, + 0.019299418, + 0.011931476, + 0.0025496334, + 0.003698905, + 0.021144561, + -0.0053581125, + -0.007147438, + -0.0070261406, + 0.007004396, + 0.02087099, + -0.02232327, + -0.00914425, + -0.03734111, + -0.012692625, + 0.00951948, + 0.0027951377, + 0.0029665923, + 0.008958011, + -0.014967644, + 0.017949145, + 0.13550235, + 0.008739238, + 0.0069498075, + -0.016870564, + 0.008574542, + -0.015286999, + -0.009498894, + 0.050684035, + 0.0031985315, + -0.0071731596, + 0.0034208817, + -0.023815464, + 0.011259904, + -0.013000243, + 0.0023959975, + -0.0031024679, + 0.018822419, + 0.07259271, + -0.005754364, + -0.01297449, + -0.009203447, + -0.012284401, + 0.00066643266, + -0.016920662, + -0.01871044, + 0.014503336, + 0.00446966, + -0.014284746, + -0.020385472, + -0.010954158, + -0.11834668, + -0.012137524, + 0.0034122174, + 0.02119757, + 0.023010245, + 0.013619113, + -0.03608078, + -0.022575248, + 0.020519473, + 0.0077648647, + 0.0129157165, + 0.0010266651, + 0.037588265, + -0.013121277, + -0.010810563, + -0.010819504, + 0.01107703, + 0.0058187465, + 0.0073332693, + 0.0055080527, + 0.0063170707, + 0.010691358, + -0.013011938, + -0.017021524, + 0.0018511998, + 0.010016584, + 0.0029402256, + 0.0049434146, + 0.016218748, + -0.00094759377, + 0.005489795, + 0.006671583, + -0.002078264, + 0.01642489, + -0.005284572, + 0.006392261, + -0.016854798, + 0.0001234301, + 0.0070276, + -0.017583396, + 0.008571602, + -0.007872555, + 0.014736844, + -0.03051385, + -0.008184289, + -0.02187798, + 0.025266686, + -0.02554556, + -0.006624621, + 0.001638356, + 0.0661878, + -0.00018980939, + -0.01949759, + -0.014423047, + 0.011357499, + 0.016133076, + 0.009662694, + 0.011706927, + -0.02588653, + 0.009055956, + -0.028707054, + 0.009987235, + 0.009483339, + -0.015588614, + 0.025857266, + 0.0008257921, + -0.009878127, + 0.0011446921, + 0.00858539, + 0.007949241, + -0.012273512, + -0.010559733, + -0.009155529, + -0.01851766, + -0.023253812, + -0.015820866, + -0.0071343724, + 0.010148998, + 0.005852047, + -0.004211419, + 0.014076001, + -0.021029646, + 0.01143922, + 0.12621424, + 0.016577745, + -0.013200802, + 0.007252911, + 0.010128976, + -0.01800221, + -0.0071450714, + 0.00057110324, + 2.8346067e-05, + 0.01218976, + -0.011770302, + 0.009635198, + 0.007728661, + 0.018418025, + 0.01590825, + -0.022693992, + 0.023796547, + -0.011384495, + 0.0056952396, + -0.0020202643, + 0.0030059956, + 0.0052879816, + 0.004840821, + 0.004000073, + 0.001347768, + 0.0021706864, + -0.026343353, + -0.007946671, + -0.004369344, + -0.011418952, + -0.00075893884, + -0.0019176402, + 0.00233453, + 0.0035377692, + -0.006982876, + 0.0041959435, + 0.012710008, + -0.011041814, + 0.0009983975, + -0.0037775876, + 0.013419514, + 0.018840149, + -0.009303957, + 0.01006055, + -0.02049406, + 0.19282317, + -0.01902035, + 0.0070103165, + -0.0062239985, + 0.000586477, + 0.013768561, + -0.016021231, + 0.013410198, + 0.008437876, + 0.003821201, + 0.02031044, + -0.0114681395, + -0.006616491, + 0.013073506, + 0.0159395, + 0.0057846056, + 0.0004546654, + 0.038460035, + -0.017734298, + 0.011703511, + 0.00028914964, + -0.012233376, + -0.030684683, + 0.00022904284, + -0.010351831, + 0.011136337, + 0.01243425, + -0.01100715, + 0.0084689, + -0.025079433, + -0.022724723, + -0.028273942, + 0.011432339, + -0.009235956, + 0.008413546, + -0.0010819634, + 0.013597246, + -0.013910726, + -0.013140183, + 0.023079393, + -0.013715101, + -0.01590305, + 0.030263143, + 0.017954111, + 0.005136289, + -0.025599692, + -0.0030492947, + 0.014094089, + -0.006422627, + -0.010872441, + 0.0054095616, + 0.009063865, + 0.034053225, + 0.012715899, + -0.0225691, + 0.010167347, + -0.011571894, + 0.018559432, + -0.0064651566, + 0.0020887065, + 0.0014984119, + -0.007625711, + 0.011184661, + 0.0034512766, + 0.018264674, + 9.511567e-05, + -0.0081613185 + ] + } + ] +} +276 34131 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 81 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["Which of these are cities in Japan"]}HTTP/2.0 200 OK +Content-Length: 33176 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:19:44 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 93 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6659cb4779-xzdkj +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999992 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_e5a204d946f144cb9ca3e99827a28179 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.01976611, + 0.003909019, + 0.00026493086, + 0.013577655, + -0.01501591, + 0.02332876, + -0.03802799, + -0.0021227456, + -0.00035028602, + -0.048372872, + -0.011829318, + 0.01184911, + 0.011684173, + -0.009757702, + -0.011994255, + -0.010377868, + 0.024252411, + -0.0069867526, + 0.011479651, + -0.02113839, + -0.01522703, + 0.01448811, + 0.0046908227, + -0.03370003, + 0.0010646716, + 0.029029, + 0.008860443, + -0.02335515, + -0.00997542, + 0.0027725995, + 0.011459858, + 0.0018753394, + -0.0049679177, + -0.0051130624, + -0.0041498276, + -0.0030942275, + -0.008490982, + -0.00704613, + -0.019700136, + 0.0027247677, + 0.04235595, + -0.0035428575, + -0.009361853, + -0.0066304877, + -0.00332514, + 0.004621549, + -0.025373986, + 0.022734985, + -0.01638819, + 0.018697316, + 0.019198725, + 0.015161055, + -0.034623682, + -0.000048347305, + -0.025849005, + 0.0034537914, + -0.020808516, + 0.01659931, + -0.023051666, + 0.00027874438, + 0.013696411, + 0.005456133, + -0.018987605, + 0.012317533, + 0.0068745953, + -0.0089726, + -0.0012155893, + 0.008359033, + -0.014606865, + -0.0076596974, + 0.03055962, + 0.011961267, + -0.007323225, + -0.01274637, + 0.014303381, + -0.03417505, + -0.012416495, + -0.013709606, + 0.012581433, + 0.028685931, + 0.008847248, + -0.019964036, + 0.0048326687, + -0.025123281, + 0.02113839, + 0.004601756, + -0.0093156705, + 0.029767921, + -0.00026080743, + 0.0018225594, + 0.01419782, + 0.029847091, + -0.000028090919, + 0.017298644, + -0.027445601, + -0.01884246, + 0.0014283587, + 0.02016196, + -0.008807663, + -0.012073426, + 0.0079104025, + 0.013267573, + 0.002462517, + -0.01050322, + -0.008279863, + 0.02280096, + 0.005898165, + -0.021784946, + 0.005848684, + -0.008570152, + -0.0017714287, + 0.026469171, + 0.0040607615, + -0.07478926, + -0.03190551, + -0.02707614, + 0.02937207, + -0.0074749677, + -0.01498952, + -0.015847195, + 0.0002001929, + 0.04048226, + 0.012614421, + -0.011354297, + 0.04449354, + 0.0095004, + -0.012845333, + -0.02340793, + -0.014474915, + -0.01396031, + 0.03005821, + -0.0021079013, + 0.0064094714, + 0.0050998675, + -0.0072638476, + 0.01462006, + -0.0018374037, + -0.0062907166, + -0.014633255, + -0.01828827, + 0.006795425, + -0.0054891203, + 0.00635999, + 0.01509508, + 0.0269178, + 0.010232722, + 0.03422783, + 0.00786422, + 0.007738868, + -0.020914076, + -0.00094179314, + -0.015583295, + 0.0009648844, + 0.0063072103, + 0.0038100563, + 0.00910455, + 0.016216656, + 0.01388114, + 0.0028765101, + -0.012944295, + -0.010015005, + 0.0124098975, + 0.02435797, + -0.010588988, + -0.013122428, + 0.020095985, + 0.01831466, + 0.024846185, + 0.0025235438, + 0.000048218448, + -0.03116659, + 0.0075013577, + -0.04488939, + 0.012053633, + 0.014276991, + -0.005977335, + 0.01411865, + 0.01467284, + -0.03179995, + 0.008194095, + 0.004925034, + -0.00480298, + 0.019607771, + 0.001966055, + 0.013999895, + 0.0018291569, + 0.0166257, + 0.0006869647, + 0.010325087, + -0.01931748, + 0.03557372, + 0.02773589, + 0.02997904, + 0.011440065, + -0.6232262, + -0.039321102, + -0.0020996544, + 0.0044533126, + 0.03211663, + 0.00934206, + 0.0321958, + 0.0057761115, + 0.0035824426, + 0.02995265, + -0.010965046, + 0.01562288, + -0.027419211, + -0.004525885, + -0.010364673, + -0.006267625, + 0.008583347, + -0.01348529, + 0.003813355, + 0.02053142, + -0.0069867526, + 0.0002610136, + -0.011255335, + -0.014316576, + 0.012396703, + -0.01129492, + -0.023658635, + -0.009012185, + -0.012053633, + 0.04631445, + -0.03222219, + 0.04312126, + 0.020544615, + -0.00504049, + 0.031008251, + 0.0021128494, + -0.031034641, + 0.02240511, + 0.0139867, + 0.024846185, + -0.02675946, + 0.00467103, + 0.013524875, + -0.0013821763, + 0.0008584997, + 0.01364363, + 0.04053504, + -0.023394736, + 0.005307689, + -0.0017301944, + 0.02372461, + -0.0314041, + -0.03731546, + -0.009467413, + 0.013577655, + 0.010694548, + 0.019013995, + -0.012647408, + -0.0070659225, + -0.021362705, + -0.022787765, + 0.0038661351, + -0.0179452, + -0.010094175, + -0.013999895, + 0.013313755, + -0.008174303, + -0.008596542, + 0.00725725, + -0.03546816, + 0.0045324825, + 0.0076465025, + -0.011195958, + 0.009724715, + 0.020848101, + 0.03955861, + 0.019805696, + -0.007323225, + -0.01359085, + -0.013366535, + 0.012027243, + -0.00069191284, + -0.02055781, + -0.03346252, + -0.00032451455, + -0.03528343, + -0.015002715, + 0.011228945, + 0.01712711, + -0.01572844, + 0.0032624637, + -0.0027725995, + -0.014817986, + 0.0055089127, + -0.010008408, + 0.015385371, + -0.002027082, + 0.002172227, + 0.004938229, + -0.019462625, + -0.022471085, + -0.009876458, + 0.008352435, + -0.0015083535, + -0.014211015, + -0.029873481, + -0.01783964, + 0.0081677055, + 0.02562469, + -0.017166695, + 0.010932058, + 0.002040277, + -0.017826445, + -0.00665028, + 0.02615249, + -0.02251067, + 0.02127034, + -0.0051526474, + 0.01517425, + 0.0087218955, + 0.0057200324, + 0.017536156, + 0.021758555, + 0.0011067307, + 0.02720809, + 0.0155041255, + -0.006442459, + -0.005423145, + -0.006478745, + 0.010015005, + -0.011479651, + 0.014554085, + 0.01789242, + -0.018961215, + 0.004502794, + 0.022154406, + -0.0005183161, + -0.006082895, + 0.02789423, + -0.01717989, + -0.02997904, + -0.01981889, + 0.01799798, + -0.017087525, + 0.00038079947, + -0.024291996, + -0.0008609738, + -0.00134589, + -0.03288194, + 0.006224741, + 0.011156373, + -0.017391011, + -0.02047864, + 0.01274637, + -0.009249696, + -0.0057728128, + -0.0023272682, + -0.00054594316, + 0.007296835, + 0.00947401, + 0.03623347, + 0.0008782922, + -0.019581381, + 0.0032162813, + 0.013551265, + -0.020650174, + 0.04280458, + 0.012178985, + -0.0020617188, + -0.022009261, + -0.020571005, + -0.012832138, + 0.0011809525, + 0.008741688, + -0.00841841, + -0.0055880826, + 0.008979198, + -0.010707743, + 0.00030101094, + 0.006867998, + 0.0138151655, + -0.01712711, + -0.02483299, + -0.0051625436, + 0.034623682, + -0.01356446, + 0.01704794, + -0.00024369516, + 0.007217665, + 0.0145145, + -0.02578303, + 0.014211015, + 0.0043378565, + 0.0043411553, + 0.02836925, + 0.0020831607, + 0.01419782, + 0.016111095, + -0.024661455, + 0.0060169203, + 0.015768025, + -0.0032756587, + 0.001594121, + -0.024608675, + 0.03736824, + -0.01462006, + -0.0101535525, + -0.023130836, + 0.024107266, + 0.01026571, + 0.022048846, + -0.01754935, + -0.00477659, + 0.017536156, + -0.0068152174, + 0.027419211, + 0.00022575821, + 0.014844376, + -0.0153062, + -0.004130035, + 0.019739721, + -0.019911256, + 0.009810483, + -0.012277948, + -0.019607771, + 0.0021920195, + -0.010285502, + 0.030955471, + -0.0008094308, + -0.008128121, + -0.02784145, + -0.017166695, + -0.0061323764, + 0.0031173187, + -0.0060433103, + -0.008655921, + 0.022629425, + -0.011341102, + 0.02726087, + 0.0069867526, + 0.015240225, + 0.010443843, + 0.018473001, + -0.00828646, + 0.01158521, + 0.006769035, + 0.04525885, + 0.017615326, + 0.007006545, + 0.02121756, + -0.03042767, + -0.017496571, + -0.00248066, + 0.016282631, + 0.005291195, + -0.02551913, + 0.02496494, + 0.0060268166, + 0.01361724, + 0.03356808, + 0.0044038314, + -0.006867998, + -0.0024790107, + -0.00921011, + 0.0009269488, + 0.0059278538, + 0.0129311, + 0.02026752, + -0.021837726, + -0.01765491, + -0.025585106, + -0.0042191013, + -0.015556905, + 0.0017202982, + 0.00556829, + -0.0023322164, + -0.0058519826, + -0.0043510515, + 0.01604512, + 0.03005821, + 0.0064721475, + -0.059588622, + 0.01359085, + 0.02728726, + -0.019634161, + -0.020465445, + -0.010892473, + -0.0066700727, + -0.017470181, + 0.0065843053, + 0.020861296, + 0.018776486, + 0.0073562125, + -0.009724715, + -0.01702155, + 0.0066073965, + 0.03000543, + -0.02134951, + -0.019383455, + -0.017061135, + -0.0003364725, + -0.027445601, + -0.0031222668, + 0.0030315514, + 0.03137771, + -0.024872575, + -0.00035234774, + -0.010621975, + 0.012686993, + -0.006867998, + -0.009388243, + -0.012614421, + -0.006953765, + 0.011802928, + 0.021798141, + -0.02565108, + -0.019964036, + 0.008253473, + 0.021494655, + -0.0036715087, + -0.014791595, + -0.01607151, + -0.022576645, + -0.0025433362, + 0.11579932, + -0.00944762, + 0.007824635, + -0.019330675, + 0.01704794, + 0.006953765, + -0.00266539, + 0.0059707374, + -0.010325087, + 0.01118936, + -0.01683682, + -0.010509818, + 0.012522055, + 0.005518809, + 0.019172335, + -0.013472095, + -0.04201288, + -0.04095728, + 0.0087218955, + -0.013359938, + 0.001095185, + -0.015108275, + 0.028553981, + 0.007857623, + -0.02013557, + 0.022497475, + 0.02567747, + 0.01652014, + 0.015213835, + -0.012343923, + -0.0012188881, + 0.0055484977, + -0.01947582, + 0.01797159, + -0.016374996, + 0.011070605, + 0.011090398, + 0.03676127, + 0.0011826019, + -0.0011380687, + -0.005888269, + 0.007171483, + -0.0002983307, + -0.01401309, + 0.008675713, + -0.03198468, + 0.0035560525, + 0.0101667475, + -0.0071648853, + -0.0145145, + 0.028659541, + -0.014316576, + -0.032565262, + -0.03528343, + -0.019409845, + 0.012211973, + -0.003786965, + -0.0033944137, + 0.009269488, + -0.0155041255, + -0.00009179803, + -0.0072638476, + 0.0057068374, + -0.0032690612, + -0.02174536, + -0.03884608, + 0.011987657, + -0.03108742, + -0.05140772, + -0.0044698063, + 0.0005814047, + -0.016981965, + -0.02897622, + 0.020095985, + 0.03148327, + -0.012000852, + 0.02430519, + -0.024846185, + 0.008906625, + 0.01797159, + -0.0168896, + -0.03396393, + -0.024291996, + -0.01417143, + -0.01937026, + 0.02464826, + 0.013577655, + -0.02274818, + -0.01301027, + -0.010015005, + 0.0060795965, + -0.0027890932, + 0.008273265, + 0.01997723, + -0.0030233045, + -0.009559778, + 0.01079351, + 0.019660551, + -0.00749476, + -0.02916095, + 0.03855579, + -0.0018308063, + -0.00847119, + -0.008405215, + 0.0070791175, + 0.010668158, + 0.014554085, + -0.002942485, + -0.00002896715, + 0.002726417, + 0.02491216, + -0.02945124, + 0.02272179, + 0.007903805, + -0.01351168, + 0.03676127, + 0.014329771, + 0.020439055, + -0.0035560525, + -0.0134589, + 0.010285502, + -0.0067756325, + 0.023473905, + 0.03211663, + -0.02997904, + 0.008900028, + -0.009348658, + 0.00041997212, + 0.0007108806, + -0.01411865, + -0.016031925, + 0.037104342, + -0.0069603627, + -0.029794311, + -0.01889524, + -0.009638947, + -0.01016015, + 0.018670926, + -0.017325036, + -0.0129311, + -0.020966856, + -0.0070263376, + 0.020940466, + -0.008345838, + -0.05219942, + -0.02335515, + 0.01142687, + 0.014580475, + 0.011255335, + 0.010041395, + 0.015385371, + 0.0050206976, + -0.012614421, + -0.0030084602, + -0.04436159, + -0.02810535, + -0.015438151, + -0.016850015, + -0.001156212, + 0.0197925, + 0.04953403, + 0.024041291, + 0.02905539, + 0.0017301944, + -0.010542805, + -0.00078798895, + -0.0046380428, + 0.0321958, + -0.008405215, + -0.002916095, + 0.018327855, + 0.02171897, + -0.024199631, + -0.006138974, + -0.012080023, + 0.04892706, + 0.002335515, + -0.009790691, + -0.011209153, + -0.05204108, + -0.0013368184, + -0.00847119, + 0.0042388937, + -0.011433467, + 0.011420272, + -0.0033234907, + 0.0031849432, + -0.0126935905, + 0.005106465, + -0.009177122, + 0.008728493, + 0.0012708434, + 0.010780315, + 0.009863263, + 0.0027462095, + -0.008352435, + -0.017417401, + -0.01517425, + -0.0004362597, + 0.023051666, + 0.01649375, + 0.0009162278, + -0.006000426, + 0.01229774, + -0.0029457838, + 0.012865125, + -0.00760032, + -0.01681043, + -0.016506946, + -0.0023190214, + -0.024252411, + 0.0047502, + 0.0025565312, + -0.03288194, + -0.016374996, + -0.009487205, + -0.010938656, + 0.028738711, + -0.02549274, + -0.020821711, + 0.01287832, + 0.00020472867, + 0.02288013, + 0.0121130105, + 0.012383508, + 0.0064754463, + 0.005782709, + -0.010430648, + -0.026086515, + -0.024978135, + 0.0008403566, + 0.015715245, + 0.02615249, + -0.01799798, + -0.031008251, + -0.005657356, + 0.0107209375, + -0.003496675, + -0.0033218414, + 0.03607513, + 0.03435978, + -0.0145145, + -0.0056672525, + 0.012950893, + -0.01612429, + 0.032433312, + -0.010298697, + -0.012634213, + 0.00533078, + 0.0022893324, + -0.0017747275, + 0.0031371112, + -0.015424956, + -0.0041498276, + 0.000092983515, + -0.016256241, + 0.01781325, + -0.022682205, + 0.0014473266, + 0.012522055, + 0.0019165737, + 0.013867945, + 0.0040442673, + 0.0068482053, + 0.01385475, + 0.0115720155, + -0.000658513, + -0.010984838, + 0.0010069434, + 0.03182634, + -0.009150732, + -0.016823625, + -0.00353626, + 0.0004201783, + 0.011908487, + -0.0035329612, + 0.009935835, + 0.01182272, + -0.02881788, + 0.0074617728, + 0.04441437, + -0.0058915676, + -0.007949987, + -0.014686035, + -0.022655815, + -0.020544615, + 0.0075277477, + 0.0015075288, + -0.0025532325, + -0.02161341, + -0.0155173205, + 0.017588936, + -0.002805587, + 0.015372176, + -0.013894335, + -0.01295749, + 0.011888695, + 0.0093024755, + -0.013221391, + 0.008556957, + -0.00007540736, + 0.02277457, + -0.022207186, + -0.01596595, + -0.013359938, + -0.013947115, + 0.012330728, + -0.0076069175, + -0.013452303, + -0.02934568, + -0.006719554, + 0.03048045, + 0.03132493, + 0.03169439, + 0.018354245, + -0.025453156, + -0.011888695, + -0.015715245, + -0.02997904, + 0.022391915, + 0.0002653432, + 0.018143125, + 0.02470104, + -0.01005459, + 0.02372461, + 0.009935835, + -0.00009071563, + -0.011816123, + 0.009638947, + -0.02884427, + -0.016823625, + -0.0032377231, + -0.023843365, + -0.016902795, + -0.004473105, + -0.00046965954, + -0.006086194, + -0.006557915, + 0.012106413, + 0.0069207777, + 0.008708701, + 0.041590642, + -0.0095861675, + 0.013656825, + -0.010727535, + -0.01440894, + 0.009559778, + -0.0049943076, + -0.023658635, + -0.013762386, + -0.015794415, + 0.027577551, + 0.005746423, + -0.008570152, + -0.02335515, + -0.0017499869, + -0.02100644, + -0.03222219, + -0.00361543, + 0.016638895, + 0.012416495, + -0.001147965, + 0.004288375, + 0.010648365, + 0.008253473, + 0.0168896, + -0.01514786, + 0.009533388, + 0.0074023954, + -0.037236292, + 0.02245789, + 0.01778686, + -0.0050239963, + -0.011156373, + 0.0048590587, + 0.008847248, + 0.017219475, + 0.020689761, + -0.022959301, + -0.02282735, + -0.0034867788, + -0.011882097, + -0.02953041, + 0.02330237, + 0.006482044, + -0.03348891, + 0.01762852, + 0.01778686, + -0.017747276, + 0.0016939081, + 0.01058239, + -0.0018786382, + -0.005000905, + 0.0010770418, + 0.00042471406, + -0.015213835, + 0.0107473275, + -0.02778867, + 0.018380634, + -0.0027445601, + -0.011308115, + 0.01905358, + -0.025176061, + -0.021705775, + -0.017509766, + -0.00675584, + -0.009850068, + -0.014079065, + -0.002444374, + -0.011380687, + -0.012812345, + -0.001224661, + -0.01021293, + -0.03734185, + 0.0047996813, + -0.0006828413, + -0.014606865, + -0.023473905, + 0.022009261, + 0.011750148, + -0.013775581, + -0.012574836, + 0.02129673, + -0.03319862, + 0.0031024744, + -0.0232232, + 0.013293963, + -0.04095728, + 0.021811336, + -0.0077058803, + -0.021468265, + -0.028501201, + 0.00498771, + 0.01118936, + -0.03019016, + -0.016084705, + 0.22104265, + -0.01018654, + -0.0043609478, + 0.03446534, + -0.0044665076, + 0.03420144, + 0.028659541, + -0.009361853, + -0.015952755, + 0.010391063, + -0.03288194, + -0.009546583, + 0.0064358613, + 0.011149775, + -0.003346582, + -0.04438798, + -0.026139295, + -0.02997904, + 0.0036781062, + 0.020729346, + -0.0038760314, + 0.0017565844, + -0.008088535, + -0.0043906365, + -0.004331259, + 0.03731546, + -0.014831181, + 0.010602183, + 0.023579465, + 0.009236501, + 0.013735996, + 0.017852835, + 0.0051493486, + 0.022497475, + 0.0020518226, + -0.014356161, + -0.0068482053, + 0.0036451188, + 0.01778686, + 0.016612506, + -0.007639905, + -0.0013153766, + -0.01140048, + 0.019251505, + -0.014276991, + 0.00757393, + -0.0073430175, + 0.011756745, + -0.0077916477, + 0.00994903, + -0.03016377, + -0.014606865, + 0.0398489, + 0.022734985, + 0.01913275, + -0.023025276, + 0.02802618, + 0.0003393589, + -0.015319395, + -0.015688855, + 0.0027033256, + 0.03040128, + -0.01459367, + 0.03277638, + -0.011096995, + 0.0061191814, + -0.03119298, + -0.0035296625, + 0.01572844, + -0.008708701, + -0.00947401, + -0.0028402237, + 0.0023371645, + -0.0190008, + -0.021996066, + -0.00841841, + 0.043701842, + 0.02235233, + 0.023091251, + 0.014263796, + -0.0061587663, + -0.015029105, + 0.023064861, + 0.024978135, + 0.01599234, + -0.02319681, + 0.006310509, + 0.0042289975, + -0.0035197663, + -0.011756745, + -0.017773665, + -0.0271817, + 0.0009904497, + -0.026429586, + -0.0056639537, + -0.0061818575, + 0.0017038044, + 0.0036220276, + 0.0068152174, + -0.019489015, + 0.0041894126, + 0.013524875, + 0.00902538, + -0.0017169995, + -0.012106413, + 0.006376484, + -0.0048194737, + -0.012917905, + -0.008662518, + -0.015609685, + 0.002441075, + -0.03119298, + 0.010173345, + -0.0049976064, + 0.0010250866, + -0.00031358743, + -0.00709891, + -0.02720809, + 0.01396031, + -0.014831181, + 0.014422135, + -0.013129026, + -0.023526685, + 0.0066568777, + -0.009817081, + -0.02124395, + -0.0037209901, + -0.03042767, + 0.009902848, + -0.028606761, + 0.03063879, + -0.0154909305, + 0.01617707, + -0.012502262, + 0.009355255, + 0.022787765, + 0.005835489, + -0.008266668, + 0.017377816, + -0.007917, + 0.005558394, + 0.008425008, + 0.02359266, + 0.0066733714, + -0.007798245, + -0.00796978, + 0.00477659, + 0.022814155, + -0.026495561, + 0.0019578082, + -0.011670978, + -0.018829266, + 0.00833924, + -0.0037308864, + 0.05404672, + 0.002734664, + 0.0038166537, + -0.01462006, + 0.021969676, + 0.03591679, + -0.04042948, + -0.0063171065, + 0.03372642, + -0.018512586, + -0.03639181, + 0.0058156964, + -0.16657369, + 0.02388295, + 0.03887247, + -0.03069157, + 0.018802876, + 0.020742541, + 0.0072110677, + -0.030902691, + -0.001330221, + -0.0039881887, + 0.057266302, + 0.017404206, + -0.02668029, + -0.02264262, + -0.016137484, + -0.021705775, + -0.018195905, + 0.01393392, + 0.021824531, + 0.00335153, + 0.037104342, + -0.011123385, + -0.01227135, + 0.0043180636, + -0.02681224, + 0.03005821, + -0.0025268425, + -0.009744507, + 0.026587926, + -0.00997542, + -0.0015355682, + -0.02055781, + 0.01615068, + 0.0277095, + 0.015345785, + 0.0077322703, + -0.009012185, + -0.007903805, + -0.01818271, + -0.0024361268, + 0.00039420064, + -0.0028996014, + 0.004647939, + 0.01947582, + 0.01462006, + 0.005818995, + 0.007870818, + -0.020755736, + -0.0066964626, + -0.0069207777, + 0.03029572, + -0.012040438, + -0.0007537644, + 0.015741635, + -0.0008040703, + 0.0022596437, + 0.0138019705, + 0.03507231, + 0.006237936, + -0.010509818, + -0.029715141, + -0.0008189147, + 0.016559726, + -0.011941475, + -0.0056309663, + -0.0060169203, + -0.008088535, + 0.025954565, + -0.03119298, + 0.01403948, + -0.009434425, + -0.012198778, + 0.021824531, + -0.02884427, + -0.0005323358, + 0.01221857, + -0.0037539776, + 0.01638819, + 0.002792392, + -0.00027915672, + -0.030876301, + 0.0591136, + -0.021125196, + -0.0030266033, + -0.0074749677, + 0.02396212, + 0.0057266303, + 0.012845333, + -0.0398489, + 0.001264246, + 0.029794311, + -0.01947582, + -0.005861879, + 0.004915138, + 0.010015005, + 0.0108199, + -0.00955318, + 0.023869755, + -0.021257145, + -0.026535146, + 0.0059410487, + -0.016981965, + -0.0059806337, + 0.02050503, + 0.03285555, + 0.00878787, + 0.0047172126, + 0.030902691, + 0.00913094, + 0.010932058, + -0.0065513174, + 0.0013277469, + 0.011921682, + 0.012937698, + -0.01572844, + -0.00045935094, + 0.02142868, + 0.009196915, + 0.0543634, + 0.013551265, + 0.010984838, + -0.0054000537, + 0.013346743, + 0.0024377762, + -0.0016279331, + -0.002739612, + -0.087720364, + 0.03794882, + -0.0071780803, + 0.015055495, + -0.008873638, + 0.05370365, + 0.03449173, + 0.021837726, + 0.010371271, + 0.010509818, + -0.00625443, + -0.015688855, + -0.0030513438, + -0.003892525, + 0.004258686, + -0.02908178, + -0.0017433894, + 0.009823678, + 0.0056045763, + 0.03182634, + -0.00424879, + -0.01580761, + 0.004393935, + -0.03019016, + -0.012528652, + -0.0033449326, + -0.019660551, + 0.007323225, + 0.02364544, + 0.009256293, + 0.0026505457, + -0.018908435, + -0.009144135, + -0.011591808, + -0.00596414, + 0.03346252, + -0.02731365, + 0.00014906227, + 0.03581123, + -0.03596957, + -0.0015421656, + 0.0074155903, + 0.006613994, + -0.010391063, + -0.00971152, + -0.022761375, + -0.039426662, + -0.012752968, + -0.0039552012, + -0.019304285, + -0.02134951, + -0.013498485, + 0.0021392393, + -0.012970685, + 0.010272307, + -0.0057233316, + 0.0010283854, + 0.008246875, + -0.03876691, + 0.0028517693, + 0.013722801, + -0.0077454653, + -0.02910817, + 0.026086515, + 0.04214483, + 0.0046182503, + -0.016005535, + -0.019700136, + 0.014738815, + -0.0364182, + -0.02493855, + 0.023421125, + -0.03111381, + -0.009177122, + -0.02211482, + -0.02900261, + 0.0039881887, + 0.0072638476, + 0.015820805, + -0.015715245, + 0.0035956376, + -0.01902719, + -0.009751105, + -0.007686088, + 0.0012931101, + 0.017879225, + 0.01351168, + -0.01501591, + 0.014474915, + -0.03055962, + 0.030929081, + 0.007376005, + 0.029029, + -0.01287832, + -0.012654006, + 0.016638895, + 0.005241714, + 0.01058239, + 0.02016196, + 0.01918553, + -0.016533336, + -0.02459548, + -0.0865592, + 0.012673798, + -0.005660655, + -0.009520193, + 0.0069999476, + -0.0101799425, + 0.01422421, + -0.0045951586, + 0.023896145, + -0.00778505, + -0.028685931, + 0.02261623, + -0.00899899, + -0.019779306, + -0.02583581, + 0.000015501548, + 0.013722801, + 0.018855656, + 0.025228841, + -0.011149775, + -0.0092892805, + 0.0047567976, + 0.02132312, + 0.0022266563, + -0.04499495, + 0.0070263376, + -0.00899899, + 0.03106103, + -0.03005821, + 0.0013928972, + 0.006953765, + -0.045813043, + 0.0057068374, + -0.00079664815, + -0.0084448, + -0.014580475, + -0.014131845, + 0.018697316, + 0.02390934, + 0.037183512, + -0.023117641, + -0.009638947, + 0.01356446, + -0.01475201, + -0.011011228, + -0.009137537, + 0.01403948, + 0.0072242627, + 0.02343432, + 0.009348658, + 0.0031255656, + 0.021072416, + 0.008279863, + -0.0115588205, + 0.005142751, + -0.048452042, + 0.007844428, + -0.0013862997, + -0.00683501, + 0.0033680238, + 0.020676566, + 0.025532326, + 0.024291996, + 0.00567385, + 0.010259112, + -0.028791491, + -0.010173345, + 0.0132477805, + 0.019013995, + -0.017668106, + -0.029715141, + 0.0129311, + 0.002124395, + 0.022576645, + -0.00038244884, + -0.01641458, + 0.026799046, + -0.02277457, + -0.03385837, + 0.009454218, + 0.003922214, + -0.0029886675, + -0.05547178, + 0.017325036, + 0.021098806, + -0.03063879, + -0.021679385, + -0.01158521, + -0.016929185, + 0.0279734, + 0.00261261, + -0.007844428, + 0.017509766, + -0.0015363928, + 0.000819327, + 0.020755736, + -0.017984785, + -0.02734004, + 0.01776047, + 0.017298644, + 0.010377868, + -0.016955575, + -0.017113915, + -0.02119117, + -0.00849758, + 0.02039947, + -0.019660551, + -0.024687845, + 0.010727535, + 0.023341956, + -0.0047963825, + 0.02908178, + -0.00881426, + 0.01612429, + 0.008504177, + -0.004245491, + -0.012997075, + -0.017470181, + -0.0068877903, + 0.015979145, + 0.02258984, + 0.019713331, + 0.0018934825, + -0.0068745953, + 0.03834467, + 0.00960596, + 0.010813302, + -0.017298644, + 0.019660551, + -0.00083252206, + 0.0095861675, + -0.0023338657, + -0.021916896, + -0.0017054537, + -0.00839202, + -0.0095861675, + 0.009091355, + 0.0049547227, + -0.01419782, + 0.057319082, + 0.018433416, + 0.009282683, + -0.014250601, + -0.00833924, + 0.04127396, + 0.009005588, + 0.014079065, + -0.0055748876, + -0.029794311, + 0.012805748, + -0.005192233, + -0.012416495, + -0.03533621, + -0.020795321, + -0.008009365, + -0.021916896, + 0.0054957177, + 0.0084513975, + 0.0029787712, + 0.03195829, + -0.0072506526, + 0.03063879, + 0.01517425, + -0.02892344, + -0.0039123176, + 0.03868774, + -0.012997075, + 0.021969676, + -0.028633151, + 0.021098806, + 0.0149631305, + -0.017219475, + -0.024226021, + 0.00781144, + -0.01348529, + -0.011103593, + -0.017298644, + 0.00799617, + 0.02807896, + 0.0024691145, + -0.006313808, + -0.01673126, + -0.01562288, + -0.0024790107, + -0.0059311525, + -0.01367002, + -0.0055122115, + -0.010457038 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 7, + "total_tokens": 7 + } +} diff --git a/vectorstores/dolt/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr b/vectorstores/dolt/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr new file mode 100644 index 000000000..b1dce7e59 --- /dev/null +++ b/vectorstores/dolt/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr @@ -0,0 +1,15468 @@ +httprr trace v1 +333 334599 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 137 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["Tokyo","Yokohama","Osaka","Nagoya","Sapporo","Fukuoka","Dublin","Paris","London","New York"]}HTTP/2.0 200 OK +Content-Length: 333642 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:19:40 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 125 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-fqbb6 +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999985 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_08b285665f064ff5b15b9ce91cfe5673 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.001070031, + 0.008037085, + -0.008887224, + -0.008638722, + -0.010875242, + 0.014713947, + -0.029375577, + 0.013065985, + -0.011051809, + -0.035548896, + 0.001566218, + -0.02474559, + 0.016296513, + -0.027125979, + -0.007997848, + -0.021070372, + 0.021711247, + -0.01803603, + 0.0024016432, + -0.02207746, + -0.011306851, + 0.012686692, + -0.0024065478, + -0.019016959, + -0.008344443, + -0.011803855, + 0.0013651273, + -0.015302505, + 0.008965698, + -0.020010969, + 0.019043118, + -0.019095434, + -0.010522107, + -0.022875283, + 0.008828368, + -0.004652877, + -0.015328663, + -0.0060261786, + -0.0023493269, + -0.0118496325, + 0.009122647, + -0.008207113, + 0.0015155366, + -0.017251285, + -0.018323768, + 0.01607417, + -0.016649649, + 0.016571173, + -0.00018801155, + 0.012255083, + 0.015119398, + 0.020311786, + -0.032331448, + -0.0067684157, + -0.026602816, + -0.016388068, + -0.028486202, + -0.0007291578, + 0.000018967197, + 0.0041558724, + -0.0033645893, + -0.0059934813, + -0.015982617, + 0.0117123015, + 0.014269259, + -0.011346088, + -0.011241456, + 0.028616993, + -0.015302505, + 0.0038223565, + 0.013242552, + 0.017395156, + -0.0010079053, + -0.0024752128, + 0.031625178, + -0.008010927, + -0.0015245284, + 0.004652877, + 0.011856171, + 0.009848535, + 0.01523711, + -0.035601214, + 0.004365138, + 0.0026583197, + 0.013190236, + 0.007605476, + -0.008743354, + 0.0360459, + -0.002671399, + -0.00082071126, + 0.009534637, + 0.003756961, + 0.00992047, + 0.01062674, + -0.024850221, + -0.016113406, + -0.006454518, + 0.043344017, + -0.01857227, + -0.013196776, + -0.0015964633, + 0.009815837, + -0.0037242635, + -0.011529195, + -0.025883468, + 0.011568432, + 0.014321575, + -0.016440384, + 0.008906842, + -0.008710656, + -0.0019765736, + 0.027989198, + -0.013085604, + -0.059065055, + -0.017722132, + -0.012961352, + 0.005476858, + -0.01662349, + -0.010234368, + -0.014753184, + 0.018807694, + 0.019265462, + 0.011856171, + 0.002682843, + 0.02725677, + 0.00033167689, + -0.006483946, + -0.019330857, + 0.00050926604, + -0.009613113, + 0.026995188, + 0.011744999, + -0.0058986577, + 0.015629482, + -0.021004977, + 0.013903045, + -0.016440384, + 0.01131993, + -0.01103873, + -0.006441439, + 0.0063368063, + 0.0090637915, + -0.01286326, + 0.013347185, + 0.0097242845, + 0.02502025, + 0.023136863, + -0.0030392476, + 0.015851825, + -0.005967323, + 0.003730803, + -0.0050256304, + 0.016976625, + 0.0071804062, + 0.009580415, + 0.0035738542, + 0.03225297, + 0.018611507, + 0.0059280857, + 0.010548265, + 0.006931904, + 0.004237617, + 0.031389754, + -0.021345032, + 0.0030081847, + 0.0127063105, + 0.012032739, + 0.014413129, + -0.00033699026, + -0.011588051, + -0.018336847, + 0.019448569, + -0.04049278, + 0.018624587, + 0.005208737, + 0.017578263, + 0.011006032, + 0.009292675, + -0.019854018, + -0.007971689, + -0.0023803897, + 0.00003410264, + 0.02683824, + 0.009927009, + -0.007919373, + 0.005771137, + 0.027779931, + 0.01551177, + -0.0011803856, + -0.014504682, + 0.025870388, + 0.035548896, + 0.031180488, + 0.0071346294, + -0.67843723, + -0.03280229, + 0.0011599495, + 0.004224538, + 0.020468736, + 0.005329719, + 0.018245295, + 0.015498691, + -0.012830562, + 0.013562989, + -0.027230611, + 0.017996792, + -0.01789216, + -0.012601678, + -0.008749894, + 0.0048032864, + 0.015263268, + -0.0027139059, + -0.004208189, + 0.0105548045, + 0.0047771283, + 0.017813684, + -0.008409838, + -0.0052348953, + 0.013236013, + -0.010567884, + 0.007697029, + -0.004306282, + -0.009416926, + 0.02362079, + -0.029794108, + 0.049700443, + 0.0050485185, + -0.01508016, + 0.039917305, + -0.015694877, + -0.02305839, + 0.017565183, + 0.02054721, + 0.031258963, + 0.0014574982, + 0.003841975, + 0.0028806638, + -0.0026027337, + 0.005336258, + 0.002027255, + 0.022208251, + -0.023280734, + 0.008991856, + -0.008220192, + 0.021828959, + -0.036229007, + -0.016675808, + -0.01634883, + -0.0004142385, + 0.0098354565, + 0.0035967426, + -0.0034332543, + -0.0009694856, + -0.009534637, + -0.015851825, + -0.0092011215, + -0.027779931, + -0.021279637, + -0.012366255, + 0.012405492, + -0.010437093, + -0.023306891, + -0.0006384218, + -0.01968399, + 0.004554784, + 0.021397348, + -0.0070365365, + -0.009586954, + 0.017656736, + 0.006235444, + 0.0259881, + -0.031991392, + -0.0034169054, + -0.007618555, + 0.004201649, + 0.012183148, + -0.01969707, + -0.0053035603, + 0.015681798, + -0.040178884, + -0.035967425, + 0.002808729, + 0.026602816, + -0.012882878, + 0.0046430677, + 0.0036719472, + 0.0063923923, + 0.00908995, + -0.011810395, + 0.011882329, + -0.0016970086, + -0.008050164, + 0.006748797, + -0.0071346294, + -0.014216943, + -0.015446375, + 0.009750443, + 0.0036261706, + -0.015302505, + -0.004280124, + -0.014910133, + 0.017238207, + 0.021894353, + -0.014923212, + 0.006107923, + -0.010240907, + -0.017722132, + 0.00039257627, + 0.018493796, + -0.023019154, + 0.017839843, + -0.00011781375, + 0.022391358, + 0.0090637915, + 0.007363513, + 0.0019733037, + 0.016374988, + 0.022574464, + 0.017251285, + 0.015106319, + 0.006078495, + 0.0010798402, + -0.00642509, + 0.0061733183, + -0.001871941, + 0.014426208, + 0.010574424, + -0.006467597, + 0.023176102, + -0.009488861, + -0.009181503, + -0.0059346254, + 0.018493796, + -0.036385957, + -0.033587035, + -0.012425111, + -0.0015277981, + -0.003521538, + 0.012085055, + -0.026419709, + -0.016937388, + 0.0007418282, + -0.019827861, + 0.00503217, + -0.008213652, + 0.0026615895, + -0.029794108, + 0.01914775, + -0.0060065603, + -0.013484515, + -0.00008174415, + -0.0026632245, + -0.021057293, + 0.0029525987, + 0.019043118, + 0.0080697825, + -0.03832166, + -0.0014574982, + 0.0060686856, + -0.012071976, + 0.012804404, + 0.017447472, + -0.0054833977, + -0.008867606, + -0.02151506, + -0.019265462, + -0.02388237, + 0.003953147, + 0.018925406, + 0.0033090033, + 0.010541726, + -0.013628385, + -0.0012694866, + 0.002153141, + 0.011091046, + -0.020730317, + -0.013602227, + 0.011758079, + 0.02027255, + -0.01971015, + 0.011267614, + 0.017944476, + -0.00084196473, + 0.0032043706, + -0.0073308153, + 0.015877984, + 0.008030545, + -0.000106778294, + 0.0120981345, + -0.012909036, + 0.009730823, + -0.003897561, + -0.021828959, + 0.015825668, + 0.032933082, + -0.01523711, + 0.0024572292, + -0.00950194, + 0.016322672, + -0.012124293, + -0.00656569, + -0.018951563, + 0.031206647, + 0.014596236, + 0.014648552, + -0.015210952, + -0.0068861274, + 0.01857227, + -0.006931904, + 0.03288077, + 0.006833811, + 0.023019154, + -0.019396253, + -0.0068665086, + 0.021201164, + -0.034214832, + -0.016257277, + -0.018415323, + -0.012765166, + 0.016741201, + -0.0011983692, + 0.033456247, + 0.0073308153, + -0.0059738625, + -0.034450255, + -0.013406041, + 0.001732976, + 0.021188084, + -0.01522403, + -0.029009365, + 0.00009017401, + -0.024640957, + 0.030081848, + 0.012562441, + 0.023267655, + 0.010253986, + 0.028957048, + -0.019670913, + -0.000803545, + 0.001984748, + 0.035862792, + 0.014269259, + -0.009632731, + 0.01886001, + -0.016688885, + -0.009096489, + -0.005699202, + -0.004064319, + 0.0011893774, + -0.03382246, + 0.021619692, + -0.00048596898, + 0.014831658, + 0.038504764, + -0.0002630118, + 0.0009237089, + 0.0055128257, + 0.005270863, + -0.0011632192, + -0.0044926587, + 0.02725677, + 0.012941734, + -0.007906294, + -0.008298666, + -0.015315584, + 0.006369504, + -0.012967892, + -0.0045318957, + 0.019893257, + -0.016701965, + -0.025831152, + -0.0170551, + 0.01285672, + 0.01647962, + -0.007389671, + -0.04444266, + -0.005100835, + 0.0046365284, + 0.0043945657, + -0.024654036, + -0.01076407, + -0.013039826, + -0.01131339, + 0.019801702, + 0.009966247, + 0.023816975, + 0.001081475, + -0.01789216, + -0.017866002, + -0.009789679, + 0.02207746, + -0.013334106, + -0.011908487, + -0.01048941, + 0.015197872, + -0.008148257, + -0.00030837982, + 0.005431081, + 0.026210444, + 0.011267614, + 0.005355877, + -0.011143362, + -0.0051891184, + -0.0034365242, + 0.017565183, + -0.011091046, + -0.006304109, + 0.010528646, + 0.012549362, + -0.009874693, + -0.0146093145, + 0.008056703, + 0.02417011, + -0.0012057262, + -0.017709052, + 0.006680132, + -0.026668211, + -0.0089526195, + 0.08569403, + 0.0059607835, + 0.01145726, + -0.005633807, + 0.0029362498, + 0.0073308153, + -0.016008774, + 0.0008820194, + 0.0099727865, + 0.008056703, + 0.0038452449, + -0.009233819, + -0.0020174456, + 0.011130284, + -0.0024294362, + -0.00656569, + -0.01676736, + -0.027361402, + 0.02418319, + -0.01969707, + 0.00038338007, + 0.00628776, + 0.0027972849, + 0.012130832, + -0.000813763, + -0.0035476962, + 0.024797905, + 0.018101424, + 0.01913467, + -0.025778836, + 0.0021040945, + 0.019644754, + -0.018402243, + 0.017133573, + -0.008226731, + -0.00004115307, + 0.009966247, + 0.0212404, + 0.0062092855, + -0.01160113, + 0.007513922, + 0.015394058, + 0.00824635, + 0.00038481058, + 0.014138469, + -0.019592438, + -0.018101424, + 0.02024639, + -0.019500885, + -0.018506875, + 0.032776136, + 0.006944983, + -0.041042104, + -0.017656736, + -0.017473629, + 0.008900303, + -0.009547717, + -0.013615306, + -0.0027694919, + 0.010038181, + 0.0066016577, + -0.042114586, + 0.005257784, + -0.011921567, + -0.024614798, + -0.037903126, + -0.002767857, + -0.016741201, + -0.03633364, + -0.0063923923, + -0.005558602, + -0.029401736, + -0.022796808, + 0.024300901, + 0.01607417, + -0.03047422, + 0.008095941, + -0.01621804, + -0.0010790228, + 0.036935277, + -0.026027337, + -0.011398404, + -0.012117753, + -0.008710656, + -0.031886756, + 0.025268752, + 0.031651337, + -0.03280229, + -0.0027760314, + -0.00006381153, + 0.0148055, + -0.00684689, + 0.0153679, + 0.0212404, + 0.0027466035, + -0.011359167, + 0.010155893, + 0.032357603, + -0.016034933, + -0.01313138, + 0.023660026, + -0.014033835, + 0.008462154, + 0.015812589, + 0.015119398, + 0.011346088, + 0.012922116, + 0.018820774, + -0.010777148, + 0.0012743913, + 0.02934942, + -0.018402243, + 0.0084294565, + 0.013484515, + -0.013824571, + 0.021920511, + 0.010280144, + 0.021397348, + 0.011928107, + -0.019762466, + 0.0070299967, + -0.023293814, + 0.015681798, + 0.02989874, + 0.0058855787, + -0.014334654, + 0.0138376495, + -0.009070331, + -0.0061242715, + 0.00097193796, + -0.009259977, + 0.013772255, + -0.02178972, + -0.008050164, + -0.022836046, + 0.001999462, + -0.033482403, + 0.0128436405, + 0.0031079126, + -0.031075856, + -0.007415829, + 0.007481225, + 0.01160113, + -0.0012327018, + -0.03675217, + -0.021985907, + 0.0017297062, + 0.010665976, + -0.0066310856, + 0.017826764, + 0.005404923, + 0.020442577, + -0.01061366, + 0.0062975693, + -0.030918907, + -0.02628892, + -0.025124881, + -0.028172305, + 0.0058299927, + 0.008847987, + 0.031520545, + 0.011189139, + 0.005404923, + -0.011640367, + -0.007997848, + 0.002779301, + 0.004253966, + 0.020939581, + -0.013445278, + 0.02516412, + 0.012366255, + 0.01816682, + -0.02751835, + 0.007487764, + -0.02780609, + 0.023568474, + -0.0027482384, + -0.011195679, + -0.009652349, + -0.02516412, + -0.00907687, + -0.019213146, + 0.005195658, + 0.0005362416, + -0.0025929245, + -0.0032763055, + -0.00060163694, + -0.0124578085, + 0.023555394, + 0.007991308, + 0.007605476, + -0.009338452, + 0.0002950964, + -0.0023918338, + -0.006346616, + 0.005257784, + -0.012680152, + -0.005404923, + -0.0026926524, + 0.025961943, + 0.018820774, + -0.014334654, + -0.0045482446, + 0.002601099, + 0.012130832, + 0.03944646, + 0.0059084673, + -0.015302505, + 0.007278499, + -0.012215846, + -0.026053496, + -0.011751539, + 0.007383132, + -0.01940933, + -0.02359463, + 0.010090498, + -0.006676862, + 0.028303094, + -0.0248633, + -0.015642561, + 0.019893257, + 0.011862711, + 0.032043707, + 0.015681798, + 0.010665976, + 0.008913382, + -0.0071346294, + -0.004737891, + 0.004201649, + -0.015982617, + -0.0070692343, + 0.023110706, + 0.020913424, + -0.011496497, + -0.037301492, + -0.016322672, + 0.004247426, + -0.0016087248, + -0.0010675786, + 0.023856213, + 0.0015899237, + 0.00489157, + -0.026184287, + -0.0014599506, + -0.022875283, + 0.036569063, + -0.015276347, + -0.002754778, + -0.0008574961, + -0.019108513, + -0.0015980981, + 0.014269259, + -0.003802738, + 0.003662138, + 0.015027844, + -0.012621297, + 0.0031226266, + -0.018258374, + -0.00531337, + 0.013942283, + 0.00043201784, + 0.024810985, + 0.009325373, + -0.0010871972, + 0.012804404, + 0.005467049, + -0.011267614, + 0.0054016532, + -0.00014376752, + 0.023686185, + -0.004260505, + -0.011594591, + -0.021358112, + -0.0018523225, + 0.003202736, + 0.009214201, + 0.005215277, + -0.007291578, + -0.01774829, + -0.0049209977, + 0.008409838, + 0.007468146, + -0.0029248057, + -0.011758079, + -0.025216436, + -0.024797905, + -0.022260567, + -0.0061831274, + 0.025948863, + -0.018768458, + 0.0013634925, + 0.0025880197, + -0.018977722, + 0.023960846, + -0.013347185, + -0.0044795796, + 0.017852923, + 0.027884565, + -0.024379376, + 0.011431102, + 0.0070496155, + 0.021763563, + -0.020507973, + -0.0012531378, + 0.00030286208, + -0.011404944, + 0.012928654, + -0.0138376495, + -0.0099727865, + -0.030500377, + 0.006451248, + 0.012124293, + 0.0069384435, + 0.025595728, + 0.033717826, + -0.026158128, + -0.0028888383, + -0.020298708, + -0.015564086, + 0.0181799, + -0.0051466115, + 0.014504682, + 0.020442577, + -0.012464348, + -0.0010021833, + 0.013536831, + -0.013458357, + -0.0059411647, + -0.0073308153, + -0.027701458, + -0.0069580623, + 0.0068534296, + -0.0110779675, + -0.012078515, + -0.02054721, + 0.0036261706, + -0.010947176, + 0.008900303, + 0.010430554, + 0.0046201795, + 0.0011158077, + 0.015446375, + 0.01453084, + 0.012281241, + -0.0113264695, + -0.029113997, + 0.006160239, + -0.0033367963, + -0.029584844, + -0.03897561, + -0.005100835, + 0.020926502, + 0.0034201753, + -0.014897054, + -0.020141758, + 0.011208758, + -0.021449665, + -0.007389671, + -0.013536831, + 0.018846931, + 0.012202767, + -0.012340097, + 0.007808201, + 0.0061275414, + 0.014779342, + 0.00823981, + -0.0034790311, + 0.018336847, + 0.038766347, + -0.036569063, + 0.032226812, + 0.006408741, + -0.016610412, + -0.010502488, + 0.005493207, + 0.005646886, + -0.002699192, + 0.0068534296, + -0.01702894, + -0.010136275, + -0.012111213, + 0.0022724874, + -0.026642054, + 0.017996792, + 0.007605476, + -0.03591511, + 0.026158128, + 0.017695975, + -0.01494937, + 0.005656695, + 0.0059346254, + -0.00475097, + -0.0011787507, + 0.004162412, + -0.025791915, + -0.0034005567, + -0.000193938, + -0.031991392, + 0.01984094, + -0.012261623, + 0.014713947, + 0.0045318957, + 0.00922074, + -0.01075753, + -0.019854018, + 0.0005378765, + -0.015642561, + -0.014413129, + 0.026040416, + -0.0013667622, + -0.025621887, + -0.0122354645, + 0.017983712, + -0.045619775, + 0.009214201, + 0.008834908, + -0.007808201, + -0.024928696, + 0.008167876, + 0.023581553, + -0.026380472, + -0.016937388, + 0.009998945, + -0.022862203, + -0.0003002054, + -0.011888869, + 0.027570667, + -0.031102015, + 0.015616402, + -0.0011501402, + -0.0022463293, + -0.031625178, + -0.0061177323, + 0.011391865, + -0.008043624, + -0.008468694, + 0.23981772, + -0.023542315, + -0.0048000165, + 0.038949452, + -0.0032223545, + 0.039629564, + 0.030134164, + -0.0012049088, + -0.014687789, + 0.00032452427, + -0.03131128, + 0.001627526, + 0.020834949, + -0.0019160829, + -0.0029591382, + -0.025098724, + -0.021292716, + -0.03301156, + -0.038190868, + -0.0060294485, + 0.020141758, + -0.00258475, + -0.002694287, + -0.01341912, + 0.014269259, + 0.012693232, + -0.011287232, + -0.0056665046, + 0.020442577, + 0.019867098, + 0.0048588724, + 0.008017466, + -0.00517277, + 0.02122732, + 0.00013763671, + -0.009600033, + -0.015040924, + -0.0046626865, + 0.02725677, + 0.023673106, + -0.004567863, + 0.0020861106, + -0.010796768, + -0.010247447, + 0.00038848908, + 0.021894353, + -0.007873597, + 0.008364062, + -0.011980423, + 0.034162514, + -0.032933082, + -0.01048941, + 0.030788116, + 0.01662349, + 0.0094234655, + -0.013602227, + 0.036412116, + 0.015250188, + -0.009573875, + -0.017172812, + -0.020861108, + 0.010417474, + -0.010012023, + 0.027230611, + 0.0048163654, + 0.0001181203, + -0.023411525, + 0.012869799, + 0.0062092855, + -0.00083624263, + 0.014923212, + -0.011470339, + -0.0033940172, + -0.01734284, + -0.02893089, + -0.016597332, + 0.032226812, + -0.0033874775, + 0.02177664, + 0.037118383, + -0.008403298, + 0.006833811, + 0.022718335, + 0.0007839264, + 0.009279596, + -0.016793517, + 0.023503078, + 0.0156033235, + 0.0077885827, + -0.008468694, + -0.01369378, + -0.018140662, + -0.014596236, + -0.020390261, + -0.0070757736, + 0.014700868, + 0.0005292934, + 0.008978778, + -7.4080634e-7, + -0.016793517, + -0.008187494, + -0.001349596, + 0.015904142, + -0.009586954, + 0.004257235, + 0.0059869415, + -0.000112091664, + -0.0023264384, + -0.006052337, + -0.03060501, + -0.006232174, + -0.03479031, + 0.008972238, + 0.016989704, + 0.0020713967, + -0.0068926667, + -0.008861066, + -0.023660026, + 0.017368997, + -0.02263986, + 0.014910133, + -0.02024639, + -0.015001686, + 0.00115341, + -0.0036850262, + -0.011025651, + -0.0018212596, + -0.01607417, + 0.0069711413, + -0.035732005, + 0.010541726, + 0.0032730359, + 0.014230021, + 0.0020223502, + -0.0090637915, + 0.021266557, + 0.011542274, + -0.008004387, + -0.014779342, + 0.014975528, + 0.018807694, + -0.012745548, + 0.018075267, + -0.0004217998, + -0.0018572271, + -0.011548813, + 0.0101951305, + 0.012085055, + -0.013458357, + 0.008677959, + -0.0100578, + -0.024000082, + -0.0058365325, + -0.01675428, + 0.031128172, + -0.0050550583, + -0.0127063105, + -0.020298708, + -0.00038276697, + 0.01704202, + -0.029506369, + -0.016231118, + 0.046927683, + -0.017277444, + -0.030029532, + -0.0043520587, + -0.16908614, + 0.027884565, + 0.020848028, + -0.021148847, + 0.019357014, + 0.012948274, + -0.0101951305, + -0.019644754, + -0.0063793133, + 0.023372287, + 0.053101, + 0.018611507, + -0.007952071, + -0.014190785, + 0.0032615915, + -0.019082354, + 0.00040769894, + -0.006382583, + 0.025674203, + 0.01229432, + 0.044364184, + -0.02976795, + 0.002838157, + 0.0011722111, + -0.0028659499, + 0.026053496, + -0.014556998, + 0.009881233, + 0.023136863, + -0.015917221, + -0.02390853, + -0.017447472, + 0.037223015, + 0.0265505, + 0.009979326, + 0.008887224, + 0.00011883556, + -0.01760442, + -0.019880177, + 0.027989198, + 0.006464327, + 0.013916125, + -0.0006760241, + -0.0034496032, + 0.008128638, + 0.027282927, + 0.0042703142, + -0.0068272715, + -0.016244197, + -0.011287232, + 0.031651337, + -0.015694877, + -0.007154248, + 0.018650746, + 0.0056959325, + -0.0024425152, + 0.0062289042, + 0.0106202, + 0.004165682, + -0.012653994, + -0.032906923, + 0.0010160798, + 0.019016959, + -0.0011010937, + -0.012183148, + -0.0034430637, + -0.007873597, + -0.0070757736, + -0.017172812, + 0.020586446, + 0.0003275897, + -0.011915027, + 0.017578263, + -0.03295924, + 0.015446375, + 0.00017779352, + -0.0087041175, + 0.025556492, + 0.011686143, + 0.0088414475, + -0.022208251, + 0.042951647, + -0.014190785, + -0.013680701, + -0.0022872014, + 0.010999493, + -0.0076774107, + -0.0022103619, + -0.03175597, + -0.01956628, + 0.007363513, + -0.018467639, + -0.007814741, + -0.011673065, + 0.000020998028, + 0.008854526, + -0.007952071, + 0.02934942, + -0.021972828, + 0.003253417, + 0.006735718, + -0.008697578, + -0.010077419, + 0.033796303, + 0.024784826, + 0.025922704, + 0.019827861, + 0.019278541, + 0.01104527, + 0.011012572, + -0.029297104, + -0.005084486, + 0.012915576, + 0.028747782, + -0.032906923, + 0.002151506, + 0.01940933, + -0.0082921265, + 0.018323768, + 0.01257552, + 0.044808872, + -0.0100839585, + 0.002180934, + 0.025648044, + -0.016374988, + -0.023660026, + -0.07219643, + -0.000642509, + 0.0045318957, + 0.018546114, + -0.004384756, + 0.042402327, + 0.0056501557, + 0.01691123, + 0.00377331, + 0.013432199, + -0.0024212617, + -0.017238207, + 0.0048523326, + -0.016322672, + 0.028041514, + -0.00335478, + 0.0059313555, + -0.002205457, + -0.0023362478, + 0.023960846, + -0.018389164, + -0.016414225, + 0.0028446964, + -0.008965698, + -0.014844738, + 0.008847987, + -0.026785923, + 0.011398404, + 0.01508016, + 0.007853978, + -0.003701375, + -0.0012931925, + 0.0024555943, + -0.029140154, + -0.02109653, + 0.024536325, + -0.019618597, + 0.013183696, + 0.033299297, + -0.045096613, + -0.010783688, + 0.0100839585, + 0.003004915, + -0.011071428, + -0.013615306, + -0.0029575033, + -0.028538518, + 0.005421272, + 0.0048163654, + -0.018768458, + -0.0122354645, + -0.0019226224, + -0.00081049325, + 0.0025455127, + 0.014779342, + -0.0028005545, + 0.0037536914, + 0.01565564, + -0.030003373, + 0.0070823133, + 0.010594042, + -0.0046201795, + -0.018768458, + 0.026458947, + 0.01551177, + 0.008762973, + -0.019200066, + -0.026668211, + 0.025765756, + -0.022992995, + -0.021384269, + 0.013098682, + -0.016871992, + 0.00684689, + -0.018506875, + -0.014046915, + -0.0028561407, + -0.003212545, + 0.014897054, + -0.02362079, + -0.011346088, + -0.030526536, + -0.0023934687, + 0.007376592, + -0.0024931966, + 0.014910133, + 0.012058897, + -0.0058071045, + 0.013301408, + -0.01916083, + 0.014883975, + 0.009403847, + 0.0030997382, + -0.0159303, + -0.007572778, + 0.026432788, + 0.0051662303, + -0.009698126, + 0.005143342, + 0.018977722, + -0.015524849, + -0.024078557, + -0.09129187, + 0.027910722, + 0.007520462, + -0.008409838, + 0.016545016, + -0.006807653, + 0.022312883, + 0.0057907556, + 0.01732976, + -0.018088346, + -0.04852333, + 0.00049904804, + -0.00922728, + -0.011411483, + -0.033796303, + -0.025543412, + 0.014203863, + 0.016466541, + 0.0056926627, + 0.011588051, + 0.0013250727, + 0.0027318895, + 0.016453462, + 0.010587502, + -0.027466035, + 0.011431102, + -0.006189667, + 0.023764659, + -0.031808283, + -0.013013668, + 0.022129776, + -0.031494386, + -0.0011166251, + 0.01857227, + -0.0063368063, + -0.0127063105, + 0.005473588, + 0.01354991, + 0.0070169177, + 0.0405451, + -0.019749386, + -0.005002742, + 0.009070331, + -0.010796768, + 0.0069515225, + -0.0056795836, + 0.017525947, + 0.000104734696, + 0.016832756, + 0.022129776, + -0.009815837, + 0.038949452, + -0.0104436325, + -0.003032708, + -0.0049733142, + -0.016139565, + 0.0040904772, + 0.0019651293, + -0.0077493456, + -0.008782592, + 0.023450762, + 0.0040479703, + 0.011803855, + 0.01047633, + 0.021959748, + -0.0068141925, + -0.02025947, + 0.007167327, + 0.008115559, + -0.03452873, + -0.026079653, + 0.010234368, + 0.016701965, + 0.014687789, + 0.00076512527, + -0.0061536995, + 0.014386971, + -0.008220192, + -0.034345623, + 0.01914775, + 0.004708463, + 0.0035411566, + -0.05367648, + 0.004093747, + 0.014713947, + -0.01789216, + -0.0079324525, + -0.010744452, + -0.01732976, + 0.0265505, + -0.00036396584, + -0.005503016, + 0.00740275, + 0.004404375, + 0.004021812, + 0.012902496, + -0.006245253, + -0.026066575, + 0.030866591, + 0.02403932, + 0.0088414475, + -0.016191881, + -0.012183148, + -0.0079324525, + -0.020730317, + -0.0019749387, + -0.019030038, + -0.02151506, + 0.018363006, + 0.025281832, + 0.015459454, + 0.02097882, + -0.0052054673, + 0.011097586, + -0.0037536914, + -0.002738429, + -0.013746097, + -0.028538518, + -0.011012572, + 0.013562989, + 0.024130873, + 0.029218629, + 0.01620496, + -0.013876887, + 0.010672516, + -0.005198928, + 0.009998945, + -0.027753774, + 0.0010896495, + -0.0051368023, + 0.011496497, + 0.009279596, + -0.010999493, + 0.0015384249, + -0.0023362478, + 0.012497046, + 0.0037406124, + 0.019030038, + -0.0026109081, + 0.024300901, + 0.0005570864, + 0.0034921102, + -0.0027155406, + 0.004355328, + 0.025674203, + -0.006820732, + 0.0254257, + -0.029846424, + -0.022718335, + -0.00642836, + -0.0077885827, + -0.002543878, + -0.00188502, + -0.023777738, + -0.007598936, + -0.020782633, + 0.019631675, + -0.004361868, + 0.014570077, + 0.03983883, + -0.0085929455, + 0.026485104, + 0.023843134, + -0.014831658, + 0.00089101127, + 0.014844738, + 0.015106319, + 0.007716648, + -0.01634883, + 0.01872922, + -0.0015220761, + -0.022535227, + -0.01341912, + 0.0077755037, + -0.013641464, + -0.021410428, + 0.0014215307, + 0.0059444346, + 0.008468694, + 0.002136792, + 0.014190785, + -0.021292716, + -0.026890555, + 0.009796219, + -0.004149333, + -0.011476879, + -0.0071869455, + -0.017643657 + ] + }, + { + "object": "embedding", + "index": 1, + "embedding": [ + 0.0026680413, + -0.0026349186, + 0.008843787, + -0.0049684197, + -0.033255287, + 0.01970144, + -0.02827362, + 0.0020668625, + -0.012116319, + -0.035746124, + 0.00008668857, + -0.0036931918, + 0.016720388, + -0.018151293, + -0.036779553, + -0.024100147, + 0.012487294, + -0.023715923, + 0.009870593, + -0.023212455, + 0.0044020195, + 0.0038091217, + -0.010128952, + -0.015819447, + -0.011096137, + 0.008585429, + 0.0054586367, + -0.017488837, + 0.006253584, + -0.018800499, + 0.020045916, + 0.0018300345, + -0.00961886, + 0.0020685187, + 0.003918427, + -0.00977785, + -0.0061608404, + -0.0112153785, + -0.0011576418, + 0.00024324554, + 0.001564224, + 0.0026713535, + -0.0020635503, + -0.01999292, + -0.0040476057, + 0.013348487, + 0.003825683, + -0.0020536133, + -0.01968819, + 0.028538601, + 0.0107715335, + 0.020655377, + -0.008201204, + -0.005057851, + -0.021092597, + 0.014905258, + -0.020483138, + 0.005163844, + -0.012467421, + -0.006396012, + 0.007333387, + 0.0032874376, + -0.023980904, + 0.011573105, + 0.0063893874, + -0.017038366, + -0.016786633, + 0.011261751, + -0.021145593, + -0.0028286867, + 0.019012485, + 0.0014847293, + -0.020112162, + -0.014229554, + 0.036938544, + 0.013474354, + -0.014706521, + -0.0053957035, + -0.0013091785, + 0.0020171783, + 0.022364512, + -0.023119712, + 0.0028253745, + -0.004888925, + 0.03428872, + 0.0007568559, + -0.010976895, + 0.018230787, + 0.0062204613, + -0.019197972, + 0.024762603, + 0.019423207, + 0.009532741, + -0.004322525, + -0.016495153, + -0.026643978, + -0.0054188897, + 0.01938346, + 0.012898017, + -0.029678026, + -0.018959489, + 0.02571654, + 0.001242933, + -0.01968819, + -0.019303966, + -0.00054611213, + -0.002073487, + -0.020098913, + -0.0015857539, + 0.0011071295, + 0.007823604, + 0.020509636, + -0.0027690658, + -0.05079712, + -0.015845945, + -0.010890775, + 0.005670623, + -0.0001018526, + -0.026723472, + -0.022470506, + 0.011374368, + 0.023543684, + 0.004216532, + -0.0033785251, + 0.028035134, + 0.0016669048, + -0.005034665, + -0.011619477, + -0.0076447413, + -0.001836659, + 0.006134342, + 0.01217594, + 0.027293185, + 0.0031350728, + -0.024020651, + 0.012003701, + -0.013938073, + 0.0210396, + -0.026259754, + -0.01909198, + 0.007260517, + 0.01926422, + -0.00810846, + -0.00009802278, + 0.016362661, + 0.024325382, + 0.03439471, + 0.023517186, + 0.0013373329, + 0.000698477, + -0.007638117, + -0.0040608547, + 0.014335547, + -0.002936336, + -0.0014648556, + 0.0055944403, + 0.015103995, + 0.004206595, + -0.012527042, + 0.025358813, + -0.004832616, + 0.005283086, + 0.030790951, + -0.027902644, + 0.016349413, + 0.01457403, + 0.016813131, + 0.005978665, + -0.0018234099, + -0.022814982, + -0.018866746, + 0.017793566, + -0.027160693, + 0.010619168, + -0.010692039, + 0.01233493, + 0.027213689, + 0.007836854, + -0.026948707, + -0.01909198, + -0.009645359, + 0.0157797, + 0.02045664, + 0.011705596, + 0.01923772, + 0.0017356345, + 0.020006169, + 0.016932374, + 0.021596063, + -0.009711604, + 0.015090746, + 0.046583902, + 0.005081037, + -0.0046703145, + -0.67114735, + -0.04674289, + -0.011785091, + 0.018204289, + 0.023331698, + 0.024444625, + 0.023291951, + -0.006409261, + -0.020072415, + 0.012228937, + -0.02314621, + 0.024550617, + -0.028247122, + -0.0026581045, + 0.0068895416, + -0.016627643, + 0.0049087983, + -0.025001086, + 0.02253675, + 0.01759483, + -0.0065285033, + 0.010764909, + -0.007187647, + 0.0074791275, + 0.039296884, + -0.011314747, + -0.007532124, + -0.008459562, + -0.008664924, + 0.036011104, + -0.040038835, + 0.04030382, + 0.0029048692, + -0.002283817, + 0.056017272, + -0.0071942713, + -0.005922356, + 0.028538601, + 0.023358196, + 0.048544772, + 0.0044682655, + -0.015753202, + 0.0071942713, + 0.0063893874, + 0.0056805597, + -0.0021413888, + 0.030737955, + -0.04239718, + 0.0058263, + -0.022059783, + 0.013328614, + -0.0066113104, + -0.021079348, + -0.00080488395, + 0.00025173326, + 0.013885076, + 0.009420123, + -0.006574875, + -0.011751968, + -0.006184026, + -0.020032667, + -0.0040177954, + -0.030631963, + -0.024736105, + -0.011314747, + 0.020628877, + -0.019515952, + -0.006442384, + -0.00007613068, + -0.0038389321, + -0.0058428613, + 0.022351263, + 0.0051174723, + -0.0035607007, + 0.034050234, + 0.027452175, + 0.0285651, + -0.017011868, + -0.0056772474, + -0.003221192, + 0.010705288, + 0.019356962, + 0.0058196755, + -0.010665541, + 0.019462956, + -0.022642743, + -0.0330698, + -0.0065814997, + 0.006005163, + -0.017846562, + 0.020642126, + 0.0068630436, + -0.0076646153, + 0.0013820487, + -0.0013174593, + 0.03094994, + -0.0033851499, + 0.0034878305, + 0.03847544, + -0.0048690513, + -0.019476205, + -0.006313205, + -0.0025073958, + -0.012427674, + -0.004892237, + -0.023676176, + -0.0035010795, + 0.005919044, + 0.015925441, + -0.014004318, + 0.021543067, + 0.0009845751, + -0.02074812, + -0.009327379, + 0.0072075203, + -0.027929142, + 0.019052232, + -0.0060217245, + 0.03895241, + -0.017846562, + 0.0018499081, + -0.0044583282, + 0.03243384, + 0.011539983, + 0.007863352, + 0.024245888, + 0.007724236, + -0.012990761, + -0.007287015, + -0.0064854436, + -0.01849577, + 0.01850902, + 0.003128448, + -0.011944081, + 0.01909198, + 0.011639351, + -0.010115702, + 0.0068895416, + 0.0023301886, + -0.028671093, + -0.026524736, + -0.020549383, + -0.0056639984, + 0.010393933, + 0.0025587361, + -0.012984136, + -0.0021182029, + -0.010506551, + -0.012566789, + 0.028618095, + -0.0010731786, + -0.016296417, + -0.03145341, + 0.021715306, + -0.02510708, + -0.028220622, + -0.0107715335, + -0.014295799, + -0.005875984, + 0.018389776, + 0.008313822, + 0.006690805, + -0.018654758, + 0.018588513, + 0.016468655, + -0.024378378, + 0.003766062, + -0.0077308607, + -0.0026796341, + -0.02525282, + -0.01864151, + -0.00969173, + -0.012209062, + -0.0038157462, + 0.022642743, + -0.0051174723, + 0.011169007, + 0.0025421747, + 0.0051505947, + 0.0003231543, + 0.008221078, + -0.030843949, + -0.011937456, + 0.015117245, + 0.031479906, + -0.010095828, + 0.012646284, + 0.026378995, + -0.021278085, + 0.0107847825, + -0.012725779, + 0.022073032, + 0.0032857815, + 0.0023401256, + 0.016468655, + -0.03198337, + 0.0032973744, + 0.013911574, + 0.002522301, + 0.018866746, + 0.024921592, + -0.0016834661, + 0.0042695287, + -0.013818831, + 0.022218771, + -0.012189189, + -0.004368897, + -0.012944389, + 0.02660423, + 0.012507168, + 0.009519491, + -0.012884768, + -0.02674997, + 0.0050975983, + 0.00072000676, + 0.026167009, + -0.012401175, + 0.016945623, + -0.001420968, + 0.0029711148, + 0.021649059, + -0.00916839, + 0.012056698, + -0.033599764, + -0.008936531, + 0.004491451, + 0.027584665, + 0.03656757, + 0.016667392, + -0.010307814, + -0.03622309, + -0.009433373, + -0.005498384, + 0.0051108473, + -0.00234675, + -0.015686957, + 0.0079494715, + -0.02058913, + 0.041708227, + 0.024431374, + 0.033043303, + 0.0039846725, + 0.033043303, + -0.018893244, + -0.0012893048, + 0.016587896, + 0.0360376, + 0.009651983, + -0.005452012, + 0.0044583282, + -0.025067333, + 0.001219747, + -0.016402408, + 0.0009696699, + -0.00857218, + -0.030287486, + 0.0003328841, + 0.0038588059, + 0.019476205, + 0.022642743, + 0.012520417, + 0.011891084, + 0.000675291, + 0.0030506095, + 0.015488219, + -0.007684489, + 0.014534283, + 0.001232168, + 0.011526734, + -0.0042629037, + -0.01142074, + 0.003941613, + -0.0026200132, + -0.014097062, + -0.0057699913, + -0.0008044699, + 0.013222621, + -0.012997385, + 0.0055480683, + 0.0066113104, + -0.021728555, + -0.037786487, + 0.004984981, + -0.005044602, + -0.0042099073, + -0.01623017, + -0.025809282, + 0.014865511, + -0.01503775, + 0.03428872, + 0.01697212, + 0.017409341, + 0.0009547646, + -0.02224527, + -0.011983828, + 0.0074195066, + 0.027425675, + -0.005498384, + -0.01457403, + -0.009307506, + 0.010254818, + -0.019436456, + 0.0064821313, + 0.010148825, + 0.018310282, + -0.003138385, + 0.005495072, + -0.0072472678, + -0.00424303, + -0.0048624263, + 0.014680023, + -0.003138385, + 0.00909552, + 0.002237445, + 0.0062038996, + -0.002726006, + -0.015647208, + -0.015289483, + 0.027293185, + -0.010599295, + -0.019621944, + -0.0051207845, + -0.020615628, + -0.0069491626, + 0.086331256, + -0.011765217, + 0.017846562, + 0.005991914, + 0.0093605025, + -0.0071015274, + -0.01742259, + -0.0047001247, + 0.0070087835, + 0.0079627205, + 0.0017372906, + -0.016481904, + 0.018601762, + 0.012725779, + 0.015859194, + -0.01986043, + -0.031347416, + -0.023821915, + 0.030711457, + -0.025491305, + -0.018760752, + 0.0019045608, + 0.0047796196, + 0.0050412896, + 0.005591128, + 0.005746805, + 0.0065947487, + 0.020469889, + 0.03712403, + -0.014415041, + 0.0054321387, + 0.010817905, + -0.010407182, + -0.00043887706, + -0.0044351425, + -0.008989527, + 0.017515335, + 0.003660069, + -0.006849794, + -0.017064866, + 0.016071182, + 0.0088504115, + 0.007379759, + -0.029121563, + 0.010075955, + -0.0056639984, + 0.0073863836, + 0.010281316, + -0.014746269, + -0.0180188, + 0.030658461, + -0.001954245, + -0.028061634, + -0.025411809, + -0.01746234, + 0.01670714, + -0.014600528, + 0.008565555, + 0.0053923912, + 0.011222003, + 0.011758593, + -0.021172091, + 0.0116724735, + -0.023093214, + -0.026034517, + -0.023093214, + -0.0022655993, + -0.021013102, + -0.036620565, + -0.0058362368, + 0.008631801, + 0.001326568, + -0.013116627, + 0.009837471, + 0.012606536, + -0.008201204, + 0.016998619, + -0.016998619, + 0.008671548, + 0.029810516, + -0.010195197, + -0.010148825, + -0.017170858, + -0.018005552, + -0.0058561102, + 0.008002467, + 0.020801116, + -0.037389014, + 0.00015919644, + -0.0018581889, + 0.041072268, + -0.005018104, + 0.0041635353, + -0.0003494455, + 0.003424897, + -0.027531669, + 0.012162691, + 0.014216304, + -0.011937456, + -0.009506242, + 0.017382843, + -0.013792332, + 0.016919125, + 0.012864894, + 0.006571563, + 0.012096445, + 0.018985987, + 0.01835003, + 0.01307688, + 0.013050382, + 0.024259137, + -0.032062866, + -0.017926058, + 0.02451087, + -0.031903878, + 0.02930705, + 0.007929597, + 0.023424441, + -0.008115085, + -0.0108974, + 0.0046636895, + -0.031055935, + 0.020827614, + 0.029837016, + 0.003941613, + 0.017528584, + -0.008042215, + -0.015978437, + 0.0018697819, + 0.002027115, + -0.016773384, + 0.0072340188, + -0.0016876064, + -0.0089034075, + -0.035004172, + -0.000004062718, + -0.0069822855, + 0.008585429, + 0.0079494715, + -0.031850882, + -0.012407799, + -0.00698891, + 0.008505934, + -0.010486677, + -0.022920975, + -0.023490688, + -0.009744727, + 0.02343769, + -0.0011692347, + 0.013646592, + 0.013911574, + 0.020072415, + -0.009088895, + -0.004415269, + -0.017833313, + -0.030049002, + -0.024457874, + -0.014256052, + 0.010042832, + 0.028432608, + 0.018972738, + -0.009685106, + 0.016680641, + -0.0021463572, + -0.0009199857, + 0.0027193816, + -0.0058693597, + 0.024643362, + -0.0059057944, + 0.007412882, + 0.019356962, + 0.0300755, + -0.022682492, + 0.0061608404, + -0.027041452, + 0.01015545, + 0.0006504489, + 0.0066874926, + 0.0018118169, + -0.034209225, + -0.0045113247, + -0.0057534296, + -0.013739336, + -0.0035607007, + -0.003660069, + -0.007406257, + -0.0040939776, + -0.01939671, + 0.016415657, + -0.0022407572, + 0.00096470147, + -0.014401792, + 0.004166848, + -0.00033681744, + 0.010102453, + -0.013633343, + -0.008598678, + -0.0034911428, + 0.009042524, + 0.019423207, + 0.03145341, + -0.010480053, + 0.009724853, + -0.00043887706, + 0.0203109, + 0.015554465, + 0.011467112, + -0.01179834, + 0.018469272, + -0.029731022, + -0.01518349, + -0.017369594, + 0.0054884474, + -0.020337397, + -0.027478673, + 0.02615376, + -0.009512867, + 0.015660457, + -0.026617479, + -0.011149134, + 0.018774, + -0.0064688823, + 0.024471123, + -0.0063761384, + 0.028777085, + 0.016468655, + -0.011175632, + 0.006386075, + -0.007273766, + -0.027584665, + -0.014865511, + 0.020403642, + -0.004382146, + -0.0050081667, + -0.033043303, + 0.0015203364, + 0.021927292, + -0.002500771, + -0.020814365, + 0.027902644, + 0.00037387357, + -0.004832616, + -0.003481206, + 0.009320755, + -0.008704671, + 0.00835357, + -0.007452629, + -0.00894978, + -0.008254201, + -0.012507168, + -0.009665232, + 0.016905876, + -0.020403642, + 0.0093605025, + 0.016243419, + -0.021437073, + -0.0026316063, + -0.008989527, + -0.013275617, + 0.015382227, + -0.004408644, + 0.03818396, + 0.0028568413, + 0.0049352967, + 0.014666774, + 0.015249736, + -0.0066113104, + -0.002866778, + 0.003931676, + 0.021423824, + -0.013951322, + -0.013924824, + 0.017356345, + -0.014083813, + 0.00034385602, + -0.0045179497, + 0.006323142, + -0.0145077845, + -0.036620565, + -0.006551689, + 0.0135405995, + 0.014812514, + 0.003448083, + -0.014309048, + -0.016852878, + -0.029890012, + -0.018813748, + 0.00023827712, + 0.0032973744, + -0.022497004, + -0.013487603, + 0.002191073, + -0.012407799, + 0.013898325, + -0.015236487, + -0.013964571, + 0.012732403, + 0.0076182433, + -0.01759483, + 0.01894624, + 0.0066510574, + 0.01788631, + -0.022497004, + -0.0078037307, + -0.0038323076, + -0.007154524, + 0.016495153, + 0.00008156489, + -0.024444625, + -0.009029275, + 0.011334621, + 0.02194054, + -0.002485866, + 0.013229245, + 0.03296381, + -0.0247891, + -0.0029893324, + -0.019277468, + -0.022033283, + 0.0026481675, + 0.008512558, + 0.018204289, + 0.001989024, + -0.020337397, + 0.0026912272, + 0.023782168, + -0.035984606, + 0.0012172628, + -0.013169624, + -0.027425675, + 0.005296335, + 0.0136068445, + -0.020695124, + -0.013182873, + -0.02163581, + -0.010029583, + -0.0130835045, + 0.009552615, + 0.0048061176, + -0.0020105538, + 0.005968728, + 0.010837779, + -0.014057315, + 0.028697591, + -0.0070286575, + -0.014017567, + 0.008399941, + -0.008187955, + -0.027041452, + -0.008247577, + -0.0010913962, + 0.04088678, + -0.0012214031, + -0.025173325, + -0.025968272, + 0.0070750294, + -0.0391114, + -0.010652292, + -0.013355112, + 0.017753819, + 0.00326922, + -0.0021463572, + 0.0041039144, + 0.018734254, + 0.0021331082, + 0.02538531, + 0.0032377534, + 0.001243761, + 0.026484989, + -0.01862826, + 0.026935458, + 0.010890775, + -0.023119712, + 0.0069822855, + 0.0165349, + 0.004905486, + 0.00336362, + 0.016110929, + -0.0030506095, + -0.008426439, + 0.01015545, + -0.009857344, + -0.012434298, + -0.0010922243, + 0.01224881, + -0.047140364, + 0.016574647, + 0.0038521811, + -0.013129877, + 0.01774057, + -0.007154524, + 0.005316209, + -0.0037726865, + 0.006882917, + -0.010996768, + -0.0088636605, + -0.0121428175, + -0.011334621, + 0.01697212, + 0.0015948627, + -0.021331081, + 0.021238336, + 0.01637591, + -0.0038223707, + -0.016905876, + 0.0069822855, + -0.0031317605, + 0.008075338, + 0.0016768415, + -0.018323531, + -0.010321063, + -0.014004318, + 0.004971732, + -0.032142363, + -0.0030737955, + 0.009380376, + -0.016309666, + -0.019515952, + 0.018548766, + 0.025981521, + -0.013885076, + -0.0038687426, + 0.0026117326, + -0.007684489, + 0.016998619, + -0.024219388, + 0.006256896, + -0.029439542, + 0.0029810518, + 0.0026730096, + -0.00819458, + -0.027266687, + 0.010427057, + 0.0020238028, + -0.020178407, + -0.008711295, + 0.23572832, + -0.0058594225, + -0.0018267222, + 0.022351263, + -0.001126175, + 0.023623178, + 0.025663543, + -0.008234328, + -0.008081962, + 0.008022341, + 0.00052292616, + -0.005339395, + 0.010062706, + -0.0154352235, + -0.0070617804, + -0.03216886, + -0.016733637, + -0.02178155, + -0.036620565, + 0.016004935, + 0.020946857, + -0.014945006, + -0.011937456, + -0.006382763, + 0.022894477, + 0.002653136, + -0.011447239, + 0.013494227, + 0.01605793, + 0.023490688, + -0.005852798, + 0.0043258374, + -0.0037230023, + 0.009757976, + 0.000064278924, + 0.008181331, + -0.00014149645, + 0.0024924905, + 0.027452175, + 0.03219536, + -0.007929597, + -0.015196739, + -0.0165349, + -0.004312588, + -0.010115702, + 0.016124178, + 0.0040177954, + -0.006299956, + -0.015395476, + 0.01922447, + -0.03407673, + -0.026855964, + 0.03023449, + 0.022126028, + 0.017170858, + -0.006445696, + 0.023252204, + -0.0023070027, + -0.00518703, + -0.016428906, + -0.011513484, + 0.02255, + -0.01788631, + 0.025133578, + -0.02044339, + 0.017091364, + -0.009281008, + -0.0157797, + 0.011838088, + -0.0041072266, + 0.015209988, + -0.0021331082, + -0.0002641543, + -0.01367309, + -0.026869213, + -0.025001086, + 0.032831315, + 0.008969653, + 0.015991686, + 0.026617479, + -0.030446475, + 0.016919125, + 0.01862826, + -0.008525807, + -0.003742876, + -0.03110893, + 0.0054884474, + 0.0054553244, + 0.009479744, + -0.0013795645, + 0.0008218594, + -0.02706795, + -0.016587896, + -0.028300118, + 0.006111156, + 0.0015799574, + -0.007856728, + 0.006170777, + -0.010572797, + 0.016322915, + -0.004888925, + 0.006929289, + 0.010612544, + -0.000272642, + 0.003471269, + -0.008963029, + -0.0144812865, + 0.0068299207, + -0.016733637, + -0.020204905, + -0.006326454, + -0.01894624, + 0.014083813, + -0.00036186655, + -0.0012487294, + 0.01789956, + 0.008307197, + 0.006326454, + 0.014242803, + -0.026683725, + 0.009486369, + -0.028141128, + -0.011910957, + 0.0108974, + -0.0032129113, + -0.0054453877, + -0.019330464, + -0.0012594943, + -0.0006641121, + -0.0315859, + 0.013964571, + 0.0011270031, + 0.02194054, + -0.004193346, + 0.0074923765, + 0.0029247429, + -0.009221386, + -0.010837779, + -0.020814365, + 0.0058826087, + 0.023861663, + -0.0103144385, + 0.015011251, + 0.0130967535, + -0.021410575, + -0.026710223, + 0.021529818, + 0.0068166717, + -0.024444625, + -0.002995957, + -0.017674325, + -0.024550617, + -0.016640892, + -0.014110311, + 0.021728555, + -0.0032410657, + -0.015156992, + -0.0024428063, + -0.0064125736, + 0.022523502, + -0.039482374, + -0.013414732, + 0.028538601, + -0.027478673, + -0.020536134, + -0.012262059, + -0.17170858, + 0.018204289, + 0.033546768, + -0.020496387, + 0.025146827, + 0.0210661, + 0.010380684, + -0.011301498, + -0.022046532, + -0.00048400686, + 0.035110164, + -0.0033470585, + -0.03667356, + -0.017475588, + -0.006634496, + -0.008088587, + -0.02162256, + 0.0055050086, + 0.015050999, + 0.00061028753, + 0.026087515, + -0.026670476, + 0.01609768, + -0.0046206303, + -0.021331081, + 0.023106463, + -0.015408725, + 0.003706441, + 0.0016627643, + -0.003411648, + -0.005587816, + -0.017912809, + 0.014521034, + 0.020827614, + -0.0021297957, + 0.014229554, + -0.008134959, + -0.008081962, + -0.018363278, + 0.0072936397, + -0.01593869, + 0.004859114, + 0.015488219, + -0.01262641, + -0.0017240415, + 0.0144680375, + 0.008671548, + -0.0055348193, + -0.0010516488, + -0.042768154, + 0.008896783, + -0.017541833, + 0.0036865673, + 0.022430757, + 0.0015004626, + 0.017237103, + -0.0053658932, + 0.016905876, + 0.023689425, + -0.0017372906, + -0.03142691, + -0.005011479, + 0.015806198, + -0.0093340045, + -0.0130437575, + -0.007412882, + -0.013368361, + -0.0027972201, + -0.02959853, + 0.007333387, + 0.007903099, + -0.016561398, + 0.009857344, + -0.040674794, + 0.014640276, + -0.0103011895, + 0.006492068, + 0.022470506, + 0.012401175, + -0.018151293, + -0.03216886, + 0.029360047, + -0.01970144, + -0.005061163, + -0.0056308755, + 0.045311987, + 0.010009709, + -0.00073035766, + -0.031347416, + -0.0028121255, + 0.015329231, + -0.014269301, + -0.009393625, + -0.013321989, + -0.005554693, + 0.012845021, + -0.011539983, + 0.031320915, + -0.0016486872, + 0.01233493, + -0.0008334524, + -0.008062089, + -0.01819104, + 0.013633343, + 0.024736105, + 0.018972738, + 0.019873679, + 0.014547532, + 0.024563866, + -0.0035441392, + -0.023623178, + -0.011374368, + 0.0144812865, + 0.015315982, + -0.00095145236, + 0.011977203, + 0.0233052, + -0.009439997, + 0.024524119, + 0.007903099, + 0.048465274, + -0.012527042, + -0.004772995, + 0.016760135, + -0.0017025118, + -0.028194124, + -0.05591128, + 0.010440306, + 0.012765526, + -0.013845329, + 0.0011990452, + 0.03852844, + 0.02195379, + 0.035136662, + -0.0041734725, + 0.013335238, + -0.0077639837, + -0.0037329393, + 0.0030953253, + -0.011380993, + 0.036726557, + -0.01608443, + 0.0054288264, + 0.0030853886, + -0.024391627, + 0.004951858, + -0.005389079, + -0.02239101, + -0.01669389, + -0.008433064, + -0.020006169, + 0.015739953, + -0.03094994, + 0.026710223, + 0.01730335, + 0.0052897106, + 0.0103144385, + 0.00045999285, + -0.0017356345, + -0.020377144, + 0.00003317455, + 0.014322298, + -0.02391466, + -0.0026034517, + 0.03410323, + -0.023397943, + -0.0036302586, + -0.009400249, + 0.01323587, + -0.011851337, + -0.009274383, + -0.009890467, + -0.01608443, + 0.009413498, + 0.022814982, + -0.017714072, + -0.024285635, + 0.008274075, + -0.0053460193, + -0.008929906, + 0.030737955, + -0.025650294, + -0.0004691016, + 0.009016025, + -0.052122034, + 0.02150332, + -0.008843787, + 0.002003929, + -0.007823604, + 0.025425058, + 0.032672327, + -0.0042595915, + -0.017078115, + -0.043086134, + 0.01997967, + -0.0039681112, + -0.009453246, + 0.031294417, + -0.006150903, + 0.0054321387, + -0.010208446, + -0.017555082, + -0.037177026, + -0.013169624, + 0.0023898098, + -0.016163925, + -0.004739872, + -0.02358343, + -0.0135538485, + 0.013315364, + -0.016269919, + 0.028750587, + -0.0063463277, + -0.006710679, + 0.016508402, + -0.01143399, + 0.0063562645, + 0.028856581, + 0.030472973, + -0.01059267, + -0.010195197, + 0.016839629, + 0.021158842, + 0.010566172, + -0.00064258225, + 0.017621327, + -0.007406257, + -0.027293185, + -0.08818613, + 0.026034517, + 0.017117862, + -0.01850902, + 0.012440923, + -0.009989835, + 0.023941157, + -0.0027773464, + 0.026405493, + -0.005173781, + -0.042900644, + 0.020986604, + -0.022510253, + -0.015064248, + -0.031506404, + -0.016654141, + 0.031506404, + 0.016627643, + 0.008346945, + 0.016150676, + 0.017992303, + -0.012434298, + 0.028538601, + 0.0028634658, + -0.018548766, + 0.011440614, + -0.04642491, + 0.039906345, + -0.0036799428, + -0.002321908, + 0.012560165, + -0.031029437, + 0.0036136971, + 0.013752585, + -0.0037826234, + 0.01081128, + -0.010393933, + -0.012646284, + 0.001006105, + 0.044861514, + -0.032990307, + 0.0028982447, + 0.0064721946, + -0.00492536, + -0.0026829466, + -0.0062668333, + 0.019515952, + 0.00480943, + 0.0070087835, + 0.0145077845, + -0.017661076, + 0.01983393, + -0.0046239425, + -0.015302732, + -0.0032394095, + -0.043987073, + 0.028247122, + -0.004915423, + 0.00058130507, + -0.0029181184, + 0.014521034, + 0.016269919, + 0.020231403, + 0.0050247284, + 0.0016735293, + -0.008724544, + -0.009188264, + -0.0046206303, + 0.016163925, + -0.026392244, + -0.037309516, + 0.012401175, + -0.004537823, + 0.037230022, + -0.0021397327, + -0.023543684, + -0.0052599, + 0.0043755216, + -0.021755053, + 0.014587279, + -0.00061898225, + 0.009002776, + -0.04014483, + 0.012189189, + 0.009797723, + -0.013726087, + -0.00473656, + -0.005352644, + -0.0077109872, + 0.020072415, + -0.02538531, + 0.012712529, + 0.01805855, + 0.0011245189, + 0.00097546633, + 0.01833678, + -0.0023335011, + -0.027982138, + 0.022377761, + 0.023106463, + 0.02314621, + -0.011520108, + 0.002545487, + -0.014640276, + -0.0075387484, + 0.012613161, + -0.022920975, + 0.009877218, + 0.009651983, + 0.009088895, + 0.02255, + 0.0034282093, + 0.0011924207, + 0.020655377, + 0.026061017, + -0.008512558, + -0.017647825, + -0.024881845, + -0.017064866, + 0.008797415, + 0.020377144, + 0.0144415395, + 0.013739336, + 0.0011468768, + 0.017184107, + -0.016481904, + 0.005425514, + -0.018866746, + -0.0009936839, + -0.008009092, + 0.0039482373, + 0.001657796, + -0.009380376, + -0.0073068887, + -0.025226321, + 0.0070551555, + 0.012315055, + 0.006303268, + 0.008333696, + 0.049366217, + 0.0051572192, + 0.009969962, + 0.019025734, + 0.008068713, + 0.0105198, + 0.008028965, + -0.00046123494, + -0.034050234, + -0.02420614, + 0.009022649, + -0.014534283, + 0.0055845035, + -0.010102453, + -0.018615011, + -0.026551234, + -0.0011063014, + 0.009221386, + -0.00037242443, + 0.008101836, + 0.037044536, + -0.0073400117, + 0.023225704, + 0.014256052, + -0.0008479436, + 0.007896475, + 0.0300755, + -0.0018300345, + -0.0004927016, + -0.019476205, + 0.0144547885, + 0.007393008, + -0.028512103, + -0.02225852, + -0.018707756, + -0.0028319992, + -0.016998619, + 0.01789956, + 0.004938609, + 0.0031582587, + 0.0019857117, + 0.018668009, + -0.022165775, + -0.02538531, + 0.031188425, + -0.020072415, + -0.000031751304, + 0.0067636753, + -0.017700823 + ] + }, + { + "object": "embedding", + "index": 2, + "embedding": [ + -0.0044841906, + 0.00023355159, + -0.00082493754, + 0.010029372, + -0.015641283, + 0.02653146, + -0.026091048, + -0.0066962577, + -0.008347801, + -0.021913812, + 0.017136013, + -0.013826254, + 0.012485, + -0.010282942, + -0.008074212, + -0.017709883, + 0.03384496, + -0.008374493, + 0.026838413, + -0.0343521, + 0.0005384198, + -0.005495135, + -0.010082755, + -0.006906454, + -0.009889241, + 0.006275865, + -0.0017316182, + -0.020539194, + 0.0030695351, + -0.032296848, + 0.02372884, + 0.010356344, + 0.0012778608, + -0.019031117, + -0.019645024, + -0.009628998, + -0.009955971, + -0.008194324, + -0.011243841, + -0.017136013, + 0.016748985, + -0.009228624, + -0.015441096, + -0.004170564, + -0.014333394, + 0.01742962, + 0.0025173523, + 0.016655564, + -0.028106265, + 0.012311505, + 0.0062091355, + 0.024329402, + -0.027705891, + -0.0017182723, + -0.014159899, + 0.0021203146, + -0.0042840033, + 0.002655815, + 0.0074269404, + -0.0026708292, + 0.024436168, + 0.011877766, + -0.018951043, + -0.003623386, + 0.014053132, + 0.000584296, + -0.0009575615, + 0.030054752, + -0.012992141, + -0.009115185, + 0.01901777, + 0.02137998, + -0.012731898, + 0.008234361, + 0.015040722, + -0.019458184, + -0.049539626, + 0.0010468116, + 0.00804752, + 0.001294543, + -0.003364811, + -0.019538257, + 0.012311505, + -0.0006247505, + 0.008094231, + 0.010643279, + -0.005154817, + 0.04406785, + -0.021019643, + -0.01533433, + 0.018283753, + 0.0029227312, + 0.005051387, + -0.009268661, + -0.03878291, + 0.004617648, + -0.016108386, + 0.027652508, + -0.007306828, + -0.032697223, + -0.010923541, + 0.008287745, + -0.016775677, + -0.014546927, + -0.02984122, + 0.010342998, + 0.012411598, + 0.007453632, + 0.015894853, + -0.0026674927, + 0.0011010289, + 0.012131336, + -0.009115185, + -0.05519825, + -0.015347675, + -0.037234794, + 0.0069932016, + 0.00059430534, + -0.019524911, + -0.019645024, + 0.012698533, + 0.018884314, + 0.016882444, + -0.026704956, + 0.0056219203, + -0.014573619, + -0.017202742, + -0.0058688177, + -0.0016457045, + -0.002824306, + 0.02853333, + 0.038996443, + 0.00025794937, + -0.013973057, + -0.021046335, + 0.008594698, + -0.035419766, + 0.006225818, + -0.011010289, + -0.029654378, + 0.0069798557, + 0.0028109602, + -0.0038435918, + 0.0027308853, + -0.009989335, + 0.0036734329, + 0.032136697, + 0.00459763, + 0.009849204, + 0.015027376, + 0.017976798, + 0.0032113343, + 0.0075470526, + -0.0009950965, + 0.0076938565, + 0.00986255, + 0.022287494, + 0.023328466, + -0.003823573, + -0.024382785, + -0.01211799, + -0.010509822, + 0.021460054, + -0.014400124, + -0.0030361705, + 0.016375303, + 0.005671967, + 0.054130584, + 0.0027909414, + -0.0036801056, + -0.0069398186, + 0.018043527, + -0.023995757, + 0.004791144, + 0.025637291, + 0.009362082, + 0.006886435, + 0.009302026, + -0.023982411, + 0.014533581, + -0.019564949, + 0.0028209696, + 0.010129466, + 0.012431617, + -0.008995072, + 0.019378109, + 0.018016836, + -0.0007114982, + 0.0057420325, + 0.000746948, + 0.013285749, + 0.029067162, + 0.0017449639, + 0.001951824, + -0.6700662, + -0.04406785, + -0.027999498, + 0.0029260677, + 0.04081147, + 0.030214902, + 0.018497285, + 0.027225442, + -0.00887496, + -0.010710008, + -0.046656933, + 0.0064393505, + -0.017202742, + 0.007867352, + 0.01377287, + -0.025357028, + 0.010296288, + -0.012171374, + 0.008868287, + 0.0120979715, + 0.011851074, + 0.007827315, + -0.0036200495, + -0.0065928274, + 0.018790893, + -0.0070065474, + -0.005805425, + -0.026718302, + -0.012284813, + 0.044841904, + -0.032136697, + 0.033417895, + -0.0017699874, + -0.008534642, + 0.044735137, + -0.024836542, + -0.025637291, + 0.03445887, + -0.011704271, + 0.049165946, + 0.003446554, + -0.006559463, + -0.010449765, + -0.017376238, + -0.00474777, + 0.010463111, + 0.022541065, + -0.023061551, + -0.014266665, + -0.010663298, + 0.008914998, + -0.013892983, + -0.0017533051, + -0.011670906, + 0.007894044, + 0.010349671, + 0.014653694, + -0.0001789172, + 0.015307638, + -0.019044463, + -0.008307763, + 0.0056519485, + -0.03795547, + -0.028239723, + -0.002780932, + -0.0026441375, + -0.037848704, + -0.0026825068, + 0.015214218, + -0.018924352, + -0.007860679, + 0.014159899, + -0.000095297386, + 0.020539194, + 0.0252903, + 0.031949855, + 0.01616177, + -0.0070198933, + -0.019364763, + -0.0009900919, + 0.008307763, + -0.017603116, + -0.0030661987, + -0.008768193, + 0.02172697, + -0.03331113, + -0.02853333, + 0.00665622, + 0.008200997, + -0.024676394, + 0.01809691, + 0.010423074, + -0.0063359207, + 0.0023521981, + -0.002750904, + 0.005331649, + -0.011090363, + 0.023501962, + 0.014720422, + -0.032110006, + 0.00526492, + 0.0029010442, + 0.007867352, + -0.0027559088, + -0.02039239, + -0.001042641, + -0.01839052, + 0.02503673, + 0.010556531, + -0.016188461, + 0.008074212, + -0.025570562, + -0.012224757, + -0.020045398, + 0.009468849, + -0.018857623, + 0.011036981, + 0.01717605, + 0.022767942, + -0.0057687243, + 0.010950233, + 0.006212472, + 0.027132021, + -0.0018750855, + 0.008728156, + 0.011750981, + -0.006182444, + -0.010423074, + -0.010289615, + 0.010903522, + -0.0013429216, + -0.00019737193, + 0.004237293, + -0.007780604, + 0.0038169, + -0.030294977, + -0.004974649, + 0.0071199867, + 0.02952092, + -0.02554387, + -0.043881007, + -0.025276953, + -0.0075337067, + 0.0035599933, + -0.021620203, + -0.009415465, + 0.012872029, + 0.015240909, + -0.012565075, + 0.019938633, + 0.0068130335, + -0.021873774, + -0.03961035, + 0.019524911, + 0.0120045515, + -0.008788212, + -0.029600995, + -0.007046585, + -0.02137998, + 0.008608044, + -0.0043073585, + -0.0043073585, + -0.033551354, + -0.009135203, + 0.005611911, + -0.015494479, + -0.004220611, + 0.011777673, + -0.0011744308, + -0.02653146, + -0.015187526, + -0.013706141, + -0.013826254, + 0.012992141, + 0.009555596, + -0.0010735032, + 0.012458309, + -0.0045309006, + 0.0138529455, + 0.010850139, + 0.005184845, + -0.031042341, + -0.021620203, + -0.0060890233, + 0.027225442, + 0.009201933, + -0.0022821326, + 0.02439613, + -0.014253319, + 0.011203803, + -0.031949855, + 0.015761396, + -0.0017266135, + -0.009021764, + 0.0138529455, + -0.01730951, + -0.0013103912, + 0.0044041155, + 0.015214218, + 0.008834923, + 0.026424693, + -0.0035966944, + 0.007059931, + -0.015240909, + 0.018337136, + -0.01975179, + -0.00028776893, + -0.0042339563, + 0.024169253, + 0.029627686, + 0.002655815, + -0.025677329, + 0.0011719285, + -0.005855472, + 0.011003616, + 0.012077954, + 0.025410412, + 0.019925287, + -0.004340723, + -0.014733768, + 0.023074897, + -0.011410663, + 0.006662893, + -0.023301775, + 0.0069198, + 0.021500092, + 0.023288429, + 0.022541065, + 0.026731648, + 0.0040537883, + -0.014013095, + -0.007473651, + -0.012204738, + -0.0050180224, + 0.0084812585, + -0.013919674, + 0.0036300588, + -0.0036367318, + 0.030561892, + -0.016415339, + 0.010783411, + -0.0015197535, + 0.016535452, + -0.011497411, + 0.005695322, + -0.016121732, + 0.04745768, + 0.0112571865, + -0.0069464915, + 0.020419082, + -0.025490487, + -0.003860274, + -0.01800349, + 0.028159648, + 0.002388899, + -0.031789705, + -0.00402376, + 0.009422138, + 0.007974118, + 0.0256106, + 0.014800497, + -0.0078339875, + 0.0018350482, + 0.024062486, + -0.016455377, + -0.00021686933, + 0.018110257, + 0.026051011, + -0.007914063, + -0.034832552, + -0.02531699, + -0.020218894, + 0.003519956, + 0.009535577, + 0.0043073585, + -0.009689054, + -0.015894853, + -0.011417336, + 0.014119862, + 0.0057553784, + -0.002882694, + -0.040250946, + 0.030001368, + 0.01492061, + -0.01016283, + -0.0077405665, + -0.009388774, + 0.008868287, + -0.01673564, + 0.01965837, + 0.026357964, + 0.020699343, + -0.004304022, + -0.018857623, + -0.0133991875, + 0.0074002487, + 0.02589086, + -0.041345302, + 0.013946366, + -0.019898595, + 0.0014004754, + -0.025930898, + -0.00903511, + -0.009188587, + 0.020218894, + 0.0027342218, + 0.00001191869, + -0.01673564, + -0.013459244, + -0.008427876, + 0.022180727, + -0.02885363, + -0.0024656374, + 0.009462176, + -0.0058621448, + 0.0050847516, + -0.006205799, + -0.016108386, + 0.016708948, + -0.0024089178, + -0.015828125, + 0.009095166, + -0.022848018, + -0.005925537, + 0.10890177, + -0.0012027906, + -0.003973713, + 0.021073025, + 0.0057854066, + 0.023328466, + -0.0040904894, + -0.0011410663, + 0.006352603, + 0.008307763, + -0.022287494, + 0.003483255, + -0.0039837225, + 0.0037368254, + 0.009849204, + -0.0012711879, + -0.013479263, + -0.052876078, + 0.030108135, + -0.009555596, + -0.012304832, + 0.017296163, + 0.0029911285, + 0.02045912, + 0.007960772, + -0.012985468, + 0.01689579, + 0.008794885, + 0.031896472, + -0.009849204, + -0.000403085, + 0.002167025, + 0.014119862, + 0.013292422, + -0.01730951, + -0.008274399, + 0.036914498, + -0.0035366383, + 0.008454567, + -0.003947022, + 0.01988525, + 0.00045792793, + -0.0020435764, + -0.003947022, + -0.002173698, + -0.0062825377, + -0.015000684, + 0.024489552, + -0.036700964, + -0.019858558, + 0.01418659, + 0.00031904815, + -0.03750171, + -0.009395447, + -0.026918488, + 0.024916617, + -0.0057120044, + -0.007974118, + 0.002056922, + 0.023635421, + 0.009642344, + -0.013879637, + -0.013372497, + -0.020525848, + -0.0013304099, + -0.043747548, + 0.0009709073, + -0.013205674, + -0.018884314, + -0.01476046, + 0.0102429055, + -0.011203803, + -0.025076767, + 0.02007209, + 0.015454442, + -0.009261988, + 0.016642218, + -0.02360873, + -0.007900717, + 0.020552538, + -0.013639413, + -0.0133991875, + -0.017349547, + -0.015908198, + -0.011784346, + 0.009689054, + 0.0130255055, + 0.0038736197, + -0.017669845, + 0.017189397, + 0.038596068, + -0.011951168, + 0.006522762, + -0.0035166196, + -0.011710944, + -0.009075147, + 0.008241034, + 0.017829996, + -0.018857623, + -0.0023488617, + 0.021927157, + -0.021940503, + -0.0069398186, + 0.021126408, + -0.0017850014, + -0.0021853754, + 0.010129466, + -0.003298082, + -0.010102774, + -0.001996866, + 0.02888032, + -0.0093153715, + 0.014360086, + 0.001457195, + 0.003616713, + 0.0082076695, + 0.00006532146, + 0.023114935, + 0.00850795, + 0.010189522, + -0.0147871515, + -0.0016231835, + 0.015427751, + 0.015027376, + 0.024195943, + -0.018817585, + 0.002757577, + -0.010896849, + 0.009101839, + 0.0016657233, + 0.008234361, + 0.018377174, + -0.019858558, + -0.016708948, + -0.0015189194, + 0.0044841906, + -0.0138396, + 0.023755532, + 0.003653414, + -0.029814528, + -0.008434549, + 0.005485126, + 0.018764202, + -0.015921544, + -0.039556965, + -0.028132956, + 0.0036033674, + 0.035286307, + 0.0026674927, + 0.008174306, + 0.009322044, + 0.028773556, + -0.007607109, + -0.010022699, + -0.011070345, + -0.006032304, + -0.015227563, + -0.013419206, + 0.012331524, + 0.005501808, + 0.020565884, + 0.00030507674, + 0.010816774, + 0.0043006856, + -0.0049946676, + 0.005395042, + -0.001981852, + 0.006886435, + 0.010409728, + 0.029067162, + 0.008174306, + 0.022073962, + -0.005131462, + -0.0011961177, + -0.030108135, + 0.0061323973, + -0.0135193, + -0.015521171, + -0.021099716, + -0.030268285, + -0.0015614592, + -0.00871481, + -0.010563204, + 0.009382101, + 0.0015005689, + 0.02595759, + 0.025223572, + -0.00041726494, + 0.013692795, + -0.008267726, + 0.009769129, + -0.011504084, + -0.023341812, + 0.008654755, + 0.00018559009, + -0.005014686, + -0.020886185, + 0.008788212, + 0.0062892106, + 0.008788212, + 0.010036045, + 0.0009784143, + -0.009949298, + 0.014680386, + -0.0007957436, + 0.041211843, + -0.00928868, + -0.008354474, + 0.015667975, + -0.0346724, + -0.016014965, + -0.007653819, + 0.0065861545, + -0.04409454, + -0.020832801, + 0.013145617, + -0.010249578, + 0.02255441, + -0.017736575, + -0.019645024, + 0.01959164, + 0.016535452, + 0.025717366, + -0.015828125, + 0.023061551, + 0.0083878385, + -0.010796756, + 0.011370625, + 0.015948236, + -0.01689579, + -0.023208354, + 0.018937698, + 0.018363828, + -0.020485811, + -0.020218894, + 0.002595759, + 0.009622325, + -0.03451225, + 0.006365949, + 0.027252134, + 0.029787837, + 0.0010835126, + 0.00572535, + 0.009582288, + -0.0054817894, + 0.023929028, + -0.015788088, + -0.020525848, + -0.01666891, + -0.004577611, + -0.015107451, + 0.006833052, + -0.002046913, + 0.0031095725, + 0.020552538, + -0.009322044, + -0.011010289, + -0.019898595, + 0.010016026, + 0.0069998745, + -0.02917393, + 0.023101589, + 0.0022737915, + 0.007053258, + 0.0107033355, + 0.0034699093, + -0.008628063, + 0.0013821248, + 0.014400124, + 0.024703085, + -0.0071333325, + 0.0059989393, + 0.002167025, + -0.011644214, + 0.0122781405, + 0.009248642, + -0.0009875896, + -0.00830109, + -0.0054250695, + -0.008781539, + 0.0106165875, + 0.0048678825, + 0.011070345, + -0.012138009, + -0.03002806, + -0.014707076, + -0.007994137, + -0.015467788, + 0.00079032185, + -0.011944495, + -0.0170159, + -0.020605922, + -0.0046710316, + 0.022207418, + 0.014013095, + -0.021446709, + 0.009141876, + 0.0044474895, + -0.0107033355, + 0.006646211, + -0.01717605, + 0.010509822, + 0.0018584033, + 0.0006201629, + -0.0147871515, + -0.025757402, + 0.027999498, + -0.023982411, + -0.0018250388, + -0.029387463, + -0.01377287, + 0.023501962, + -0.002078609, + 0.019217959, + 0.025850823, + -0.017189397, + 0.008527969, + -0.03333782, + -0.014627002, + 0.0028142966, + 0.010563204, + -0.0020902867, + 0.026291234, + -0.007366884, + 0.01517418, + 0.018977735, + 0.015454442, + 0.0035633298, + -0.010716681, + -0.013906329, + -0.009789147, + -0.00836782, + 0.00007934498, + -0.0073001552, + -0.017149359, + 0.0040137507, + -0.00944883, + -0.0053516678, + 0.01924465, + -0.0072134077, + 0.0067262854, + 0.013652759, + 0.022701213, + -0.0010526504, + -0.006803024, + -0.020685997, + -0.0127452435, + -0.006752977, + -0.02379557, + -0.006065668, + -0.0152676, + 0.02519688, + 0.027412282, + -0.040678013, + -0.02338185, + 0.026891796, + -0.031576175, + 0.003166292, + -0.02214069, + 0.015361021, + 0.014453506, + -0.00045167207, + -0.00036429876, + 0.010603242, + -0.010262924, + 0.009048455, + -0.029307388, + -0.003750171, + 0.022260802, + -0.017616462, + 0.008588025, + 0.00816096, + -0.014293357, + 0.0039236667, + 0.007580417, + -0.0014705409, + 0.01492061, + -0.006676239, + 0.00314961, + 0.0003401095, + 0.00036617552, + 0.01492061, + -0.0083878385, + 0.023942374, + 0.0071533513, + -0.0349927, + 0.012291486, + 0.010783411, + -0.016588835, + 0.008354474, + 0.013425879, + 0.0014421811, + -0.02080611, + 0.00541506, + -0.02089953, + 0.014573619, + -0.0012745244, + -0.0081075765, + 0.016415339, + -0.012972122, + -0.00024001596, + 0.031389333, + 0.000569282, + -0.0065394444, + -0.022474336, + 0.010543185, + -0.012391579, + 0.0085746795, + 0.013279076, + 0.0031712968, + -0.009201933, + -0.022113997, + 0.008354474, + -0.027492357, + -0.020178856, + 0.0065561268, + -0.0019801839, + -0.021793699, + 0.02519688, + 0.0011026971, + -0.0019234641, + -0.0062224814, + -0.011003616, + 0.00190845, + -0.006722949, + -0.025770748, + -0.003373152, + -0.03878291, + -0.018030182, + 0.0060756775, + -0.01393302, + -0.00020310647, + 0.0008024165, + 0.024556281, + -0.020525848, + 0.009155222, + 0.25111467, + -0.007520361, + -0.0110770175, + 0.028293107, + -0.0070799496, + 0.029414153, + 0.03387165, + -0.013158963, + -0.0097024, + 0.019831866, + -0.015107451, + -0.0027275488, + 0.01409317, + -0.0038402553, + 0.0082944175, + -0.011097036, + -0.019364763, + -0.04062463, + -0.0030862174, + -0.009375428, + 0.034378793, + -0.008914998, + -0.0014580291, + -0.0066495473, + 0.0050680693, + 0.013973057, + -0.0041238535, + 0.008434549, + 0.020152165, + 0.023261737, + 0.010683317, + 0.019578295, + 0.0003943268, + 0.03331113, + 0.0043507325, + 0.0070132203, + -0.0011886107, + -0.007787277, + 0.024943309, + 0.008321109, + 0.0021136417, + -0.012144682, + -0.0077472394, + -0.0011585826, + 0.0095022125, + 0.028613405, + -0.011270532, + -0.0061857803, + -0.003194652, + 0.02262114, + -0.029707761, + -0.004017087, + 0.01682906, + 0.023021514, + 0.011250514, + 0.0014229964, + 0.009048455, + -0.020619268, + -0.01915123, + -0.010509822, + 0.0008983395, + 0.024316056, + 0.003623386, + 0.024075832, + 0.0000784066, + -0.010823447, + -0.028266415, + 0.024502898, + -0.004871219, + 0.004140536, + -0.0005375857, + -0.003446554, + -0.0011844402, + -0.029787837, + -0.029013779, + -0.0026925162, + 0.03864945, + 0.00074152625, + 0.018150294, + 0.015881507, + -0.016175115, + 0.009835858, + -0.0013862954, + 0.0008512121, + -0.006893108, + -0.040384404, + 0.0027108665, + 0.0037835357, + 0.016281882, + -0.004387433, + 0.0052315556, + -0.021433363, + -0.0017166041, + -0.0077072023, + 0.0048478637, + -0.019351417, + -0.00092920166, + 0.006395977, + 0.000065217195, + 0.0056686304, + -0.0197251, + 0.004771125, + 0.0048512, + -0.022354223, + -0.01285201, + 0.0060890233, + 0.010556531, + 0.013679449, + 0.013138944, + -0.011710944, + -0.016014965, + -0.01682906, + 0.0060022757, + -0.010496476, + 0.00040663, + -0.0013270734, + -0.025930898, + -0.016975863, + 0.03267053, + -0.033898342, + 0.012158028, + -0.025010038, + -0.0071533513, + 0.0053516678, + -0.018457249, + 0.002078609, + -0.016081695, + 0.00060598296, + 0.009268661, + -0.031816397, + 0.030401744, + -0.016175115, + 0.014400124, + 0.0045142183, + -0.015881507, + 0.007320174, + 0.003947022, + -0.0033247736, + -0.0014446834, + -0.02137998, + 0.009969316, + -0.0074002487, + 0.008094231, + 0.00402376, + -0.0145068895, + -0.019231305, + 0.0069264728, + 0.017963452, + -0.013205674, + 0.0132990945, + -0.022380915, + -0.013158963, + 0.0022654503, + -0.016748985, + 0.015761396, + 0.00092836755, + 0.00026274554, + -0.008374493, + 0.011270532, + 0.027332207, + -0.015601246, + 0.0141332075, + 0.011744308, + -0.00578207, + -0.02188712, + -0.015734704, + -0.17306839, + 0.032910753, + 0.010896849, + -0.01632192, + 0.015187526, + 0.013499281, + 0.011824383, + -0.021633549, + 0.012358215, + 0.009328717, + 0.025263608, + 0.031202491, + -0.018777547, + -0.014733768, + 0.01151743, + -0.012358215, + -0.0040137507, + 0.0055451817, + 0.030161519, + 0.010489803, + 0.02166024, + -0.02057923, + 0.0009500545, + 0.0071600243, + -0.029814528, + 0.033925034, + 0.011183784, + 0.025877515, + -0.016855752, + -0.009015091, + -0.02751905, + -0.026344618, + 0.0120912995, + 0.032056622, + -0.0010001012, + 0.008601371, + 0.00053299806, + -0.024102524, + -0.012658495, + 0.022567756, + 0.003750171, + 0.020138819, + 0.00028568364, + -0.008654755, + 0.014653694, + 0.017629808, + 0.0013787885, + 0.0023021514, + -0.011791019, + -0.017789958, + 0.0256106, + -0.013919674, + 0.020298969, + 0.0006706267, + 0.0032380258, + 0.020032052, + 0.0141332075, + -0.0009216946, + 0.015948236, + -0.0214734, + -0.019551603, + -0.008601371, + 0.018403865, + -0.016415339, + -0.020672651, + 0.0063792947, + -0.016522106, + -0.0026257872, + -0.043267097, + 0.026998563, + -0.010029372, + -0.013225692, + 0.0026357963, + -0.012978795, + 0.0013103912, + -0.019338071, + -0.00022375076, + 0.030161519, + 0.0041805734, + -0.017629808, + -0.018684126, + 0.025490487, + -0.018363828, + -0.018564014, + 0.0025006703, + -0.008120922, + 0.0034231988, + 0.022954784, + -0.007053258, + -0.021913812, + 0.027572433, + -0.025410412, + 0.007954099, + -0.010756719, + 0.026264545, + 0.006576145, + -0.0031846426, + 0.021967195, + -0.004017087, + -0.010583223, + -0.00066520495, + -0.011550794, + -0.014280011, + 0.012838664, + 0.026704956, + -0.0019551604, + 0.008227688, + 0.0010217882, + 0.012298159, + -0.005361677, + -0.028426563, + 0.00093587453, + 0.015227563, + 0.021046335, + -0.026224507, + -0.00464434, + 0.016188461, + 0.0017583098, + 0.019578295, + -0.023341812, + 0.05207533, + -0.008314436, + 0.016628873, + 0.009775802, + 0.00029152242, + -0.01616177, + -0.06897112, + -0.021713624, + 0.002854334, + 0.005641939, + -0.011684252, + 0.029013779, + 0.007954099, + 0.01867078, + 0.008441222, + 0.02681172, + -0.0026891797, + -0.024489552, + -0.0020902867, + -0.0011427345, + 0.026838413, + -0.001641534, + 0.011010289, + -0.02853333, + 0.0060990327, + 0.026931833, + -0.000014557875, + -0.0046543493, + 0.008868287, + -0.011604177, + -0.015054068, + -0.0009208605, + -0.02554387, + 0.022420952, + 0.022848018, + 0.0031112407, + 0.001441347, + -0.0032430305, + 0.0025540534, + -0.028319798, + 0.0074002487, + 0.019271342, + -0.038729526, + -0.0016440363, + 0.020258931, + -0.024449514, + -0.0020102118, + -0.011584158, + 0.017216088, + -0.02137998, + -0.010196195, + 0.005962238, + -0.01800349, + -0.009622325, + 0.01593489, + -0.025637291, + -0.026357964, + -0.023195008, + 0.00068063603, + 0.01022956, + 0.008521296, + -0.017456312, + -0.018483939, + 0.0012545056, + -0.009635671, + -0.003166292, + 0.014560273, + 0.010850139, + -0.013879637, + 0.011303897, + 0.022594448, + 0.0028960395, + -0.021206483, + -0.02710533, + 0.009528904, + -0.0049713124, + 0.0068597435, + 0.010963579, + -0.007473651, + 0.0005559362, + -0.009008418, + -0.03680773, + -0.01800349, + -0.01119713, + 0.012725225, + -0.016775677, + 0.0028293105, + -0.03477917, + -0.0007181711, + -0.0019551604, + 0.025156843, + 0.015294292, + -0.0060623316, + 0.010302961, + -0.0016673915, + -0.034058493, + -0.006065668, + 0.036220513, + 0.008541315, + -0.03186978, + -0.014693731, + 0.032296848, + 0.0152676, + -0.014933956, + 0.005805425, + 0.014480198, + 0.00052590814, + -0.01816364, + -0.08295752, + 0.012698533, + 0.010356344, + -0.0037001243, + 0.014693731, + -0.0086681, + 0.015601246, + -0.018817585, + -0.0021837072, + -0.0061757714, + -0.017950106, + -0.00036054527, + -0.0054050507, + 0.0076938565, + -0.028960396, + -0.018523976, + 0.025050076, + -0.0014563609, + 0.015120797, + 0.012618458, + 0.0058821635, + 0.00526492, + 0.033097595, + -0.001323737, + -0.009755783, + 0.008354474, + -0.014266665, + 0.031202491, + -0.021193137, + -0.007867352, + -0.00056761375, + -0.029067162, + -0.013639413, + 0.016348612, + -0.0053082937, + -0.01896439, + -0.01068999, + 0.0024222636, + 0.0003165458, + 0.02602432, + -0.017029246, + -0.009615652, + 0.029654378, + -0.01476046, + -0.010082755, + 0.0061390703, + -0.0007736396, + -0.004941284, + 0.01616177, + 0.016762331, + -0.00049963355, + 0.01717605, + 0.015347675, + -0.0141332075, + 0.017042592, + -0.054504268, + 0.009055128, + 0.010649952, + -0.018203678, + 0.013178982, + 0.019645024, + 0.010790084, + 0.0025173523, + 0.011984533, + -0.0012294822, + -0.0143200485, + -0.0038502647, + -0.0014229964, + 0.007053258, + -0.02968107, + -0.04118515, + 0.014360086, + 0.015067413, + 0.020152165, + 0.020138819, + 0.0033531333, + 0.009842531, + -0.024409477, + -0.030081443, + 0.03248369, + -0.0012670173, + 0.0070866225, + -0.026785031, + 0.019137884, + 0.004814499, + -0.007046585, + -0.014907264, + -0.006913127, + -0.0058855, + 0.032777295, + -0.0077005294, + 0.0027792638, + 0.01581478, + 0.0042339563, + 0.023008168, + -0.002046913, + -0.008721483, + -0.027625816, + 0.025917552, + 0.01823037, + 0.016642218, + -0.0007899048, + -0.002382226, + -0.024649702, + -0.0068664164, + 0.00015358102, + -0.03931674, + -0.0052849385, + 0.01533433, + 0.0031079042, + 0.013352478, + 0.019965325, + -0.0037835357, + 0.03400511, + 0.008868287, + -0.0012895383, + -0.011343934, + -0.037741937, + -0.020685997, + 0.028907012, + 0.023275083, + 0.007653819, + 0.021913812, + -0.006676239, + -0.006906454, + 0.0069264728, + 0.008120922, + -0.017002555, + -0.00598893, + -0.007813969, + 0.013332459, + -0.0058888365, + -0.02738559, + 0.004200592, + -0.00804752, + -0.023848953, + 0.00183338, + 0.005975584, + -0.012444963, + 0.03632728, + 0.016989209, + 0.023421887, + -0.0036467412, + 0.0042172745, + 0.02039239, + 0.008060866, + 0.013652759, + -0.016855752, + -0.015921544, + 0.00862139, + -0.002714203, + -0.000095245254, + -0.01119713, + -0.020312315, + -0.011630869, + 0.006072341, + 0.024129216, + -0.012885374, + -0.0032380258, + 0.042679884, + 0.025076767, + 0.014773806, + 0.0105164945, + -0.006786342, + -0.008694792, + 0.023208354, + 0.0077605853, + 0.0095022125, + -0.008881633, + 0.022594448, + 0.012938757, + -0.017296163, + -0.008834923, + 0.014533581, + -0.010676644, + 0.0013871295, + -0.009942625, + 0.012771935, + 0.012605113, + -0.014853881, + 0.0077472394, + -0.016108386, + -0.040838163, + 0.0040270966, + 0.0019551604, + -0.0047677886, + 0.0013337464, + -0.013759525 + ] + }, + { + "object": "embedding", + "index": 3, + "embedding": [ + -0.0010213737, + 0.008644082, + 0.0023587057, + 0.009380755, + -0.0029162795, + 0.0086643575, + -0.018856129, + 0.0043659713, + -0.0068497085, + -0.04287573, + -0.0075086593, + -0.010408043, + 0.021775788, + -0.019937484, + -0.0062008956, + -0.013003294, + 0.023168033, + -0.006413787, + 0.010455352, + -0.025371293, + -0.013476388, + 0.023438372, + -0.016044606, + -0.009150967, + 0.0061704824, + 0.005903523, + 0.007907409, + -0.021383796, + 0.013523697, + -0.0016980654, + 0.0190724, + -0.0030886205, + 0.0021998817, + -0.004203768, + 0.0023468784, + -0.013625074, + -0.015490412, + -0.005937315, + -0.0011193715, + -0.011164991, + 0.02591197, + -0.02397905, + -0.010833826, + -0.008637324, + -0.0030210358, + 0.0026172171, + -0.016977275, + 0.017409816, + -0.024695447, + 0.010536454, + 0.0074951425, + 0.0034941286, + -0.03752302, + -0.012422066, + -0.019829348, + -0.00043676607, + -0.028196333, + 0.0045011407, + -0.006494889, + -0.014706429, + 0.011678635, + 0.000102855454, + -0.0281693, + 0.016409563, + -0.0037779843, + 0.00011837881, + -0.008157472, + 0.011901665, + -0.04260539, + -0.021140492, + 0.022843625, + 0.01858579, + -0.011219059, + -0.021478415, + 0.018639859, + -0.006626679, + -0.024560276, + 0.007522176, + 0.00737349, + 0.0059001436, + 0.016842104, + -0.018639859, + 0.01726113, + 0.004882994, + 0.024695447, + 0.0069071557, + -0.010921686, + 0.022613838, + 0.008191264, + -0.026425615, + 0.03173777, + 0.0031545155, + 0.011746219, + -0.0048221676, + -0.03033201, + -0.011556982, + -0.015517445, + 0.019194052, + -0.0077722394, + -0.010556729, + -0.01770719, + 0.011151474, + -0.004264594, + -0.015612064, + -0.016788037, + 0.00671116, + 0.008704908, + 0.0002832221, + 0.010293148, + 0.005704148, + 0.0093537215, + 0.024763031, + -0.016450115, + -0.052526824, + -0.02185689, + -0.016869139, + 0.03522514, + 0.0117259445, + -0.013260117, + -0.03381938, + 0.0075356932, + 0.036144294, + -0.007893892, + -0.0050046463, + 0.031818874, + 0.012307173, + -0.0087387, + -0.01046211, + -0.004720791, + -0.012090902, + 0.005271606, + 0.014760497, + 0.010867618, + 0.020762017, + -0.009664611, + 0.024735996, + -0.022938244, + 0.022897694, + -0.034278955, + -0.018707443, + 0.02203261, + 0.019045366, + -0.025155023, + 0.011935457, + 0.010313424, + 0.02662837, + 0.024465658, + 0.022438118, + 0.00737349, + 0.0055216695, + 0.018072147, + -0.016612317, + 0.020032102, + -0.014314438, + 0.0032085832, + 0.016990792, + 0.026141759, + 0.018964265, + -0.005197263, + 0.003558334, + 0.003761088, + 0.009286136, + 0.015598547, + -0.008927938, + -0.011219059, + 0.019613078, + 0.006728056, + 0.013834586, + 0.0060150377, + -0.021613585, + -0.013226325, + 0.020964772, + -0.0014032272, + 0.009772747, + 0.008252091, + 0.010313424, + 0.03222438, + 0.01761257, + -0.021208076, + 0.0067922617, + -0.0031359298, + -0.0132466, + 0.006227929, + 0.008434569, + -0.013239841, + -0.002096815, + 0.009941708, + 0.008015544, + 0.006643575, + 0.002061333, + 0.008488637, + 0.0397398, + 0.018031595, + 0.0026510095, + -0.67217034, + -0.051850975, + 0.0032254795, + 0.0016161189, + 0.020910705, + 0.0067719864, + 0.0150713865, + 0.006079243, + -0.0040415647, + -0.001850131, + -0.0314404, + 0.0071504605, + -0.007988511, + -0.0019126468, + -0.0027067668, + -0.0028317985, + -0.0006935879, + -0.012030075, + 0.014976768, + 0.012178762, + -0.006379995, + 0.0045856214, + -0.005704148, + 0.0048593394, + 0.021154009, + -0.015341725, + -0.0040753568, + -0.019275155, + -0.008718425, + 0.032602854, + -0.031007856, + 0.0381448, + 0.009475374, + 0.005268227, + 0.047011912, + -0.009948467, + -0.022776041, + 0.026236378, + 0.011279885, + 0.03425192, + -0.022654388, + -0.016585283, + 0.0058021457, + -0.025046887, + -0.011928698, + 0.012070626, + 0.017855875, + -0.04498437, + -0.0045450707, + -0.018991299, + 0.020248374, + -0.013219566, + -0.011894906, + -0.01942384, + 0.004626172, + 0.0143279545, + 0.02207316, + -0.014963251, + 0.006809158, + -0.00710991, + -0.021559516, + -0.0066570924, + -0.029548027, + -0.02287066, + -0.014638844, + -0.0017403058, + -0.029277688, + -0.0031883079, + 0.006278618, + -0.008427811, + 0.010259356, + 0.023789812, + -0.013571006, + 0.010293148, + 0.019923966, + 0.017274648, + 0.008988764, + 0.0015966883, + -0.007974993, + -0.01695024, + -0.007332939, + -0.003612402, + -0.0157202, + 0.0077114133, + 0.028764045, + -0.035684716, + -0.020910705, + 0.005548703, + 0.023032863, + -0.027790826, + 0.005656839, + 0.012253105, + -0.005224297, + 0.018004563, + -0.008157472, + 0.0095835095, + 0.0065861284, + -0.00096223707, + 0.014652361, + -0.011847597, + -0.017761257, + -0.011104165, + 0.0052918815, + -0.015544479, + -0.024965785, + -0.0029754161, + -0.0053662243, + 0.0087387, + 0.025939004, + -0.012895159, + 0.007718172, + -0.011577258, + -0.030223874, + -0.008725184, + 0.0097254375, + -0.027980063, + 0.017936977, + 0.0012925572, + 0.016531216, + 0.003686745, + 0.0035110246, + -0.0069747404, + 0.031467434, + 0.0033268565, + 0.00020835093, + 0.014598293, + -0.0020495057, + -0.014963251, + -0.010773, + 0.00238405, + 0.00037657344, + 0.002578356, + -0.006565853, + -0.008535947, + 0.026587818, + -0.017639605, + -0.018788544, + -0.0031646532, + 0.030602349, + -0.042443186, + -0.041037425, + -0.0081507135, + 0.004230802, + 0.0074072825, + 0.0111244405, + -0.023816846, + -0.022127228, + 0.02697981, + -0.0029720368, + 0.032467686, + 0.002101884, + -0.0038523274, + -0.037712257, + 0.022329982, + -0.0035346793, + -0.0032660302, + -0.022248881, + -0.011164991, + 0.0025749768, + 0.012624821, + 0.012205795, + 0.010326941, + -0.040577848, + 0.0012410239, + 0.008840078, + -0.015206556, + 0.014152234, + 0.014963251, + 0.002318155, + -0.018423587, + -0.003717158, + -0.005788629, + -0.009651094, + 0.015422827, + 0.015084904, + -0.01125961, + 0.009995776, + -0.0045247953, + -0.0035786096, + 0.006839571, + 0.0065489565, + -0.023965532, + -0.012983019, + 0.006545577, + 0.026371546, + -0.007055842, + 0.0077114133, + 0.014179269, + -0.0062448257, + 0.002874039, + -0.027358284, + 0.02437104, + -0.0007628622, + 0.0025935625, + 0.015949987, + -0.023384303, + 0.005359466, + 0.0055824956, + -0.0035313002, + 0.023478922, + 0.021924473, + -0.010739207, + 0.010489144, + -0.009319929, + 0.0051905042, + -0.02193799, + -0.0058021457, + -0.007359973, + 0.02176227, + 0.0281693, + 0.020342993, + -0.025966039, + -0.010658106, + 0.0064475797, + 0.022478668, + 0.03738785, + 0.015652616, + 0.009394272, + -0.005592633, + -0.002441497, + 0.0030869308, + -0.030304976, + 0.015220073, + -0.018558756, + -0.003541438, + 0.0019278533, + 0.006177241, + 0.038334038, + 0.015449861, + -0.0040145307, + -0.022059644, + -0.011333953, + -0.0077992734, + 0.008988764, + 0.012895159, + -0.019910451, + 0.0059542116, + -0.013787277, + 0.035792854, + 0.007927684, + 0.0147875305, + -0.0036968826, + 0.03676607, + -0.010705415, + -0.0039706007, + -0.009401031, + 0.040172342, + 0.015179521, + -0.0058798683, + 0.018328968, + -0.025438879, + -0.015990539, + -0.017964011, + 0.0067652278, + 0.014341472, + -0.035522513, + 0.009319929, + 0.0031714116, + 0.019369774, + 0.04211878, + 0.02397905, + -0.0010357354, + 0.0062718596, + 0.009968742, + 0.008137197, + -0.00023802483, + 0.032467686, + 0.0049776128, + -0.008143956, + -0.0061130356, + -0.02022134, + -0.0086643575, + -0.01593647, + -0.014706429, + -0.004095632, + -0.012604545, + -0.0014632086, + -0.018639859, + 0.026141759, + 0.0043423166, + -0.008731943, + -0.037279718, + 0.027561037, + -0.009529442, + -0.0007624398, + -0.013064121, + -0.009745712, + -0.009455099, + -0.026141759, + 0.021356763, + 0.009211794, + 0.016260877, + -0.008285883, + 0.00073878514, + -0.009042832, + 0.007130185, + 0.019315705, + -0.037144545, + -0.016923208, + -0.019234603, + 0.016801555, + -0.022708457, + 0.0029382445, + -0.0014311059, + 0.012435583, + -0.006596266, + 0.01774774, + -0.025709217, + -0.012834333, + 0.000044669257, + 0.022911211, + -0.012124694, + -0.0027135254, + 0.009482132, + 0.011252851, + 0.0013778829, + -0.00489989, + 0.0038219143, + 0.012401791, + -0.013908929, + -0.0052479515, + -0.021505449, + -0.024046633, + -0.00043148603, + 0.084778234, + -0.0034180959, + 0.00657937, + 0.002101884, + 0.011043339, + 0.008995523, + -0.004305145, + 0.0067517105, + 0.0062448257, + 0.016409563, + -0.011502914, + -0.018991299, + 0.012023317, + 0.001227507, + 0.0063833743, + -0.012124694, + -0.013537214, + -0.019194052, + 0.026033623, + -0.0063056517, + 0.00865084, + 0.012340965, + -0.001894061, + 0.018518206, + -0.0064002704, + -0.004115908, + 0.013097913, + 0.010049844, + 0.0013128327, + -0.025411844, + 0.012793782, + 0.0005677114, + -0.015409309, + -0.0016718763, + -0.020113204, + -0.0016271014, + 0.018085664, + 0.020586297, + -0.008157472, + -0.012199037, + 0.010212047, + 0.0063124103, + 0.0051195403, + -0.005082369, + -0.0018687168, + -0.0077384473, + 0.0021255387, + 0.012489651, + -0.027304215, + 0.004798513, + 0.03541438, + -0.0046025175, + -0.037279718, + -0.014909183, + -0.00094618567, + 0.01333446, + -0.012003041, + -0.0038557067, + 0.0017943736, + 0.014841598, + -0.00017962744, + -0.021559516, + 0.01457126, + -0.009421306, + -0.03400862, + -0.044524796, + -0.0015468446, + -0.014855116, + -0.03827997, + -0.021248627, + 0.016004056, + -0.013179015, + -0.029602095, + 0.009752471, + 0.017369267, + -0.004538312, + 0.026168793, + -0.010056602, + -0.0101850135, + 0.02662837, + -0.01607164, + -0.03417082, + -0.02392498, + -0.027817858, + 0.00040402974, + 0.009968742, + 0.020559262, + -0.017098928, + 0.002115401, + -0.016720453, + 0.040415645, + -0.011827321, + 0.014733463, + 0.0009689955, + -0.014368505, + -0.020829601, + 0.013239841, + 0.020599814, + -0.02949396, + -0.004896511, + 0.013354735, + -0.021708203, + 0.0019041987, + -0.013800794, + -0.0059069023, + 0.007846583, + 0.01690969, + 0.000936048, + -0.0072923885, + 0.00485596, + 0.029034384, + -0.036495734, + 0.00984709, + 0.013030329, + -0.020424094, + 0.03354904, + 0.013990032, + 0.0348737, + 0.007691138, + -0.00083382614, + 0.008421052, + -0.011002788, + 0.022154262, + 0.015963504, + 0.00047478246, + 0.006802399, + -0.0013381769, + -0.00034827236, + 0.006423925, + -0.0026594577, + -0.011131199, + 0.013388528, + -0.019491425, + -0.022235364, + -0.022194812, + -0.0075694853, + -0.0083805015, + 0.010563487, + 0.0037847427, + -0.03611726, + -0.01461181, + -0.016004056, + 0.011543466, + -0.008576497, + -0.020464644, + -0.016896173, + 0.006140069, + 0.015868885, + -0.0076505872, + 0.01377376, + 0.02012672, + 0.024398074, + -0.01426037, + -0.0075289346, + -0.024492692, + -0.030304976, + -0.021018839, + -0.030791586, + 0.002321534, + 0.017869392, + 0.034900736, + 0.0057751117, + -0.0041902508, + -0.01642308, + -0.0014648982, + 0.011151474, + -0.014733463, + 0.02397905, + -0.006298893, + 0.0135304555, + 0.027871927, + 0.018991299, + -0.015517445, + -0.004967475, + -0.037063446, + 0.028250402, + 0.0006534595, + -0.011408296, + -0.0067483317, + -0.03346794, + -0.0020106446, + -0.0037374336, + -0.015125454, + 0.008583256, + -0.0038962576, + -0.00024013685, + 0.021600068, + -0.004291628, + 0.015747232, + -0.013935964, + 0.020059137, + -0.009198276, + -0.0097254375, + -0.010252598, + 0.0026391821, + 0.0025935625, + -0.026817605, + 0.0026459408, + 0.01337501, + -0.001041649, + 0.024425108, + -0.0143279545, + -0.005612909, + -0.01037425, + 0.006386753, + 0.028412605, + -0.009421306, + -0.013706176, + 0.00036094448, + -0.027817858, + -0.037333783, + -0.006292135, + 0.0106107965, + -0.01284785, + -0.014017065, + 0.0043997634, + -0.0048863734, + 0.018315451, + -0.011604291, + -0.0026915604, + 0.026344514, + -0.004176734, + 0.021748753, + -0.016801555, + 0.015963504, + 0.0100092925, + -0.014733463, + -0.0010450283, + -0.00079707697, + -0.016152741, + -0.018883163, + 0.009637577, + 0.019491425, + -0.011469122, + -0.02675002, + -0.0045856214, + 0.009002281, + -0.014422573, + -0.0040246686, + 0.04322717, + 0.019085918, + -0.0059846244, + -0.015287657, + 0.0037982597, + -0.010725691, + 0.020897187, + -0.0024347384, + -0.009914674, + -0.0074951425, + -0.013949481, + 0.0018822337, + -0.0016144293, + -0.009157726, + 0.013746726, + 0.018612824, + -0.015017319, + 0.005646701, + -0.014165752, + 0.018815579, + 0.0039266706, + -0.012949227, + 0.016058123, + 0.010401284, + 0.0079209255, + 0.020194305, + 0.018247867, + -0.0013145222, + 0.016531216, + 0.008306159, + 0.029710231, + -0.013537214, + -0.019045366, + -0.001580637, + 0.0036326773, + 0.015436344, + -0.005822421, + 0.004578863, + 0.0014370196, + -0.03757709, + -0.0011261299, + 0.015476895, + 0.0034518882, + 0.004420039, + 0.0047444454, + -0.024479175, + -0.022965278, + 0.0041091493, + 0.00016452649, + -0.01006336, + -0.0015400861, + -0.0075019007, + -0.007434316, + -0.004825547, + 0.019045366, + -0.01205035, + -0.014706429, + 0.021546, + 0.016693419, + -0.008495396, + 0.000274774, + 0.009630819, + 0.0057818703, + -0.0016085156, + 0.0047714794, + -0.014138717, + -0.006238067, + 0.014246853, + -0.009542959, + 0.00042916278, + -0.020464644, + 0.005400017, + 0.043416407, + 0.025817353, + 0.013456112, + 0.025749767, + -0.030169807, + -0.0017960632, + -0.030791586, + -0.026087692, + 0.018288417, + 0.024884684, + 0.02666892, + 0.004626172, + -0.016301427, + 0.021126974, + 0.02339782, + -0.019477908, + -0.006940948, + -0.022221847, + -0.04182141, + -0.01108389, + 0.0039942553, + -0.01841007, + -0.024384556, + -0.018802062, + -0.0140981665, + -0.005136437, + 0.007630312, + 0.00067120045, + 0.0045315535, + 0.0056872517, + 0.022681423, + -0.00035650926, + 0.010577004, + -0.031197093, + -0.0070085325, + 0.0064171664, + -0.019545494, + -0.036090225, + -0.019207569, + -0.016517699, + 0.014679395, + -0.0015721889, + -0.020694433, + -0.016450115, + 0.013618316, + -0.034143787, + -0.0062177917, + -0.027142012, + 0.01258427, + 0.019761764, + 0.0005677114, + 0.010955479, + -0.0077722394, + -0.008704908, + 0.011685393, + -0.01443609, + 0.0073802485, + 0.012151727, + -0.023641124, + 0.0256957, + 0.019180536, + -0.021464897, + -0.008258849, + 0.012523443, + 0.005704148, + -0.0072721126, + -0.007420799, + -0.01103658, + 0.00084692065, + 0.009820056, + -0.013091154, + -0.008745459, + 0.022667905, + 0.017950494, + -0.045633186, + 0.0010264425, + -0.0039773593, + -0.006940948, + -0.0042882487, + -0.01258427, + 0.009907916, + 0.005815663, + 0.010806792, + -0.02710146, + -0.0134425955, + -0.0033674072, + -0.010766242, + 0.013037087, + 0.0039874967, + 0.004220664, + 0.009617302, + 0.0071369433, + -0.0021508827, + -0.0138143115, + -0.002586804, + -0.030899722, + -0.01108389, + 0.012077385, + -0.00856298, + -0.012509926, + -0.014246853, + 0.010340458, + -0.037982598, + -0.015355242, + 0.0033606489, + -0.0014370196, + -0.035117008, + 0.020802569, + 0.013037087, + -0.023330236, + -0.0050012674, + 0.0038388106, + -0.009455099, + -0.0063056517, + -0.021478415, + 0.008968488, + -0.03133226, + -0.010441835, + -0.0039976346, + 0.0031156542, + -0.024087185, + -0.00856298, + -0.0029720368, + -0.011185266, + -0.013449354, + 0.21756864, + -0.00763707, + -0.0062887557, + 0.021708203, + -0.014909183, + 0.035171073, + 0.028601842, + -0.00057911634, + -0.0031122752, + 0.0024431867, + -0.015341725, + -0.011320436, + 0.007359973, + -0.0031511362, + 0.0016693419, + -0.03576582, + -0.022911211, + -0.027898962, + -0.028574808, + -0.02057278, + 0.032062177, + -0.009441582, + 0.014517192, + -0.007745206, + 0.026506716, + 0.0058697304, + -0.018018078, + 0.015963504, + 0.02039706, + 0.025601082, + 0.017517952, + 0.014517192, + -0.0041699754, + 0.015625581, + -0.0023722227, + 0.012854609, + 0.0024617724, + -0.0026037002, + 0.024776548, + 0.014814565, + 0.009178001, + -0.019045366, + -0.021140492, + -0.0015882403, + -0.017842358, + 0.018747993, + -0.009279378, + 0.0015890851, + -0.0298454, + 0.025790319, + -0.038712513, + -0.0055655995, + 0.020315958, + 0.031467434, + 0.014287404, + -0.00543043, + 0.020099688, + -0.009015798, + -0.0016668075, + -0.002608769, + -0.014354989, + 0.026479682, + -0.012550477, + 0.037766326, + -0.007170736, + -0.00026062346, + -0.014409056, + -0.0023384304, + 0.011685393, + -0.002529357, + 0.027479935, + 0.0027287318, + -0.00018659711, + -0.034143787, + -0.021532483, + -0.021518966, + 0.04206471, + 0.024289938, + 0.016747486, + 0.01682859, + 0.003832052, + 0.004737687, + 0.006940948, + 0.015368759, + -0.013577765, + -0.014314438, + -0.008225057, + 0.00068767427, + 0.01002281, + -0.015571513, + 0.011759737, + -0.005285123, + -0.0027912478, + -0.015787784, + 0.00012355327, + 0.010347216, + 0.0007434316, + 0.007954719, + -0.006467855, + 0.015044352, + -0.025574047, + 0.0073261806, + 0.005893385, + -0.0051330575, + -0.006961223, + 0.004071978, + -0.0019836107, + 0.0030092085, + -0.006900397, + 0.0013770381, + -0.0077384473, + -0.010928445, + -0.00042219312, + -0.0039976346, + 0.00008706809, + -0.005974487, + -0.005589254, + -0.020478161, + 0.024492692, + -0.033873446, + 0.020586297, + -0.014706429, + -0.014652361, + 0.014409056, + -0.014503675, + -0.015463377, + -0.006481372, + -0.019045366, + -0.018612824, + -0.036847174, + 0.026722988, + -0.025628116, + 0.020613331, + -0.0030058292, + 0.0028571428, + 0.0086643575, + -0.012604545, + 0.006025175, + -0.005014784, + -0.0082926415, + 0.010745966, + -0.012719439, + 0.02631748, + 0.005427051, + -0.001880544, + 0.003448509, + 0.018139731, + 0.015260624, + -0.010712174, + 0.015449861, + -0.0066030244, + -0.025925487, + -0.0037272957, + 0.015882403, + 0.023289684, + 0.00018469628, + -0.013483146, + -0.021708203, + 0.010299907, + 0.019139985, + -0.033062432, + -0.013800794, + 0.04790403, + 0.0032085832, + -0.019450875, + -0.014300921, + -0.1757202, + 0.015030836, + 0.024722481, + -0.026966292, + 0.025925487, + 0.028764045, + 0.00441328, + -0.017112443, + -0.0037779843, + 0.008394019, + 0.03452226, + 0.017896427, + -0.01695024, + -0.008914421, + -0.0024448761, + -0.0035448172, + -0.000100849036, + 0.017017825, + 0.017044859, + 0.0065185437, + 0.025803836, + -0.015706683, + 0.008218299, + -0.0038962576, + -0.02635803, + 0.03262989, + -0.010293148, + 0.0052378136, + 0.0043456955, + -0.0033217876, + -0.0095362, + 0.0011050097, + 0.013767002, + 0.02887218, + 0.01673397, + 0.019748246, + -0.00251584, + -0.011861114, + -0.014354989, + 0.018139731, + -0.009022556, + 0.0003429923, + 0.009860607, + -0.0033302356, + -0.011793529, + 0.018639859, + 0.0145577425, + -0.0044605895, + 0.0056061503, + -0.009637577, + 0.03284616, + -0.025668666, + 0.016666384, + 0.01854524, + 0.016166259, + 0.018626342, + 0.023168033, + 0.004582242, + 0.005143195, + -0.019329222, + -0.019045366, + 0.0078601, + 0.0034603362, + -0.005345949, + -0.017342232, + -0.02715553, + -0.009326687, + 0.021532483, + -0.016490664, + 0.008164231, + 0.0027354904, + -0.008860353, + 0.014354989, + -0.028115232, + 0.022830108, + -0.008975247, + 0.0056230463, + 0.02914252, + 0.012158486, + -0.0022133987, + -0.029061418, + 0.03395455, + -0.014449608, + -0.009117175, + 0.009428064, + 0.01337501, + 0.012753231, + 0.004132804, + -0.035468448, + -0.016544733, + 0.022329982, + -0.019194052, + 0.014530709, + -0.02697981, + -0.0038388106, + 0.01068514, + -0.017909944, + 0.03235955, + -0.014909183, + -0.0005427896, + -0.0040314267, + -0.015963504, + -0.021789305, + 0.020937737, + 0.010806792, + 0.016409563, + 0.0035617133, + 0.019937484, + 0.018247867, + -0.008576497, + -0.0068497085, + 0.0029281068, + 0.009651094, + 0.008319676, + -0.023843879, + 0.015612064, + 0.02573625, + -0.009373996, + 0.016842104, + -0.0056940103, + 0.032305483, + -0.0004671792, + 0.006927431, + 0.011185266, + -0.0074410746, + -0.028358538, + -0.07585706, + 0.0118678715, + -0.0029855538, + 0.008542705, + -0.010941962, + 0.04387598, + 0.016517699, + 0.03711751, + -0.0091239335, + 0.022897694, + -0.0053628455, + -0.009245586, + 0.00033665626, + -0.0074681086, + 0.03290023, + -0.010408043, + -0.0016921518, + -0.007346456, + -0.0029179691, + 0.022681423, + -0.0060217963, + -0.027033877, + -0.0016262566, + 0.0027321111, + -0.018396553, + 0.010421559, + -0.023735743, + 0.02962913, + 0.023127481, + 0.011665118, + -0.0046329307, + -0.007846583, + 0.020288924, + -0.025817353, + -0.039820902, + 0.0140981665, + -0.024830615, + 0.0025682184, + 0.026898708, + -0.029926501, + -0.0070220493, + 0.00010385866, + 0.00242798, + -0.007968235, + -0.015774267, + -0.005558841, + -0.014125201, + 0.01527414, + 0.0140981665, + -0.009009039, + -0.016679902, + -0.012104418, + 0.014882149, + -0.021600068, + 0.028493706, + 0.0030210358, + 0.010299907, + 0.016436597, + -0.046768606, + 0.002816592, + 0.00927262, + 0.012597786, + -0.015747232, + 0.013523697, + 0.031115992, + 0.0241007, + -0.022492185, + -0.029791333, + 0.023262652, + -0.008880628, + 0.00037087098, + 0.016341979, + -0.006106277, + -0.0062346878, + -0.01757202, + -0.021072907, + -0.016896173, + -0.011671877, + 0.016382528, + -0.018004563, + 0.0012942469, + -0.034900736, + 0.005568979, + 0.0059001436, + -0.0054676016, + 0.026939258, + 0.015368759, + -0.008238574, + 0.015517445, + -0.016666384, + -0.003585368, + 0.009907916, + 0.022478668, + -0.030413112, + -0.022140745, + 0.0314404, + 0.019613078, + 0.00095463375, + 0.010036327, + 0.0097795045, + -0.005041818, + -0.027520487, + -0.095267385, + 0.01872096, + 0.012530202, + -0.0006243136, + 0.0061434484, + -0.017544987, + 0.04038861, + -0.008556222, + 0.0122733805, + -0.011300161, + -0.057906564, + 0.006538819, + -0.013652108, + -0.014273887, + -0.024654895, + -0.027953029, + 0.03903692, + 0.012003041, + 0.006089381, + 0.0076573454, + 0.016869139, + 0.011009546, + 0.007312664, + -0.0008621272, + -0.026777055, + 0.010225564, + -0.0082994, + 0.024560276, + -0.009549717, + 0.0006733125, + -0.009029315, + -0.046173863, + 0.017680155, + 0.026303962, + -0.007332939, + -0.019491425, + -0.006873363, + 0.013449354, + 0.010779758, + 0.03682014, + -0.04509251, + 0.012111177, + 0.022248881, + -0.0052209175, + -0.004122666, + -0.01099603, + 0.019018332, + 0.008116921, + 0.026020106, + 0.009211794, + 0.0027963165, + 0.02406015, + 0.0051905042, + -0.0050350595, + -0.0035110246, + -0.03773929, + 0.023614092, + -0.009063107, + -0.004686998, + 0.007988511, + 0.014030582, + 0.004247698, + 0.01143533, + 0.012016558, + 0.025155023, + -0.011225818, + -0.014814565, + 0.0043152827, + 0.020545747, + -0.016815072, + -0.018856129, + 0.01218552, + -0.003818535, + 0.0134425955, + 0.009029315, + -0.0029940018, + 0.010766242, + -0.0063495818, + -0.028115232, + 0.021478415, + -0.00014330067, + -0.0018129593, + -0.031494465, + 0.01823435, + 0.026858157, + -0.012908677, + -0.024019599, + -0.02962913, + 0.000034927558, + 0.02269494, + -0.015220073, + 0.0045011407, + 0.010543212, + 0.010455352, + -0.005058714, + 0.013429078, + -0.010786517, + -0.019085918, + 0.03184591, + 0.02485765, + 0.0052918815, + -0.001196249, + -0.005663597, + -0.03208921, + -0.009279378, + 0.014463124, + -0.033630144, + -0.018707443, + 0.026479682, + 0.015787784, + 0.009259103, + 0.020153755, + 0.00041374503, + 0.019951, + 0.0064205457, + 0.010103911, + -0.007576244, + -0.03249472, + -0.02357354, + 0.018612824, + 0.0134425955, + 0.024438625, + 0.0031207232, + -0.014706429, + 0.0024178424, + -0.011678635, + 0.014368505, + -0.024006082, + 0.006450959, + -0.013949481, + 0.004071978, + 0.010097153, + -0.000086487285, + 0.0026374925, + -0.0042443187, + -0.0023519474, + 0.0017293233, + 0.010441835, + -0.024127735, + 0.034414124, + 0.005200642, + 0.014030582, + 0.0091239335, + -0.01509842, + 0.0265743, + -0.0047782375, + 0.008535947, + 0.004997888, + -0.04025344, + -0.0056433217, + -0.0014277266, + 0.0011117682, + -0.02843964, + -0.028277434, + -0.0074816253, + -0.011266368, + 0.019356256, + -0.005288502, + -0.013050604, + 0.038712513, + -0.00058840925, + 0.008319676, + 0.021424348, + -0.02339782, + 0.0021069527, + 0.020640366, + 0.005751457, + 0.008657599, + -0.038712513, + 0.00944834, + 0.018802062, + -0.018666891, + -0.013821069, + -0.008867112, + -0.0101512205, + -0.016652867, + -0.004247698, + -0.0066030244, + 0.01319929, + -0.009772747, + 0.020451128, + -0.024654895, + -0.0011007857, + 0.039793868, + -0.0051330575, + -0.0133006675, + 0.010570246, + -0.022586804 + ] + }, + { + "object": "embedding", + "index": 4, + "embedding": [ + 0.019221356, + 0.0036138783, + -0.007965014, + -0.0067472225, + -0.024066191, + 0.013718256, + -0.00505548, + -0.01043351, + 0.0065530343, + -0.04420912, + 0.015508738, + 0.0044893716, + 0.012171331, + -0.031412434, + -0.014574001, + -0.018997546, + 0.02109083, + -0.020788029, + -0.0024273545, + -0.024145182, + 0.0010812012, + -0.012987581, + -0.014258034, + -0.014073719, + -0.020603715, + 0.013757751, + 0.0028387704, + -0.028753042, + 0.009880567, + -0.0032534779, + 0.02904268, + -0.0067735533, + -0.009307876, + -0.030490864, + -0.008037423, + -0.019642645, + -0.035230376, + -0.00874835, + -0.020630045, + -0.028489737, + 0.009742331, + -0.017575692, + -0.0019023876, + 0.0013996373, + -0.007563472, + 0.008491627, + -0.006510247, + -0.010644155, + -0.004374175, + 0.00862328, + 0.011348499, + 0.012809849, + -0.034809086, + -0.009900315, + 0.0029523212, + 0.010736313, + -0.019274017, + -0.006329224, + -0.0033538633, + -0.011809285, + 0.0025985036, + 0.0050521884, + -0.032544654, + 0.013810413, + -0.009413199, + -0.0071750954, + -0.029569292, + -0.005197007, + -0.020235086, + -0.004663812, + 0.026054153, + 0.030543525, + -0.0048382524, + -0.030227557, + 0.010525667, + 0.0027087631, + -0.01702275, + 0.005789446, + -0.0062436494, + -0.0027169914, + 0.029937921, + -0.025567036, + 0.018233957, + 0.002512929, + 0.035572674, + 0.016956922, + -0.011282673, + 0.012842762, + -0.0035348863, + -0.015324424, + 0.018984381, + 0.012934919, + 0.0049139527, + 0.015495572, + -0.023486918, + -0.030675178, + 0.0009191034, + 0.04434077, + -0.0020291037, + -0.036020294, + -0.006832797, + 0.012625535, + 0.0066682305, + -0.0084258, + -0.008807594, + 0.02128831, + 0.01811547, + 0.0011494963, + 0.015008456, + -0.0037027441, + 0.0133759575, + 0.031149128, + -0.0011708899, + -0.04426178, + -0.018444603, + -0.019432, + 0.03243933, + -0.009465859, + -0.014429183, + -0.026804576, + 0.016127508, + 0.027673487, + 0.01209234, + -0.0064641684, + 0.023895042, + -0.005187133, + -0.014442348, + -0.0035381778, + 0.021696435, + -0.01092721, + 0.028805703, + -0.000857391, + 0.0066254437, + -0.0017197189, + -0.021577947, + 0.018273454, + -0.017615188, + -0.0025902751, + -0.0048119216, + -0.013744586, + 0.014416017, + 0.015087448, + -0.013836743, + 0.025145747, + -0.0012210828, + 0.018839562, + 0.019589985, + -0.00042129, + 0.01957682, + -0.0073989057, + 0.013468115, + -0.030464534, + 0.009860819, + 0.005628171, + 0.0079321, + -0.00002769344, + 0.021617442, + 0.028042115, + -0.002312158, + 0.014284364, + -0.004792174, + 0.003060935, + 0.0158642, + -0.024158347, + -0.0265676, + 0.009274962, + 0.018984381, + 0.00787944, + 0.0052200463, + -0.0061909882, + -0.013468115, + 0.01179612, + -0.025619699, + 0.014968961, + -0.0010984808, + 0.020156093, + -0.00038343974, + 0.0022232921, + -0.016180169, + -0.019050207, + -0.0072475043, + -0.018997546, + 0.01516644, + 0.020932848, + 0.0061547835, + -0.028621389, + 0.0019451749, + 0.009090648, + 0.008978743, + -0.014218537, + 0.013784082, + 0.04183936, + 0.014942629, + 0.014600332, + -0.6736427, + -0.040312186, + 0.000431164, + -0.013277218, + 0.028753042, + 0.015126944, + 0.022446858, + -0.0015321132, + -0.009228884, + 0.01224374, + -0.016193334, + 0.014310694, + 0.0010392369, + -0.0006257637, + 0.0054274, + -0.024053026, + 0.0031086593, + -0.0096830875, + 0.016469806, + -0.0012836179, + -0.0061909882, + 0.013290383, + -0.017430874, + 0.008307312, + 0.026620261, + -0.024105687, + 0.002277599, + -0.02446115, + -0.01273744, + 0.04162872, + -0.012941502, + 0.048658993, + 0.03451945, + -0.004943575, + 0.042787265, + -0.014863637, + -0.0048777484, + 0.03754747, + 0.022762826, + 0.05397778, + -0.005786155, + -0.012691361, + 0.006177823, + -0.009005073, + -0.0030197934, + -0.01288884, + 0.032228686, + -0.032886952, + 0.014679323, + -0.015535069, + 0.0120660085, + -0.02446115, + -0.0158642, + 0.010861383, + -0.0043215137, + 0.0062173186, + 0.019945448, + -0.011223429, + -0.0026445822, + 0.0011503191, + 0.0012432992, + 0.014955794, + -0.002351654, + -0.0156008955, + -0.0024849528, + 0.0016341445, + -0.038548034, + -0.01729922, + 0.0031432183, + -0.015679887, + 0.016588293, + 0.028147439, + -0.007517393, + 0.0014317278, + 0.011032532, + 0.027726147, + 0.009623843, + -0.008320478, + -0.008537705, + -0.02218355, + -0.003992381, + 0.018181296, + -0.0136919245, + -0.017259724, + 0.00014378989, + -0.038416382, + -0.032965943, + 0.025619699, + 0.009900315, + -0.0071750954, + 0.018971216, + 0.014613497, + 0.0022035441, + 0.022565346, + -0.0030428327, + 0.0129809985, + -0.003179423, + 0.004854709, + 0.0069578676, + -0.03157042, + -0.010229448, + -0.0031942339, + -0.005940847, + -0.011453822, + 0.0127440225, + -0.014613497, + -0.030490864, + -0.0042392304, + 0.038442712, + -0.014889969, + 0.028963687, + -0.010604659, + -0.023855546, + -0.0016423727, + 0.013639264, + -0.02047206, + 0.02572502, + -0.010630989, + 0.03451945, + -0.019668976, + 0.013277218, + 0.0069578676, + 0.0246323, + 0.0053319517, + -0.0029572584, + 0.014982126, + 0.0022232921, + -0.00054841756, + -0.0065267035, + -0.012987581, + 0.00051015586, + 0.018233957, + -0.016733112, + -0.012711109, + 0.012474134, + -0.0064115073, + 0.0027350937, + 0.0014638181, + 0.023565909, + -0.013106069, + -0.048237704, + -0.020985508, + -0.006230484, + 0.0039594676, + -0.0100451335, + -0.021920245, + -0.0016917427, + 0.0023993782, + -0.010703399, + 0.008438965, + -0.004344553, + -0.0032370212, + -0.013560272, + 0.013955231, + -0.016680451, + -0.0035546343, + 0.011677632, + -0.009847654, + -0.020564217, + 0.00579932, + 0.009873984, + 0.014468678, + -0.030701509, + -0.00308562, + 0.003531595, + -0.010005637, + 0.005644628, + 0.003531595, + 0.02215722, + -0.015653556, + -0.023631737, + -0.027647156, + -0.017154401, + 0.02954296, + -0.0027844636, + -0.008735185, + 0.005206881, + -0.0034460204, + 0.016746277, + -0.0069578676, + -0.0033193044, + -0.0032567692, + -0.03615195, + 0.009873984, + 0.027594496, + -0.012869093, + 0.013836743, + 0.014982126, + -0.004713182, + 0.0073594097, + -0.017694179, + 0.0340455, + 0.01095354, + 0.0028683925, + 0.010933792, + -0.013744586, + 0.017351883, + 0.011901442, + -0.0020373322, + 0.01980063, + 0.022065064, + -0.0078070303, + 0.006520121, + -0.033360902, + 0.026027823, + -0.022012403, + 0.0010589848, + -0.008195407, + 0.009821323, + -0.009834488, + 0.0116249705, + -0.012632118, + -0.01452134, + -0.0033176588, + -0.005197007, + 0.02091968, + 0.0053286604, + 0.009992472, + 0.0051015588, + 0.009511938, + 0.01918186, + -0.029569292, + 0.018892223, + -0.022828652, + -0.004433419, + -0.0027449676, + 0.014402851, + 0.029727275, + 0.0025688815, + 0.0005064531, + -0.036494248, + -0.01578521, + -0.006990781, + -0.002958904, + 0.0004784768, + -0.011434074, + 0.0011700671, + -0.023500083, + 0.01727289, + 0.004453167, + 0.02322361, + -0.0053681564, + 0.019458331, + -0.0119936, + 0.009103813, + -0.01107861, + 0.035651665, + -0.00025980923, + -0.017825833, + 0.028674051, + -0.01937934, + -0.018892223, + -0.008188824, + 0.008616697, + 0.0037850274, + -0.01105228, + 0.004301766, + 0.0143238595, + -0.0011338625, + 0.036072955, + 0.016311822, + 0.0018233957, + 0.0014885032, + -0.0079781795, + 0.0073396615, + -0.007293583, + 0.017786337, + -0.009228884, + 0.003521721, + -0.005177259, + -0.012829597, + 0.0031958795, + -0.007984762, + -0.0055590533, + 0.0055623446, + -0.009228884, + -0.01606168, + -0.0040285857, + 0.013389123, + -0.000023720704, + 0.0019534032, + -0.04347186, + 0.012039678, + -0.009097231, + -0.008702272, + -0.014495009, + -0.022736495, + -0.0049304096, + -0.018523594, + 0.030569855, + 0.010170204, + 0.009841071, + -0.007451567, + -0.0072540874, + -0.012072591, + -0.010163621, + 0.018826397, + -0.028937357, + -0.019023877, + 0.0033867767, + 0.008346808, + -0.007945266, + 0.015324424, + -0.02044573, + 0.03625727, + -0.009037987, + -0.0035447604, + -0.018944884, + -0.0015938256, + -0.003943011, + 0.01030844, + -0.0061514922, + -0.01338254, + 0.016509302, + -0.004170113, + -0.0028058572, + -0.025145747, + 0.0059210993, + 0.013310131, + 0.0017081993, + -0.0181418, + -0.01606168, + -0.023855546, + -0.021275144, + 0.075937524, + -0.008853673, + 0.018523594, + 0.011822451, + 0.014797811, + 0.0104400925, + -0.0120660085, + -0.0158642, + -0.003531595, + -0.011124689, + 0.0035941303, + 0.0005315495, + 0.0029572584, + 0.00066978525, + 0.0017213646, + -0.0223547, + -0.0074054883, + -0.016272327, + 0.007234339, + -0.015113778, + 0.013547107, + 0.006753805, + -0.008629862, + 0.038100414, + 0.008234903, + 0.017430874, + 0.008511375, + 0.035704326, + 0.02577768, + -0.0127769355, + -0.0035447604, + 0.03675755, + -0.020063937, + 0.008991908, + -0.0012013348, + -0.0007475429, + 0.032623645, + 0.013955231, + -0.018813232, + 0.0032386668, + 0.005424109, + 0.017983817, + 0.02039307, + -0.009314459, + 0.014863637, + -0.014863637, + 0.00021023359, + 0.010512502, + -0.0061416184, + -0.000029621953, + 0.036915537, + 0.022762826, + -0.026909899, + -0.0143238595, + -0.016088013, + 0.034782756, + 0.009360537, + -0.0057137455, + 0.01105228, + 0.0040252944, + -0.0022446858, + -0.02292081, + 0.0073659923, + -0.0129020065, + -0.028884696, + -0.033913843, + -0.0063983416, + -0.019708473, + -0.026778245, + 0.000012953176, + 0.0053615733, + -0.017615188, + -0.02215722, + 0.009933229, + 0.022473188, + -0.0034558945, + 0.020287747, + -0.032807957, + -0.0036731223, + 0.021893915, + 0.009426364, + -0.03117546, + -0.011894859, + -0.0052233376, + -0.0068525453, + 0.018918553, + 0.025409052, + -0.02091968, + -0.018497264, + -0.0029128254, + 0.0265676, + 0.0075766374, + 0.008169076, + -0.0016563609, + -0.023355264, + 0.0060428786, + 0.018273454, + 0.026449112, + -0.013422036, + -0.016733112, + 0.025330061, + 0.00009375143, + 0.007392323, + -0.0031168878, + 0.01682527, + -0.0012646929, + 0.015614061, + 0.0040779556, + -0.008307312, + 0.00032584148, + 0.04834303, + -0.021670105, + 0.010920627, + -0.00078292465, + -0.022565346, + 0.020748531, + 0.016193334, + 0.03375586, + -0.0074384017, + -0.010473006, + 0.003551343, + -0.022710163, + 0.025119416, + 0.023210445, + 0.006971033, + -0.03154409, + 0.008195407, + -0.009827905, + -0.007155347, + -0.016640956, + -0.019524159, + 0.015311258, + -0.00916964, + -0.020458896, + -0.046947505, + -0.0056117144, + -0.02342109, + 0.0168516, + -0.01273744, + -0.02064321, + -0.0018579547, + -0.00014049857, + 0.004779008, + 0.006088957, + -0.010301857, + -0.016719947, + 0.0117500415, + 0.0037586966, + -0.00025919208, + 0.0028058572, + 0.014639827, + 0.020063937, + -0.0021130326, + 0.008906334, + -0.0034756425, + -0.035388358, + -0.020880185, + -0.011256342, + 0.009577765, + 0.00864961, + 0.020735366, + 0.02544855, + 0.018049642, + -0.010986453, + -0.01244122, + 0.0024635592, + -0.021235649, + -0.00031411613, + -0.016311822, + 0.00914331, + 0.01625916, + 0.027857801, + -0.022762826, + -0.007997927, + -0.008366556, + 0.024987763, + -0.011190516, + -0.014481843, + -0.011651302, + -0.03907465, + -0.0026248342, + -0.0064049247, + 0.0016004083, + -0.0037652794, + 0.006289728, + -0.002081765, + 0.022091394, + -0.014402851, + -0.009742331, + -0.013448367, + 0.019142365, + 0.003380194, + 0.019484662, + 0.008491627, + -0.0032633517, + -0.010038551, + -0.023763388, + 0.004351136, + -0.0047987564, + 0.0002133192, + 0.008109832, + -0.021051334, + 0.00520359, + -0.0019484663, + 0.0052990383, + 0.03446679, + 0.008188824, + -0.013797248, + 0.008873421, + -0.012566291, + -0.031149128, + -0.017088575, + -0.015324424, + -0.025659194, + 0.007813613, + 0.03117546, + -0.0018694743, + 0.040233195, + -0.023263106, + -0.016088013, + 0.014942629, + -0.008208572, + 0.022460023, + 0.006911789, + 0.04581529, + 0.010604659, + -0.0048876223, + -0.021340972, + -0.011987017, + -0.015442912, + -0.0077280384, + -0.006148201, + 0.0102097, + 0.0019369465, + -0.03615195, + 0.008465296, + 0.02485611, + -0.010288692, + -0.008807594, + 0.024553308, + 0.0030494155, + -0.0042820177, + -0.018707909, + -0.016561963, + -0.0036764136, + 0.022446858, + -0.02668609, + -0.01296125, + -0.0052002985, + -0.0128230145, + -0.008445548, + 0.010492754, + -0.025066756, + 0.0035645084, + 0.023236776, + -0.02698889, + 0.008866838, + -0.019142365, + -0.014192207, + 0.0008812531, + -0.001876057, + 0.029148001, + 0.0027729438, + 0.00617124, + -0.013428618, + 0.014810977, + -0.002777881, + 0.0064246724, + -0.020630045, + 0.025830343, + -0.012276654, + -0.020287747, + -0.006898624, + -0.008175659, + 0.009966142, + 0.0054043606, + -0.0045157024, + -0.006421381, + -0.021788592, + -0.0028700382, + 0.036915537, + 0.0102097, + -0.018220792, + -0.01679894, + -0.005325369, + -0.019366175, + -0.010946957, + -0.0041371994, + -0.019313512, + -0.023486918, + -0.018457768, + -0.010881131, + 0.00308562, + 0.014508175, + -0.0045025367, + -0.005980343, + 0.02109083, + 0.011493318, + -0.027568163, + 0.018879058, + 0.02059055, + 0.023881877, + -0.004897496, + 0.020261416, + -0.005851981, + -0.01477148, + 0.011605223, + 0.0025639446, + -0.00039681073, + -0.027647156, + 0.020090267, + 0.019247686, + 0.0168516, + 0.023355264, + 0.029305985, + -0.026370121, + 0.0015855973, + -0.031149128, + -0.02213089, + 0.00021599341, + 0.010525667, + 0.004867874, + 0.02448748, + -0.030569855, + 0.014824142, + 0.028331753, + -0.020340407, + 0.007675377, + -0.027594496, + -0.01283618, + 0.007102686, + -0.0035184298, + -0.007971597, + -0.023131454, + -0.016469806, + 0.005516266, + -0.0032057536, + 0.004963323, + 0.00080267264, + 0.0005689883, + 0.0024668504, + 0.03035921, + -0.0150479525, + 0.0008861901, + -0.010551997, + -0.019129198, + -0.01117735, + 0.0018612461, + -0.03199171, + -0.023802884, + -0.01169738, + 0.01679894, + 0.008544288, + -0.028911026, + -0.04170771, + -0.00034332665, + -0.022249378, + -0.0010556935, + -0.021512121, + 0.0074054883, + 0.02213089, + -0.008735185, + 0.010940375, + 0.018576255, + 0.006230484, + 0.0126189515, + -0.015350754, + -0.024303166, + 0.007971597, + -0.016575128, + 0.04299791, + 0.000023245004, + -0.022960305, + -0.022051899, + 0.030464534, + 0.013402288, + 0.0052792905, + 0.0038278145, + -0.03199171, + 0.006760388, + -0.010328188, + -0.0028338335, + -0.005578801, + 0.0009520167, + 0.006760388, + -0.038916662, + 0.008261234, + 0.0013222911, + -0.012803267, + -0.005697289, + 0.009873984, + 0.0014193852, + 0.012079174, + 0.025790848, + -0.016548797, + -0.026383286, + 0.0045157024, + -0.019221356, + 0.005489935, + 0.0000777062, + -0.0070961034, + 0.009617261, + -0.01276377, + -0.018036477, + -0.023078792, + 0.014731985, + -0.025685525, + -0.013797248, + 0.011302421, + 0.0033571546, + -0.014258034, + -0.01918186, + 0.003913389, + -0.022723328, + 0.008307312, + 0.0013247596, + -0.03401917, + -0.0030905572, + 0.017417708, + 0.010802139, + -0.013520776, + -0.02342109, + 0.004973197, + 0.0084521305, + 0.011565727, + -0.007168513, + 0.019919118, + -0.024842944, + 0.0022578512, + -0.008656193, + -0.017773172, + -0.046921175, + -0.016351318, + 0.0039561763, + 0.00021002788, + 0.0056413366, + 0.23507982, + 0.0023549453, + -0.0056512104, + 0.03420348, + 0.009439529, + 0.035309367, + 0.012507047, + -0.006059335, + -0.011256342, + 0.01982696, + -0.0229998, + -0.0013823578, + -0.003281454, + -0.0046572294, + 0.012467551, + -0.024948267, + -0.023039296, + -0.022644337, + -0.03243933, + -0.013560272, + 0.017338717, + -0.005226629, + 0.001489326, + -0.010604659, + -0.003130053, + 0.020801194, + -0.026054153, + -0.0023944413, + 0.023328934, + 0.028805703, + 0.0076687946, + 0.011940938, + -0.0018447894, + 0.0073462445, + 0.009854237, + -0.002988526, + 0.02361857, + -0.0013510901, + 0.00052249833, + 0.005358282, + -0.023763388, + -0.0008664421, + 0.011835616, + -0.006352263, + 0.0051838416, + 0.0012745669, + 0.008801011, + 0.0067373486, + -0.0062864367, + 0.024290001, + -0.017365048, + 0.005888186, + 0.03249199, + 0.027752478, + 0.00022319319, + -0.00453545, + 0.029648283, + -0.019432, + -0.0073594097, + 0.00091334357, + -0.014705654, + 0.030885823, + -0.021841254, + 0.017259724, + -0.021393633, + -0.0061284527, + -0.030069573, + -0.000862328, + -0.0015066054, + -0.025935665, + 0.007997927, + -0.030517194, + -0.02109083, + -0.005907934, + -0.032281347, + -0.023434255, + 0.017509865, + 0.010802139, + 0.012842762, + 0.02909534, + -0.015074283, + 0.006421381, + -0.00007791191, + 0.009709418, + -0.00083147176, + -0.019537324, + 0.007675377, + 0.0021821505, + 0.0040680817, + -0.0112760905, + 0.0030773918, + -0.02059055, + -0.0009799929, + -0.030464534, + -0.0019846708, + -0.0014531213, + -0.011190516, + 0.014705654, + 0.0034756425, + 0.0046901423, + -0.010380849, + -0.001915553, + 0.020735366, + 0.010894296, + -0.0070171114, + -0.0100451335, + 0.026580766, + -0.00047971107, + -0.0022216465, + -0.022288874, + -0.009505356, + -0.031860057, + 0.007622716, + -0.010644155, + -0.0027416763, + 0.0155219035, + -0.010881131, + -0.014982126, + 0.009702835, + -0.01053225, + 0.030464534, + -0.02693623, + -0.015693052, + -0.00041018176, + -0.017549362, + -0.013250887, + 0.017259724, + -0.019695308, + -0.0037652794, + -0.042050008, + 0.017391378, + 0.010466424, + 0.022499518, + -0.009340789, + 0.013244304, + 0.016509302, + 0.000004605931, + -0.011842199, + -0.0069183717, + 0.00055623444, + 0.009149892, + -0.00929471, + 0.01937934, + 0.016298657, + -0.011769789, + -0.013211391, + 0.01603535, + 0.0007997927, + -0.013171895, + 0.020998674, + -0.0025392596, + -0.035520013, + -0.015943194, + -0.009538269, + 0.039522268, + -0.0030823287, + -0.023328934, + 0.00369287, + 0.014810977, + 0.013626099, + -0.03209703, + -0.0029967541, + 0.016601458, + -0.032176025, + -0.03828473, + -0.008583784, + -0.17030647, + -0.007965014, + 0.009380285, + -0.031149128, + 0.013955231, + 0.0028042116, + 0.005878312, + 0.0029556127, + -0.010380849, + -0.0013659012, + 0.032413, + 0.017207064, + -0.010973288, + -0.035441022, + 0.0050719366, + -0.020169258, + -0.019432, + 0.006599113, + 0.024803448, + 0.0019747969, + 0.021577947, + -0.011124689, + 0.0027153457, + -0.0005368979, + -0.0026561017, + 0.03157042, + -0.009755497, + -0.008017675, + -0.0067735533, + -0.015666721, + -0.017259724, + 0.0035381778, + 0.015153275, + 0.024092522, + -0.004301766, + -0.0013823578, + -0.024579639, + -0.00919597, + -0.004522285, + 0.013560272, + -0.010848218, + 0.00803084, + 0.0009824614, + -0.01157231, + -0.0059869257, + 0.010802139, + 0.011282673, + -0.008866838, + -0.006056044, + -0.006572782, + 0.017970651, + -0.011842199, + 0.0012564645, + 0.019010711, + 0.022446858, + 0.00192049, + 0.0036237522, + 0.018102305, + 0.0132969655, + 0.0091301445, + -0.01876057, + -0.009505356, + 0.013981562, + -0.0026890151, + -0.020182423, + -0.011756624, + 0.008366556, + 0.022315204, + -0.02317095, + 0.01980063, + 0.0051476373, + 0.003712618, + -0.01747037, + -0.009452694, + 0.01960315, + -0.00079362147, + -0.009176223, + 0.03580965, + 0.0105980765, + -0.013211391, + -0.020774864, + 0.044525087, + -0.021275144, + 0.005977052, + 0.0022051898, + 0.026093649, + 0.0030066282, + -0.0076095504, + -0.01606168, + -0.021591112, + 0.01231615, + -0.008419218, + -0.0066089868, + -0.006984198, + 0.0009939811, + 0.0013988145, + -0.021670105, + 0.03831106, + -0.0012054489, + -0.000015813803, + -0.00014574412, + -0.014429183, + -0.007221174, + 0.022065064, + 0.01253996, + 0.018800067, + 0.016772607, + 0.016970087, + 0.0046802685, + 0.00016559495, + -0.027410181, + -0.009643591, + 0.011223429, + 0.006500373, + -0.012230575, + 0.0136919245, + 0.019037042, + -0.015298093, + 0.021591112, + 0.006483916, + 0.02128831, + -0.0132969655, + 0.013125816, + -0.0001234248, + -0.014363356, + -0.013448367, + -0.058822617, + -0.009472442, + 0.009419781, + 0.01727289, + -0.010782391, + 0.04839569, + 0.02091968, + 0.028358083, + -0.0082151545, + -0.003041187, + 0.0043708836, + -0.029990582, + 0.0022627881, + -0.00020848507, + 0.045393996, + 0.0010836698, + 0.011710545, + -0.00028531702, + 0.004094412, + 0.01957682, + -0.009841071, + -0.0037455314, + -0.014350191, + -0.013705091, + -0.0076292986, + 0.0022315204, + -0.0174967, + 0.008564035, + 0.015772045, + 0.01851043, + 0.02698889, + -0.0068130493, + 0.0005599372, + -0.013033659, + -0.004252396, + 0.005878312, + -0.022367865, + 0.005684124, + 0.0379161, + -0.029964251, + -0.0014539441, + 0.0057664067, + 0.0010647447, + -0.013705091, + -0.016601458, + -0.0008664421, + -0.021472625, + 0.019010711, + 0.03754747, + -0.020656375, + -0.019682143, + -0.003771862, + 0.00010809956, + -0.0084258, + 0.028647719, + -0.0015600895, + 0.020208754, + 0.00874835, + -0.025040423, + 0.007602968, + 0.01918186, + 0.006780136, + -0.0116710495, + 0.003972633, + 0.021419963, + 0.0015806603, + -0.015930029, + -0.026383286, + 0.020300912, + -0.0024997636, + -0.01305999, + -0.00023512426, + -0.010492754, + 0.0063983416, + -0.0106770685, + -0.034756426, + -0.020774864, + -0.006158075, + -0.0008236549, + -0.021999236, + 0.010670486, + -0.041102104, + -0.004637481, + 0.0011009492, + 0.0013025431, + 0.020551052, + 0.012263489, + -0.013277218, + 0.016088013, + -0.01288884, + 0.020169258, + 0.0053944867, + 0.03425614, + -0.03167574, + -0.009222302, + 0.029305985, + 0.005486644, + 0.02213089, + 0.0052134637, + 0.02086702, + -0.01519277, + -0.031781062, + -0.09600146, + 0.007221174, + 0.016522467, + -0.0017065536, + 0.007129017, + -0.017378213, + 0.020959178, + -0.0049995272, + 0.010512502, + -0.02059055, + -0.037758116, + 0.009261797, + -0.004005546, + -0.01980063, + -0.03151776, + -0.0017888368, + 0.028121108, + 0.01600902, + 0.017773172, + 0.02294714, + 0.015574564, + 0.0032732259, + 0.008392886, + -0.00049411063, + -0.03633626, + 0.011565727, + 0.0028535814, + 0.03170207, + -0.01224374, + 0.013053407, + 0.0015288219, + -0.026778245, + 0.015877366, + 0.03154409, + -0.014982126, + -0.010196535, + 0.004933701, + 0.014587166, + 0.018721074, + 0.03580965, + -0.034861747, + 0.0108350525, + 0.02002444, + -0.0059968, + -0.015679887, + 0.005233212, + 0.015574564, + 0.018233957, + 0.035362028, + -0.007793865, + 0.013402288, + 0.030622516, + -0.004170113, + -0.006559617, + -0.0077280384, + -0.03654691, + 0.010762643, + -0.0021969615, + -0.0050686453, + -0.010453258, + 0.02361857, + 0.01045984, + 0.01732555, + 0.007352827, + 0.014982126, + -0.007352827, + -0.017694179, + 0.007155347, + 0.01876057, + -0.0053418255, + -0.03459844, + 0.006161366, + 0.014337026, + 0.02901635, + 0.019853292, + -0.013448367, + -0.01598269, + -0.0099200625, + -0.019432, + 0.019339845, + 0.0040483335, + -0.019168695, + -0.0340455, + 0.021314641, + 0.028963687, + -0.010315022, + -0.012553126, + -0.015205936, + -0.009235467, + 0.034756426, + -0.005726911, + -0.009933229, + 0.012164748, + -0.00612187, + 0.019932283, + 0.03246566, + 0.006589239, + -0.01789166, + 0.035888642, + -0.0072870003, + 0.0023138036, + 0.016167004, + 0.013112651, + -0.0021574656, + -0.02339476, + 0.013560272, + -0.014113215, + -0.0217096, + 0.00916964, + 0.0014917945, + 0.006602404, + 0.008346808, + 0.009064318, + 0.028121108, + 0.0064345463, + 0.0040252944, + -0.016127508, + -0.02954296, + -0.01603535, + -0.0060922485, + 0.013836743, + 0.013586602, + 0.013652429, + -0.005506392, + 0.014995291, + -0.00966334, + 0.008208572, + -0.030648848, + 0.007826778, + 0.001890868, + 0.0050324406, + 0.0070566074, + -0.000534018, + -0.007115851, + -0.019129198, + 0.0075108106, + 0.012052843, + 0.011677632, + -0.0062568146, + 0.03617828, + 0.018194461, + -0.00322221, + 0.0031168878, + -0.0024717874, + 0.019260852, + 0.0057400763, + 0.012204245, + -0.0030839744, + -0.032202356, + 0.027410181, + -0.0021969615, + 0.013270635, + -0.014402851, + -0.01224374, + -0.026409617, + -0.0015329361, + 0.016693616, + -0.0034163985, + 0.0076095504, + 0.025514375, + -0.006266689, + 0.02002444, + 0.0073594097, + -0.011164185, + -0.009926646, + 0.026554435, + 0.0021327806, + 0.009518521, + -0.0156008955, + 0.013547107, + 0.0011050634, + -0.0252774, + -0.024763953, + 0.009623843, + 0.00852454, + -0.0008680878, + 0.006342389, + 0.007945266, + 0.008616697, + -0.0037586966, + 0.020801194, + -0.016601458, + -0.014271199, + 0.019168695, + -0.01851043, + 0.004301766, + 0.0047822995, + -0.003248541 + ] + }, + { + "object": "embedding", + "index": 5, + "embedding": [ + 0.0021845475, + 0.008128393, + 0.0016116065, + -0.0032902234, + -0.03658782, + 0.004707499, + -0.017878445, + -0.0045868796, + 0.010058301, + -0.03318368, + -0.004885077, + 0.0063559613, + 0.019768145, + -0.014166054, + -0.02752798, + -0.01904443, + 0.02173826, + -0.025544465, + -0.0021460163, + -0.026670244, + -0.00603431, + 0.033022854, + -0.012115528, + -0.020331034, + 0.0038229583, + 0.005575287, + -0.002809422, + -0.015680496, + -0.0014516185, + -0.011733566, + 0.01049387, + 0.0016526504, + 0.009689742, + -0.021537228, + 0.0055250293, + -0.02439188, + -0.014233065, + -0.009863969, + -0.016993904, + -0.020331034, + 0.019392885, + -0.018722778, + -0.008249013, + -0.00634926, + -0.007458287, + 0.01150573, + 0.0060008047, + 0.005149769, + -0.011840784, + 0.013227904, + 0.023560949, + 0.014005228, + -0.017865043, + -0.0012363467, + -0.000084129795, + -0.009046439, + -0.023467133, + -0.013817598, + -0.01125109, + -0.0092072645, + 0.0038665151, + 0.005173223, + -0.018092878, + -0.0010579309, + -0.0025363537, + -0.009488709, + -0.006342559, + 0.008007774, + -0.03224553, + -0.011780474, + 0.010949542, + 0.021698052, + -0.008604169, + -0.0045734774, + 0.038732164, + 0.003682236, + -0.031655837, + -0.00010491357, + 0.011793876, + -0.00007125118, + 0.021255782, + -0.018856801, + 0.0066709113, + 0.015613484, + 0.0046203854, + 0.015626887, + -0.016136168, + 0.025785703, + -0.008222208, + -0.00311097, + 0.010916037, + 0.008966027, + -0.00591034, + 0.004627086, + -0.030127993, + -0.025343433, + 0.0064765806, + 0.018883605, + -0.0061549293, + -0.043128062, + -0.0096562365, + 0.02161764, + -0.011874289, + -0.018012466, + -0.030020777, + 0.014045435, + 0.010835624, + -0.01521142, + 0.0017339009, + 0.011137172, + 0.0020287477, + 0.03181666, + -0.006838438, + -0.039080616, + -0.032272335, + -0.018374324, + 0.014460901, + -0.011512431, + -0.019567113, + -0.026817666, + 0.017784629, + 0.017302154, + -0.00015025047, + 0.001991892, + 0.018709376, + -0.003588421, + -0.017597, + -0.0056523494, + 0.0057461644, + 0.002444214, + 0.020974336, + 0.02299806, + 0.017865043, + 0.0012505865, + -0.014809356, + 0.015546474, + -0.021322792, + 0.010574282, + -0.0115928445, + -0.012209343, + 0.021135163, + 0.017985662, + -0.013790794, + 0.0056422977, + 0.0020320984, + 0.017717618, + 0.027259937, + 0.02180527, + 0.018803192, + -0.0025631578, + 0.008456745, + -0.005022449, + 0.006278899, + 0.008470148, + 0.016417611, + 0.0046203854, + 0.0141124455, + 0.01740937, + 0.0044160024, + 0.0034778533, + 0.009783557, + -0.003551565, + 0.009763453, + 0.008510354, + 0.0048281183, + 0.013650072, + 0.022555789, + 0.018937213, + 0.017114524, + 0.00068392756, + -0.014702139, + 0.03004758, + -0.0020220468, + 0.02445889, + 0.017422773, + 0.010373251, + 0.013710381, + 0.00414796, + -0.023668166, + -0.0054144613, + -0.033290897, + -0.0002041731, + 0.007310863, + 0.007994372, + 0.0028931852, + -0.007310863, + 0.0182269, + 0.00855056, + 0.006406219, + -0.013026873, + 0.0058734845, + 0.038303293, + 0.03229914, + 0.025115596, + -0.6776118, + -0.042752802, + -0.007404678, + -0.0079005575, + 0.019218657, + 0.028224891, + 0.010225827, + 0.012276353, + 0.004741004, + -0.005776319, + -0.018977419, + 0.032593984, + 0.0061448775, + 0.0013418884, + 0.008872212, + -0.015801115, + -0.013274812, + -0.015787711, + 0.006881995, + 0.006272198, + -0.0101990225, + 0.024445489, + -0.0063593118, + 0.0055149775, + 0.02238156, + -0.030127993, + 0.013650072, + -0.013965022, + -0.013375328, + 0.016055755, + -0.030181602, + 0.036346585, + 0.0028747574, + -0.016953697, + 0.051705427, + -0.008148496, + -0.010708304, + 0.024043426, + 0.008899016, + 0.045808487, + 0.00094987615, + -0.028064065, + 0.023614557, + -0.018561954, + -0.024525901, + 0.007518596, + 0.020156806, + -0.01941969, + 0.010400055, + -0.013670175, + -0.0028077466, + -0.029216649, + -0.02708571, + -0.011425318, + 0.010507272, + -0.0069356035, + 0.0069356035, + -0.007257255, + -0.0017523288, + 0.003129398, + -0.005990753, + 0.020625882, + -0.039482683, + -0.012678417, + -0.0042216717, + -0.0014733969, + -0.04393219, + 0.0018210147, + 0.018025868, + 0.008188703, + -0.0077062263, + 0.007679422, + -0.009642834, + 0.008919119, + 0.038169272, + 0.022220735, + 0.01754339, + -0.026201168, + -0.016833078, + -0.011948001, + 0.010916037, + -0.003608524, + -0.013180997, + -0.0049755415, + 0.005129666, + -0.015305235, + -0.023172287, + 0.0044294046, + 0.009750051, + -0.022033105, + 0.017717618, + 0.009863969, + 0.012953161, + 0.018066075, + -0.016296992, + 0.01584132, + -0.019727938, + 0.0044160024, + 0.02218053, + -0.027032102, + -0.00004824244, + -0.013100584, + -0.0007304162, + -0.0108289225, + -0.012805738, + -0.0069222013, + -0.024793945, + 0.00204215, + 0.0119413, + -0.02439188, + 0.0043020844, + -0.012336663, + -0.02376198, + -0.0043858476, + 0.019821754, + -0.03211151, + 0.0099711865, + -0.0062185894, + 0.00798097, + -0.00011171934, + 0.0141124455, + -0.01011861, + 0.038624946, + -0.008537158, + -0.00072622806, + 0.030690882, + 0.01062119, + -0.003323729, + -0.009629432, + 0.0056221946, + -0.007217048, + 0.018883605, + 0.012497488, + -0.0067144684, + 0.0038162572, + -0.0101521155, + 0.0037123905, + -0.00008203571, + 0.01539905, + -0.041519806, + -0.0439858, + -0.0067647262, + 0.019513505, + -0.000016072088, + -0.0036286274, + -0.023426928, + -0.017020708, + 0.0007655968, + -0.011432019, + 0.037499167, + -0.0029266907, + -0.011170677, + -0.03280842, + 0.01998258, + 0.0015110904, + -0.013469143, + 0.0014717217, + -0.012939759, + -0.0008837031, + -0.012329962, + 0.0088923145, + 0.0014859614, + -0.029136235, + 0.019768145, + 0.00710313, + -0.00066549965, + 0.013643371, + 0.0067044166, + 0.010440261, + -0.026335191, + -0.018709376, + -0.011988208, + 0.004657241, + 0.01766401, + 0.013221203, + 0.004784561, + 0.0005616331, + -0.0073510697, + -0.0053206463, + -0.025450649, + 0.010567581, + -0.03776721, + -0.02502178, + 0.0024676677, + 0.014621726, + -0.008852108, + 0.004013939, + 0.017141327, + -0.016859882, + 0.0012489113, + -0.017422773, + 0.012236147, + 0.01326141, + 0.005866783, + 0.021644443, + -0.008429941, + 0.00035390005, + 0.010279436, + 0.006895397, + 0.019245462, + 0.014715541, + -0.010373251, + 0.014099043, + -0.018334117, + 0.029297061, + -0.04141259, + -0.006868593, + -0.0132145025, + 0.02520941, + 0.019299071, + 0.0025028482, + -0.010949542, + -0.013938217, + -0.0076191123, + 0.01609596, + 0.015787711, + 0.01614957, + 0.010822222, + -0.004486364, + -0.0038899689, + 0.019634124, + -0.020880522, + 0.013382029, + 0.003796154, + -0.0065469416, + 0.004117805, + 0.0009054816, + 0.023239298, + 0.02224754, + 0.0017925352, + -0.005776319, + -0.010259332, + -0.01017892, + 0.017865043, + 0.005769618, + -0.014594922, + 0.012651613, + -0.010574282, + 0.038356904, + 0.0021644444, + 0.019701134, + 0.0047477055, + 0.027849631, + -0.010534076, + -0.011083564, + -0.0082155075, + 0.033961, + -0.008376333, + 0.0031578774, + 0.0065770964, + -0.018159889, + -0.0060376604, + -0.008751593, + 0.0012732026, + 0.009756752, + -0.017516587, + -0.0041446094, + 0.007585607, + 0.004298734, + 0.045594055, + 0.0017439525, + -0.00090799446, + 0.0010947867, + -0.011867588, + 0.005990753, + 0.008832005, + 0.011318101, + 0.0036889368, + -0.013790794, + -0.0055551836, + -0.026817666, + -0.0124036735, + -0.007404678, + -0.0033170278, + 0.014715541, + -0.018937213, + 0.0024592914, + -0.0026502716, + 0.02275682, + 0.01143872, + -0.014889769, + -0.03640019, + 0.01766401, + -0.005762917, + 0.0034678017, + -0.022783626, + -0.028439324, + 0.003665483, + -0.02841252, + 0.018468138, + 0.011204183, + 0.009482008, + 0.002784293, + -0.010922737, + -0.016176375, + 0.0056925556, + 0.018829996, + -0.03607854, + -0.019513505, + -0.0049688406, + -0.008074785, + -0.006248744, + -0.002023722, + 0.0007999398, + 0.019660927, + 0.003601823, + -0.006587148, + -0.0037291434, + 0.013040274, + -0.00077941775, + 0.019526906, + -0.020786706, + -0.0026201168, + 0.02067949, + 0.003953629, + 0.007954165, + -0.02110836, + -0.0017690815, + 0.031629033, + -0.00032311704, + -0.010815521, + 0.005096161, + -0.024365077, + -0.005119615, + 0.087596335, + 0.0031059443, + 0.013368627, + -0.0042317235, + 0.02570529, + 0.016873285, + -0.006077867, + -0.0048917783, + -0.0030054282, + -0.009287678, + -0.0118608875, + -0.010788716, + 0.009173759, + 0.00867788, + 0.00052980304, + -0.005166522, + -0.008302621, + -0.039080616, + 0.009167058, + -0.0068618916, + -0.003400791, + 0.011659855, + -0.00041232497, + 0.01288615, + -0.013053677, + 0.0100516, + 0.011840784, + 0.033961, + 0.017315555, + -0.011740268, + 0.014876367, + 0.018092878, + 0.0031059443, + -0.0031662537, + -0.006523488, + -0.0013779068, + 0.014795954, + 0.014246467, + -0.0049688406, + -0.0072639557, + 0.013616567, + -0.0015680495, + 0.01137841, + 0.008731489, + 0.021443412, + 0.00008318746, + -0.0087113865, + 0.019969177, + -0.012015012, + 0.0125712, + 0.029243452, + 0.009274276, + -0.026214572, + -0.01665885, + -0.01206862, + 0.020398045, + 0.005618844, + -0.0099711865, + 0.022019703, + 0.026201168, + -0.00515312, + -0.02357435, + -0.004342291, + -0.020639284, + -0.0070294184, + -0.041787848, + 0.0106815, + -0.032888833, + -0.011914495, + -0.019808352, + 0.00760571, + -0.022904243, + -0.0061113723, + 0.02067949, + 0.016511427, + 0.00597065, + 0.02350734, + -0.021765063, + -0.0059572477, + 0.012041816, + 0.009602628, + -0.024485696, + -0.027447566, + -0.01716813, + -0.006406219, + 0.014635129, + 0.017650608, + -0.016484622, + 0.007954165, + 0.009696443, + 0.027688805, + -0.00591034, + 0.015452659, + 0.0073510697, + -0.016189776, + -0.017489783, + 0.010078403, + 0.002017021, + -0.016645448, + -0.014018631, + 0.025249617, + -0.01986196, + -0.008751593, + 0.005317296, + 0.004915232, + -0.016390808, + 0.01728875, + -0.0008204618, + -0.0126717165, + 0.006309054, + 0.021885682, + -0.025812507, + 0.006881995, + 0.019098038, + -0.019151647, + 0.046424985, + -0.00057335995, + 0.022716613, + -0.006121424, + -0.001206192, + 0.01087583, + 0.0007924011, + 0.016109362, + 0.0066508083, + -0.011961403, + -0.008704685, + 0.0055015753, + -0.017462978, + 0.003268445, + -0.0023805539, + -0.00848355, + 0.026321787, + -0.012242848, + -0.03425585, + -0.027608393, + 0.00521678, + -0.017771227, + 0.019071234, + -0.011043357, + -0.02771561, + -0.035220806, + -0.009039738, + 0.012001609, + -0.009220667, + -0.018762985, + -0.021349598, + 0.007833546, + 0.0063392087, + 0.014313477, + 0.011974805, + 0.008161899, + 0.01628359, + -0.02776922, + -0.0029618712, + -0.03294244, + -0.035864107, + -0.022515582, + -0.014795954, + 0.01614957, + 0.009575823, + 0.026268179, + 0.029752733, + 0.007880454, + -0.012946459, + -0.007310863, + 0.0058835363, + -0.0008506166, + 0.009401596, + -0.015760908, + 0.0108289225, + 0.026831068, + 0.029377474, + -0.0030071035, + -0.026335191, + -0.017556794, + 0.020719696, + -0.016940296, + -0.00037693497, + -0.00993098, + -0.019272266, + 0.0018109631, + -0.0045801788, + -0.005297193, + -0.017114524, + 0.0058801854, + 0.008885614, + 0.00006428835, + -0.005045903, + 0.010641293, + -0.010406756, + 0.020974336, + -0.010601087, + -0.015693897, + -0.023172287, + -0.012162435, + 0.011686659, + -0.017449576, + 0.01182068, + 0.0118608875, + 0.010728407, + 0.023091873, + -0.012048517, + -0.01275883, + 0.0040809494, + 0.011043357, + 0.018950615, + 0.0060008047, + -0.017838238, + 0.005002346, + -0.037070297, + -0.023614557, + -0.015613484, + -0.009240771, + -0.026254777, + -0.011076862, + 0.021014543, + 0.0022565841, + 0.02105475, + -0.0073443684, + -0.008664479, + 0.018628964, + 0.008510354, + 0.012979965, + -0.020625882, + 0.02790324, + 0.018267106, + 0.0036889368, + -0.01413925, + -0.01991557, + -0.011887691, + -0.017985662, + 0.02275682, + 0.027876435, + -0.006875294, + -0.023520742, + 0.013871207, + 0.024097035, + -0.02570529, + -0.008249013, + 0.019768145, + 0.027822826, + 0.0019416339, + -0.01991557, + 0.0091603575, + -0.017516587, + 0.021952692, + -0.017503185, + -0.0017154729, + -0.015881527, + -0.010172218, + -0.018508345, + 0.015667092, + -0.023735177, + 0.0015018765, + 0.02652282, + -0.020960934, + 0.011545937, + -0.0008259064, + 0.004623736, + 0.0044093016, + -0.0105139725, + 0.02432487, + 0.01691349, + 0.0034644513, + -0.0037928035, + 0.013341823, + -0.0003802855, + 0.0005612143, + -0.0040273406, + 0.026227973, + -0.006228641, + -0.015988745, + -0.0039502787, + -0.00892582, + -0.0016291967, + -0.0063325074, + 0.0035616166, + 0.0010470416, + -0.016457818, + -0.007330966, + 0.02790324, + -0.0056791534, + -0.0029434434, + -0.017597, + -0.0056925556, + -0.019111441, + -0.004657241, + -0.0054613687, + 0.007592308, + -0.013274812, + -0.020880522, + -0.01923206, + 0.0074515855, + 0.027018698, + -0.008496952, + -0.018937213, + 0.013321719, + 0.011827381, + -0.02790324, + 0.007424781, + 0.010272735, + 0.0055015753, + -0.03256718, + 0.00086527516, + -0.01388461, + -0.010266033, + 0.0063559613, + -0.025504258, + -0.00911345, + -0.02972593, + -0.022676408, + 0.03739195, + 0.008952624, + 0.022207333, + 0.0257723, + -0.022864038, + -0.00070947537, + -0.01558668, + -0.010004692, + 0.008336126, + 0.007987671, + 0.011365009, + 0.024445489, + -0.016833078, + 0.01647122, + 0.0067345714, + 0.00049755414, + -0.0037123905, + -0.024539305, + -0.0327012, + 0.0025179256, + 0.0063593118, + -0.027930044, + -0.01206862, + -0.02047846, + -0.02117537, + -0.0027641898, + -0.0024224354, + 0.008838707, + -0.0005004859, + 0.0133485235, + 0.035408434, + 0.0018746232, + 0.016806275, + -0.01640421, + -0.015975341, + 0.0025815857, + -0.013804196, + -0.01628359, + -0.01125109, + -0.0025514308, + 0.02067949, + 0.009917578, + -0.017275348, + -0.019808352, + 0.019473298, + -0.037847623, + 0.0066005504, + -0.02180527, + 0.021094956, + 0.011948001, + -0.0072438526, + 0.004720901, + 0.027983652, + -0.0069557065, + 0.030556861, + -0.015077399, + -0.009723247, + 0.013026873, + -0.026281582, + 0.04846211, + 0.00021862228, + -0.01175367, + -0.0022214034, + 0.008282518, + 0.020371241, + 0.004312136, + 0.0030188302, + -0.021832073, + -0.0019466598, + -0.0020723047, + -0.0124505805, + -0.018990822, + 0.019580515, + 0.012350065, + -0.04631777, + 0.01439389, + -0.0005499062, + -0.007699525, + -0.0063023525, + -0.0008162736, + -0.0059036394, + -0.00081376074, + 0.022971256, + -0.013341823, + -0.012638211, + 0.0069289026, + -0.027259937, + 0.008604169, + 0.0017112847, + 0.0043255384, + 0.0028730822, + 0.0019081286, + -0.013703681, + -0.027930044, + 0.0004301247, + -0.029699124, + -0.0032918989, + 0.011539236, + -0.0010261007, + -0.009488709, + -0.0106479945, + 0.011217585, + -0.037365146, + -0.018079476, + 0.0029501445, + -0.029645517, + -0.02570529, + 0.018789789, + 0.0027156072, + -0.021537228, + -0.011545937, + -0.0066742618, + 0.0038363603, + -0.012725324, + -0.017382566, + 0.011338204, + -0.027018698, + 0.0024040076, + -0.0073376675, + -0.017690815, + -0.0257723, + 0.005890237, + 0.005437915, + -0.004436106, + 0.0010269384, + 0.23652083, + -0.010527375, + -0.0022599346, + 0.01998258, + -0.0075521017, + 0.017529989, + 0.028358912, + -0.0007073813, + 0.0017389266, + 0.02256919, + -0.017811434, + -0.000539017, + 0.018722778, + -0.004543323, + -0.0062018367, + -0.021832073, + -0.032888833, + -0.02551766, + -0.031012535, + -0.0015412453, + 0.02483415, + -0.015546474, + 0.005632246, + -0.002117537, + 0.0099711865, + -0.011994909, + -0.0017623804, + 0.01162635, + 0.011043357, + 0.024793945, + 0.0027072306, + 0.009327884, + -0.007699525, + 0.0038732162, + -0.006362662, + 0.008999532, + 0.007987671, + -0.012041816, + 0.029886754, + -0.0038330099, + -0.0036889368, + -0.0151042035, + -0.018722778, + 0.0059170416, + -0.0044897143, + 0.0076526175, + 0.007934063, + 0.0074515855, + -0.009736649, + 0.021041349, + -0.040367223, + -0.0007986833, + 0.014045435, + 0.026080549, + 0.012209343, + -0.021523824, + 0.030771296, + 0.0031729548, + -0.015063996, + -0.006121424, + 0.004456209, + 0.030396037, + -0.010728407, + 0.036855865, + -0.02407023, + -0.0011333178, + -0.009917578, + 0.0038531132, + 0.029779539, + -0.012732026, + 0.022515582, + 0.0124036735, + 0.004342291, + -0.021188771, + -0.010741809, + -0.023453731, + 0.027501175, + 0.0157207, + 0.016940296, + 0.041707437, + -0.009012934, + -0.012819139, + 0.008992831, + 0.007585607, + 0.0005260337, + -0.034095023, + 0.012209343, + -0.000043975746, + 0.0129866665, + -0.031575423, + 0.0037425454, + -0.0032835223, + -0.011257791, + -0.020076394, + 0.0021711455, + 0.009951083, + 0.009602628, + 0.01590833, + -0.01118408, + 0.021041349, + -0.015827918, + 0.0021610938, + 0.004895129, + -0.005739463, + -0.017141327, + -0.005990753, + -0.006888696, + 0.011177379, + -0.009461906, + -0.013871207, + 0.0011500705, + -0.03602493, + -0.0048281183, + -0.017570196, + 0.0071366355, + 0.008041279, + -0.02047846, + -0.011793876, + 0.034523893, + -0.021979498, + 0.019848557, + -0.027608393, + -0.013650072, + -0.012524293, + -0.017462978, + -0.010312941, + 0.009977887, + -0.01640421, + 0.0032282386, + -0.048220873, + 0.028305303, + -0.0032667697, + 0.020652685, + -0.0063258065, + -0.0022766872, + 0.02110836, + 0.006543591, + -0.006881995, + 0.012356766, + -0.0020387995, + 0.008986129, + -0.018159889, + 0.035435237, + 0.03640019, + -0.021161968, + 0.0021577433, + 0.02413724, + -0.0026754006, + -0.018508345, + 0.008912418, + -0.0100516, + -0.02149702, + -0.013341823, + -0.02110836, + 0.011351606, + 0.0046203854, + 0.0015035517, + -0.003930175, + 0.003638679, + 0.0019014275, + -0.04135898, + 0.0067647262, + 0.026429005, + -0.0075655035, + -0.036158953, + -0.02752798, + -0.17454937, + 0.027045503, + -0.00021548115, + -0.014487705, + 0.011545937, + 0.034389872, + 0.0079474645, + -0.022287747, + -0.00810829, + 0.015506268, + 0.031253774, + 0.019526906, + -0.005488173, + -0.014889769, + -0.0019684383, + -0.026040344, + -0.028921802, + 0.017556794, + 0.026683645, + 0.013408833, + 0.03042284, + -0.022153724, + -0.0005792234, + -0.016390808, + -0.001614957, + 0.024619717, + -0.009997991, + 0.012892852, + 0.0012313209, + 0.0013779068, + -0.017395968, + -0.019553712, + 0.026965091, + 0.014702139, + -0.004184816, + 0.0040440937, + -0.0077464324, + -0.009951083, + -0.00018270875, + 0.014742346, + -0.012651613, + 0.018923812, + 0.012236147, + 0.0163506, + -0.0012857671, + 0.019098038, + 0.005297193, + -0.0065134363, + -0.010185621, + -0.005380956, + 0.02092073, + -0.00760571, + 0.009066543, + 0.020652685, + 0.020009384, + 0.00019412152, + 0.007813443, + 0.005166522, + 0.012745428, + -0.008369632, + -0.025263019, + -0.016015548, + -0.00033044632, + -0.010507272, + -0.0046940967, + -0.00396033, + -0.021912487, + 0.022033105, + -0.017395968, + 0.010594386, + 0.0061683315, + -0.009924279, + 0.01049387, + -0.016551634, + -0.0039234743, + 0.0008112478, + -0.011425318, + 0.020826913, + 0.0021711455, + -0.015814517, + -0.03310327, + 0.026348593, + -0.03626617, + -0.009187162, + 0.00358172, + 0.03130738, + 0.0019198555, + 0.0101990225, + -0.025624877, + -0.003638679, + 0.022528984, + -0.013375328, + 0.0037525971, + -0.0045600757, + 0.011036656, + 0.022528984, + -0.01363667, + 0.037123907, + -0.025785703, + 0.004858273, + -0.01017892, + -0.005538431, + -0.012021713, + -0.00083763327, + 0.029109431, + 0.0007630839, + 0.020384643, + 0.035810497, + 0.027983652, + -0.012289755, + -0.015131007, + 0.0031913829, + 0.00848355, + -0.0030623872, + -0.016498026, + 0.016256787, + 0.019928971, + -0.013596463, + 0.016632047, + -0.00798097, + 0.029431082, + -0.0092072645, + 0.010473766, + 0.010353147, + -0.02236816, + 0.0056791534, + -0.053930182, + 0.023292907, + 0.005193326, + 0.018977419, + -0.012685118, + 0.037123907, + 0.02112176, + 0.032325942, + -0.00810829, + 0.016136168, + -0.012953161, + -0.011807279, + -0.0028496285, + -0.0005783858, + 0.03444348, + -0.005166522, + 0.0056724525, + 0.004154661, + 0.0010076729, + 0.024432087, + -0.007753134, + -0.011572741, + 0.00078402477, + -0.004111104, + -0.024177447, + 0.019017626, + -0.021403205, + 0.027742414, + 0.0327012, + 0.02187228, + 0.021537228, + 0.0018025868, + 0.014045435, + -0.013562958, + -0.01495678, + 0.014501107, + -0.01017892, + -0.0038531132, + 0.023453731, + -0.033666156, + 0.003085841, + -0.016605241, + -0.019580515, + -0.020947533, + -0.008597468, + 0.016270189, + -0.034148633, + 0.011492329, + 0.014192858, + -0.0033790127, + -0.033773374, + -0.028948605, + -0.013308317, + -0.011425318, + 0.027849631, + -0.010500571, + 0.01074851, + 0.00010899703, + -0.035730086, + -0.0031511763, + -0.0070629236, + 0.0074180802, + -0.041895065, + 0.018535148, + 0.022917647, + 0.008443343, + -0.012557798, + -0.03575689, + 0.01665885, + -0.0011483952, + -0.013234606, + -0.0036621327, + -0.026750656, + -0.00055535085, + -0.019098038, + -0.031226968, + -0.038169272, + 0.003281847, + -0.0016962073, + -0.0050291503, + 0.011445421, + -0.035542455, + -0.020076394, + -0.010292837, + 0.001948335, + 0.042029087, + 0.011137172, + -0.014621726, + 0.008818603, + -0.011579443, + 0.006530189, + 0.008691283, + 0.029752733, + -0.01991557, + -0.016605241, + 0.029002214, + 0.01149903, + 0.023413526, + 0.0010034847, + 0.010279436, + -0.010266033, + -0.026388798, + -0.090973675, + 0.015988745, + 0.026804265, + 0.007585607, + 0.0006826711, + -0.0219929, + 0.009957785, + -0.009012934, + 0.008141795, + 0.00849025, + -0.025343433, + 0.014192858, + -0.0069356035, + -0.016551634, + -0.032272335, + -0.010835624, + 0.011545937, + 0.0033086515, + 0.0074113794, + 0.01747638, + 0.0026301686, + 0.025383638, + 0.028680563, + -0.0072304504, + -0.022354757, + 0.000009966527, + -0.021322792, + 0.036239367, + -0.014755747, + -0.0073376675, + -0.0059672995, + -0.033773374, + -0.01232326, + 0.01659184, + -0.012624809, + -0.014246467, + 0.0035917715, + 0.020759903, + 0.0031277225, + 0.032325942, + -0.01614957, + 0.008778397, + 0.016310396, + 0.0015378947, + -0.010225827, + 0.01439389, + -0.0000051010556, + 0.002992026, + 0.02533003, + 0.0033203783, + 0.0011911145, + 0.020143405, + 0.0033220535, + -0.0050258, + 0.0014566443, + -0.025892919, + 0.013831001, + -0.006637406, + -0.006215239, + 0.0076727206, + 0.009173759, + 0.0076124114, + 0.023601156, + 0.010849026, + 0.005618844, + -0.013911413, + -0.005833278, + 0.010929439, + 0.027849631, + -0.022354757, + -0.039884746, + 0.023976415, + 0.004034042, + 0.014916574, + 0.015063996, + -0.0003350533, + 0.000020050846, + 0.0048917783, + -0.015827918, + 0.035783693, + 0.0075789057, + -0.010567581, + -0.03235275, + 0.01703411, + 0.023896001, + -0.019768145, + 0.0000081931, + -0.0039871344, + -0.0046739937, + 0.04449508, + -0.018829996, + -0.0013829325, + 0.008195404, + -0.001062119, + -0.005096161, + 0.031387795, + -0.0018310663, + -0.028734172, + 0.043262083, + 0.023078471, + 0.014568117, + 0.004117805, + 0.003876567, + -0.017704217, + -0.027474372, + 0.012631509, + -0.014434096, + -0.0064497762, + -0.002224754, + 0.022609398, + 0.0141124455, + 0.016377406, + -0.0017204988, + 0.025115596, + 0.0129866665, + -0.0076526175, + -0.00091469556, + -0.020706294, + -0.010889232, + 0.016377406, + 0.008758293, + 0.00515312, + 0.012055218, + -0.016444417, + -0.005367554, + 0.0009951083, + 0.010225827, + -0.024298066, + -0.0003149501, + 0.011358307, + 0.018401127, + 0.016766068, + -0.023735177, + -0.008979429, + -0.009079944, + -0.0037324938, + 0.0028211488, + 0.0018293911, + -0.038383707, + 0.022354757, + 0.019004224, + 0.0039938353, + -0.004278631, + -0.002697179, + 0.0152382245, + -0.0045466735, + 0.002638545, + -0.012658314, + -0.02533003, + 0.010346446, + -0.025933126, + -0.0059538973, + -0.01791865, + -0.014246467, + -0.012618108, + 0.009106749, + 0.006701066, + 0.006255445, + -0.0057729683, + 0.024847554, + -0.0074850908, + 0.025745496, + 0.014782552, + -0.023453731, + -0.0073778736, + 0.00993098, + -0.0039569796, + 0.011874289, + -0.014554716, + 0.021416608, + 0.000161035, + -0.016243385, + -0.019392885, + 0.02520941, + -0.01143872, + -0.026991894, + 0.00013747656, + -0.003538163, + 0.014125847, + -0.015988745, + 0.011666556, + -0.016189776, + -0.00792066, + 0.027688805, + -0.003926825, + 0.007826845, + -0.0019064533, + -0.012839243 + ] + }, + { + "object": "embedding", + "index": 6, + "embedding": [ + -0.0131454775, + -0.007023479, + -0.007137846, + -0.028793573, + -0.03425628, + 0.0073396703, + -0.032803144, + 0.013912409, + -0.007124391, + -0.025228014, + 0.000104275794, + -0.007595314, + 0.018890737, + -0.0022755668, + -0.0018584637, + 0.0096404655, + 0.019994043, + -0.006337277, + 0.004726048, + -0.005577073, + -0.044078387, + 0.001702891, + 0.012815831, + -0.005116241, + 0.0020535602, + -0.00840261, + 0.011147418, + -0.0054458873, + -0.010407397, + -0.012217086, + -0.007992235, + -0.008557342, + -0.004463677, + -0.010817773, + -0.0130109275, + -0.0073733074, + -0.00095698267, + -0.006098452, + 0.027246255, + -0.01677831, + 0.015917195, + -0.011066689, + 0.0026657602, + -0.01789507, + 0.008294971, + 0.0343101, + 0.00424167, + 0.020895522, + -0.008624617, + 0.0009553008, + -0.00075095386, + 0.056295473, + -0.024420718, + -0.011618341, + -0.018688913, + -0.0019139653, + -0.011584704, + 0.004816869, + -0.009034993, + -0.023653787, + -0.013737494, + -0.020020952, + -0.026721513, + 0.003582378, + 0.0043156724, + 0.008079692, + 0.0014716341, + 0.008079692, + 0.002578303, + 0.0019072378, + 0.020693699, + 0.017706702, + 0.0112550575, + 0.005775533, + 0.013461668, + -0.01710123, + -0.0072051208, + -0.002921404, + 0.012129629, + 0.011678888, + 0.01691286, + -0.023842156, + -0.024286168, + 0.029520141, + 0.04106448, + 0.021245351, + -0.010003748, + 0.04701156, + -0.009526098, + -0.009230089, + 0.001309334, + 0.01614593, + 0.0010965776, + 0.032534048, + -0.009660647, + -0.006313731, + -0.0038682956, + 0.03880405, + -0.01683213, + -0.0013900636, + 0.004460313, + 0.01183362, + -0.008469885, + -0.020518785, + -0.004039846, + -0.004167668, + -0.0129369255, + 0.0053517027, + 0.010508309, + 0.0006235524, + 0.02938559, + 0.026748423, + 0.022429386, + -0.047872677, + -0.010071023, + -0.018096896, + -0.0019358296, + -0.01813726, + -0.009647192, + -0.0047327755, + 0.024689816, + -0.0039187516, + -0.006414643, + -0.027663358, + 0.021164622, + 0.015580822, + -0.00594372, + -0.004779868, + 0.0035790142, + 0.0028877666, + 0.010999414, + 0.0112550575, + -0.000038788072, + -0.0018315538, + -0.034229368, + 0.013239662, + -0.026398594, + 0.014975349, + -0.029681599, + -0.009620283, + -0.00480005, + 0.015190628, + -0.032238036, + -0.0005697326, + 0.019576939, + 0.014719705, + 0.014127688, + -0.0027111706, + 0.021339536, + -0.01305802, + 0.013502033, + -0.03207658, + 0.01119451, + -0.0048673246, + 0.010858137, + 0.0038279307, + 0.007292578, + 0.023411596, + -0.009479006, + 0.009115722, + -0.004359401, + -0.015123353, + 0.0048101414, + -0.013286754, + 0.022617755, + 0.008624617, + 0.00739349, + 0.013044565, + 0.0025127102, + -0.007783683, + 0.008557342, + 0.022402477, + -0.02401707, + 0.02018241, + 0.032964606, + 0.01364331, + 0.0067510167, + -0.01903874, + -0.030569626, + -0.031134732, + -0.014612066, + 0.005476161, + 0.016119018, + 0.018352538, + -0.0049110535, + 0.016374663, + -0.0024925277, + -0.011187783, + 0.011853803, + -0.012930198, + 0.014558246, + 0.004463677, + 0.004103757, + -0.0125870975, + -0.6824346, + -0.027770998, + -0.01186053, + -0.011450155, + -0.011820165, + 0.025241468, + 0.014100778, + 0.0026489415, + -0.011389608, + -0.0132194795, + -0.0073800352, + 0.018554363, + 0.007595314, + 0.0053113378, + -0.012963835, + -0.0022335202, + 0.0064684628, + 0.016859042, + -0.0034747384, + 0.024864731, + -0.014961895, + 0.020720609, + 0.0075751315, + -0.004742867, + 0.012714919, + 0.006656832, + 0.0018197808, + -0.011954715, + -0.010952322, + 0.004921145, + -0.030650355, + 0.0035151034, + 0.0072185756, + -0.018904192, + 0.043970745, + 0.0144775165, + -0.019711489, + 0.01462552, + 0.012573642, + 0.03657053, + 0.015917195, + 0.0054257046, + 0.024676362, + -0.0050893314, + -0.010938867, + 0.010501581, + 0.013858589, + 0.0002537518, + 0.017303053, + -0.01949621, + -0.0076020416, + -0.03172675, + -0.017854707, + -0.01079759, + 0.007050389, + -0.003632834, + 0.01792198, + 0.006290185, + 0.007736591, + 0.014517881, + 0.0085909795, + 0.0049245083, + -0.02973542, + -0.014033503, + 0.0170205, + -0.008765894, + -0.015378998, + -0.0075145843, + 0.009384821, + 0.01358949, + 0.00038619884, + 0.017477969, + 0.0042248513, + -0.009613555, + 0.031296194, + 0.012149812, + 0.010030658, + 0.002450481, + 0.0040196637, + -0.0056073465, + 0.011766345, + -0.008860079, + -0.025308743, + 0.0060513597, + 0.037458554, + -0.024985826, + 0.0025244833, + -0.005758715, + 0.009021537, + 0.002909631, + 0.01903874, + 0.037862204, + -0.0052642454, + -0.011954715, + -0.022954129, + 0.02508001, + -0.01680522, + 0.0006550874, + 0.0201555, + -0.021218441, + 0.010602494, + -0.003266187, + -0.00032207766, + -0.005829353, + 0.007178211, + 0.022456296, + -0.017558698, + 0.015190628, + 0.014100778, + -0.022563936, + -0.009660647, + -0.0058259894, + -0.028820483, + -0.010030658, + -0.013132022, + -0.026358228, + 0.011685616, + -0.011187783, + 0.01745106, + -0.011322333, + 0.009748105, + -0.0151098985, + 0.022375567, + -0.005122969, + -0.010804318, + -0.0015313404, + -0.011699071, + -0.014329512, + 0.0045410427, + 0.0022402476, + -0.008227697, + 0.02976233, + 0.026842607, + -0.005499707, + 0.035251945, + 0.009458823, + -0.01130215, + -0.011732709, + -0.0056342566, + -0.028793573, + -0.013690402, + -0.0047966866, + 0.006949477, + -0.01568846, + -0.0065996484, + -0.03910006, + -0.013286754, + -0.015217538, + -0.01130215, + 0.014571701, + -0.006132089, + -0.013676947, + -0.025564387, + -0.009135905, + -0.0075011295, + -0.010467944, + 0.009674102, + -0.017303053, + -0.014316057, + -0.012196904, + 0.027905548, + 0.007709681, + -0.021352991, + -0.011403062, + -0.011154146, + -0.014046958, + 0.018446723, + 0.0028120826, + -0.013481851, + -0.015621186, + -0.0059100827, + 0.00023293866, + 0.0025648482, + 0.0011251695, + 0.020411145, + -0.010420851, + 0.013461668, + -0.0031097732, + -0.0031013638, + -0.0023478873, + -0.009956656, + -0.010817773, + -0.026923336, + -0.020855159, + 0.018783098, + -0.0074203997, + 0.015163718, + 0.016737947, + -0.019940222, + 0.0030727722, + 0.008503523, + 0.005516526, + 0.0010427579, + -0.0035420132, + -0.0060513597, + 0.012910016, + -0.0022654757, + -0.00003250735, + 0.0034848296, + 0.013468396, + 0.026075676, + 0.0067409254, + 0.014531336, + 0.028255375, + 0.0007866936, + -0.026210224, + -0.000914095, + -0.012903288, + 0.04830324, + 0.008046054, + 0.010111388, + -0.017383784, + -0.026936792, + 0.012775466, + -0.0061690905, + 0.033368252, + 0.011974897, + -0.0019005104, + -0.00808642, + -0.0031602292, + 0.013730767, + -0.01584992, + -0.006895657, + 0.018877283, + -0.027851727, + -0.0058461716, + 0.0052137896, + 0.023129044, + 0.0063843695, + -0.032507136, + -0.011820165, + 0.008046054, + -0.0014724751, + 0.016105564, + -0.006697197, + -0.0020064681, + 0.0010721906, + -0.010259393, + 0.03412173, + -0.0027548992, + 0.01917329, + 0.022308292, + 0.027824817, + -0.02146063, + -0.0172896, + -0.011059961, + 0.024030523, + 0.0036025604, + -0.012573642, + 0.009909564, + -0.019509664, + -0.0019795583, + -0.00085817295, + -0.011100326, + 0.017666338, + -0.028336106, + 0.011228148, + 0.007918233, + 0.0108312275, + 0.027932458, + 0.012842741, + -0.009795197, + 0.015123353, + -0.000015347041, + -0.017007045, + 0.020747518, + 0.010145025, + 0.008934081, + -0.009465551, + -0.012439093, + 0.011880713, + -0.000118887016, + -0.009721194, + 0.005015329, + 0.015136808, + -0.000084251056, + -0.010124843, + -0.009304091, + 0.013105112, + 0.029116493, + -0.01789507, + -0.021689365, + 0.0021141076, + 0.032910787, + -0.00962701, + -0.034686837, + -0.01481389, + 0.0020905614, + -0.0096001, + 0.0035487406, + -0.0001552574, + 0.03234568, + -0.004941327, + -0.0047159567, + -0.0045645884, + -0.0053416113, + 0.033475894, + -0.034283187, + -0.02154136, + 0.007090754, + 0.006054723, + -0.008368974, + -0.0035285582, + -0.025941126, + 0.04970255, + -0.0037606559, + -0.018971467, + 0.00011405165, + 0.0009670739, + -0.009620283, + -0.006629922, + 0.0003853579, + -0.012466002, + 0.013656765, + 0.0006336436, + 0.015177174, + -0.009331001, + 0.01478698, + 0.024716726, + -0.021608636, + -0.009526098, + -0.0069629317, + -0.021877734, + 0.011584704, + 0.096014455, + 0.020115137, + 0.022833034, + -0.00030084405, + 0.030677265, + 0.004904326, + -0.015634641, + -0.009801924, + 0.012008535, + 0.010481399, + -0.007649134, + -0.038050573, + 0.0012521504, + 0.01079759, + -0.012910016, + -0.0036765626, + -0.022927219, + -0.0065458287, + 0.021285716, + -0.011638524, + -0.0060849967, + -0.0024302986, + 0.0022637937, + 0.003468011, + 0.014208417, + -0.010461217, + 0.029331772, + 0.0075751315, + 0.011557794, + 0.010441034, + 0.0061455444, + 0.014181508, + 0.0076424065, + 0.011826893, + -0.0037202912, + -0.01130215, + 0.022644665, + -0.005092695, + 0.014221872, + -0.017625973, + 0.019106016, + 0.003834658, + 0.009028265, + -0.0023747971, + 0.0315922, + -0.025833486, + -0.012714919, + 0.016751401, + -0.0034646473, + -0.017464513, + 0.026519688, + 0.016024834, + -0.024003614, + -0.017356874, + -0.0019543301, + 0.011181056, + 0.0068250187, + -0.00026510438, + -0.0001514732, + 0.017114684, + -0.019765308, + -0.028712844, + 0.0039591165, + -0.01566155, + -0.012324726, + -0.028389925, + 0.002159518, + -0.011880713, + -0.013172387, + -0.025456747, + -0.0022419295, + -0.019859493, + -0.007548222, + 0.008927354, + 0.018043075, + -0.0060244496, + 0.020626424, + 0.014692795, + 0.013690402, + 0.027797908, + 0.0032207766, + -0.014221872, + -0.008490068, + -0.012647645, + -0.01584992, + 0.01693977, + 0.024743635, + -0.017733611, + -0.010737043, + 0.024649452, + 0.016253568, + 0.0005579596, + 0.015473182, + -0.007871141, + -0.012788922, + 0.0016473893, + 0.007036934, + 0.021675909, + -0.018769642, + -0.009546281, + 0.04098375, + -0.009822107, + 0.003126592, + -0.0014968622, + 0.025779666, + -0.008994628, + 0.005193607, + 0.0051633334, + -0.014168053, + -0.023209773, + 0.044751134, + -0.031242372, + 0.025187649, + 0.025201105, + 0.0051263324, + 0.018702367, + -0.004726048, + 0.024743635, + -0.018769642, + 0.0058058067, + -0.01802962, + -0.03248023, + 0.0063070036, + 0.037216365, + -0.012277634, + 0.015405907, + 0.022617755, + -0.014006593, + -0.0020047862, + -0.008348791, + 0.021070438, + 0.028416835, + -0.014046958, + -0.012136357, + -0.00019478129, + -0.0039927536, + -0.0050489665, + 0.011557794, + -0.019590395, + -0.005082604, + -0.010723588, + -0.00507924, + 0.01704741, + -0.010071023, + -0.025672028, + -0.020572605, + -0.00022473956, + -0.0038582042, + 0.0015616141, + 0.03425628, + -0.0029819512, + 0.012815831, + -0.0046184086, + 0.00070680486, + -0.037862204, + -0.010649585, + 0.0037942934, + -0.034283187, + 0.002781809, + 0.021366445, + 0.027905548, + -0.0016145929, + 0.019711489, + -0.0048875073, + -0.006771199, + -0.00039986402, + 0.0074203997, + -0.00041079617, + -0.018635092, + 0.010441034, + 0.01922711, + 0.011470337, + -0.010615949, + -0.005778897, + -0.015553911, + 0.012042172, + 0.0047495943, + -0.008220969, + -0.0033418708, + -0.025228014, + -0.018460179, + -0.017114684, + 0.014571701, + 0.0043257633, + -0.0040196637, + 0.0049245083, + 0.029224131, + -0.004534315, + 0.033314433, + -0.005139787, + 0.014181508, + -0.0036799263, + 0.005957175, + 0.019240566, + -0.0011066688, + -0.012062354, + 0.002120835, + 0.005183516, + 0.012190176, + 0.038238943, + 0.01590374, + -0.0019795583, + -0.018608183, + 0.023048313, + -0.0031854573, + 0.018123806, + 0.0056208014, + -0.0056611663, + 0.01843327, + -0.021285716, + -0.0025766212, + -0.016213203, + -0.023236683, + -0.01933475, + -0.011295423, + 0.011793256, + 0.0017222324, + 0.024339987, + -0.011059961, + -0.009048448, + -0.010676496, + 0.009162814, + 0.013939318, + 0.0007496925, + 0.022792669, + 0.023707606, + -0.012082537, + -0.016576488, + -0.010911957, + 0.009297364, + -0.021837369, + 0.012230542, + 0.035870872, + -0.005462706, + -0.00909554, + -0.0059134467, + 0.003239277, + -0.0001609337, + -0.014235327, + 0.026506234, + 0.012546732, + 0.0048202327, + -0.0028793574, + 0.0012672872, + 0.002388252, + 0.026519688, + -0.026869517, + -0.0116721615, + -0.02736735, + -0.006744289, + -0.0014977031, + 0.005640984, + -0.022052648, + 0.03883096, + -0.0025093465, + -0.010286302, + 0.004265216, + -0.019792218, + -0.0004406493, + -0.0035016483, + 0.008584253, + 0.0039187516, + -0.004140758, + -0.008624617, + -0.0015128399, + -0.0059672664, + -0.006172454, + 0.018998377, + -0.015096444, + 0.021070438, + -0.010932139, + -0.005893264, + 0.0008152853, + -0.025833486, + 0.006566011, + 0.018917646, + 0.013515488, + -0.0024656178, + -0.015230993, + -0.010555401, + 0.0015355451, + 0.009061903, + -0.010609221, + 0.008947535, + -0.013071475, + -0.009916292, + -0.00256653, + -0.021137713, + 0.018796552, + -0.0023344322, + -0.020101681, + -0.013125295, + -0.008436248, + 0.029116493, + -0.015015714, + 0.009976839, + 0.021985373, + 0.012990746, + -0.0046520457, + 0.011160874, + 0.0006151431, + -0.0057856245, + -0.011140691, + 0.0047933226, + -0.008712074, + -0.0099902935, + 0.028955033, + -0.027636448, + -0.002921404, + -0.0034141913, + 0.009337729, + 0.0067812903, + 0.0065021003, + -0.0019021922, + 0.032614775, + -0.0035588318, + 0.0018567818, + -0.0031669566, + -0.011477064, + 0.020464964, + -0.0068889298, + -0.002312568, + 0.006730834, + -0.004369492, + 0.009727922, + 0.017706702, + -0.012876378, + -0.0044704042, + -0.016415028, + -0.019698033, + -0.0034326918, + 0.015594277, + -0.016065199, + -0.025577843, + -0.012883106, + 0.00928391, + -0.0071042087, + 0.02962778, + -0.015944105, + -0.0077029536, + -0.0011739436, + 0.003177048, + 0.010387214, + -0.0055266167, + -0.006592921, + -0.032641686, + -0.015836466, + 0.0037438374, + -0.029816149, + -0.006710652, + -0.01829872, + 0.023546146, + 0.0071983933, + -0.026465869, + -0.005116241, + 0.01486771, + -0.017975802, + 0.015352087, + 0.00008703665, + 0.01707432, + 0.020559149, + 0.008712074, + 0.015500092, + 0.022779215, + 0.009801924, + 0.021164622, + -0.03923461, + -0.012560187, + 0.018635092, + -0.015163718, + 0.0077164085, + 0.006340641, + -0.030246707, + -0.0015860011, + 0.01677831, + 0.010938867, + 0.0038178395, + -0.0014884528, + -0.024703272, + -0.00784423, + -0.02704443, + -0.014141142, + -0.02499928, + 0.012614007, + -0.00073623756, + -0.019267475, + -0.0015304995, + 0.010595766, + -0.017868161, + -0.012614007, + -0.005462706, + -0.0030626808, + 0.00079215964, + 0.0024336623, + -0.0018180988, + 0.016078655, + 0.017639427, + -0.050913494, + -0.0043762196, + 0.004080211, + 0.0028154464, + 0.0015473182, + -0.007857685, + -0.010030658, + -0.007063844, + -0.004964873, + -0.025968036, + -0.009337729, + -0.0027616266, + -0.017545242, + 0.0024740272, + -0.028847393, + -0.0017045728, + -0.03401409, + 0.0032813237, + -0.026479324, + 0.0007740796, + -0.012143084, + 0.011066689, + 0.01481389, + -0.027582629, + -0.017787432, + -0.0137105845, + -0.01590374, + -0.016334299, + 0.0070571164, + 0.007265668, + -0.014423696, + -0.016267024, + 0.00970774, + -0.025362564, + -0.03396027, + 0.00035130008, + 0.0040331185, + -0.0065727388, + 0.004127303, + 0.23917502, + -0.022119923, + 0.004927872, + 0.021527905, + 0.0017693248, + 0.015056078, + 0.0343101, + -0.018608183, + -0.010737043, + -0.00068998616, + -0.019603848, + 0.010528491, + -0.005398795, + 0.007904777, + -0.013912409, + -0.014881165, + -0.035817053, + -0.037593104, + -0.019092562, + -0.013246389, + 0.0009098904, + -0.008839896, + -0.006158999, + -0.008079692, + 0.028524475, + 0.0099902935, + -0.015163718, + -0.014046958, + 0.020908978, + 0.022079557, + 0.0055333446, + 0.0032527319, + -0.0054088864, + 0.03662435, + 0.00041668268, + -0.006438189, + -0.0123045435, + -0.027609538, + 0.007050389, + 0.012943653, + -0.025120374, + -0.004100393, + -0.02390943, + -0.008153694, + -0.010178663, + 0.016240114, + -0.0063843695, + -0.0023478873, + 0.019846037, + 0.014100778, + -0.019671123, + -0.010676496, + 0.03891169, + 0.031672932, + 0.0010461217, + -0.012398728, + 0.010017203, + 0.01486771, + 0.009230089, + -0.010017203, + -0.018648548, + 0.01712814, + 0.00797878, + 0.019321295, + -0.01710123, + -0.0034579197, + -0.044159114, + 0.022119923, + 0.00068115635, + 0.005462706, + 0.007232031, + -0.013602945, + -0.009808652, + -0.01313875, + -0.032318767, + -0.014585156, + 0.023330867, + 0.010609221, + 0.00792496, + 0.035440315, + -0.0043728556, + 0.0065727388, + 0.016119018, + -0.009734649, + -0.0036361977, + -0.02148754, + 0.023425052, + -0.0016532758, + -0.008476613, + -0.0063473685, + 0.0029129947, + 0.004204669, + -0.021649, + -0.013925863, + 0.024864731, + 0.013313664, + 0.0054862523, + 0.03406791, + 0.001156284, + 0.0027246254, + -0.024434172, + 0.031107822, + 0.000033584794, + -0.010992686, + -0.015271358, + 0.00368329, + 0.012614007, + -0.0041104844, + -0.010488126, + -0.012640917, + -0.009815379, + -0.03172675, + -0.00281881, + -0.0016448665, + 0.006394461, + 0.01031994, + 0.012990746, + -0.0030794996, + 0.0033855995, + -0.012741829, + -0.006895657, + 0.0025143921, + -0.0054896157, + 0.0096404655, + -0.0048706885, + 0.0001105828, + -0.0038043845, + 0.016132474, + 0.00092334533, + -0.03686654, + 0.014329512, + -0.014746615, + 0.017989255, + -0.004164304, + -0.034659926, + 0.04109139, + 0.0022856581, + -0.01571537, + -0.019819127, + -0.0067779263, + 0.015029169, + -0.015096444, + 0.0066097397, + -0.0019896494, + -0.024905095, + -0.006138817, + 0.01925402, + 0.000007647242, + -0.0005571186, + -0.008617889, + -0.0030895907, + -0.011584704, + -0.0065391012, + -0.041925594, + 0.022981038, + -0.019294385, + -0.0076625887, + -0.026627328, + -0.017733611, + 0.017881617, + -0.044051476, + -0.0055568907, + 0.021931553, + -0.014692795, + -0.020962797, + 0.013925863, + -0.17523715, + 0.02031696, + 0.019119471, + -0.020088227, + 0.0010208937, + 0.0092906365, + 0.010447761, + 0.0028675843, + 0.0021443812, + 0.0018887373, + 0.012533277, + -0.0027347167, + -0.024461083, + 0.0055568907, + 0.0012311271, + -0.024784, + -0.0048740525, + -0.00027057045, + 0.0037101998, + -0.007090754, + 0.0117461635, + -0.036139973, + 0.010030658, + -0.023317412, + -0.0060244496, + 0.010938867, + -0.013562581, + 0.021635545, + -0.017168505, + -0.01598447, + -0.0063440045, + -0.0011974897, + 0.028820483, + 0.0030172705, + 0.0072723953, + 0.010017203, + -0.009532825, + -0.009230089, + -0.006350732, + 0.030784905, + 0.012291089, + 0.016253568, + -0.003811112, + 0.008409338, + 0.005038875, + 0.029089581, + 0.025281833, + 0.0006916681, + 0.007911505, + 0.004507405, + 0.028147737, + -0.01819108, + 0.0026523052, + -0.008812986, + -0.009775015, + -0.0043661282, + 0.0012269224, + 0.017370328, + 0.0007459083, + -0.014800435, + -0.034740657, + -0.029869968, + -0.007837503, + -0.010447761, + 0.0036092878, + -0.027582629, + -0.019698033, + 0.0075549493, + -0.0135693075, + 0.0100642955, + -0.016253568, + -0.033583533, + -0.0055871643, + -0.0037572922, + 0.0058259894, + 0.014100778, + -0.0054929797, + 0.005321429, + 0.00027288301, + -0.00070554344, + -0.014316057, + 0.030219797, + -0.0029264495, + -0.005536708, + -0.0049312357, + 0.0045645884, + -0.005015329, + 0.020586058, + -0.009849017, + -0.017383784, + 0.0044502215, + -0.02047842, + -0.006428098, + -0.0012101037, + 0.011342515, + 0.022927219, + -0.0052507906, + 0.022671575, + -0.005859627, + -0.0067846538, + 0.0068014725, + -0.0071042087, + -0.015863376, + 0.022631211, + 0.028766664, + 0.030327436, + 0.01481389, + -0.0040499372, + 0.0057217134, + 0.014437151, + -0.024380352, + -0.025174195, + 0.015190628, + 0.035063576, + -0.020411145, + 0.0042853984, + 0.029358681, + -0.014612066, + 0.016482303, + -0.0029634507, + 0.057264227, + -0.0015725462, + 0.005499707, + 0.015325177, + -0.015607731, + -0.001993013, + -0.09219325, + -0.022456296, + 0.022254473, + 0.009297364, + -0.006798109, + 0.017410694, + -0.0016179567, + -0.0022133377, + 0.0012656053, + 0.013105112, + -0.010656313, + -0.003060999, + 0.026761876, + -0.018756187, + 0.04327109, + 0.0029029034, + -0.017612517, + -0.0064617353, + -0.020693699, + 0.023115588, + -0.0070436615, + 0.0045780437, + -0.0024992554, + -0.008059509, + -0.0021141076, + -0.0038481131, + -0.019846037, + 0.018554363, + 0.007945143, + 0.020868612, + 0.0007084867, + -0.00006837843, + 0.014033503, + -0.006418007, + -0.0012000125, + 0.012802376, + -0.014221872, + 0.015378998, + 0.024313077, + -0.015096444, + -0.014854254, + 0.0013042883, + 0.0204246, + -0.007783683, + -0.005577073, + -0.00027162163, + -0.0058461716, + 0.006969659, + 0.006387733, + -0.013858589, + -0.013367483, + -0.008974445, + 0.001727278, + -0.0038481131, + 0.0042853984, + -0.010723588, + 0.027770998, + 0.016159384, + -0.035063576, + -0.010925412, + -0.0032964605, + 0.007124391, + -0.021608636, + 0.016051745, + 0.017558698, + 0.0012075809, + -0.02992379, + -0.00017806773, + 0.0039523887, + -0.028981943, + -0.012842741, + 0.0074809473, + -0.007353125, + -0.007736591, + -0.01568846, + 0.00011720515, + -0.0069629317, + 0.009196452, + 0.006175818, + -0.0023462053, + -0.035225034, + -0.023155954, + -0.0025446657, + -0.02641205, + 0.02595458, + 0.035386495, + 0.0014623839, + -0.015405907, + 0.016374663, + -0.017222324, + -0.0121699935, + 0.010387214, + 0.021191532, + -0.022981038, + -0.018123806, + 0.021352991, + 0.022994494, + -0.004524224, + -0.017666338, + 0.024609087, + -0.024299623, + 0.0057250774, + -0.08847969, + 0.011006142, + 0.009189725, + -0.00853716, + 0.0039086603, + -0.028120827, + 0.017706702, + -0.0034511923, + 0.012768739, + 0.0062060915, + -0.026802242, + -0.0137778595, + 0.008187331, + 0.0024185255, + -0.03643598, + -0.026990611, + 0.022227563, + 0.01590374, + 0.016576488, + 0.017773977, + -0.013347302, + 0.0047933226, + -0.0010007112, + 0.0072051208, + -0.021016618, + 0.006734198, + 0.009055175, + 0.017208869, + -0.004480495, + 0.0034781022, + 0.029035762, + -0.03654362, + -0.01077068, + 0.015419362, + -0.011981625, + -0.03215731, + -0.015271358, + 0.030354347, + -0.0047529577, + 0.044239845, + -0.0046049533, + -0.006172454, + 0.028578294, + 0.005001874, + -0.005751987, + -0.021420266, + 0.016576488, + 0.011692343, + 0.026654238, + 0.008826441, + -0.003912024, + 0.026290955, + -0.016697582, + 0.0027919002, + -0.01617284, + -0.011927805, + 0.013239662, + 0.016267024, + -0.0005323111, + -0.023734516, + 0.024891641, + -0.00015820067, + -0.004742867, + 0.019711489, + 0.03624761, + -0.00006328027, + -0.015325177, + -0.0032039578, + -0.00022852376, + -0.01462552, + -0.024757091, + 0.0038043845, + 0.029331772, + 0.0055299806, + 0.010642858, + -0.00077702285, + 0.011174329, + 0.0024084344, + -0.020088227, + 0.017181959, + 0.01856782, + -0.014100778, + -0.032883875, + 0.02606222, + 0.032722417, + 0.0004662978, + -0.0058663543, + -0.006552556, + -0.00731276, + 0.03248023, + 0.0101988455, + 0.015971014, + 0.0021763367, + -0.011288695, + 0.011470337, + 0.017060865, + -0.00092418626, + -0.03584396, + -0.006996569, + 0.03673199, + -0.0008644799, + -0.004379583, + -0.008705347, + -0.026802242, + -0.04087611, + 0.008638072, + -0.015446272, + -0.03178057, + 0.008335336, + 0.02595458, + 0.010461217, + -0.0017390511, + -0.00077954563, + 0.018984921, + 0.0014321102, + 0.0042080325, + 0.010367032, + -0.018608183, + -0.016441938, + 0.0003891421, + 0.01566155, + 0.03616688, + 0.00851025, + -0.026317865, + 0.02063988, + -0.0029701781, + 0.013979684, + -0.019778762, + 0.0040331185, + 0.013925863, + 0.006606376, + -0.018608183, + -0.008066237, + -0.021649, + -0.0040331185, + -0.0031854573, + -0.016509213, + 0.018258354, + -0.018527454, + 0.037377827, + 0.010145025, + -0.028551385, + -0.005338248, + 0.0074136723, + 0.023317412, + 0.0075751315, + 0.03624761, + -0.02273885, + -0.0121699935, + 0.02497237, + 0.000634905, + 0.0033469165, + -0.0294125, + -0.023223227, + 0.0053819763, + -0.018608183, + -0.0026321227, + -0.01726269, + -0.007783683, + 0.03802366, + -0.0033485985, + 0.0053819763, + 0.0104141245, + -0.024649452, + -0.007063844, + 0.023317412, + 0.015056078, + 0.0021948372, + -0.021770094, + 0.014437151, + 0.010367032, + -0.0074002175, + -0.025376018, + 0.022644665, + 0.0027885365, + -0.01699359, + -0.014840799, + 0.030300526, + -0.0006176659, + -0.028928123, + 0.023815244, + -0.02957396, + -0.033395164, + 0.025066555, + -0.015917195, + -0.022510115, + -0.02404398, + -0.01063613 + ] + }, + { + "object": "embedding", + "index": 7, + "embedding": [ + 0.024549589, + -0.006144328, + -0.0028832944, + -0.013314444, + -0.0069968407, + 0.013993681, + -0.026268475, + -0.008857813, + -0.020072164, + -0.013064927, + 0.022997046, + 0.018325554, + 0.0039887885, + -0.021319743, + -0.0155808795, + -0.009024157, + 0.04932097, + -0.0061477935, + 0.014118439, + -0.011817348, + -0.004775456, + -0.005073489, + 0.0033060852, + 0.0011115585, + 0.008712262, + -0.009516258, + 0.008746917, + -0.013238203, + -0.0026129854, + -0.013737234, + -0.003250637, + -0.0150541235, + -0.025783306, + -0.0341005, + -0.020987056, + -0.01412537, + -0.01635715, + -0.0047823875, + 0.0049002143, + -0.0023201508, + 0.012392621, + -0.009620222, + -0.004837835, + 0.0061270003, + -0.009661809, + 0.038453165, + -0.0066468255, + -0.013245134, + -0.025603099, + 0.0003155769, + 0.02205443, + 0.0023704006, + -0.020113751, + -0.02108409, + -0.026074408, + -0.026254613, + -0.018256243, + 0.03276975, + 0.0028763635, + -0.018588932, + -0.0022144532, + -0.0104658045, + 0.0045952504, + 0.013210478, + 0.0078112325, + -0.01461054, + -0.009620222, + 0.005371522, + -0.017064113, + -0.0048828865, + 0.011172766, + 0.005461625, + 0.0011860667, + -0.02136133, + 0.022484152, + -0.0065393946, + -0.0055967793, + 0.0025783305, + -0.01183121, + 0.005752727, + 0.026434818, + -0.014305576, + -0.007617165, + 0.021444501, + -0.0032610337, + 0.0035937214, + -0.005260626, + 0.02991418, + -0.012344104, + 0.007825094, + 0.015123433, + 0.019046377, + -0.016066048, + -0.0027931915, + -0.031910308, + -0.0038848233, + -0.011706453, + 0.04502375, + 0.016897768, + -0.0039160126, + 0.014035267, + 0.006414637, + -0.022373255, + -0.022109877, + -0.006972582, + -0.0012137907, + -0.00049383345, + 0.0022387118, + 0.008365712, + 0.010382632, + -0.0013385486, + 0.033296507, + 0.01935134, + -0.05838671, + 0.00013656229, + -0.040144328, + -0.010410356, + 0.0024812967, + -0.011644074, + -0.036484763, + 0.023149528, + 0.033989605, + 0.010548976, + 0.0018107228, + 0.027973501, + -0.0084072985, + -0.010590562, + -0.03493222, + 0.0013082256, + 0.01926817, + 0.01092325, + 0.011789625, + 0.029110184, + 0.014915504, + -0.0037947204, + 0.005943329, + -0.027848743, + 0.013155031, + -0.022345532, + -0.015622465, + -0.007894404, + 0.03166079, + -0.020127613, + 0.0046160435, + 0.011054939, + 0.013064927, + 0.005874019, + 0.012697585, + 0.017868107, + -0.0040061157, + 0.03263113, + -0.011914383, + 0.007021099, + -0.0015586078, + 0.005655693, + 0.025007034, + -0.004896749, + 0.031078586, + 0.005558659, + 0.0073329937, + 0.005246764, + 0.006525533, + 0.012725309, + 0.0008650749, + 0.019947406, + 0.002574865, + 0.0043006833, + 0.02922108, + 0.007346856, + -0.010514321, + 0.0050076446, + 0.023856489, + -0.034849048, + 0.018769138, + 0.006986444, + 0.03590256, + 0.016856182, + -0.013681786, + -0.026753645, + -0.0056348997, + -0.00897564, + 0.014776884, + 0.020432577, + 0.01996127, + -0.01447192, + 0.022151463, + 0.022802977, + -0.0017474773, + -0.008116197, + -0.01962858, + -0.0022560393, + 0.0153175015, + 0.02999735, + -0.014291714, + -0.66404486, + -0.0057042097, + -0.010278667, + 0.011359903, + 0.0086984, + 0.016523495, + 0.010847009, + 0.013064927, + -0.019531546, + -0.013155031, + -0.006109673, + -0.012572827, + -0.004751198, + -0.000104181534, + -0.0065844464, + -0.023468353, + 0.005063093, + -0.01718887, + 0.009446948, + 0.017216595, + 0.0065324637, + 0.013300582, + 0.007755785, + -0.0040234434, + 0.00036907554, + 0.011477729, + 0.012468862, + -0.023343595, + -0.003002854, + 0.012115381, + -0.02247029, + 0.033712365, + -0.023204975, + -0.02894384, + 0.013016411, + 0.011456937, + -0.010313322, + 0.038591787, + 0.024826828, + 0.050651718, + -0.0024067883, + 0.005867088, + 0.010874732, + 0.0046437676, + -0.017507697, + -0.011117318, + 0.027266538, + -0.014291714, + 0.0006905005, + 0.0030704313, + 0.01064601, + -0.040809706, + -0.00018410459, + 0.013758027, + 0.03069045, + 0.0009781368, + 0.03673428, + 0.009211293, + 0.0022543066, + 0.008920192, + 0.0025384773, + -0.027807156, + -0.003569463, + -0.0084696775, + -0.006882479, + 0.0020637042, + -0.0155808795, + -0.011297524, + -0.0020637042, + -0.019739477, + -0.011630211, + 0.03437774, + -0.018006727, + -0.006702273, + 0.0109994905, + 0.0060576904, + 0.011678728, + -0.010119255, + -0.014929365, + -0.0026112527, + -0.021278158, + -0.01732749, + -0.034571808, + 0.009571706, + 0.007076547, + -0.01691163, + -0.031300377, + 0.017590867, + 0.0293597, + -0.015539293, + 0.016897768, + 0.021735603, + 0.009828152, + -0.0075686476, + -0.0016062583, + 0.0058636228, + -0.007880542, + -0.014028336, + 0.0028226483, + -0.0059052086, + 0.010174702, + -0.004924473, + 0.0062725516, + 0.010410356, + 0.02894384, + -0.002160738, + -0.016246255, + 0.020765264, + 0.025797168, + -0.013536235, + -0.0020844971, + -0.012004485, + -0.01940679, + -0.006546326, + -0.0024691673, + -0.028777495, + 0.023981247, + -0.0029370096, + 0.032326166, + -0.0023149527, + 0.008656814, + -0.014804607, + 0.010611355, + -0.021042503, + 0.0034187138, + 0.02366242, + 0.0004886352, + -0.01774335, + -0.0007715065, + 0.008372643, + 0.0007702069, + 0.016371014, + 0.0069829784, + -0.010687596, + -0.0006029967, + 0.012018347, + 0.020155337, + -0.011560901, + 0.012441138, + -0.008656814, + -0.01663439, + -0.013771889, + -0.01002222, + 0.004914076, + -0.006764652, + -0.034072775, + -0.014097646, + -0.009446948, + -0.035375804, + -0.00031406077, + -0.0009971971, + 0.011886658, + -0.01642646, + 0.013695648, + 0.010237081, + -0.011581695, + 0.016759148, + -0.014499644, + -0.029831007, + -0.0019285496, + 0.015636327, + -0.0038986853, + -0.012565896, + -0.00078017026, + 0.0029768627, + -0.0051947813, + 0.0058705537, + 0.019365203, + 0.004775456, + -0.037760068, + 0.01231638, + -0.013071858, + -0.01454123, + 0.021042503, + 0.006511671, + 0.009578637, + 0.013203547, + -0.007956783, + -0.002713485, + 0.008733055, + 0.019794924, + -0.017632455, + -0.02852798, + -0.0075270617, + 0.010555907, + -0.005378453, + 0.011505454, + 0.017798798, + -0.02380104, + 0.011713384, + 0.0137233725, + 0.010521252, + -0.010250943, + -0.003437774, + -0.0049903174, + 0.0011427479, + 0.00028265468, + 0.021319743, + -0.011983693, + 0.03193803, + 0.020072164, + 0.0014355825, + 0.02156926, + 0.0067854454, + 0.018783, + -0.039229438, + -0.010292529, + -0.007838957, + 0.03179941, + 0.019254306, + 0.00025428092, + -0.019808786, + -0.015081847, + 0.0009486801, + -0.000596932, + 0.02037713, + -0.0029959232, + 0.0058948123, + -0.004584854, + -0.0042209765, + 0.016509634, + -0.012011416, + -0.015830396, + 0.012940169, + -0.020501886, + 0.0144580575, + 0.029831007, + 0.03451636, + 0.012891653, + -0.035569873, + -0.019171136, + 0.008691469, + -0.005960657, + -0.003912547, + -0.0027308124, + -0.0006081949, + 0.023191113, + -0.02330201, + 0.01551157, + 0.009550912, + 0.033241056, + 0.017798798, + 0.026351647, + -0.008199369, + -0.00897564, + -0.022400979, + 0.0058151055, + 0.012718378, + -0.0095370505, + 0.01488778, + -0.011935175, + 0.015969016, + 0.008019162, + 0.01260055, + 0.0018211192, + 0.0033355418, + 0.019794924, + 0.007173581, + 0.018450312, + 0.02525655, + -0.008871675, + -0.011318317, + -0.0052710227, + 0.013425339, + 0.00077627157, + -0.008441953, + 0.007242891, + -0.028417084, + -0.016925493, + -0.019101825, + -0.014763022, + -0.010244012, + 0.024799105, + -0.004896749, + -0.003957599, + -0.02999735, + -0.01635715, + -0.008317195, + 0.0023028234, + 0.0029647336, + -0.017369077, + -0.045633677, + 0.003624911, + 0.021056365, + -0.01134604, + -0.010680665, + -0.023884213, + -0.0038189788, + -0.0040996843, + 0.0023738663, + 0.0056660892, + 0.020862298, + -0.011124249, + -0.004307614, + 0.009641016, + -0.028236877, + 0.032326166, + -0.011713384, + 0.002968199, + -0.0034412395, + -0.0065775155, + -0.02357925, + -0.0079429215, + -0.027141782, + 0.027918052, + 0.036512487, + -0.018796861, + -0.04216818, + -0.02400897, + -0.026393233, + 0.007845888, + 0.0068027726, + 0.0016487107, + 0.005142799, + -0.00723596, + -0.007915198, + -0.012642137, + -0.0012510448, + 0.032464787, + 0.0090726735, + -0.02073754, + -0.02407828, + -0.036318418, + -0.01064601, + 0.10180247, + 0.03263113, + 0.0059537254, + 0.007270615, + -0.004165529, + 0.007388442, + -0.008642952, + -0.0019285496, + 0.021804914, + 0.0007793039, + 0.012787688, + 0.01190052, + 0.009308328, + 0.0040303743, + 0.012954032, + 0.011401488, + -0.014527367, + -0.033435125, + -0.0033961881, + -0.010146978, + -0.0069344616, + -0.01990582, + -0.013508512, + 0.041585978, + -0.013792682, + 0.0012822343, + 0.021832637, + 0.023094079, + 0.0012250536, + -0.025658548, + -0.014236266, + 0.008005301, + -0.00995291, + 0.003860565, + -0.022997046, + 0.00967567, + 0.025298135, + 0.0008516461, + 0.019642442, + 0.0016209867, + 0.013155031, + 0.014596677, + -0.005343798, + -0.0053195395, + 0.027945776, + -0.0026667006, + -0.017979003, + 0.012489655, + -0.002444909, + -0.02366242, + 0.030939966, + -0.008039955, + -0.03598573, + -0.0012302519, + 0.0023218838, + 0.013023342, + 0.02080685, + 0.0056660892, + -0.023260422, + 0.001045714, + -0.001802059, + -0.035514425, + 0.007818163, + -0.01071532, + -0.010840078, + -0.03346285, + 0.007242891, + -0.0065671187, + -0.03199348, + -0.0011748038, + 0.0046056467, + -0.023981247, + -0.012143105, + 0.016343288, + 0.004969524, + -0.006206707, + 0.02567241, + -0.012753033, + -0.021333605, + 0.019600857, + -0.021181123, + -0.016176945, + -0.0052329022, + -0.008601367, + -0.021139538, + 0.03437774, + 0.006123535, + -0.01822852, + -0.014970952, + 0.011637143, + 0.026102131, + -0.01642646, + 0.007326063, + -0.0018332484, + -0.016246255, + -0.0017700031, + 0.016828459, + 0.019517684, + -0.022525737, + -0.019642442, + 0.034904495, + -0.029831007, + -0.017424524, + -0.008296402, + 0.029331975, + 0.019157274, + 0.00608888, + -0.0068027726, + -0.017369077, + 0.0017301498, + 0.03742738, + -0.019988993, + -0.00855978, + 0.008733055, + -0.002181531, + 0.014555092, + -0.014305576, + 0.019697892, + 0.015497707, + -0.035514425, + -0.023856489, + -0.00904495, + 0.0023010906, + 0.037676893, + -0.005052696, + -0.008289471, + -0.0018869637, + -0.011082663, + 0.009377638, + -0.00290582, + 0.0047962493, + 0.0347936, + 0.0077904398, + -0.012364897, + -0.024535727, + 0.0086706765, + -0.012856998, + 0.009100398, + -0.009211293, + -0.011644074, + -0.012545103, + 0.009051881, + -0.005364591, + -0.0059537254, + -0.023704007, + -0.04183549, + 0.015386811, + -0.013543166, + -0.0147214355, + 0.021208849, + -0.011228214, + 0.015816534, + -0.0047789216, + 0.016163083, + -0.03897992, + -0.022345532, + -0.007908267, + -0.005295281, + 0.0054928144, + 0.023066355, + 0.028472532, + -0.0062240344, + 0.003562532, + -0.0013342168, + 0.0066191014, + 0.003992254, + 0.027252676, + -0.0055136075, + -0.014707574, + 0.023676282, + 0.011997554, + -0.004182856, + -0.015691776, + -0.00038142139, + -0.012863928, + 0.015705638, + 0.020418715, + -0.01649577, + -0.0056452965, + -0.020307818, + -0.010361839, + -0.009966772, + -0.035514425, + 0.002479564, + -0.0061547244, + -0.008504332, + 0.025353584, + 0.0025020896, + 0.005101213, + -0.014596677, + 0.0327143, + -0.0045536645, + 0.00046914179, + 0.020058302, + 0.0014052595, + 0.0046576294, + 0.0047096116, + -0.0016556417, + -0.005122006, + 0.013889716, + 0.012489655, + -0.008913261, + -0.015123433, + -0.0011626746, + 0.008379574, + 0.020224646, + 0.010535114, + -0.013619407, + 0.019171136, + -0.025062481, + -0.011657936, + -0.010535114, + -0.013813475, + -0.018076038, + -0.018394863, + 0.023426767, + -0.029692387, + 0.017979003, + -0.013064927, + -0.03124493, + 0.0075339926, + 0.00883702, + 0.017105699, + 0.004217511, + 0.025020896, + 0.018020589, + 0.00018702859, + -0.014638264, + 0.017147284, + 0.006310672, + -0.023898074, + 0.028555704, + 0.017687902, + -0.0035937214, + -0.012170829, + -0.009516258, + 0.004363062, + -0.018810723, + -0.0033736622, + 0.03590256, + 0.017992865, + 0.00876771, + -0.0078112325, + -0.009141983, + -0.01781266, + 0.028583428, + -0.02219305, + -0.00995291, + -0.0096687395, + -0.02330201, + -0.012399552, + 0.018672103, + -0.02219305, + 0.004706146, + 0.007845888, + -0.021319743, + 0.011124249, + -0.018519621, + -0.013570891, + 0.011373765, + 0.016412599, + 0.017272042, + -0.027613088, + -0.0058151055, + 0.0076379576, + 0.0058497605, + -0.013459994, + -0.006615636, + -0.008053818, + 0.028500255, + -0.007478545, + 0.0007112935, + 0.0098836, + -0.02032168, + 0.03046866, + -0.0027931915, + -0.011852004, + -0.01892162, + -0.0068201004, + -0.01836714, + 0.0045536645, + 0.020224646, + -0.008199369, + -0.009550912, + -0.017563144, + -0.008989502, + -0.007915198, + -0.0048586284, + 0.010528183, + 0.0038155133, + -0.010036082, + -0.011145041, + -0.0073953727, + 0.014943227, + -0.0062794825, + -0.0019302825, + 0.008920192, + 0.028028948, + -0.02776557, + 0.0074369586, + 0.006650291, + 0.0018956275, + -0.029193355, + 0.009862808, + -0.008448884, + -0.010410356, + 0.019448375, + 0.018311692, + -0.020335542, + 0.008227092, + -0.0038536338, + 0.007984508, + 0.009876669, + 0.009446948, + 0.031965755, + 0.0014693711, + -0.020820713, + -0.0013515443, + -0.021070229, + 0.011845073, + -0.016038325, + 0.00828254, + 0.02344063, + -0.013557028, + 0.01711956, + 0.0024414433, + 0.019226583, + 0.037593722, + -0.016412599, + -0.012787688, + -0.00476506, + 0.0005271889, + -0.011470798, + -0.04632678, + -0.01705025, + -0.003583325, + -0.021680156, + 0.042057283, + -0.003583325, + 0.00042603965, + 0.012863928, + 0.019670166, + 0.01962858, + 0.009585568, + -0.0030271125, + -0.01795128, + -0.014638264, + -0.0061616553, + 0.0054165735, + -0.0100014275, + -0.007457752, + 0.026102131, + 0.01064601, + -0.02581103, + -0.006632963, + 0.0020810317, + -0.022373255, + 0.01962858, + -0.02227622, + 0.02073754, + 0.022096016, + 0.012392621, + 0.0016166548, + 0.00959943, + 0.013217409, + 0.0040130466, + -0.022165326, + -0.03102314, + -0.0034065845, + -0.029886454, + -0.0050007137, + -0.025824891, + -0.016870044, + -0.010957905, + 0.03041321, + -0.0050353687, + 0.0116648665, + 0.012080726, + -0.011172766, + 0.0035729285, + 0.0022629702, + 0.0014962287, + -0.00049340026, + 0.014139232, + 0.026975436, + -0.027280401, + 0.006137397, + 0.030219143, + 0.010902457, + -0.01677301, + -0.010978698, + 0.010084599, + -0.014104577, + 0.011041077, + -0.014305576, + 0.01935134, + 0.006650291, + -0.030357763, + 0.009294466, + -0.018173072, + -0.025492204, + 0.009661809, + -0.012496586, + -0.0017509429, + -0.012753033, + 0.013148099, + -0.029193355, + -0.011519316, + 0.023329733, + -0.006813169, + 0.0028347773, + -0.013626338, + -0.015691776, + -0.017424524, + 0.006868617, + -0.0036907555, + -0.014527367, + 0.0008711396, + 0.028444808, + 0.024161452, + -0.015594741, + -0.00765182, + 0.0016963613, + -0.027543778, + 0.014513506, + -0.014527367, + 0.0014832332, + -0.023482215, + -0.0013567425, + -0.00055924477, + -0.022913873, + -0.017105699, + -0.007478545, + -0.00821323, + -0.00849047, + 0.0015170218, + 0.20615555, + -0.010361839, + 0.005316074, + 0.03498767, + 0.006359189, + 0.020002855, + 0.010569769, + 0.022622772, + -0.0043388037, + 0.012822343, + -0.024410969, + 0.0005024972, + 0.014832332, + 0.013494649, + 0.01767404, + -0.011470798, + -0.022844562, + -0.037593722, + -0.026628887, + 0.025575375, + 0.013688717, + 0.0070938743, + -0.014132301, + -0.016537357, + 0.0015768016, + 0.008393437, + -0.02414759, + -0.017992865, + 0.02894384, + 0.011096525, + 0.00946081, + 0.011359903, + -0.025436755, + -0.00009031954, + -0.00029478394, + 0.019850373, + -0.0025696668, + 0.032880645, + 0.019947406, + 0.0016833657, + -0.0060854144, + -0.0077141984, + -0.014665987, + 0.0013550097, + -0.0038813578, + -0.011158904, + -0.0043388037, + 0.008455815, + -0.0034741617, + 0.027557641, + -0.033157885, + -0.008739986, + 0.020488024, + 0.026310062, + 0.0031154826, + -0.02324656, + 0.035597596, + 0.030108247, + 0.0028295792, + -0.015456121, + -0.02269208, + 0.01948996, + -0.0048482316, + 0.010722251, + -0.0019770667, + 0.020404853, + -0.023204975, + -0.003694221, + 0.012288656, + -0.0045536645, + -0.00062812155, + -0.013709511, + -0.0017492102, + 0.0068720826, + -0.02547834, + -0.017771075, + 0.027931914, + -0.01120742, + 0.0008572776, + 0.022345532, + 0.0006632097, + -0.0056452965, + -0.0043318723, + 0.003203853, + 0.0029907248, + -0.028153706, + 0.03645704, + 0.013356029, + -0.023981247, + 0.00026294467, + -0.0057735196, + -0.0056868824, + 0.0048413007, + -0.012337173, + 0.0003433009, + 0.005402711, + 0.0015308837, + 0.041696873, + -0.02310794, + -0.009821221, + -0.016662115, + -0.02484069, + 0.021527674, + -0.0028191826, + 0.009232087, + 0.008150851, + -0.008296402, + 0.017881969, + -0.006979513, + -0.014943227, + -0.015705638, + -0.012413414, + 0.020931609, + -0.014790745, + 0.022082154, + 0.0040823566, + -0.005364591, + -0.011997554, + 0.0015048925, + -0.0125936195, + 0.017244319, + 0.0049972483, + 0.0010630415, + -0.0035365408, + 0.016398737, + -0.012579758, + -0.026115993, + 0.009627153, + -0.002236979, + -0.036346145, + 0.011699521, + -0.0011574763, + 0.01260055, + 0.011110387, + -0.039201714, + 0.007014168, + 0.0024466417, + 0.007173581, + -0.006736928, + 0.018214658, + 0.0016556417, + -0.021236572, + -0.0068304967, + 0.01467985, + 0.0013541434, + 0.006276017, + 0.024119867, + -0.0045813886, + -0.0063661197, + -0.010978698, + -0.012572827, + 0.00010591428, + -0.023080217, + -0.020501886, + 0.0293597, + 0.006234431, + -0.021860361, + -0.026129855, + 0.0113321785, + 0.0115955565, + -0.018048314, + -0.0001495579, + 0.025464479, + 0.007686475, + -0.0003125446, + -0.010424218, + -0.17987321, + 0.017105699, + 0.016967079, + -0.01537295, + 0.025228826, + 0.020723678, + 0.021194985, + -0.0026805627, + -0.013411477, + 0.0053126086, + 0.02129202, + -0.0075339926, + -0.027613088, + -0.008462747, + -0.020917745, + 0.0026476404, + 0.0013913974, + 0.013563959, + 0.018200796, + 0.009828152, + 0.02380104, + -0.03396188, + 0.023856489, + -0.000010633394, + -0.011865865, + 0.00019287663, + -0.011366834, + 0.00932219, + -0.0020255835, + -0.033379678, + -0.01635715, + 0.000749414, + 0.041336462, + 0.02533972, + 0.008532057, + 0.03227072, + 0.0011921313, + 0.0057146065, + -0.015622465, + 0.010375701, + 0.00849047, + 0.006352258, + -0.0023946592, + -0.009433086, + -0.007901335, + 0.01621853, + 0.012704516, + -0.0065948428, + -0.0037704618, + 0.003167465, + -0.007048823, + -0.02636551, + -0.010743044, + -0.002940475, + 0.0076587508, + 0.013203547, + 0.0054512285, + 0.0013784019, + -0.0005761391, + 0.008871675, + -0.035874836, + -0.00025428092, + 0.017784936, + -0.021139538, + -0.011443075, + -0.011810417, + -0.02477138, + -0.013709511, + -0.021319743, + 0.016592804, + -0.012607482, + -0.015650189, + -0.0017076242, + -0.039700747, + -0.016010601, + 0.020765264, + -0.025921926, + 0.0051289373, + -0.008227092, + 0.0037704618, + -0.0067923763, + 0.046520844, + -0.013619407, + -0.0029040873, + 0.0058324332, + -0.005385384, + 0.0034568342, + 0.020418715, + -0.010847009, + -0.016939355, + 0.007346856, + -0.010382632, + -0.006546326, + -0.0097380495, + 0.023288148, + 0.016925493, + -0.016232394, + 0.027640812, + -0.013959026, + -0.016925493, + -0.00084731425, + -0.005551728, + -0.02136133, + 0.014090715, + 0.044053413, + 0.01447192, + -0.00060559576, + -0.0019372134, + 0.013605545, + -0.0006012639, + -0.019018654, + 0.0021018246, + 0.030856794, + 0.010763837, + -0.016010601, + 0.013515443, + 0.012323311, + -0.009135053, + 0.025145654, + -0.01760473, + 0.04410886, + -0.0073607177, + 0.0047026807, + 0.013113445, + 0.015109572, + -0.013418408, + -0.13895261, + -0.031272653, + 0.012129243, + 0.038647234, + 0.0032229132, + 0.02122271, + 0.008573642, + 0.0056314343, + 0.012940169, + 0.020862298, + -0.022816839, + -0.02212374, + 0.005447763, + 0.020973194, + 0.018741414, + -0.009377638, + -0.0021936602, + -0.023620835, + -0.012011416, + 0.022719806, + -0.0068998067, + -0.0014633066, + 0.0105767, + 0.006068087, + 0.008441953, + 0.008726124, + -0.020474162, + 0.021264296, + 0.012448069, + 0.0005076955, + 0.0013558761, + -0.023288148, + 0.019642442, + -0.036900625, + -0.0150264, + 0.024341658, + -0.009398431, + 0.000066169356, + 0.026102131, + -0.035375804, + 0.003411783, + -0.0036283764, + 0.024438692, + -0.02136133, + -0.007977577, + 0.0022733668, + -0.015650189, + 0.020224646, + 0.013903578, + -0.02073754, + -0.030302314, + 0.003527877, + -0.00959943, + -0.009356845, + 0.01940679, + -0.015469983, + -0.0005536133, + 0.024161452, + -0.004245235, + -0.0033060852, + 0.0023513404, + -0.009051881, + -0.0055274693, + 0.0034499033, + 0.0066260323, + 0.005343798, + -0.013321375, + -0.009211293, + 0.010458873, + -0.0014451126, + 0.0025367446, + 0.014901642, + -0.005420039, + 0.026670473, + -0.031050863, + -0.0069552544, + -0.015761085, + -0.0037600654, + 0.010950974, + -0.03069045, + -0.010978698, + -0.0155808795, + 0.006262155, + -0.0010517787, + 0.020196922, + 0.020890022, + 0.024854552, + 0.006137397, + 0.0030323109, + -0.0071943738, + 0.008608297, + -0.0058601573, + 0.023814902, + -0.0197672, + 0.008344919, + -0.00723596, + 0.012205484, + -0.021056365, + -0.007277546, + 0.02665661, + -0.02832005, + -0.02366242, + -0.10518479, + 0.017701764, + -0.0063487925, + -0.0024709, + 0.0029266132, + -0.002706554, + -0.0002720416, + -0.008109265, + 0.0049348692, + -0.037732344, + -0.03276975, + 0.013155031, + -0.0077141984, + 0.0068270313, + -0.031189483, + -0.014804607, + 0.026947713, + 0.018034453, + -0.0025280807, + -0.0100014275, + 0.00006822699, + 0.0013818673, + 0.012198553, + 0.016800735, + -0.024064418, + -0.005586383, + 0.011775763, + -0.0067750486, + -0.014160025, + 0.0057908474, + 0.0016253185, + -0.024549589, + 0.0033615332, + 0.040948324, + -0.004120477, + -0.01585812, + -0.03742738, + 0.01474916, + 0.012884722, + 0.0204603, + -0.023745593, + -0.026698196, + 0.025755582, + -0.017285904, + 0.014166956, + 0.021070229, + 0.0013264194, + 0.02400897, + 0.020903884, + 0.008220161, + -0.005822037, + 0.022068292, + 0.009897462, + -0.01843645, + -0.021264296, + -0.020931609, + 0.01642646, + 0.027640812, + 0.013965957, + -0.020987056, + 0.031633068, + 0.011962899, + 0.017355215, + -0.005402711, + 0.003238508, + -0.02170788, + -0.020557335, + -0.01405606, + -0.006255224, + -0.026060546, + -0.015733361, + -0.011644074, + 0.020432577, + 0.0064596883, + 0.034682706, + -0.006553257, + -0.00090622774, + -0.0044843545, + 0.0063765165, + 0.03160534, + -0.004879421, + 0.012829274, + -0.0456614, + 0.020820713, + 0.013563959, + 0.0033961881, + -0.014430334, + -0.016066048, + -0.021305881, + 0.020141475, + 0.019753339, + 0.010084599, + 0.02463276, + -0.010819285, + -0.003086026, + 0.01426399, + 0.019309755, + -0.019711753, + 0.0016504434, + 0.014638264, + 0.003673428, + -0.011290593, + -0.025977373, + -0.0016920294, + -0.018685965, + -0.013945164, + -0.026850678, + -0.022442566, + -0.0065740496, + 0.013702579, + 0.0093360515, + 0.021097952, + 0.008663745, + 0.02991418, + -0.0045605954, + 0.0057908474, + 0.00723596, + -0.014652126, + -0.026864542, + 0.017577006, + 0.046160433, + 0.019434514, + 0.028555704, + 0.0032575682, + 0.014180818, + 0.003694221, + -0.005489349, + -0.03681745, + 0.01767404, + -0.0073329937, + 0.0022491082, + -0.013861992, + -0.016454184, + -0.0030548365, + -0.008587504, + 0.0012934972, + 0.0026961574, + 0.018783, + -0.032242995, + 0.049431864, + -0.018519621, + -0.015885843, + -0.0016253185, + -0.005343798, + 0.017646316, + 0.00240159, + 0.018186934, + -0.032326166, + -0.005752727, + 0.007915198, + 0.0013454796, + 0.013758027, + -0.009065743, + -0.010535114, + -0.0056452965, + -0.040976048, + 0.0027117522, + -0.019850373, + 0.001718887, + 0.03415595, + 0.01495709, + 0.015899705, + 0.012552034, + -0.025686271, + -0.020474162, + 0.011498523, + 0.0055136075, + 0.00008230558, + -0.012053003, + 0.013314444, + -0.009751911, + -0.038924474, + -0.03096769, + -0.0020238508, + -0.0019891958, + -0.011165835, + -0.003458567, + 0.0043041487, + 0.014638264, + -0.0064388956, + 0.0429999, + -0.011290593, + -0.029526044, + 0.0103964945, + -0.0064354297, + -0.007346856, + -0.013584753, + -0.0008802365 + ] + }, + { + "object": "embedding", + "index": 8, + "embedding": [ + 0.011767127, + 0.006192154, + -0.0037607332, + -0.028241105, + -0.003828555, + 0.013503372, + -0.025406143, + 0.0040421947, + -0.009298404, + -0.010261477, + -0.004018457, + 0.0074604265, + -0.0018278045, + 0.0119773755, + -0.013076093, + -0.0055546267, + 0.033314195, + -0.00091305445, + 0.020034635, + -0.005205343, + -0.020780679, + 0.010403904, + 0.020210974, + -0.022530487, + -0.01789146, + -0.0061141583, + 0.015368478, + 0.0002994768, + -0.008905036, + -0.009352662, + -0.008735481, + -0.017376011, + -0.020333054, + -0.0075011197, + -0.010152962, + -0.0062396294, + -0.010770143, + 0.0021414815, + 0.0021041792, + -0.020021072, + 0.028078333, + -0.003923506, + -0.011305937, + 0.00513413, + -0.024253167, + 0.03917402, + 0.000032453914, + 0.012289356, + -0.020088894, + 0.026125057, + 0.004445736, + 0.019180078, + -0.021051968, + -0.018474728, + -0.02327653, + -0.015856797, + -0.013198173, + 0.019315721, + 0.0029129575, + -0.00022169335, + -0.025758818, + -0.024985647, + -0.018881662, + 0.008206469, + 0.0032673276, + 0.0022499969, + -0.015015803, + 0.006232847, + -0.0065414375, + 0.008769392, + 0.02859378, + -0.0094137015, + 0.008674441, + -0.004571207, + 0.018298391, + -0.01592462, + -0.026545553, + -0.0027891821, + -0.009725683, + -0.0009537477, + 0.010064794, + -0.011197422, + -0.015707588, + 0.026681198, + 0.022639003, + 0.012133366, + 0.004255834, + 0.029489031, + -0.0065448284, + 0.011923118, + 0.011061777, + 0.012764111, + -0.010749796, + 0.007080623, + -0.028729424, + -0.021255434, + -0.020441568, + 0.048045147, + -0.019966815, + -0.025107726, + 0.023466432, + -0.024958517, + -0.032147657, + -0.012811586, + -0.024985647, + -0.015368478, + -0.0141341165, + 0.0130354, + 0.009040681, + -0.004849277, + -0.014093423, + 0.03133379, + 0.021567414, + -0.06516343, + 0.005303685, + -0.01417481, + -0.022408407, + -0.031659335, + -0.009637514, + -0.02364277, + 0.023561383, + 0.031713594, + 0.017660864, + 0.0018244133, + 0.028485265, + -0.009149196, + -0.0013479633, + -0.021594543, + 0.0015031063, + -0.0018735843, + 0.027698528, + 0.008525233, + 0.021160481, + 0.0084235, + -0.017633734, + 0.018651066, + -0.015856797, + 0.023018807, + -0.012235099, + -0.023791978, + -0.016060263, + 0.01509719, + -0.032635976, + 0.0055546267, + -0.01220797, + 0.025894461, + 0.024700794, + 0.014459663, + 0.0021838702, + -0.0073044356, + 0.018705323, + -0.01589749, + 0.010098704, + -0.01669779, + 0.0071009696, + 0.010349646, + 0.008626966, + 0.027779914, + -0.011312719, + 0.0013589845, + -0.008498104, + 0.011895989, + 0.01405273, + -0.0033046298, + 0.037492033, + 0.009325533, + -0.0029044796, + 0.014961546, + 0.016236601, + -0.013510154, + -0.015015803, + 0.007826665, + -0.038821347, + 0.016874127, + 0.02361564, + 0.033287067, + 0.013693273, + -0.0076231994, + -0.020889195, + -0.0010478508, + -0.0061378963, + 0.021933654, + 0.030465668, + 0.026423473, + -0.033070035, + -0.012960795, + 0.03255459, + -0.013510154, + 0.0278613, + -0.01266916, + 0.019139385, + 0.026179314, + 0.021947218, + -0.01152975, + -0.66194326, + -0.003367365, + -0.010980391, + 0.021268997, + 0.0051002186, + 0.018189875, + 0.010573459, + 0.00056334696, + -0.025867334, + 0.0013691578, + -0.021363948, + 0.0028078333, + -0.0089999875, + 0.0003458925, + -0.0089999875, + -0.00086218794, + 0.0006595695, + -0.001080914, + 0.0008346352, + 0.009210235, + 0.0023144276, + 0.022082862, + 0.004238879, + -0.013455897, + 0.021920089, + 0.014120553, + 0.027942687, + -0.036813814, + -0.0042592254, + -0.0023686853, + -0.013062528, + 0.016250165, + -0.012472477, + -0.0058530434, + 0.020156715, + -0.00061675685, + -0.025080597, + 0.022462666, + -0.0069585433, + 0.04430137, + -0.014812337, + 0.0049408367, + 0.01869176, + -0.010512419, + -0.000081545426, + 0.004255834, + 0.026816841, + -0.0060531185, + 0.014066295, + 0.00074519485, + 0.010064794, + -0.025053468, + -0.012675943, + 0.0051917783, + 0.012621685, + 0.0023992052, + 0.016779177, + 0.0032673276, + 0.0030096038, + 0.012418219, + -0.0002490341, + -0.019030869, + -0.021174047, + -0.012370744, + 0.0007621504, + 0.015042933, + -0.01393065, + 0.00321307, + 0.0034826626, + -0.011027867, + -0.0049272724, + 0.022910291, + -0.011339848, + 0.010193655, + 0.0010359819, + 0.01346946, + 0.02026523, + -0.027752787, + 0.0006358318, + -0.011448364, + 0.007087405, + -0.004313483, + -0.04362315, + -0.010308953, + 0.040286303, + -0.021011274, + -0.011292373, + -0.011855296, + 0.033721127, + -0.02029236, + 0.012628467, + 0.01881384, + -0.008328549, + 0.010837965, + -0.0077927546, + 0.017457398, + -0.0039438526, + 0.01441897, + 0.008416717, + -0.016670661, + -0.0033588875, + -0.006215892, + 0.016507888, + 0.0053308136, + 0.012784458, + 0.0040896703, + -0.025039904, + 0.031496562, + 0.023086628, + -0.030547054, + -0.015599073, + -0.0017014858, + -0.0018871487, + 0.00043406116, + 0.02499921, + -0.034752022, + 0.009325533, + 0.029461902, + 0.03255459, + -0.015232834, + -0.0018735843, + -0.00079309416, + 0.0018244133, + -0.012397872, + -0.027467933, + 0.006880548, + -0.004221923, + -0.021146918, + 0.0033470185, + 0.0216488, + 0.004449127, + 0.0040998436, + 0.028648037, + -0.0063786646, + 0.039011247, + 0.009122067, + 0.033124294, + -0.011658612, + 0.007941963, + 0.005524107, + -0.031686466, + -0.012065544, + -0.00968499, + 0.0007252721, + -0.010397121, + -0.03846867, + -0.012099455, + -0.0051137833, + -0.03477915, + 0.016073829, + 0.001085153, + -0.0035030092, + -0.015110754, + 0.0010902396, + -0.016223036, + -0.020305924, + 0.0006366796, + -0.003050297, + -0.022096427, + -0.0068398546, + 0.0024314208, + 0.0065177, + -0.01122455, + -0.015639767, + 0.0022059125, + -0.0018295, + 0.02521624, + 0.011319501, + -0.012831934, + -0.014106988, + -0.0062192827, + 0.00008382383, + -0.015029368, + 0.024456633, + 0.0154634295, + -0.0060904208, + 0.01122455, + 0.015232834, + 0.0076978034, + 0.023018807, + 0.010519201, + -0.0033521052, + -0.029868834, + -0.010492072, + 0.029380515, + -0.00038086323, + 0.028566651, + -0.0012555559, + -0.011631483, + 0.0016116217, + 0.0076503283, + 0.0034657072, + 0.0006366796, + 0.0027739222, + 0.002623018, + 0.0054257647, + -0.007019583, + -0.0019532752, + 0.010505637, + 0.0057173995, + 0.021133354, + 0.0078198835, + 0.019478494, + 0.009305187, + 0.0062396294, + -0.018935919, + -0.014269761, + -0.016440067, + 0.019505624, + 0.0036149158, + 0.021418206, + -0.021445334, + -0.020102458, + -0.0015861883, + -0.0040659322, + 0.03111676, + -0.015666895, + 0.004225314, + -0.0042897454, + -0.007745279, + 0.009603604, + -0.017335318, + -0.0048967525, + 0.010186873, + -0.045549296, + 0.013089657, + 0.011122817, + 0.01958701, + -0.0038014264, + -0.013781442, + -0.017253932, + 0.003984546, + 0.003659, + 0.011177075, + -0.029895963, + 0.0066126506, + 0.018434035, + -0.020563647, + 0.03543024, + -0.0011394105, + 0.02330366, + 0.028213976, + 0.024877131, + -0.024822874, + 0.0031774633, + -0.007704586, + 0.026925357, + 0.008213251, + -0.007908052, + -0.0012487737, + -0.011319501, + 0.01331347, + -0.0025941937, + -0.0067855967, + 0.0020855283, + -0.0051002186, + 0.018705323, + -0.0120791085, + 0.01854255, + 0.022462666, + -0.010871876, + -0.0044694734, + 0.006656735, + -0.006883939, + -0.00055020646, + 0.013164261, + 0.016833434, + 0.0017565913, + -0.032174785, + -0.02422604, + -0.0034114495, + -0.020590777, + 0.01168574, + -0.011394106, + 0.01134663, + -0.018732453, + -0.015694024, + -0.025080597, + 0.0060056434, + 0.005476631, + -0.005144303, + -0.029570417, + 0.011461928, + 0.016087392, + -0.01116351, + -0.021879395, + -0.015273527, + 0.00019021968, + -0.00412019, + 0.018149182, + 0.014147681, + 0.014364712, + -0.007541813, + 0.0038658574, + -0.011611137, + -0.011550097, + 0.029190613, + -0.021282561, + -0.005710617, + -0.003367365, + -0.007948745, + -0.02429386, + 0.0066024773, + -0.008247162, + 0.024185346, + 0.011109253, + -0.013015053, + -0.014120553, + 0.0029875617, + -0.019139385, + -0.0019142776, + 0.015816104, + 0.0033724518, + 0.014785209, + 0.002041444, + 0.007806319, + -0.0040455856, + 0.0054596756, + 0.018244134, + -0.007643546, + 0.004903535, + -0.030357152, + -0.023710592, + -0.020834936, + 0.121645644, + -0.0028061375, + -0.0020516173, + 0.002687449, + 0.006293887, + -0.0049883123, + -0.010654845, + -0.0035538757, + 0.0024941561, + -0.00027467933, + 0.0071348804, + -0.01337451, + -0.00839637, + 0.0119773755, + -0.00059174746, + -0.0060395543, + -0.016467195, + 0.0031384658, + 0.0047916286, + -0.015259963, + -0.00056037976, + -0.031035373, + 0.011536532, + 0.03358548, + -0.005931039, + 0.01488016, + 0.013510154, + 0.009373008, + 0.01226901, + -0.032853004, + -0.007813101, + 0.029678933, + -0.008152211, + 0.022299893, + 0.0062091094, + 0.026721891, + 0.021119788, + 0.013984908, + 0.023113757, + -0.013449114, + 0.009590039, + 0.012580992, + 0.0135305, + -0.018284827, + 0.032527458, + -0.021363948, + 0.0012903146, + 0.016874127, + -0.0016523149, + -0.021363948, + 0.03274449, + 0.016155215, + -0.03160508, + 0.0032842832, + -0.010688757, + 0.013944215, + 0.0041778386, + -0.0007443471, + 0.0008295485, + 0.012811586, + -0.0032045923, + -0.038360156, + 0.00642614, + -0.0014954763, + -0.01036321, + -0.024036137, + -0.0013293123, + 0.015965313, + -0.021784445, + -0.010180091, + 0.0051544765, + -0.027481498, + -0.013849264, + 0.023886928, + 0.010892223, + -0.0073383464, + 0.027237339, + -0.004717024, + -0.010295388, + 0.02339861, + -0.022856034, + 0.00039485155, + -0.010946481, + -0.010756578, + -0.03225617, + 0.024632972, + 0.023832671, + -0.015300657, + -0.011482274, + 0.0069381967, + 0.010458161, + 0.017850766, + 0.019139385, + 0.014256196, + -0.006822899, + -0.012587774, + -0.01263525, + 0.012614903, + -0.016223036, + -0.019573446, + 0.020238101, + -0.01696908, + 0.001300488, + 0.005049352, + 0.019898992, + 0.031822108, + 0.018271262, + 0.015178576, + -0.010661627, + 0.012499605, + 0.027549319, + -0.034236576, + 0.0260708, + 0.012804804, + -0.015259963, + 0.0049544014, + -0.0015319308, + 0.01205198, + 0.020183844, + -0.0042049675, + -0.008003003, + -0.011970594, + 0.012859062, + 0.027006743, + -0.0051137833, + 0.0050391788, + -0.015734717, + 0.001179256, + -0.0011343239, + 0.015571944, + 0.0024687229, + 0.023357917, + -0.018054232, + -0.00590391, + -0.026247136, + 0.0019871863, + -0.018366214, + 0.013028617, + -0.009291622, + -0.009834198, + -0.012770893, + 0.014825902, + 0.0061684162, + -0.022828905, + -0.026437039, + -0.024958517, + 0.0025009385, + 0.0004192251, + -0.023127321, + 0.01577541, + -0.00020802298, + 0.011102471, + -0.011326283, + 0.007813101, + -0.019085128, + -0.014364712, + -0.027264467, + -0.02330366, + -0.0029044796, + 0.02337148, + 0.03871283, + -0.0048255394, + 0.025012774, + -0.0033843208, + 0.013449114, + -0.00035479415, + 0.008348895, + 0.012140148, + -0.027996946, + 0.0032825875, + 0.010003754, + -0.0071009696, + -0.009895238, + 0.01079049, + -0.011733216, + 0.021798009, + -0.0001939287, + -0.0117196515, + -0.011482274, + -0.0063074515, + -0.023385046, + -0.029299129, + -0.015599073, + -0.001655706, + -0.016521454, + -0.007284089, + 0.022055734, + 0.0025297627, + 0.0097731585, + -0.017362447, + -0.0014446098, + -0.008369242, + 0.02878368, + -0.000865579, + -0.020305924, + -0.0027111867, + 0.00581235, + -0.020468697, + -0.018990176, + 0.024022574, + 0.000786312, + 0.0019804041, + -0.012926884, + 0.021892961, + 0.0047509354, + 0.01325243, + 0.01266916, + 0.0044355625, + 0.010770143, + -0.018949483, + -0.016467195, + -0.008470975, + -0.0112584615, + -0.021825138, + -0.009020334, + 0.012418219, + 0.0021346994, + 0.027807044, + -0.028159719, + -0.01881384, + 0.012106237, + 0.006965325, + 0.011183857, + 0.004316874, + 0.025067033, + 0.013598323, + 0.0029739973, + -0.022747518, + 0.014500356, + -0.011482274, + -0.009020334, + 0.047475442, + 0.022367714, + 0.004686504, + -0.022856034, + 0.0004115951, + 0.0035504848, + -0.006866983, + -0.0008626118, + 0.04427424, + 0.0100783575, + -0.0015200619, + -0.0067381216, + -0.004157492, + -0.030248638, + 0.0049544014, + -0.0084913215, + -0.005941212, + -0.026789714, + -0.015504123, + -0.0094611775, + 0.00044635392, + -0.0076910215, + 0.0075689415, + 0.0061378963, + -0.018623937, + -0.0045915535, + 0.0038794216, + -0.014636, + 0.02524337, + 0.02398188, + 0.011611137, + -0.0125402985, + 0.013523718, + 0.023900494, + -0.0043338295, + -0.013754313, + -0.016006006, + -0.00359796, + 0.022245634, + -0.01395778, + 0.0010495463, + 0.0071416628, + -0.010214002, + 0.024307426, + 0.003129988, + 0.017552348, + -0.0032215477, + -0.012872627, + -0.0020550084, + 0.005602102, + 0.030411411, + 0.006144678, + -0.003209679, + -0.034724895, + -0.020373747, + -0.004744153, + -0.0065821307, + 0.02152672, + 0.014825902, + -0.0055614086, + 0.002407683, + -0.024578713, + 0.011733216, + 0.0022533878, + -0.01749809, + 0.0012428393, + 0.029353386, + -0.021784445, + 0.00777919, + 0.008688006, + 0.022340586, + -0.023168014, + -0.008199687, + 0.004676331, + -0.006226065, + 0.021024838, + 0.0031537258, + -0.0027162733, + -0.011448364, + -0.016440067, + -0.0044966023, + -0.008165776, + -0.0050222236, + 0.037709065, + -0.0021635236, + -0.0039981105, + -0.0034182316, + -0.023534253, + 0.03363974, + -0.017240368, + 0.006677082, + 0.020129588, + -0.014866595, + 0.0015980572, + 0.022367714, + 0.0094137015, + 0.007860577, + -0.005005268, + -0.030004479, + 0.0061209407, + 0.016223036, + -0.007324782, + -0.028539522, + -0.01577541, + -0.013564412, + -0.012519952, + 0.027549319, + -0.0050696987, + -0.006907677, + 0.008464193, + 0.017782943, + 0.05577686, + 0.003662391, + -0.004649202, + -0.023317223, + -0.011495839, + -0.0009774854, + -0.03391103, + -0.00029269457, + -0.0041371454, + 0.02364277, + -0.011509404, + -0.014825902, + -0.022055734, + 0.008199687, + -0.039770856, + 0.008118301, + -0.014324019, + 0.020929888, + 0.008755827, + 0.008321767, + 0.013110003, + 0.004544078, + 0.0013572889, + 0.0061514606, + -0.018067796, + -0.006622824, + 0.02232702, + -0.04061185, + 0.016128086, + -0.012018069, + -0.014703822, + 0.017606607, + 0.020319488, + 0.0041642743, + -0.0009791809, + 0.02152672, + -0.029434772, + 0.0070399297, + 0.0039404617, + 0.014012037, + -0.0020075329, + 0.021174047, + 0.0014081554, + -0.024619406, + 0.012506387, + 0.024470199, + -0.012065544, + 0.0012716636, + 0.018339084, + 0.000033884535, + 0.0063854465, + 0.015382043, + -0.013639016, + 0.002948564, + 0.024266733, + -0.025962284, + 0.024755051, + -0.015219269, + 0.0060124253, + 0.0067313393, + -0.008247162, + 0.0026399735, + 0.004052368, + 0.017850766, + -0.03206627, + -0.011597572, + 0.01786433, + -0.014947982, + -0.0077249324, + 0.005469849, + 0.0145953065, + -0.03751916, + -0.009508653, + -0.014907288, + -0.0064498778, + -0.015124319, + 0.027508626, + 0.019478494, + -0.013150697, + -0.012614903, + -0.009671425, + -0.020780679, + 0.005340987, + -0.023045935, + 0.006656735, + -0.013110003, + -0.009352662, + -0.0010936307, + -0.0047543263, + -0.02133682, + -0.0060836384, + 0.002139786, + 0.008403153, + 0.0057614837, + 0.2369974, + -0.027996946, + 0.0017379402, + 0.025962284, + 0.007975874, + 0.011292373, + 0.03382964, + 0.0141341165, + -0.012465694, + 0.000540457, + -0.031008245, + 0.0068873297, + 0.004554251, + 0.007880923, + 0.0063447533, + 0.0011190639, + -0.032418944, + -0.05669924, + -0.019600574, + -0.009556128, + -0.0020702684, + -0.000778682, + -0.008755827, + -0.013428767, + 0.022299893, + 0.010776925, + -0.010770143, + -0.014446098, + 0.017660864, + 0.0056224484, + -0.012553863, + -0.0012046893, + -0.018895226, + 0.007941963, + 0.0037471687, + 0.015273527, + -0.01657571, + -0.0022211724, + 0.0013683101, + 0.020129588, + -0.009637514, + -0.004327047, + -0.0024941561, + -0.021892961, + -0.023262966, + 0.015219269, + -0.011631483, + -0.005378289, + -0.014527485, + 0.027617142, + -0.04796376, + -0.0069348053, + 0.019641267, + 0.03339558, + 0.002389032, + -0.012920102, + 0.0445184, + 0.012302921, + -0.009020334, + -0.015042933, + -0.038875602, + 0.0072637424, + -0.011299155, + 0.0008672746, + -0.009528999, + 0.0145410495, + -0.029597547, + -0.00830142, + 0.0029282174, + 0.0120791085, + -0.008572708, + -0.02398188, + -0.009786723, + -0.0017938934, + -0.019112255, + -0.036216978, + 0.013815354, + 0.0077588432, + -0.004510167, + 0.02432099, + -0.0031435525, + -0.009474741, + 0.017036902, + 0.014120553, + 0.016467195, + -0.015354914, + 0.0064668334, + 0.0222592, + -0.009386573, + -0.0096171675, + 0.0012682725, + -0.016331552, + -0.003726822, + -0.0099766245, + 0.00986811, + 0.016385809, + 0.003246981, + 0.02582664, + -0.030438539, + -0.02133682, + -0.0073722578, + -0.02063147, + 0.025596045, + 0.013123568, + 0.017782943, + -0.010661627, + 0.006619433, + 0.012648813, + -0.013849264, + -0.013869611, + -0.0057818303, + -0.022544052, + -0.00025030578, + -0.009495088, + 0.018013539, + -0.00030901426, + 0.014256196, + -0.020739986, + 0.0150022395, + -0.01980404, + 0.010939698, + -0.014364712, + 0.014093423, + 0.0084913215, + 0.0010351342, + -0.0096171675, + -0.020943452, + 0.0030486016, + -0.014215503, + -0.0432976, + -0.011556879, + 0.007975874, + 0.0040693237, + -0.008057261, + -0.031930625, + -0.0013801788, + -0.00035288665, + -0.008437064, + -0.006198936, + 0.005683488, + 0.0019804041, + -0.0076638926, + 0.011088907, + 0.0042320965, + -0.009657861, + -0.0021804792, + 0.0025806292, + -0.0050663077, + -0.008565926, + -0.007514684, + -0.006002252, + -0.0061819805, + -0.015788974, + -0.026314959, + 0.036542524, + -0.017552348, + 0.0044355625, + -0.024917824, + 0.0041676653, + 0.022164248, + -0.033558354, + -0.012248663, + 0.027834173, + -0.014473227, + -0.0063820556, + 0.010044447, + -0.17655438, + 0.025311192, + 0.019790476, + -0.0055274977, + 0.013218519, + 0.0091017205, + 0.0186375, + 0.01128559, + -0.025107726, + -0.0005629231, + 0.022896728, + 0.0038963773, + -0.043080572, + -0.024158217, + -0.018203441, + -0.021174047, + -0.0057038353, + -0.0063379714, + 0.009705337, + 0.016765613, + 0.02693892, + -0.019912556, + 0.022544052, + -0.016290858, + 0.00538168, + -0.011706087, + -0.014012037, + 0.0154634295, + -0.008464193, + -0.018054232, + -0.027942687, + -0.010987174, + 0.03184924, + 0.007080623, + 0.0032842832, + 0.040666107, + -0.01233005, + 0.005364725, + -0.01681987, + 0.016358681, + 0.02813259, + 0.033721127, + -0.004971357, + 0.0026671025, + -0.015327785, + 0.021798009, + -0.0040693237, + -0.0050595254, + 0.0013920477, + -0.0069280234, + 0.013598323, + -0.010770143, + 0.01417481, + 0.021947218, + 0.008403153, + 0.004384696, + -0.0041167988, + -0.0077588432, + -0.0097731585, + 0.002555196, + -0.03502331, + -0.011909554, + 0.0059513855, + -0.019980378, + -0.009142414, + -0.010715885, + -0.022530487, + -0.0041405368, + -0.019424237, + 0.017972846, + -0.015192141, + -0.021079095, + 0.011210986, + -0.0140798595, + 0.018271262, + 0.009081374, + -0.0107972715, + 0.018596807, + 0.014378277, + 0.011149947, + 0.0045983354, + 0.051816054, + -0.012804804, + 0.025677431, + -0.0056631416, + -0.005144303, + -0.007514684, + 0.012309703, + -0.019546317, + -0.011061777, + 0.01774225, + -0.009467959, + -0.018311955, + -0.022408407, + 0.011502621, + 0.025379013, + -0.0042320965, + 0.0036013513, + -0.0033656696, + -0.0006430379, + 0.0108244, + 0.0065380465, + -0.023195144, + 0.019790476, + 0.032853004, + 0.02536545, + 0.017131852, + -0.0035742226, + 0.00535116, + 0.02235415, + -0.0278613, + -0.01497511, + 0.011265243, + 0.016833434, + -0.030465668, + 0.01614165, + 0.015300657, + -0.024334554, + 0.012567427, + -0.024850002, + 0.048018016, + -0.0036149158, + 0.00071085995, + 0.019329287, + -0.0040388037, + 0.0035674402, + -0.090990074, + -0.041344326, + 0.0052833385, + 0.02533832, + -0.00067525334, + 0.029190613, + -0.008938947, + -0.011407671, + 0.021540286, + 0.029461902, + -0.030058736, + 0.0044999938, + 0.018718887, + 0.011645047, + 0.03155082, + -0.01263525, + 0.004717024, + -0.009203454, + -0.011292373, + 0.017782943, + -0.008118301, + -0.003923506, + -0.00016118336, + -0.0014963242, + -0.009196671, + -0.0014708908, + -0.025650302, + 0.010614152, + 0.024185346, + 0.010810836, + 0.00802335, + -0.032120526, + 0.014798773, + -0.02337148, + -0.014147681, + 0.0052901204, + -0.016901257, + 0.013442332, + 0.030248638, + -0.012445347, + -0.011278808, + -0.002112657, + 0.030492797, + -0.023683462, + 0.008586273, + -0.010817618, + -0.009888456, + 0.015721153, + 0.015911054, + -0.0178372, + -0.013204955, + -0.01180782, + -0.028186847, + -0.0184476, + 0.019437801, + -0.028702294, + -0.0058225235, + 0.014378277, + -0.014730951, + 0.0011699304, + -0.0031706812, + -0.007155227, + -0.028892197, + 0.032825876, + -0.005700444, + 0.0044084336, + -0.020360181, + -0.0014395232, + 0.01856968, + -0.008667659, + -0.0033436276, + 0.0033131074, + -0.02997735, + 0.013408421, + -0.013279559, + 0.009237364, + 0.0001644685, + -0.009752812, + -0.00019668396, + -0.035565887, + -0.009495088, + -0.022286328, + 0.0047305888, + -0.00916276, + 0.026735455, + 0.014798773, + -0.0037471687, + -0.005568191, + 0.0054528937, + -0.033015776, + 0.008898254, + -0.00013479634, + 0.018434035, + -0.025202677, + -0.00003764654, + 0.010261477, + -0.00928484, + -0.017810073, + 0.02444307, + 0.018203441, + -0.019275028, + -0.019315721, + -0.10292675, + 0.0049374457, + 0.0071687917, + -0.0027145778, + 0.014812337, + -0.0044999938, + 0.014527485, + -0.015666895, + -0.0020380528, + -0.007019583, + -0.040259175, + 0.0020990926, + -0.015368478, + 0.0020397485, + -0.016670661, + -0.009501871, + 0.025677431, + 0.02613862, + -0.009474741, + 0.013727184, + 0.018718887, + 0.0013979821, + -0.008504886, + 0.00050061155, + -0.0073926044, + 0.004686504, + 0.00042367593, + 0.015219269, + -0.015219269, + -0.01152975, + 0.01970909, + -0.02711526, + 0.0034572294, + 0.026084363, + 0.00096646434, + -0.009908803, + -0.008660877, + 0.0054495023, + -0.010492072, + 0.031523693, + -0.013327034, + -0.0059106923, + 0.012228317, + -0.01239109, + 0.003338541, + -0.009088156, + 0.012235099, + 0.018556114, + 0.011489057, + 0.019912556, + -0.01337451, + 0.023412174, + -0.0045949444, + -0.013293123, + -0.015165012, + -0.009508653, + 0.011509404, + 0.007914834, + 0.016494324, + -0.01614165, + 0.010295388, + -0.00470346, + 0.010675192, + -0.0006421901, + 0.019410674, + -0.029000713, + -0.016562147, + 0.004198185, + 0.00088083895, + -0.026274266, + -0.009271275, + -0.023344353, + 0.025813075, + 0.013110003, + 0.02121474, + -0.0034267094, + 0.01174678, + -0.02533832, + -0.03206627, + 0.04077462, + 0.0055308887, + 0.008966076, + -0.024741488, + 0.015883926, + 0.023778414, + -0.00676525, + -0.018434035, + -0.014486792, + 0.0021720014, + 0.010905787, + 0.007813101, + -0.000060509992, + 0.01587036, + -0.011265243, + -0.0094611775, + -0.003950635, + -0.015883926, + -0.004917099, + -0.0045372956, + 0.02133682, + 0.026152186, + 0.006527873, + -0.01079049, + -0.01100752, + -0.015571944, + 0.025379013, + -0.0006040402, + -0.021051968, + -0.0007231527, + 0.026599811, + 0.020156715, + 0.004645811, + -0.0060124253, + 0.01657571, + -0.0016336638, + 0.014351147, + 0.0012504692, + -0.004445736, + -0.02330366, + 0.0017498091, + 0.031876367, + 0.02213712, + 0.025894461, + -0.0012665769, + 0.019980378, + 0.0065143085, + 0.0032859787, + -0.02650486, + -0.01128559, + -0.003338541, + -0.0075214664, + -0.0055546267, + -0.031496562, + -0.01842047, + -0.004649202, + -0.0020227928, + 0.022964548, + 0.025718125, + -0.025161983, + 0.037898965, + -0.012642032, + -0.013733966, + 0.008084389, + -0.015110754, + 0.019424237, + -0.00081513636, + 0.027264467, + -0.025609609, + -0.024632972, + 0.0007235766, + 0.014405405, + 0.0005769114, + -0.036759555, + -0.025636738, + -0.016684227, + -0.03415519, + 0.016331552, + -0.023045935, + 0.02060434, + 0.040449075, + 0.01568046, + -0.006158243, + 0.0067279483, + -0.027101694, + 0.004601727, + 0.028376749, + 0.0073383464, + -0.003360583, + -0.022530487, + 0.023412174, + 0.0047339797, + -0.028431006, + -0.021798009, + 0.010865093, + -0.0058089592, + -0.007704586, + -0.010749796, + 0.030764086, + 0.012764111, + -0.02133682, + 0.033097163, + -0.022042168, + -0.04514236, + 0.014934417, + -0.0092238, + -0.012587774, + -0.0022652568, + -0.020007508 + ] + }, + { + "object": "embedding", + "index": 9, + "embedding": [ + -0.008189119, + -0.0015157744, + 0.0074148276, + -0.034777507, + -0.021128977, + 0.0044751437, + -0.019960977, + 0.020341562, + -0.017729968, + -0.0353287, + 0.022835044, + -0.0058432776, + 0.012998914, + 0.0019521337, + -0.010229837, + -0.01561707, + 0.016115766, + -0.011404398, + 0.008445029, + -0.0051181996, + -0.008208805, + 0.027297063, + -0.010879455, + -0.008215366, + 0.0019783808, + 0.0065093, + -0.002918358, + -0.016535722, + 0.0061976146, + -0.024475493, + 0.013307318, + -0.028793152, + -0.024449244, + -0.037244745, + 0.011791544, + -0.011798106, + -0.015984531, + -0.008733748, + 0.006151682, + -0.009494917, + 0.012887363, + -0.011023814, + -0.003313706, + -0.010026421, + -0.021404572, + 0.015722059, + -0.0073098387, + -0.003343234, + -0.028688164, + 0.006670064, + 0.021535808, + 0.022441337, + -0.0248692, + 0.0019258866, + -0.025590997, + -0.013806015, + -0.015577699, + -0.0004457919, + -0.017323136, + -0.010761342, + -0.0062993225, + -0.01956727, + -0.015630193, + 0.024081785, + 0.0025951895, + -0.018438641, + -0.0024196615, + 0.0134385545, + 0.0038714586, + 0.02171954, + 0.030525466, + -0.0061352775, + 0.012847993, + -0.0032087173, + 0.014212846, + 0.0012319769, + -0.019829743, + 0.013333566, + -0.0075263777, + 0.0059023337, + 0.004183144, + -0.042940382, + -0.030079264, + 0.026247177, + 0.017415002, + 0.009199635, + -0.031549107, + 0.023950549, + -0.006975187, + -0.0041929865, + 0.022034505, + 0.021916393, + 0.022467583, + 0.0011507747, + -0.032756478, + 0.014147229, + -0.0021407853, + 0.037717193, + -0.014186599, + -0.012231184, + 0.011955589, + -0.005836716, + -0.010846646, + -0.02040718, + -0.0014239093, + 0.008930602, + -0.02175891, + -0.034357555, + 0.013543543, + -0.016378239, + -0.013451678, + 0.014750914, + 0.0056398623, + -0.041234314, + -0.002867504, + -0.023071269, + 0.003335032, + -0.0158008, + -0.025840346, + -0.038609598, + 0.020538416, + 0.021772033, + 0.010754781, + -0.020367809, + 0.037795935, + 0.0056004915, + -0.00057210645, + -0.019304799, + -0.008504085, + 0.0029298412, + 0.021207718, + -0.0065093, + -0.0076576136, + 0.0034711892, + -0.013327004, + 0.023058144, + -0.033412658, + 0.009711456, + -0.018123675, + -0.035197463, + 0.0015379206, + 0.028241962, + -0.0060926257, + 0.020748394, + -0.007040805, + 0.020039719, + 0.0023310774, + 0.004842604, + 0.013195768, + -0.025407268, + 0.018661743, + -0.022808796, + 0.0075066923, + 0.0073229624, + 0.0025361334, + 0.012559274, + 0.012847993, + 0.019409787, + 0.007972579, + 0.0030331893, + -0.0024311447, + -0.007106423, + 0.030997915, + -0.034278814, + 0.020328438, + 0.016207632, + 0.012008083, + -0.0034908745, + 0.0060335696, + -0.016430732, + -0.010347949, + 0.020275945, + -0.018254912, + 0.02077464, + 0.013792891, + 0.009914871, + 0.0066208504, + 0.022716932, + -0.022231359, + -0.0051542893, + 0.007244221, + 0.008655006, + 0.007841344, + 0.028688164, + 0.0038124025, + 0.0062665134, + 0.025761604, + -0.017139407, + -0.00019572601, + -0.02282192, + -0.004406245, + 0.02398992, + 0.023635583, + -0.010846646, + -0.6702479, + -0.016666956, + -0.011286286, + -0.0068701985, + 0.017454373, + 0.0113847125, + 0.022401966, + 0.017651226, + -0.02165392, + -0.013117027, + -0.011732488, + 0.0056004915, + 0.0064469627, + -0.012933296, + -0.013963498, + -0.0033547173, + 0.01459343, + -0.0063583786, + -0.029370591, + 0.0076641757, + -0.013451678, + -0.0011868646, + -0.0036253913, + -0.004334065, + 0.024436122, + 0.0033924475, + 0.0030594366, + -0.0072639063, + -0.010525118, + 0.0064141536, + -0.03566991, + 0.016614463, + 0.018044934, + -0.0039042674, + 0.047271166, + 0.0016666957, + -0.023740571, + -0.0036549193, + 0.024344256, + 0.009389928, + 0.0054397276, + -0.0039436384, + 0.009055276, + -0.010420129, + -0.001067932, + 0.008864984, + 0.014068487, + -0.006830828, + 0.015564576, + 0.018569877, + 0.017861204, + 0.0023720886, + -0.013215453, + -0.005255997, + 0.007165479, + -0.0031102905, + 0.008733748, + 0.0010654713, + 0.019659135, + -0.009245568, + -0.004215953, + -0.005095233, + -0.036116116, + -0.008727186, + -0.01232305, + 0.014094734, + -0.010288893, + 0.0016552126, + -0.00054914015, + -0.009265253, + 0.008438467, + 0.035092477, + -0.018189294, + -0.001996426, + 0.01748062, + 0.019002955, + 0.015498958, + -0.006817704, + 0.006214019, + -0.0067783333, + 0.018373024, + 0.004275009, + -0.008536894, + 0.014107858, + 0.011620938, + -0.027218321, + -0.033412658, + 0.008641883, + 0.0015239767, + -0.0006393648, + 0.01057105, + 0.024724841, + -0.01700817, + 0.001861909, + -0.014002869, + 0.01085977, + 0.013884757, + 0.020827135, + 0.013832262, + -0.008943725, + -0.011030376, + -0.024987312, + -0.011305971, + 0.0008915838, + 0.0012877521, + 0.008038198, + 0.009245568, + 0.01155532, + 0.025039807, + -0.043622807, + 0.004199548, + -0.02128646, + -0.048583522, + -0.008674691, + 0.025722234, + -0.029239355, + 0.022428213, + -0.0057875025, + 0.016338868, + -0.014882149, + -0.0033727621, + -0.007447636, + 0.012054016, + -0.008333478, + 0.018228665, + 0.009501478, + 0.008661568, + -0.017205024, + -0.009258691, + 0.001945572, + -0.0033104252, + 0.018386148, + 0.014724666, + 0.001847145, + 0.023740571, + 0.0032497286, + 0.005416761, + -0.0147377895, + 0.0049508736, + -0.019331045, + -0.023228751, + -0.0043110987, + -0.012716757, + -0.008976534, + -0.0056234575, + -0.020538416, + -0.012382106, + -0.023058144, + -0.041890495, + 0.011647184, + -0.021496437, + -0.010282331, + -0.0408931, + 0.009711456, + -0.00541348, + -0.015328351, + 0.004275009, + -0.02194264, + 0.0049279076, + -0.0041503347, + 0.021181472, + 0.021968886, + -0.03162785, + -0.003251369, + 0.022362594, + -0.0034875935, + 0.023136886, + 0.016430732, + -0.0013189206, + -0.010708848, + -0.00113355, + -0.009567096, + 0.0021342235, + 0.0020948527, + 0.032231532, + 0.016443856, + -0.006243547, + -0.0026690098, + -0.0036221105, + -0.0005782581, + 0.00039739866, + -0.02161455, + -0.01389788, + 0.00892404, + 0.009718017, + 0.005160851, + 0.01631262, + 0.019751001, + -0.022769425, + 0.00041236775, + -0.016811317, + 0.0034318184, + -0.014829655, + 0.005761255, + -0.0048918175, + -0.00039657843, + -0.0082481755, + 0.005964671, + 0.0003272695, + 0.022113247, + 0.025315402, + -0.010892578, + 0.0017733249, + -0.005679233, + -0.006670064, + -0.031549107, + 0.012624892, + -0.02161455, + 0.021010865, + 0.0066339737, + 0.014291587, + -0.024344256, + 0.0053445813, + 0.015236486, + 0.021955764, + 0.04047315, + -0.01013141, + 0.0011868646, + 0.014396576, + 0.01013141, + -0.010807275, + -0.022953156, + -0.0036811666, + 0.0059056147, + -0.012099949, + 0.015669564, + 0.006177929, + 0.027769513, + -0.004809795, + -0.023556842, + -0.022283852, + 0.008385973, + 0.010052669, + 0.008169434, + -0.01645698, + -0.0076379282, + 0.011719365, + -0.028556928, + 0.019698506, + -0.0035597733, + 0.02556475, + -0.010741657, + 0.033780117, + 0.0023671673, + -0.005446289, + -0.00314474, + 0.032940205, + 0.005767817, + -0.024987312, + 0.02673275, + -0.014252217, + -0.00438984, + 0.00043758965, + -0.004685121, + 0.010183904, + -0.016443856, + 0.03262524, + -0.008490962, + 0.005797345, + 0.037061013, + -0.0019586955, + -0.0102495225, + 0.014803408, + 0.002326156, + 0.00047942108, + -0.018438641, + 0.029738052, + -0.010623544, + -0.007677299, + -0.010374197, + -0.010052669, + -0.01232305, + 0.031286635, + -0.021877022, + 0.011588128, + -0.028530682, + -0.004078155, + -0.013248262, + -0.0003565925, + -0.00917995, + -0.014422824, + -0.023097515, + 0.014449071, + 0.009173389, + -0.0076116812, + -0.017454373, + -0.0017536395, + 0.0048196376, + -0.008359726, + 0.051234487, + 0.0031004478, + 0.03236277, + -0.0054955026, + -0.00259683, + -0.0030692792, + -0.0050394577, + 0.029318096, + -0.017834956, + -0.010223275, + -0.017401878, + 0.018281158, + -0.010649792, + -0.008162872, + 0.0011745611, + 0.05141822, + 0.007139232, + 0.00053642667, + -0.0068964455, + -0.005922019, + -0.009501478, + 0.008930602, + 0.0059909183, + -0.005101795, + -0.0030988073, + -0.011102555, + -0.018858597, + -0.006975187, + 0.009875501, + 0.015643317, + -0.009534287, + -0.005236312, + -0.030840432, + -0.017992439, + -0.016155137, + 0.10467374, + -0.0028100885, + -0.0047376156, + 0.004537481, + 0.0029052345, + 0.014278464, + 0.00071441534, + 0.005823592, + 0.015971407, + -0.0052428734, + 0.009823006, + -0.033727624, + 0.016391361, + 0.0060795024, + -0.0020981338, + -0.008353164, + -0.0046916828, + -0.033045195, + 0.019790372, + -0.012841431, + 0.009527725, + -0.0100854775, + 0.011673432, + 0.02658839, + -0.0066799065, + -0.007769164, + 0.03968573, + 0.012441162, + 0.021811403, + -0.008733748, + -0.005987637, + 0.022467583, + 0.0029462455, + 0.01872736, + 0.00003957582, + -0.020656528, + 0.030919174, + 0.006889884, + 0.0063911877, + -0.011811229, + 0.025105424, + -0.007112985, + -0.0027608748, + -0.017113158, + 0.011483139, + -0.0010613702, + -0.02333374, + 0.013208891, + -0.029711803, + -0.0043110987, + 0.048216064, + -0.008792805, + -0.0054659746, + -0.00009171133, + -0.0024295042, + 0.015315227, + -0.0067061535, + -0.021168347, + 0.005003368, + -0.0070736143, + -0.016653834, + -0.023976795, + -0.0074082655, + -0.011679994, + -0.018792978, + -0.03698227, + -0.012375544, + -0.0032661331, + -0.042546675, + -0.030892927, + 0.01085977, + -0.029921781, + -0.004048627, + -0.0011286286, + 0.024173649, + -0.025932211, + 0.020249696, + 0.004275009, + 0.009737702, + 0.022743179, + -0.0014255497, + -0.029134367, + 0.0066372547, + 0.011732488, + 0.0022277292, + 0.022913786, + 0.026772121, + -0.031470366, + -0.0019111226, + 0.02040718, + 0.0015830329, + -0.007237659, + 0.021732662, + 0.012664263, + -0.009055276, + -0.023202505, + 0.006758648, + 0.025761604, + -0.010991005, + -0.016522598, + 0.022152618, + -0.02552538, + 0.007906962, + -0.008353164, + 0.015577699, + 0.014094734, + 0.009639275, + 0.023254998, + -0.025000436, + -0.0029380433, + 0.028005738, + -0.03013176, + 0.0069555016, + 0.009632714, + -0.01846489, + 0.026798368, + 0.008910917, + 0.009015905, + -0.01085977, + -0.00917995, + 0.025814097, + -0.025735356, + 0.01375352, + 0.03734973, + 0.001441134, + -0.00081612315, + -0.006128716, + 0.0008440108, + -0.019803494, + -0.0051444466, + -0.010485747, + 0.0017290327, + -0.012697072, + -0.018911092, + -0.028136974, + -0.00943586, + -0.011942466, + 0.011470016, + -0.007920085, + -0.022835044, + -0.0024114593, + -0.004911503, + 0.0072639063, + -0.0034547846, + -0.031732835, + -0.012979229, + 0.017401878, + 0.0037369418, + -0.027165828, + 0.012218061, + -0.017113158, + 0.007828221, + -0.022677561, + 0.0014435947, + -0.0143572055, + -0.018766731, + -0.028399445, + -0.013504173, + 0.017821833, + 0.010420129, + 0.027218321, + 0.0017257519, + 0.013235139, + 0.0030348299, + -0.017821833, + 0.0018635496, + -0.009711456, + 0.0151708685, + 0.001002314, + 0.016876934, + 0.027060838, + 0.013543543, + -0.015538328, + 0.0014362127, + -0.016063273, + 0.018609248, + 0.011804667, + -0.018123675, + -0.017100036, + -0.019029204, + -0.016719451, + 0.0028871894, + -0.012080263, + 0.0030331893, + -0.019396663, + -0.015288981, + 0.022664437, + -0.01210651, + -0.0021899987, + 0.006624131, + 0.009737702, + -0.01938354, + 0.010964758, + 0.020197202, + -0.016194507, + -0.013622285, + -0.015498958, + -0.0038681778, + 0.008425344, + 0.023753695, + 0.018661743, + 0.0017798867, + -0.016404485, + -0.0034219758, + -0.0004466121, + 0.015328351, + -0.00079233665, + -0.016653834, + 0.017953068, + -0.02779576, + -0.015420216, + -0.0022687404, + 0.0033990094, + -0.018058058, + -0.010452938, + 0.012585521, + -0.022362594, + 0.017467497, + -0.02750704, + -0.009514602, + -0.011076309, + -0.010964758, + 0.019737877, + -0.0053773904, + 0.018596124, + 0.013418869, + -0.013005476, + -0.013287633, + 0.017310012, + 0.0036910092, + -0.022585696, + 0.021824528, + 0.0021850774, + -0.010918826, + -0.022191988, + -0.0039305147, + -0.0026903355, + 0.009980489, + -0.0065617943, + 0.035984877, + 0.023740571, + 0.0031709871, + -0.03178533, + -0.02194264, + 0.0073360857, + 0.013235139, + -0.0086812535, + 0.008576265, + -0.0071851644, + -0.0023130325, + -0.01729689, + 0.007040805, + -0.02640466, + 0.019803494, + 0.009927995, + -0.025669739, + -0.009941118, + -0.012099949, + 0.0030988073, + -0.00097442645, + 0.0050525814, + 0.019357292, + 0.018819226, + 0.012401791, + -0.003946919, + -0.00030655882, + -0.032494005, + 0.01784808, + -0.019987226, + 0.020932123, + -0.014186599, + -0.013701026, + -0.002252336, + 0.0045834132, + 0.02644403, + 0.028583175, + 0.004527638, + -0.01960664, + -0.014580307, + 0.0027789199, + 0.024396751, + 0.0030610769, + -0.003269414, + -0.00837285, + -0.021640796, + -0.014514688, + -0.014790284, + 0.0089502875, + 0.012821746, + -0.007493569, + -0.0086812535, + -0.007966018, + -0.0052166265, + 0.020604033, + -0.0020472798, + -0.0138716325, + 0.03616861, + 0.027034592, + -0.004970559, + -0.0028691445, + -0.002472156, + 0.013300757, + -0.034226317, + -0.001879954, + -0.007854467, + -0.007966018, + 0.013648531, + -0.012598645, + -0.00035741273, + -0.011699679, + 0.015774554, + 0.012972667, + 0.016247002, + 0.01225087, + 0.023727447, + -0.010426691, + 0.0062960414, + -0.014659048, + 0.0017241114, + 0.024527987, + -0.0075132544, + 0.006059817, + 0.009225883, + -0.008175995, + 0.03010551, + 0.013182645, + 0.00976395, + 0.012152443, + -0.020131584, + -0.011371589, + -0.012231184, + 0.014711542, + -0.011896533, + -0.008149749, + -0.013701026, + -0.014449071, + -0.0053445813, + 0.015945159, + 0.015302104, + -0.014829655, + -0.021050235, + 0.032756478, + 0.03921328, + 0.012624892, + -0.0059023337, + -0.020354686, + -0.00859595, + 0.002677212, + -0.05448914, + -0.013556667, + -0.0030249872, + 0.030840432, + 0.009376803, + -0.018294282, + -0.031732835, + 0.0062173, + -0.024659222, + -0.006082783, + -0.007493569, + 0.023097515, + 0.01524961, + -0.008116939, + -0.012664263, + -0.0021785158, + 0.0041044024, + 0.022690684, + -0.00010550135, + 0.0061943335, + 0.030158006, + -0.031207893, + 0.02458048, + 0.0014304711, + -0.009494917, + 0.010229837, + 0.0137666445, + -0.00025611502, + 0.00021407854, + 0.0013952014, + -0.017493743, + -0.013609161, + -0.016732575, + 0.0004293874, + -0.011515949, + 0.021522684, + 0.033622634, + -0.037244745, + 0.0027198638, + 0.021667045, + -0.026129065, + 0.0036713239, + 0.008497523, + 0.0007603479, + 0.0069883107, + 0.00015574008, + -0.028530682, + -0.0068242657, + -0.005446289, + -0.041129325, + 0.015682688, + 0.012598645, + -0.012565835, + 0.0076969843, + -0.0027756388, + 0.0055906484, + -0.010557927, + -0.0067192772, + -0.037979666, + -0.007880715, + 0.020997742, + -0.026877109, + -0.008280984, + -0.010741657, + 0.012565835, + -0.034357555, + 0.0047310535, + 0.0003309605, + -0.012821746, + -0.014514688, + -0.0020128305, + 0.016470103, + -0.007106423, + -0.0027297065, + 0.0062533896, + -0.021312708, + -0.001503471, + -0.006528985, + 0.01758561, + -0.010518556, + 0.024436122, + 0.013464802, + -0.007040805, + -0.042494178, + -0.004524357, + 0.013622285, + 0.0016265047, + 0.0060106036, + 0.23475474, + 0.018110553, + 0.0013000554, + 0.031207893, + -0.0067783333, + 0.030525466, + 0.025249785, + -0.005735008, + -0.00994768, + -0.010098601, + -0.018058058, + -0.007749479, + -0.0077626025, + -0.0012992353, + -0.0091668265, + -0.015669564, + -0.020958371, + -0.039160788, + -0.01027577, + -0.022428213, + 0.0016256846, + 0.005928581, + -0.0018291001, + -0.020302191, + 0.033333912, + 0.004567009, + -0.016509473, + 0.013884757, + 0.03228403, + 0.0059154574, + -0.003167706, + 0.009475231, + 0.014606554, + 0.008609074, + -0.012185251, + -0.012185251, + -0.022428213, + -0.0034711892, + 0.015538328, + 0.01872736, + 0.0007808535, + -0.008904355, + 0.005794064, + -0.0053905137, + -0.0031168521, + 0.040210675, + 0.0006287019, + -0.004143773, + 0.018412394, + 0.019449158, + -0.023635583, + -0.009639275, + 0.00980332, + 0.039475754, + 0.013687903, + 0.0080841305, + 0.026024075, + 0.013195768, + 0.0033891667, + 0.0019833022, + -0.017782463, + 0.0065913224, + -0.014435947, + 0.006204176, + -0.003992852, + 0.0025295718, + -0.029134367, + 0.03514497, + 0.005767817, + 0.0020948527, + 0.0146852955, + -0.016811317, + -0.011975274, + -0.010026421, + -0.02051217, + -0.032494005, + 0.027822006, + 0.037953418, + 0.0037763126, + 0.0183599, + -0.022178864, + 0.015288981, + 0.018766731, + -0.00076198834, + 0.011417522, + -0.03404259, + 0.004970559, + 0.008451591, + 0.0037172565, + 0.00175528, + 0.007565749, + 0.0043832785, + -0.014015992, + -0.0038124025, + 0.010544803, + 0.0057186037, + 0.0035466498, + 0.012847993, + -0.01408161, + 0.008405658, + -0.010702286, + -0.005397076, + 0.02519729, + -0.0023655267, + -0.0050985143, + 0.0011097634, + 0.008891231, + 0.015498958, + -0.027008345, + -0.037323486, + -0.01013141, + -0.010439814, + -0.008766557, + -0.0012631454, + 0.029081872, + 0.003628672, + 0.032572746, + -0.0126839485, + 0.012172128, + -0.01608952, + 0.00057374686, + -0.01923918, + -0.018858597, + 0.012933296, + 0.0071917265, + -0.011837477, + -0.018569877, + 0.0038353687, + 0.0082481755, + -0.031732835, + 0.0022392122, + 0.010354511, + -0.00057989854, + -0.0061221537, + -0.006496176, + 0.027926996, + 0.0037402227, + -0.021076484, + -0.010761342, + -0.0017175496, + 0.026929604, + 0.006410873, + 0.011305971, + 0.017572485, + -0.006666783, + -0.0040748743, + 0.022979403, + 0.0016404486, + 0.0028428973, + -0.012368982, + -0.013366375, + -0.017165653, + -0.0035433688, + -0.018884843, + 0.01803181, + -0.019002955, + -0.023451852, + -0.023963673, + -0.014908397, + 0.03616861, + -0.014580307, + 0.0073820185, + 0.033963848, + -0.013431992, + -0.030525466, + -0.0007845445, + -0.16934678, + 0.0274283, + 0.039108295, + -0.00028092682, + 0.010052669, + 0.01989536, + -0.005587368, + -0.012204937, + -0.0038386495, + 0.017113158, + 0.039187036, + 0.0019980664, + -0.025171041, + -0.016522598, + 0.0012483813, + -0.026982097, + -0.008313793, + -0.0037369418, + 0.010931949, + -0.002874066, + 0.016443856, + -0.013806015, + 0.022178864, + -0.027585782, + -0.006597884, + 0.017165653, + 0.0010728533, + 0.02220511, + -0.0019997067, + -0.018609248, + -0.02761203, + -0.010630107, + 0.016076395, + 0.0048918175, + 0.022021381, + 0.021312708, + 0.0015379206, + -0.012565835, + -0.0076707373, + 0.008359726, + 0.009029029, + 0.019331045, + 0.015328351, + 0.008490962, + -0.0035204026, + 0.024698593, + 0.03517122, + 0.0027854815, + 0.0061024684, + -0.014606554, + 0.016037025, + -0.021496437, + -0.003533526, + 0.014475318, + 0.0012811903, + 0.011634061, + -0.0018192574, + -0.0011614376, + 0.0073492094, + -0.016627586, + -0.021995135, + 0.0008579546, + -0.005426604, + -0.0054692556, + -0.022795673, + -0.022323223, + -0.0050985143, + 0.009593343, + -0.026220929, + 0.018163046, + 0.0044849864, + -0.03632609, + 0.013327004, + -0.024947941, + 0.026247177, + 0.018819226, + -0.015000261, + 0.014934643, + -0.009914871, + -0.001301696, + -0.020105338, + 0.027533289, + -0.020840257, + -0.022520078, + 0.010662915, + 0.009396489, + -0.008497523, + 0.0026050322, + -0.0071326704, + -0.016693205, + -0.014317835, + -0.02542039, + 0.0056693903, + -0.03262524, + 0.0063419743, + 0.007867591, + -0.010872893, + -0.002897032, + -0.011424083, + 0.008477838, + 0.027848255, + 0.0021457067, + -0.030420478, + 0.02845194, + 0.029606815, + 0.010833522, + -0.009448984, + 0.014619677, + 0.012408352, + -0.012460847, + -0.028294457, + -0.01129941, + 0.021023989, + 0.0042782896, + -0.009134018, + 0.0009826287, + 0.012939858, + -0.006981749, + 0.004176582, + -0.0014723026, + 0.05496159, + -0.0007816737, + -0.0076969843, + 0.039738227, + -0.00015850834, + -0.013543543, + -0.07690423, + -0.027218321, + 0.02106336, + 0.016194507, + -0.013674779, + 0.04433148, + -0.0055808057, + 0.01762498, + 0.0036188294, + 0.019436033, + 0.0068439515, + -0.018084304, + 0.01371415, + -0.013976621, + 0.0427829, + 0.019081697, + 0.008792805, + -0.028294457, + -0.008182557, + 0.016601339, + -0.017126283, + 0.0041240877, + -0.011634061, + -0.016483227, + 0.000017788614, + -0.0018012126, + -0.029475579, + 0.01755936, + 0.011889971, + 0.011876848, + -0.010807275, + -0.020604033, + -0.01960664, + -0.00281665, + -0.014147229, + 0.009849253, + -0.034173824, + 0.010879455, + 0.020131584, + -0.04015818, + -0.007565749, + 0.00208501, + 0.0046687163, + -0.021850774, + -0.010492309, + -0.004078155, + 0.015735183, + -0.0130186, + 0.023793066, + -0.009527725, + -0.0022687404, + -0.0022917066, + -0.008504085, + 0.015525205, + -0.016443856, + -0.016430732, + -0.01024296, + 0.011430645, + -0.020787764, + -0.0067652096, + -0.00917995, + -0.0043078177, + -0.025945334, + 0.010800713, + 0.016194507, + 0.014882149, + -0.031339128, + -0.026181558, + 0.012605207, + -0.0169688, + -0.016942553, + 0.009081523, + -0.02695585, + -0.00071277487, + -0.023071269, + -0.010518556, + -0.013556667, + -0.0156039465, + 0.024737963, + -0.029239355, + -0.027926996, + -0.028845647, + 0.008746872, + 0.013136712, + 0.023924302, + 0.025879717, + 0.0012024487, + -0.015813924, + -0.0068045803, + -0.024265515, + 0.015315227, + 0.031207893, + -0.0020308753, + -0.025066053, + -0.008707501, + 0.024186773, + 0.0031939533, + -0.006378064, + 0.007447636, + 0.0158008, + -0.012710195, + -0.010072354, + -0.08887294, + 0.013648531, + -0.0027854815, + -0.019094821, + 0.030289242, + -0.014882149, + 0.0027379086, + -0.021352079, + -0.001368134, + 0.012027768, + -0.047271166, + -0.007985704, + 0.0021243808, + 0.0117062405, + -0.020302191, + -0.02490857, + 0.031207893, + 0.012172128, + 0.009665523, + 0.010439814, + 0.014816531, + 0.0035630541, + 0.014514688, + -0.008307232, + -0.020879628, + -0.00073902204, + -0.010945072, + 0.017375631, + 0.0015805722, + -0.0052133454, + 0.009560534, + -0.039187036, + 0.005613615, + 0.0446202, + -0.00075952767, + -0.021575179, + 0.013412307, + 0.024698593, + 0.03446254, + 0.008641883, + -0.009672085, + -0.008602512, + 0.008202243, + -0.020695899, + -0.009744264, + 0.0073229624, + 0.009927995, + -0.002040718, + 0.016470103, + 0.031654093, + 0.0014271903, + 0.03923953, + 0.00039145202, + -0.02304502, + -0.0092193205, + -0.023254998, + 0.017716844, + 0.0036713239, + -0.007723232, + 0.011017253, + 0.023963673, + 0.0125199035, + 0.011640623, + 0.024173649, + 0.023766818, + -0.011056623, + -0.02545976, + 0.0020472798, + 0.021863898, + -0.015341475, + -0.00015502238, + 0.0011679993, + 0.023071269, + 0.0009777073, + 0.028268209, + -0.0183599, + 0.015905788, + -0.0027149424, + -0.029974276, + 0.02212637, + 0.0020718866, + 0.000023261047, + -0.01758561, + 0.020761516, + 0.01254615, + -0.0006791457, + -0.023018774, + 0.00318247, + -0.005954828, + 0.0167457, + -0.004212672, + -0.010649792, + 0.012847993, + -0.0031217735, + 0.010557927, + 0.011279725, + 0.010945072, + -0.005108357, + 0.017782463, + 0.01758561, + 0.008792805, + -0.023018774, + -0.0044423346, + -0.016338868, + -0.016010778, + 0.030315489, + -0.0005606233, + -0.015367722, + -0.012093387, + 0.011050061, + 0.023386234, + 0.026654009, + 0.009613029, + 0.02538102, + -0.026378412, + 0.01700817, + -0.0138191385, + -0.029055625, + -0.03244151, + 0.015695812, + 0.013464802, + 0.023359988, + 0.0060040415, + -0.0077035464, + 0.012716757, + 0.015236486, + -0.0066208504, + -0.008622197, + 0.008038198, + -0.0068964455, + 0.023622459, + 0.007578872, + -0.020564662, + 0.006027008, + -0.013622285, + 0.013661656, + -0.008182557, + -0.0034908745, + -0.017073788, + 0.024186773, + -0.0037336608, + 0.00961959, + 0.0058465586, + 0.012198376, + 0.031837825, + 0.012992352, + 0.022401966, + -0.027664524, + -0.019659135, + 0.009724579, + 0.01729689, + 0.006975187, + -0.012480533, + -0.016706329, + 0.0034022902, + 0.002165392, + 0.017533114, + -0.014278464, + 0.012040893, + 0.039370764, + 0.005219907, + 0.029606815, + -0.01733626, + -0.022730054, + -0.005105076, + 0.017310012, + 0.010991005, + -0.0013927408, + -0.026798368, + 0.0107875895, + 0.00032644926, + -0.016286373, + -0.023241876, + 0.012237746, + -0.014068487, + -0.02431801, + 0.0028806275, + 0.026535895, + 0.018648619, + -0.007723232, + 0.024790458, + -0.020052843, + -0.0042651664, + 0.013477925, + -0.014029116, + -0.007355771, + 0.0037795934, + -0.013340128 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 23, + "total_tokens": 23 + } +} diff --git a/vectorstores/dolt/testdata/TestWithAllOptions.httprr b/vectorstores/dolt/testdata/TestWithAllOptions.httprr new file mode 100644 index 000000000..11f58b712 --- /dev/null +++ b/vectorstores/dolt/testdata/TestWithAllOptions.httprr @@ -0,0 +1,9441 @@ +httprr trace v1 +256 67812 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 61 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["tokyo","potato"]}HTTP/2.0 200 OK +Content-Length: 66856 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:20:11 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 106 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-fqbb6 +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999998 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_8556afbd1c1047e383547116b8e0e438 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + -0.008533556, + 0.0014080032, + -0.010539479, + -0.014651955, + -0.010988966, + 0.012142874, + -0.036978744, + 0.00235981, + -0.014812965, + -0.038239993, + 0.0062223845, + -0.015269161, + 0.011740348, + -0.02619104, + -0.015228909, + -0.01734888, + 0.022621974, + -0.01937493, + 0.017093947, + -0.01806001, + -0.009070258, + 0.015618018, + -0.004125894, + -0.027371783, + -0.012498439, + -0.014504362, + 0.007305851, + -0.0207301, + 0.01004303, + -0.020864276, + 0.01631573, + -0.013820067, + -0.010646819, + -0.017254958, + 0.0031111923, + -0.004622343, + -0.010606566, + -0.008741528, + 0.0027019572, + -0.0042097536, + 0.005702455, + -0.016235225, + -0.0030893888, + -0.012578945, + -0.023977146, + 0.0073729386, + -0.01140491, + 0.012968053, + -0.0033761887, + 0.014168924, + 0.010807829, + 0.018999238, + -0.0352613, + -0.0080706505, + -0.02373563, + -0.0012956313, + -0.030779839, + -0.0047934167, + 0.0034449536, + 0.0035858378, + -0.002752273, + -0.006460546, + -0.01745622, + 0.011847689, + 0.018100264, + -0.018140515, + -0.011136559, + 0.02836468, + -0.017697737, + -0.0014717365, + 0.022943996, + 0.020649595, + -0.0025107574, + 0.00168474, + 0.036549382, + -0.01200199, + 0.0014599962, + -0.00029015433, + 0.008305457, + 0.0134510845, + 0.021763252, + -0.042372596, + 0.004920883, + -0.0032285957, + 0.009157471, + 0.010982257, + -0.010707198, + 0.032604624, + 0.0072387634, + -0.004162792, + 0.010136953, + 0.008540265, + 0.010901752, + 0.011069471, + -0.02836468, + -0.0015295997, + -0.007654707, + 0.048866685, + -0.02313184, + -0.013196152, + -0.006688644, + 0.0035221046, + 0.0070643355, + -0.00834571, + -0.032336272, + 0.00905684, + 0.015336249, + -0.0129278, + 0.0025057257, + -0.0144238565, + -0.00014235172, + 0.031504385, + -0.0054039145, + -0.05342865, + -0.02346728, + -0.018905316, + -0.0015648208, + -0.018650383, + -0.008828742, + -0.012800334, + 0.009479493, + 0.010660237, + 0.026445974, + 0.0047397465, + 0.025775095, + -0.0072119283, + -0.0086408965, + -0.0103717595, + 0.0003601771, + -0.010519352, + 0.03469776, + 0.01069378, + 0.0101101175, + 0.015953457, + -0.028820878, + 0.015483842, + -0.01615472, + 0.009613669, + -0.019254172, + -0.009076967, + 0.0037502027, + 0.010982257, + -0.008842159, + 0.010579731, + 0.0066651637, + 0.021427812, + 0.029116064, + 0.005746062, + 0.0036428624, + -0.004830315, + -0.0010306349, + -0.011740348, + 0.021146044, + -0.000048035847, + 0.0046693045, + 0.006950286, + 0.029760106, + 0.008969626, + 0.00024507978, + 0.0132632395, + -0.000092088354, + 0.0027002802, + 0.03475143, + -0.019683532, + 0.0006000157, + 0.023037918, + 0.0075540757, + 0.020985033, + 0.0032185325, + -0.0101101175, + -0.013444376, + 0.01418234, + -0.038535178, + 0.01042543, + 0.002062947, + 0.023588037, + 0.01718787, + 0.015779028, + -0.024191827, + -0.009123928, + -0.0011388138, + 0.0026583504, + 0.03359752, + 0.020864276, + -0.011331113, + 0.0046625957, + 0.029116064, + 0.018194186, + -0.0019438663, + -0.008251788, + 0.022353623, + 0.031584892, + 0.0312092, + 0.005907072, + -0.67409724, + -0.028337847, + 0.014370186, + -0.00327388, + 0.026123952, + 0.01129086, + 0.014799547, + 0.0065444056, + -0.013303492, + 0.013706018, + -0.03378537, + 0.014276263, + -0.014115253, + -0.014262846, + -0.010707198, + -0.00095683837, + 0.012773499, + -0.009217851, + 0.0007991823, + 0.01025771, + -0.0012327366, + 0.016932936, + -0.0148398, + 0.0017694383, + 0.013323618, + -0.01718787, + 0.00943924, + -0.01140491, + -0.009727717, + 0.023936894, + -0.034295235, + 0.04086983, + 0.0069435774, + -0.015872952, + 0.035824835, + -0.012116039, + -0.024849286, + 0.026553314, + 0.025077384, + 0.040011108, + -0.004266778, + 0.0004216043, + -0.0020277258, + 0.0064202934, + 0.0042131077, + 0.004595508, + 0.03268513, + -0.03104819, + 0.0066752266, + -0.014101836, + 0.015779028, + -0.037032414, + -0.021964515, + -0.01877114, + -0.0018616838, + 0.0050550587, + 0.010921879, + -0.022621974, + -0.0007715086, + -0.00048345077, + -0.011720222, + -0.0025476555, + -0.021011868, + -0.020220235, + -0.008245079, + 0.008587226, + -0.011988573, + -0.018261272, + 0.0036529256, + -0.021722998, + 0.010083282, + 0.015000811, + -0.010318089, + -0.0022273117, + 0.013873737, + 0.015524095, + 0.031799573, + -0.03126287, + -0.001854975, + -0.008218244, + 0.0069368687, + 0.011592755, + -0.017805077, + 0.0018868417, + 0.02341361, + -0.02946492, + -0.035798, + -0.010660237, + 0.020891111, + -0.018382031, + 0.0048739216, + -0.003475143, + -0.001501926, + 0.001458319, + 0.00017883067, + 0.005222778, + -0.0006138525, + -0.012592362, + 0.0035321678, + -0.0051255007, + -0.016409652, + -0.008976335, + 0.013390706, + 0.0005387981, + -0.0105126435, + -0.002769045, + -0.016396236, + 0.017308628, + 0.028901383, + -0.0122435065, + 0.01391399, + -0.010687072, + -0.014638538, + -0.00867444, + 0.021561988, + -0.024151573, + 0.021374144, + 0.009533163, + 0.026754577, + 0.010391885, + 0.0063263704, + -0.003683115, + 0.018194186, + 0.014772712, + 0.01233072, + 0.023574619, + 0.014973976, + -0.0062123216, + -0.0068831984, + 0.0053066374, + -0.01074745, + 0.012498439, + 0.016409652, + -0.016181555, + 0.016033962, + -0.009975942, + -0.000742577, + -0.005424041, + 0.01227705, + -0.042855624, + -0.040950336, + -0.013732853, + -0.0014901856, + 0.0012042243, + 0.013565134, + -0.028176837, + -0.017885583, + 0.0066047846, + -0.01679876, + 0.007715086, + -0.006889907, + -0.004135957, + -0.025989776, + 0.013303492, + -0.008305457, + -0.015067899, + -0.0033543853, + -0.0015681752, + -0.013981078, + 0.009123928, + 0.006661809, + 0.0064639, + -0.036737226, + 0.0028461958, + 0.0015623049, + -0.025721425, + 0.010264419, + 0.015966874, + -0.00055724726, + -0.017992923, + -0.017214704, + -0.019267589, + -0.017979505, + 0.0027355012, + 0.020394662, + 0.006956995, + 0.0052999286, + -0.013008306, + -0.0012218348, + 0.006393458, + 0.006074792, + -0.022474382, + -0.0044378517, + 0.004830315, + 0.025949525, + -0.029062394, + 0.007943184, + 0.019764038, + -0.0070710443, + 0.0040554516, + -0.01293451, + 0.019790873, + 0.003022301, + 0.0042365887, + 0.018543042, + -0.010338215, + 0.013350453, + 0.009419113, + -0.020394662, + 0.018046593, + 0.033758532, + -0.026043447, + 0.0045217113, + -0.01004303, + 0.012679576, + -0.02384297, + -0.0043674097, + -0.020287322, + 0.025493328, + 0.010049738, + 0.0030960976, + -0.017120782, + -0.0055582165, + 0.012954636, + -0.0036696976, + 0.04282879, + 0.006990539, + 0.019401764, + -0.026123952, + -0.0081847, + 0.017590396, + -0.033463348, + -0.009855184, + -0.017550144, + -0.012800334, + 0.010143661, + 0.001518698, + 0.03236311, + 0.01806001, + -0.006651746, + -0.02941125, + -0.021360725, + -0.004068869, + 0.023990564, + -0.0112237735, + -0.035610154, + 0.00096606294, + -0.027197355, + 0.034724597, + 0.008573809, + 0.020824024, + 0.01795267, + 0.035180792, + -0.024621187, + 0.007319269, + 0.006722188, + 0.03612002, + 0.013498046, + -0.0084262155, + 0.022554886, + -0.011586047, + -0.003938048, + -0.00496449, + 0.0010440524, + 0.011344531, + -0.029169735, + 0.01681218, + -0.0015061189, + 0.016543828, + 0.02700951, + 0.0045082937, + 0.0021702873, + 0.011867815, + 0.0019992136, + 0.0035053326, + -0.0006184648, + 0.026620401, + 0.015014228, + -0.0021652556, + 0.008298749, + -0.01729521, + 0.009144054, + -0.007218637, + -0.005313346, + 0.017483056, + -0.017415969, + -0.022554886, + -0.013873737, + 0.014933723, + 0.013229695, + -0.0137127265, + -0.051335514, + -0.0033543853, + 0.008318875, + -0.0014591576, + -0.030189468, + -0.0013761366, + -0.022138942, + -0.015457007, + 0.02078377, + 0.010613275, + 0.023668543, + 0.013940825, + -0.02085086, + -0.017845329, + -0.006651746, + 0.019240754, + -0.0155375125, + -0.0032537538, + -0.008446342, + 0.0064538373, + -0.012397808, + -0.009405696, + 0.0112707345, + 0.013498046, + 0.0134510845, + 0.009211142, + -0.0055414443, + -0.00785597, + 0.00012274954, + 0.002577845, + -0.013571843, + -0.017375715, + 0.01309552, + 0.010344924, + -0.0066148476, + -0.010217457, + 0.0024151574, + 0.02407107, + -0.007319269, + -0.017590396, + -0.0019891504, + -0.02204502, + -0.004588799, + 0.06606797, + 0.00845976, + 0.013524882, + -0.0010541156, + 0.006265992, + 0.0022558242, + -0.020287322, + 0.00009701511, + 0.012847295, + 0.007507114, + 0.0054609394, + -0.0066819354, + 0.0010390208, + 0.0070643355, + 0.00046835604, + -0.002802589, + -0.011559212, + -0.019388346, + 0.022782985, + -0.023386775, + 0.00089226646, + 0.0036864693, + 0.008285332, + 0.02252805, + 0.0006360753, + -0.0050550587, + 0.019093161, + 0.021400979, + 0.015483842, + -0.02400398, + -0.0009954139, + 0.012921092, + -0.015631435, + 0.012592362, + -0.010734033, + 0.002760659, + 0.004102413, + 0.0155375125, + 0.005021515, + -0.009975942, + 0.012216671, + 0.01932126, + 0.0026801538, + -0.0056991004, + 0.021977931, + -0.025198141, + -0.015148404, + 0.018247856, + -0.016731674, + -0.029947951, + 0.03389271, + 0.0076681245, + -0.04014528, + -0.020864276, + -0.014075001, + 0.013115646, + -0.020917946, + -0.018690635, + -0.000033255586, + 0.02280982, + 0.007996854, + -0.050181605, + 0.006658455, + -0.009727717, + -0.028176837, + -0.030457819, + -0.01167997, + -0.0046022166, + -0.028337847, + -0.002445347, + -0.007647998, + -0.021790087, + -0.024862703, + 0.024044234, + 0.019442016, + -0.024232078, + 0.004457978, + -0.00992898, + 0.00055389287, + 0.03617369, + -0.030350478, + -0.013430959, + -0.021105792, + -0.008204826, + -0.02476878, + 0.0201934, + 0.02941125, + -0.03410739, + -0.009606959, + -0.0005840823, + 0.011378075, + -0.0016713225, + 0.011284152, + 0.020649595, + 0.0148263825, + -0.011451871, + 0.0111768115, + 0.029706435, + -0.0045116483, + -0.01663775, + 0.0151349865, + -0.00943924, + 0.0016193294, + 0.012062369, + 0.00774863, + 0.02117288, + 0.01626206, + 0.019240754, + -0.011304278, + 0.00041321834, + 0.041943233, + -0.014558032, + 0.0118879415, + 0.017724572, + -0.0072320546, + 0.021454647, + 0.007339395, + 0.029438084, + 0.01893215, + -0.01462512, + 0.0055246726, + -0.023266016, + 0.016355982, + 0.017147617, + 0.011384783, + -0.003934694, + 0.019079743, + -0.007715086, + -0.008157865, + 0.00466595, + -0.0055615706, + 0.011995282, + -0.015054481, + -0.018019758, + -0.023588037, + 0.0018214312, + -0.027854815, + 0.013397414, + 0.0056957463, + -0.03628103, + -0.010063156, + -0.004987971, + 0.008741528, + -0.002576168, + -0.026553314, + -0.023990564, + -0.00035933853, + 0.012485022, + 0.0029669537, + 0.019442016, + -0.0009232945, + 0.013061976, + -0.015255744, + -0.00216861, + -0.018261272, + -0.032497283, + -0.022957413, + -0.023655124, + 0.008097486, + 0.015872952, + 0.024030816, + 0.011035928, + -0.0023279435, + -0.010948714, + -0.0067725037, + 0.013209569, + -0.004920883, + 0.025453076, + -0.017845329, + 0.023400191, + 0.014987393, + 0.01271312, + -0.022460964, + 0.0015857856, + -0.02798899, + 0.02199135, + -0.0037300764, + 0.0035724202, + -0.012565527, + -0.029706435, + -0.0009107156, + -0.014142089, + -0.0051422725, + -0.0002387903, + -0.0015388242, + 0.0019522522, + 0.0049745534, + -0.006732251, + 0.03142388, + -0.0039850096, + 0.010385177, + -0.012404516, + 0.0031413818, + -0.004300322, + 0.0005509578, + 0.004327157, + -0.011814144, + -0.0040889955, + -0.0030105608, + 0.02668749, + 0.02264881, + -0.009452658, + -0.0010356664, + 0.0003169894, + 0.011908067, + 0.035744328, + -0.00009811577, + -0.014772712, + -0.0043774727, + -0.014034748, + -0.025385987, + -0.018341778, + 0.00033921222, + -0.019723786, + -0.022514634, + 0.012907675, + -0.017067112, + 0.022501215, + -0.02951859, + -0.02635205, + 0.021951096, + 0.0090434225, + 0.022729315, + 0.016355982, + 0.010251001, + -0.00025430432, + -0.001171519, + -0.009835058, + -0.005182525, + -0.013981078, + -0.001215126, + 0.016396236, + 0.030484654, + -0.020609343, + -0.028928218, + -0.010009485, + 0.0024705047, + 0.0022776276, + -0.008419507, + 0.014222593, + 0.0005153174, + 0.009566707, + -0.024057651, + -0.0011497155, + -0.025882436, + 0.038481507, + -0.014772712, + 0.0047062025, + -0.002480568, + -0.030618828, + -0.0054106233, + 0.018153934, + -0.010029612, + 0.009311774, + 0.013833485, + -0.016959772, + 0.0020478521, + -0.018462537, + -0.018194186, + 0.02046175, + 0.0029568905, + 0.026647236, + 0.009513036, + -0.008285332, + 0.013779814, + 0.010599857, + -0.013632222, + 0.0006297858, + 0.004833669, + 0.024419924, + -0.007943184, + -0.009526454, + -0.018797975, + -0.0017006734, + 0.00094090507, + 0.0022776276, + 0.009298356, + -0.013176025, + -0.02003239, + -0.005746062, + 0.009700882, + 0.006269346, + -0.004572027, + -0.007044209, + -0.025278646, + -0.030350478, + -0.009117219, + 0.0016620979, + 0.012169709, + -0.01663775, + -0.009224559, + -0.0037233676, + -0.02946492, + 0.01745622, + -0.011693387, + -0.0042097536, + 0.009935689, + 0.027251026, + -0.016906101, + 0.009620377, + -0.007547367, + 0.019455435, + -0.025090802, + -0.006044602, + -0.0030742942, + -0.01674509, + 0.013887155, + -0.01358526, + -0.0122904675, + -0.021253385, + 0.012357555, + 0.0021971224, + 0.0062794094, + 0.021843757, + 0.042962965, + -0.020354409, + -0.0024654733, + -0.025761679, + -0.025520163, + 0.009452658, + -0.009996068, + 0.02008606, + 0.024916373, + -0.001707382, + 0.0012134488, + 0.013061976, + -0.012082496, + -0.00878849, + -0.010391885, + -0.03115553, + -0.008647605, + 0.0130015975, + -0.014142089, + -0.007815718, + -0.017469639, + 0.0012578944, + -0.0071716756, + 0.0097545525, + 0.008151156, + 0.0011295893, + 0.0004297806, + 0.025171306, + 0.011492124, + 0.012022117, + -0.013310201, + -0.024352837, + 0.011310987, + -0.007654707, + -0.026902169, + -0.03459042, + -0.0025979714, + 0.01544359, + 0.0014096803, + -0.02085086, + -0.022675645, + 0.010727324, + -0.02836468, + -0.0049376553, + -0.010821247, + 0.026110535, + 0.017670901, + -0.010848082, + 0.0077888826, + 0.006651746, + 0.019737203, + 0.008037107, + 0.004048743, + 0.01042543, + 0.034134224, + -0.031128695, + 0.03252412, + 0.0111768115, + -0.019160248, + -0.008748237, + 0.008828742, + -0.002343038, + 0.005712518, + 0.013591969, + -0.008251788, + -0.008567099, + -0.011357948, + 0.0051020198, + -0.025560416, + 0.018757721, + 0.006198904, + -0.046854053, + 0.026365468, + 0.013155899, + -0.010861499, + 0.00041133148, + 0.0111768115, + -0.0046894304, + -0.0024252206, + 0.0062928265, + -0.030243138, + -0.0018063365, + 0.0004939332, + -0.023708794, + 0.029760106, + -0.011753766, + 0.0111768115, + 0.02307817, + 0.021481482, + -0.0052730935, + -0.02471511, + -0.003683115, + -0.011384783, + -0.008694567, + 0.025520163, + -0.0027623363, + -0.027452288, + -0.004042034, + 0.02199135, + -0.042426266, + 0.011304278, + 0.009828349, + -0.0056018233, + -0.018086845, + 0.0098015135, + 0.025493328, + -0.02984061, + -0.0151349865, + 0.009117219, + -0.015738776, + -0.009311774, + -0.010244292, + 0.028472021, + -0.026392303, + 0.018408867, + 0.0017207996, + -0.002237375, + -0.03874986, + -0.01467879, + 0.0053871428, + -0.0077687562, + -0.008466468, + 0.21124576, + -0.019656697, + -0.00076354196, + 0.04103084, + -0.009996068, + 0.03775696, + 0.027251026, + 0.0010784349, + -0.011344531, + 0.0022055083, + -0.038320497, + 0.0075339493, + 0.01544359, + -0.0013962629, + -0.00020388373, + -0.01871747, + -0.024191827, + -0.02782798, + -0.041379698, + 0.0017358944, + 0.009197724, + 0.0018683926, + 0.0033208414, + -0.014544615, + 0.018784557, + 0.011250608, + -0.005222778, + -0.008868994, + 0.017563561, + 0.018891897, + 0.0015430172, + 0.0030172695, + -0.0014792839, + 0.014866635, + -0.0057661883, + -0.0026633819, + -0.005642076, + -0.008137738, + 0.031772736, + 0.023762465, + -0.0022541468, + 0.0028965117, + -0.005947325, + -0.009009879, + -0.007446735, + 0.023091588, + -0.007929767, + 0.0031279642, + -0.011921485, + 0.030296808, + -0.037354436, + -0.015121569, + 0.040574644, + 0.02471511, + 0.011592755, + -0.013732853, + 0.03322183, + 0.00682282, + -0.009915562, + -0.008104195, + -0.020126311, + 0.02291716, + -0.010358342, + 0.02352095, + 0.005216069, + -0.0038810237, + -0.01478613, + 0.0061888406, + -0.0007912156, + -0.010324798, + 0.017254958, + -0.011431745, + -0.009070258, + -0.021092374, + -0.033517018, + -0.023547783, + 0.032711964, + 0.005598469, + 0.011398201, + 0.0348051, + -0.005088602, + 0.009486201, + 0.02580193, + 0.004535129, + 0.00022180872, + -0.01937493, + 0.017415969, + 0.010130243, + 0.015309414, + -0.00709117, + -0.008761655, + -0.024205243, + -0.008976335, + -0.017872164, + -0.009781388, + 0.01200199, + -0.005940616, + 0.016074214, + -0.010848082, + -0.014061583, + -0.009499619, + -0.028015826, + 0.011438454, + -0.0069368687, + 0.0058299215, + 0.007829135, + -0.00030021748, + -0.0067792125, + -0.00050525425, + -0.030967684, + 0.0037233676, + -0.037569113, + 0.0070643355, + 0.01615472, + 0.0077016684, + -0.0020881048, + -0.016248642, + -0.025949525, + 0.018140515, + -0.019401764, + 0.02307817, + -0.017872164, + -0.009519746, + -0.006363269, + -0.004726329, + -0.008889121, + -0.0062794094, + -0.014303098, + 0.0056823287, + -0.041621212, + 0.003022301, + -0.0030742942, + 0.022514634, + -0.0012444769, + -0.0064639, + 0.018556459, + 0.0053670164, + -0.010707198, + -0.017268375, + 0.026164206, + 0.008969626, + -0.008385963, + 0.019683532, + 0.0026617048, + -0.0051758164, + -0.020904528, + 0.0063431426, + 0.021105792, + -0.016074214, + 0.010861499, + -0.021548571, + -0.021065539, + -0.0011471998, + -0.014061583, + 0.030162632, + -0.007882806, + -0.022943996, + -0.01985796, + 0.0033225187, + 0.0111768115, + -0.030243138, + -0.009204433, + 0.049725406, + -0.02193768, + -0.027532794, + -0.011539085, + -0.17464271, + 0.028981889, + 0.019133413, + -0.022165777, + 0.026767993, + 0.010807829, + -0.0056991004, + -0.018247856, + -0.0051925885, + 0.016758509, + 0.05173804, + 0.013075394, + -0.008600644, + -0.011243899, + 0.0037032412, + -0.007876096, + -0.0034784975, + 0.0049477182, + 0.028981889, + 0.013692601, + 0.0470419, + -0.03137021, + 0.0148263825, + -0.00062517356, + -0.0007048402, + 0.024084486, + -0.00038973763, + -0.00087381736, + 0.016275477, + -0.010633402, + -0.023333104, + -0.013216278, + 0.03501978, + 0.022353623, + 0.009989359, + 0.013659056, + -0.008627479, + -0.018207602, + -0.019348094, + 0.03595901, + 0.005779606, + 0.010666945, + -0.003039073, + -0.012672868, + 0.0124313515, + 0.03088718, + 0.008278623, + -0.003917922, + -0.025761679, + -0.008775072, + 0.021454647, + -0.016610915, + -0.0030172695, + 0.01936151, + 0.00867444, + -0.0107742855, + 0.008627479, + 0.0098954365, + 0.0017845329, + -0.013752979, + -0.03469776, + -0.012283759, + 0.021602241, + 0.0018415574, + -0.015067899, + 0.0014172278, + -0.01222338, + -0.010546187, + -0.019281005, + 0.017805077, + 0.0009258103, + -0.016194971, + 0.021199714, + -0.043177646, + 0.019240754, + 0.005024869, + -0.009647212, + 0.024191827, + 0.019670116, + -0.0005023192, + -0.022474382, + 0.052999288, + -0.0148263825, + -0.0047665816, + 0.0010633401, + 0.009955815, + 0.0043841815, + -0.011438454, + -0.029277075, + -0.021696163, + 0.02199135, + -0.025520163, + -0.014638538, + -0.0109151695, + -0.0012620875, + 0.010687072, + -0.007876096, + 0.023695378, + -0.021951096, + 0.004692785, + 0.011834271, + -0.009700882, + -0.010163788, + 0.043231316, + 0.026003195, + 0.023910059, + 0.018301526, + 0.026016612, + 0.01930784, + 0.008057233, + -0.020837441, + 0.002262533, + 0.015175239, + 0.02629838, + -0.024876121, + 0.0036965325, + 0.013122355, + -0.01320286, + 0.009519746, + 0.007574202, + 0.037086084, + -0.015819281, + 0.0041393116, + 0.023883224, + -0.008936082, + -0.026445974, + -0.07358179, + 0.0043674097, + 0.006765795, + 0.022393877, + -0.0055951145, + 0.039501242, + 0.0112707345, + 0.011310987, + -0.0024067715, + 0.018449118, + -0.0077352123, + -0.018019758, + 0.00911051, + -0.01985796, + 0.024809033, + -0.0033208414, + -0.0022876908, + -0.002638224, + -0.0043170936, + 0.023091588, + -0.014973976, + -0.016839014, + 0.004830315, + -0.010479099, + -0.01473246, + 0.0066752266, + -0.010713906, + 0.017831912, + 0.015725357, + 0.0072991424, + 0.0033493536, + 0.004387536, + 0.00965392, + -0.026982674, + -0.013310201, + 0.013954243, + -0.010700489, + 0.008278623, + 0.03365119, + -0.051469687, + -0.0030189466, + 0.012760081, + -0.0061687143, + -0.0034717887, + -0.009828349, + -0.013383997, + -0.028579362, + 0.00679263, + -0.00336948, + -0.015966874, + -0.018838227, + -0.0043170936, + 0.0026650592, + -0.008271914, + 0.017415969, + -0.005625304, + 0.004927592, + 0.0253189, + -0.03464409, + 0.01681218, + 0.0035824834, + -0.0038072274, + -0.014920305, + 0.02925024, + 0.008667732, + 0.011411618, + -0.018435702, + -0.033114493, + 0.031853244, + -0.018757721, + -0.015577765, + 0.021239968, + -0.020810606, + 0.00534689, + -0.027693804, + -0.010633402, + -0.00274221, + -0.017120782, + 0.018972402, + -0.024057651, + -0.014236011, + -0.028391516, + 0.0015069576, + 0.007050918, + 0.0030357186, + 0.0041762097, + 0.010942005, + -0.0034248272, + 0.018314943, + -0.016476741, + 0.005407269, + 0.008164573, + 0.0094929105, + -0.029438084, + -0.006276055, + 0.022380458, + 0.002037789, + -0.015000811, + 0.002542624, + 0.0071783843, + -0.013457794, + -0.022340206, + -0.07546025, + 0.028659867, + 0.0013124032, + -0.008292041, + 0.020502003, + 0.005128855, + 0.018704053, + 0.0069704126, + 0.0116732605, + -0.022541469, + -0.045082938, + 0.009459366, + -0.013457794, + -0.0042466517, + -0.032953482, + -0.024809033, + 0.024996879, + 0.020743519, + 0.008681149, + 0.015913203, + 0.011357948, + 0.0013442698, + 0.024272332, + 0.010391885, + -0.03410739, + 0.0077620475, + -0.0030055293, + 0.026593566, + -0.024970043, + -0.015779028, + 0.0258556, + -0.027479123, + -0.007963311, + 0.009157471, + 0.0001614298, + -0.0061620055, + 0.0016956418, + 0.0126929935, + 0.009432531, + 0.031450715, + -0.020555673, + -0.0069435774, + 0.012283759, + -0.011257317, + 0.00649409, + 0.0001541969, + 0.0020797187, + 0.0052294866, + 0.017120782, + 0.016329147, + -0.010526061, + 0.03349018, + -0.008258496, + -0.0069033247, + -0.0057628336, + -0.026284963, + 0.017000025, + 0.0105126435, + -0.008493303, + -0.0113176955, + 0.023252599, + 0.004424434, + 0.016825596, + 0.010948714, + 0.012404516, + -0.007822426, + -0.02286349, + -0.0028428414, + 0.012491731, + -0.035529647, + -0.02930391, + 0.007970019, + 0.009808223, + 0.014397021, + 0.008714693, + 0.0009325191, + 0.0090903845, + -0.0067456686, + -0.03357069, + 0.023923475, + 0.005085248, + -0.000054613585, + -0.053348143, + 0.0060546654, + 0.01255211, + -0.01816735, + -0.0072052195, + -0.012458187, + -0.01953594, + 0.026835082, + -0.005447522, + -0.0075674932, + 0.0049846163, + 0.0030524905, + 0.0028327783, + 0.018757721, + -0.008325584, + -0.022031602, + 0.026794828, + 0.028418351, + 0.01871747, + -0.0074936966, + -0.011633008, + -0.0070106653, + -0.012833878, + -0.009747843, + -0.019884795, + -0.022018185, + 0.009975942, + 0.01462512, + 0.02286349, + 0.015792446, + -0.0005379595, + 0.018596712, + -0.01031138, + 0.006520925, + -0.017831912, + -0.036254197, + -0.01936151, + 0.018891897, + 0.03378537, + 0.021213133, + 0.026942423, + -0.005997641, + 0.016047379, + -0.0019203855, + 0.008942791, + -0.02613737, + 0.0029417959, + -0.0035153958, + 0.01626206, + 0.00976797, + -0.017899, + -0.0025308838, + -0.00878849, + 0.0038273535, + 0.0076681245, + 0.02836468, + -0.003978301, + 0.05291878, + -0.01135124, + 0.0014675435, + -0.0017375716, + 0.0059607425, + 0.02122655, + -0.004655887, + 0.016718255, + -0.025412822, + -0.014705625, + 0.0030575222, + -0.011163394, + 0.00698383, + -0.014598285, + -0.02471511, + -0.0051355637, + -0.020354409, + 0.019442016, + -0.010398595, + 0.015685106, + 0.037783794, + -0.003874315, + 0.02658015, + 0.018395448, + -0.013571843, + 0.0013308524, + 0.021535153, + 0.011612882, + 0.009305065, + -0.02389664, + 0.016825596, + -0.00226421, + -0.018650383, + -0.0112707345, + 0.0061519425, + -0.015054481, + -0.02613737, + 0.009996068, + 0.0024587645, + 0.014665373, + 0.0005983385, + 0.019227337, + -0.020985033, + -0.024299167, + 0.01734888, + -0.005806441, + -0.003579129, + -0.0024621189, + -0.01948227 + ] + }, + { + "object": "embedding", + "index": 1, + "embedding": [ + -0.0023426407, + -0.031335898, + 0.0022720497, + -0.026686734, + -0.028682984, + -0.00530911, + -0.026870599, + -0.019752385, + -0.0106050875, + -0.029996308, + 0.00056267704, + 0.0222083, + -0.0049840626, + 0.026581667, + -0.0053452267, + 0.035197068, + 0.029602312, + -0.01461729, + 0.047857508, + -0.021302108, + -0.0134090325, + -0.0044160504, + 0.014288959, + -0.009574128, + -0.032911886, + -0.012995336, + 0.00978426, + -0.026213937, + 0.004136969, + -0.007400578, + 0.021105109, + -0.027474727, + -0.020855578, + -0.017769266, + -0.035249602, + -0.023744889, + -0.0021932502, + -0.013776763, + 0.02797379, + 0.004202635, + 0.0021308674, + 0.002152209, + -0.008549736, + -0.001971627, + -0.018439062, + -0.00013943802, + -0.025045078, + -0.027789924, + -0.018373396, + 0.012719538, + 0.027474727, + 0.023298359, + -0.0069080815, + -0.0013042943, + 0.0061036707, + 0.010053491, + -0.00037819613, + 0.023652956, + -0.020632312, + -0.016955007, + -0.005542225, + 0.017716734, + -0.033647347, + 0.02127584, + -0.017743, + -0.0037298386, + 0.0028794617, + -0.005433876, + -0.004402917, + 0.009226098, + 0.006317086, + 0.034277745, + 0.017756134, + -0.00803754, + 0.01660041, + -0.010342423, + -0.015050687, + -0.0052565774, + 0.0033407665, + -0.0009373846, + 0.015431551, + -0.019030057, + 0.0026627635, + 0.008457803, + 0.016022546, + 0.005085845, + -0.024953146, + 0.010020658, + -0.014288959, + -0.01737527, + -0.0010490172, + 0.020120116, + 0.014013162, + 0.01900379, + -0.029339647, + 0.029365914, + 0.018727994, + 0.03333215, + -0.023311492, + -0.027264595, + -0.017349003, + 0.010086324, + -0.004924963, + -0.018741125, + -0.008090072, + 0.00020397555, + 0.010683887, + -0.0021686254, + 0.02078991, + -0.010316156, + -0.009002833, + 0.04554606, + 0.007853675, + -0.020225182, + 0.00070837385, + -0.0048658634, + 0.019108856, + -0.01900379, + -0.014879955, + -0.008884633, + 0.012995336, + -0.00022716392, + 0.018911859, + -0.038060114, + 0.017073205, + -0.0011089375, + -0.01372423, + 0.0060150214, + -0.005584908, + -0.0035689566, + 0.03459294, + 0.010513155, + -0.0036214895, + 0.0058804057, + -0.025439076, + -0.0046721483, + -0.035722397, + -0.02321956, + -0.017769266, + -0.020225182, + 0.012883703, + 0.021420306, + -0.028998183, + -0.018990658, + -0.006986881, + 0.03779745, + 0.030075109, + 0.010184824, + -0.010046924, + -0.0034474742, + 0.016574143, + 0.0023853239, + 0.028814318, + -0.020120116, + -0.00037388678, + -0.009212964, + -0.01073642, + 0.013934362, + 0.006796449, + 0.009035666, + -0.021341506, + -0.0041074194, + 0.008142605, + -0.018767392, + 0.0055586416, + 0.036562927, + 0.019332122, + -0.003058402, + 0.0013830938, + -0.013402466, + -0.0034080744, + 0.031073233, + -0.021105109, + 0.02090811, + 0.017861199, + -0.009245797, + -0.0013822729, + 0.0054732757, + 0.010506588, + 0.008930599, + -0.02585934, + 0.0026315718, + 0.025347143, + 0.04210515, + -0.0068752486, + 0.005689974, + 0.004136969, + 0.0015530051, + -0.01879366, + -0.009061932, + 0.022457832, + 0.010204524, + 0.01826833, + 0.005259861, + -0.68965244, + -0.025990672, + 0.018058198, + -0.015168887, + 0.030180173, + 0.036195196, + 0.010092891, + -0.0030239273, + -0.011596646, + -0.015195153, + 0.0041862186, + 0.016206412, + 0.001814028, + -0.0022720497, + 0.00007690125, + -0.025439076, + 0.024782414, + 0.0021998168, + -0.010762686, + 0.008641669, + -0.023810554, + 0.018977525, + -0.008956866, + 0.004094286, + 0.005253294, + 0.005447009, + 0.01110415, + 0.0052368776, + -0.005906672, + 0.017427802, + -0.016666075, + -0.012450307, + 0.012601339, + -0.03170363, + 0.049564827, + -0.01021109, + -0.012003777, + 0.030784303, + -0.00087746425, + 0.024138886, + -0.008733601, + -0.025439076, + 0.031440966, + -0.0063761855, + -0.019621054, + 0.0054371594, + 0.019634185, + 0.00038743042, + -0.005200761, + -0.032544155, + -0.0007428486, + 0.009902459, + -0.005978905, + -0.009160431, + 0.016390277, + 0.00076501095, + 0.0013280984, + -0.015405284, + -0.018412795, + 0.0074071446, + -0.025097612, + 0.009521595, + -0.019358387, + -0.035144538, + -0.0070656803, + -0.012332108, + -0.022313366, + 0.0037692385, + 0.01815013, + -0.010591954, + 0.01461729, + 0.018583527, + 0.014551624, + -0.023561023, + 0.009534729, + 0.021341506, + 0.003276742, + 0.009928726, + 0.002127584, + -0.002217875, + -0.010769253, + 0.013947495, + -0.004698415, + -0.005647291, + 0.046228986, + -0.011819911, + -0.025058212, + 0.0057293735, + 0.0082805045, + 0.00012035378, + 0.004087719, + 0.035985064, + -0.007249546, + -0.016350877, + -0.027343394, + -0.0061857537, + -0.042683013, + -0.017309604, + 0.005689974, + -0.00069277815, + -0.008057239, + -0.003624773, + 0.0071116467, + 0.014525358, + 0.0057392237, + 0.03422521, + -0.022523498, + 0.0128180375, + 0.024900613, + -0.037666116, + 0.0131266685, + -0.0015513634, + -0.006986881, + -0.026647333, + 0.015694216, + -0.029707378, + 0.008884633, + 0.009876193, + -0.0008076939, + -0.021341506, + 0.020697977, + 0.007945607, + 0.016902473, + -0.0039925035, + 0.0010375256, + -0.00066487, + -0.013750497, + -0.03356855, + -0.029576045, + -0.012936236, + -0.012844304, + -0.0046754316, + 0.011734545, + -0.010526287, + 0.009823659, + 0.009863059, + 0.014945622, + -0.002255633, + 0.006954048, + 0.0028860283, + -0.008582569, + -0.0005680124, + 0.0054273093, + 0.008030973, + 0.0019962518, + -0.030784303, + -0.012194209, + -0.004402917, + -0.0036641725, + 0.013205468, + 0.014748623, + -0.010112591, + -0.013803029, + 0.013829296, + 0.020409048, + -0.014604157, + -0.009613528, + -0.010257056, + -0.013711097, + -0.00807694, + 0.007190446, + 0.025688607, + 0.000911939, + 0.008411837, + -0.004274868, + -0.034330275, + -0.021643572, + 0.013047868, + -0.04375994, + -0.021091975, + 0.02057978, + -0.0046425983, + 0.01021109, + -0.0060544214, + -0.015694216, + 0.027711125, + -0.0036313394, + -0.005847573, + 0.015076954, + 0.0075056436, + -0.017926866, + -0.007807708, + -0.009928726, + 0.0013092194, + 0.0067077996, + 0.0017237371, + -0.011767378, + 0.025018813, + -0.004297851, + 0.014013162, + 0.00086186855, + -0.0019190939, + 0.0057720565, + 0.0046951314, + -0.0002177244, + -0.008208272, + -0.0060609877, + 0.011012217, + 0.002759621, + 0.023823688, + 0.027553527, + -0.015720483, + -0.0015439759, + -0.0079718735, + -0.0010859544, + -0.038401578, + -0.00080974604, + 0.0074071446, + 0.014446558, + 0.0019601353, + -0.0013691398, + -0.024257084, + -0.014788022, + -0.0069606146, + 0.01956852, + 0.04052916, + 0.0108020855, + -0.0051843445, + -0.006189037, + 0.012719538, + 0.017191404, + 0.0030025858, + -0.0013198901, + 0.0072167125, + -0.022667963, + 0.018530995, + 0.016350877, + 0.046544183, + 0.022195166, + -0.016022546, + -0.0040122033, + 0.0026775382, + 0.010506588, + 0.0088124005, + 0.003211076, + 0.0043438175, + 0.01684994, + -0.01244374, + 0.02537341, + 0.006287536, + -0.022287099, + 0.01465669, + 0.0062481365, + -0.011839611, + -0.0076632425, + 0.01067732, + 0.016429678, + 0.0017434369, + -0.013067569, + -0.0049807793, + -0.011458747, + 0.031519763, + -0.023600424, + -0.02570174, + -0.0070262807, + -0.031493496, + -0.003966237, + 0.0358012, + 0.035958797, + 0.022418432, + 0.029129514, + 0.000092496964, + -0.007380878, + 0.003509857, + -0.00067513034, + 0.00530911, + 0.0028794617, + -0.014288959, + 0.0012886986, + 0.021840569, + -0.017349003, + 0.0057096737, + 0.008221405, + -0.004619615, + -0.009580695, + -0.0028088705, + -0.0050168955, + 0.03309575, + -0.012614472, + -0.008661368, + -0.028446587, + -0.017834933, + 0.020146383, + 0.008608836, + -0.0036083562, + -0.000045068544, + -0.01945032, + 0.011990643, + -0.022733629, + 0.0031240683, + 0.0046327487, + 0.020277714, + 0.0051350947, + 0.007945607, + -0.010933418, + 0.010151991, + 0.0049052634, + -0.013310534, + 0.010848052, + 0.008576002, + 0.0044226167, + -0.013369633, + -0.013474699, + -0.010060058, + 0.034067612, + -0.0017352287, + 0.017230805, + -0.014709223, + 0.009823659, + -0.008694202, + 0.0015743466, + 0.0043733674, + 0.012548806, + -0.010197957, + -0.010394955, + 0.0056078914, + -0.012476573, + 0.017966265, + 0.036510393, + 0.00623172, + -0.015720483, + -0.003050194, + -0.01469609, + -0.0022966745, + 0.04938096, + 0.041107025, + 0.006796449, + 0.0012386282, + 0.016863074, + 0.006106954, + -0.030994434, + -0.0002626647, + 0.024401551, + 0.0027054464, + 0.010500021, + 0.0003295621, + 0.026056338, + -0.0005347689, + 0.007939041, + 0.010591954, + 0.00623172, + -0.0046327487, + -0.009580695, + -0.009639794, + 0.020435313, + 0.00081426057, + 0.019016923, + 0.011025351, + 0.0071444795, + 0.0026808216, + 0.03832278, + 0.02071111, + 0.030994434, + 0.014091961, + -0.02366609, + -0.0018780526, + 0.00038127424, + -0.017467203, + -0.00443575, + -0.025951272, + 0.022024434, + 0.010999084, + -0.00577534, + 0.012634172, + 0.02789499, + -0.004225618, + -0.0038710209, + -0.0063105193, + 0.016258944, + -0.01822893, + 0.0026069472, + 0.03191376, + 0.00013092194, + -0.010046924, + 0.0049840626, + 0.016088212, + -0.01388183, + 0.0004998837, + -0.006366336, + 0.00036690975, + -0.003020644, + 0.0057819067, + -0.0061200876, + 0.0027136547, + -0.010953118, + -0.022681097, + 0.00014025884, + -0.00042149477, + -0.010545988, + -0.0068358486, + -0.010920284, + -0.0119775105, + -0.020238316, + 0.018452195, + -0.011767378, + 0.0035656733, + -0.028577918, + -0.0076501095, + 0.030626703, + 0.019673586, + 0.0043733674, + 0.00484288, + 0.009534729, + 0.034277745, + 0.005138378, + -0.024349017, + -0.019594787, + -0.011622913, + -0.0046819984, + -0.001624417, + 0.023088226, + -0.008339604, + -0.0047148312, + 0.0011606496, + 0.034698006, + -0.012640739, + -0.0054502925, + -0.0050267456, + 0.009712027, + -0.0053222436, + 0.0088518, + 0.00033366625, + -0.0064517017, + -0.012765504, + 0.004885563, + -0.012923103, + -0.00050603994, + -0.010303022, + 0.0035394067, + 0.0051843445, + 0.010683887, + 0.018517861, + -0.011439048, + 0.0030813853, + 0.029208314, + -0.0068424153, + -0.007847108, + -0.004698415, + 0.005272994, + 0.01692874, + 0.007032847, + 0.006940915, + -0.025544142, + 0.001823878, + -0.011544113, + -0.021052575, + 0.014026294, + 0.01469609, + -0.0013830938, + 0.0010424505, + 0.023324626, + -0.03167736, + -0.02789499, + 0.002137434, + 0.017283337, + 0.009022532, + 0.002245783, + -0.0023442823, + -0.021814303, + -0.0010793877, + 0.015562884, + 0.018570393, + 0.006402452, + -0.021853702, + -0.01822893, + -0.018045064, + -0.00757131, + -0.014394025, + -0.020803044, + -0.03475054, + 0.00398922, + 0.012548806, + 0.01199721, + 0.01737527, + 0.0058869724, + 0.0057884734, + -0.012023477, + 0.0075581768, + 0.008208272, + -0.03369988, + -0.035144538, + 0.000012607393, + 0.019831184, + 0.013566632, + 0.026699867, + 0.0034080744, + 0.005857423, + 0.022155767, + -0.011583513, + -0.0043372507, + 0.026122004, + 0.0024493483, + -0.011242049, + 0.0058311564, + 0.036431592, + 0.035092004, + 0.0021505672, + -0.0021719087, + -0.024060085, + 0.0052631437, + -0.0040351865, + 0.0057523567, + -0.039005708, + -0.017243937, + 0.0048691467, + 0.000645991, + -0.012161375, + 0.015234552, + 0.009968125, + -0.022589164, + 0.010053491, + -0.016836807, + 0.012975636, + -0.0049479464, + 0.0125685055, + -0.0058541396, + 0.013750497, + -0.0055290917, + 0.022707364, + -0.013474699, + 0.0017697033, + 0.019305855, + -0.0056111747, + 0.002170267, + 0.0068555484, + 0.0054273093, + -0.033148285, + -0.0021669837, + -0.010644487, + 0.03065297, + -0.011800212, + -0.012660438, + 0.0040122033, + -0.045493525, + 0.00001976398, + -0.0041139857, + -0.015470951, + -0.02191937, + 0.00799814, + 0.015484083, + -0.020553512, + 0.026607934, + -0.023626689, + -0.013251434, + 0.009863059, + 0.00006607659, + 0.03438281, + 0.024454083, + 0.04218395, + -0.004402917, + -0.003660889, + -0.02975991, + 0.010414655, + 0.012233608, + 0.00044488834, + -0.0010145424, + 0.0014947263, + -0.004488283, + -0.028525386, + 0.014459692, + -0.0017976115, + 0.020330248, + -0.04129089, + 0.0132777, + -0.00492168, + 0.020566646, + -0.018754259, + -0.03348975, + -0.015773015, + 0.024073219, + -0.010165124, + 0.0077157756, + -0.026082605, + -0.023324626, + -0.029943775, + 0.029812442, + 0.0012591489, + 0.011714846, + 0.007518777, + -0.017939998, + -0.0004896234, + -0.0044587334, + -0.019791786, + 0.013231734, + -0.00057827274, + 0.021249574, + -0.011130417, + 0.023600424, + -0.010033791, + 0.004796914, + -0.012962502, + 0.0024690481, + -0.002418157, + 0.022667963, + -0.014131361, + -0.021157641, + -0.009140732, + 0.010447488, + 0.007814275, + -0.003143768, + -0.017270204, + -0.001106475, + 0.004819897, + -0.021788036, + 0.010710153, + -0.010086324, + -0.036431592, + -0.014144494, + -0.0013239942, + -0.017559135, + -0.019699853, + -0.006940915, + 0.0067570494, + -0.015300219, + -0.013606031, + 0.00023414096, + 0.008687635, + 0.023902487, + 0.010526287, + -0.002749771, + 0.009101332, + 0.014879955, + -0.030968167, + 0.033936277, + -0.009147298, + 0.004491566, + -0.010427789, + 0.0017073206, + -0.024624815, + -0.008746735, + 0.018977525, + -0.020067582, + -0.029365914, + 0.0017729867, + -0.0046327487, + 0.0034803073, + 0.020290848, + -0.011517847, + 0.054056395, + -0.007479377, + -0.0037068555, + -0.025833072, + -0.0033588249, + -0.0030452688, + -0.018517861, + 0.025885606, + 0.01240434, + 0.01628521, + -0.005200761, + -0.0011836328, + 0.010985951, + 0.00032730485, + -0.044810597, + -0.041264623, + -0.00039153456, + 0.036195196, + 0.00053846266, + 0.0071379133, + -0.000006310109, + -0.0039925035, + -0.015050687, + 0.00929833, + -0.01558915, + -0.0111369835, + -0.008004706, + 0.01290997, + -0.0024985978, + -0.007840541, + -0.007833974, + -0.02139404, + -0.012699838, + -0.0016465794, + -0.022470964, + -0.005640724, + -0.009180131, + 0.034855604, + 0.0036773058, + -0.015746748, + -0.0050989785, + 0.0016638167, + -0.033516016, + -0.013008469, + 0.004928246, + -0.008306771, + 0.008201705, + -0.019870585, + 0.0047509475, + 0.021459706, + -0.022759896, + 0.017060071, + -0.0039925035, + 0.0012484782, + 0.016009413, + -0.019292722, + 0.0033456916, + -0.009403396, + -0.028315254, + -0.02123644, + 0.019699853, + 0.0028679701, + -0.00032525277, + 0.011931544, + 0.005072712, + -0.025570408, + -0.020448446, + 0.017585402, + -0.0102964565, + 0.007866807, + 0.012627605, + -0.023193292, + 0.008983132, + -0.0026003805, + 0.0068424153, + -0.019634185, + 0.0044948496, + -0.0011507997, + 0.0037790884, + 0.014144494, + -0.034803074, + -0.012397774, + -0.0050365957, + -0.027553527, + 0.0059526386, + 0.001956852, + -0.0077289087, + 0.022300232, + -0.0100731915, + -0.030600438, + 0.0025987388, + -0.013645431, + -0.021853702, + -0.01285087, + 0.025504742, + 0.0070262807, + 0.0033653914, + -0.013566632, + 0.03309575, + -0.02102631, + 0.0049479464, + -0.012647305, + -0.03333215, + 0.0037922217, + 0.008050673, + 0.0063630524, + 0.0030288522, + 0.0071510463, + -0.0015644965, + 0.008818967, + -0.010710153, + -0.012391207, + 0.015300219, + -0.013290834, + -0.019266456, + 0.014827422, + -0.016955007, + -0.024677347, + -0.012581639, + 0.017204538, + 0.0029516944, + 0.010670753, + 0.19762892, + -0.009475629, + 0.020671712, + 0.045178328, + 0.005253294, + 0.022116367, + 0.031230832, + -0.0069737476, + -0.0019749103, + 0.012975636, + -0.011800212, + 0.014078828, + -0.016337745, + -0.0019732686, + -0.024940012, + -0.016232679, + -0.014105095, + -0.013829296, + -0.020028183, + -0.018439062, + 0.0017729867, + -0.019778652, + -0.007472811, + -0.009488762, + 0.032622956, + -0.009915592, + -0.0031618262, + 0.0053419434, + 0.03309575, + -0.010782386, + -0.008273938, + -0.0088124005, + 0.0037167054, + 0.0006455806, + -0.0111107165, + 0.0045572324, + 0.0038874375, + -0.010552554, + 0.024230817, + 0.02776366, + -0.009981259, + -0.0026627635, + 0.013225167, + -0.0011286373, + -0.0071970127, + 0.007499077, + 0.0064090188, + -0.023626689, + 0.01729647, + 0.021157641, + -0.0112223495, + 0.013973762, + 0.014958754, + 0.021249574, + -0.01729647, + 0.0091210315, + 0.009291763, + 0.014538491, + -0.012936236, + -0.001738512, + -0.0046425983, + 0.031887494, + -0.018320862, + 0.016981272, + 0.00010403984, + 0.014078828, + -0.025425943, + 0.0027711126, + -0.008674501, + -0.03876931, + 0.013290834, + -0.03362108, + 0.0001390276, + 0.012653871, + -0.017532868, + -0.03220269, + 0.01937152, + 0.018005665, + 0.0004867505, + 0.03690439, + -0.018570393, + -0.016626675, + 0.004619615, + 0.010782386, + -0.036247727, + -0.024585415, + 0.026489735, + -0.010408089, + -0.003585373, + 0.002313091, + 0.021971902, + -0.008825534, + 0.004957796, + -0.021735504, + 0.008267371, + 0.027185796, + 0.0010481963, + 0.03372615, + -0.0009480554, + -0.0073020784, + -0.015457817, + -0.03527587, + 0.021656705, + -0.0026036638, + -0.018977525, + 0.0033686748, + -0.0015382301, + 0.020553512, + 0.00583444, + -0.027422193, + 0.0015218136, + -0.019292722, + 0.0011926619, + -0.0006858011, + 0.01558915, + 0.006235003, + 0.008306771, + -0.027474727, + -0.0019076023, + -0.0025560558, + 0.023652956, + -0.017598534, + -0.017283337, + 0.011307715, + -0.036641724, + -0.010092891, + -0.020041317, + 0.023232693, + -0.013028169, + -0.037639853, + 0.020028183, + -0.022103235, + -0.0055225254, + 0.010624787, + 0.004534249, + 0.035827465, + -0.0013075777, + -0.011156683, + -0.016836807, + 0.0055126753, + 0.007032847, + -0.01636401, + 0.004179652, + 0.019174524, + 0.0041730856, + -0.0061332206, + -0.0034507574, + 0.007019714, + -0.006136504, + -0.022983162, + -0.011288015, + -0.023075094, + 0.0057687736, + -0.0030222856, + -0.0069737476, + -0.018005665, + -0.04938096, + -0.039688636, + 0.0019141689, + 0.010756119, + -0.026502868, + 0.0020126682, + 0.01993625, + -0.0028400621, + -0.017651068, + -0.0040056366, + -0.16978645, + 0.014236427, + 0.0061824704, + -0.013487833, + 0.009672628, + 0.016061947, + 0.011747679, + 0.009915592, + 0.0091210315, + 0.011990643, + 0.022379031, + 0.0077420417, + -0.021788036, + -0.029418446, + 0.010440921, + -0.01013229, + -0.01993625, + 0.023206426, + 0.020540379, + 0.013382766, + 0.03288562, + -0.015195153, + 0.020330248, + 0.0033309166, + 0.011760811, + 0.010631354, + 0.008510336, + 0.0027776791, + -0.010165124, + -0.012936236, + -0.01558915, + -0.004711548, + 0.015602283, + 0.017322736, + 0.0005343585, + 0.0016375502, + -0.00022552226, + -0.013428733, + -0.0015152469, + 0.015457817, + 0.023285225, + 0.048908167, + -0.0025560558, + -0.00716418, + -0.0114456145, + 0.020514112, + 0.020737378, + -0.01201691, + 0.017243937, + -0.009928726, + 0.033962544, + -0.005128528, + -0.009449363, + 0.0024542732, + 0.03178243, + 0.0012041535, + -0.007774875, + 0.005712957, + -0.0123715075, + 0.01834713, + -0.013934362, + -0.0034277742, + 0.011366814, + 0.005108828, + 0.0019749103, + -0.015733615, + -0.0077354754, + 0.0026036638, + -0.01989685, + -0.0050398787, + -0.011596646, + -0.03028524, + 0.016350877, + -0.01506382, + -0.00076501095, + 0.025609808, + -0.019765519, + 0.02335089, + -0.011268316, + 0.00041061878, + 0.0006706158, + 0.013251434, + -0.0039334036, + -0.006454985, + -0.0019683435, + -0.004317551, + -0.0048133307, + 0.0035689566, + -0.005942789, + -0.015667949, + 0.028131388, + -0.011826478, + -0.014551624, + -0.006967181, + 0.019384654, + 0.021052575, + -0.012752371, + 0.003660889, + -0.001600613, + -0.017861199, + -0.010316156, + -0.0021834003, + -0.020120116, + 0.010125724, + 0.051508546, + 0.016416544, + 0.023048827, + 0.011872444, + 0.034067612, + 0.02057978, + -0.00710508, + 0.002982886, + 0.03593253, + 0.04168489, + 0.011800212, + -0.0015997922, + 0.008779568, + -0.0035656733, + 0.014958754, + 0.007807708, + 0.025281478, + -0.0016375502, + 0.002812154, + 0.009199831, + -0.0007190446, + -0.003903854, + -0.10065311, + -0.03414641, + 0.016692342, + 0.019739252, + 0.00049906294, + 0.018465329, + 0.0016153879, + 0.008667935, + 0.006415585, + 0.021157641, + -0.012358374, + -0.045046996, + -0.0049052634, + -0.017637935, + 0.011071317, + 0.014065694, + -0.009147298, + 0.004288001, + -0.0099878255, + 0.013973762, + -0.0043996335, + -0.012049743, + -0.0056735575, + -0.014499092, + 0.007177313, + 0.011150116, + -0.013789897, + 0.02090811, + 0.008136039, + 0.00753191, + 0.0023344324, + -0.00795874, + 0.013487833, + -0.021617305, + 0.0021505672, + 0.007820841, + -0.031152032, + -0.0038743042, + 0.013540365, + -0.0051974775, + 0.0037462553, + 0.0010884168, + 0.003424491, + -0.027474727, + 0.017440936, + -0.029287113, + -0.024506615, + -0.0010284964, + 0.0103818225, + -0.0017450786, + -0.00669795, + -0.0018485028, + -0.02480868, + 0.010151991, + -0.011097583, + -0.021302108, + 0.017427802, + 0.012194209, + -0.011872444, + 0.0006677429, + -0.027290862, + -0.010197957, + -0.007879941, + 0.019988783, + -0.0045999154, + 0.002616797, + -0.020198915, + -0.043628607, + 0.0179006, + -0.022260834, + -0.014840555, + -0.01595688, + 0.0007682942, + 0.025911873, + -0.034356542, + -0.008989699, + -0.025189545, + -0.024821814, + 0.005942789, + -0.02082931, + -0.01432836, + -0.020172648, + 0.020894976, + -0.008838667, + 0.029260848, + 0.014013162, + 0.005870556, + 0.012010343, + 0.0077683083, + -0.018727994, + 0.0041993516, + 0.008858367, + 0.010467188, + -0.01432836, + 0.011905277, + 0.024992546, + -0.009823659, + 0.023626689, + 0.02797379, + -0.011005651, + -0.016508477, + -0.0049085463, + -0.045782458, + 0.023193292, + -0.002820362, + -0.0059592053, + 0.025110746, + -0.006921215, + 0.013947495, + -0.008530036, + -0.007630409, + 0.012141676, + -0.014013162, + -0.0013239942, + -0.0026479885, + -0.0102964565, + -0.024086352, + -0.031729896, + 0.02290436, + 0.001462714, + 0.026699867, + 0.008917467, + 0.0082805045, + 0.017716734, + 0.022457832, + 0.023403425, + -0.018517861, + 0.0017089621, + -0.005085845, + 0.018202664, + -0.014302093, + -0.032334026, + 0.025767406, + -0.018806793, + 0.00445545, + 0.02752726, + -0.009863059, + -0.005660424, + -0.0013469774, + 0.013776763, + 0.0022720497, + -0.0025675474, + -0.006862115, + -0.023075094, + 0.029602312, + -0.016981272, + -0.013947495, + -0.0030304939, + -0.019673586, + 0.001951927, + 0.01937152, + -0.006674967, + 0.02147284, + 0.017848067, + 0.00978426, + -0.0010432714, + -0.010756119, + -0.041028224, + 0.022195166, + 0.019844318, + 0.0062547033, + -0.02480868, + 0.018452195, + 0.010335856, + 0.01289027, + -0.014354626, + 0.000795792, + -0.010099458, + 0.0017056789, + -0.014827422, + 0.011557247, + -0.034960672, + -0.0002417336, + -0.002503523, + 0.011583513, + 0.0035295568, + 0.03333215, + 0.016114479, + 0.010401522, + -0.0060544214, + -0.012332108, + 0.02046158, + 0.004777214, + 0.0020241598, + -0.030941902, + 0.018373396, + 0.018557262, + 0.014236427, + -0.030810568, + 0.015694216, + -0.004793631, + 0.008654802, + -0.010723286, + 0.015681082, + 0.0017631368, + -0.0265948, + 0.0057359403, + 0.027133264, + -0.0049413797, + -0.016324611, + 0.004432467, + 0.014433425, + 0.024165152, + -0.011859311, + -0.025596675, + -0.0223265, + -0.0041107023, + 0.0041533853, + -0.027553527, + -0.028709251, + -0.0060150214, + 0.0066487, + 0.028840583, + 0.014814289, + 0.015208286, + 0.023955021, + -0.015260818, + 0.012857437, + -0.028157655, + -0.024178285, + -0.00094969705, + 0.013527232, + 0.04136969, + 0.011360249, + 0.031020701, + -0.015641682, + 0.009948425, + 0.002730071, + 0.0058442894, + -0.018176397, + 0.0088715, + -0.005049729, + -0.0047607976, + -0.010079757, + -0.013947495, + -0.02589874, + -0.017624801, + -0.002687388, + 0.024060085, + 0.029628579, + -0.036142662, + 0.04257795, + 0.00073012576, + -0.0071116467, + -0.009212964, + 0.033016954, + 0.022562897, + 0.02768486, + -0.0065896004, + -0.017874332, + -0.041317157, + -0.00935743, + 0.0028285705, + 0.012962502, + -0.020435313, + -0.0046852813, + 0.012712971, + -0.005617741, + -0.0020931093, + -0.013133235, + -0.0037561052, + 0.024388418, + 0.0015447967, + 0.014288959, + 0.0055684918, + -0.013527232, + -0.0011754245, + 0.019988783, + -0.030311506, + -0.018530995, + -0.024020687, + 0.0074202777, + -0.0035722398, + -0.046228986, + -0.022733629, + 0.0033686748, + -0.017401537, + -0.005128528, + 0.0031043685, + 0.011498147, + -0.00010896481, + -0.0060478547, + 0.010316156, + -0.016981272, + -0.02574114, + 0.009580695, + -0.0068424153, + 0.008969999, + -0.019082591, + -0.0052467273 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 4, + "total_tokens": 4 + } +} +247 34475 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 52 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["japan"]}HTTP/2.0 200 OK +Content-Length: 33520 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:20:12 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 97 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6659cb4779-66lnk +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999998 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_6addc7670bab492cb3252c6a5def1b8d + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.0025093954, + -0.014704405, + -0.0073522027, + -0.02217393, + -0.008075691, + 0.017116033, + -0.024598593, + 0.0051230774, + 0.014808692, + -0.039342105, + -0.0152910175, + 0.011536702, + 0.005507634, + -0.023177689, + 0.0012546977, + -0.0012180345, + 0.019983914, + -0.018875869, + 0.02467681, + -0.017037818, + -0.009405345, + 0.026501823, + 0.0047776285, + -0.0016522902, + 0.008303817, + 0.0038748977, + 0.0046766005, + -0.019006226, + 0.008773107, + -0.005448973, + 0.00782801, + -0.007977922, + -0.0087079285, + -0.027140578, + 0.0075477404, + -0.009196771, + -0.011621434, + -0.01291198, + -0.0018624929, + -0.012527424, + 0.019579802, + -0.009066413, + -0.012436173, + -0.00083307043, + -0.010213565, + 0.022108752, + -0.014743513, + 0.005768351, + -0.008492837, + 0.026058605, + 0.02089642, + 0.03381492, + -0.030243104, + -0.014274224, + -0.026827719, + -0.005315356, + -0.03334563, + -0.0094379345, + -0.0065146512, + 0.00045136528, + 0.0052729896, + 0.021678569, + -0.03459707, + 0.012768586, + 0.012827247, + -0.012468763, + -0.00036948404, + 0.012560013, + -0.016672814, + -0.008544981, + 0.030634178, + 0.027922727, + 0.006045362, + 0.003698914, + 0.024624664, + -0.006325632, + -0.0067069298, + -0.008584088, + 0.0030406052, + 0.013765827, + 0.019162657, + -0.031259898, + 0.0016294776, + -0.0118625965, + 0.007899707, + 0.0049307994, + -0.034232065, + 0.03449278, + 0.006967646, + -0.0044680275, + 0.011100002, + 0.01160188, + 0.011504112, + 0.02024463, + -0.028887378, + -0.014443689, + -0.0041095424, + 0.043617856, + -0.006182238, + -0.025719674, + -0.017142104, + 0.0192148, + -0.008773107, + -0.012879391, + -0.024116268, + 0.010037581, + 0.0064788028, + -0.010115797, + 0.016359955, + -0.0086362315, + -0.009118557, + 0.0281313, + 0.006100764, + -0.053290434, + -0.010721963, + -0.018980155, + 0.011256431, + 0.0030520116, + -0.008942573, + -0.01930605, + 0.017572286, + 0.023490548, + 0.016425135, + 0.000037987196, + 0.026749505, + 0.003094378, + -0.008193013, + -0.017702645, + 0.000025320554, + -0.0077497954, + 0.022916973, + 0.0109175, + 0.0000014878531, + 0.016751029, + -0.017441928, + 0.0029949797, + -0.0130293025, + -0.00095080014, + -0.018380508, + -0.016894424, + 0.0015748901, + 0.0033925723, + -0.0026055346, + 0.007065415, + 0.011113037, + 0.018302292, + 0.014795656, + -0.00048925064, + -0.005377276, + 0.001883676, + -0.0040965066, + -0.020049091, + 0.028835235, + 0.00043425578, + 0.023894658, + 0.011269467, + 0.0125926025, + 0.01319225, + 0.011784382, + 0.0039596306, + -0.0012579567, + -0.006032326, + 0.01753318, + -0.012116795, + -0.009333648, + 0.024533415, + 0.013896185, + 0.00623764, + 0.00089621264, + -0.0038879334, + -0.02420752, + 0.01800247, + -0.03746495, + 0.01565602, + -0.0050839703, + 0.0017158398, + 0.0050285677, + 0.015760306, + -0.024194483, + -0.0127751045, + -0.011425897, + 0.021639463, + 0.01977534, + 0.006693894, + -0.005813976, + -0.002207942, + 0.011947329, + 0.008740517, + 0.0064788028, + -0.016829245, + 0.014482797, + 0.038820673, + 0.022890901, + 0.016021024, + -0.6841199, + -0.04638145, + 0.011191252, + 0.007638991, + 0.03477957, + 0.021078922, + 0.017076924, + 0.008883912, + -0.01001151, + 0.019136585, + -0.024155376, + 0.012735996, + -0.008747036, + -0.011184734, + 0.0005059528, + -0.0062930426, + 0.011210806, + -0.030373462, + -0.0038716388, + -0.0065113925, + -0.015369233, + 0.008003994, + -0.015173695, + 0.0005088044, + -0.0022600854, + -0.0021036556, + 0.00041205416, + 0.001955373, + -0.0053674993, + 0.034883857, + -0.04270535, + 0.033554204, + 0.01827622, + -0.0109696435, + 0.03384099, + -0.025067883, + -0.02199143, + 0.03728245, + 0.020453202, + 0.029956317, + -0.0021199503, + -0.010278745, + -0.0013483927, + -0.009183736, + -0.004164945, + -0.0027081918, + 0.024807166, + -0.018419614, + 0.0036174401, + -0.015864594, + 0.012234118, + -0.01565602, + -0.01755925, + -0.012762069, + 0.00075567025, + 0.019345157, + -0.0024458459, + -0.02495056, + 0.003200294, + -0.003995479, + -0.019123549, + 0.0070849685, + -0.016920496, + -0.005282766, + -0.0075216684, + -0.003175852, + -0.034075636, + 0.0024491048, + 0.013179215, + -0.018315328, + -0.0013964623, + 0.009744276, + -0.0033632417, + -0.0030520116, + 0.010682855, + 0.022186967, + 0.013987436, + -0.026149856, + -0.019801412, + -0.019996949, + 0.008512391, + 0.0064136237, + -0.009359719, + 0.0025631683, + 0.018758547, + 0.002545244, + -0.021261424, + 0.0027407813, + 0.013739755, + -0.019201763, + 0.006980682, + 0.0020107753, + 0.006377775, + -0.0051882565, + -0.01035696, + 0.01793729, + -0.0003220255, + -0.026723431, + 0.009568293, + -0.0011919629, + -0.017911218, + -0.0056836177, + 0.001955373, + -0.0027163392, + -0.0020841018, + -0.0026674548, + -0.014730478, + 0.008303817, + 0.034883857, + -0.030712394, + 0.022486791, + -0.011621434, + -0.022369469, + 0.0036826194, + 0.028704876, + -0.026540931, + 0.012898944, + -0.0028825458, + 0.016320847, + -0.00063997734, + 0.011875632, + 0.0023937025, + 0.018719438, + 0.0024458459, + 0.00901427, + 0.021469997, + 0.004132355, + -0.02595432, + -0.007762831, + 0.004494099, + -0.011882151, + 0.014000472, + 0.021417852, + -0.019671053, + 0.025120026, + -0.007801939, + 0.0061137998, + 0.0053414274, + 0.01493905, + -0.046511807, + -0.03003453, + -0.01619049, + 0.0016042207, + -0.0010070171, + 0.0077563133, + -0.015864594, + -0.0023822961, + 0.002483324, + -0.0003623551, + 0.010122315, + 0.024559487, + -0.005093747, + -0.021039814, + 0.021548212, + -0.00034157923, + -0.015369233, + -0.008883912, + -0.007912743, + 0.012312332, + -0.012416619, + 0.026905933, + -0.0012408472, + -0.02940881, + -0.0028890637, + 0.014039579, + -0.01254046, + 0.004634234, + 0.030686323, + -0.019540695, + -0.026254144, + -0.0030552705, + -0.001484454, + -0.009581328, + 0.016555492, + 0.008388551, + 0.0100441, + 0.0013451338, + -0.011934293, + 0.0042529367, + -0.0031514096, + 0.0043702587, + -0.022447683, + -0.00667434, + -0.004226865, + 0.032015976, + -0.01840658, + 0.0151997665, + 0.014352438, + 0.0028108489, + 0.00033180238, + -0.031025253, + 0.024572521, + 0.011465005, + 0.0118625965, + 0.0082712285, + -0.013479038, + 0.015369233, + 0.016751029, + -0.0077823848, + 0.022421611, + 0.024259662, + -0.011627952, + 0.007938814, + -0.016086202, + 0.014978158, + -0.021065885, + -0.013439931, + -0.025628423, + 0.025432887, + 0.013700647, + 0.011412861, + -0.024220554, + -0.0029314302, + -0.008649267, + -0.0011691501, + 0.028652733, + 0.010389549, + 0.0063484446, + -0.006045362, + 0.0018869351, + 0.003241031, + -0.020596597, + 0.0032068118, + -0.01603406, + 0.0030291989, + 0.015551734, + -0.019605875, + 0.014052615, + 0.01849783, + -0.017324606, + -0.025524138, + -0.020414095, + -0.011660541, + 0.020974636, + 0.015017265, + -0.0011194511, + 0.016451206, + -0.024898417, + 0.035692077, + 0.022695364, + -0.0006326447, + 0.0111521445, + 0.008101762, + 0.011869115, + 0.013557253, + -0.009340165, + 0.050605055, + -0.00006920187, + -0.02313858, + 0.019253908, + -0.006693894, + -0.0071175583, + -0.006602643, + 0.010207048, + 0.009900706, + -0.029904172, + 0.015147624, + 0.0011830007, + 0.038221028, + 0.03796031, + 0.007990958, + -0.003946595, + 0.009385791, + -0.0017875369, + 0.0027733708, + -0.0049307994, + 0.021065885, + 0.014248152, + -0.0020726954, + 0.00001147636, + -0.015030301, + 0.0014518645, + 0.000006034159, + -0.023699122, + 0.02685379, + -0.014821728, + -0.0035196715, + 0.0008807326, + 0.021235352, + 0.01771568, + -0.0077823848, + -0.05034434, + 0.018654259, + 0.001085232, + -0.007502115, + -0.021626426, + -0.00355552, + -0.012853319, + -0.021900179, + 0.027088435, + 0.02747951, + 0.028470233, + -0.0023154877, + -0.023047332, + -0.014091722, + 0.0065570176, + 0.024989668, + -0.019436408, + -0.011908222, + 0.0027489287, + 0.014404582, + -0.021183208, + 0.006902467, + 0.010780623, + 0.017846039, + -0.006961128, + 0.0072283624, + -0.010415621, + 0.0035848506, + 0.0033893134, + -0.011223841, + -0.009301058, + -0.003848826, + 0.008427658, + 0.0046114214, + -0.004481063, + -0.019449444, + 0.01254046, + 0.013948328, + -0.00661242, + -0.013009749, + -0.012879391, + -0.010715445, + 0.0023839257, + 0.06450124, + -0.010982679, + 0.0016384397, + 0.0041258372, + 0.0022503086, + -0.010154904, + -0.02098767, + -0.015642984, + -0.0008636231, + 0.0041844985, + -0.0038390493, + 0.008968645, + 0.011047858, + 0.014052615, + -0.0012832136, + 0.0020678071, + -0.009431416, + -0.018354435, + 0.006902467, + -0.015903702, + 0.012846801, + -0.007606401, + 0.01469137, + 0.013042338, + 0.0036923962, + 0.004142132, + 0.0134138595, + 0.027427366, + 0.018302292, + -0.017833002, + 0.0059769237, + -0.0020238112, + -0.025067883, + 0.012455727, + -0.014991194, + 0.009718204, + 0.020388024, + 0.032693837, + 0.0020759543, + -0.006322373, + 0.0149260145, + 0.015108516, + 0.009033823, + -0.004601645, + 0.008962126, + -0.031859547, + -0.031233827, + 0.018145863, + -0.02651486, + -0.012077688, + 0.04364393, + 0.0017679832, + -0.02891345, + -0.024285734, + -0.0070849685, + 0.031129539, + -0.021978393, + -0.00019716678, + 0.0013980918, + -0.004132355, + -0.0012326998, + -0.04544287, + 0.0045462423, + -0.00973124, + -0.020596597, + -0.041844983, + -0.015512627, + -0.029643456, + -0.02732308, + -0.013622433, + -0.019045334, + -0.03000846, + -0.01937123, + 0.008003994, + 0.025185205, + -0.01755925, + 0.008303817, + -0.00589545, + -0.0012791399, + 0.021013742, + -0.022017501, + -0.016633706, + -0.030217033, + -0.008127834, + -0.0043246336, + 0.022069644, + 0.025902176, + -0.028548447, + -0.0074630072, + 0.0019407078, + 0.025237348, + -0.0033990901, + 0.015577805, + 0.017415857, + 0.005963888, + 0.0006827511, + 0.02152214, + 0.03206812, + -0.0046928953, + -0.010220083, + 0.02380341, + -0.01637299, + 0.0038748977, + 0.007925779, + 0.0011520407, + 0.020661775, + 0.0048884326, + 0.01191474, + -0.005533706, + -0.0075086327, + 0.02548503, + -0.014899943, + 0.007489079, + 0.017428892, + -0.0049829422, + 0.02049231, + -0.0085254265, + 0.008095245, + 0.008023548, + 0.0009874634, + 0.021821965, + -0.019970877, + 0.013387788, + 0.021065885, + 0.0015431152, + 0.021039814, + 0.0071175583, + -0.0025810925, + -0.0054848217, + -0.0073587205, + -0.019879626, + 0.018967118, + -0.01469137, + -0.011373754, + -0.022538934, + 0.006746037, + -0.009046859, + 0.008740517, + -0.010233119, + -0.027010221, + -0.0075086327, + -0.011249913, + 0.006635233, + 0.0038586028, + -0.023972875, + -0.019736232, + 0.00017058593, + 0.010832767, + 0.00268212, + 0.01699871, + -0.004793923, + 0.0009565033, + -0.01203858, + -0.0009842045, + -0.026019499, + -0.044895366, + -0.041375693, + -0.023646979, + 0.019879626, + 0.021795891, + 0.030686323, + 0.015421376, + 0.004934058, + -0.0016604377, + -0.017598357, + 0.018132826, + 0.0021199503, + 0.02906988, + -0.0064983563, + 0.0020564008, + 0.026215035, + 0.018354435, + -0.020309808, + -0.009529185, + -0.010383031, + 0.027297009, + -0.00421057, + 0.010024546, + -0.010220083, + -0.0255111, + 0.00866882, + -0.01977534, + -0.0029737966, + -0.0006033141, + 0.008473284, + -0.0075998832, + 0.009053377, + -0.0023562245, + 0.011119555, + -0.002264974, + 0.0042627132, + -0.023034295, + 0.0009100632, + -0.01874551, + -0.001924413, + -0.012064652, + -0.0008945832, + -0.006739519, + 0.014248152, + 0.014143866, + 0.023281975, + 0.010083207, + 0.00097198336, + -0.01406565, + 0.00302594, + 0.028548447, + -0.016490312, + -0.026827719, + 0.00031428548, + -0.01578638, + -0.02017945, + -0.018419614, + -0.0022226074, + -0.022213038, + -0.020596597, + 0.017363712, + -0.0065830895, + 0.030164888, + -0.00044403263, + -0.019671053, + -0.002872769, + 0.012221082, + 0.03939425, + 0.0039661485, + 0.019019263, + 0.0006118688, + -0.0033697595, + -0.026905933, + -0.01699871, + -0.014417618, + 0.00066197524, + 0.010304816, + 0.020453202, + -0.022695364, + -0.043748215, + -0.0058596013, + 0.008968645, + -0.00627023, + -0.009379273, + 0.02192625, + 0.010780623, + 0.009952849, + -0.020726955, + -0.010845803, + -0.00988767, + 0.03000846, + -0.0034544924, + -0.00010561052, + -0.0100441, + -0.018823724, + -0.021013742, + 0.021887142, + -0.011627952, + 0.014847799, + 0.0034773052, + -0.017194247, + 0.0036435118, + -0.009379273, + -0.013309573, + 0.009548739, + -0.0070132716, + 0.009868116, + 0.0077302414, + -0.010532943, + 0.003852085, + 0.011386789, + -0.014326367, + -0.0016302923, + -0.019814447, + 0.022447683, + -0.012885909, + -0.023125546, + -0.018888904, + 0.01619049, + 0.024572521, + -0.006733001, + -0.00027538172, + 0.010402584, + -0.022578042, + -0.0009662802, + 0.020270701, + 0.008812215, + -0.024976632, + -0.007058897, + -0.0165946, + -0.021561246, + -0.021821965, + -0.0005246918, + -0.0050578984, + -0.0025419851, + -0.0067525553, + -0.0033795366, + -0.024585558, + 0.010487318, + -0.011856079, + -0.013479038, + 0.0013019526, + 0.02293001, + -0.019345157, + 0.00842114, + -0.0014665298, + 0.020361952, + -0.023646979, + 0.0022405316, + 0.00024381059, + -0.016777102, + 0.020401059, + -0.01603406, + -0.002385555, + -0.03081668, + 0.00014868983, + 0.019253908, + 0.017363712, + 0.028235588, + 0.02239554, + -0.024168411, + 0.0036141812, + -0.042679276, + -0.025054848, + 0.013909221, + 0.009164182, + 0.017963361, + -0.004705931, + -0.00552067, + 0.002941207, + 0.010839284, + -0.013179215, + -0.0152910175, + -0.012501352, + -0.030451678, + -0.017846039, + 0.01406565, + -0.011158663, + 0.0018282739, + -0.017102996, + 0.0046733418, + -0.0024474752, + 0.018941047, + 0.0018820466, + 0.0068568415, + 0.004780887, + 0.032667767, + 0.00645599, + 0.0007678913, + -0.0021557987, + -0.019658018, + 0.01908444, + -0.019188728, + -0.01771568, + -0.025915211, + -0.017663537, + 0.037908167, + 0.010910982, + -0.015043337, + -0.024689844, + 0.008590606, + -0.025654495, + -0.02058356, + -0.009620436, + 0.031624902, + 0.016816208, + 0.0005605403, + 0.011627952, + -0.0022014242, + 0.0071827373, + 0.0030650473, + -0.0010583457, + -0.00007072951, + 0.021730714, + -0.028000943, + 0.021939287, + 0.0002782333, + -0.034388494, + -0.010982679, + 0.023295011, + 0.0004073694, + 0.001618886, + 0.007847564, + -0.003421903, + -0.017324606, + -0.000569095, + 0.0009622065, + -0.019384265, + 0.0054880804, + 0.008206049, + -0.044738937, + 0.013544218, + -0.0026299767, + -0.011556255, + -0.017819967, + 0.009483559, + -0.0063386676, + 0.0012579567, + -0.00047865903, + -0.008994716, + 0.0024882122, + -0.00073489436, + -0.03256348, + 0.019970877, + -0.008395068, + 0.0047352617, + 0.038664244, + 0.0077367597, + -0.0008571052, + -0.021391781, + -0.006605902, + -0.020388024, + -0.013290019, + 0.0235818, + -0.0100766895, + -0.018914975, + -0.016855316, + 0.0069350568, + -0.031624902, + 0.0130293025, + 0.0024588816, + 0.0134138595, + -0.028027015, + 0.021339638, + 0.018576045, + -0.039263893, + 0.0015919995, + 0.023555728, + -0.023125546, + 0.0056836177, + -0.013335644, + 0.010689373, + -0.029200237, + 0.022630185, + 0.0071827373, + -0.0064853206, + -0.025328599, + 0.007697652, + -0.006416883, + -0.027583797, + -0.004230124, + 0.18563008, + -0.017767824, + 0.015877629, + 0.038247097, + -0.00052917283, + 0.03587458, + 0.02860059, + -0.0005393571, + -0.0031025254, + 0.008166942, + -0.040776048, + 0.020766063, + 0.014274224, + -0.0005866119, + -0.001288102, + -0.043331068, + -0.029956317, + -0.011465005, + -0.036656726, + 0.009431416, + 0.009314094, + -0.0054750447, + -0.013922256, + -0.00910552, + 0.013557253, + -0.0019977395, + -0.006462508, + 0.009222843, + 0.023881624, + 0.016737994, + 0.0025941283, + 0.008153906, + 0.004748298, + -0.0010208677, + -0.019488553, + -0.014417618, + -0.0043148566, + -0.0037477985, + 0.012468763, + 0.019006226, + 0.0023122288, + 0.008225603, + 0.0069220206, + -0.0042333826, + -0.013557253, + 0.019188728, + 0.003786906, + -0.0077432776, + -0.008968645, + 0.026032533, + -0.03066025, + -0.017089961, + 0.03496207, + 0.03285027, + 0.014547976, + -0.008219085, + 0.02826166, + 0.0053186147, + -0.0005430234, + -0.010734999, + -0.017102996, + 0.01619049, + -0.012677335, + 0.025185205, + -0.011673577, + 0.0043539642, + -0.035222787, + -0.0038129776, + -0.0016262187, + -0.016555492, + 0.014508869, + -0.018198006, + -0.01818497, + -0.013896185, + -0.030399533, + -0.02747951, + 0.037099946, + 0.015499591, + 0.00826471, + 0.038507815, + 0.0039074873, + 0.0065928665, + -0.0036206993, + 0.011908222, + 0.00110723, + -0.021131065, + 0.008336407, + -0.008916501, + 0.01437851, + 0.0008265525, + -0.0017370231, + -0.01883676, + -0.003770611, + -0.020674812, + -0.0057716095, + 0.008492837, + 0.0000075172384, + 0.016724957, + -0.014182973, + 0.002862992, + -0.010995715, + -0.010734999, + 0.0026348652, + 0.007899707, + 0.010669819, + 0.01469137, + -0.018237114, + 0.004376777, + -0.002167205, + -0.010891428, + -0.011921258, + -0.028079158, + -0.000112433954, + 0.005892191, + -0.017259426, + 0.004494099, + -0.0050024963, + -0.015538698, + 0.018615153, + -0.026619146, + 0.015369233, + -0.021874107, + -0.011556255, + -0.011621434, + -0.021874107, + -0.013726719, + 0.0004872138, + -0.01930605, + 0.0010477541, + -0.0331892, + 0.0016359955, + -0.012403583, + 0.026958076, + -0.026723431, + 0.00095161493, + 0.01774175, + 0.017324606, + 0.0038586028, + -0.0072544343, + 0.033137057, + 0.0047352617, + -0.011249913, + 0.025850032, + 0.006746037, + -0.000620831, + -0.005892191, + 0.0043050796, + 0.025250385, + -0.009985439, + 0.0099658845, + -0.00941838, + -0.016777102, + 0.0014388287, + -0.005735761, + 0.04082819, + -0.010220083, + -0.0333717, + -0.015825486, + 0.013283501, + 0.021483032, + -0.03558779, + -0.0043050796, + 0.061685503, + -0.010311334, + -0.027114507, + 0.004503876, + -0.16800566, + 0.0165946, + 0.02064874, + -0.022408575, + 0.021848036, + 0.022486791, + -0.01780693, + -0.0060160314, + 0.004376777, + 0.016021024, + 0.047919676, + 0.03384099, + -0.0165946, + -0.013622433, + 0.01493905, + -0.008655785, + -0.01927998, + 0.0030080157, + 0.01968409, + 0.014052615, + 0.036917444, + -0.012664299, + 0.0035066358, + 0.00017160436, + -0.016490312, + 0.023242868, + 0.0023464477, + 0.01381797, + -0.0085254265, + 0.015695129, + -0.021065885, + -0.0100766895, + 0.02875702, + 0.018719438, + 0.0030585295, + 0.0019635204, + -0.021913214, + -0.020322844, + -0.0151997665, + 0.01646424, + 0.0065081334, + 0.011334646, + 0.00227638, + -0.014287259, + 0.0017582063, + 0.024051089, + 0.014717441, + -0.024663772, + -0.014143866, + -0.011686613, + 0.014613155, + -0.012520906, + -0.011438932, + 0.028704876, + 0.014313331, + -0.0050187907, + 0.008603642, + 0.008290782, + 0.004787405, + 0.024363948, + -0.039316036, + -0.02255197, + 0.017037818, + -0.0062148273, + -0.02622807, + -0.00458535, + -0.0074434537, + 0.0033958312, + -0.010187494, + -0.0026967854, + 0.004138873, + -0.020192485, + 0.0047189672, + -0.034883857, + 0.011373754, + 0.005667323, + 0.0068177343, + 0.02398591, + -0.01325743, + -0.014600119, + -0.036448155, + 0.02860059, + -0.009359719, + -0.0040867296, + -0.013778863, + 0.032302763, + 0.015916737, + 0.005533706, + -0.038455673, + -0.01755925, + 0.027349152, + -0.01827622, + 0.005025309, + -0.009744276, + 0.0024230331, + 0.022617148, + -0.010369996, + 0.028704876, + -0.02938274, + 0.013231358, + 0.008303817, + -0.007573812, + -0.013583325, + 0.02685379, + 0.019723197, + 0.0009499854, + 0.023373226, + 0.024898417, + 0.03782995, + 0.012612157, + -0.018224077, + 0.008199532, + 0.028339874, + 0.010363477, + -0.008355961, + 0.008975162, + 0.014000472, + -0.0047352617, + 0.025693603, + 0.013987436, + 0.019983914, + -0.007104522, + 0.0057487967, + 0.010930535, + -0.007176219, + -0.016177453, + -0.08222996, + 0.0022454201, + -0.0041128015, + 0.020036057, + 0.005009014, + 0.045234296, + 0.01297716, + 0.0062017916, + -0.010207048, + 0.024246626, + -0.0002056197, + -0.019592838, + -0.017389785, + -0.024624664, + 0.0153822685, + 0.0021085439, + -0.018628187, + -0.013374752, + -0.010559015, + 0.010461246, + -0.018980155, + -0.008734, + 0.0034642692, + -0.0076455087, + -0.018054612, + 0.006967646, + -0.010389549, + 0.012879391, + 0.0076194373, + -0.0019570026, + -0.0033665006, + -0.0016213302, + -0.0050350856, + -0.032433122, + -0.013426895, + -0.005292543, + -0.02264322, + 0.0077563133, + 0.036630657, + -0.045651443, + 0.00988767, + -0.00011620212, + -0.0008090356, + -0.020374987, + 0.0062083094, + -0.014587083, + -0.019423373, + 0.013400824, + 0.008303817, + -0.023321083, + -0.035379216, + -0.0057781273, + -0.0025501323, + 0.0017859074, + 0.027714154, + -0.009522667, + 0.017285498, + 0.0073522027, + -0.034988143, + 0.02217393, + 0.009464006, + -0.005729243, + -0.009196771, + 0.027297009, + 0.015343161, + 0.009548739, + -0.016216561, + -0.041740697, + 0.02940881, + -0.015225839, + -0.017911218, + 0.028313803, + -0.02423359, + -0.0068503236, + -0.025563244, + -0.009274987, + -0.016021024, + -0.003135115, + 0.015017265, + -0.023868587, + -0.011510629, + -0.021874107, + 0.010780623, + -0.0065342053, + 0.0018804171, + 0.021600354, + 0.008414622, + -0.0066580456, + 0.0119538475, + -0.009705168, + 0.026553966, + 0.024064125, + 0.023099475, + -0.015095481, + 0.0010941942, + 0.048310753, + -0.0067786267, + -0.009457488, + -0.000286177, + -0.0026593073, + 0.0049307994, + -0.019762304, + -0.06820341, + 0.019175692, + -0.0050383448, + -0.011465005, + 0.028053086, + 0.0034088672, + 0.012768586, + -0.005807458, + 0.014912979, + -0.01690746, + -0.048258606, + 0.015017265, + -0.0078084567, + -0.014600119, + -0.03863817, + -0.025198242, + 0.024168411, + 0.016307812, + 0.00085140206, + -0.005282766, + 0.01995784, + 0.011549737, + 0.024168411, + 0.030399533, + -0.038455673, + 0.00552067, + -0.0038423082, + 0.021417852, + -0.026671289, + -0.011393307, + 0.003500118, + -0.024624664, + -0.0027798887, + 0.01800247, + 0.0021590579, + -0.005729243, + 0.010956607, + -0.0007507818, + 0.021887142, + 0.047293957, + -0.018015504, + -0.009718204, + 0.022069644, + -0.0038455671, + -0.0054750447, + 0.012625192, + -0.0032638435, + -0.0014184603, + -0.0040541403, + 0.01493905, + 0.011575809, + 0.019501587, + -0.0017142104, + -0.008382033, + -0.0048558433, + -0.039811395, + 0.012058134, + 0.008499355, + -0.010050618, + -0.0014828246, + 0.023047332, + -0.0030357167, + 0.029591313, + 0.0014673446, + 0.0013394306, + 0.00056257716, + -0.017116033, + -0.0051133004, + 0.0025615387, + -0.026188964, + -0.025719674, + 0.011940812, + -0.0028809165, + 0.021222316, + 0.008219085, + -0.014965122, + -0.00057276135, + -0.010669819, + -0.016021024, + 0.025367707, + -0.005312097, + -0.0044354377, + -0.044530362, + 0.017194247, + 0.01665978, + -0.017507108, + -0.016777102, + -0.00029615755, + -0.00558259, + 0.020844277, + 0.00012546977, + -0.0015357826, + 0.025993425, + 0.00421057, + 0.00033689447, + 0.009959367, + -0.008688374, + -0.028027015, + 0.037882093, + 0.0016115534, + 0.023373226, + -0.0038846745, + -0.0022812686, + -0.0151997665, + -0.02488538, + -0.009118557, + -0.018954083, + -0.011614916, + -0.00008422362, + 0.016607635, + 0.03034739, + 0.025185205, + -0.010891428, + 0.025367707, + -0.011308574, + -0.0107871415, + -0.015212802, + -0.022604113, + -0.018445686, + 0.02158732, + 0.024116268, + 0.014495833, + 0.016555492, + -0.020205522, + 0.019423373, + -0.0072479164, + 0.00997892, + -0.028704876, + 0.009529185, + -0.012931534, + 0.014339402, + 0.017324606, + -0.006693894, + -0.018875869, + -0.03736066, + 0.013791898, + 0.011693131, + 0.018797653, + -0.01643817, + 0.041688554, + -0.0020629186, + -0.006843806, + 0.003019422, + 0.0024230331, + 0.028027015, + -0.009027306, + 0.016151382, + -0.0038032006, + -0.015017265, + -0.007632473, + 0.0007255249, + -0.013452967, + 0.00648858, + -0.031833474, + -0.0048330305, + -0.024038054, + 0.030634178, + 0.00049454643, + -0.0013418748, + 0.037126016, + -0.0116083985, + 0.03642208, + 0.008179978, + -0.020518381, + -0.012181974, + 0.026723431, + 0.00048151062, + 0.010141868, + -0.007990958, + 0.01175831, + 0.001750059, + -0.022812687, + -0.0014608266, + 0.009040342, + -0.0059736646, + -0.014196008, + 0.0030210514, + 0.008883912, + 0.03081668, + 0.00083673676, + 0.027427366, + -0.0183414, + -0.017050853, + 0.004295303, + 0.00973124, + 0.008193013, + 0.0003967778, + -0.020283736 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 2, + "total_tokens": 2 + } +} +256 67812 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 61 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["tokyo","potato"]}HTTP/2.0 200 OK +Content-Length: 66856 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:20:13 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 118 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6659cb4779-w85sk +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999998 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_df1c0a21b903422db6a212785707c847 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + -0.008533556, + 0.0014080032, + -0.010539479, + -0.014651955, + -0.010988966, + 0.012142874, + -0.036978744, + 0.00235981, + -0.014812965, + -0.038239993, + 0.0062223845, + -0.015269161, + 0.011740348, + -0.02619104, + -0.015228909, + -0.01734888, + 0.022621974, + -0.01937493, + 0.017093947, + -0.01806001, + -0.009070258, + 0.015618018, + -0.004125894, + -0.027371783, + -0.012498439, + -0.014504362, + 0.007305851, + -0.0207301, + 0.01004303, + -0.020864276, + 0.01631573, + -0.013820067, + -0.010646819, + -0.017254958, + 0.0031111923, + -0.004622343, + -0.010606566, + -0.008741528, + 0.0027019572, + -0.0042097536, + 0.005702455, + -0.016235225, + -0.0030893888, + -0.012578945, + -0.023977146, + 0.0073729386, + -0.01140491, + 0.012968053, + -0.0033761887, + 0.014168924, + 0.010807829, + 0.018999238, + -0.0352613, + -0.0080706505, + -0.02373563, + -0.0012956313, + -0.030779839, + -0.0047934167, + 0.0034449536, + 0.0035858378, + -0.002752273, + -0.006460546, + -0.01745622, + 0.011847689, + 0.018100264, + -0.018140515, + -0.011136559, + 0.02836468, + -0.017697737, + -0.0014717365, + 0.022943996, + 0.020649595, + -0.0025107574, + 0.00168474, + 0.036549382, + -0.01200199, + 0.0014599962, + -0.00029015433, + 0.008305457, + 0.0134510845, + 0.021763252, + -0.042372596, + 0.004920883, + -0.0032285957, + 0.009157471, + 0.010982257, + -0.010707198, + 0.032604624, + 0.0072387634, + -0.004162792, + 0.010136953, + 0.008540265, + 0.010901752, + 0.011069471, + -0.02836468, + -0.0015295997, + -0.007654707, + 0.048866685, + -0.02313184, + -0.013196152, + -0.006688644, + 0.0035221046, + 0.0070643355, + -0.00834571, + -0.032336272, + 0.00905684, + 0.015336249, + -0.0129278, + 0.0025057257, + -0.0144238565, + -0.00014235172, + 0.031504385, + -0.0054039145, + -0.05342865, + -0.02346728, + -0.018905316, + -0.0015648208, + -0.018650383, + -0.008828742, + -0.012800334, + 0.009479493, + 0.010660237, + 0.026445974, + 0.0047397465, + 0.025775095, + -0.0072119283, + -0.0086408965, + -0.0103717595, + 0.0003601771, + -0.010519352, + 0.03469776, + 0.01069378, + 0.0101101175, + 0.015953457, + -0.028820878, + 0.015483842, + -0.01615472, + 0.009613669, + -0.019254172, + -0.009076967, + 0.0037502027, + 0.010982257, + -0.008842159, + 0.010579731, + 0.0066651637, + 0.021427812, + 0.029116064, + 0.005746062, + 0.0036428624, + -0.004830315, + -0.0010306349, + -0.011740348, + 0.021146044, + -0.000048035847, + 0.0046693045, + 0.006950286, + 0.029760106, + 0.008969626, + 0.00024507978, + 0.0132632395, + -0.000092088354, + 0.0027002802, + 0.03475143, + -0.019683532, + 0.0006000157, + 0.023037918, + 0.0075540757, + 0.020985033, + 0.0032185325, + -0.0101101175, + -0.013444376, + 0.01418234, + -0.038535178, + 0.01042543, + 0.002062947, + 0.023588037, + 0.01718787, + 0.015779028, + -0.024191827, + -0.009123928, + -0.0011388138, + 0.0026583504, + 0.03359752, + 0.020864276, + -0.011331113, + 0.0046625957, + 0.029116064, + 0.018194186, + -0.0019438663, + -0.008251788, + 0.022353623, + 0.031584892, + 0.0312092, + 0.005907072, + -0.67409724, + -0.028337847, + 0.014370186, + -0.00327388, + 0.026123952, + 0.01129086, + 0.014799547, + 0.0065444056, + -0.013303492, + 0.013706018, + -0.03378537, + 0.014276263, + -0.014115253, + -0.014262846, + -0.010707198, + -0.00095683837, + 0.012773499, + -0.009217851, + 0.0007991823, + 0.01025771, + -0.0012327366, + 0.016932936, + -0.0148398, + 0.0017694383, + 0.013323618, + -0.01718787, + 0.00943924, + -0.01140491, + -0.009727717, + 0.023936894, + -0.034295235, + 0.04086983, + 0.0069435774, + -0.015872952, + 0.035824835, + -0.012116039, + -0.024849286, + 0.026553314, + 0.025077384, + 0.040011108, + -0.004266778, + 0.0004216043, + -0.0020277258, + 0.0064202934, + 0.0042131077, + 0.004595508, + 0.03268513, + -0.03104819, + 0.0066752266, + -0.014101836, + 0.015779028, + -0.037032414, + -0.021964515, + -0.01877114, + -0.0018616838, + 0.0050550587, + 0.010921879, + -0.022621974, + -0.0007715086, + -0.00048345077, + -0.011720222, + -0.0025476555, + -0.021011868, + -0.020220235, + -0.008245079, + 0.008587226, + -0.011988573, + -0.018261272, + 0.0036529256, + -0.021722998, + 0.010083282, + 0.015000811, + -0.010318089, + -0.0022273117, + 0.013873737, + 0.015524095, + 0.031799573, + -0.03126287, + -0.001854975, + -0.008218244, + 0.0069368687, + 0.011592755, + -0.017805077, + 0.0018868417, + 0.02341361, + -0.02946492, + -0.035798, + -0.010660237, + 0.020891111, + -0.018382031, + 0.0048739216, + -0.003475143, + -0.001501926, + 0.001458319, + 0.00017883067, + 0.005222778, + -0.0006138525, + -0.012592362, + 0.0035321678, + -0.0051255007, + -0.016409652, + -0.008976335, + 0.013390706, + 0.0005387981, + -0.0105126435, + -0.002769045, + -0.016396236, + 0.017308628, + 0.028901383, + -0.0122435065, + 0.01391399, + -0.010687072, + -0.014638538, + -0.00867444, + 0.021561988, + -0.024151573, + 0.021374144, + 0.009533163, + 0.026754577, + 0.010391885, + 0.0063263704, + -0.003683115, + 0.018194186, + 0.014772712, + 0.01233072, + 0.023574619, + 0.014973976, + -0.0062123216, + -0.0068831984, + 0.0053066374, + -0.01074745, + 0.012498439, + 0.016409652, + -0.016181555, + 0.016033962, + -0.009975942, + -0.000742577, + -0.005424041, + 0.01227705, + -0.042855624, + -0.040950336, + -0.013732853, + -0.0014901856, + 0.0012042243, + 0.013565134, + -0.028176837, + -0.017885583, + 0.0066047846, + -0.01679876, + 0.007715086, + -0.006889907, + -0.004135957, + -0.025989776, + 0.013303492, + -0.008305457, + -0.015067899, + -0.0033543853, + -0.0015681752, + -0.013981078, + 0.009123928, + 0.006661809, + 0.0064639, + -0.036737226, + 0.0028461958, + 0.0015623049, + -0.025721425, + 0.010264419, + 0.015966874, + -0.00055724726, + -0.017992923, + -0.017214704, + -0.019267589, + -0.017979505, + 0.0027355012, + 0.020394662, + 0.006956995, + 0.0052999286, + -0.013008306, + -0.0012218348, + 0.006393458, + 0.006074792, + -0.022474382, + -0.0044378517, + 0.004830315, + 0.025949525, + -0.029062394, + 0.007943184, + 0.019764038, + -0.0070710443, + 0.0040554516, + -0.01293451, + 0.019790873, + 0.003022301, + 0.0042365887, + 0.018543042, + -0.010338215, + 0.013350453, + 0.009419113, + -0.020394662, + 0.018046593, + 0.033758532, + -0.026043447, + 0.0045217113, + -0.01004303, + 0.012679576, + -0.02384297, + -0.0043674097, + -0.020287322, + 0.025493328, + 0.010049738, + 0.0030960976, + -0.017120782, + -0.0055582165, + 0.012954636, + -0.0036696976, + 0.04282879, + 0.006990539, + 0.019401764, + -0.026123952, + -0.0081847, + 0.017590396, + -0.033463348, + -0.009855184, + -0.017550144, + -0.012800334, + 0.010143661, + 0.001518698, + 0.03236311, + 0.01806001, + -0.006651746, + -0.02941125, + -0.021360725, + -0.004068869, + 0.023990564, + -0.0112237735, + -0.035610154, + 0.00096606294, + -0.027197355, + 0.034724597, + 0.008573809, + 0.020824024, + 0.01795267, + 0.035180792, + -0.024621187, + 0.007319269, + 0.006722188, + 0.03612002, + 0.013498046, + -0.0084262155, + 0.022554886, + -0.011586047, + -0.003938048, + -0.00496449, + 0.0010440524, + 0.011344531, + -0.029169735, + 0.01681218, + -0.0015061189, + 0.016543828, + 0.02700951, + 0.0045082937, + 0.0021702873, + 0.011867815, + 0.0019992136, + 0.0035053326, + -0.0006184648, + 0.026620401, + 0.015014228, + -0.0021652556, + 0.008298749, + -0.01729521, + 0.009144054, + -0.007218637, + -0.005313346, + 0.017483056, + -0.017415969, + -0.022554886, + -0.013873737, + 0.014933723, + 0.013229695, + -0.0137127265, + -0.051335514, + -0.0033543853, + 0.008318875, + -0.0014591576, + -0.030189468, + -0.0013761366, + -0.022138942, + -0.015457007, + 0.02078377, + 0.010613275, + 0.023668543, + 0.013940825, + -0.02085086, + -0.017845329, + -0.006651746, + 0.019240754, + -0.0155375125, + -0.0032537538, + -0.008446342, + 0.0064538373, + -0.012397808, + -0.009405696, + 0.0112707345, + 0.013498046, + 0.0134510845, + 0.009211142, + -0.0055414443, + -0.00785597, + 0.00012274954, + 0.002577845, + -0.013571843, + -0.017375715, + 0.01309552, + 0.010344924, + -0.0066148476, + -0.010217457, + 0.0024151574, + 0.02407107, + -0.007319269, + -0.017590396, + -0.0019891504, + -0.02204502, + -0.004588799, + 0.06606797, + 0.00845976, + 0.013524882, + -0.0010541156, + 0.006265992, + 0.0022558242, + -0.020287322, + 0.00009701511, + 0.012847295, + 0.007507114, + 0.0054609394, + -0.0066819354, + 0.0010390208, + 0.0070643355, + 0.00046835604, + -0.002802589, + -0.011559212, + -0.019388346, + 0.022782985, + -0.023386775, + 0.00089226646, + 0.0036864693, + 0.008285332, + 0.02252805, + 0.0006360753, + -0.0050550587, + 0.019093161, + 0.021400979, + 0.015483842, + -0.02400398, + -0.0009954139, + 0.012921092, + -0.015631435, + 0.012592362, + -0.010734033, + 0.002760659, + 0.004102413, + 0.0155375125, + 0.005021515, + -0.009975942, + 0.012216671, + 0.01932126, + 0.0026801538, + -0.0056991004, + 0.021977931, + -0.025198141, + -0.015148404, + 0.018247856, + -0.016731674, + -0.029947951, + 0.03389271, + 0.0076681245, + -0.04014528, + -0.020864276, + -0.014075001, + 0.013115646, + -0.020917946, + -0.018690635, + -0.000033255586, + 0.02280982, + 0.007996854, + -0.050181605, + 0.006658455, + -0.009727717, + -0.028176837, + -0.030457819, + -0.01167997, + -0.0046022166, + -0.028337847, + -0.002445347, + -0.007647998, + -0.021790087, + -0.024862703, + 0.024044234, + 0.019442016, + -0.024232078, + 0.004457978, + -0.00992898, + 0.00055389287, + 0.03617369, + -0.030350478, + -0.013430959, + -0.021105792, + -0.008204826, + -0.02476878, + 0.0201934, + 0.02941125, + -0.03410739, + -0.009606959, + -0.0005840823, + 0.011378075, + -0.0016713225, + 0.011284152, + 0.020649595, + 0.0148263825, + -0.011451871, + 0.0111768115, + 0.029706435, + -0.0045116483, + -0.01663775, + 0.0151349865, + -0.00943924, + 0.0016193294, + 0.012062369, + 0.00774863, + 0.02117288, + 0.01626206, + 0.019240754, + -0.011304278, + 0.00041321834, + 0.041943233, + -0.014558032, + 0.0118879415, + 0.017724572, + -0.0072320546, + 0.021454647, + 0.007339395, + 0.029438084, + 0.01893215, + -0.01462512, + 0.0055246726, + -0.023266016, + 0.016355982, + 0.017147617, + 0.011384783, + -0.003934694, + 0.019079743, + -0.007715086, + -0.008157865, + 0.00466595, + -0.0055615706, + 0.011995282, + -0.015054481, + -0.018019758, + -0.023588037, + 0.0018214312, + -0.027854815, + 0.013397414, + 0.0056957463, + -0.03628103, + -0.010063156, + -0.004987971, + 0.008741528, + -0.002576168, + -0.026553314, + -0.023990564, + -0.00035933853, + 0.012485022, + 0.0029669537, + 0.019442016, + -0.0009232945, + 0.013061976, + -0.015255744, + -0.00216861, + -0.018261272, + -0.032497283, + -0.022957413, + -0.023655124, + 0.008097486, + 0.015872952, + 0.024030816, + 0.011035928, + -0.0023279435, + -0.010948714, + -0.0067725037, + 0.013209569, + -0.004920883, + 0.025453076, + -0.017845329, + 0.023400191, + 0.014987393, + 0.01271312, + -0.022460964, + 0.0015857856, + -0.02798899, + 0.02199135, + -0.0037300764, + 0.0035724202, + -0.012565527, + -0.029706435, + -0.0009107156, + -0.014142089, + -0.0051422725, + -0.0002387903, + -0.0015388242, + 0.0019522522, + 0.0049745534, + -0.006732251, + 0.03142388, + -0.0039850096, + 0.010385177, + -0.012404516, + 0.0031413818, + -0.004300322, + 0.0005509578, + 0.004327157, + -0.011814144, + -0.0040889955, + -0.0030105608, + 0.02668749, + 0.02264881, + -0.009452658, + -0.0010356664, + 0.0003169894, + 0.011908067, + 0.035744328, + -0.00009811577, + -0.014772712, + -0.0043774727, + -0.014034748, + -0.025385987, + -0.018341778, + 0.00033921222, + -0.019723786, + -0.022514634, + 0.012907675, + -0.017067112, + 0.022501215, + -0.02951859, + -0.02635205, + 0.021951096, + 0.0090434225, + 0.022729315, + 0.016355982, + 0.010251001, + -0.00025430432, + -0.001171519, + -0.009835058, + -0.005182525, + -0.013981078, + -0.001215126, + 0.016396236, + 0.030484654, + -0.020609343, + -0.028928218, + -0.010009485, + 0.0024705047, + 0.0022776276, + -0.008419507, + 0.014222593, + 0.0005153174, + 0.009566707, + -0.024057651, + -0.0011497155, + -0.025882436, + 0.038481507, + -0.014772712, + 0.0047062025, + -0.002480568, + -0.030618828, + -0.0054106233, + 0.018153934, + -0.010029612, + 0.009311774, + 0.013833485, + -0.016959772, + 0.0020478521, + -0.018462537, + -0.018194186, + 0.02046175, + 0.0029568905, + 0.026647236, + 0.009513036, + -0.008285332, + 0.013779814, + 0.010599857, + -0.013632222, + 0.0006297858, + 0.004833669, + 0.024419924, + -0.007943184, + -0.009526454, + -0.018797975, + -0.0017006734, + 0.00094090507, + 0.0022776276, + 0.009298356, + -0.013176025, + -0.02003239, + -0.005746062, + 0.009700882, + 0.006269346, + -0.004572027, + -0.007044209, + -0.025278646, + -0.030350478, + -0.009117219, + 0.0016620979, + 0.012169709, + -0.01663775, + -0.009224559, + -0.0037233676, + -0.02946492, + 0.01745622, + -0.011693387, + -0.0042097536, + 0.009935689, + 0.027251026, + -0.016906101, + 0.009620377, + -0.007547367, + 0.019455435, + -0.025090802, + -0.006044602, + -0.0030742942, + -0.01674509, + 0.013887155, + -0.01358526, + -0.0122904675, + -0.021253385, + 0.012357555, + 0.0021971224, + 0.0062794094, + 0.021843757, + 0.042962965, + -0.020354409, + -0.0024654733, + -0.025761679, + -0.025520163, + 0.009452658, + -0.009996068, + 0.02008606, + 0.024916373, + -0.001707382, + 0.0012134488, + 0.013061976, + -0.012082496, + -0.00878849, + -0.010391885, + -0.03115553, + -0.008647605, + 0.0130015975, + -0.014142089, + -0.007815718, + -0.017469639, + 0.0012578944, + -0.0071716756, + 0.0097545525, + 0.008151156, + 0.0011295893, + 0.0004297806, + 0.025171306, + 0.011492124, + 0.012022117, + -0.013310201, + -0.024352837, + 0.011310987, + -0.007654707, + -0.026902169, + -0.03459042, + -0.0025979714, + 0.01544359, + 0.0014096803, + -0.02085086, + -0.022675645, + 0.010727324, + -0.02836468, + -0.0049376553, + -0.010821247, + 0.026110535, + 0.017670901, + -0.010848082, + 0.0077888826, + 0.006651746, + 0.019737203, + 0.008037107, + 0.004048743, + 0.01042543, + 0.034134224, + -0.031128695, + 0.03252412, + 0.0111768115, + -0.019160248, + -0.008748237, + 0.008828742, + -0.002343038, + 0.005712518, + 0.013591969, + -0.008251788, + -0.008567099, + -0.011357948, + 0.0051020198, + -0.025560416, + 0.018757721, + 0.006198904, + -0.046854053, + 0.026365468, + 0.013155899, + -0.010861499, + 0.00041133148, + 0.0111768115, + -0.0046894304, + -0.0024252206, + 0.0062928265, + -0.030243138, + -0.0018063365, + 0.0004939332, + -0.023708794, + 0.029760106, + -0.011753766, + 0.0111768115, + 0.02307817, + 0.021481482, + -0.0052730935, + -0.02471511, + -0.003683115, + -0.011384783, + -0.008694567, + 0.025520163, + -0.0027623363, + -0.027452288, + -0.004042034, + 0.02199135, + -0.042426266, + 0.011304278, + 0.009828349, + -0.0056018233, + -0.018086845, + 0.0098015135, + 0.025493328, + -0.02984061, + -0.0151349865, + 0.009117219, + -0.015738776, + -0.009311774, + -0.010244292, + 0.028472021, + -0.026392303, + 0.018408867, + 0.0017207996, + -0.002237375, + -0.03874986, + -0.01467879, + 0.0053871428, + -0.0077687562, + -0.008466468, + 0.21124576, + -0.019656697, + -0.00076354196, + 0.04103084, + -0.009996068, + 0.03775696, + 0.027251026, + 0.0010784349, + -0.011344531, + 0.0022055083, + -0.038320497, + 0.0075339493, + 0.01544359, + -0.0013962629, + -0.00020388373, + -0.01871747, + -0.024191827, + -0.02782798, + -0.041379698, + 0.0017358944, + 0.009197724, + 0.0018683926, + 0.0033208414, + -0.014544615, + 0.018784557, + 0.011250608, + -0.005222778, + -0.008868994, + 0.017563561, + 0.018891897, + 0.0015430172, + 0.0030172695, + -0.0014792839, + 0.014866635, + -0.0057661883, + -0.0026633819, + -0.005642076, + -0.008137738, + 0.031772736, + 0.023762465, + -0.0022541468, + 0.0028965117, + -0.005947325, + -0.009009879, + -0.007446735, + 0.023091588, + -0.007929767, + 0.0031279642, + -0.011921485, + 0.030296808, + -0.037354436, + -0.015121569, + 0.040574644, + 0.02471511, + 0.011592755, + -0.013732853, + 0.03322183, + 0.00682282, + -0.009915562, + -0.008104195, + -0.020126311, + 0.02291716, + -0.010358342, + 0.02352095, + 0.005216069, + -0.0038810237, + -0.01478613, + 0.0061888406, + -0.0007912156, + -0.010324798, + 0.017254958, + -0.011431745, + -0.009070258, + -0.021092374, + -0.033517018, + -0.023547783, + 0.032711964, + 0.005598469, + 0.011398201, + 0.0348051, + -0.005088602, + 0.009486201, + 0.02580193, + 0.004535129, + 0.00022180872, + -0.01937493, + 0.017415969, + 0.010130243, + 0.015309414, + -0.00709117, + -0.008761655, + -0.024205243, + -0.008976335, + -0.017872164, + -0.009781388, + 0.01200199, + -0.005940616, + 0.016074214, + -0.010848082, + -0.014061583, + -0.009499619, + -0.028015826, + 0.011438454, + -0.0069368687, + 0.0058299215, + 0.007829135, + -0.00030021748, + -0.0067792125, + -0.00050525425, + -0.030967684, + 0.0037233676, + -0.037569113, + 0.0070643355, + 0.01615472, + 0.0077016684, + -0.0020881048, + -0.016248642, + -0.025949525, + 0.018140515, + -0.019401764, + 0.02307817, + -0.017872164, + -0.009519746, + -0.006363269, + -0.004726329, + -0.008889121, + -0.0062794094, + -0.014303098, + 0.0056823287, + -0.041621212, + 0.003022301, + -0.0030742942, + 0.022514634, + -0.0012444769, + -0.0064639, + 0.018556459, + 0.0053670164, + -0.010707198, + -0.017268375, + 0.026164206, + 0.008969626, + -0.008385963, + 0.019683532, + 0.0026617048, + -0.0051758164, + -0.020904528, + 0.0063431426, + 0.021105792, + -0.016074214, + 0.010861499, + -0.021548571, + -0.021065539, + -0.0011471998, + -0.014061583, + 0.030162632, + -0.007882806, + -0.022943996, + -0.01985796, + 0.0033225187, + 0.0111768115, + -0.030243138, + -0.009204433, + 0.049725406, + -0.02193768, + -0.027532794, + -0.011539085, + -0.17464271, + 0.028981889, + 0.019133413, + -0.022165777, + 0.026767993, + 0.010807829, + -0.0056991004, + -0.018247856, + -0.0051925885, + 0.016758509, + 0.05173804, + 0.013075394, + -0.008600644, + -0.011243899, + 0.0037032412, + -0.007876096, + -0.0034784975, + 0.0049477182, + 0.028981889, + 0.013692601, + 0.0470419, + -0.03137021, + 0.0148263825, + -0.00062517356, + -0.0007048402, + 0.024084486, + -0.00038973763, + -0.00087381736, + 0.016275477, + -0.010633402, + -0.023333104, + -0.013216278, + 0.03501978, + 0.022353623, + 0.009989359, + 0.013659056, + -0.008627479, + -0.018207602, + -0.019348094, + 0.03595901, + 0.005779606, + 0.010666945, + -0.003039073, + -0.012672868, + 0.0124313515, + 0.03088718, + 0.008278623, + -0.003917922, + -0.025761679, + -0.008775072, + 0.021454647, + -0.016610915, + -0.0030172695, + 0.01936151, + 0.00867444, + -0.0107742855, + 0.008627479, + 0.0098954365, + 0.0017845329, + -0.013752979, + -0.03469776, + -0.012283759, + 0.021602241, + 0.0018415574, + -0.015067899, + 0.0014172278, + -0.01222338, + -0.010546187, + -0.019281005, + 0.017805077, + 0.0009258103, + -0.016194971, + 0.021199714, + -0.043177646, + 0.019240754, + 0.005024869, + -0.009647212, + 0.024191827, + 0.019670116, + -0.0005023192, + -0.022474382, + 0.052999288, + -0.0148263825, + -0.0047665816, + 0.0010633401, + 0.009955815, + 0.0043841815, + -0.011438454, + -0.029277075, + -0.021696163, + 0.02199135, + -0.025520163, + -0.014638538, + -0.0109151695, + -0.0012620875, + 0.010687072, + -0.007876096, + 0.023695378, + -0.021951096, + 0.004692785, + 0.011834271, + -0.009700882, + -0.010163788, + 0.043231316, + 0.026003195, + 0.023910059, + 0.018301526, + 0.026016612, + 0.01930784, + 0.008057233, + -0.020837441, + 0.002262533, + 0.015175239, + 0.02629838, + -0.024876121, + 0.0036965325, + 0.013122355, + -0.01320286, + 0.009519746, + 0.007574202, + 0.037086084, + -0.015819281, + 0.0041393116, + 0.023883224, + -0.008936082, + -0.026445974, + -0.07358179, + 0.0043674097, + 0.006765795, + 0.022393877, + -0.0055951145, + 0.039501242, + 0.0112707345, + 0.011310987, + -0.0024067715, + 0.018449118, + -0.0077352123, + -0.018019758, + 0.00911051, + -0.01985796, + 0.024809033, + -0.0033208414, + -0.0022876908, + -0.002638224, + -0.0043170936, + 0.023091588, + -0.014973976, + -0.016839014, + 0.004830315, + -0.010479099, + -0.01473246, + 0.0066752266, + -0.010713906, + 0.017831912, + 0.015725357, + 0.0072991424, + 0.0033493536, + 0.004387536, + 0.00965392, + -0.026982674, + -0.013310201, + 0.013954243, + -0.010700489, + 0.008278623, + 0.03365119, + -0.051469687, + -0.0030189466, + 0.012760081, + -0.0061687143, + -0.0034717887, + -0.009828349, + -0.013383997, + -0.028579362, + 0.00679263, + -0.00336948, + -0.015966874, + -0.018838227, + -0.0043170936, + 0.0026650592, + -0.008271914, + 0.017415969, + -0.005625304, + 0.004927592, + 0.0253189, + -0.03464409, + 0.01681218, + 0.0035824834, + -0.0038072274, + -0.014920305, + 0.02925024, + 0.008667732, + 0.011411618, + -0.018435702, + -0.033114493, + 0.031853244, + -0.018757721, + -0.015577765, + 0.021239968, + -0.020810606, + 0.00534689, + -0.027693804, + -0.010633402, + -0.00274221, + -0.017120782, + 0.018972402, + -0.024057651, + -0.014236011, + -0.028391516, + 0.0015069576, + 0.007050918, + 0.0030357186, + 0.0041762097, + 0.010942005, + -0.0034248272, + 0.018314943, + -0.016476741, + 0.005407269, + 0.008164573, + 0.0094929105, + -0.029438084, + -0.006276055, + 0.022380458, + 0.002037789, + -0.015000811, + 0.002542624, + 0.0071783843, + -0.013457794, + -0.022340206, + -0.07546025, + 0.028659867, + 0.0013124032, + -0.008292041, + 0.020502003, + 0.005128855, + 0.018704053, + 0.0069704126, + 0.0116732605, + -0.022541469, + -0.045082938, + 0.009459366, + -0.013457794, + -0.0042466517, + -0.032953482, + -0.024809033, + 0.024996879, + 0.020743519, + 0.008681149, + 0.015913203, + 0.011357948, + 0.0013442698, + 0.024272332, + 0.010391885, + -0.03410739, + 0.0077620475, + -0.0030055293, + 0.026593566, + -0.024970043, + -0.015779028, + 0.0258556, + -0.027479123, + -0.007963311, + 0.009157471, + 0.0001614298, + -0.0061620055, + 0.0016956418, + 0.0126929935, + 0.009432531, + 0.031450715, + -0.020555673, + -0.0069435774, + 0.012283759, + -0.011257317, + 0.00649409, + 0.0001541969, + 0.0020797187, + 0.0052294866, + 0.017120782, + 0.016329147, + -0.010526061, + 0.03349018, + -0.008258496, + -0.0069033247, + -0.0057628336, + -0.026284963, + 0.017000025, + 0.0105126435, + -0.008493303, + -0.0113176955, + 0.023252599, + 0.004424434, + 0.016825596, + 0.010948714, + 0.012404516, + -0.007822426, + -0.02286349, + -0.0028428414, + 0.012491731, + -0.035529647, + -0.02930391, + 0.007970019, + 0.009808223, + 0.014397021, + 0.008714693, + 0.0009325191, + 0.0090903845, + -0.0067456686, + -0.03357069, + 0.023923475, + 0.005085248, + -0.000054613585, + -0.053348143, + 0.0060546654, + 0.01255211, + -0.01816735, + -0.0072052195, + -0.012458187, + -0.01953594, + 0.026835082, + -0.005447522, + -0.0075674932, + 0.0049846163, + 0.0030524905, + 0.0028327783, + 0.018757721, + -0.008325584, + -0.022031602, + 0.026794828, + 0.028418351, + 0.01871747, + -0.0074936966, + -0.011633008, + -0.0070106653, + -0.012833878, + -0.009747843, + -0.019884795, + -0.022018185, + 0.009975942, + 0.01462512, + 0.02286349, + 0.015792446, + -0.0005379595, + 0.018596712, + -0.01031138, + 0.006520925, + -0.017831912, + -0.036254197, + -0.01936151, + 0.018891897, + 0.03378537, + 0.021213133, + 0.026942423, + -0.005997641, + 0.016047379, + -0.0019203855, + 0.008942791, + -0.02613737, + 0.0029417959, + -0.0035153958, + 0.01626206, + 0.00976797, + -0.017899, + -0.0025308838, + -0.00878849, + 0.0038273535, + 0.0076681245, + 0.02836468, + -0.003978301, + 0.05291878, + -0.01135124, + 0.0014675435, + -0.0017375716, + 0.0059607425, + 0.02122655, + -0.004655887, + 0.016718255, + -0.025412822, + -0.014705625, + 0.0030575222, + -0.011163394, + 0.00698383, + -0.014598285, + -0.02471511, + -0.0051355637, + -0.020354409, + 0.019442016, + -0.010398595, + 0.015685106, + 0.037783794, + -0.003874315, + 0.02658015, + 0.018395448, + -0.013571843, + 0.0013308524, + 0.021535153, + 0.011612882, + 0.009305065, + -0.02389664, + 0.016825596, + -0.00226421, + -0.018650383, + -0.0112707345, + 0.0061519425, + -0.015054481, + -0.02613737, + 0.009996068, + 0.0024587645, + 0.014665373, + 0.0005983385, + 0.019227337, + -0.020985033, + -0.024299167, + 0.01734888, + -0.005806441, + -0.003579129, + -0.0024621189, + -0.01948227 + ] + }, + { + "object": "embedding", + "index": 1, + "embedding": [ + -0.0023426407, + -0.031335898, + 0.0022720497, + -0.026686734, + -0.028682984, + -0.00530911, + -0.026870599, + -0.019752385, + -0.0106050875, + -0.029996308, + 0.00056267704, + 0.0222083, + -0.0049840626, + 0.026581667, + -0.0053452267, + 0.035197068, + 0.029602312, + -0.01461729, + 0.047857508, + -0.021302108, + -0.0134090325, + -0.0044160504, + 0.014288959, + -0.009574128, + -0.032911886, + -0.012995336, + 0.00978426, + -0.026213937, + 0.004136969, + -0.007400578, + 0.021105109, + -0.027474727, + -0.020855578, + -0.017769266, + -0.035249602, + -0.023744889, + -0.0021932502, + -0.013776763, + 0.02797379, + 0.004202635, + 0.0021308674, + 0.002152209, + -0.008549736, + -0.001971627, + -0.018439062, + -0.00013943802, + -0.025045078, + -0.027789924, + -0.018373396, + 0.012719538, + 0.027474727, + 0.023298359, + -0.0069080815, + -0.0013042943, + 0.0061036707, + 0.010053491, + -0.00037819613, + 0.023652956, + -0.020632312, + -0.016955007, + -0.005542225, + 0.017716734, + -0.033647347, + 0.02127584, + -0.017743, + -0.0037298386, + 0.0028794617, + -0.005433876, + -0.004402917, + 0.009226098, + 0.006317086, + 0.034277745, + 0.017756134, + -0.00803754, + 0.01660041, + -0.010342423, + -0.015050687, + -0.0052565774, + 0.0033407665, + -0.0009373846, + 0.015431551, + -0.019030057, + 0.0026627635, + 0.008457803, + 0.016022546, + 0.005085845, + -0.024953146, + 0.010020658, + -0.014288959, + -0.01737527, + -0.0010490172, + 0.020120116, + 0.014013162, + 0.01900379, + -0.029339647, + 0.029365914, + 0.018727994, + 0.03333215, + -0.023311492, + -0.027264595, + -0.017349003, + 0.010086324, + -0.004924963, + -0.018741125, + -0.008090072, + 0.00020397555, + 0.010683887, + -0.0021686254, + 0.02078991, + -0.010316156, + -0.009002833, + 0.04554606, + 0.007853675, + -0.020225182, + 0.00070837385, + -0.0048658634, + 0.019108856, + -0.01900379, + -0.014879955, + -0.008884633, + 0.012995336, + -0.00022716392, + 0.018911859, + -0.038060114, + 0.017073205, + -0.0011089375, + -0.01372423, + 0.0060150214, + -0.005584908, + -0.0035689566, + 0.03459294, + 0.010513155, + -0.0036214895, + 0.0058804057, + -0.025439076, + -0.0046721483, + -0.035722397, + -0.02321956, + -0.017769266, + -0.020225182, + 0.012883703, + 0.021420306, + -0.028998183, + -0.018990658, + -0.006986881, + 0.03779745, + 0.030075109, + 0.010184824, + -0.010046924, + -0.0034474742, + 0.016574143, + 0.0023853239, + 0.028814318, + -0.020120116, + -0.00037388678, + -0.009212964, + -0.01073642, + 0.013934362, + 0.006796449, + 0.009035666, + -0.021341506, + -0.0041074194, + 0.008142605, + -0.018767392, + 0.0055586416, + 0.036562927, + 0.019332122, + -0.003058402, + 0.0013830938, + -0.013402466, + -0.0034080744, + 0.031073233, + -0.021105109, + 0.02090811, + 0.017861199, + -0.009245797, + -0.0013822729, + 0.0054732757, + 0.010506588, + 0.008930599, + -0.02585934, + 0.0026315718, + 0.025347143, + 0.04210515, + -0.0068752486, + 0.005689974, + 0.004136969, + 0.0015530051, + -0.01879366, + -0.009061932, + 0.022457832, + 0.010204524, + 0.01826833, + 0.005259861, + -0.68965244, + -0.025990672, + 0.018058198, + -0.015168887, + 0.030180173, + 0.036195196, + 0.010092891, + -0.0030239273, + -0.011596646, + -0.015195153, + 0.0041862186, + 0.016206412, + 0.001814028, + -0.0022720497, + 0.00007690125, + -0.025439076, + 0.024782414, + 0.0021998168, + -0.010762686, + 0.008641669, + -0.023810554, + 0.018977525, + -0.008956866, + 0.004094286, + 0.005253294, + 0.005447009, + 0.01110415, + 0.0052368776, + -0.005906672, + 0.017427802, + -0.016666075, + -0.012450307, + 0.012601339, + -0.03170363, + 0.049564827, + -0.01021109, + -0.012003777, + 0.030784303, + -0.00087746425, + 0.024138886, + -0.008733601, + -0.025439076, + 0.031440966, + -0.0063761855, + -0.019621054, + 0.0054371594, + 0.019634185, + 0.00038743042, + -0.005200761, + -0.032544155, + -0.0007428486, + 0.009902459, + -0.005978905, + -0.009160431, + 0.016390277, + 0.00076501095, + 0.0013280984, + -0.015405284, + -0.018412795, + 0.0074071446, + -0.025097612, + 0.009521595, + -0.019358387, + -0.035144538, + -0.0070656803, + -0.012332108, + -0.022313366, + 0.0037692385, + 0.01815013, + -0.010591954, + 0.01461729, + 0.018583527, + 0.014551624, + -0.023561023, + 0.009534729, + 0.021341506, + 0.003276742, + 0.009928726, + 0.002127584, + -0.002217875, + -0.010769253, + 0.013947495, + -0.004698415, + -0.005647291, + 0.046228986, + -0.011819911, + -0.025058212, + 0.0057293735, + 0.0082805045, + 0.00012035378, + 0.004087719, + 0.035985064, + -0.007249546, + -0.016350877, + -0.027343394, + -0.0061857537, + -0.042683013, + -0.017309604, + 0.005689974, + -0.00069277815, + -0.008057239, + -0.003624773, + 0.0071116467, + 0.014525358, + 0.0057392237, + 0.03422521, + -0.022523498, + 0.0128180375, + 0.024900613, + -0.037666116, + 0.0131266685, + -0.0015513634, + -0.006986881, + -0.026647333, + 0.015694216, + -0.029707378, + 0.008884633, + 0.009876193, + -0.0008076939, + -0.021341506, + 0.020697977, + 0.007945607, + 0.016902473, + -0.0039925035, + 0.0010375256, + -0.00066487, + -0.013750497, + -0.03356855, + -0.029576045, + -0.012936236, + -0.012844304, + -0.0046754316, + 0.011734545, + -0.010526287, + 0.009823659, + 0.009863059, + 0.014945622, + -0.002255633, + 0.006954048, + 0.0028860283, + -0.008582569, + -0.0005680124, + 0.0054273093, + 0.008030973, + 0.0019962518, + -0.030784303, + -0.012194209, + -0.004402917, + -0.0036641725, + 0.013205468, + 0.014748623, + -0.010112591, + -0.013803029, + 0.013829296, + 0.020409048, + -0.014604157, + -0.009613528, + -0.010257056, + -0.013711097, + -0.00807694, + 0.007190446, + 0.025688607, + 0.000911939, + 0.008411837, + -0.004274868, + -0.034330275, + -0.021643572, + 0.013047868, + -0.04375994, + -0.021091975, + 0.02057978, + -0.0046425983, + 0.01021109, + -0.0060544214, + -0.015694216, + 0.027711125, + -0.0036313394, + -0.005847573, + 0.015076954, + 0.0075056436, + -0.017926866, + -0.007807708, + -0.009928726, + 0.0013092194, + 0.0067077996, + 0.0017237371, + -0.011767378, + 0.025018813, + -0.004297851, + 0.014013162, + 0.00086186855, + -0.0019190939, + 0.0057720565, + 0.0046951314, + -0.0002177244, + -0.008208272, + -0.0060609877, + 0.011012217, + 0.002759621, + 0.023823688, + 0.027553527, + -0.015720483, + -0.0015439759, + -0.0079718735, + -0.0010859544, + -0.038401578, + -0.00080974604, + 0.0074071446, + 0.014446558, + 0.0019601353, + -0.0013691398, + -0.024257084, + -0.014788022, + -0.0069606146, + 0.01956852, + 0.04052916, + 0.0108020855, + -0.0051843445, + -0.006189037, + 0.012719538, + 0.017191404, + 0.0030025858, + -0.0013198901, + 0.0072167125, + -0.022667963, + 0.018530995, + 0.016350877, + 0.046544183, + 0.022195166, + -0.016022546, + -0.0040122033, + 0.0026775382, + 0.010506588, + 0.0088124005, + 0.003211076, + 0.0043438175, + 0.01684994, + -0.01244374, + 0.02537341, + 0.006287536, + -0.022287099, + 0.01465669, + 0.0062481365, + -0.011839611, + -0.0076632425, + 0.01067732, + 0.016429678, + 0.0017434369, + -0.013067569, + -0.0049807793, + -0.011458747, + 0.031519763, + -0.023600424, + -0.02570174, + -0.0070262807, + -0.031493496, + -0.003966237, + 0.0358012, + 0.035958797, + 0.022418432, + 0.029129514, + 0.000092496964, + -0.007380878, + 0.003509857, + -0.00067513034, + 0.00530911, + 0.0028794617, + -0.014288959, + 0.0012886986, + 0.021840569, + -0.017349003, + 0.0057096737, + 0.008221405, + -0.004619615, + -0.009580695, + -0.0028088705, + -0.0050168955, + 0.03309575, + -0.012614472, + -0.008661368, + -0.028446587, + -0.017834933, + 0.020146383, + 0.008608836, + -0.0036083562, + -0.000045068544, + -0.01945032, + 0.011990643, + -0.022733629, + 0.0031240683, + 0.0046327487, + 0.020277714, + 0.0051350947, + 0.007945607, + -0.010933418, + 0.010151991, + 0.0049052634, + -0.013310534, + 0.010848052, + 0.008576002, + 0.0044226167, + -0.013369633, + -0.013474699, + -0.010060058, + 0.034067612, + -0.0017352287, + 0.017230805, + -0.014709223, + 0.009823659, + -0.008694202, + 0.0015743466, + 0.0043733674, + 0.012548806, + -0.010197957, + -0.010394955, + 0.0056078914, + -0.012476573, + 0.017966265, + 0.036510393, + 0.00623172, + -0.015720483, + -0.003050194, + -0.01469609, + -0.0022966745, + 0.04938096, + 0.041107025, + 0.006796449, + 0.0012386282, + 0.016863074, + 0.006106954, + -0.030994434, + -0.0002626647, + 0.024401551, + 0.0027054464, + 0.010500021, + 0.0003295621, + 0.026056338, + -0.0005347689, + 0.007939041, + 0.010591954, + 0.00623172, + -0.0046327487, + -0.009580695, + -0.009639794, + 0.020435313, + 0.00081426057, + 0.019016923, + 0.011025351, + 0.0071444795, + 0.0026808216, + 0.03832278, + 0.02071111, + 0.030994434, + 0.014091961, + -0.02366609, + -0.0018780526, + 0.00038127424, + -0.017467203, + -0.00443575, + -0.025951272, + 0.022024434, + 0.010999084, + -0.00577534, + 0.012634172, + 0.02789499, + -0.004225618, + -0.0038710209, + -0.0063105193, + 0.016258944, + -0.01822893, + 0.0026069472, + 0.03191376, + 0.00013092194, + -0.010046924, + 0.0049840626, + 0.016088212, + -0.01388183, + 0.0004998837, + -0.006366336, + 0.00036690975, + -0.003020644, + 0.0057819067, + -0.0061200876, + 0.0027136547, + -0.010953118, + -0.022681097, + 0.00014025884, + -0.00042149477, + -0.010545988, + -0.0068358486, + -0.010920284, + -0.0119775105, + -0.020238316, + 0.018452195, + -0.011767378, + 0.0035656733, + -0.028577918, + -0.0076501095, + 0.030626703, + 0.019673586, + 0.0043733674, + 0.00484288, + 0.009534729, + 0.034277745, + 0.005138378, + -0.024349017, + -0.019594787, + -0.011622913, + -0.0046819984, + -0.001624417, + 0.023088226, + -0.008339604, + -0.0047148312, + 0.0011606496, + 0.034698006, + -0.012640739, + -0.0054502925, + -0.0050267456, + 0.009712027, + -0.0053222436, + 0.0088518, + 0.00033366625, + -0.0064517017, + -0.012765504, + 0.004885563, + -0.012923103, + -0.00050603994, + -0.010303022, + 0.0035394067, + 0.0051843445, + 0.010683887, + 0.018517861, + -0.011439048, + 0.0030813853, + 0.029208314, + -0.0068424153, + -0.007847108, + -0.004698415, + 0.005272994, + 0.01692874, + 0.007032847, + 0.006940915, + -0.025544142, + 0.001823878, + -0.011544113, + -0.021052575, + 0.014026294, + 0.01469609, + -0.0013830938, + 0.0010424505, + 0.023324626, + -0.03167736, + -0.02789499, + 0.002137434, + 0.017283337, + 0.009022532, + 0.002245783, + -0.0023442823, + -0.021814303, + -0.0010793877, + 0.015562884, + 0.018570393, + 0.006402452, + -0.021853702, + -0.01822893, + -0.018045064, + -0.00757131, + -0.014394025, + -0.020803044, + -0.03475054, + 0.00398922, + 0.012548806, + 0.01199721, + 0.01737527, + 0.0058869724, + 0.0057884734, + -0.012023477, + 0.0075581768, + 0.008208272, + -0.03369988, + -0.035144538, + 0.000012607393, + 0.019831184, + 0.013566632, + 0.026699867, + 0.0034080744, + 0.005857423, + 0.022155767, + -0.011583513, + -0.0043372507, + 0.026122004, + 0.0024493483, + -0.011242049, + 0.0058311564, + 0.036431592, + 0.035092004, + 0.0021505672, + -0.0021719087, + -0.024060085, + 0.0052631437, + -0.0040351865, + 0.0057523567, + -0.039005708, + -0.017243937, + 0.0048691467, + 0.000645991, + -0.012161375, + 0.015234552, + 0.009968125, + -0.022589164, + 0.010053491, + -0.016836807, + 0.012975636, + -0.0049479464, + 0.0125685055, + -0.0058541396, + 0.013750497, + -0.0055290917, + 0.022707364, + -0.013474699, + 0.0017697033, + 0.019305855, + -0.0056111747, + 0.002170267, + 0.0068555484, + 0.0054273093, + -0.033148285, + -0.0021669837, + -0.010644487, + 0.03065297, + -0.011800212, + -0.012660438, + 0.0040122033, + -0.045493525, + 0.00001976398, + -0.0041139857, + -0.015470951, + -0.02191937, + 0.00799814, + 0.015484083, + -0.020553512, + 0.026607934, + -0.023626689, + -0.013251434, + 0.009863059, + 0.00006607659, + 0.03438281, + 0.024454083, + 0.04218395, + -0.004402917, + -0.003660889, + -0.02975991, + 0.010414655, + 0.012233608, + 0.00044488834, + -0.0010145424, + 0.0014947263, + -0.004488283, + -0.028525386, + 0.014459692, + -0.0017976115, + 0.020330248, + -0.04129089, + 0.0132777, + -0.00492168, + 0.020566646, + -0.018754259, + -0.03348975, + -0.015773015, + 0.024073219, + -0.010165124, + 0.0077157756, + -0.026082605, + -0.023324626, + -0.029943775, + 0.029812442, + 0.0012591489, + 0.011714846, + 0.007518777, + -0.017939998, + -0.0004896234, + -0.0044587334, + -0.019791786, + 0.013231734, + -0.00057827274, + 0.021249574, + -0.011130417, + 0.023600424, + -0.010033791, + 0.004796914, + -0.012962502, + 0.0024690481, + -0.002418157, + 0.022667963, + -0.014131361, + -0.021157641, + -0.009140732, + 0.010447488, + 0.007814275, + -0.003143768, + -0.017270204, + -0.001106475, + 0.004819897, + -0.021788036, + 0.010710153, + -0.010086324, + -0.036431592, + -0.014144494, + -0.0013239942, + -0.017559135, + -0.019699853, + -0.006940915, + 0.0067570494, + -0.015300219, + -0.013606031, + 0.00023414096, + 0.008687635, + 0.023902487, + 0.010526287, + -0.002749771, + 0.009101332, + 0.014879955, + -0.030968167, + 0.033936277, + -0.009147298, + 0.004491566, + -0.010427789, + 0.0017073206, + -0.024624815, + -0.008746735, + 0.018977525, + -0.020067582, + -0.029365914, + 0.0017729867, + -0.0046327487, + 0.0034803073, + 0.020290848, + -0.011517847, + 0.054056395, + -0.007479377, + -0.0037068555, + -0.025833072, + -0.0033588249, + -0.0030452688, + -0.018517861, + 0.025885606, + 0.01240434, + 0.01628521, + -0.005200761, + -0.0011836328, + 0.010985951, + 0.00032730485, + -0.044810597, + -0.041264623, + -0.00039153456, + 0.036195196, + 0.00053846266, + 0.0071379133, + -0.000006310109, + -0.0039925035, + -0.015050687, + 0.00929833, + -0.01558915, + -0.0111369835, + -0.008004706, + 0.01290997, + -0.0024985978, + -0.007840541, + -0.007833974, + -0.02139404, + -0.012699838, + -0.0016465794, + -0.022470964, + -0.005640724, + -0.009180131, + 0.034855604, + 0.0036773058, + -0.015746748, + -0.0050989785, + 0.0016638167, + -0.033516016, + -0.013008469, + 0.004928246, + -0.008306771, + 0.008201705, + -0.019870585, + 0.0047509475, + 0.021459706, + -0.022759896, + 0.017060071, + -0.0039925035, + 0.0012484782, + 0.016009413, + -0.019292722, + 0.0033456916, + -0.009403396, + -0.028315254, + -0.02123644, + 0.019699853, + 0.0028679701, + -0.00032525277, + 0.011931544, + 0.005072712, + -0.025570408, + -0.020448446, + 0.017585402, + -0.0102964565, + 0.007866807, + 0.012627605, + -0.023193292, + 0.008983132, + -0.0026003805, + 0.0068424153, + -0.019634185, + 0.0044948496, + -0.0011507997, + 0.0037790884, + 0.014144494, + -0.034803074, + -0.012397774, + -0.0050365957, + -0.027553527, + 0.0059526386, + 0.001956852, + -0.0077289087, + 0.022300232, + -0.0100731915, + -0.030600438, + 0.0025987388, + -0.013645431, + -0.021853702, + -0.01285087, + 0.025504742, + 0.0070262807, + 0.0033653914, + -0.013566632, + 0.03309575, + -0.02102631, + 0.0049479464, + -0.012647305, + -0.03333215, + 0.0037922217, + 0.008050673, + 0.0063630524, + 0.0030288522, + 0.0071510463, + -0.0015644965, + 0.008818967, + -0.010710153, + -0.012391207, + 0.015300219, + -0.013290834, + -0.019266456, + 0.014827422, + -0.016955007, + -0.024677347, + -0.012581639, + 0.017204538, + 0.0029516944, + 0.010670753, + 0.19762892, + -0.009475629, + 0.020671712, + 0.045178328, + 0.005253294, + 0.022116367, + 0.031230832, + -0.0069737476, + -0.0019749103, + 0.012975636, + -0.011800212, + 0.014078828, + -0.016337745, + -0.0019732686, + -0.024940012, + -0.016232679, + -0.014105095, + -0.013829296, + -0.020028183, + -0.018439062, + 0.0017729867, + -0.019778652, + -0.007472811, + -0.009488762, + 0.032622956, + -0.009915592, + -0.0031618262, + 0.0053419434, + 0.03309575, + -0.010782386, + -0.008273938, + -0.0088124005, + 0.0037167054, + 0.0006455806, + -0.0111107165, + 0.0045572324, + 0.0038874375, + -0.010552554, + 0.024230817, + 0.02776366, + -0.009981259, + -0.0026627635, + 0.013225167, + -0.0011286373, + -0.0071970127, + 0.007499077, + 0.0064090188, + -0.023626689, + 0.01729647, + 0.021157641, + -0.0112223495, + 0.013973762, + 0.014958754, + 0.021249574, + -0.01729647, + 0.0091210315, + 0.009291763, + 0.014538491, + -0.012936236, + -0.001738512, + -0.0046425983, + 0.031887494, + -0.018320862, + 0.016981272, + 0.00010403984, + 0.014078828, + -0.025425943, + 0.0027711126, + -0.008674501, + -0.03876931, + 0.013290834, + -0.03362108, + 0.0001390276, + 0.012653871, + -0.017532868, + -0.03220269, + 0.01937152, + 0.018005665, + 0.0004867505, + 0.03690439, + -0.018570393, + -0.016626675, + 0.004619615, + 0.010782386, + -0.036247727, + -0.024585415, + 0.026489735, + -0.010408089, + -0.003585373, + 0.002313091, + 0.021971902, + -0.008825534, + 0.004957796, + -0.021735504, + 0.008267371, + 0.027185796, + 0.0010481963, + 0.03372615, + -0.0009480554, + -0.0073020784, + -0.015457817, + -0.03527587, + 0.021656705, + -0.0026036638, + -0.018977525, + 0.0033686748, + -0.0015382301, + 0.020553512, + 0.00583444, + -0.027422193, + 0.0015218136, + -0.019292722, + 0.0011926619, + -0.0006858011, + 0.01558915, + 0.006235003, + 0.008306771, + -0.027474727, + -0.0019076023, + -0.0025560558, + 0.023652956, + -0.017598534, + -0.017283337, + 0.011307715, + -0.036641724, + -0.010092891, + -0.020041317, + 0.023232693, + -0.013028169, + -0.037639853, + 0.020028183, + -0.022103235, + -0.0055225254, + 0.010624787, + 0.004534249, + 0.035827465, + -0.0013075777, + -0.011156683, + -0.016836807, + 0.0055126753, + 0.007032847, + -0.01636401, + 0.004179652, + 0.019174524, + 0.0041730856, + -0.0061332206, + -0.0034507574, + 0.007019714, + -0.006136504, + -0.022983162, + -0.011288015, + -0.023075094, + 0.0057687736, + -0.0030222856, + -0.0069737476, + -0.018005665, + -0.04938096, + -0.039688636, + 0.0019141689, + 0.010756119, + -0.026502868, + 0.0020126682, + 0.01993625, + -0.0028400621, + -0.017651068, + -0.0040056366, + -0.16978645, + 0.014236427, + 0.0061824704, + -0.013487833, + 0.009672628, + 0.016061947, + 0.011747679, + 0.009915592, + 0.0091210315, + 0.011990643, + 0.022379031, + 0.0077420417, + -0.021788036, + -0.029418446, + 0.010440921, + -0.01013229, + -0.01993625, + 0.023206426, + 0.020540379, + 0.013382766, + 0.03288562, + -0.015195153, + 0.020330248, + 0.0033309166, + 0.011760811, + 0.010631354, + 0.008510336, + 0.0027776791, + -0.010165124, + -0.012936236, + -0.01558915, + -0.004711548, + 0.015602283, + 0.017322736, + 0.0005343585, + 0.0016375502, + -0.00022552226, + -0.013428733, + -0.0015152469, + 0.015457817, + 0.023285225, + 0.048908167, + -0.0025560558, + -0.00716418, + -0.0114456145, + 0.020514112, + 0.020737378, + -0.01201691, + 0.017243937, + -0.009928726, + 0.033962544, + -0.005128528, + -0.009449363, + 0.0024542732, + 0.03178243, + 0.0012041535, + -0.007774875, + 0.005712957, + -0.0123715075, + 0.01834713, + -0.013934362, + -0.0034277742, + 0.011366814, + 0.005108828, + 0.0019749103, + -0.015733615, + -0.0077354754, + 0.0026036638, + -0.01989685, + -0.0050398787, + -0.011596646, + -0.03028524, + 0.016350877, + -0.01506382, + -0.00076501095, + 0.025609808, + -0.019765519, + 0.02335089, + -0.011268316, + 0.00041061878, + 0.0006706158, + 0.013251434, + -0.0039334036, + -0.006454985, + -0.0019683435, + -0.004317551, + -0.0048133307, + 0.0035689566, + -0.005942789, + -0.015667949, + 0.028131388, + -0.011826478, + -0.014551624, + -0.006967181, + 0.019384654, + 0.021052575, + -0.012752371, + 0.003660889, + -0.001600613, + -0.017861199, + -0.010316156, + -0.0021834003, + -0.020120116, + 0.010125724, + 0.051508546, + 0.016416544, + 0.023048827, + 0.011872444, + 0.034067612, + 0.02057978, + -0.00710508, + 0.002982886, + 0.03593253, + 0.04168489, + 0.011800212, + -0.0015997922, + 0.008779568, + -0.0035656733, + 0.014958754, + 0.007807708, + 0.025281478, + -0.0016375502, + 0.002812154, + 0.009199831, + -0.0007190446, + -0.003903854, + -0.10065311, + -0.03414641, + 0.016692342, + 0.019739252, + 0.00049906294, + 0.018465329, + 0.0016153879, + 0.008667935, + 0.006415585, + 0.021157641, + -0.012358374, + -0.045046996, + -0.0049052634, + -0.017637935, + 0.011071317, + 0.014065694, + -0.009147298, + 0.004288001, + -0.0099878255, + 0.013973762, + -0.0043996335, + -0.012049743, + -0.0056735575, + -0.014499092, + 0.007177313, + 0.011150116, + -0.013789897, + 0.02090811, + 0.008136039, + 0.00753191, + 0.0023344324, + -0.00795874, + 0.013487833, + -0.021617305, + 0.0021505672, + 0.007820841, + -0.031152032, + -0.0038743042, + 0.013540365, + -0.0051974775, + 0.0037462553, + 0.0010884168, + 0.003424491, + -0.027474727, + 0.017440936, + -0.029287113, + -0.024506615, + -0.0010284964, + 0.0103818225, + -0.0017450786, + -0.00669795, + -0.0018485028, + -0.02480868, + 0.010151991, + -0.011097583, + -0.021302108, + 0.017427802, + 0.012194209, + -0.011872444, + 0.0006677429, + -0.027290862, + -0.010197957, + -0.007879941, + 0.019988783, + -0.0045999154, + 0.002616797, + -0.020198915, + -0.043628607, + 0.0179006, + -0.022260834, + -0.014840555, + -0.01595688, + 0.0007682942, + 0.025911873, + -0.034356542, + -0.008989699, + -0.025189545, + -0.024821814, + 0.005942789, + -0.02082931, + -0.01432836, + -0.020172648, + 0.020894976, + -0.008838667, + 0.029260848, + 0.014013162, + 0.005870556, + 0.012010343, + 0.0077683083, + -0.018727994, + 0.0041993516, + 0.008858367, + 0.010467188, + -0.01432836, + 0.011905277, + 0.024992546, + -0.009823659, + 0.023626689, + 0.02797379, + -0.011005651, + -0.016508477, + -0.0049085463, + -0.045782458, + 0.023193292, + -0.002820362, + -0.0059592053, + 0.025110746, + -0.006921215, + 0.013947495, + -0.008530036, + -0.007630409, + 0.012141676, + -0.014013162, + -0.0013239942, + -0.0026479885, + -0.0102964565, + -0.024086352, + -0.031729896, + 0.02290436, + 0.001462714, + 0.026699867, + 0.008917467, + 0.0082805045, + 0.017716734, + 0.022457832, + 0.023403425, + -0.018517861, + 0.0017089621, + -0.005085845, + 0.018202664, + -0.014302093, + -0.032334026, + 0.025767406, + -0.018806793, + 0.00445545, + 0.02752726, + -0.009863059, + -0.005660424, + -0.0013469774, + 0.013776763, + 0.0022720497, + -0.0025675474, + -0.006862115, + -0.023075094, + 0.029602312, + -0.016981272, + -0.013947495, + -0.0030304939, + -0.019673586, + 0.001951927, + 0.01937152, + -0.006674967, + 0.02147284, + 0.017848067, + 0.00978426, + -0.0010432714, + -0.010756119, + -0.041028224, + 0.022195166, + 0.019844318, + 0.0062547033, + -0.02480868, + 0.018452195, + 0.010335856, + 0.01289027, + -0.014354626, + 0.000795792, + -0.010099458, + 0.0017056789, + -0.014827422, + 0.011557247, + -0.034960672, + -0.0002417336, + -0.002503523, + 0.011583513, + 0.0035295568, + 0.03333215, + 0.016114479, + 0.010401522, + -0.0060544214, + -0.012332108, + 0.02046158, + 0.004777214, + 0.0020241598, + -0.030941902, + 0.018373396, + 0.018557262, + 0.014236427, + -0.030810568, + 0.015694216, + -0.004793631, + 0.008654802, + -0.010723286, + 0.015681082, + 0.0017631368, + -0.0265948, + 0.0057359403, + 0.027133264, + -0.0049413797, + -0.016324611, + 0.004432467, + 0.014433425, + 0.024165152, + -0.011859311, + -0.025596675, + -0.0223265, + -0.0041107023, + 0.0041533853, + -0.027553527, + -0.028709251, + -0.0060150214, + 0.0066487, + 0.028840583, + 0.014814289, + 0.015208286, + 0.023955021, + -0.015260818, + 0.012857437, + -0.028157655, + -0.024178285, + -0.00094969705, + 0.013527232, + 0.04136969, + 0.011360249, + 0.031020701, + -0.015641682, + 0.009948425, + 0.002730071, + 0.0058442894, + -0.018176397, + 0.0088715, + -0.005049729, + -0.0047607976, + -0.010079757, + -0.013947495, + -0.02589874, + -0.017624801, + -0.002687388, + 0.024060085, + 0.029628579, + -0.036142662, + 0.04257795, + 0.00073012576, + -0.0071116467, + -0.009212964, + 0.033016954, + 0.022562897, + 0.02768486, + -0.0065896004, + -0.017874332, + -0.041317157, + -0.00935743, + 0.0028285705, + 0.012962502, + -0.020435313, + -0.0046852813, + 0.012712971, + -0.005617741, + -0.0020931093, + -0.013133235, + -0.0037561052, + 0.024388418, + 0.0015447967, + 0.014288959, + 0.0055684918, + -0.013527232, + -0.0011754245, + 0.019988783, + -0.030311506, + -0.018530995, + -0.024020687, + 0.0074202777, + -0.0035722398, + -0.046228986, + -0.022733629, + 0.0033686748, + -0.017401537, + -0.005128528, + 0.0031043685, + 0.011498147, + -0.00010896481, + -0.0060478547, + 0.010316156, + -0.016981272, + -0.02574114, + 0.009580695, + -0.0068424153, + 0.008969999, + -0.019082591, + -0.0052467273 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 4, + "total_tokens": 4 + } +} +247 34475 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 52 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["japan"]}HTTP/2.0 200 OK +Content-Length: 33520 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 10:20:14 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 85 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6659cb4779-rnb7h +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999999 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_50e11732b14b4572a1744fdaa5f103ac + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.0025093954, + -0.014704405, + -0.0073522027, + -0.02217393, + -0.008075691, + 0.017116033, + -0.024598593, + 0.0051230774, + 0.014808692, + -0.039342105, + -0.0152910175, + 0.011536702, + 0.005507634, + -0.023177689, + 0.0012546977, + -0.0012180345, + 0.019983914, + -0.018875869, + 0.02467681, + -0.017037818, + -0.009405345, + 0.026501823, + 0.0047776285, + -0.0016522902, + 0.008303817, + 0.0038748977, + 0.0046766005, + -0.019006226, + 0.008773107, + -0.005448973, + 0.00782801, + -0.007977922, + -0.0087079285, + -0.027140578, + 0.0075477404, + -0.009196771, + -0.011621434, + -0.01291198, + -0.0018624929, + -0.012527424, + 0.019579802, + -0.009066413, + -0.012436173, + -0.00083307043, + -0.010213565, + 0.022108752, + -0.014743513, + 0.005768351, + -0.008492837, + 0.026058605, + 0.02089642, + 0.03381492, + -0.030243104, + -0.014274224, + -0.026827719, + -0.005315356, + -0.03334563, + -0.0094379345, + -0.0065146512, + 0.00045136528, + 0.0052729896, + 0.021678569, + -0.03459707, + 0.012768586, + 0.012827247, + -0.012468763, + -0.00036948404, + 0.012560013, + -0.016672814, + -0.008544981, + 0.030634178, + 0.027922727, + 0.006045362, + 0.003698914, + 0.024624664, + -0.006325632, + -0.0067069298, + -0.008584088, + 0.0030406052, + 0.013765827, + 0.019162657, + -0.031259898, + 0.0016294776, + -0.0118625965, + 0.007899707, + 0.0049307994, + -0.034232065, + 0.03449278, + 0.006967646, + -0.0044680275, + 0.011100002, + 0.01160188, + 0.011504112, + 0.02024463, + -0.028887378, + -0.014443689, + -0.0041095424, + 0.043617856, + -0.006182238, + -0.025719674, + -0.017142104, + 0.0192148, + -0.008773107, + -0.012879391, + -0.024116268, + 0.010037581, + 0.0064788028, + -0.010115797, + 0.016359955, + -0.0086362315, + -0.009118557, + 0.0281313, + 0.006100764, + -0.053290434, + -0.010721963, + -0.018980155, + 0.011256431, + 0.0030520116, + -0.008942573, + -0.01930605, + 0.017572286, + 0.023490548, + 0.016425135, + 0.000037987196, + 0.026749505, + 0.003094378, + -0.008193013, + -0.017702645, + 0.000025320554, + -0.0077497954, + 0.022916973, + 0.0109175, + 0.0000014878531, + 0.016751029, + -0.017441928, + 0.0029949797, + -0.0130293025, + -0.00095080014, + -0.018380508, + -0.016894424, + 0.0015748901, + 0.0033925723, + -0.0026055346, + 0.007065415, + 0.011113037, + 0.018302292, + 0.014795656, + -0.00048925064, + -0.005377276, + 0.001883676, + -0.0040965066, + -0.020049091, + 0.028835235, + 0.00043425578, + 0.023894658, + 0.011269467, + 0.0125926025, + 0.01319225, + 0.011784382, + 0.0039596306, + -0.0012579567, + -0.006032326, + 0.01753318, + -0.012116795, + -0.009333648, + 0.024533415, + 0.013896185, + 0.00623764, + 0.00089621264, + -0.0038879334, + -0.02420752, + 0.01800247, + -0.03746495, + 0.01565602, + -0.0050839703, + 0.0017158398, + 0.0050285677, + 0.015760306, + -0.024194483, + -0.0127751045, + -0.011425897, + 0.021639463, + 0.01977534, + 0.006693894, + -0.005813976, + -0.002207942, + 0.011947329, + 0.008740517, + 0.0064788028, + -0.016829245, + 0.014482797, + 0.038820673, + 0.022890901, + 0.016021024, + -0.6841199, + -0.04638145, + 0.011191252, + 0.007638991, + 0.03477957, + 0.021078922, + 0.017076924, + 0.008883912, + -0.01001151, + 0.019136585, + -0.024155376, + 0.012735996, + -0.008747036, + -0.011184734, + 0.0005059528, + -0.0062930426, + 0.011210806, + -0.030373462, + -0.0038716388, + -0.0065113925, + -0.015369233, + 0.008003994, + -0.015173695, + 0.0005088044, + -0.0022600854, + -0.0021036556, + 0.00041205416, + 0.001955373, + -0.0053674993, + 0.034883857, + -0.04270535, + 0.033554204, + 0.01827622, + -0.0109696435, + 0.03384099, + -0.025067883, + -0.02199143, + 0.03728245, + 0.020453202, + 0.029956317, + -0.0021199503, + -0.010278745, + -0.0013483927, + -0.009183736, + -0.004164945, + -0.0027081918, + 0.024807166, + -0.018419614, + 0.0036174401, + -0.015864594, + 0.012234118, + -0.01565602, + -0.01755925, + -0.012762069, + 0.00075567025, + 0.019345157, + -0.0024458459, + -0.02495056, + 0.003200294, + -0.003995479, + -0.019123549, + 0.0070849685, + -0.016920496, + -0.005282766, + -0.0075216684, + -0.003175852, + -0.034075636, + 0.0024491048, + 0.013179215, + -0.018315328, + -0.0013964623, + 0.009744276, + -0.0033632417, + -0.0030520116, + 0.010682855, + 0.022186967, + 0.013987436, + -0.026149856, + -0.019801412, + -0.019996949, + 0.008512391, + 0.0064136237, + -0.009359719, + 0.0025631683, + 0.018758547, + 0.002545244, + -0.021261424, + 0.0027407813, + 0.013739755, + -0.019201763, + 0.006980682, + 0.0020107753, + 0.006377775, + -0.0051882565, + -0.01035696, + 0.01793729, + -0.0003220255, + -0.026723431, + 0.009568293, + -0.0011919629, + -0.017911218, + -0.0056836177, + 0.001955373, + -0.0027163392, + -0.0020841018, + -0.0026674548, + -0.014730478, + 0.008303817, + 0.034883857, + -0.030712394, + 0.022486791, + -0.011621434, + -0.022369469, + 0.0036826194, + 0.028704876, + -0.026540931, + 0.012898944, + -0.0028825458, + 0.016320847, + -0.00063997734, + 0.011875632, + 0.0023937025, + 0.018719438, + 0.0024458459, + 0.00901427, + 0.021469997, + 0.004132355, + -0.02595432, + -0.007762831, + 0.004494099, + -0.011882151, + 0.014000472, + 0.021417852, + -0.019671053, + 0.025120026, + -0.007801939, + 0.0061137998, + 0.0053414274, + 0.01493905, + -0.046511807, + -0.03003453, + -0.01619049, + 0.0016042207, + -0.0010070171, + 0.0077563133, + -0.015864594, + -0.0023822961, + 0.002483324, + -0.0003623551, + 0.010122315, + 0.024559487, + -0.005093747, + -0.021039814, + 0.021548212, + -0.00034157923, + -0.015369233, + -0.008883912, + -0.007912743, + 0.012312332, + -0.012416619, + 0.026905933, + -0.0012408472, + -0.02940881, + -0.0028890637, + 0.014039579, + -0.01254046, + 0.004634234, + 0.030686323, + -0.019540695, + -0.026254144, + -0.0030552705, + -0.001484454, + -0.009581328, + 0.016555492, + 0.008388551, + 0.0100441, + 0.0013451338, + -0.011934293, + 0.0042529367, + -0.0031514096, + 0.0043702587, + -0.022447683, + -0.00667434, + -0.004226865, + 0.032015976, + -0.01840658, + 0.0151997665, + 0.014352438, + 0.0028108489, + 0.00033180238, + -0.031025253, + 0.024572521, + 0.011465005, + 0.0118625965, + 0.0082712285, + -0.013479038, + 0.015369233, + 0.016751029, + -0.0077823848, + 0.022421611, + 0.024259662, + -0.011627952, + 0.007938814, + -0.016086202, + 0.014978158, + -0.021065885, + -0.013439931, + -0.025628423, + 0.025432887, + 0.013700647, + 0.011412861, + -0.024220554, + -0.0029314302, + -0.008649267, + -0.0011691501, + 0.028652733, + 0.010389549, + 0.0063484446, + -0.006045362, + 0.0018869351, + 0.003241031, + -0.020596597, + 0.0032068118, + -0.01603406, + 0.0030291989, + 0.015551734, + -0.019605875, + 0.014052615, + 0.01849783, + -0.017324606, + -0.025524138, + -0.020414095, + -0.011660541, + 0.020974636, + 0.015017265, + -0.0011194511, + 0.016451206, + -0.024898417, + 0.035692077, + 0.022695364, + -0.0006326447, + 0.0111521445, + 0.008101762, + 0.011869115, + 0.013557253, + -0.009340165, + 0.050605055, + -0.00006920187, + -0.02313858, + 0.019253908, + -0.006693894, + -0.0071175583, + -0.006602643, + 0.010207048, + 0.009900706, + -0.029904172, + 0.015147624, + 0.0011830007, + 0.038221028, + 0.03796031, + 0.007990958, + -0.003946595, + 0.009385791, + -0.0017875369, + 0.0027733708, + -0.0049307994, + 0.021065885, + 0.014248152, + -0.0020726954, + 0.00001147636, + -0.015030301, + 0.0014518645, + 0.000006034159, + -0.023699122, + 0.02685379, + -0.014821728, + -0.0035196715, + 0.0008807326, + 0.021235352, + 0.01771568, + -0.0077823848, + -0.05034434, + 0.018654259, + 0.001085232, + -0.007502115, + -0.021626426, + -0.00355552, + -0.012853319, + -0.021900179, + 0.027088435, + 0.02747951, + 0.028470233, + -0.0023154877, + -0.023047332, + -0.014091722, + 0.0065570176, + 0.024989668, + -0.019436408, + -0.011908222, + 0.0027489287, + 0.014404582, + -0.021183208, + 0.006902467, + 0.010780623, + 0.017846039, + -0.006961128, + 0.0072283624, + -0.010415621, + 0.0035848506, + 0.0033893134, + -0.011223841, + -0.009301058, + -0.003848826, + 0.008427658, + 0.0046114214, + -0.004481063, + -0.019449444, + 0.01254046, + 0.013948328, + -0.00661242, + -0.013009749, + -0.012879391, + -0.010715445, + 0.0023839257, + 0.06450124, + -0.010982679, + 0.0016384397, + 0.0041258372, + 0.0022503086, + -0.010154904, + -0.02098767, + -0.015642984, + -0.0008636231, + 0.0041844985, + -0.0038390493, + 0.008968645, + 0.011047858, + 0.014052615, + -0.0012832136, + 0.0020678071, + -0.009431416, + -0.018354435, + 0.006902467, + -0.015903702, + 0.012846801, + -0.007606401, + 0.01469137, + 0.013042338, + 0.0036923962, + 0.004142132, + 0.0134138595, + 0.027427366, + 0.018302292, + -0.017833002, + 0.0059769237, + -0.0020238112, + -0.025067883, + 0.012455727, + -0.014991194, + 0.009718204, + 0.020388024, + 0.032693837, + 0.0020759543, + -0.006322373, + 0.0149260145, + 0.015108516, + 0.009033823, + -0.004601645, + 0.008962126, + -0.031859547, + -0.031233827, + 0.018145863, + -0.02651486, + -0.012077688, + 0.04364393, + 0.0017679832, + -0.02891345, + -0.024285734, + -0.0070849685, + 0.031129539, + -0.021978393, + -0.00019716678, + 0.0013980918, + -0.004132355, + -0.0012326998, + -0.04544287, + 0.0045462423, + -0.00973124, + -0.020596597, + -0.041844983, + -0.015512627, + -0.029643456, + -0.02732308, + -0.013622433, + -0.019045334, + -0.03000846, + -0.01937123, + 0.008003994, + 0.025185205, + -0.01755925, + 0.008303817, + -0.00589545, + -0.0012791399, + 0.021013742, + -0.022017501, + -0.016633706, + -0.030217033, + -0.008127834, + -0.0043246336, + 0.022069644, + 0.025902176, + -0.028548447, + -0.0074630072, + 0.0019407078, + 0.025237348, + -0.0033990901, + 0.015577805, + 0.017415857, + 0.005963888, + 0.0006827511, + 0.02152214, + 0.03206812, + -0.0046928953, + -0.010220083, + 0.02380341, + -0.01637299, + 0.0038748977, + 0.007925779, + 0.0011520407, + 0.020661775, + 0.0048884326, + 0.01191474, + -0.005533706, + -0.0075086327, + 0.02548503, + -0.014899943, + 0.007489079, + 0.017428892, + -0.0049829422, + 0.02049231, + -0.0085254265, + 0.008095245, + 0.008023548, + 0.0009874634, + 0.021821965, + -0.019970877, + 0.013387788, + 0.021065885, + 0.0015431152, + 0.021039814, + 0.0071175583, + -0.0025810925, + -0.0054848217, + -0.0073587205, + -0.019879626, + 0.018967118, + -0.01469137, + -0.011373754, + -0.022538934, + 0.006746037, + -0.009046859, + 0.008740517, + -0.010233119, + -0.027010221, + -0.0075086327, + -0.011249913, + 0.006635233, + 0.0038586028, + -0.023972875, + -0.019736232, + 0.00017058593, + 0.010832767, + 0.00268212, + 0.01699871, + -0.004793923, + 0.0009565033, + -0.01203858, + -0.0009842045, + -0.026019499, + -0.044895366, + -0.041375693, + -0.023646979, + 0.019879626, + 0.021795891, + 0.030686323, + 0.015421376, + 0.004934058, + -0.0016604377, + -0.017598357, + 0.018132826, + 0.0021199503, + 0.02906988, + -0.0064983563, + 0.0020564008, + 0.026215035, + 0.018354435, + -0.020309808, + -0.009529185, + -0.010383031, + 0.027297009, + -0.00421057, + 0.010024546, + -0.010220083, + -0.0255111, + 0.00866882, + -0.01977534, + -0.0029737966, + -0.0006033141, + 0.008473284, + -0.0075998832, + 0.009053377, + -0.0023562245, + 0.011119555, + -0.002264974, + 0.0042627132, + -0.023034295, + 0.0009100632, + -0.01874551, + -0.001924413, + -0.012064652, + -0.0008945832, + -0.006739519, + 0.014248152, + 0.014143866, + 0.023281975, + 0.010083207, + 0.00097198336, + -0.01406565, + 0.00302594, + 0.028548447, + -0.016490312, + -0.026827719, + 0.00031428548, + -0.01578638, + -0.02017945, + -0.018419614, + -0.0022226074, + -0.022213038, + -0.020596597, + 0.017363712, + -0.0065830895, + 0.030164888, + -0.00044403263, + -0.019671053, + -0.002872769, + 0.012221082, + 0.03939425, + 0.0039661485, + 0.019019263, + 0.0006118688, + -0.0033697595, + -0.026905933, + -0.01699871, + -0.014417618, + 0.00066197524, + 0.010304816, + 0.020453202, + -0.022695364, + -0.043748215, + -0.0058596013, + 0.008968645, + -0.00627023, + -0.009379273, + 0.02192625, + 0.010780623, + 0.009952849, + -0.020726955, + -0.010845803, + -0.00988767, + 0.03000846, + -0.0034544924, + -0.00010561052, + -0.0100441, + -0.018823724, + -0.021013742, + 0.021887142, + -0.011627952, + 0.014847799, + 0.0034773052, + -0.017194247, + 0.0036435118, + -0.009379273, + -0.013309573, + 0.009548739, + -0.0070132716, + 0.009868116, + 0.0077302414, + -0.010532943, + 0.003852085, + 0.011386789, + -0.014326367, + -0.0016302923, + -0.019814447, + 0.022447683, + -0.012885909, + -0.023125546, + -0.018888904, + 0.01619049, + 0.024572521, + -0.006733001, + -0.00027538172, + 0.010402584, + -0.022578042, + -0.0009662802, + 0.020270701, + 0.008812215, + -0.024976632, + -0.007058897, + -0.0165946, + -0.021561246, + -0.021821965, + -0.0005246918, + -0.0050578984, + -0.0025419851, + -0.0067525553, + -0.0033795366, + -0.024585558, + 0.010487318, + -0.011856079, + -0.013479038, + 0.0013019526, + 0.02293001, + -0.019345157, + 0.00842114, + -0.0014665298, + 0.020361952, + -0.023646979, + 0.0022405316, + 0.00024381059, + -0.016777102, + 0.020401059, + -0.01603406, + -0.002385555, + -0.03081668, + 0.00014868983, + 0.019253908, + 0.017363712, + 0.028235588, + 0.02239554, + -0.024168411, + 0.0036141812, + -0.042679276, + -0.025054848, + 0.013909221, + 0.009164182, + 0.017963361, + -0.004705931, + -0.00552067, + 0.002941207, + 0.010839284, + -0.013179215, + -0.0152910175, + -0.012501352, + -0.030451678, + -0.017846039, + 0.01406565, + -0.011158663, + 0.0018282739, + -0.017102996, + 0.0046733418, + -0.0024474752, + 0.018941047, + 0.0018820466, + 0.0068568415, + 0.004780887, + 0.032667767, + 0.00645599, + 0.0007678913, + -0.0021557987, + -0.019658018, + 0.01908444, + -0.019188728, + -0.01771568, + -0.025915211, + -0.017663537, + 0.037908167, + 0.010910982, + -0.015043337, + -0.024689844, + 0.008590606, + -0.025654495, + -0.02058356, + -0.009620436, + 0.031624902, + 0.016816208, + 0.0005605403, + 0.011627952, + -0.0022014242, + 0.0071827373, + 0.0030650473, + -0.0010583457, + -0.00007072951, + 0.021730714, + -0.028000943, + 0.021939287, + 0.0002782333, + -0.034388494, + -0.010982679, + 0.023295011, + 0.0004073694, + 0.001618886, + 0.007847564, + -0.003421903, + -0.017324606, + -0.000569095, + 0.0009622065, + -0.019384265, + 0.0054880804, + 0.008206049, + -0.044738937, + 0.013544218, + -0.0026299767, + -0.011556255, + -0.017819967, + 0.009483559, + -0.0063386676, + 0.0012579567, + -0.00047865903, + -0.008994716, + 0.0024882122, + -0.00073489436, + -0.03256348, + 0.019970877, + -0.008395068, + 0.0047352617, + 0.038664244, + 0.0077367597, + -0.0008571052, + -0.021391781, + -0.006605902, + -0.020388024, + -0.013290019, + 0.0235818, + -0.0100766895, + -0.018914975, + -0.016855316, + 0.0069350568, + -0.031624902, + 0.0130293025, + 0.0024588816, + 0.0134138595, + -0.028027015, + 0.021339638, + 0.018576045, + -0.039263893, + 0.0015919995, + 0.023555728, + -0.023125546, + 0.0056836177, + -0.013335644, + 0.010689373, + -0.029200237, + 0.022630185, + 0.0071827373, + -0.0064853206, + -0.025328599, + 0.007697652, + -0.006416883, + -0.027583797, + -0.004230124, + 0.18563008, + -0.017767824, + 0.015877629, + 0.038247097, + -0.00052917283, + 0.03587458, + 0.02860059, + -0.0005393571, + -0.0031025254, + 0.008166942, + -0.040776048, + 0.020766063, + 0.014274224, + -0.0005866119, + -0.001288102, + -0.043331068, + -0.029956317, + -0.011465005, + -0.036656726, + 0.009431416, + 0.009314094, + -0.0054750447, + -0.013922256, + -0.00910552, + 0.013557253, + -0.0019977395, + -0.006462508, + 0.009222843, + 0.023881624, + 0.016737994, + 0.0025941283, + 0.008153906, + 0.004748298, + -0.0010208677, + -0.019488553, + -0.014417618, + -0.0043148566, + -0.0037477985, + 0.012468763, + 0.019006226, + 0.0023122288, + 0.008225603, + 0.0069220206, + -0.0042333826, + -0.013557253, + 0.019188728, + 0.003786906, + -0.0077432776, + -0.008968645, + 0.026032533, + -0.03066025, + -0.017089961, + 0.03496207, + 0.03285027, + 0.014547976, + -0.008219085, + 0.02826166, + 0.0053186147, + -0.0005430234, + -0.010734999, + -0.017102996, + 0.01619049, + -0.012677335, + 0.025185205, + -0.011673577, + 0.0043539642, + -0.035222787, + -0.0038129776, + -0.0016262187, + -0.016555492, + 0.014508869, + -0.018198006, + -0.01818497, + -0.013896185, + -0.030399533, + -0.02747951, + 0.037099946, + 0.015499591, + 0.00826471, + 0.038507815, + 0.0039074873, + 0.0065928665, + -0.0036206993, + 0.011908222, + 0.00110723, + -0.021131065, + 0.008336407, + -0.008916501, + 0.01437851, + 0.0008265525, + -0.0017370231, + -0.01883676, + -0.003770611, + -0.020674812, + -0.0057716095, + 0.008492837, + 0.0000075172384, + 0.016724957, + -0.014182973, + 0.002862992, + -0.010995715, + -0.010734999, + 0.0026348652, + 0.007899707, + 0.010669819, + 0.01469137, + -0.018237114, + 0.004376777, + -0.002167205, + -0.010891428, + -0.011921258, + -0.028079158, + -0.000112433954, + 0.005892191, + -0.017259426, + 0.004494099, + -0.0050024963, + -0.015538698, + 0.018615153, + -0.026619146, + 0.015369233, + -0.021874107, + -0.011556255, + -0.011621434, + -0.021874107, + -0.013726719, + 0.0004872138, + -0.01930605, + 0.0010477541, + -0.0331892, + 0.0016359955, + -0.012403583, + 0.026958076, + -0.026723431, + 0.00095161493, + 0.01774175, + 0.017324606, + 0.0038586028, + -0.0072544343, + 0.033137057, + 0.0047352617, + -0.011249913, + 0.025850032, + 0.006746037, + -0.000620831, + -0.005892191, + 0.0043050796, + 0.025250385, + -0.009985439, + 0.0099658845, + -0.00941838, + -0.016777102, + 0.0014388287, + -0.005735761, + 0.04082819, + -0.010220083, + -0.0333717, + -0.015825486, + 0.013283501, + 0.021483032, + -0.03558779, + -0.0043050796, + 0.061685503, + -0.010311334, + -0.027114507, + 0.004503876, + -0.16800566, + 0.0165946, + 0.02064874, + -0.022408575, + 0.021848036, + 0.022486791, + -0.01780693, + -0.0060160314, + 0.004376777, + 0.016021024, + 0.047919676, + 0.03384099, + -0.0165946, + -0.013622433, + 0.01493905, + -0.008655785, + -0.01927998, + 0.0030080157, + 0.01968409, + 0.014052615, + 0.036917444, + -0.012664299, + 0.0035066358, + 0.00017160436, + -0.016490312, + 0.023242868, + 0.0023464477, + 0.01381797, + -0.0085254265, + 0.015695129, + -0.021065885, + -0.0100766895, + 0.02875702, + 0.018719438, + 0.0030585295, + 0.0019635204, + -0.021913214, + -0.020322844, + -0.0151997665, + 0.01646424, + 0.0065081334, + 0.011334646, + 0.00227638, + -0.014287259, + 0.0017582063, + 0.024051089, + 0.014717441, + -0.024663772, + -0.014143866, + -0.011686613, + 0.014613155, + -0.012520906, + -0.011438932, + 0.028704876, + 0.014313331, + -0.0050187907, + 0.008603642, + 0.008290782, + 0.004787405, + 0.024363948, + -0.039316036, + -0.02255197, + 0.017037818, + -0.0062148273, + -0.02622807, + -0.00458535, + -0.0074434537, + 0.0033958312, + -0.010187494, + -0.0026967854, + 0.004138873, + -0.020192485, + 0.0047189672, + -0.034883857, + 0.011373754, + 0.005667323, + 0.0068177343, + 0.02398591, + -0.01325743, + -0.014600119, + -0.036448155, + 0.02860059, + -0.009359719, + -0.0040867296, + -0.013778863, + 0.032302763, + 0.015916737, + 0.005533706, + -0.038455673, + -0.01755925, + 0.027349152, + -0.01827622, + 0.005025309, + -0.009744276, + 0.0024230331, + 0.022617148, + -0.010369996, + 0.028704876, + -0.02938274, + 0.013231358, + 0.008303817, + -0.007573812, + -0.013583325, + 0.02685379, + 0.019723197, + 0.0009499854, + 0.023373226, + 0.024898417, + 0.03782995, + 0.012612157, + -0.018224077, + 0.008199532, + 0.028339874, + 0.010363477, + -0.008355961, + 0.008975162, + 0.014000472, + -0.0047352617, + 0.025693603, + 0.013987436, + 0.019983914, + -0.007104522, + 0.0057487967, + 0.010930535, + -0.007176219, + -0.016177453, + -0.08222996, + 0.0022454201, + -0.0041128015, + 0.020036057, + 0.005009014, + 0.045234296, + 0.01297716, + 0.0062017916, + -0.010207048, + 0.024246626, + -0.0002056197, + -0.019592838, + -0.017389785, + -0.024624664, + 0.0153822685, + 0.0021085439, + -0.018628187, + -0.013374752, + -0.010559015, + 0.010461246, + -0.018980155, + -0.008734, + 0.0034642692, + -0.0076455087, + -0.018054612, + 0.006967646, + -0.010389549, + 0.012879391, + 0.0076194373, + -0.0019570026, + -0.0033665006, + -0.0016213302, + -0.0050350856, + -0.032433122, + -0.013426895, + -0.005292543, + -0.02264322, + 0.0077563133, + 0.036630657, + -0.045651443, + 0.00988767, + -0.00011620212, + -0.0008090356, + -0.020374987, + 0.0062083094, + -0.014587083, + -0.019423373, + 0.013400824, + 0.008303817, + -0.023321083, + -0.035379216, + -0.0057781273, + -0.0025501323, + 0.0017859074, + 0.027714154, + -0.009522667, + 0.017285498, + 0.0073522027, + -0.034988143, + 0.02217393, + 0.009464006, + -0.005729243, + -0.009196771, + 0.027297009, + 0.015343161, + 0.009548739, + -0.016216561, + -0.041740697, + 0.02940881, + -0.015225839, + -0.017911218, + 0.028313803, + -0.02423359, + -0.0068503236, + -0.025563244, + -0.009274987, + -0.016021024, + -0.003135115, + 0.015017265, + -0.023868587, + -0.011510629, + -0.021874107, + 0.010780623, + -0.0065342053, + 0.0018804171, + 0.021600354, + 0.008414622, + -0.0066580456, + 0.0119538475, + -0.009705168, + 0.026553966, + 0.024064125, + 0.023099475, + -0.015095481, + 0.0010941942, + 0.048310753, + -0.0067786267, + -0.009457488, + -0.000286177, + -0.0026593073, + 0.0049307994, + -0.019762304, + -0.06820341, + 0.019175692, + -0.0050383448, + -0.011465005, + 0.028053086, + 0.0034088672, + 0.012768586, + -0.005807458, + 0.014912979, + -0.01690746, + -0.048258606, + 0.015017265, + -0.0078084567, + -0.014600119, + -0.03863817, + -0.025198242, + 0.024168411, + 0.016307812, + 0.00085140206, + -0.005282766, + 0.01995784, + 0.011549737, + 0.024168411, + 0.030399533, + -0.038455673, + 0.00552067, + -0.0038423082, + 0.021417852, + -0.026671289, + -0.011393307, + 0.003500118, + -0.024624664, + -0.0027798887, + 0.01800247, + 0.0021590579, + -0.005729243, + 0.010956607, + -0.0007507818, + 0.021887142, + 0.047293957, + -0.018015504, + -0.009718204, + 0.022069644, + -0.0038455671, + -0.0054750447, + 0.012625192, + -0.0032638435, + -0.0014184603, + -0.0040541403, + 0.01493905, + 0.011575809, + 0.019501587, + -0.0017142104, + -0.008382033, + -0.0048558433, + -0.039811395, + 0.012058134, + 0.008499355, + -0.010050618, + -0.0014828246, + 0.023047332, + -0.0030357167, + 0.029591313, + 0.0014673446, + 0.0013394306, + 0.00056257716, + -0.017116033, + -0.0051133004, + 0.0025615387, + -0.026188964, + -0.025719674, + 0.011940812, + -0.0028809165, + 0.021222316, + 0.008219085, + -0.014965122, + -0.00057276135, + -0.010669819, + -0.016021024, + 0.025367707, + -0.005312097, + -0.0044354377, + -0.044530362, + 0.017194247, + 0.01665978, + -0.017507108, + -0.016777102, + -0.00029615755, + -0.00558259, + 0.020844277, + 0.00012546977, + -0.0015357826, + 0.025993425, + 0.00421057, + 0.00033689447, + 0.009959367, + -0.008688374, + -0.028027015, + 0.037882093, + 0.0016115534, + 0.023373226, + -0.0038846745, + -0.0022812686, + -0.0151997665, + -0.02488538, + -0.009118557, + -0.018954083, + -0.011614916, + -0.00008422362, + 0.016607635, + 0.03034739, + 0.025185205, + -0.010891428, + 0.025367707, + -0.011308574, + -0.0107871415, + -0.015212802, + -0.022604113, + -0.018445686, + 0.02158732, + 0.024116268, + 0.014495833, + 0.016555492, + -0.020205522, + 0.019423373, + -0.0072479164, + 0.00997892, + -0.028704876, + 0.009529185, + -0.012931534, + 0.014339402, + 0.017324606, + -0.006693894, + -0.018875869, + -0.03736066, + 0.013791898, + 0.011693131, + 0.018797653, + -0.01643817, + 0.041688554, + -0.0020629186, + -0.006843806, + 0.003019422, + 0.0024230331, + 0.028027015, + -0.009027306, + 0.016151382, + -0.0038032006, + -0.015017265, + -0.007632473, + 0.0007255249, + -0.013452967, + 0.00648858, + -0.031833474, + -0.0048330305, + -0.024038054, + 0.030634178, + 0.00049454643, + -0.0013418748, + 0.037126016, + -0.0116083985, + 0.03642208, + 0.008179978, + -0.020518381, + -0.012181974, + 0.026723431, + 0.00048151062, + 0.010141868, + -0.007990958, + 0.01175831, + 0.001750059, + -0.022812687, + -0.0014608266, + 0.009040342, + -0.0059736646, + -0.014196008, + 0.0030210514, + 0.008883912, + 0.03081668, + 0.00083673676, + 0.027427366, + -0.0183414, + -0.017050853, + 0.004295303, + 0.00973124, + 0.008193013, + 0.0003967778, + -0.020283736 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 2, + "total_tokens": 2 + } +} diff --git a/vectorstores/inmemory/inmemory.go b/vectorstores/inmemory/inmemory.go index 20a243838..a0c8bd5b5 100644 --- a/vectorstores/inmemory/inmemory.go +++ b/vectorstores/inmemory/inmemory.go @@ -1,6 +1,7 @@ package inmemory import ( + "cmp" "context" "errors" "slices" @@ -175,8 +176,9 @@ func (s *Store) SimilaritySearch( return nil, err } - // already sorted by increasing distance, so reverse to get highest similarity first - slices.Reverse(docs) + // hnsw hands back its result heap as is, not sorted by distance, so order + // by similarity here, highest first. + slices.SortStableFunc(docs, func(a, b schema.Document) int { return cmp.Compare(b.Score, a.Score) }) return docs, nil } diff --git a/vectorstores/inmemory/inmemory_test.go b/vectorstores/inmemory/inmemory_test.go index 1bd5f6750..42cbc1e9a 100644 --- a/vectorstores/inmemory/inmemory_test.go +++ b/vectorstores/inmemory/inmemory_test.go @@ -2,12 +2,13 @@ package inmemory_test import ( "context" - "os" + "net/http" "strings" "testing" "github.com/vxcontrol/langchaingo/chains" "github.com/vxcontrol/langchaingo/embeddings" + "github.com/vxcontrol/langchaingo/internal/httprr" "github.com/vxcontrol/langchaingo/llms/openai" "github.com/vxcontrol/langchaingo/schema" "github.com/vxcontrol/langchaingo/vectorstores" @@ -106,22 +107,37 @@ func TestMockSimilarityScoreCalculation(t *testing.T) { } } -func preCheckEnvSetting(t *testing.T) { +func createOpenAILLM(t *testing.T, rr *httprr.RecordReplay) *openai.LLM { t.Helper() - if openaiKey := os.Getenv("OPENAI_API_KEY"); openaiKey == "" { - t.Skip("OPENAI_API_KEY not set") + opts := []openai.Option{ + openai.WithModel("gpt-4.1-nano"), + openai.WithEmbeddingModel("text-embedding-ada-002"), + openai.WithHTTPClient(rr.Client()), } + if !rr.Recording() { + opts = append(opts, openai.WithToken("test-api-key")) + } + + llm, err := openai.New(opts...) + require.NoError(t, err) + + return llm } func TestInMemoryStoreRest(t *testing.T) { - t.Parallel() + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") + + rr := httprr.OpenForTest(t, http.DefaultTransport) + defer rr.Close() + + if !rr.Recording() { + t.Parallel() + } - preCheckEnvSetting(t) ctx := t.Context() - llm, err := openai.New() - require.NoError(t, err) + llm := createOpenAILLM(t, rr) e, err := embeddings.NewEmbedder(llm) require.NoError(t, err) @@ -148,13 +164,18 @@ func TestInMemoryStoreRest(t *testing.T) { } func TestInMemoryStoreRestWithScoreThreshold(t *testing.T) { - t.Parallel() + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") + + rr := httprr.OpenForTest(t, http.DefaultTransport) + defer rr.Close() + + if !rr.Recording() { + t.Parallel() + } - preCheckEnvSetting(t) ctx := t.Context() - llm, err := openai.New() - require.NoError(t, err) + llm := createOpenAILLM(t, rr) e, err := embeddings.NewEmbedder(llm) require.NoError(t, err) @@ -200,13 +221,18 @@ func TestInMemoryStoreRestWithScoreThreshold(t *testing.T) { } func TestSimilaritySearchWithInvalidScoreThreshold(t *testing.T) { - t.Parallel() + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") + + rr := httprr.OpenForTest(t, http.DefaultTransport) + defer rr.Close() + + if !rr.Recording() { + t.Parallel() + } - preCheckEnvSetting(t) ctx := t.Context() - llm, err := openai.New() - require.NoError(t, err) + llm := createOpenAILLM(t, rr) e, err := embeddings.NewEmbedder(llm) require.NoError(t, err) @@ -249,13 +275,18 @@ func TestSimilaritySearchWithInvalidScoreThreshold(t *testing.T) { } func TestInMemoryAsRetriever(t *testing.T) { - t.Parallel() + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") + + rr := httprr.OpenForTest(t, http.DefaultTransport) + defer rr.Close() + + if !rr.Recording() { + t.Parallel() + } - preCheckEnvSetting(t) ctx := t.Context() - llm, err := openai.New() - require.NoError(t, err) + llm := createOpenAILLM(t, rr) e, err := embeddings.NewEmbedder(llm) require.NoError(t, err) @@ -289,13 +320,18 @@ func TestInMemoryAsRetriever(t *testing.T) { } func TestInMemoryAsRetrieverWithScoreThreshold(t *testing.T) { - t.Parallel() + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") + + rr := httprr.OpenForTest(t, http.DefaultTransport) + defer rr.Close() + + if !rr.Recording() { + t.Parallel() + } - preCheckEnvSetting(t) ctx := t.Context() - llm, err := openai.New() - require.NoError(t, err) + llm := createOpenAILLM(t, rr) e, err := embeddings.NewEmbedder(llm) require.NoError(t, err) @@ -334,13 +370,18 @@ func TestInMemoryAsRetrieverWithScoreThreshold(t *testing.T) { } func TestInMemoryAsRetrieverWithMetadataFilterNotSelected(t *testing.T) { - t.Parallel() + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") + + rr := httprr.OpenForTest(t, http.DefaultTransport) + defer rr.Close() + + if !rr.Recording() { + t.Parallel() + } - preCheckEnvSetting(t) ctx := t.Context() - llm, err := openai.New() - require.NoError(t, err) + llm := createOpenAILLM(t, rr) e, err := embeddings.NewEmbedder(llm) require.NoError(t, err) @@ -406,13 +447,18 @@ func TestInMemoryAsRetrieverWithMetadataFilterNotSelected(t *testing.T) { } func TestInMemoryAsRetrieverWithMetadataFilters(t *testing.T) { - t.Parallel() + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") + + rr := httprr.OpenForTest(t, http.DefaultTransport) + defer rr.Close() + + if !rr.Recording() { + t.Parallel() + } - preCheckEnvSetting(t) ctx := t.Context() - llm, err := openai.New() - require.NoError(t, err) + llm := createOpenAILLM(t, rr) e, err := embeddings.NewEmbedder(llm) require.NoError(t, err) @@ -469,13 +515,18 @@ func TestInMemoryAsRetrieverWithMetadataFilters(t *testing.T) { } func TestDeduplicater(t *testing.T) { - t.Parallel() + httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") + + rr := httprr.OpenForTest(t, http.DefaultTransport) + defer rr.Close() + + if !rr.Recording() { + t.Parallel() + } - preCheckEnvSetting(t) ctx := t.Context() - llm, err := openai.New() - require.NoError(t, err) + llm := createOpenAILLM(t, rr) e, err := embeddings.NewEmbedder(llm) require.NoError(t, err) diff --git a/vectorstores/inmemory/testdata/TestDeduplicater.httprr b/vectorstores/inmemory/testdata/TestDeduplicater.httprr new file mode 100644 index 000000000..b64fde5df --- /dev/null +++ b/vectorstores/inmemory/testdata/TestDeduplicater.httprr @@ -0,0 +1,3179 @@ +httprr trace v1 +248 34504 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 53 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["potato"]}HTTP/2.0 200 OK +Content-Length: 33548 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:27:59 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 101 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-p6w2b +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999999 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_541ce36f3eb447c59a57bc08dde2b6cb + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + -0.0023426407, + -0.031335898, + 0.0022720497, + -0.026686734, + -0.028682984, + -0.00530911, + -0.026870599, + -0.019752385, + -0.0106050875, + -0.029996308, + 0.00056267704, + 0.0222083, + -0.0049840626, + 0.026581667, + -0.0053452267, + 0.035197068, + 0.029602312, + -0.01461729, + 0.047857508, + -0.021302108, + -0.0134090325, + -0.0044160504, + 0.014288959, + -0.009574128, + -0.032911886, + -0.012995336, + 0.00978426, + -0.026213937, + 0.004136969, + -0.007400578, + 0.021105109, + -0.027474727, + -0.020855578, + -0.017769266, + -0.035249602, + -0.023744889, + -0.0021932502, + -0.013776763, + 0.02797379, + 0.004202635, + 0.0021308674, + 0.002152209, + -0.008549736, + -0.001971627, + -0.018439062, + -0.00013943802, + -0.025045078, + -0.027789924, + -0.018373396, + 0.012719538, + 0.027474727, + 0.023298359, + -0.0069080815, + -0.0013042943, + 0.0061036707, + 0.010053491, + -0.00037819613, + 0.023652956, + -0.020632312, + -0.016955007, + -0.005542225, + 0.017716734, + -0.033647347, + 0.02127584, + -0.017743, + -0.0037298386, + 0.0028794617, + -0.005433876, + -0.004402917, + 0.009226098, + 0.006317086, + 0.034277745, + 0.017756134, + -0.00803754, + 0.01660041, + -0.010342423, + -0.015050687, + -0.0052565774, + 0.0033407665, + -0.0009373846, + 0.015431551, + -0.019030057, + 0.0026627635, + 0.008457803, + 0.016022546, + 0.005085845, + -0.024953146, + 0.010020658, + -0.014288959, + -0.01737527, + -0.0010490172, + 0.020120116, + 0.014013162, + 0.01900379, + -0.029339647, + 0.029365914, + 0.018727994, + 0.03333215, + -0.023311492, + -0.027264595, + -0.017349003, + 0.010086324, + -0.004924963, + -0.018741125, + -0.008090072, + 0.00020397555, + 0.010683887, + -0.0021686254, + 0.02078991, + -0.010316156, + -0.009002833, + 0.04554606, + 0.007853675, + -0.020225182, + 0.00070837385, + -0.0048658634, + 0.019108856, + -0.01900379, + -0.014879955, + -0.008884633, + 0.012995336, + -0.00022716392, + 0.018911859, + -0.038060114, + 0.017073205, + -0.0011089375, + -0.01372423, + 0.0060150214, + -0.005584908, + -0.0035689566, + 0.03459294, + 0.010513155, + -0.0036214895, + 0.0058804057, + -0.025439076, + -0.0046721483, + -0.035722397, + -0.02321956, + -0.017769266, + -0.020225182, + 0.012883703, + 0.021420306, + -0.028998183, + -0.018990658, + -0.006986881, + 0.03779745, + 0.030075109, + 0.010184824, + -0.010046924, + -0.0034474742, + 0.016574143, + 0.0023853239, + 0.028814318, + -0.020120116, + -0.00037388678, + -0.009212964, + -0.01073642, + 0.013934362, + 0.006796449, + 0.009035666, + -0.021341506, + -0.0041074194, + 0.008142605, + -0.018767392, + 0.0055586416, + 0.036562927, + 0.019332122, + -0.003058402, + 0.0013830938, + -0.013402466, + -0.0034080744, + 0.031073233, + -0.021105109, + 0.02090811, + 0.017861199, + -0.009245797, + -0.0013822729, + 0.0054732757, + 0.010506588, + 0.008930599, + -0.02585934, + 0.0026315718, + 0.025347143, + 0.04210515, + -0.0068752486, + 0.005689974, + 0.004136969, + 0.0015530051, + -0.01879366, + -0.009061932, + 0.022457832, + 0.010204524, + 0.01826833, + 0.005259861, + -0.68965244, + -0.025990672, + 0.018058198, + -0.015168887, + 0.030180173, + 0.036195196, + 0.010092891, + -0.0030239273, + -0.011596646, + -0.015195153, + 0.0041862186, + 0.016206412, + 0.001814028, + -0.0022720497, + 0.00007690125, + -0.025439076, + 0.024782414, + 0.0021998168, + -0.010762686, + 0.008641669, + -0.023810554, + 0.018977525, + -0.008956866, + 0.004094286, + 0.005253294, + 0.005447009, + 0.01110415, + 0.0052368776, + -0.005906672, + 0.017427802, + -0.016666075, + -0.012450307, + 0.012601339, + -0.03170363, + 0.049564827, + -0.01021109, + -0.012003777, + 0.030784303, + -0.00087746425, + 0.024138886, + -0.008733601, + -0.025439076, + 0.031440966, + -0.0063761855, + -0.019621054, + 0.0054371594, + 0.019634185, + 0.00038743042, + -0.005200761, + -0.032544155, + -0.0007428486, + 0.009902459, + -0.005978905, + -0.009160431, + 0.016390277, + 0.00076501095, + 0.0013280984, + -0.015405284, + -0.018412795, + 0.0074071446, + -0.025097612, + 0.009521595, + -0.019358387, + -0.035144538, + -0.0070656803, + -0.012332108, + -0.022313366, + 0.0037692385, + 0.01815013, + -0.010591954, + 0.01461729, + 0.018583527, + 0.014551624, + -0.023561023, + 0.009534729, + 0.021341506, + 0.003276742, + 0.009928726, + 0.002127584, + -0.002217875, + -0.010769253, + 0.013947495, + -0.004698415, + -0.005647291, + 0.046228986, + -0.011819911, + -0.025058212, + 0.0057293735, + 0.0082805045, + 0.00012035378, + 0.004087719, + 0.035985064, + -0.007249546, + -0.016350877, + -0.027343394, + -0.0061857537, + -0.042683013, + -0.017309604, + 0.005689974, + -0.00069277815, + -0.008057239, + -0.003624773, + 0.0071116467, + 0.014525358, + 0.0057392237, + 0.03422521, + -0.022523498, + 0.0128180375, + 0.024900613, + -0.037666116, + 0.0131266685, + -0.0015513634, + -0.006986881, + -0.026647333, + 0.015694216, + -0.029707378, + 0.008884633, + 0.009876193, + -0.0008076939, + -0.021341506, + 0.020697977, + 0.007945607, + 0.016902473, + -0.0039925035, + 0.0010375256, + -0.00066487, + -0.013750497, + -0.03356855, + -0.029576045, + -0.012936236, + -0.012844304, + -0.0046754316, + 0.011734545, + -0.010526287, + 0.009823659, + 0.009863059, + 0.014945622, + -0.002255633, + 0.006954048, + 0.0028860283, + -0.008582569, + -0.0005680124, + 0.0054273093, + 0.008030973, + 0.0019962518, + -0.030784303, + -0.012194209, + -0.004402917, + -0.0036641725, + 0.013205468, + 0.014748623, + -0.010112591, + -0.013803029, + 0.013829296, + 0.020409048, + -0.014604157, + -0.009613528, + -0.010257056, + -0.013711097, + -0.00807694, + 0.007190446, + 0.025688607, + 0.000911939, + 0.008411837, + -0.004274868, + -0.034330275, + -0.021643572, + 0.013047868, + -0.04375994, + -0.021091975, + 0.02057978, + -0.0046425983, + 0.01021109, + -0.0060544214, + -0.015694216, + 0.027711125, + -0.0036313394, + -0.005847573, + 0.015076954, + 0.0075056436, + -0.017926866, + -0.007807708, + -0.009928726, + 0.0013092194, + 0.0067077996, + 0.0017237371, + -0.011767378, + 0.025018813, + -0.004297851, + 0.014013162, + 0.00086186855, + -0.0019190939, + 0.0057720565, + 0.0046951314, + -0.0002177244, + -0.008208272, + -0.0060609877, + 0.011012217, + 0.002759621, + 0.023823688, + 0.027553527, + -0.015720483, + -0.0015439759, + -0.0079718735, + -0.0010859544, + -0.038401578, + -0.00080974604, + 0.0074071446, + 0.014446558, + 0.0019601353, + -0.0013691398, + -0.024257084, + -0.014788022, + -0.0069606146, + 0.01956852, + 0.04052916, + 0.0108020855, + -0.0051843445, + -0.006189037, + 0.012719538, + 0.017191404, + 0.0030025858, + -0.0013198901, + 0.0072167125, + -0.022667963, + 0.018530995, + 0.016350877, + 0.046544183, + 0.022195166, + -0.016022546, + -0.0040122033, + 0.0026775382, + 0.010506588, + 0.0088124005, + 0.003211076, + 0.0043438175, + 0.01684994, + -0.01244374, + 0.02537341, + 0.006287536, + -0.022287099, + 0.01465669, + 0.0062481365, + -0.011839611, + -0.0076632425, + 0.01067732, + 0.016429678, + 0.0017434369, + -0.013067569, + -0.0049807793, + -0.011458747, + 0.031519763, + -0.023600424, + -0.02570174, + -0.0070262807, + -0.031493496, + -0.003966237, + 0.0358012, + 0.035958797, + 0.022418432, + 0.029129514, + 0.000092496964, + -0.007380878, + 0.003509857, + -0.00067513034, + 0.00530911, + 0.0028794617, + -0.014288959, + 0.0012886986, + 0.021840569, + -0.017349003, + 0.0057096737, + 0.008221405, + -0.004619615, + -0.009580695, + -0.0028088705, + -0.0050168955, + 0.03309575, + -0.012614472, + -0.008661368, + -0.028446587, + -0.017834933, + 0.020146383, + 0.008608836, + -0.0036083562, + -0.000045068544, + -0.01945032, + 0.011990643, + -0.022733629, + 0.0031240683, + 0.0046327487, + 0.020277714, + 0.0051350947, + 0.007945607, + -0.010933418, + 0.010151991, + 0.0049052634, + -0.013310534, + 0.010848052, + 0.008576002, + 0.0044226167, + -0.013369633, + -0.013474699, + -0.010060058, + 0.034067612, + -0.0017352287, + 0.017230805, + -0.014709223, + 0.009823659, + -0.008694202, + 0.0015743466, + 0.0043733674, + 0.012548806, + -0.010197957, + -0.010394955, + 0.0056078914, + -0.012476573, + 0.017966265, + 0.036510393, + 0.00623172, + -0.015720483, + -0.003050194, + -0.01469609, + -0.0022966745, + 0.04938096, + 0.041107025, + 0.006796449, + 0.0012386282, + 0.016863074, + 0.006106954, + -0.030994434, + -0.0002626647, + 0.024401551, + 0.0027054464, + 0.010500021, + 0.0003295621, + 0.026056338, + -0.0005347689, + 0.007939041, + 0.010591954, + 0.00623172, + -0.0046327487, + -0.009580695, + -0.009639794, + 0.020435313, + 0.00081426057, + 0.019016923, + 0.011025351, + 0.0071444795, + 0.0026808216, + 0.03832278, + 0.02071111, + 0.030994434, + 0.014091961, + -0.02366609, + -0.0018780526, + 0.00038127424, + -0.017467203, + -0.00443575, + -0.025951272, + 0.022024434, + 0.010999084, + -0.00577534, + 0.012634172, + 0.02789499, + -0.004225618, + -0.0038710209, + -0.0063105193, + 0.016258944, + -0.01822893, + 0.0026069472, + 0.03191376, + 0.00013092194, + -0.010046924, + 0.0049840626, + 0.016088212, + -0.01388183, + 0.0004998837, + -0.006366336, + 0.00036690975, + -0.003020644, + 0.0057819067, + -0.0061200876, + 0.0027136547, + -0.010953118, + -0.022681097, + 0.00014025884, + -0.00042149477, + -0.010545988, + -0.0068358486, + -0.010920284, + -0.0119775105, + -0.020238316, + 0.018452195, + -0.011767378, + 0.0035656733, + -0.028577918, + -0.0076501095, + 0.030626703, + 0.019673586, + 0.0043733674, + 0.00484288, + 0.009534729, + 0.034277745, + 0.005138378, + -0.024349017, + -0.019594787, + -0.011622913, + -0.0046819984, + -0.001624417, + 0.023088226, + -0.008339604, + -0.0047148312, + 0.0011606496, + 0.034698006, + -0.012640739, + -0.0054502925, + -0.0050267456, + 0.009712027, + -0.0053222436, + 0.0088518, + 0.00033366625, + -0.0064517017, + -0.012765504, + 0.004885563, + -0.012923103, + -0.00050603994, + -0.010303022, + 0.0035394067, + 0.0051843445, + 0.010683887, + 0.018517861, + -0.011439048, + 0.0030813853, + 0.029208314, + -0.0068424153, + -0.007847108, + -0.004698415, + 0.005272994, + 0.01692874, + 0.007032847, + 0.006940915, + -0.025544142, + 0.001823878, + -0.011544113, + -0.021052575, + 0.014026294, + 0.01469609, + -0.0013830938, + 0.0010424505, + 0.023324626, + -0.03167736, + -0.02789499, + 0.002137434, + 0.017283337, + 0.009022532, + 0.002245783, + -0.0023442823, + -0.021814303, + -0.0010793877, + 0.015562884, + 0.018570393, + 0.006402452, + -0.021853702, + -0.01822893, + -0.018045064, + -0.00757131, + -0.014394025, + -0.020803044, + -0.03475054, + 0.00398922, + 0.012548806, + 0.01199721, + 0.01737527, + 0.0058869724, + 0.0057884734, + -0.012023477, + 0.0075581768, + 0.008208272, + -0.03369988, + -0.035144538, + 0.000012607393, + 0.019831184, + 0.013566632, + 0.026699867, + 0.0034080744, + 0.005857423, + 0.022155767, + -0.011583513, + -0.0043372507, + 0.026122004, + 0.0024493483, + -0.011242049, + 0.0058311564, + 0.036431592, + 0.035092004, + 0.0021505672, + -0.0021719087, + -0.024060085, + 0.0052631437, + -0.0040351865, + 0.0057523567, + -0.039005708, + -0.017243937, + 0.0048691467, + 0.000645991, + -0.012161375, + 0.015234552, + 0.009968125, + -0.022589164, + 0.010053491, + -0.016836807, + 0.012975636, + -0.0049479464, + 0.0125685055, + -0.0058541396, + 0.013750497, + -0.0055290917, + 0.022707364, + -0.013474699, + 0.0017697033, + 0.019305855, + -0.0056111747, + 0.002170267, + 0.0068555484, + 0.0054273093, + -0.033148285, + -0.0021669837, + -0.010644487, + 0.03065297, + -0.011800212, + -0.012660438, + 0.0040122033, + -0.045493525, + 0.00001976398, + -0.0041139857, + -0.015470951, + -0.02191937, + 0.00799814, + 0.015484083, + -0.020553512, + 0.026607934, + -0.023626689, + -0.013251434, + 0.009863059, + 0.00006607659, + 0.03438281, + 0.024454083, + 0.04218395, + -0.004402917, + -0.003660889, + -0.02975991, + 0.010414655, + 0.012233608, + 0.00044488834, + -0.0010145424, + 0.0014947263, + -0.004488283, + -0.028525386, + 0.014459692, + -0.0017976115, + 0.020330248, + -0.04129089, + 0.0132777, + -0.00492168, + 0.020566646, + -0.018754259, + -0.03348975, + -0.015773015, + 0.024073219, + -0.010165124, + 0.0077157756, + -0.026082605, + -0.023324626, + -0.029943775, + 0.029812442, + 0.0012591489, + 0.011714846, + 0.007518777, + -0.017939998, + -0.0004896234, + -0.0044587334, + -0.019791786, + 0.013231734, + -0.00057827274, + 0.021249574, + -0.011130417, + 0.023600424, + -0.010033791, + 0.004796914, + -0.012962502, + 0.0024690481, + -0.002418157, + 0.022667963, + -0.014131361, + -0.021157641, + -0.009140732, + 0.010447488, + 0.007814275, + -0.003143768, + -0.017270204, + -0.001106475, + 0.004819897, + -0.021788036, + 0.010710153, + -0.010086324, + -0.036431592, + -0.014144494, + -0.0013239942, + -0.017559135, + -0.019699853, + -0.006940915, + 0.0067570494, + -0.015300219, + -0.013606031, + 0.00023414096, + 0.008687635, + 0.023902487, + 0.010526287, + -0.002749771, + 0.009101332, + 0.014879955, + -0.030968167, + 0.033936277, + -0.009147298, + 0.004491566, + -0.010427789, + 0.0017073206, + -0.024624815, + -0.008746735, + 0.018977525, + -0.020067582, + -0.029365914, + 0.0017729867, + -0.0046327487, + 0.0034803073, + 0.020290848, + -0.011517847, + 0.054056395, + -0.007479377, + -0.0037068555, + -0.025833072, + -0.0033588249, + -0.0030452688, + -0.018517861, + 0.025885606, + 0.01240434, + 0.01628521, + -0.005200761, + -0.0011836328, + 0.010985951, + 0.00032730485, + -0.044810597, + -0.041264623, + -0.00039153456, + 0.036195196, + 0.00053846266, + 0.0071379133, + -0.000006310109, + -0.0039925035, + -0.015050687, + 0.00929833, + -0.01558915, + -0.0111369835, + -0.008004706, + 0.01290997, + -0.0024985978, + -0.007840541, + -0.007833974, + -0.02139404, + -0.012699838, + -0.0016465794, + -0.022470964, + -0.005640724, + -0.009180131, + 0.034855604, + 0.0036773058, + -0.015746748, + -0.0050989785, + 0.0016638167, + -0.033516016, + -0.013008469, + 0.004928246, + -0.008306771, + 0.008201705, + -0.019870585, + 0.0047509475, + 0.021459706, + -0.022759896, + 0.017060071, + -0.0039925035, + 0.0012484782, + 0.016009413, + -0.019292722, + 0.0033456916, + -0.009403396, + -0.028315254, + -0.02123644, + 0.019699853, + 0.0028679701, + -0.00032525277, + 0.011931544, + 0.005072712, + -0.025570408, + -0.020448446, + 0.017585402, + -0.0102964565, + 0.007866807, + 0.012627605, + -0.023193292, + 0.008983132, + -0.0026003805, + 0.0068424153, + -0.019634185, + 0.0044948496, + -0.0011507997, + 0.0037790884, + 0.014144494, + -0.034803074, + -0.012397774, + -0.0050365957, + -0.027553527, + 0.0059526386, + 0.001956852, + -0.0077289087, + 0.022300232, + -0.0100731915, + -0.030600438, + 0.0025987388, + -0.013645431, + -0.021853702, + -0.01285087, + 0.025504742, + 0.0070262807, + 0.0033653914, + -0.013566632, + 0.03309575, + -0.02102631, + 0.0049479464, + -0.012647305, + -0.03333215, + 0.0037922217, + 0.008050673, + 0.0063630524, + 0.0030288522, + 0.0071510463, + -0.0015644965, + 0.008818967, + -0.010710153, + -0.012391207, + 0.015300219, + -0.013290834, + -0.019266456, + 0.014827422, + -0.016955007, + -0.024677347, + -0.012581639, + 0.017204538, + 0.0029516944, + 0.010670753, + 0.19762892, + -0.009475629, + 0.020671712, + 0.045178328, + 0.005253294, + 0.022116367, + 0.031230832, + -0.0069737476, + -0.0019749103, + 0.012975636, + -0.011800212, + 0.014078828, + -0.016337745, + -0.0019732686, + -0.024940012, + -0.016232679, + -0.014105095, + -0.013829296, + -0.020028183, + -0.018439062, + 0.0017729867, + -0.019778652, + -0.007472811, + -0.009488762, + 0.032622956, + -0.009915592, + -0.0031618262, + 0.0053419434, + 0.03309575, + -0.010782386, + -0.008273938, + -0.0088124005, + 0.0037167054, + 0.0006455806, + -0.0111107165, + 0.0045572324, + 0.0038874375, + -0.010552554, + 0.024230817, + 0.02776366, + -0.009981259, + -0.0026627635, + 0.013225167, + -0.0011286373, + -0.0071970127, + 0.007499077, + 0.0064090188, + -0.023626689, + 0.01729647, + 0.021157641, + -0.0112223495, + 0.013973762, + 0.014958754, + 0.021249574, + -0.01729647, + 0.0091210315, + 0.009291763, + 0.014538491, + -0.012936236, + -0.001738512, + -0.0046425983, + 0.031887494, + -0.018320862, + 0.016981272, + 0.00010403984, + 0.014078828, + -0.025425943, + 0.0027711126, + -0.008674501, + -0.03876931, + 0.013290834, + -0.03362108, + 0.0001390276, + 0.012653871, + -0.017532868, + -0.03220269, + 0.01937152, + 0.018005665, + 0.0004867505, + 0.03690439, + -0.018570393, + -0.016626675, + 0.004619615, + 0.010782386, + -0.036247727, + -0.024585415, + 0.026489735, + -0.010408089, + -0.003585373, + 0.002313091, + 0.021971902, + -0.008825534, + 0.004957796, + -0.021735504, + 0.008267371, + 0.027185796, + 0.0010481963, + 0.03372615, + -0.0009480554, + -0.0073020784, + -0.015457817, + -0.03527587, + 0.021656705, + -0.0026036638, + -0.018977525, + 0.0033686748, + -0.0015382301, + 0.020553512, + 0.00583444, + -0.027422193, + 0.0015218136, + -0.019292722, + 0.0011926619, + -0.0006858011, + 0.01558915, + 0.006235003, + 0.008306771, + -0.027474727, + -0.0019076023, + -0.0025560558, + 0.023652956, + -0.017598534, + -0.017283337, + 0.011307715, + -0.036641724, + -0.010092891, + -0.020041317, + 0.023232693, + -0.013028169, + -0.037639853, + 0.020028183, + -0.022103235, + -0.0055225254, + 0.010624787, + 0.004534249, + 0.035827465, + -0.0013075777, + -0.011156683, + -0.016836807, + 0.0055126753, + 0.007032847, + -0.01636401, + 0.004179652, + 0.019174524, + 0.0041730856, + -0.0061332206, + -0.0034507574, + 0.007019714, + -0.006136504, + -0.022983162, + -0.011288015, + -0.023075094, + 0.0057687736, + -0.0030222856, + -0.0069737476, + -0.018005665, + -0.04938096, + -0.039688636, + 0.0019141689, + 0.010756119, + -0.026502868, + 0.0020126682, + 0.01993625, + -0.0028400621, + -0.017651068, + -0.0040056366, + -0.16978645, + 0.014236427, + 0.0061824704, + -0.013487833, + 0.009672628, + 0.016061947, + 0.011747679, + 0.009915592, + 0.0091210315, + 0.011990643, + 0.022379031, + 0.0077420417, + -0.021788036, + -0.029418446, + 0.010440921, + -0.01013229, + -0.01993625, + 0.023206426, + 0.020540379, + 0.013382766, + 0.03288562, + -0.015195153, + 0.020330248, + 0.0033309166, + 0.011760811, + 0.010631354, + 0.008510336, + 0.0027776791, + -0.010165124, + -0.012936236, + -0.01558915, + -0.004711548, + 0.015602283, + 0.017322736, + 0.0005343585, + 0.0016375502, + -0.00022552226, + -0.013428733, + -0.0015152469, + 0.015457817, + 0.023285225, + 0.048908167, + -0.0025560558, + -0.00716418, + -0.0114456145, + 0.020514112, + 0.020737378, + -0.01201691, + 0.017243937, + -0.009928726, + 0.033962544, + -0.005128528, + -0.009449363, + 0.0024542732, + 0.03178243, + 0.0012041535, + -0.007774875, + 0.005712957, + -0.0123715075, + 0.01834713, + -0.013934362, + -0.0034277742, + 0.011366814, + 0.005108828, + 0.0019749103, + -0.015733615, + -0.0077354754, + 0.0026036638, + -0.01989685, + -0.0050398787, + -0.011596646, + -0.03028524, + 0.016350877, + -0.01506382, + -0.00076501095, + 0.025609808, + -0.019765519, + 0.02335089, + -0.011268316, + 0.00041061878, + 0.0006706158, + 0.013251434, + -0.0039334036, + -0.006454985, + -0.0019683435, + -0.004317551, + -0.0048133307, + 0.0035689566, + -0.005942789, + -0.015667949, + 0.028131388, + -0.011826478, + -0.014551624, + -0.006967181, + 0.019384654, + 0.021052575, + -0.012752371, + 0.003660889, + -0.001600613, + -0.017861199, + -0.010316156, + -0.0021834003, + -0.020120116, + 0.010125724, + 0.051508546, + 0.016416544, + 0.023048827, + 0.011872444, + 0.034067612, + 0.02057978, + -0.00710508, + 0.002982886, + 0.03593253, + 0.04168489, + 0.011800212, + -0.0015997922, + 0.008779568, + -0.0035656733, + 0.014958754, + 0.007807708, + 0.025281478, + -0.0016375502, + 0.002812154, + 0.009199831, + -0.0007190446, + -0.003903854, + -0.10065311, + -0.03414641, + 0.016692342, + 0.019739252, + 0.00049906294, + 0.018465329, + 0.0016153879, + 0.008667935, + 0.006415585, + 0.021157641, + -0.012358374, + -0.045046996, + -0.0049052634, + -0.017637935, + 0.011071317, + 0.014065694, + -0.009147298, + 0.004288001, + -0.0099878255, + 0.013973762, + -0.0043996335, + -0.012049743, + -0.0056735575, + -0.014499092, + 0.007177313, + 0.011150116, + -0.013789897, + 0.02090811, + 0.008136039, + 0.00753191, + 0.0023344324, + -0.00795874, + 0.013487833, + -0.021617305, + 0.0021505672, + 0.007820841, + -0.031152032, + -0.0038743042, + 0.013540365, + -0.0051974775, + 0.0037462553, + 0.0010884168, + 0.003424491, + -0.027474727, + 0.017440936, + -0.029287113, + -0.024506615, + -0.0010284964, + 0.0103818225, + -0.0017450786, + -0.00669795, + -0.0018485028, + -0.02480868, + 0.010151991, + -0.011097583, + -0.021302108, + 0.017427802, + 0.012194209, + -0.011872444, + 0.0006677429, + -0.027290862, + -0.010197957, + -0.007879941, + 0.019988783, + -0.0045999154, + 0.002616797, + -0.020198915, + -0.043628607, + 0.0179006, + -0.022260834, + -0.014840555, + -0.01595688, + 0.0007682942, + 0.025911873, + -0.034356542, + -0.008989699, + -0.025189545, + -0.024821814, + 0.005942789, + -0.02082931, + -0.01432836, + -0.020172648, + 0.020894976, + -0.008838667, + 0.029260848, + 0.014013162, + 0.005870556, + 0.012010343, + 0.0077683083, + -0.018727994, + 0.0041993516, + 0.008858367, + 0.010467188, + -0.01432836, + 0.011905277, + 0.024992546, + -0.009823659, + 0.023626689, + 0.02797379, + -0.011005651, + -0.016508477, + -0.0049085463, + -0.045782458, + 0.023193292, + -0.002820362, + -0.0059592053, + 0.025110746, + -0.006921215, + 0.013947495, + -0.008530036, + -0.007630409, + 0.012141676, + -0.014013162, + -0.0013239942, + -0.0026479885, + -0.0102964565, + -0.024086352, + -0.031729896, + 0.02290436, + 0.001462714, + 0.026699867, + 0.008917467, + 0.0082805045, + 0.017716734, + 0.022457832, + 0.023403425, + -0.018517861, + 0.0017089621, + -0.005085845, + 0.018202664, + -0.014302093, + -0.032334026, + 0.025767406, + -0.018806793, + 0.00445545, + 0.02752726, + -0.009863059, + -0.005660424, + -0.0013469774, + 0.013776763, + 0.0022720497, + -0.0025675474, + -0.006862115, + -0.023075094, + 0.029602312, + -0.016981272, + -0.013947495, + -0.0030304939, + -0.019673586, + 0.001951927, + 0.01937152, + -0.006674967, + 0.02147284, + 0.017848067, + 0.00978426, + -0.0010432714, + -0.010756119, + -0.041028224, + 0.022195166, + 0.019844318, + 0.0062547033, + -0.02480868, + 0.018452195, + 0.010335856, + 0.01289027, + -0.014354626, + 0.000795792, + -0.010099458, + 0.0017056789, + -0.014827422, + 0.011557247, + -0.034960672, + -0.0002417336, + -0.002503523, + 0.011583513, + 0.0035295568, + 0.03333215, + 0.016114479, + 0.010401522, + -0.0060544214, + -0.012332108, + 0.02046158, + 0.004777214, + 0.0020241598, + -0.030941902, + 0.018373396, + 0.018557262, + 0.014236427, + -0.030810568, + 0.015694216, + -0.004793631, + 0.008654802, + -0.010723286, + 0.015681082, + 0.0017631368, + -0.0265948, + 0.0057359403, + 0.027133264, + -0.0049413797, + -0.016324611, + 0.004432467, + 0.014433425, + 0.024165152, + -0.011859311, + -0.025596675, + -0.0223265, + -0.0041107023, + 0.0041533853, + -0.027553527, + -0.028709251, + -0.0060150214, + 0.0066487, + 0.028840583, + 0.014814289, + 0.015208286, + 0.023955021, + -0.015260818, + 0.012857437, + -0.028157655, + -0.024178285, + -0.00094969705, + 0.013527232, + 0.04136969, + 0.011360249, + 0.031020701, + -0.015641682, + 0.009948425, + 0.002730071, + 0.0058442894, + -0.018176397, + 0.0088715, + -0.005049729, + -0.0047607976, + -0.010079757, + -0.013947495, + -0.02589874, + -0.017624801, + -0.002687388, + 0.024060085, + 0.029628579, + -0.036142662, + 0.04257795, + 0.00073012576, + -0.0071116467, + -0.009212964, + 0.033016954, + 0.022562897, + 0.02768486, + -0.0065896004, + -0.017874332, + -0.041317157, + -0.00935743, + 0.0028285705, + 0.012962502, + -0.020435313, + -0.0046852813, + 0.012712971, + -0.005617741, + -0.0020931093, + -0.013133235, + -0.0037561052, + 0.024388418, + 0.0015447967, + 0.014288959, + 0.0055684918, + -0.013527232, + -0.0011754245, + 0.019988783, + -0.030311506, + -0.018530995, + -0.024020687, + 0.0074202777, + -0.0035722398, + -0.046228986, + -0.022733629, + 0.0033686748, + -0.017401537, + -0.005128528, + 0.0031043685, + 0.011498147, + -0.00010896481, + -0.0060478547, + 0.010316156, + -0.016981272, + -0.02574114, + 0.009580695, + -0.0068424153, + 0.008969999, + -0.019082591, + -0.0052467273 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 2, + "total_tokens": 2 + } +} +248 34503 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 53 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["potato"]}HTTP/2.0 200 OK +Content-Length: 33548 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:28:00 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 76 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-qpwjk +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999999 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_51cd021dc4ed4f2e95352d3a13c79be0 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + -0.0023426407, + -0.031335898, + 0.0022720497, + -0.026686734, + -0.028682984, + -0.00530911, + -0.026870599, + -0.019752385, + -0.0106050875, + -0.029996308, + 0.00056267704, + 0.0222083, + -0.0049840626, + 0.026581667, + -0.0053452267, + 0.035197068, + 0.029602312, + -0.01461729, + 0.047857508, + -0.021302108, + -0.0134090325, + -0.0044160504, + 0.014288959, + -0.009574128, + -0.032911886, + -0.012995336, + 0.00978426, + -0.026213937, + 0.004136969, + -0.007400578, + 0.021105109, + -0.027474727, + -0.020855578, + -0.017769266, + -0.035249602, + -0.023744889, + -0.0021932502, + -0.013776763, + 0.02797379, + 0.004202635, + 0.0021308674, + 0.002152209, + -0.008549736, + -0.001971627, + -0.018439062, + -0.00013943802, + -0.025045078, + -0.027789924, + -0.018373396, + 0.012719538, + 0.027474727, + 0.023298359, + -0.0069080815, + -0.0013042943, + 0.0061036707, + 0.010053491, + -0.00037819613, + 0.023652956, + -0.020632312, + -0.016955007, + -0.005542225, + 0.017716734, + -0.033647347, + 0.02127584, + -0.017743, + -0.0037298386, + 0.0028794617, + -0.005433876, + -0.004402917, + 0.009226098, + 0.006317086, + 0.034277745, + 0.017756134, + -0.00803754, + 0.01660041, + -0.010342423, + -0.015050687, + -0.0052565774, + 0.0033407665, + -0.0009373846, + 0.015431551, + -0.019030057, + 0.0026627635, + 0.008457803, + 0.016022546, + 0.005085845, + -0.024953146, + 0.010020658, + -0.014288959, + -0.01737527, + -0.0010490172, + 0.020120116, + 0.014013162, + 0.01900379, + -0.029339647, + 0.029365914, + 0.018727994, + 0.03333215, + -0.023311492, + -0.027264595, + -0.017349003, + 0.010086324, + -0.004924963, + -0.018741125, + -0.008090072, + 0.00020397555, + 0.010683887, + -0.0021686254, + 0.02078991, + -0.010316156, + -0.009002833, + 0.04554606, + 0.007853675, + -0.020225182, + 0.00070837385, + -0.0048658634, + 0.019108856, + -0.01900379, + -0.014879955, + -0.008884633, + 0.012995336, + -0.00022716392, + 0.018911859, + -0.038060114, + 0.017073205, + -0.0011089375, + -0.01372423, + 0.0060150214, + -0.005584908, + -0.0035689566, + 0.03459294, + 0.010513155, + -0.0036214895, + 0.0058804057, + -0.025439076, + -0.0046721483, + -0.035722397, + -0.02321956, + -0.017769266, + -0.020225182, + 0.012883703, + 0.021420306, + -0.028998183, + -0.018990658, + -0.006986881, + 0.03779745, + 0.030075109, + 0.010184824, + -0.010046924, + -0.0034474742, + 0.016574143, + 0.0023853239, + 0.028814318, + -0.020120116, + -0.00037388678, + -0.009212964, + -0.01073642, + 0.013934362, + 0.006796449, + 0.009035666, + -0.021341506, + -0.0041074194, + 0.008142605, + -0.018767392, + 0.0055586416, + 0.036562927, + 0.019332122, + -0.003058402, + 0.0013830938, + -0.013402466, + -0.0034080744, + 0.031073233, + -0.021105109, + 0.02090811, + 0.017861199, + -0.009245797, + -0.0013822729, + 0.0054732757, + 0.010506588, + 0.008930599, + -0.02585934, + 0.0026315718, + 0.025347143, + 0.04210515, + -0.0068752486, + 0.005689974, + 0.004136969, + 0.0015530051, + -0.01879366, + -0.009061932, + 0.022457832, + 0.010204524, + 0.01826833, + 0.005259861, + -0.68965244, + -0.025990672, + 0.018058198, + -0.015168887, + 0.030180173, + 0.036195196, + 0.010092891, + -0.0030239273, + -0.011596646, + -0.015195153, + 0.0041862186, + 0.016206412, + 0.001814028, + -0.0022720497, + 0.00007690125, + -0.025439076, + 0.024782414, + 0.0021998168, + -0.010762686, + 0.008641669, + -0.023810554, + 0.018977525, + -0.008956866, + 0.004094286, + 0.005253294, + 0.005447009, + 0.01110415, + 0.0052368776, + -0.005906672, + 0.017427802, + -0.016666075, + -0.012450307, + 0.012601339, + -0.03170363, + 0.049564827, + -0.01021109, + -0.012003777, + 0.030784303, + -0.00087746425, + 0.024138886, + -0.008733601, + -0.025439076, + 0.031440966, + -0.0063761855, + -0.019621054, + 0.0054371594, + 0.019634185, + 0.00038743042, + -0.005200761, + -0.032544155, + -0.0007428486, + 0.009902459, + -0.005978905, + -0.009160431, + 0.016390277, + 0.00076501095, + 0.0013280984, + -0.015405284, + -0.018412795, + 0.0074071446, + -0.025097612, + 0.009521595, + -0.019358387, + -0.035144538, + -0.0070656803, + -0.012332108, + -0.022313366, + 0.0037692385, + 0.01815013, + -0.010591954, + 0.01461729, + 0.018583527, + 0.014551624, + -0.023561023, + 0.009534729, + 0.021341506, + 0.003276742, + 0.009928726, + 0.002127584, + -0.002217875, + -0.010769253, + 0.013947495, + -0.004698415, + -0.005647291, + 0.046228986, + -0.011819911, + -0.025058212, + 0.0057293735, + 0.0082805045, + 0.00012035378, + 0.004087719, + 0.035985064, + -0.007249546, + -0.016350877, + -0.027343394, + -0.0061857537, + -0.042683013, + -0.017309604, + 0.005689974, + -0.00069277815, + -0.008057239, + -0.003624773, + 0.0071116467, + 0.014525358, + 0.0057392237, + 0.03422521, + -0.022523498, + 0.0128180375, + 0.024900613, + -0.037666116, + 0.0131266685, + -0.0015513634, + -0.006986881, + -0.026647333, + 0.015694216, + -0.029707378, + 0.008884633, + 0.009876193, + -0.0008076939, + -0.021341506, + 0.020697977, + 0.007945607, + 0.016902473, + -0.0039925035, + 0.0010375256, + -0.00066487, + -0.013750497, + -0.03356855, + -0.029576045, + -0.012936236, + -0.012844304, + -0.0046754316, + 0.011734545, + -0.010526287, + 0.009823659, + 0.009863059, + 0.014945622, + -0.002255633, + 0.006954048, + 0.0028860283, + -0.008582569, + -0.0005680124, + 0.0054273093, + 0.008030973, + 0.0019962518, + -0.030784303, + -0.012194209, + -0.004402917, + -0.0036641725, + 0.013205468, + 0.014748623, + -0.010112591, + -0.013803029, + 0.013829296, + 0.020409048, + -0.014604157, + -0.009613528, + -0.010257056, + -0.013711097, + -0.00807694, + 0.007190446, + 0.025688607, + 0.000911939, + 0.008411837, + -0.004274868, + -0.034330275, + -0.021643572, + 0.013047868, + -0.04375994, + -0.021091975, + 0.02057978, + -0.0046425983, + 0.01021109, + -0.0060544214, + -0.015694216, + 0.027711125, + -0.0036313394, + -0.005847573, + 0.015076954, + 0.0075056436, + -0.017926866, + -0.007807708, + -0.009928726, + 0.0013092194, + 0.0067077996, + 0.0017237371, + -0.011767378, + 0.025018813, + -0.004297851, + 0.014013162, + 0.00086186855, + -0.0019190939, + 0.0057720565, + 0.0046951314, + -0.0002177244, + -0.008208272, + -0.0060609877, + 0.011012217, + 0.002759621, + 0.023823688, + 0.027553527, + -0.015720483, + -0.0015439759, + -0.0079718735, + -0.0010859544, + -0.038401578, + -0.00080974604, + 0.0074071446, + 0.014446558, + 0.0019601353, + -0.0013691398, + -0.024257084, + -0.014788022, + -0.0069606146, + 0.01956852, + 0.04052916, + 0.0108020855, + -0.0051843445, + -0.006189037, + 0.012719538, + 0.017191404, + 0.0030025858, + -0.0013198901, + 0.0072167125, + -0.022667963, + 0.018530995, + 0.016350877, + 0.046544183, + 0.022195166, + -0.016022546, + -0.0040122033, + 0.0026775382, + 0.010506588, + 0.0088124005, + 0.003211076, + 0.0043438175, + 0.01684994, + -0.01244374, + 0.02537341, + 0.006287536, + -0.022287099, + 0.01465669, + 0.0062481365, + -0.011839611, + -0.0076632425, + 0.01067732, + 0.016429678, + 0.0017434369, + -0.013067569, + -0.0049807793, + -0.011458747, + 0.031519763, + -0.023600424, + -0.02570174, + -0.0070262807, + -0.031493496, + -0.003966237, + 0.0358012, + 0.035958797, + 0.022418432, + 0.029129514, + 0.000092496964, + -0.007380878, + 0.003509857, + -0.00067513034, + 0.00530911, + 0.0028794617, + -0.014288959, + 0.0012886986, + 0.021840569, + -0.017349003, + 0.0057096737, + 0.008221405, + -0.004619615, + -0.009580695, + -0.0028088705, + -0.0050168955, + 0.03309575, + -0.012614472, + -0.008661368, + -0.028446587, + -0.017834933, + 0.020146383, + 0.008608836, + -0.0036083562, + -0.000045068544, + -0.01945032, + 0.011990643, + -0.022733629, + 0.0031240683, + 0.0046327487, + 0.020277714, + 0.0051350947, + 0.007945607, + -0.010933418, + 0.010151991, + 0.0049052634, + -0.013310534, + 0.010848052, + 0.008576002, + 0.0044226167, + -0.013369633, + -0.013474699, + -0.010060058, + 0.034067612, + -0.0017352287, + 0.017230805, + -0.014709223, + 0.009823659, + -0.008694202, + 0.0015743466, + 0.0043733674, + 0.012548806, + -0.010197957, + -0.010394955, + 0.0056078914, + -0.012476573, + 0.017966265, + 0.036510393, + 0.00623172, + -0.015720483, + -0.003050194, + -0.01469609, + -0.0022966745, + 0.04938096, + 0.041107025, + 0.006796449, + 0.0012386282, + 0.016863074, + 0.006106954, + -0.030994434, + -0.0002626647, + 0.024401551, + 0.0027054464, + 0.010500021, + 0.0003295621, + 0.026056338, + -0.0005347689, + 0.007939041, + 0.010591954, + 0.00623172, + -0.0046327487, + -0.009580695, + -0.009639794, + 0.020435313, + 0.00081426057, + 0.019016923, + 0.011025351, + 0.0071444795, + 0.0026808216, + 0.03832278, + 0.02071111, + 0.030994434, + 0.014091961, + -0.02366609, + -0.0018780526, + 0.00038127424, + -0.017467203, + -0.00443575, + -0.025951272, + 0.022024434, + 0.010999084, + -0.00577534, + 0.012634172, + 0.02789499, + -0.004225618, + -0.0038710209, + -0.0063105193, + 0.016258944, + -0.01822893, + 0.0026069472, + 0.03191376, + 0.00013092194, + -0.010046924, + 0.0049840626, + 0.016088212, + -0.01388183, + 0.0004998837, + -0.006366336, + 0.00036690975, + -0.003020644, + 0.0057819067, + -0.0061200876, + 0.0027136547, + -0.010953118, + -0.022681097, + 0.00014025884, + -0.00042149477, + -0.010545988, + -0.0068358486, + -0.010920284, + -0.0119775105, + -0.020238316, + 0.018452195, + -0.011767378, + 0.0035656733, + -0.028577918, + -0.0076501095, + 0.030626703, + 0.019673586, + 0.0043733674, + 0.00484288, + 0.009534729, + 0.034277745, + 0.005138378, + -0.024349017, + -0.019594787, + -0.011622913, + -0.0046819984, + -0.001624417, + 0.023088226, + -0.008339604, + -0.0047148312, + 0.0011606496, + 0.034698006, + -0.012640739, + -0.0054502925, + -0.0050267456, + 0.009712027, + -0.0053222436, + 0.0088518, + 0.00033366625, + -0.0064517017, + -0.012765504, + 0.004885563, + -0.012923103, + -0.00050603994, + -0.010303022, + 0.0035394067, + 0.0051843445, + 0.010683887, + 0.018517861, + -0.011439048, + 0.0030813853, + 0.029208314, + -0.0068424153, + -0.007847108, + -0.004698415, + 0.005272994, + 0.01692874, + 0.007032847, + 0.006940915, + -0.025544142, + 0.001823878, + -0.011544113, + -0.021052575, + 0.014026294, + 0.01469609, + -0.0013830938, + 0.0010424505, + 0.023324626, + -0.03167736, + -0.02789499, + 0.002137434, + 0.017283337, + 0.009022532, + 0.002245783, + -0.0023442823, + -0.021814303, + -0.0010793877, + 0.015562884, + 0.018570393, + 0.006402452, + -0.021853702, + -0.01822893, + -0.018045064, + -0.00757131, + -0.014394025, + -0.020803044, + -0.03475054, + 0.00398922, + 0.012548806, + 0.01199721, + 0.01737527, + 0.0058869724, + 0.0057884734, + -0.012023477, + 0.0075581768, + 0.008208272, + -0.03369988, + -0.035144538, + 0.000012607393, + 0.019831184, + 0.013566632, + 0.026699867, + 0.0034080744, + 0.005857423, + 0.022155767, + -0.011583513, + -0.0043372507, + 0.026122004, + 0.0024493483, + -0.011242049, + 0.0058311564, + 0.036431592, + 0.035092004, + 0.0021505672, + -0.0021719087, + -0.024060085, + 0.0052631437, + -0.0040351865, + 0.0057523567, + -0.039005708, + -0.017243937, + 0.0048691467, + 0.000645991, + -0.012161375, + 0.015234552, + 0.009968125, + -0.022589164, + 0.010053491, + -0.016836807, + 0.012975636, + -0.0049479464, + 0.0125685055, + -0.0058541396, + 0.013750497, + -0.0055290917, + 0.022707364, + -0.013474699, + 0.0017697033, + 0.019305855, + -0.0056111747, + 0.002170267, + 0.0068555484, + 0.0054273093, + -0.033148285, + -0.0021669837, + -0.010644487, + 0.03065297, + -0.011800212, + -0.012660438, + 0.0040122033, + -0.045493525, + 0.00001976398, + -0.0041139857, + -0.015470951, + -0.02191937, + 0.00799814, + 0.015484083, + -0.020553512, + 0.026607934, + -0.023626689, + -0.013251434, + 0.009863059, + 0.00006607659, + 0.03438281, + 0.024454083, + 0.04218395, + -0.004402917, + -0.003660889, + -0.02975991, + 0.010414655, + 0.012233608, + 0.00044488834, + -0.0010145424, + 0.0014947263, + -0.004488283, + -0.028525386, + 0.014459692, + -0.0017976115, + 0.020330248, + -0.04129089, + 0.0132777, + -0.00492168, + 0.020566646, + -0.018754259, + -0.03348975, + -0.015773015, + 0.024073219, + -0.010165124, + 0.0077157756, + -0.026082605, + -0.023324626, + -0.029943775, + 0.029812442, + 0.0012591489, + 0.011714846, + 0.007518777, + -0.017939998, + -0.0004896234, + -0.0044587334, + -0.019791786, + 0.013231734, + -0.00057827274, + 0.021249574, + -0.011130417, + 0.023600424, + -0.010033791, + 0.004796914, + -0.012962502, + 0.0024690481, + -0.002418157, + 0.022667963, + -0.014131361, + -0.021157641, + -0.009140732, + 0.010447488, + 0.007814275, + -0.003143768, + -0.017270204, + -0.001106475, + 0.004819897, + -0.021788036, + 0.010710153, + -0.010086324, + -0.036431592, + -0.014144494, + -0.0013239942, + -0.017559135, + -0.019699853, + -0.006940915, + 0.0067570494, + -0.015300219, + -0.013606031, + 0.00023414096, + 0.008687635, + 0.023902487, + 0.010526287, + -0.002749771, + 0.009101332, + 0.014879955, + -0.030968167, + 0.033936277, + -0.009147298, + 0.004491566, + -0.010427789, + 0.0017073206, + -0.024624815, + -0.008746735, + 0.018977525, + -0.020067582, + -0.029365914, + 0.0017729867, + -0.0046327487, + 0.0034803073, + 0.020290848, + -0.011517847, + 0.054056395, + -0.007479377, + -0.0037068555, + -0.025833072, + -0.0033588249, + -0.0030452688, + -0.018517861, + 0.025885606, + 0.01240434, + 0.01628521, + -0.005200761, + -0.0011836328, + 0.010985951, + 0.00032730485, + -0.044810597, + -0.041264623, + -0.00039153456, + 0.036195196, + 0.00053846266, + 0.0071379133, + -0.000006310109, + -0.0039925035, + -0.015050687, + 0.00929833, + -0.01558915, + -0.0111369835, + -0.008004706, + 0.01290997, + -0.0024985978, + -0.007840541, + -0.007833974, + -0.02139404, + -0.012699838, + -0.0016465794, + -0.022470964, + -0.005640724, + -0.009180131, + 0.034855604, + 0.0036773058, + -0.015746748, + -0.0050989785, + 0.0016638167, + -0.033516016, + -0.013008469, + 0.004928246, + -0.008306771, + 0.008201705, + -0.019870585, + 0.0047509475, + 0.021459706, + -0.022759896, + 0.017060071, + -0.0039925035, + 0.0012484782, + 0.016009413, + -0.019292722, + 0.0033456916, + -0.009403396, + -0.028315254, + -0.02123644, + 0.019699853, + 0.0028679701, + -0.00032525277, + 0.011931544, + 0.005072712, + -0.025570408, + -0.020448446, + 0.017585402, + -0.0102964565, + 0.007866807, + 0.012627605, + -0.023193292, + 0.008983132, + -0.0026003805, + 0.0068424153, + -0.019634185, + 0.0044948496, + -0.0011507997, + 0.0037790884, + 0.014144494, + -0.034803074, + -0.012397774, + -0.0050365957, + -0.027553527, + 0.0059526386, + 0.001956852, + -0.0077289087, + 0.022300232, + -0.0100731915, + -0.030600438, + 0.0025987388, + -0.013645431, + -0.021853702, + -0.01285087, + 0.025504742, + 0.0070262807, + 0.0033653914, + -0.013566632, + 0.03309575, + -0.02102631, + 0.0049479464, + -0.012647305, + -0.03333215, + 0.0037922217, + 0.008050673, + 0.0063630524, + 0.0030288522, + 0.0071510463, + -0.0015644965, + 0.008818967, + -0.010710153, + -0.012391207, + 0.015300219, + -0.013290834, + -0.019266456, + 0.014827422, + -0.016955007, + -0.024677347, + -0.012581639, + 0.017204538, + 0.0029516944, + 0.010670753, + 0.19762892, + -0.009475629, + 0.020671712, + 0.045178328, + 0.005253294, + 0.022116367, + 0.031230832, + -0.0069737476, + -0.0019749103, + 0.012975636, + -0.011800212, + 0.014078828, + -0.016337745, + -0.0019732686, + -0.024940012, + -0.016232679, + -0.014105095, + -0.013829296, + -0.020028183, + -0.018439062, + 0.0017729867, + -0.019778652, + -0.007472811, + -0.009488762, + 0.032622956, + -0.009915592, + -0.0031618262, + 0.0053419434, + 0.03309575, + -0.010782386, + -0.008273938, + -0.0088124005, + 0.0037167054, + 0.0006455806, + -0.0111107165, + 0.0045572324, + 0.0038874375, + -0.010552554, + 0.024230817, + 0.02776366, + -0.009981259, + -0.0026627635, + 0.013225167, + -0.0011286373, + -0.0071970127, + 0.007499077, + 0.0064090188, + -0.023626689, + 0.01729647, + 0.021157641, + -0.0112223495, + 0.013973762, + 0.014958754, + 0.021249574, + -0.01729647, + 0.0091210315, + 0.009291763, + 0.014538491, + -0.012936236, + -0.001738512, + -0.0046425983, + 0.031887494, + -0.018320862, + 0.016981272, + 0.00010403984, + 0.014078828, + -0.025425943, + 0.0027711126, + -0.008674501, + -0.03876931, + 0.013290834, + -0.03362108, + 0.0001390276, + 0.012653871, + -0.017532868, + -0.03220269, + 0.01937152, + 0.018005665, + 0.0004867505, + 0.03690439, + -0.018570393, + -0.016626675, + 0.004619615, + 0.010782386, + -0.036247727, + -0.024585415, + 0.026489735, + -0.010408089, + -0.003585373, + 0.002313091, + 0.021971902, + -0.008825534, + 0.004957796, + -0.021735504, + 0.008267371, + 0.027185796, + 0.0010481963, + 0.03372615, + -0.0009480554, + -0.0073020784, + -0.015457817, + -0.03527587, + 0.021656705, + -0.0026036638, + -0.018977525, + 0.0033686748, + -0.0015382301, + 0.020553512, + 0.00583444, + -0.027422193, + 0.0015218136, + -0.019292722, + 0.0011926619, + -0.0006858011, + 0.01558915, + 0.006235003, + 0.008306771, + -0.027474727, + -0.0019076023, + -0.0025560558, + 0.023652956, + -0.017598534, + -0.017283337, + 0.011307715, + -0.036641724, + -0.010092891, + -0.020041317, + 0.023232693, + -0.013028169, + -0.037639853, + 0.020028183, + -0.022103235, + -0.0055225254, + 0.010624787, + 0.004534249, + 0.035827465, + -0.0013075777, + -0.011156683, + -0.016836807, + 0.0055126753, + 0.007032847, + -0.01636401, + 0.004179652, + 0.019174524, + 0.0041730856, + -0.0061332206, + -0.0034507574, + 0.007019714, + -0.006136504, + -0.022983162, + -0.011288015, + -0.023075094, + 0.0057687736, + -0.0030222856, + -0.0069737476, + -0.018005665, + -0.04938096, + -0.039688636, + 0.0019141689, + 0.010756119, + -0.026502868, + 0.0020126682, + 0.01993625, + -0.0028400621, + -0.017651068, + -0.0040056366, + -0.16978645, + 0.014236427, + 0.0061824704, + -0.013487833, + 0.009672628, + 0.016061947, + 0.011747679, + 0.009915592, + 0.0091210315, + 0.011990643, + 0.022379031, + 0.0077420417, + -0.021788036, + -0.029418446, + 0.010440921, + -0.01013229, + -0.01993625, + 0.023206426, + 0.020540379, + 0.013382766, + 0.03288562, + -0.015195153, + 0.020330248, + 0.0033309166, + 0.011760811, + 0.010631354, + 0.008510336, + 0.0027776791, + -0.010165124, + -0.012936236, + -0.01558915, + -0.004711548, + 0.015602283, + 0.017322736, + 0.0005343585, + 0.0016375502, + -0.00022552226, + -0.013428733, + -0.0015152469, + 0.015457817, + 0.023285225, + 0.048908167, + -0.0025560558, + -0.00716418, + -0.0114456145, + 0.020514112, + 0.020737378, + -0.01201691, + 0.017243937, + -0.009928726, + 0.033962544, + -0.005128528, + -0.009449363, + 0.0024542732, + 0.03178243, + 0.0012041535, + -0.007774875, + 0.005712957, + -0.0123715075, + 0.01834713, + -0.013934362, + -0.0034277742, + 0.011366814, + 0.005108828, + 0.0019749103, + -0.015733615, + -0.0077354754, + 0.0026036638, + -0.01989685, + -0.0050398787, + -0.011596646, + -0.03028524, + 0.016350877, + -0.01506382, + -0.00076501095, + 0.025609808, + -0.019765519, + 0.02335089, + -0.011268316, + 0.00041061878, + 0.0006706158, + 0.013251434, + -0.0039334036, + -0.006454985, + -0.0019683435, + -0.004317551, + -0.0048133307, + 0.0035689566, + -0.005942789, + -0.015667949, + 0.028131388, + -0.011826478, + -0.014551624, + -0.006967181, + 0.019384654, + 0.021052575, + -0.012752371, + 0.003660889, + -0.001600613, + -0.017861199, + -0.010316156, + -0.0021834003, + -0.020120116, + 0.010125724, + 0.051508546, + 0.016416544, + 0.023048827, + 0.011872444, + 0.034067612, + 0.02057978, + -0.00710508, + 0.002982886, + 0.03593253, + 0.04168489, + 0.011800212, + -0.0015997922, + 0.008779568, + -0.0035656733, + 0.014958754, + 0.007807708, + 0.025281478, + -0.0016375502, + 0.002812154, + 0.009199831, + -0.0007190446, + -0.003903854, + -0.10065311, + -0.03414641, + 0.016692342, + 0.019739252, + 0.00049906294, + 0.018465329, + 0.0016153879, + 0.008667935, + 0.006415585, + 0.021157641, + -0.012358374, + -0.045046996, + -0.0049052634, + -0.017637935, + 0.011071317, + 0.014065694, + -0.009147298, + 0.004288001, + -0.0099878255, + 0.013973762, + -0.0043996335, + -0.012049743, + -0.0056735575, + -0.014499092, + 0.007177313, + 0.011150116, + -0.013789897, + 0.02090811, + 0.008136039, + 0.00753191, + 0.0023344324, + -0.00795874, + 0.013487833, + -0.021617305, + 0.0021505672, + 0.007820841, + -0.031152032, + -0.0038743042, + 0.013540365, + -0.0051974775, + 0.0037462553, + 0.0010884168, + 0.003424491, + -0.027474727, + 0.017440936, + -0.029287113, + -0.024506615, + -0.0010284964, + 0.0103818225, + -0.0017450786, + -0.00669795, + -0.0018485028, + -0.02480868, + 0.010151991, + -0.011097583, + -0.021302108, + 0.017427802, + 0.012194209, + -0.011872444, + 0.0006677429, + -0.027290862, + -0.010197957, + -0.007879941, + 0.019988783, + -0.0045999154, + 0.002616797, + -0.020198915, + -0.043628607, + 0.0179006, + -0.022260834, + -0.014840555, + -0.01595688, + 0.0007682942, + 0.025911873, + -0.034356542, + -0.008989699, + -0.025189545, + -0.024821814, + 0.005942789, + -0.02082931, + -0.01432836, + -0.020172648, + 0.020894976, + -0.008838667, + 0.029260848, + 0.014013162, + 0.005870556, + 0.012010343, + 0.0077683083, + -0.018727994, + 0.0041993516, + 0.008858367, + 0.010467188, + -0.01432836, + 0.011905277, + 0.024992546, + -0.009823659, + 0.023626689, + 0.02797379, + -0.011005651, + -0.016508477, + -0.0049085463, + -0.045782458, + 0.023193292, + -0.002820362, + -0.0059592053, + 0.025110746, + -0.006921215, + 0.013947495, + -0.008530036, + -0.007630409, + 0.012141676, + -0.014013162, + -0.0013239942, + -0.0026479885, + -0.0102964565, + -0.024086352, + -0.031729896, + 0.02290436, + 0.001462714, + 0.026699867, + 0.008917467, + 0.0082805045, + 0.017716734, + 0.022457832, + 0.023403425, + -0.018517861, + 0.0017089621, + -0.005085845, + 0.018202664, + -0.014302093, + -0.032334026, + 0.025767406, + -0.018806793, + 0.00445545, + 0.02752726, + -0.009863059, + -0.005660424, + -0.0013469774, + 0.013776763, + 0.0022720497, + -0.0025675474, + -0.006862115, + -0.023075094, + 0.029602312, + -0.016981272, + -0.013947495, + -0.0030304939, + -0.019673586, + 0.001951927, + 0.01937152, + -0.006674967, + 0.02147284, + 0.017848067, + 0.00978426, + -0.0010432714, + -0.010756119, + -0.041028224, + 0.022195166, + 0.019844318, + 0.0062547033, + -0.02480868, + 0.018452195, + 0.010335856, + 0.01289027, + -0.014354626, + 0.000795792, + -0.010099458, + 0.0017056789, + -0.014827422, + 0.011557247, + -0.034960672, + -0.0002417336, + -0.002503523, + 0.011583513, + 0.0035295568, + 0.03333215, + 0.016114479, + 0.010401522, + -0.0060544214, + -0.012332108, + 0.02046158, + 0.004777214, + 0.0020241598, + -0.030941902, + 0.018373396, + 0.018557262, + 0.014236427, + -0.030810568, + 0.015694216, + -0.004793631, + 0.008654802, + -0.010723286, + 0.015681082, + 0.0017631368, + -0.0265948, + 0.0057359403, + 0.027133264, + -0.0049413797, + -0.016324611, + 0.004432467, + 0.014433425, + 0.024165152, + -0.011859311, + -0.025596675, + -0.0223265, + -0.0041107023, + 0.0041533853, + -0.027553527, + -0.028709251, + -0.0060150214, + 0.0066487, + 0.028840583, + 0.014814289, + 0.015208286, + 0.023955021, + -0.015260818, + 0.012857437, + -0.028157655, + -0.024178285, + -0.00094969705, + 0.013527232, + 0.04136969, + 0.011360249, + 0.031020701, + -0.015641682, + 0.009948425, + 0.002730071, + 0.0058442894, + -0.018176397, + 0.0088715, + -0.005049729, + -0.0047607976, + -0.010079757, + -0.013947495, + -0.02589874, + -0.017624801, + -0.002687388, + 0.024060085, + 0.029628579, + -0.036142662, + 0.04257795, + 0.00073012576, + -0.0071116467, + -0.009212964, + 0.033016954, + 0.022562897, + 0.02768486, + -0.0065896004, + -0.017874332, + -0.041317157, + -0.00935743, + 0.0028285705, + 0.012962502, + -0.020435313, + -0.0046852813, + 0.012712971, + -0.005617741, + -0.0020931093, + -0.013133235, + -0.0037561052, + 0.024388418, + 0.0015447967, + 0.014288959, + 0.0055684918, + -0.013527232, + -0.0011754245, + 0.019988783, + -0.030311506, + -0.018530995, + -0.024020687, + 0.0074202777, + -0.0035722398, + -0.046228986, + -0.022733629, + 0.0033686748, + -0.017401537, + -0.005128528, + 0.0031043685, + 0.011498147, + -0.00010896481, + -0.0060478547, + 0.010316156, + -0.016981272, + -0.02574114, + 0.009580695, + -0.0068424153, + 0.008969999, + -0.019082591, + -0.0052467273 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 2, + "total_tokens": 2 + } +} diff --git a/vectorstores/inmemory/testdata/TestInMemoryAsRetriever.httprr b/vectorstores/inmemory/testdata/TestInMemoryAsRetriever.httprr new file mode 100644 index 000000000..d1531ef85 --- /dev/null +++ b/vectorstores/inmemory/testdata/TestInMemoryAsRetriever.httprr @@ -0,0 +1,6332 @@ +httprr trace v1 +340 101308 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 144 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["The color of the house is blue.","The color of the car is red.","The color of the desk is orange."]}HTTP/2.0 200 OK +Content-Length: 100351 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:27:40 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 129 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-p6w2b +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999978 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_f2947ec48239424589242becd1bc6dcf + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.0045962376, + 0.00861834, + -0.008126223, + -0.0057255807, + -0.016656235, + 0.023255637, + -0.0021608942, + 0.0004629361, + 0.03417052, + -0.009558408, + -0.021224082, + 0.019343946, + 0.008006349, + -0.017110497, + -0.008088369, + -0.009735065, + 0.019672023, + -0.024353435, + 0.018031636, + -0.0012744544, + -0.03485191, + 0.028063232, + -0.0003330064, + -0.0025457542, + -0.0055268416, + -0.005293402, + 0.01669409, + -0.013539501, + 0.017047405, + 0.007836002, + -0.0042019137, + -0.01500323, + -0.011741384, + -0.009659355, + -0.010170398, + -0.0058580735, + -0.0010071029, + 0.0023943337, + -0.007186156, + 0.000008675122, + 0.01755214, + -0.0024795078, + 0.0055457694, + -0.030965455, + -0.0057445085, + 0.005832837, + 0.0017397564, + 0.0144227855, + -0.022713048, + 0.008290263, + 0.0053501846, + 0.026296662, + -0.0006660128, + -0.03437241, + 0.0062997164, + -0.011110466, + 0.0062050787, + 0.015596293, + 0.0025773, + -0.004785513, + 0.010145161, + -0.02176667, + -0.011899114, + -0.012328138, + -0.029602673, + -0.010511094, + -0.017905453, + -0.010498475, + 0.005618325, + 0.022511154, + 0.019268235, + 0.024782458, + 0.0139180515, + -0.001563888, + 0.012782399, + 0.013451172, + -0.023444913, + -0.012290282, + 0.0012602587, + 0.010908572, + 0.006561547, + -0.004507909, + -0.033287235, + 0.007507924, + 0.029224122, + 0.017791888, + -0.015911752, + 0.014902283, + -0.039899256, + 0.0029921287, + 0.024429144, + 0.041716296, + 0.016845511, + -0.008959035, + -0.009053674, + -0.014183037, + 0.011993751, + 0.029880276, + 0.006914861, + -0.026220951, + -0.00060213235, + 0.011318669, + -0.048025478, + 0.00761518, + -0.03015788, + 0.0017019013, + -0.0023186237, + -0.004255542, + 0.027432315, + -0.029577436, + -0.025337666, + 0.027508024, + 0.024782458, + -0.031520665, + -0.00094085647, + -0.00008300515, + 0.0006277634, + -0.011854949, + -0.0102397995, + 0.01654267, + 0.009911722, + 0.021817144, + 0.014637298, + 0.017640468, + -0.004946397, + 0.005485832, + -0.021968564, + -0.044113785, + -0.005362803, + -0.0021640488, + 0.009413296, + 0.021526922, + 0.015836041, + 0.0018312394, + -0.025640508, + -0.0038643728, + -0.026094768, + 0.028416546, + -0.024656275, + -0.00353945, + 0.009779229, + 0.019558458, + -0.023369202, + -0.0035993871, + 0.019836063, + 0.02861844, + 0.003400648, + -0.0028706768, + -0.0105174035, + -0.030258827, + 0.017779268, + -0.031596374, + 0.0141451815, + 0.020580545, + 0.020984333, + 0.0360128, + -0.008977963, + 0.012662524, + -0.03333771, + 0.013526882, + -0.025716217, + -0.0013304483, + 0.036441825, + -0.006362808, + 0.034321938, + 0.018839212, + 0.017564757, + 0.0049053873, + -0.028366074, + 0.0011963783, + -0.012403848, + 0.035810906, + -0.039571177, + 0.021640487, + 0.007886475, + 0.01523036, + -0.0057034986, + 0.0015607334, + -0.01669409, + -0.0049716337, + -0.041665826, + -0.0055299965, + 0.0111987945, + 0.006681422, + -0.0016798192, + 0.012946437, + 0.016138883, + -0.008353354, + 0.017817125, + 0.0018959086, + 0.021514304, + 0.004731885, + -0.0024479618, + -0.00040891374, + -0.6856312, + -0.017981162, + 0.010132543, + -0.02200642, + 0.02161525, + 0.021526922, + 0.026725687, + 0.0070284265, + -0.01577295, + -0.017211443, + -0.005914856, + -0.0013501645, + -0.010088379, + -0.0015402286, + 0.0032902374, + -0.0035236771, + 0.007829692, + 0.01008207, + 0.0049905614, + 0.005022107, + -0.0075647067, + -0.009324968, + -0.015066322, + 0.001839126, + 0.01577295, + 0.009823393, + 0.014788718, + 0.0016861283, + -0.028896045, + 0.014902283, + -0.015735095, + 0.03470049, + -0.0020094737, + 0.008719287, + 0.03263108, + 0.0047129574, + -0.02114837, + 0.036896084, + 0.021791907, + 0.013829722, + -0.0024952807, + -0.0036151602, + 0.019343946, + -0.00020209092, + -0.010126234, + 0.006255552, + 0.009501625, + -0.010933809, + 0.010334437, + 0.0074069775, + 0.00669404, + -0.009451152, + -0.00892749, + 0.021034807, + 0.021299792, + 0.00046254176, + 0.036492296, + 0.020795057, + -0.010151471, + -0.0066435663, + -0.00815146, + 0.0025268267, + -0.012485867, + -0.021400739, + -0.015129413, + 0.002026824, + -0.027785629, + -0.01608841, + -0.0141451815, + -0.005340721, + -0.00081625016, + 0.017097877, + -0.02294018, + 0.023053743, + 0.0026277734, + -0.0019590005, + 0.03480144, + -0.008877017, + -0.010801316, + 0.013135713, + 0.015343926, + -0.018019019, + -0.012126244, + -0.018813975, + 0.009028437, + -0.015697239, + -0.01885183, + -0.019911772, + 0.004432199, + -0.027104238, + 0.020214614, + -0.0074069775, + -0.014864428, + -0.025135772, + -0.013299751, + 0.009817084, + -0.0067508225, + 0.02015152, + 0.016138883, + -0.021905473, + -0.017577376, + -0.008971654, + 0.0007425116, + 0.010397528, + 0.03210111, + 0.012302901, + -0.004485827, + 0.023508005, + 0.0039022279, + -0.026246188, + 0.02215784, + -0.0056877257, + -0.015066322, + 0.0061956146, + -0.004763431, + -0.02360895, + 0.014940138, + 0.0076404167, + 0.02977933, + -0.013690921, + 0.02016414, + 0.0032586914, + -0.00073304784, + -0.003369102, + 0.0151041765, + 0.0052965567, + -0.010700369, + -0.0050725807, + -0.0048202137, + 0.00042547533, + 0.0031608993, + 0.011671983, + 0.022069512, + 0.009552099, + 0.013186187, + 0.003378566, + 0.00619246, + -0.008612031, + 0.031192586, + -0.007192465, + -0.014637298, + 0.014536351, + -0.01138807, + 0.0065110736, + -0.00946377, + -0.031949688, + -0.037981264, + -0.018978013, + -0.025097918, + 0.01692122, + -0.005851764, + -0.00074448326, + 0.0019858144, + 0.015608911, + -0.01162151, + 0.011224031, + 0.0012571041, + -0.0008667236, + -0.008397519, + 0.013514264, + 0.023419676, + 0.015899133, + -0.0026987516, + 0.006580475, + -0.01530607, + -0.013842341, + -0.018372333, + 0.013413317, + -0.01261205, + -0.022031657, + 0.007810765, + -0.004078885, + -0.013211423, + -0.016214592, + -0.01838495, + 0.006977953, + -0.03333771, + -0.033135813, + -0.004583619, + -0.012996911, + 0.01806949, + 0.015470109, + -0.004763431, + -0.0027397615, + 0.016530052, + 0.0074889967, + 0.037829842, + 0.032429185, + 0.0043060156, + 0.0071483008, + -0.0014771367, + 0.0144480225, + 0.0012768203, + 0.022183077, + 0.011640437, + -0.009375442, + -0.00077997235, + 0.009154621, + -0.004138822, + 0.014889665, + 0.02476984, + 0.0024905489, + 0.013678302, + -0.020366034, + -0.0027413387, + -0.042902425, + 0.020138903, + 0.002561527, + -0.001892754, + 0.005946402, + -0.019356564, + -0.02208213, + -0.01660576, + -0.013375462, + 0.009665663, + -0.012018988, + -0.005662489, + 0.006422745, + 0.009552099, + -0.006971644, + 0.006031576, + 0.00011908577, + 0.029022228, + -0.00438488, + -0.014460641, + -0.012239809, + 0.0004830466, + 0.011160939, + -0.014864428, + -0.010132543, + -0.021198845, + 0.0073123397, + -0.008107296, + 0.009507935, + -0.0028690996, + 0.0105174035, + 0.018296622, + -0.020252468, + 0.0013951174, + -0.0013170413, + 0.019179907, + 0.026296662, + 0.0017381791, + -0.0076845814, + 0.021817144, + -0.0049116965, + 0.010858099, + -0.00034877934, + -0.020504834, + 0.014864428, + -0.007753982, + -0.0049337787, + -0.014889665, + -0.0005788673, + 0.013375462, + -0.01953322, + 0.02685187, + -0.0056025516, + 0.026145242, + 0.017741414, + 0.03321152, + 0.0060662767, + -0.0007535527, + -0.007817074, + 0.00984232, + -0.0016048977, + -0.020631019, + -0.008283953, + -0.005794982, + -0.025968585, + -0.006100977, + -0.009482698, + 0.029224122, + -0.0015694086, + 0.0007488208, + -0.007331267, + 0.0021593168, + -0.0016656235, + 0.012170408, + -0.009880176, + -0.0078486195, + -0.023381822, + 0.0052460833, + 0.012599433, + -0.000050769184, + -0.009438533, + -0.0303093, + 0.02100957, + -0.015507964, + 0.012971674, + 0.026372373, + 0.0016672008, + 0.0063501894, + -0.008567867, + -0.00488646, + -0.02839131, + 0.0025362903, + -0.0027902348, + 0.015722476, + -0.017060023, + 0.008826543, + -0.0193818, + -0.007974803, + -0.0010165666, + 0.008069442, + 0.022296643, + 0.00885178, + 0.0149275195, + -0.012403848, + -0.022801377, + -0.029501725, + -0.0076277987, + 0.008006349, + 0.009104147, + -0.015293452, + -0.0052681654, + -0.025489086, + -0.02476984, + 0.024429144, + 0.013287133, + -0.00066522416, + -0.0055489237, + -0.01276978, + -0.0008895944, + 0.085602954, + -0.018612081, + 0.0021041115, + -0.001769725, + 0.023331348, + -0.017425954, + -0.016201975, + 0.0061829966, + -0.008347045, + 0.026448082, + 0.011413307, + -0.002197172, + 0.0069211703, + 0.012492176, + 0.00043217881, + -0.0014211428, + 0.024164159, + -0.0116152, + 0.012340756, + -0.019507984, + -0.026725687, + 0.0029495417, + 0.014725626, + 0.007829692, + -0.0040410296, + 0.008990581, + 0.012795017, + 0.0006581263, + 0.021413356, + -0.009627809, + -0.004861223, + 0.013981143, + -0.002235027, + -0.019457512, + -0.00091246516, + -0.020138903, + -0.03439765, + -0.007400668, + 0.01238492, + -0.026220951, + 0.029426016, + 0.012151481, + 0.008984272, + -0.009571026, + 0.002984242, + 0.012006369, + -0.0014637298, + 0.0412368, + -0.013022147, + -0.010183017, + 0.030889746, + -0.017123114, + 0.0014353384, + 0.00438488, + 0.013148331, + 0.015810804, + 0.005933784, + 0.005523687, + 0.01755214, + -0.029804567, + -0.0149275195, + -0.025842402, + -0.015899133, + 0.002908532, + -0.002946387, + -0.03886455, + -0.015091559, + -0.00082413666, + -0.022220932, + -0.015318689, + 0.025993822, + -0.011299741, + -0.018359713, + 0.01515465, + 0.024403907, + 0.022952797, + 0.002925882, + -0.018965395, + -0.019634169, + 0.02016414, + -0.012996911, + -0.0021246164, + 0.015041085, + 0.008839161, + -0.0041230493, + -0.0027350294, + 0.023318728, + -0.027255658, + -0.00792433, + 0.022914942, + 0.004823368, + 0.0019558459, + 0.030359775, + 0.009451152, + -0.008984272, + 0.0043817256, + -0.001984237, + 0.009116765, + -0.01669409, + 0.0024448072, + 0.010933809, + -0.031066403, + -0.013577355, + -0.004548919, + -0.0061041317, + 0.0025063218, + 0.010302891, + -0.0005694035, + -0.04138822, + 0.005302866, + 0.016807655, + -0.017135734, + 0.000028194148, + -0.030208353, + 0.003277619, + 0.023861319, + -0.019331327, + 0.017577376, + 0.0023659426, + -0.03538188, + 0.027205184, + -0.036366113, + 0.025123155, + 0.010763461, + -0.007356504, + 0.004744503, + 0.008895944, + -0.0059211655, + -0.016164118, + 0.0039274646, + 0.0022097903, + 0.00082255935, + -0.022145221, + -0.012946437, + -0.01969726, + -0.013047384, + 0.019444892, + 0.0047728946, + 0.00004029496, + -0.011255577, + -0.0111987945, + 0.011911732, + 0.0030883437, + -0.0017634158, + -0.024731986, + -0.016416486, + 0.00276973, + -0.0144480225, + -0.013552119, + 0.022750903, + 0.016731946, + -0.0076593445, + -0.001903795, + 0.022107366, + 0.006839151, + -0.009873867, + -0.017981162, + -0.004100967, + 0.02161525, + 0.029602673, + 0.006681422, + -0.00030402362, + 0.02176667, + -0.009552099, + -0.016290303, + -0.011968515, + 0.0075836345, + -0.0053911945, + -0.021425975, + 0.01962155, + 0.01631554, + 0.027861338, + 0.015457491, + 0.022271406, + 0.0056372522, + 0.015962224, + 0.0049653244, + -0.0027239884, + -0.015205123, + -0.037527002, + -0.01808211, + 0.0024243025, + -0.019672023, + 0.00423346, + 0.021943329, + -0.0035552229, + 0.010883335, + 0.01953322, + 0.0077792187, + 0.001205842, + 0.02439129, + -0.013665684, + 0.042347215, + -0.0028596357, + -0.0072807935, + -0.0058044456, + -0.008914871, + -0.011495326, + 0.008952727, + 0.0023359738, + 0.018498516, + 0.020366034, + -0.021943329, + -0.008208243, + 0.0033943388, + 0.019583695, + -0.0014006379, + -0.0057413536, + 0.005302866, + -0.012037915, + -0.018675173, + -0.018801356, + -0.012719307, + -0.043381922, + 0.003608851, + 0.010788698, + -0.028643677, + 0.022435443, + -0.005239774, + -0.020580545, + -0.008895944, + -0.0040284116, + 0.011829712, + -0.0040599573, + 0.023735136, + 0.0051829913, + -0.02801276, + -0.0150284665, + 0.011047374, + -0.0146499155, + -0.01515465, + 0.010832862, + 0.0036624789, + -0.012700379, + -0.0034038026, + 0.0110978475, + 0.006801296, + 0.012479558, + -0.011690911, + -0.009173548, + 0.0035205225, + 0.017716177, + -0.017955925, + 0.0074637597, + -0.008580484, + 0.025728837, + -0.0068265325, + -0.021741435, + 0.0051672184, + -0.011123084, + -0.015255597, + -0.009564717, + -0.025817165, + 0.012252428, + 0.004848605, + -0.008119915, + 0.0035899235, + 0.0107950065, + -0.012933819, + -0.0073817405, + -0.009104147, + 0.047066484, + 0.0040820395, + 0.012334446, + 0.015533201, + 0.026347136, + 0.0041640587, + -0.011608891, + 0.010353364, + 0.026220951, + -0.0010496898, + 0.0015701972, + -0.0071735377, + 0.05130625, + 0.021590013, + -0.009741374, + -0.005186146, + -0.014952756, + -0.02215784, + -0.013766631, + 0.0145994425, + -0.00087382144, + -0.015419636, + -0.0034101119, + -0.027861338, + -0.010277654, + -0.027810866, + -0.01300953, + 0.010776079, + -0.0031198894, + -0.016353395, + -0.013678302, + -0.021993801, + 0.027987523, + 0.02099695, + 0.00009715151, + -0.005785518, + 0.010050524, + -0.025211483, + 0.018183056, + -0.023104217, + 0.022485917, + -0.013375462, + 0.008447992, + 0.011791857, + -0.018473279, + 0.010599422, + -0.00042271506, + -0.0283156, + -0.04555228, + 0.009804466, + -0.009198785, + 0.012391229, + -0.0063217985, + -0.018612081, + 0.010750842, + 0.009110456, + -0.015444873, + -0.021791907, + 0.010536331, + -0.0060284217, + -0.0019022177, + 0.021943329, + -0.0140947085, + -0.0032050635, + 0.019041106, + -0.016820274, + -0.00033596382, + -0.0263219, + -0.012795017, + 0.016037935, + 0.025640508, + 0.000056092555, + -0.021918092, + 0.000246058, + -0.015356544, + -0.017905453, + 0.0051262085, + -0.005555233, + 0.0014960644, + 0.03591185, + 0.025186246, + -0.003962165, + 0.0054448224, + -0.02677616, + -0.009501625, + -0.021451212, + -0.021261936, + -0.016227212, + -0.027659444, + 0.00777291, + 0.016832892, + -0.0067318953, + -0.019861298, + 0.00078825315, + 0.0122335, + -0.0035741504, + -0.018498516, + 0.011413307, + 0.015659384, + 0.016668854, + -0.0054826774, + -0.0046277833, + 0.02161525, + -0.0016009544, + 0.005952711, + -0.0057508177, + 0.003839136, + 0.0020394425, + -0.01261836, + 0.021123135, + 0.012056843, + 0.0065741655, + -0.019369183, + 0.009135692, + 0.008416446, + 0.0052366196, + 0.012403848, + -0.008485847, + 0.010990592, + -0.008365973, + 0.012933819, + 0.008372282, + 0.0073438855, + 0.007671963, + -0.008290263, + -0.01823353, + -0.0128518, + 0.0014605751, + -0.011356524, + -0.00039294362, + 0.020731965, + 0.00021451213, + -0.022675192, + -0.0139937615, + -0.01323666, + -0.025198866, + -0.016176738, + 0.0065741655, + 0.001552847, + -0.0047918223, + 0.011571036, + 0.0023817155, + 0.011854949, + -0.0071987743, + 0.002176667, + -0.0137161575, + 0.00022614466, + -0.027533261, + -0.01769094, + 0.002523672, + -0.02670045, + -0.022637337, + -0.024782458, + 0.00004091109, + -0.0012839182, + -0.004324943, + -0.028567966, + 0.027205184, + 0.010372292, + -0.0108707175, + 0.0072303205, + -0.043104317, + -0.015091559, + 0.009571026, + -0.005063117, + -0.008719287, + -0.016290303, + 0.010687751, + 0.0033943388, + -0.0044353534, + -0.0057665906, + 0.010151471, + 0.015836041, + 0.0056246337, + 0.04063112, + 0.22591911, + -0.0003475964, + -0.00011977584, + 0.039217863, + 0.016984312, + 0.021564778, + 0.0144732585, + 0.017034786, + 0.00296216, + 0.015205123, + -0.0037634259, + -0.0050315713, + -0.013438554, + 0.014372312, + 0.00046372472, + -0.035129514, + -0.030334538, + -0.00861834, + -0.0063186437, + 0.007501615, + -0.019608932, + -0.026044294, + -0.0071419915, + -0.008990581, + 0.0029590053, + 0.006555238, + -0.01815782, + 0.014283983, + 0.024214633, + -0.0010796584, + -0.0018848676, + -0.035482828, + 0.010731915, + -0.003416421, + -0.007015808, + -0.0043407157, + 0.005501605, + -0.020883385, + 0.025602652, + 0.02685187, + 0.00040043576, + -0.0035615321, + -0.024467, + 0.0043407157, + -0.013653065, + 0.017148351, + -0.0059211655, + -0.00569088, + 0.008119915, + 0.008397519, + -0.024000121, + -0.021400739, + 0.009375442, + 0.047344085, + -0.0052271555, + 0.010927499, + 0.015760332, + -0.0021514304, + 0.017160969, + -0.0044195806, + -0.027937049, + 0.037880316, + -0.020921241, + 0.028138943, + -0.0010110461, + -0.002069411, + -0.015268216, + 0.0010930655, + 0.00853632, + -0.015596293, + 0.01538178, + 0.010012669, + -0.0012878614, + -0.007009499, + -0.0059747933, + -0.014990612, + 0.031142112, + 0.00626817, + 0.030914983, + 0.013690921, + -0.02393703, + 0.03000646, + -0.022183077, + -0.0011695642, + 0.0112745045, + -0.04010115, + 0.012119935, + -0.024517473, + 0.013539501, + 0.0020993797, + 0.011123084, + 0.0071672285, + 0.00037657918, + -0.0039747832, + 0.01984868, + 0.018208293, + 0.0139180515, + 0.027028527, + -0.028643677, + 0.0072240112, + -0.037350345, + -0.029224122, + 0.017905453, + 0.0051293634, + -0.012530032, + 0.008719287, + 0.017148351, + 0.0015694086, + 0.021325028, + -0.008977963, + 0.025754072, + -0.012637287, + 0.0030015924, + 0.000056536166, + 0.016719326, + 0.0001789244, + -0.0056057065, + -0.025060063, + -0.003940083, + 0.0076277987, + -0.020908622, + 0.0043438706, + -0.01515465, + 0.010788698, + 0.014940138, + -0.023280874, + -0.018637318, + 0.0103092, + 0.0010347056, + -0.048429266, + 0.0006498455, + 0.005318639, + 0.039646886, + -0.0034511215, + -0.0142966015, + 0.03437241, + 0.01577295, + -0.0335396, + -0.0112492675, + 0.002411684, + -0.00091246516, + -0.025640508, + -0.0041262037, + -0.016984312, + -0.0012665679, + -0.010094688, + 0.0064732186, + 0.00037993092, + -0.029526962, + -0.017981162, + -0.019949628, + 0.0011963783, + -0.017943308, + -0.011583654, + 0.020366034, + -0.02099695, + -0.019823443, + -0.012586814, + 0.008813924, + 0.029754093, + -0.010176707, + 0.019672023, + 0.022321878, + 0.0039116917, + -0.019571077, + 0.013564737, + -0.16050553, + 0.027280895, + 0.011123084, + 0.005318639, + -0.012479558, + -0.022826614, + 0.006091513, + 0.006485837, + -0.013678302, + 0.024050593, + 0.025261957, + 0.0083849, + -0.016984312, + 0.000029845378, + -0.024277724, + -0.0014053698, + 0.0008194047, + -0.0069211703, + 0.018119965, + 0.013337607, + 0.013148331, + -0.014940138, + 0.015558437, + 0.0014755594, + -0.0068265325, + -0.01007576, + -0.011766621, + 0.030284064, + -0.001716097, + -0.0315459, + -0.0073880497, + 0.0019053724, + 0.0069653345, + 0.0048139044, + 0.014586824, + 0.001315464, + -0.0017350245, + 0.0075647067, + -0.0075647067, + 0.0049337787, + 0.0108959535, + 0.0024369208, + 0.017564757, + 0.013072621, + -0.02730613, + 0.014586824, + 0.02977933, + 0.028870808, + -0.009501625, + -0.012391229, + -0.019104198, + -0.021905473, + -0.006031576, + -0.013653065, + 0.03533141, + 0.02307898, + 0.0048517594, + 0.012176718, + -0.00013919629, + -0.0055836244, + -0.03061214, + -0.009981123, + 0.004608856, + 0.0053281025, + 0.019596312, + -0.009110456, + 0.008574176, + 0.0052839383, + -0.02376037, + 0.012662524, + -0.013337607, + -0.03147019, + -0.013123094, + -0.0034416576, + -0.003501595, + 0.008340736, + -0.017804505, + -0.00015043451, + -0.0049653244, + -0.021211464, + 0.0020189376, + 0.037754133, + -0.031899214, + -0.024681512, + -0.017022168, + 0.020075811, + -0.0057508177, + 0.006504765, + -0.008668813, + -0.009501625, + 0.008725596, + -0.043432396, + -0.0038265176, + -0.024530092, + 0.02116099, + 0.020340797, + 0.017589994, + -0.001494487, + -0.0027192566, + -0.009217712, + 0.005041035, + -0.007671963, + -0.012479558, + 0.0028517493, + 0.036189456, + 0.0139180515, + 0.0036214693, + 0.02715471, + 0.0315459, + 0.022359734, + -0.00892749, + 0.015987461, + 0.012946437, + 0.013123094, + 0.0027933894, + -0.009343895, + 0.018170439, + -0.015444873, + -0.0029369232, + 0.005362803, + 0.048429266, + 0.0051293634, + -0.018448042, + 0.012454322, + 0.00031723347, + 0.0013541077, + -0.094839595, + -0.010649896, + 0.023848701, + 0.01253634, + 0.0032003315, + 0.0055646966, + -0.0070725908, + 0.03447336, + 0.019924391, + 0.018965395, + -0.0041356673, + -0.013539501, + 0.0060820496, + -0.026574265, + 0.010712988, + 0.0063186437, + 0.01115463, + -0.020302942, + -0.032656316, + 0.016706709, + -0.0027192566, + -0.006416436, + -0.013627829, + -0.008826543, + 0.0021482757, + -0.016492197, + -0.04209485, + 0.026498556, + 0.004918006, + 0.013362844, + 0.028694151, + 0.0020410197, + -0.008088369, + -0.0077035087, + -0.0021088433, + -0.0151041765, + 0.0100631425, + -0.008119915, + 0.01947013, + -0.019419655, + -0.0011601005, + -0.02339444, + 0.0017949617, + -0.041943427, + 0.011564727, + 0.00072042947, + -0.01731239, + 0.015583674, + -0.009911722, + -0.000672322, + -0.005375421, + 0.0108454805, + -0.0056593344, + 0.00010163695, + 0.025653126, + -0.01885183, + 0.014258747, + 0.019495366, + -0.046057016, + 0.007993731, + 0.0044385083, + 0.0057034986, + -0.00003728824, + 0.029097939, + -0.005457441, + -0.005653025, + -0.024668893, + -0.005533151, + 0.0073880497, + -0.03384244, + -0.018044256, + 0.033135813, + 0.0011246114, + 0.023684662, + -0.017791888, + -0.006201924, + -0.04461852, + 0.00077129726, + 0.020933859, + -0.02276352, + -0.01130605, + -0.013766631, + 0.007892784, + -0.026372373, + 0.0033375563, + 0.019747734, + 0.007507924, + 0.009817084, + 0.009552099, + 0.00031683914, + 0.018031636, + 0.023899173, + -0.0145742055, + -0.024517473, + -0.007394359, + 0.012012679, + -0.025817165, + 0.004918006, + 0.008132533, + -0.018183056, + -0.022713048, + -0.023142071, + -0.043028608, + 0.01916729, + -0.010914882, + -0.02292756, + 0.008403827, + -0.0144732585, + -0.0050063343, + -0.0140694715, + -0.021842381, + 0.023747753, + 0.0058233733, + 0.026599502, + -0.0030331383, + -0.013564737, + -0.0107445335, + 0.009741374, + -0.0136404475, + -0.0018028482, + 0.009028437, + -0.00016206707, + -0.010731915, + 0.002053638, + 0.011779239, + -0.0017208288, + -0.031066403, + 0.0036403968, + -0.006230315, + 0.010933809, + -0.03793079, + -0.024101067, + 0.006107286, + -0.025325049, + 0.0063501894, + 0.05070057, + -0.021602632, + -0.024214633, + -0.009280804, + 0.007861238, + 0.020782439, + -0.02617048, + -0.034448124, + -0.044139024, + 0.0016577371, + -0.02876986, + 0.0068454603, + 0.012359683, + 0.0009960618, + -0.0006502399, + 0.0073249578, + 0.0064511364, + 0.008365973, + 0.021665724, + -0.0065678563, + -0.008763451, + 0.0039810925, + -0.034220994, + -0.0022287178, + -0.0009810774, + 0.018599462, + -0.005116745, + 0.022410206, + -0.018763501, + 0.0056246337, + 0.0034668944, + 0.026372373, + -0.0043123243, + 0.017943308, + 0.019192526, + -0.0027097927, + -0.04146393, + 0.004533146, + -0.009047364, + 0.038687892, + -0.00041443427, + 0.024744604, + 0.00400002, + 0.014725626, + -0.011091539, + -0.013665684, + 0.030485958, + -0.0018343941, + 0.02407583, + -0.020605782, + 0.024113687, + 0.021287173, + 0.010176707, + -0.023142071, + 0.0015047394, + 0.0017854979, + 0.017438574, + -0.031949688, + 0.0024668893, + 0.013564737, + 0.010555258, + -0.009716137, + 0.004924315, + 0.008656195, + -0.0105931135, + 0.0030788798, + 0.06647352, + -0.011665674, + 0.0014881778, + -0.029552199, + -0.035028566, + -0.02685187, + 0.009451152, + -0.0068517695, + -0.0145742055, + 0.0058454555, + 0.0077981465, + 0.007041045, + -0.0017870752, + -0.0038896094, + 0.021968564, + -0.0077666007, + 0.017968545, + -0.01870041, + -0.011634128, + -0.004290242, + 0.032959156, + -0.010271345, + 0.008277644, + 0.0015938566, + -0.0071356827, + 0.002107266, + 0.0074448325, + 0.01776665, + -0.01130605, + 0.0016261912, + 0.011318669, + 0.011690911, + -0.0019274545, + -0.008492156, + 0.0016766646, + -0.020681491, + -0.0071735377, + 0.00977292, + 0.018776119, + 0.013602592, + 0.0424734, + 0.0062429337, + -0.041337747, + 0.015369163, + -0.00036534097, + 0.016630998, + 0.007930639, + 0.031646848, + 0.015167269, + -0.011287123, + -0.00024802962, + -0.0009692478, + 0.026902344, + 0.0014361271, + -0.03131877, + -0.021325028, + -0.021375502, + 0.026448082, + -0.031268295, + -0.0062366244, + -0.0066120205, + 0.017034786, + 0.022599483, + -0.0034290394, + -0.015457491, + -0.018107347, + 0.012984293, + -0.01770356, + -0.0056120157, + -0.006763441, + 0.006388045, + -0.0030709933, + -0.024668893, + 0.00043967098, + 0.004362798, + 0.0038801457, + -0.009457461, + -0.0043344065, + 0.001630923, + 0.011148321, + 0.002599382, + 0.033438653, + -0.008403827, + -0.006580475, + 0.0074195955, + 0.01123665, + -0.019142052, + -0.013135713, + -0.02147645 + ] + }, + { + "object": "embedding", + "index": 1, + "embedding": [ + 0.00089398306, + -0.00462804, + 0.0042670527, + -0.0047607105, + -0.017598893, + 0.003273567, + -0.024374345, + -0.025522098, + 0.0054086363, + -0.024312638, + -0.018931769, + 0.029347945, + -0.00042616535, + -0.018746648, + -0.011675002, + -0.019425428, + 0.024892684, + -0.012687, + 0.013587926, + -0.008262594, + -0.0074048643, + 0.017352065, + -0.029372627, + 0.011428174, + -0.007238255, + -0.007355498, + 0.02142474, + -0.012582098, + 0.03068082, + -0.008873495, + 0.008237911, + -0.024053467, + -0.0022800812, + -0.018117234, + -0.01122454, + -0.00754062, + 0.004739113, + -0.0063033905, + 0.00008147279, + -0.012150148, + 0.02151113, + -0.0002720902, + 0.001740143, + -0.01875899, + 0.0031362686, + -0.0052574533, + 0.007546791, + 0.010224883, + -0.0011215283, + 0.020894058, + -0.0047175153, + -0.0028323606, + -0.008151521, + -0.032852914, + 0.011496051, + -0.0066952314, + -0.007694888, + 0.033124425, + -0.022732932, + -0.013921144, + 0.0149825085, + 0.0007686403, + -0.00968186, + -0.0025608488, + -0.012384635, + -0.0065162806, + 0.017870406, + 0.0114405155, + -0.005812818, + 0.024756929, + 0.00745423, + -0.00065023964, + 0.013180658, + -0.0019345208, + -0.0083798375, + -0.023029128, + -0.029965017, + 0.003248884, + 0.016586896, + -0.003949261, + 0.010718541, + -0.0034093228, + -0.03127321, + 0.02655878, + 0.024682881, + 0.0031779208, + -0.044676013, + 0.0041528945, + 0.0017771674, + -0.0043842965, + 0.01165649, + 0.03314911, + 0.021992447, + -0.01636475, + -0.0024096663, + 0.0055845017, + 0.020474449, + 0.026237901, + -0.0015565641, + -0.023868345, + 0.01336578, + 0.0058745258, + -0.029718189, + 0.012322928, + -0.03616042, + -0.023596834, + 0.009064788, + 0.006744597, + 0.010132322, + -0.024300296, + -0.021807324, + 0.031075746, + 0.035987638, + -0.03675281, + 0.016846066, + 0.0029403481, + 0.012421659, + -0.009848469, + -0.02673156, + -0.0016167287, + 0.016154945, + 0.032877598, + -0.0011654948, + -0.014143291, + 0.024868002, + 0.0033445302, + -0.011347954, + -0.032359257, + 0.0068001337, + -0.0042824796, + -0.0018357892, + 0.0005187262, + -0.011415832, + 0.016006848, + -0.008972227, + 0.015044216, + -0.02853341, + 0.03872744, + -0.02133835, + -0.033469986, + 0.012150148, + 0.020338694, + -0.02132601, + 0.0056184405, + -0.00847857, + 0.020104205, + 0.012477196, + 0.011767563, + 0.0057233428, + -0.023436395, + 0.028434679, + -0.028829604, + 0.03956666, + 0.009496738, + 0.017512504, + 0.017450796, + 0.0057480256, + -0.01508124, + -0.02981692, + 0.013847096, + -0.00797257, + 0.011162832, + 0.024386685, + -0.0065779877, + 0.014686313, + 0.02365854, + 0.0115947835, + 0.0005488084, + -0.0043380163, + -0.0047144303, + -0.010132322, + 0.050698638, + -0.018536843, + -0.0021767216, + -0.0032612255, + 0.023510443, + 0.015007191, + 0.011551588, + -0.024374345, + -0.010471712, + -0.0039184075, + 0.0011222997, + 0.03386491, + 0.0052481974, + 0.017672943, + 0.013723682, + 0.012847439, + -0.01756187, + -0.0005977885, + -0.012020563, + 0.015179971, + 0.034852225, + 0.01062598, + -0.004362699, + -0.68993586, + -0.02211586, + 0.007546791, + -0.001740143, + 0.013415146, + 0.03386491, + 0.029347945, + 0.0034648594, + -0.016636262, + 0.0011747509, + -0.00736784, + 0.000043002205, + 0.0029372629, + -0.014291388, + 0.007787449, + -0.029347945, + -0.014994849, + 0.009817616, + -0.017500162, + 0.032532036, + -0.0117613925, + -0.019770987, + -0.021498788, + -0.0033291036, + 0.026015757, + 0.025299953, + 0.006991426, + 0.0030745612, + -0.0033167622, + 0.0023587577, + -0.012822757, + -0.0028863542, + -0.0040911874, + -0.008083643, + 0.036283836, + -0.013205341, + -0.01122454, + 0.031075746, + 0.012032905, + 0.031421307, + 0.013995193, + 0.014427143, + -0.00021192567, + -0.026805608, + -0.0029681164, + -0.011113467, + -0.0043318453, + -0.015636604, + 0.016673286, + 0.0029804579, + 0.008614325, + 0.0013591012, + 0.009885494, + 0.02571956, + 0.0050846734, + -0.006068903, + 0.025423367, + 0.015883433, + -0.026435364, + 0.00608433, + -0.0023834407, + 0.011434345, + -0.0010189401, + -0.021548154, + 0.0048039057, + 0.0053839535, + -0.0068803527, + 0.010897492, + 0.009299275, + 0.0042115166, + -0.016006848, + 0.003940005, + -0.010070615, + 0.0067816214, + 0.000030082261, + -0.005371612, + 0.041442554, + 0.012051417, + -0.00924991, + 0.019561183, + 0.018438112, + 0.007392523, + -0.020412741, + -0.008336643, + 0.020671912, + -0.025546782, + -0.033198476, + -0.013958169, + 0.017500162, + -0.010564273, + 0.016241336, + 0.029273896, + -0.021005131, + -0.0051309536, + -0.011094955, + 0.0064484025, + -0.0091511775, + 0.012421659, + 0.0077689365, + -0.0028863542, + 0.0046372963, + -0.030039065, + -0.010317444, + 0.009928688, + 0.019598207, + 0.01884538, + -0.021412399, + 0.002713574, + -0.003427835, + -0.023485761, + 0.028928336, + 0.011045589, + -0.013526218, + 0.03403769, + -0.012921488, + -0.025324635, + 0.015871093, + 0.014710996, + 0.022918055, + -0.04507094, + 0.016031532, + 0.006929719, + 0.00012987437, + 0.0114405155, + -0.0063620126, + -0.022560153, + 0.0029881713, + 0.008077472, + -0.015463824, + -0.029520726, + 0.02742268, + 0.0027922508, + 0.019178597, + 0.007016109, + 0.008645179, + -0.008435374, + 0.016648604, + 0.00063095614, + 0.011687344, + -0.017278016, + -0.017919771, + 0.014945484, + -0.018129576, + 0.008330472, + 0.0024852576, + -0.0066705486, + -0.03401301, + 0.0024405199, + -0.00062671374, + 0.0061151837, + -0.019252647, + -0.008805618, + -0.020585522, + -0.0044922843, + -0.011002394, + 0.0048902957, + -0.0226342, + -0.009712714, + -0.0039369194, + 0.006090501, + 0.021622203, + 0.014661631, + -0.011804587, + 0.0000605984, + -0.0112862475, + -0.011064101, + -0.0070901574, + 0.034062374, + -0.029545408, + -0.014587582, + 0.007923204, + -0.0140692415, + -0.013575585, + -0.008342814, + -0.019203281, + 0.00086235814, + -0.016253676, + -0.024473077, + -0.008540276, + -0.0028385313, + 0.009700372, + -0.005896123, + 0.0033815545, + -0.010348298, + 0.032186475, + 0.002978915, + 0.02571956, + 0.027644826, + -0.013118951, + 0.033815548, + -0.023238933, + -0.013069585, + -0.006615012, + 0.019647572, + -0.0031239272, + 0.00030390796, + -0.008885837, + -0.00033244755, + -0.009527592, + 0.014686313, + 0.01875899, + 0.012551244, + 0.022239275, + -0.020462109, + 0.027274583, + -0.005704831, + 0.008645179, + -0.019166257, + 0.017105237, + 0.034383252, + 0.0016367835, + -0.009033934, + -0.0048810397, + 0.004985942, + 0.007978741, + -0.0023464162, + 0.006892694, + 0.015278703, + 0.0030637626, + -0.019351378, + -0.02621322, + 0.031248527, + 0.03512374, + -0.040010948, + -0.019474793, + -0.010440858, + 0.017364407, + 0.013081927, + 0.0011678088, + -0.017055871, + -0.034210473, + 0.010082956, + 0.0016738079, + 0.0014192656, + -0.0034586887, + -0.00031875627, + 0.013674316, + -0.015315727, + 0.01901816, + -0.0056523797, + 0.015488507, + 0.02870619, + 0.020980448, + -0.018820696, + 0.017290358, + -0.011773734, + 0.022128202, + 0.011002394, + -0.009237568, + 0.022955079, + -0.013242366, + 0.0046403813, + -0.017031187, + -0.005220429, + -0.000036108355, + -0.022239275, + 0.04635445, + -0.0031779208, + 0.012174831, + 0.012785732, + 0.011884807, + 0.0042115166, + -0.00123183, + -0.008151521, + 0.000019440178, + 0.011162832, + -0.019203281, + -0.0034586887, + -0.00033726843, + -0.012748708, + -0.00030545064, + -0.016130263, + -0.0017864235, + -0.030088432, + 0.009077129, + 0.0024220077, + 0.010730882, + -0.003292079, + -0.000076218035, + 0.025065465, + 0.02168391, + -0.0152910445, + 0.017389089, + 0.02981692, + -0.019931426, + -0.027447363, + -0.037394565, + 0.0059855985, + -0.005621526, + 0.004430577, + 0.035025008, + 0.023029128, + 0.0181666, + 0.012896805, + 0.0008515594, + -0.003616042, + 0.019067526, + 0.005991769, + 0.018907087, + -0.014809729, + -0.005828245, + -0.015562556, + -0.032680135, + -0.0056431238, + 0.030433992, + 0.026830291, + 0.029347945, + 0.009811445, + 0.0042886506, + -0.0020286243, + -0.022498446, + -0.020474449, + -0.009749738, + -0.007386352, + -0.011347954, + -0.0018990391, + 0.008768593, + -0.009367153, + 0.024682881, + 0.016673286, + -0.0021921482, + -0.009811445, + 0.0037425417, + -0.004985942, + 0.07557898, + -0.0059269764, + 0.004695918, + 0.0019545755, + 0.007256767, + -0.013032561, + -0.024374345, + -0.02210352, + 0.0014084668, + -0.0022847091, + 0.0007239026, + -0.021943081, + -0.000053849173, + -0.010348298, + 0.0033105914, + -0.0017077468, + 0.0032828231, + -0.014032218, + 0.016006848, + -0.017722309, + -0.015871093, + -0.0027475131, + 0.001075248, + -0.017537186, + -0.0079170335, + -0.0056091845, + 0.017598893, + 0.005741855, + 0.020165913, + -0.020116547, + 0.0181666, + 0.012582098, + -0.015735336, + -0.016920114, + 0.006584158, + -0.013513877, + -0.0025253673, + -0.0037302002, + 0.011212198, + -0.005158722, + 0.015611921, + 0.008015766, + 0.0018728136, + -0.0065162806, + 0.0041004433, + -0.0054456606, + 0.00009458557, + 0.0037147736, + -0.013526218, + -0.02125196, + 0.02544805, + -0.0022245445, + -0.012687, + 0.0042207725, + -0.0026318121, + 0.014636948, + -0.028113801, + 0.0029079518, + -0.02107918, + -0.006584158, + -0.0011770648, + -0.0140692415, + -0.0008330472, + -0.00090709585, + -0.031766865, + -0.010212542, + 0.003119299, + -0.016303042, + -0.0071580354, + 0.00762701, + 0.0003278195, + -0.019573525, + -0.017080553, + 0.025670195, + 0.03435857, + 0.014254363, + 0.0018234478, + -0.017450796, + -0.001894411, + 0.023214249, + -0.003986285, + -0.007083987, + 0.0116071245, + -0.003350701, + -0.0062262565, + 0.006522451, + 0.013180658, + -0.020585522, + -0.012909146, + 0.014994849, + 0.02425093, + -0.0010073701, + 0.01833938, + -0.0068433285, + -0.016130263, + -0.0021042156, + 0.0016228994, + 0.00805279, + -0.01695714, + -0.0067260847, + 0.017981479, + -0.020634888, + -0.016611578, + -0.030656137, + 0.02347342, + -0.009120325, + 0.020499133, + -0.006121354, + -0.01669797, + 0.006436061, + -0.009502909, + -0.0065779877, + 0.0041775773, + -0.018154258, + 0.0032334574, + 0.012699342, + -0.01620431, + 0.024300296, + -0.0026626657, + -0.043096308, + 0.009428861, + -0.032063063, + 0.032186475, + 0.027521411, + 0.010150835, + 0.011422003, + -0.019511817, + -0.0061336956, + -0.015031874, + 0.011946514, + 0.009052446, + 0.018104892, + -0.010983882, + -0.010558102, + -0.009897835, + -0.015179971, + 0.01585875, + 0.020165913, + 0.006349671, + -0.010595126, + -0.023818979, + 0.024954392, + 0.02707712, + -0.011335613, + -0.02038806, + -0.014155632, + 0.01482207, + 0.02262186, + -0.027768241, + 0.017068211, + -0.0026333549, + -0.0028431593, + -0.02836063, + 0.0028693848, + 0.02312786, + 0.0020656486, + -0.025818292, + -0.0054610875, + 0.015229337, + 0.024781613, + 0.028409995, + -0.005297563, + 0.017327381, + -0.0096139815, + -0.008453887, + 0.009965713, + 0.0054641725, + 0.01568597, + -0.018438112, + 0.02406581, + 0.027052436, + -0.0038998951, + 0.003214945, + 0.013871779, + -0.0049304054, + 0.021980105, + 0.00013459883, + -0.0038998951, + -0.0005333816, + -0.036826856, + -0.0030622198, + 0.029027067, + -0.012736366, + 0.004146724, + -0.0006857213, + -0.003099244, + -0.0060966713, + -0.0044151503, + 0.005192661, + 0.020807669, + 0.015537873, + -0.019425428, + 0.011730539, + 0.0018758989, + -0.002883269, + -0.012970854, + -0.032013696, + -0.0009680317, + 0.015155288, + -0.0026009586, + 0.03616042, + 0.023152541, + 0.0073740105, + -0.017376747, + -0.0041004433, + 0.02947136, + 0.01490846, + -0.02947136, + 0.022350349, + -0.0045046257, + -0.019758645, + -0.016611578, + -0.020104205, + -0.039640706, + 0.002232258, + 0.005424063, + -0.039023634, + 0.017450796, + -0.01585875, + -0.016241336, + -0.001154696, + 0.01473568, + 0.015389776, + -0.029249214, + 0.022041813, + 0.00642989, + -0.026978388, + -0.021646887, + 0.01800616, + -0.009589299, + -0.0064052073, + 0.016784359, + 0.021042155, + -0.014957826, + -0.0016275274, + -0.007009938, + 0.0102187125, + 0.015722996, + -0.030063748, + -0.0012248879, + 0.012008221, + 0.015500849, + -0.021992447, + 0.0052667097, + 0.0010305103, + 0.006152208, + -0.014538216, + -0.015389776, + 0.0074048643, + -0.013057244, + -0.02742268, + 0.019499475, + -0.02665751, + -0.0020671913, + 0.00874391, + -0.026435364, + 0.008768593, + -0.019511817, + -0.007738083, + -0.004695918, + -0.018672599, + 0.033889595, + 0.014933143, + 0.030113114, + 0.007324645, + -0.011181345, + -0.0059424033, + -0.009996567, + 0.011662661, + 0.028558092, + -0.0115701, + -0.009996567, + -0.015871093, + 0.035000324, + 0.0076516927, + 0.0058004768, + 0.0023541297, + -0.009552275, + -0.026978388, + -0.0007929375, + 0.020128889, + -0.011434345, + -0.024127515, + 0.018462794, + -0.030532723, + -0.0009965713, + -0.029940333, + 0.003582103, + 0.015895775, + -0.0019283501, + -0.019339036, + 0.003788822, + -0.01208844, + 0.0052142586, + 0.0060874154, + -0.009620152, + 0.018277673, + 0.010261907, + -0.024090491, + 0.012316757, + -0.009262251, + 0.036925588, + 0.00950908, + 0.011366466, + 0.020881716, + -0.01824065, + 0.025250586, + -0.00079910824, + -0.01851216, + -0.009157348, + 0.022214592, + -0.007694888, + 0.009453543, + -0.01671031, + 0.0050599906, + 0.01748782, + 0.024756929, + -0.005766538, + 0.00086081546, + 0.012699342, + -0.01669797, + -0.0066890605, + 0.021906056, + -0.013242366, + -0.0043441867, + -0.0088303005, + -0.012736366, + 0.002724373, + 0.0010567359, + -0.018129576, + -0.020857034, + 0.010878979, + -0.0035018837, + -0.02099279, + -0.007164206, + -0.020104205, + -0.01208227, + 0.012612952, + 0.008811789, + 0.0071271816, + 0.006460744, + 0.025818292, + 0.0006012595, + 0.01620431, + -0.029101117, + 0.0069790846, + 0.0077689365, + 0.00668289, + -0.014254363, + -0.016340068, + 0.0008322759, + 0.010274249, + 0.025768926, + -0.03307506, + -0.017709967, + 0.0046897475, + -0.022523127, + 0.0034000669, + -0.0014570613, + 0.011977368, + 0.020215278, + -0.010033591, + -0.011773734, + 0.0033105914, + 0.004720601, + 0.0074665714, + -0.0019345208, + 0.010996223, + -0.0018990391, + -0.002030167, + 0.011675002, + 0.010866638, + -0.017426113, + -0.018919427, + 0.0076516927, + 0.014427143, + 0.033124425, + 0.019005818, + -0.022436738, + 0.033445302, + -0.014883777, + 0.004038736, + 0.017919771, + 0.02870619, + 0.0020224536, + -0.008552618, + -0.02579361, + -0.0069544017, + 0.013982852, + -0.0060781594, + -0.014488851, + 0.0028693848, + 0.0134521695, + -0.013378121, + -0.016858408, + -0.0030884454, + -0.024645856, + -0.017290358, + -0.002540794, + 0.009101812, + -0.025744244, + 0.013686657, + 0.010311273, + -0.0028092202, + -0.00552588, + -0.008669862, + 0.0013459884, + 0.005707916, + -0.0100644445, + -0.0028308178, + -0.0017771674, + -0.008034278, + 0.0014439485, + -0.023954736, + 0.003341445, + 0.017092895, + -0.0143654365, + -0.03751798, + 0.031001698, + -0.00951525, + -0.018549185, + 0.013094268, + -0.020375717, + -0.021622203, + 0.013822413, + -0.0063805245, + -0.0028431593, + -0.010342127, + 0.008435374, + 0.0015149118, + -0.005004454, + -0.02373259, + -0.001538052, + 0.028212532, + -0.006744597, + 0.03147067, + 0.22056621, + 0.002096502, + 0.0037672247, + 0.027101804, + -0.017635917, + 0.033445302, + 0.0062108296, + -0.010249566, + -0.010582785, + 0.012045246, + 0.009194373, + 0.01191566, + -0.028089117, + 0.0032427134, + 0.013217682, + -0.007941716, + -0.012847439, + -0.015957482, + -0.022066494, + -0.028508727, + -0.016451139, + 0.0014177229, + -0.0116071245, + 0.0025917024, + 0.012069928, + -0.000014125164, + 0.0037086029, + 0.025571464, + 0.012921488, + -0.0021366118, + -0.01627836, + -0.00951525, + 0.015821727, + -0.0067137433, + -0.011082613, + -0.003915322, + 0.00057966204, + 0.014957826, + 0.013513877, + 0.023325322, + 0.020597864, + 0.009274593, + 0.015303385, + -0.026805608, + -0.016080897, + 0.006127525, + -0.016870748, + -0.01740143, + 0.0030406222, + 0.0022091179, + -0.02014123, + -0.024287954, + 0.017413773, + 0.04823035, + -0.004223858, + 0.005390124, + 0.027101804, + 0.005760367, + 0.0074912542, + -0.004257797, + -0.022325665, + 0.008731569, + -0.005982513, + 0.011650319, + -0.0016738079, + 0.015266362, + -0.02184435, + 0.01422968, + 0.011958855, + -0.016056214, + 0.02270825, + -0.008935203, + 0.015204654, + -0.0021288984, + 0.0034741154, + -0.0031686649, + 0.0106815165, + -0.004334931, + 0.032063063, + 0.014316071, + -0.0026379828, + 0.008355155, + 0.003230372, + -0.0032365427, + -0.0062509393, + -0.021646887, + 0.0039523463, + 0.011545417, + 0.028311264, + 0.0016861493, + 0.010638322, + -0.005967086, + -0.010576614, + -0.027620142, + 0.008262594, + 0.025966391, + 0.0055752457, + 0.023596834, + 0.009632494, + 0.0021474105, + -0.028138483, + -0.020536156, + 0.010514907, + -0.0007084758, + -0.0067199143, + 0.014044559, + 0.0041960897, + 0.004763796, + 0.020696595, + -0.024399027, + 0.020351036, + -0.024584148, + 0.022300983, + -0.0072135716, + 0.026410682, + -0.0057788794, + 0.005056905, + -0.02433732, + -0.0034864568, + 0.0039523463, + -0.0045601623, + -0.001086818, + 0.00711484, + -0.008645179, + -0.015969824, + -0.021523472, + -0.031914964, + 0.010298932, + -0.0122118555, + -0.020684253, + 0.003264311, + -0.015661288, + 0.04475006, + -0.0021304411, + -0.008441545, + 0.016191969, + -0.0053345873, + -0.01182927, + 0.006007196, + -0.004140553, + 0.01646348, + 0.0009742024, + 0.005680148, + -0.009546104, + -0.013550902, + -0.009194373, + -0.0054209777, + -0.015994506, + -0.043392505, + -0.008170034, + -0.01988206, + -0.010786419, + -0.019598207, + -0.009725055, + 0.012002051, + -0.014994849, + -0.0363332, + 0.0019345208, + 0.0028909824, + 0.030878283, + -0.009737397, + 0.020276986, + 0.013230024, + -0.009996567, + -0.008725398, + -0.018462794, + -0.15560088, + 0.019388402, + 0.0050846734, + -0.007904693, + -0.009836128, + -0.011724368, + 0.018796014, + 0.015019532, + -0.019339036, + 0.03016248, + 0.027546095, + -0.016722651, + -0.03727115, + -0.012489538, + 0.012810415, + -0.00027131886, + -0.0021258132, + 0.023522785, + 0.0035759322, + 0.008355155, + 0.0049211495, + -0.028780239, + 0.020116547, + 0.0011153576, + -0.011366466, + 0.0029372629, + -0.0031810063, + 0.027792923, + -0.015105923, + -0.0181666, + -0.007670205, + -0.014513534, + 0.011428174, + 0.029841602, + -0.0037980783, + -0.00024200793, + -0.023251273, + 0.0045138816, + -0.017981479, + 0.019770987, + -0.015611921, + 0.009021593, + -0.000009364549, + 0.0047853934, + -0.010039762, + 0.031643454, + 0.015797043, + 0.012822757, + -0.0021798068, + -0.013007878, + 0.0061645494, + -0.015624263, + -0.0114528565, + -0.017179284, + 0.046329767, + 0.03240862, + 0.0058251596, + 0.021449422, + 0.011699685, + 0.019203281, + -0.016241336, + -0.0036407248, + 0.018388746, + 0.0021690081, + 0.015611921, + -0.024028784, + 0.018203624, + 0.006676719, + -0.029101117, + 0.015241679, + -0.0034926275, + -0.009033934, + -0.012921488, + -0.021967763, + 0.0016290701, + 0.0055752457, + -0.020659572, + 0.015130606, + -0.006608841, + -0.026879657, + -0.0013668145, + 0.045712695, + -0.0009680317, + -0.018438112, + -0.0076455222, + 0.012748708, + 0.017981479, + -0.008410691, + -0.013155975, + -0.005735684, + 0.00014520476, + -0.043738063, + 0.023325322, + -0.037246466, + 0.016549872, + 0.010872809, + -0.016944798, + -0.0011894063, + -0.0029125798, + -0.0042732237, + -0.0017092895, + -0.0031285551, + -0.024275612, + -0.0019036671, + 0.010126152, + 0.021474106, + 0.017956795, + 0.01954884, + 0.04114636, + 0.025090149, + -0.008935203, + 0.015229337, + 0.013353438, + 0.028039752, + -0.0030344515, + 0.0047761374, + 0.023461077, + -0.0091511775, + -0.0076455222, + 0.01464929, + 0.03914705, + -0.01996845, + 0.010440858, + 0.014513534, + 0.009990396, + -0.020770645, + -0.09379494, + -0.027373314, + 0.0034556033, + 0.0012865951, + 0.007448059, + 0.0217703, + -0.0054364046, + 0.0115947835, + -0.004732942, + 0.014994849, + -0.00685567, + -0.020869376, + -0.017919771, + -0.012785732, + 0.025040783, + 0.0033599571, + 0.024004102, + -0.011724368, + -0.03830783, + 0.010089127, + -0.020178255, + -0.00951525, + -0.021153228, + 0.006152208, + -0.0014161803, + -0.010601297, + -0.04050461, + 0.016636262, + 0.010891321, + 0.0065101096, + -0.0041436385, + 0.010039762, + 0.01594514, + -0.022584835, + -0.014081583, + -0.013834755, + -0.0140569005, + -0.013513877, + 0.011175174, + -0.03418579, + -0.0018033929, + 0.00008282263, + 0.004393553, + -0.027348632, + -0.018055527, + 0.00847857, + -0.0024405199, + 0.020795327, + 0.0017200882, + -0.00968186, + -0.019215623, + 0.017253334, + -0.0030822747, + 0.0034432618, + 0.030656137, + -0.024522442, + 0.02082001, + 0.005535136, + -0.031569403, + 0.011070272, + -0.0015071984, + 0.00924991, + 0.018487478, + 0.02312786, + -0.017500162, + -0.006590329, + -0.016599238, + 0.0123661235, + 0.019647572, + -0.029890968, + -0.009286934, + 0.010095298, + -0.020289328, + 0.004779223, + -0.010514907, + 0.00056539226, + -0.03050804, + -0.015525532, + 0.020894058, + -0.008151521, + -0.009219056, + -0.007898522, + 0.0029295494, + -0.035469297, + -0.018055527, + 0.0250161, + 0.0053438437, + -0.027546095, + -0.0046156985, + -0.005896123, + 0.0012326014, + 0.031692818, + 0.02347342, + -0.033198476, + -0.026706876, + 0.023559809, + 0.000008370244, + 0.017092895, + -0.015463824, + -0.011835441, + -0.00745423, + -0.018610891, + -0.032951646, + 0.0167967, + -0.009743567, + -0.029150482, + 0.0025809037, + -0.008774764, + 0.009398007, + -0.018833037, + -0.008620496, + 0.022288641, + -0.021461764, + 0.0019391488, + 0.0022384287, + -0.009638665, + -0.0344573, + 0.020931082, + -0.00084307464, + 0.007293791, + -0.00736784, + -0.0066890605, + -0.005655465, + 0.012785732, + -0.00823174, + -0.008768593, + -0.010582785, + 0.004507711, + 0.006254025, + 0.02880492, + -0.019215623, + -0.018018503, + 0.027447363, + -0.012909146, + 0.011175174, + 0.02579361, + -0.02056084, + -0.024756929, + 0.0017000334, + 0.01054576, + 0.008281106, + -0.02406581, + -0.00720123, + -0.0317175, + 0.009206714, + -0.009953371, + -0.010101469, + 0.001460918, + -0.023707906, + -0.0044213207, + 0.0022785384, + 0.017524846, + 0.0137483645, + 0.023868345, + -0.028730873, + -0.007318474, + -0.0062509393, + -0.03102638, + 0.0008723856, + 0.0013297902, + -0.006701402, + -0.015821727, + 0.02665751, + -0.0067569385, + 0.001011998, + -0.014846752, + 0.020696595, + -0.0037949928, + -0.009089471, + -0.0039585168, + -0.004276309, + -0.02511483, + -0.017759332, + 0.008348985, + 0.019055184, + 0.0051463805, + 0.021918397, + -0.015537873, + -0.0072197425, + -0.021634545, + -0.009410348, + 0.007269108, + 0.002695062, + -0.006349671, + -0.035000324, + -0.00094334886, + 0.03699964, + 0.019561183, + -0.013847096, + 0.0007624696, + -0.0021875203, + -0.00075398484, + -0.039048318, + 0.007170377, + -0.0018280759, + -0.0008176204, + -0.013958169, + -0.0046588937, + -0.006272537, + -0.008367497, + 0.004810076, + 0.060522422, + 0.009058617, + 0.0031424393, + -0.025398685, + -0.03418579, + -0.0041498095, + 0.015179971, + -0.001009684, + -0.0023063067, + -0.0126746595, + -0.023448735, + 0.019993134, + -0.022905713, + -0.006374354, + 0.020523814, + 0.003119299, + 0.00066836615, + -0.01721631, + -0.01285978, + -0.024300296, + 0.03857934, + -0.008207058, + 0.02700307, + -0.00968186, + 0.016117921, + 0.02887897, + 0.002729001, + 0.0126746595, + -0.010638322, + 0.010144664, + 0.0044953697, + 0.026929023, + 0.0006228571, + 0.0015642776, + -0.0017231735, + -0.036456615, + 0.000027286153, + 0.011644149, + 0.015871093, + -0.0060565616, + 0.044700697, + -0.0012611409, + -0.04072675, + 0.02766951, + -0.0075961566, + -0.0006085873, + 0.024090491, + -0.0053932094, + -0.013575585, + -0.008095984, + 0.0005711773, + 0.01173671, + 0.018055527, + 0.00565855, + -0.025262928, + -0.0045601623, + -0.020782985, + 0.0075035957, + -0.033692133, + -0.0209064, + 0.014081583, + 0.013180658, + 0.015216996, + 0.0062355124, + 0.0067877923, + -0.017500162, + 0.017858064, + -0.0023541297, + 0.006368183, + -0.0011153576, + 0.0039369194, + 0.014587582, + -0.042355824, + -0.013020219, + 0.0028724703, + 0.0005954745, + -0.018018503, + -0.021227278, + 0.008632838, + 0.02031401, + 0.0004061105, + 0.041417874, + -0.016253676, + -0.03203838, + 0.014303729, + -0.0027274583, + -0.018314697, + -0.019092208, + -0.01714226 + ] + }, + { + "object": "embedding", + "index": 2, + "embedding": [ + 0.013982197, + -0.018476475, + -0.005729884, + -0.023803027, + 0.0031706425, + 0.009507126, + -0.044174526, + -0.0043758387, + 0.01791309, + -0.02065319, + 0.010851568, + 0.010934795, + -0.016222933, + 0.019359965, + -0.024520062, + -0.0053873714, + 0.03178005, + -0.0010819557, + 0.010729928, + -0.022381758, + -0.045480553, + 0.0045486954, + -0.020665996, + 0.017695418, + -0.016619865, + 0.0010731529, + 0.015685158, + -0.015185793, + 0.026453499, + 0.010755536, + 0.02481456, + -0.012765798, + 0.017285684, + -0.037337076, + -0.040947862, + 0.017093621, + -0.0021639115, + 0.010064109, + -0.0013468429, + -0.020627582, + 0.008495593, + 0.0055666305, + -0.003665205, + -0.0038092525, + -0.007996229, + 0.013559658, + 0.013918176, + 0.010256172, + -0.008854112, + 0.010320193, + -0.0048271874, + 0.030858146, + -0.0041229557, + -0.0043150187, + 0.01831002, + -0.025621224, + -0.00086028286, + 0.01782346, + -0.020947687, + -0.016709493, + 0.012714581, + -0.0020694805, + 0.005134488, + -0.0097312, + -0.0075928965, + 0.010204955, + -0.0059027406, + -0.004638325, + -0.0038860778, + 0.0057522915, + 0.02932164, + 0.029372858, + 0.00069662905, + 0.0151473805, + 0.0032106556, + 0.013726113, + -0.0042541986, + -0.0020390705, + -0.0048303884, + -0.017503355, + 0.0042894105, + -0.012977066, + -0.026171805, + -0.0008050647, + 0.027196143, + 0.011869502, + -0.002901754, + 0.0011355734, + -0.031088622, + -0.012035958, + -0.005256128, + 0.029424075, + 0.032471478, + -0.0012075971, + -0.013598071, + 0.016427802, + 0.022368954, + 0.020000177, + 0.005729884, + -0.029065557, + 0.0048976103, + 0.014545582, + -0.03836141, + 0.0026472704, + -0.036824908, + -0.015531506, + 0.015557115, + -0.012573734, + 0.027477834, + -0.03211296, + -0.020269064, + 0.0089885555, + 0.011082044, + -0.020461127, + -0.0070487177, + -0.020025784, + 0.017157642, + -0.0084315725, + -0.017861873, + -0.015697962, + 0.014558387, + 0.037337076, + 0.016824732, + -0.023226837, + 0.027247358, + 0.0114149535, + -0.01256093, + -0.013329183, + 0.0060243807, + -0.0002958973, + 0.011037229, + 0.007829774, + 0.01009612, + 0.017554572, + -0.0070295115, + 0.010179347, + -0.009058978, + 0.03157518, + 0.007855383, + -0.029961852, + 0.01523701, + 0.02834852, + -0.0064757294, + -0.0077337427, + -0.004628722, + 0.030550845, + 0.02025626, + -0.016466213, + 0.0021383031, + 0.00906538, + 0.0049616313, + -0.024507258, + 0.019897742, + 0.013546854, + 0.022983557, + 0.0033098883, + -0.011645429, + -0.0093662795, + -0.020115415, + -0.016094891, + -0.0067926333, + 0.0061332164, + 0.028655821, + 0.002460009, + 0.030730104, + 0.019718483, + 0.009711993, + 0.019001449, + 0.0012700176, + 0.0035115546, + -0.001566115, + 0.035877395, + -0.010569875, + 0.014929709, + 0.0047215526, + 0.010544267, + 0.012048761, + 0.003950099, + -0.014251086, + 0.0031978514, + -0.019001449, + -0.0023671784, + 0.013406008, + 0.005432186, + 0.0010955603, + -0.009756808, + 0.010441833, + -0.020858059, + 0.012208814, + -0.013149924, + 0.014609603, + 0.018348433, + 0.0051024775, + -0.01654304, + -0.6912225, + -0.040282045, + 0.0114789745, + -0.0017381716, + 0.0023895856, + 0.03779803, + 0.005845122, + 0.012580137, + 0.0074264416, + -0.026069371, + 0.0063572903, + 0.008860514, + 0.013092305, + -0.0029545715, + 0.007080728, + -0.030192327, + -0.0099872835, + 0.015749179, + -0.0035819777, + 0.014327911, + -0.009071783, + -0.004180575, + -0.028655821, + -0.0047919755, + 0.020153826, + 0.018258803, + 0.010998816, + -0.0097376015, + -0.0056914715, + 0.020691603, + -0.0045358916, + -0.0046095154, + -0.017951502, + -0.020128218, + 0.038335804, + 0.0019030257, + -0.015172989, + 0.008194694, + -0.008041044, + 0.025185881, + -0.0027897172, + 0.015774786, + -0.0015805197, + -0.014686429, + -0.010627494, + -0.005720281, + 0.0057010744, + -0.0014436747, + 0.033214122, + -0.00071423483, + 0.020819645, + 0.003068209, + 0.023700593, + -0.005480202, + 0.0148400795, + -0.0010651503, + 0.030192327, + 0.0151473805, + 0.0063092746, + -0.007195966, + -0.019564833, + 0.012733787, + -0.029577725, + -0.009654375, + -0.012516115, + 0.00413576, + -0.032164175, + -0.017631397, + -0.0015269021, + -0.0019542426, + 0.006078799, + 0.007458452, + -0.011178075, + 0.029859418, + 0.01651743, + 0.0022791494, + 0.026120588, + -0.01788748, + 0.021395834, + 0.012554528, + 0.0018069941, + 0.003918088, + -0.017324096, + -0.009142206, + 0.027759528, + -0.021254988, + -0.029526507, + -0.02131901, + 0.019475203, + -0.011395747, + 0.033956766, + 0.019641658, + 0.00074744574, + -0.0029673756, + -0.006274063, + 0.014635212, + -0.014443149, + 0.0005897939, + 0.0031306294, + -0.0058003073, + 0.014468757, + -0.035288405, + -0.0016821531, + -0.0015725171, + 0.039846703, + 0.0045230873, + -0.026146198, + 0.033470206, + 0.019808114, + -0.017503355, + 0.019180706, + -0.011747863, + -0.0246353, + 0.0062484546, + 0.0101729445, + -0.024750538, + 0.046223197, + 0.009084587, + 0.011594213, + -0.003205854, + 0.009379084, + 0.0065525547, + -0.00052177155, + -0.014622408, + 0.0006009976, + -0.004820785, + 0.00044174524, + -0.016107697, + -0.027913177, + -0.0037356282, + 0.015531506, + -0.009475116, + 0.009968078, + 0.0053809695, + 0.0030345977, + -0.003841263, + 0.005976365, + -0.017938698, + 0.02578768, + -0.029961852, + -0.025736462, + -0.01073633, + -0.013879764, + -0.013585267, + -0.00032290618, + -0.009103794, + -0.03093497, + -0.0077721556, + -0.019231923, + 0.021447051, + -0.033700682, + -0.021639114, + -0.017144836, + 0.0021879193, + -0.006405306, + -0.0040877443, + -0.022817103, + 0.003543565, + -0.0017749836, + 0.02530112, + 0.008457181, + 0.003469941, + -0.01548029, + -0.00013364395, + -0.00906538, + -0.040077176, + -0.009411095, + 0.037337076, + -0.014481561, + -0.022343347, + -0.006213243, + -0.002821728, + 0.0007470456, + -0.023700593, + -0.024891384, + -0.011773471, + -0.025749266, + -0.023303661, + 0.00018245999, + -0.016248543, + 0.014929709, + 0.010268976, + 0.005598641, + -0.01921912, + 0.035288405, + -0.0067862314, + 0.019795308, + 0.03567253, + -0.0020822845, + 0.01937277, + -0.008405964, + -0.0072791935, + -0.007925806, + -0.011382943, + 0.016094891, + -0.0023031572, + -0.0036524008, + 0.006181232, + 0.0006033984, + -0.00037952478, + 0.013559658, + -0.0044174525, + 0.019078273, + -0.02040991, + 0.01970568, + -0.013265162, + 0.01256093, + -0.002040671, + 0.015505899, + 0.03613348, + 0.002983381, + -0.02259943, + 0.0027513045, + 0.0018566104, + 0.017785048, + -0.00103394, + -0.012330454, + 0.0147120375, + -0.010864372, + -0.014699233, + -0.005419382, + 0.0085532125, + 0.043841615, + -0.012746591, + -0.014558387, + -0.013341987, + 0.03925771, + 0.011357334, + 0.0023879851, + -0.008137075, + -0.028758256, + -0.0025624426, + -0.01243929, + 0.00018986243, + -0.016824732, + -0.0049168165, + 0.00927665, + -0.03129349, + 0.014430345, + 0.011440562, + 0.010640299, + 0.0422795, + 0.032036133, + -0.017925894, + 0.022548214, + -0.020448323, + 0.026299847, + 0.015621136, + -0.0206788, + 0.01426389, + -0.018911818, + -0.010185749, + -0.017644202, + 0.015672352, + 0.022676256, + 0.0028569393, + 0.039488185, + 0.003354703, + 0.0270681, + 0.01749055, + -0.016389389, + -0.011101251, + 0.01475045, + -0.017349705, + 0.003841263, + -0.0040557333, + -0.008700461, + 0.021639114, + -0.007311204, + -0.013393204, + -0.004823986, + 0.00094911206, + 0.016978383, + -0.003908485, + 0.0018149968, + -0.022215305, + -0.011626223, + 0.0031338304, + 0.022164088, + 0.010845166, + 0.00095231313, + -0.021088533, + 0.009199825, + 0.012087175, + 0.0089885555, + -0.021178164, + -0.025646832, + 0.021459855, + -0.0062452536, + 0.011216488, + 0.023162816, + 0.023777418, + 0.01402061, + 0.003482745, + -0.0008050647, + -0.02536514, + 0.0047759702, + -0.010134532, + 0.0033995179, + -0.002375181, + -0.00939829, + -0.015685158, + -0.026555931, + 0.0016949573, + 0.0011403749, + 0.027733918, + -0.009468714, + 0.006837448, + -0.02609498, + -0.011421355, + 0.008745275, + -0.0058131116, + 0.0014132647, + 0.0032490683, + -0.019027056, + -0.0012388073, + -0.029065557, + -0.010550669, + 0.024788952, + 0.022061653, + 0.016875949, + -0.01928314, + -0.01158781, + -0.0032490683, + 0.0684257, + 0.0055826358, + -0.009161413, + 0.010717124, + 0.010192151, + -0.016005263, + -0.016261347, + 0.0043182196, + -0.00802824, + -0.0028265293, + 0.0020038588, + 0.0015381058, + 0.007375225, + 0.0064149094, + -0.00031870478, + -0.014724841, + 0.008706863, + 0.00018716154, + 0.030345978, + -0.02162631, + -0.0047855736, + 0.010134532, + -0.009455909, + -0.0024664109, + -0.0061204126, + 0.0077145365, + 0.022189695, + 0.016402192, + 0.015493094, + -0.022176892, + 0.008642842, + 0.020537952, + 0.00650774, + -0.0121639995, + -0.009558342, + -0.01289384, + -0.0032202587, + 0.0047951764, + 0.00696549, + -0.02122938, + 0.015992459, + 0.0040877443, + 0.0065173428, + -0.021050122, + -0.0066197766, + 0.007291998, + -0.011549397, + 0.013457225, + -0.020064197, + 0.0030586056, + 0.022727473, + -0.010192151, + -0.01265056, + -0.007074326, + 0.011703048, + 0.0149041, + -0.012624951, + -0.008758079, + -0.008444376, + -0.018476475, + 0.004571103, + -0.017311292, + -0.008258715, + -0.0031050208, + -0.0093662795, + -0.013482833, + -0.004468669, + 0.004145363, + -0.011363736, + 0.0134700285, + 0.0013700505, + -0.01766981, + -0.013802938, + -0.0013628481, + 0.030909363, + 0.02627424, + 0.006779829, + -0.022868318, + 0.010499452, + 0.046760976, + -0.0020294674, + -0.0076377112, + -0.0142126735, + -0.0020134621, + 0.005483403, + 0.0008874918, + 0.033290945, + -0.013598071, + 0.003409121, + 0.002317562, + 0.031370316, + 0.0057522915, + 0.0072279763, + -0.0017877878, + -0.007381627, + -0.012087175, + 0.022164088, + 0.004820785, + -0.014302302, + -0.01548029, + 0.0033258935, + -0.023495726, + -0.0058131116, + 0.0009211029, + 0.007624907, + 0.01256093, + 0.025006622, + 0.0056914715, + -0.021254988, + 0.014635212, + 0.026812015, + -0.004551897, + 0.0024584082, + -0.008457181, + 0.0029177594, + 0.010550669, + -0.0016565446, + 0.013457225, + 0.0022599432, + -0.029654551, + 0.005044859, + -0.04437939, + 0.02366218, + 0.0010467442, + -0.0033418988, + -0.001234806, + 0.01161982, + -0.021088533, + -0.0038092525, + -0.00027769132, + -0.013943785, + 0.019628854, + -0.028630214, + -0.02658154, + -0.031703223, + -0.018937428, + 0.009948871, + 0.0069270777, + -0.0023975882, + -0.015006534, + -0.025083447, + 0.017785048, + 0.018258803, + -0.00016935568, + -0.031037405, + -0.022240913, + -0.0065813637, + 0.009539137, + 0.0028297305, + 0.012554528, + -0.0041709715, + 0.013572463, + -0.012945056, + 0.02186959, + 0.0034635388, + -0.012381671, + -0.026043763, + -0.017695418, + 0.018975839, + 0.010576277, + 0.033751898, + -0.006017979, + 0.0011875905, + 0.008886122, + -0.006779829, + -0.008169086, + -0.007925806, + -0.0134700285, + -0.019411182, + 0.013495637, + 0.014724841, + 0.0051568956, + 0.017208857, + -0.011818286, + 0.009654375, + 0.0051985094, + -0.0055346196, + -0.0143407155, + -0.028425347, + -0.022855515, + 0.0014692831, + 0.0015725171, + -0.019846525, + -0.012817014, + 0.010000088, + -0.0077145365, + 0.023623768, + 0.012938654, + 0.0025352335, + -0.0076953303, + 0.028220478, + 0.0068694586, + 0.03014111, + -0.009379084, + 0.0013644486, + 0.00019456397, + -0.025698049, + -0.0009363079, + 0.009097391, + 0.0130346855, + 0.013508442, + 0.0062068407, + 0.0019030257, + -0.020781232, + 0.016235739, + 0.017785048, + 0.021754352, + 0.0147760585, + -0.0026392678, + -0.023879852, + -0.023777418, + -0.03516036, + -0.024584083, + -0.032317825, + 0.003297084, + 0.011639027, + -0.0343665, + 0.021293402, + -0.0013892568, + -0.034929886, + 0.014814471, + 0.010140934, + 0.024007894, + -0.011735058, + 0.005621048, + 0.005496207, + -0.011062837, + -0.013329183, + -0.0008022638, + -0.016645472, + -0.004206183, + 0.033956766, + 0.01021776, + -0.003540364, + 0.017592985, + 0.005685069, + 0.00022887526, + 0.025915721, + -0.017708223, + -0.018079545, + 0.0075352774, + 0.015493094, + -0.021754352, + 0.019987373, + -0.014135848, + 0.013713309, + -0.024763342, + -0.029270424, + -0.004990441, + -0.00024067913, + -0.018604517, + 0.003260272, + -0.038207762, + 0.0041293576, + 0.006363692, + -0.007311204, + -0.0075288755, + -0.0048431926, + -0.01766981, + -0.018706951, + -0.006280465, + 0.0054065776, + -0.012016751, + 0.022663452, + 0.0018117958, + 0.0024744135, + -0.031728834, + -0.0028761458, + 0.004574304, + 0.027426617, + -0.0016309363, + -0.006219645, + -0.010749134, + 0.018002719, + 0.0298082, + -0.0058003073, + -0.0054513924, + -0.001447676, + -0.0054673976, + 0.0058195135, + 0.017746635, + -0.012644158, + -0.008930936, + 0.0139053725, + -0.018899014, + 0.005185705, + -0.015697962, + -0.019091077, + -0.006040386, + -0.01450717, + -0.014251086, + -0.0012083973, + 0.011536594, + 0.0027865162, + 0.0067350143, + -0.02503223, + 0.031242272, + 0.011318922, + -0.021843983, + 0.015377856, + -0.0051024775, + 0.009961676, + 0.0026728788, + 0.015224205, + 0.0059443545, + -0.019718483, + 0.03449454, + -0.009980882, + -0.028066829, + -0.015493094, + 0.006411708, + -0.008930936, + -0.0005221717, + 0.0000951813, + 0.002773712, + -0.013239553, + 0.02624863, + -0.0014812871, + -0.0015861215, + -0.0040013157, + -0.0234189, + -0.015313835, + 0.0026312652, + -0.02019224, + -0.0025112256, + 0.014878492, + -0.0018838194, + 0.008783688, + -0.040128395, + -0.0059443545, + -0.03129349, + 0.01037141, + -0.009660777, + -0.012176803, + -0.027247358, + 0.0011203684, + -0.008527604, + -0.004218987, + -0.009270248, + 0.0013148324, + -0.0058835344, + 0.012304846, + -0.007291998, + 0.014443149, + 0.0025832495, + -0.0008882921, + -0.012266433, + -0.0014036616, + -0.015249814, + 0.0041901777, + 0.0045839073, + -0.017132033, + 0.014161456, + -0.031395923, + -0.030345978, + 0.007266389, + -0.010198553, + -0.0011355734, + 0.011325324, + 0.014545582, + 0.03288121, + -0.0029545715, + -0.0016469415, + 0.022420172, + -0.0016901557, + -0.00083867577, + -0.038668714, + -0.018489279, + 0.0032426661, + -0.017785048, + 0.0041293576, + -0.0034763431, + -0.009942469, + -0.022522606, + 0.008277922, + 0.0034219252, + 0.007516071, + -0.0081818905, + 0.0069718924, + 0.011703048, + -0.001241208, + 0.023098795, + 0.032343436, + 0.013700505, + 0.005662662, + -0.010992414, + -0.010441833, + 0.010742732, + 0.036824908, + -0.0007582493, + -0.00068542536, + -0.0034219252, + -0.011805481, + 0.00988485, + -0.010723526, + 0.014238281, + 0.0054481914, + 0.011094848, + 0.005185705, + -0.0090525765, + -0.0049616313, + 0.017388117, + 0.0014820873, + -0.007202368, + -0.018758168, + 0.013764526, + -0.014443149, + -0.008476387, + 0.009142206, + -0.024366412, + -0.0065429513, + -0.021908004, + 0.00915501, + -0.042049024, + -0.0112292925, + -0.023610963, + -0.004641526, + -0.033828724, + 0.024609692, + 0.01718325, + -0.0170296, + -0.006178031, + -0.023982285, + -0.003902083, + -0.0021078931, + -0.013828547, + -0.02326525, + -0.038694322, + -0.03259952, + -0.0058419206, + 0.010544267, + -0.017119229, + -0.0060819997, + -0.0040589347, + 0.008521202, + 0.024379216, + 0.23068064, + 0.010909187, + -0.0053201495, + 0.03257391, + 0.0033611052, + 0.04962912, + 0.022970753, + -0.008540408, + 0.013201141, + 0.020909276, + 0.0037964482, + 0.0025256304, + 0.009379084, + 0.0043150187, + 0.0061428198, + -0.0041773734, + -0.028092436, + -0.0008682855, + -0.015800396, + 0.010019294, + 0.014635212, + -0.017797852, + 0.011280509, + 0.00383166, + 0.034725018, + -0.001922232, + -0.018169174, + -0.0018197984, + 0.023073187, + 0.0054705986, + -0.0062356503, + -0.011472573, + 0.0033354966, + -0.009097391, + -0.0070359134, + -0.005502609, + -0.01928314, + 0.008201096, + 0.020934884, + 0.026069371, + 0.012138391, + 0.012932252, + -0.032138567, + -0.021818373, + -0.0041261567, + 0.02348292, + -0.009404692, + -0.0061908355, + 0.019193511, + 0.0066261785, + -0.017759439, + -0.001922232, + 0.023777418, + 0.02350853, + 0.0011091647, + 0.023226837, + 0.022061653, + -0.011690244, + 0.029526507, + -0.014891297, + -0.014071827, + 0.023457313, + -0.018668538, + 0.0031882483, + 0.0077081346, + -0.0071575535, + -0.019808114, + 0.009475116, + 0.013457225, + -0.010569875, + 0.017746635, + 0.010992414, + 0.019628854, + 0.0056402544, + -0.006286867, + -0.003236264, + 0.024840167, + 0.008162684, + 0.026940057, + -0.017900286, + -0.0037420304, + -0.014404736, + -0.014404736, + 0.022868318, + -0.018719755, + -0.022804298, + 0.0076313093, + 0.0020566762, + 0.03569814, + -0.008674853, + -0.009263846, + -0.009583951, + 0.00976321, + -0.010032099, + 0.006238851, + 0.024776146, + -0.0134700285, + 0.022151284, + -0.02368779, + 0.0031738435, + -0.036517605, + -0.01700399, + 0.017900286, + -0.010787547, + -0.013649288, + 0.011114054, + 0.00480478, + 0.015531506, + 0.038873583, + -0.008828503, + 0.013457225, + -0.005112081, + 0.012003947, + -0.0023223637, + 0.01833563, + -0.00136845, + 0.0033835126, + -0.012618549, + -0.018450867, + -0.0139053725, + -0.00018806184, + -0.022036046, + -0.01441754, + 0.009628766, + -0.015710765, + -0.0037388294, + -0.0040877443, + 0.020077001, + 0.00031870478, + -0.040282045, + 0.03047402, + -0.0020022583, + 0.030909363, + -0.0023719799, + -0.009289455, + -0.00086748524, + -0.009526332, + -0.005243324, + 0.011504583, + -0.01012813, + -0.008636439, + -0.008918133, + 0.012445692, + -0.013738917, + 0.0056466567, + 0.0077977637, + 0.005105679, + -0.012887438, + -0.013585267, + -0.017119229, + 0.0010091318, + -0.02147266, + -0.00059219473, + 0.003473142, + 0.016146109, + -0.013111511, + -0.026376672, + -0.007618505, + -0.016389389, + 0.019539224, + -0.006824644, + 0.025864504, + -0.006472528, + -0.014225477, + -0.008905328, + 0.0014468757, + -0.16409875, + 0.024071915, + 0.004164569, + -0.004033326, + -0.013828547, + -0.0011675839, + 0.02578768, + 0.018233195, + -0.0010171344, + 0.028322913, + 0.015160184, + -0.008649244, + -0.0520107, + -0.024123132, + 0.008924535, + 0.019001449, + -0.0042285905, + -0.015224205, + 0.026402282, + 0.009961676, + -0.0029785794, + -0.029142382, + 0.012215217, + -0.0026408683, + 0.00465433, + 0.00016485421, + -0.00918702, + 0.030243544, + -0.0017877878, + -0.007080728, + -0.00465433, + -0.0052721333, + 0.0028057224, + 0.036287133, + 0.0072855954, + 0.005067266, + 0.00013964591, + 0.005172901, + 0.0010923592, + 0.003972506, + -0.008137075, + 0.024929797, + -0.006152423, + 0.009628766, + -0.019987373, + 0.022970753, + 0.03505793, + 0.021101339, + -0.0015829204, + -0.0073048016, + 0.008681254, + -0.03157518, + -0.023828635, + -0.008649244, + 0.01784907, + 0.0052049113, + 0.018566104, + 0.009808025, + -0.003850866, + 0.022586627, + 0.0036299936, + -0.0267608, + -0.0009651173, + 0.0026200614, + -0.0011043631, + -0.012810612, + 0.0030714099, + 0.008258715, + -0.031856876, + 0.014788862, + -0.013041088, + -0.0066005704, + 0.02323964, + -0.017349705, + 0.012477702, + 0.009910459, + -0.014571191, + 0.012035958, + -0.005377768, + -0.010838764, + 0.013329183, + 0.02618461, + 0.0016773515, + -0.014519975, + -0.016799124, + 0.014865688, + -0.013687701, + 0.005672265, + -0.006261259, + -0.028246088, + 0.00814988, + -0.039949134, + 0.0040013157, + -0.03877115, + 0.016094891, + 0.0133804, + -0.010448235, + -0.011158869, + -0.0011883908, + -0.021088533, + 0.011575006, + -0.010883578, + -0.012112782, + 0.01809235, + 0.024097523, + 0.024660908, + -0.00043574328, + 0.010397019, + 0.027042491, + 0.008233107, + -0.014699233, + 0.031523965, + 0.0142126735, + 0.03323973, + 0.014545582, + -0.00028869492, + 0.0083035305, + -0.034801845, + -0.0027080905, + 0.006779829, + 0.036773693, + 0.012170401, + -0.009692787, + 0.009219031, + -0.0030522035, + -0.024673713, + -0.095365755, + -0.022919536, + 0.012432888, + 0.01475045, + -0.0013924579, + 0.0151473805, + 0.010185749, + 0.03743951, + 0.00018466072, + 0.02934725, + -0.008322736, + -0.017349705, + -0.015019339, + 0.002871344, + 0.008476387, + -0.013201141, + 0.007996229, + -0.025454769, + -0.024981014, + 0.0053297523, + -0.004010919, + -0.012420083, + 0.0022039246, + -0.004270204, + -0.01629976, + -0.020269064, + -0.03920649, + 0.019936156, + 0.00498724, + -0.00471515, + 0.0152114015, + -0.0072407806, + 0.0048559965, + -0.010768341, + -0.017196054, + 0.013790134, + -0.014827276, + -0.00037292263, + 0.006101206, + -0.03144714, + 0.010268976, + 0.012003947, + 0.006510941, + -0.028578997, + -0.013508442, + 0.0040269243, + -0.013713309, + -0.011971937, + -0.009353476, + -0.01937277, + 0.010883578, + 0.037004165, + -0.0033835126, + -0.011178075, + 0.037516337, + -0.020333085, + 0.021280598, + 0.0206788, + -0.009455909, + 0.004817584, + 0.011088446, + 0.012368867, + 0.008508397, + 0.02551879, + -0.0053809695, + -0.015390661, + -0.027324185, + 0.003533962, + 0.012176803, + -0.041895375, + -0.0005985968, + 0.02092208, + -0.018745363, + 0.013226749, + -0.009603158, + -0.001101162, + -0.020755624, + -0.011523789, + 0.009558342, + -0.00032050538, + -0.026018154, + -0.020614779, + -0.006277264, + -0.02366218, + 0.0070423153, + 0.022253716, + -0.013341987, + -0.004388643, + 0.028604604, + -0.014494366, + 0.0005645856, + 0.04312458, + 0.013802938, + -0.012260031, + -0.0075352774, + 0.011901514, + 0.0122280205, + 0.018284412, + 0.00903337, + -0.019398378, + -0.021664724, + -0.0026504714, + -0.049321815, + 0.010115326, + -0.002378382, + -0.023252446, + -0.0032698752, + 0.009878448, + -0.01578759, + -0.004033326, + -0.005256128, + -0.00535216, + -0.0019750495, + -0.002357575, + -0.0050224513, + 0.00065141416, + -0.01402061, + 0.0027016883, + 0.018002719, + -0.0050288537, + 0.02722175, + 0.00053697656, + -0.0019126289, + 0.014571191, + 0.011101251, + 0.0007462454, + -0.016350977, + 0.01742653, + -0.03096058, + -0.01523701, + -0.016607061, + -0.014468757, + -0.0065493532, + -0.018194782, + 0.015006534, + 0.039283317, + -0.019257532, + -0.01903986, + -0.006155624, + 0.030243544, + 0.008822101, + -0.020179436, + -0.013687701, + -0.043508705, + 0.016632669, + -0.013303574, + -0.016325368, + 0.0188606, + -0.0016453409, + -0.012727384, + 0.005854725, + -0.0013548455, + 0.021050122, + 0.027119316, + -0.0002262744, + -0.009122999, + 0.00036051855, + -0.017144836, + 0.030089894, + 0.008834905, + 0.011120456, + -0.03190809, + 0.016607061, + -0.012490507, + -0.00034311283, + 0.011939926, + 0.008495593, + 0.008521202, + -0.017068012, + -0.014699233, + 0.0075736903, + 0.007618505, + -0.008265117, + -0.00918702, + 0.040256437, + 0.008591625, + 0.02323964, + 0.0109476, + -0.011991142, + 0.0037964482, + -0.0013764526, + 0.008124271, + 0.013239553, + -0.0077721556, + -0.019731287, + 0.02691445, + 0.020422716, + 0.031984918, + -0.038310196, + -0.0009251042, + 0.005364964, + -0.005006446, + -0.031370316, + -0.004567902, + -0.007701732, + -0.002986582, + -0.00413576, + 0.0041901777, + -0.0036620041, + 0.0020870862, + 0.015979653, + 0.035390835, + 0.013802938, + -0.0062100417, + -0.0079066, + -0.026530324, + -0.0088669155, + 0.0077209384, + -0.007804166, + -0.0036363956, + -0.012234422, + 0.0076313093, + 0.007080728, + -0.021575093, + -0.0007982625, + 0.022010436, + -0.0017189652, + -0.005726683, + -0.033316553, + -0.028809473, + -0.018783776, + 0.0065557556, + 0.0013556457, + 0.011722255, + -0.011658234, + -0.010397019, + 0.022253716, + 0.027016884, + 0.040154003, + -0.031523965, + -0.0037388294, + 0.018719755, + 0.011542995, + -0.0032506688, + 0.008469985, + -0.01937277, + -0.024443237, + -0.0075096693, + -0.019103881, + 0.02609498, + 0.016235739, + 0.054084983, + -0.004427056, + -0.03577496, + 0.017055208, + 0.001292425, + 0.007842579, + 0.013802938, + 0.0011843895, + -0.014481561, + -0.013713309, + 0.002469612, + 0.0009987283, + 0.021203771, + 0.0033451, + -0.016837535, + -0.0022279324, + -0.01912949, + 0.020000177, + -0.031088622, + -0.013028284, + 0.022304934, + 0.0052049113, + 0.012356062, + 0.0034571367, + -0.016184522, + -0.007151151, + -0.006818242, + 0.012388073, + -0.005006446, + -0.020909276, + 0.017260075, + -0.022420172, + -0.023201229, + -0.00021547085, + 0.01466082, + -0.018630126, + -0.015685158, + -0.025505986, + -0.006213243, + 0.014583996, + -0.00046975445, + 0.020819645, + -0.015838807, + -0.027452227, + -0.011542995, + -0.010064109, + -0.020025784, + 0.005979566, + -0.023841439 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 24, + "total_tokens": 24 + } +} +265 34464 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 70 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["What color is the desk?"]}HTTP/2.0 200 OK +Content-Length: 33508 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:27:41 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 100 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-p6w2b +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999995 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_0f58bb3fc96a4023b84851b4375c7dfc + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.014726514, + -0.0071365014, + 0.0019683642, + -0.024905318, + -0.01816564, + 0.0029745921, + -0.042025365, + -0.011350376, + 0.015494963, + -0.006342857, + 0.004730373, + 0.008112811, + -0.022121266, + 0.0067837704, + -0.014965867, + 0.00699163, + 0.021466194, + 0.010367768, + 0.007438842, + -0.021466194, + -0.044368505, + 0.01642718, + -0.010682707, + 0.009750489, + -0.022373216, + 0.013617931, + 0.023859724, + -0.005798014, + 0.0071365014, + 0.012849482, + 0.025043892, + -0.0020077315, + 0.0032375655, + -0.03648245, + -0.03144344, + 0.019450588, + 0.0027116186, + 0.00944185, + 0.019211235, + -0.021113463, + 0.0053161583, + 0.004629593, + 0.0036186408, + 0.003999716, + -0.002582494, + 0.012792793, + 0.015557951, + 0.012824287, + -0.0026029649, + 0.011312583, + 0.012427464, + 0.044368505, + -0.006308214, + -0.013454163, + 0.004210725, + -0.02459038, + 0.01408404, + 0.025522599, + -0.02571156, + -0.005259469, + 0.008534827, + 0.0007751418, + 0.0073569585, + 0.0065507162, + -0.012049539, + 0.004163484, + -0.010298482, + 0.00995205, + -0.012326684, + 0.013554944, + 0.025698964, + 0.035348672, + 0.022335423, + 0.019715136, + 0.023444006, + 0.0040028654, + 0.0074514397, + 0.011696808, + -0.017346801, + -0.009334771, + 0.0002572652, + 0.005684636, + -0.032174096, + -0.002036076, + 0.014978465, + 0.0061507444, + 0.006588509, + 0.012389672, + -0.031821363, + -0.010386664, + -0.014335991, + 0.029931733, + 0.029528612, + -0.0051964815, + -0.012836885, + 0.009252886, + 0.02540922, + 0.017535763, + 0.0073947506, + -0.029024713, + 0.005429536, + 0.020735536, + -0.023733748, + -0.0016660235, + -0.022310227, + -0.005873599, + 0.004465825, + 0.0014250957, + 0.020634755, + -0.02642962, + -0.035499845, + 0.018304212, + 0.02995693, + -0.01659095, + -0.0008865513, + -0.012950262, + 0.014613137, + -0.018593956, + -0.012055838, + -0.006966435, + 0.012257398, + 0.041974973, + 0.032728385, + -0.029553808, + 0.0382713, + 0.0067837704, + -0.016150035, + -0.0058798976, + -0.003628089, + 0.0044374806, + 0.010575628, + 0.01652796, + 0.0071616964, + 0.014663527, + -0.020433195, + 0.0098638665, + -0.0066326, + 0.034063723, + 0.005520868, + -0.020193843, + -0.0020502482, + 0.029478222, + -0.0032690594, + 0.001273138, + 0.0027368136, + 0.028243665, + 0.018329408, + -0.0145627465, + -0.017926287, + 0.009007235, + 0.0014652504, + -0.006213732, + 0.017573556, + 0.02678235, + 0.00095741235, + 0.024325833, + -0.025686366, + -0.0111425165, + -0.018694736, + -0.0014250957, + -0.019778123, + -0.0035556532, + 0.029075103, + -0.006027919, + 0.03345904, + 0.024628174, + 0.021718144, + 0.013328188, + -0.002443921, + 0.011306284, + -0.025169868, + 0.02673196, + -0.011444857, + 0.013995857, + 0.009126911, + 0.0138320895, + 0.021503985, + -0.0012581784, + -0.021831522, + 0.01336598, + -0.0148902815, + 0.014940672, + 0.0052783657, + 0.011986551, + 0.0068341605, + -0.012893573, + 0.016036658, + -0.02326764, + 0.018253822, + -0.008446645, + 0.015091842, + 0.01704446, + 0.0013188041, + -0.015482366, + -0.67280895, + -0.04918076, + 0.018493176, + -0.0070231236, + -0.0016408284, + 0.03393775, + 0.010374067, + 0.02592572, + -0.003026557, + -0.029100297, + 0.017271215, + 0.0066703926, + 0.01587289, + -0.007256178, + -0.0006956199, + -0.033811774, + 0.0033257483, + 0.019639552, + -0.00403121, + 0.0025935168, + -0.0019242729, + 0.015469768, + -0.008629309, + -0.0031052914, + 0.021781132, + 0.017397191, + 0.01791369, + -0.015948474, + -0.013895077, + -0.008245084, + -0.012301489, + 0.01331559, + -0.02469116, + -0.0074451407, + 0.040538855, + 0.00018354997, + -0.021151256, + 0.025182465, + -0.006506625, + 0.032476436, + -0.0037540642, + 0.011016541, + 0.0010204001, + -0.018518372, + -0.010437055, + -0.004714626, + 0.0130888345, + 0.0066011064, + 0.044116553, + -0.011955057, + 0.018845906, + -0.016288608, + 0.016805107, + 0.015318598, + 0.012515647, + 0.005164988, + 0.04414175, + 0.01985371, + 0.0035462051, + -0.003184026, + -0.008509632, + 0.018556163, + -0.02356998, + -0.015066647, + -0.017825507, + 0.0037981556, + -0.03408892, + -0.02587533, + -0.027991714, + -0.013529749, + 0.00612555, + 0.0043146545, + -0.014411576, + 0.020634755, + 0.030914342, + 0.01117401, + 0.020760732, + -0.018430188, + 0.007791573, + -0.010890566, + -0.010210299, + -0.0053571, + -0.018367201, + -0.026555596, + 0.029402638, + -0.021315023, + -0.013970662, + -0.018039664, + 0.01525561, + 0.006216882, + 0.022814129, + 0.030939536, + -0.0054169386, + -0.0012644771, + -0.0125534395, + 0.030284464, + 0.004342999, + 0.0009959923, + -0.009712697, + 0.00015924066, + 0.005098851, + -0.014827294, + 0.015583146, + 0.012767598, + 0.032224484, + -0.010840176, + -0.029830953, + 0.041849, + 0.013857285, + -0.012257398, + 0.02005527, + -0.025043892, + -0.032552022, + 0.002138431, + 0.01577211, + -0.03025927, + 0.054068603, + 0.005375996, + 0.010525238, + 0.003398184, + 0.01505405, + -0.001191254, + -0.0041004964, + -0.009422953, + 0.012597531, + -0.008150603, + -0.00883087, + -0.013844687, + -0.01612484, + 0.009712697, + 0.00653182, + 0.000116330324, + 0.01657835, + 0.0023084977, + -0.008389955, + -0.0077537806, + 0.016263412, + -0.019626953, + 0.006878252, + -0.011690509, + -0.01229519, + -0.006563314, + -0.012755, + -0.0089883385, + -0.008799376, + -0.01403365, + -0.035701405, + -0.007123904, + -0.020861512, + 0.010204, + -0.018770322, + -0.028520811, + -0.019425394, + 0.005010668, + 0.014487161, + -0.021100866, + -0.016817704, + -0.015293403, + -0.0055271666, + 0.010518938, + 0.0003253706, + 0.002409278, + -0.016956277, + 0.0045036175, + -0.0036627322, + -0.02786574, + -0.02015605, + 0.044746432, + -0.0056909346, + -0.015331196, + -0.011759795, + 0.0026360333, + -0.011281089, + -0.013605334, + -0.018102651, + -0.016049255, + -0.007224684, + -0.033232287, + -0.010109519, + -0.0134793585, + 0.0043304013, + 0.016490169, + -0.008673401, + 0.0056909346, + 0.037817787, + -0.0020045822, + 0.008515931, + 0.045250334, + -0.0074577383, + 0.013126628, + 0.007205788, + -0.011016541, + -0.005259469, + -0.0009432401, + 0.006802667, + 0.00050350756, + 0.0007310505, + -0.0036784792, + 0.0010093772, + -0.0052752164, + 0.020571768, + -0.009618215, + 0.0118605755, + -0.008648206, + 0.007527025, + -0.0122133065, + 0.01495327, + -0.0034013335, + 0.0022565327, + 0.036608424, + 0.0002501791, + -0.017838104, + 0.013378578, + -0.005470478, + 0.029150687, + -0.0031934741, + -0.02224724, + 0.010348872, + -0.023645567, + -0.015406781, + 0.007577415, + 0.013945467, + 0.030763172, + -0.014197418, + -0.01878292, + -0.01209363, + 0.037540644, + 0.015696524, + -0.0037414667, + -0.024678564, + -0.024514796, + -0.008024627, + -0.0021762236, + 0.0039209817, + -0.022751141, + 0.0039115334, + 0.004868946, + -0.018077457, + 0.005539764, + 0.0045477087, + 0.0035021137, + 0.036306083, + 0.023305433, + -0.020219037, + 0.019009674, + -0.006689289, + 0.018556163, + 0.026253255, + -0.025056489, + 0.016666533, + -0.024099078, + -0.0018786069, + -0.012389672, + 0.017901093, + 0.024628174, + -0.010065427, + 0.037061937, + -0.010033933, + 0.009347368, + 0.011350376, + -0.0032627606, + -0.009788282, + 0.0036816285, + -0.009926855, + 0.012786495, + -0.012578635, + -0.010859072, + 0.0018439636, + -0.0065129236, + -0.030939536, + -0.014361186, + -0.0016345297, + 0.012584934, + -0.0019683642, + 0.0025069087, + -0.008560022, + 0.008547425, + -0.0066451975, + 0.012339282, + 0.0055523617, + -0.005259469, + -0.021869315, + 0.02418726, + 0.0012148744, + -0.0004987835, + -0.01806486, + -0.009347368, + 0.014814696, + -0.012162916, + -0.0008715917, + 0.0084529435, + 0.024955709, + 0.004069003, + -0.00821359, + 0.0012298339, + -0.02367076, + 0.011986551, + 0.008207291, + 0.01321481, + -0.0009448148, + -0.009870166, + -0.010632317, + -0.03000732, + -0.009410356, + 0.006853057, + 0.024162065, + -0.0006842034, + -0.0014471414, + -0.014373783, + -0.0321489, + -0.0068089655, + 0.0020439494, + -0.0040564053, + 0.0077033904, + -0.013302993, + 0.0056122, + -0.03464321, + -0.015784707, + 0.027437422, + 0.018770322, + -0.0072183856, + -0.023771541, + 0.0005767307, + -0.007130203, + 0.06540638, + 0.026152475, + -0.009907958, + 0.017208228, + 0.012925067, + -0.006333409, + -0.018304212, + -0.00032340226, + -0.0043398496, + -0.009139509, + 0.012282593, + -0.0004940594, + -0.007130203, + 0.0025887927, + -0.012717208, + 0.00035666762, + 0.013328188, + 0.00038205952, + 0.017749922, + -0.031166293, + -0.011041736, + 0.011602326, + -0.009725294, + 0.00837106, + -0.010386664, + 0.020609561, + 0.005199631, + -0.0075396225, + 0.02259997, + -0.021541778, + -0.0031367852, + 0.024010895, + 0.0020266278, + -0.0058389558, + -0.008667101, + -0.017472776, + -0.017434983, + 0.008018329, + 0.00836476, + -0.006960136, + 0.023179457, + 0.0056247977, + 0.0036406866, + -0.021881912, + -0.0051964815, + 0.009460746, + -0.006081458, + 0.016464973, + -0.012629025, + -0.014147027, + 0.020773329, + -0.0039871186, + -0.019009674, + 0.0008629309, + 0.010078025, + 0.00035095934, + -0.021970095, + -0.02525805, + 0.001359746, + -0.022562178, + -0.0029919136, + 0.008018329, + 0.008679699, + 0.006588509, + -0.016162632, + -0.027739763, + -0.00089442474, + -0.00077553553, + 0.0016691729, + 0.0016644488, + -0.017901093, + -0.016767314, + -0.019223833, + -0.0020785925, + 0.033131506, + 0.029175883, + 0.024678564, + -0.035071526, + 0.0045729037, + 0.031141097, + 0.016301205, + -0.020067867, + 0.0050799544, + -0.005470478, + 0.005281515, + -0.0010440204, + 0.034315675, + -0.0109472545, + -0.00040705773, + 0.0152808055, + 0.03378658, + 0.008786778, + 0.020508781, + -0.015898084, + -0.007199489, + -0.006802667, + 0.02306608, + 0.019110454, + -0.02577455, + -0.019601759, + 0.010008738, + -0.025220258, + 0.0028958574, + -0.008245084, + -0.012440062, + 0.0063145123, + 0.014928075, + -0.00046886437, + -0.01652796, + 0.014235211, + 0.024766747, + -0.014839891, + -0.002393531, + -0.018644346, + 0.01296286, + 0.015797304, + 0.008037225, + 0.016502766, + -0.01714524, + -0.017397191, + 0.023947908, + -0.039077543, + 0.023532188, + 0.013907675, + -0.011048035, + -0.004765016, + 0.020269427, + -0.01898448, + -0.0037320186, + 0.009479642, + -0.001765229, + 0.028999517, + -0.028697176, + -0.0117346, + -0.020130854, + -0.017472776, + 0.024527393, + 0.02122684, + -0.013580139, + 0.0044532274, + -0.013920272, + 0.012792793, + -0.002102213, + -0.001168421, + -0.045930598, + -0.02566117, + -0.0098764645, + 0.019450588, + -0.022751141, + 0.023292836, + -0.006871953, + 0.015507561, + 0.001719563, + 0.011041736, + -0.0016140587, + -0.019916696, + -0.013277798, + -0.008112811, + 0.026656376, + 0.013907675, + 0.014638332, + 0.010701602, + -0.000071353206, + 0.0011731451, + 0.0003409207, + -0.016338998, + -0.0019825364, + -0.012440062, + -0.0013219535, + 0.008963143, + 0.016150035, + 0.006934941, + 0.0209245, + 0.013592736, + -0.0006782983, + 0.030989926, + -0.01672952, + -0.009561527, + -0.036633622, + -0.02612728, + 0.0079049505, + -0.014487161, + -0.020811122, + -0.0046768333, + -0.0041918284, + -0.009070222, + 0.016250815, + 0.002127408, + 0.0016053979, + -0.0037225704, + 0.032375656, + 0.0036910765, + 0.04169783, + -0.01652796, + 0.005139793, + 0.004853199, + -0.034517236, + -0.0049413815, + 0.010619719, + 0.0077789756, + 0.00826398, + 0.012515647, + 0.011671613, + -0.00806242, + 0.0003052933, + -0.0004527238, + 0.013769101, + 0.012383373, + -0.018379798, + -0.019097857, + -0.024829734, + -0.023393616, + -0.02826886, + -0.037112325, + 0.01873253, + -0.0030202582, + -0.041723024, + 0.018203432, + 0.0049476805, + -0.028394835, + -0.00068695913, + 0.0039934176, + 0.026958717, + 0.0035493544, + 0.005520868, + 0.01689329, + -0.01153304, + -0.001339275, + -0.00648143, + -0.01577211, + 0.0038265001, + 0.035399064, + 0.027286252, + -0.015129635, + 0.024703758, + 0.009618215, + -0.0044280323, + 0.010758292, + -0.0122133065, + -0.018304212, + -0.019677343, + 0.002184097, + -0.014928075, + 0.017737323, + -0.014701319, + 0.013378578, + -0.021970095, + -0.012307788, + 0.0009944176, + -0.0016817704, + -0.014348588, + 0.003480068, + -0.024225052, + 0.0234692, + 0.02786574, + 0.0027746062, + -0.016162632, + -0.0049193357, + -0.00959302, + -0.0004641403, + 0.011148815, + 0.016540559, + -0.008975741, + 0.017220825, + -0.005514569, + 0.008295475, + -0.031166293, + 0.00347062, + -0.0046673855, + 0.024199858, + -0.01280539, + -0.00026356397, + -0.012465257, + 0.01158343, + 0.029150687, + -0.012326684, + -0.0073317634, + 0.00131408, + -0.010115817, + 0.00617279, + 0.009196198, + -0.016666533, + -0.020886706, + 0.017271215, + -0.018329408, + 0.0017337352, + -0.027588593, + -0.009416655, + 0.019425394, + -0.020445794, + -0.016364193, + -0.0015140658, + 0.019488381, + 0.020030074, + 0.0042012767, + -0.008465541, + 0.027160278, + -0.00011416513, + -0.027689373, + 0.023242446, + -0.00053145835, + 0.010065427, + -0.011822783, + 0.015734317, + 0.005095701, + -0.033131506, + 0.028394835, + 0.0068089655, + -0.018430188, + -0.031720582, + 0.0055712583, + -0.019815916, + -0.0027541353, + -0.011822783, + -0.0012266845, + 0.0043807914, + 0.0168303, + 0.006878252, + -0.0019683642, + -0.0058767484, + -0.017749922, + 0.0025541494, + 0.00806242, + -0.010235494, + -0.0047114766, + 0.008673401, + -0.004979174, + 0.013403773, + -0.02597611, + -0.006903447, + -0.020647354, + 0.012755, + -0.01602406, + -0.0069223433, + -0.024779344, + -0.0044122855, + -0.011640118, + -0.00069837563, + -0.015646134, + -0.0027399631, + 0.0057161297, + 0.030334854, + -0.0030564761, + 0.009712697, + -0.008667101, + -0.0028690877, + -0.012351879, + -0.021781132, + -0.028445225, + -0.015935877, + 0.007413647, + 0.00095741235, + 0.0036910765, + -0.035600625, + -0.031141097, + 0.01000244, + 0.0063145123, + -0.026958717, + 0.015079245, + 0.0063963966, + 0.03504633, + -0.010361469, + -0.014273003, + 0.019778123, + -0.0024927366, + -0.016288608, + -0.023242446, + -0.009958348, + -0.002045524, + -0.026757156, + 0.0070546176, + -0.015016257, + -0.006383799, + -0.021768535, + 0.024174662, + -0.00398082, + 0.0034674704, + -0.010147312, + 0.009315874, + 0.008081316, + -0.0011196056, + 0.0123959705, + 0.047467496, + 0.022335423, + -0.0019179741, + -0.024955709, + -0.003867442, + -0.00010904738, + 0.03892637, + -0.005117747, + 0.0058515533, + 0.005577557, + -0.013605334, + -0.0056972336, + -0.027588593, + 0.007999432, + -0.0036721805, + 0.018505773, + 0.009479642, + -0.007256178, + -0.00030667114, + 0.02005527, + -0.0065759113, + -0.017951483, + -0.020659951, + -0.0010503192, + -0.027311448, + -0.0069538374, + 0.010367768, + -0.035247892, + 0.002853341, + -0.013542346, + 0.00087789044, + -0.02520766, + -0.03240085, + -0.01801447, + -0.001571542, + -0.03005771, + 0.02791613, + 0.0076341038, + -0.018417591, + -0.0067837704, + -0.017170435, + -0.015482366, + 0.00045036175, + -0.018342005, + -0.011249595, + -0.03383697, + -0.03000732, + 0.0011707831, + -0.0062515247, + -0.020672549, + 0.0014077742, + 0.0055901543, + 0.02663118, + 0.02087411, + 0.2332055, + 0.017346801, + 0.0050610583, + 0.0525569, + -0.0013219535, + 0.031216683, + 0.031367853, + 0.0025415518, + 0.0070294226, + 0.02781535, + 0.007432543, + -0.0074451407, + -0.006821563, + 0.009939452, + 0.010279586, + -0.013920272, + -0.033307873, + -0.022070875, + -0.0062011345, + 0.004793361, + 0.025031295, + -0.0026360333, + 0.011079528, + 0.0003480068, + 0.017246021, + 0.016666533, + -0.0029430983, + -0.0018959284, + 0.005382295, + 0.0003334409, + -0.008238785, + -0.017208228, + -0.002275429, + 0.003924131, + -0.00048776067, + -0.0025447013, + -0.012880975, + -0.002036076, + 0.019047467, + 0.0331567, + 0.015230415, + -0.016515363, + -0.03464321, + -0.0055712583, + -0.013139225, + -0.0025935168, + -0.012666818, + -0.001359746, + 0.006897148, + 0.008755284, + -0.01781291, + -0.002867513, + 0.0280673, + 0.023960505, + -0.01316442, + 0.0098764645, + 0.022184253, + -0.023632968, + 0.008629309, + -0.019047467, + -0.021718144, + 0.029075103, + -0.01500366, + 0.0077789756, + 0.0069538374, + -0.012685714, + -0.018959284, + -0.0014770605, + 0.02428804, + -0.018669542, + 0.0017699532, + 0.013580139, + 0.014713917, + -0.0043335506, + 0.004843751, + -0.009265484, + 0.022373216, + 0.0036658817, + 0.023305433, + 0.0032533125, + -0.009284381, + -0.01408404, + -0.021718144, + 0.021466194, + -0.0074640373, + -0.014386381, + 0.007035721, + -0.0027998013, + 0.035071526, + -0.003306852, + -0.0038170519, + 0.010953553, + 0.00067554263, + 0.002092765, + 0.016490169, + 0.021516584, + 0.0017101149, + 0.029327054, + -0.00847184, + 0.00073734927, + -0.03224968, + -0.002454944, + 0.008408852, + -0.005234274, + -0.019563965, + 0.017787714, + -0.00045744787, + -0.0047083274, + 0.031115903, + -0.008994637, + -0.0014148602, + -0.015910681, + 0.019312015, + -0.007980536, + -0.00070703647, + 0.0023210952, + -0.0011164562, + -0.018228628, + -0.026555596, + -0.020811122, + 0.0016439778, + -0.031241877, + -0.012099929, + 0.00842145, + -0.011287388, + -0.013240005, + 0.017346801, + 0.015117037, + -0.00043540218, + -0.036910765, + 0.008604114, + 0.007016825, + 0.031241877, + -0.010015037, + -0.017409788, + 0.009725294, + 0.005520868, + 0.0039146827, + 0.0060688606, + -0.005986977, + -0.01572172, + -0.020911902, + 0.012578635, + -0.018140445, + 0.017346801, + -0.007596311, + -0.0030690734, + -0.012698311, + -0.012326684, + -0.021390608, + -0.0023415661, + -0.013038445, + -0.0050799544, + 0.008711193, + 0.010991346, + -0.008660803, + -0.004276862, + -0.010997645, + -0.013252603, + 0.019563965, + 0.003842247, + 0.038649227, + 0.013038445, + -0.0077033904, + -0.010430756, + 0.013491956, + -0.1592328, + 0.028697176, + 0.008434047, + -0.0030926939, + -0.0134793585, + 0.009347368, + 0.013605334, + 0.02642962, + -0.008837168, + 0.032350462, + 0.004818556, + -0.009844971, + -0.032677997, + -0.014096637, + -0.0033635409, + 0.0145501485, + 0.001466825, + -0.017901093, + 0.013328188, + 0.0065759113, + 0.0076530003, + -0.02137801, + 0.0031383599, + 0.002872237, + 0.0076530003, + -0.004862647, + -0.025069088, + 0.032224484, + 0.00449102, + -0.0141848205, + -0.005398042, + -0.010241793, + -0.0057791173, + 0.021264633, + 0.0012723507, + 0.008049822, + 0.00836476, + 0.0008582068, + -0.008018329, + 0.009844971, + -0.0030706483, + 0.026706766, + -0.0039934176, + -0.0032170946, + -0.0145501485, + 0.007287672, + 0.017674336, + 0.022763738, + 0.007230983, + -0.018102651, + 0.019123053, + -0.0362305, + -0.018770322, + -0.00801203, + 0.023506993, + 0.0156209385, + 0.016981471, + 0.0034769187, + -0.0027210668, + 0.0010109519, + -0.008226188, + -0.031015122, + -0.0029509717, + 0.0022329125, + 0.0034611716, + -0.0031115902, + 0.0064940276, + -0.00267855, + -0.014159625, + 0.010682707, + -0.008427748, + -0.011942459, + 0.003892637, + -0.026958717, + 0.006827862, + 0.019979684, + -0.015646134, + -0.0035115618, + -0.005375996, + -0.0038453965, + 0.009511136, + 0.038649227, + -0.003810753, + -0.0008645056, + -0.007955341, + -0.0002421088, + -0.013542346, + -0.00852223, + -0.009611917, + -0.013958065, + 0.007344361, + -0.034265283, + 0.012282593, + -0.024716357, + 0.02995693, + 0.009215094, + -0.012874677, + -0.00006579258, + 0.0010204001, + -0.015847694, + -0.010928358, + -0.016616143, + -0.029553808, + 0.0199041, + 0.020395404, + 0.031065512, + -0.010871669, + 0.0122448, + 0.037011545, + 0.008106511, + -0.025648573, + 0.038548447, + 0.016061852, + 0.024766747, + 0.02587533, + 0.01388248, + -0.006525521, + -0.03628089, + -0.0027761809, + -0.006153894, + 0.051498707, + 0.0014660377, + -0.020370208, + 0.022310227, + -0.0033698396, + -0.0075144274, + -0.091004565, + -0.0043807914, + 0.008282877, + 0.015066647, + 0.005675188, + 0.02535883, + 0.014046247, + 0.02990654, + 0.009366265, + 0.030863952, + -0.008465541, + -0.004097347, + -0.004506767, + 0.00026139876, + 0.0014148602, + -0.009933153, + -0.002760434, + -0.02811769, + -0.031720582, + 0.012446361, + -0.003530458, + -0.015835097, + 0.006408994, + -0.0113251805, + 0.0013644701, + -0.02316686, + -0.03403853, + 0.014298198, + 0.014701319, + 0.0149028795, + 0.013000652, + -0.0152682075, + -0.009970946, + -0.00893165, + -0.036406863, + -0.0017069655, + -0.0073506595, + -0.007476635, + 0.009555227, + -0.034013335, + 0.0052941125, + 0.0152808055, + 0.003480068, + -0.043663044, + -0.0010770889, + 0.023506993, + -0.019400198, + 0.00076490635, + -0.00091489573, + -0.012414867, + 0.009189899, + 0.017409788, + 0.00028009823, + -0.016213022, + 0.03383697, + -0.011312583, + 0.019979684, + 0.024628174, + -0.019790722, + 0.0028942828, + 0.0034737692, + 0.034819577, + 0.0028753865, + 0.035499845, + 0.0007987622, + -0.013743906, + -0.027487813, + 0.0059460346, + 0.025736757, + -0.041874193, + -0.005627947, + 0.017737323, + -0.028873542, + -0.00052988366, + -0.012540842, + 0.00081883953, + -0.027538203, + 0.0042422186, + 0.009630812, + -0.0022029933, + -0.020760732, + -0.027613789, + -0.012269995, + -0.020697745, + 0.00076254434, + 0.028445225, + -0.02771457, + -0.009265484, + 0.020382805, + -0.022310227, + -0.014260406, + 0.044620454, + 0.011375571, + -0.020458391, + 0.0030533266, + 0.020937096, + 0.0009463895, + 0.00786086, + 0.010235494, + -0.015331196, + -0.014310796, + -0.003240715, + -0.055882648, + 0.010493743, + -0.012679415, + -0.03892637, + 0.0028643636, + 0.013504554, + -0.0072435807, + -0.017258618, + -0.014096637, + -0.007760079, + 0.00093457935, + 0.011470052, + -0.01010322, + -0.0056877853, + -0.009164704, + 0.0109472545, + 0.020370208, + 0.0039052346, + 0.023381017, + -0.0029525463, + -0.014877684, + 0.011388169, + -0.0030486025, + 0.007067215, + -0.02786574, + 0.016981471, + -0.03388736, + -0.027588593, + -0.019375004, + -0.021466194, + 0.015646134, + -0.01393287, + 0.01577211, + 0.036961157, + -0.021264633, + -0.020420598, + -0.009372563, + 0.037717007, + 0.01515483, + -0.027790153, + -0.004122542, + -0.029982124, + 0.017598752, + -0.015381586, + 0.0015573698, + 0.022562178, + -0.0138320895, + -0.0029871897, + 0.015217817, + -0.0074640373, + 0.022184253, + 0.028747566, + 0.00898204, + -0.0044815717, + -0.009706398, + -0.019072663, + 0.0209245, + -0.0039430275, + 0.010468548, + -0.036961157, + 0.006062562, + 0.0047083274, + 0.0042422186, + 0.023305433, + 0.007199489, + 0.0023714853, + -0.0018282167, + -0.010159909, + -0.0015400482, + -0.010657512, + -0.001678621, + -0.0000913321, + 0.04179861, + -0.007873457, + 0.028394835, + 0.0011172435, + 0.0021951199, + -0.003204497, + -0.0053445026, + 0.028571201, + -0.00075742655, + -0.012377074, + -0.03134266, + 0.0079175485, + 0.037893374, + 0.012925067, + -0.02612728, + 0.0004409136, + 0.004903589, + 0.00083616114, + -0.024149468, + -0.0032060717, + -0.016855497, + -0.0062231803, + 0.003933579, + -0.008018329, + -0.0077537806, + -0.01316442, + 0.014474563, + 0.047366716, + 0.011929862, + -0.0039682225, + -0.003703674, + -0.040992368, + -0.01204324, + 0.008673401, + -0.007363257, + -0.01776252, + -0.00444063, + 0.010751992, + 0.0039871186, + -0.0008456093, + -0.021503985, + 0.018719932, + 0.002780905, + -0.0031304865, + -0.0469384, + -0.027084691, + -0.023028286, + 0.022612568, + 0.0064215916, + 0.000785771, + 0.0042926087, + 0.009164704, + 0.021000085, + 0.02127723, + 0.042226925, + -0.030612001, + -0.0038642928, + 0.031594608, + 0.0131014325, + 0.0014691871, + 0.0037918568, + -0.008874961, + -0.010015037, + -0.009063924, + -0.008679699, + 0.028042104, + -0.0011077954, + 0.06092166, + -0.00021376436, + -0.015646134, + 0.021844119, + 0.0013479359, + 0.006802667, + 0.032627605, + -0.01565873, + -0.012975457, + -0.018140445, + -0.0055492125, + 0.0007235707, + 0.021390608, + 0.005990126, + -0.017636543, + -0.0016723223, + -0.022587374, + 0.03204812, + -0.035852574, + -0.009555227, + 0.01076459, + -0.0109598525, + 0.0022833026, + 0.010997645, + -0.021806326, + -0.0046106963, + -0.004821705, + 0.0018770321, + -0.0022896014, + -0.01005283, + 0.028596396, + -0.018820712, + -0.020659951, + -0.00760261, + 0.008849766, + -0.03388736, + -0.021894509, + -0.020067867, + 0.00003907203, + 0.012610129, + 0.0071868915, + 0.01672952, + -0.019992283, + -0.022751141, + -0.01153304, + -0.0073947506, + -0.014373783, + -0.006169641, + -0.020496184 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 6, + "total_tokens": 6 + } +} +610 1664 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 408 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the desk is orange.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What color is the desk?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 839 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:27:44 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 453 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999925 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_c6d0c31912e54f18b7fc92ade575cece + +{ + "id": "chatcmpl-ERDYNXYKFkdyW1AYPTGPohMXVJrvz", + "object": "chat.completion", + "created": 1790155663, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "The color of the desk is orange.", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 72, + "completion_tokens": 8, + "total_tokens": 80, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_0b80e335b8" +} diff --git a/vectorstores/inmemory/testdata/TestInMemoryAsRetrieverWithMetadataFilterNotSelected.httprr b/vectorstores/inmemory/testdata/TestInMemoryAsRetrieverWithMetadataFilterNotSelected.httprr new file mode 100644 index 000000000..2c9373995 --- /dev/null +++ b/vectorstores/inmemory/testdata/TestInMemoryAsRetrieverWithMetadataFilterNotSelected.httprr @@ -0,0 +1,9416 @@ +httprr trace v1 +492 168033 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 296 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["The color of the lamp beside the desk is black.","The color of the lamp beside the desk is blue.","The color of the lamp beside the desk is orange.","The color of the lamp beside the desk is purple.","The color of the lamp beside the desk is yellow."]}HTTP/2.0 200 OK +Content-Length: 167076 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:43:15 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 109 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6659cb4779-rnb7h +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999941 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_8b50bc6891954abfbaf484bf4dde29dd + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.01577385, + -0.0072296807, + 0.0065341513, + -0.021912377, + -0.006553294, + 0.0037105556, + -0.01824968, + -0.033232283, + 0.011862292, + -0.017496722, + 0.019436548, + 0.009731036, + -0.0045847534, + -0.0013471901, + -0.016896907, + -0.00010548602, + 0.03307914, + 0.011607052, + 0.026468417, + -0.016514046, + -0.022308, + 0.018185869, + -0.008920648, + 0.011626194, + -0.020878654, + -0.010196849, + 0.008014545, + -0.016654428, + 0.0024199968, + 0.015505847, + 0.010509518, + -0.018236918, + 0.012238772, + -0.025102882, + -0.035759162, + 0.015595181, + 0.0045209434, + -0.0034936012, + 0.017062813, + -0.018619778, + -0.0006265351, + 0.009845894, + 0.0032798375, + -0.007835876, + -0.008984458, + 0.012130294, + 0.019538643, + 0.0072871097, + -0.017586054, + 0.011638957, + 0.003598888, + 0.019181307, + -0.018096536, + -0.018734636, + 0.011192286, + -0.035248682, + 0.0039466526, + 0.017675389, + 0.0057237633, + -0.008180451, + -0.0126024885, + -0.016922431, + 0.0041348925, + -0.014050977, + 0.004409276, + -0.000938008, + -0.009539605, + 0.004303989, + 0.00019840944, + 0.0054972377, + 0.021325326, + 0.038005278, + 0.006368245, + 0.019359974, + 0.025077358, + 0.009265222, + -0.013770213, + 0.023418296, + -0.004466705, + -0.0031474316, + 0.0009906513, + -0.008735598, + -0.03073093, + -0.0048080888, + 0.0144338375, + -0.0017388244, + -0.009628939, + 0.00431037, + -0.034993444, + -0.0030772407, + -0.011262477, + 0.03073093, + 0.026596038, + -0.012111152, + 0.00066123187, + 0.014803936, + 0.011313525, + 0.029709969, + 0.015735563, + -0.035350777, + 0.014931556, + 0.004524134, + -0.042446457, + 0.0029831207, + -0.024745544, + -0.02059789, + 0.0024790212, + 0.003978558, + 0.026162129, + -0.020559605, + -0.022256952, + 0.023903253, + 0.046683446, + -0.023035435, + -0.0019318499, + -0.021044562, + 0.012870491, + -0.028306147, + -0.017981678, + -0.006052385, + 0.0065245796, + 0.051175676, + 0.01799444, + -0.015225083, + 0.037060887, + -0.0001232332, + -0.008914267, + -0.028969772, + -0.0042178454, + 0.015684515, + -0.0063395305, + 0.01730529, + 0.0020706367, + 0.01350221, + 0.007274348, + -0.0010265445, + -0.0144338375, + 0.02731071, + -0.005950289, + -0.019411024, + 0.010815807, + 0.032313418, + -0.016067376, + 0.0039307005, + -0.006546913, + 0.034993444, + 0.015978042, + -0.003972177, + -0.020380937, + -0.005615286, + 0.0032479325, + -0.011256096, + 0.003187313, + -0.0035765544, + 0.015416513, + 0.0052515687, + -0.0071722516, + 0.005302617, + -0.027234137, + 0.001990874, + -0.019436548, + -0.006451198, + 0.030143877, + -0.011875054, + 0.04354399, + 0.027872238, + 0.0016104067, + -0.002837953, + -0.016258806, + -0.002268448, + 0.0006664164, + 0.025166692, + -0.012985349, + 0.032313418, + -0.017586054, + 0.0121941045, + 0.0077848285, + -0.0018106108, + -0.016360901, + 0.004367799, + -0.02491145, + -0.003314933, + 0.016207758, + 0.004587944, + 0.006033242, + -0.00506971, + 0.02547298, + -0.008646265, + 0.014880508, + -0.004852756, + 0.023801155, + 0.025945174, + -0.02160609, + -0.033538572, + -0.68118525, + -0.043952376, + 0.020074647, + -0.0036339834, + 0.0017978487, + 0.02464345, + 0.0067192004, + 0.015442037, + 0.0057173823, + -0.01629709, + 0.011811243, + 0.005442999, + 0.011077428, + -0.013566021, + -0.0060491944, + -0.02243562, + -0.0033851243, + 0.022205904, + -0.002155185, + -0.015480323, + 0.0005595345, + 0.0069297734, + -0.017649865, + -0.011696386, + 0.021963425, + 0.009029125, + 0.017445672, + -0.00071148225, + -0.017394625, + -0.0018536826, + -0.016845858, + 0.015122986, + -0.020827606, + -0.013023635, + 0.04696421, + -0.011415621, + -0.007070156, + 0.024758307, + 0.008799409, + 0.026417369, + -0.009635321, + -0.0017547769, + 0.01204096, + -0.030935122, + -0.013808499, + 0.010694568, + 0.015071939, + -0.006680914, + 0.0321858, + 0.0014157859, + 0.019500358, + -0.03187951, + 0.0051048053, + 0.00994799, + 0.007893305, + 0.0015099058, + 0.04234436, + 0.00076292915, + 0.0009435914, + 0.007210538, + 0.007133966, + 0.0022174, + -0.004664516, + -0.016194995, + -0.016628904, + -0.0009108887, + -0.038209468, + -0.015850421, + -0.018415585, + -0.00071227987, + -0.0053377124, + 0.0041859406, + -0.015850421, + 0.02382668, + 0.02027884, + -0.005152663, + 0.030756453, + -0.009029125, + 0.00024207945, + -0.0021583757, + 0.011141238, + -0.014446599, + -0.03111379, + -0.017318053, + 0.029633395, + -0.021695424, + -0.016246043, + -0.025421932, + 0.016105661, + -0.0045751818, + 0.025000785, + -0.0013774999, + -0.016105661, + -0.0081357835, + -0.013795737, + 0.03614202, + 0.002204638, + 0.0030086448, + 0.0034457438, + 0.0059470986, + -0.0026305702, + -0.015978042, + -0.0045177527, + -0.0000015173586, + 0.026264224, + -0.012213247, + -0.027361758, + 0.028408242, + 0.0111795245, + -0.015926993, + 0.025077358, + -0.0111795245, + -0.009916085, + 0.017662628, + 0.011989912, + -0.027846714, + 0.04821489, + 0.0024247826, + 0.018709112, + -0.008678169, + 0.0065915803, + 0.024822118, + -0.009156745, + -0.008295309, + -0.0017834915, + -0.013195923, + -0.008907885, + -0.012442963, + -0.044207618, + 0.0014556672, + 0.0031649794, + 0.009750179, + 0.01679481, + 0.006757486, + 0.008646265, + 0.0035574113, + 0.010949808, + -0.021618852, + 0.024439257, + -0.005797145, + -0.011332668, + -0.0010289374, + -0.026008984, + 0.013578783, + 0.0033978862, + -0.034253243, + -0.03461058, + -0.006119386, + -0.012328105, + 0.015352703, + -0.023813918, + -0.012315343, + -0.039255954, + 0.009903323, + 0.015620705, + -0.016526807, + -0.02211657, + -0.005430237, + -0.013285256, + 0.029837588, + 0.016628904, + 0.0011182715, + 0.001812206, + -0.0007577446, + -0.0104329465, + -0.0216699, + -0.008295309, + 0.0413234, + -0.0007465778, + -0.026442893, + -0.021133894, + 0.0010066038, + -0.0039275098, + -0.008212356, + -0.015161272, + -0.019972552, + -0.0062629585, + -0.015071939, + 0.0034010767, + -0.009437509, + 0.01850492, + 0.017164908, + 0.009986276, + -0.017407387, + 0.04739812, + 0.006999965, + 0.016501283, + 0.0028507148, + 0.0015226678, + -0.0018473015, + -0.012525917, + -0.010254278, + 0.002959192, + -0.0092779845, + 0.009928847, + 0.012149437, + 0.010656281, + 0.011211429, + 0.0023817108, + -0.0021950663, + 0.00944389, + -0.011351812, + 0.017535007, + -0.014280694, + 0.00602048, + -0.026876802, + 0.017905105, + -0.010694568, + 0.0005623262, + 0.026442893, + 0.004367799, + -0.023979824, + -0.0032096466, + -0.007574255, + 0.016143948, + -0.00589286, + -0.024311636, + 0.002935263, + 0.0020339459, + -0.0123344865, + 0.0011836768, + 0.014791174, + 0.023520391, + -0.014076501, + -0.0037616035, + 0.0016383235, + 0.032338943, + 0.01761158, + -0.0070254887, + -0.018173108, + -0.023035435, + -0.005101615, + -0.012034579, + 0.010700949, + -0.032543134, + -0.006077909, + 0.0056408104, + -0.0320837, + 0.022308, + 0.011938864, + -0.011319906, + 0.03517211, + 0.025613362, + 0.0048878514, + 0.0039370814, + -0.0013487854, + 0.016335377, + 0.011709148, + -0.017854057, + 0.006617104, + -0.012525917, + 0.009424747, + -0.0034010767, + 0.015658991, + 0.039255954, + -0.0083655, + 0.036780123, + 0.0015936565, + 0.017101098, + 0.023405533, + -0.026085556, + -0.0063714352, + 0.0058450024, + -0.0057684304, + 0.013049159, + -0.0009427938, + -0.0054717134, + -0.0018058249, + 0.0050984244, + -0.009386461, + -0.017420148, + -0.0018329442, + 0.02876558, + -0.007299872, + 0.02674918, + -0.010471232, + -0.0052707116, + -0.004361418, + 0.0308075, + 0.011422003, + -0.008097498, + -0.026111081, + 0.014816698, + -0.0011900578, + -0.0047729933, + -0.030118352, + -0.023048198, + 0.0177392, + -0.0006349102, + 0.009979894, + 0.008378262, + 0.009533225, + 0.029199488, + -0.0060842903, + 0.0076189223, + -0.02579203, + 0.0057716207, + 0.007880543, + 0.01660338, + 0.002325877, + -0.004568801, + -0.018275203, + -0.032134753, + -0.015875945, + 0.011824006, + 0.009845894, + -0.006744724, + 0.008422929, + -0.01013942, + -0.028740056, + -0.011492194, + -0.0005914396, + 0.00079363777, + -0.013770213, + -0.005430237, + -0.002332258, + -0.029250536, + 0.004530515, + 0.034431912, + 0.020802082, + 0.005232426, + -0.010113896, + -0.012034579, + -0.00880579, + 0.077235706, + 0.0249625, + 0.008052831, + 0.010094753, + -0.002775738, + -0.011562385, + -0.028586911, + 0.011983531, + -0.01324697, + -0.0065915803, + 0.01660338, + -0.026060032, + 0.001767539, + 0.004485848, + 0.005165425, + -0.006680914, + 0.0071148225, + -0.0013128922, + 0.033793814, + -0.020138457, + 0.0061321477, + 0.0017563722, + -0.0140254535, + 0.0123344865, + 0.0037296985, + -0.006483103, + 0.007529588, + -0.010228754, + 0.015710039, + -0.011568765, + 0.00899722, + 0.009737416, + -0.007567874, + -0.006572437, + -0.017573293, + 0.0024471162, + -0.0017946583, + 0.0056248577, + 0.010145801, + -0.014650792, + 0.03606545, + 0.004460324, + 0.012787538, + -0.0068851067, + -0.02142742, + 0.007076537, + -0.014012692, + 0.020546842, + -0.011989912, + -0.018173108, + 0.026315272, + 0.007357301, + -0.015263368, + 0.0059215743, + 0.010720092, + 0.0035893165, + -0.010956189, + -0.01807101, + -0.007861401, + 0.00093880564, + 0.000978687, + -0.007331777, + 0.0024423304, + -0.005494047, + -0.015033652, + -0.008659027, + 0.0038636997, + -0.0031043598, + -0.017981678, + -0.0034616962, + 0.014625268, + -0.012659918, + -0.021874093, + 0.0079954015, + 0.027285187, + 0.008544168, + 0.017624341, + -0.024311636, + -0.01781577, + 0.041655213, + -0.0004343073, + -0.0077401614, + -0.0038668902, + -0.0029879066, + -0.0070382506, + 0.0010345208, + 0.025957936, + -0.023494868, + -0.014408314, + -0.010560567, + 0.03236447, + -0.0018935638, + 0.013068303, + -0.005293045, + -0.013770213, + -0.010343612, + 0.029607872, + 0.0084612155, + -0.009679987, + 0.005293045, + 0.003605269, + -0.024783831, + -0.00066163065, + -0.015442037, + 0.015799373, + 0.01425517, + 0.02851034, + 0.0034553153, + -0.017968915, + 0.013195923, + 0.0070127267, + -0.009450272, + -0.012557821, + -0.0038987952, + 0.004734707, + 0.0068276776, + -0.006065147, + 0.014357266, + -0.008722836, + -0.027157566, + -0.0015202749, + -0.040838443, + 0.027157566, + 0.0017005383, + 0.010675425, + 0.0017101099, + 0.027616998, + -0.005755668, + -0.013259732, + 0.013323543, + -0.009131221, + 0.020648938, + -0.010649901, + -0.017330814, + -0.033946957, + -0.025485741, + 0.033538572, + 0.0022923767, + -0.01604185, + -0.0048814705, + 0.011626194, + 0.012762014, + 0.009839512, + 0.0026911898, + -0.03529973, + -0.023035435, + -0.0055801906, + 0.0040072724, + -0.007070156, + 0.016935192, + -0.00957151, + 0.0055546667, + -0.009456652, + 0.011071047, + -0.001292154, + -0.012666299, + -0.031905036, + -0.025562314, + 0.03047569, + 0.016743762, + 0.017356338, + -0.0026401416, + 0.0038828426, + 0.0016718238, + -0.005666334, + 0.0028826199, + -0.00893341, + 0.0018361347, + -0.030118352, + 0.014497648, + 0.0138850715, + -0.0028491195, + 0.023941537, + -0.005545095, + 0.012436583, + 0.013400114, + -0.0042306078, + -0.00003614242, + -0.026442893, + -0.027412806, + 0.007638065, + -0.0001354967, + -0.0076827323, + -0.0018808017, + -0.0001483584, + -0.018594254, + 0.01754777, + 0.0029225012, + -0.008008163, + 0.0037616035, + 0.03338543, + -0.0009826751, + 0.034304295, + -0.0045528486, + -0.002211019, + -0.0052770926, + -0.026902325, + -0.0035223158, + 0.013463925, + 0.0068787253, + 0.007236062, + 0.005570619, + 0.011906959, + -0.024860403, + 0.01577385, + 0.01286411, + 0.03149665, + 0.008537787, + -0.009207793, + -0.01976836, + -0.031011693, + -0.036014404, + -0.03662698, + -0.03226237, + 0.013336305, + 0.0022317572, + -0.031598747, + 0.021542279, + -0.008225118, + -0.020457508, + 0.008040069, + 0.011530479, + 0.029122915, + 0.0008414953, + 0.008907885, + 0.02160609, + -0.008595216, + -0.008659027, + 0.008320833, + -0.011402859, + -0.0067766295, + 0.019270642, + 0.019500358, + -0.020227792, + 0.024809355, + 0.012723728, + 0.011760196, + 0.022091046, + -0.009373699, + -0.0033532192, + -0.005289855, + 0.010777521, + -0.020776559, + 0.011868672, + -0.026136605, + 0.005848193, + -0.037290603, + 0.0022923767, + -0.0024168063, + -0.010420185, + -0.014663554, + -0.0056535723, + -0.03338543, + 0.015327179, + 0.021631613, + 0.008391025, + 0.006250196, + -0.0068978686, + -0.008384643, + -0.0032176226, + -0.010483994, + 0.032721803, + 0.00030868122, + 0.0015354297, + 0.006476722, + -0.00128338, + -0.010196849, + -0.008257023, + -0.003212837, + 0.025370883, + -0.0034489343, + -0.0022174, + -0.024132969, + 0.008148545, + 0.038617853, + -0.01653957, + -0.0007577446, + -0.002136042, + -0.0054334276, + 0.0027214994, + 0.006680914, + 0.0018345395, + -0.015199559, + 0.018607017, + -0.024069158, + -0.012245152, + -0.028050907, + -0.0036084594, + 0.008193213, + -0.015607943, + -0.005248378, + -0.028050907, + 0.014982604, + 0.00004454242, + -0.0038381757, + -0.017394625, + 0.031037217, + 0.005107996, + -0.018594254, + 0.01939826, + 0.00013669314, + 0.015901469, + 0.002268448, + 0.014318979, + 0.004240179, + -0.02515393, + 0.030654358, + 0.0021583757, + -0.03529973, + -0.027080994, + -0.008907885, + -0.0111795245, + 0.0012618441, + -0.005031424, + 0.009335414, + -0.0021902807, + 0.013157636, + -0.020636177, + 0.0005794752, + -0.005924765, + -0.026340798, + 0.018147584, + 0.020623414, + -0.020891417, + -0.017522246, + 0.0090099815, + -0.011173143, + 0.0013695236, + -0.027361758, + -0.008499501, + -0.012647156, + 0.01863254, + 0.013221446, + -0.01933445, + -0.0039434624, + -0.012321725, + -0.012423821, + 0.0033276952, + -0.0021934712, + 0.014370028, + -0.0026991658, + -0.0012474868, + -0.024579639, + 0.0142934555, + -0.021465708, + 0.013936119, + 0.0016135972, + -0.019755598, + -0.017968915, + -0.002136042, + 0.0042050835, + -0.004594325, + -0.004811279, + -0.030424641, + -0.018351777, + 0.0027023565, + -0.003225599, + -0.0027932858, + 0.0017850867, + 0.0081357835, + 0.018262442, + -0.0056535723, + -0.015480323, + 0.020546842, + 0.0007437861, + -0.0015936565, + -0.018045487, + -0.017841296, + -0.008403786, + -0.009297127, + 0.013936119, + 0.0038892238, + 0.004556039, + -0.008327214, + 0.026442893, + -0.016922431, + 0.004916566, + -0.004125321, + -0.022997148, + -0.00071307755, + 0.02142742, + 0.0200236, + 0.031343505, + 0.010069229, + -0.008129403, + -0.02313753, + -0.005545095, + 0.009469414, + 0.037111938, + -0.012513154, + 0.0149698425, + 0.009431128, + -0.01033085, + 0.0013926547, + -0.03098617, + 0.0075423503, + 0.011683623, + 0.021312563, + 0.005596143, + -0.0074849213, + 0.011989912, + 0.028586911, + -0.0028507148, + -0.022780195, + -0.0014907627, + -0.005360046, + -0.03504449, + 0.0014046192, + 0.009533225, + -0.028740056, + 0.0076061604, + -0.023673536, + -0.004169988, + -0.02344382, + -0.007523207, + -0.024796592, + -0.00880579, + -0.03392143, + 0.028791104, + 0.024554115, + -0.009552367, + 0.0088696, + -0.028535863, + -0.0027470235, + -0.007006346, + -0.009156745, + -0.00969275, + -0.026570512, + -0.006623485, + -0.007861401, + 0.0006995179, + -0.031649794, + -0.005564238, + 0.006540532, + 0.0069170115, + 0.020368174, + 0.23420848, + 0.008754741, + -0.013591545, + 0.032134753, + -0.01812206, + 0.025077358, + 0.02376287, + -0.015875945, + 0.028484816, + 0.036652505, + -0.021657137, + 0.0006440829, + 0.00089174573, + -0.0018345395, + 0.011989912, + -0.013030016, + -0.03376829, + -0.002338639, + -0.0014357265, + -0.0090801725, + 0.01685862, + 0.002649713, + 0.009169507, + 0.00033121413, + 0.028995296, + 0.015697276, + -0.0069042495, + 0.0036116499, + 0.004476276, + 0.01178572, + -0.0012068079, + -0.018721875, + 0.004364609, + -0.0060619568, + 0.002522093, + -0.0029065486, + -0.0067383433, + 0.003219218, + 0.009386461, + 0.038617853, + 0.006058766, + 0.0062629585, + -0.024873165, + -0.008550549, + 0.004785755, + 0.00849312, + -0.015735563, + -0.0067383433, + 0.021950664, + 0.015046414, + -0.010152182, + -0.0061449097, + 0.044513904, + 0.023214104, + -0.011007237, + 0.021823043, + 0.033615146, + -0.011268858, + 0.025715457, + -0.010349994, + -0.0151102245, + 0.023673536, + -0.019883217, + 0.004594325, + 0.019155784, + -0.0015721206, + -0.015799373, + 0.0051399013, + 0.021912377, + -0.022780195, + 0.011332668, + 0.0024550925, + 0.0077146376, + 0.0018042297, + -0.0057173823, + -0.019653501, + 0.022716384, + -0.006128957, + 0.027897762, + 0.006508627, + -0.016360901, + -0.008129403, + -0.007644446, + 0.01799444, + -0.006700057, + -0.008914267, + -0.0018329442, + 0.015684515, + 0.022831243, + -0.0068659633, + 0.0041029872, + -0.0029575967, + 0.0016925621, + 0.010273421, + 0.030373594, + 0.022550479, + -0.005360046, + 0.007363682, + -0.026111081, + -0.000995437, + -0.034942392, + -0.035657067, + 0.004214655, + -0.017190432, + -0.00912484, + 0.007248824, + -0.0009746988, + 0.0015107034, + 0.033666193, + -0.0004159619, + 0.0040710825, + -0.011996293, + 0.0083335955, + -0.008308071, + 0.009003601, + -0.0061576716, + 0.013961643, + -0.013234208, + -0.017101098, + -0.018747399, + -0.0034648867, + -0.020687224, + 0.0017866819, + -0.006700057, + -0.000046710964, + -0.019857693, + -0.0027342616, + -0.0025045453, + 0.007261586, + -0.042778272, + 0.036473837, + -0.0046868497, + 0.02136361, + -0.00008260413, + -0.005417475, + 0.011906959, + 0.00017288541, + -0.0077210185, + -0.00047059925, + -0.008129403, + 0.001628752, + 0.0017404197, + 0.00988418, + -0.0052579497, + 0.0014756079, + -0.0066745332, + 0.005886479, + -0.02782119, + -0.02718309, + -0.024298875, + -0.025396409, + -0.010401041, + -0.009405605, + -0.0070573934, + 0.009354556, + 0.0030836216, + -0.021478469, + -0.008952552, + 0.00095156766, + 0.03111379, + -0.0113773355, + -0.0014588577, + 0.026468417, + -0.014803936, + 0.013310781, + 0.0030469308, + -0.16253701, + 0.024069158, + 0.014140312, + -0.014918794, + -0.0050473763, + -0.0026832134, + 0.016182235, + 0.020444747, + -0.020189505, + 0.028714532, + -0.0036403644, + 0.024630686, + -0.042446457, + -0.009137602, + -0.012557821, + 0.0009013172, + 0.00013061124, + -0.0009866632, + 0.017407387, + 0.0033564097, + 0.007491302, + -0.02091694, + 0.022767432, + 0.021057323, + 0.0151102245, + -0.0032559088, + -0.026315272, + 0.03256866, + 0.0074721593, + -0.007191395, + -0.0070191077, + -0.0034712679, + -0.00025763316, + 0.02491145, + 0.016488522, + -0.0026018557, + 0.0023242817, + 0.010547805, + -0.00024566878, + -0.010381898, + 0.002238138, + 0.028612435, + 0.009609796, + 0.012181343, + 0.001036116, + 0.02743833, + 0.029097391, + 0.02117218, + 0.0035510303, + -0.009597034, + 0.023265151, + -0.03338543, + -0.013425639, + -0.0078550195, + 0.022154856, + 0.020317126, + 0.016399188, + 0.009297127, + -0.00817407, + 0.009214174, + 0.00066721404, + -0.03864338, + -0.023456581, + 0.006377816, + 0.0010608424, + -0.0069808215, + 0.01083495, + 0.011906959, + -0.004473086, + 0.006052385, + -0.020508556, + -0.006259768, + -0.0058450024, + -0.02136361, + -0.006559675, + 0.0008973291, + -0.01159429, + -0.0026066413, + -0.0035382684, + -0.013183161, + 0.010318088, + 0.02249943, + -0.015008128, + -0.008786647, + -0.008844076, + 0.008927029, + 0.004903804, + 0.00823788, + -0.024235064, + -0.0005890467, + 0.023290675, + -0.036218595, + 0.0037296985, + -0.03946015, + 0.008971696, + 0.017343577, + 0.0015737158, + -0.011077428, + 0.007848638, + 0.012200485, + 0.00022393346, + 0.0013184756, + -0.023839442, + 0.00957151, + 0.030322544, + 0.018466635, + -0.012238772, + 0.0062151006, + 0.030450165, + -0.0040742727, + -0.01685862, + 0.022359049, + -0.0046964213, + 0.0067638676, + 0.022984387, + 0.010190468, + 0.013731927, + -0.02851034, + -0.0014429052, + 0.009597034, + 0.048878513, + -0.0061672432, + -0.0062852916, + 0.019500358, + -0.0023099245, + -0.030960646, + -0.099952094, + -0.013668117, + 0.01780301, + 0.020751035, + 0.013706403, + 0.02700442, + 0.004986757, + 0.0173691, + 0.0023418295, + 0.02414573, + 0.0021870902, + -0.022805719, + -0.019500358, + 0.0103627555, + 0.005315379, + -0.013463925, + 0.018594254, + -0.023022672, + -0.05063967, + 0.0037775561, + -0.003924319, + 0.0068532014, + -0.0034234102, + -0.016743762, + -0.005296236, + 0.0034457438, + -0.024184017, + 0.0058577643, + 0.01786682, + -0.0040327962, + 0.010662663, + -0.014791174, + 0.0041923216, + -0.0066681523, + -0.008665407, + -0.00039263134, + -0.0047602314, + 0.0012658322, + 0.027514901, + -0.030935122, + -0.0045975153, + 0.0022237808, + 0.015263368, + -0.032823898, + -0.004138083, + 0.010273421, + -0.00010468839, + 0.012296201, + 0.0042497506, + -0.019245116, + 0.006077909, + 0.020636177, + -0.034636106, + -0.009711892, + 0.04410552, + -0.029480252, + 0.011613432, + 0.01703729, + -0.027080994, + 0.021810282, + 0.0048176604, + 0.01703729, + 0.0013152851, + 0.029250536, + -0.02598346, + -0.016386425, + -0.049006134, + -0.008595216, + 0.023022672, + -0.031471126, + 0.0034776488, + 0.017535007, + -0.016156709, + -0.0040774634, + -0.019819407, + 0.019181307, + -0.025192216, + -0.013010873, + 0.00842931, + -0.012219628, + -0.026417369, + -0.020380937, + 0.0081357835, + -0.005666334, + -0.0074147303, + 0.029556824, + -0.021950664, + -0.008442072, + 0.025549551, + -0.002971954, + 0.0133490665, + 0.038617853, + 0.013285256, + -0.019525882, + -0.008614359, + 0.020967988, + 0.007331777, + 0.0028570958, + 0.019206831, + -0.018134821, + -0.019755598, + -0.0079252105, + -0.035886783, + 0.014778412, + -0.014791174, + -0.02445202, + -0.0118559105, + 0.013157636, + -0.011709148, + 0.0034680772, + -0.011543241, + -0.004476276, + -0.011224192, + -0.007344539, + -0.012634394, + -0.015978042, + -0.005369617, + 0.0027103326, + 0.016756523, + -0.001984493, + 0.011875054, + -0.009226936, + -0.007248824, + -0.0014915604, + 0.0003704972, + 0.008033688, + -0.033232283, + 0.0067192004, + -0.016462998, + -0.01906645, + -0.029454729, + -0.0020052313, + 0.024184017, + -0.02649394, + 0.011485812, + 0.026978897, + -0.018709112, + -0.03193056, + -0.012162199, + 0.021376373, + 0.008435691, + -0.020074647, + -0.02389049, + -0.022984387, + 0.017152147, + -0.0109817125, + -0.01976836, + 0.030781977, + -0.01260887, + -0.0076508275, + 0.002065851, + 0.012787538, + 0.01850492, + 0.017700912, + 0.0027645712, + -0.0052834735, + -0.01159429, + -0.008563311, + 0.029148439, + 0.012149437, + 0.0067766295, + -0.013821261, + 0.0063522924, + -0.0046868497, + 0.013476687, + 0.011664481, + -0.0032463372, + 0.018658064, + -0.005666334, + -0.0031266934, + -0.0043199416, + -0.023877729, + -0.01425517, + -0.0040264153, + 0.050792817, + 0.01634814, + 0.012564203, + -0.005950289, + -0.009654463, + -0.018262442, + -0.012015436, + 0.01703729, + 0.0048240414, + -0.0037233175, + -0.01236001, + -0.0010496756, + 0.027642522, + 0.023596963, + -0.053243123, + -0.008231499, + 0.018262442, + -0.0013639402, + -0.024809355, + 0.012755632, + -0.0038605093, + 0.008505883, + 0.0132086845, + 0.00033719634, + -0.001473215, + -0.006103433, + -0.0029496204, + 0.022333525, + 0.0062246723, + -0.017586054, + -0.007382825, + -0.03440639, + -0.010113896, + 0.024247827, + -0.0069425358, + -0.018339014, + -0.0144338375, + 0.018275203, + 0.009112078, + -0.014523172, + 0.0035382684, + 0.014114787, + -0.0070382506, + -0.0020291603, + -0.039434623, + -0.01013942, + -0.013527735, + 0.01362983, + 0.011492194, + 0.005190949, + 0.009099316, + -0.0032622898, + 0.021376373, + 0.010656281, + 0.02649394, + -0.038388137, + 0.018466635, + 0.007465778, + 0.0027613807, + 0.012876872, + -0.015352703, + 0.00228121, + -0.024120206, + -0.011996293, + -0.016360901, + 0.017956154, + 0.0031346697, + 0.0512012, + -0.008856838, + -0.031726368, + 0.033308856, + -0.024158493, + 0.0015027272, + 0.0121941045, + 0.0007314229, + -0.022831243, + -0.0118559105, + -0.0111795245, + 0.013706403, + 0.020176744, + -0.016590618, + -0.0045751818, + -0.00020319519, + -0.029812064, + 0.027463853, + -0.02807643, + -0.0013352257, + 0.028714532, + 0.002611427, + 0.011236954, + 0.015442037, + -0.018709112, + -0.019053686, + 0.014459361, + 0.026111081, + 0.0031665748, + -0.0010576519, + 0.019998075, + -0.008754741, + -0.022027235, + -0.011504956, + 0.0010209611, + -0.0361165, + -0.01596528, + -0.014459361, + -0.00003359999, + 0.014625268, + 0.0084612155, + 0.029888637, + -0.020036362, + -0.020100173, + 0.005685477, + -0.012781157, + -0.0077848285, + 0.007185014, + -0.006240625 + ] + }, + { + "object": "embedding", + "index": 1, + "embedding": [ + 0.014704813, + -0.00335014, + 0.0031199777, + -0.020868048, + -0.0131064635, + 0.017760856, + -0.019269697, + -0.005945859, + 0.021226078, + -0.0039063655, + 0.009244852, + 0.017019223, + -0.0045744753, + 0.011904505, + -0.02006248, + -0.011303525, + 0.030739453, + 0.004855785, + 0.023757864, + -0.020599525, + -0.035496138, + 0.02017756, + -0.0056134025, + -0.000521861, + -0.015484807, + -0.004484968, + 0.012678106, + -0.015484807, + 0.0038680052, + 0.017313318, + 0.009615669, + -0.008516004, + 0.0118149975, + -0.028463403, + -0.023259178, + 0.0046288194, + 0.005965039, + -0.0019148224, + 0.011667949, + -0.018361837, + 0.013490068, + 0.010255009, + 0.0030752239, + -0.009999272, + -0.008848461, + 0.011412214, + 0.031250924, + 0.009858618, + -0.0070774904, + 0.011667949, + 0.005418404, + 0.027619475, + -0.016367096, + -0.016929716, + 0.0065788054, + -0.036237773, + 0.004210052, + 0.012256142, + 0.0045201317, + -0.011584835, + -0.015497594, + -0.020663459, + 0.0026884235, + -0.0054727476, + -0.0028562502, + -0.004315543, + -0.011962046, + -0.0017741676, + 0.011572048, + 0.007825518, + 0.017198239, + 0.023553275, + 0.015740544, + 0.017236598, + 0.022031646, + 0.014154981, + -0.016073, + 0.0057125003, + -0.003143953, + -0.003561122, + -0.0027907176, + -0.012812368, + -0.029639788, + -0.014436291, + 0.011898112, + 0.0016910535, + -0.021584108, + 0.0019787564, + -0.044574764, + -0.018834947, + -0.0037049735, + 0.046058033, + 0.021942139, + -0.017671349, + -0.002370352, + 0.014909402, + 0.018400196, + 0.02576539, + 0.011987619, + -0.04255445, + 0.0041844784, + 0.01008878, + -0.043142643, + -0.00012626959, + -0.030918468, + -0.014397929, + 0.0036762033, + -0.0002581334, + 0.035342697, + -0.021520173, + -0.032836486, + 0.02070182, + 0.039869223, + -0.01886052, + -0.0051147174, + -0.013426133, + 0.0024614579, + -0.021750337, + -0.012882695, + 0.008963542, + 0.010574679, + 0.042810187, + 0.010740907, + -0.010191075, + 0.02301623, + 0.004699147, + -0.015152351, + -0.029767657, + -0.00046392085, + 0.015932346, + 0.009347146, + 0.020944769, + 0.014065473, + 0.016852994, + -0.01846413, + -0.0035355485, + -0.0120068, + 0.025675882, + -0.0003336554, + -0.013707443, + 0.007825518, + 0.031762395, + -0.020279855, + -0.0068153613, + -0.004791851, + 0.034217462, + 0.01822118, + -0.009385507, + -0.023463767, + -0.010932709, + 0.0023335898, + -0.01974281, + 0.0026980136, + 0.0018061346, + 0.010600252, + 0.015804477, + -0.016916929, + 0.0062367585, + -0.025074903, + 0.0014321209, + -0.023681141, + -0.00999288, + 0.037183996, + -0.01340056, + 0.036314495, + 0.022236234, + 0.0076465025, + 0.010325336, + -0.018118886, + 0.0036090726, + -0.008599119, + 0.04119905, + -0.023514913, + 0.030100113, + -0.0031199777, + 0.015050056, + -0.000012899178, + -0.0045489017, + -0.013247118, + 0.0052873394, + -0.033041075, + -0.0058915154, + 0.013023349, + 0.0066810995, + -0.0008655061, + -0.0074674874, + 0.015932346, + -0.0045233285, + 0.013170398, + -0.009085017, + 0.022146726, + 0.024103107, + -0.021110997, + -0.03163453, + -0.6796437, + -0.04685081, + 0.01985789, + -0.014154981, + 0.00011388238, + 0.024550645, + 0.008324203, + 0.02153296, + 0.0041940683, + -0.016482178, + 0.0072884723, + -0.00050707627, + 0.0075825686, + -0.006732247, + 0.0030752239, + -0.01985789, + 0.0010405254, + 0.01599628, + 0.0062399553, + -0.015587102, + 0.0023767452, + 0.0067130667, + -0.013119251, + -0.0077615837, + 0.02616178, + 0.0034300575, + 0.021622468, + 0.0030064948, + -0.012454337, + 0.0049133254, + -0.0011651965, + 0.017850364, + -0.010971069, + -0.005223405, + 0.044370174, + -0.0024246958, + -0.020484444, + 0.019691663, + 0.020318216, + 0.009826651, + -0.007135031, + -0.00907223, + 0.0044050505, + -0.022990655, + -0.009174525, + 0.015957918, + 0.021699188, + -0.0073204394, + 0.029281758, + 0.012754827, + 0.017773643, + -0.031404365, + 0.005159471, + 0.0076145357, + 0.020369362, + 0.0034428441, + 0.045188528, + 0.01238401, + -0.0025685471, + -0.002330393, + -0.0100248465, + 0.0020906408, + -0.012467124, + -0.012358436, + -0.018834947, + 0.004421034, + -0.039153162, + -0.026877841, + -0.013087284, + -0.0036282528, + 0.0041461177, + 0.014333996, + -0.01238401, + 0.028872581, + 0.008963542, + 0.00014654864, + 0.025893258, + -0.008758954, + 0.011162871, + 0.0017693726, + 0.022044433, + -0.018285114, + -0.023310324, + -0.016878568, + 0.033910576, + -0.009775504, + -0.018732652, + -0.02465294, + 0.02074018, + -0.010664186, + 0.029205037, + -0.0023959256, + -0.02476802, + -0.01786315, + -0.0047119334, + 0.038923, + -0.009008296, + 0.0029969048, + 0.013119251, + 0.0024854331, + -0.002242484, + -0.0023591635, + -0.0012259339, + -0.0011292337, + 0.034959093, + -0.0074163405, + -0.021954926, + 0.028284388, + 0.0066938866, + -0.023604421, + 0.030918468, + -0.015484807, + -0.011751063, + 0.010120748, + 0.0061856117, + -0.025637522, + 0.039587915, + 0.010683366, + 0.0049548824, + -0.0049452926, + 0.015881198, + 0.010357303, + -0.0033021895, + -0.0066810995, + -0.0031966984, + -0.002237689, + -0.01372023, + -0.017735284, + -0.02412868, + 0.0015815665, + -0.009775504, + 0.0070135565, + 0.021008702, + 0.006019383, + 0.005421601, + 0.0050699636, + 0.010229435, + -0.013643509, + 0.030662732, + -0.007262899, + -0.02077854, + 0.0027427673, + -0.030688304, + 0.0062591354, + -0.0037497273, + -0.023271965, + -0.035342697, + -0.0051722582, + -0.026110632, + 0.012626959, + -0.0104979575, + -0.011610408, + -0.022824427, + 0.026174568, + 0.012857121, + -0.0056102057, + -0.021954926, + 0.004462591, + -0.018515278, + 0.022619838, + 0.00637102, + 0.009046657, + 0.0038008743, + 0.005268159, + -0.0084712505, + -0.023757864, + -0.0061312676, + 0.029179463, + -0.009506981, + -0.030560438, + -0.0048813587, + 0.0047215237, + -0.006764214, + -0.0074035535, + -0.024793593, + -0.01144418, + -0.01834905, + -0.024307694, + 0.018310688, + -0.021596896, + 0.019410353, + 0.028207667, + 0.013298266, + -0.023195244, + 0.041736096, + 0.012249748, + 0.027414886, + 0.013707443, + 0.009238458, + 0.00091105903, + -0.005386437, + 0.00117159, + -0.0058659418, + -0.00036342465, + 0.0155615285, + 0.009104197, + 0.005757254, + 0.011776637, + 0.017402826, + -0.0031071908, + 0.017044796, + -0.008765347, + 0.017453974, + -0.013195971, + -0.0048525883, + -0.04526525, + 0.02409032, + -0.006770607, + -0.012332862, + 0.024422776, + -0.0021178126, + -0.024857527, + -0.0081515815, + -0.010184681, + 0.017441187, + -0.0067578205, + -0.017032009, + 0.0055143046, + -0.003941529, + -0.013221545, + 0.003634646, + 0.007441914, + 0.027389312, + -0.0046064425, + -0.003922349, + 0.0062942994, + 0.030892894, + 0.017287746, + -0.018758226, + -0.008349776, + -0.019627728, + -0.0034620245, + -0.02416704, + 0.018476916, + -0.032683045, + -0.0032478457, + 0.0018844537, + -0.03449877, + 0.021149358, + 0.013860884, + 0.0056901234, + 0.037337437, + 0.0208169, + -0.0062495456, + 0.009475014, + 0.008503218, + 0.011098937, + 0.009737143, + -0.015293005, + 0.013426133, + -0.023834584, + 0.00076321175, + -0.0031519446, + 0.013413346, + 0.023425406, + -0.0045457054, + 0.033347957, + 0.0041525112, + 0.019972973, + 0.008528791, + -0.011699916, + -0.004497755, + 0.00052785483, + -0.001918019, + 0.008285843, + 0.0036410396, + -0.01040845, + -0.005619796, + -0.0043922635, + -0.028182093, + -0.017760856, + 0.007831912, + 0.027466033, + -0.0066938866, + 0.027108002, + -0.020599525, + -0.002677235, + -0.004699147, + 0.02113657, + 0.010792054, + -0.008381743, + -0.040457416, + 0.018476916, + -0.01375859, + -0.0012571017, + -0.02160968, + -0.031123057, + 0.022965081, + 0.0020442887, + 0.006489298, + 0.010478778, + 0.0066299527, + 0.020573951, + -0.0038903821, + 0.008503218, + -0.043526247, + 0.0037017767, + 0.011169264, + 0.022338528, + 0.0036730065, + 0.0025797356, + -0.013937606, + -0.024857527, + -0.011175658, + 0.0033693202, + 0.0095261615, + 0.002087444, + 0.0060129897, + -0.0077743707, + -0.035905316, + -0.009781897, + -0.00022336931, + 0.005440781, + -0.022594264, + -0.008420104, + 0.006243152, + -0.030560438, + -0.007767977, + 0.027824063, + 0.01586841, + -0.0028354714, + -0.012665319, + -0.018643145, + 0.0037081703, + 0.07805059, + 0.008560758, + 0.0046032458, + 0.0037784975, + 0.005885122, + -0.020637885, + -0.02501097, + 0.014346783, + -0.0100120595, + 0.0013170397, + 0.010542711, + -0.020970343, + 0.018093314, + 0.0071797846, + -0.008599119, + 0.0011635983, + 0.013029743, + 0.008848461, + 0.03749088, + -0.0362122, + 0.0004375481, + 0.010932709, + -0.0068409345, + 0.005140291, + 0.0013857688, + -0.007441914, + 0.017415613, + 0.0005182647, + 0.021430666, + -0.0036186627, + 0.0066171656, + 0.013694656, + -0.015676608, + -0.018911667, + -0.010587465, + -0.011335493, + -0.008407317, + 0.008209121, + 0.0010181485, + -0.010523532, + 0.03654466, + 0.011188445, + 0.013771377, + -0.010127141, + -0.0155615285, + 0.013349413, + -0.010939102, + 0.029358478, + -0.009980093, + -0.011514508, + 0.024218187, + -0.0019212158, + -0.0070135565, + 0.003541942, + 0.01100943, + 0.01663562, + -0.0028754303, + -0.013796951, + 0.0013418142, + -0.015203497, + 0.002782726, + -0.00572209, + -0.0034108772, + -0.0029057988, + -0.021980498, + -0.01274204, + 0.0051498814, + 0.0027587507, + -0.020088052, + -0.007026343, + 0.00835617, + -0.009225672, + -0.018003806, + -0.0023495734, + 0.029716508, + 0.015855623, + 0.004980456, + -0.010836808, + -0.016878568, + 0.03728629, + -0.00025753403, + -0.0056933197, + 0.00097339466, + 0.003657023, + -0.0049037356, + 0.0013234331, + 0.027389312, + -0.018950028, + -0.018233968, + -0.0019611744, + 0.0366981, + -0.008049287, + 0.026391942, + -0.009302393, + -0.0068217544, + -0.0020586739, + 0.014513011, + 0.007333226, + -0.01372023, + 0.0039894795, + 0.0065979855, + -0.03222272, + -0.018297901, + -0.015050056, + 0.0022840411, + 0.020331003, + 0.02576539, + -0.0012283314, + -0.028821433, + 0.0036602197, + 0.0125502385, + -0.0049484894, + -0.0054567643, + -0.007365193, + 0.010632219, + 0.008663053, + -0.0072053582, + 0.013912031, + -0.0073204394, + -0.029946672, + 0.014960549, + -0.04240101, + 0.030739453, + -0.0016383079, + -0.0023831388, + -0.0060897106, + 0.028207667, + -0.011252378, + -0.012575812, + 0.014193341, + -0.000002981296, + 0.010619433, + -0.018809374, + -0.0132726915, + -0.035189256, + -0.028565697, + 0.03792563, + 0.009168131, + -0.027645048, + -0.007314046, + 0.0015767715, + 0.016776273, + 0.007262899, + 0.014116621, + -0.024384417, + -0.019883465, + 0.0048110313, + 0.0020810508, + -0.008925182, + 0.021916565, + 0.0016239228, + -0.0060801203, + -0.01372023, + 0.010855988, + 0.003816858, + -0.015702182, + -0.023080163, + -0.029153889, + 0.020727392, + 0.0122881085, + 0.011942865, + -0.007838304, + 0.0070455233, + -0.0044370173, + -0.009264032, + -0.0007488266, + -0.001253905, + 0.00003091807, + -0.027261445, + 0.014794321, + 0.009155344, + 0.0069943764, + 0.018886095, + -0.0043730834, + 0.0052521755, + 0.022837214, + -0.0029377658, + -0.010453204, + -0.020906407, + -0.029997818, + -0.0010405254, + -0.003116781, + -0.012582205, + -0.013221545, + 0.0055526653, + -0.0142572755, + 0.017300531, + 0.0052649626, + -0.0019036339, + 0.0064797075, + 0.03984365, + -0.008253875, + 0.04127577, + -0.009302393, + -0.0030960024, + -0.012077127, + -0.014103834, + -0.005789221, + 0.00941108, + 0.004440214, + 0.013285479, + 0.013963179, + -0.010504351, + -0.02324639, + 0.006604379, + 0.0086374795, + 0.024691299, + 0.0076017487, + -0.0118149975, + -0.0070135565, + -0.012096307, + -0.023156883, + -0.029588642, + -0.03526598, + 0.010459597, + -0.00011368259, + -0.025074903, + 0.02616178, + -0.015446447, + -0.018233968, + 0.0022312955, + 0.006911262, + 0.024269335, + -0.0006389401, + 0.014500224, + 0.020164775, + -0.014103834, + -0.014231701, + 0.0016958485, + -0.009059443, + -0.010574679, + 0.0221723, + 0.01735168, + -0.012863515, + 0.019218551, + 0.0126205655, + 0.0028306765, + 0.028923728, + -0.008004533, + -0.017850364, + 0.002429491, + 0.012492698, + -0.020190347, + 0.008516004, + -0.022364102, + 0.014321209, + -0.018080527, + -0.011878932, + 0.011060577, + -0.00031947004, + -0.0053256997, + -0.010063207, + -0.041224625, + 0.021200504, + 0.011335493, + 0.009935339, + 0.00899551, + 0.0018428967, + -0.017850364, + -0.018233968, + -0.007870272, + 0.024959821, + 0.007314046, + 0.013451707, + 0.011910899, + 0.0030032983, + -0.013132038, + -0.01008878, + 0.014027113, + 0.026315222, + -0.008631086, + 0.0017358073, + -0.018323475, + 0.026021125, + 0.04582787, + -0.02245361, + -0.005332093, + 0.0029633394, + -0.020088052, + 0.0014704813, + 0.00737798, + 0.0008543177, + -0.021903777, + 0.0053512733, + -0.026264075, + -0.010485171, + -0.039025296, + 0.00029509523, + -0.0020171166, + -0.019730022, + -0.0021817468, + -0.018758226, + 0.017044796, + 0.0074610943, + 0.013617936, + -0.0074802744, + 0.025548015, + 0.0068729017, + -0.014922189, + 0.028565697, + -0.015548741, + 0.024972608, + -0.008503218, + 0.014500224, + 0.0048078345, + -0.025049329, + 0.03022798, + -0.0057412703, + -0.029000448, + -0.023770649, + -0.008906002, + -0.015037269, + 0.00566455, + -0.007883058, + 0.0035035815, + -0.0037145636, + 0.0083881365, + -0.022504756, + -0.010318942, + -0.0037689074, + -0.019576581, + 0.013963179, + 0.024780806, + -0.014717599, + -0.014039899, + 0.010274189, + -0.010964676, + -0.007314046, + -0.033347957, + -0.011361066, + -0.01635431, + 0.02189099, + 0.011917292, + -0.014922189, + -0.0075314217, + -0.013937606, + -0.015778903, + 0.004136528, + -0.010127141, + 0.020995915, + 0.009666816, + -0.0002869037, + -0.02049723, + 0.0208169, + -0.025829323, + 0.006124874, + -0.010600252, + -0.022006072, + -0.016801847, + 0.008202728, + 0.010683366, + -0.013234331, + -0.017390039, + -0.041582655, + -0.020394936, + -0.00068209553, + -0.0016814633, + -0.0064956914, + 0.0026452679, + 0.009852225, + 0.022568692, + -0.010229435, + -0.012492698, + 0.015625462, + 0.00057820283, + -0.001959576, + -0.02437163, + -0.0052649626, + 0.0034684178, + -0.0061216773, + 0.017185451, + 0.016060213, + 0.0096092755, + -0.017006436, + 0.012665319, + -0.0114825405, + -0.004200462, + -0.008726987, + -0.011629589, + -0.00570291, + 0.016776273, + 0.016520537, + 0.029895524, + 0.0051051276, + -0.0010796849, + -0.016239228, + -0.0018636752, + 0.003743334, + 0.036109906, + -0.01763299, + 0.012984989, + 0.014909402, + -0.011297132, + -0.0019531827, + -0.026366368, + 0.011776637, + 0.005757254, + 0.010082387, + 0.0030416586, + -0.0073012593, + 0.014666452, + 0.028079798, + -0.008196335, + -0.014282849, + -0.000062235726, + -0.00028530534, + -0.03137879, + -0.002028305, + 0.006486101, + -0.024473924, + 0.004280379, + -0.020011332, + -0.0083881365, + -0.025189985, + -0.003976693, + -0.025369, + -0.0067130667, + -0.037030555, + 0.032887634, + 0.025177198, + -0.012748433, + -0.0011316312, + -0.034601063, + -0.009238458, + 0.001043722, + -0.008624692, + 0.0067386404, + -0.025637522, + -0.009302393, + 0.0010660989, + -0.004555295, + -0.023617208, + 0.0022552707, + 0.018668719, + 0.019154618, + 0.029639788, + 0.23241277, + 0.002979323, + -0.011373853, + 0.044242308, + -0.0011452172, + 0.011712703, + 0.0240136, + -0.007314046, + 0.023425406, + 0.029153889, + -0.009168131, + 0.0053065196, + -0.0058659418, + -0.0006956815, + 0.0028690367, + -0.023949664, + -0.036749244, + -0.0067897877, + -0.004663983, + -0.004261199, + 0.003963906, + -0.01240319, + 0.015216284, + 0.00097259553, + 0.017607415, + 0.0028210864, + -0.009717964, + 0.011105331, + 0.027926357, + 0.012588599, + -0.011808604, + -0.02288836, + -0.0035323517, + -0.013183184, + -0.0014041498, + 0.00572209, + -0.017441187, + -0.0063997903, + 0.020829687, + 0.031890262, + 0.009545341, + -0.0046671797, + -0.027414886, + -0.0070583103, + 0.0004946891, + 0.017517908, + -0.02089362, + -0.018080527, + 0.014244488, + 0.023847371, + -0.014436291, + 0.0017741676, + 0.022543117, + 0.02815652, + -0.0052745524, + 0.02077854, + 0.012997776, + -0.00931518, + 0.015932346, + -0.017543482, + -0.014359569, + 0.023566062, + -0.027389312, + 0.0069176555, + 0.004833408, + -0.010836808, + -0.007569782, + -0.0059106955, + 0.019001175, + -0.01978117, + 0.0051562744, + 0.014717599, + -0.0027491606, + 0.0024023189, + -0.0073396196, + -0.017965445, + 0.0187838, + -0.006892082, + 0.019934611, + 0.008631086, + -0.02137952, + -0.00011268362, + -0.017901512, + 0.008145188, + 0.004258002, + -0.020906407, + 0.0041652983, + -0.004673573, + 0.028182093, + -0.0031775183, + -0.0020043298, + -0.008701413, + 0.005463158, + 0.009628456, + 0.02616178, + 0.023335898, + -0.0015871607, + 0.008695019, + -0.028386682, + 0.0059522525, + -0.034524344, + -0.024985395, + 0.0018396999, + -0.017006436, + -0.009078624, + 0.014922189, + -0.003826448, + 0.012294502, + 0.04035512, + 0.0049261125, + -0.00042116502, + -0.013183184, + 0.007966173, + -0.00811322, + 0.0071797846, + -0.0049261125, + 0.017479546, + -0.014781534, + -0.010127141, + -0.011610408, + -0.0042899693, + -0.010862381, + 0.0007536217, + -0.0031279693, + 0.014640879, + -0.019295271, + 0.0011172461, + 0.012211388, + 0.006604379, + -0.04270789, + 0.026980136, + 0.0014528994, + 0.030023392, + -0.008330597, + -0.011297132, + 0.022504756, + 0.005885122, + -0.016814634, + -0.00014395133, + -0.011194838, + -0.002431089, + -0.011968439, + -0.0028546518, + 0.0007779965, + 0.009078624, + -0.002979323, + 0.009570915, + -0.023310324, + -0.025650308, + -0.02552244, + -0.020279855, + 0.003794481, + -0.006924049, + -0.0027587507, + 0.012198601, + -0.0026644482, + -0.020024119, + -0.011003036, + 0.013950392, + 0.03521483, + -0.009462227, + 0.007915026, + 0.015970705, + -0.0013514042, + 0.0058467616, + 0.0063102827, + -0.1628526, + 0.016060213, + 0.011616802, + -0.006383807, + -0.012959415, + 0.0038296448, + 0.008579939, + 0.020931982, + -0.015037269, + 0.029639788, + 0.007851091, + 0.023924092, + -0.040303975, + -0.008413711, + -0.01072812, + -0.0011875734, + 0.0014896615, + -0.007940599, + 0.01686578, + 0.0039830864, + -0.00027531566, + -0.027338166, + 0.011425001, + 0.017607415, + 0.008081254, + -0.00038120628, + -0.018297901, + 0.030534863, + 0.0037880877, + -0.018604785, + -0.0012475116, + 0.00096780044, + 0.006943229, + 0.015817264, + 0.02680112, + 0.008842068, + -0.002650063, + 0.008119614, + 0.0024230974, + -0.01080484, + -0.005616599, + 0.021520173, + 0.014692026, + 0.0174284, + -0.009270426, + 0.015523167, + 0.031557806, + 0.0139248185, + -0.00012676907, + -0.014154981, + 0.015267432, + -0.03907644, + -0.013183184, + -0.008829281, + 0.016188081, + 0.030458143, + 0.017236598, + 0.013860884, + -0.0063774134, + 0.0058883186, + 0.00035103745, + -0.038309235, + -0.01842577, + 0.0032702226, + 0.008695019, + -0.0062942994, + 0.008726987, + 0.012236962, + -0.019832317, + 0.005990613, + -0.017185451, + -0.013835311, + -0.010523532, + -0.01274204, + -0.008368957, + 0.012812368, + -0.015778903, + 0.0009414277, + -0.007684863, + -0.013374986, + 0.009679602, + 0.0339873, + -0.009980093, + -0.0062719225, + -0.013541214, + 0.011501721, + -0.002151378, + 0.017760856, + -0.024039172, + -0.013975966, + 0.024627365, + -0.035828598, + 0.000078119316, + -0.022517543, + 0.010983855, + 0.018093314, + -0.002443876, + -0.006745034, + 0.016673978, + 0.009660423, + 0.004858982, + -0.002883422, + -0.022632625, + 0.015203497, + 0.0226582, + 0.025381785, + -0.007908632, + 0.015088417, + 0.024665724, + 0.0009909765, + -0.027593901, + 0.029026022, + -0.0065180683, + 0.013502854, + 0.016073, + 0.0014528994, + 0.0063870037, + -0.026366368, + -0.0054887314, + 0.010133534, + 0.059893344, + -0.0012882695, + -0.007429127, + 0.017236598, + -0.011693523, + -0.027491607, + -0.104186796, + -0.010293369, + 0.02548408, + 0.03784891, + 0.0072181453, + 0.022543117, + -0.0011691925, + 0.0226582, + -0.00020229108, + 0.02313131, + -0.0009550137, + -0.02345098, + -0.012965809, + -0.004961276, + 0.0024758428, + -0.011252378, + 0.0037657109, + -0.025995553, + -0.052374706, + 0.01886052, + 0.005162668, + 0.0044370173, + -0.0018876505, + -0.014564158, + -0.01106697, + -0.011680736, + -0.035751875, + 0.019589368, + 0.009801078, + -0.0022952296, + 0.02588047, + -0.011962046, + 0.0076465025, + 0.0003622259, + -0.014333996, + -0.0068153613, + 0.0019659696, + -0.01037009, + 0.011923686, + -0.034831226, + -0.006911262, + -0.0025014165, + 0.010523532, + -0.034166314, + -0.007122244, + 0.004654393, + -0.016904142, + 0.011878932, + -0.0018780603, + -0.012179421, + -0.003131166, + 0.028540123, + -0.025343426, + -0.0021721567, + 0.03536827, + -0.016482178, + 0.01144418, + 0.019717235, + -0.033450253, + 0.0142572755, + 0.015420874, + 0.009973699, + -0.011003036, + 0.021954926, + -0.028847007, + -0.01622644, + -0.033194516, + -0.010242222, + 0.023220817, + -0.028079798, + -0.002699612, + 0.021763124, + -0.00604176, + 0.014768747, + -0.0127804, + 0.007729617, + -0.016686765, + -0.010152714, + 0.006188808, + -0.018668719, + -0.029384052, + -0.018898882, + -0.008969936, + -0.00534488, + -0.0062175784, + 0.032171573, + -0.02010084, + -0.0020315018, + 0.033885002, + -0.008336989, + 0.011910899, + 0.037797764, + 0.005098734, + -0.017326105, + -0.006566019, + 0.01238401, + -0.0051243077, + 0.0082346955, + 0.0153952995, + -0.019026749, + -0.002618096, + -0.013055316, + -0.041147903, + 0.017466761, + -0.011533688, + -0.02237689, + -0.00027811277, + 0.0019947398, + -0.011866145, + -0.0024039173, + -0.013630723, + 0.0061952015, + -0.0032110836, + 0.0005262565, + -0.0047343103, + -0.019921824, + -0.0048525883, + 0.0062783156, + 0.014116621, + -0.0041940683, + 0.014295636, + -0.012524664, + -0.0027443657, + -0.0015751731, + 0.0058147945, + 0.013016956, + -0.038309235, + 0.010983855, + -0.0071733915, + -0.017824791, + -0.032248292, + -0.009794684, + 0.017978232, + -0.028667992, + 0.009545341, + 0.03741416, + -0.01722381, + -0.028693566, + -0.018374622, + 0.018438557, + 0.011412214, + -0.019333633, + -0.026494237, + -0.032529604, + 0.015331366, + -0.030176833, + -0.01906511, + 0.025241131, + -0.012294502, + -0.01232647, + 0.0031007975, + 0.018400196, + 0.013873671, + 0.024422776, + 0.0049261125, + -0.016060213, + -0.009551735, + -0.014346783, + 0.031481087, + 0.016303163, + 0.020625098, + -0.013490068, + 0.004091774, + -0.008119614, + -0.0034780079, + 0.009327966, + 0.007282079, + 0.012415977, + 0.0006757021, + 0.000043779783, + -0.008170761, + -0.016699553, + -0.015305792, + -0.012070733, + 0.047183268, + 0.012582205, + 0.016290376, + -0.0028994055, + -0.002229697, + -0.012607778, + -0.021034276, + 0.021123784, + 0.014014326, + -0.0070199496, + -0.009308786, + 0.007512241, + 0.018438557, + 0.025548015, + -0.044804927, + 0.00017781636, + 0.0030720271, + 0.005463158, + -0.021200504, + 0.0019963381, + 0.0048046377, + 0.015459234, + 0.013630723, + 0.002598916, + -0.011751063, + -0.010862381, + 0.00086470693, + 0.035444994, + -0.0068729017, + -0.013656296, + -0.00094462436, + -0.03920431, + -0.024205402, + 0.010843202, + -0.014461864, + -0.019755596, + -0.0032830094, + 0.018540852, + 0.0068409345, + -0.0031103876, + -0.0011004634, + 0.016929716, + -0.009813864, + -0.0056453696, + -0.023323111, + -0.013745803, + -0.0064765112, + 0.015331366, + 0.008516004, + 0.0011675941, + 0.013362199, + -0.013119251, + 0.014385143, + 0.011182051, + 0.028233241, + -0.025305064, + 0.010740907, + 0.018950028, + 0.0070455233, + 0.008311416, + -0.007262899, + 0.00043914645, + 0.00011208424, + -0.028054226, + -0.018323475, + 0.019001175, + -0.00012686897, + 0.052988473, + -0.016136933, + -0.046288192, + 0.030662732, + -0.019832317, + 0.011488934, + 0.018771013, + 0.018694293, + -0.0057093035, + -0.004919719, + -0.00012427165, + 0.013630723, + 0.025420146, + -0.003089609, + -0.021302799, + -0.011597622, + -0.019909037, + 0.015778903, + -0.025790963, + -0.0037593173, + 0.022031646, + -0.008937969, + 0.009014689, + 0.013426133, + -0.020983128, + -0.00499644, + 0.016034639, + 0.0011292337, + -0.0009622062, + 0.003404484, + 0.029000448, + -0.0153952995, + -0.02452507, + -0.0066810995, + 0.003217477, + -0.028847007, + -0.016891355, + -0.021520173, + 0.00081755564, + 0.009327966, + 0.012051553, + 0.032427307, + -0.020931982, + -0.0032558374, + 0.005575042, + -0.0062783156, + -0.008484038, + 0.0045840656, + -0.008592726 + ] + }, + { + "object": "embedding", + "index": 2, + "embedding": [ + 0.021987127, + -0.015545284, + -0.0045292196, + -0.016123893, + 0.007316184, + 0.013668021, + -0.026165966, + -0.0054614223, + 0.015288125, + -0.021909978, + 0.0131087, + 0.011732897, + -0.015339557, + 0.024507288, + -0.022527162, + -0.009289882, + 0.04253416, + 0.003148595, + 0.022771463, + -0.021344228, + -0.038265314, + -0.0012681172, + -0.017641133, + 0.014593795, + -0.015776727, + -0.008370537, + 0.010768549, + -0.019222664, + 0.01899122, + 0.010504961, + 0.019788414, + -0.020868484, + 0.01987842, + -0.03134773, + -0.033250708, + 0.013899464, + 0.0077983583, + 0.0017808287, + 0.010717117, + -0.026744576, + 0.015056682, + 0.008254816, + -0.0038766777, + -0.011919337, + -0.010196369, + 0.015751012, + 0.02246287, + 0.012015772, + -0.010183511, + 0.020084148, + -0.007425477, + 0.018142594, + -0.011559314, + -0.01861834, + 0.01025423, + -0.031553455, + 0.0019351243, + 0.015236693, + -0.013256566, + -0.016959662, + -0.0038702486, + -0.006576851, + 0.00061878975, + -0.011405018, + 0.0047060167, + 0.0044745733, + -0.0030875197, + 0.0011315013, + 0.002441407, + 0.006956161, + 0.026243115, + 0.026770292, + -0.0016418019, + 0.018374037, + 0.014889528, + 0.012742247, + -0.016188182, + 0.0032305648, + 0.0061236075, + -0.015288125, + 0.0014296455, + -0.010659256, + -0.024172982, + -0.0041177645, + 0.017705424, + 0.006120393, + -0.014568078, + 0.0034716516, + -0.03487081, + -0.017191105, + -0.0067247176, + 0.032196354, + 0.028801851, + -0.010029215, + -0.0040181153, + 0.0150052495, + 0.014388067, + 0.02362009, + 0.015403846, + -0.03348215, + 0.007457622, + 0.0044745733, + -0.044334278, + 0.0018949432, + -0.029547613, + -0.02475159, + 0.010376381, + -0.0016747505, + 0.031810615, + -0.024970176, + -0.022835752, + 0.016033888, + 0.025908807, + -0.020649899, + -0.012369366, + -0.01760256, + 0.008852712, + -0.016226757, + -0.027876077, + -0.008177668, + 0.012324363, + 0.045491494, + 0.01120572, + -0.020238442, + 0.034922242, + 0.0072133206, + -0.010884271, + -0.019775556, + -0.008209813, + 0.010344236, + 0.0046417266, + 0.008094091, + 0.014529505, + 0.020521319, + -0.005033895, + 0.006281118, + -0.006171825, + 0.024893027, + 0.0020283447, + -0.026487416, + 0.019415533, + 0.027721781, + -0.013398004, + -0.007361187, + -0.011700751, + 0.030781977, + 0.019441249, + -0.01120572, + -0.010074219, + -0.0016924301, + 0.003539156, + -0.028287532, + 0.012433656, + -0.0019319098, + 0.019004079, + -0.0033527154, + -0.01132787, + 0.0029348314, + -0.027618917, + -0.0072583235, + -0.016316762, + 0.0015067932, + 0.033019263, + 0.0032948544, + 0.024507288, + 0.021408519, + 0.0037191676, + 0.017203962, + -0.0062232567, + -0.002508911, + 0.0017390402, + 0.036362335, + -0.012260073, + 0.023182917, + -0.008891285, + 0.01728111, + 0.0045035034, + -0.002965369, + -0.011777899, + 0.003048946, + -0.020598466, + -0.008711274, + 0.016805366, + -0.0018852997, + 0.0068918713, + -0.0067697205, + 0.0047767353, + -0.011475737, + 0.0086534135, + -0.014915244, + 0.013423719, + 0.024764448, + -0.0032755677, + -0.025548784, + -0.6891871, + -0.044359993, + 0.0076826364, + -0.002010665, + 0.002344972, + 0.027696066, + 0.0020974563, + 0.011572172, + 0.008068375, + -0.015648149, + 0.0037802428, + 0.005467851, + 0.008929859, + -0.00664757, + 0.008659842, + -0.029650476, + -0.012658671, + 0.020431312, + -0.0032787821, + -0.0034202198, + -0.00016122688, + -0.0035809444, + -0.0264617, + -0.010562821, + 0.029599044, + 0.0091163, + 0.018206883, + -0.0028078589, + -0.004153124, + 0.025330199, + -0.0009852418, + 0.001547778, + -0.015686722, + -0.014349493, + 0.04443714, + -0.0011025708, + -0.008756277, + 0.009097013, + 0.0009989034, + 0.021639962, + -0.010884271, + -0.0010639969, + 0.0053907037, + -0.028004656, + -0.012112207, + 0.0066347118, + 0.017808286, + -0.009990642, + 0.038188167, + 0.003847747, + 0.026204541, + -0.010498531, + 0.0106978305, + -0.0067954366, + 0.016548205, + -0.0016827866, + 0.029599044, + 0.0014336635, + 0.004394211, + -0.0040791905, + -0.018386895, + 0.0015759048, + -0.013680879, + -0.008023373, + -0.012536519, + 0.004709231, + -0.035745155, + -0.015931023, + 0.0022147852, + 0.00092577375, + 0.0024446214, + 0.0114500215, + -0.017499696, + 0.0324278, + 0.0113021545, + -0.0050371094, + 0.026796008, + -0.008100521, + 0.021871405, + 0.0060239583, + 0.015288125, + -0.0065736366, + -0.025394488, + -0.0063839816, + 0.030961988, + -0.01139216, + -0.029161874, + -0.023517225, + 0.026243115, + -0.0031068067, + 0.027953224, + 0.0030730546, + -0.0156095745, + -0.006911158, + -0.0031630604, + 0.02785036, + -0.02070133, + 0.005184976, + 0.004127408, + -0.0040952633, + 0.015648149, + -0.031193433, + -0.012459372, + -0.008351251, + 0.035282265, + 0.0017663635, + -0.022385724, + 0.030679114, + 0.010389239, + -0.024545863, + 0.022334293, + -0.011507882, + -0.016111035, + 0.0059789554, + 0.015352415, + -0.024545863, + 0.045877233, + 0.009656334, + 0.014375209, + -0.0068983003, + 0.0060721757, + 0.012620096, + -0.0045613647, + -0.011089998, + -0.00072607346, + -0.011572172, + -0.005172118, + -0.018682629, + -0.031913478, + -0.0028946502, + 0.006686144, + -0.010357094, + 0.00087353826, + 0.0032868183, + -0.0019624475, + 0.001547778, + 0.006641141, + -0.019132657, + 0.030550534, + -0.0220257, + -0.02867327, + -0.002116743, + -0.023247208, + -0.0054774946, + -0.0010848911, + -0.01708824, + -0.031167716, + -0.007329042, + -0.020354165, + 0.016381053, + -0.032787822, + -0.022501446, + -0.031887762, + 0.012388653, + -0.0024510503, + -0.006641141, + -0.026564565, + 0.0082805315, + -0.012452943, + 0.026435984, + 0.01234365, + 0.0061814687, + -0.00842197, + -0.0013862498, + -0.008344822, + -0.038033873, + 0.0010535498, + 0.03057625, + -0.012105778, + -0.030627681, + -0.00462244, + -0.0047317324, + -0.002820717, + -0.009817059, + -0.026924586, + -0.014439499, + -0.016561063, + -0.02273289, + 0.014593795, + -0.015365273, + 0.015841018, + 0.020791335, + 0.0108907, + -0.025780227, + 0.039705407, + -0.0027837502, + 0.027798928, + 0.013886606, + 0.0067632915, + 0.010549963, + -0.019209806, + 0.0016305512, + 0.00096354407, + -0.011212149, + 0.014735232, + 0.0061686104, + 0.0036902372, + 0.012620096, + 0.007836932, + -0.0039666835, + 0.011424305, + -0.008100521, + 0.02070133, + -0.018065447, + 0.017203962, + -0.027078882, + 0.02070133, + -0.006502918, + 0.005021037, + 0.03235065, + 0.0037191676, + -0.02689887, + -0.0089555755, + -0.008370537, + 0.015120971, + 0.0032787821, + -0.013359429, + 0.015622432, + -0.007007593, + -0.015172403, + -0.006628283, + 0.0090327235, + 0.034587935, + -0.0038445326, + -0.0020412025, + -0.003232172, + 0.03762242, + 0.011957911, + -0.00791408, + -0.0076312046, + -0.029136157, + -0.010607825, + -0.016471058, + 0.010588537, + -0.022437155, + -0.0068082944, + 0.0020894199, + -0.04011686, + 0.018798351, + 0.016638212, + 0.0027307111, + 0.034716517, + 0.03919109, + -0.0063711237, + 0.017821144, + -0.005618932, + 0.022604309, + 0.017319685, + -0.01697252, + 0.008981291, + -0.016098177, + -0.007046167, + -0.012710102, + 0.016509632, + 0.02633312, + 0.0031469879, + 0.03615661, + 0.0084283985, + 0.023890106, + 0.017949725, + -0.022964332, + -0.013642305, + 0.01431092, + -0.01120572, + 0.000014477771, + 0.005551428, + -0.00569608, + 0.00905201, + -0.00017418529, + -0.012247215, + -0.013082983, + 0.0017518982, + 0.025908807, + -0.012838682, + 0.019466965, + -0.023247208, + -0.0133465715, + 0.0021392445, + 0.020405596, + 0.012645813, + -0.003760956, + -0.034999393, + 0.011186433, + 0.00022240268, + 0.0024848024, + -0.026950303, + -0.03222207, + 0.022565736, + 0.0028319675, + 0.008286961, + 0.015468136, + 0.012157209, + 0.025715938, + 0.0061171786, + 0.012080062, + -0.02975334, + 0.0022260358, + -0.0021279939, + 0.015686722, + 0.0044585005, + -0.0061428947, + -0.013205134, + -0.030396238, + -0.0015678686, + 0.0030248372, + 0.014195197, + -0.014529505, + 0.0052428367, + -0.017743997, + -0.0162139, + -0.0017052881, + -0.0023288997, + 0.0018997649, + -0.014362351, + -0.010022786, + -0.0028689343, + -0.020225585, + 0.00010949364, + 0.025857376, + 0.017358258, + 0.019788414, + -0.0162139, + -0.021434234, + -0.0008076412, + 0.0766335, + 0.008319106, + 0.0019303026, + 0.009174161, + 0.006210399, + -0.019338384, + -0.019955568, + 0.012009343, + -0.011089998, + -0.00054003467, + 0.0023208633, + -0.012716531, + 0.0173454, + 0.0046931584, + -0.00011973984, + -0.012105778, + 0.010267088, + 0.0056992946, + 0.035333697, + -0.019286953, + 0.00389275, + 0.00905201, + -0.017229678, + 0.006563993, + -0.0053649875, + -0.0049728192, + 0.019646976, + 0.012710102, + 0.012324363, + -0.0108907, + 0.013976612, + 0.013706595, + -0.001560636, + -0.014889528, + -0.01082641, + -0.014863812, + 0.0007272789, + 0.012022201, + 0.005040324, + -0.01753827, + 0.025754511, + 0.012157209, + 0.010556392, + -0.014850954, + -0.007971941, + 0.016625354, + -0.012112207, + 0.01602103, + -0.010530677, + 0.0050821123, + 0.01803973, + -0.00389275, + -0.0068854424, + -0.008087662, + 0.00810695, + 0.015185261, + -0.0056767934, + -0.014272345, + -0.010292804, + -0.006692573, + 0.010993564, + -0.013500867, + -0.0045742225, + -0.009932781, + -0.012986548, + -0.003212885, + 0.009154874, + -0.0029444748, + -0.015455279, + 0.002684101, + 0.0061300364, + -0.014825238, + -0.026796008, + 0.00095952593, + 0.03235065, + 0.019724125, + 0.008839854, + -0.009617761, + 0.00069151766, + 0.04595438, + -0.0068468684, + -0.00046690498, + -0.014606653, + 0.0008020158, + -0.0060721757, + -0.0015702795, + 0.031322014, + -0.0137966005, + -0.0037545268, + -0.0026519562, + 0.030653398, + 0.0011893621, + 0.0091098705, + -0.008917001, + -0.006866155, + -0.012189355, + 0.018824067, + 0.005490353, + -0.015558142, + -0.0068404395, + 0.008447685, + -0.026487416, + -0.008222671, + -0.010222085, + 0.00860841, + 0.025278768, + 0.032813538, + 0.0018242244, + -0.021189932, + 0.013680879, + 0.025085898, + -0.005663935, + 0.00083817885, + -0.00028448255, + 0.0015976026, + 0.005924309, + -0.015802443, + 0.016111035, + -0.0015317055, + -0.032813538, + 0.00024831953, + -0.044591434, + 0.021665677, + -0.0034105761, + 0.0016241221, + -0.000046082758, + 0.01778257, + -0.013706595, + 0.0033816458, + 0.0010993563, + -0.005969312, + 0.020752762, + -0.015056682, + -0.021061353, + -0.03880535, + -0.029110441, + 0.022308577, + -0.0025410561, + -0.013012265, + -0.008646984, + -0.00848626, + 0.012710102, + 0.019518396, + 0.0021038852, + -0.024713017, + -0.020469887, + -0.0016418019, + 0.00591788, + 0.0075797727, + 0.009322028, + -0.002684101, + 0.005680008, + -0.022720031, + 0.01740969, + 0.0051592602, + -0.008113379, + -0.030550534, + -0.028518975, + 0.020122722, + 0.010897129, + 0.031116284, + -0.007284039, + 0.00484424, + 0.01038281, + -0.01120572, + 0.0005018626, + -0.0068597263, + -0.0056542917, + -0.03247923, + 0.010961418, + 0.015249551, + 0.0012938331, + 0.020187011, + -0.00427206, + 0.014953818, + 0.0064900597, + -0.002991085, + -0.011160717, + -0.02304148, + -0.022938617, + -0.0004564579, + 0.004362066, + -0.020187011, + -0.0076054884, + 0.0108907, + -0.01025423, + 0.020367023, + 0.011617175, + -0.005570715, + -0.008319106, + 0.03556514, + 0.0024156908, + 0.031476308, + -0.009836346, + 0.0010897128, + -0.012838682, + -0.02526591, + -0.000019249284, + 0.00880128, + 0.006348622, + 0.011025708, + 0.0038123878, + -0.0015493853, + -0.0329164, + 0.020932773, + 0.019981284, + 0.032144923, + 0.012780821, + -0.007856219, + -0.018065447, + -0.025741654, + -0.032967832, + -0.0316306, + -0.027516054, + 0.0054710656, + 0.009804201, + -0.030370522, + 0.023722952, + -0.003187169, + -0.027207462, + 0.010119221, + 0.00715546, + 0.027361758, + -0.0030601965, + 0.013693737, + 0.0047767353, + -0.0075026248, + -0.020341307, + -0.0048024515, + -0.016535347, + -0.009707767, + 0.02697602, + 0.01272939, + 0.000053943197, + 0.020045573, + 0.016239615, + 0.010427813, + 0.032376364, + -0.009315599, + -0.0133465715, + 0.018849783, + 0.0173454, + -0.02165282, + 0.00993921, + -0.019441249, + 0.012189355, + -0.018271174, + -0.020212727, + -0.001946375, + -0.0053264135, + -0.015853876, + -0.006615425, + -0.04348565, + 0.0024783735, + 0.0023722954, + 0.0014577722, + 0.009489181, + -0.010183511, + -0.016149608, + -0.02044417, + -0.011867905, + 0.019364102, + -0.005284625, + 0.016175324, + 0.006052889, + -0.006432199, + -0.02518876, + -0.008409112, + 0.009251309, + 0.02810752, + 0.0015590288, + -0.004236701, + -0.021087069, + 0.01600817, + 0.041685537, + -0.008145523, + -0.0035905878, + 0.008087662, + -0.008878428, + 0.006477202, + 0.021305654, + -0.0036613066, + -0.01094856, + 0.013963754, + -0.022102848, + 0.0000116023075, + -0.026281688, + -0.010350665, + -0.011315012, + -0.016728217, + -0.0039666835, + -0.009341314, + 0.019441249, + -0.0007718799, + 0.006737576, + -0.025214477, + 0.03672236, + 0.0076890653, + -0.01760256, + 0.015326699, + -0.0050081788, + 0.014259487, + 0.0020138794, + 0.015558142, + 0.0072326073, + -0.024648726, + 0.038085304, + -0.010022786, + -0.034999393, + -0.007393332, + 0.0021038852, + -0.0065125613, + -0.0012512411, + -0.0075926306, + 0.010485673, + -0.0109228445, + 0.0138737485, + -0.017834002, + -0.0034266487, + 0.0009715803, + -0.022360008, + 0.002631062, + 0.01171361, + -0.022437155, + -0.0080490885, + 0.012896542, + -0.0088848565, + 0.004088834, + -0.03682522, + -0.006563993, + -0.022835752, + 0.012639384, + 0.0044134976, + -0.014786664, + -0.016149608, + -0.005040324, + -0.009662763, + 0.00022039362, + -0.005773228, + 0.014092334, + -0.009881349, + -0.0046867295, + -0.015853876, + 0.021639962, + -0.011662178, + 0.0061557526, + -0.017589701, + -0.007399761, + -0.018566906, + 0.012009343, + -0.0017390402, + -0.020367023, + 0.00021838456, + -0.04006543, + -0.022720031, + -0.0016699287, + -0.014992392, + 0.0004910137, + 0.002658385, + 0.008756277, + 0.024597295, + -0.0067890077, + -0.0010712296, + 0.022642883, + 0.001965662, + 0.005641434, + -0.036362335, + -0.018515475, + 0.0029605473, + -0.011430735, + 0.014015186, + 0.009527755, + -0.0011282868, + -0.011803616, + 0.010215656, + -0.004291347, + 0.00892343, + -0.014066618, + -0.012986548, + 0.008942718, + 0.0097913435, + 0.026101677, + 0.026950303, + 0.008904143, + -0.007071883, + -0.013153702, + -0.0116043165, + 0.013359429, + 0.03265924, + -0.0078047873, + 0.0056767934, + 0.0068147234, + -0.008248387, + 0.012883685, + -0.015596717, + 0.01285154, + 0.0053199846, + 0.015841018, + 0.0010013144, + -0.010794265, + 0.0064739874, + 0.01513383, + -0.0045870803, + -0.012317934, + -0.0015566179, + 0.006943303, + -0.02702745, + -0.0014224128, + 0.0106978305, + -0.014645226, + -0.000055801574, + -0.024327276, + 0.0035616574, + -0.037879575, + 0.0008253209, + -0.02697602, + -0.0082033845, + -0.03615661, + 0.03368788, + 0.02221857, + -0.015262409, + -0.0033173559, + -0.03026766, + -0.001554207, + -0.0024896243, + -0.010961418, + -0.010267088, + -0.030601965, + -0.026101677, + 0.0016892157, + 0.00560286, + -0.027516054, + -0.0084283985, + 0.000048794987, + 0.0063904105, + 0.021511381, + 0.23596944, + 0.0104471, + -0.016908228, + 0.028724702, + -0.0034170053, + 0.03551371, + 0.024455857, + -0.012176497, + 0.024404425, + 0.025291625, + -0.0106206825, + 0.0038123878, + 0.0081262365, + -0.000507488, + 0.0036484487, + -0.0067504337, + -0.029701907, + 0.0073033264, + -0.0068725846, + -0.008171239, + 0.013783743, + -0.010871412, + 0.011745755, + 0.0012890113, + 0.03134773, + 0.0059789554, + -0.013018694, + -0.00068870495, + 0.023465794, + 0.013256566, + -0.007830503, + -0.00974634, + 0.0013966969, + -0.01329514, + -0.005078898, + -0.0063229064, + -0.016046746, + 0.012369366, + 0.01665107, + 0.024481572, + 0.015455279, + 0.013655163, + -0.0282361, + -0.012054346, + 0.0068404395, + 0.02152424, + -0.012337221, + -0.01608532, + 0.023877248, + 0.012832253, + -0.016921086, + -0.0017358258, + 0.029830487, + 0.01949268, + 0.0017952939, + 0.0262174, + 0.02392868, + -0.008036231, + 0.02702745, + -0.008151952, + -0.009514897, + 0.018759776, + -0.02234715, + 0.0045035034, + 0.014452357, + -0.0056317905, + -0.017885435, + 0.007926938, + 0.009682051, + -0.014902386, + 0.013693737, + 0.0077276393, + 0.014285203, + 0.010099934, + -0.008743418, + -0.006412912, + 0.019518396, + -0.0026278475, + 0.021035638, + -0.012774392, + -0.009765628, + -0.014015186, + -0.0045356485, + 0.020559892, + -0.0092641665, + -0.017872578, + 0.00052034593, + 0.0069690193, + 0.032556377, + -0.0059532397, + -0.0043074195, + -0.016162466, + 0.012157209, + -0.002605346, + 0.009932781, + 0.024468714, + -0.015841018, + 0.017821144, + -0.024597295, + 0.0053489152, + -0.027901793, + -0.035153687, + 0.010839268, + -0.015661007, + -0.016471058, + 0.010607825, + -0.0019174446, + 0.017486837, + 0.041814115, + -0.001841904, + 0.006493274, + -0.0063775526, + 0.009881349, + -0.004291347, + 0.017191105, + -0.006911158, + 0.011630033, + -0.011462879, + -0.01784686, + -0.010871412, + -0.006348622, + -0.021768542, + -0.00943132, + 0.0021231722, + -0.007573344, + -0.012131494, + -0.004911744, + 0.016239615, + 0.0019142301, + -0.03875392, + 0.04027116, + -0.008344822, + 0.027798928, + 0.0045806514, + -0.006692573, + 0.00011431538, + -0.011636462, + -0.008190527, + 0.015866734, + -0.01051139, + 0.0018708345, + -0.0032803894, + 0.01240794, + -0.00031160485, + -0.0011821295, + 0.00062682596, + 0.006531848, + -0.022514304, + -0.01784686, + -0.022488588, + -0.010183511, + -0.011199291, + -0.00019899716, + -0.007791929, + 0.015185261, + -0.011192862, + -0.023362929, + -0.0060111005, + 0.0029042938, + 0.02286147, + -0.008376967, + 0.007959083, + -0.0013500868, + -0.0049021007, + 0.0048153093, + 0.00079639046, + -0.16489059, + 0.01753827, + 0.017563986, + -0.016432485, + -0.011083569, + 0.0035938022, + 0.024507288, + 0.020598466, + -0.0064739874, + 0.032119207, + 0.009013436, + 0.0116043165, + -0.05811802, + -0.01956983, + -0.00021798276, + 0.014285203, + -0.0032369937, + -0.003532727, + 0.024545863, + 0.008190527, + -0.0051592602, + -0.024082975, + 0.019466965, + 0.0066347118, + 0.0059918133, + 0.00050507707, + -0.01569958, + 0.035333697, + -0.0025410561, + -0.008711274, + -0.0039506108, + 0.0027049952, + 0.0025185547, + 0.025934523, + 0.021485666, + -0.0020797765, + 0.0018627982, + 0.008666271, + -0.0022951474, + -0.0050049643, + -0.007920509, + 0.019595545, + 0.011295726, + 0.02354294, + -0.019068368, + 0.026924586, + 0.036130894, + 0.0130379805, + -0.0059114513, + -0.0068275817, + 0.017049666, + -0.03070483, + -0.01684394, + -0.004053475, + 0.0033077125, + 0.01329514, + 0.02165282, + 0.015429563, + -0.004030973, + 0.024275845, + 0.010961418, + -0.04096549, + -0.0073483293, + 0.0031437734, + 0.0020122721, + -0.014285203, + 0.006097892, + 0.009206305, + -0.028827567, + 0.009842775, + -0.019389817, + -0.008023373, + 0.009142016, + -0.0119064795, + 0.0028448256, + 0.003519869, + -0.017756855, + 0.010813552, + -0.012054346, + -0.010119221, + 0.012292218, + 0.029804772, + -0.0058021583, + -0.005088541, + -0.017075382, + 0.017962582, + -0.0023080055, + 0.016856797, + -0.021292796, + -0.021961411, + 0.022668598, + -0.034922242, + -0.0016683214, + -0.045748655, + 0.0076826364, + 0.010723546, + -0.0007630401, + -0.009270595, + 0.0084283985, + -0.002063704, + 0.008331964, + -0.0029685835, + -0.011006421, + 0.019235522, + 0.029213306, + 0.017101098, + -0.007001164, + 0.0023321141, + 0.020238442, + -0.002741962, + -0.022321435, + 0.023774384, + -0.00015469744, + 0.024790164, + 0.008781993, + -0.006236115, + 0.009926352, + -0.028081805, + 0.0071811755, + 0.013655163, + 0.042328432, + 0.0036355907, + -0.0065061324, + 0.005708938, + -0.008698416, + -0.031064853, + -0.099109225, + -0.019916994, + 0.016676785, + 0.01968555, + 0.0024462286, + 0.02265574, + 0.008994149, + 0.028210383, + -0.004609582, + 0.026410269, + -0.0047124457, + -0.020649899, + -0.019646976, + 0.0067118597, + 0.0067504337, + -0.014066618, + 0.011893622, + -0.023028621, + -0.039911136, + 0.0058150166, + -0.00039819523, + 0.0018033301, + -0.0007843361, + -0.007734068, + -0.015249551, + -0.011668607, + -0.035359416, + 0.013256566, + 0.0025410561, + -0.0103956675, + 0.01974984, + -0.017036809, + 0.014388067, + -0.005908237, + -0.009720624, + 0.0051239007, + -0.014580937, + 0.00242212, + 0.009193447, + -0.03456222, + 0.0024446214, + 0.0034234342, + 0.011938624, + -0.012845111, + -0.011797186, + -0.0029155444, + -0.013082983, + 0.0039409674, + -0.00042712566, + -0.026873155, + 0.0045227907, + 0.03898536, + -0.015661007, + -0.003998828, + 0.038522474, + -0.028133236, + 0.01753827, + 0.022694316, + -0.017924009, + 0.0150823975, + 0.013835175, + 0.004127408, + -0.0038156023, + 0.020289876, + -0.011655749, + -0.015288125, + -0.030653398, + -0.010305662, + 0.015995312, + -0.036233757, + -0.010267088, + 0.013886606, + -0.0061396803, + 0.011122143, + -0.017422548, + 0.0036420196, + -0.007939796, + -0.012459372, + 0.00088157447, + -0.006052889, + -0.028518975, + -0.017949725, + -0.0053649875, + -0.0062136133, + 0.0004568597, + 0.02728461, + -0.018374037, + -0.007084741, + 0.03659378, + -0.009977784, + 0.003944182, + 0.039525397, + 0.011089998, + -0.0131087, + -0.013603731, + 0.015108113, + 0.010993564, + 0.017795429, + 0.016535347, + -0.016535347, + -0.016869655, + -0.001407144, + -0.045337196, + 0.01253009, + -0.0041949125, + -0.015185261, + -0.0063968394, + 0.00093380996, + -0.013629447, + 0.0072776102, + -0.005021037, + 0.0011564136, + -0.004754234, + -0.00930917, + -0.003805959, + -0.0049728192, + -0.010453529, + -0.0008880035, + 0.013809458, + -0.0038284601, + 0.020521319, + -0.006068961, + -0.0025715937, + 0.003969898, + 0.0060625323, + 0.00582466, + -0.02849326, + 0.014362351, + -0.017924009, + -0.014966676, + -0.02152424, + -0.009662763, + 0.009090584, + -0.02785036, + 0.0061428947, + 0.03438221, + -0.015571, + -0.02462301, + -0.014529505, + 0.022630025, + 0.004448857, + -0.02126708, + -0.026513131, + -0.032376364, + 0.019531256, + -0.01506954, + -0.023851532, + 0.020791335, + -0.011032137, + -0.010909987, + 0.0073804744, + 0.009322028, + 0.015802443, + 0.023080055, + 0.0012576701, + -0.0076247756, + -0.0067247176, + -0.014568078, + 0.037108097, + 0.0068018655, + 0.013822316, + -0.018194025, + 0.012793679, + -0.009926352, + 0.0022292503, + 0.015030965, + 0.008621268, + 0.013134415, + -0.008550549, + -0.009058439, + -0.000013900168, + 0.0052364077, + -0.015776727, + -0.007997656, + 0.04348565, + 0.016818224, + 0.022964332, + 0.0062200422, + -0.008492689, + -0.003507011, + -0.0048410255, + 0.0051978338, + 0.021395661, + -0.004792808, + -0.008942718, + 0.014760949, + 0.01892693, + 0.03520512, + -0.045440063, + -0.0027387473, + 0.0033912894, + -0.0019319098, + -0.022745747, + -0.00031240846, + -0.0035841588, + 0.0055546425, + 0.005680008, + 0.0024076547, + -0.0072326073, + 0.005641434, + 0.0065414915, + 0.025960239, + 0.011128572, + -0.016252473, + -0.0020315591, + -0.02594738, + -0.015095255, + 0.009013436, + -0.011115714, + -0.011912908, + -0.0131151285, + 0.008589123, + 0.010408525, + -0.021999985, + 0.009881349, + 0.016059604, + -0.0048024515, + -0.009026295, + -0.026770292, + -0.022038558, + -0.013005836, + 0.0064514857, + 0.006943303, + 0.008061946, + -0.003748098, + -0.016175324, + 0.023401503, + 0.021665677, + 0.032942116, + -0.030421954, + 0.017178247, + 0.016252473, + 0.009302741, + 0.0023915821, + -0.0040631182, + -0.014992392, + -0.018309748, + -0.020418454, + -0.023915822, + 0.01702395, + 0.006400054, + 0.048011657, + -0.009784915, + -0.04309991, + 0.027824644, + -0.01424663, + 0.01183576, + 0.0054260627, + 0.013526583, + -0.020341307, + -0.008466972, + -0.0024831952, + 0.014735232, + 0.024713017, + -0.00892343, + -0.018155452, + -0.0020267374, + -0.025561642, + 0.010479244, + -0.024674442, + -0.011263581, + 0.034485072, + 0.0047574486, + 0.0052139065, + 0.007881935, + -0.017628275, + -0.009238451, + 0.010479244, + 0.0109228445, + -0.0021987127, + -0.010106363, + 0.016381053, + -0.012137922, + -0.02354294, + -0.004448857, + 0.013719453, + -0.026718859, + -0.016946804, + -0.02633312, + -0.0027355328, + 0.00810695, + 0.0015614396, + 0.029856203, + -0.01398947, + -0.021035638, + -0.0021183505, + -0.007984798, + -0.017872578, + 0.012067203, + -0.012427227 + ] + }, + { + "object": "embedding", + "index": 3, + "embedding": [ + 0.024428807, + -0.010380333, + 0.002464533, + -0.016939685, + -0.0017831246, + 0.02194517, + -0.01774209, + -0.028529994, + 0.0144051, + -0.010157443, + 0.00918946, + 0.0086672595, + -0.00750186, + 0.0065784566, + -0.017601987, + -0.016290117, + 0.032249082, + -0.008641786, + 0.024658067, + -0.025307633, + -0.022085274, + 0.009832659, + -0.007527333, + 0.010335755, + -0.028555468, + 0.0007634002, + 0.010736958, + -0.016697688, + 0.0077183824, + 0.02269663, + 0.0116094155, + -0.012628344, + 0.03436336, + -0.029956495, + -0.038209815, + 0.010221126, + 0.017958613, + 0.0039833733, + 0.01928322, + -0.019423323, + 0.0054862923, + 0.01928322, + 0.00044180098, + -0.009807185, + -0.019525215, + -0.0032733073, + 0.019346902, + 0.013309752, + -0.008527157, + 0.023919344, + 0.008246952, + 0.013972055, + -0.014430573, + -0.016264644, + 0.0047061755, + -0.036477637, + 0.010310282, + 0.018442605, + -0.015424028, + 0.0035089345, + -0.011838675, + -0.0071197622, + 0.00086210895, + -0.0028721043, + -0.0017656118, + -0.0024931903, + -0.010526804, + 0.0044960217, + 0.019729001, + -0.0010865916, + 0.022836732, + 0.037496563, + 0.010641433, + 0.005871575, + 0.008832836, + 0.010342123, + -0.010176547, + 0.0061167544, + -0.0052538496, + -0.011450208, + -0.00058429176, + -0.018060505, + -0.018939331, + -0.014634359, + 0.012163457, + 0.0053875837, + -0.015729707, + -0.0085207885, + -0.030899003, + -0.023817452, + -0.0016939684, + 0.048526466, + 0.015844336, + -0.010157443, + 0.007036974, + 0.016175488, + 0.012711132, + 0.024594383, + 0.025231214, + -0.035025664, + 0.00416487, + 0.00859084, + -0.035433233, + -0.00014378433, + -0.03744562, + -0.025842572, + 0.00046050787, + 0.0015220243, + 0.030491432, + -0.027358226, + -0.027001603, + 0.020314885, + 0.043075196, + -0.020493196, + 0.005836549, + -0.017461885, + 0.01515656, + -0.015997175, + -0.02018752, + 0.0012720684, + 0.009819922, + 0.044807374, + 0.016825056, + -0.013628167, + 0.040145777, + -0.0038687438, + -0.01083885, + -0.02149939, + -0.006648508, + 0.012150721, + 0.010857956, + 0.015424028, + -0.000029478275, + 0.0053621107, + -0.012571029, + 0.00039443673, + -0.016939685, + 0.018811965, + 0.008081376, + -0.004909961, + 0.010584119, + 0.024148602, + -0.02588078, + -0.010526804, + -0.0029564844, + 0.027893165, + 0.018238818, + -0.013640904, + -0.016455693, + 0.0015498856, + 0.007871222, + -0.021142764, + 0.008756416, + -0.005378031, + 0.0064988527, + 0.0018786492, + -0.030593324, + 0.014035738, + -0.013564484, + 0.0051901666, + -0.02014931, + 0.009437825, + 0.029829128, + -0.007871222, + 0.026288353, + 0.025243951, + 0.010972585, + 0.009488771, + -0.02281126, + 0.0039292425, + -0.0041393964, + 0.026390245, + -0.022594737, + 0.015691496, + -0.013704587, + 0.013437118, + 0.0045342315, + -0.014748989, + -0.014825408, + -0.0022018405, + -0.019703528, + 0.0042253686, + 0.016009912, + 0.012163457, + 0.0058906795, + -0.00003445351, + 0.026594032, + -0.014354154, + 0.007259865, + -0.012469136, + 0.022760313, + 0.020849822, + -0.015525921, + -0.038439073, + -0.68227446, + -0.04771132, + 0.021805067, + -0.004375024, + -0.001918451, + 0.030746164, + 0.012545556, + 0.01856997, + -0.006170885, + -0.012520082, + 0.011813201, + 0.015131086, + 0.004152133, + 0.0062377523, + 0.0064797476, + -0.022556527, + -0.013640904, + -0.0046202033, + 0.013475328, + -0.0036808788, + 0.0012983377, + 0.009348668, + -0.005791971, + -0.012825761, + 0.020862559, + 0.018073242, + 0.024517965, + 0.010227494, + -0.008208741, + 0.004056609, + -0.016608533, + 0.017525569, + -0.0148763545, + -0.007985851, + 0.03856644, + 0.00060260063, + -0.012443663, + 0.017614724, + 0.017652934, + 0.011794096, + -0.016200962, + 0.009163987, + 0.006712191, + -0.023231568, + -0.01444331, + 0.014850881, + 0.011596679, + -0.013921109, + 0.03999294, + 0.0084889475, + 0.020849822, + -0.030516906, + 0.013182386, + -0.0028116056, + 0.028402628, + 0.003922874, + 0.037165415, + 0.012182563, + -0.009622505, + 0.006317356, + -0.0015506817, + -0.00072558847, + -0.00050030975, + -0.009100304, + -0.0068395566, + -0.0043845763, + -0.029064933, + -0.022836732, + -0.022289058, + -0.0076801726, + 0.0012370427, + 0.015296662, + -0.0127175, + 0.013233332, + 0.0041139233, + -0.005747393, + 0.023040518, + -0.007998588, + 0.01140563, + 0.0023116937, + 0.009781713, + -0.014073948, + -0.028835673, + -0.01185141, + 0.038031504, + -0.0057633137, + -0.040706187, + -0.023116937, + 0.022314532, + -0.0021938803, + 0.012150721, + -0.0067312955, + -0.025842572, + -0.007030606, + -0.012112511, + 0.038515493, + -0.016162751, + -0.0009011148, + -0.0030169832, + 0.0002167213, + 0.0025791624, + -0.016048122, + -0.01222714, + -0.0059893886, + 0.036961626, + -0.011170003, + -0.019372376, + 0.019499741, + 0.014748989, + -0.026237406, + 0.03624838, + -0.017347256, + -0.008686365, + 0.0101383375, + 0.013526274, + -0.026568558, + 0.053035222, + 0.0012744565, + -0.010195652, + -0.0066421395, + 0.011348315, + 0.023104202, + -0.0016732714, + 0.0016780477, + -0.011583942, + -0.013717324, + -0.007087921, + -0.007712014, + -0.024810906, + 0.007049711, + 0.0048335413, + 0.0040725293, + 0.018506287, + 0.003537592, + 0.008603577, + -0.005836549, + 0.016583059, + -0.012271719, + 0.019907312, + -0.0027940928, + -0.01654485, + 0.006215463, + -0.037216358, + 0.0039706365, + 0.003036088, + -0.031561308, + -0.042718574, + -0.005263402, + -0.01928322, + 0.0055340547, + -0.020913506, + -0.011953304, + -0.021091817, + 0.018862912, + 0.006763137, + -0.0065211416, + -0.029141352, + 0.002504335, + -0.020238465, + 0.0030281278, + 0.002696976, + -0.0067440323, + -0.0029596686, + -0.0013747573, + 0.00010248987, + -0.024377862, + -0.009208566, + 0.022365479, + -0.0077756974, + -0.023320723, + -0.008686365, + 0.00052498694, + -0.000013967976, + -0.010647802, + -0.017423676, + -0.011418366, + -0.011501154, + -0.029192299, + 0.0001619937, + -0.015742444, + 0.0138829, + 0.013742796, + 0.01594623, + -0.0007228023, + 0.039789155, + -0.0076101213, + 0.012201668, + 0.016264644, + 0.0030822584, + -0.012481873, + -0.0007176281, + 0.0031029554, + 0.00016915804, + -0.010303914, + -0.0039419793, + 0.0022909967, + 0.012902181, + 0.013093229, + 0.0050819055, + 0.0030456407, + 0.010252967, + -0.01984363, + 0.017194416, + -0.01797135, + 0.0051041944, + -0.04508758, + 0.008762784, + -0.008539894, + -0.0072917063, + 0.02746012, + -0.00082469516, + -0.011845043, + -0.007852117, + -0.008374318, + 0.0024868222, + 0.008839204, + -0.016264644, + 0.004047056, + -0.009367773, + -0.008125954, + 0.0013715731, + 0.0037222728, + 0.0351785, + 0.0013373435, + -0.0021349734, + 0.0035312236, + 0.0259572, + 0.018990278, + -0.008679996, + -0.015207506, + -0.023690086, + -0.010928007, + -0.01376827, + 0.014023002, + -0.03713994, + -0.00040319315, + 0.0027654353, + -0.03724183, + 0.02389387, + 0.019779947, + 0.0011064926, + 0.03810792, + 0.02412313, + -0.0026332932, + 0.011845043, + -0.0034420674, + 0.012520082, + 0.009845396, + -0.029421557, + 0.014608886, + -0.017487358, + -0.0074636503, + 0.004148949, + 0.0093868775, + 0.014596149, + -0.010762431, + 0.034414306, + 0.009253143, + 0.017474622, + 0.021028135, + -0.028682834, + -0.005075537, + 0.0059225215, + -0.0031125078, + 0.0061772536, + 0.009622505, + -0.009240407, + -0.008399791, + 0.0024724933, + -0.026364772, + -0.021817803, + -0.0022129852, + 0.023562718, + -0.018442605, + 0.018022295, + -0.014736252, + -0.0052092713, + 0.0037318252, + 0.010265703, + 0.02111729, + 0.0013564484, + -0.03331896, + 0.014290471, + -0.0012306744, + -0.000010982834, + -0.032809492, + -0.032325502, + 0.01132921, + 0.0020808429, + 0.00047921477, + 0.014048475, + 0.004820805, + 0.03398126, + 0.006024414, + 0.0003705556, + -0.025893517, + 0.007858485, + 0.01511835, + 0.011768623, + 0.0091576185, + -0.008469842, + -0.01853176, + -0.02607183, + -0.003980189, + 0.0034134102, + 0.012443663, + -0.011297368, + 0.0015427213, + -0.01148205, + -0.030771637, + -0.02221264, + 0.002843447, + 0.004276315, + -0.01781851, + -0.01527119, + 0.0015228203, + -0.021601282, + -0.0027733957, + 0.032503817, + 0.014927301, + 0.0053143483, + -0.011698572, + -0.016901474, + -0.012405453, + 0.07677625, + 0.013844689, + 0.0063237245, + 0.014621622, + 0.0046934388, + -0.015347608, + -0.018175134, + 0.013322488, + 0.0031507176, + 0.001935964, + 0.007845748, + -0.012908549, + 0.012825761, + -0.000054677846, + 0.012634712, + 0.0055754487, + 0.0067312955, + 0.012953127, + 0.024734486, + -0.025142059, + 0.015576867, + -0.0017831246, + -0.012889444, + 0.005298428, + -0.00686503, + -0.0028816569, + 0.025766151, + 0.0036999837, + 0.0140102655, + 0.005393952, + -0.0031650462, + 0.015640551, + 0.0013588365, + -0.022352742, + -0.01132921, + -0.008170532, + -0.003852823, + 0.01961437, + -0.0040534246, + 0.003875112, + 0.031968877, + 0.021410232, + 0.013093229, + -0.011469313, + -0.0009608176, + 0.01500372, + -0.010666907, + 0.016837792, + -0.004460996, + -0.0033433589, + 0.026772343, + -0.0073744943, + -0.0045405994, + -0.005670973, + 0.017347256, + 0.020938978, + -0.0027511066, + -0.017398203, + -0.011692204, + -0.017194416, + 0.0045405994, + -0.0033879369, + -0.0018054137, + -0.007928536, + -0.027969584, + -0.0023116937, + 0.0063078036, + -0.0044801007, + -0.013297016, + -0.0006826024, + -0.0065179574, + -0.024709014, + -0.021066345, + 0.0023944818, + 0.0377513, + 0.023575455, + 0.02092624, + -0.010851587, + -0.010068286, + 0.04880667, + 0.004760306, + -0.0034038576, + -0.015933493, + 0.01053954, + -0.01200425, + 0.0023053256, + 0.040833555, + -0.012074301, + -0.024059447, + -0.0005229968, + 0.034465253, + -0.008113218, + 0.016672216, + -0.010526804, + -0.00547674, + -0.011093583, + 0.021372022, + 0.0103994375, + -0.01706705, + -0.0020999478, + 0.020696983, + -0.0259572, + -0.013093229, + -0.015182033, + 0.0141248945, + 0.01132921, + 0.023957554, + 0.002021936, + -0.022976834, + 0.01511835, + 0.0000023414705, + -0.0073872306, + -0.016404746, + 0.0038814803, + 0.014175842, + 0.014392364, + -0.011488417, + 0.015220243, + -0.0067058224, + -0.02888662, + 0.0082596885, + -0.034490727, + 0.021168238, + -0.0013039099, + -0.009998235, + -0.0010085799, + 0.0192068, + 0.0014089869, + 0.0056805257, + 0.011131792, + 0.0013644088, + 0.025345843, + -0.019665318, + -0.0127175, + -0.035153028, + -0.02419955, + 0.029905548, + 0.0105140675, + -0.00964161, + -0.015245716, + -0.010144706, + 0.009011148, + 0.0062536728, + 0.0040247673, + -0.026594032, + -0.01714347, + 0.0028912092, + 0.007928536, + -0.011182739, + 0.01519477, + 0.00092101574, + -0.009966393, + -0.012316297, + 0.018608179, + 0.0016477982, + -0.009011148, + -0.019346902, + -0.030822584, + 0.027689379, + 0.007017869, + 0.025307633, + -0.010870692, + -0.0004103575, + 0.010596856, + -0.0032335056, + 0.0018245187, + 0.0022687078, + -0.0064893, + -0.03443978, + 0.032249082, + 0.008597208, + 0.007820276, + 0.022085274, + 0.00051225035, + 0.0048399097, + 0.019461533, + -0.0076164897, + -0.005454451, + -0.026594032, + -0.026746871, + -0.007584648, + 0.0041839746, + -0.016710425, + -0.007489124, + -0.004254026, + -0.0064415378, + 0.01872281, + 0.008851941, + -0.00922767, + -0.0031332048, + 0.032580234, + -0.018888384, + 0.042412896, + -0.012309928, + 0.0023944818, + -0.006107202, + -0.016888738, + -0.0046807025, + 0.010934375, + 0.004043872, + 0.014914564, + 0.01508014, + -0.017270837, + -0.015666025, + 0.005448083, + 0.0149909835, + 0.021473916, + -0.003196888, + -0.015653288, + -0.028147897, + -0.025485946, + -0.022289058, + -0.034770932, + -0.038439073, + 0.011424734, + 0.0008382278, + -0.02325704, + 0.025078375, + -0.0050628004, + -0.01909217, + 0.0036331166, + 0.014023002, + 0.028249789, + -0.003951532, + 0.0071261306, + 0.025829835, + -0.016786845, + -0.005830181, + 0.008336108, + -0.011934198, + -0.011189108, + 0.023104202, + 0.028224315, + -0.018888384, + 0.028759254, + 0.0076929093, + 0.0064670113, + 0.032733075, + -0.01812419, + -0.015691496, + -0.00011194281, + 0.025040165, + -0.015564132, + 0.012921286, + -0.026160987, + 0.01230356, + -0.019970996, + -0.004566073, + 0.007743856, + -0.0030026545, + -0.0097626075, + -0.006699454, + -0.028555468, + 0.012564661, + 0.015232979, + 0.0061772536, + 0.01928322, + -0.002273484, + -0.013309752, + -0.015385819, + -0.019168591, + 0.03268213, + 0.011978777, + 0.019181326, + -0.003241466, + -0.0060976497, + -0.0069605545, + 0.00037990903, + -0.0044482592, + 0.027078021, + -0.0048494623, + 0.005967099, + -0.023842923, + 0.021130027, + 0.034770932, + -0.022187166, + -0.0037795876, + 0.008380686, + -0.013666377, + -0.0057346565, + 0.013844689, + -0.009985498, + -0.02393208, + 0.005846102, + -0.030262172, + 0.0028052372, + -0.018850176, + 0.0007538478, + 0.012297192, + -0.023460826, + -0.0024279153, + -0.011864147, + 0.008055902, + 0.005897048, + -0.0056104744, + -0.010609591, + 0.025817098, + 0.008094112, + -0.012297192, + 0.016786845, + -0.008367949, + 0.012271719, + -0.011348315, + 0.010189284, + 0.0035630653, + -0.029472504, + 0.021091817, + -0.0092722485, + -0.03263118, + -0.0140102655, + -0.011399262, + -0.0036745104, + -0.006616666, + -0.0066867177, + 0.004040688, + -0.004566073, + 0.0088965185, + -0.01718168, + 0.005648684, + -0.003496198, + -0.021996116, + 0.016876, + 0.02603362, + -0.022314532, + -0.008234215, + 0.009921815, + -0.011112688, + 0.0022894046, + -0.035127558, + -0.008036798, + -0.027511066, + 0.0048239892, + 0.0037859557, + -0.009017516, + -0.012762078, + -0.0051710615, + -0.018009558, + 0.0008867861, + -0.006314172, + 0.011431103, + -0.006355566, + 0.006355566, + -0.02333346, + 0.00825332, + -0.02588078, + 0.024594383, + -0.008998412, + -0.023741031, + -0.018862912, + 0.012329034, + -0.00375093, + -0.00652751, + -0.0055276863, + -0.042667627, + -0.01812419, + -0.014659832, + -0.0057346565, + -0.000505882, + 0.0063714865, + -0.0017958613, + 0.02051867, + -0.01714347, + -0.0074827555, + 0.00821511, + 0.009246775, + -0.0075082285, + -0.024352388, + -0.009960025, + -0.0018420315, + -0.0107751675, + 0.020493196, + 0.011908726, + -0.00656572, + -0.008367949, + 0.014838144, + -0.00010696758, + 0.0047475696, + -0.0058874954, + -0.007177077, + 0.00077573885, + 0.0055436073, + 0.024849117, + 0.0377513, + 0.012125248, + 0.0035057506, + -0.019690791, + -0.014812672, + 0.004422786, + 0.03530587, + -0.02483638, + 0.009934552, + 0.0023323908, + -0.019372376, + 0.01650664, + -0.022900416, + 0.005094642, + 0.016124541, + 0.025689732, + 0.007928536, + -0.009781713, + 0.011647625, + 0.0118705155, + -0.00042627825, + -0.018608179, + -0.008132322, + 0.0022050247, + -0.01812419, + -0.00560729, + 0.016723162, + -0.020684246, + 0.004085266, + -0.019945523, + 0.004209448, + -0.018837439, + 0.0016064043, + -0.024339652, + -0.009278617, + -0.035433233, + 0.017309045, + 0.01710526, + -0.0052665863, + 0.003913322, + -0.03168867, + 0.002923051, + 0.00006199144, + -0.012239877, + 0.0066230344, + -0.022161692, + -0.026313826, + 0.004152133, + -0.0035280394, + -0.026084566, + 0.0030838505, + 0.015385819, + 0.0149909835, + 0.02479817, + 0.22925888, + 0.016570322, + -0.011125424, + 0.037598457, + 0.0056327633, + 0.030669745, + 0.02281126, + -0.017869456, + 0.03324254, + 0.029370612, + -0.016761372, + -0.0040088464, + -0.007743856, + 0.0025520972, + 0.00500867, + -0.02107908, + -0.033599164, + 0.0008788257, + -0.022441898, + -0.014112158, + 0.014379627, + -0.005075537, + 0.015131086, + 0.006966923, + 0.029345138, + 0.009807185, + -0.010826115, + 0.010068286, + 0.021321077, + 0.009348668, + -0.005432162, + -0.014838144, + 0.0032175847, + -0.011450208, + 0.0037955083, + -0.004715728, + -0.0015642142, + 0.008565367, + 0.020773403, + 0.030032914, + 0.012615607, + 0.01121458, + -0.03380295, + -0.014163105, + -0.0035949068, + 0.006552983, + -0.026313826, + -0.011055373, + 0.014494256, + 0.018149663, + -0.008164164, + 0.004339998, + 0.033268012, + 0.031077316, + -0.0078011705, + 0.01789493, + 0.028046004, + -0.006339645, + 0.005330269, + -0.010342123, + -0.019741738, + 0.019894578, + -0.025384054, + -0.006043519, + 0.0163538, + -0.011061741, + -0.022365479, + -0.0030647456, + 0.008839204, + -0.03135752, + -0.0004107555, + 0.0059734676, + 0.0074827555, + 0.013093229, + -0.016965158, + -0.017041577, + 0.008800994, + -0.003537592, + 0.022110745, + -0.0020728824, + -0.0086672595, + -0.005053248, + -0.010310282, + 0.0037541143, + -0.002800461, + -0.019015752, + -0.0008318595, + 0.006591193, + 0.026543085, + -0.015347608, + 0.0029262349, + -0.004098003, + 0.0010929599, + 0.00240085, + 0.018799229, + 0.027842218, + -0.0025314002, + 0.0141248945, + -0.020773403, + 0.016417483, + -0.027001603, + -0.035840806, + 0.007890327, + -0.0142395245, + -0.02314241, + 0.020085625, + 0.004002478, + 0.0007980279, + 0.026594032, + -0.0006599153, + -0.0058652065, + -0.015958967, + 0.0076101213, + -0.006801347, + 0.016723162, + -0.016786845, + 0.017576514, + -0.02265842, + -0.007966747, + 0.00307589, + -0.0031841511, + -0.012819393, + 0.00075942004, + -0.011392893, + 0.012348139, + -0.016901474, + -0.00825332, + 0.015653288, + 0.00043543268, + -0.035968173, + 0.03525492, + 0.0036745104, + 0.032784022, + -0.010635065, + -0.014698042, + 0.012539187, + -0.007807539, + 0.0024088104, + 0.010647802, + -0.014659832, + -0.0036331166, + -0.005285691, + 0.010590487, + 0.013246069, + -0.0042922357, + 0.0035885384, + -0.0022925888, + -0.01797135, + -0.0096479785, + -0.01196604, + -0.018862912, + -0.0039674523, + -0.005995757, + -0.01650664, + 0.017296309, + -0.0021827356, + -0.015767917, + -0.010450385, + 0.004967276, + 0.030924477, + -0.012551924, + 0.0032382817, + 0.020811612, + -0.0009998234, + 0.012456399, + -0.00065752724, + -0.16200961, + 0.016532114, + 0.006884135, + -0.011475681, + -0.019474268, + 0.0021365655, + 0.021881487, + 0.013220596, + -0.019117644, + 0.024161339, + -0.0014567492, + 0.017232627, + -0.053493742, + -0.017551042, + -0.0035598811, + 0.017041577, + -0.008450737, + 0.005846102, + 0.02123192, + 0.002357864, + 0.0051583247, + -0.02389387, + 0.0076929093, + 0.013793743, + 0.016684953, + -0.00551495, + -0.017156206, + 0.029880075, + 0.0033147014, + -0.015373082, + 0.0026364771, + 0.008578103, + 0.014061212, + 0.0056104744, + 0.022314532, + -0.0059893886, + 0.004467364, + 0.011921462, + 0.012087038, + -0.007597385, + -0.0013198307, + 0.022785787, + 0.020276675, + 0.01812419, + -0.013933846, + 0.027128968, + 0.02479817, + 0.02603362, + 0.0043845763, + -0.0039833733, + 0.019270483, + -0.0288102, + -0.020862559, + -0.011730413, + 0.021333814, + 0.019932786, + 0.02456891, + 0.015041931, + -0.007196182, + 0.024059447, + 0.011291, + -0.050386008, + -0.006511589, + 0.013831953, + 0.0026603583, + -0.00581426, + 0.00064717873, + 0.008743679, + -0.020289412, + 0.006871398, + -0.015360345, + -0.011392893, + -0.009597031, + -0.012558293, + 0.0024979666, + 0.01099169, + -0.022454634, + 0.00463294, + -0.010641433, + -0.005499029, + 0.014354154, + 0.02888662, + -0.008157795, + -0.009654347, + -0.015882546, + 0.009660714, + -0.00050468795, + 0.019359639, + -0.02265842, + -0.004607467, + 0.011252791, + -0.037904136, + -0.0048112525, + -0.040324092, + 0.010666907, + 0.014596149, + -0.008508052, + 0.0064096963, + 0.015029194, + 0.0066867177, + -0.001157439, + -0.003137981, + -0.015895283, + 0.0073999674, + 0.02142297, + 0.014264997, + -0.0008254912, + 0.013679113, + 0.03713994, + 0.00041632776, + -0.013233332, + 0.03357369, + -0.00223209, + 0.021601282, + 0.0063491976, + -0.009749871, + 0.019856367, + -0.02262021, + 0.0034643565, + 0.008673628, + 0.05721283, + -0.00889015, + 0.00012497793, + 0.005142404, + -0.012698395, + -0.016914211, + -0.10072107, + -0.01590802, + 0.016379274, + 0.029064933, + 0.00994092, + 0.0144687835, + 0.00757828, + 0.01976721, + -0.0075082285, + 0.026135514, + -0.004365471, + -0.015806127, + -0.007221655, + 0.00031722107, + -0.008240583, + -0.009246775, + 0.004884488, + -0.015360345, + -0.029141352, + 0.010004603, + -0.0050882734, + 0.009444192, + 0.008266057, + -0.007992219, + -0.016124541, + -0.0060658082, + -0.031204682, + 0.014532466, + 0.0055340547, + -0.017054314, + 0.025052901, + -0.018748282, + 0.010978953, + 0.00044936335, + -0.019856367, + 0.00036975957, + -0.012386348, + 0.0026794632, + 0.009711661, + -0.03976368, + -0.0019073066, + -0.008603577, + 0.011864147, + -0.01361543, + -0.0015275965, + 0.010004603, + -0.021244656, + 0.0015435173, + 0.0072980747, + -0.022467371, + -0.007138867, + 0.02532037, + -0.020964451, + -0.009597031, + 0.030185753, + -0.028861146, + 0.013207859, + 0.013010442, + -0.02344809, + 0.020454988, + -0.0066867177, + 0.019270483, + -0.006871398, + 0.014965511, + -0.0127684465, + -0.024874588, + -0.02520574, + -0.01762746, + 0.02626288, + -0.040120304, + -0.0050628004, + 0.0024295074, + -0.025193004, + 0.022314532, + -0.021626756, + 0.012774815, + -0.02753654, + -0.011972409, + 0.0057378407, + -0.010807009, + -0.023129674, + -0.01001734, + 0.0013835137, + -0.0015435173, + -0.003157086, + 0.029829128, + -0.011647625, + -0.0032175847, + 0.030848056, + 0.0021811435, + 0.012456399, + 0.031179208, + 0.011615784, + -0.023078728, + -0.018773755, + 0.017474622, + 0.00039145158, + 0.009329563, + 0.016812319, + -0.0068777665, + -0.016035385, + -0.01211888, + -0.043839395, + 0.014264997, + -0.004741201, + -0.015818864, + -0.016328327, + 0.0032733073, + -0.009329563, + 0.01136742, + -0.0099090785, + -0.010265703, + -0.008648154, + -0.0034420674, + -0.0051742457, + -0.010061918, + -0.013207859, + 0.0057155513, + 0.013322488, + 0.0027654353, + 0.007890327, + -0.012430926, + -0.015602341, + -0.004569257, + 0.0029739973, + 0.01797135, + -0.03181604, + 0.007419072, + -0.012443663, + -0.03604459, + -0.026797816, + -0.004505574, + 0.016977895, + -0.027256334, + 0.01234177, + 0.034159575, + -0.010042813, + -0.024517965, + -0.025040165, + 0.026390245, + 0.014494256, + -0.025676996, + -0.02959987, + -0.037904136, + 0.013411645, + -0.029880075, + -0.0046902546, + 0.031382993, + -0.021715911, + -0.0076419627, + 0.014812672, + 0.015602341, + 0.0010404214, + 0.022518318, + 0.0024565726, + -0.0116094155, + -0.0063269082, + -0.004219, + 0.022900416, + 0.009660714, + 0.011915094, + -0.023473563, + -0.000778923, + -0.009437825, + 0.0062441207, + 0.0038082448, + 0.008960201, + 0.0027940928, + -0.0007916596, + -0.012373611, + -0.016837792, + -0.0183025, + -0.009208566, + -0.014137631, + 0.04816984, + 0.0148763545, + 0.024250496, + 0.0039037694, + -0.0002296569, + -0.008017693, + -0.014608886, + 0.016188225, + 0.006712191, + -0.00922767, + -0.01928322, + 0.004524679, + 0.03056785, + 0.025676996, + -0.039075904, + -0.0024868222, + 0.003196888, + 0.0077756974, + -0.01665948, + 0.006884135, + -0.008762784, + 0.005368479, + 0.014621622, + 0.0051901666, + 0.005686894, + -0.008380686, + 0.0065466147, + 0.02111729, + 0.010768799, + -0.009240407, + 0.006661244, + -0.025906254, + -0.022365479, + -0.004082082, + -0.017512832, + -0.019525215, + -0.00656572, + 0.00855263, + 0.013207859, + -0.01020202, + -0.0063460134, + 0.018022295, + 0.00032458443, + -0.006043519, + -0.028861146, + -0.016264644, + -0.010870692, + 0.014506993, + 0.005368479, + 0.008788257, + 0.013080494, + -0.003836902, + 0.01594623, + 0.026797816, + 0.02817337, + -0.03199435, + 0.017270837, + 0.01665948, + 0.019487005, + -0.0043941285, + -0.0012577397, + -0.004359103, + 0.0006400144, + -0.016634006, + -0.024874588, + 0.026466664, + 0.007635595, + 0.05548065, + -0.018620916, + -0.039789155, + 0.019346902, + -0.021728648, + 0.0017146654, + 0.025052901, + 0.011080846, + -0.0183025, + -0.009667083, + 0.006107202, + 0.0177803, + 0.026415719, + -0.011991514, + -0.021040872, + -0.00081156055, + -0.024772696, + 0.015029194, + -0.03054238, + 0.0063491976, + 0.043380875, + -0.0006973291, + 0.004575625, + 0.009921815, + -0.021550335, + -0.007100657, + 0.020111099, + 0.01785672, + 0.004441891, + -0.0022161691, + 0.02314241, + -0.02281126, + -0.027714852, + -0.011762255, + 0.0060976497, + -0.03548418, + -0.0047730426, + -0.030058388, + -0.009068463, + 0.0057569453, + 0.008024061, + 0.039330635, + -0.009972761, + -0.0046265717, + 0.013819216, + -0.013093229, + -0.011341946, + 0.007011501, + 0.00095683744 + ] + }, + { + "object": "embedding", + "index": 4, + "embedding": [ + 0.016263332, + -0.011116868, + 0.0051686466, + -0.022411201, + 0.0032006947, + 0.018037975, + -0.021194303, + -0.014640802, + 0.013221087, + -0.012967567, + 0.0053049135, + 0.007897159, + -0.0077323713, + 0.017442202, + -0.023387253, + -0.0105844755, + 0.039143544, + -0.00080175814, + 0.025821049, + -0.018697128, + -0.025035135, + 0.0017841496, + -0.015540798, + 0.005637659, + -0.021701343, + -0.004151396, + 0.006705614, + -0.01524925, + 0.0028774561, + 0.020053461, + 0.014983053, + -0.021168951, + 0.014336577, + -0.026188655, + -0.017911214, + 0.012644328, + 0.016276008, + 0.006170052, + 0.014615449, + -0.03186751, + 0.00210105, + 0.006106672, + -0.002021825, + -0.012086583, + -0.012618977, + 0.016402768, + 0.027937945, + -0.00012012508, + -0.01505911, + 0.016630936, + -0.00044366065, + 0.01375348, + -0.022449229, + -0.016732344, + -0.00623977, + -0.030219628, + 0.0074661747, + 0.018430931, + -0.01066687, + -0.017683046, + -0.011161234, + -0.007840117, + 0.0013254362, + -0.003059674, + 0.011757007, + -0.004591888, + -0.005472871, + 0.0044619585, + 0.011959824, + 0.0017065089, + 0.020687262, + 0.023045002, + 0.009386592, + 0.017581638, + 0.024718236, + 0.015097138, + -0.019749237, + 0.014108408, + -0.005574279, + -0.008448566, + 0.0031373145, + -0.013208412, + -0.019267548, + -0.011699965, + 0.016859105, + 0.000040652387, + -0.015578827, + -0.00031412757, + -0.030143572, + -0.02626471, + -0.013537988, + 0.036633693, + 0.033008352, + -0.0055932933, + 0.0029297448, + 0.01674502, + 0.014983053, + 0.022436552, + 0.02661964, + -0.03635482, + 0.0021311557, + 0.007897159, + -0.03245061, + 0.004154565, + -0.023856267, + -0.023437958, + 0.0073077246, + 0.0016138155, + 0.026467526, + -0.027735129, + -0.024477392, + 0.030042164, + 0.036177356, + -0.023881618, + -0.0060686436, + -0.016909808, + 0.010071097, + -0.020509798, + -0.03513792, + 0.0006967849, + 0.016973188, + 0.04053791, + 0.02040839, + -0.014273196, + 0.036405526, + -0.004059495, + -0.011490811, + -0.024794292, + -0.007485189, + 0.01859572, + -0.002457563, + 0.01562953, + 0.025783021, + 0.024363307, + -0.016098544, + 0.008220398, + -0.009532366, + 0.019242195, + 0.0005549719, + -0.023323873, + 0.015743615, + 0.027861888, + -0.014095732, + -0.011262642, + -0.0071429363, + 0.028292874, + 0.015680235, + -0.00055734866, + -0.02165064, + -0.007630963, + 0.004341536, + -0.015705587, + 0.0009808069, + 0.0013555418, + 0.009728844, + 0.01356334, + -0.013550663, + 0.0059101935, + -0.034504123, + -0.009285184, + -0.021092895, + -0.010514758, + 0.023881618, + -0.0015781643, + 0.023564719, + 0.025225276, + -0.00031947528, + 0.0033496378, + -0.012397146, + -0.009513352, + -0.009538704, + 0.040106922, + -0.017201357, + 0.02270275, + -0.012809116, + 0.018443607, + 0.0022056273, + -0.008632368, + -0.017961917, + -0.00391689, + -0.021067543, + -0.0064742765, + 0.009133072, + -0.0009990287, + 0.015337982, + -0.0078084273, + 0.016073192, + -0.0053619556, + 0.015870376, + 0.0023308028, + 0.018367551, + 0.031715397, + -0.0136901, + -0.03719144, + -0.6859247, + -0.04444212, + 0.0059323767, + -0.0013032531, + -0.007504203, + 0.027075976, + 0.004899281, + 0.022981621, + 0.0053524487, + -0.01706192, + 0.008093637, + 0.0020440079, + 0.020002756, + -0.006182728, + 0.009785886, + -0.025073165, + -0.016897133, + 0.002728513, + 0.00678167, + -0.0011384649, + 0.00620808, + 0.015971784, + -0.020129517, + -0.001593217, + 0.028318224, + 0.004217945, + 0.013081651, + 0.001050525, + -0.0012866159, + 0.018773183, + -0.008968283, + 0.014970378, + -0.0072316686, + -0.008651382, + 0.04641958, + 0.0064489245, + -0.011249966, + 0.011230952, + 0.0072126547, + 0.023171762, + -0.010102787, + -0.004290832, + 0.006173221, + -0.033008352, + -0.020104164, + 0.008049272, + 0.026797103, + -0.010007717, + 0.031943567, + 0.0013864395, + 0.026416823, + -0.023944998, + 0.010337293, + 0.0014894322, + 0.017670369, + 0.00830913, + 0.026518231, + -0.003527102, + -0.015287278, + -0.0010933066, + -0.006807022, + 0.0019536912, + -0.016390093, + 0.0018839733, + -0.02266472, + 0.0027776326, + -0.031842157, + -0.013094327, + -0.006274629, + -0.0018095017, + -0.0069591342, + 0.010064758, + -0.018570367, + 0.028140761, + 0.017023893, + 0.0023957675, + 0.022525284, + -0.007624625, + 0.0021248176, + 0.0050894213, + 0.009462648, + -0.016694317, + -0.029230898, + -0.012720385, + 0.028014, + -0.02352669, + -0.026214005, + -0.01611122, + 0.02314641, + 0.00037394254, + 0.025554853, + 0.003441539, + -0.022892889, + -0.0028552732, + -0.008524623, + 0.037292846, + -0.008860537, + 0.0057675885, + 0.017949242, + 0.0005391269, + 0.009735182, + -0.02594781, + -0.006730966, + -0.010799968, + 0.030675964, + -0.0024781616, + -0.016884457, + 0.031994272, + 0.0044207615, + -0.016377416, + 0.030599909, + -0.015021082, + -0.013804184, + 0.005672518, + 0.01394362, + -0.029535122, + 0.056535043, + 0.011940809, + 0.014285873, + 0.00025035135, + 0.015946431, + 0.009823915, + 0.001072708, + 0.00046505142, + -0.0020677755, + 0.0016922485, + -0.016580231, + -0.022322468, + -0.028064705, + 0.002088374, + -0.001561527, + -0.007979553, + 0.005663011, + 0.0022769298, + -0.0026714709, + -0.00025550099, + 0.0106351795, + -0.015046434, + 0.022677397, + -0.014349253, + -0.018785859, + -0.004103861, + -0.023298522, + 0.0012897849, + -0.008423214, + -0.012815455, + -0.03569567, + -0.013423904, + -0.015109814, + 0.021257684, + -0.028039353, + -0.008683072, + -0.031106949, + 0.019812617, + 0.0039961147, + -0.008011243, + -0.02963653, + 0.010286589, + -0.012745736, + 0.016884457, + 0.010933066, + 0.0043478743, + -0.0044080853, + -0.002113726, + -0.013512636, + -0.02333655, + -0.0007062919, + 0.030143572, + -0.007561245, + -0.023729507, + -0.011021798, + -0.0007138183, + -0.0055362512, + -0.015211222, + -0.016542204, + -0.009323211, + -0.00014230811, + -0.027101327, + 0.009088705, + -0.017201357, + 0.007916174, + 0.019787265, + 0.008252088, + -0.019622477, + 0.051109705, + 0.0011384649, + 0.02371683, + 0.018152058, + -0.010876024, + 0.012676018, + -0.018760508, + 0.0008025504, + 0.000495157, + -0.012815455, + 0.00830913, + 0.0017683046, + 0.0049214642, + 0.01133236, + 0.010394335, + -0.003053336, + 0.011750669, + -0.011104192, + 0.021853456, + -0.01486897, + 0.009906309, + -0.032171734, + 0.022867538, + -0.010552785, + -0.001085384, + 0.042033676, + 0.0058721653, + -0.02333655, + -0.0053619556, + -0.005723222, + 0.015426714, + 0.0020202405, + -0.01244785, + 0.01133236, + -0.011522501, + -0.007846455, + -0.0004381149, + 0.011826725, + 0.023171762, + -0.0050672386, + 0.00620808, + 0.0036031583, + 0.041729454, + 0.01362672, + -0.023032326, + -0.009861942, + -0.02021825, + -0.0095577175, + -0.019914025, + 0.020332333, + -0.033794265, + -0.005672518, + 0.0093041975, + -0.03845904, + 0.01581967, + 0.015223898, + 0.0012129365, + 0.01668164, + 0.030828077, + -0.003129392, + 0.011915457, + 0.0005957729, + 0.018798536, + 0.0096908165, + -0.019571772, + 0.012359118, + -0.017847834, + -0.0010933066, + -0.0127393985, + 0.017074596, + 0.02626471, + 0.00079502404, + 0.04119706, + 0.0047788587, + 0.028799914, + 0.02028163, + -0.015730938, + -0.019191492, + 0.012346442, + -0.0023292184, + 0.009025325, + -0.005545758, + 0.0029123153, + -0.0059513906, + 0.010267575, + -0.017391497, + -0.019406984, + 0.009716168, + 0.022411201, + -0.020877402, + 0.014133761, + -0.012910524, + -0.0036031583, + 0.00065796456, + 0.012397146, + 0.01786051, + -0.008239412, + -0.03582243, + 0.013550663, + -0.0028806252, + 0.0019980574, + -0.025529502, + -0.031132301, + 0.017999945, + 0.009139409, + 0.014045028, + 0.009063353, + 0.013030947, + 0.024680208, + 0.00167165, + 0.018545015, + -0.026721047, + 0.0003466099, + 0.01092039, + 0.014133761, + 0.004772521, + -0.0032609056, + -0.01903938, + -0.030168924, + -0.011592219, + 0.0088161705, + 0.0104323635, + -0.012555596, + 0.006192235, + -0.014336577, + -0.018354874, + -0.007821104, + 0.0021470005, + -0.002665133, + -0.01661826, + -0.009988703, + -0.007890821, + -0.022905566, + -0.009278845, + 0.03250131, + 0.004097523, + 0.0044746343, + -0.014678829, + -0.015946431, + -0.00020737173, + 0.077780046, + 0.013778832, + 0.006290474, + 0.009906309, + 0.009228141, + -0.0168084, + -0.023437958, + 0.0071302606, + -0.009798562, + 0.0025859077, + 0.010400673, + -0.011807711, + 0.024566123, + 0.0019536912, + -0.009411944, + -0.0030295684, + 0.014336577, + 0.014640802, + 0.042642128, + -0.019837968, + 0.0023830915, + 0.020205574, + -0.011630246, + 0.0009950674, + 0.005773926, + 0.00136901, + 0.02222106, + 0.0050704074, + 0.017277414, + -0.0025336193, + 0.005399984, + 0.017315442, + -0.010926728, + -0.013652071, + -0.010121801, + -0.0019489378, + -0.0026635483, + 0.0022183033, + -0.003132561, + -0.014425309, + 0.034326658, + 0.0098049, + 0.0094563095, + -0.008803495, + -0.009380254, + 0.023108382, + -0.006223925, + 0.018481635, + -0.018849239, + -0.01604784, + 0.027988648, + -0.006946458, + -0.0061098407, + -0.0073584286, + 0.00681336, + 0.002444887, + -0.006246108, + -0.014780237, + -0.017467553, + -0.01117391, + 0.012904187, + -0.0006706406, + 0.0015290447, + -0.009602084, + -0.007745047, + -0.004759845, + 0.0059577287, + -0.0039073825, + -0.016440796, + 0.003432032, + 0.00023450634, + -0.012682357, + -0.020243602, + -0.00028778522, + 0.0252126, + 0.016542204, + 0.009430958, + -0.01101546, + -0.006296812, + 0.038991433, + -0.00021093687, + 0.006604206, + -0.003485905, + -0.00040246357, + -0.004782028, + 0.0013484114, + 0.039397065, + -0.02165064, + -0.014425309, + 0.0026239357, + 0.030980188, + 0.0003337358, + 0.01241616, + -0.016542204, + -0.016516851, + -0.011452783, + 0.017594313, + 0.010121801, + -0.018253466, + -0.0013864395, + 0.0071682883, + -0.024122464, + -0.014577421, + -0.0074154707, + 0.0072887107, + 0.015908403, + 0.03501116, + 0.0106351795, + -0.023057677, + 0.018278819, + 0.014704181, + -0.012035879, + 0.0002236129, + -0.0032355536, + 0.0005827007, + 0.0053429417, + -0.0012176901, + 0.0091520855, + 0.003447877, + -0.028926674, + 0.0077577233, + -0.048270278, + 0.03087878, + 0.004782028, + -0.0066929376, + 0.0028774561, + 0.02862245, + -0.012549258, + 0.006173221, + 0.006711952, + -0.0044904794, + 0.023323873, + -0.012010528, + -0.015743615, + -0.04099424, + -0.029940756, + 0.035923835, + 0.0057929405, + -0.018963324, + -0.008131666, + 0.00951969, + 0.011858415, + 0.011478134, + 0.001041018, + -0.033768915, + -0.019685857, + -0.0022151342, + 0.009018987, + -0.0051718154, + 0.011478134, + -0.0010521095, + 0.0021248176, + -0.021599935, + 0.0098049, + 0.009373915, + 0.00046109018, + -0.010571799, + -0.019140787, + 0.02251261, + 0.008004906, + 0.014792914, + -0.006040123, + 0.009247156, + 0.0070668804, + -0.0071999785, + 0.000049416667, + -0.0087654665, + -0.0043542124, + -0.02725344, + 0.018380227, + 0.027633721, + -0.0038630166, + 0.028267521, + -0.005384139, + 0.016326712, + 0.013449255, + 0.0058087856, + -0.0025462953, + -0.023450634, + -0.026112597, + -0.0020741136, + 0.00993166, + -0.014399957, + -0.00088652904, + 0.0007621456, + -0.010077435, + 0.01735347, + 0.011864753, + -0.0065408256, + 0.0029123153, + 0.036735103, + -0.0037489324, + 0.031461876, + -0.0017477061, + 0.01136405, + -0.02215768, + -0.017340792, + -0.00044643352, + 0.007472513, + 0.002795062, + 0.013525312, + 0.0019109098, + -0.0011170742, + -0.024071759, + 0.0106351795, + 0.009665464, + 0.021004163, + 0.0052510407, + -0.008061947, + -0.021295711, + -0.01786051, + -0.037901293, + -0.028394282, + -0.025922457, + 0.00240369, + 0.0049119573, + -0.02689851, + 0.022271764, + -0.011522501, + -0.02234782, + 0.0030501669, + 0.011858415, + 0.030219628, + -0.0072570206, + 0.017163329, + 0.013271791, + -0.0058848416, + -0.0227281, + 0.0023957675, + -0.014906998, + -0.00983659, + 0.0192929, + 0.010204195, + -0.010407011, + 0.018950647, + 0.008638707, + 0.017264737, + 0.038028054, + -0.0035999892, + -0.009855605, + 0.0004805003, + 0.008974621, + -0.023957675, + 0.004918295, + -0.01104715, + 0.014767561, + -0.018722478, + -0.007516879, + 0.007973216, + -0.005586955, + -0.01741685, + 0.011852077, + -0.049740694, + 0.016199952, + 0.012783765, + 0.0006920314, + 0.006280967, + -0.014146437, + -0.021308387, + -0.017911214, + -0.010660532, + 0.026568934, + -0.0026223513, + 0.015895726, + 0.015857698, + -0.0067499797, + -0.018430931, + -0.0053936457, + 0.008670396, + 0.0267464, + -0.0046362537, + -0.0044841417, + -0.014514041, + 0.026416823, + 0.048828024, + -0.021004163, + -0.005688363, + 0.0052035055, + -0.015933756, + -0.001677988, + 0.016022487, + 0.006927444, + -0.016947836, + 0.013360524, + -0.023615422, + 0.00047970808, + -0.03186751, + -0.0001870703, + 0.00059379224, + -0.010007717, + -0.0029566812, + -0.0021691837, + 0.01910276, + -0.000068727786, + 0.0076816673, + -0.012536583, + 0.029966107, + 0.00012359118, + -0.015135166, + 0.019026704, + -0.003444708, + 0.021688668, + 0.006274629, + 0.014235169, + 0.0059450525, + -0.019723885, + 0.03037174, + -0.012714046, + -0.026847808, + -0.014577421, + 0.0057929405, + 0.000214502, + -0.0023054508, + -0.012264048, + 0.005000689, + -0.0012533413, + 0.009830252, + -0.012276724, + -0.006217587, + 0.0016193613, + -0.015680235, + 0.011383064, + 0.020028109, + -0.021916837, + -0.010857009, + 0.013335171, + -0.016352063, + -0.0043954095, + -0.03501116, + -0.00811899, + -0.021029515, + 0.009076029, + 0.020040786, + -0.010799968, + -0.004854915, + -0.019064732, + -0.0065725157, + -0.0015036927, + -0.007878145, + 0.01846896, + -0.0022943593, + -0.0049689994, + -0.018342199, + 0.021321064, + -0.018088678, + 0.0058689965, + -0.0026984075, + -0.0065535014, + -0.024971757, + 0.0022373172, + -0.00010299265, + -0.018519662, + -0.011053488, + -0.047028027, + -0.018861916, + -0.0034922431, + -0.015921079, + -0.0016764035, + -0.0016478824, + 0.004930971, + 0.015553474, + -0.0037521014, + -0.012422498, + 0.018392902, + 0.009171099, + 0.0064774454, + -0.0304985, + -0.015642207, + -0.0006349893, + -0.012143626, + 0.0050672386, + 0.012720385, + 0.012593624, + -0.008942931, + 0.0053778007, + -0.0126379905, + 0.0024021056, + -0.018164735, + -0.017467553, + -0.0060527986, + 0.008683072, + 0.012473202, + 0.027811185, + 0.009481662, + -0.0026793934, + -0.015553474, + -0.008974621, + 0.002391014, + 0.033084407, + -0.013005595, + 0.0050735762, + 0.0081760315, + -0.019774588, + 0.004132382, + -0.02333655, + 0.007605611, + -0.004227452, + 0.016060516, + 0.011649261, + -0.008144341, + 0.01388024, + 0.018823888, + -0.007111246, + -0.017036568, + 0.0029883713, + -0.000996652, + -0.025326684, + 0.0013801015, + 0.009367578, + -0.01505911, + 0.0013072144, + -0.019635152, + 0.004160903, + -0.030929485, + 0.002741189, + -0.009488, + -0.016035164, + -0.038864672, + 0.034453418, + 0.022322468, + -0.015325306, + -0.004141889, + -0.037850592, + 0.0045063244, + 0.0018633747, + -0.012035879, + -0.0023925984, + -0.03174075, + -0.022056272, + -0.0022911904, + -0.0021105572, + -0.027405553, + -0.0020154868, + 0.015490094, + 0.009392929, + 0.023387253, + 0.23749788, + 0.010717574, + -0.0033623138, + 0.028850619, + 0.0014862631, + 0.022550637, + 0.023095705, + -0.007694343, + 0.02571964, + 0.028521042, + -0.011509825, + 0.00630315, + 0.00074630056, + 0.000637366, + 0.003451046, + -0.014957702, + -0.033261873, + -0.0014197141, + -0.013385875, + -0.019483041, + 0.011148558, + -0.0103816595, + 0.01581967, + 0.0029408364, + 0.029028082, + 0.015464743, + -0.013297143, + 0.008207722, + 0.026340766, + 0.018253466, + -0.0087654665, + -0.011909119, + -0.0017207694, + -0.014133761, + -0.0042211143, + -0.0033876658, + -0.011826725, + 0.0014870554, + 0.02091543, + 0.031690046, + 0.018836563, + 0.005615476, + -0.024604151, + -0.009164762, + 0.0070161764, + 0.005897518, + -0.018988676, + -0.006261953, + 0.020699939, + 0.015135166, + -0.023045002, + -0.00986828, + 0.027050624, + 0.023552042, + -0.0029186532, + 0.02190416, + 0.019457689, + -0.008568988, + 0.01979994, + -0.0051718154, + -0.015806995, + 0.019330928, + -0.01687178, + 0.011256305, + 0.006173221, + -0.0033591448, + -0.0126379905, + -0.0028885477, + 0.011528838, + -0.015236574, + 0.022626692, + 0.013208412, + 0.009697154, + 0.0073837806, + -0.009684478, + -0.0059830807, + 0.025605557, + -0.0050735762, + 0.015452066, + -0.007447161, + -0.014463337, + 0.0018253466, + -0.011693627, + 0.0052922377, + -0.0035366092, + -0.018811211, + 0.0017999946, + 0.0046869577, + 0.025821049, + -0.007111246, + 0.0010639933, + -0.0053207586, + 0.00620808, + 0.00058468134, + 0.020370362, + 0.025808373, + -0.009874619, + 0.0044239303, + -0.015566151, + 0.011421093, + -0.034808345, + -0.03919425, + 0.0023102043, + -0.017391497, + -0.017429525, + 0.010971094, + -0.010090111, + 0.019064732, + 0.034428068, + 0.0022357327, + -0.0044366065, + -0.0071999785, + 0.015895726, + -0.008607017, + 0.015857698, + -0.00096575415, + 0.014919674, + -0.011776021, + -0.015135166, + -0.012035879, + -0.01107884, + -0.023792887, + -0.0065218112, + 0.0058024474, + -0.0026080909, + -0.011066164, + -0.008271102, + 0.01362672, + 0.0022769298, + -0.044873103, + 0.034275953, + -0.004899281, + 0.029332306, + -0.0053017447, + -0.011814049, + -0.0025050982, + -0.004877098, + 0.0029297448, + 0.013360524, + -0.0058468133, + 0.0037489324, + -0.009950674, + 0.01735347, + -0.0003719619, + -0.005989419, + -0.0052256887, + 0.0017603821, + -0.024274575, + -0.02397035, + -0.032298494, + -0.012073907, + -0.015223898, + 0.0013761403, + -0.014970378, + 0.005384139, + -0.008537298, + -0.011167572, + -0.004173579, + 0.00951969, + 0.03272948, + -0.018380227, + 0.001324644, + 0.0014363513, + 0.00072530593, + 0.007605611, + 0.0030469978, + -0.16154318, + 0.014032353, + 0.010540109, + -0.008410539, + -0.01706192, + 0.023488661, + 0.01964783, + 0.020814022, + -0.010590813, + 0.02776048, + 0.005688363, + 0.02078867, + -0.059678696, + -0.015515447, + -0.007371105, + 0.011478134, + -0.009133072, + -0.009925323, + 0.01964783, + 0.006705614, + -0.00033017067, + -0.02154923, + 0.016073192, + 0.013715452, + 0.010020393, + 0.004582381, + -0.022132328, + 0.03209568, + -0.0030628429, + -0.013335171, + 0.0031531595, + -0.0029883713, + 0.0056344904, + 0.014349253, + 0.024464715, + 0.006255615, + -0.004690127, + -0.00046505142, + -0.00716195, + -0.003992946, + -0.0027364355, + 0.020991486, + 0.020167544, + 0.02639147, + -0.01225771, + 0.024946405, + 0.02378021, + 0.012745736, + -0.0059577287, + -0.01562953, + 0.017049246, + -0.03719144, + -0.009988703, + -0.011642923, + 0.0027522806, + 0.014514041, + 0.021130923, + 0.011687289, + -0.0013808938, + 0.012492216, + 0.01117391, + -0.041298468, + -0.0072253305, + 0.008068286, + -0.004724986, + -0.012327428, + 0.0046964646, + 0.004186255, + -0.02097881, + -0.0014862631, + -0.014450661, + -0.013892916, + 0.0036982284, + -0.009310535, + 0.0019299238, + 0.013208412, + -0.014704181, + -0.004566536, + -0.016922485, + -0.018583043, + 0.0072887107, + 0.032653425, + -0.0066358955, + 0.0009895217, + -0.00961476, + 0.010413349, + 0.004785197, + 0.011782359, + -0.029560475, + -0.014222492, + 0.025643585, + -0.036506932, + -0.0019220012, + -0.037749182, + -0.0021470005, + 0.0097415205, + 0.0017271076, + -0.0065218112, + 0.01687178, + 0.007345753, + 0.00094436336, + -0.00014399165, + -0.025225276, + 0.011161234, + 0.030422444, + 0.0126379905, + -0.013512636, + 0.009247156, + 0.018646423, + -0.008429552, + -0.014260521, + 0.019597124, + -0.00878448, + 0.011630246, + 0.020066136, + -0.0070858942, + 0.010311941, + -0.02725344, + 0.02091543, + 0.0056947013, + 0.050577313, + -0.013208412, + -0.021866132, + 0.021802751, + -0.007700681, + -0.018012622, + -0.09755464, + -0.009190113, + 0.016288683, + 0.019837968, + 0.0056947013, + 0.027025271, + 0.0050387173, + 0.024794292, + -0.008860537, + 0.021409795, + -0.0088668745, + -0.027228087, + -0.021245006, + -0.0029772797, + 0.011839401, + -0.014007, + 0.007700681, + -0.024616828, + -0.054151952, + 0.0042052693, + 0.0072316686, + 0.004341536, + -0.004889774, + -0.014425309, + -0.015312631, + -0.0066739237, + -0.03498581, + 0.014666153, + 0.0038725235, + -0.0039707627, + 0.022652045, + -0.017252062, + 0.0126379905, + -0.010128139, + -0.008163356, + 0.000072986135, + -0.009038001, + -0.003368652, + 0.0095577175, + -0.03247596, + -0.010780954, + -0.0007534308, + 0.014539393, + -0.023057677, + 0.0022135498, + 0.008239412, + -0.011281656, + 0.010882362, + -0.004851746, + -0.033312578, + -0.004259142, + 0.023412606, + -0.021232331, + -0.011858415, + 0.038281575, + -0.021637963, + 0.011630246, + 0.010476729, + -0.029509772, + 0.015528123, + 0.010508419, + 0.00716195, + 0.0038344956, + 0.014108408, + -0.014830941, + -0.019698532, + -0.026188655, + -0.009285184, + 0.018481635, + -0.033135112, + -0.00480738, + 0.020319657, + -0.0140703805, + 0.006730966, + -0.018963324, + 0.003403511, + -0.018152058, + -0.010660532, + 0.008847861, + -0.017556285, + -0.029205546, + -0.016656289, + -0.011351375, + 0.0041799173, + -0.0088161705, + 0.029180195, + -0.01394362, + -0.0126063, + 0.03830693, + -0.014780237, + 0.006946458, + 0.04403649, + 0.005998926, + -0.019052055, + -0.012904187, + 0.026188655, + 0.0092534935, + 0.007605611, + 0.017150654, + -0.013221087, + -0.018253466, + -0.010495743, + -0.036430877, + 0.017404173, + -0.01986332, + -0.013246439, + 0.0024908376, + -0.0071239225, + -0.010071097, + 0.003176927, + -0.011915457, + 0.0028156606, + -0.004791535, + -0.00027015764, + -0.0080746235, + -0.015832348, + -0.008835184, + 0.009468986, + 0.018836563, + 0.00059418834, + 0.0164915, + -0.0016106466, + -0.002823583, + -0.00018192067, + 0.0087654665, + 0.0024908376, + -0.040056217, + 0.00843589, + -0.014919674, + -0.020928107, + -0.018291494, + -0.006952796, + 0.02139712, + -0.028850619, + 0.009633774, + 0.033059057, + -0.015363335, + -0.033211168, + -0.018202763, + 0.0141210845, + 0.013512636, + -0.021422472, + -0.031943567, + -0.024908377, + 0.013170383, + -0.021447822, + -0.021663316, + 0.027278792, + -0.0072380067, + 0.0023323875, + 0.0085626505, + 0.01817741, + 0.00802392, + 0.021828104, + 0.020953458, + -0.015464743, + -0.0034668911, + -0.006021109, + 0.03435201, + 0.0069908244, + 0.013994324, + -0.006997162, + -0.0015345905, + -0.0043383674, + -0.00074946956, + 0.02110557, + 0.011978838, + 0.009392929, + -0.0059418837, + -0.009830252, + -0.009950674, + -0.0164915, + -0.008524623, + -0.0051876605, + 0.039929457, + 0.014133761, + 0.033261873, + 0.0037109044, + -0.008480256, + -0.0052890684, + -0.017556285, + 0.008898565, + 0.019343603, + 0.004040481, + -0.01069856, + -0.000011667136, + 0.028926674, + 0.030980188, + -0.05587589, + -0.015097138, + 0.01073025, + 0.0045792116, + -0.021663316, + 0.006119348, + -0.0043827333, + 0.011402079, + 0.012359118, + -0.004851746, + -0.0056756875, + 0.0016795724, + -0.0007411509, + 0.0252126, + -0.00040998997, + -0.018253466, + -0.0004198931, + -0.027481608, + -0.014691506, + 0.0008033427, + -0.017099949, + -0.012270385, + -0.008271102, + 0.007878145, + 0.009443633, + -0.016377416, + 0.0035651303, + 0.014336577, + -0.003527102, + -0.00030580894, + -0.021283034, + -0.014387281, + -0.014830941, + 0.0143239, + -0.0023355563, + 0.0019727054, + 0.00853096, + -0.0097415205, + 0.036887214, + 0.015337982, + 0.019571772, + -0.024667531, + 0.013195735, + 0.0065344875, + 0.009443633, + 0.0034130178, + -0.0070668804, + -0.012238696, + -0.0033718208, + -0.03349004, + -0.020256277, + 0.019635152, + -0.01474221, + 0.0534928, + -0.010977432, + -0.030802725, + 0.03612665, + -0.022106975, + 0.0036031583, + 0.017429525, + 0.008448566, + -0.020877402, + -0.010229547, + 0.0013167214, + 0.016973188, + 0.019128112, + -0.004867591, + -0.016985865, + -0.007694343, + -0.02104219, + 0.019191492, + -0.027963297, + -0.004699634, + 0.036506932, + 0.0071999785, + 0.0037013975, + 0.0026144288, + -0.021194303, + -0.0074154707, + 0.017771779, + 0.010768278, + 0.0034922431, + 0.0023434788, + 0.020864727, + -0.0028837943, + -0.018608395, + -0.013030947, + 0.0017397836, + -0.03559426, + -0.014792914, + -0.02999146, + -0.0029820334, + 0.011896444, + 0.011712641, + 0.027075976, + -0.010869686, + -0.020509798, + -0.0016241148, + -0.0012636406, + -0.014830941, + 0.007726033, + -0.0051876605 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 55, + "total_tokens": 55 + } +} +278 34444 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 83 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["What color is the lamp in each room?"]}HTTP/2.0 200 OK +Content-Length: 33488 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:43:16 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 104 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6659cb4779-xzdkj +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999991 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_7df0dccf45a648358ef7a1b58f49d575 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.02230405, + 0.008771547, + 0.014554557, + -0.011423711, + -0.008448112, + 0.015473112, + 0.0068826885, + -0.008881515, + 0.004744786, + -0.005595419, + -0.016676288, + 0.01731022, + -0.017698342, + 0.024891527, + -0.0063878335, + -0.0012743324, + 0.031618968, + 0.021294935, + 0.013648941, + -0.0046218806, + -0.020337569, + 0.025512522, + -0.01429581, + -0.001887241, + -0.01562836, + -0.008959139, + 0.017374907, + -0.008868577, + -0.011934738, + 0.006138789, + 0.0034187038, + -0.016792726, + -0.012723918, + -0.0168186, + -0.016844476, + 0.0169221, + 0.010860935, + 0.0039006216, + 0.011591896, + -0.014606307, + 0.015718922, + -0.0003416278, + -0.00038286572, + 0.00014958851, + -0.0055177948, + 0.007827118, + -0.0011853878, + 0.0067468463, + -0.039355524, + 0.01296326, + -0.008124677, + 0.0066562844, + -0.012885635, + -0.052706905, + -0.026172329, + 0.00087650784, + 0.008674516, + 0.01811234, + -0.011714802, + -0.0054789823, + -0.0041917125, + -0.0013471051, + -0.014502808, + 0.0060676336, + -0.0006072485, + -0.001574318, + -0.0084093, + 0.010860935, + 0.017038535, + -0.0021136452, + 0.021424308, + 0.028125875, + 0.017581906, + -0.00033576557, + 0.029419612, + -0.008752141, + -0.020712754, + -0.0023740102, + 0.007109093, + 0.00022701068, + 0.0044892724, + 0.0069279694, + -0.03260221, + 0.008758609, + 0.018733334, + 0.013441943, + 0.0025923285, + 0.018371087, + -0.034594566, + -0.0030613088, + -0.013196132, + 0.051439043, + 0.030040607, + -0.021760682, + -0.012445764, + 0.0054854513, + -0.0074325274, + 0.02478803, + 0.0125169195, + -0.013791252, + 0.016119981, + -0.015291989, + -0.031308472, + 0.005977072, + -0.017129097, + -0.023222605, + 0.0037486071, + 0.008480456, + 0.032679833, + -0.040105894, + -0.03487919, + 0.049187936, + 0.039459024, + -0.038449906, + -0.021980617, + -0.0070767496, + 0.0012702894, + -0.024141159, + -0.037337292, + 0.0070055937, + -0.0022672766, + 0.040468138, + 0.017982965, + -0.027530754, + 0.04486685, + -0.002137903, + -0.026482826, + -0.024503406, + -0.024956215, + 0.005016471, + 0.010802716, + 0.014929742, + 0.013467818, + 0.021243185, + -0.008920327, + 0.0013099102, + -0.006513973, + 0.024425782, + -0.03793241, + 0.00328933, + 0.013545441, + 0.006119383, + -0.0047900667, + -0.008059991, + -0.0056406995, + 0.030972099, + 0.0048094727, + -0.0027427257, + -0.020402256, + -0.0018662177, + 0.005673043, + -0.012717449, + 0.023817725, + 0.012827417, + 0.0014692018, + 0.016999723, + -0.0019567795, + 0.017827716, + -0.044219982, + 0.0069538443, + -0.04931731, + 0.0048968, + 0.030402854, + -0.005876807, + 0.012342265, + 0.028772743, + 0.020686878, + 0.0049744244, + -0.010395189, + 0.0075101517, + -0.032576334, + 0.027039135, + -0.020466942, + 0.03330083, + 0.00044795693, + 0.034930937, + 0.007859461, + -0.016158793, + 0.003978246, + 0.01157249, + -0.0095930705, + -0.0068438766, + -0.008538674, + -0.009146731, + 0.0009783898, + -0.017129097, + 0.0017497813, + -0.001466776, + 0.024011785, + -0.004550725, + 0.01143018, + 0.027763627, + -0.015059115, + -0.0069991252, + -0.66901803, + -0.032653958, + 0.004961487, + -0.0085904235, + 0.0080988025, + 0.013390193, + 0.0239471, + 0.028255248, + -0.003522203, + -0.016003545, + 0.009386073, + 0.007063812, + 0.0042078844, + -0.023934161, + 0.0125233885, + -0.021825368, + -0.0053981235, + 0.010893278, + -0.00018577276, + 0.0017788904, + -0.008765078, + 0.019108517, + -0.0018112338, + -0.00398148, + 0.021411372, + 0.022834484, + 0.009638351, + -0.016495166, + -0.015020303, + 0.012102923, + -0.015304926, + 0.011792426, + 0.013099102, + -0.023106169, + 0.025447836, + -0.003709795, + -0.024555156, + 0.028824493, + 0.0054886853, + 0.029962983, + -0.028384622, + -0.0021750978, + 0.017323159, + -0.02305442, + -0.010666873, + 0.010847997, + 0.017568968, + -0.00046129862, + 0.046833333, + -0.014024125, + 0.012769199, + -0.030014733, + -0.015718922, + 0.01844871, + 0.018254649, + 0.015990607, + 0.046212338, + 0.009858287, + -0.008467519, + 0.0031146754, + -0.009987661, + -0.018086463, + 0.0013495309, + 0.002897974, + 0.007445465, + 0.00079120195, + -0.0252279, + -0.023507228, + -0.020104695, + -0.022329926, + -0.0035933587, + 0.016158793, + -0.03904503, + 0.02423172, + 0.0061064456, + -0.010796247, + 0.029911233, + -0.007102624, + -0.0024710405, + -0.017206721, + 0.002055427, + -0.015123802, + -0.02853987, + -0.015123802, + 0.01741372, + -0.010472813, + -0.014670994, + -0.020893876, + 0.015757734, + 0.026987385, + 0.009612476, + 0.015046178, + -0.01839696, + 0.0003299033, + -0.017103223, + 0.03216234, + -0.01646929, + 0.0032181744, + -0.011320212, + -0.025033839, + 0.000618973, + -0.03270571, + -0.0037453729, + 0.013312569, + 0.02913499, + -0.0064428174, + -0.0077494932, + 0.031877715, + 0.015641298, + -0.014399309, + 0.0004980893, + -0.013176726, + -0.021631308, + 0.0009832412, + 0.014502808, + -0.022498112, + 0.04877394, + 0.013234944, + 0.024218785, + -0.015874172, + 0.007607182, + -0.0003988353, + 0.014231123, + -0.0182029, + 0.020570442, + 0.008965608, + -0.013648941, + -0.009146731, + -0.009599539, + 0.024218785, + -0.011967081, + 0.011346086, + 0.010207596, + -0.0065269107, + -0.030583978, + 0.0065269107, + 0.01662454, + -0.026094705, + 0.013881814, + -0.013312569, + -0.01687035, + 0.0033507827, + -0.026651012, + 0.007833586, + -0.023481352, + -0.027065009, + -0.028358746, + -0.007128499, + -0.027686004, + -0.012329328, + -0.018332275, + -0.025991205, + -0.042977992, + 0.007671869, + 0.013299632, + 0.0028947399, + -0.015990607, + -0.0078077116, + -0.028332872, + 0.006614238, + 0.024956215, + 0.011967081, + -0.015421363, + 0.003324908, + -0.010304627, + -0.024205847, + -0.009981193, + 0.02903149, + 0.00025308758, + -0.042822745, + -0.0026004142, + 0.0050229398, + -0.002137903, + 0.013868877, + -0.011837707, + -0.00040328252, + -0.0031454016, + -0.037984163, + -0.006850345, + -0.010298158, + 0.012568669, + 0.029393738, + -0.015304926, + 0.0046024746, + 0.03423232, + 0.012549263, + 0.022679236, + 0.023274355, + 0.0025680708, + 0.010511625, + -0.015123802, + -0.004977659, + 0.013545441, + -0.0077883056, + 0.008726266, + -0.0033281422, + 0.022265239, + -0.012872698, + -0.00095332356, + -0.011087338, + 0.029600736, + -0.0019017955, + -0.005094095, + -0.011514273, + 0.029755985, + -0.033870075, + 0.009159668, + -0.005210532, + 0.013907689, + 0.025253775, + -0.007704213, + -0.025745396, + 0.0020344038, + -0.022627486, + 0.01641754, + 0.010110566, + -0.01687035, + 0.028358746, + -0.0054886853, + -0.00026905717, + 0.01063453, + 0.011954144, + 0.03635405, + 0.0006104828, + -0.015887108, + 0.0037874193, + 0.006649816, + 0.020906813, + 0.009787131, + -0.011281399, + -0.02804825, + -0.0077624307, + 0.000054630127, + 0.006513973, + -0.015279051, + 0.0025179384, + 0.008959139, + -0.016404605, + -0.0049841274, + 0.0050714547, + 0.020402256, + 0.030972099, + 0.022950921, + 0.0077818367, + 0.03244696, + -0.0034963281, + 0.00796296, + 0.026288766, + -0.02449047, + 0.013726565, + -0.008881515, + -0.012374609, + -0.024115285, + 0.0058250576, + 0.018086463, + 0.0038359344, + 0.032628085, + -0.0063781305, + 0.0040396983, + 0.010906215, + -0.0004334024, + -0.0010632913, + 0.016728038, + -0.005912385, + -0.0072578727, + 0.008913858, + -0.023287293, + -0.014554557, + 0.0029189973, + -0.0059447284, + -0.012853292, + -0.008467519, + 0.014774493, + 0.0008178853, + 0.017129097, + 0.0022624251, + -0.0077430247, + -0.017090285, + 0.018358149, + 0.0336372, + -0.0033895948, + -0.02240755, + 0.014308748, + -0.0011603216, + -0.014515745, + -0.018422836, + -0.018177025, + 0.018513398, + -0.017646592, + 0.0072449353, + 0.016326979, + -0.0062519913, + 0.024154097, + -0.0005373058, + 0.0018079996, + -0.022886233, + -0.001822554, + -0.0007689658, + 0.023222605, + 0.005980306, + -0.011139088, + 0.00031231655, + -0.027220257, + -0.013855939, + 0.016378729, + 0.011857113, + -0.016947974, + -0.008364019, + -0.006420177, + -0.0251244, + -0.023093231, + -0.009871225, + 0.004013824, + 0.011223181, + 0.013390193, + 0.008053522, + -0.019328453, + -0.018358149, + 0.023584852, + 0.004159369, + -0.021113811, + -0.029238489, + -0.011449586, + -0.0014821391, + 0.05852873, + 0.009916506, + -0.006306975, + 0.017077347, + -0.002411205, + -0.0194837, + -0.017737154, + 0.012820948, + -0.00930198, + 0.010097628, + 0.013196132, + -0.007859461, + -0.007587776, + -0.009890631, + -0.014748619, + -0.0019406077, + 0.0066821594, + -0.009877693, + 0.019328453, + -0.007594245, + -0.010472813, + 0.0090820445, + -0.0051523135, + 0.02606883, + -0.023390792, + -0.011113213, + 0.022394612, + -0.014567495, + 0.015123802, + -0.01236814, + -0.012161141, + 0.016262293, + -0.0058638696, + -0.0024500173, + -0.025706584, + -0.01697385, + -0.016107043, + 0.008027648, + 0.029238489, + -0.0019001784, + 0.027479006, + 0.0066950964, + 0.0009306831, + -0.025603084, + 0.000605227, + 0.0065754256, + -0.009974724, + 0.02137256, + 0.0066821594, + -0.013687753, + 0.00008136402, + -0.0019858885, + -0.003997652, + -0.0042984462, + 0.0040526357, + 0.00009975937, + -0.013273757, + -0.024645718, + 0.009366667, + -0.01741372, + -0.0038909183, + 0.0034639847, + 0.030816851, + -0.0052364063, + -0.03565543, + -0.024063535, + -0.0013940032, + -0.011798895, + -0.0080858655, + -0.007794774, + -0.0052816872, + -0.015343738, + -0.042072374, + 0.012064111, + 0.04719558, + 0.024645718, + 0.030532228, + -0.0120511735, + 0.0045442563, + 0.01953545, + 0.0043987106, + -0.010375783, + 0.0060223527, + -0.006119383, + -0.0105310315, + -0.0052267034, + 0.021036187, + -0.012070579, + -0.01434756, + 0.027789501, + 0.026198205, + -0.0054304674, + 0.02903149, + -0.027737753, + -0.007937086, + -0.009263167, + -0.0014675845, + 0.02542196, + -0.028074125, + -0.012665699, + 0.017012661, + -0.019781262, + 0.012588075, + -0.035396684, + -0.019781262, + 0.01018819, + -0.0041787755, + -0.009418416, + -0.03169659, + 0.011171431, + 0.0006618281, + -0.020790378, + -0.004023527, + -0.014852118, + 0.028876243, + 0.01627523, + -0.026159393, + 0.012199954, + -0.0047674263, + -0.032032963, + 0.009780663, + -0.03542256, + 0.026935635, + 0.0014683931, + -0.03679392, + 0.005372249, + 0.011928269, + -0.009237292, + 0.01890152, + 0.008629235, + 0.004744786, + 0.01800884, + -0.027789501, + -0.014037062, + -0.026935635, + -0.007212592, + 0.012555731, + 0.009334323, + -0.015097928, + 0.014127624, + -0.009935912, + 0.019600138, + -0.0029545752, + -0.015072053, + -0.011727739, + -0.02631464, + 0.011585428, + -0.0010333736, + 0.0063781305, + 0.028229373, + 0.01608117, + 0.0050358768, + -0.03596593, + 0.017750092, + -0.013073227, + -0.019224953, + -0.006164664, + -0.016145855, + 0.011449586, + 0.013894751, + 0.016042357, + 0.0036192334, + 0.0073225596, + 0.005543669, + -0.0065366137, + 0.0056665745, + 0.009017357, + -0.0019470764, + -0.027116759, + -0.005669809, + 0.011902394, + 0.012083517, + 0.015563673, + 0.008933264, + 0.01152721, + 0.029212615, + -0.005317265, + 0.00062705885, + -0.03482744, + -0.026780386, + 0.001640622, + -0.016999723, + -0.011734208, + 0.0043696016, + 0.0014303896, + 0.013713628, + 0.0067468463, + -0.003897387, + -0.015473112, + -0.00925023, + 0.029652486, + -0.014632182, + 0.044763353, + -0.025344336, + 0.014321685, + -0.009127324, + -0.038812153, + -0.023106169, + -0.0061873044, + -0.020130571, + 0.0059447284, + 0.008376957, + 0.0032197917, + -0.02433522, + 0.021980617, + -0.0027799206, + 0.018979143, + -0.0007612842, + -0.0071996544, + -0.018177025, + -0.03358545, + -0.024050599, + -0.022575736, + -0.02869512, + 0.016585726, + -0.014412247, + -0.03167072, + 0.020454004, + 0.0022769796, + -0.007102624, + -0.010479282, + -0.009269636, + 0.025163213, + 0.013933564, + 0.026237017, + 0.013881814, + -0.0050358768, + -0.011714802, + -0.022523986, + -0.025913581, + -0.017918278, + 0.021424308, + 0.022420488, + 0.0047415514, + 0.010472813, + 0.0135066295, + -0.0030499885, + 0.012866229, + -0.016003545, + -0.0012161141, + 0.013933564, + 0.0068180016, + -0.005026174, + 0.00945076, + -0.017504282, + 0.023339042, + -0.007950023, + -0.008635704, + 0.010291689, + -0.0005227512, + -0.021825368, + -0.0012581607, + -0.01844871, + 0.035629556, + 0.01687035, + -0.011928269, + 0.015744798, + -0.016702164, + -0.009554259, + 0.0026699528, + 0.0068891575, + 0.035344936, + 0.0009694953, + 0.0055080913, + 0.0076848064, + 0.0074389963, + -0.015563673, + -0.00885564, + 0.009431354, + 0.029445488, + -0.015550736, + -0.0043598986, + -0.0110355895, + 0.020764502, + 0.03032523, + -0.01454162, + 0.002259191, + 0.0120252995, + -0.01137843, + 0.015162615, + 0.020001197, + -0.0037033265, + -0.01741372, + 0.0044601634, + -0.03037698, + 0.00420465, + -0.026379328, + -0.011714802, + -0.00026663142, + -0.03423232, + 0.0016737741, + 0.010265815, + 0.024891527, + 0.009515447, + 0.0052331723, + 0.0021136452, + 0.028902117, + -0.014114686, + -0.0052752187, + 0.0033895948, + 0.01068628, + 0.016753914, + -0.016495166, + 0.00413026, + -0.0009694953, + -0.041037384, + 0.017517218, + 0.010311096, + -0.033119705, + -0.0031890653, + 0.022730986, + -0.0038941528, + 0.004773895, + -0.016016481, + -0.0038197627, + 0.002102325, + 0.0012056025, + -0.012866229, + 0.0041884785, + -0.0056924494, + -0.017995901, + 0.015175552, + 0.009683632, + -0.0060126497, + 0.00791768, + 0.0048903315, + -0.010252877, + 0.012284047, + -0.01513674, + 0.0017708045, + 0.0016066615, + 0.018021777, + -0.0014675845, + -0.015990607, + 0.011100276, + -0.004366367, + -0.008364019, + -0.0014643503, + 0.009192012, + 0.008124677, + 0.0036774515, + 0.0144898705, + -0.0039847144, + 0.019651888, + -0.03260221, + -0.0073743095, + -0.014231123, + -0.034542818, + -0.02641814, + -0.020337569, + -0.02547371, + 0.007633057, + -0.010666873, + -0.028125875, + 0.0021815666, + -0.005795948, + 0.008668047, + -0.018384025, + 0.0053690146, + -0.0022478707, + 0.008900921, + -0.0019729512, + -0.004476335, + 0.026094705, + 0.0038068255, + -0.0029092943, + -0.0078077116, + 0.0048968, + 0.006239054, + -0.017271409, + 0.0033863604, + -0.0015597634, + -0.008739203, + -0.018733334, + 0.018319337, + 0.012109392, + 0.011009715, + -0.008972077, + -0.020686878, + 0.00727081, + 0.004579834, + 0.022562798, + 0.02696151, + 0.032886833, + -0.012723918, + -0.027686004, + -0.02286036, + -0.020466942, + 0.014140561, + -0.021657182, + -0.007801243, + 0.030635728, + 0.009166137, + -0.008829765, + -0.031386096, + -0.002327112, + -0.004269337, + 0.0055274977, + 0.014231123, + -0.00022559565, + -0.011274931, + 0.004026761, + 0.016728038, + -0.007044406, + 0.0021055595, + -0.005391655, + -0.011785957, + 0.00027896237, + 0.008913858, + 0.001550869, + -0.0038003568, + -0.014722744, + -0.013338444, + -0.016508102, + -0.0012403717, + -0.007341966, + -0.02156662, + -0.021087937, + 0.024904465, + 0.00939901, + -0.015990607, + 0.0026521639, + -0.040778637, + -0.020285819, + -0.0004916206, + -0.0066110035, + 0.005158782, + -0.030040607, + -0.0050358768, + 0.0011554701, + -0.001466776, + -0.018293463, + -0.022562798, + 0.003690389, + 0.023623664, + 0.012698043, + 0.2370129, + 0.008454581, + 0.0027119992, + 0.04199475, + -0.008875046, + 0.014205248, + 0.027039135, + 0.0049291435, + 0.016443416, + 0.023015607, + -0.02750488, + 0.0011109979, + 0.009386073, + 0.010938559, + -0.011850644, + -0.014554557, + -0.01811234, + -0.015304926, + 0.01310557, + 0.0023109403, + 0.008021179, + 0.000092381015, + 0.0040041204, + -0.021256123, + 0.015304926, + 0.021993553, + -0.0022915343, + -0.001701266, + 0.019328453, + 0.020259945, + 0.005411061, + -0.020945625, + -0.008286395, + -0.00024257596, + -0.004456929, + -0.0085710175, + -0.0023869474, + -0.0026521639, + 0.0222523, + 0.024813903, + -0.0040688077, + -0.0144769335, + -0.020997375, + 0.014127624, + -0.006552785, + -0.0051070326, + -0.019858886, + -0.012782136, + 0.01687035, + 0.0072449353, + -0.017944153, + -0.0072772787, + 0.02324848, + 0.023274355, + -0.00004644319, + 0.0061711324, + 0.02859162, + -0.018138213, + 0.00640724, + 0.00865511, + -0.006119383, + 0.035267312, + -0.020945625, + 0.023636602, + 0.010996777, + -0.008344613, + -0.002513087, + -0.00048515192, + 0.024425782, + -0.012070579, + 0.006300506, + -0.0031421673, + -0.0031648078, + 0.015964733, + 0.01760778, + 0.007937086, + 0.026832135, + 0.010957965, + 0.0095736645, + 0.002344901, + -0.010977371, + -0.0075554326, + -0.004421351, + 0.028384622, + 0.00058056513, + -0.017180847, + -0.0062455223, + 0.008150552, + 0.029419612, + 0.009631883, + 0.00390709, + 0.0017643358, + 0.0052008284, + 0.017193785, + 0.015317864, + 0.022278177, + 0.008422238, + 0.00885564, + -0.018992081, + -0.0023060888, + -0.029109115, + -0.0115207415, + 0.01879802, + 0.002307706, + -0.02696151, + 0.011003246, + 0.004211119, + -0.021760682, + 0.029238489, + 0.0044860383, + 0.004026761, + -0.009192012, + 0.008784484, + 0.0013325507, + 0.0059447284, + -0.0029303175, + 0.005158782, + -0.031618968, + -0.017245533, + -0.0063231466, + -0.008525737, + -0.020738628, + -0.010841528, + -0.0013163789, + -0.008234645, + -0.025486648, + -0.01562836, + 0.013674815, + 0.0073290286, + -0.03780304, + 0.0065107387, + -0.012892104, + 0.024451656, + -0.0026861245, + -0.0017109691, + -0.0021314342, + 0.013687753, + -0.0080858655, + 0.016857412, + -0.012601012, + 0.008519268, + -0.008131146, + 0.016546914, + -0.0010738029, + 0.0052267034, + -0.011876519, + 0.0044439915, + -0.008480456, + -0.014451059, + -0.027530754, + -0.01795709, + -0.006219648, + 0.0018662177, + -0.021152625, + 0.026094705, + -0.012070579, + -0.00045765997, + 0.0020667473, + 0.028436372, + 0.01370069, + -0.009463697, + 0.0063393186, + 0.013817127, + -0.0021087937, + -0.007503683, + 0.0025858597, + -0.16487403, + 0.0057571363, + 0.044219982, + -0.03314558, + -0.022045303, + 0.00796296, + 0.0095801335, + 0.023558978, + -0.014735681, + 0.039640147, + 0.00035961886, + 0.011132619, + -0.04572072, + -0.0026020315, + -0.010847997, + 0.0036095304, + -0.005391655, + 0.019250829, + -0.011578959, + 0.006921501, + 0.011443117, + -0.018616896, + 0.007037937, + 0.014127624, + -0.0037712476, + -0.019431952, + -0.02305442, + 0.021644244, + 0.01038872, + -0.02300267, + -0.009489572, + -0.0003606296, + 0.00051547395, + 0.006400771, + 0.009813006, + 0.0034445787, + 0.003968543, + 0.0026295234, + -0.013868877, + 0.00059754547, + -0.0077688997, + 0.010802716, + 0.017827716, + 0.03348195, + -0.0062778657, + 0.020492818, + 0.011986487, + 0.0009039998, + -0.01221936, + -0.008933264, + 0.009360198, + -0.025137339, + -0.0054045925, + -0.002624672, + 0.005540435, + 0.02067394, + 0.017103223, + 0.01953545, + 0.0009573665, + -0.000321211, + -0.008247583, + -0.03834641, + -0.011766551, + -0.0025454303, + 0.012406952, + 0.009664226, + 0.015887108, + -0.0031551046, + -0.017387845, + 0.008985014, + -0.00221391, + -0.02088094, + -0.0061226175, + -0.019781262, + 0.004903269, + 0.011093807, + 0.0030790975, + -0.026094705, + -0.011934738, + -0.01009116, + -0.002120114, + 0.050171178, + -0.017646592, + 0.0125233885, + -0.013674815, + 0.01592592, + 0.00041803924, + 0.004560428, + -0.027427256, + 0.0015678493, + 0.029109115, + -0.010052348, + 0.00846105, + -0.02853987, + 0.010744498, + 0.0043501956, + 0.0054498734, + -0.00571509, + 0.0004378496, + 0.0018079996, + -0.013674815, + 0.010097628, + -0.018862708, + 0.021605432, + 0.032860957, + -0.00930198, + -0.016339917, + 0.018319337, + 0.03749254, + -0.005210532, + -0.022174677, + 0.010699217, + 0.009819475, + 0.020014133, + 0.016184669, + -0.005857401, + 0.014877993, + -0.0061452575, + 0.024050599, + 0.029471362, + 0.04230525, + -0.020518692, + -0.015473112, + 0.016314043, + 0.0071802484, + -0.016158793, + -0.08569723, + 0.003531906, + -0.0037033265, + 0.021346685, + 0.0077106813, + 0.028798617, + 0.021631308, + 0.035267312, + 0.00687622, + 0.01518849, + -0.012232297, + -0.011669521, + -0.01608117, + 0.009754788, + 0.0008522502, + -0.011391367, + 0.01083506, + -0.032576334, + -0.04574659, + 0.016145855, + 0.000981624, + -0.0030241136, + 0.012801542, + -0.0077300873, + 0.006365193, + -0.037673663, + -0.038605157, + 0.0110355895, + 0.0035157343, + 0.0034154695, + 0.02349429, + -0.027039135, + -0.016986785, + -0.013312569, + -0.021708932, + -0.0149814915, + -0.021281999, + -0.019263767, + 0.011941206, + -0.03961427, + -0.008991483, + 0.018306399, + 0.0168186, + -0.015563673, + 0.015162615, + -0.0058379946, + -0.016197605, + 0.012549263, + -0.009386073, + -0.022627486, + 0.012665699, + 0.0045054443, + -0.008680985, + -0.023416666, + 0.026599264, + -0.011734208, + 0.008564549, + 0.030144107, + -0.013687753, + 0.00895267, + -0.0022656594, + 0.028617496, + -0.0004867691, + 0.020945625, + 0.0050100023, + -0.026482826, + -0.025680708, + -0.0009444291, + 0.009800069, + -0.037259668, + -0.036198802, + -0.003531906, + -0.0029384035, + -0.013894751, + -0.028902117, + -0.008182895, + -0.013648941, + 0.016896224, + -0.0016333448, + -0.0054983883, + -0.017530156, + -0.022562798, + 0.0057991827, + 0.006064399, + -0.001644665, + 0.03555193, + -0.031748343, + -0.018772146, + 0.0024144393, + -0.0015686579, + -0.0060417587, + 0.019134391, + 0.013124976, + -0.016249355, + -0.025098527, + 0.018371087, + -0.0025001497, + 0.014670994, + 0.02734963, + -0.01890152, + -0.022433424, + 0.00079686206, + -0.05387127, + 0.019315515, + -0.005165251, + -0.013959438, + -0.013429006, + -0.0043437267, + 0.005805651, + -0.0063037407, + -0.0067597837, + 0.007193186, + -0.008351082, + 0.017866528, + -0.010343439, + 0.002391799, + -0.0044957413, + 0.0054789823, + 0.009036764, + 0.017504282, + -0.0047577233, + -0.00801471, + -0.015537799, + -0.0018338743, + 0.017672468, + 0.017737154, + -0.029367864, + 0.004773895, + -0.008842702, + 0.001822554, + -0.022394612, + -0.01370069, + 0.03819116, + -0.036923297, + 0.0043404927, + 0.04947256, + -0.010653936, + -0.039950643, + -0.029859483, + 0.030092357, + 0.03423232, + -0.040287014, + -0.00791768, + -0.025848895, + 0.011456054, + -0.024593968, + 0.007982367, + 0.031644844, + -0.015641298, + 0.006921501, + 0.010673342, + 0.0007115562, + 0.022523986, + 0.016883288, + 0.0011045292, + 0.0010754201, + -0.010265815, + -0.025797145, + 0.02354604, + -0.016055295, + 0.029290238, + -0.025745396, + 0.011798895, + 0.0055727786, + 0.013312569, + 0.008079397, + 0.020686878, + -0.011158494, + 0.024865653, + 0.0037680133, + -0.0049905963, + -0.014774493, + 0.005753902, + 0.010446938, + 0.026780386, + 0.016805662, + 0.020363443, + 0.002352987, + 0.023468416, + 0.0075101517, + -0.016404605, + 0.018138213, + 0.019845948, + -0.0027152337, + -0.023313167, + 0.014037062, + 0.035836555, + 0.0002749194, + -0.036172926, + 0.017750092, + 0.010304627, + 0.0036030617, + -0.017504282, + 0.0056762774, + 0.008215239, + 0.004615412, + 0.008351082, + 0.0041076196, + -0.00472538, + 0.01454162, + -0.0036483426, + 0.021100875, + -0.015343738, + -0.022769798, + 0.0066821594, + -0.02552546, + -0.012969729, + 0.005346374, + -0.0050035333, + -0.017970027, + -0.0076395255, + 0.003402532, + 0.0042919773, + 0.0011012949, + 0.004139963, + 0.007658932, + 0.004589537, + -0.006219648, + -0.028953867, + -0.023804788, + -0.022472236, + 0.015615423, + 0.0015557205, + 0.008972077, + -0.005905916, + 0.001896944, + 0.0063748965, + 0.01058278, + 0.018189963, + -0.011197306, + 0.030532228, + 0.02582302, + 0.010479282, + 0.0062455223, + -0.0009436205, + -0.0067015653, + 0.001402089, + -0.022718048, + 0.0034898594, + 0.011747145, + -0.01276273, + 0.06810239, + 0.0030338168, + -0.022601612, + 0.03487919, + -0.013726565, + 0.033430204, + 0.008441644, + 0.009528384, + -0.022032365, + -0.009780663, + -0.0017999136, + 0.019548388, + 0.011404305, + -0.028850367, + -0.02908324, + -0.019224953, + -0.024852715, + 0.0059382594, + -0.0004519999, + -0.015253177, + 0.018707458, + -0.01725847, + 0.007924148, + 0.015059115, + -0.022187615, + -0.024115285, + 0.0144898705, + -0.0020360209, + 0.0006181644, + 0.0032214087, + 0.021683056, + -0.0045539592, + -0.03293858, + -0.0051070326, + 0.014231123, + -0.015822422, + -0.011675989, + -0.019199079, + -0.008887983, + -0.0038100597, + 0.010828591, + 0.027479006, + -0.010155847, + -0.008499862, + 0.013196132, + -0.014049999, + -0.0034995626, + 0.008661579, + -0.0046024746 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 9, + "total_tokens": 9 + } +} +1737 1906 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 1534 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is yellow.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003epatio\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is blue.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003ebedroom\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is orange.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003eoffice\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is black.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003ekitchen\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is purple.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003esitting room\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What color is the lamp in each room?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 1080 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:43:18 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 896 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999750 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_4544d41df4bc4857a3bc547a765bae13 + +{ + "id": "chatcmpl-ERDnSNOLEpbZtbkovgdunwsf673R7", + "object": "chat.completion", + "created": 1790156598, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "In the patio, the lamp beside the desk is yellow. \nIn the bedroom, the lamp beside the desk is blue. \nIn the office, the lamp beside the desk is orange. \nIn the kitchen, the lamp beside the desk is black. \nIn the sitting room, the lamp beside the desk is purple.", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 247, + "completion_tokens": 65, + "total_tokens": 312, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_109d5ede69" +} diff --git a/vectorstores/inmemory/testdata/TestInMemoryAsRetrieverWithMetadataFilters.httprr b/vectorstores/inmemory/testdata/TestInMemoryAsRetrieverWithMetadataFilters.httprr new file mode 100644 index 000000000..bea284635 --- /dev/null +++ b/vectorstores/inmemory/testdata/TestInMemoryAsRetrieverWithMetadataFilters.httprr @@ -0,0 +1,6332 @@ +httprr trace v1 +393 101203 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 197 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["The color of the lamp beside the desk is orange.","The color of the lamp beside the desk is purple.","The color of the lamp beside the desk is yellow."]}HTTP/2.0 200 OK +Content-Length: 100246 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:27:55 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 128 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6659cb4779-hks7j +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999964 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_41ecec89db714f06882a7d1056645262 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.021987127, + -0.015545284, + -0.0045292196, + -0.016123893, + 0.007316184, + 0.013668021, + -0.026165966, + -0.0054614223, + 0.015288125, + -0.021909978, + 0.0131087, + 0.011732897, + -0.015339557, + 0.024507288, + -0.022527162, + -0.009289882, + 0.04253416, + 0.003148595, + 0.022771463, + -0.021344228, + -0.038265314, + -0.0012681172, + -0.017641133, + 0.014593795, + -0.015776727, + -0.008370537, + 0.010768549, + -0.019222664, + 0.01899122, + 0.010504961, + 0.019788414, + -0.020868484, + 0.01987842, + -0.03134773, + -0.033250708, + 0.013899464, + 0.0077983583, + 0.0017808287, + 0.010717117, + -0.026744576, + 0.015056682, + 0.008254816, + -0.0038766777, + -0.011919337, + -0.010196369, + 0.015751012, + 0.02246287, + 0.012015772, + -0.010183511, + 0.020084148, + -0.007425477, + 0.018142594, + -0.011559314, + -0.01861834, + 0.01025423, + -0.031553455, + 0.0019351243, + 0.015236693, + -0.013256566, + -0.016959662, + -0.0038702486, + -0.006576851, + 0.00061878975, + -0.011405018, + 0.0047060167, + 0.0044745733, + -0.0030875197, + 0.0011315013, + 0.002441407, + 0.006956161, + 0.026243115, + 0.026770292, + -0.0016418019, + 0.018374037, + 0.014889528, + 0.012742247, + -0.016188182, + 0.0032305648, + 0.0061236075, + -0.015288125, + 0.0014296455, + -0.010659256, + -0.024172982, + -0.0041177645, + 0.017705424, + 0.006120393, + -0.014568078, + 0.0034716516, + -0.03487081, + -0.017191105, + -0.0067247176, + 0.032196354, + 0.028801851, + -0.010029215, + -0.0040181153, + 0.0150052495, + 0.014388067, + 0.02362009, + 0.015403846, + -0.03348215, + 0.007457622, + 0.0044745733, + -0.044334278, + 0.0018949432, + -0.029547613, + -0.02475159, + 0.010376381, + -0.0016747505, + 0.031810615, + -0.024970176, + -0.022835752, + 0.016033888, + 0.025908807, + -0.020649899, + -0.012369366, + -0.01760256, + 0.008852712, + -0.016226757, + -0.027876077, + -0.008177668, + 0.012324363, + 0.045491494, + 0.01120572, + -0.020238442, + 0.034922242, + 0.0072133206, + -0.010884271, + -0.019775556, + -0.008209813, + 0.010344236, + 0.0046417266, + 0.008094091, + 0.014529505, + 0.020521319, + -0.005033895, + 0.006281118, + -0.006171825, + 0.024893027, + 0.0020283447, + -0.026487416, + 0.019415533, + 0.027721781, + -0.013398004, + -0.007361187, + -0.011700751, + 0.030781977, + 0.019441249, + -0.01120572, + -0.010074219, + -0.0016924301, + 0.003539156, + -0.028287532, + 0.012433656, + -0.0019319098, + 0.019004079, + -0.0033527154, + -0.01132787, + 0.0029348314, + -0.027618917, + -0.0072583235, + -0.016316762, + 0.0015067932, + 0.033019263, + 0.0032948544, + 0.024507288, + 0.021408519, + 0.0037191676, + 0.017203962, + -0.0062232567, + -0.002508911, + 0.0017390402, + 0.036362335, + -0.012260073, + 0.023182917, + -0.008891285, + 0.01728111, + 0.0045035034, + -0.002965369, + -0.011777899, + 0.003048946, + -0.020598466, + -0.008711274, + 0.016805366, + -0.0018852997, + 0.0068918713, + -0.0067697205, + 0.0047767353, + -0.011475737, + 0.0086534135, + -0.014915244, + 0.013423719, + 0.024764448, + -0.0032755677, + -0.025548784, + -0.6891871, + -0.044359993, + 0.0076826364, + -0.002010665, + 0.002344972, + 0.027696066, + 0.0020974563, + 0.011572172, + 0.008068375, + -0.015648149, + 0.0037802428, + 0.005467851, + 0.008929859, + -0.00664757, + 0.008659842, + -0.029650476, + -0.012658671, + 0.020431312, + -0.0032787821, + -0.0034202198, + -0.00016122688, + -0.0035809444, + -0.0264617, + -0.010562821, + 0.029599044, + 0.0091163, + 0.018206883, + -0.0028078589, + -0.004153124, + 0.025330199, + -0.0009852418, + 0.001547778, + -0.015686722, + -0.014349493, + 0.04443714, + -0.0011025708, + -0.008756277, + 0.009097013, + 0.0009989034, + 0.021639962, + -0.010884271, + -0.0010639969, + 0.0053907037, + -0.028004656, + -0.012112207, + 0.0066347118, + 0.017808286, + -0.009990642, + 0.038188167, + 0.003847747, + 0.026204541, + -0.010498531, + 0.0106978305, + -0.0067954366, + 0.016548205, + -0.0016827866, + 0.029599044, + 0.0014336635, + 0.004394211, + -0.0040791905, + -0.018386895, + 0.0015759048, + -0.013680879, + -0.008023373, + -0.012536519, + 0.004709231, + -0.035745155, + -0.015931023, + 0.0022147852, + 0.00092577375, + 0.0024446214, + 0.0114500215, + -0.017499696, + 0.0324278, + 0.0113021545, + -0.0050371094, + 0.026796008, + -0.008100521, + 0.021871405, + 0.0060239583, + 0.015288125, + -0.0065736366, + -0.025394488, + -0.0063839816, + 0.030961988, + -0.01139216, + -0.029161874, + -0.023517225, + 0.026243115, + -0.0031068067, + 0.027953224, + 0.0030730546, + -0.0156095745, + -0.006911158, + -0.0031630604, + 0.02785036, + -0.02070133, + 0.005184976, + 0.004127408, + -0.0040952633, + 0.015648149, + -0.031193433, + -0.012459372, + -0.008351251, + 0.035282265, + 0.0017663635, + -0.022385724, + 0.030679114, + 0.010389239, + -0.024545863, + 0.022334293, + -0.011507882, + -0.016111035, + 0.0059789554, + 0.015352415, + -0.024545863, + 0.045877233, + 0.009656334, + 0.014375209, + -0.0068983003, + 0.0060721757, + 0.012620096, + -0.0045613647, + -0.011089998, + -0.00072607346, + -0.011572172, + -0.005172118, + -0.018682629, + -0.031913478, + -0.0028946502, + 0.006686144, + -0.010357094, + 0.00087353826, + 0.0032868183, + -0.0019624475, + 0.001547778, + 0.006641141, + -0.019132657, + 0.030550534, + -0.0220257, + -0.02867327, + -0.002116743, + -0.023247208, + -0.0054774946, + -0.0010848911, + -0.01708824, + -0.031167716, + -0.007329042, + -0.020354165, + 0.016381053, + -0.032787822, + -0.022501446, + -0.031887762, + 0.012388653, + -0.0024510503, + -0.006641141, + -0.026564565, + 0.0082805315, + -0.012452943, + 0.026435984, + 0.01234365, + 0.0061814687, + -0.00842197, + -0.0013862498, + -0.008344822, + -0.038033873, + 0.0010535498, + 0.03057625, + -0.012105778, + -0.030627681, + -0.00462244, + -0.0047317324, + -0.002820717, + -0.009817059, + -0.026924586, + -0.014439499, + -0.016561063, + -0.02273289, + 0.014593795, + -0.015365273, + 0.015841018, + 0.020791335, + 0.0108907, + -0.025780227, + 0.039705407, + -0.0027837502, + 0.027798928, + 0.013886606, + 0.0067632915, + 0.010549963, + -0.019209806, + 0.0016305512, + 0.00096354407, + -0.011212149, + 0.014735232, + 0.0061686104, + 0.0036902372, + 0.012620096, + 0.007836932, + -0.0039666835, + 0.011424305, + -0.008100521, + 0.02070133, + -0.018065447, + 0.017203962, + -0.027078882, + 0.02070133, + -0.006502918, + 0.005021037, + 0.03235065, + 0.0037191676, + -0.02689887, + -0.0089555755, + -0.008370537, + 0.015120971, + 0.0032787821, + -0.013359429, + 0.015622432, + -0.007007593, + -0.015172403, + -0.006628283, + 0.0090327235, + 0.034587935, + -0.0038445326, + -0.0020412025, + -0.003232172, + 0.03762242, + 0.011957911, + -0.00791408, + -0.0076312046, + -0.029136157, + -0.010607825, + -0.016471058, + 0.010588537, + -0.022437155, + -0.0068082944, + 0.0020894199, + -0.04011686, + 0.018798351, + 0.016638212, + 0.0027307111, + 0.034716517, + 0.03919109, + -0.0063711237, + 0.017821144, + -0.005618932, + 0.022604309, + 0.017319685, + -0.01697252, + 0.008981291, + -0.016098177, + -0.007046167, + -0.012710102, + 0.016509632, + 0.02633312, + 0.0031469879, + 0.03615661, + 0.0084283985, + 0.023890106, + 0.017949725, + -0.022964332, + -0.013642305, + 0.01431092, + -0.01120572, + 0.000014477771, + 0.005551428, + -0.00569608, + 0.00905201, + -0.00017418529, + -0.012247215, + -0.013082983, + 0.0017518982, + 0.025908807, + -0.012838682, + 0.019466965, + -0.023247208, + -0.0133465715, + 0.0021392445, + 0.020405596, + 0.012645813, + -0.003760956, + -0.034999393, + 0.011186433, + 0.00022240268, + 0.0024848024, + -0.026950303, + -0.03222207, + 0.022565736, + 0.0028319675, + 0.008286961, + 0.015468136, + 0.012157209, + 0.025715938, + 0.0061171786, + 0.012080062, + -0.02975334, + 0.0022260358, + -0.0021279939, + 0.015686722, + 0.0044585005, + -0.0061428947, + -0.013205134, + -0.030396238, + -0.0015678686, + 0.0030248372, + 0.014195197, + -0.014529505, + 0.0052428367, + -0.017743997, + -0.0162139, + -0.0017052881, + -0.0023288997, + 0.0018997649, + -0.014362351, + -0.010022786, + -0.0028689343, + -0.020225585, + 0.00010949364, + 0.025857376, + 0.017358258, + 0.019788414, + -0.0162139, + -0.021434234, + -0.0008076412, + 0.0766335, + 0.008319106, + 0.0019303026, + 0.009174161, + 0.006210399, + -0.019338384, + -0.019955568, + 0.012009343, + -0.011089998, + -0.00054003467, + 0.0023208633, + -0.012716531, + 0.0173454, + 0.0046931584, + -0.00011973984, + -0.012105778, + 0.010267088, + 0.0056992946, + 0.035333697, + -0.019286953, + 0.00389275, + 0.00905201, + -0.017229678, + 0.006563993, + -0.0053649875, + -0.0049728192, + 0.019646976, + 0.012710102, + 0.012324363, + -0.0108907, + 0.013976612, + 0.013706595, + -0.001560636, + -0.014889528, + -0.01082641, + -0.014863812, + 0.0007272789, + 0.012022201, + 0.005040324, + -0.01753827, + 0.025754511, + 0.012157209, + 0.010556392, + -0.014850954, + -0.007971941, + 0.016625354, + -0.012112207, + 0.01602103, + -0.010530677, + 0.0050821123, + 0.01803973, + -0.00389275, + -0.0068854424, + -0.008087662, + 0.00810695, + 0.015185261, + -0.0056767934, + -0.014272345, + -0.010292804, + -0.006692573, + 0.010993564, + -0.013500867, + -0.0045742225, + -0.009932781, + -0.012986548, + -0.003212885, + 0.009154874, + -0.0029444748, + -0.015455279, + 0.002684101, + 0.0061300364, + -0.014825238, + -0.026796008, + 0.00095952593, + 0.03235065, + 0.019724125, + 0.008839854, + -0.009617761, + 0.00069151766, + 0.04595438, + -0.0068468684, + -0.00046690498, + -0.014606653, + 0.0008020158, + -0.0060721757, + -0.0015702795, + 0.031322014, + -0.0137966005, + -0.0037545268, + -0.0026519562, + 0.030653398, + 0.0011893621, + 0.0091098705, + -0.008917001, + -0.006866155, + -0.012189355, + 0.018824067, + 0.005490353, + -0.015558142, + -0.0068404395, + 0.008447685, + -0.026487416, + -0.008222671, + -0.010222085, + 0.00860841, + 0.025278768, + 0.032813538, + 0.0018242244, + -0.021189932, + 0.013680879, + 0.025085898, + -0.005663935, + 0.00083817885, + -0.00028448255, + 0.0015976026, + 0.005924309, + -0.015802443, + 0.016111035, + -0.0015317055, + -0.032813538, + 0.00024831953, + -0.044591434, + 0.021665677, + -0.0034105761, + 0.0016241221, + -0.000046082758, + 0.01778257, + -0.013706595, + 0.0033816458, + 0.0010993563, + -0.005969312, + 0.020752762, + -0.015056682, + -0.021061353, + -0.03880535, + -0.029110441, + 0.022308577, + -0.0025410561, + -0.013012265, + -0.008646984, + -0.00848626, + 0.012710102, + 0.019518396, + 0.0021038852, + -0.024713017, + -0.020469887, + -0.0016418019, + 0.00591788, + 0.0075797727, + 0.009322028, + -0.002684101, + 0.005680008, + -0.022720031, + 0.01740969, + 0.0051592602, + -0.008113379, + -0.030550534, + -0.028518975, + 0.020122722, + 0.010897129, + 0.031116284, + -0.007284039, + 0.00484424, + 0.01038281, + -0.01120572, + 0.0005018626, + -0.0068597263, + -0.0056542917, + -0.03247923, + 0.010961418, + 0.015249551, + 0.0012938331, + 0.020187011, + -0.00427206, + 0.014953818, + 0.0064900597, + -0.002991085, + -0.011160717, + -0.02304148, + -0.022938617, + -0.0004564579, + 0.004362066, + -0.020187011, + -0.0076054884, + 0.0108907, + -0.01025423, + 0.020367023, + 0.011617175, + -0.005570715, + -0.008319106, + 0.03556514, + 0.0024156908, + 0.031476308, + -0.009836346, + 0.0010897128, + -0.012838682, + -0.02526591, + -0.000019249284, + 0.00880128, + 0.006348622, + 0.011025708, + 0.0038123878, + -0.0015493853, + -0.0329164, + 0.020932773, + 0.019981284, + 0.032144923, + 0.012780821, + -0.007856219, + -0.018065447, + -0.025741654, + -0.032967832, + -0.0316306, + -0.027516054, + 0.0054710656, + 0.009804201, + -0.030370522, + 0.023722952, + -0.003187169, + -0.027207462, + 0.010119221, + 0.00715546, + 0.027361758, + -0.0030601965, + 0.013693737, + 0.0047767353, + -0.0075026248, + -0.020341307, + -0.0048024515, + -0.016535347, + -0.009707767, + 0.02697602, + 0.01272939, + 0.000053943197, + 0.020045573, + 0.016239615, + 0.010427813, + 0.032376364, + -0.009315599, + -0.0133465715, + 0.018849783, + 0.0173454, + -0.02165282, + 0.00993921, + -0.019441249, + 0.012189355, + -0.018271174, + -0.020212727, + -0.001946375, + -0.0053264135, + -0.015853876, + -0.006615425, + -0.04348565, + 0.0024783735, + 0.0023722954, + 0.0014577722, + 0.009489181, + -0.010183511, + -0.016149608, + -0.02044417, + -0.011867905, + 0.019364102, + -0.005284625, + 0.016175324, + 0.006052889, + -0.006432199, + -0.02518876, + -0.008409112, + 0.009251309, + 0.02810752, + 0.0015590288, + -0.004236701, + -0.021087069, + 0.01600817, + 0.041685537, + -0.008145523, + -0.0035905878, + 0.008087662, + -0.008878428, + 0.006477202, + 0.021305654, + -0.0036613066, + -0.01094856, + 0.013963754, + -0.022102848, + 0.0000116023075, + -0.026281688, + -0.010350665, + -0.011315012, + -0.016728217, + -0.0039666835, + -0.009341314, + 0.019441249, + -0.0007718799, + 0.006737576, + -0.025214477, + 0.03672236, + 0.0076890653, + -0.01760256, + 0.015326699, + -0.0050081788, + 0.014259487, + 0.0020138794, + 0.015558142, + 0.0072326073, + -0.024648726, + 0.038085304, + -0.010022786, + -0.034999393, + -0.007393332, + 0.0021038852, + -0.0065125613, + -0.0012512411, + -0.0075926306, + 0.010485673, + -0.0109228445, + 0.0138737485, + -0.017834002, + -0.0034266487, + 0.0009715803, + -0.022360008, + 0.002631062, + 0.01171361, + -0.022437155, + -0.0080490885, + 0.012896542, + -0.0088848565, + 0.004088834, + -0.03682522, + -0.006563993, + -0.022835752, + 0.012639384, + 0.0044134976, + -0.014786664, + -0.016149608, + -0.005040324, + -0.009662763, + 0.00022039362, + -0.005773228, + 0.014092334, + -0.009881349, + -0.0046867295, + -0.015853876, + 0.021639962, + -0.011662178, + 0.0061557526, + -0.017589701, + -0.007399761, + -0.018566906, + 0.012009343, + -0.0017390402, + -0.020367023, + 0.00021838456, + -0.04006543, + -0.022720031, + -0.0016699287, + -0.014992392, + 0.0004910137, + 0.002658385, + 0.008756277, + 0.024597295, + -0.0067890077, + -0.0010712296, + 0.022642883, + 0.001965662, + 0.005641434, + -0.036362335, + -0.018515475, + 0.0029605473, + -0.011430735, + 0.014015186, + 0.009527755, + -0.0011282868, + -0.011803616, + 0.010215656, + -0.004291347, + 0.00892343, + -0.014066618, + -0.012986548, + 0.008942718, + 0.0097913435, + 0.026101677, + 0.026950303, + 0.008904143, + -0.007071883, + -0.013153702, + -0.0116043165, + 0.013359429, + 0.03265924, + -0.0078047873, + 0.0056767934, + 0.0068147234, + -0.008248387, + 0.012883685, + -0.015596717, + 0.01285154, + 0.0053199846, + 0.015841018, + 0.0010013144, + -0.010794265, + 0.0064739874, + 0.01513383, + -0.0045870803, + -0.012317934, + -0.0015566179, + 0.006943303, + -0.02702745, + -0.0014224128, + 0.0106978305, + -0.014645226, + -0.000055801574, + -0.024327276, + 0.0035616574, + -0.037879575, + 0.0008253209, + -0.02697602, + -0.0082033845, + -0.03615661, + 0.03368788, + 0.02221857, + -0.015262409, + -0.0033173559, + -0.03026766, + -0.001554207, + -0.0024896243, + -0.010961418, + -0.010267088, + -0.030601965, + -0.026101677, + 0.0016892157, + 0.00560286, + -0.027516054, + -0.0084283985, + 0.000048794987, + 0.0063904105, + 0.021511381, + 0.23596944, + 0.0104471, + -0.016908228, + 0.028724702, + -0.0034170053, + 0.03551371, + 0.024455857, + -0.012176497, + 0.024404425, + 0.025291625, + -0.0106206825, + 0.0038123878, + 0.0081262365, + -0.000507488, + 0.0036484487, + -0.0067504337, + -0.029701907, + 0.0073033264, + -0.0068725846, + -0.008171239, + 0.013783743, + -0.010871412, + 0.011745755, + 0.0012890113, + 0.03134773, + 0.0059789554, + -0.013018694, + -0.00068870495, + 0.023465794, + 0.013256566, + -0.007830503, + -0.00974634, + 0.0013966969, + -0.01329514, + -0.005078898, + -0.0063229064, + -0.016046746, + 0.012369366, + 0.01665107, + 0.024481572, + 0.015455279, + 0.013655163, + -0.0282361, + -0.012054346, + 0.0068404395, + 0.02152424, + -0.012337221, + -0.01608532, + 0.023877248, + 0.012832253, + -0.016921086, + -0.0017358258, + 0.029830487, + 0.01949268, + 0.0017952939, + 0.0262174, + 0.02392868, + -0.008036231, + 0.02702745, + -0.008151952, + -0.009514897, + 0.018759776, + -0.02234715, + 0.0045035034, + 0.014452357, + -0.0056317905, + -0.017885435, + 0.007926938, + 0.009682051, + -0.014902386, + 0.013693737, + 0.0077276393, + 0.014285203, + 0.010099934, + -0.008743418, + -0.006412912, + 0.019518396, + -0.0026278475, + 0.021035638, + -0.012774392, + -0.009765628, + -0.014015186, + -0.0045356485, + 0.020559892, + -0.0092641665, + -0.017872578, + 0.00052034593, + 0.0069690193, + 0.032556377, + -0.0059532397, + -0.0043074195, + -0.016162466, + 0.012157209, + -0.002605346, + 0.009932781, + 0.024468714, + -0.015841018, + 0.017821144, + -0.024597295, + 0.0053489152, + -0.027901793, + -0.035153687, + 0.010839268, + -0.015661007, + -0.016471058, + 0.010607825, + -0.0019174446, + 0.017486837, + 0.041814115, + -0.001841904, + 0.006493274, + -0.0063775526, + 0.009881349, + -0.004291347, + 0.017191105, + -0.006911158, + 0.011630033, + -0.011462879, + -0.01784686, + -0.010871412, + -0.006348622, + -0.021768542, + -0.00943132, + 0.0021231722, + -0.007573344, + -0.012131494, + -0.004911744, + 0.016239615, + 0.0019142301, + -0.03875392, + 0.04027116, + -0.008344822, + 0.027798928, + 0.0045806514, + -0.006692573, + 0.00011431538, + -0.011636462, + -0.008190527, + 0.015866734, + -0.01051139, + 0.0018708345, + -0.0032803894, + 0.01240794, + -0.00031160485, + -0.0011821295, + 0.00062682596, + 0.006531848, + -0.022514304, + -0.01784686, + -0.022488588, + -0.010183511, + -0.011199291, + -0.00019899716, + -0.007791929, + 0.015185261, + -0.011192862, + -0.023362929, + -0.0060111005, + 0.0029042938, + 0.02286147, + -0.008376967, + 0.007959083, + -0.0013500868, + -0.0049021007, + 0.0048153093, + 0.00079639046, + -0.16489059, + 0.01753827, + 0.017563986, + -0.016432485, + -0.011083569, + 0.0035938022, + 0.024507288, + 0.020598466, + -0.0064739874, + 0.032119207, + 0.009013436, + 0.0116043165, + -0.05811802, + -0.01956983, + -0.00021798276, + 0.014285203, + -0.0032369937, + -0.003532727, + 0.024545863, + 0.008190527, + -0.0051592602, + -0.024082975, + 0.019466965, + 0.0066347118, + 0.0059918133, + 0.00050507707, + -0.01569958, + 0.035333697, + -0.0025410561, + -0.008711274, + -0.0039506108, + 0.0027049952, + 0.0025185547, + 0.025934523, + 0.021485666, + -0.0020797765, + 0.0018627982, + 0.008666271, + -0.0022951474, + -0.0050049643, + -0.007920509, + 0.019595545, + 0.011295726, + 0.02354294, + -0.019068368, + 0.026924586, + 0.036130894, + 0.0130379805, + -0.0059114513, + -0.0068275817, + 0.017049666, + -0.03070483, + -0.01684394, + -0.004053475, + 0.0033077125, + 0.01329514, + 0.02165282, + 0.015429563, + -0.004030973, + 0.024275845, + 0.010961418, + -0.04096549, + -0.0073483293, + 0.0031437734, + 0.0020122721, + -0.014285203, + 0.006097892, + 0.009206305, + -0.028827567, + 0.009842775, + -0.019389817, + -0.008023373, + 0.009142016, + -0.0119064795, + 0.0028448256, + 0.003519869, + -0.017756855, + 0.010813552, + -0.012054346, + -0.010119221, + 0.012292218, + 0.029804772, + -0.0058021583, + -0.005088541, + -0.017075382, + 0.017962582, + -0.0023080055, + 0.016856797, + -0.021292796, + -0.021961411, + 0.022668598, + -0.034922242, + -0.0016683214, + -0.045748655, + 0.0076826364, + 0.010723546, + -0.0007630401, + -0.009270595, + 0.0084283985, + -0.002063704, + 0.008331964, + -0.0029685835, + -0.011006421, + 0.019235522, + 0.029213306, + 0.017101098, + -0.007001164, + 0.0023321141, + 0.020238442, + -0.002741962, + -0.022321435, + 0.023774384, + -0.00015469744, + 0.024790164, + 0.008781993, + -0.006236115, + 0.009926352, + -0.028081805, + 0.0071811755, + 0.013655163, + 0.042328432, + 0.0036355907, + -0.0065061324, + 0.005708938, + -0.008698416, + -0.031064853, + -0.099109225, + -0.019916994, + 0.016676785, + 0.01968555, + 0.0024462286, + 0.02265574, + 0.008994149, + 0.028210383, + -0.004609582, + 0.026410269, + -0.0047124457, + -0.020649899, + -0.019646976, + 0.0067118597, + 0.0067504337, + -0.014066618, + 0.011893622, + -0.023028621, + -0.039911136, + 0.0058150166, + -0.00039819523, + 0.0018033301, + -0.0007843361, + -0.007734068, + -0.015249551, + -0.011668607, + -0.035359416, + 0.013256566, + 0.0025410561, + -0.0103956675, + 0.01974984, + -0.017036809, + 0.014388067, + -0.005908237, + -0.009720624, + 0.0051239007, + -0.014580937, + 0.00242212, + 0.009193447, + -0.03456222, + 0.0024446214, + 0.0034234342, + 0.011938624, + -0.012845111, + -0.011797186, + -0.0029155444, + -0.013082983, + 0.0039409674, + -0.00042712566, + -0.026873155, + 0.0045227907, + 0.03898536, + -0.015661007, + -0.003998828, + 0.038522474, + -0.028133236, + 0.01753827, + 0.022694316, + -0.017924009, + 0.0150823975, + 0.013835175, + 0.004127408, + -0.0038156023, + 0.020289876, + -0.011655749, + -0.015288125, + -0.030653398, + -0.010305662, + 0.015995312, + -0.036233757, + -0.010267088, + 0.013886606, + -0.0061396803, + 0.011122143, + -0.017422548, + 0.0036420196, + -0.007939796, + -0.012459372, + 0.00088157447, + -0.006052889, + -0.028518975, + -0.017949725, + -0.0053649875, + -0.0062136133, + 0.0004568597, + 0.02728461, + -0.018374037, + -0.007084741, + 0.03659378, + -0.009977784, + 0.003944182, + 0.039525397, + 0.011089998, + -0.0131087, + -0.013603731, + 0.015108113, + 0.010993564, + 0.017795429, + 0.016535347, + -0.016535347, + -0.016869655, + -0.001407144, + -0.045337196, + 0.01253009, + -0.0041949125, + -0.015185261, + -0.0063968394, + 0.00093380996, + -0.013629447, + 0.0072776102, + -0.005021037, + 0.0011564136, + -0.004754234, + -0.00930917, + -0.003805959, + -0.0049728192, + -0.010453529, + -0.0008880035, + 0.013809458, + -0.0038284601, + 0.020521319, + -0.006068961, + -0.0025715937, + 0.003969898, + 0.0060625323, + 0.00582466, + -0.02849326, + 0.014362351, + -0.017924009, + -0.014966676, + -0.02152424, + -0.009662763, + 0.009090584, + -0.02785036, + 0.0061428947, + 0.03438221, + -0.015571, + -0.02462301, + -0.014529505, + 0.022630025, + 0.004448857, + -0.02126708, + -0.026513131, + -0.032376364, + 0.019531256, + -0.01506954, + -0.023851532, + 0.020791335, + -0.011032137, + -0.010909987, + 0.0073804744, + 0.009322028, + 0.015802443, + 0.023080055, + 0.0012576701, + -0.0076247756, + -0.0067247176, + -0.014568078, + 0.037108097, + 0.0068018655, + 0.013822316, + -0.018194025, + 0.012793679, + -0.009926352, + 0.0022292503, + 0.015030965, + 0.008621268, + 0.013134415, + -0.008550549, + -0.009058439, + -0.000013900168, + 0.0052364077, + -0.015776727, + -0.007997656, + 0.04348565, + 0.016818224, + 0.022964332, + 0.0062200422, + -0.008492689, + -0.003507011, + -0.0048410255, + 0.0051978338, + 0.021395661, + -0.004792808, + -0.008942718, + 0.014760949, + 0.01892693, + 0.03520512, + -0.045440063, + -0.0027387473, + 0.0033912894, + -0.0019319098, + -0.022745747, + -0.00031240846, + -0.0035841588, + 0.0055546425, + 0.005680008, + 0.0024076547, + -0.0072326073, + 0.005641434, + 0.0065414915, + 0.025960239, + 0.011128572, + -0.016252473, + -0.0020315591, + -0.02594738, + -0.015095255, + 0.009013436, + -0.011115714, + -0.011912908, + -0.0131151285, + 0.008589123, + 0.010408525, + -0.021999985, + 0.009881349, + 0.016059604, + -0.0048024515, + -0.009026295, + -0.026770292, + -0.022038558, + -0.013005836, + 0.0064514857, + 0.006943303, + 0.008061946, + -0.003748098, + -0.016175324, + 0.023401503, + 0.021665677, + 0.032942116, + -0.030421954, + 0.017178247, + 0.016252473, + 0.009302741, + 0.0023915821, + -0.0040631182, + -0.014992392, + -0.018309748, + -0.020418454, + -0.023915822, + 0.01702395, + 0.006400054, + 0.048011657, + -0.009784915, + -0.04309991, + 0.027824644, + -0.01424663, + 0.01183576, + 0.0054260627, + 0.013526583, + -0.020341307, + -0.008466972, + -0.0024831952, + 0.014735232, + 0.024713017, + -0.00892343, + -0.018155452, + -0.0020267374, + -0.025561642, + 0.010479244, + -0.024674442, + -0.011263581, + 0.034485072, + 0.0047574486, + 0.0052139065, + 0.007881935, + -0.017628275, + -0.009238451, + 0.010479244, + 0.0109228445, + -0.0021987127, + -0.010106363, + 0.016381053, + -0.012137922, + -0.02354294, + -0.004448857, + 0.013719453, + -0.026718859, + -0.016946804, + -0.02633312, + -0.0027355328, + 0.00810695, + 0.0015614396, + 0.029856203, + -0.01398947, + -0.021035638, + -0.0021183505, + -0.007984798, + -0.017872578, + 0.012067203, + -0.012427227 + ] + }, + { + "object": "embedding", + "index": 1, + "embedding": [ + 0.024428807, + -0.010380333, + 0.002464533, + -0.016939685, + -0.0017831246, + 0.02194517, + -0.01774209, + -0.028529994, + 0.0144051, + -0.010157443, + 0.00918946, + 0.0086672595, + -0.00750186, + 0.0065784566, + -0.017601987, + -0.016290117, + 0.032249082, + -0.008641786, + 0.024658067, + -0.025307633, + -0.022085274, + 0.009832659, + -0.007527333, + 0.010335755, + -0.028555468, + 0.0007634002, + 0.010736958, + -0.016697688, + 0.0077183824, + 0.02269663, + 0.0116094155, + -0.012628344, + 0.03436336, + -0.029956495, + -0.038209815, + 0.010221126, + 0.017958613, + 0.0039833733, + 0.01928322, + -0.019423323, + 0.0054862923, + 0.01928322, + 0.00044180098, + -0.009807185, + -0.019525215, + -0.0032733073, + 0.019346902, + 0.013309752, + -0.008527157, + 0.023919344, + 0.008246952, + 0.013972055, + -0.014430573, + -0.016264644, + 0.0047061755, + -0.036477637, + 0.010310282, + 0.018442605, + -0.015424028, + 0.0035089345, + -0.011838675, + -0.0071197622, + 0.00086210895, + -0.0028721043, + -0.0017656118, + -0.0024931903, + -0.010526804, + 0.0044960217, + 0.019729001, + -0.0010865916, + 0.022836732, + 0.037496563, + 0.010641433, + 0.005871575, + 0.008832836, + 0.010342123, + -0.010176547, + 0.0061167544, + -0.0052538496, + -0.011450208, + -0.00058429176, + -0.018060505, + -0.018939331, + -0.014634359, + 0.012163457, + 0.0053875837, + -0.015729707, + -0.0085207885, + -0.030899003, + -0.023817452, + -0.0016939684, + 0.048526466, + 0.015844336, + -0.010157443, + 0.007036974, + 0.016175488, + 0.012711132, + 0.024594383, + 0.025231214, + -0.035025664, + 0.00416487, + 0.00859084, + -0.035433233, + -0.00014378433, + -0.03744562, + -0.025842572, + 0.00046050787, + 0.0015220243, + 0.030491432, + -0.027358226, + -0.027001603, + 0.020314885, + 0.043075196, + -0.020493196, + 0.005836549, + -0.017461885, + 0.01515656, + -0.015997175, + -0.02018752, + 0.0012720684, + 0.009819922, + 0.044807374, + 0.016825056, + -0.013628167, + 0.040145777, + -0.0038687438, + -0.01083885, + -0.02149939, + -0.006648508, + 0.012150721, + 0.010857956, + 0.015424028, + -0.000029478275, + 0.0053621107, + -0.012571029, + 0.00039443673, + -0.016939685, + 0.018811965, + 0.008081376, + -0.004909961, + 0.010584119, + 0.024148602, + -0.02588078, + -0.010526804, + -0.0029564844, + 0.027893165, + 0.018238818, + -0.013640904, + -0.016455693, + 0.0015498856, + 0.007871222, + -0.021142764, + 0.008756416, + -0.005378031, + 0.0064988527, + 0.0018786492, + -0.030593324, + 0.014035738, + -0.013564484, + 0.0051901666, + -0.02014931, + 0.009437825, + 0.029829128, + -0.007871222, + 0.026288353, + 0.025243951, + 0.010972585, + 0.009488771, + -0.02281126, + 0.0039292425, + -0.0041393964, + 0.026390245, + -0.022594737, + 0.015691496, + -0.013704587, + 0.013437118, + 0.0045342315, + -0.014748989, + -0.014825408, + -0.0022018405, + -0.019703528, + 0.0042253686, + 0.016009912, + 0.012163457, + 0.0058906795, + -0.00003445351, + 0.026594032, + -0.014354154, + 0.007259865, + -0.012469136, + 0.022760313, + 0.020849822, + -0.015525921, + -0.038439073, + -0.68227446, + -0.04771132, + 0.021805067, + -0.004375024, + -0.001918451, + 0.030746164, + 0.012545556, + 0.01856997, + -0.006170885, + -0.012520082, + 0.011813201, + 0.015131086, + 0.004152133, + 0.0062377523, + 0.0064797476, + -0.022556527, + -0.013640904, + -0.0046202033, + 0.013475328, + -0.0036808788, + 0.0012983377, + 0.009348668, + -0.005791971, + -0.012825761, + 0.020862559, + 0.018073242, + 0.024517965, + 0.010227494, + -0.008208741, + 0.004056609, + -0.016608533, + 0.017525569, + -0.0148763545, + -0.007985851, + 0.03856644, + 0.00060260063, + -0.012443663, + 0.017614724, + 0.017652934, + 0.011794096, + -0.016200962, + 0.009163987, + 0.006712191, + -0.023231568, + -0.01444331, + 0.014850881, + 0.011596679, + -0.013921109, + 0.03999294, + 0.0084889475, + 0.020849822, + -0.030516906, + 0.013182386, + -0.0028116056, + 0.028402628, + 0.003922874, + 0.037165415, + 0.012182563, + -0.009622505, + 0.006317356, + -0.0015506817, + -0.00072558847, + -0.00050030975, + -0.009100304, + -0.0068395566, + -0.0043845763, + -0.029064933, + -0.022836732, + -0.022289058, + -0.0076801726, + 0.0012370427, + 0.015296662, + -0.0127175, + 0.013233332, + 0.0041139233, + -0.005747393, + 0.023040518, + -0.007998588, + 0.01140563, + 0.0023116937, + 0.009781713, + -0.014073948, + -0.028835673, + -0.01185141, + 0.038031504, + -0.0057633137, + -0.040706187, + -0.023116937, + 0.022314532, + -0.0021938803, + 0.012150721, + -0.0067312955, + -0.025842572, + -0.007030606, + -0.012112511, + 0.038515493, + -0.016162751, + -0.0009011148, + -0.0030169832, + 0.0002167213, + 0.0025791624, + -0.016048122, + -0.01222714, + -0.0059893886, + 0.036961626, + -0.011170003, + -0.019372376, + 0.019499741, + 0.014748989, + -0.026237406, + 0.03624838, + -0.017347256, + -0.008686365, + 0.0101383375, + 0.013526274, + -0.026568558, + 0.053035222, + 0.0012744565, + -0.010195652, + -0.0066421395, + 0.011348315, + 0.023104202, + -0.0016732714, + 0.0016780477, + -0.011583942, + -0.013717324, + -0.007087921, + -0.007712014, + -0.024810906, + 0.007049711, + 0.0048335413, + 0.0040725293, + 0.018506287, + 0.003537592, + 0.008603577, + -0.005836549, + 0.016583059, + -0.012271719, + 0.019907312, + -0.0027940928, + -0.01654485, + 0.006215463, + -0.037216358, + 0.0039706365, + 0.003036088, + -0.031561308, + -0.042718574, + -0.005263402, + -0.01928322, + 0.0055340547, + -0.020913506, + -0.011953304, + -0.021091817, + 0.018862912, + 0.006763137, + -0.0065211416, + -0.029141352, + 0.002504335, + -0.020238465, + 0.0030281278, + 0.002696976, + -0.0067440323, + -0.0029596686, + -0.0013747573, + 0.00010248987, + -0.024377862, + -0.009208566, + 0.022365479, + -0.0077756974, + -0.023320723, + -0.008686365, + 0.00052498694, + -0.000013967976, + -0.010647802, + -0.017423676, + -0.011418366, + -0.011501154, + -0.029192299, + 0.0001619937, + -0.015742444, + 0.0138829, + 0.013742796, + 0.01594623, + -0.0007228023, + 0.039789155, + -0.0076101213, + 0.012201668, + 0.016264644, + 0.0030822584, + -0.012481873, + -0.0007176281, + 0.0031029554, + 0.00016915804, + -0.010303914, + -0.0039419793, + 0.0022909967, + 0.012902181, + 0.013093229, + 0.0050819055, + 0.0030456407, + 0.010252967, + -0.01984363, + 0.017194416, + -0.01797135, + 0.0051041944, + -0.04508758, + 0.008762784, + -0.008539894, + -0.0072917063, + 0.02746012, + -0.00082469516, + -0.011845043, + -0.007852117, + -0.008374318, + 0.0024868222, + 0.008839204, + -0.016264644, + 0.004047056, + -0.009367773, + -0.008125954, + 0.0013715731, + 0.0037222728, + 0.0351785, + 0.0013373435, + -0.0021349734, + 0.0035312236, + 0.0259572, + 0.018990278, + -0.008679996, + -0.015207506, + -0.023690086, + -0.010928007, + -0.01376827, + 0.014023002, + -0.03713994, + -0.00040319315, + 0.0027654353, + -0.03724183, + 0.02389387, + 0.019779947, + 0.0011064926, + 0.03810792, + 0.02412313, + -0.0026332932, + 0.011845043, + -0.0034420674, + 0.012520082, + 0.009845396, + -0.029421557, + 0.014608886, + -0.017487358, + -0.0074636503, + 0.004148949, + 0.0093868775, + 0.014596149, + -0.010762431, + 0.034414306, + 0.009253143, + 0.017474622, + 0.021028135, + -0.028682834, + -0.005075537, + 0.0059225215, + -0.0031125078, + 0.0061772536, + 0.009622505, + -0.009240407, + -0.008399791, + 0.0024724933, + -0.026364772, + -0.021817803, + -0.0022129852, + 0.023562718, + -0.018442605, + 0.018022295, + -0.014736252, + -0.0052092713, + 0.0037318252, + 0.010265703, + 0.02111729, + 0.0013564484, + -0.03331896, + 0.014290471, + -0.0012306744, + -0.000010982834, + -0.032809492, + -0.032325502, + 0.01132921, + 0.0020808429, + 0.00047921477, + 0.014048475, + 0.004820805, + 0.03398126, + 0.006024414, + 0.0003705556, + -0.025893517, + 0.007858485, + 0.01511835, + 0.011768623, + 0.0091576185, + -0.008469842, + -0.01853176, + -0.02607183, + -0.003980189, + 0.0034134102, + 0.012443663, + -0.011297368, + 0.0015427213, + -0.01148205, + -0.030771637, + -0.02221264, + 0.002843447, + 0.004276315, + -0.01781851, + -0.01527119, + 0.0015228203, + -0.021601282, + -0.0027733957, + 0.032503817, + 0.014927301, + 0.0053143483, + -0.011698572, + -0.016901474, + -0.012405453, + 0.07677625, + 0.013844689, + 0.0063237245, + 0.014621622, + 0.0046934388, + -0.015347608, + -0.018175134, + 0.013322488, + 0.0031507176, + 0.001935964, + 0.007845748, + -0.012908549, + 0.012825761, + -0.000054677846, + 0.012634712, + 0.0055754487, + 0.0067312955, + 0.012953127, + 0.024734486, + -0.025142059, + 0.015576867, + -0.0017831246, + -0.012889444, + 0.005298428, + -0.00686503, + -0.0028816569, + 0.025766151, + 0.0036999837, + 0.0140102655, + 0.005393952, + -0.0031650462, + 0.015640551, + 0.0013588365, + -0.022352742, + -0.01132921, + -0.008170532, + -0.003852823, + 0.01961437, + -0.0040534246, + 0.003875112, + 0.031968877, + 0.021410232, + 0.013093229, + -0.011469313, + -0.0009608176, + 0.01500372, + -0.010666907, + 0.016837792, + -0.004460996, + -0.0033433589, + 0.026772343, + -0.0073744943, + -0.0045405994, + -0.005670973, + 0.017347256, + 0.020938978, + -0.0027511066, + -0.017398203, + -0.011692204, + -0.017194416, + 0.0045405994, + -0.0033879369, + -0.0018054137, + -0.007928536, + -0.027969584, + -0.0023116937, + 0.0063078036, + -0.0044801007, + -0.013297016, + -0.0006826024, + -0.0065179574, + -0.024709014, + -0.021066345, + 0.0023944818, + 0.0377513, + 0.023575455, + 0.02092624, + -0.010851587, + -0.010068286, + 0.04880667, + 0.004760306, + -0.0034038576, + -0.015933493, + 0.01053954, + -0.01200425, + 0.0023053256, + 0.040833555, + -0.012074301, + -0.024059447, + -0.0005229968, + 0.034465253, + -0.008113218, + 0.016672216, + -0.010526804, + -0.00547674, + -0.011093583, + 0.021372022, + 0.0103994375, + -0.01706705, + -0.0020999478, + 0.020696983, + -0.0259572, + -0.013093229, + -0.015182033, + 0.0141248945, + 0.01132921, + 0.023957554, + 0.002021936, + -0.022976834, + 0.01511835, + 0.0000023414705, + -0.0073872306, + -0.016404746, + 0.0038814803, + 0.014175842, + 0.014392364, + -0.011488417, + 0.015220243, + -0.0067058224, + -0.02888662, + 0.0082596885, + -0.034490727, + 0.021168238, + -0.0013039099, + -0.009998235, + -0.0010085799, + 0.0192068, + 0.0014089869, + 0.0056805257, + 0.011131792, + 0.0013644088, + 0.025345843, + -0.019665318, + -0.0127175, + -0.035153028, + -0.02419955, + 0.029905548, + 0.0105140675, + -0.00964161, + -0.015245716, + -0.010144706, + 0.009011148, + 0.0062536728, + 0.0040247673, + -0.026594032, + -0.01714347, + 0.0028912092, + 0.007928536, + -0.011182739, + 0.01519477, + 0.00092101574, + -0.009966393, + -0.012316297, + 0.018608179, + 0.0016477982, + -0.009011148, + -0.019346902, + -0.030822584, + 0.027689379, + 0.007017869, + 0.025307633, + -0.010870692, + -0.0004103575, + 0.010596856, + -0.0032335056, + 0.0018245187, + 0.0022687078, + -0.0064893, + -0.03443978, + 0.032249082, + 0.008597208, + 0.007820276, + 0.022085274, + 0.00051225035, + 0.0048399097, + 0.019461533, + -0.0076164897, + -0.005454451, + -0.026594032, + -0.026746871, + -0.007584648, + 0.0041839746, + -0.016710425, + -0.007489124, + -0.004254026, + -0.0064415378, + 0.01872281, + 0.008851941, + -0.00922767, + -0.0031332048, + 0.032580234, + -0.018888384, + 0.042412896, + -0.012309928, + 0.0023944818, + -0.006107202, + -0.016888738, + -0.0046807025, + 0.010934375, + 0.004043872, + 0.014914564, + 0.01508014, + -0.017270837, + -0.015666025, + 0.005448083, + 0.0149909835, + 0.021473916, + -0.003196888, + -0.015653288, + -0.028147897, + -0.025485946, + -0.022289058, + -0.034770932, + -0.038439073, + 0.011424734, + 0.0008382278, + -0.02325704, + 0.025078375, + -0.0050628004, + -0.01909217, + 0.0036331166, + 0.014023002, + 0.028249789, + -0.003951532, + 0.0071261306, + 0.025829835, + -0.016786845, + -0.005830181, + 0.008336108, + -0.011934198, + -0.011189108, + 0.023104202, + 0.028224315, + -0.018888384, + 0.028759254, + 0.0076929093, + 0.0064670113, + 0.032733075, + -0.01812419, + -0.015691496, + -0.00011194281, + 0.025040165, + -0.015564132, + 0.012921286, + -0.026160987, + 0.01230356, + -0.019970996, + -0.004566073, + 0.007743856, + -0.0030026545, + -0.0097626075, + -0.006699454, + -0.028555468, + 0.012564661, + 0.015232979, + 0.0061772536, + 0.01928322, + -0.002273484, + -0.013309752, + -0.015385819, + -0.019168591, + 0.03268213, + 0.011978777, + 0.019181326, + -0.003241466, + -0.0060976497, + -0.0069605545, + 0.00037990903, + -0.0044482592, + 0.027078021, + -0.0048494623, + 0.005967099, + -0.023842923, + 0.021130027, + 0.034770932, + -0.022187166, + -0.0037795876, + 0.008380686, + -0.013666377, + -0.0057346565, + 0.013844689, + -0.009985498, + -0.02393208, + 0.005846102, + -0.030262172, + 0.0028052372, + -0.018850176, + 0.0007538478, + 0.012297192, + -0.023460826, + -0.0024279153, + -0.011864147, + 0.008055902, + 0.005897048, + -0.0056104744, + -0.010609591, + 0.025817098, + 0.008094112, + -0.012297192, + 0.016786845, + -0.008367949, + 0.012271719, + -0.011348315, + 0.010189284, + 0.0035630653, + -0.029472504, + 0.021091817, + -0.0092722485, + -0.03263118, + -0.0140102655, + -0.011399262, + -0.0036745104, + -0.006616666, + -0.0066867177, + 0.004040688, + -0.004566073, + 0.0088965185, + -0.01718168, + 0.005648684, + -0.003496198, + -0.021996116, + 0.016876, + 0.02603362, + -0.022314532, + -0.008234215, + 0.009921815, + -0.011112688, + 0.0022894046, + -0.035127558, + -0.008036798, + -0.027511066, + 0.0048239892, + 0.0037859557, + -0.009017516, + -0.012762078, + -0.0051710615, + -0.018009558, + 0.0008867861, + -0.006314172, + 0.011431103, + -0.006355566, + 0.006355566, + -0.02333346, + 0.00825332, + -0.02588078, + 0.024594383, + -0.008998412, + -0.023741031, + -0.018862912, + 0.012329034, + -0.00375093, + -0.00652751, + -0.0055276863, + -0.042667627, + -0.01812419, + -0.014659832, + -0.0057346565, + -0.000505882, + 0.0063714865, + -0.0017958613, + 0.02051867, + -0.01714347, + -0.0074827555, + 0.00821511, + 0.009246775, + -0.0075082285, + -0.024352388, + -0.009960025, + -0.0018420315, + -0.0107751675, + 0.020493196, + 0.011908726, + -0.00656572, + -0.008367949, + 0.014838144, + -0.00010696758, + 0.0047475696, + -0.0058874954, + -0.007177077, + 0.00077573885, + 0.0055436073, + 0.024849117, + 0.0377513, + 0.012125248, + 0.0035057506, + -0.019690791, + -0.014812672, + 0.004422786, + 0.03530587, + -0.02483638, + 0.009934552, + 0.0023323908, + -0.019372376, + 0.01650664, + -0.022900416, + 0.005094642, + 0.016124541, + 0.025689732, + 0.007928536, + -0.009781713, + 0.011647625, + 0.0118705155, + -0.00042627825, + -0.018608179, + -0.008132322, + 0.0022050247, + -0.01812419, + -0.00560729, + 0.016723162, + -0.020684246, + 0.004085266, + -0.019945523, + 0.004209448, + -0.018837439, + 0.0016064043, + -0.024339652, + -0.009278617, + -0.035433233, + 0.017309045, + 0.01710526, + -0.0052665863, + 0.003913322, + -0.03168867, + 0.002923051, + 0.00006199144, + -0.012239877, + 0.0066230344, + -0.022161692, + -0.026313826, + 0.004152133, + -0.0035280394, + -0.026084566, + 0.0030838505, + 0.015385819, + 0.0149909835, + 0.02479817, + 0.22925888, + 0.016570322, + -0.011125424, + 0.037598457, + 0.0056327633, + 0.030669745, + 0.02281126, + -0.017869456, + 0.03324254, + 0.029370612, + -0.016761372, + -0.0040088464, + -0.007743856, + 0.0025520972, + 0.00500867, + -0.02107908, + -0.033599164, + 0.0008788257, + -0.022441898, + -0.014112158, + 0.014379627, + -0.005075537, + 0.015131086, + 0.006966923, + 0.029345138, + 0.009807185, + -0.010826115, + 0.010068286, + 0.021321077, + 0.009348668, + -0.005432162, + -0.014838144, + 0.0032175847, + -0.011450208, + 0.0037955083, + -0.004715728, + -0.0015642142, + 0.008565367, + 0.020773403, + 0.030032914, + 0.012615607, + 0.01121458, + -0.03380295, + -0.014163105, + -0.0035949068, + 0.006552983, + -0.026313826, + -0.011055373, + 0.014494256, + 0.018149663, + -0.008164164, + 0.004339998, + 0.033268012, + 0.031077316, + -0.0078011705, + 0.01789493, + 0.028046004, + -0.006339645, + 0.005330269, + -0.010342123, + -0.019741738, + 0.019894578, + -0.025384054, + -0.006043519, + 0.0163538, + -0.011061741, + -0.022365479, + -0.0030647456, + 0.008839204, + -0.03135752, + -0.0004107555, + 0.0059734676, + 0.0074827555, + 0.013093229, + -0.016965158, + -0.017041577, + 0.008800994, + -0.003537592, + 0.022110745, + -0.0020728824, + -0.0086672595, + -0.005053248, + -0.010310282, + 0.0037541143, + -0.002800461, + -0.019015752, + -0.0008318595, + 0.006591193, + 0.026543085, + -0.015347608, + 0.0029262349, + -0.004098003, + 0.0010929599, + 0.00240085, + 0.018799229, + 0.027842218, + -0.0025314002, + 0.0141248945, + -0.020773403, + 0.016417483, + -0.027001603, + -0.035840806, + 0.007890327, + -0.0142395245, + -0.02314241, + 0.020085625, + 0.004002478, + 0.0007980279, + 0.026594032, + -0.0006599153, + -0.0058652065, + -0.015958967, + 0.0076101213, + -0.006801347, + 0.016723162, + -0.016786845, + 0.017576514, + -0.02265842, + -0.007966747, + 0.00307589, + -0.0031841511, + -0.012819393, + 0.00075942004, + -0.011392893, + 0.012348139, + -0.016901474, + -0.00825332, + 0.015653288, + 0.00043543268, + -0.035968173, + 0.03525492, + 0.0036745104, + 0.032784022, + -0.010635065, + -0.014698042, + 0.012539187, + -0.007807539, + 0.0024088104, + 0.010647802, + -0.014659832, + -0.0036331166, + -0.005285691, + 0.010590487, + 0.013246069, + -0.0042922357, + 0.0035885384, + -0.0022925888, + -0.01797135, + -0.0096479785, + -0.01196604, + -0.018862912, + -0.0039674523, + -0.005995757, + -0.01650664, + 0.017296309, + -0.0021827356, + -0.015767917, + -0.010450385, + 0.004967276, + 0.030924477, + -0.012551924, + 0.0032382817, + 0.020811612, + -0.0009998234, + 0.012456399, + -0.00065752724, + -0.16200961, + 0.016532114, + 0.006884135, + -0.011475681, + -0.019474268, + 0.0021365655, + 0.021881487, + 0.013220596, + -0.019117644, + 0.024161339, + -0.0014567492, + 0.017232627, + -0.053493742, + -0.017551042, + -0.0035598811, + 0.017041577, + -0.008450737, + 0.005846102, + 0.02123192, + 0.002357864, + 0.0051583247, + -0.02389387, + 0.0076929093, + 0.013793743, + 0.016684953, + -0.00551495, + -0.017156206, + 0.029880075, + 0.0033147014, + -0.015373082, + 0.0026364771, + 0.008578103, + 0.014061212, + 0.0056104744, + 0.022314532, + -0.0059893886, + 0.004467364, + 0.011921462, + 0.012087038, + -0.007597385, + -0.0013198307, + 0.022785787, + 0.020276675, + 0.01812419, + -0.013933846, + 0.027128968, + 0.02479817, + 0.02603362, + 0.0043845763, + -0.0039833733, + 0.019270483, + -0.0288102, + -0.020862559, + -0.011730413, + 0.021333814, + 0.019932786, + 0.02456891, + 0.015041931, + -0.007196182, + 0.024059447, + 0.011291, + -0.050386008, + -0.006511589, + 0.013831953, + 0.0026603583, + -0.00581426, + 0.00064717873, + 0.008743679, + -0.020289412, + 0.006871398, + -0.015360345, + -0.011392893, + -0.009597031, + -0.012558293, + 0.0024979666, + 0.01099169, + -0.022454634, + 0.00463294, + -0.010641433, + -0.005499029, + 0.014354154, + 0.02888662, + -0.008157795, + -0.009654347, + -0.015882546, + 0.009660714, + -0.00050468795, + 0.019359639, + -0.02265842, + -0.004607467, + 0.011252791, + -0.037904136, + -0.0048112525, + -0.040324092, + 0.010666907, + 0.014596149, + -0.008508052, + 0.0064096963, + 0.015029194, + 0.0066867177, + -0.001157439, + -0.003137981, + -0.015895283, + 0.0073999674, + 0.02142297, + 0.014264997, + -0.0008254912, + 0.013679113, + 0.03713994, + 0.00041632776, + -0.013233332, + 0.03357369, + -0.00223209, + 0.021601282, + 0.0063491976, + -0.009749871, + 0.019856367, + -0.02262021, + 0.0034643565, + 0.008673628, + 0.05721283, + -0.00889015, + 0.00012497793, + 0.005142404, + -0.012698395, + -0.016914211, + -0.10072107, + -0.01590802, + 0.016379274, + 0.029064933, + 0.00994092, + 0.0144687835, + 0.00757828, + 0.01976721, + -0.0075082285, + 0.026135514, + -0.004365471, + -0.015806127, + -0.007221655, + 0.00031722107, + -0.008240583, + -0.009246775, + 0.004884488, + -0.015360345, + -0.029141352, + 0.010004603, + -0.0050882734, + 0.009444192, + 0.008266057, + -0.007992219, + -0.016124541, + -0.0060658082, + -0.031204682, + 0.014532466, + 0.0055340547, + -0.017054314, + 0.025052901, + -0.018748282, + 0.010978953, + 0.00044936335, + -0.019856367, + 0.00036975957, + -0.012386348, + 0.0026794632, + 0.009711661, + -0.03976368, + -0.0019073066, + -0.008603577, + 0.011864147, + -0.01361543, + -0.0015275965, + 0.010004603, + -0.021244656, + 0.0015435173, + 0.0072980747, + -0.022467371, + -0.007138867, + 0.02532037, + -0.020964451, + -0.009597031, + 0.030185753, + -0.028861146, + 0.013207859, + 0.013010442, + -0.02344809, + 0.020454988, + -0.0066867177, + 0.019270483, + -0.006871398, + 0.014965511, + -0.0127684465, + -0.024874588, + -0.02520574, + -0.01762746, + 0.02626288, + -0.040120304, + -0.0050628004, + 0.0024295074, + -0.025193004, + 0.022314532, + -0.021626756, + 0.012774815, + -0.02753654, + -0.011972409, + 0.0057378407, + -0.010807009, + -0.023129674, + -0.01001734, + 0.0013835137, + -0.0015435173, + -0.003157086, + 0.029829128, + -0.011647625, + -0.0032175847, + 0.030848056, + 0.0021811435, + 0.012456399, + 0.031179208, + 0.011615784, + -0.023078728, + -0.018773755, + 0.017474622, + 0.00039145158, + 0.009329563, + 0.016812319, + -0.0068777665, + -0.016035385, + -0.01211888, + -0.043839395, + 0.014264997, + -0.004741201, + -0.015818864, + -0.016328327, + 0.0032733073, + -0.009329563, + 0.01136742, + -0.0099090785, + -0.010265703, + -0.008648154, + -0.0034420674, + -0.0051742457, + -0.010061918, + -0.013207859, + 0.0057155513, + 0.013322488, + 0.0027654353, + 0.007890327, + -0.012430926, + -0.015602341, + -0.004569257, + 0.0029739973, + 0.01797135, + -0.03181604, + 0.007419072, + -0.012443663, + -0.03604459, + -0.026797816, + -0.004505574, + 0.016977895, + -0.027256334, + 0.01234177, + 0.034159575, + -0.010042813, + -0.024517965, + -0.025040165, + 0.026390245, + 0.014494256, + -0.025676996, + -0.02959987, + -0.037904136, + 0.013411645, + -0.029880075, + -0.0046902546, + 0.031382993, + -0.021715911, + -0.0076419627, + 0.014812672, + 0.015602341, + 0.0010404214, + 0.022518318, + 0.0024565726, + -0.0116094155, + -0.0063269082, + -0.004219, + 0.022900416, + 0.009660714, + 0.011915094, + -0.023473563, + -0.000778923, + -0.009437825, + 0.0062441207, + 0.0038082448, + 0.008960201, + 0.0027940928, + -0.0007916596, + -0.012373611, + -0.016837792, + -0.0183025, + -0.009208566, + -0.014137631, + 0.04816984, + 0.0148763545, + 0.024250496, + 0.0039037694, + -0.0002296569, + -0.008017693, + -0.014608886, + 0.016188225, + 0.006712191, + -0.00922767, + -0.01928322, + 0.004524679, + 0.03056785, + 0.025676996, + -0.039075904, + -0.0024868222, + 0.003196888, + 0.0077756974, + -0.01665948, + 0.006884135, + -0.008762784, + 0.005368479, + 0.014621622, + 0.0051901666, + 0.005686894, + -0.008380686, + 0.0065466147, + 0.02111729, + 0.010768799, + -0.009240407, + 0.006661244, + -0.025906254, + -0.022365479, + -0.004082082, + -0.017512832, + -0.019525215, + -0.00656572, + 0.00855263, + 0.013207859, + -0.01020202, + -0.0063460134, + 0.018022295, + 0.00032458443, + -0.006043519, + -0.028861146, + -0.016264644, + -0.010870692, + 0.014506993, + 0.005368479, + 0.008788257, + 0.013080494, + -0.003836902, + 0.01594623, + 0.026797816, + 0.02817337, + -0.03199435, + 0.017270837, + 0.01665948, + 0.019487005, + -0.0043941285, + -0.0012577397, + -0.004359103, + 0.0006400144, + -0.016634006, + -0.024874588, + 0.026466664, + 0.007635595, + 0.05548065, + -0.018620916, + -0.039789155, + 0.019346902, + -0.021728648, + 0.0017146654, + 0.025052901, + 0.011080846, + -0.0183025, + -0.009667083, + 0.006107202, + 0.0177803, + 0.026415719, + -0.011991514, + -0.021040872, + -0.00081156055, + -0.024772696, + 0.015029194, + -0.03054238, + 0.0063491976, + 0.043380875, + -0.0006973291, + 0.004575625, + 0.009921815, + -0.021550335, + -0.007100657, + 0.020111099, + 0.01785672, + 0.004441891, + -0.0022161691, + 0.02314241, + -0.02281126, + -0.027714852, + -0.011762255, + 0.0060976497, + -0.03548418, + -0.0047730426, + -0.030058388, + -0.009068463, + 0.0057569453, + 0.008024061, + 0.039330635, + -0.009972761, + -0.0046265717, + 0.013819216, + -0.013093229, + -0.011341946, + 0.007011501, + 0.00095683744 + ] + }, + { + "object": "embedding", + "index": 2, + "embedding": [ + 0.016263332, + -0.011116868, + 0.0051686466, + -0.022411201, + 0.0032006947, + 0.018037975, + -0.021194303, + -0.014640802, + 0.013221087, + -0.012967567, + 0.0053049135, + 0.007897159, + -0.0077323713, + 0.017442202, + -0.023387253, + -0.0105844755, + 0.039143544, + -0.00080175814, + 0.025821049, + -0.018697128, + -0.025035135, + 0.0017841496, + -0.015540798, + 0.005637659, + -0.021701343, + -0.004151396, + 0.006705614, + -0.01524925, + 0.0028774561, + 0.020053461, + 0.014983053, + -0.021168951, + 0.014336577, + -0.026188655, + -0.017911214, + 0.012644328, + 0.016276008, + 0.006170052, + 0.014615449, + -0.03186751, + 0.00210105, + 0.006106672, + -0.002021825, + -0.012086583, + -0.012618977, + 0.016402768, + 0.027937945, + -0.00012012508, + -0.01505911, + 0.016630936, + -0.00044366065, + 0.01375348, + -0.022449229, + -0.016732344, + -0.00623977, + -0.030219628, + 0.0074661747, + 0.018430931, + -0.01066687, + -0.017683046, + -0.011161234, + -0.007840117, + 0.0013254362, + -0.003059674, + 0.011757007, + -0.004591888, + -0.005472871, + 0.0044619585, + 0.011959824, + 0.0017065089, + 0.020687262, + 0.023045002, + 0.009386592, + 0.017581638, + 0.024718236, + 0.015097138, + -0.019749237, + 0.014108408, + -0.005574279, + -0.008448566, + 0.0031373145, + -0.013208412, + -0.019267548, + -0.011699965, + 0.016859105, + 0.000040652387, + -0.015578827, + -0.00031412757, + -0.030143572, + -0.02626471, + -0.013537988, + 0.036633693, + 0.033008352, + -0.0055932933, + 0.0029297448, + 0.01674502, + 0.014983053, + 0.022436552, + 0.02661964, + -0.03635482, + 0.0021311557, + 0.007897159, + -0.03245061, + 0.004154565, + -0.023856267, + -0.023437958, + 0.0073077246, + 0.0016138155, + 0.026467526, + -0.027735129, + -0.024477392, + 0.030042164, + 0.036177356, + -0.023881618, + -0.0060686436, + -0.016909808, + 0.010071097, + -0.020509798, + -0.03513792, + 0.0006967849, + 0.016973188, + 0.04053791, + 0.02040839, + -0.014273196, + 0.036405526, + -0.004059495, + -0.011490811, + -0.024794292, + -0.007485189, + 0.01859572, + -0.002457563, + 0.01562953, + 0.025783021, + 0.024363307, + -0.016098544, + 0.008220398, + -0.009532366, + 0.019242195, + 0.0005549719, + -0.023323873, + 0.015743615, + 0.027861888, + -0.014095732, + -0.011262642, + -0.0071429363, + 0.028292874, + 0.015680235, + -0.00055734866, + -0.02165064, + -0.007630963, + 0.004341536, + -0.015705587, + 0.0009808069, + 0.0013555418, + 0.009728844, + 0.01356334, + -0.013550663, + 0.0059101935, + -0.034504123, + -0.009285184, + -0.021092895, + -0.010514758, + 0.023881618, + -0.0015781643, + 0.023564719, + 0.025225276, + -0.00031947528, + 0.0033496378, + -0.012397146, + -0.009513352, + -0.009538704, + 0.040106922, + -0.017201357, + 0.02270275, + -0.012809116, + 0.018443607, + 0.0022056273, + -0.008632368, + -0.017961917, + -0.00391689, + -0.021067543, + -0.0064742765, + 0.009133072, + -0.0009990287, + 0.015337982, + -0.0078084273, + 0.016073192, + -0.0053619556, + 0.015870376, + 0.0023308028, + 0.018367551, + 0.031715397, + -0.0136901, + -0.03719144, + -0.6859247, + -0.04444212, + 0.0059323767, + -0.0013032531, + -0.007504203, + 0.027075976, + 0.004899281, + 0.022981621, + 0.0053524487, + -0.01706192, + 0.008093637, + 0.0020440079, + 0.020002756, + -0.006182728, + 0.009785886, + -0.025073165, + -0.016897133, + 0.002728513, + 0.00678167, + -0.0011384649, + 0.00620808, + 0.015971784, + -0.020129517, + -0.001593217, + 0.028318224, + 0.004217945, + 0.013081651, + 0.001050525, + -0.0012866159, + 0.018773183, + -0.008968283, + 0.014970378, + -0.0072316686, + -0.008651382, + 0.04641958, + 0.0064489245, + -0.011249966, + 0.011230952, + 0.0072126547, + 0.023171762, + -0.010102787, + -0.004290832, + 0.006173221, + -0.033008352, + -0.020104164, + 0.008049272, + 0.026797103, + -0.010007717, + 0.031943567, + 0.0013864395, + 0.026416823, + -0.023944998, + 0.010337293, + 0.0014894322, + 0.017670369, + 0.00830913, + 0.026518231, + -0.003527102, + -0.015287278, + -0.0010933066, + -0.006807022, + 0.0019536912, + -0.016390093, + 0.0018839733, + -0.02266472, + 0.0027776326, + -0.031842157, + -0.013094327, + -0.006274629, + -0.0018095017, + -0.0069591342, + 0.010064758, + -0.018570367, + 0.028140761, + 0.017023893, + 0.0023957675, + 0.022525284, + -0.007624625, + 0.0021248176, + 0.0050894213, + 0.009462648, + -0.016694317, + -0.029230898, + -0.012720385, + 0.028014, + -0.02352669, + -0.026214005, + -0.01611122, + 0.02314641, + 0.00037394254, + 0.025554853, + 0.003441539, + -0.022892889, + -0.0028552732, + -0.008524623, + 0.037292846, + -0.008860537, + 0.0057675885, + 0.017949242, + 0.0005391269, + 0.009735182, + -0.02594781, + -0.006730966, + -0.010799968, + 0.030675964, + -0.0024781616, + -0.016884457, + 0.031994272, + 0.0044207615, + -0.016377416, + 0.030599909, + -0.015021082, + -0.013804184, + 0.005672518, + 0.01394362, + -0.029535122, + 0.056535043, + 0.011940809, + 0.014285873, + 0.00025035135, + 0.015946431, + 0.009823915, + 0.001072708, + 0.00046505142, + -0.0020677755, + 0.0016922485, + -0.016580231, + -0.022322468, + -0.028064705, + 0.002088374, + -0.001561527, + -0.007979553, + 0.005663011, + 0.0022769298, + -0.0026714709, + -0.00025550099, + 0.0106351795, + -0.015046434, + 0.022677397, + -0.014349253, + -0.018785859, + -0.004103861, + -0.023298522, + 0.0012897849, + -0.008423214, + -0.012815455, + -0.03569567, + -0.013423904, + -0.015109814, + 0.021257684, + -0.028039353, + -0.008683072, + -0.031106949, + 0.019812617, + 0.0039961147, + -0.008011243, + -0.02963653, + 0.010286589, + -0.012745736, + 0.016884457, + 0.010933066, + 0.0043478743, + -0.0044080853, + -0.002113726, + -0.013512636, + -0.02333655, + -0.0007062919, + 0.030143572, + -0.007561245, + -0.023729507, + -0.011021798, + -0.0007138183, + -0.0055362512, + -0.015211222, + -0.016542204, + -0.009323211, + -0.00014230811, + -0.027101327, + 0.009088705, + -0.017201357, + 0.007916174, + 0.019787265, + 0.008252088, + -0.019622477, + 0.051109705, + 0.0011384649, + 0.02371683, + 0.018152058, + -0.010876024, + 0.012676018, + -0.018760508, + 0.0008025504, + 0.000495157, + -0.012815455, + 0.00830913, + 0.0017683046, + 0.0049214642, + 0.01133236, + 0.010394335, + -0.003053336, + 0.011750669, + -0.011104192, + 0.021853456, + -0.01486897, + 0.009906309, + -0.032171734, + 0.022867538, + -0.010552785, + -0.001085384, + 0.042033676, + 0.0058721653, + -0.02333655, + -0.0053619556, + -0.005723222, + 0.015426714, + 0.0020202405, + -0.01244785, + 0.01133236, + -0.011522501, + -0.007846455, + -0.0004381149, + 0.011826725, + 0.023171762, + -0.0050672386, + 0.00620808, + 0.0036031583, + 0.041729454, + 0.01362672, + -0.023032326, + -0.009861942, + -0.02021825, + -0.0095577175, + -0.019914025, + 0.020332333, + -0.033794265, + -0.005672518, + 0.0093041975, + -0.03845904, + 0.01581967, + 0.015223898, + 0.0012129365, + 0.01668164, + 0.030828077, + -0.003129392, + 0.011915457, + 0.0005957729, + 0.018798536, + 0.0096908165, + -0.019571772, + 0.012359118, + -0.017847834, + -0.0010933066, + -0.0127393985, + 0.017074596, + 0.02626471, + 0.00079502404, + 0.04119706, + 0.0047788587, + 0.028799914, + 0.02028163, + -0.015730938, + -0.019191492, + 0.012346442, + -0.0023292184, + 0.009025325, + -0.005545758, + 0.0029123153, + -0.0059513906, + 0.010267575, + -0.017391497, + -0.019406984, + 0.009716168, + 0.022411201, + -0.020877402, + 0.014133761, + -0.012910524, + -0.0036031583, + 0.00065796456, + 0.012397146, + 0.01786051, + -0.008239412, + -0.03582243, + 0.013550663, + -0.0028806252, + 0.0019980574, + -0.025529502, + -0.031132301, + 0.017999945, + 0.009139409, + 0.014045028, + 0.009063353, + 0.013030947, + 0.024680208, + 0.00167165, + 0.018545015, + -0.026721047, + 0.0003466099, + 0.01092039, + 0.014133761, + 0.004772521, + -0.0032609056, + -0.01903938, + -0.030168924, + -0.011592219, + 0.0088161705, + 0.0104323635, + -0.012555596, + 0.006192235, + -0.014336577, + -0.018354874, + -0.007821104, + 0.0021470005, + -0.002665133, + -0.01661826, + -0.009988703, + -0.007890821, + -0.022905566, + -0.009278845, + 0.03250131, + 0.004097523, + 0.0044746343, + -0.014678829, + -0.015946431, + -0.00020737173, + 0.077780046, + 0.013778832, + 0.006290474, + 0.009906309, + 0.009228141, + -0.0168084, + -0.023437958, + 0.0071302606, + -0.009798562, + 0.0025859077, + 0.010400673, + -0.011807711, + 0.024566123, + 0.0019536912, + -0.009411944, + -0.0030295684, + 0.014336577, + 0.014640802, + 0.042642128, + -0.019837968, + 0.0023830915, + 0.020205574, + -0.011630246, + 0.0009950674, + 0.005773926, + 0.00136901, + 0.02222106, + 0.0050704074, + 0.017277414, + -0.0025336193, + 0.005399984, + 0.017315442, + -0.010926728, + -0.013652071, + -0.010121801, + -0.0019489378, + -0.0026635483, + 0.0022183033, + -0.003132561, + -0.014425309, + 0.034326658, + 0.0098049, + 0.0094563095, + -0.008803495, + -0.009380254, + 0.023108382, + -0.006223925, + 0.018481635, + -0.018849239, + -0.01604784, + 0.027988648, + -0.006946458, + -0.0061098407, + -0.0073584286, + 0.00681336, + 0.002444887, + -0.006246108, + -0.014780237, + -0.017467553, + -0.01117391, + 0.012904187, + -0.0006706406, + 0.0015290447, + -0.009602084, + -0.007745047, + -0.004759845, + 0.0059577287, + -0.0039073825, + -0.016440796, + 0.003432032, + 0.00023450634, + -0.012682357, + -0.020243602, + -0.00028778522, + 0.0252126, + 0.016542204, + 0.009430958, + -0.01101546, + -0.006296812, + 0.038991433, + -0.00021093687, + 0.006604206, + -0.003485905, + -0.00040246357, + -0.004782028, + 0.0013484114, + 0.039397065, + -0.02165064, + -0.014425309, + 0.0026239357, + 0.030980188, + 0.0003337358, + 0.01241616, + -0.016542204, + -0.016516851, + -0.011452783, + 0.017594313, + 0.010121801, + -0.018253466, + -0.0013864395, + 0.0071682883, + -0.024122464, + -0.014577421, + -0.0074154707, + 0.0072887107, + 0.015908403, + 0.03501116, + 0.0106351795, + -0.023057677, + 0.018278819, + 0.014704181, + -0.012035879, + 0.0002236129, + -0.0032355536, + 0.0005827007, + 0.0053429417, + -0.0012176901, + 0.0091520855, + 0.003447877, + -0.028926674, + 0.0077577233, + -0.048270278, + 0.03087878, + 0.004782028, + -0.0066929376, + 0.0028774561, + 0.02862245, + -0.012549258, + 0.006173221, + 0.006711952, + -0.0044904794, + 0.023323873, + -0.012010528, + -0.015743615, + -0.04099424, + -0.029940756, + 0.035923835, + 0.0057929405, + -0.018963324, + -0.008131666, + 0.00951969, + 0.011858415, + 0.011478134, + 0.001041018, + -0.033768915, + -0.019685857, + -0.0022151342, + 0.009018987, + -0.0051718154, + 0.011478134, + -0.0010521095, + 0.0021248176, + -0.021599935, + 0.0098049, + 0.009373915, + 0.00046109018, + -0.010571799, + -0.019140787, + 0.02251261, + 0.008004906, + 0.014792914, + -0.006040123, + 0.009247156, + 0.0070668804, + -0.0071999785, + 0.000049416667, + -0.0087654665, + -0.0043542124, + -0.02725344, + 0.018380227, + 0.027633721, + -0.0038630166, + 0.028267521, + -0.005384139, + 0.016326712, + 0.013449255, + 0.0058087856, + -0.0025462953, + -0.023450634, + -0.026112597, + -0.0020741136, + 0.00993166, + -0.014399957, + -0.00088652904, + 0.0007621456, + -0.010077435, + 0.01735347, + 0.011864753, + -0.0065408256, + 0.0029123153, + 0.036735103, + -0.0037489324, + 0.031461876, + -0.0017477061, + 0.01136405, + -0.02215768, + -0.017340792, + -0.00044643352, + 0.007472513, + 0.002795062, + 0.013525312, + 0.0019109098, + -0.0011170742, + -0.024071759, + 0.0106351795, + 0.009665464, + 0.021004163, + 0.0052510407, + -0.008061947, + -0.021295711, + -0.01786051, + -0.037901293, + -0.028394282, + -0.025922457, + 0.00240369, + 0.0049119573, + -0.02689851, + 0.022271764, + -0.011522501, + -0.02234782, + 0.0030501669, + 0.011858415, + 0.030219628, + -0.0072570206, + 0.017163329, + 0.013271791, + -0.0058848416, + -0.0227281, + 0.0023957675, + -0.014906998, + -0.00983659, + 0.0192929, + 0.010204195, + -0.010407011, + 0.018950647, + 0.008638707, + 0.017264737, + 0.038028054, + -0.0035999892, + -0.009855605, + 0.0004805003, + 0.008974621, + -0.023957675, + 0.004918295, + -0.01104715, + 0.014767561, + -0.018722478, + -0.007516879, + 0.007973216, + -0.005586955, + -0.01741685, + 0.011852077, + -0.049740694, + 0.016199952, + 0.012783765, + 0.0006920314, + 0.006280967, + -0.014146437, + -0.021308387, + -0.017911214, + -0.010660532, + 0.026568934, + -0.0026223513, + 0.015895726, + 0.015857698, + -0.0067499797, + -0.018430931, + -0.0053936457, + 0.008670396, + 0.0267464, + -0.0046362537, + -0.0044841417, + -0.014514041, + 0.026416823, + 0.048828024, + -0.021004163, + -0.005688363, + 0.0052035055, + -0.015933756, + -0.001677988, + 0.016022487, + 0.006927444, + -0.016947836, + 0.013360524, + -0.023615422, + 0.00047970808, + -0.03186751, + -0.0001870703, + 0.00059379224, + -0.010007717, + -0.0029566812, + -0.0021691837, + 0.01910276, + -0.000068727786, + 0.0076816673, + -0.012536583, + 0.029966107, + 0.00012359118, + -0.015135166, + 0.019026704, + -0.003444708, + 0.021688668, + 0.006274629, + 0.014235169, + 0.0059450525, + -0.019723885, + 0.03037174, + -0.012714046, + -0.026847808, + -0.014577421, + 0.0057929405, + 0.000214502, + -0.0023054508, + -0.012264048, + 0.005000689, + -0.0012533413, + 0.009830252, + -0.012276724, + -0.006217587, + 0.0016193613, + -0.015680235, + 0.011383064, + 0.020028109, + -0.021916837, + -0.010857009, + 0.013335171, + -0.016352063, + -0.0043954095, + -0.03501116, + -0.00811899, + -0.021029515, + 0.009076029, + 0.020040786, + -0.010799968, + -0.004854915, + -0.019064732, + -0.0065725157, + -0.0015036927, + -0.007878145, + 0.01846896, + -0.0022943593, + -0.0049689994, + -0.018342199, + 0.021321064, + -0.018088678, + 0.0058689965, + -0.0026984075, + -0.0065535014, + -0.024971757, + 0.0022373172, + -0.00010299265, + -0.018519662, + -0.011053488, + -0.047028027, + -0.018861916, + -0.0034922431, + -0.015921079, + -0.0016764035, + -0.0016478824, + 0.004930971, + 0.015553474, + -0.0037521014, + -0.012422498, + 0.018392902, + 0.009171099, + 0.0064774454, + -0.0304985, + -0.015642207, + -0.0006349893, + -0.012143626, + 0.0050672386, + 0.012720385, + 0.012593624, + -0.008942931, + 0.0053778007, + -0.0126379905, + 0.0024021056, + -0.018164735, + -0.017467553, + -0.0060527986, + 0.008683072, + 0.012473202, + 0.027811185, + 0.009481662, + -0.0026793934, + -0.015553474, + -0.008974621, + 0.002391014, + 0.033084407, + -0.013005595, + 0.0050735762, + 0.0081760315, + -0.019774588, + 0.004132382, + -0.02333655, + 0.007605611, + -0.004227452, + 0.016060516, + 0.011649261, + -0.008144341, + 0.01388024, + 0.018823888, + -0.007111246, + -0.017036568, + 0.0029883713, + -0.000996652, + -0.025326684, + 0.0013801015, + 0.009367578, + -0.01505911, + 0.0013072144, + -0.019635152, + 0.004160903, + -0.030929485, + 0.002741189, + -0.009488, + -0.016035164, + -0.038864672, + 0.034453418, + 0.022322468, + -0.015325306, + -0.004141889, + -0.037850592, + 0.0045063244, + 0.0018633747, + -0.012035879, + -0.0023925984, + -0.03174075, + -0.022056272, + -0.0022911904, + -0.0021105572, + -0.027405553, + -0.0020154868, + 0.015490094, + 0.009392929, + 0.023387253, + 0.23749788, + 0.010717574, + -0.0033623138, + 0.028850619, + 0.0014862631, + 0.022550637, + 0.023095705, + -0.007694343, + 0.02571964, + 0.028521042, + -0.011509825, + 0.00630315, + 0.00074630056, + 0.000637366, + 0.003451046, + -0.014957702, + -0.033261873, + -0.0014197141, + -0.013385875, + -0.019483041, + 0.011148558, + -0.0103816595, + 0.01581967, + 0.0029408364, + 0.029028082, + 0.015464743, + -0.013297143, + 0.008207722, + 0.026340766, + 0.018253466, + -0.0087654665, + -0.011909119, + -0.0017207694, + -0.014133761, + -0.0042211143, + -0.0033876658, + -0.011826725, + 0.0014870554, + 0.02091543, + 0.031690046, + 0.018836563, + 0.005615476, + -0.024604151, + -0.009164762, + 0.0070161764, + 0.005897518, + -0.018988676, + -0.006261953, + 0.020699939, + 0.015135166, + -0.023045002, + -0.00986828, + 0.027050624, + 0.023552042, + -0.0029186532, + 0.02190416, + 0.019457689, + -0.008568988, + 0.01979994, + -0.0051718154, + -0.015806995, + 0.019330928, + -0.01687178, + 0.011256305, + 0.006173221, + -0.0033591448, + -0.0126379905, + -0.0028885477, + 0.011528838, + -0.015236574, + 0.022626692, + 0.013208412, + 0.009697154, + 0.0073837806, + -0.009684478, + -0.0059830807, + 0.025605557, + -0.0050735762, + 0.015452066, + -0.007447161, + -0.014463337, + 0.0018253466, + -0.011693627, + 0.0052922377, + -0.0035366092, + -0.018811211, + 0.0017999946, + 0.0046869577, + 0.025821049, + -0.007111246, + 0.0010639933, + -0.0053207586, + 0.00620808, + 0.00058468134, + 0.020370362, + 0.025808373, + -0.009874619, + 0.0044239303, + -0.015566151, + 0.011421093, + -0.034808345, + -0.03919425, + 0.0023102043, + -0.017391497, + -0.017429525, + 0.010971094, + -0.010090111, + 0.019064732, + 0.034428068, + 0.0022357327, + -0.0044366065, + -0.0071999785, + 0.015895726, + -0.008607017, + 0.015857698, + -0.00096575415, + 0.014919674, + -0.011776021, + -0.015135166, + -0.012035879, + -0.01107884, + -0.023792887, + -0.0065218112, + 0.0058024474, + -0.0026080909, + -0.011066164, + -0.008271102, + 0.01362672, + 0.0022769298, + -0.044873103, + 0.034275953, + -0.004899281, + 0.029332306, + -0.0053017447, + -0.011814049, + -0.0025050982, + -0.004877098, + 0.0029297448, + 0.013360524, + -0.0058468133, + 0.0037489324, + -0.009950674, + 0.01735347, + -0.0003719619, + -0.005989419, + -0.0052256887, + 0.0017603821, + -0.024274575, + -0.02397035, + -0.032298494, + -0.012073907, + -0.015223898, + 0.0013761403, + -0.014970378, + 0.005384139, + -0.008537298, + -0.011167572, + -0.004173579, + 0.00951969, + 0.03272948, + -0.018380227, + 0.001324644, + 0.0014363513, + 0.00072530593, + 0.007605611, + 0.0030469978, + -0.16154318, + 0.014032353, + 0.010540109, + -0.008410539, + -0.01706192, + 0.023488661, + 0.01964783, + 0.020814022, + -0.010590813, + 0.02776048, + 0.005688363, + 0.02078867, + -0.059678696, + -0.015515447, + -0.007371105, + 0.011478134, + -0.009133072, + -0.009925323, + 0.01964783, + 0.006705614, + -0.00033017067, + -0.02154923, + 0.016073192, + 0.013715452, + 0.010020393, + 0.004582381, + -0.022132328, + 0.03209568, + -0.0030628429, + -0.013335171, + 0.0031531595, + -0.0029883713, + 0.0056344904, + 0.014349253, + 0.024464715, + 0.006255615, + -0.004690127, + -0.00046505142, + -0.00716195, + -0.003992946, + -0.0027364355, + 0.020991486, + 0.020167544, + 0.02639147, + -0.01225771, + 0.024946405, + 0.02378021, + 0.012745736, + -0.0059577287, + -0.01562953, + 0.017049246, + -0.03719144, + -0.009988703, + -0.011642923, + 0.0027522806, + 0.014514041, + 0.021130923, + 0.011687289, + -0.0013808938, + 0.012492216, + 0.01117391, + -0.041298468, + -0.0072253305, + 0.008068286, + -0.004724986, + -0.012327428, + 0.0046964646, + 0.004186255, + -0.02097881, + -0.0014862631, + -0.014450661, + -0.013892916, + 0.0036982284, + -0.009310535, + 0.0019299238, + 0.013208412, + -0.014704181, + -0.004566536, + -0.016922485, + -0.018583043, + 0.0072887107, + 0.032653425, + -0.0066358955, + 0.0009895217, + -0.00961476, + 0.010413349, + 0.004785197, + 0.011782359, + -0.029560475, + -0.014222492, + 0.025643585, + -0.036506932, + -0.0019220012, + -0.037749182, + -0.0021470005, + 0.0097415205, + 0.0017271076, + -0.0065218112, + 0.01687178, + 0.007345753, + 0.00094436336, + -0.00014399165, + -0.025225276, + 0.011161234, + 0.030422444, + 0.0126379905, + -0.013512636, + 0.009247156, + 0.018646423, + -0.008429552, + -0.014260521, + 0.019597124, + -0.00878448, + 0.011630246, + 0.020066136, + -0.0070858942, + 0.010311941, + -0.02725344, + 0.02091543, + 0.0056947013, + 0.050577313, + -0.013208412, + -0.021866132, + 0.021802751, + -0.007700681, + -0.018012622, + -0.09755464, + -0.009190113, + 0.016288683, + 0.019837968, + 0.0056947013, + 0.027025271, + 0.0050387173, + 0.024794292, + -0.008860537, + 0.021409795, + -0.0088668745, + -0.027228087, + -0.021245006, + -0.0029772797, + 0.011839401, + -0.014007, + 0.007700681, + -0.024616828, + -0.054151952, + 0.0042052693, + 0.0072316686, + 0.004341536, + -0.004889774, + -0.014425309, + -0.015312631, + -0.0066739237, + -0.03498581, + 0.014666153, + 0.0038725235, + -0.0039707627, + 0.022652045, + -0.017252062, + 0.0126379905, + -0.010128139, + -0.008163356, + 0.000072986135, + -0.009038001, + -0.003368652, + 0.0095577175, + -0.03247596, + -0.010780954, + -0.0007534308, + 0.014539393, + -0.023057677, + 0.0022135498, + 0.008239412, + -0.011281656, + 0.010882362, + -0.004851746, + -0.033312578, + -0.004259142, + 0.023412606, + -0.021232331, + -0.011858415, + 0.038281575, + -0.021637963, + 0.011630246, + 0.010476729, + -0.029509772, + 0.015528123, + 0.010508419, + 0.00716195, + 0.0038344956, + 0.014108408, + -0.014830941, + -0.019698532, + -0.026188655, + -0.009285184, + 0.018481635, + -0.033135112, + -0.00480738, + 0.020319657, + -0.0140703805, + 0.006730966, + -0.018963324, + 0.003403511, + -0.018152058, + -0.010660532, + 0.008847861, + -0.017556285, + -0.029205546, + -0.016656289, + -0.011351375, + 0.0041799173, + -0.0088161705, + 0.029180195, + -0.01394362, + -0.0126063, + 0.03830693, + -0.014780237, + 0.006946458, + 0.04403649, + 0.005998926, + -0.019052055, + -0.012904187, + 0.026188655, + 0.0092534935, + 0.007605611, + 0.017150654, + -0.013221087, + -0.018253466, + -0.010495743, + -0.036430877, + 0.017404173, + -0.01986332, + -0.013246439, + 0.0024908376, + -0.0071239225, + -0.010071097, + 0.003176927, + -0.011915457, + 0.0028156606, + -0.004791535, + -0.00027015764, + -0.0080746235, + -0.015832348, + -0.008835184, + 0.009468986, + 0.018836563, + 0.00059418834, + 0.0164915, + -0.0016106466, + -0.002823583, + -0.00018192067, + 0.0087654665, + 0.0024908376, + -0.040056217, + 0.00843589, + -0.014919674, + -0.020928107, + -0.018291494, + -0.006952796, + 0.02139712, + -0.028850619, + 0.009633774, + 0.033059057, + -0.015363335, + -0.033211168, + -0.018202763, + 0.0141210845, + 0.013512636, + -0.021422472, + -0.031943567, + -0.024908377, + 0.013170383, + -0.021447822, + -0.021663316, + 0.027278792, + -0.0072380067, + 0.0023323875, + 0.0085626505, + 0.01817741, + 0.00802392, + 0.021828104, + 0.020953458, + -0.015464743, + -0.0034668911, + -0.006021109, + 0.03435201, + 0.0069908244, + 0.013994324, + -0.006997162, + -0.0015345905, + -0.0043383674, + -0.00074946956, + 0.02110557, + 0.011978838, + 0.009392929, + -0.0059418837, + -0.009830252, + -0.009950674, + -0.0164915, + -0.008524623, + -0.0051876605, + 0.039929457, + 0.014133761, + 0.033261873, + 0.0037109044, + -0.008480256, + -0.0052890684, + -0.017556285, + 0.008898565, + 0.019343603, + 0.004040481, + -0.01069856, + -0.000011667136, + 0.028926674, + 0.030980188, + -0.05587589, + -0.015097138, + 0.01073025, + 0.0045792116, + -0.021663316, + 0.006119348, + -0.0043827333, + 0.011402079, + 0.012359118, + -0.004851746, + -0.0056756875, + 0.0016795724, + -0.0007411509, + 0.0252126, + -0.00040998997, + -0.018253466, + -0.0004198931, + -0.027481608, + -0.014691506, + 0.0008033427, + -0.017099949, + -0.012270385, + -0.008271102, + 0.007878145, + 0.009443633, + -0.016377416, + 0.0035651303, + 0.014336577, + -0.003527102, + -0.00030580894, + -0.021283034, + -0.014387281, + -0.014830941, + 0.0143239, + -0.0023355563, + 0.0019727054, + 0.00853096, + -0.0097415205, + 0.036887214, + 0.015337982, + 0.019571772, + -0.024667531, + 0.013195735, + 0.0065344875, + 0.009443633, + 0.0034130178, + -0.0070668804, + -0.012238696, + -0.0033718208, + -0.03349004, + -0.020256277, + 0.019635152, + -0.01474221, + 0.0534928, + -0.010977432, + -0.030802725, + 0.03612665, + -0.022106975, + 0.0036031583, + 0.017429525, + 0.008448566, + -0.020877402, + -0.010229547, + 0.0013167214, + 0.016973188, + 0.019128112, + -0.004867591, + -0.016985865, + -0.007694343, + -0.02104219, + 0.019191492, + -0.027963297, + -0.004699634, + 0.036506932, + 0.0071999785, + 0.0037013975, + 0.0026144288, + -0.021194303, + -0.0074154707, + 0.017771779, + 0.010768278, + 0.0034922431, + 0.0023434788, + 0.020864727, + -0.0028837943, + -0.018608395, + -0.013030947, + 0.0017397836, + -0.03559426, + -0.014792914, + -0.02999146, + -0.0029820334, + 0.011896444, + 0.011712641, + 0.027075976, + -0.010869686, + -0.020509798, + -0.0016241148, + -0.0012636406, + -0.014830941, + 0.007726033, + -0.0051876605 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 33, + "total_tokens": 33 + } +} +278 34443 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 83 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["What color is the lamp in each room?"]}HTTP/2.0 200 OK +Content-Length: 33488 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:27:56 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 87 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-rdhq6 +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999991 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_13106fdac939443fb4571e5061ddf369 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.02230405, + 0.008771547, + 0.014554557, + -0.011423711, + -0.008448112, + 0.015473112, + 0.0068826885, + -0.008881515, + 0.004744786, + -0.005595419, + -0.016676288, + 0.01731022, + -0.017698342, + 0.024891527, + -0.0063878335, + -0.0012743324, + 0.031618968, + 0.021294935, + 0.013648941, + -0.0046218806, + -0.020337569, + 0.025512522, + -0.01429581, + -0.001887241, + -0.01562836, + -0.008959139, + 0.017374907, + -0.008868577, + -0.011934738, + 0.006138789, + 0.0034187038, + -0.016792726, + -0.012723918, + -0.0168186, + -0.016844476, + 0.0169221, + 0.010860935, + 0.0039006216, + 0.011591896, + -0.014606307, + 0.015718922, + -0.0003416278, + -0.00038286572, + 0.00014958851, + -0.0055177948, + 0.007827118, + -0.0011853878, + 0.0067468463, + -0.039355524, + 0.01296326, + -0.008124677, + 0.0066562844, + -0.012885635, + -0.052706905, + -0.026172329, + 0.00087650784, + 0.008674516, + 0.01811234, + -0.011714802, + -0.0054789823, + -0.0041917125, + -0.0013471051, + -0.014502808, + 0.0060676336, + -0.0006072485, + -0.001574318, + -0.0084093, + 0.010860935, + 0.017038535, + -0.0021136452, + 0.021424308, + 0.028125875, + 0.017581906, + -0.00033576557, + 0.029419612, + -0.008752141, + -0.020712754, + -0.0023740102, + 0.007109093, + 0.00022701068, + 0.0044892724, + 0.0069279694, + -0.03260221, + 0.008758609, + 0.018733334, + 0.013441943, + 0.0025923285, + 0.018371087, + -0.034594566, + -0.0030613088, + -0.013196132, + 0.051439043, + 0.030040607, + -0.021760682, + -0.012445764, + 0.0054854513, + -0.0074325274, + 0.02478803, + 0.0125169195, + -0.013791252, + 0.016119981, + -0.015291989, + -0.031308472, + 0.005977072, + -0.017129097, + -0.023222605, + 0.0037486071, + 0.008480456, + 0.032679833, + -0.040105894, + -0.03487919, + 0.049187936, + 0.039459024, + -0.038449906, + -0.021980617, + -0.0070767496, + 0.0012702894, + -0.024141159, + -0.037337292, + 0.0070055937, + -0.0022672766, + 0.040468138, + 0.017982965, + -0.027530754, + 0.04486685, + -0.002137903, + -0.026482826, + -0.024503406, + -0.024956215, + 0.005016471, + 0.010802716, + 0.014929742, + 0.013467818, + 0.021243185, + -0.008920327, + 0.0013099102, + -0.006513973, + 0.024425782, + -0.03793241, + 0.00328933, + 0.013545441, + 0.006119383, + -0.0047900667, + -0.008059991, + -0.0056406995, + 0.030972099, + 0.0048094727, + -0.0027427257, + -0.020402256, + -0.0018662177, + 0.005673043, + -0.012717449, + 0.023817725, + 0.012827417, + 0.0014692018, + 0.016999723, + -0.0019567795, + 0.017827716, + -0.044219982, + 0.0069538443, + -0.04931731, + 0.0048968, + 0.030402854, + -0.005876807, + 0.012342265, + 0.028772743, + 0.020686878, + 0.0049744244, + -0.010395189, + 0.0075101517, + -0.032576334, + 0.027039135, + -0.020466942, + 0.03330083, + 0.00044795693, + 0.034930937, + 0.007859461, + -0.016158793, + 0.003978246, + 0.01157249, + -0.0095930705, + -0.0068438766, + -0.008538674, + -0.009146731, + 0.0009783898, + -0.017129097, + 0.0017497813, + -0.001466776, + 0.024011785, + -0.004550725, + 0.01143018, + 0.027763627, + -0.015059115, + -0.0069991252, + -0.66901803, + -0.032653958, + 0.004961487, + -0.0085904235, + 0.0080988025, + 0.013390193, + 0.0239471, + 0.028255248, + -0.003522203, + -0.016003545, + 0.009386073, + 0.007063812, + 0.0042078844, + -0.023934161, + 0.0125233885, + -0.021825368, + -0.0053981235, + 0.010893278, + -0.00018577276, + 0.0017788904, + -0.008765078, + 0.019108517, + -0.0018112338, + -0.00398148, + 0.021411372, + 0.022834484, + 0.009638351, + -0.016495166, + -0.015020303, + 0.012102923, + -0.015304926, + 0.011792426, + 0.013099102, + -0.023106169, + 0.025447836, + -0.003709795, + -0.024555156, + 0.028824493, + 0.0054886853, + 0.029962983, + -0.028384622, + -0.0021750978, + 0.017323159, + -0.02305442, + -0.010666873, + 0.010847997, + 0.017568968, + -0.00046129862, + 0.046833333, + -0.014024125, + 0.012769199, + -0.030014733, + -0.015718922, + 0.01844871, + 0.018254649, + 0.015990607, + 0.046212338, + 0.009858287, + -0.008467519, + 0.0031146754, + -0.009987661, + -0.018086463, + 0.0013495309, + 0.002897974, + 0.007445465, + 0.00079120195, + -0.0252279, + -0.023507228, + -0.020104695, + -0.022329926, + -0.0035933587, + 0.016158793, + -0.03904503, + 0.02423172, + 0.0061064456, + -0.010796247, + 0.029911233, + -0.007102624, + -0.0024710405, + -0.017206721, + 0.002055427, + -0.015123802, + -0.02853987, + -0.015123802, + 0.01741372, + -0.010472813, + -0.014670994, + -0.020893876, + 0.015757734, + 0.026987385, + 0.009612476, + 0.015046178, + -0.01839696, + 0.0003299033, + -0.017103223, + 0.03216234, + -0.01646929, + 0.0032181744, + -0.011320212, + -0.025033839, + 0.000618973, + -0.03270571, + -0.0037453729, + 0.013312569, + 0.02913499, + -0.0064428174, + -0.0077494932, + 0.031877715, + 0.015641298, + -0.014399309, + 0.0004980893, + -0.013176726, + -0.021631308, + 0.0009832412, + 0.014502808, + -0.022498112, + 0.04877394, + 0.013234944, + 0.024218785, + -0.015874172, + 0.007607182, + -0.0003988353, + 0.014231123, + -0.0182029, + 0.020570442, + 0.008965608, + -0.013648941, + -0.009146731, + -0.009599539, + 0.024218785, + -0.011967081, + 0.011346086, + 0.010207596, + -0.0065269107, + -0.030583978, + 0.0065269107, + 0.01662454, + -0.026094705, + 0.013881814, + -0.013312569, + -0.01687035, + 0.0033507827, + -0.026651012, + 0.007833586, + -0.023481352, + -0.027065009, + -0.028358746, + -0.007128499, + -0.027686004, + -0.012329328, + -0.018332275, + -0.025991205, + -0.042977992, + 0.007671869, + 0.013299632, + 0.0028947399, + -0.015990607, + -0.0078077116, + -0.028332872, + 0.006614238, + 0.024956215, + 0.011967081, + -0.015421363, + 0.003324908, + -0.010304627, + -0.024205847, + -0.009981193, + 0.02903149, + 0.00025308758, + -0.042822745, + -0.0026004142, + 0.0050229398, + -0.002137903, + 0.013868877, + -0.011837707, + -0.00040328252, + -0.0031454016, + -0.037984163, + -0.006850345, + -0.010298158, + 0.012568669, + 0.029393738, + -0.015304926, + 0.0046024746, + 0.03423232, + 0.012549263, + 0.022679236, + 0.023274355, + 0.0025680708, + 0.010511625, + -0.015123802, + -0.004977659, + 0.013545441, + -0.0077883056, + 0.008726266, + -0.0033281422, + 0.022265239, + -0.012872698, + -0.00095332356, + -0.011087338, + 0.029600736, + -0.0019017955, + -0.005094095, + -0.011514273, + 0.029755985, + -0.033870075, + 0.009159668, + -0.005210532, + 0.013907689, + 0.025253775, + -0.007704213, + -0.025745396, + 0.0020344038, + -0.022627486, + 0.01641754, + 0.010110566, + -0.01687035, + 0.028358746, + -0.0054886853, + -0.00026905717, + 0.01063453, + 0.011954144, + 0.03635405, + 0.0006104828, + -0.015887108, + 0.0037874193, + 0.006649816, + 0.020906813, + 0.009787131, + -0.011281399, + -0.02804825, + -0.0077624307, + 0.000054630127, + 0.006513973, + -0.015279051, + 0.0025179384, + 0.008959139, + -0.016404605, + -0.0049841274, + 0.0050714547, + 0.020402256, + 0.030972099, + 0.022950921, + 0.0077818367, + 0.03244696, + -0.0034963281, + 0.00796296, + 0.026288766, + -0.02449047, + 0.013726565, + -0.008881515, + -0.012374609, + -0.024115285, + 0.0058250576, + 0.018086463, + 0.0038359344, + 0.032628085, + -0.0063781305, + 0.0040396983, + 0.010906215, + -0.0004334024, + -0.0010632913, + 0.016728038, + -0.005912385, + -0.0072578727, + 0.008913858, + -0.023287293, + -0.014554557, + 0.0029189973, + -0.0059447284, + -0.012853292, + -0.008467519, + 0.014774493, + 0.0008178853, + 0.017129097, + 0.0022624251, + -0.0077430247, + -0.017090285, + 0.018358149, + 0.0336372, + -0.0033895948, + -0.02240755, + 0.014308748, + -0.0011603216, + -0.014515745, + -0.018422836, + -0.018177025, + 0.018513398, + -0.017646592, + 0.0072449353, + 0.016326979, + -0.0062519913, + 0.024154097, + -0.0005373058, + 0.0018079996, + -0.022886233, + -0.001822554, + -0.0007689658, + 0.023222605, + 0.005980306, + -0.011139088, + 0.00031231655, + -0.027220257, + -0.013855939, + 0.016378729, + 0.011857113, + -0.016947974, + -0.008364019, + -0.006420177, + -0.0251244, + -0.023093231, + -0.009871225, + 0.004013824, + 0.011223181, + 0.013390193, + 0.008053522, + -0.019328453, + -0.018358149, + 0.023584852, + 0.004159369, + -0.021113811, + -0.029238489, + -0.011449586, + -0.0014821391, + 0.05852873, + 0.009916506, + -0.006306975, + 0.017077347, + -0.002411205, + -0.0194837, + -0.017737154, + 0.012820948, + -0.00930198, + 0.010097628, + 0.013196132, + -0.007859461, + -0.007587776, + -0.009890631, + -0.014748619, + -0.0019406077, + 0.0066821594, + -0.009877693, + 0.019328453, + -0.007594245, + -0.010472813, + 0.0090820445, + -0.0051523135, + 0.02606883, + -0.023390792, + -0.011113213, + 0.022394612, + -0.014567495, + 0.015123802, + -0.01236814, + -0.012161141, + 0.016262293, + -0.0058638696, + -0.0024500173, + -0.025706584, + -0.01697385, + -0.016107043, + 0.008027648, + 0.029238489, + -0.0019001784, + 0.027479006, + 0.0066950964, + 0.0009306831, + -0.025603084, + 0.000605227, + 0.0065754256, + -0.009974724, + 0.02137256, + 0.0066821594, + -0.013687753, + 0.00008136402, + -0.0019858885, + -0.003997652, + -0.0042984462, + 0.0040526357, + 0.00009975937, + -0.013273757, + -0.024645718, + 0.009366667, + -0.01741372, + -0.0038909183, + 0.0034639847, + 0.030816851, + -0.0052364063, + -0.03565543, + -0.024063535, + -0.0013940032, + -0.011798895, + -0.0080858655, + -0.007794774, + -0.0052816872, + -0.015343738, + -0.042072374, + 0.012064111, + 0.04719558, + 0.024645718, + 0.030532228, + -0.0120511735, + 0.0045442563, + 0.01953545, + 0.0043987106, + -0.010375783, + 0.0060223527, + -0.006119383, + -0.0105310315, + -0.0052267034, + 0.021036187, + -0.012070579, + -0.01434756, + 0.027789501, + 0.026198205, + -0.0054304674, + 0.02903149, + -0.027737753, + -0.007937086, + -0.009263167, + -0.0014675845, + 0.02542196, + -0.028074125, + -0.012665699, + 0.017012661, + -0.019781262, + 0.012588075, + -0.035396684, + -0.019781262, + 0.01018819, + -0.0041787755, + -0.009418416, + -0.03169659, + 0.011171431, + 0.0006618281, + -0.020790378, + -0.004023527, + -0.014852118, + 0.028876243, + 0.01627523, + -0.026159393, + 0.012199954, + -0.0047674263, + -0.032032963, + 0.009780663, + -0.03542256, + 0.026935635, + 0.0014683931, + -0.03679392, + 0.005372249, + 0.011928269, + -0.009237292, + 0.01890152, + 0.008629235, + 0.004744786, + 0.01800884, + -0.027789501, + -0.014037062, + -0.026935635, + -0.007212592, + 0.012555731, + 0.009334323, + -0.015097928, + 0.014127624, + -0.009935912, + 0.019600138, + -0.0029545752, + -0.015072053, + -0.011727739, + -0.02631464, + 0.011585428, + -0.0010333736, + 0.0063781305, + 0.028229373, + 0.01608117, + 0.0050358768, + -0.03596593, + 0.017750092, + -0.013073227, + -0.019224953, + -0.006164664, + -0.016145855, + 0.011449586, + 0.013894751, + 0.016042357, + 0.0036192334, + 0.0073225596, + 0.005543669, + -0.0065366137, + 0.0056665745, + 0.009017357, + -0.0019470764, + -0.027116759, + -0.005669809, + 0.011902394, + 0.012083517, + 0.015563673, + 0.008933264, + 0.01152721, + 0.029212615, + -0.005317265, + 0.00062705885, + -0.03482744, + -0.026780386, + 0.001640622, + -0.016999723, + -0.011734208, + 0.0043696016, + 0.0014303896, + 0.013713628, + 0.0067468463, + -0.003897387, + -0.015473112, + -0.00925023, + 0.029652486, + -0.014632182, + 0.044763353, + -0.025344336, + 0.014321685, + -0.009127324, + -0.038812153, + -0.023106169, + -0.0061873044, + -0.020130571, + 0.0059447284, + 0.008376957, + 0.0032197917, + -0.02433522, + 0.021980617, + -0.0027799206, + 0.018979143, + -0.0007612842, + -0.0071996544, + -0.018177025, + -0.03358545, + -0.024050599, + -0.022575736, + -0.02869512, + 0.016585726, + -0.014412247, + -0.03167072, + 0.020454004, + 0.0022769796, + -0.007102624, + -0.010479282, + -0.009269636, + 0.025163213, + 0.013933564, + 0.026237017, + 0.013881814, + -0.0050358768, + -0.011714802, + -0.022523986, + -0.025913581, + -0.017918278, + 0.021424308, + 0.022420488, + 0.0047415514, + 0.010472813, + 0.0135066295, + -0.0030499885, + 0.012866229, + -0.016003545, + -0.0012161141, + 0.013933564, + 0.0068180016, + -0.005026174, + 0.00945076, + -0.017504282, + 0.023339042, + -0.007950023, + -0.008635704, + 0.010291689, + -0.0005227512, + -0.021825368, + -0.0012581607, + -0.01844871, + 0.035629556, + 0.01687035, + -0.011928269, + 0.015744798, + -0.016702164, + -0.009554259, + 0.0026699528, + 0.0068891575, + 0.035344936, + 0.0009694953, + 0.0055080913, + 0.0076848064, + 0.0074389963, + -0.015563673, + -0.00885564, + 0.009431354, + 0.029445488, + -0.015550736, + -0.0043598986, + -0.0110355895, + 0.020764502, + 0.03032523, + -0.01454162, + 0.002259191, + 0.0120252995, + -0.01137843, + 0.015162615, + 0.020001197, + -0.0037033265, + -0.01741372, + 0.0044601634, + -0.03037698, + 0.00420465, + -0.026379328, + -0.011714802, + -0.00026663142, + -0.03423232, + 0.0016737741, + 0.010265815, + 0.024891527, + 0.009515447, + 0.0052331723, + 0.0021136452, + 0.028902117, + -0.014114686, + -0.0052752187, + 0.0033895948, + 0.01068628, + 0.016753914, + -0.016495166, + 0.00413026, + -0.0009694953, + -0.041037384, + 0.017517218, + 0.010311096, + -0.033119705, + -0.0031890653, + 0.022730986, + -0.0038941528, + 0.004773895, + -0.016016481, + -0.0038197627, + 0.002102325, + 0.0012056025, + -0.012866229, + 0.0041884785, + -0.0056924494, + -0.017995901, + 0.015175552, + 0.009683632, + -0.0060126497, + 0.00791768, + 0.0048903315, + -0.010252877, + 0.012284047, + -0.01513674, + 0.0017708045, + 0.0016066615, + 0.018021777, + -0.0014675845, + -0.015990607, + 0.011100276, + -0.004366367, + -0.008364019, + -0.0014643503, + 0.009192012, + 0.008124677, + 0.0036774515, + 0.0144898705, + -0.0039847144, + 0.019651888, + -0.03260221, + -0.0073743095, + -0.014231123, + -0.034542818, + -0.02641814, + -0.020337569, + -0.02547371, + 0.007633057, + -0.010666873, + -0.028125875, + 0.0021815666, + -0.005795948, + 0.008668047, + -0.018384025, + 0.0053690146, + -0.0022478707, + 0.008900921, + -0.0019729512, + -0.004476335, + 0.026094705, + 0.0038068255, + -0.0029092943, + -0.0078077116, + 0.0048968, + 0.006239054, + -0.017271409, + 0.0033863604, + -0.0015597634, + -0.008739203, + -0.018733334, + 0.018319337, + 0.012109392, + 0.011009715, + -0.008972077, + -0.020686878, + 0.00727081, + 0.004579834, + 0.022562798, + 0.02696151, + 0.032886833, + -0.012723918, + -0.027686004, + -0.02286036, + -0.020466942, + 0.014140561, + -0.021657182, + -0.007801243, + 0.030635728, + 0.009166137, + -0.008829765, + -0.031386096, + -0.002327112, + -0.004269337, + 0.0055274977, + 0.014231123, + -0.00022559565, + -0.011274931, + 0.004026761, + 0.016728038, + -0.007044406, + 0.0021055595, + -0.005391655, + -0.011785957, + 0.00027896237, + 0.008913858, + 0.001550869, + -0.0038003568, + -0.014722744, + -0.013338444, + -0.016508102, + -0.0012403717, + -0.007341966, + -0.02156662, + -0.021087937, + 0.024904465, + 0.00939901, + -0.015990607, + 0.0026521639, + -0.040778637, + -0.020285819, + -0.0004916206, + -0.0066110035, + 0.005158782, + -0.030040607, + -0.0050358768, + 0.0011554701, + -0.001466776, + -0.018293463, + -0.022562798, + 0.003690389, + 0.023623664, + 0.012698043, + 0.2370129, + 0.008454581, + 0.0027119992, + 0.04199475, + -0.008875046, + 0.014205248, + 0.027039135, + 0.0049291435, + 0.016443416, + 0.023015607, + -0.02750488, + 0.0011109979, + 0.009386073, + 0.010938559, + -0.011850644, + -0.014554557, + -0.01811234, + -0.015304926, + 0.01310557, + 0.0023109403, + 0.008021179, + 0.000092381015, + 0.0040041204, + -0.021256123, + 0.015304926, + 0.021993553, + -0.0022915343, + -0.001701266, + 0.019328453, + 0.020259945, + 0.005411061, + -0.020945625, + -0.008286395, + -0.00024257596, + -0.004456929, + -0.0085710175, + -0.0023869474, + -0.0026521639, + 0.0222523, + 0.024813903, + -0.0040688077, + -0.0144769335, + -0.020997375, + 0.014127624, + -0.006552785, + -0.0051070326, + -0.019858886, + -0.012782136, + 0.01687035, + 0.0072449353, + -0.017944153, + -0.0072772787, + 0.02324848, + 0.023274355, + -0.00004644319, + 0.0061711324, + 0.02859162, + -0.018138213, + 0.00640724, + 0.00865511, + -0.006119383, + 0.035267312, + -0.020945625, + 0.023636602, + 0.010996777, + -0.008344613, + -0.002513087, + -0.00048515192, + 0.024425782, + -0.012070579, + 0.006300506, + -0.0031421673, + -0.0031648078, + 0.015964733, + 0.01760778, + 0.007937086, + 0.026832135, + 0.010957965, + 0.0095736645, + 0.002344901, + -0.010977371, + -0.0075554326, + -0.004421351, + 0.028384622, + 0.00058056513, + -0.017180847, + -0.0062455223, + 0.008150552, + 0.029419612, + 0.009631883, + 0.00390709, + 0.0017643358, + 0.0052008284, + 0.017193785, + 0.015317864, + 0.022278177, + 0.008422238, + 0.00885564, + -0.018992081, + -0.0023060888, + -0.029109115, + -0.0115207415, + 0.01879802, + 0.002307706, + -0.02696151, + 0.011003246, + 0.004211119, + -0.021760682, + 0.029238489, + 0.0044860383, + 0.004026761, + -0.009192012, + 0.008784484, + 0.0013325507, + 0.0059447284, + -0.0029303175, + 0.005158782, + -0.031618968, + -0.017245533, + -0.0063231466, + -0.008525737, + -0.020738628, + -0.010841528, + -0.0013163789, + -0.008234645, + -0.025486648, + -0.01562836, + 0.013674815, + 0.0073290286, + -0.03780304, + 0.0065107387, + -0.012892104, + 0.024451656, + -0.0026861245, + -0.0017109691, + -0.0021314342, + 0.013687753, + -0.0080858655, + 0.016857412, + -0.012601012, + 0.008519268, + -0.008131146, + 0.016546914, + -0.0010738029, + 0.0052267034, + -0.011876519, + 0.0044439915, + -0.008480456, + -0.014451059, + -0.027530754, + -0.01795709, + -0.006219648, + 0.0018662177, + -0.021152625, + 0.026094705, + -0.012070579, + -0.00045765997, + 0.0020667473, + 0.028436372, + 0.01370069, + -0.009463697, + 0.0063393186, + 0.013817127, + -0.0021087937, + -0.007503683, + 0.0025858597, + -0.16487403, + 0.0057571363, + 0.044219982, + -0.03314558, + -0.022045303, + 0.00796296, + 0.0095801335, + 0.023558978, + -0.014735681, + 0.039640147, + 0.00035961886, + 0.011132619, + -0.04572072, + -0.0026020315, + -0.010847997, + 0.0036095304, + -0.005391655, + 0.019250829, + -0.011578959, + 0.006921501, + 0.011443117, + -0.018616896, + 0.007037937, + 0.014127624, + -0.0037712476, + -0.019431952, + -0.02305442, + 0.021644244, + 0.01038872, + -0.02300267, + -0.009489572, + -0.0003606296, + 0.00051547395, + 0.006400771, + 0.009813006, + 0.0034445787, + 0.003968543, + 0.0026295234, + -0.013868877, + 0.00059754547, + -0.0077688997, + 0.010802716, + 0.017827716, + 0.03348195, + -0.0062778657, + 0.020492818, + 0.011986487, + 0.0009039998, + -0.01221936, + -0.008933264, + 0.009360198, + -0.025137339, + -0.0054045925, + -0.002624672, + 0.005540435, + 0.02067394, + 0.017103223, + 0.01953545, + 0.0009573665, + -0.000321211, + -0.008247583, + -0.03834641, + -0.011766551, + -0.0025454303, + 0.012406952, + 0.009664226, + 0.015887108, + -0.0031551046, + -0.017387845, + 0.008985014, + -0.00221391, + -0.02088094, + -0.0061226175, + -0.019781262, + 0.004903269, + 0.011093807, + 0.0030790975, + -0.026094705, + -0.011934738, + -0.01009116, + -0.002120114, + 0.050171178, + -0.017646592, + 0.0125233885, + -0.013674815, + 0.01592592, + 0.00041803924, + 0.004560428, + -0.027427256, + 0.0015678493, + 0.029109115, + -0.010052348, + 0.00846105, + -0.02853987, + 0.010744498, + 0.0043501956, + 0.0054498734, + -0.00571509, + 0.0004378496, + 0.0018079996, + -0.013674815, + 0.010097628, + -0.018862708, + 0.021605432, + 0.032860957, + -0.00930198, + -0.016339917, + 0.018319337, + 0.03749254, + -0.005210532, + -0.022174677, + 0.010699217, + 0.009819475, + 0.020014133, + 0.016184669, + -0.005857401, + 0.014877993, + -0.0061452575, + 0.024050599, + 0.029471362, + 0.04230525, + -0.020518692, + -0.015473112, + 0.016314043, + 0.0071802484, + -0.016158793, + -0.08569723, + 0.003531906, + -0.0037033265, + 0.021346685, + 0.0077106813, + 0.028798617, + 0.021631308, + 0.035267312, + 0.00687622, + 0.01518849, + -0.012232297, + -0.011669521, + -0.01608117, + 0.009754788, + 0.0008522502, + -0.011391367, + 0.01083506, + -0.032576334, + -0.04574659, + 0.016145855, + 0.000981624, + -0.0030241136, + 0.012801542, + -0.0077300873, + 0.006365193, + -0.037673663, + -0.038605157, + 0.0110355895, + 0.0035157343, + 0.0034154695, + 0.02349429, + -0.027039135, + -0.016986785, + -0.013312569, + -0.021708932, + -0.0149814915, + -0.021281999, + -0.019263767, + 0.011941206, + -0.03961427, + -0.008991483, + 0.018306399, + 0.0168186, + -0.015563673, + 0.015162615, + -0.0058379946, + -0.016197605, + 0.012549263, + -0.009386073, + -0.022627486, + 0.012665699, + 0.0045054443, + -0.008680985, + -0.023416666, + 0.026599264, + -0.011734208, + 0.008564549, + 0.030144107, + -0.013687753, + 0.00895267, + -0.0022656594, + 0.028617496, + -0.0004867691, + 0.020945625, + 0.0050100023, + -0.026482826, + -0.025680708, + -0.0009444291, + 0.009800069, + -0.037259668, + -0.036198802, + -0.003531906, + -0.0029384035, + -0.013894751, + -0.028902117, + -0.008182895, + -0.013648941, + 0.016896224, + -0.0016333448, + -0.0054983883, + -0.017530156, + -0.022562798, + 0.0057991827, + 0.006064399, + -0.001644665, + 0.03555193, + -0.031748343, + -0.018772146, + 0.0024144393, + -0.0015686579, + -0.0060417587, + 0.019134391, + 0.013124976, + -0.016249355, + -0.025098527, + 0.018371087, + -0.0025001497, + 0.014670994, + 0.02734963, + -0.01890152, + -0.022433424, + 0.00079686206, + -0.05387127, + 0.019315515, + -0.005165251, + -0.013959438, + -0.013429006, + -0.0043437267, + 0.005805651, + -0.0063037407, + -0.0067597837, + 0.007193186, + -0.008351082, + 0.017866528, + -0.010343439, + 0.002391799, + -0.0044957413, + 0.0054789823, + 0.009036764, + 0.017504282, + -0.0047577233, + -0.00801471, + -0.015537799, + -0.0018338743, + 0.017672468, + 0.017737154, + -0.029367864, + 0.004773895, + -0.008842702, + 0.001822554, + -0.022394612, + -0.01370069, + 0.03819116, + -0.036923297, + 0.0043404927, + 0.04947256, + -0.010653936, + -0.039950643, + -0.029859483, + 0.030092357, + 0.03423232, + -0.040287014, + -0.00791768, + -0.025848895, + 0.011456054, + -0.024593968, + 0.007982367, + 0.031644844, + -0.015641298, + 0.006921501, + 0.010673342, + 0.0007115562, + 0.022523986, + 0.016883288, + 0.0011045292, + 0.0010754201, + -0.010265815, + -0.025797145, + 0.02354604, + -0.016055295, + 0.029290238, + -0.025745396, + 0.011798895, + 0.0055727786, + 0.013312569, + 0.008079397, + 0.020686878, + -0.011158494, + 0.024865653, + 0.0037680133, + -0.0049905963, + -0.014774493, + 0.005753902, + 0.010446938, + 0.026780386, + 0.016805662, + 0.020363443, + 0.002352987, + 0.023468416, + 0.0075101517, + -0.016404605, + 0.018138213, + 0.019845948, + -0.0027152337, + -0.023313167, + 0.014037062, + 0.035836555, + 0.0002749194, + -0.036172926, + 0.017750092, + 0.010304627, + 0.0036030617, + -0.017504282, + 0.0056762774, + 0.008215239, + 0.004615412, + 0.008351082, + 0.0041076196, + -0.00472538, + 0.01454162, + -0.0036483426, + 0.021100875, + -0.015343738, + -0.022769798, + 0.0066821594, + -0.02552546, + -0.012969729, + 0.005346374, + -0.0050035333, + -0.017970027, + -0.0076395255, + 0.003402532, + 0.0042919773, + 0.0011012949, + 0.004139963, + 0.007658932, + 0.004589537, + -0.006219648, + -0.028953867, + -0.023804788, + -0.022472236, + 0.015615423, + 0.0015557205, + 0.008972077, + -0.005905916, + 0.001896944, + 0.0063748965, + 0.01058278, + 0.018189963, + -0.011197306, + 0.030532228, + 0.02582302, + 0.010479282, + 0.0062455223, + -0.0009436205, + -0.0067015653, + 0.001402089, + -0.022718048, + 0.0034898594, + 0.011747145, + -0.01276273, + 0.06810239, + 0.0030338168, + -0.022601612, + 0.03487919, + -0.013726565, + 0.033430204, + 0.008441644, + 0.009528384, + -0.022032365, + -0.009780663, + -0.0017999136, + 0.019548388, + 0.011404305, + -0.028850367, + -0.02908324, + -0.019224953, + -0.024852715, + 0.0059382594, + -0.0004519999, + -0.015253177, + 0.018707458, + -0.01725847, + 0.007924148, + 0.015059115, + -0.022187615, + -0.024115285, + 0.0144898705, + -0.0020360209, + 0.0006181644, + 0.0032214087, + 0.021683056, + -0.0045539592, + -0.03293858, + -0.0051070326, + 0.014231123, + -0.015822422, + -0.011675989, + -0.019199079, + -0.008887983, + -0.0038100597, + 0.010828591, + 0.027479006, + -0.010155847, + -0.008499862, + 0.013196132, + -0.014049999, + -0.0034995626, + 0.008661579, + -0.0046024746 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 9, + "total_tokens": 9 + } +} +806 1738 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 604 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is purple.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003esitting room\u003c/kv\u003e\n\n\u003ckv key=\"square_feet\"\u003e400\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What color is the lamp in each room?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 913 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:27:58 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 637 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999892 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_2b5a4d6d34d3443ab41ff40ba98e8fdf + +{ + "id": "chatcmpl-ERDYcmOanNmHEX5fiwS1xIUcVP7W6", + "object": "chat.completion", + "created": 1790155678, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "The lamp beside the desk in the sitting room is purple. The other rooms' lamp colors are not specified.", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 108, + "completion_tokens": 22, + "total_tokens": 130, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_0b80e335b8" +} diff --git a/vectorstores/inmemory/testdata/TestInMemoryAsRetrieverWithScoreThreshold.httprr b/vectorstores/inmemory/testdata/TestInMemoryAsRetrieverWithScoreThreshold.httprr new file mode 100644 index 000000000..f602f8cd5 --- /dev/null +++ b/vectorstores/inmemory/testdata/TestInMemoryAsRetrieverWithScoreThreshold.httprr @@ -0,0 +1,9416 @@ +httprr trace v1 +441 168102 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 245 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["The color of the house is blue.","The color of the car is red.","The color of the desk is orange.","The color of the lamp beside the desk is black.","The color of the chair beside the desk is beige."]}HTTP/2.0 200 OK +Content-Length: 167145 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:43:10 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 165 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-klnn2 +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999954 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_56a7d3dc40df477ba140f29dfb46ced0 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.0045962376, + 0.00861834, + -0.008126223, + -0.0057255807, + -0.016656235, + 0.023255637, + -0.0021608942, + 0.0004629361, + 0.03417052, + -0.009558408, + -0.021224082, + 0.019343946, + 0.008006349, + -0.017110497, + -0.008088369, + -0.009735065, + 0.019672023, + -0.024353435, + 0.018031636, + -0.0012744544, + -0.03485191, + 0.028063232, + -0.0003330064, + -0.0025457542, + -0.0055268416, + -0.005293402, + 0.01669409, + -0.013539501, + 0.017047405, + 0.007836002, + -0.0042019137, + -0.01500323, + -0.011741384, + -0.009659355, + -0.010170398, + -0.0058580735, + -0.0010071029, + 0.0023943337, + -0.007186156, + 0.000008675122, + 0.01755214, + -0.0024795078, + 0.0055457694, + -0.030965455, + -0.0057445085, + 0.005832837, + 0.0017397564, + 0.0144227855, + -0.022713048, + 0.008290263, + 0.0053501846, + 0.026296662, + -0.0006660128, + -0.03437241, + 0.0062997164, + -0.011110466, + 0.0062050787, + 0.015596293, + 0.0025773, + -0.004785513, + 0.010145161, + -0.02176667, + -0.011899114, + -0.012328138, + -0.029602673, + -0.010511094, + -0.017905453, + -0.010498475, + 0.005618325, + 0.022511154, + 0.019268235, + 0.024782458, + 0.0139180515, + -0.001563888, + 0.012782399, + 0.013451172, + -0.023444913, + -0.012290282, + 0.0012602587, + 0.010908572, + 0.006561547, + -0.004507909, + -0.033287235, + 0.007507924, + 0.029224122, + 0.017791888, + -0.015911752, + 0.014902283, + -0.039899256, + 0.0029921287, + 0.024429144, + 0.041716296, + 0.016845511, + -0.008959035, + -0.009053674, + -0.014183037, + 0.011993751, + 0.029880276, + 0.006914861, + -0.026220951, + -0.00060213235, + 0.011318669, + -0.048025478, + 0.00761518, + -0.03015788, + 0.0017019013, + -0.0023186237, + -0.004255542, + 0.027432315, + -0.029577436, + -0.025337666, + 0.027508024, + 0.024782458, + -0.031520665, + -0.00094085647, + -0.00008300515, + 0.0006277634, + -0.011854949, + -0.0102397995, + 0.01654267, + 0.009911722, + 0.021817144, + 0.014637298, + 0.017640468, + -0.004946397, + 0.005485832, + -0.021968564, + -0.044113785, + -0.005362803, + -0.0021640488, + 0.009413296, + 0.021526922, + 0.015836041, + 0.0018312394, + -0.025640508, + -0.0038643728, + -0.026094768, + 0.028416546, + -0.024656275, + -0.00353945, + 0.009779229, + 0.019558458, + -0.023369202, + -0.0035993871, + 0.019836063, + 0.02861844, + 0.003400648, + -0.0028706768, + -0.0105174035, + -0.030258827, + 0.017779268, + -0.031596374, + 0.0141451815, + 0.020580545, + 0.020984333, + 0.0360128, + -0.008977963, + 0.012662524, + -0.03333771, + 0.013526882, + -0.025716217, + -0.0013304483, + 0.036441825, + -0.006362808, + 0.034321938, + 0.018839212, + 0.017564757, + 0.0049053873, + -0.028366074, + 0.0011963783, + -0.012403848, + 0.035810906, + -0.039571177, + 0.021640487, + 0.007886475, + 0.01523036, + -0.0057034986, + 0.0015607334, + -0.01669409, + -0.0049716337, + -0.041665826, + -0.0055299965, + 0.0111987945, + 0.006681422, + -0.0016798192, + 0.012946437, + 0.016138883, + -0.008353354, + 0.017817125, + 0.0018959086, + 0.021514304, + 0.004731885, + -0.0024479618, + -0.00040891374, + -0.6856312, + -0.017981162, + 0.010132543, + -0.02200642, + 0.02161525, + 0.021526922, + 0.026725687, + 0.0070284265, + -0.01577295, + -0.017211443, + -0.005914856, + -0.0013501645, + -0.010088379, + -0.0015402286, + 0.0032902374, + -0.0035236771, + 0.007829692, + 0.01008207, + 0.0049905614, + 0.005022107, + -0.0075647067, + -0.009324968, + -0.015066322, + 0.001839126, + 0.01577295, + 0.009823393, + 0.014788718, + 0.0016861283, + -0.028896045, + 0.014902283, + -0.015735095, + 0.03470049, + -0.0020094737, + 0.008719287, + 0.03263108, + 0.0047129574, + -0.02114837, + 0.036896084, + 0.021791907, + 0.013829722, + -0.0024952807, + -0.0036151602, + 0.019343946, + -0.00020209092, + -0.010126234, + 0.006255552, + 0.009501625, + -0.010933809, + 0.010334437, + 0.0074069775, + 0.00669404, + -0.009451152, + -0.00892749, + 0.021034807, + 0.021299792, + 0.00046254176, + 0.036492296, + 0.020795057, + -0.010151471, + -0.0066435663, + -0.00815146, + 0.0025268267, + -0.012485867, + -0.021400739, + -0.015129413, + 0.002026824, + -0.027785629, + -0.01608841, + -0.0141451815, + -0.005340721, + -0.00081625016, + 0.017097877, + -0.02294018, + 0.023053743, + 0.0026277734, + -0.0019590005, + 0.03480144, + -0.008877017, + -0.010801316, + 0.013135713, + 0.015343926, + -0.018019019, + -0.012126244, + -0.018813975, + 0.009028437, + -0.015697239, + -0.01885183, + -0.019911772, + 0.004432199, + -0.027104238, + 0.020214614, + -0.0074069775, + -0.014864428, + -0.025135772, + -0.013299751, + 0.009817084, + -0.0067508225, + 0.02015152, + 0.016138883, + -0.021905473, + -0.017577376, + -0.008971654, + 0.0007425116, + 0.010397528, + 0.03210111, + 0.012302901, + -0.004485827, + 0.023508005, + 0.0039022279, + -0.026246188, + 0.02215784, + -0.0056877257, + -0.015066322, + 0.0061956146, + -0.004763431, + -0.02360895, + 0.014940138, + 0.0076404167, + 0.02977933, + -0.013690921, + 0.02016414, + 0.0032586914, + -0.00073304784, + -0.003369102, + 0.0151041765, + 0.0052965567, + -0.010700369, + -0.0050725807, + -0.0048202137, + 0.00042547533, + 0.0031608993, + 0.011671983, + 0.022069512, + 0.009552099, + 0.013186187, + 0.003378566, + 0.00619246, + -0.008612031, + 0.031192586, + -0.007192465, + -0.014637298, + 0.014536351, + -0.01138807, + 0.0065110736, + -0.00946377, + -0.031949688, + -0.037981264, + -0.018978013, + -0.025097918, + 0.01692122, + -0.005851764, + -0.00074448326, + 0.0019858144, + 0.015608911, + -0.01162151, + 0.011224031, + 0.0012571041, + -0.0008667236, + -0.008397519, + 0.013514264, + 0.023419676, + 0.015899133, + -0.0026987516, + 0.006580475, + -0.01530607, + -0.013842341, + -0.018372333, + 0.013413317, + -0.01261205, + -0.022031657, + 0.007810765, + -0.004078885, + -0.013211423, + -0.016214592, + -0.01838495, + 0.006977953, + -0.03333771, + -0.033135813, + -0.004583619, + -0.012996911, + 0.01806949, + 0.015470109, + -0.004763431, + -0.0027397615, + 0.016530052, + 0.0074889967, + 0.037829842, + 0.032429185, + 0.0043060156, + 0.0071483008, + -0.0014771367, + 0.0144480225, + 0.0012768203, + 0.022183077, + 0.011640437, + -0.009375442, + -0.00077997235, + 0.009154621, + -0.004138822, + 0.014889665, + 0.02476984, + 0.0024905489, + 0.013678302, + -0.020366034, + -0.0027413387, + -0.042902425, + 0.020138903, + 0.002561527, + -0.001892754, + 0.005946402, + -0.019356564, + -0.02208213, + -0.01660576, + -0.013375462, + 0.009665663, + -0.012018988, + -0.005662489, + 0.006422745, + 0.009552099, + -0.006971644, + 0.006031576, + 0.00011908577, + 0.029022228, + -0.00438488, + -0.014460641, + -0.012239809, + 0.0004830466, + 0.011160939, + -0.014864428, + -0.010132543, + -0.021198845, + 0.0073123397, + -0.008107296, + 0.009507935, + -0.0028690996, + 0.0105174035, + 0.018296622, + -0.020252468, + 0.0013951174, + -0.0013170413, + 0.019179907, + 0.026296662, + 0.0017381791, + -0.0076845814, + 0.021817144, + -0.0049116965, + 0.010858099, + -0.00034877934, + -0.020504834, + 0.014864428, + -0.007753982, + -0.0049337787, + -0.014889665, + -0.0005788673, + 0.013375462, + -0.01953322, + 0.02685187, + -0.0056025516, + 0.026145242, + 0.017741414, + 0.03321152, + 0.0060662767, + -0.0007535527, + -0.007817074, + 0.00984232, + -0.0016048977, + -0.020631019, + -0.008283953, + -0.005794982, + -0.025968585, + -0.006100977, + -0.009482698, + 0.029224122, + -0.0015694086, + 0.0007488208, + -0.007331267, + 0.0021593168, + -0.0016656235, + 0.012170408, + -0.009880176, + -0.0078486195, + -0.023381822, + 0.0052460833, + 0.012599433, + -0.000050769184, + -0.009438533, + -0.0303093, + 0.02100957, + -0.015507964, + 0.012971674, + 0.026372373, + 0.0016672008, + 0.0063501894, + -0.008567867, + -0.00488646, + -0.02839131, + 0.0025362903, + -0.0027902348, + 0.015722476, + -0.017060023, + 0.008826543, + -0.0193818, + -0.007974803, + -0.0010165666, + 0.008069442, + 0.022296643, + 0.00885178, + 0.0149275195, + -0.012403848, + -0.022801377, + -0.029501725, + -0.0076277987, + 0.008006349, + 0.009104147, + -0.015293452, + -0.0052681654, + -0.025489086, + -0.02476984, + 0.024429144, + 0.013287133, + -0.00066522416, + -0.0055489237, + -0.01276978, + -0.0008895944, + 0.085602954, + -0.018612081, + 0.0021041115, + -0.001769725, + 0.023331348, + -0.017425954, + -0.016201975, + 0.0061829966, + -0.008347045, + 0.026448082, + 0.011413307, + -0.002197172, + 0.0069211703, + 0.012492176, + 0.00043217881, + -0.0014211428, + 0.024164159, + -0.0116152, + 0.012340756, + -0.019507984, + -0.026725687, + 0.0029495417, + 0.014725626, + 0.007829692, + -0.0040410296, + 0.008990581, + 0.012795017, + 0.0006581263, + 0.021413356, + -0.009627809, + -0.004861223, + 0.013981143, + -0.002235027, + -0.019457512, + -0.00091246516, + -0.020138903, + -0.03439765, + -0.007400668, + 0.01238492, + -0.026220951, + 0.029426016, + 0.012151481, + 0.008984272, + -0.009571026, + 0.002984242, + 0.012006369, + -0.0014637298, + 0.0412368, + -0.013022147, + -0.010183017, + 0.030889746, + -0.017123114, + 0.0014353384, + 0.00438488, + 0.013148331, + 0.015810804, + 0.005933784, + 0.005523687, + 0.01755214, + -0.029804567, + -0.0149275195, + -0.025842402, + -0.015899133, + 0.002908532, + -0.002946387, + -0.03886455, + -0.015091559, + -0.00082413666, + -0.022220932, + -0.015318689, + 0.025993822, + -0.011299741, + -0.018359713, + 0.01515465, + 0.024403907, + 0.022952797, + 0.002925882, + -0.018965395, + -0.019634169, + 0.02016414, + -0.012996911, + -0.0021246164, + 0.015041085, + 0.008839161, + -0.0041230493, + -0.0027350294, + 0.023318728, + -0.027255658, + -0.00792433, + 0.022914942, + 0.004823368, + 0.0019558459, + 0.030359775, + 0.009451152, + -0.008984272, + 0.0043817256, + -0.001984237, + 0.009116765, + -0.01669409, + 0.0024448072, + 0.010933809, + -0.031066403, + -0.013577355, + -0.004548919, + -0.0061041317, + 0.0025063218, + 0.010302891, + -0.0005694035, + -0.04138822, + 0.005302866, + 0.016807655, + -0.017135734, + 0.000028194148, + -0.030208353, + 0.003277619, + 0.023861319, + -0.019331327, + 0.017577376, + 0.0023659426, + -0.03538188, + 0.027205184, + -0.036366113, + 0.025123155, + 0.010763461, + -0.007356504, + 0.004744503, + 0.008895944, + -0.0059211655, + -0.016164118, + 0.0039274646, + 0.0022097903, + 0.00082255935, + -0.022145221, + -0.012946437, + -0.01969726, + -0.013047384, + 0.019444892, + 0.0047728946, + 0.00004029496, + -0.011255577, + -0.0111987945, + 0.011911732, + 0.0030883437, + -0.0017634158, + -0.024731986, + -0.016416486, + 0.00276973, + -0.0144480225, + -0.013552119, + 0.022750903, + 0.016731946, + -0.0076593445, + -0.001903795, + 0.022107366, + 0.006839151, + -0.009873867, + -0.017981162, + -0.004100967, + 0.02161525, + 0.029602673, + 0.006681422, + -0.00030402362, + 0.02176667, + -0.009552099, + -0.016290303, + -0.011968515, + 0.0075836345, + -0.0053911945, + -0.021425975, + 0.01962155, + 0.01631554, + 0.027861338, + 0.015457491, + 0.022271406, + 0.0056372522, + 0.015962224, + 0.0049653244, + -0.0027239884, + -0.015205123, + -0.037527002, + -0.01808211, + 0.0024243025, + -0.019672023, + 0.00423346, + 0.021943329, + -0.0035552229, + 0.010883335, + 0.01953322, + 0.0077792187, + 0.001205842, + 0.02439129, + -0.013665684, + 0.042347215, + -0.0028596357, + -0.0072807935, + -0.0058044456, + -0.008914871, + -0.011495326, + 0.008952727, + 0.0023359738, + 0.018498516, + 0.020366034, + -0.021943329, + -0.008208243, + 0.0033943388, + 0.019583695, + -0.0014006379, + -0.0057413536, + 0.005302866, + -0.012037915, + -0.018675173, + -0.018801356, + -0.012719307, + -0.043381922, + 0.003608851, + 0.010788698, + -0.028643677, + 0.022435443, + -0.005239774, + -0.020580545, + -0.008895944, + -0.0040284116, + 0.011829712, + -0.0040599573, + 0.023735136, + 0.0051829913, + -0.02801276, + -0.0150284665, + 0.011047374, + -0.0146499155, + -0.01515465, + 0.010832862, + 0.0036624789, + -0.012700379, + -0.0034038026, + 0.0110978475, + 0.006801296, + 0.012479558, + -0.011690911, + -0.009173548, + 0.0035205225, + 0.017716177, + -0.017955925, + 0.0074637597, + -0.008580484, + 0.025728837, + -0.0068265325, + -0.021741435, + 0.0051672184, + -0.011123084, + -0.015255597, + -0.009564717, + -0.025817165, + 0.012252428, + 0.004848605, + -0.008119915, + 0.0035899235, + 0.0107950065, + -0.012933819, + -0.0073817405, + -0.009104147, + 0.047066484, + 0.0040820395, + 0.012334446, + 0.015533201, + 0.026347136, + 0.0041640587, + -0.011608891, + 0.010353364, + 0.026220951, + -0.0010496898, + 0.0015701972, + -0.0071735377, + 0.05130625, + 0.021590013, + -0.009741374, + -0.005186146, + -0.014952756, + -0.02215784, + -0.013766631, + 0.0145994425, + -0.00087382144, + -0.015419636, + -0.0034101119, + -0.027861338, + -0.010277654, + -0.027810866, + -0.01300953, + 0.010776079, + -0.0031198894, + -0.016353395, + -0.013678302, + -0.021993801, + 0.027987523, + 0.02099695, + 0.00009715151, + -0.005785518, + 0.010050524, + -0.025211483, + 0.018183056, + -0.023104217, + 0.022485917, + -0.013375462, + 0.008447992, + 0.011791857, + -0.018473279, + 0.010599422, + -0.00042271506, + -0.0283156, + -0.04555228, + 0.009804466, + -0.009198785, + 0.012391229, + -0.0063217985, + -0.018612081, + 0.010750842, + 0.009110456, + -0.015444873, + -0.021791907, + 0.010536331, + -0.0060284217, + -0.0019022177, + 0.021943329, + -0.0140947085, + -0.0032050635, + 0.019041106, + -0.016820274, + -0.00033596382, + -0.0263219, + -0.012795017, + 0.016037935, + 0.025640508, + 0.000056092555, + -0.021918092, + 0.000246058, + -0.015356544, + -0.017905453, + 0.0051262085, + -0.005555233, + 0.0014960644, + 0.03591185, + 0.025186246, + -0.003962165, + 0.0054448224, + -0.02677616, + -0.009501625, + -0.021451212, + -0.021261936, + -0.016227212, + -0.027659444, + 0.00777291, + 0.016832892, + -0.0067318953, + -0.019861298, + 0.00078825315, + 0.0122335, + -0.0035741504, + -0.018498516, + 0.011413307, + 0.015659384, + 0.016668854, + -0.0054826774, + -0.0046277833, + 0.02161525, + -0.0016009544, + 0.005952711, + -0.0057508177, + 0.003839136, + 0.0020394425, + -0.01261836, + 0.021123135, + 0.012056843, + 0.0065741655, + -0.019369183, + 0.009135692, + 0.008416446, + 0.0052366196, + 0.012403848, + -0.008485847, + 0.010990592, + -0.008365973, + 0.012933819, + 0.008372282, + 0.0073438855, + 0.007671963, + -0.008290263, + -0.01823353, + -0.0128518, + 0.0014605751, + -0.011356524, + -0.00039294362, + 0.020731965, + 0.00021451213, + -0.022675192, + -0.0139937615, + -0.01323666, + -0.025198866, + -0.016176738, + 0.0065741655, + 0.001552847, + -0.0047918223, + 0.011571036, + 0.0023817155, + 0.011854949, + -0.0071987743, + 0.002176667, + -0.0137161575, + 0.00022614466, + -0.027533261, + -0.01769094, + 0.002523672, + -0.02670045, + -0.022637337, + -0.024782458, + 0.00004091109, + -0.0012839182, + -0.004324943, + -0.028567966, + 0.027205184, + 0.010372292, + -0.0108707175, + 0.0072303205, + -0.043104317, + -0.015091559, + 0.009571026, + -0.005063117, + -0.008719287, + -0.016290303, + 0.010687751, + 0.0033943388, + -0.0044353534, + -0.0057665906, + 0.010151471, + 0.015836041, + 0.0056246337, + 0.04063112, + 0.22591911, + -0.0003475964, + -0.00011977584, + 0.039217863, + 0.016984312, + 0.021564778, + 0.0144732585, + 0.017034786, + 0.00296216, + 0.015205123, + -0.0037634259, + -0.0050315713, + -0.013438554, + 0.014372312, + 0.00046372472, + -0.035129514, + -0.030334538, + -0.00861834, + -0.0063186437, + 0.007501615, + -0.019608932, + -0.026044294, + -0.0071419915, + -0.008990581, + 0.0029590053, + 0.006555238, + -0.01815782, + 0.014283983, + 0.024214633, + -0.0010796584, + -0.0018848676, + -0.035482828, + 0.010731915, + -0.003416421, + -0.007015808, + -0.0043407157, + 0.005501605, + -0.020883385, + 0.025602652, + 0.02685187, + 0.00040043576, + -0.0035615321, + -0.024467, + 0.0043407157, + -0.013653065, + 0.017148351, + -0.0059211655, + -0.00569088, + 0.008119915, + 0.008397519, + -0.024000121, + -0.021400739, + 0.009375442, + 0.047344085, + -0.0052271555, + 0.010927499, + 0.015760332, + -0.0021514304, + 0.017160969, + -0.0044195806, + -0.027937049, + 0.037880316, + -0.020921241, + 0.028138943, + -0.0010110461, + -0.002069411, + -0.015268216, + 0.0010930655, + 0.00853632, + -0.015596293, + 0.01538178, + 0.010012669, + -0.0012878614, + -0.007009499, + -0.0059747933, + -0.014990612, + 0.031142112, + 0.00626817, + 0.030914983, + 0.013690921, + -0.02393703, + 0.03000646, + -0.022183077, + -0.0011695642, + 0.0112745045, + -0.04010115, + 0.012119935, + -0.024517473, + 0.013539501, + 0.0020993797, + 0.011123084, + 0.0071672285, + 0.00037657918, + -0.0039747832, + 0.01984868, + 0.018208293, + 0.0139180515, + 0.027028527, + -0.028643677, + 0.0072240112, + -0.037350345, + -0.029224122, + 0.017905453, + 0.0051293634, + -0.012530032, + 0.008719287, + 0.017148351, + 0.0015694086, + 0.021325028, + -0.008977963, + 0.025754072, + -0.012637287, + 0.0030015924, + 0.000056536166, + 0.016719326, + 0.0001789244, + -0.0056057065, + -0.025060063, + -0.003940083, + 0.0076277987, + -0.020908622, + 0.0043438706, + -0.01515465, + 0.010788698, + 0.014940138, + -0.023280874, + -0.018637318, + 0.0103092, + 0.0010347056, + -0.048429266, + 0.0006498455, + 0.005318639, + 0.039646886, + -0.0034511215, + -0.0142966015, + 0.03437241, + 0.01577295, + -0.0335396, + -0.0112492675, + 0.002411684, + -0.00091246516, + -0.025640508, + -0.0041262037, + -0.016984312, + -0.0012665679, + -0.010094688, + 0.0064732186, + 0.00037993092, + -0.029526962, + -0.017981162, + -0.019949628, + 0.0011963783, + -0.017943308, + -0.011583654, + 0.020366034, + -0.02099695, + -0.019823443, + -0.012586814, + 0.008813924, + 0.029754093, + -0.010176707, + 0.019672023, + 0.022321878, + 0.0039116917, + -0.019571077, + 0.013564737, + -0.16050553, + 0.027280895, + 0.011123084, + 0.005318639, + -0.012479558, + -0.022826614, + 0.006091513, + 0.006485837, + -0.013678302, + 0.024050593, + 0.025261957, + 0.0083849, + -0.016984312, + 0.000029845378, + -0.024277724, + -0.0014053698, + 0.0008194047, + -0.0069211703, + 0.018119965, + 0.013337607, + 0.013148331, + -0.014940138, + 0.015558437, + 0.0014755594, + -0.0068265325, + -0.01007576, + -0.011766621, + 0.030284064, + -0.001716097, + -0.0315459, + -0.0073880497, + 0.0019053724, + 0.0069653345, + 0.0048139044, + 0.014586824, + 0.001315464, + -0.0017350245, + 0.0075647067, + -0.0075647067, + 0.0049337787, + 0.0108959535, + 0.0024369208, + 0.017564757, + 0.013072621, + -0.02730613, + 0.014586824, + 0.02977933, + 0.028870808, + -0.009501625, + -0.012391229, + -0.019104198, + -0.021905473, + -0.006031576, + -0.013653065, + 0.03533141, + 0.02307898, + 0.0048517594, + 0.012176718, + -0.00013919629, + -0.0055836244, + -0.03061214, + -0.009981123, + 0.004608856, + 0.0053281025, + 0.019596312, + -0.009110456, + 0.008574176, + 0.0052839383, + -0.02376037, + 0.012662524, + -0.013337607, + -0.03147019, + -0.013123094, + -0.0034416576, + -0.003501595, + 0.008340736, + -0.017804505, + -0.00015043451, + -0.0049653244, + -0.021211464, + 0.0020189376, + 0.037754133, + -0.031899214, + -0.024681512, + -0.017022168, + 0.020075811, + -0.0057508177, + 0.006504765, + -0.008668813, + -0.009501625, + 0.008725596, + -0.043432396, + -0.0038265176, + -0.024530092, + 0.02116099, + 0.020340797, + 0.017589994, + -0.001494487, + -0.0027192566, + -0.009217712, + 0.005041035, + -0.007671963, + -0.012479558, + 0.0028517493, + 0.036189456, + 0.0139180515, + 0.0036214693, + 0.02715471, + 0.0315459, + 0.022359734, + -0.00892749, + 0.015987461, + 0.012946437, + 0.013123094, + 0.0027933894, + -0.009343895, + 0.018170439, + -0.015444873, + -0.0029369232, + 0.005362803, + 0.048429266, + 0.0051293634, + -0.018448042, + 0.012454322, + 0.00031723347, + 0.0013541077, + -0.094839595, + -0.010649896, + 0.023848701, + 0.01253634, + 0.0032003315, + 0.0055646966, + -0.0070725908, + 0.03447336, + 0.019924391, + 0.018965395, + -0.0041356673, + -0.013539501, + 0.0060820496, + -0.026574265, + 0.010712988, + 0.0063186437, + 0.01115463, + -0.020302942, + -0.032656316, + 0.016706709, + -0.0027192566, + -0.006416436, + -0.013627829, + -0.008826543, + 0.0021482757, + -0.016492197, + -0.04209485, + 0.026498556, + 0.004918006, + 0.013362844, + 0.028694151, + 0.0020410197, + -0.008088369, + -0.0077035087, + -0.0021088433, + -0.0151041765, + 0.0100631425, + -0.008119915, + 0.01947013, + -0.019419655, + -0.0011601005, + -0.02339444, + 0.0017949617, + -0.041943427, + 0.011564727, + 0.00072042947, + -0.01731239, + 0.015583674, + -0.009911722, + -0.000672322, + -0.005375421, + 0.0108454805, + -0.0056593344, + 0.00010163695, + 0.025653126, + -0.01885183, + 0.014258747, + 0.019495366, + -0.046057016, + 0.007993731, + 0.0044385083, + 0.0057034986, + -0.00003728824, + 0.029097939, + -0.005457441, + -0.005653025, + -0.024668893, + -0.005533151, + 0.0073880497, + -0.03384244, + -0.018044256, + 0.033135813, + 0.0011246114, + 0.023684662, + -0.017791888, + -0.006201924, + -0.04461852, + 0.00077129726, + 0.020933859, + -0.02276352, + -0.01130605, + -0.013766631, + 0.007892784, + -0.026372373, + 0.0033375563, + 0.019747734, + 0.007507924, + 0.009817084, + 0.009552099, + 0.00031683914, + 0.018031636, + 0.023899173, + -0.0145742055, + -0.024517473, + -0.007394359, + 0.012012679, + -0.025817165, + 0.004918006, + 0.008132533, + -0.018183056, + -0.022713048, + -0.023142071, + -0.043028608, + 0.01916729, + -0.010914882, + -0.02292756, + 0.008403827, + -0.0144732585, + -0.0050063343, + -0.0140694715, + -0.021842381, + 0.023747753, + 0.0058233733, + 0.026599502, + -0.0030331383, + -0.013564737, + -0.0107445335, + 0.009741374, + -0.0136404475, + -0.0018028482, + 0.009028437, + -0.00016206707, + -0.010731915, + 0.002053638, + 0.011779239, + -0.0017208288, + -0.031066403, + 0.0036403968, + -0.006230315, + 0.010933809, + -0.03793079, + -0.024101067, + 0.006107286, + -0.025325049, + 0.0063501894, + 0.05070057, + -0.021602632, + -0.024214633, + -0.009280804, + 0.007861238, + 0.020782439, + -0.02617048, + -0.034448124, + -0.044139024, + 0.0016577371, + -0.02876986, + 0.0068454603, + 0.012359683, + 0.0009960618, + -0.0006502399, + 0.0073249578, + 0.0064511364, + 0.008365973, + 0.021665724, + -0.0065678563, + -0.008763451, + 0.0039810925, + -0.034220994, + -0.0022287178, + -0.0009810774, + 0.018599462, + -0.005116745, + 0.022410206, + -0.018763501, + 0.0056246337, + 0.0034668944, + 0.026372373, + -0.0043123243, + 0.017943308, + 0.019192526, + -0.0027097927, + -0.04146393, + 0.004533146, + -0.009047364, + 0.038687892, + -0.00041443427, + 0.024744604, + 0.00400002, + 0.014725626, + -0.011091539, + -0.013665684, + 0.030485958, + -0.0018343941, + 0.02407583, + -0.020605782, + 0.024113687, + 0.021287173, + 0.010176707, + -0.023142071, + 0.0015047394, + 0.0017854979, + 0.017438574, + -0.031949688, + 0.0024668893, + 0.013564737, + 0.010555258, + -0.009716137, + 0.004924315, + 0.008656195, + -0.0105931135, + 0.0030788798, + 0.06647352, + -0.011665674, + 0.0014881778, + -0.029552199, + -0.035028566, + -0.02685187, + 0.009451152, + -0.0068517695, + -0.0145742055, + 0.0058454555, + 0.0077981465, + 0.007041045, + -0.0017870752, + -0.0038896094, + 0.021968564, + -0.0077666007, + 0.017968545, + -0.01870041, + -0.011634128, + -0.004290242, + 0.032959156, + -0.010271345, + 0.008277644, + 0.0015938566, + -0.0071356827, + 0.002107266, + 0.0074448325, + 0.01776665, + -0.01130605, + 0.0016261912, + 0.011318669, + 0.011690911, + -0.0019274545, + -0.008492156, + 0.0016766646, + -0.020681491, + -0.0071735377, + 0.00977292, + 0.018776119, + 0.013602592, + 0.0424734, + 0.0062429337, + -0.041337747, + 0.015369163, + -0.00036534097, + 0.016630998, + 0.007930639, + 0.031646848, + 0.015167269, + -0.011287123, + -0.00024802962, + -0.0009692478, + 0.026902344, + 0.0014361271, + -0.03131877, + -0.021325028, + -0.021375502, + 0.026448082, + -0.031268295, + -0.0062366244, + -0.0066120205, + 0.017034786, + 0.022599483, + -0.0034290394, + -0.015457491, + -0.018107347, + 0.012984293, + -0.01770356, + -0.0056120157, + -0.006763441, + 0.006388045, + -0.0030709933, + -0.024668893, + 0.00043967098, + 0.004362798, + 0.0038801457, + -0.009457461, + -0.0043344065, + 0.001630923, + 0.011148321, + 0.002599382, + 0.033438653, + -0.008403827, + -0.006580475, + 0.0074195955, + 0.01123665, + -0.019142052, + -0.013135713, + -0.02147645 + ] + }, + { + "object": "embedding", + "index": 1, + "embedding": [ + 0.00089398306, + -0.00462804, + 0.0042670527, + -0.0047607105, + -0.017598893, + 0.003273567, + -0.024374345, + -0.025522098, + 0.0054086363, + -0.024312638, + -0.018931769, + 0.029347945, + -0.00042616535, + -0.018746648, + -0.011675002, + -0.019425428, + 0.024892684, + -0.012687, + 0.013587926, + -0.008262594, + -0.0074048643, + 0.017352065, + -0.029372627, + 0.011428174, + -0.007238255, + -0.007355498, + 0.02142474, + -0.012582098, + 0.03068082, + -0.008873495, + 0.008237911, + -0.024053467, + -0.0022800812, + -0.018117234, + -0.01122454, + -0.00754062, + 0.004739113, + -0.0063033905, + 0.00008147279, + -0.012150148, + 0.02151113, + -0.0002720902, + 0.001740143, + -0.01875899, + 0.0031362686, + -0.0052574533, + 0.007546791, + 0.010224883, + -0.0011215283, + 0.020894058, + -0.0047175153, + -0.0028323606, + -0.008151521, + -0.032852914, + 0.011496051, + -0.0066952314, + -0.007694888, + 0.033124425, + -0.022732932, + -0.013921144, + 0.0149825085, + 0.0007686403, + -0.00968186, + -0.0025608488, + -0.012384635, + -0.0065162806, + 0.017870406, + 0.0114405155, + -0.005812818, + 0.024756929, + 0.00745423, + -0.00065023964, + 0.013180658, + -0.0019345208, + -0.0083798375, + -0.023029128, + -0.029965017, + 0.003248884, + 0.016586896, + -0.003949261, + 0.010718541, + -0.0034093228, + -0.03127321, + 0.02655878, + 0.024682881, + 0.0031779208, + -0.044676013, + 0.0041528945, + 0.0017771674, + -0.0043842965, + 0.01165649, + 0.03314911, + 0.021992447, + -0.01636475, + -0.0024096663, + 0.0055845017, + 0.020474449, + 0.026237901, + -0.0015565641, + -0.023868345, + 0.01336578, + 0.0058745258, + -0.029718189, + 0.012322928, + -0.03616042, + -0.023596834, + 0.009064788, + 0.006744597, + 0.010132322, + -0.024300296, + -0.021807324, + 0.031075746, + 0.035987638, + -0.03675281, + 0.016846066, + 0.0029403481, + 0.012421659, + -0.009848469, + -0.02673156, + -0.0016167287, + 0.016154945, + 0.032877598, + -0.0011654948, + -0.014143291, + 0.024868002, + 0.0033445302, + -0.011347954, + -0.032359257, + 0.0068001337, + -0.0042824796, + -0.0018357892, + 0.0005187262, + -0.011415832, + 0.016006848, + -0.008972227, + 0.015044216, + -0.02853341, + 0.03872744, + -0.02133835, + -0.033469986, + 0.012150148, + 0.020338694, + -0.02132601, + 0.0056184405, + -0.00847857, + 0.020104205, + 0.012477196, + 0.011767563, + 0.0057233428, + -0.023436395, + 0.028434679, + -0.028829604, + 0.03956666, + 0.009496738, + 0.017512504, + 0.017450796, + 0.0057480256, + -0.01508124, + -0.02981692, + 0.013847096, + -0.00797257, + 0.011162832, + 0.024386685, + -0.0065779877, + 0.014686313, + 0.02365854, + 0.0115947835, + 0.0005488084, + -0.0043380163, + -0.0047144303, + -0.010132322, + 0.050698638, + -0.018536843, + -0.0021767216, + -0.0032612255, + 0.023510443, + 0.015007191, + 0.011551588, + -0.024374345, + -0.010471712, + -0.0039184075, + 0.0011222997, + 0.03386491, + 0.0052481974, + 0.017672943, + 0.013723682, + 0.012847439, + -0.01756187, + -0.0005977885, + -0.012020563, + 0.015179971, + 0.034852225, + 0.01062598, + -0.004362699, + -0.68993586, + -0.02211586, + 0.007546791, + -0.001740143, + 0.013415146, + 0.03386491, + 0.029347945, + 0.0034648594, + -0.016636262, + 0.0011747509, + -0.00736784, + 0.000043002205, + 0.0029372629, + -0.014291388, + 0.007787449, + -0.029347945, + -0.014994849, + 0.009817616, + -0.017500162, + 0.032532036, + -0.0117613925, + -0.019770987, + -0.021498788, + -0.0033291036, + 0.026015757, + 0.025299953, + 0.006991426, + 0.0030745612, + -0.0033167622, + 0.0023587577, + -0.012822757, + -0.0028863542, + -0.0040911874, + -0.008083643, + 0.036283836, + -0.013205341, + -0.01122454, + 0.031075746, + 0.012032905, + 0.031421307, + 0.013995193, + 0.014427143, + -0.00021192567, + -0.026805608, + -0.0029681164, + -0.011113467, + -0.0043318453, + -0.015636604, + 0.016673286, + 0.0029804579, + 0.008614325, + 0.0013591012, + 0.009885494, + 0.02571956, + 0.0050846734, + -0.006068903, + 0.025423367, + 0.015883433, + -0.026435364, + 0.00608433, + -0.0023834407, + 0.011434345, + -0.0010189401, + -0.021548154, + 0.0048039057, + 0.0053839535, + -0.0068803527, + 0.010897492, + 0.009299275, + 0.0042115166, + -0.016006848, + 0.003940005, + -0.010070615, + 0.0067816214, + 0.000030082261, + -0.005371612, + 0.041442554, + 0.012051417, + -0.00924991, + 0.019561183, + 0.018438112, + 0.007392523, + -0.020412741, + -0.008336643, + 0.020671912, + -0.025546782, + -0.033198476, + -0.013958169, + 0.017500162, + -0.010564273, + 0.016241336, + 0.029273896, + -0.021005131, + -0.0051309536, + -0.011094955, + 0.0064484025, + -0.0091511775, + 0.012421659, + 0.0077689365, + -0.0028863542, + 0.0046372963, + -0.030039065, + -0.010317444, + 0.009928688, + 0.019598207, + 0.01884538, + -0.021412399, + 0.002713574, + -0.003427835, + -0.023485761, + 0.028928336, + 0.011045589, + -0.013526218, + 0.03403769, + -0.012921488, + -0.025324635, + 0.015871093, + 0.014710996, + 0.022918055, + -0.04507094, + 0.016031532, + 0.006929719, + 0.00012987437, + 0.0114405155, + -0.0063620126, + -0.022560153, + 0.0029881713, + 0.008077472, + -0.015463824, + -0.029520726, + 0.02742268, + 0.0027922508, + 0.019178597, + 0.007016109, + 0.008645179, + -0.008435374, + 0.016648604, + 0.00063095614, + 0.011687344, + -0.017278016, + -0.017919771, + 0.014945484, + -0.018129576, + 0.008330472, + 0.0024852576, + -0.0066705486, + -0.03401301, + 0.0024405199, + -0.00062671374, + 0.0061151837, + -0.019252647, + -0.008805618, + -0.020585522, + -0.0044922843, + -0.011002394, + 0.0048902957, + -0.0226342, + -0.009712714, + -0.0039369194, + 0.006090501, + 0.021622203, + 0.014661631, + -0.011804587, + 0.0000605984, + -0.0112862475, + -0.011064101, + -0.0070901574, + 0.034062374, + -0.029545408, + -0.014587582, + 0.007923204, + -0.0140692415, + -0.013575585, + -0.008342814, + -0.019203281, + 0.00086235814, + -0.016253676, + -0.024473077, + -0.008540276, + -0.0028385313, + 0.009700372, + -0.005896123, + 0.0033815545, + -0.010348298, + 0.032186475, + 0.002978915, + 0.02571956, + 0.027644826, + -0.013118951, + 0.033815548, + -0.023238933, + -0.013069585, + -0.006615012, + 0.019647572, + -0.0031239272, + 0.00030390796, + -0.008885837, + -0.00033244755, + -0.009527592, + 0.014686313, + 0.01875899, + 0.012551244, + 0.022239275, + -0.020462109, + 0.027274583, + -0.005704831, + 0.008645179, + -0.019166257, + 0.017105237, + 0.034383252, + 0.0016367835, + -0.009033934, + -0.0048810397, + 0.004985942, + 0.007978741, + -0.0023464162, + 0.006892694, + 0.015278703, + 0.0030637626, + -0.019351378, + -0.02621322, + 0.031248527, + 0.03512374, + -0.040010948, + -0.019474793, + -0.010440858, + 0.017364407, + 0.013081927, + 0.0011678088, + -0.017055871, + -0.034210473, + 0.010082956, + 0.0016738079, + 0.0014192656, + -0.0034586887, + -0.00031875627, + 0.013674316, + -0.015315727, + 0.01901816, + -0.0056523797, + 0.015488507, + 0.02870619, + 0.020980448, + -0.018820696, + 0.017290358, + -0.011773734, + 0.022128202, + 0.011002394, + -0.009237568, + 0.022955079, + -0.013242366, + 0.0046403813, + -0.017031187, + -0.005220429, + -0.000036108355, + -0.022239275, + 0.04635445, + -0.0031779208, + 0.012174831, + 0.012785732, + 0.011884807, + 0.0042115166, + -0.00123183, + -0.008151521, + 0.000019440178, + 0.011162832, + -0.019203281, + -0.0034586887, + -0.00033726843, + -0.012748708, + -0.00030545064, + -0.016130263, + -0.0017864235, + -0.030088432, + 0.009077129, + 0.0024220077, + 0.010730882, + -0.003292079, + -0.000076218035, + 0.025065465, + 0.02168391, + -0.0152910445, + 0.017389089, + 0.02981692, + -0.019931426, + -0.027447363, + -0.037394565, + 0.0059855985, + -0.005621526, + 0.004430577, + 0.035025008, + 0.023029128, + 0.0181666, + 0.012896805, + 0.0008515594, + -0.003616042, + 0.019067526, + 0.005991769, + 0.018907087, + -0.014809729, + -0.005828245, + -0.015562556, + -0.032680135, + -0.0056431238, + 0.030433992, + 0.026830291, + 0.029347945, + 0.009811445, + 0.0042886506, + -0.0020286243, + -0.022498446, + -0.020474449, + -0.009749738, + -0.007386352, + -0.011347954, + -0.0018990391, + 0.008768593, + -0.009367153, + 0.024682881, + 0.016673286, + -0.0021921482, + -0.009811445, + 0.0037425417, + -0.004985942, + 0.07557898, + -0.0059269764, + 0.004695918, + 0.0019545755, + 0.007256767, + -0.013032561, + -0.024374345, + -0.02210352, + 0.0014084668, + -0.0022847091, + 0.0007239026, + -0.021943081, + -0.000053849173, + -0.010348298, + 0.0033105914, + -0.0017077468, + 0.0032828231, + -0.014032218, + 0.016006848, + -0.017722309, + -0.015871093, + -0.0027475131, + 0.001075248, + -0.017537186, + -0.0079170335, + -0.0056091845, + 0.017598893, + 0.005741855, + 0.020165913, + -0.020116547, + 0.0181666, + 0.012582098, + -0.015735336, + -0.016920114, + 0.006584158, + -0.013513877, + -0.0025253673, + -0.0037302002, + 0.011212198, + -0.005158722, + 0.015611921, + 0.008015766, + 0.0018728136, + -0.0065162806, + 0.0041004433, + -0.0054456606, + 0.00009458557, + 0.0037147736, + -0.013526218, + -0.02125196, + 0.02544805, + -0.0022245445, + -0.012687, + 0.0042207725, + -0.0026318121, + 0.014636948, + -0.028113801, + 0.0029079518, + -0.02107918, + -0.006584158, + -0.0011770648, + -0.0140692415, + -0.0008330472, + -0.00090709585, + -0.031766865, + -0.010212542, + 0.003119299, + -0.016303042, + -0.0071580354, + 0.00762701, + 0.0003278195, + -0.019573525, + -0.017080553, + 0.025670195, + 0.03435857, + 0.014254363, + 0.0018234478, + -0.017450796, + -0.001894411, + 0.023214249, + -0.003986285, + -0.007083987, + 0.0116071245, + -0.003350701, + -0.0062262565, + 0.006522451, + 0.013180658, + -0.020585522, + -0.012909146, + 0.014994849, + 0.02425093, + -0.0010073701, + 0.01833938, + -0.0068433285, + -0.016130263, + -0.0021042156, + 0.0016228994, + 0.00805279, + -0.01695714, + -0.0067260847, + 0.017981479, + -0.020634888, + -0.016611578, + -0.030656137, + 0.02347342, + -0.009120325, + 0.020499133, + -0.006121354, + -0.01669797, + 0.006436061, + -0.009502909, + -0.0065779877, + 0.0041775773, + -0.018154258, + 0.0032334574, + 0.012699342, + -0.01620431, + 0.024300296, + -0.0026626657, + -0.043096308, + 0.009428861, + -0.032063063, + 0.032186475, + 0.027521411, + 0.010150835, + 0.011422003, + -0.019511817, + -0.0061336956, + -0.015031874, + 0.011946514, + 0.009052446, + 0.018104892, + -0.010983882, + -0.010558102, + -0.009897835, + -0.015179971, + 0.01585875, + 0.020165913, + 0.006349671, + -0.010595126, + -0.023818979, + 0.024954392, + 0.02707712, + -0.011335613, + -0.02038806, + -0.014155632, + 0.01482207, + 0.02262186, + -0.027768241, + 0.017068211, + -0.0026333549, + -0.0028431593, + -0.02836063, + 0.0028693848, + 0.02312786, + 0.0020656486, + -0.025818292, + -0.0054610875, + 0.015229337, + 0.024781613, + 0.028409995, + -0.005297563, + 0.017327381, + -0.0096139815, + -0.008453887, + 0.009965713, + 0.0054641725, + 0.01568597, + -0.018438112, + 0.02406581, + 0.027052436, + -0.0038998951, + 0.003214945, + 0.013871779, + -0.0049304054, + 0.021980105, + 0.00013459883, + -0.0038998951, + -0.0005333816, + -0.036826856, + -0.0030622198, + 0.029027067, + -0.012736366, + 0.004146724, + -0.0006857213, + -0.003099244, + -0.0060966713, + -0.0044151503, + 0.005192661, + 0.020807669, + 0.015537873, + -0.019425428, + 0.011730539, + 0.0018758989, + -0.002883269, + -0.012970854, + -0.032013696, + -0.0009680317, + 0.015155288, + -0.0026009586, + 0.03616042, + 0.023152541, + 0.0073740105, + -0.017376747, + -0.0041004433, + 0.02947136, + 0.01490846, + -0.02947136, + 0.022350349, + -0.0045046257, + -0.019758645, + -0.016611578, + -0.020104205, + -0.039640706, + 0.002232258, + 0.005424063, + -0.039023634, + 0.017450796, + -0.01585875, + -0.016241336, + -0.001154696, + 0.01473568, + 0.015389776, + -0.029249214, + 0.022041813, + 0.00642989, + -0.026978388, + -0.021646887, + 0.01800616, + -0.009589299, + -0.0064052073, + 0.016784359, + 0.021042155, + -0.014957826, + -0.0016275274, + -0.007009938, + 0.0102187125, + 0.015722996, + -0.030063748, + -0.0012248879, + 0.012008221, + 0.015500849, + -0.021992447, + 0.0052667097, + 0.0010305103, + 0.006152208, + -0.014538216, + -0.015389776, + 0.0074048643, + -0.013057244, + -0.02742268, + 0.019499475, + -0.02665751, + -0.0020671913, + 0.00874391, + -0.026435364, + 0.008768593, + -0.019511817, + -0.007738083, + -0.004695918, + -0.018672599, + 0.033889595, + 0.014933143, + 0.030113114, + 0.007324645, + -0.011181345, + -0.0059424033, + -0.009996567, + 0.011662661, + 0.028558092, + -0.0115701, + -0.009996567, + -0.015871093, + 0.035000324, + 0.0076516927, + 0.0058004768, + 0.0023541297, + -0.009552275, + -0.026978388, + -0.0007929375, + 0.020128889, + -0.011434345, + -0.024127515, + 0.018462794, + -0.030532723, + -0.0009965713, + -0.029940333, + 0.003582103, + 0.015895775, + -0.0019283501, + -0.019339036, + 0.003788822, + -0.01208844, + 0.0052142586, + 0.0060874154, + -0.009620152, + 0.018277673, + 0.010261907, + -0.024090491, + 0.012316757, + -0.009262251, + 0.036925588, + 0.00950908, + 0.011366466, + 0.020881716, + -0.01824065, + 0.025250586, + -0.00079910824, + -0.01851216, + -0.009157348, + 0.022214592, + -0.007694888, + 0.009453543, + -0.01671031, + 0.0050599906, + 0.01748782, + 0.024756929, + -0.005766538, + 0.00086081546, + 0.012699342, + -0.01669797, + -0.0066890605, + 0.021906056, + -0.013242366, + -0.0043441867, + -0.0088303005, + -0.012736366, + 0.002724373, + 0.0010567359, + -0.018129576, + -0.020857034, + 0.010878979, + -0.0035018837, + -0.02099279, + -0.007164206, + -0.020104205, + -0.01208227, + 0.012612952, + 0.008811789, + 0.0071271816, + 0.006460744, + 0.025818292, + 0.0006012595, + 0.01620431, + -0.029101117, + 0.0069790846, + 0.0077689365, + 0.00668289, + -0.014254363, + -0.016340068, + 0.0008322759, + 0.010274249, + 0.025768926, + -0.03307506, + -0.017709967, + 0.0046897475, + -0.022523127, + 0.0034000669, + -0.0014570613, + 0.011977368, + 0.020215278, + -0.010033591, + -0.011773734, + 0.0033105914, + 0.004720601, + 0.0074665714, + -0.0019345208, + 0.010996223, + -0.0018990391, + -0.002030167, + 0.011675002, + 0.010866638, + -0.017426113, + -0.018919427, + 0.0076516927, + 0.014427143, + 0.033124425, + 0.019005818, + -0.022436738, + 0.033445302, + -0.014883777, + 0.004038736, + 0.017919771, + 0.02870619, + 0.0020224536, + -0.008552618, + -0.02579361, + -0.0069544017, + 0.013982852, + -0.0060781594, + -0.014488851, + 0.0028693848, + 0.0134521695, + -0.013378121, + -0.016858408, + -0.0030884454, + -0.024645856, + -0.017290358, + -0.002540794, + 0.009101812, + -0.025744244, + 0.013686657, + 0.010311273, + -0.0028092202, + -0.00552588, + -0.008669862, + 0.0013459884, + 0.005707916, + -0.0100644445, + -0.0028308178, + -0.0017771674, + -0.008034278, + 0.0014439485, + -0.023954736, + 0.003341445, + 0.017092895, + -0.0143654365, + -0.03751798, + 0.031001698, + -0.00951525, + -0.018549185, + 0.013094268, + -0.020375717, + -0.021622203, + 0.013822413, + -0.0063805245, + -0.0028431593, + -0.010342127, + 0.008435374, + 0.0015149118, + -0.005004454, + -0.02373259, + -0.001538052, + 0.028212532, + -0.006744597, + 0.03147067, + 0.22056621, + 0.002096502, + 0.0037672247, + 0.027101804, + -0.017635917, + 0.033445302, + 0.0062108296, + -0.010249566, + -0.010582785, + 0.012045246, + 0.009194373, + 0.01191566, + -0.028089117, + 0.0032427134, + 0.013217682, + -0.007941716, + -0.012847439, + -0.015957482, + -0.022066494, + -0.028508727, + -0.016451139, + 0.0014177229, + -0.0116071245, + 0.0025917024, + 0.012069928, + -0.000014125164, + 0.0037086029, + 0.025571464, + 0.012921488, + -0.0021366118, + -0.01627836, + -0.00951525, + 0.015821727, + -0.0067137433, + -0.011082613, + -0.003915322, + 0.00057966204, + 0.014957826, + 0.013513877, + 0.023325322, + 0.020597864, + 0.009274593, + 0.015303385, + -0.026805608, + -0.016080897, + 0.006127525, + -0.016870748, + -0.01740143, + 0.0030406222, + 0.0022091179, + -0.02014123, + -0.024287954, + 0.017413773, + 0.04823035, + -0.004223858, + 0.005390124, + 0.027101804, + 0.005760367, + 0.0074912542, + -0.004257797, + -0.022325665, + 0.008731569, + -0.005982513, + 0.011650319, + -0.0016738079, + 0.015266362, + -0.02184435, + 0.01422968, + 0.011958855, + -0.016056214, + 0.02270825, + -0.008935203, + 0.015204654, + -0.0021288984, + 0.0034741154, + -0.0031686649, + 0.0106815165, + -0.004334931, + 0.032063063, + 0.014316071, + -0.0026379828, + 0.008355155, + 0.003230372, + -0.0032365427, + -0.0062509393, + -0.021646887, + 0.0039523463, + 0.011545417, + 0.028311264, + 0.0016861493, + 0.010638322, + -0.005967086, + -0.010576614, + -0.027620142, + 0.008262594, + 0.025966391, + 0.0055752457, + 0.023596834, + 0.009632494, + 0.0021474105, + -0.028138483, + -0.020536156, + 0.010514907, + -0.0007084758, + -0.0067199143, + 0.014044559, + 0.0041960897, + 0.004763796, + 0.020696595, + -0.024399027, + 0.020351036, + -0.024584148, + 0.022300983, + -0.0072135716, + 0.026410682, + -0.0057788794, + 0.005056905, + -0.02433732, + -0.0034864568, + 0.0039523463, + -0.0045601623, + -0.001086818, + 0.00711484, + -0.008645179, + -0.015969824, + -0.021523472, + -0.031914964, + 0.010298932, + -0.0122118555, + -0.020684253, + 0.003264311, + -0.015661288, + 0.04475006, + -0.0021304411, + -0.008441545, + 0.016191969, + -0.0053345873, + -0.01182927, + 0.006007196, + -0.004140553, + 0.01646348, + 0.0009742024, + 0.005680148, + -0.009546104, + -0.013550902, + -0.009194373, + -0.0054209777, + -0.015994506, + -0.043392505, + -0.008170034, + -0.01988206, + -0.010786419, + -0.019598207, + -0.009725055, + 0.012002051, + -0.014994849, + -0.0363332, + 0.0019345208, + 0.0028909824, + 0.030878283, + -0.009737397, + 0.020276986, + 0.013230024, + -0.009996567, + -0.008725398, + -0.018462794, + -0.15560088, + 0.019388402, + 0.0050846734, + -0.007904693, + -0.009836128, + -0.011724368, + 0.018796014, + 0.015019532, + -0.019339036, + 0.03016248, + 0.027546095, + -0.016722651, + -0.03727115, + -0.012489538, + 0.012810415, + -0.00027131886, + -0.0021258132, + 0.023522785, + 0.0035759322, + 0.008355155, + 0.0049211495, + -0.028780239, + 0.020116547, + 0.0011153576, + -0.011366466, + 0.0029372629, + -0.0031810063, + 0.027792923, + -0.015105923, + -0.0181666, + -0.007670205, + -0.014513534, + 0.011428174, + 0.029841602, + -0.0037980783, + -0.00024200793, + -0.023251273, + 0.0045138816, + -0.017981479, + 0.019770987, + -0.015611921, + 0.009021593, + -0.000009364549, + 0.0047853934, + -0.010039762, + 0.031643454, + 0.015797043, + 0.012822757, + -0.0021798068, + -0.013007878, + 0.0061645494, + -0.015624263, + -0.0114528565, + -0.017179284, + 0.046329767, + 0.03240862, + 0.0058251596, + 0.021449422, + 0.011699685, + 0.019203281, + -0.016241336, + -0.0036407248, + 0.018388746, + 0.0021690081, + 0.015611921, + -0.024028784, + 0.018203624, + 0.006676719, + -0.029101117, + 0.015241679, + -0.0034926275, + -0.009033934, + -0.012921488, + -0.021967763, + 0.0016290701, + 0.0055752457, + -0.020659572, + 0.015130606, + -0.006608841, + -0.026879657, + -0.0013668145, + 0.045712695, + -0.0009680317, + -0.018438112, + -0.0076455222, + 0.012748708, + 0.017981479, + -0.008410691, + -0.013155975, + -0.005735684, + 0.00014520476, + -0.043738063, + 0.023325322, + -0.037246466, + 0.016549872, + 0.010872809, + -0.016944798, + -0.0011894063, + -0.0029125798, + -0.0042732237, + -0.0017092895, + -0.0031285551, + -0.024275612, + -0.0019036671, + 0.010126152, + 0.021474106, + 0.017956795, + 0.01954884, + 0.04114636, + 0.025090149, + -0.008935203, + 0.015229337, + 0.013353438, + 0.028039752, + -0.0030344515, + 0.0047761374, + 0.023461077, + -0.0091511775, + -0.0076455222, + 0.01464929, + 0.03914705, + -0.01996845, + 0.010440858, + 0.014513534, + 0.009990396, + -0.020770645, + -0.09379494, + -0.027373314, + 0.0034556033, + 0.0012865951, + 0.007448059, + 0.0217703, + -0.0054364046, + 0.0115947835, + -0.004732942, + 0.014994849, + -0.00685567, + -0.020869376, + -0.017919771, + -0.012785732, + 0.025040783, + 0.0033599571, + 0.024004102, + -0.011724368, + -0.03830783, + 0.010089127, + -0.020178255, + -0.00951525, + -0.021153228, + 0.006152208, + -0.0014161803, + -0.010601297, + -0.04050461, + 0.016636262, + 0.010891321, + 0.0065101096, + -0.0041436385, + 0.010039762, + 0.01594514, + -0.022584835, + -0.014081583, + -0.013834755, + -0.0140569005, + -0.013513877, + 0.011175174, + -0.03418579, + -0.0018033929, + 0.00008282263, + 0.004393553, + -0.027348632, + -0.018055527, + 0.00847857, + -0.0024405199, + 0.020795327, + 0.0017200882, + -0.00968186, + -0.019215623, + 0.017253334, + -0.0030822747, + 0.0034432618, + 0.030656137, + -0.024522442, + 0.02082001, + 0.005535136, + -0.031569403, + 0.011070272, + -0.0015071984, + 0.00924991, + 0.018487478, + 0.02312786, + -0.017500162, + -0.006590329, + -0.016599238, + 0.0123661235, + 0.019647572, + -0.029890968, + -0.009286934, + 0.010095298, + -0.020289328, + 0.004779223, + -0.010514907, + 0.00056539226, + -0.03050804, + -0.015525532, + 0.020894058, + -0.008151521, + -0.009219056, + -0.007898522, + 0.0029295494, + -0.035469297, + -0.018055527, + 0.0250161, + 0.0053438437, + -0.027546095, + -0.0046156985, + -0.005896123, + 0.0012326014, + 0.031692818, + 0.02347342, + -0.033198476, + -0.026706876, + 0.023559809, + 0.000008370244, + 0.017092895, + -0.015463824, + -0.011835441, + -0.00745423, + -0.018610891, + -0.032951646, + 0.0167967, + -0.009743567, + -0.029150482, + 0.0025809037, + -0.008774764, + 0.009398007, + -0.018833037, + -0.008620496, + 0.022288641, + -0.021461764, + 0.0019391488, + 0.0022384287, + -0.009638665, + -0.0344573, + 0.020931082, + -0.00084307464, + 0.007293791, + -0.00736784, + -0.0066890605, + -0.005655465, + 0.012785732, + -0.00823174, + -0.008768593, + -0.010582785, + 0.004507711, + 0.006254025, + 0.02880492, + -0.019215623, + -0.018018503, + 0.027447363, + -0.012909146, + 0.011175174, + 0.02579361, + -0.02056084, + -0.024756929, + 0.0017000334, + 0.01054576, + 0.008281106, + -0.02406581, + -0.00720123, + -0.0317175, + 0.009206714, + -0.009953371, + -0.010101469, + 0.001460918, + -0.023707906, + -0.0044213207, + 0.0022785384, + 0.017524846, + 0.0137483645, + 0.023868345, + -0.028730873, + -0.007318474, + -0.0062509393, + -0.03102638, + 0.0008723856, + 0.0013297902, + -0.006701402, + -0.015821727, + 0.02665751, + -0.0067569385, + 0.001011998, + -0.014846752, + 0.020696595, + -0.0037949928, + -0.009089471, + -0.0039585168, + -0.004276309, + -0.02511483, + -0.017759332, + 0.008348985, + 0.019055184, + 0.0051463805, + 0.021918397, + -0.015537873, + -0.0072197425, + -0.021634545, + -0.009410348, + 0.007269108, + 0.002695062, + -0.006349671, + -0.035000324, + -0.00094334886, + 0.03699964, + 0.019561183, + -0.013847096, + 0.0007624696, + -0.0021875203, + -0.00075398484, + -0.039048318, + 0.007170377, + -0.0018280759, + -0.0008176204, + -0.013958169, + -0.0046588937, + -0.006272537, + -0.008367497, + 0.004810076, + 0.060522422, + 0.009058617, + 0.0031424393, + -0.025398685, + -0.03418579, + -0.0041498095, + 0.015179971, + -0.001009684, + -0.0023063067, + -0.0126746595, + -0.023448735, + 0.019993134, + -0.022905713, + -0.006374354, + 0.020523814, + 0.003119299, + 0.00066836615, + -0.01721631, + -0.01285978, + -0.024300296, + 0.03857934, + -0.008207058, + 0.02700307, + -0.00968186, + 0.016117921, + 0.02887897, + 0.002729001, + 0.0126746595, + -0.010638322, + 0.010144664, + 0.0044953697, + 0.026929023, + 0.0006228571, + 0.0015642776, + -0.0017231735, + -0.036456615, + 0.000027286153, + 0.011644149, + 0.015871093, + -0.0060565616, + 0.044700697, + -0.0012611409, + -0.04072675, + 0.02766951, + -0.0075961566, + -0.0006085873, + 0.024090491, + -0.0053932094, + -0.013575585, + -0.008095984, + 0.0005711773, + 0.01173671, + 0.018055527, + 0.00565855, + -0.025262928, + -0.0045601623, + -0.020782985, + 0.0075035957, + -0.033692133, + -0.0209064, + 0.014081583, + 0.013180658, + 0.015216996, + 0.0062355124, + 0.0067877923, + -0.017500162, + 0.017858064, + -0.0023541297, + 0.006368183, + -0.0011153576, + 0.0039369194, + 0.014587582, + -0.042355824, + -0.013020219, + 0.0028724703, + 0.0005954745, + -0.018018503, + -0.021227278, + 0.008632838, + 0.02031401, + 0.0004061105, + 0.041417874, + -0.016253676, + -0.03203838, + 0.014303729, + -0.0027274583, + -0.018314697, + -0.019092208, + -0.01714226 + ] + }, + { + "object": "embedding", + "index": 2, + "embedding": [ + 0.013982197, + -0.018476475, + -0.005729884, + -0.023803027, + 0.0031706425, + 0.009507126, + -0.044174526, + -0.0043758387, + 0.01791309, + -0.02065319, + 0.010851568, + 0.010934795, + -0.016222933, + 0.019359965, + -0.024520062, + -0.0053873714, + 0.03178005, + -0.0010819557, + 0.010729928, + -0.022381758, + -0.045480553, + 0.0045486954, + -0.020665996, + 0.017695418, + -0.016619865, + 0.0010731529, + 0.015685158, + -0.015185793, + 0.026453499, + 0.010755536, + 0.02481456, + -0.012765798, + 0.017285684, + -0.037337076, + -0.040947862, + 0.017093621, + -0.0021639115, + 0.010064109, + -0.0013468429, + -0.020627582, + 0.008495593, + 0.0055666305, + -0.003665205, + -0.0038092525, + -0.007996229, + 0.013559658, + 0.013918176, + 0.010256172, + -0.008854112, + 0.010320193, + -0.0048271874, + 0.030858146, + -0.0041229557, + -0.0043150187, + 0.01831002, + -0.025621224, + -0.00086028286, + 0.01782346, + -0.020947687, + -0.016709493, + 0.012714581, + -0.0020694805, + 0.005134488, + -0.0097312, + -0.0075928965, + 0.010204955, + -0.0059027406, + -0.004638325, + -0.0038860778, + 0.0057522915, + 0.02932164, + 0.029372858, + 0.00069662905, + 0.0151473805, + 0.0032106556, + 0.013726113, + -0.0042541986, + -0.0020390705, + -0.0048303884, + -0.017503355, + 0.0042894105, + -0.012977066, + -0.026171805, + -0.0008050647, + 0.027196143, + 0.011869502, + -0.002901754, + 0.0011355734, + -0.031088622, + -0.012035958, + -0.005256128, + 0.029424075, + 0.032471478, + -0.0012075971, + -0.013598071, + 0.016427802, + 0.022368954, + 0.020000177, + 0.005729884, + -0.029065557, + 0.0048976103, + 0.014545582, + -0.03836141, + 0.0026472704, + -0.036824908, + -0.015531506, + 0.015557115, + -0.012573734, + 0.027477834, + -0.03211296, + -0.020269064, + 0.0089885555, + 0.011082044, + -0.020461127, + -0.0070487177, + -0.020025784, + 0.017157642, + -0.0084315725, + -0.017861873, + -0.015697962, + 0.014558387, + 0.037337076, + 0.016824732, + -0.023226837, + 0.027247358, + 0.0114149535, + -0.01256093, + -0.013329183, + 0.0060243807, + -0.0002958973, + 0.011037229, + 0.007829774, + 0.01009612, + 0.017554572, + -0.0070295115, + 0.010179347, + -0.009058978, + 0.03157518, + 0.007855383, + -0.029961852, + 0.01523701, + 0.02834852, + -0.0064757294, + -0.0077337427, + -0.004628722, + 0.030550845, + 0.02025626, + -0.016466213, + 0.0021383031, + 0.00906538, + 0.0049616313, + -0.024507258, + 0.019897742, + 0.013546854, + 0.022983557, + 0.0033098883, + -0.011645429, + -0.0093662795, + -0.020115415, + -0.016094891, + -0.0067926333, + 0.0061332164, + 0.028655821, + 0.002460009, + 0.030730104, + 0.019718483, + 0.009711993, + 0.019001449, + 0.0012700176, + 0.0035115546, + -0.001566115, + 0.035877395, + -0.010569875, + 0.014929709, + 0.0047215526, + 0.010544267, + 0.012048761, + 0.003950099, + -0.014251086, + 0.0031978514, + -0.019001449, + -0.0023671784, + 0.013406008, + 0.005432186, + 0.0010955603, + -0.009756808, + 0.010441833, + -0.020858059, + 0.012208814, + -0.013149924, + 0.014609603, + 0.018348433, + 0.0051024775, + -0.01654304, + -0.6912225, + -0.040282045, + 0.0114789745, + -0.0017381716, + 0.0023895856, + 0.03779803, + 0.005845122, + 0.012580137, + 0.0074264416, + -0.026069371, + 0.0063572903, + 0.008860514, + 0.013092305, + -0.0029545715, + 0.007080728, + -0.030192327, + -0.0099872835, + 0.015749179, + -0.0035819777, + 0.014327911, + -0.009071783, + -0.004180575, + -0.028655821, + -0.0047919755, + 0.020153826, + 0.018258803, + 0.010998816, + -0.0097376015, + -0.0056914715, + 0.020691603, + -0.0045358916, + -0.0046095154, + -0.017951502, + -0.020128218, + 0.038335804, + 0.0019030257, + -0.015172989, + 0.008194694, + -0.008041044, + 0.025185881, + -0.0027897172, + 0.015774786, + -0.0015805197, + -0.014686429, + -0.010627494, + -0.005720281, + 0.0057010744, + -0.0014436747, + 0.033214122, + -0.00071423483, + 0.020819645, + 0.003068209, + 0.023700593, + -0.005480202, + 0.0148400795, + -0.0010651503, + 0.030192327, + 0.0151473805, + 0.0063092746, + -0.007195966, + -0.019564833, + 0.012733787, + -0.029577725, + -0.009654375, + -0.012516115, + 0.00413576, + -0.032164175, + -0.017631397, + -0.0015269021, + -0.0019542426, + 0.006078799, + 0.007458452, + -0.011178075, + 0.029859418, + 0.01651743, + 0.0022791494, + 0.026120588, + -0.01788748, + 0.021395834, + 0.012554528, + 0.0018069941, + 0.003918088, + -0.017324096, + -0.009142206, + 0.027759528, + -0.021254988, + -0.029526507, + -0.02131901, + 0.019475203, + -0.011395747, + 0.033956766, + 0.019641658, + 0.00074744574, + -0.0029673756, + -0.006274063, + 0.014635212, + -0.014443149, + 0.0005897939, + 0.0031306294, + -0.0058003073, + 0.014468757, + -0.035288405, + -0.0016821531, + -0.0015725171, + 0.039846703, + 0.0045230873, + -0.026146198, + 0.033470206, + 0.019808114, + -0.017503355, + 0.019180706, + -0.011747863, + -0.0246353, + 0.0062484546, + 0.0101729445, + -0.024750538, + 0.046223197, + 0.009084587, + 0.011594213, + -0.003205854, + 0.009379084, + 0.0065525547, + -0.00052177155, + -0.014622408, + 0.0006009976, + -0.004820785, + 0.00044174524, + -0.016107697, + -0.027913177, + -0.0037356282, + 0.015531506, + -0.009475116, + 0.009968078, + 0.0053809695, + 0.0030345977, + -0.003841263, + 0.005976365, + -0.017938698, + 0.02578768, + -0.029961852, + -0.025736462, + -0.01073633, + -0.013879764, + -0.013585267, + -0.00032290618, + -0.009103794, + -0.03093497, + -0.0077721556, + -0.019231923, + 0.021447051, + -0.033700682, + -0.021639114, + -0.017144836, + 0.0021879193, + -0.006405306, + -0.0040877443, + -0.022817103, + 0.003543565, + -0.0017749836, + 0.02530112, + 0.008457181, + 0.003469941, + -0.01548029, + -0.00013364395, + -0.00906538, + -0.040077176, + -0.009411095, + 0.037337076, + -0.014481561, + -0.022343347, + -0.006213243, + -0.002821728, + 0.0007470456, + -0.023700593, + -0.024891384, + -0.011773471, + -0.025749266, + -0.023303661, + 0.00018245999, + -0.016248543, + 0.014929709, + 0.010268976, + 0.005598641, + -0.01921912, + 0.035288405, + -0.0067862314, + 0.019795308, + 0.03567253, + -0.0020822845, + 0.01937277, + -0.008405964, + -0.0072791935, + -0.007925806, + -0.011382943, + 0.016094891, + -0.0023031572, + -0.0036524008, + 0.006181232, + 0.0006033984, + -0.00037952478, + 0.013559658, + -0.0044174525, + 0.019078273, + -0.02040991, + 0.01970568, + -0.013265162, + 0.01256093, + -0.002040671, + 0.015505899, + 0.03613348, + 0.002983381, + -0.02259943, + 0.0027513045, + 0.0018566104, + 0.017785048, + -0.00103394, + -0.012330454, + 0.0147120375, + -0.010864372, + -0.014699233, + -0.005419382, + 0.0085532125, + 0.043841615, + -0.012746591, + -0.014558387, + -0.013341987, + 0.03925771, + 0.011357334, + 0.0023879851, + -0.008137075, + -0.028758256, + -0.0025624426, + -0.01243929, + 0.00018986243, + -0.016824732, + -0.0049168165, + 0.00927665, + -0.03129349, + 0.014430345, + 0.011440562, + 0.010640299, + 0.0422795, + 0.032036133, + -0.017925894, + 0.022548214, + -0.020448323, + 0.026299847, + 0.015621136, + -0.0206788, + 0.01426389, + -0.018911818, + -0.010185749, + -0.017644202, + 0.015672352, + 0.022676256, + 0.0028569393, + 0.039488185, + 0.003354703, + 0.0270681, + 0.01749055, + -0.016389389, + -0.011101251, + 0.01475045, + -0.017349705, + 0.003841263, + -0.0040557333, + -0.008700461, + 0.021639114, + -0.007311204, + -0.013393204, + -0.004823986, + 0.00094911206, + 0.016978383, + -0.003908485, + 0.0018149968, + -0.022215305, + -0.011626223, + 0.0031338304, + 0.022164088, + 0.010845166, + 0.00095231313, + -0.021088533, + 0.009199825, + 0.012087175, + 0.0089885555, + -0.021178164, + -0.025646832, + 0.021459855, + -0.0062452536, + 0.011216488, + 0.023162816, + 0.023777418, + 0.01402061, + 0.003482745, + -0.0008050647, + -0.02536514, + 0.0047759702, + -0.010134532, + 0.0033995179, + -0.002375181, + -0.00939829, + -0.015685158, + -0.026555931, + 0.0016949573, + 0.0011403749, + 0.027733918, + -0.009468714, + 0.006837448, + -0.02609498, + -0.011421355, + 0.008745275, + -0.0058131116, + 0.0014132647, + 0.0032490683, + -0.019027056, + -0.0012388073, + -0.029065557, + -0.010550669, + 0.024788952, + 0.022061653, + 0.016875949, + -0.01928314, + -0.01158781, + -0.0032490683, + 0.0684257, + 0.0055826358, + -0.009161413, + 0.010717124, + 0.010192151, + -0.016005263, + -0.016261347, + 0.0043182196, + -0.00802824, + -0.0028265293, + 0.0020038588, + 0.0015381058, + 0.007375225, + 0.0064149094, + -0.00031870478, + -0.014724841, + 0.008706863, + 0.00018716154, + 0.030345978, + -0.02162631, + -0.0047855736, + 0.010134532, + -0.009455909, + -0.0024664109, + -0.0061204126, + 0.0077145365, + 0.022189695, + 0.016402192, + 0.015493094, + -0.022176892, + 0.008642842, + 0.020537952, + 0.00650774, + -0.0121639995, + -0.009558342, + -0.01289384, + -0.0032202587, + 0.0047951764, + 0.00696549, + -0.02122938, + 0.015992459, + 0.0040877443, + 0.0065173428, + -0.021050122, + -0.0066197766, + 0.007291998, + -0.011549397, + 0.013457225, + -0.020064197, + 0.0030586056, + 0.022727473, + -0.010192151, + -0.01265056, + -0.007074326, + 0.011703048, + 0.0149041, + -0.012624951, + -0.008758079, + -0.008444376, + -0.018476475, + 0.004571103, + -0.017311292, + -0.008258715, + -0.0031050208, + -0.0093662795, + -0.013482833, + -0.004468669, + 0.004145363, + -0.011363736, + 0.0134700285, + 0.0013700505, + -0.01766981, + -0.013802938, + -0.0013628481, + 0.030909363, + 0.02627424, + 0.006779829, + -0.022868318, + 0.010499452, + 0.046760976, + -0.0020294674, + -0.0076377112, + -0.0142126735, + -0.0020134621, + 0.005483403, + 0.0008874918, + 0.033290945, + -0.013598071, + 0.003409121, + 0.002317562, + 0.031370316, + 0.0057522915, + 0.0072279763, + -0.0017877878, + -0.007381627, + -0.012087175, + 0.022164088, + 0.004820785, + -0.014302302, + -0.01548029, + 0.0033258935, + -0.023495726, + -0.0058131116, + 0.0009211029, + 0.007624907, + 0.01256093, + 0.025006622, + 0.0056914715, + -0.021254988, + 0.014635212, + 0.026812015, + -0.004551897, + 0.0024584082, + -0.008457181, + 0.0029177594, + 0.010550669, + -0.0016565446, + 0.013457225, + 0.0022599432, + -0.029654551, + 0.005044859, + -0.04437939, + 0.02366218, + 0.0010467442, + -0.0033418988, + -0.001234806, + 0.01161982, + -0.021088533, + -0.0038092525, + -0.00027769132, + -0.013943785, + 0.019628854, + -0.028630214, + -0.02658154, + -0.031703223, + -0.018937428, + 0.009948871, + 0.0069270777, + -0.0023975882, + -0.015006534, + -0.025083447, + 0.017785048, + 0.018258803, + -0.00016935568, + -0.031037405, + -0.022240913, + -0.0065813637, + 0.009539137, + 0.0028297305, + 0.012554528, + -0.0041709715, + 0.013572463, + -0.012945056, + 0.02186959, + 0.0034635388, + -0.012381671, + -0.026043763, + -0.017695418, + 0.018975839, + 0.010576277, + 0.033751898, + -0.006017979, + 0.0011875905, + 0.008886122, + -0.006779829, + -0.008169086, + -0.007925806, + -0.0134700285, + -0.019411182, + 0.013495637, + 0.014724841, + 0.0051568956, + 0.017208857, + -0.011818286, + 0.009654375, + 0.0051985094, + -0.0055346196, + -0.0143407155, + -0.028425347, + -0.022855515, + 0.0014692831, + 0.0015725171, + -0.019846525, + -0.012817014, + 0.010000088, + -0.0077145365, + 0.023623768, + 0.012938654, + 0.0025352335, + -0.0076953303, + 0.028220478, + 0.0068694586, + 0.03014111, + -0.009379084, + 0.0013644486, + 0.00019456397, + -0.025698049, + -0.0009363079, + 0.009097391, + 0.0130346855, + 0.013508442, + 0.0062068407, + 0.0019030257, + -0.020781232, + 0.016235739, + 0.017785048, + 0.021754352, + 0.0147760585, + -0.0026392678, + -0.023879852, + -0.023777418, + -0.03516036, + -0.024584083, + -0.032317825, + 0.003297084, + 0.011639027, + -0.0343665, + 0.021293402, + -0.0013892568, + -0.034929886, + 0.014814471, + 0.010140934, + 0.024007894, + -0.011735058, + 0.005621048, + 0.005496207, + -0.011062837, + -0.013329183, + -0.0008022638, + -0.016645472, + -0.004206183, + 0.033956766, + 0.01021776, + -0.003540364, + 0.017592985, + 0.005685069, + 0.00022887526, + 0.025915721, + -0.017708223, + -0.018079545, + 0.0075352774, + 0.015493094, + -0.021754352, + 0.019987373, + -0.014135848, + 0.013713309, + -0.024763342, + -0.029270424, + -0.004990441, + -0.00024067913, + -0.018604517, + 0.003260272, + -0.038207762, + 0.0041293576, + 0.006363692, + -0.007311204, + -0.0075288755, + -0.0048431926, + -0.01766981, + -0.018706951, + -0.006280465, + 0.0054065776, + -0.012016751, + 0.022663452, + 0.0018117958, + 0.0024744135, + -0.031728834, + -0.0028761458, + 0.004574304, + 0.027426617, + -0.0016309363, + -0.006219645, + -0.010749134, + 0.018002719, + 0.0298082, + -0.0058003073, + -0.0054513924, + -0.001447676, + -0.0054673976, + 0.0058195135, + 0.017746635, + -0.012644158, + -0.008930936, + 0.0139053725, + -0.018899014, + 0.005185705, + -0.015697962, + -0.019091077, + -0.006040386, + -0.01450717, + -0.014251086, + -0.0012083973, + 0.011536594, + 0.0027865162, + 0.0067350143, + -0.02503223, + 0.031242272, + 0.011318922, + -0.021843983, + 0.015377856, + -0.0051024775, + 0.009961676, + 0.0026728788, + 0.015224205, + 0.0059443545, + -0.019718483, + 0.03449454, + -0.009980882, + -0.028066829, + -0.015493094, + 0.006411708, + -0.008930936, + -0.0005221717, + 0.0000951813, + 0.002773712, + -0.013239553, + 0.02624863, + -0.0014812871, + -0.0015861215, + -0.0040013157, + -0.0234189, + -0.015313835, + 0.0026312652, + -0.02019224, + -0.0025112256, + 0.014878492, + -0.0018838194, + 0.008783688, + -0.040128395, + -0.0059443545, + -0.03129349, + 0.01037141, + -0.009660777, + -0.012176803, + -0.027247358, + 0.0011203684, + -0.008527604, + -0.004218987, + -0.009270248, + 0.0013148324, + -0.0058835344, + 0.012304846, + -0.007291998, + 0.014443149, + 0.0025832495, + -0.0008882921, + -0.012266433, + -0.0014036616, + -0.015249814, + 0.0041901777, + 0.0045839073, + -0.017132033, + 0.014161456, + -0.031395923, + -0.030345978, + 0.007266389, + -0.010198553, + -0.0011355734, + 0.011325324, + 0.014545582, + 0.03288121, + -0.0029545715, + -0.0016469415, + 0.022420172, + -0.0016901557, + -0.00083867577, + -0.038668714, + -0.018489279, + 0.0032426661, + -0.017785048, + 0.0041293576, + -0.0034763431, + -0.009942469, + -0.022522606, + 0.008277922, + 0.0034219252, + 0.007516071, + -0.0081818905, + 0.0069718924, + 0.011703048, + -0.001241208, + 0.023098795, + 0.032343436, + 0.013700505, + 0.005662662, + -0.010992414, + -0.010441833, + 0.010742732, + 0.036824908, + -0.0007582493, + -0.00068542536, + -0.0034219252, + -0.011805481, + 0.00988485, + -0.010723526, + 0.014238281, + 0.0054481914, + 0.011094848, + 0.005185705, + -0.0090525765, + -0.0049616313, + 0.017388117, + 0.0014820873, + -0.007202368, + -0.018758168, + 0.013764526, + -0.014443149, + -0.008476387, + 0.009142206, + -0.024366412, + -0.0065429513, + -0.021908004, + 0.00915501, + -0.042049024, + -0.0112292925, + -0.023610963, + -0.004641526, + -0.033828724, + 0.024609692, + 0.01718325, + -0.0170296, + -0.006178031, + -0.023982285, + -0.003902083, + -0.0021078931, + -0.013828547, + -0.02326525, + -0.038694322, + -0.03259952, + -0.0058419206, + 0.010544267, + -0.017119229, + -0.0060819997, + -0.0040589347, + 0.008521202, + 0.024379216, + 0.23068064, + 0.010909187, + -0.0053201495, + 0.03257391, + 0.0033611052, + 0.04962912, + 0.022970753, + -0.008540408, + 0.013201141, + 0.020909276, + 0.0037964482, + 0.0025256304, + 0.009379084, + 0.0043150187, + 0.0061428198, + -0.0041773734, + -0.028092436, + -0.0008682855, + -0.015800396, + 0.010019294, + 0.014635212, + -0.017797852, + 0.011280509, + 0.00383166, + 0.034725018, + -0.001922232, + -0.018169174, + -0.0018197984, + 0.023073187, + 0.0054705986, + -0.0062356503, + -0.011472573, + 0.0033354966, + -0.009097391, + -0.0070359134, + -0.005502609, + -0.01928314, + 0.008201096, + 0.020934884, + 0.026069371, + 0.012138391, + 0.012932252, + -0.032138567, + -0.021818373, + -0.0041261567, + 0.02348292, + -0.009404692, + -0.0061908355, + 0.019193511, + 0.0066261785, + -0.017759439, + -0.001922232, + 0.023777418, + 0.02350853, + 0.0011091647, + 0.023226837, + 0.022061653, + -0.011690244, + 0.029526507, + -0.014891297, + -0.014071827, + 0.023457313, + -0.018668538, + 0.0031882483, + 0.0077081346, + -0.0071575535, + -0.019808114, + 0.009475116, + 0.013457225, + -0.010569875, + 0.017746635, + 0.010992414, + 0.019628854, + 0.0056402544, + -0.006286867, + -0.003236264, + 0.024840167, + 0.008162684, + 0.026940057, + -0.017900286, + -0.0037420304, + -0.014404736, + -0.014404736, + 0.022868318, + -0.018719755, + -0.022804298, + 0.0076313093, + 0.0020566762, + 0.03569814, + -0.008674853, + -0.009263846, + -0.009583951, + 0.00976321, + -0.010032099, + 0.006238851, + 0.024776146, + -0.0134700285, + 0.022151284, + -0.02368779, + 0.0031738435, + -0.036517605, + -0.01700399, + 0.017900286, + -0.010787547, + -0.013649288, + 0.011114054, + 0.00480478, + 0.015531506, + 0.038873583, + -0.008828503, + 0.013457225, + -0.005112081, + 0.012003947, + -0.0023223637, + 0.01833563, + -0.00136845, + 0.0033835126, + -0.012618549, + -0.018450867, + -0.0139053725, + -0.00018806184, + -0.022036046, + -0.01441754, + 0.009628766, + -0.015710765, + -0.0037388294, + -0.0040877443, + 0.020077001, + 0.00031870478, + -0.040282045, + 0.03047402, + -0.0020022583, + 0.030909363, + -0.0023719799, + -0.009289455, + -0.00086748524, + -0.009526332, + -0.005243324, + 0.011504583, + -0.01012813, + -0.008636439, + -0.008918133, + 0.012445692, + -0.013738917, + 0.0056466567, + 0.0077977637, + 0.005105679, + -0.012887438, + -0.013585267, + -0.017119229, + 0.0010091318, + -0.02147266, + -0.00059219473, + 0.003473142, + 0.016146109, + -0.013111511, + -0.026376672, + -0.007618505, + -0.016389389, + 0.019539224, + -0.006824644, + 0.025864504, + -0.006472528, + -0.014225477, + -0.008905328, + 0.0014468757, + -0.16409875, + 0.024071915, + 0.004164569, + -0.004033326, + -0.013828547, + -0.0011675839, + 0.02578768, + 0.018233195, + -0.0010171344, + 0.028322913, + 0.015160184, + -0.008649244, + -0.0520107, + -0.024123132, + 0.008924535, + 0.019001449, + -0.0042285905, + -0.015224205, + 0.026402282, + 0.009961676, + -0.0029785794, + -0.029142382, + 0.012215217, + -0.0026408683, + 0.00465433, + 0.00016485421, + -0.00918702, + 0.030243544, + -0.0017877878, + -0.007080728, + -0.00465433, + -0.0052721333, + 0.0028057224, + 0.036287133, + 0.0072855954, + 0.005067266, + 0.00013964591, + 0.005172901, + 0.0010923592, + 0.003972506, + -0.008137075, + 0.024929797, + -0.006152423, + 0.009628766, + -0.019987373, + 0.022970753, + 0.03505793, + 0.021101339, + -0.0015829204, + -0.0073048016, + 0.008681254, + -0.03157518, + -0.023828635, + -0.008649244, + 0.01784907, + 0.0052049113, + 0.018566104, + 0.009808025, + -0.003850866, + 0.022586627, + 0.0036299936, + -0.0267608, + -0.0009651173, + 0.0026200614, + -0.0011043631, + -0.012810612, + 0.0030714099, + 0.008258715, + -0.031856876, + 0.014788862, + -0.013041088, + -0.0066005704, + 0.02323964, + -0.017349705, + 0.012477702, + 0.009910459, + -0.014571191, + 0.012035958, + -0.005377768, + -0.010838764, + 0.013329183, + 0.02618461, + 0.0016773515, + -0.014519975, + -0.016799124, + 0.014865688, + -0.013687701, + 0.005672265, + -0.006261259, + -0.028246088, + 0.00814988, + -0.039949134, + 0.0040013157, + -0.03877115, + 0.016094891, + 0.0133804, + -0.010448235, + -0.011158869, + -0.0011883908, + -0.021088533, + 0.011575006, + -0.010883578, + -0.012112782, + 0.01809235, + 0.024097523, + 0.024660908, + -0.00043574328, + 0.010397019, + 0.027042491, + 0.008233107, + -0.014699233, + 0.031523965, + 0.0142126735, + 0.03323973, + 0.014545582, + -0.00028869492, + 0.0083035305, + -0.034801845, + -0.0027080905, + 0.006779829, + 0.036773693, + 0.012170401, + -0.009692787, + 0.009219031, + -0.0030522035, + -0.024673713, + -0.095365755, + -0.022919536, + 0.012432888, + 0.01475045, + -0.0013924579, + 0.0151473805, + 0.010185749, + 0.03743951, + 0.00018466072, + 0.02934725, + -0.008322736, + -0.017349705, + -0.015019339, + 0.002871344, + 0.008476387, + -0.013201141, + 0.007996229, + -0.025454769, + -0.024981014, + 0.0053297523, + -0.004010919, + -0.012420083, + 0.0022039246, + -0.004270204, + -0.01629976, + -0.020269064, + -0.03920649, + 0.019936156, + 0.00498724, + -0.00471515, + 0.0152114015, + -0.0072407806, + 0.0048559965, + -0.010768341, + -0.017196054, + 0.013790134, + -0.014827276, + -0.00037292263, + 0.006101206, + -0.03144714, + 0.010268976, + 0.012003947, + 0.006510941, + -0.028578997, + -0.013508442, + 0.0040269243, + -0.013713309, + -0.011971937, + -0.009353476, + -0.01937277, + 0.010883578, + 0.037004165, + -0.0033835126, + -0.011178075, + 0.037516337, + -0.020333085, + 0.021280598, + 0.0206788, + -0.009455909, + 0.004817584, + 0.011088446, + 0.012368867, + 0.008508397, + 0.02551879, + -0.0053809695, + -0.015390661, + -0.027324185, + 0.003533962, + 0.012176803, + -0.041895375, + -0.0005985968, + 0.02092208, + -0.018745363, + 0.013226749, + -0.009603158, + -0.001101162, + -0.020755624, + -0.011523789, + 0.009558342, + -0.00032050538, + -0.026018154, + -0.020614779, + -0.006277264, + -0.02366218, + 0.0070423153, + 0.022253716, + -0.013341987, + -0.004388643, + 0.028604604, + -0.014494366, + 0.0005645856, + 0.04312458, + 0.013802938, + -0.012260031, + -0.0075352774, + 0.011901514, + 0.0122280205, + 0.018284412, + 0.00903337, + -0.019398378, + -0.021664724, + -0.0026504714, + -0.049321815, + 0.010115326, + -0.002378382, + -0.023252446, + -0.0032698752, + 0.009878448, + -0.01578759, + -0.004033326, + -0.005256128, + -0.00535216, + -0.0019750495, + -0.002357575, + -0.0050224513, + 0.00065141416, + -0.01402061, + 0.0027016883, + 0.018002719, + -0.0050288537, + 0.02722175, + 0.00053697656, + -0.0019126289, + 0.014571191, + 0.011101251, + 0.0007462454, + -0.016350977, + 0.01742653, + -0.03096058, + -0.01523701, + -0.016607061, + -0.014468757, + -0.0065493532, + -0.018194782, + 0.015006534, + 0.039283317, + -0.019257532, + -0.01903986, + -0.006155624, + 0.030243544, + 0.008822101, + -0.020179436, + -0.013687701, + -0.043508705, + 0.016632669, + -0.013303574, + -0.016325368, + 0.0188606, + -0.0016453409, + -0.012727384, + 0.005854725, + -0.0013548455, + 0.021050122, + 0.027119316, + -0.0002262744, + -0.009122999, + 0.00036051855, + -0.017144836, + 0.030089894, + 0.008834905, + 0.011120456, + -0.03190809, + 0.016607061, + -0.012490507, + -0.00034311283, + 0.011939926, + 0.008495593, + 0.008521202, + -0.017068012, + -0.014699233, + 0.0075736903, + 0.007618505, + -0.008265117, + -0.00918702, + 0.040256437, + 0.008591625, + 0.02323964, + 0.0109476, + -0.011991142, + 0.0037964482, + -0.0013764526, + 0.008124271, + 0.013239553, + -0.0077721556, + -0.019731287, + 0.02691445, + 0.020422716, + 0.031984918, + -0.038310196, + -0.0009251042, + 0.005364964, + -0.005006446, + -0.031370316, + -0.004567902, + -0.007701732, + -0.002986582, + -0.00413576, + 0.0041901777, + -0.0036620041, + 0.0020870862, + 0.015979653, + 0.035390835, + 0.013802938, + -0.0062100417, + -0.0079066, + -0.026530324, + -0.0088669155, + 0.0077209384, + -0.007804166, + -0.0036363956, + -0.012234422, + 0.0076313093, + 0.007080728, + -0.021575093, + -0.0007982625, + 0.022010436, + -0.0017189652, + -0.005726683, + -0.033316553, + -0.028809473, + -0.018783776, + 0.0065557556, + 0.0013556457, + 0.011722255, + -0.011658234, + -0.010397019, + 0.022253716, + 0.027016884, + 0.040154003, + -0.031523965, + -0.0037388294, + 0.018719755, + 0.011542995, + -0.0032506688, + 0.008469985, + -0.01937277, + -0.024443237, + -0.0075096693, + -0.019103881, + 0.02609498, + 0.016235739, + 0.054084983, + -0.004427056, + -0.03577496, + 0.017055208, + 0.001292425, + 0.007842579, + 0.013802938, + 0.0011843895, + -0.014481561, + -0.013713309, + 0.002469612, + 0.0009987283, + 0.021203771, + 0.0033451, + -0.016837535, + -0.0022279324, + -0.01912949, + 0.020000177, + -0.031088622, + -0.013028284, + 0.022304934, + 0.0052049113, + 0.012356062, + 0.0034571367, + -0.016184522, + -0.007151151, + -0.006818242, + 0.012388073, + -0.005006446, + -0.020909276, + 0.017260075, + -0.022420172, + -0.023201229, + -0.00021547085, + 0.01466082, + -0.018630126, + -0.015685158, + -0.025505986, + -0.006213243, + 0.014583996, + -0.00046975445, + 0.020819645, + -0.015838807, + -0.027452227, + -0.011542995, + -0.010064109, + -0.020025784, + 0.005979566, + -0.023841439 + ] + }, + { + "object": "embedding", + "index": 3, + "embedding": [ + 0.015776122, + -0.007275396, + 0.0065414747, + -0.021902772, + -0.0065606204, + 0.0037717186, + -0.018214017, + -0.033211544, + 0.011832092, + -0.017550297, + 0.019464875, + 0.009681382, + -0.004658806, + -0.0013378114, + -0.016899342, + -0.00013262441, + 0.03305838, + 0.011570432, + 0.026446704, + -0.01652919, + -0.022221867, + 0.018214017, + -0.008934697, + 0.011653397, + -0.0208689, + -0.010172791, + 0.008028463, + -0.016656827, + 0.0024267274, + 0.015482553, + 0.010530178, + -0.018226782, + 0.012234153, + -0.025004387, + -0.035662204, + 0.015571901, + 0.0044737305, + -0.003557924, + 0.017014217, + -0.018635225, + -0.00065853505, + 0.009834548, + 0.003296265, + -0.007843387, + -0.008992135, + 0.012093751, + 0.019503167, + 0.00728816, + -0.01758859, + 0.011672543, + 0.0035898336, + 0.01914578, + -0.018111907, + -0.018775627, + 0.011142843, + -0.035253763, + 0.0039312667, + 0.017626882, + 0.005724588, + -0.008168866, + -0.012572395, + -0.016886577, + 0.0041227243, + -0.014001947, + 0.0044131023, + -0.0009174019, + -0.009579271, + 0.004349283, + 0.0002730268, + 0.0054725017, + 0.021290107, + 0.0379597, + 0.0063659716, + 0.01937553, + 0.025080971, + 0.009247411, + -0.013759433, + 0.023345087, + -0.004432248, + -0.003154267, + 0.0009947828, + -0.008724093, + -0.030786414, + -0.0048024, + 0.01441039, + -0.0017039743, + -0.009623945, + 0.004326946, + -0.034998484, + -0.0030425834, + -0.011232191, + 0.03070983, + 0.026650924, + -0.012029931, + 0.0006034909, + 0.014780542, + 0.011238572, + 0.029739777, + 0.015712302, + -0.03530482, + 0.014933708, + 0.004524786, + -0.04240152, + 0.002988337, + -0.024723582, + -0.020588094, + 0.002514479, + 0.004023805, + 0.026165899, + -0.020626387, + -0.022209104, + 0.02391946, + 0.046664644, + -0.023064282, + -0.0019257463, + -0.021073122, + 0.012840436, + -0.028310226, + -0.017971504, + -0.005960719, + 0.006480846, + 0.051106468, + 0.017933212, + -0.015201748, + 0.03706623, + -0.0000713978, + -0.008915551, + -0.028948419, + -0.0041993074, + 0.01569954, + -0.0063627805, + 0.017307784, + 0.0020741262, + 0.013504156, + 0.0073264516, + -0.0009923895, + -0.014423153, + 0.02726359, + -0.0059639104, + -0.01941382, + 0.0108620385, + 0.03229255, + -0.016056927, + 0.003905739, + -0.0065414747, + 0.03497296, + 0.015954817, + -0.0040269955, + -0.020396637, + -0.0055841855, + 0.0032611643, + -0.011181135, + 0.0031813902, + -0.0036121702, + 0.015405971, + 0.0052236067, + -0.0071413754, + 0.0053065717, + -0.027212534, + 0.0020055203, + -0.019464875, + -0.006420218, + 0.030097164, + -0.011876765, + 0.04352474, + 0.027799672, + 0.001588302, + -0.0028335752, + -0.016273912, + -0.0023230212, + 0.0007307306, + 0.025183082, + -0.012974456, + 0.032343604, + -0.017563062, + 0.012183097, + 0.007792332, + -0.0018348038, + -0.016337732, + 0.004320564, + -0.024940569, + -0.0033281746, + 0.016171802, + 0.004598178, + 0.0060245385, + -0.005089586, + 0.025489414, + -0.008602837, + 0.014895416, + -0.004853455, + 0.02375353, + 0.025999969, + -0.021583674, + -0.03351788, + -0.6812834, + -0.04395871, + 0.02003925, + -0.0035898336, + 0.0017981078, + 0.024685292, + 0.0067329323, + 0.015367678, + 0.005711824, + -0.01629944, + 0.011812946, + 0.0054405923, + 0.011104552, + -0.013555212, + -0.0060181567, + -0.022451617, + -0.0033600843, + 0.022221867, + -0.0021044402, + -0.0154697895, + 0.0006058841, + 0.006930772, + -0.01765241, + -0.0116916895, + 0.021992119, + 0.009030426, + 0.01746095, + -0.0006952311, + -0.01742266, + -0.0018332084, + -0.016822757, + 0.015112402, + -0.020779552, + -0.013006366, + 0.046894394, + -0.011410885, + -0.007039265, + 0.024723582, + 0.008832586, + 0.02637012, + -0.009757966, + -0.0017598162, + 0.012087368, + -0.030939579, + -0.013810488, + 0.010664199, + 0.015150693, + -0.006662731, + 0.03216491, + 0.001381687, + 0.01947764, + -0.031884104, + 0.005105541, + 0.009987715, + 0.007913589, + 0.0015372465, + 0.042350464, + 0.00076064584, + 0.0009461206, + 0.007275396, + 0.007103084, + 0.0021762368, + -0.0046619973, + -0.016184565, + -0.016618537, + -0.0009070313, + -0.038240504, + -0.01590376, + -0.018392712, + -0.0007746063, + -0.005290617, + 0.004151443, + -0.015814414, + 0.023855641, + 0.02024347, + -0.0051406417, + 0.030786414, + -0.009004898, + 0.00021519058, + -0.002160282, + 0.011091788, + -0.014448681, + -0.031118274, + -0.017282257, + 0.029688722, + -0.021711314, + -0.016248384, + -0.025349012, + 0.01606969, + -0.0045662685, + 0.025055444, + -0.0013354181, + -0.01606969, + -0.008085901, + -0.013810488, + 0.036096174, + 0.0021937871, + 0.002994719, + 0.0034781499, + 0.0059351916, + -0.0026054215, + -0.015993107, + -0.004515213, + -0.000008874867, + 0.02626801, + -0.012170333, + -0.027314644, + 0.028437864, + 0.011123697, + -0.015916524, + 0.025055444, + -0.01109817, + -0.00990475, + 0.017639644, + 0.011915057, + -0.027850727, + 0.04819631, + 0.0024458733, + 0.01868628, + -0.008628365, + 0.00659253, + 0.024774639, + -0.009151682, + -0.008309268, + -0.0017566252, + -0.013172296, + -0.008934697, + -0.012406465, + -0.04418846, + 0.0013856757, + 0.0032260637, + 0.00970691, + 0.016835522, + 0.006752078, + 0.008596455, + 0.0036313161, + 0.010976913, + -0.021660259, + 0.024455542, + -0.0058266986, + -0.0112768635, + -0.0010426472, + -0.02603826, + 0.01351692, + 0.0033632752, + -0.03425818, + -0.03461557, + -0.0061234585, + -0.012336263, + 0.015329387, + -0.023779057, + -0.0123235, + -0.03928714, + 0.009923896, + 0.015661247, + -0.01646537, + -0.022106992, + -0.0054565473, + -0.013338226, + 0.029790832, + 0.0166313, + 0.0011607129, + 0.0018092762, + -0.00075147185, + -0.01046636, + -0.021673022, + -0.008296505, + 0.04130383, + -0.00070959044, + -0.026421174, + -0.021162467, + 0.0010290856, + -0.003902548, + -0.00821354, + -0.0151379295, + -0.019898847, + -0.0062830066, + -0.015048582, + 0.0034015668, + -0.009445251, + 0.01848206, + 0.0170908, + 0.009949423, + -0.017333312, + 0.047430478, + 0.0069818273, + 0.01652919, + 0.0028511256, + 0.001578729, + -0.0018236354, + -0.012476666, + -0.01026852, + 0.0029197314, + -0.009260175, + 0.009898368, + 0.012042695, + 0.010638671, + 0.011244955, + 0.0023708856, + -0.0022400562, + 0.009521835, + -0.0113598285, + 0.01752477, + -0.014257223, + 0.00606283, + -0.026880674, + 0.017882157, + -0.010638671, + 0.00057198014, + 0.026395647, + 0.0043652374, + -0.024021572, + -0.0032005361, + -0.007613638, + 0.01613351, + -0.005884136, + -0.024276849, + 0.0029532365, + 0.002067744, + -0.012272445, + 0.0011591173, + 0.014767778, + 0.023523781, + -0.014129585, + -0.0037525727, + 0.0016337732, + 0.032343604, + 0.017614117, + -0.0070647923, + -0.018124672, + -0.023000462, + -0.0050544855, + -0.0120235495, + 0.010670581, + -0.032547824, + -0.0061234585, + 0.005724588, + -0.03203727, + 0.022234632, + 0.011934202, + -0.01129601, + 0.03515165, + 0.025591524, + 0.0048885555, + 0.003899357, + -0.0014000351, + 0.01636326, + 0.01165978, + -0.017805574, + 0.006669113, + -0.012527722, + 0.009426105, + -0.003385612, + 0.015597428, + 0.03926161, + -0.00837947, + 0.03670884, + 0.0015555945, + 0.017180147, + 0.023370614, + -0.026089314, + -0.0063053435, + 0.0058554173, + -0.0057596886, + 0.013038276, + -0.0008479985, + -0.005469311, + -0.0017837484, + 0.005105541, + -0.0093878135, + -0.017397132, + -0.0018348038, + 0.028744197, + -0.007281778, + 0.026778564, + -0.010453596, + -0.0053065717, + -0.0043460918, + 0.030811941, + 0.011404502, + -0.008060373, + -0.026063787, + 0.014793306, + -0.0011942179, + -0.0048119724, + -0.03014822, + -0.023038754, + 0.017767282, + -0.00062183896, + 0.009891986, + 0.00837947, + 0.009560126, + 0.029178167, + -0.0060851667, + 0.0076200203, + -0.0257064, + 0.0057564974, + 0.007881679, + 0.016567482, + 0.0023182346, + -0.0045694592, + -0.01825231, + -0.032088324, + -0.015890997, + 0.011876765, + 0.009828167, + -0.006783988, + 0.008385851, + -0.010096207, + -0.028718669, + -0.011468322, + -0.00058434514, + 0.0007937521, + -0.013721142, + -0.0054054917, + -0.002332594, + -0.029254751, + 0.004499258, + 0.034360293, + 0.02070297, + 0.0051853154, + -0.010108971, + -0.012042695, + -0.008838968, + 0.07724684, + 0.02497886, + 0.008053991, + 0.010108971, + -0.0027841155, + -0.011564051, + -0.028565502, + 0.011978876, + -0.013223352, + -0.0065542385, + 0.016618537, + -0.026051024, + 0.0017135473, + 0.0044801123, + 0.005089586, + -0.0066372035, + 0.007039265, + -0.0012899468, + 0.03382421, + -0.02014136, + 0.006088358, + 0.0017917259, + -0.014014711, + 0.012336263, + 0.003822774, + -0.0064457455, + 0.007556201, + -0.010211082, + 0.015712302, + -0.011512995, + 0.009036807, + 0.009732437, + -0.0075944923, + -0.006579766, + -0.017626882, + 0.002431514, + -0.0017837484, + 0.005625668, + 0.010153645, + -0.014703958, + 0.03607065, + 0.0044896854, + 0.012827672, + -0.0068797166, + -0.021417744, + 0.007026501, + -0.013989182, + 0.020549802, + -0.011978876, + -0.0181502, + 0.026319064, + 0.007383889, + -0.015278332, + 0.0059096636, + 0.010728018, + 0.003653653, + -0.010925858, + -0.018099144, + -0.007868915, + 0.0008759194, + 0.000975637, + -0.0073009236, + 0.002382054, + -0.005443783, + -0.015035818, + -0.008666656, + 0.003896166, + -0.0031430987, + -0.01798427, + -0.0034781499, + 0.014652903, + -0.01268727, + -0.021838952, + 0.008060373, + 0.027314644, + 0.008558163, + 0.017575825, + -0.024289612, + -0.01775452, + 0.041661214, + -0.00044035292, + -0.007722131, + -0.0038483017, + -0.003021842, + -0.0070839385, + 0.0011032756, + 0.025948912, + -0.02348549, + -0.01441039, + -0.010587616, + 0.03236913, + -0.0019034095, + 0.013121241, + -0.005303381, + -0.013759433, + -0.010345102, + 0.029637666, + 0.008487962, + -0.009681382, + 0.005281044, + 0.0036217433, + -0.024800166, + -0.00065853505, + -0.015405971, + 0.015814414, + 0.014269987, + 0.02848892, + 0.0034621952, + -0.017997032, + 0.013248879, + 0.0069562998, + -0.009394196, + -0.01252134, + -0.0038514927, + 0.004786445, + 0.006828661, + -0.0061170766, + 0.014346571, + -0.008724093, + -0.027161479, + -0.0015268759, + -0.040818803, + 0.027135951, + 0.0017247156, + 0.010651435, + 0.001729502, + 0.027620977, + -0.005702251, + -0.01318506, + 0.013338226, + -0.009170828, + 0.020651914, + -0.010657817, + -0.017346077, + -0.033900794, + -0.02547665, + 0.033441294, + 0.0023166393, + -0.016005872, + -0.004885365, + 0.01159596, + 0.012789381, + 0.00987284, + 0.002677218, + -0.035355873, + -0.023038754, + -0.005574613, + 0.0039504124, + -0.007115848, + 0.016950397, + -0.0096048, + 0.005542703, + -0.009477161, + 0.011059878, + -0.0012875537, + -0.012706416, + -0.031909633, + -0.025553234, + 0.030454552, + 0.016720647, + 0.017371604, + -0.0026644543, + 0.0038291558, + 0.0016704692, + -0.005641623, + 0.0028383618, + -0.008915551, + 0.0018140626, + -0.030122692, + 0.0145252645, + 0.013848781, + -0.0028479346, + 0.023932224, + -0.005549085, + 0.012463902, + 0.0134148095, + -0.004256745, + -0.000045870096, + -0.026421174, + -0.027391229, + 0.007626402, + -0.00006935359, + -0.0076583116, + -0.0018012987, + -0.00011936197, + -0.018558642, + 0.017537534, + 0.002914945, + -0.007971026, + 0.003727045, + 0.033313654, + -0.0010163218, + 0.03425818, + -0.0045726504, + -0.002209742, + -0.005303381, + -0.026880674, + -0.0035419692, + 0.013427573, + 0.0068988623, + 0.0072371047, + 0.005568231, + 0.011883147, + -0.02481293, + 0.015750594, + 0.012846818, + 0.03150119, + 0.008507108, + -0.009189974, + -0.01974568, + -0.030990634, + -0.035994064, + -0.03673437, + -0.03229255, + 0.01335099, + 0.0022384606, + -0.031577773, + 0.021507092, + -0.008168866, + -0.020460457, + 0.008066755, + 0.011532141, + 0.029101584, + 0.00083762786, + 0.008921933, + 0.021583674, + -0.008583691, + -0.008685802, + 0.008341177, + -0.011436412, + -0.006771224, + 0.019222362, + 0.019426584, + -0.020217942, + 0.024787402, + 0.012770235, + 0.011742745, + 0.02209423, + -0.0093878135, + -0.003309029, + -0.0052618985, + 0.010772692, + -0.020754024, + 0.011864001, + -0.026140371, + 0.005823508, + -0.037321504, + 0.002268775, + -0.002434705, + -0.010383395, + -0.014652903, + -0.005651196, + -0.03336471, + 0.015265568, + 0.021583674, + 0.008385851, + 0.0062830066, + -0.006930772, + -0.008475198, + -0.0032005361, + -0.010511032, + 0.03270099, + 0.00025767027, + 0.001538842, + 0.006506374, + -0.0012620259, + -0.010204701, + -0.0082773585, + -0.0032180864, + 0.025387304, + -0.0034302855, + -0.002262393, + -0.024098154, + 0.008207157, + 0.03862342, + -0.01652919, + -0.0007227532, + -0.002160282, + -0.0054342104, + 0.0027426328, + 0.006694641, + 0.0018810728, + -0.015201748, + 0.018622462, + -0.024098154, + -0.012240535, + -0.028029421, + -0.0035643058, + 0.008188011, + -0.015648484, + -0.005226798, + -0.028003894, + 0.014946472, + 0.000016914599, + -0.0038259649, + -0.017448187, + 0.030990634, + 0.005111923, + -0.018622462, + 0.019324472, + 0.000057537054, + 0.015890997, + 0.0022767521, + 0.014321043, + 0.0042312173, + -0.025157554, + 0.030633247, + 0.0021570912, + -0.035228234, + -0.027059369, + -0.008890023, + -0.011181135, + 0.0012492621, + -0.0050098123, + 0.0093048485, + -0.002249629, + 0.013146768, + -0.02063915, + 0.00058992935, + -0.0059032817, + -0.026242482, + 0.018137434, + 0.020575332, + -0.020881664, + -0.017601352, + 0.008972988, + -0.011149226, + 0.0013713164, + -0.027340172, + -0.008487962, + -0.012597922, + 0.018533114, + 0.013146768, + -0.019286182, + -0.003896166, + -0.012317118, + -0.012400083, + 0.0033441295, + -0.0022113374, + 0.014474209, + -0.0026836, + -0.0012333073, + -0.02454489, + 0.014269987, + -0.021456037, + 0.013861544, + 0.0016050545, + -0.019694624, + -0.017958742, + -0.0020980584, + 0.0042312173, + -0.004559886, + -0.0048119724, + -0.030403497, + -0.01835442, + 0.0027522058, + -0.0031925587, + -0.0028670805, + 0.0017853439, + 0.00814972, + 0.018226782, + -0.0056767236, + -0.015508081, + 0.020498747, + 0.0007259441, + -0.0016273912, + -0.018073615, + -0.01785663, + -0.008417761, + -0.009362286, + 0.013887072, + 0.0038706383, + 0.0044450117, + -0.008341177, + 0.02637012, + -0.016873814, + 0.0049268473, + -0.004176971, + -0.022898352, + -0.00070440513, + 0.021417744, + 0.020026485, + 0.031322494, + 0.010077062, + -0.008136956, + -0.023166392, + -0.0055714217, + 0.009489925, + 0.037117284, + -0.012527722, + 0.014946472, + 0.009400577, + -0.01030043, + 0.00141599, + -0.030888524, + 0.0074987635, + 0.011653397, + 0.021315634, + 0.0056224773, + -0.0075115273, + 0.011985258, + 0.02859103, + -0.0028543165, + -0.022834532, + -0.0015268759, + -0.0053735822, + -0.03504954, + 0.0013625413, + 0.009515452, + -0.028693141, + 0.0076710754, + -0.023702474, + -0.004145061, + -0.023498252, + -0.0075051454, + -0.024800166, + -0.008858114, + -0.03395185, + 0.028744197, + 0.024519362, + -0.009547362, + 0.00884535, + -0.02859103, + -0.0027442283, + -0.0069626817, + -0.009189974, + -0.009694146, + -0.026574342, + -0.0065606204, + -0.007868915, + 0.0007060006, + -0.03173094, + -0.0055937585, + 0.0065542385, + 0.006905244, + 0.020332817, + 0.23424223, + 0.008807058, + -0.013529684, + 0.032088324, + -0.018111907, + 0.025068207, + 0.023766294, + -0.01592929, + 0.02848892, + 0.036657784, + -0.021660259, + 0.00064337795, + 0.00088150357, + -0.0018348038, + 0.011966112, + -0.012974456, + -0.033798683, + -0.002329403, + -0.0015220895, + -0.009113391, + 0.01686105, + 0.0026197808, + 0.009151682, + 0.00028259968, + 0.028999474, + 0.015686775, + -0.006905244, + 0.0036664167, + 0.004508831, + 0.011800182, + -0.0012476667, + -0.0187501, + 0.0043620467, + -0.0060245385, + 0.0024953333, + -0.002938877, + -0.0067265504, + 0.0032085136, + 0.009400577, + 0.03859789, + 0.0060181567, + 0.0062893885, + -0.02487675, + -0.008558163, + 0.0048087817, + 0.008494344, + -0.015763357, + -0.0067265504, + 0.021979354, + 0.015061346, + -0.010153645, + -0.0061808955, + 0.04449479, + 0.023242977, + -0.0110279685, + 0.02186448, + 0.03361999, + -0.011244955, + 0.025731927, + -0.010377012, + -0.01507411, + 0.02365142, + -0.019886082, + 0.004582223, + 0.019158542, + -0.0016242003, + -0.015763357, + 0.005172551, + 0.021953827, + -0.022796242, + 0.01132792, + 0.0024634236, + 0.0077029853, + 0.0018092762, + -0.005721397, + -0.019656334, + 0.022745186, + -0.006078785, + 0.027901782, + 0.0065287105, + -0.01642708, + -0.008105046, + -0.007607256, + 0.018060852, + -0.006662731, + -0.008921933, + -0.0018332084, + 0.01569954, + 0.022847297, + -0.0068733348, + 0.0041099605, + -0.0029963145, + 0.0017406704, + 0.010313193, + 0.030403497, + 0.022540964, + -0.005354436, + 0.007371125, + -0.026089314, + -0.00093495223, + -0.03497296, + -0.035687733, + 0.0042950367, + -0.017218437, + -0.009081481, + 0.0072179586, + -0.0009501093, + 0.0015428307, + 0.0337221, + -0.00041961166, + 0.004078051, + -0.012010786, + 0.008341177, + -0.008309268, + 0.008992135, + -0.0061904686, + 0.013925363, + -0.013223352, + -0.01712909, + -0.018737337, + -0.0034366674, + -0.020651914, + 0.0017997032, + -0.006662731, + -0.00006332067, + -0.019835027, + -0.0027250827, + -0.002477783, + 0.00728816, + -0.04273338, + 0.036428034, + -0.0046619973, + 0.021481564, + -0.000063669686, + -0.005446974, + 0.011927821, + 0.00020252644, + -0.0076646935, + -0.0005001835, + -0.008143338, + 0.0016768512, + 0.0016816376, + 0.009853695, + -0.005226798, + 0.001403226, + -0.0066372035, + 0.0058873273, + -0.027799672, + -0.027110424, + -0.02431514, + -0.025349012, + -0.010428067, + -0.009368668, + -0.007026501, + 0.009349522, + 0.0030298196, + -0.021456037, + -0.008960225, + 0.0010043556, + 0.031118274, + -0.011398121, + -0.001446304, + 0.026497759, + -0.014818833, + 0.013376518, + 0.00299791, + -0.16266254, + 0.02408539, + 0.014065766, + -0.014959236, + -0.0050640586, + -0.002674027, + 0.016210092, + 0.020383872, + -0.020179652, + 0.028744197, + -0.0036504618, + 0.024685292, + -0.042478103, + -0.009132537, + -0.012527722, + 0.0009189974, + 0.00010350687, + -0.0010131308, + 0.017397132, + 0.003388803, + 0.007537055, + -0.020843372, + 0.022770714, + 0.02109865, + 0.015086874, + -0.0033441295, + -0.026319064, + 0.03259888, + 0.0074285623, + -0.0071732854, + -0.0070073553, + -0.0034621952, + -0.00026385277, + 0.024902277, + 0.016439842, + -0.0026118034, + 0.002345358, + 0.010638671, + -0.00022755556, + -0.0104153035, + 0.0022017646, + 0.028616559, + 0.009643091, + 0.012227771, + 0.0010809387, + 0.027391229, + 0.029076057, + 0.02109865, + 0.0035643058, + -0.0096048, + 0.023294032, + -0.033441294, + -0.013440337, + -0.007881679, + 0.022170812, + 0.020320054, + 0.016337732, + 0.00937505, + -0.008175247, + 0.009196356, + 0.00062582764, + -0.038674474, + -0.023511017, + 0.006496801, + 0.0010474337, + -0.0069562998, + 0.010868421, + 0.011864001, + -0.0044513936, + 0.0060979305, + -0.020447692, + -0.006254288, + -0.0058649904, + -0.021328397, + -0.0065478566, + 0.00088150357, + -0.01159596, + -0.0026756227, + -0.0035228233, + -0.013172296, + 0.010319575, + 0.02248991, + -0.015023055, + -0.008756003, + -0.008896406, + 0.008870877, + 0.004824736, + 0.008200776, + -0.024200264, + -0.0005699858, + 0.023345087, + -0.036223814, + 0.0036951355, + -0.039440304, + 0.008992135, + 0.01732055, + 0.0015276737, + -0.01109817, + 0.007792332, + 0.012215007, + 0.00017191314, + 0.0013186656, + -0.023779057, + 0.0096048, + 0.030326914, + 0.01848206, + -0.012208625, + 0.0062510967, + 0.030454552, + -0.0040429505, + -0.016835522, + 0.022349507, + -0.004690716, + 0.006745696, + 0.02302599, + 0.0102174645, + 0.013670086, + -0.028463392, + -0.0014853934, + 0.009566507, + 0.048911083, + -0.006145795, + -0.0062830066, + 0.019439347, + -0.0023230212, + -0.030939579, + -0.10011966, + -0.013644558, + 0.017792812, + 0.020779552, + 0.013644558, + 0.02703384, + 0.0050608674, + 0.017384367, + 0.0023437624, + 0.024136446, + 0.002243247, + -0.022809004, + -0.019554222, + 0.0104153035, + 0.005271471, + -0.013529684, + 0.018558642, + -0.023038754, + -0.05062144, + 0.0037653365, + -0.0039440305, + 0.0068860985, + -0.0034334764, + -0.01669512, + -0.0052395617, + 0.003468577, + -0.024174737, + 0.0058809454, + 0.01785663, + -0.0040876237, + 0.010664199, + -0.014844361, + 0.0041865436, + -0.006694641, + -0.008673038, + -0.00041402748, + -0.00477049, + 0.0012516553, + 0.027518867, + -0.030965107, + -0.0045726504, + 0.002219315, + 0.015316623, + -0.032879684, + -0.0041418704, + 0.010274901, + -0.00009637706, + 0.012234153, + 0.004167398, + -0.019260654, + 0.0060404935, + 0.020626387, + -0.03459004, + -0.009726056, + 0.04408635, + -0.029458972, + 0.01162787, + 0.017065272, + -0.027161479, + 0.021787897, + 0.004847073, + 0.017039744, + 0.00136653, + 0.029254751, + -0.026012732, + -0.016376022, + -0.049013194, + -0.0086092185, + 0.023013227, + -0.03147566, + 0.0034941046, + 0.01758859, + -0.01619733, + -0.0041227243, + -0.019822264, + 0.019184072, + -0.025183082, + -0.012999984, + 0.008430525, + -0.012208625, + -0.026421174, + -0.020383872, + 0.008073137, + -0.0056799143, + -0.0074221804, + 0.029561084, + -0.021979354, + -0.008468816, + 0.025553234, + -0.0029229224, + 0.013363753, + 0.03852131, + 0.013287171, + -0.019490404, + -0.0086092185, + 0.020958247, + 0.007313688, + 0.0028495302, + 0.019222362, + -0.0181502, + -0.01974568, + -0.007971026, + -0.035917483, + 0.014818833, + -0.014716722, + -0.024404487, + -0.011851237, + 0.01318506, + -0.011678926, + 0.003468577, + -0.011557668, + -0.004531168, + -0.011187517, + -0.0073392154, + -0.012597922, + -0.01596758, + -0.0054342104, + 0.002693173, + 0.01679723, + -0.0019768018, + 0.011851237, + -0.00924103, + -0.007186049, + -0.0015077301, + 0.00038271616, + 0.00804761, + -0.03328813, + 0.006669113, + -0.01642708, + -0.01904367, + -0.029458972, + -0.0020055203, + 0.024225792, + -0.026472231, + 0.01149385, + 0.026982784, + -0.01871181, + -0.031909633, + -0.012183097, + 0.021404982, + 0.008436907, + -0.020013722, + -0.023868404, + -0.023000462, + 0.017167382, + -0.011034351, + -0.019783972, + 0.030684302, + -0.0126681235, + -0.007715749, + 0.002080508, + 0.012700033, + 0.018545877, + 0.017665172, + 0.0027059368, + -0.0052427524, + -0.011640633, + -0.008634746, + 0.029127112, + 0.012138424, + 0.006866953, + -0.013836016, + 0.006298961, + -0.004687525, + 0.013453101, + 0.011672543, + -0.0032117045, + 0.01871181, + -0.0056767236, + -0.0031510761, + -0.0043046093, + -0.023893932, + -0.01424446, + -0.0040174224, + 0.050774608, + 0.016388787, + 0.012559631, + -0.0059575285, + -0.009623945, + -0.01825231, + -0.0120235495, + 0.017065272, + 0.004885365, + -0.0037015174, + -0.012431992, + -0.0010554111, + 0.027620977, + 0.023625892, + -0.05330185, + -0.008264595, + 0.018328892, + -0.0013824848, + -0.024723582, + 0.0127191795, + -0.0038642564, + 0.0084432885, + 0.013274407, + 0.0003234839, + -0.0015196962, + -0.0061106947, + -0.0029500455, + 0.022336742, + 0.006171323, + -0.017575825, + -0.0073328335, + -0.03441135, + -0.0100515345, + 0.024225792, + -0.0069690635, + -0.018290602, + -0.014423153, + 0.018226782, + 0.00917721, + -0.014550792, + 0.0035228233, + 0.01407853, + -0.0069818273, + -0.0019927565, + -0.03949136, + -0.010185555, + -0.013504156, + 0.013619031, + 0.011506613, + 0.005226798, + 0.009113391, + -0.0032675464, + 0.021341162, + 0.01063229, + 0.026421174, + -0.038368143, + 0.018456532, + 0.0074859997, + 0.0027282736, + 0.012904255, + -0.015316623, + 0.0023134483, + -0.024098154, + -0.011985258, + -0.016324967, + 0.017933212, + 0.0031143802, + 0.051131994, + -0.00884535, + -0.031756464, + 0.033313654, + -0.024187502, + 0.0015460217, + 0.012176716, + 0.00075386505, + -0.022847297, + -0.011812946, + -0.011181135, + 0.013733906, + 0.020166887, + -0.016580245, + -0.0046268967, + -0.00023393749, + -0.029790832, + 0.027416756, + -0.028054949, + -0.0013585526, + 0.028718669, + 0.0026421174, + 0.011181135, + 0.015457026, + -0.0187501, + -0.019056432, + 0.014486973, + 0.02610208, + 0.0031957496, + -0.0010290856, + 0.020064777, + -0.008749621, + -0.022004882, + -0.01149385, + 0.0010266925, + -0.036096174, + -0.015954817, + -0.014563556, + -0.000048811766, + 0.01457632, + 0.00848158, + 0.029867416, + -0.02003925, + -0.020115832, + 0.0057533067, + -0.012789381, + -0.007792332, + 0.007186049, + -0.0062064235 + ] + }, + { + "object": "embedding", + "index": 4, + "embedding": [ + 0.0068448135, + -0.0051383944, + -0.0014504561, + -0.018907761, + -0.00089547125, + 0.019851873, + -0.027302703, + -0.020311171, + 0.010346959, + -0.009843008, + 0.0014743779, + 0.009658013, + -0.0074189357, + 0.008356669, + -0.017351251, + -0.0048513333, + 0.030339172, + 0.021931471, + 0.024751049, + -0.006072938, + -0.031461902, + 0.013396187, + 0.0035117145, + 0.0038944627, + -0.020808743, + 0.00003924664, + 0.013919275, + -0.015833016, + 0.016700579, + 0.012975164, + 0.022110086, + -0.011641924, + 0.00745721, + -0.036080394, + -0.020515302, + 0.0104235085, + 0.0019631793, + -0.0057220855, + 0.018741902, + -0.012649828, + 0.005792256, + 0.0062834495, + 0.004120922, + 0.00004826714, + -0.008535285, + 0.016011633, + 0.01781055, + 0.0015860128, + -0.012949646, + 0.008771312, + 0.009211473, + 0.03044124, + -0.032967377, + -0.0052851145, + -0.0007722742, + -0.027149605, + -0.015896808, + 0.022696968, + -0.022071812, + -0.02068116, + -0.0024766997, + -0.010040761, + -0.0002523746, + -0.016955744, + 0.0021370107, + -0.0035404207, + -0.0214339, + 0.0032884448, + -0.0031050446, + 0.005039518, + 0.024865873, + 0.03449837, + 0.0023826074, + 0.0063982736, + 0.040724408, + 0.007297732, + 0.0017526677, + 0.02401107, + -0.012158634, + -0.0018627078, + -0.0026840216, + -0.01839743, + -0.01159727, + -0.011833298, + 0.026639273, + 0.0041560074, + -0.0019839115, + 0.010327822, + -0.002164122, + -0.01884397, + -0.004238936, + 0.026741339, + 0.027506836, + 0.0046344427, + -0.0018100799, + 0.021765614, + 0.022480076, + 0.015730951, + 0.03181913, + -0.03235498, + 0.005368043, + 0.031257767, + -0.034294236, + 0.0065322355, + -0.033043925, + -0.021025633, + 0.0036839512, + -0.010442646, + 0.021854922, + -0.017249186, + -0.015641643, + 0.021127699, + 0.037356224, + -0.01374066, + -0.0124648325, + -0.023207298, + 0.035340417, + -0.007973921, + -0.010429888, + -0.011928985, + -0.00053903705, + 0.046057366, + 0.022658693, + -0.040800955, + 0.026843406, + 0.0012192124, + -0.009466639, + -0.026792374, + 0.0031895682, + 0.007036187, + 0.005084172, + 0.016305072, + 0.006921363, + 0.020272896, + -0.011182626, + -0.004085837, + -0.031997748, + 0.01862708, + 0.0050076223, + -0.018639836, + 0.012834823, + 0.031436384, + -0.01728746, + -0.009670771, + -0.008528905, + 0.031997748, + 0.022403527, + -0.01041713, + -0.012866718, + -0.002889749, + 0.0034830084, + -0.008943549, + 0.0031576725, + 0.0024719154, + 0.009428363, + 0.003929548, + -0.0018961983, + 0.0045100492, + -0.032763243, + -0.0014791623, + -0.018193297, + 0.014085134, + 0.033069443, + -0.0029088862, + 0.037994135, + 0.01846122, + 0.002902507, + -0.0032262483, + -0.0022470509, + -0.007476348, + -0.0061175916, + 0.041183706, + -0.013574802, + 0.012254321, + 0.008892516, + 0.008809587, + 0.0025468701, + 0.0023810128, + -0.017376767, + -0.008866999, + -0.026562724, + -0.0024846736, + 0.011431413, + -0.0018355965, + 0.007431694, + -0.005077793, + 0.014633738, + -0.0060825064, + 0.005355285, + -0.015730951, + 0.030415723, + 0.0102193765, + 0.003588264, + -0.02845095, + -0.686293, + -0.036743827, + 0.018882243, + 0.0051479633, + 0.01838467, + 0.03153845, + 0.010538333, + 0.023526255, + 0.004691855, + -0.0103597175, + 0.010181102, + 0.011086939, + 0.016317831, + -0.009358193, + -0.009096649, + -0.015297169, + -0.008918033, + 0.0017367199, + 0.011807782, + 0.007042567, + 0.0010374071, + 0.009045616, + -0.019494642, + 0.005651915, + 0.02083426, + -0.0020955463, + 0.0068575717, + 0.0042580734, + -0.01071695, + 0.0031512934, + -0.020566335, + 0.010455404, + -0.028731631, + -0.009396468, + 0.04661873, + 0.0048609017, + -0.0054158866, + 0.017172635, + 0.008063229, + 0.012681724, + -0.002955135, + 0.0041910927, + 0.01351101, + -0.027532352, + -0.012209667, + 0.019737048, + 0.005103309, + 0.010289547, + 0.021127699, + 0.00010326227, + 0.023449706, + -0.005645536, + 0.023985554, + 0.0068256757, + 0.023577288, + 0.00052627875, + 0.031487416, + -0.0006279462, + -0.0037477426, + 0.0051798588, + -0.0006949272, + 0.006908605, + -0.026919955, + -0.022582144, + -0.022633176, + 0.01321757, + -0.027200637, + -0.029752292, + -0.008560801, + 0.0037477426, + -0.0014863388, + 0.014365816, + -0.008650109, + 0.015960598, + 0.02282455, + -0.0027079433, + 0.020579094, + 0.007010671, + 0.0022757568, + 0.00812702, + -0.0012120359, + -0.022275945, + -0.006012336, + -0.00029922137, + 0.031666033, + -0.033299092, + -0.030619854, + -0.028604047, + 0.015896808, + -0.017389527, + 0.035187315, + 0.023028683, + -0.01676437, + -0.0066598183, + -0.0072849737, + 0.014723047, + 0.008924412, + 0.007916508, + 0.0052627875, + -0.01041075, + 0.010149206, + -0.00554028, + -0.0011211332, + 0.010270409, + 0.017938131, + -0.00024021436, + -0.022071812, + 0.026384108, + 0.0140085835, + 0.0039104107, + 0.026715823, + -0.010302305, + -0.011673819, + 0.01884397, + 0.0087139, + -0.025695162, + 0.038300335, + 0.0013531743, + 0.011590891, + -0.00923699, + 0.014378574, + 0.023003167, + -0.0056965686, + -0.00075831986, + 0.0016027581, + -0.0012279837, + -0.011584512, + -0.009319918, + -0.037509322, + -0.0027669505, + 0.003463871, + 0.0012989517, + 0.016113698, + 0.005642346, + 0.0074189357, + -0.0043154857, + 0.005687, + -0.014952696, + 0.022441803, + -0.016483689, + -0.01491442, + -0.0062387954, + -0.01321757, + 0.0049533993, + -0.0012582847, + -0.019124651, + -0.04327606, + -0.007291353, + -0.012528623, + 0.018665353, + -0.016356105, + -0.009913178, + -0.029190928, + 0.014365816, + 0.016687822, + 0.000094241776, + -0.022722485, + -0.01034058, + 0.001082061, + 0.015207862, + 0.014518915, + -0.007667722, + -0.012062947, + -0.0030779333, + -0.008918033, + -0.033579774, + -0.0069723963, + 0.026613757, + -0.00900734, + -0.01610094, + 0.0017016346, + -0.012649828, + -0.016534721, + -0.013383429, + -0.018103989, + -0.016955744, + -0.024572434, + -0.025427237, + -0.0007714768, + -0.018282605, + 0.0021736908, + 0.025542062, + 0.010066277, + -0.020859776, + 0.04748629, + -0.019609466, + 0.012656206, + 0.026026877, + -0.012592415, + 0.015360961, + -0.0019169305, + -0.011571754, + -0.018129505, + -0.0020253758, + 0.020744951, + 0.008484252, + 0.002813199, + 0.008560801, + 0.012254321, + -0.012056568, + 0.015258894, + -0.00310345, + 0.015399235, + -0.026154459, + 0.0006363189, + -0.03628453, + 0.021063909, + -0.0022247238, + 0.014250991, + 0.01964774, + 0.010927461, + -0.014735805, + -0.003907221, + -0.012949646, + 0.0088478625, + -0.018269846, + -0.013970309, + 0.00812064, + 0.006455686, + -0.009071132, + 0.004104974, + 0.018333638, + 0.018639836, + -0.00820357, + -0.019890148, + 0.0028674218, + 0.029803324, + 0.016700579, + -0.0040124767, + -0.0060250945, + -0.021459416, + 0.0051830485, + -0.018869486, + 0.003884894, + -0.036105912, + -0.00048601045, + 0.0030492272, + -0.02681789, + 0.010200239, + 0.007922888, + -0.0099705905, + 0.035416964, + 0.018155022, + -0.01883121, + 0.020847017, + -0.008312015, + 0.027277187, + 0.021689063, + -0.013664111, + 0.013077229, + -0.0055785547, + -0.000964047, + -0.016164731, + 0.018218813, + 0.027685452, + -0.020183587, + 0.04401604, + 0.0021752855, + 0.031461902, + 0.008107882, + -0.0075592767, + -0.012362766, + 0.0032071108, + -0.021229766, + 0.023832453, + -0.006621544, + -0.012369146, + 0.0016059476, + -0.00893717, + -0.015909566, + -0.0080377115, + 0.0060155257, + 0.0020939515, + 0.006366378, + 0.003597833, + -0.011667441, + 0.00012050587, + -0.003170431, + 0.031946715, + 0.013051713, + 0.0058177724, + -0.03258463, + 0.012987922, + 0.0068256757, + -0.0063057765, + -0.0069851545, + -0.007980299, + 0.007202045, + -0.0038880836, + -0.006337672, + 0.003996529, + 0.020183587, + 0.006328103, + -0.009185957, + 0.011380379, + -0.017376767, + -0.002947161, + 0.005747602, + 0.0022725672, + 0.006627923, + 0.002889749, + -0.03005849, + -0.02607791, + -0.008650109, + -0.002468726, + 0.010174722, + -0.0073997984, + 0.010582987, + -0.026894439, + -0.026307559, + 0.018525012, + 0.0010206618, + 0.0066661974, + -0.0077059967, + -0.0037796383, + -0.0076613426, + -0.03258463, + -0.00088669994, + 0.036182463, + 0.010353338, + 0.00989404, + -0.021293558, + -0.022199394, + -0.0006634302, + 0.07399798, + 0.026613757, + 0.0062962077, + 0.010876427, + 0.02017083, + -0.008650109, + -0.021625273, + 0.0028163886, + -0.0074125566, + -0.010697812, + 0.0056551043, + 0.00080696074, + -0.0009217852, + 0.006749126, + 0.013051713, + -0.012656206, + 0.009000962, + -0.0047173714, + 0.025172072, + -0.026996505, + -0.008771312, + 0.029803324, + -0.0144296065, + 0.004101785, + 0.0028594478, + 0.005450972, + 0.0175809, + 0.0044334996, + 0.02415141, + -0.02046427, + 0.0068320553, + 0.019851873, + -0.0031799995, + -0.014633738, + -0.011514341, + 0.007572035, + -0.02643514, + -0.005827341, + 0.008624593, + -0.027455803, + 0.029956425, + 0.010461784, + 0.009173199, + -0.0098621445, + -0.011329346, + 0.012005535, + -0.0103597175, + 0.033299092, + -0.01787434, + -0.01779779, + 0.025491029, + -0.003243791, + -0.01011731, + -0.012719998, + 0.013804452, + 0.0068384344, + -0.025771711, + 0.007750651, + -0.010346959, + -0.0054605408, + -0.0017319355, + -0.0036807617, + -0.009932315, + -0.008662867, + -0.010130068, + -0.008886137, + 0.000897066, + -0.0037796383, + -0.016534721, + 0.015909566, + 0.008114262, + -0.012222425, + -0.016853679, + -0.0006737963, + 0.02327109, + 0.010997632, + 0.0102831675, + -0.006781022, + -0.008375806, + 0.045113254, + 0.007297732, + -0.014633738, + -0.0031353456, + 0.010997632, + -0.0001480159, + 0.000024307998, + 0.021165974, + -0.017134361, + -0.018218813, + 0.00037796382, + 0.041540936, + -0.00642698, + 0.027302703, + -0.009881282, + -0.009811112, + -0.0027605712, + 0.014314782, + 0.0039327377, + -0.022403527, + -0.010232135, + 0.010589367, + -0.018958794, + -0.0022326978, + -0.025746195, + 0.0068384344, + 0.0042931587, + 0.012834823, + -0.0123244915, + -0.02783855, + 0.007814442, + 0.021829404, + -0.011826918, + -0.0022805412, + -0.011935364, + -0.008044091, + 0.010761603, + 0.0061207814, + 0.012241563, + -0.003671193, + -0.0248276, + 0.017083326, + -0.05008898, + 0.0282213, + -0.0005131218, + -0.007316869, + -0.014059616, + 0.011514341, + -0.013919275, + -0.0032629282, + 0.02666479, + -0.008528905, + 0.018001923, + -0.022888342, + -0.013944793, + -0.055115737, + -0.028553015, + 0.025605854, + 0.017045053, + -0.015998874, + -0.010742466, + -0.0027111329, + 0.0152716525, + 0.0024495884, + -0.001299749, + -0.041540936, + -0.019966697, + -0.00088909216, + 0.026486175, + -0.014646498, + 0.026537208, + -0.007189287, + 0.021025633, + 0.0038434297, + 0.023092473, + 0.00081892166, + -0.0031720256, + -0.015628884, + -0.00967715, + 0.023539014, + 0.024176927, + 0.0008097516, + -0.0005513966, + 0.00092896173, + -0.0021019254, + -0.011354863, + -0.00093693566, + -0.009032857, + -0.0026329886, + -0.019252233, + 0.011106077, + 0.034728017, + 0.012094842, + 0.019494642, + -0.0066853347, + 0.015769225, + 0.009026478, + 0.0018037008, + -0.015692675, + -0.0350087, + -0.04557255, + 0.0024097187, + -0.0010804662, + -0.0140341, + -0.0010884402, + -0.0016019606, + 0.0027191069, + 0.018231573, + 0.0074189357, + 0.007973921, + 0.006359999, + 0.033732872, + -0.0015126527, + 0.04123474, + -0.009964211, + -0.0022183447, + -0.0026680739, + -0.022416286, + -0.0006211684, + 0.01321757, + -0.005205375, + 0.014250991, + 0.004101785, + 0.0107041905, + -0.02003049, + 0.019507399, + 0.0091604395, + 0.02407486, + 0.0011625976, + -0.00080735947, + -0.009753699, + -0.02503173, + -0.032839794, + -0.038581017, + -0.028731631, + 0.009154061, + 0.00036759774, + -0.030594338, + 0.02009428, + 0.0077059967, + -0.032227397, + 0.0049916743, + 0.014646498, + 0.023220057, + -0.0094092265, + 0.022620417, + 0.007948404, + -0.013179296, + -0.002318816, + -0.0034160276, + -0.01654748, + 0.012936888, + 0.033656325, + 0.017836066, + -0.009619738, + 0.0075018643, + 0.010927461, + 0.0059931986, + 0.011865194, + -0.013243088, + -0.011393137, + 0.009976969, + 0.0081461575, + -0.020885292, + 0.01248397, + -0.0109848725, + 0.019469125, + -0.021153217, + -0.009855766, + -0.00032713008, + -0.022786275, + -0.0023985554, + 0.0042899693, + -0.03796862, + 0.010244893, + 0.018346397, + 0.011316588, + -0.007170149, + 0.008331152, + -0.002674453, + -0.0027063487, + -0.014072374, + 0.0047747837, + -0.015463026, + 0.0023395482, + -0.00043736954, + 0.0077761672, + -0.019111892, + -0.004242126, + -0.000620371, + 0.025975844, + -0.0069405003, + -0.007061704, + -0.017236426, + 0.010072656, + 0.042663664, + -0.032023266, + -0.00023403457, + 0.0032820657, + -0.0012622717, + -0.009785595, + 0.002829147, + -0.00138507, + -0.010870049, + 0.026460657, + -0.012267079, + -0.011686577, + -0.016330589, + -0.016560238, + 0.003597833, + -0.0073615233, + -0.0038402402, + -0.016968504, + 0.01101039, + 0.013753418, + 0.0029854358, + -0.0022917048, + 0.015501302, + 0.0035467998, + -0.027557869, + 0.033069443, + -0.015526818, + 0.0055945027, + 0.0002005441, + 0.0109210815, + -0.0024830787, + 0.0011865194, + 0.029981941, + -0.0011171462, + -0.02060461, + -0.008484252, + 0.0047237505, + -0.0073934193, + -0.004924693, + -0.015386477, + -0.0053871805, + -0.0040316144, + 0.015488544, + -0.00960698, + -0.0084268395, + -0.016266799, + -0.014825113, + -0.008312015, + 0.014939938, + -0.014761321, + -0.006781022, + 0.01898431, + -0.0031225872, + -0.0002266587, + -0.021446656, + -0.01411065, + -0.010997632, + 0.007871854, + 0.00269678, + -0.0192012, + 0.0017335303, + -0.01802744, + 0.00080815685, + -0.0035340416, + 0.001234363, + 0.00827374, + 0.007055325, + 0.014455123, + -0.022403527, + 0.023475222, + -0.007839958, + 0.002172096, + -0.009485776, + -0.0022709726, + -0.026486175, + 0.0021035203, + -0.008554422, + 0.0052723563, + 0.0060538, + -0.02748132, + -0.026103426, + 0.012834823, + -0.012126738, + 0.008733038, + 0.006729989, + -0.0047747837, + 0.014238233, + 0.0014791623, + -0.0174278, + 0.030160557, + -0.009587842, + 0.0054701096, + -0.023615563, + 0.0021083045, + -0.010876427, + -0.019609466, + -0.009473017, + 0.019992214, + -0.00055418746, + -0.01801468, + 0.019290509, + -0.0042740214, + -0.0015293979, + -0.0127455145, + 0.0035053354, + -0.0016761181, + 0.016164731, + 0.00325017, + 0.027149605, + -0.0048927977, + 0.01093384, + -0.007725134, + 0.0004397617, + 0.007929266, + 0.02260766, + -0.008535285, + -0.0068001593, + 0.011992777, + -0.010334201, + -0.011055043, + -0.0282213, + 0.023615563, + -0.0123244915, + 0.013370669, + 0.019583948, + -0.016662303, + -0.00036361077, + 0.031206734, + -0.0077889254, + -0.016011633, + -0.018001923, + 0.0029312132, + -0.019979455, + -0.0069787754, + 0.005058655, + -0.016368864, + 0.003907221, + -0.025529305, + -0.0073551442, + -0.03102812, + -0.015105795, + -0.019367058, + 0.004934262, + -0.026358591, + 0.023947278, + 0.028374398, + -0.025172072, + 0.00048800395, + -0.028348882, + -0.0021912334, + -0.011980019, + -0.007316869, + -0.007042567, + -0.041796103, + -0.026741339, + -0.010161964, + -0.007935646, + -0.020221863, + 0.00089547125, + -0.0025532492, + 0.00060801144, + 0.021063909, + 0.22862825, + -0.003073149, + -0.01684092, + 0.034779053, + -0.003604212, + 0.023960037, + 0.03457492, + -0.0062962077, + 0.013536528, + 0.042357467, + -0.008280119, + 0.007750651, + 0.00032573464, + 0.00043338258, + 0.02208457, + -0.025886536, + -0.015424752, + -0.02009428, + -0.013345153, + -0.010174722, + 0.020477029, + -0.015539576, + 0.009351814, + 0.00812064, + 0.04003546, + 0.0021098994, + -0.017312976, + 0.0074125566, + 0.019175684, + 0.003833861, + -0.004602547, + -0.002666479, + 0.0013834753, + -0.012069326, + -0.014544431, + 0.012968784, + 0.006324914, + 0.012579657, + 0.026741339, + 0.037560355, + 0.004937452, + 0.016713338, + -0.022722485, + -0.0052755456, + -0.008222707, + 0.016802644, + -0.020489786, + 0.010225756, + 0.022773517, + 0.0047684046, + -0.015539576, + 0.0052627875, + 0.019048102, + 0.017274702, + -0.002747813, + 0.021663547, + 0.033401158, + -0.0027286755, + 0.021012876, + -0.019660499, + -0.008554422, + 0.017555384, + -0.019086376, + 0.008784071, + 0.001584418, + -0.016419897, + -0.0070808413, + -0.00531701, + 0.016891953, + -0.00901372, + 0.015093037, + 0.010519196, + 0.019443607, + 0.015871292, + -0.0076932386, + -0.013893759, + 0.031130185, + 0.0025054058, + 0.02319454, + -0.0009520861, + -0.008452356, + -0.002039729, + -0.02282455, + 0.0016585755, + -0.0050171907, + -0.0246745, + 0.015029245, + 0.0038944627, + 0.022288702, + -0.015169586, + 0.0015604963, + -0.0029790567, + 0.011252796, + -0.012822065, + 0.020196347, + 0.025427237, + -0.009256127, + 0.02165079, + -0.026090669, + 0.012388282, + -0.031640515, + -0.026639273, + 0.007329628, + -0.016534721, + -0.0077889254, + 0.008803208, + 0.0025819554, + 0.011214522, + 0.020961842, + 0.008280119, + -0.015679916, + -0.0018643026, + 0.010308685, + -0.017517108, + 0.019979455, + -0.005878374, + 0.004663149, + -0.019711532, + -0.004883229, + -0.021114942, + -0.012975164, + -0.027608903, + -0.0075082434, + 0.00812064, + -0.008752175, + -0.002688806, + 0.006235606, + 0.008752175, + 0.0014145735, + -0.05016553, + 0.01721091, + 0.0058975117, + 0.023666596, + -0.011118835, + -0.011795023, + 0.0043091066, + -0.01100401, + 0.008918033, + -0.003374563, + 0.0071446327, + -0.0126051735, + -0.017517108, + 0.017759515, + -0.016777128, + 0.0026935902, + -0.003175215, + 0.0002242665, + -0.020400478, + -0.03212533, + -0.03102812, + -0.00849063, + -0.023615563, + 0.0009401252, + -0.015935082, + 0.029777808, + 0.0025213538, + -0.018282605, + -0.016572997, + -0.007603931, + 0.029497126, + -0.0052723563, + 0.017096085, + 0.024049344, + -0.02267145, + -0.0077953045, + -0.008241844, + -0.16259143, + 0.030415723, + 0.0077953045, + -0.0041336804, + -0.002865827, + 0.0018643026, + 0.021076666, + 0.021012876, + -0.009651633, + 0.026307559, + 0.0032820657, + 0.00269678, + -0.037943102, + -0.012694482, + -0.004219799, + 0.021548722, + -0.010608504, + -0.0030492272, + 0.015705435, + 0.006921363, + 0.012496728, + -0.028017167, + 0.012611553, + 0.013421703, + 0.009804733, + 0.0072403196, + -0.01624128, + 0.035799712, + -0.0020492976, + -0.009262506, + -0.0050044325, + 0.0016952555, + 0.017376767, + 0.02202078, + 0.011584512, + 0.011590891, + -0.0031130186, + 0.0033426674, + -0.0032724969, + -0.00035902578, + 0.0028355261, + 0.02282455, + -0.00879045, + 0.00864373, + -0.005342527, + 0.013791692, + 0.035672132, + 0.013459978, + 0.0064046527, + -0.0064461175, + 0.003588264, + -0.04291883, + -0.018601561, + -0.013855484, + 0.020859776, + 0.022786275, + 0.030568821, + 0.009740941, + -0.017912615, + 0.01566716, + 0.0107807405, + -0.036667276, + -0.010008865, + 0.020732194, + -0.006044232, + -0.017976407, + 0.014786839, + 0.00065904454, + 0.0012120359, + 0.0020620557, + -0.019775324, + -0.010015245, + 0.0039486852, + -0.032763243, + 0.010895565, + 0.012075705, + 0.0043122964, + -0.008471493, + -0.00908389, + -0.011954501, + -0.004277211, + 0.026179975, + -0.011705715, + -0.0012822064, + -0.007954783, + 0.01824433, + -0.0051575317, + -0.0072530783, + -0.026052393, + -0.020362204, + 0.025593095, + -0.050114494, + -0.0028195784, + -0.038096204, + 0.011980019, + 0.018333638, + 0.0024719154, + -0.0046280636, + 0.0059644924, + -0.004242126, + 0.01654748, + -0.0053808014, + -0.016598513, + 0.0119034685, + 0.015781984, + 0.017402284, + -0.009396468, + 0.0012917751, + 0.02985436, + 0.009294402, + -0.005753981, + 0.027966134, + 0.0062451744, + 0.025733436, + 0.01152072, + 0.0056901895, + -0.00019575974, + -0.02842543, + -0.0010023218, + -0.0070808413, + 0.042229883, + -0.0016888763, + -0.0055626067, + 0.013408945, + -0.0041847136, + -0.0017749947, + -0.10655709, + 0.0007662938, + 0.017121602, + 0.015424752, + -0.0019073618, + 0.0068256757, + -0.007750651, + 0.016483689, + 0.012126738, + 0.03021159, + -0.0033649944, + -0.017721241, + -0.014774079, + -0.0019568, + 0.00091700087, + -0.010736086, + 0.005533901, + -0.032303948, + -0.030339172, + 0.0032007317, + -0.012203288, + -0.0057444125, + 0.0047396985, + -0.024470367, + -0.0068129175, + 0.0072403196, + -0.03352874, + 0.01640714, + 0.009058374, + -0.0028482843, + 0.010755224, + -0.009536809, + 0.022531109, + -0.008637351, + -0.015335444, + -0.0077889254, + -0.014901662, + -0.016151974, + 0.007935646, + -0.024393817, + -0.003996529, + 0.0029806516, + 0.0012327681, + -0.024100378, + -0.016853679, + 0.010551091, + 0.0017494782, + 0.006468444, + -0.001757452, + -0.02165079, + 0.005789066, + 0.024164168, + -0.011208143, + -0.0063185347, + 0.039933395, + -0.0059836297, + 0.008822345, + 0.01661127, + -0.016483689, + -0.0008021764, + -0.0065705106, + 0.023169024, + -0.013689627, + 0.034166653, + -0.017096085, + -0.012739135, + -0.03738174, + 0.009702667, + 0.018550528, + -0.021816647, + 0.0059995777, + 0.02267145, + -0.017848823, + 0.020119796, + -0.008248223, + 0.00480349, + -0.019532915, + -0.024521401, + 0.015360961, + -0.027864067, + -0.032252915, + -0.031181218, + 0.009517672, + -0.022301462, + -0.007202045, + 0.025886536, + -0.003964633, + -0.011909848, + 0.027787518, + -0.0026473417, + 0.0074061775, + 0.042459533, + 0.007438073, + -0.03633556, + -0.016330589, + 0.02586102, + -0.0011251202, + -0.0131665375, + -0.008044091, + -0.014455123, + -0.021727338, + -0.005827341, + -0.03694796, + 0.023717629, + -0.02903783, + -0.026282042, + 0.0070999786, + 0.012509487, + 0.0015373719, + -0.0097218035, + -0.019545674, + -0.0066917143, + -0.02681789, + 0.008229086, + -0.010397992, + -0.017976407, + -0.017261943, + -0.000629541, + 0.021905955, + -0.0025660077, + 0.018333638, + -0.00036101925, + 0.0056997584, + 0.0064588757, + 0.015705435, + 0.0021816646, + -0.033707358, + 0.012490349, + -0.032329462, + -0.011074181, + -0.023590047, + 0.00063033844, + 0.014174441, + -0.0127455145, + 0.0214339, + 0.029650226, + -0.021000117, + -0.022403527, + -0.010850911, + 0.026792374, + 0.011412275, + -0.017172635, + -0.022556627, + -0.026116185, + 0.014557189, + -0.016662303, + -0.016828163, + 0.020451512, + 0.0005513966, + -0.0059517343, + 0.007170149, + -0.0019631793, + 0.008439598, + 0.023449706, + 0.027659936, + -0.014442365, + -0.0039773914, + -0.0018196487, + 0.023015924, + 0.021140458, + -0.007846338, + -0.0097218035, + 0.00635043, + -0.006506719, + 0.01129745, + 0.021063909, + -0.0029503505, + 0.0072530783, + -0.0098302495, + 0.0060538, + 0.010621262, + -0.031283285, + -0.010825395, + -0.008694763, + 0.033350125, + 0.0012104411, + 0.02982884, + 0.0012064541, + -0.00450686, + -0.0080377115, + -0.009740941, + 0.019456366, + 0.009664392, + -0.00020572715, + -0.019915665, + 0.00034307793, + 0.025873777, + 0.025758952, + -0.03590178, + -0.019507399, + 0.016203007, + -0.0044494476, + -0.023181781, + 0.01374066, + -0.010965736, + 0.014340298, + 0.002792467, + 0.0015868102, + 0.008152536, + -0.005776308, + -0.0036935199, + 0.039703745, + 0.0006375149, + -0.0041336804, + -0.012082084, + -0.020349445, + -0.019596707, + 0.0004202256, + -0.018920518, + -0.009524051, + -0.010378855, + 0.00017632332, + -0.010908323, + 0.0041464386, + -0.009587842, + 0.02459795, + -0.011386759, + 0.007170149, + -0.04358226, + -0.016509205, + -0.022913858, + 0.014723047, + 0.0017909425, + 0.00539356, + 0.008024953, + -0.0044526374, + 0.025057247, + 0.017478833, + 0.031742584, + -0.011724853, + -0.0053138207, + 0.024534158, + 0.006334482, + -0.015195102, + 0.015067521, + -0.02038772, + -0.021599757, + -0.008114262, + -0.015718192, + 0.02888473, + -0.00021489715, + 0.047818005, + -0.0028977226, + -0.01839743, + 0.029292995, + -0.0052500293, + -0.0002661296, + 0.0073997984, + 0.012962406, + -0.012598794, + -0.011801402, + -0.012994301, + -0.0012391473, + 0.025771711, + -0.0017032294, + -0.009868524, + -0.00010655151, + -0.032635663, + 0.033273574, + -0.039627194, + -0.011788644, + 0.009728183, + 0.0049661575, + 0.024661742, + 0.00901372, + -0.016458172, + -0.0004052745, + 0.010378855, + 0.015781984, + -0.019188443, + -0.008254603, + 0.013983067, + -0.01130383, + -0.037203122, + -0.0096006, + 0.007839958, + -0.027762001, + -0.014939938, + -0.026409624, + -0.0013148995, + 0.01411065, + 0.0121841505, + 0.010551091, + -0.029114379, + -0.032967377, + -0.0073551442, + -0.0044079833, + -0.023730388, + -0.0034830084, + -0.022046296 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 46, + "total_tokens": 46 + } +} +327 34451 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 131 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["What colors are all of the pieces of furniture next to the desk and the desk itself?"]}HTTP/2.0 200 OK +Content-Length: 33489 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:43:11 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 130 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-canary-6d6cf5db5-p5xqq +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999979 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_5bc06206341e4ca9ab6eca4ade4945e1 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.010940914, + 0.00037101895, + 0.0019054401, + -0.018620905, + -0.012196111, + 0.010196854, + -0.024728665, + -0.0048946193, + 0.019022051, + 0.0058942474, + 0.0070329825, + -0.0033191538, + -0.022502957, + 0.0068453504, + -0.005832782, + 0.0009373536, + 0.010552709, + 0.016097572, + 0.026281487, + -0.020885436, + -0.032816272, + 0.009122821, + -0.003642658, + -0.0032479828, + -0.021040717, + 0.008708735, + 0.030823486, + -0.004545235, + 0.009433384, + 0.01748217, + 0.03421381, + -0.010170974, + 0.0015277489, + -0.039596923, + -0.012558435, + 0.02888246, + 0.00837229, + 0.0072982563, + 0.01519176, + -0.007815863, + -0.0021076303, + 0.009562786, + 0.00030207212, + 0.00009371514, + -0.0046228757, + 0.0040761535, + 0.011186778, + 0.016226973, + -0.015748188, + 0.0040082177, + 0.021959469, + 0.036517162, + -0.02049723, + -0.017805675, + 0.009291043, + -0.018426802, + 0.0032415127, + 0.041434426, + -0.035973676, + -0.011549102, + 0.009724538, + 0.002754639, + -0.0017954487, + -0.001341734, + -0.004102034, + -0.015049418, + -0.01288841, + 0.0018569145, + -0.0029940319, + 0.0110250255, + 0.034343213, + 0.055849776, + 0.015101179, + 0.01589053, + 0.033152718, + -0.0014484903, + 0.0087928455, + 0.0023809914, + -0.0065024355, + -0.0027853716, + 0.00987335, + 0.0012762243, + -0.027873127, + -0.0019572007, + 0.023175845, + 0.00016347074, + 0.02357699, + 0.027588444, + -0.007912914, + -0.0021302756, + -0.015372923, + 0.028494256, + 0.009769829, + -0.011251478, + -0.0077058715, + 0.01586465, + 0.019229094, + 0.022671178, + 0.004791098, + -0.02968475, + 0.015579965, + 0.017715093, + -0.03856171, + 0.0033417991, + -0.019034991, + -0.027484922, + -0.000926031, + -0.020717213, + 0.020354887, + -0.014907076, + -0.034472615, + 0.028261332, + 0.023318186, + -0.016201094, + -0.002047782, + -0.01818094, + 0.035559587, + -0.018698547, + -0.009815119, + -0.016421076, + 0.0045064143, + 0.043634254, + 0.026126204, + -0.026993196, + 0.028753059, + 0.002591269, + -0.008864017, + -0.0067030084, + -0.026372068, + -0.016472837, + 0.007692931, + 0.022671178, + 0.009316923, + 0.027536683, + -0.006596252, + 0.0040308633, + -0.016252855, + 0.021687726, + 0.00646685, + -0.008171718, + 0.011736735, + 0.015424684, + -0.009252222, + -0.0074858884, + 0.00986688, + 0.034162052, + 0.012364333, + -0.011283829, + -0.021739487, + -0.0035132563, + 0.01445417, + 0.00044684028, + 0.015411743, + 0.0130372215, + 0.0069488715, + 0.017145727, + -0.03623248, + -0.018336222, + -0.030849367, + -0.012726658, + -0.023357008, + -0.010119214, + 0.025957981, + -0.0077705723, + 0.028649537, + 0.020238427, + 0.027226118, + 0.012364333, + -0.0064215595, + -0.003500316, + -0.012435504, + 0.019940803, + -0.020303128, + 0.0072335554, + 0.004037333, + 0.0078029227, + 0.017249247, + -0.0077899825, + -0.008876957, + -0.0038917563, + 0.0061336407, + -0.020290187, + 0.01749511, + -0.009232812, + -0.0095174955, + -0.023939315, + 0.0104103675, + -0.01666694, + 0.0027061133, + -0.006631837, + 0.030487042, + 0.005842487, + -0.0058133714, + -0.011245009, + -0.65384096, + -0.046429332, + 0.023887554, + -0.02202417, + 0.012344923, + 0.03035764, + 0.02357699, + 0.030849367, + 0.00004443129, + -0.02348641, + 0.012830179, + 0.0069553414, + 0.027743725, + -0.017702153, + -0.0037300042, + -0.024625145, + 0.022425316, + 0.014285948, + -0.011490871, + 0.0017356004, + -0.0060527646, + 0.020885436, + 0.00063164206, + -0.006389209, + 0.02820957, + 0.009045179, + 0.017702153, + -0.008488752, + -0.009679248, + 0.015308222, + -0.024366342, + 0.015321162, + -0.020354887, + -0.005528688, + 0.037552375, + -0.00085647753, + -0.0212607, + 0.015359983, + 0.0062953928, + 0.024819247, + -0.0097439485, + 0.008482282, + 0.008495222, + -0.01589053, + 0.0074729486, + 0.00025597276, + 0.018944409, + 0.0017792735, + 0.0377853, + -0.014492991, + 0.00914223, + -0.017081026, + -0.0031638716, + 0.014156546, + 0.03284215, + 0.0013207061, + 0.04461771, + 0.019306734, + 0.005751906, + 0.006282453, + 0.003338564, + -0.001672517, + -0.035326667, + -0.008132897, + -0.031366974, + 0.0043737777, + -0.038173504, + -0.03470554, + -0.023046443, + -0.02346053, + 0.010462128, + 0.011122077, + -0.01900911, + 0.020393709, + 0.028468376, + 0.0073306067, + 0.02952947, + 0.0032091623, + 0.011458521, + -0.012260811, + -0.0056645595, + -0.0049916706, + -0.03108229, + -0.0145447515, + 0.029348306, + -0.016615178, + -0.019280855, + -0.01667988, + 0.016511658, + 0.005020786, + 0.013496598, + 0.018646786, + 0.00041812926, + -0.006165991, + -0.00142908, + 0.026941435, + -0.004781393, + 0.0017339828, + -0.00045411912, + -0.001118516, + 0.006123936, + -0.012435504, + -0.0060074744, + 0.0031800468, + 0.024081657, + -0.015722306, + -0.027484922, + 0.03411029, + 0.01977258, + -0.00685829, + 0.008728145, + -0.04182263, + -0.015994051, + 0.0071947346, + 0.009362213, + -0.032221023, + 0.045989364, + 0.0014808407, + 0.0024553973, + -0.0042023202, + 0.017663334, + 0.0045064143, + -0.007945265, + -0.009232812, + 0.024482803, + 0.0016102424, + 0.0017792735, + -0.02509099, + -0.018439744, + 0.017986838, + 0.019086752, + 0.0007299065, + 0.008119957, + -0.00094058865, + -0.009426914, + -0.013276615, + 0.009595136, + -0.011070316, + 0.023887554, + -0.023952255, + -0.021674786, + -0.009051649, + 0.0006474129, + 0.0032318076, + -0.004878444, + -0.016563417, + -0.030150598, + -0.0001479021, + -0.028546017, + -0.0063374485, + -0.03403265, + -0.014648273, + -0.04016629, + 0.0066835983, + 0.025686238, + 0.001750158, + -0.03328212, + 0.00026648663, + -0.0035035512, + 0.016485777, + 0.0033029786, + -0.012551965, + 0.0028533076, + 0.005839252, + -0.008139367, + -0.021571264, + -0.020587811, + 0.023796974, + -0.0003390729, + -0.02505217, + -0.0032512178, + -0.008779906, + -0.0055675083, + -0.0077770427, + -0.024599263, + -0.004923735, + -0.0044158334, + -0.014790615, + -0.00012242615, + -0.0073370766, + -0.00047595563, + 0.008074666, + -0.0029244786, + 0.010772692, + 0.032945674, + 0.000028913193, + 0.016861042, + 0.018413862, + -0.017042205, + 0.006243632, + 0.002578329, + -0.0057195555, + -0.014609452, + -0.017728034, + 0.0074664783, + 0.0052569443, + -0.005463987, + -0.0063180383, + 0.01062388, + -0.0060333544, + 0.025401555, + -0.0032835682, + 0.018802067, + -0.028261332, + 0.013406017, + -0.02511687, + 0.011542632, + -0.008954598, + -0.008391701, + 0.028623657, + 0.017792735, + -0.042935487, + 0.0024246646, + -0.019345555, + 0.017960956, + -0.01291429, + -0.020950137, + 0.016861042, + -0.019707879, + 0.0038141152, + 0.005011081, + 0.0037720597, + 0.02958123, + -0.006227457, + -0.015023538, + -0.01065623, + 0.023227606, + 0.024547504, + 0.0013902596, + -0.013418957, + -0.018879708, + -0.012299632, + -0.0061142305, + 0.013444837, + -0.017676273, + 0.00681947, + 0.0050434317, + -0.017844494, + -0.0035164913, + 0.009756888, + -0.006696538, + 0.03266099, + 0.0021852714, + -0.005451047, + 0.029814152, + -0.0038335256, + 0.007660581, + 0.028313093, + -0.027510803, + 0.01138088, + 0.0070847436, + -0.00042823877, + -0.01749511, + 0.02197241, + 0.018672666, + -0.0107468115, + 0.045212954, + -0.012351393, + 0.01290135, + 0.012610196, + -0.0020332243, + -0.017236307, + 0.012707247, + -0.021623025, + 0.014324768, + -0.009808649, + -0.025621537, + -0.00493991, + 0.012331982, + -0.012293162, + 0.000027598957, + 0.010843863, + 0.012991931, + 0.0070265126, + 0.009316923, + -0.00681947, + 0.0012835031, + -0.018620905, + 0.025699178, + 0.0076864613, + -0.006140111, + -0.020898376, + 0.021726547, + 0.00683241, + -0.0080681965, + -0.008268769, + -0.021687726, + 0.01440241, + -0.012759008, + 0.009718068, + 0.016511658, + 0.027459042, + 0.020419588, + -0.0082364185, + -0.00569691, + -0.030538803, + 0.007938795, + 0.0078029227, + 0.021765366, + 0.0044352436, + -0.009899231, + -0.0009575726, + -0.041356783, + -0.013690701, + 0.017042205, + 0.010953855, + 0.004710222, + -0.015631726, + -0.026203845, + -0.04927617, + -0.012564906, + 0.00022584641, + -0.01220258, + -0.0042929016, + -0.00569691, + -0.008398171, + -0.044255383, + -0.009957462, + 0.04557528, + 0.0258674, + -0.017365709, + -0.028390734, + -0.008689324, + 0.0007481036, + 0.07049805, + 0.02743316, + -0.013393076, + 0.01587759, + -0.00081765704, + -0.010455658, + -0.0034841408, + -0.0019620534, + 0.008022905, + -0.008935188, + 0.003068438, + 0.002510393, + 0.0032593054, + -0.0079582045, + 0.0036361879, + -0.0070071025, + -0.005628974, + -0.019358495, + 0.011743205, + -0.03113405, + -0.02127364, + 0.017637452, + -0.005758376, + 0.020846615, + -0.0070912135, + 0.028002528, + 0.014117726, + 0.00058109453, + 0.01667988, + -0.026061503, + 0.0099121705, + 0.023072325, + -0.012739598, + 0.0050369613, + -0.027717846, + -0.030487042, + -0.010889154, + 0.021713607, + 0.0070847436, + -0.003581192, + 0.022412375, + 0.0019749936, + -0.0024780426, + -0.02274882, + -0.0035456067, + 0.025401555, + -0.016175212, + 0.011704384, + -0.0076799914, + -0.015554085, + 0.007505299, + -0.007117094, + -0.0017275128, + -0.0069359313, + 0.0052342988, + -0.011173837, + -0.033825606, + -0.014040085, + -0.003869111, + -0.022127692, + 0.0061271708, + 0.014040085, + 0.009750418, + 0.00084596366, + -0.018310342, + -0.032790393, + -0.013975384, + 0.0027837541, + -0.008482282, + -0.02192065, + -0.020794854, + -0.0036232478, + -0.0073241363, + -0.004244376, + 0.03364444, + 0.02655323, + 0.025336854, + -0.023589931, + 0.005011081, + 0.033592682, + 0.0008322147, + -0.010229205, + 0.006690068, + 0.0056225043, + 0.010138623, + -0.0012592403, + 0.035896033, + -0.009996282, + -0.0048428588, + 0.006224222, + 0.030668205, + -0.0019539658, + 0.021480683, + -0.015735248, + -0.007867624, + -0.0036620682, + 0.01290782, + 0.016589299, + -0.025453316, + -0.024443982, + 0.013574239, + -0.023991076, + 0.0052342988, + -0.017158667, + -0.009938051, + 0.0038270555, + 0.008508163, + -0.0028436026, + -0.011982598, + 0.013794222, + 0.011866136, + -0.0057195555, + -0.016654, + -0.005848957, + 0.008844607, + 0.008113487, + 0.009614547, + 0.024172239, + -0.021403043, + -0.0019086752, + 0.033049196, + -0.046843417, + 0.030823486, + -0.0040632137, + -0.030927008, + -0.0005730069, + 0.008993419, + -0.0039014614, + 0.004930205, + 0.0082881795, + -0.018413862, + 0.03656892, + -0.0041376194, + -0.011924367, + -0.032428067, + -0.010073923, + 0.015450563, + 0.014764735, + -0.018620905, + 0.0010384487, + -0.011898487, + 0.01366482, + -0.008139367, + -0.018659726, + -0.03871699, + -0.029891795, + -0.0028565426, + 0.017158667, + -0.004260551, + 0.026035624, + -0.0045937607, + 0.0068906406, + -0.011963188, + 0.0023098204, + -0.022412375, + -0.012060239, + -0.01441535, + -0.012681367, + 0.021519504, + 0.010520359, + 0.008935188, + 0.0019151452, + 0.0070200423, + 0.009724538, + 0.0039273417, + 0.0085146325, + -0.016239913, + -0.0073758974, + 0.0008872104, + 0.016188154, + 0.010403897, + 0.008669915, + 0.010733872, + 0.012713717, + 0.008728145, + 0.036931247, + -0.017922137, + -0.0110250255, + -0.019552598, + -0.032324545, + 0.013781281, + -0.014285948, + -0.017378649, + -0.0008221052, + -0.0053604655, + -0.000670867, + 0.005454282, + 0.0033547392, + 0.0011872606, + -0.016343435, + 0.036206596, + 0.0006227457, + 0.033722084, + -0.019707879, + 0.01441535, + 0.0075829397, + -0.019863162, + -0.014764735, + -0.0065380214, + -0.004344662, + 0.0041635, + 0.018931469, + 0.008967538, + -0.020303128, + 0.0007489124, + -0.008087606, + 0.013354256, + 0.0043964228, + -0.016356375, + -0.021830067, + -0.030927008, + -0.017210428, + -0.017365709, + -0.032143384, + 0.012571376, + -0.004402893, + -0.045471758, + 0.010552709, + 0.007136504, + -0.035430185, + -0.009996282, + -0.010830923, + 0.026165025, + 0.012978991, + 0.0032835682, + 0.017106906, + -0.010319786, + 0.0036103076, + -0.023978136, + -0.027795486, + 0.00456788, + 0.026734393, + 0.03737121, + -0.028494256, + 0.027303759, + 0.010073923, + -0.015411743, + 0.0009624252, + -0.025530957, + -0.00835288, + -0.007822333, + 0.017042205, + -0.025919162, + 0.011225598, + -0.011613803, + 0.0046714013, + -0.011050906, + -0.019086752, + 0.02120894, + -0.003788235, + -0.002358346, + 0.020160785, + -0.0438413, + 0.03258335, + 0.021687726, + 0.00911635, + -0.019565538, + 0.0020639573, + -0.003642658, + 0.0013465865, + -0.0009041944, + 0.017275129, + -0.00454847, + 0.009659837, + 0.0063406834, + 0.011911427, + -0.022334734, + -0.013354256, + 0.0005232681, + 0.026385007, + -0.018517384, + 0.0066447775, + -0.009672778, + 0.017986838, + 0.048189197, + -0.014182427, + -0.0044417134, + -0.0016708996, + -0.02355111, + 0.0037526495, + 0.003720299, + -0.016175212, + -0.00014274626, + 0.02129952, + -0.017689213, + -0.008909307, + -0.013858923, + -0.011989068, + 0.004474064, + -0.019358495, + -0.02199829, + -0.010086863, + 0.0142083075, + 0.009633957, + 0.004855799, + -0.021040717, + 0.00906459, + -0.008443461, + -0.02494865, + 0.035093743, + -0.0069359313, + 0.007667051, + -0.014868256, + 0.021428922, + -0.0076799914, + -0.023085264, + 0.04404834, + 0.0065768417, + -0.029011862, + -0.013910683, + 0.016796341, + -0.012972521, + 0.0029180085, + -0.013231324, + -0.0015689956, + -0.006677128, + 0.012325512, + -0.001672517, + 0.0044546537, + 0.0034776707, + -0.012733128, + 0.0047619827, + 0.0027869893, + -0.0049043247, + 0.02114424, + -0.0004650374, + 0.007751162, + 0.018245641, + -0.024379281, + -0.014855316, + -0.012810769, + 0.007518239, + -0.0084564015, + -0.006922991, + -0.010805042, + -0.0054995725, + -0.0052116537, + -0.007738222, + -0.004655226, + -0.004014688, + 0.007447068, + 0.02503923, + -0.00015700066, + 0.027148478, + -0.011037965, + 0.005017551, + -0.018491503, + -0.04026981, + -0.03721593, + -0.007207675, + 0.007000632, + 0.0034582606, + 0.009808649, + -0.044565946, + -0.03405853, + 0.020380769, + -0.002689938, + -0.02048429, + 0.025207452, + 0.007964675, + 0.030202357, + -0.0056580896, + -0.024676906, + 0.03263511, + 0.008081136, + -0.006961812, + -0.019966682, + -0.011102666, + 0.0030797606, + -0.024806308, + 0.00606247, + 0.0038497008, + -0.0074988287, + -0.030098837, + 0.042210836, + 0.0031881344, + -0.013910683, + -0.019177333, + 0.0018763248, + 0.0010344048, + 0.0024634849, + 0.014078906, + 0.039648682, + 0.01744335, + -0.012448444, + -0.02052311, + -0.00058271206, + 0.0056030937, + 0.033980887, + -0.016369315, + -0.0035973673, + 0.009336333, + -0.012241402, + -0.011665564, + -0.014842375, + 0.00986688, + 0.013975384, + 0.025065111, + 0.011710854, + -0.014298889, + 0.008281709, + 0.018491503, + -0.007712342, + -0.027096717, + -0.012480794, + -0.017766854, + -0.032764513, + -0.02582858, + 0.014518871, + -0.021066597, + 0.0048202137, + -0.009756888, + -0.006288923, + -0.013380136, + -0.031004649, + -0.02743316, + -0.010242145, + -0.009401034, + 0.01891853, + 0.019190272, + -0.0030393226, + 0.008249358, + -0.032039862, + -0.020096084, + -0.018789127, + -0.015411743, + -0.01371658, + -0.04459183, + -0.014687094, + 0.0060980553, + -0.012196111, + -0.01515294, + 0.0024133418, + 0.007343547, + 0.025142752, + 0.022826461, + 0.23830618, + 0.0027449336, + -0.0038464656, + 0.029814152, + 0.0019572007, + 0.032945674, + 0.028338974, + 0.004490239, + 0.029193025, + 0.04707634, + -0.0068647605, + 0.003869111, + 0.0036264828, + 0.006974752, + 0.01965612, + -0.011982598, + -0.047024578, + -0.015748188, + -0.008113487, + 0.018543264, + 0.014078906, + 0.00759588, + 0.0093492735, + -0.0057486705, + 0.026294427, + 0.010973264, + -0.0060948203, + 0.00028124652, + 0.0006882553, + 0.0050466666, + 0.0014218013, + -0.017948017, + 0.0050434317, + 0.004389953, + -0.000111103494, + -0.0033806195, + -0.011814375, + -0.004639051, + 0.03273863, + 0.023732273, + 0.0105268285, + -0.0125907855, + -0.041434426, + -0.0070718033, + -0.0036717735, + 0.008210538, + -0.01890559, + 0.0015277489, + 0.02045841, + 0.0027724316, + -0.020005504, + -0.006327743, + 0.017003383, + 0.027950767, + -0.0020186666, + 0.019099692, + 0.016472837, + -0.021079538, + 0.018491503, + -0.0033320938, + -0.018387983, + 0.038354665, + -0.01444123, + 0.010824453, + 0.0060074744, + -0.011296769, + 0.0018569145, + -0.002000874, + 0.032479826, + -0.016861042, + 0.021027777, + 0.017016325, + 0.00170325, + 0.0070718033, + 0.016576359, + -0.006159521, + 0.020393709, + -0.0101321535, + 0.018620905, + -0.0005256944, + -0.0002980283, + -0.025414495, + -0.026294427, + 0.025634477, + -0.005528688, + -0.019345555, + 0.008721675, + -0.004389953, + 0.022955863, + -0.007925854, + -0.002916391, + 0.017365709, + -0.0039952775, + 0.014273008, + 0.015722306, + 0.016628118, + 0.0019636708, + 0.01586465, + -0.020212546, + 0.0048105083, + -0.02808017, + 0.005389581, + -0.008327, + 0.0052828244, + -0.021674786, + 0.017184546, + -0.013218384, + -0.0066383076, + 0.013302496, + 0.00023393401, + -0.003108876, + -0.013470718, + 0.011199717, + -0.021066597, + 0.019280855, + 0.007880564, + 0.0038529357, + -0.012597256, + -0.0227747, + -0.009511026, + -0.00913576, + -0.02743316, + -0.0156058455, + 0.009316923, + 0.0007266714, + -0.018064478, + 0.005897483, + 0.015062358, + 0.008948128, + -0.034317333, + 0.015463504, + -0.020665452, + 0.023253486, + -0.016058752, + -0.007997026, + 0.010067453, + -0.0034388504, + -0.011212658, + 0.008449932, + -0.000091642694, + -0.0069424016, + -0.0095174955, + 0.011329119, + -0.018167999, + 0.0075635295, + -0.0077641024, + -0.019565538, + -0.023369947, + -0.014091846, + -0.023149965, + -0.0051307776, + -0.0024101068, + -0.0048913844, + -0.005302235, + 0.0061271708, + -0.005444577, + 0.00906459, + -0.02278764, + 0.0003433189, + 0.021403043, + -0.0025217158, + 0.004344662, + 0.013250735, + -0.0039014614, + -0.022813521, + 0.01603287, + -0.16356376, + 0.022554718, + 0.018387983, + -0.0018536794, + -0.0009373536, + 0.010817982, + 0.014661213, + 0.038949914, + -0.019707879, + 0.025246272, + 0.010999145, + -0.011367939, + -0.027769607, + -0.01890559, + 0.004477299, + 0.013897743, + -0.006897111, + 0.0027805192, + 0.012416094, + 0.017236307, + 0.009672778, + -0.024832187, + 0.004085859, + 0.013263674, + 0.008475812, + -0.010921504, + -0.026993196, + 0.026708512, + 0.016162273, + 0.0020186666, + -0.008941658, + -0.00571632, + 0.010824453, + 0.0035326665, + 0.0049916706, + 0.013457777, + 0.0036038375, + 0.003788235, + -0.012616666, + -0.005687205, + -0.00841111, + 0.024146358, + -0.00571632, + 0.01821976, + -0.014234188, + -0.00050062285, + 0.029943554, + 0.016925743, + 0.0009737478, + -0.020406649, + 0.010313316, + -0.03046116, + -0.0061045256, + -0.002875953, + 0.011012085, + 0.014932957, + 0.03335976, + 0.008385231, + 0.004771688, + 0.012733128, + 0.017986838, + -0.035714872, + 0.007647641, + 0.004609936, + 0.0142083075, + -0.013153683, + 0.007673521, + 0.0047425725, + -0.012759008, + -0.004859034, + -0.014570632, + -0.011691444, + 0.021079538, + -0.01371658, + 0.006813, + 0.030150598, + -0.012319042, + -0.014182427, + 0.0046681664, + 0.012959581, + -0.0058295466, + 0.0394934, + -0.0154376235, + -0.003196222, + 0.0085146325, + 0.0020623396, + -0.01906087, + -0.0030182947, + -0.032298665, + -0.0079582045, + 0.01215082, + -0.03346328, + 0.0030328524, + -0.029814152, + 0.02193359, + 0.011102666, + -0.008553453, + -0.005020786, + 0.007162384, + -0.0154893845, + 0.006690068, + -0.016265795, + -0.013845982, + 0.017262187, + 0.028571896, + 0.0064053843, + -0.01811624, + 0.016912803, + 0.03423969, + 0.0052342988, + -0.016912803, + 0.024780426, + 0.01220258, + 0.030176478, + 0.024081657, + 0.011697914, + 0.0049754954, + -0.02952947, + 0.00042015116, + 0.017210428, + 0.038949914, + -0.008145837, + -0.030512922, + 0.022929981, + -0.007130034, + -0.009769829, + -0.10212383, + 0.009841, + 0.012500205, + 0.014273008, + 0.0032560704, + 0.019410256, + 0.009433384, + 0.021726547, + 0.00757, + 0.03568899, + -0.0010578589, + -0.013418957, + -0.0050499015, + 0.009038709, + -0.011290299, + -0.014803555, + -0.008974008, + -0.027226118, + -0.021778308, + 0.012836649, + 0.0009915406, + -0.022981742, + 0.004102034, + -0.0073758974, + 0.012765478, + -0.011704384, + -0.02808017, + 0.008003496, + 0.01666694, + 0.011581453, + 0.019474957, + -0.014130666, + -0.01603287, + -0.0035294315, + -0.01366482, + -0.008993419, + -0.01752099, + -0.032013983, + 0.012778418, + -0.045627043, + 0.009316923, + 0.005451047, + 0.002000874, + -0.047412783, + 0.0005968654, + -0.003568252, + -0.02268412, + 0.0038205853, + -0.0015350278, + -0.009310452, + 0.012002008, + 0.013535419, + -0.006677128, + -0.01140029, + 0.045989364, + -0.004205555, + 0.011633214, + 0.030719966, + -0.00837229, + -0.0033288589, + -0.0020380768, + 0.017999778, + 0.0067288885, + 0.028649537, + 0.0013740844, + -0.01827152, + -0.028364854, + 0.0013069572, + 0.019306734, + -0.036775965, + -0.0042087906, + 0.0068712304, + -0.023512289, + 0.0109150335, + -0.02122188, + 0.00030106117, + -0.0228394, + -0.0062759826, + 0.023434648, + -0.007447068, + -0.02968475, + -0.029296545, + -0.004412598, + -0.006146581, + 0.011335589, + 0.027691964, + -0.023253486, + 0.0020041089, + 0.0052828244, + -0.008605214, + 0.0011541015, + 0.052821778, + 0.015204701, + -0.030538803, + 0.0015131911, + 0.011329119, + -0.0003821394, + 0.00026385815, + 0.010293906, + -0.0089610685, + -0.024055777, + -0.0014412114, + -0.051165435, + 0.017909195, + -0.003632953, + -0.022205332, + 0.0068259398, + 0.008831667, + 0.012875469, + -0.020096084, + -0.006324508, + 0.013833042, + -0.019462017, + 0.0062533375, + -0.015722306, + -0.0019410256, + 0.0011904957, + 0.019358495, + 0.029348306, + 0.006651248, + 0.009174581, + -0.012021419, + -0.007453538, + 0.008132897, + 0.0125325555, + 0.013004871, + -0.019850222, + 0.01436359, + -0.017896255, + -0.014803555, + -0.02494865, + -0.012196111, + 0.031651657, + -0.0071688546, + 0.011574983, + 0.047179863, + -0.022218272, + -0.019992564, + -0.020587811, + 0.035404306, + 0.021610085, + -0.029917674, + -0.017805675, + -0.029374188, + -0.00052933383, + -0.022502957, + 0.004037333, + 0.03423969, + 0.010462128, + -0.010151564, + 0.016809281, + -0.008838137, + 0.016226973, + 0.028934222, + 0.017624512, + -0.012377273, + -0.015851708, + -0.0061174654, + 0.022929981, + -0.009562786, + 0.008217008, + -0.025660358, + 0.0019992564, + 0.005059607, + 0.022619419, + 0.009653367, + 0.010798573, + 0.0060462947, + 0.015579965, + 0.0045387647, + 0.0041343844, + 0.00032754807, + -0.023227606, + 0.009569256, + 0.022606477, + -0.0020170491, + 0.018866768, + -0.014014205, + -0.0069359313, + 0.005975124, + -0.014583572, + 0.019940803, + 0.007304726, + -0.008799316, + -0.021648906, + 0.010073923, + 0.043323692, + -0.0100803925, + -0.032039862, + 0.015476444, + -0.005693675, + -0.0059298333, + -0.03038352, + 0.0051728333, + -0.021131298, + -0.0024084894, + -0.0005022404, + -0.010319786, + -0.017663334, + -0.0011775555, + 0.010824453, + 0.03719005, + 0.0006716757, + -0.009970401, + 0.0009041944, + -0.036646564, + -0.017236307, + 0.020743093, + -0.01441535, + -0.018090358, + -0.02127364, + 0.01673164, + 0.0017081025, + 0.004037333, + -0.0069294614, + 0.010397427, + -0.0035035512, + 0.013406017, + -0.028157812, + -0.020846615, + -0.022619419, + 0.016058752, + 0.013897743, + 0.010274495, + 0.001939408, + 0.011555572, + 0.028701298, + 0.024883948, + 0.029141264, + -0.019254973, + 0.009808649, + 0.021648906, + 0.010093333, + -0.010966795, + 0.008449932, + -0.0061692265, + -0.01827152, + -0.022347674, + -0.0022386494, + 0.021532444, + -0.0040114527, + 0.059680067, + 0.00533135, + -0.009989812, + 0.028390734, + -0.0008010774, + 0.0020801325, + 0.024016956, + -0.0064377347, + -0.0046843416, + -0.020872494, + -0.004250846, + 0.010753281, + 0.026242666, + -0.004736102, + -0.014945897, + 0.0066447775, + -0.036284238, + 0.021687726, + -0.033670325, + -0.0037364743, + 0.006586547, + -0.017948017, + 0.01590347, + 0.0029066857, + -0.026837913, + -0.010287436, + 0.009569256, + -0.0020801325, + -0.0066835983, + -0.024793366, + 0.023214666, + -0.016899863, + -0.038820513, + -0.0100803925, + -0.0028516902, + -0.023033503, + -0.025543896, + -0.019138511, + -0.00007218189, + 0.0039920425, + 0.00161833, + 0.00091389957, + -0.032298665, + 0.0037300042, + -0.0062371623, + -0.0058004316, + -0.01604581, + 0.0069359313, + -0.03030588 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 18, + "total_tokens": 18 + } +} +1079 1730 +POST https://api.openai.com/v1/chat/completions HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 877 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the chair beside the desk is beige.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the desk is orange.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is black.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the house is blue.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What colors are all of the pieces of furniture next to the desk and the desk itself?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 904 +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:43:14 GMT +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 1005 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +X-Content-Type-Options: nosniff +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999845 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_442a06b118034bedb002db787053ef83 + +{ + "id": "chatcmpl-ERDnN3ELOURceGRK0fvLKMU4OKYAT", + "object": "chat.completion", + "created": 1790156593, + "model": "gpt-4.1-nano-2025-04-14", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "The desk is orange. The chair beside the desk is beige, and the lamp beside the desk is black.", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 144, + "completion_tokens": 22, + "total_tokens": 166, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_d3d6c52e18" +} diff --git a/vectorstores/inmemory/testdata/TestInMemoryStoreRest.httprr b/vectorstores/inmemory/testdata/TestInMemoryStoreRest.httprr new file mode 100644 index 000000000..ed054bfb2 --- /dev/null +++ b/vectorstores/inmemory/testdata/TestInMemoryStoreRest.httprr @@ -0,0 +1,4721 @@ +httprr trace v1 +256 67812 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 61 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["tokyo","potato"]}HTTP/2.0 200 OK +Content-Length: 66856 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:27:30 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 104 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-qpwjk +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999998 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_45c7554365f44d10a7bba667ad60c53a + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + -0.008533556, + 0.0014080032, + -0.010539479, + -0.014651955, + -0.010988966, + 0.012142874, + -0.036978744, + 0.00235981, + -0.014812965, + -0.038239993, + 0.0062223845, + -0.015269161, + 0.011740348, + -0.02619104, + -0.015228909, + -0.01734888, + 0.022621974, + -0.01937493, + 0.017093947, + -0.01806001, + -0.009070258, + 0.015618018, + -0.004125894, + -0.027371783, + -0.012498439, + -0.014504362, + 0.007305851, + -0.0207301, + 0.01004303, + -0.020864276, + 0.01631573, + -0.013820067, + -0.010646819, + -0.017254958, + 0.0031111923, + -0.004622343, + -0.010606566, + -0.008741528, + 0.0027019572, + -0.0042097536, + 0.005702455, + -0.016235225, + -0.0030893888, + -0.012578945, + -0.023977146, + 0.0073729386, + -0.01140491, + 0.012968053, + -0.0033761887, + 0.014168924, + 0.010807829, + 0.018999238, + -0.0352613, + -0.0080706505, + -0.02373563, + -0.0012956313, + -0.030779839, + -0.0047934167, + 0.0034449536, + 0.0035858378, + -0.002752273, + -0.006460546, + -0.01745622, + 0.011847689, + 0.018100264, + -0.018140515, + -0.011136559, + 0.02836468, + -0.017697737, + -0.0014717365, + 0.022943996, + 0.020649595, + -0.0025107574, + 0.00168474, + 0.036549382, + -0.01200199, + 0.0014599962, + -0.00029015433, + 0.008305457, + 0.0134510845, + 0.021763252, + -0.042372596, + 0.004920883, + -0.0032285957, + 0.009157471, + 0.010982257, + -0.010707198, + 0.032604624, + 0.0072387634, + -0.004162792, + 0.010136953, + 0.008540265, + 0.010901752, + 0.011069471, + -0.02836468, + -0.0015295997, + -0.007654707, + 0.048866685, + -0.02313184, + -0.013196152, + -0.006688644, + 0.0035221046, + 0.0070643355, + -0.00834571, + -0.032336272, + 0.00905684, + 0.015336249, + -0.0129278, + 0.0025057257, + -0.0144238565, + -0.00014235172, + 0.031504385, + -0.0054039145, + -0.05342865, + -0.02346728, + -0.018905316, + -0.0015648208, + -0.018650383, + -0.008828742, + -0.012800334, + 0.009479493, + 0.010660237, + 0.026445974, + 0.0047397465, + 0.025775095, + -0.0072119283, + -0.0086408965, + -0.0103717595, + 0.0003601771, + -0.010519352, + 0.03469776, + 0.01069378, + 0.0101101175, + 0.015953457, + -0.028820878, + 0.015483842, + -0.01615472, + 0.009613669, + -0.019254172, + -0.009076967, + 0.0037502027, + 0.010982257, + -0.008842159, + 0.010579731, + 0.0066651637, + 0.021427812, + 0.029116064, + 0.005746062, + 0.0036428624, + -0.004830315, + -0.0010306349, + -0.011740348, + 0.021146044, + -0.000048035847, + 0.0046693045, + 0.006950286, + 0.029760106, + 0.008969626, + 0.00024507978, + 0.0132632395, + -0.000092088354, + 0.0027002802, + 0.03475143, + -0.019683532, + 0.0006000157, + 0.023037918, + 0.0075540757, + 0.020985033, + 0.0032185325, + -0.0101101175, + -0.013444376, + 0.01418234, + -0.038535178, + 0.01042543, + 0.002062947, + 0.023588037, + 0.01718787, + 0.015779028, + -0.024191827, + -0.009123928, + -0.0011388138, + 0.0026583504, + 0.03359752, + 0.020864276, + -0.011331113, + 0.0046625957, + 0.029116064, + 0.018194186, + -0.0019438663, + -0.008251788, + 0.022353623, + 0.031584892, + 0.0312092, + 0.005907072, + -0.67409724, + -0.028337847, + 0.014370186, + -0.00327388, + 0.026123952, + 0.01129086, + 0.014799547, + 0.0065444056, + -0.013303492, + 0.013706018, + -0.03378537, + 0.014276263, + -0.014115253, + -0.014262846, + -0.010707198, + -0.00095683837, + 0.012773499, + -0.009217851, + 0.0007991823, + 0.01025771, + -0.0012327366, + 0.016932936, + -0.0148398, + 0.0017694383, + 0.013323618, + -0.01718787, + 0.00943924, + -0.01140491, + -0.009727717, + 0.023936894, + -0.034295235, + 0.04086983, + 0.0069435774, + -0.015872952, + 0.035824835, + -0.012116039, + -0.024849286, + 0.026553314, + 0.025077384, + 0.040011108, + -0.004266778, + 0.0004216043, + -0.0020277258, + 0.0064202934, + 0.0042131077, + 0.004595508, + 0.03268513, + -0.03104819, + 0.0066752266, + -0.014101836, + 0.015779028, + -0.037032414, + -0.021964515, + -0.01877114, + -0.0018616838, + 0.0050550587, + 0.010921879, + -0.022621974, + -0.0007715086, + -0.00048345077, + -0.011720222, + -0.0025476555, + -0.021011868, + -0.020220235, + -0.008245079, + 0.008587226, + -0.011988573, + -0.018261272, + 0.0036529256, + -0.021722998, + 0.010083282, + 0.015000811, + -0.010318089, + -0.0022273117, + 0.013873737, + 0.015524095, + 0.031799573, + -0.03126287, + -0.001854975, + -0.008218244, + 0.0069368687, + 0.011592755, + -0.017805077, + 0.0018868417, + 0.02341361, + -0.02946492, + -0.035798, + -0.010660237, + 0.020891111, + -0.018382031, + 0.0048739216, + -0.003475143, + -0.001501926, + 0.001458319, + 0.00017883067, + 0.005222778, + -0.0006138525, + -0.012592362, + 0.0035321678, + -0.0051255007, + -0.016409652, + -0.008976335, + 0.013390706, + 0.0005387981, + -0.0105126435, + -0.002769045, + -0.016396236, + 0.017308628, + 0.028901383, + -0.0122435065, + 0.01391399, + -0.010687072, + -0.014638538, + -0.00867444, + 0.021561988, + -0.024151573, + 0.021374144, + 0.009533163, + 0.026754577, + 0.010391885, + 0.0063263704, + -0.003683115, + 0.018194186, + 0.014772712, + 0.01233072, + 0.023574619, + 0.014973976, + -0.0062123216, + -0.0068831984, + 0.0053066374, + -0.01074745, + 0.012498439, + 0.016409652, + -0.016181555, + 0.016033962, + -0.009975942, + -0.000742577, + -0.005424041, + 0.01227705, + -0.042855624, + -0.040950336, + -0.013732853, + -0.0014901856, + 0.0012042243, + 0.013565134, + -0.028176837, + -0.017885583, + 0.0066047846, + -0.01679876, + 0.007715086, + -0.006889907, + -0.004135957, + -0.025989776, + 0.013303492, + -0.008305457, + -0.015067899, + -0.0033543853, + -0.0015681752, + -0.013981078, + 0.009123928, + 0.006661809, + 0.0064639, + -0.036737226, + 0.0028461958, + 0.0015623049, + -0.025721425, + 0.010264419, + 0.015966874, + -0.00055724726, + -0.017992923, + -0.017214704, + -0.019267589, + -0.017979505, + 0.0027355012, + 0.020394662, + 0.006956995, + 0.0052999286, + -0.013008306, + -0.0012218348, + 0.006393458, + 0.006074792, + -0.022474382, + -0.0044378517, + 0.004830315, + 0.025949525, + -0.029062394, + 0.007943184, + 0.019764038, + -0.0070710443, + 0.0040554516, + -0.01293451, + 0.019790873, + 0.003022301, + 0.0042365887, + 0.018543042, + -0.010338215, + 0.013350453, + 0.009419113, + -0.020394662, + 0.018046593, + 0.033758532, + -0.026043447, + 0.0045217113, + -0.01004303, + 0.012679576, + -0.02384297, + -0.0043674097, + -0.020287322, + 0.025493328, + 0.010049738, + 0.0030960976, + -0.017120782, + -0.0055582165, + 0.012954636, + -0.0036696976, + 0.04282879, + 0.006990539, + 0.019401764, + -0.026123952, + -0.0081847, + 0.017590396, + -0.033463348, + -0.009855184, + -0.017550144, + -0.012800334, + 0.010143661, + 0.001518698, + 0.03236311, + 0.01806001, + -0.006651746, + -0.02941125, + -0.021360725, + -0.004068869, + 0.023990564, + -0.0112237735, + -0.035610154, + 0.00096606294, + -0.027197355, + 0.034724597, + 0.008573809, + 0.020824024, + 0.01795267, + 0.035180792, + -0.024621187, + 0.007319269, + 0.006722188, + 0.03612002, + 0.013498046, + -0.0084262155, + 0.022554886, + -0.011586047, + -0.003938048, + -0.00496449, + 0.0010440524, + 0.011344531, + -0.029169735, + 0.01681218, + -0.0015061189, + 0.016543828, + 0.02700951, + 0.0045082937, + 0.0021702873, + 0.011867815, + 0.0019992136, + 0.0035053326, + -0.0006184648, + 0.026620401, + 0.015014228, + -0.0021652556, + 0.008298749, + -0.01729521, + 0.009144054, + -0.007218637, + -0.005313346, + 0.017483056, + -0.017415969, + -0.022554886, + -0.013873737, + 0.014933723, + 0.013229695, + -0.0137127265, + -0.051335514, + -0.0033543853, + 0.008318875, + -0.0014591576, + -0.030189468, + -0.0013761366, + -0.022138942, + -0.015457007, + 0.02078377, + 0.010613275, + 0.023668543, + 0.013940825, + -0.02085086, + -0.017845329, + -0.006651746, + 0.019240754, + -0.0155375125, + -0.0032537538, + -0.008446342, + 0.0064538373, + -0.012397808, + -0.009405696, + 0.0112707345, + 0.013498046, + 0.0134510845, + 0.009211142, + -0.0055414443, + -0.00785597, + 0.00012274954, + 0.002577845, + -0.013571843, + -0.017375715, + 0.01309552, + 0.010344924, + -0.0066148476, + -0.010217457, + 0.0024151574, + 0.02407107, + -0.007319269, + -0.017590396, + -0.0019891504, + -0.02204502, + -0.004588799, + 0.06606797, + 0.00845976, + 0.013524882, + -0.0010541156, + 0.006265992, + 0.0022558242, + -0.020287322, + 0.00009701511, + 0.012847295, + 0.007507114, + 0.0054609394, + -0.0066819354, + 0.0010390208, + 0.0070643355, + 0.00046835604, + -0.002802589, + -0.011559212, + -0.019388346, + 0.022782985, + -0.023386775, + 0.00089226646, + 0.0036864693, + 0.008285332, + 0.02252805, + 0.0006360753, + -0.0050550587, + 0.019093161, + 0.021400979, + 0.015483842, + -0.02400398, + -0.0009954139, + 0.012921092, + -0.015631435, + 0.012592362, + -0.010734033, + 0.002760659, + 0.004102413, + 0.0155375125, + 0.005021515, + -0.009975942, + 0.012216671, + 0.01932126, + 0.0026801538, + -0.0056991004, + 0.021977931, + -0.025198141, + -0.015148404, + 0.018247856, + -0.016731674, + -0.029947951, + 0.03389271, + 0.0076681245, + -0.04014528, + -0.020864276, + -0.014075001, + 0.013115646, + -0.020917946, + -0.018690635, + -0.000033255586, + 0.02280982, + 0.007996854, + -0.050181605, + 0.006658455, + -0.009727717, + -0.028176837, + -0.030457819, + -0.01167997, + -0.0046022166, + -0.028337847, + -0.002445347, + -0.007647998, + -0.021790087, + -0.024862703, + 0.024044234, + 0.019442016, + -0.024232078, + 0.004457978, + -0.00992898, + 0.00055389287, + 0.03617369, + -0.030350478, + -0.013430959, + -0.021105792, + -0.008204826, + -0.02476878, + 0.0201934, + 0.02941125, + -0.03410739, + -0.009606959, + -0.0005840823, + 0.011378075, + -0.0016713225, + 0.011284152, + 0.020649595, + 0.0148263825, + -0.011451871, + 0.0111768115, + 0.029706435, + -0.0045116483, + -0.01663775, + 0.0151349865, + -0.00943924, + 0.0016193294, + 0.012062369, + 0.00774863, + 0.02117288, + 0.01626206, + 0.019240754, + -0.011304278, + 0.00041321834, + 0.041943233, + -0.014558032, + 0.0118879415, + 0.017724572, + -0.0072320546, + 0.021454647, + 0.007339395, + 0.029438084, + 0.01893215, + -0.01462512, + 0.0055246726, + -0.023266016, + 0.016355982, + 0.017147617, + 0.011384783, + -0.003934694, + 0.019079743, + -0.007715086, + -0.008157865, + 0.00466595, + -0.0055615706, + 0.011995282, + -0.015054481, + -0.018019758, + -0.023588037, + 0.0018214312, + -0.027854815, + 0.013397414, + 0.0056957463, + -0.03628103, + -0.010063156, + -0.004987971, + 0.008741528, + -0.002576168, + -0.026553314, + -0.023990564, + -0.00035933853, + 0.012485022, + 0.0029669537, + 0.019442016, + -0.0009232945, + 0.013061976, + -0.015255744, + -0.00216861, + -0.018261272, + -0.032497283, + -0.022957413, + -0.023655124, + 0.008097486, + 0.015872952, + 0.024030816, + 0.011035928, + -0.0023279435, + -0.010948714, + -0.0067725037, + 0.013209569, + -0.004920883, + 0.025453076, + -0.017845329, + 0.023400191, + 0.014987393, + 0.01271312, + -0.022460964, + 0.0015857856, + -0.02798899, + 0.02199135, + -0.0037300764, + 0.0035724202, + -0.012565527, + -0.029706435, + -0.0009107156, + -0.014142089, + -0.0051422725, + -0.0002387903, + -0.0015388242, + 0.0019522522, + 0.0049745534, + -0.006732251, + 0.03142388, + -0.0039850096, + 0.010385177, + -0.012404516, + 0.0031413818, + -0.004300322, + 0.0005509578, + 0.004327157, + -0.011814144, + -0.0040889955, + -0.0030105608, + 0.02668749, + 0.02264881, + -0.009452658, + -0.0010356664, + 0.0003169894, + 0.011908067, + 0.035744328, + -0.00009811577, + -0.014772712, + -0.0043774727, + -0.014034748, + -0.025385987, + -0.018341778, + 0.00033921222, + -0.019723786, + -0.022514634, + 0.012907675, + -0.017067112, + 0.022501215, + -0.02951859, + -0.02635205, + 0.021951096, + 0.0090434225, + 0.022729315, + 0.016355982, + 0.010251001, + -0.00025430432, + -0.001171519, + -0.009835058, + -0.005182525, + -0.013981078, + -0.001215126, + 0.016396236, + 0.030484654, + -0.020609343, + -0.028928218, + -0.010009485, + 0.0024705047, + 0.0022776276, + -0.008419507, + 0.014222593, + 0.0005153174, + 0.009566707, + -0.024057651, + -0.0011497155, + -0.025882436, + 0.038481507, + -0.014772712, + 0.0047062025, + -0.002480568, + -0.030618828, + -0.0054106233, + 0.018153934, + -0.010029612, + 0.009311774, + 0.013833485, + -0.016959772, + 0.0020478521, + -0.018462537, + -0.018194186, + 0.02046175, + 0.0029568905, + 0.026647236, + 0.009513036, + -0.008285332, + 0.013779814, + 0.010599857, + -0.013632222, + 0.0006297858, + 0.004833669, + 0.024419924, + -0.007943184, + -0.009526454, + -0.018797975, + -0.0017006734, + 0.00094090507, + 0.0022776276, + 0.009298356, + -0.013176025, + -0.02003239, + -0.005746062, + 0.009700882, + 0.006269346, + -0.004572027, + -0.007044209, + -0.025278646, + -0.030350478, + -0.009117219, + 0.0016620979, + 0.012169709, + -0.01663775, + -0.009224559, + -0.0037233676, + -0.02946492, + 0.01745622, + -0.011693387, + -0.0042097536, + 0.009935689, + 0.027251026, + -0.016906101, + 0.009620377, + -0.007547367, + 0.019455435, + -0.025090802, + -0.006044602, + -0.0030742942, + -0.01674509, + 0.013887155, + -0.01358526, + -0.0122904675, + -0.021253385, + 0.012357555, + 0.0021971224, + 0.0062794094, + 0.021843757, + 0.042962965, + -0.020354409, + -0.0024654733, + -0.025761679, + -0.025520163, + 0.009452658, + -0.009996068, + 0.02008606, + 0.024916373, + -0.001707382, + 0.0012134488, + 0.013061976, + -0.012082496, + -0.00878849, + -0.010391885, + -0.03115553, + -0.008647605, + 0.0130015975, + -0.014142089, + -0.007815718, + -0.017469639, + 0.0012578944, + -0.0071716756, + 0.0097545525, + 0.008151156, + 0.0011295893, + 0.0004297806, + 0.025171306, + 0.011492124, + 0.012022117, + -0.013310201, + -0.024352837, + 0.011310987, + -0.007654707, + -0.026902169, + -0.03459042, + -0.0025979714, + 0.01544359, + 0.0014096803, + -0.02085086, + -0.022675645, + 0.010727324, + -0.02836468, + -0.0049376553, + -0.010821247, + 0.026110535, + 0.017670901, + -0.010848082, + 0.0077888826, + 0.006651746, + 0.019737203, + 0.008037107, + 0.004048743, + 0.01042543, + 0.034134224, + -0.031128695, + 0.03252412, + 0.0111768115, + -0.019160248, + -0.008748237, + 0.008828742, + -0.002343038, + 0.005712518, + 0.013591969, + -0.008251788, + -0.008567099, + -0.011357948, + 0.0051020198, + -0.025560416, + 0.018757721, + 0.006198904, + -0.046854053, + 0.026365468, + 0.013155899, + -0.010861499, + 0.00041133148, + 0.0111768115, + -0.0046894304, + -0.0024252206, + 0.0062928265, + -0.030243138, + -0.0018063365, + 0.0004939332, + -0.023708794, + 0.029760106, + -0.011753766, + 0.0111768115, + 0.02307817, + 0.021481482, + -0.0052730935, + -0.02471511, + -0.003683115, + -0.011384783, + -0.008694567, + 0.025520163, + -0.0027623363, + -0.027452288, + -0.004042034, + 0.02199135, + -0.042426266, + 0.011304278, + 0.009828349, + -0.0056018233, + -0.018086845, + 0.0098015135, + 0.025493328, + -0.02984061, + -0.0151349865, + 0.009117219, + -0.015738776, + -0.009311774, + -0.010244292, + 0.028472021, + -0.026392303, + 0.018408867, + 0.0017207996, + -0.002237375, + -0.03874986, + -0.01467879, + 0.0053871428, + -0.0077687562, + -0.008466468, + 0.21124576, + -0.019656697, + -0.00076354196, + 0.04103084, + -0.009996068, + 0.03775696, + 0.027251026, + 0.0010784349, + -0.011344531, + 0.0022055083, + -0.038320497, + 0.0075339493, + 0.01544359, + -0.0013962629, + -0.00020388373, + -0.01871747, + -0.024191827, + -0.02782798, + -0.041379698, + 0.0017358944, + 0.009197724, + 0.0018683926, + 0.0033208414, + -0.014544615, + 0.018784557, + 0.011250608, + -0.005222778, + -0.008868994, + 0.017563561, + 0.018891897, + 0.0015430172, + 0.0030172695, + -0.0014792839, + 0.014866635, + -0.0057661883, + -0.0026633819, + -0.005642076, + -0.008137738, + 0.031772736, + 0.023762465, + -0.0022541468, + 0.0028965117, + -0.005947325, + -0.009009879, + -0.007446735, + 0.023091588, + -0.007929767, + 0.0031279642, + -0.011921485, + 0.030296808, + -0.037354436, + -0.015121569, + 0.040574644, + 0.02471511, + 0.011592755, + -0.013732853, + 0.03322183, + 0.00682282, + -0.009915562, + -0.008104195, + -0.020126311, + 0.02291716, + -0.010358342, + 0.02352095, + 0.005216069, + -0.0038810237, + -0.01478613, + 0.0061888406, + -0.0007912156, + -0.010324798, + 0.017254958, + -0.011431745, + -0.009070258, + -0.021092374, + -0.033517018, + -0.023547783, + 0.032711964, + 0.005598469, + 0.011398201, + 0.0348051, + -0.005088602, + 0.009486201, + 0.02580193, + 0.004535129, + 0.00022180872, + -0.01937493, + 0.017415969, + 0.010130243, + 0.015309414, + -0.00709117, + -0.008761655, + -0.024205243, + -0.008976335, + -0.017872164, + -0.009781388, + 0.01200199, + -0.005940616, + 0.016074214, + -0.010848082, + -0.014061583, + -0.009499619, + -0.028015826, + 0.011438454, + -0.0069368687, + 0.0058299215, + 0.007829135, + -0.00030021748, + -0.0067792125, + -0.00050525425, + -0.030967684, + 0.0037233676, + -0.037569113, + 0.0070643355, + 0.01615472, + 0.0077016684, + -0.0020881048, + -0.016248642, + -0.025949525, + 0.018140515, + -0.019401764, + 0.02307817, + -0.017872164, + -0.009519746, + -0.006363269, + -0.004726329, + -0.008889121, + -0.0062794094, + -0.014303098, + 0.0056823287, + -0.041621212, + 0.003022301, + -0.0030742942, + 0.022514634, + -0.0012444769, + -0.0064639, + 0.018556459, + 0.0053670164, + -0.010707198, + -0.017268375, + 0.026164206, + 0.008969626, + -0.008385963, + 0.019683532, + 0.0026617048, + -0.0051758164, + -0.020904528, + 0.0063431426, + 0.021105792, + -0.016074214, + 0.010861499, + -0.021548571, + -0.021065539, + -0.0011471998, + -0.014061583, + 0.030162632, + -0.007882806, + -0.022943996, + -0.01985796, + 0.0033225187, + 0.0111768115, + -0.030243138, + -0.009204433, + 0.049725406, + -0.02193768, + -0.027532794, + -0.011539085, + -0.17464271, + 0.028981889, + 0.019133413, + -0.022165777, + 0.026767993, + 0.010807829, + -0.0056991004, + -0.018247856, + -0.0051925885, + 0.016758509, + 0.05173804, + 0.013075394, + -0.008600644, + -0.011243899, + 0.0037032412, + -0.007876096, + -0.0034784975, + 0.0049477182, + 0.028981889, + 0.013692601, + 0.0470419, + -0.03137021, + 0.0148263825, + -0.00062517356, + -0.0007048402, + 0.024084486, + -0.00038973763, + -0.00087381736, + 0.016275477, + -0.010633402, + -0.023333104, + -0.013216278, + 0.03501978, + 0.022353623, + 0.009989359, + 0.013659056, + -0.008627479, + -0.018207602, + -0.019348094, + 0.03595901, + 0.005779606, + 0.010666945, + -0.003039073, + -0.012672868, + 0.0124313515, + 0.03088718, + 0.008278623, + -0.003917922, + -0.025761679, + -0.008775072, + 0.021454647, + -0.016610915, + -0.0030172695, + 0.01936151, + 0.00867444, + -0.0107742855, + 0.008627479, + 0.0098954365, + 0.0017845329, + -0.013752979, + -0.03469776, + -0.012283759, + 0.021602241, + 0.0018415574, + -0.015067899, + 0.0014172278, + -0.01222338, + -0.010546187, + -0.019281005, + 0.017805077, + 0.0009258103, + -0.016194971, + 0.021199714, + -0.043177646, + 0.019240754, + 0.005024869, + -0.009647212, + 0.024191827, + 0.019670116, + -0.0005023192, + -0.022474382, + 0.052999288, + -0.0148263825, + -0.0047665816, + 0.0010633401, + 0.009955815, + 0.0043841815, + -0.011438454, + -0.029277075, + -0.021696163, + 0.02199135, + -0.025520163, + -0.014638538, + -0.0109151695, + -0.0012620875, + 0.010687072, + -0.007876096, + 0.023695378, + -0.021951096, + 0.004692785, + 0.011834271, + -0.009700882, + -0.010163788, + 0.043231316, + 0.026003195, + 0.023910059, + 0.018301526, + 0.026016612, + 0.01930784, + 0.008057233, + -0.020837441, + 0.002262533, + 0.015175239, + 0.02629838, + -0.024876121, + 0.0036965325, + 0.013122355, + -0.01320286, + 0.009519746, + 0.007574202, + 0.037086084, + -0.015819281, + 0.0041393116, + 0.023883224, + -0.008936082, + -0.026445974, + -0.07358179, + 0.0043674097, + 0.006765795, + 0.022393877, + -0.0055951145, + 0.039501242, + 0.0112707345, + 0.011310987, + -0.0024067715, + 0.018449118, + -0.0077352123, + -0.018019758, + 0.00911051, + -0.01985796, + 0.024809033, + -0.0033208414, + -0.0022876908, + -0.002638224, + -0.0043170936, + 0.023091588, + -0.014973976, + -0.016839014, + 0.004830315, + -0.010479099, + -0.01473246, + 0.0066752266, + -0.010713906, + 0.017831912, + 0.015725357, + 0.0072991424, + 0.0033493536, + 0.004387536, + 0.00965392, + -0.026982674, + -0.013310201, + 0.013954243, + -0.010700489, + 0.008278623, + 0.03365119, + -0.051469687, + -0.0030189466, + 0.012760081, + -0.0061687143, + -0.0034717887, + -0.009828349, + -0.013383997, + -0.028579362, + 0.00679263, + -0.00336948, + -0.015966874, + -0.018838227, + -0.0043170936, + 0.0026650592, + -0.008271914, + 0.017415969, + -0.005625304, + 0.004927592, + 0.0253189, + -0.03464409, + 0.01681218, + 0.0035824834, + -0.0038072274, + -0.014920305, + 0.02925024, + 0.008667732, + 0.011411618, + -0.018435702, + -0.033114493, + 0.031853244, + -0.018757721, + -0.015577765, + 0.021239968, + -0.020810606, + 0.00534689, + -0.027693804, + -0.010633402, + -0.00274221, + -0.017120782, + 0.018972402, + -0.024057651, + -0.014236011, + -0.028391516, + 0.0015069576, + 0.007050918, + 0.0030357186, + 0.0041762097, + 0.010942005, + -0.0034248272, + 0.018314943, + -0.016476741, + 0.005407269, + 0.008164573, + 0.0094929105, + -0.029438084, + -0.006276055, + 0.022380458, + 0.002037789, + -0.015000811, + 0.002542624, + 0.0071783843, + -0.013457794, + -0.022340206, + -0.07546025, + 0.028659867, + 0.0013124032, + -0.008292041, + 0.020502003, + 0.005128855, + 0.018704053, + 0.0069704126, + 0.0116732605, + -0.022541469, + -0.045082938, + 0.009459366, + -0.013457794, + -0.0042466517, + -0.032953482, + -0.024809033, + 0.024996879, + 0.020743519, + 0.008681149, + 0.015913203, + 0.011357948, + 0.0013442698, + 0.024272332, + 0.010391885, + -0.03410739, + 0.0077620475, + -0.0030055293, + 0.026593566, + -0.024970043, + -0.015779028, + 0.0258556, + -0.027479123, + -0.007963311, + 0.009157471, + 0.0001614298, + -0.0061620055, + 0.0016956418, + 0.0126929935, + 0.009432531, + 0.031450715, + -0.020555673, + -0.0069435774, + 0.012283759, + -0.011257317, + 0.00649409, + 0.0001541969, + 0.0020797187, + 0.0052294866, + 0.017120782, + 0.016329147, + -0.010526061, + 0.03349018, + -0.008258496, + -0.0069033247, + -0.0057628336, + -0.026284963, + 0.017000025, + 0.0105126435, + -0.008493303, + -0.0113176955, + 0.023252599, + 0.004424434, + 0.016825596, + 0.010948714, + 0.012404516, + -0.007822426, + -0.02286349, + -0.0028428414, + 0.012491731, + -0.035529647, + -0.02930391, + 0.007970019, + 0.009808223, + 0.014397021, + 0.008714693, + 0.0009325191, + 0.0090903845, + -0.0067456686, + -0.03357069, + 0.023923475, + 0.005085248, + -0.000054613585, + -0.053348143, + 0.0060546654, + 0.01255211, + -0.01816735, + -0.0072052195, + -0.012458187, + -0.01953594, + 0.026835082, + -0.005447522, + -0.0075674932, + 0.0049846163, + 0.0030524905, + 0.0028327783, + 0.018757721, + -0.008325584, + -0.022031602, + 0.026794828, + 0.028418351, + 0.01871747, + -0.0074936966, + -0.011633008, + -0.0070106653, + -0.012833878, + -0.009747843, + -0.019884795, + -0.022018185, + 0.009975942, + 0.01462512, + 0.02286349, + 0.015792446, + -0.0005379595, + 0.018596712, + -0.01031138, + 0.006520925, + -0.017831912, + -0.036254197, + -0.01936151, + 0.018891897, + 0.03378537, + 0.021213133, + 0.026942423, + -0.005997641, + 0.016047379, + -0.0019203855, + 0.008942791, + -0.02613737, + 0.0029417959, + -0.0035153958, + 0.01626206, + 0.00976797, + -0.017899, + -0.0025308838, + -0.00878849, + 0.0038273535, + 0.0076681245, + 0.02836468, + -0.003978301, + 0.05291878, + -0.01135124, + 0.0014675435, + -0.0017375716, + 0.0059607425, + 0.02122655, + -0.004655887, + 0.016718255, + -0.025412822, + -0.014705625, + 0.0030575222, + -0.011163394, + 0.00698383, + -0.014598285, + -0.02471511, + -0.0051355637, + -0.020354409, + 0.019442016, + -0.010398595, + 0.015685106, + 0.037783794, + -0.003874315, + 0.02658015, + 0.018395448, + -0.013571843, + 0.0013308524, + 0.021535153, + 0.011612882, + 0.009305065, + -0.02389664, + 0.016825596, + -0.00226421, + -0.018650383, + -0.0112707345, + 0.0061519425, + -0.015054481, + -0.02613737, + 0.009996068, + 0.0024587645, + 0.014665373, + 0.0005983385, + 0.019227337, + -0.020985033, + -0.024299167, + 0.01734888, + -0.005806441, + -0.003579129, + -0.0024621189, + -0.01948227 + ] + }, + { + "object": "embedding", + "index": 1, + "embedding": [ + -0.0023426407, + -0.031335898, + 0.0022720497, + -0.026686734, + -0.028682984, + -0.00530911, + -0.026870599, + -0.019752385, + -0.0106050875, + -0.029996308, + 0.00056267704, + 0.0222083, + -0.0049840626, + 0.026581667, + -0.0053452267, + 0.035197068, + 0.029602312, + -0.01461729, + 0.047857508, + -0.021302108, + -0.0134090325, + -0.0044160504, + 0.014288959, + -0.009574128, + -0.032911886, + -0.012995336, + 0.00978426, + -0.026213937, + 0.004136969, + -0.007400578, + 0.021105109, + -0.027474727, + -0.020855578, + -0.017769266, + -0.035249602, + -0.023744889, + -0.0021932502, + -0.013776763, + 0.02797379, + 0.004202635, + 0.0021308674, + 0.002152209, + -0.008549736, + -0.001971627, + -0.018439062, + -0.00013943802, + -0.025045078, + -0.027789924, + -0.018373396, + 0.012719538, + 0.027474727, + 0.023298359, + -0.0069080815, + -0.0013042943, + 0.0061036707, + 0.010053491, + -0.00037819613, + 0.023652956, + -0.020632312, + -0.016955007, + -0.005542225, + 0.017716734, + -0.033647347, + 0.02127584, + -0.017743, + -0.0037298386, + 0.0028794617, + -0.005433876, + -0.004402917, + 0.009226098, + 0.006317086, + 0.034277745, + 0.017756134, + -0.00803754, + 0.01660041, + -0.010342423, + -0.015050687, + -0.0052565774, + 0.0033407665, + -0.0009373846, + 0.015431551, + -0.019030057, + 0.0026627635, + 0.008457803, + 0.016022546, + 0.005085845, + -0.024953146, + 0.010020658, + -0.014288959, + -0.01737527, + -0.0010490172, + 0.020120116, + 0.014013162, + 0.01900379, + -0.029339647, + 0.029365914, + 0.018727994, + 0.03333215, + -0.023311492, + -0.027264595, + -0.017349003, + 0.010086324, + -0.004924963, + -0.018741125, + -0.008090072, + 0.00020397555, + 0.010683887, + -0.0021686254, + 0.02078991, + -0.010316156, + -0.009002833, + 0.04554606, + 0.007853675, + -0.020225182, + 0.00070837385, + -0.0048658634, + 0.019108856, + -0.01900379, + -0.014879955, + -0.008884633, + 0.012995336, + -0.00022716392, + 0.018911859, + -0.038060114, + 0.017073205, + -0.0011089375, + -0.01372423, + 0.0060150214, + -0.005584908, + -0.0035689566, + 0.03459294, + 0.010513155, + -0.0036214895, + 0.0058804057, + -0.025439076, + -0.0046721483, + -0.035722397, + -0.02321956, + -0.017769266, + -0.020225182, + 0.012883703, + 0.021420306, + -0.028998183, + -0.018990658, + -0.006986881, + 0.03779745, + 0.030075109, + 0.010184824, + -0.010046924, + -0.0034474742, + 0.016574143, + 0.0023853239, + 0.028814318, + -0.020120116, + -0.00037388678, + -0.009212964, + -0.01073642, + 0.013934362, + 0.006796449, + 0.009035666, + -0.021341506, + -0.0041074194, + 0.008142605, + -0.018767392, + 0.0055586416, + 0.036562927, + 0.019332122, + -0.003058402, + 0.0013830938, + -0.013402466, + -0.0034080744, + 0.031073233, + -0.021105109, + 0.02090811, + 0.017861199, + -0.009245797, + -0.0013822729, + 0.0054732757, + 0.010506588, + 0.008930599, + -0.02585934, + 0.0026315718, + 0.025347143, + 0.04210515, + -0.0068752486, + 0.005689974, + 0.004136969, + 0.0015530051, + -0.01879366, + -0.009061932, + 0.022457832, + 0.010204524, + 0.01826833, + 0.005259861, + -0.68965244, + -0.025990672, + 0.018058198, + -0.015168887, + 0.030180173, + 0.036195196, + 0.010092891, + -0.0030239273, + -0.011596646, + -0.015195153, + 0.0041862186, + 0.016206412, + 0.001814028, + -0.0022720497, + 0.00007690125, + -0.025439076, + 0.024782414, + 0.0021998168, + -0.010762686, + 0.008641669, + -0.023810554, + 0.018977525, + -0.008956866, + 0.004094286, + 0.005253294, + 0.005447009, + 0.01110415, + 0.0052368776, + -0.005906672, + 0.017427802, + -0.016666075, + -0.012450307, + 0.012601339, + -0.03170363, + 0.049564827, + -0.01021109, + -0.012003777, + 0.030784303, + -0.00087746425, + 0.024138886, + -0.008733601, + -0.025439076, + 0.031440966, + -0.0063761855, + -0.019621054, + 0.0054371594, + 0.019634185, + 0.00038743042, + -0.005200761, + -0.032544155, + -0.0007428486, + 0.009902459, + -0.005978905, + -0.009160431, + 0.016390277, + 0.00076501095, + 0.0013280984, + -0.015405284, + -0.018412795, + 0.0074071446, + -0.025097612, + 0.009521595, + -0.019358387, + -0.035144538, + -0.0070656803, + -0.012332108, + -0.022313366, + 0.0037692385, + 0.01815013, + -0.010591954, + 0.01461729, + 0.018583527, + 0.014551624, + -0.023561023, + 0.009534729, + 0.021341506, + 0.003276742, + 0.009928726, + 0.002127584, + -0.002217875, + -0.010769253, + 0.013947495, + -0.004698415, + -0.005647291, + 0.046228986, + -0.011819911, + -0.025058212, + 0.0057293735, + 0.0082805045, + 0.00012035378, + 0.004087719, + 0.035985064, + -0.007249546, + -0.016350877, + -0.027343394, + -0.0061857537, + -0.042683013, + -0.017309604, + 0.005689974, + -0.00069277815, + -0.008057239, + -0.003624773, + 0.0071116467, + 0.014525358, + 0.0057392237, + 0.03422521, + -0.022523498, + 0.0128180375, + 0.024900613, + -0.037666116, + 0.0131266685, + -0.0015513634, + -0.006986881, + -0.026647333, + 0.015694216, + -0.029707378, + 0.008884633, + 0.009876193, + -0.0008076939, + -0.021341506, + 0.020697977, + 0.007945607, + 0.016902473, + -0.0039925035, + 0.0010375256, + -0.00066487, + -0.013750497, + -0.03356855, + -0.029576045, + -0.012936236, + -0.012844304, + -0.0046754316, + 0.011734545, + -0.010526287, + 0.009823659, + 0.009863059, + 0.014945622, + -0.002255633, + 0.006954048, + 0.0028860283, + -0.008582569, + -0.0005680124, + 0.0054273093, + 0.008030973, + 0.0019962518, + -0.030784303, + -0.012194209, + -0.004402917, + -0.0036641725, + 0.013205468, + 0.014748623, + -0.010112591, + -0.013803029, + 0.013829296, + 0.020409048, + -0.014604157, + -0.009613528, + -0.010257056, + -0.013711097, + -0.00807694, + 0.007190446, + 0.025688607, + 0.000911939, + 0.008411837, + -0.004274868, + -0.034330275, + -0.021643572, + 0.013047868, + -0.04375994, + -0.021091975, + 0.02057978, + -0.0046425983, + 0.01021109, + -0.0060544214, + -0.015694216, + 0.027711125, + -0.0036313394, + -0.005847573, + 0.015076954, + 0.0075056436, + -0.017926866, + -0.007807708, + -0.009928726, + 0.0013092194, + 0.0067077996, + 0.0017237371, + -0.011767378, + 0.025018813, + -0.004297851, + 0.014013162, + 0.00086186855, + -0.0019190939, + 0.0057720565, + 0.0046951314, + -0.0002177244, + -0.008208272, + -0.0060609877, + 0.011012217, + 0.002759621, + 0.023823688, + 0.027553527, + -0.015720483, + -0.0015439759, + -0.0079718735, + -0.0010859544, + -0.038401578, + -0.00080974604, + 0.0074071446, + 0.014446558, + 0.0019601353, + -0.0013691398, + -0.024257084, + -0.014788022, + -0.0069606146, + 0.01956852, + 0.04052916, + 0.0108020855, + -0.0051843445, + -0.006189037, + 0.012719538, + 0.017191404, + 0.0030025858, + -0.0013198901, + 0.0072167125, + -0.022667963, + 0.018530995, + 0.016350877, + 0.046544183, + 0.022195166, + -0.016022546, + -0.0040122033, + 0.0026775382, + 0.010506588, + 0.0088124005, + 0.003211076, + 0.0043438175, + 0.01684994, + -0.01244374, + 0.02537341, + 0.006287536, + -0.022287099, + 0.01465669, + 0.0062481365, + -0.011839611, + -0.0076632425, + 0.01067732, + 0.016429678, + 0.0017434369, + -0.013067569, + -0.0049807793, + -0.011458747, + 0.031519763, + -0.023600424, + -0.02570174, + -0.0070262807, + -0.031493496, + -0.003966237, + 0.0358012, + 0.035958797, + 0.022418432, + 0.029129514, + 0.000092496964, + -0.007380878, + 0.003509857, + -0.00067513034, + 0.00530911, + 0.0028794617, + -0.014288959, + 0.0012886986, + 0.021840569, + -0.017349003, + 0.0057096737, + 0.008221405, + -0.004619615, + -0.009580695, + -0.0028088705, + -0.0050168955, + 0.03309575, + -0.012614472, + -0.008661368, + -0.028446587, + -0.017834933, + 0.020146383, + 0.008608836, + -0.0036083562, + -0.000045068544, + -0.01945032, + 0.011990643, + -0.022733629, + 0.0031240683, + 0.0046327487, + 0.020277714, + 0.0051350947, + 0.007945607, + -0.010933418, + 0.010151991, + 0.0049052634, + -0.013310534, + 0.010848052, + 0.008576002, + 0.0044226167, + -0.013369633, + -0.013474699, + -0.010060058, + 0.034067612, + -0.0017352287, + 0.017230805, + -0.014709223, + 0.009823659, + -0.008694202, + 0.0015743466, + 0.0043733674, + 0.012548806, + -0.010197957, + -0.010394955, + 0.0056078914, + -0.012476573, + 0.017966265, + 0.036510393, + 0.00623172, + -0.015720483, + -0.003050194, + -0.01469609, + -0.0022966745, + 0.04938096, + 0.041107025, + 0.006796449, + 0.0012386282, + 0.016863074, + 0.006106954, + -0.030994434, + -0.0002626647, + 0.024401551, + 0.0027054464, + 0.010500021, + 0.0003295621, + 0.026056338, + -0.0005347689, + 0.007939041, + 0.010591954, + 0.00623172, + -0.0046327487, + -0.009580695, + -0.009639794, + 0.020435313, + 0.00081426057, + 0.019016923, + 0.011025351, + 0.0071444795, + 0.0026808216, + 0.03832278, + 0.02071111, + 0.030994434, + 0.014091961, + -0.02366609, + -0.0018780526, + 0.00038127424, + -0.017467203, + -0.00443575, + -0.025951272, + 0.022024434, + 0.010999084, + -0.00577534, + 0.012634172, + 0.02789499, + -0.004225618, + -0.0038710209, + -0.0063105193, + 0.016258944, + -0.01822893, + 0.0026069472, + 0.03191376, + 0.00013092194, + -0.010046924, + 0.0049840626, + 0.016088212, + -0.01388183, + 0.0004998837, + -0.006366336, + 0.00036690975, + -0.003020644, + 0.0057819067, + -0.0061200876, + 0.0027136547, + -0.010953118, + -0.022681097, + 0.00014025884, + -0.00042149477, + -0.010545988, + -0.0068358486, + -0.010920284, + -0.0119775105, + -0.020238316, + 0.018452195, + -0.011767378, + 0.0035656733, + -0.028577918, + -0.0076501095, + 0.030626703, + 0.019673586, + 0.0043733674, + 0.00484288, + 0.009534729, + 0.034277745, + 0.005138378, + -0.024349017, + -0.019594787, + -0.011622913, + -0.0046819984, + -0.001624417, + 0.023088226, + -0.008339604, + -0.0047148312, + 0.0011606496, + 0.034698006, + -0.012640739, + -0.0054502925, + -0.0050267456, + 0.009712027, + -0.0053222436, + 0.0088518, + 0.00033366625, + -0.0064517017, + -0.012765504, + 0.004885563, + -0.012923103, + -0.00050603994, + -0.010303022, + 0.0035394067, + 0.0051843445, + 0.010683887, + 0.018517861, + -0.011439048, + 0.0030813853, + 0.029208314, + -0.0068424153, + -0.007847108, + -0.004698415, + 0.005272994, + 0.01692874, + 0.007032847, + 0.006940915, + -0.025544142, + 0.001823878, + -0.011544113, + -0.021052575, + 0.014026294, + 0.01469609, + -0.0013830938, + 0.0010424505, + 0.023324626, + -0.03167736, + -0.02789499, + 0.002137434, + 0.017283337, + 0.009022532, + 0.002245783, + -0.0023442823, + -0.021814303, + -0.0010793877, + 0.015562884, + 0.018570393, + 0.006402452, + -0.021853702, + -0.01822893, + -0.018045064, + -0.00757131, + -0.014394025, + -0.020803044, + -0.03475054, + 0.00398922, + 0.012548806, + 0.01199721, + 0.01737527, + 0.0058869724, + 0.0057884734, + -0.012023477, + 0.0075581768, + 0.008208272, + -0.03369988, + -0.035144538, + 0.000012607393, + 0.019831184, + 0.013566632, + 0.026699867, + 0.0034080744, + 0.005857423, + 0.022155767, + -0.011583513, + -0.0043372507, + 0.026122004, + 0.0024493483, + -0.011242049, + 0.0058311564, + 0.036431592, + 0.035092004, + 0.0021505672, + -0.0021719087, + -0.024060085, + 0.0052631437, + -0.0040351865, + 0.0057523567, + -0.039005708, + -0.017243937, + 0.0048691467, + 0.000645991, + -0.012161375, + 0.015234552, + 0.009968125, + -0.022589164, + 0.010053491, + -0.016836807, + 0.012975636, + -0.0049479464, + 0.0125685055, + -0.0058541396, + 0.013750497, + -0.0055290917, + 0.022707364, + -0.013474699, + 0.0017697033, + 0.019305855, + -0.0056111747, + 0.002170267, + 0.0068555484, + 0.0054273093, + -0.033148285, + -0.0021669837, + -0.010644487, + 0.03065297, + -0.011800212, + -0.012660438, + 0.0040122033, + -0.045493525, + 0.00001976398, + -0.0041139857, + -0.015470951, + -0.02191937, + 0.00799814, + 0.015484083, + -0.020553512, + 0.026607934, + -0.023626689, + -0.013251434, + 0.009863059, + 0.00006607659, + 0.03438281, + 0.024454083, + 0.04218395, + -0.004402917, + -0.003660889, + -0.02975991, + 0.010414655, + 0.012233608, + 0.00044488834, + -0.0010145424, + 0.0014947263, + -0.004488283, + -0.028525386, + 0.014459692, + -0.0017976115, + 0.020330248, + -0.04129089, + 0.0132777, + -0.00492168, + 0.020566646, + -0.018754259, + -0.03348975, + -0.015773015, + 0.024073219, + -0.010165124, + 0.0077157756, + -0.026082605, + -0.023324626, + -0.029943775, + 0.029812442, + 0.0012591489, + 0.011714846, + 0.007518777, + -0.017939998, + -0.0004896234, + -0.0044587334, + -0.019791786, + 0.013231734, + -0.00057827274, + 0.021249574, + -0.011130417, + 0.023600424, + -0.010033791, + 0.004796914, + -0.012962502, + 0.0024690481, + -0.002418157, + 0.022667963, + -0.014131361, + -0.021157641, + -0.009140732, + 0.010447488, + 0.007814275, + -0.003143768, + -0.017270204, + -0.001106475, + 0.004819897, + -0.021788036, + 0.010710153, + -0.010086324, + -0.036431592, + -0.014144494, + -0.0013239942, + -0.017559135, + -0.019699853, + -0.006940915, + 0.0067570494, + -0.015300219, + -0.013606031, + 0.00023414096, + 0.008687635, + 0.023902487, + 0.010526287, + -0.002749771, + 0.009101332, + 0.014879955, + -0.030968167, + 0.033936277, + -0.009147298, + 0.004491566, + -0.010427789, + 0.0017073206, + -0.024624815, + -0.008746735, + 0.018977525, + -0.020067582, + -0.029365914, + 0.0017729867, + -0.0046327487, + 0.0034803073, + 0.020290848, + -0.011517847, + 0.054056395, + -0.007479377, + -0.0037068555, + -0.025833072, + -0.0033588249, + -0.0030452688, + -0.018517861, + 0.025885606, + 0.01240434, + 0.01628521, + -0.005200761, + -0.0011836328, + 0.010985951, + 0.00032730485, + -0.044810597, + -0.041264623, + -0.00039153456, + 0.036195196, + 0.00053846266, + 0.0071379133, + -0.000006310109, + -0.0039925035, + -0.015050687, + 0.00929833, + -0.01558915, + -0.0111369835, + -0.008004706, + 0.01290997, + -0.0024985978, + -0.007840541, + -0.007833974, + -0.02139404, + -0.012699838, + -0.0016465794, + -0.022470964, + -0.005640724, + -0.009180131, + 0.034855604, + 0.0036773058, + -0.015746748, + -0.0050989785, + 0.0016638167, + -0.033516016, + -0.013008469, + 0.004928246, + -0.008306771, + 0.008201705, + -0.019870585, + 0.0047509475, + 0.021459706, + -0.022759896, + 0.017060071, + -0.0039925035, + 0.0012484782, + 0.016009413, + -0.019292722, + 0.0033456916, + -0.009403396, + -0.028315254, + -0.02123644, + 0.019699853, + 0.0028679701, + -0.00032525277, + 0.011931544, + 0.005072712, + -0.025570408, + -0.020448446, + 0.017585402, + -0.0102964565, + 0.007866807, + 0.012627605, + -0.023193292, + 0.008983132, + -0.0026003805, + 0.0068424153, + -0.019634185, + 0.0044948496, + -0.0011507997, + 0.0037790884, + 0.014144494, + -0.034803074, + -0.012397774, + -0.0050365957, + -0.027553527, + 0.0059526386, + 0.001956852, + -0.0077289087, + 0.022300232, + -0.0100731915, + -0.030600438, + 0.0025987388, + -0.013645431, + -0.021853702, + -0.01285087, + 0.025504742, + 0.0070262807, + 0.0033653914, + -0.013566632, + 0.03309575, + -0.02102631, + 0.0049479464, + -0.012647305, + -0.03333215, + 0.0037922217, + 0.008050673, + 0.0063630524, + 0.0030288522, + 0.0071510463, + -0.0015644965, + 0.008818967, + -0.010710153, + -0.012391207, + 0.015300219, + -0.013290834, + -0.019266456, + 0.014827422, + -0.016955007, + -0.024677347, + -0.012581639, + 0.017204538, + 0.0029516944, + 0.010670753, + 0.19762892, + -0.009475629, + 0.020671712, + 0.045178328, + 0.005253294, + 0.022116367, + 0.031230832, + -0.0069737476, + -0.0019749103, + 0.012975636, + -0.011800212, + 0.014078828, + -0.016337745, + -0.0019732686, + -0.024940012, + -0.016232679, + -0.014105095, + -0.013829296, + -0.020028183, + -0.018439062, + 0.0017729867, + -0.019778652, + -0.007472811, + -0.009488762, + 0.032622956, + -0.009915592, + -0.0031618262, + 0.0053419434, + 0.03309575, + -0.010782386, + -0.008273938, + -0.0088124005, + 0.0037167054, + 0.0006455806, + -0.0111107165, + 0.0045572324, + 0.0038874375, + -0.010552554, + 0.024230817, + 0.02776366, + -0.009981259, + -0.0026627635, + 0.013225167, + -0.0011286373, + -0.0071970127, + 0.007499077, + 0.0064090188, + -0.023626689, + 0.01729647, + 0.021157641, + -0.0112223495, + 0.013973762, + 0.014958754, + 0.021249574, + -0.01729647, + 0.0091210315, + 0.009291763, + 0.014538491, + -0.012936236, + -0.001738512, + -0.0046425983, + 0.031887494, + -0.018320862, + 0.016981272, + 0.00010403984, + 0.014078828, + -0.025425943, + 0.0027711126, + -0.008674501, + -0.03876931, + 0.013290834, + -0.03362108, + 0.0001390276, + 0.012653871, + -0.017532868, + -0.03220269, + 0.01937152, + 0.018005665, + 0.0004867505, + 0.03690439, + -0.018570393, + -0.016626675, + 0.004619615, + 0.010782386, + -0.036247727, + -0.024585415, + 0.026489735, + -0.010408089, + -0.003585373, + 0.002313091, + 0.021971902, + -0.008825534, + 0.004957796, + -0.021735504, + 0.008267371, + 0.027185796, + 0.0010481963, + 0.03372615, + -0.0009480554, + -0.0073020784, + -0.015457817, + -0.03527587, + 0.021656705, + -0.0026036638, + -0.018977525, + 0.0033686748, + -0.0015382301, + 0.020553512, + 0.00583444, + -0.027422193, + 0.0015218136, + -0.019292722, + 0.0011926619, + -0.0006858011, + 0.01558915, + 0.006235003, + 0.008306771, + -0.027474727, + -0.0019076023, + -0.0025560558, + 0.023652956, + -0.017598534, + -0.017283337, + 0.011307715, + -0.036641724, + -0.010092891, + -0.020041317, + 0.023232693, + -0.013028169, + -0.037639853, + 0.020028183, + -0.022103235, + -0.0055225254, + 0.010624787, + 0.004534249, + 0.035827465, + -0.0013075777, + -0.011156683, + -0.016836807, + 0.0055126753, + 0.007032847, + -0.01636401, + 0.004179652, + 0.019174524, + 0.0041730856, + -0.0061332206, + -0.0034507574, + 0.007019714, + -0.006136504, + -0.022983162, + -0.011288015, + -0.023075094, + 0.0057687736, + -0.0030222856, + -0.0069737476, + -0.018005665, + -0.04938096, + -0.039688636, + 0.0019141689, + 0.010756119, + -0.026502868, + 0.0020126682, + 0.01993625, + -0.0028400621, + -0.017651068, + -0.0040056366, + -0.16978645, + 0.014236427, + 0.0061824704, + -0.013487833, + 0.009672628, + 0.016061947, + 0.011747679, + 0.009915592, + 0.0091210315, + 0.011990643, + 0.022379031, + 0.0077420417, + -0.021788036, + -0.029418446, + 0.010440921, + -0.01013229, + -0.01993625, + 0.023206426, + 0.020540379, + 0.013382766, + 0.03288562, + -0.015195153, + 0.020330248, + 0.0033309166, + 0.011760811, + 0.010631354, + 0.008510336, + 0.0027776791, + -0.010165124, + -0.012936236, + -0.01558915, + -0.004711548, + 0.015602283, + 0.017322736, + 0.0005343585, + 0.0016375502, + -0.00022552226, + -0.013428733, + -0.0015152469, + 0.015457817, + 0.023285225, + 0.048908167, + -0.0025560558, + -0.00716418, + -0.0114456145, + 0.020514112, + 0.020737378, + -0.01201691, + 0.017243937, + -0.009928726, + 0.033962544, + -0.005128528, + -0.009449363, + 0.0024542732, + 0.03178243, + 0.0012041535, + -0.007774875, + 0.005712957, + -0.0123715075, + 0.01834713, + -0.013934362, + -0.0034277742, + 0.011366814, + 0.005108828, + 0.0019749103, + -0.015733615, + -0.0077354754, + 0.0026036638, + -0.01989685, + -0.0050398787, + -0.011596646, + -0.03028524, + 0.016350877, + -0.01506382, + -0.00076501095, + 0.025609808, + -0.019765519, + 0.02335089, + -0.011268316, + 0.00041061878, + 0.0006706158, + 0.013251434, + -0.0039334036, + -0.006454985, + -0.0019683435, + -0.004317551, + -0.0048133307, + 0.0035689566, + -0.005942789, + -0.015667949, + 0.028131388, + -0.011826478, + -0.014551624, + -0.006967181, + 0.019384654, + 0.021052575, + -0.012752371, + 0.003660889, + -0.001600613, + -0.017861199, + -0.010316156, + -0.0021834003, + -0.020120116, + 0.010125724, + 0.051508546, + 0.016416544, + 0.023048827, + 0.011872444, + 0.034067612, + 0.02057978, + -0.00710508, + 0.002982886, + 0.03593253, + 0.04168489, + 0.011800212, + -0.0015997922, + 0.008779568, + -0.0035656733, + 0.014958754, + 0.007807708, + 0.025281478, + -0.0016375502, + 0.002812154, + 0.009199831, + -0.0007190446, + -0.003903854, + -0.10065311, + -0.03414641, + 0.016692342, + 0.019739252, + 0.00049906294, + 0.018465329, + 0.0016153879, + 0.008667935, + 0.006415585, + 0.021157641, + -0.012358374, + -0.045046996, + -0.0049052634, + -0.017637935, + 0.011071317, + 0.014065694, + -0.009147298, + 0.004288001, + -0.0099878255, + 0.013973762, + -0.0043996335, + -0.012049743, + -0.0056735575, + -0.014499092, + 0.007177313, + 0.011150116, + -0.013789897, + 0.02090811, + 0.008136039, + 0.00753191, + 0.0023344324, + -0.00795874, + 0.013487833, + -0.021617305, + 0.0021505672, + 0.007820841, + -0.031152032, + -0.0038743042, + 0.013540365, + -0.0051974775, + 0.0037462553, + 0.0010884168, + 0.003424491, + -0.027474727, + 0.017440936, + -0.029287113, + -0.024506615, + -0.0010284964, + 0.0103818225, + -0.0017450786, + -0.00669795, + -0.0018485028, + -0.02480868, + 0.010151991, + -0.011097583, + -0.021302108, + 0.017427802, + 0.012194209, + -0.011872444, + 0.0006677429, + -0.027290862, + -0.010197957, + -0.007879941, + 0.019988783, + -0.0045999154, + 0.002616797, + -0.020198915, + -0.043628607, + 0.0179006, + -0.022260834, + -0.014840555, + -0.01595688, + 0.0007682942, + 0.025911873, + -0.034356542, + -0.008989699, + -0.025189545, + -0.024821814, + 0.005942789, + -0.02082931, + -0.01432836, + -0.020172648, + 0.020894976, + -0.008838667, + 0.029260848, + 0.014013162, + 0.005870556, + 0.012010343, + 0.0077683083, + -0.018727994, + 0.0041993516, + 0.008858367, + 0.010467188, + -0.01432836, + 0.011905277, + 0.024992546, + -0.009823659, + 0.023626689, + 0.02797379, + -0.011005651, + -0.016508477, + -0.0049085463, + -0.045782458, + 0.023193292, + -0.002820362, + -0.0059592053, + 0.025110746, + -0.006921215, + 0.013947495, + -0.008530036, + -0.007630409, + 0.012141676, + -0.014013162, + -0.0013239942, + -0.0026479885, + -0.0102964565, + -0.024086352, + -0.031729896, + 0.02290436, + 0.001462714, + 0.026699867, + 0.008917467, + 0.0082805045, + 0.017716734, + 0.022457832, + 0.023403425, + -0.018517861, + 0.0017089621, + -0.005085845, + 0.018202664, + -0.014302093, + -0.032334026, + 0.025767406, + -0.018806793, + 0.00445545, + 0.02752726, + -0.009863059, + -0.005660424, + -0.0013469774, + 0.013776763, + 0.0022720497, + -0.0025675474, + -0.006862115, + -0.023075094, + 0.029602312, + -0.016981272, + -0.013947495, + -0.0030304939, + -0.019673586, + 0.001951927, + 0.01937152, + -0.006674967, + 0.02147284, + 0.017848067, + 0.00978426, + -0.0010432714, + -0.010756119, + -0.041028224, + 0.022195166, + 0.019844318, + 0.0062547033, + -0.02480868, + 0.018452195, + 0.010335856, + 0.01289027, + -0.014354626, + 0.000795792, + -0.010099458, + 0.0017056789, + -0.014827422, + 0.011557247, + -0.034960672, + -0.0002417336, + -0.002503523, + 0.011583513, + 0.0035295568, + 0.03333215, + 0.016114479, + 0.010401522, + -0.0060544214, + -0.012332108, + 0.02046158, + 0.004777214, + 0.0020241598, + -0.030941902, + 0.018373396, + 0.018557262, + 0.014236427, + -0.030810568, + 0.015694216, + -0.004793631, + 0.008654802, + -0.010723286, + 0.015681082, + 0.0017631368, + -0.0265948, + 0.0057359403, + 0.027133264, + -0.0049413797, + -0.016324611, + 0.004432467, + 0.014433425, + 0.024165152, + -0.011859311, + -0.025596675, + -0.0223265, + -0.0041107023, + 0.0041533853, + -0.027553527, + -0.028709251, + -0.0060150214, + 0.0066487, + 0.028840583, + 0.014814289, + 0.015208286, + 0.023955021, + -0.015260818, + 0.012857437, + -0.028157655, + -0.024178285, + -0.00094969705, + 0.013527232, + 0.04136969, + 0.011360249, + 0.031020701, + -0.015641682, + 0.009948425, + 0.002730071, + 0.0058442894, + -0.018176397, + 0.0088715, + -0.005049729, + -0.0047607976, + -0.010079757, + -0.013947495, + -0.02589874, + -0.017624801, + -0.002687388, + 0.024060085, + 0.029628579, + -0.036142662, + 0.04257795, + 0.00073012576, + -0.0071116467, + -0.009212964, + 0.033016954, + 0.022562897, + 0.02768486, + -0.0065896004, + -0.017874332, + -0.041317157, + -0.00935743, + 0.0028285705, + 0.012962502, + -0.020435313, + -0.0046852813, + 0.012712971, + -0.005617741, + -0.0020931093, + -0.013133235, + -0.0037561052, + 0.024388418, + 0.0015447967, + 0.014288959, + 0.0055684918, + -0.013527232, + -0.0011754245, + 0.019988783, + -0.030311506, + -0.018530995, + -0.024020687, + 0.0074202777, + -0.0035722398, + -0.046228986, + -0.022733629, + 0.0033686748, + -0.017401537, + -0.005128528, + 0.0031043685, + 0.011498147, + -0.00010896481, + -0.0060478547, + 0.010316156, + -0.016981272, + -0.02574114, + 0.009580695, + -0.0068424153, + 0.008969999, + -0.019082591, + -0.0052467273 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 4, + "total_tokens": 4 + } +} +247 34475 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 52 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["japan"]}HTTP/2.0 200 OK +Content-Length: 33520 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:27:31 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 94 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6659cb4779-9qscs +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999998 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_80638aa6b37a4549a6b7d8b7b0b3428b + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.0025093954, + -0.014704405, + -0.0073522027, + -0.02217393, + -0.008075691, + 0.017116033, + -0.024598593, + 0.0051230774, + 0.014808692, + -0.039342105, + -0.0152910175, + 0.011536702, + 0.005507634, + -0.023177689, + 0.0012546977, + -0.0012180345, + 0.019983914, + -0.018875869, + 0.02467681, + -0.017037818, + -0.009405345, + 0.026501823, + 0.0047776285, + -0.0016522902, + 0.008303817, + 0.0038748977, + 0.0046766005, + -0.019006226, + 0.008773107, + -0.005448973, + 0.00782801, + -0.007977922, + -0.0087079285, + -0.027140578, + 0.0075477404, + -0.009196771, + -0.011621434, + -0.01291198, + -0.0018624929, + -0.012527424, + 0.019579802, + -0.009066413, + -0.012436173, + -0.00083307043, + -0.010213565, + 0.022108752, + -0.014743513, + 0.005768351, + -0.008492837, + 0.026058605, + 0.02089642, + 0.03381492, + -0.030243104, + -0.014274224, + -0.026827719, + -0.005315356, + -0.03334563, + -0.0094379345, + -0.0065146512, + 0.00045136528, + 0.0052729896, + 0.021678569, + -0.03459707, + 0.012768586, + 0.012827247, + -0.012468763, + -0.00036948404, + 0.012560013, + -0.016672814, + -0.008544981, + 0.030634178, + 0.027922727, + 0.006045362, + 0.003698914, + 0.024624664, + -0.006325632, + -0.0067069298, + -0.008584088, + 0.0030406052, + 0.013765827, + 0.019162657, + -0.031259898, + 0.0016294776, + -0.0118625965, + 0.007899707, + 0.0049307994, + -0.034232065, + 0.03449278, + 0.006967646, + -0.0044680275, + 0.011100002, + 0.01160188, + 0.011504112, + 0.02024463, + -0.028887378, + -0.014443689, + -0.0041095424, + 0.043617856, + -0.006182238, + -0.025719674, + -0.017142104, + 0.0192148, + -0.008773107, + -0.012879391, + -0.024116268, + 0.010037581, + 0.0064788028, + -0.010115797, + 0.016359955, + -0.0086362315, + -0.009118557, + 0.0281313, + 0.006100764, + -0.053290434, + -0.010721963, + -0.018980155, + 0.011256431, + 0.0030520116, + -0.008942573, + -0.01930605, + 0.017572286, + 0.023490548, + 0.016425135, + 0.000037987196, + 0.026749505, + 0.003094378, + -0.008193013, + -0.017702645, + 0.000025320554, + -0.0077497954, + 0.022916973, + 0.0109175, + 0.0000014878531, + 0.016751029, + -0.017441928, + 0.0029949797, + -0.0130293025, + -0.00095080014, + -0.018380508, + -0.016894424, + 0.0015748901, + 0.0033925723, + -0.0026055346, + 0.007065415, + 0.011113037, + 0.018302292, + 0.014795656, + -0.00048925064, + -0.005377276, + 0.001883676, + -0.0040965066, + -0.020049091, + 0.028835235, + 0.00043425578, + 0.023894658, + 0.011269467, + 0.0125926025, + 0.01319225, + 0.011784382, + 0.0039596306, + -0.0012579567, + -0.006032326, + 0.01753318, + -0.012116795, + -0.009333648, + 0.024533415, + 0.013896185, + 0.00623764, + 0.00089621264, + -0.0038879334, + -0.02420752, + 0.01800247, + -0.03746495, + 0.01565602, + -0.0050839703, + 0.0017158398, + 0.0050285677, + 0.015760306, + -0.024194483, + -0.0127751045, + -0.011425897, + 0.021639463, + 0.01977534, + 0.006693894, + -0.005813976, + -0.002207942, + 0.011947329, + 0.008740517, + 0.0064788028, + -0.016829245, + 0.014482797, + 0.038820673, + 0.022890901, + 0.016021024, + -0.6841199, + -0.04638145, + 0.011191252, + 0.007638991, + 0.03477957, + 0.021078922, + 0.017076924, + 0.008883912, + -0.01001151, + 0.019136585, + -0.024155376, + 0.012735996, + -0.008747036, + -0.011184734, + 0.0005059528, + -0.0062930426, + 0.011210806, + -0.030373462, + -0.0038716388, + -0.0065113925, + -0.015369233, + 0.008003994, + -0.015173695, + 0.0005088044, + -0.0022600854, + -0.0021036556, + 0.00041205416, + 0.001955373, + -0.0053674993, + 0.034883857, + -0.04270535, + 0.033554204, + 0.01827622, + -0.0109696435, + 0.03384099, + -0.025067883, + -0.02199143, + 0.03728245, + 0.020453202, + 0.029956317, + -0.0021199503, + -0.010278745, + -0.0013483927, + -0.009183736, + -0.004164945, + -0.0027081918, + 0.024807166, + -0.018419614, + 0.0036174401, + -0.015864594, + 0.012234118, + -0.01565602, + -0.01755925, + -0.012762069, + 0.00075567025, + 0.019345157, + -0.0024458459, + -0.02495056, + 0.003200294, + -0.003995479, + -0.019123549, + 0.0070849685, + -0.016920496, + -0.005282766, + -0.0075216684, + -0.003175852, + -0.034075636, + 0.0024491048, + 0.013179215, + -0.018315328, + -0.0013964623, + 0.009744276, + -0.0033632417, + -0.0030520116, + 0.010682855, + 0.022186967, + 0.013987436, + -0.026149856, + -0.019801412, + -0.019996949, + 0.008512391, + 0.0064136237, + -0.009359719, + 0.0025631683, + 0.018758547, + 0.002545244, + -0.021261424, + 0.0027407813, + 0.013739755, + -0.019201763, + 0.006980682, + 0.0020107753, + 0.006377775, + -0.0051882565, + -0.01035696, + 0.01793729, + -0.0003220255, + -0.026723431, + 0.009568293, + -0.0011919629, + -0.017911218, + -0.0056836177, + 0.001955373, + -0.0027163392, + -0.0020841018, + -0.0026674548, + -0.014730478, + 0.008303817, + 0.034883857, + -0.030712394, + 0.022486791, + -0.011621434, + -0.022369469, + 0.0036826194, + 0.028704876, + -0.026540931, + 0.012898944, + -0.0028825458, + 0.016320847, + -0.00063997734, + 0.011875632, + 0.0023937025, + 0.018719438, + 0.0024458459, + 0.00901427, + 0.021469997, + 0.004132355, + -0.02595432, + -0.007762831, + 0.004494099, + -0.011882151, + 0.014000472, + 0.021417852, + -0.019671053, + 0.025120026, + -0.007801939, + 0.0061137998, + 0.0053414274, + 0.01493905, + -0.046511807, + -0.03003453, + -0.01619049, + 0.0016042207, + -0.0010070171, + 0.0077563133, + -0.015864594, + -0.0023822961, + 0.002483324, + -0.0003623551, + 0.010122315, + 0.024559487, + -0.005093747, + -0.021039814, + 0.021548212, + -0.00034157923, + -0.015369233, + -0.008883912, + -0.007912743, + 0.012312332, + -0.012416619, + 0.026905933, + -0.0012408472, + -0.02940881, + -0.0028890637, + 0.014039579, + -0.01254046, + 0.004634234, + 0.030686323, + -0.019540695, + -0.026254144, + -0.0030552705, + -0.001484454, + -0.009581328, + 0.016555492, + 0.008388551, + 0.0100441, + 0.0013451338, + -0.011934293, + 0.0042529367, + -0.0031514096, + 0.0043702587, + -0.022447683, + -0.00667434, + -0.004226865, + 0.032015976, + -0.01840658, + 0.0151997665, + 0.014352438, + 0.0028108489, + 0.00033180238, + -0.031025253, + 0.024572521, + 0.011465005, + 0.0118625965, + 0.0082712285, + -0.013479038, + 0.015369233, + 0.016751029, + -0.0077823848, + 0.022421611, + 0.024259662, + -0.011627952, + 0.007938814, + -0.016086202, + 0.014978158, + -0.021065885, + -0.013439931, + -0.025628423, + 0.025432887, + 0.013700647, + 0.011412861, + -0.024220554, + -0.0029314302, + -0.008649267, + -0.0011691501, + 0.028652733, + 0.010389549, + 0.0063484446, + -0.006045362, + 0.0018869351, + 0.003241031, + -0.020596597, + 0.0032068118, + -0.01603406, + 0.0030291989, + 0.015551734, + -0.019605875, + 0.014052615, + 0.01849783, + -0.017324606, + -0.025524138, + -0.020414095, + -0.011660541, + 0.020974636, + 0.015017265, + -0.0011194511, + 0.016451206, + -0.024898417, + 0.035692077, + 0.022695364, + -0.0006326447, + 0.0111521445, + 0.008101762, + 0.011869115, + 0.013557253, + -0.009340165, + 0.050605055, + -0.00006920187, + -0.02313858, + 0.019253908, + -0.006693894, + -0.0071175583, + -0.006602643, + 0.010207048, + 0.009900706, + -0.029904172, + 0.015147624, + 0.0011830007, + 0.038221028, + 0.03796031, + 0.007990958, + -0.003946595, + 0.009385791, + -0.0017875369, + 0.0027733708, + -0.0049307994, + 0.021065885, + 0.014248152, + -0.0020726954, + 0.00001147636, + -0.015030301, + 0.0014518645, + 0.000006034159, + -0.023699122, + 0.02685379, + -0.014821728, + -0.0035196715, + 0.0008807326, + 0.021235352, + 0.01771568, + -0.0077823848, + -0.05034434, + 0.018654259, + 0.001085232, + -0.007502115, + -0.021626426, + -0.00355552, + -0.012853319, + -0.021900179, + 0.027088435, + 0.02747951, + 0.028470233, + -0.0023154877, + -0.023047332, + -0.014091722, + 0.0065570176, + 0.024989668, + -0.019436408, + -0.011908222, + 0.0027489287, + 0.014404582, + -0.021183208, + 0.006902467, + 0.010780623, + 0.017846039, + -0.006961128, + 0.0072283624, + -0.010415621, + 0.0035848506, + 0.0033893134, + -0.011223841, + -0.009301058, + -0.003848826, + 0.008427658, + 0.0046114214, + -0.004481063, + -0.019449444, + 0.01254046, + 0.013948328, + -0.00661242, + -0.013009749, + -0.012879391, + -0.010715445, + 0.0023839257, + 0.06450124, + -0.010982679, + 0.0016384397, + 0.0041258372, + 0.0022503086, + -0.010154904, + -0.02098767, + -0.015642984, + -0.0008636231, + 0.0041844985, + -0.0038390493, + 0.008968645, + 0.011047858, + 0.014052615, + -0.0012832136, + 0.0020678071, + -0.009431416, + -0.018354435, + 0.006902467, + -0.015903702, + 0.012846801, + -0.007606401, + 0.01469137, + 0.013042338, + 0.0036923962, + 0.004142132, + 0.0134138595, + 0.027427366, + 0.018302292, + -0.017833002, + 0.0059769237, + -0.0020238112, + -0.025067883, + 0.012455727, + -0.014991194, + 0.009718204, + 0.020388024, + 0.032693837, + 0.0020759543, + -0.006322373, + 0.0149260145, + 0.015108516, + 0.009033823, + -0.004601645, + 0.008962126, + -0.031859547, + -0.031233827, + 0.018145863, + -0.02651486, + -0.012077688, + 0.04364393, + 0.0017679832, + -0.02891345, + -0.024285734, + -0.0070849685, + 0.031129539, + -0.021978393, + -0.00019716678, + 0.0013980918, + -0.004132355, + -0.0012326998, + -0.04544287, + 0.0045462423, + -0.00973124, + -0.020596597, + -0.041844983, + -0.015512627, + -0.029643456, + -0.02732308, + -0.013622433, + -0.019045334, + -0.03000846, + -0.01937123, + 0.008003994, + 0.025185205, + -0.01755925, + 0.008303817, + -0.00589545, + -0.0012791399, + 0.021013742, + -0.022017501, + -0.016633706, + -0.030217033, + -0.008127834, + -0.0043246336, + 0.022069644, + 0.025902176, + -0.028548447, + -0.0074630072, + 0.0019407078, + 0.025237348, + -0.0033990901, + 0.015577805, + 0.017415857, + 0.005963888, + 0.0006827511, + 0.02152214, + 0.03206812, + -0.0046928953, + -0.010220083, + 0.02380341, + -0.01637299, + 0.0038748977, + 0.007925779, + 0.0011520407, + 0.020661775, + 0.0048884326, + 0.01191474, + -0.005533706, + -0.0075086327, + 0.02548503, + -0.014899943, + 0.007489079, + 0.017428892, + -0.0049829422, + 0.02049231, + -0.0085254265, + 0.008095245, + 0.008023548, + 0.0009874634, + 0.021821965, + -0.019970877, + 0.013387788, + 0.021065885, + 0.0015431152, + 0.021039814, + 0.0071175583, + -0.0025810925, + -0.0054848217, + -0.0073587205, + -0.019879626, + 0.018967118, + -0.01469137, + -0.011373754, + -0.022538934, + 0.006746037, + -0.009046859, + 0.008740517, + -0.010233119, + -0.027010221, + -0.0075086327, + -0.011249913, + 0.006635233, + 0.0038586028, + -0.023972875, + -0.019736232, + 0.00017058593, + 0.010832767, + 0.00268212, + 0.01699871, + -0.004793923, + 0.0009565033, + -0.01203858, + -0.0009842045, + -0.026019499, + -0.044895366, + -0.041375693, + -0.023646979, + 0.019879626, + 0.021795891, + 0.030686323, + 0.015421376, + 0.004934058, + -0.0016604377, + -0.017598357, + 0.018132826, + 0.0021199503, + 0.02906988, + -0.0064983563, + 0.0020564008, + 0.026215035, + 0.018354435, + -0.020309808, + -0.009529185, + -0.010383031, + 0.027297009, + -0.00421057, + 0.010024546, + -0.010220083, + -0.0255111, + 0.00866882, + -0.01977534, + -0.0029737966, + -0.0006033141, + 0.008473284, + -0.0075998832, + 0.009053377, + -0.0023562245, + 0.011119555, + -0.002264974, + 0.0042627132, + -0.023034295, + 0.0009100632, + -0.01874551, + -0.001924413, + -0.012064652, + -0.0008945832, + -0.006739519, + 0.014248152, + 0.014143866, + 0.023281975, + 0.010083207, + 0.00097198336, + -0.01406565, + 0.00302594, + 0.028548447, + -0.016490312, + -0.026827719, + 0.00031428548, + -0.01578638, + -0.02017945, + -0.018419614, + -0.0022226074, + -0.022213038, + -0.020596597, + 0.017363712, + -0.0065830895, + 0.030164888, + -0.00044403263, + -0.019671053, + -0.002872769, + 0.012221082, + 0.03939425, + 0.0039661485, + 0.019019263, + 0.0006118688, + -0.0033697595, + -0.026905933, + -0.01699871, + -0.014417618, + 0.00066197524, + 0.010304816, + 0.020453202, + -0.022695364, + -0.043748215, + -0.0058596013, + 0.008968645, + -0.00627023, + -0.009379273, + 0.02192625, + 0.010780623, + 0.009952849, + -0.020726955, + -0.010845803, + -0.00988767, + 0.03000846, + -0.0034544924, + -0.00010561052, + -0.0100441, + -0.018823724, + -0.021013742, + 0.021887142, + -0.011627952, + 0.014847799, + 0.0034773052, + -0.017194247, + 0.0036435118, + -0.009379273, + -0.013309573, + 0.009548739, + -0.0070132716, + 0.009868116, + 0.0077302414, + -0.010532943, + 0.003852085, + 0.011386789, + -0.014326367, + -0.0016302923, + -0.019814447, + 0.022447683, + -0.012885909, + -0.023125546, + -0.018888904, + 0.01619049, + 0.024572521, + -0.006733001, + -0.00027538172, + 0.010402584, + -0.022578042, + -0.0009662802, + 0.020270701, + 0.008812215, + -0.024976632, + -0.007058897, + -0.0165946, + -0.021561246, + -0.021821965, + -0.0005246918, + -0.0050578984, + -0.0025419851, + -0.0067525553, + -0.0033795366, + -0.024585558, + 0.010487318, + -0.011856079, + -0.013479038, + 0.0013019526, + 0.02293001, + -0.019345157, + 0.00842114, + -0.0014665298, + 0.020361952, + -0.023646979, + 0.0022405316, + 0.00024381059, + -0.016777102, + 0.020401059, + -0.01603406, + -0.002385555, + -0.03081668, + 0.00014868983, + 0.019253908, + 0.017363712, + 0.028235588, + 0.02239554, + -0.024168411, + 0.0036141812, + -0.042679276, + -0.025054848, + 0.013909221, + 0.009164182, + 0.017963361, + -0.004705931, + -0.00552067, + 0.002941207, + 0.010839284, + -0.013179215, + -0.0152910175, + -0.012501352, + -0.030451678, + -0.017846039, + 0.01406565, + -0.011158663, + 0.0018282739, + -0.017102996, + 0.0046733418, + -0.0024474752, + 0.018941047, + 0.0018820466, + 0.0068568415, + 0.004780887, + 0.032667767, + 0.00645599, + 0.0007678913, + -0.0021557987, + -0.019658018, + 0.01908444, + -0.019188728, + -0.01771568, + -0.025915211, + -0.017663537, + 0.037908167, + 0.010910982, + -0.015043337, + -0.024689844, + 0.008590606, + -0.025654495, + -0.02058356, + -0.009620436, + 0.031624902, + 0.016816208, + 0.0005605403, + 0.011627952, + -0.0022014242, + 0.0071827373, + 0.0030650473, + -0.0010583457, + -0.00007072951, + 0.021730714, + -0.028000943, + 0.021939287, + 0.0002782333, + -0.034388494, + -0.010982679, + 0.023295011, + 0.0004073694, + 0.001618886, + 0.007847564, + -0.003421903, + -0.017324606, + -0.000569095, + 0.0009622065, + -0.019384265, + 0.0054880804, + 0.008206049, + -0.044738937, + 0.013544218, + -0.0026299767, + -0.011556255, + -0.017819967, + 0.009483559, + -0.0063386676, + 0.0012579567, + -0.00047865903, + -0.008994716, + 0.0024882122, + -0.00073489436, + -0.03256348, + 0.019970877, + -0.008395068, + 0.0047352617, + 0.038664244, + 0.0077367597, + -0.0008571052, + -0.021391781, + -0.006605902, + -0.020388024, + -0.013290019, + 0.0235818, + -0.0100766895, + -0.018914975, + -0.016855316, + 0.0069350568, + -0.031624902, + 0.0130293025, + 0.0024588816, + 0.0134138595, + -0.028027015, + 0.021339638, + 0.018576045, + -0.039263893, + 0.0015919995, + 0.023555728, + -0.023125546, + 0.0056836177, + -0.013335644, + 0.010689373, + -0.029200237, + 0.022630185, + 0.0071827373, + -0.0064853206, + -0.025328599, + 0.007697652, + -0.006416883, + -0.027583797, + -0.004230124, + 0.18563008, + -0.017767824, + 0.015877629, + 0.038247097, + -0.00052917283, + 0.03587458, + 0.02860059, + -0.0005393571, + -0.0031025254, + 0.008166942, + -0.040776048, + 0.020766063, + 0.014274224, + -0.0005866119, + -0.001288102, + -0.043331068, + -0.029956317, + -0.011465005, + -0.036656726, + 0.009431416, + 0.009314094, + -0.0054750447, + -0.013922256, + -0.00910552, + 0.013557253, + -0.0019977395, + -0.006462508, + 0.009222843, + 0.023881624, + 0.016737994, + 0.0025941283, + 0.008153906, + 0.004748298, + -0.0010208677, + -0.019488553, + -0.014417618, + -0.0043148566, + -0.0037477985, + 0.012468763, + 0.019006226, + 0.0023122288, + 0.008225603, + 0.0069220206, + -0.0042333826, + -0.013557253, + 0.019188728, + 0.003786906, + -0.0077432776, + -0.008968645, + 0.026032533, + -0.03066025, + -0.017089961, + 0.03496207, + 0.03285027, + 0.014547976, + -0.008219085, + 0.02826166, + 0.0053186147, + -0.0005430234, + -0.010734999, + -0.017102996, + 0.01619049, + -0.012677335, + 0.025185205, + -0.011673577, + 0.0043539642, + -0.035222787, + -0.0038129776, + -0.0016262187, + -0.016555492, + 0.014508869, + -0.018198006, + -0.01818497, + -0.013896185, + -0.030399533, + -0.02747951, + 0.037099946, + 0.015499591, + 0.00826471, + 0.038507815, + 0.0039074873, + 0.0065928665, + -0.0036206993, + 0.011908222, + 0.00110723, + -0.021131065, + 0.008336407, + -0.008916501, + 0.01437851, + 0.0008265525, + -0.0017370231, + -0.01883676, + -0.003770611, + -0.020674812, + -0.0057716095, + 0.008492837, + 0.0000075172384, + 0.016724957, + -0.014182973, + 0.002862992, + -0.010995715, + -0.010734999, + 0.0026348652, + 0.007899707, + 0.010669819, + 0.01469137, + -0.018237114, + 0.004376777, + -0.002167205, + -0.010891428, + -0.011921258, + -0.028079158, + -0.000112433954, + 0.005892191, + -0.017259426, + 0.004494099, + -0.0050024963, + -0.015538698, + 0.018615153, + -0.026619146, + 0.015369233, + -0.021874107, + -0.011556255, + -0.011621434, + -0.021874107, + -0.013726719, + 0.0004872138, + -0.01930605, + 0.0010477541, + -0.0331892, + 0.0016359955, + -0.012403583, + 0.026958076, + -0.026723431, + 0.00095161493, + 0.01774175, + 0.017324606, + 0.0038586028, + -0.0072544343, + 0.033137057, + 0.0047352617, + -0.011249913, + 0.025850032, + 0.006746037, + -0.000620831, + -0.005892191, + 0.0043050796, + 0.025250385, + -0.009985439, + 0.0099658845, + -0.00941838, + -0.016777102, + 0.0014388287, + -0.005735761, + 0.04082819, + -0.010220083, + -0.0333717, + -0.015825486, + 0.013283501, + 0.021483032, + -0.03558779, + -0.0043050796, + 0.061685503, + -0.010311334, + -0.027114507, + 0.004503876, + -0.16800566, + 0.0165946, + 0.02064874, + -0.022408575, + 0.021848036, + 0.022486791, + -0.01780693, + -0.0060160314, + 0.004376777, + 0.016021024, + 0.047919676, + 0.03384099, + -0.0165946, + -0.013622433, + 0.01493905, + -0.008655785, + -0.01927998, + 0.0030080157, + 0.01968409, + 0.014052615, + 0.036917444, + -0.012664299, + 0.0035066358, + 0.00017160436, + -0.016490312, + 0.023242868, + 0.0023464477, + 0.01381797, + -0.0085254265, + 0.015695129, + -0.021065885, + -0.0100766895, + 0.02875702, + 0.018719438, + 0.0030585295, + 0.0019635204, + -0.021913214, + -0.020322844, + -0.0151997665, + 0.01646424, + 0.0065081334, + 0.011334646, + 0.00227638, + -0.014287259, + 0.0017582063, + 0.024051089, + 0.014717441, + -0.024663772, + -0.014143866, + -0.011686613, + 0.014613155, + -0.012520906, + -0.011438932, + 0.028704876, + 0.014313331, + -0.0050187907, + 0.008603642, + 0.008290782, + 0.004787405, + 0.024363948, + -0.039316036, + -0.02255197, + 0.017037818, + -0.0062148273, + -0.02622807, + -0.00458535, + -0.0074434537, + 0.0033958312, + -0.010187494, + -0.0026967854, + 0.004138873, + -0.020192485, + 0.0047189672, + -0.034883857, + 0.011373754, + 0.005667323, + 0.0068177343, + 0.02398591, + -0.01325743, + -0.014600119, + -0.036448155, + 0.02860059, + -0.009359719, + -0.0040867296, + -0.013778863, + 0.032302763, + 0.015916737, + 0.005533706, + -0.038455673, + -0.01755925, + 0.027349152, + -0.01827622, + 0.005025309, + -0.009744276, + 0.0024230331, + 0.022617148, + -0.010369996, + 0.028704876, + -0.02938274, + 0.013231358, + 0.008303817, + -0.007573812, + -0.013583325, + 0.02685379, + 0.019723197, + 0.0009499854, + 0.023373226, + 0.024898417, + 0.03782995, + 0.012612157, + -0.018224077, + 0.008199532, + 0.028339874, + 0.010363477, + -0.008355961, + 0.008975162, + 0.014000472, + -0.0047352617, + 0.025693603, + 0.013987436, + 0.019983914, + -0.007104522, + 0.0057487967, + 0.010930535, + -0.007176219, + -0.016177453, + -0.08222996, + 0.0022454201, + -0.0041128015, + 0.020036057, + 0.005009014, + 0.045234296, + 0.01297716, + 0.0062017916, + -0.010207048, + 0.024246626, + -0.0002056197, + -0.019592838, + -0.017389785, + -0.024624664, + 0.0153822685, + 0.0021085439, + -0.018628187, + -0.013374752, + -0.010559015, + 0.010461246, + -0.018980155, + -0.008734, + 0.0034642692, + -0.0076455087, + -0.018054612, + 0.006967646, + -0.010389549, + 0.012879391, + 0.0076194373, + -0.0019570026, + -0.0033665006, + -0.0016213302, + -0.0050350856, + -0.032433122, + -0.013426895, + -0.005292543, + -0.02264322, + 0.0077563133, + 0.036630657, + -0.045651443, + 0.00988767, + -0.00011620212, + -0.0008090356, + -0.020374987, + 0.0062083094, + -0.014587083, + -0.019423373, + 0.013400824, + 0.008303817, + -0.023321083, + -0.035379216, + -0.0057781273, + -0.0025501323, + 0.0017859074, + 0.027714154, + -0.009522667, + 0.017285498, + 0.0073522027, + -0.034988143, + 0.02217393, + 0.009464006, + -0.005729243, + -0.009196771, + 0.027297009, + 0.015343161, + 0.009548739, + -0.016216561, + -0.041740697, + 0.02940881, + -0.015225839, + -0.017911218, + 0.028313803, + -0.02423359, + -0.0068503236, + -0.025563244, + -0.009274987, + -0.016021024, + -0.003135115, + 0.015017265, + -0.023868587, + -0.011510629, + -0.021874107, + 0.010780623, + -0.0065342053, + 0.0018804171, + 0.021600354, + 0.008414622, + -0.0066580456, + 0.0119538475, + -0.009705168, + 0.026553966, + 0.024064125, + 0.023099475, + -0.015095481, + 0.0010941942, + 0.048310753, + -0.0067786267, + -0.009457488, + -0.000286177, + -0.0026593073, + 0.0049307994, + -0.019762304, + -0.06820341, + 0.019175692, + -0.0050383448, + -0.011465005, + 0.028053086, + 0.0034088672, + 0.012768586, + -0.005807458, + 0.014912979, + -0.01690746, + -0.048258606, + 0.015017265, + -0.0078084567, + -0.014600119, + -0.03863817, + -0.025198242, + 0.024168411, + 0.016307812, + 0.00085140206, + -0.005282766, + 0.01995784, + 0.011549737, + 0.024168411, + 0.030399533, + -0.038455673, + 0.00552067, + -0.0038423082, + 0.021417852, + -0.026671289, + -0.011393307, + 0.003500118, + -0.024624664, + -0.0027798887, + 0.01800247, + 0.0021590579, + -0.005729243, + 0.010956607, + -0.0007507818, + 0.021887142, + 0.047293957, + -0.018015504, + -0.009718204, + 0.022069644, + -0.0038455671, + -0.0054750447, + 0.012625192, + -0.0032638435, + -0.0014184603, + -0.0040541403, + 0.01493905, + 0.011575809, + 0.019501587, + -0.0017142104, + -0.008382033, + -0.0048558433, + -0.039811395, + 0.012058134, + 0.008499355, + -0.010050618, + -0.0014828246, + 0.023047332, + -0.0030357167, + 0.029591313, + 0.0014673446, + 0.0013394306, + 0.00056257716, + -0.017116033, + -0.0051133004, + 0.0025615387, + -0.026188964, + -0.025719674, + 0.011940812, + -0.0028809165, + 0.021222316, + 0.008219085, + -0.014965122, + -0.00057276135, + -0.010669819, + -0.016021024, + 0.025367707, + -0.005312097, + -0.0044354377, + -0.044530362, + 0.017194247, + 0.01665978, + -0.017507108, + -0.016777102, + -0.00029615755, + -0.00558259, + 0.020844277, + 0.00012546977, + -0.0015357826, + 0.025993425, + 0.00421057, + 0.00033689447, + 0.009959367, + -0.008688374, + -0.028027015, + 0.037882093, + 0.0016115534, + 0.023373226, + -0.0038846745, + -0.0022812686, + -0.0151997665, + -0.02488538, + -0.009118557, + -0.018954083, + -0.011614916, + -0.00008422362, + 0.016607635, + 0.03034739, + 0.025185205, + -0.010891428, + 0.025367707, + -0.011308574, + -0.0107871415, + -0.015212802, + -0.022604113, + -0.018445686, + 0.02158732, + 0.024116268, + 0.014495833, + 0.016555492, + -0.020205522, + 0.019423373, + -0.0072479164, + 0.00997892, + -0.028704876, + 0.009529185, + -0.012931534, + 0.014339402, + 0.017324606, + -0.006693894, + -0.018875869, + -0.03736066, + 0.013791898, + 0.011693131, + 0.018797653, + -0.01643817, + 0.041688554, + -0.0020629186, + -0.006843806, + 0.003019422, + 0.0024230331, + 0.028027015, + -0.009027306, + 0.016151382, + -0.0038032006, + -0.015017265, + -0.007632473, + 0.0007255249, + -0.013452967, + 0.00648858, + -0.031833474, + -0.0048330305, + -0.024038054, + 0.030634178, + 0.00049454643, + -0.0013418748, + 0.037126016, + -0.0116083985, + 0.03642208, + 0.008179978, + -0.020518381, + -0.012181974, + 0.026723431, + 0.00048151062, + 0.010141868, + -0.007990958, + 0.01175831, + 0.001750059, + -0.022812687, + -0.0014608266, + 0.009040342, + -0.0059736646, + -0.014196008, + 0.0030210514, + 0.008883912, + 0.03081668, + 0.00083673676, + 0.027427366, + -0.0183414, + -0.017050853, + 0.004295303, + 0.00973124, + 0.008193013, + 0.0003967778, + -0.020283736 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 2, + "total_tokens": 2 + } +} diff --git a/vectorstores/inmemory/testdata/TestInMemoryStoreRestWithScoreThreshold.httprr b/vectorstores/inmemory/testdata/TestInMemoryStoreRestWithScoreThreshold.httprr new file mode 100644 index 000000000..1ab17adb0 --- /dev/null +++ b/vectorstores/inmemory/testdata/TestInMemoryStoreRestWithScoreThreshold.httprr @@ -0,0 +1,18646 @@ +httprr trace v1 +334 334599 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 138 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["Tokyo","Yokohama","Osaka","Nagoya","Sapporo","Fukuoka","Dublin","Paris","London ","New York"]}HTTP/2.0 200 OK +Content-Length: 333642 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:27:32 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 173 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-p6w2b +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999984 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_3a3d3b8ba3c14abaa5f6083ab421c14e + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.001070031, + 0.008037085, + -0.008887224, + -0.008638722, + -0.010875242, + 0.014713947, + -0.029375577, + 0.013065985, + -0.011051809, + -0.035548896, + 0.001566218, + -0.02474559, + 0.016296513, + -0.027125979, + -0.007997848, + -0.021070372, + 0.021711247, + -0.01803603, + 0.0024016432, + -0.02207746, + -0.011306851, + 0.012686692, + -0.0024065478, + -0.019016959, + -0.008344443, + -0.011803855, + 0.0013651273, + -0.015302505, + 0.008965698, + -0.020010969, + 0.019043118, + -0.019095434, + -0.010522107, + -0.022875283, + 0.008828368, + -0.004652877, + -0.015328663, + -0.0060261786, + -0.0023493269, + -0.0118496325, + 0.009122647, + -0.008207113, + 0.0015155366, + -0.017251285, + -0.018323768, + 0.01607417, + -0.016649649, + 0.016571173, + -0.00018801155, + 0.012255083, + 0.015119398, + 0.020311786, + -0.032331448, + -0.0067684157, + -0.026602816, + -0.016388068, + -0.028486202, + -0.0007291578, + 0.000018967197, + 0.0041558724, + -0.0033645893, + -0.0059934813, + -0.015982617, + 0.0117123015, + 0.014269259, + -0.011346088, + -0.011241456, + 0.028616993, + -0.015302505, + 0.0038223565, + 0.013242552, + 0.017395156, + -0.0010079053, + -0.0024752128, + 0.031625178, + -0.008010927, + -0.0015245284, + 0.004652877, + 0.011856171, + 0.009848535, + 0.01523711, + -0.035601214, + 0.004365138, + 0.0026583197, + 0.013190236, + 0.007605476, + -0.008743354, + 0.0360459, + -0.002671399, + -0.00082071126, + 0.009534637, + 0.003756961, + 0.00992047, + 0.01062674, + -0.024850221, + -0.016113406, + -0.006454518, + 0.043344017, + -0.01857227, + -0.013196776, + -0.0015964633, + 0.009815837, + -0.0037242635, + -0.011529195, + -0.025883468, + 0.011568432, + 0.014321575, + -0.016440384, + 0.008906842, + -0.008710656, + -0.0019765736, + 0.027989198, + -0.013085604, + -0.059065055, + -0.017722132, + -0.012961352, + 0.005476858, + -0.01662349, + -0.010234368, + -0.014753184, + 0.018807694, + 0.019265462, + 0.011856171, + 0.002682843, + 0.02725677, + 0.00033167689, + -0.006483946, + -0.019330857, + 0.00050926604, + -0.009613113, + 0.026995188, + 0.011744999, + -0.0058986577, + 0.015629482, + -0.021004977, + 0.013903045, + -0.016440384, + 0.01131993, + -0.01103873, + -0.006441439, + 0.0063368063, + 0.0090637915, + -0.01286326, + 0.013347185, + 0.0097242845, + 0.02502025, + 0.023136863, + -0.0030392476, + 0.015851825, + -0.005967323, + 0.003730803, + -0.0050256304, + 0.016976625, + 0.0071804062, + 0.009580415, + 0.0035738542, + 0.03225297, + 0.018611507, + 0.0059280857, + 0.010548265, + 0.006931904, + 0.004237617, + 0.031389754, + -0.021345032, + 0.0030081847, + 0.0127063105, + 0.012032739, + 0.014413129, + -0.00033699026, + -0.011588051, + -0.018336847, + 0.019448569, + -0.04049278, + 0.018624587, + 0.005208737, + 0.017578263, + 0.011006032, + 0.009292675, + -0.019854018, + -0.007971689, + -0.0023803897, + 0.00003410264, + 0.02683824, + 0.009927009, + -0.007919373, + 0.005771137, + 0.027779931, + 0.01551177, + -0.0011803856, + -0.014504682, + 0.025870388, + 0.035548896, + 0.031180488, + 0.0071346294, + -0.67843723, + -0.03280229, + 0.0011599495, + 0.004224538, + 0.020468736, + 0.005329719, + 0.018245295, + 0.015498691, + -0.012830562, + 0.013562989, + -0.027230611, + 0.017996792, + -0.01789216, + -0.012601678, + -0.008749894, + 0.0048032864, + 0.015263268, + -0.0027139059, + -0.004208189, + 0.0105548045, + 0.0047771283, + 0.017813684, + -0.008409838, + -0.0052348953, + 0.013236013, + -0.010567884, + 0.007697029, + -0.004306282, + -0.009416926, + 0.02362079, + -0.029794108, + 0.049700443, + 0.0050485185, + -0.01508016, + 0.039917305, + -0.015694877, + -0.02305839, + 0.017565183, + 0.02054721, + 0.031258963, + 0.0014574982, + 0.003841975, + 0.0028806638, + -0.0026027337, + 0.005336258, + 0.002027255, + 0.022208251, + -0.023280734, + 0.008991856, + -0.008220192, + 0.021828959, + -0.036229007, + -0.016675808, + -0.01634883, + -0.0004142385, + 0.0098354565, + 0.0035967426, + -0.0034332543, + -0.0009694856, + -0.009534637, + -0.015851825, + -0.0092011215, + -0.027779931, + -0.021279637, + -0.012366255, + 0.012405492, + -0.010437093, + -0.023306891, + -0.0006384218, + -0.01968399, + 0.004554784, + 0.021397348, + -0.0070365365, + -0.009586954, + 0.017656736, + 0.006235444, + 0.0259881, + -0.031991392, + -0.0034169054, + -0.007618555, + 0.004201649, + 0.012183148, + -0.01969707, + -0.0053035603, + 0.015681798, + -0.040178884, + -0.035967425, + 0.002808729, + 0.026602816, + -0.012882878, + 0.0046430677, + 0.0036719472, + 0.0063923923, + 0.00908995, + -0.011810395, + 0.011882329, + -0.0016970086, + -0.008050164, + 0.006748797, + -0.0071346294, + -0.014216943, + -0.015446375, + 0.009750443, + 0.0036261706, + -0.015302505, + -0.004280124, + -0.014910133, + 0.017238207, + 0.021894353, + -0.014923212, + 0.006107923, + -0.010240907, + -0.017722132, + 0.00039257627, + 0.018493796, + -0.023019154, + 0.017839843, + -0.00011781375, + 0.022391358, + 0.0090637915, + 0.007363513, + 0.0019733037, + 0.016374988, + 0.022574464, + 0.017251285, + 0.015106319, + 0.006078495, + 0.0010798402, + -0.00642509, + 0.0061733183, + -0.001871941, + 0.014426208, + 0.010574424, + -0.006467597, + 0.023176102, + -0.009488861, + -0.009181503, + -0.0059346254, + 0.018493796, + -0.036385957, + -0.033587035, + -0.012425111, + -0.0015277981, + -0.003521538, + 0.012085055, + -0.026419709, + -0.016937388, + 0.0007418282, + -0.019827861, + 0.00503217, + -0.008213652, + 0.0026615895, + -0.029794108, + 0.01914775, + -0.0060065603, + -0.013484515, + -0.00008174415, + -0.0026632245, + -0.021057293, + 0.0029525987, + 0.019043118, + 0.0080697825, + -0.03832166, + -0.0014574982, + 0.0060686856, + -0.012071976, + 0.012804404, + 0.017447472, + -0.0054833977, + -0.008867606, + -0.02151506, + -0.019265462, + -0.02388237, + 0.003953147, + 0.018925406, + 0.0033090033, + 0.010541726, + -0.013628385, + -0.0012694866, + 0.002153141, + 0.011091046, + -0.020730317, + -0.013602227, + 0.011758079, + 0.02027255, + -0.01971015, + 0.011267614, + 0.017944476, + -0.00084196473, + 0.0032043706, + -0.0073308153, + 0.015877984, + 0.008030545, + -0.000106778294, + 0.0120981345, + -0.012909036, + 0.009730823, + -0.003897561, + -0.021828959, + 0.015825668, + 0.032933082, + -0.01523711, + 0.0024572292, + -0.00950194, + 0.016322672, + -0.012124293, + -0.00656569, + -0.018951563, + 0.031206647, + 0.014596236, + 0.014648552, + -0.015210952, + -0.0068861274, + 0.01857227, + -0.006931904, + 0.03288077, + 0.006833811, + 0.023019154, + -0.019396253, + -0.0068665086, + 0.021201164, + -0.034214832, + -0.016257277, + -0.018415323, + -0.012765166, + 0.016741201, + -0.0011983692, + 0.033456247, + 0.0073308153, + -0.0059738625, + -0.034450255, + -0.013406041, + 0.001732976, + 0.021188084, + -0.01522403, + -0.029009365, + 0.00009017401, + -0.024640957, + 0.030081848, + 0.012562441, + 0.023267655, + 0.010253986, + 0.028957048, + -0.019670913, + -0.000803545, + 0.001984748, + 0.035862792, + 0.014269259, + -0.009632731, + 0.01886001, + -0.016688885, + -0.009096489, + -0.005699202, + -0.004064319, + 0.0011893774, + -0.03382246, + 0.021619692, + -0.00048596898, + 0.014831658, + 0.038504764, + -0.0002630118, + 0.0009237089, + 0.0055128257, + 0.005270863, + -0.0011632192, + -0.0044926587, + 0.02725677, + 0.012941734, + -0.007906294, + -0.008298666, + -0.015315584, + 0.006369504, + -0.012967892, + -0.0045318957, + 0.019893257, + -0.016701965, + -0.025831152, + -0.0170551, + 0.01285672, + 0.01647962, + -0.007389671, + -0.04444266, + -0.005100835, + 0.0046365284, + 0.0043945657, + -0.024654036, + -0.01076407, + -0.013039826, + -0.01131339, + 0.019801702, + 0.009966247, + 0.023816975, + 0.001081475, + -0.01789216, + -0.017866002, + -0.009789679, + 0.02207746, + -0.013334106, + -0.011908487, + -0.01048941, + 0.015197872, + -0.008148257, + -0.00030837982, + 0.005431081, + 0.026210444, + 0.011267614, + 0.005355877, + -0.011143362, + -0.0051891184, + -0.0034365242, + 0.017565183, + -0.011091046, + -0.006304109, + 0.010528646, + 0.012549362, + -0.009874693, + -0.0146093145, + 0.008056703, + 0.02417011, + -0.0012057262, + -0.017709052, + 0.006680132, + -0.026668211, + -0.0089526195, + 0.08569403, + 0.0059607835, + 0.01145726, + -0.005633807, + 0.0029362498, + 0.0073308153, + -0.016008774, + 0.0008820194, + 0.0099727865, + 0.008056703, + 0.0038452449, + -0.009233819, + -0.0020174456, + 0.011130284, + -0.0024294362, + -0.00656569, + -0.01676736, + -0.027361402, + 0.02418319, + -0.01969707, + 0.00038338007, + 0.00628776, + 0.0027972849, + 0.012130832, + -0.000813763, + -0.0035476962, + 0.024797905, + 0.018101424, + 0.01913467, + -0.025778836, + 0.0021040945, + 0.019644754, + -0.018402243, + 0.017133573, + -0.008226731, + -0.00004115307, + 0.009966247, + 0.0212404, + 0.0062092855, + -0.01160113, + 0.007513922, + 0.015394058, + 0.00824635, + 0.00038481058, + 0.014138469, + -0.019592438, + -0.018101424, + 0.02024639, + -0.019500885, + -0.018506875, + 0.032776136, + 0.006944983, + -0.041042104, + -0.017656736, + -0.017473629, + 0.008900303, + -0.009547717, + -0.013615306, + -0.0027694919, + 0.010038181, + 0.0066016577, + -0.042114586, + 0.005257784, + -0.011921567, + -0.024614798, + -0.037903126, + -0.002767857, + -0.016741201, + -0.03633364, + -0.0063923923, + -0.005558602, + -0.029401736, + -0.022796808, + 0.024300901, + 0.01607417, + -0.03047422, + 0.008095941, + -0.01621804, + -0.0010790228, + 0.036935277, + -0.026027337, + -0.011398404, + -0.012117753, + -0.008710656, + -0.031886756, + 0.025268752, + 0.031651337, + -0.03280229, + -0.0027760314, + -0.00006381153, + 0.0148055, + -0.00684689, + 0.0153679, + 0.0212404, + 0.0027466035, + -0.011359167, + 0.010155893, + 0.032357603, + -0.016034933, + -0.01313138, + 0.023660026, + -0.014033835, + 0.008462154, + 0.015812589, + 0.015119398, + 0.011346088, + 0.012922116, + 0.018820774, + -0.010777148, + 0.0012743913, + 0.02934942, + -0.018402243, + 0.0084294565, + 0.013484515, + -0.013824571, + 0.021920511, + 0.010280144, + 0.021397348, + 0.011928107, + -0.019762466, + 0.0070299967, + -0.023293814, + 0.015681798, + 0.02989874, + 0.0058855787, + -0.014334654, + 0.0138376495, + -0.009070331, + -0.0061242715, + 0.00097193796, + -0.009259977, + 0.013772255, + -0.02178972, + -0.008050164, + -0.022836046, + 0.001999462, + -0.033482403, + 0.0128436405, + 0.0031079126, + -0.031075856, + -0.007415829, + 0.007481225, + 0.01160113, + -0.0012327018, + -0.03675217, + -0.021985907, + 0.0017297062, + 0.010665976, + -0.0066310856, + 0.017826764, + 0.005404923, + 0.020442577, + -0.01061366, + 0.0062975693, + -0.030918907, + -0.02628892, + -0.025124881, + -0.028172305, + 0.0058299927, + 0.008847987, + 0.031520545, + 0.011189139, + 0.005404923, + -0.011640367, + -0.007997848, + 0.002779301, + 0.004253966, + 0.020939581, + -0.013445278, + 0.02516412, + 0.012366255, + 0.01816682, + -0.02751835, + 0.007487764, + -0.02780609, + 0.023568474, + -0.0027482384, + -0.011195679, + -0.009652349, + -0.02516412, + -0.00907687, + -0.019213146, + 0.005195658, + 0.0005362416, + -0.0025929245, + -0.0032763055, + -0.00060163694, + -0.0124578085, + 0.023555394, + 0.007991308, + 0.007605476, + -0.009338452, + 0.0002950964, + -0.0023918338, + -0.006346616, + 0.005257784, + -0.012680152, + -0.005404923, + -0.0026926524, + 0.025961943, + 0.018820774, + -0.014334654, + -0.0045482446, + 0.002601099, + 0.012130832, + 0.03944646, + 0.0059084673, + -0.015302505, + 0.007278499, + -0.012215846, + -0.026053496, + -0.011751539, + 0.007383132, + -0.01940933, + -0.02359463, + 0.010090498, + -0.006676862, + 0.028303094, + -0.0248633, + -0.015642561, + 0.019893257, + 0.011862711, + 0.032043707, + 0.015681798, + 0.010665976, + 0.008913382, + -0.0071346294, + -0.004737891, + 0.004201649, + -0.015982617, + -0.0070692343, + 0.023110706, + 0.020913424, + -0.011496497, + -0.037301492, + -0.016322672, + 0.004247426, + -0.0016087248, + -0.0010675786, + 0.023856213, + 0.0015899237, + 0.00489157, + -0.026184287, + -0.0014599506, + -0.022875283, + 0.036569063, + -0.015276347, + -0.002754778, + -0.0008574961, + -0.019108513, + -0.0015980981, + 0.014269259, + -0.003802738, + 0.003662138, + 0.015027844, + -0.012621297, + 0.0031226266, + -0.018258374, + -0.00531337, + 0.013942283, + 0.00043201784, + 0.024810985, + 0.009325373, + -0.0010871972, + 0.012804404, + 0.005467049, + -0.011267614, + 0.0054016532, + -0.00014376752, + 0.023686185, + -0.004260505, + -0.011594591, + -0.021358112, + -0.0018523225, + 0.003202736, + 0.009214201, + 0.005215277, + -0.007291578, + -0.01774829, + -0.0049209977, + 0.008409838, + 0.007468146, + -0.0029248057, + -0.011758079, + -0.025216436, + -0.024797905, + -0.022260567, + -0.0061831274, + 0.025948863, + -0.018768458, + 0.0013634925, + 0.0025880197, + -0.018977722, + 0.023960846, + -0.013347185, + -0.0044795796, + 0.017852923, + 0.027884565, + -0.024379376, + 0.011431102, + 0.0070496155, + 0.021763563, + -0.020507973, + -0.0012531378, + 0.00030286208, + -0.011404944, + 0.012928654, + -0.0138376495, + -0.0099727865, + -0.030500377, + 0.006451248, + 0.012124293, + 0.0069384435, + 0.025595728, + 0.033717826, + -0.026158128, + -0.0028888383, + -0.020298708, + -0.015564086, + 0.0181799, + -0.0051466115, + 0.014504682, + 0.020442577, + -0.012464348, + -0.0010021833, + 0.013536831, + -0.013458357, + -0.0059411647, + -0.0073308153, + -0.027701458, + -0.0069580623, + 0.0068534296, + -0.0110779675, + -0.012078515, + -0.02054721, + 0.0036261706, + -0.010947176, + 0.008900303, + 0.010430554, + 0.0046201795, + 0.0011158077, + 0.015446375, + 0.01453084, + 0.012281241, + -0.0113264695, + -0.029113997, + 0.006160239, + -0.0033367963, + -0.029584844, + -0.03897561, + -0.005100835, + 0.020926502, + 0.0034201753, + -0.014897054, + -0.020141758, + 0.011208758, + -0.021449665, + -0.007389671, + -0.013536831, + 0.018846931, + 0.012202767, + -0.012340097, + 0.007808201, + 0.0061275414, + 0.014779342, + 0.00823981, + -0.0034790311, + 0.018336847, + 0.038766347, + -0.036569063, + 0.032226812, + 0.006408741, + -0.016610412, + -0.010502488, + 0.005493207, + 0.005646886, + -0.002699192, + 0.0068534296, + -0.01702894, + -0.010136275, + -0.012111213, + 0.0022724874, + -0.026642054, + 0.017996792, + 0.007605476, + -0.03591511, + 0.026158128, + 0.017695975, + -0.01494937, + 0.005656695, + 0.0059346254, + -0.00475097, + -0.0011787507, + 0.004162412, + -0.025791915, + -0.0034005567, + -0.000193938, + -0.031991392, + 0.01984094, + -0.012261623, + 0.014713947, + 0.0045318957, + 0.00922074, + -0.01075753, + -0.019854018, + 0.0005378765, + -0.015642561, + -0.014413129, + 0.026040416, + -0.0013667622, + -0.025621887, + -0.0122354645, + 0.017983712, + -0.045619775, + 0.009214201, + 0.008834908, + -0.007808201, + -0.024928696, + 0.008167876, + 0.023581553, + -0.026380472, + -0.016937388, + 0.009998945, + -0.022862203, + -0.0003002054, + -0.011888869, + 0.027570667, + -0.031102015, + 0.015616402, + -0.0011501402, + -0.0022463293, + -0.031625178, + -0.0061177323, + 0.011391865, + -0.008043624, + -0.008468694, + 0.23981772, + -0.023542315, + -0.0048000165, + 0.038949452, + -0.0032223545, + 0.039629564, + 0.030134164, + -0.0012049088, + -0.014687789, + 0.00032452427, + -0.03131128, + 0.001627526, + 0.020834949, + -0.0019160829, + -0.0029591382, + -0.025098724, + -0.021292716, + -0.03301156, + -0.038190868, + -0.0060294485, + 0.020141758, + -0.00258475, + -0.002694287, + -0.01341912, + 0.014269259, + 0.012693232, + -0.011287232, + -0.0056665046, + 0.020442577, + 0.019867098, + 0.0048588724, + 0.008017466, + -0.00517277, + 0.02122732, + 0.00013763671, + -0.009600033, + -0.015040924, + -0.0046626865, + 0.02725677, + 0.023673106, + -0.004567863, + 0.0020861106, + -0.010796768, + -0.010247447, + 0.00038848908, + 0.021894353, + -0.007873597, + 0.008364062, + -0.011980423, + 0.034162514, + -0.032933082, + -0.01048941, + 0.030788116, + 0.01662349, + 0.0094234655, + -0.013602227, + 0.036412116, + 0.015250188, + -0.009573875, + -0.017172812, + -0.020861108, + 0.010417474, + -0.010012023, + 0.027230611, + 0.0048163654, + 0.0001181203, + -0.023411525, + 0.012869799, + 0.0062092855, + -0.00083624263, + 0.014923212, + -0.011470339, + -0.0033940172, + -0.01734284, + -0.02893089, + -0.016597332, + 0.032226812, + -0.0033874775, + 0.02177664, + 0.037118383, + -0.008403298, + 0.006833811, + 0.022718335, + 0.0007839264, + 0.009279596, + -0.016793517, + 0.023503078, + 0.0156033235, + 0.0077885827, + -0.008468694, + -0.01369378, + -0.018140662, + -0.014596236, + -0.020390261, + -0.0070757736, + 0.014700868, + 0.0005292934, + 0.008978778, + -7.4080634e-7, + -0.016793517, + -0.008187494, + -0.001349596, + 0.015904142, + -0.009586954, + 0.004257235, + 0.0059869415, + -0.000112091664, + -0.0023264384, + -0.006052337, + -0.03060501, + -0.006232174, + -0.03479031, + 0.008972238, + 0.016989704, + 0.0020713967, + -0.0068926667, + -0.008861066, + -0.023660026, + 0.017368997, + -0.02263986, + 0.014910133, + -0.02024639, + -0.015001686, + 0.00115341, + -0.0036850262, + -0.011025651, + -0.0018212596, + -0.01607417, + 0.0069711413, + -0.035732005, + 0.010541726, + 0.0032730359, + 0.014230021, + 0.0020223502, + -0.0090637915, + 0.021266557, + 0.011542274, + -0.008004387, + -0.014779342, + 0.014975528, + 0.018807694, + -0.012745548, + 0.018075267, + -0.0004217998, + -0.0018572271, + -0.011548813, + 0.0101951305, + 0.012085055, + -0.013458357, + 0.008677959, + -0.0100578, + -0.024000082, + -0.0058365325, + -0.01675428, + 0.031128172, + -0.0050550583, + -0.0127063105, + -0.020298708, + -0.00038276697, + 0.01704202, + -0.029506369, + -0.016231118, + 0.046927683, + -0.017277444, + -0.030029532, + -0.0043520587, + -0.16908614, + 0.027884565, + 0.020848028, + -0.021148847, + 0.019357014, + 0.012948274, + -0.0101951305, + -0.019644754, + -0.0063793133, + 0.023372287, + 0.053101, + 0.018611507, + -0.007952071, + -0.014190785, + 0.0032615915, + -0.019082354, + 0.00040769894, + -0.006382583, + 0.025674203, + 0.01229432, + 0.044364184, + -0.02976795, + 0.002838157, + 0.0011722111, + -0.0028659499, + 0.026053496, + -0.014556998, + 0.009881233, + 0.023136863, + -0.015917221, + -0.02390853, + -0.017447472, + 0.037223015, + 0.0265505, + 0.009979326, + 0.008887224, + 0.00011883556, + -0.01760442, + -0.019880177, + 0.027989198, + 0.006464327, + 0.013916125, + -0.0006760241, + -0.0034496032, + 0.008128638, + 0.027282927, + 0.0042703142, + -0.0068272715, + -0.016244197, + -0.011287232, + 0.031651337, + -0.015694877, + -0.007154248, + 0.018650746, + 0.0056959325, + -0.0024425152, + 0.0062289042, + 0.0106202, + 0.004165682, + -0.012653994, + -0.032906923, + 0.0010160798, + 0.019016959, + -0.0011010937, + -0.012183148, + -0.0034430637, + -0.007873597, + -0.0070757736, + -0.017172812, + 0.020586446, + 0.0003275897, + -0.011915027, + 0.017578263, + -0.03295924, + 0.015446375, + 0.00017779352, + -0.0087041175, + 0.025556492, + 0.011686143, + 0.0088414475, + -0.022208251, + 0.042951647, + -0.014190785, + -0.013680701, + -0.0022872014, + 0.010999493, + -0.0076774107, + -0.0022103619, + -0.03175597, + -0.01956628, + 0.007363513, + -0.018467639, + -0.007814741, + -0.011673065, + 0.000020998028, + 0.008854526, + -0.007952071, + 0.02934942, + -0.021972828, + 0.003253417, + 0.006735718, + -0.008697578, + -0.010077419, + 0.033796303, + 0.024784826, + 0.025922704, + 0.019827861, + 0.019278541, + 0.01104527, + 0.011012572, + -0.029297104, + -0.005084486, + 0.012915576, + 0.028747782, + -0.032906923, + 0.002151506, + 0.01940933, + -0.0082921265, + 0.018323768, + 0.01257552, + 0.044808872, + -0.0100839585, + 0.002180934, + 0.025648044, + -0.016374988, + -0.023660026, + -0.07219643, + -0.000642509, + 0.0045318957, + 0.018546114, + -0.004384756, + 0.042402327, + 0.0056501557, + 0.01691123, + 0.00377331, + 0.013432199, + -0.0024212617, + -0.017238207, + 0.0048523326, + -0.016322672, + 0.028041514, + -0.00335478, + 0.0059313555, + -0.002205457, + -0.0023362478, + 0.023960846, + -0.018389164, + -0.016414225, + 0.0028446964, + -0.008965698, + -0.014844738, + 0.008847987, + -0.026785923, + 0.011398404, + 0.01508016, + 0.007853978, + -0.003701375, + -0.0012931925, + 0.0024555943, + -0.029140154, + -0.02109653, + 0.024536325, + -0.019618597, + 0.013183696, + 0.033299297, + -0.045096613, + -0.010783688, + 0.0100839585, + 0.003004915, + -0.011071428, + -0.013615306, + -0.0029575033, + -0.028538518, + 0.005421272, + 0.0048163654, + -0.018768458, + -0.0122354645, + -0.0019226224, + -0.00081049325, + 0.0025455127, + 0.014779342, + -0.0028005545, + 0.0037536914, + 0.01565564, + -0.030003373, + 0.0070823133, + 0.010594042, + -0.0046201795, + -0.018768458, + 0.026458947, + 0.01551177, + 0.008762973, + -0.019200066, + -0.026668211, + 0.025765756, + -0.022992995, + -0.021384269, + 0.013098682, + -0.016871992, + 0.00684689, + -0.018506875, + -0.014046915, + -0.0028561407, + -0.003212545, + 0.014897054, + -0.02362079, + -0.011346088, + -0.030526536, + -0.0023934687, + 0.007376592, + -0.0024931966, + 0.014910133, + 0.012058897, + -0.0058071045, + 0.013301408, + -0.01916083, + 0.014883975, + 0.009403847, + 0.0030997382, + -0.0159303, + -0.007572778, + 0.026432788, + 0.0051662303, + -0.009698126, + 0.005143342, + 0.018977722, + -0.015524849, + -0.024078557, + -0.09129187, + 0.027910722, + 0.007520462, + -0.008409838, + 0.016545016, + -0.006807653, + 0.022312883, + 0.0057907556, + 0.01732976, + -0.018088346, + -0.04852333, + 0.00049904804, + -0.00922728, + -0.011411483, + -0.033796303, + -0.025543412, + 0.014203863, + 0.016466541, + 0.0056926627, + 0.011588051, + 0.0013250727, + 0.0027318895, + 0.016453462, + 0.010587502, + -0.027466035, + 0.011431102, + -0.006189667, + 0.023764659, + -0.031808283, + -0.013013668, + 0.022129776, + -0.031494386, + -0.0011166251, + 0.01857227, + -0.0063368063, + -0.0127063105, + 0.005473588, + 0.01354991, + 0.0070169177, + 0.0405451, + -0.019749386, + -0.005002742, + 0.009070331, + -0.010796768, + 0.0069515225, + -0.0056795836, + 0.017525947, + 0.000104734696, + 0.016832756, + 0.022129776, + -0.009815837, + 0.038949452, + -0.0104436325, + -0.003032708, + -0.0049733142, + -0.016139565, + 0.0040904772, + 0.0019651293, + -0.0077493456, + -0.008782592, + 0.023450762, + 0.0040479703, + 0.011803855, + 0.01047633, + 0.021959748, + -0.0068141925, + -0.02025947, + 0.007167327, + 0.008115559, + -0.03452873, + -0.026079653, + 0.010234368, + 0.016701965, + 0.014687789, + 0.00076512527, + -0.0061536995, + 0.014386971, + -0.008220192, + -0.034345623, + 0.01914775, + 0.004708463, + 0.0035411566, + -0.05367648, + 0.004093747, + 0.014713947, + -0.01789216, + -0.0079324525, + -0.010744452, + -0.01732976, + 0.0265505, + -0.00036396584, + -0.005503016, + 0.00740275, + 0.004404375, + 0.004021812, + 0.012902496, + -0.006245253, + -0.026066575, + 0.030866591, + 0.02403932, + 0.0088414475, + -0.016191881, + -0.012183148, + -0.0079324525, + -0.020730317, + -0.0019749387, + -0.019030038, + -0.02151506, + 0.018363006, + 0.025281832, + 0.015459454, + 0.02097882, + -0.0052054673, + 0.011097586, + -0.0037536914, + -0.002738429, + -0.013746097, + -0.028538518, + -0.011012572, + 0.013562989, + 0.024130873, + 0.029218629, + 0.01620496, + -0.013876887, + 0.010672516, + -0.005198928, + 0.009998945, + -0.027753774, + 0.0010896495, + -0.0051368023, + 0.011496497, + 0.009279596, + -0.010999493, + 0.0015384249, + -0.0023362478, + 0.012497046, + 0.0037406124, + 0.019030038, + -0.0026109081, + 0.024300901, + 0.0005570864, + 0.0034921102, + -0.0027155406, + 0.004355328, + 0.025674203, + -0.006820732, + 0.0254257, + -0.029846424, + -0.022718335, + -0.00642836, + -0.0077885827, + -0.002543878, + -0.00188502, + -0.023777738, + -0.007598936, + -0.020782633, + 0.019631675, + -0.004361868, + 0.014570077, + 0.03983883, + -0.0085929455, + 0.026485104, + 0.023843134, + -0.014831658, + 0.00089101127, + 0.014844738, + 0.015106319, + 0.007716648, + -0.01634883, + 0.01872922, + -0.0015220761, + -0.022535227, + -0.01341912, + 0.0077755037, + -0.013641464, + -0.021410428, + 0.0014215307, + 0.0059444346, + 0.008468694, + 0.002136792, + 0.014190785, + -0.021292716, + -0.026890555, + 0.009796219, + -0.004149333, + -0.011476879, + -0.0071869455, + -0.017643657 + ] + }, + { + "object": "embedding", + "index": 1, + "embedding": [ + 0.0026680413, + -0.0026349186, + 0.008843787, + -0.0049684197, + -0.033255287, + 0.01970144, + -0.02827362, + 0.0020668625, + -0.012116319, + -0.035746124, + 0.00008668857, + -0.0036931918, + 0.016720388, + -0.018151293, + -0.036779553, + -0.024100147, + 0.012487294, + -0.023715923, + 0.009870593, + -0.023212455, + 0.0044020195, + 0.0038091217, + -0.010128952, + -0.015819447, + -0.011096137, + 0.008585429, + 0.0054586367, + -0.017488837, + 0.006253584, + -0.018800499, + 0.020045916, + 0.0018300345, + -0.00961886, + 0.0020685187, + 0.003918427, + -0.00977785, + -0.0061608404, + -0.0112153785, + -0.0011576418, + 0.00024324554, + 0.001564224, + 0.0026713535, + -0.0020635503, + -0.01999292, + -0.0040476057, + 0.013348487, + 0.003825683, + -0.0020536133, + -0.01968819, + 0.028538601, + 0.0107715335, + 0.020655377, + -0.008201204, + -0.005057851, + -0.021092597, + 0.014905258, + -0.020483138, + 0.005163844, + -0.012467421, + -0.006396012, + 0.007333387, + 0.0032874376, + -0.023980904, + 0.011573105, + 0.0063893874, + -0.017038366, + -0.016786633, + 0.011261751, + -0.021145593, + -0.0028286867, + 0.019012485, + 0.0014847293, + -0.020112162, + -0.014229554, + 0.036938544, + 0.013474354, + -0.014706521, + -0.0053957035, + -0.0013091785, + 0.0020171783, + 0.022364512, + -0.023119712, + 0.0028253745, + -0.004888925, + 0.03428872, + 0.0007568559, + -0.010976895, + 0.018230787, + 0.0062204613, + -0.019197972, + 0.024762603, + 0.019423207, + 0.009532741, + -0.004322525, + -0.016495153, + -0.026643978, + -0.0054188897, + 0.01938346, + 0.012898017, + -0.029678026, + -0.018959489, + 0.02571654, + 0.001242933, + -0.01968819, + -0.019303966, + -0.00054611213, + -0.002073487, + -0.020098913, + -0.0015857539, + 0.0011071295, + 0.007823604, + 0.020509636, + -0.0027690658, + -0.05079712, + -0.015845945, + -0.010890775, + 0.005670623, + -0.0001018526, + -0.026723472, + -0.022470506, + 0.011374368, + 0.023543684, + 0.004216532, + -0.0033785251, + 0.028035134, + 0.0016669048, + -0.005034665, + -0.011619477, + -0.0076447413, + -0.001836659, + 0.006134342, + 0.01217594, + 0.027293185, + 0.0031350728, + -0.024020651, + 0.012003701, + -0.013938073, + 0.0210396, + -0.026259754, + -0.01909198, + 0.007260517, + 0.01926422, + -0.00810846, + -0.00009802278, + 0.016362661, + 0.024325382, + 0.03439471, + 0.023517186, + 0.0013373329, + 0.000698477, + -0.007638117, + -0.0040608547, + 0.014335547, + -0.002936336, + -0.0014648556, + 0.0055944403, + 0.015103995, + 0.004206595, + -0.012527042, + 0.025358813, + -0.004832616, + 0.005283086, + 0.030790951, + -0.027902644, + 0.016349413, + 0.01457403, + 0.016813131, + 0.005978665, + -0.0018234099, + -0.022814982, + -0.018866746, + 0.017793566, + -0.027160693, + 0.010619168, + -0.010692039, + 0.01233493, + 0.027213689, + 0.007836854, + -0.026948707, + -0.01909198, + -0.009645359, + 0.0157797, + 0.02045664, + 0.011705596, + 0.01923772, + 0.0017356345, + 0.020006169, + 0.016932374, + 0.021596063, + -0.009711604, + 0.015090746, + 0.046583902, + 0.005081037, + -0.0046703145, + -0.67114735, + -0.04674289, + -0.011785091, + 0.018204289, + 0.023331698, + 0.024444625, + 0.023291951, + -0.006409261, + -0.020072415, + 0.012228937, + -0.02314621, + 0.024550617, + -0.028247122, + -0.0026581045, + 0.0068895416, + -0.016627643, + 0.0049087983, + -0.025001086, + 0.02253675, + 0.01759483, + -0.0065285033, + 0.010764909, + -0.007187647, + 0.0074791275, + 0.039296884, + -0.011314747, + -0.007532124, + -0.008459562, + -0.008664924, + 0.036011104, + -0.040038835, + 0.04030382, + 0.0029048692, + -0.002283817, + 0.056017272, + -0.0071942713, + -0.005922356, + 0.028538601, + 0.023358196, + 0.048544772, + 0.0044682655, + -0.015753202, + 0.0071942713, + 0.0063893874, + 0.0056805597, + -0.0021413888, + 0.030737955, + -0.04239718, + 0.0058263, + -0.022059783, + 0.013328614, + -0.0066113104, + -0.021079348, + -0.00080488395, + 0.00025173326, + 0.013885076, + 0.009420123, + -0.006574875, + -0.011751968, + -0.006184026, + -0.020032667, + -0.0040177954, + -0.030631963, + -0.024736105, + -0.011314747, + 0.020628877, + -0.019515952, + -0.006442384, + -0.00007613068, + -0.0038389321, + -0.0058428613, + 0.022351263, + 0.0051174723, + -0.0035607007, + 0.034050234, + 0.027452175, + 0.0285651, + -0.017011868, + -0.0056772474, + -0.003221192, + 0.010705288, + 0.019356962, + 0.0058196755, + -0.010665541, + 0.019462956, + -0.022642743, + -0.0330698, + -0.0065814997, + 0.006005163, + -0.017846562, + 0.020642126, + 0.0068630436, + -0.0076646153, + 0.0013820487, + -0.0013174593, + 0.03094994, + -0.0033851499, + 0.0034878305, + 0.03847544, + -0.0048690513, + -0.019476205, + -0.006313205, + -0.0025073958, + -0.012427674, + -0.004892237, + -0.023676176, + -0.0035010795, + 0.005919044, + 0.015925441, + -0.014004318, + 0.021543067, + 0.0009845751, + -0.02074812, + -0.009327379, + 0.0072075203, + -0.027929142, + 0.019052232, + -0.0060217245, + 0.03895241, + -0.017846562, + 0.0018499081, + -0.0044583282, + 0.03243384, + 0.011539983, + 0.007863352, + 0.024245888, + 0.007724236, + -0.012990761, + -0.007287015, + -0.0064854436, + -0.01849577, + 0.01850902, + 0.003128448, + -0.011944081, + 0.01909198, + 0.011639351, + -0.010115702, + 0.0068895416, + 0.0023301886, + -0.028671093, + -0.026524736, + -0.020549383, + -0.0056639984, + 0.010393933, + 0.0025587361, + -0.012984136, + -0.0021182029, + -0.010506551, + -0.012566789, + 0.028618095, + -0.0010731786, + -0.016296417, + -0.03145341, + 0.021715306, + -0.02510708, + -0.028220622, + -0.0107715335, + -0.014295799, + -0.005875984, + 0.018389776, + 0.008313822, + 0.006690805, + -0.018654758, + 0.018588513, + 0.016468655, + -0.024378378, + 0.003766062, + -0.0077308607, + -0.0026796341, + -0.02525282, + -0.01864151, + -0.00969173, + -0.012209062, + -0.0038157462, + 0.022642743, + -0.0051174723, + 0.011169007, + 0.0025421747, + 0.0051505947, + 0.0003231543, + 0.008221078, + -0.030843949, + -0.011937456, + 0.015117245, + 0.031479906, + -0.010095828, + 0.012646284, + 0.026378995, + -0.021278085, + 0.0107847825, + -0.012725779, + 0.022073032, + 0.0032857815, + 0.0023401256, + 0.016468655, + -0.03198337, + 0.0032973744, + 0.013911574, + 0.002522301, + 0.018866746, + 0.024921592, + -0.0016834661, + 0.0042695287, + -0.013818831, + 0.022218771, + -0.012189189, + -0.004368897, + -0.012944389, + 0.02660423, + 0.012507168, + 0.009519491, + -0.012884768, + -0.02674997, + 0.0050975983, + 0.00072000676, + 0.026167009, + -0.012401175, + 0.016945623, + -0.001420968, + 0.0029711148, + 0.021649059, + -0.00916839, + 0.012056698, + -0.033599764, + -0.008936531, + 0.004491451, + 0.027584665, + 0.03656757, + 0.016667392, + -0.010307814, + -0.03622309, + -0.009433373, + -0.005498384, + 0.0051108473, + -0.00234675, + -0.015686957, + 0.0079494715, + -0.02058913, + 0.041708227, + 0.024431374, + 0.033043303, + 0.0039846725, + 0.033043303, + -0.018893244, + -0.0012893048, + 0.016587896, + 0.0360376, + 0.009651983, + -0.005452012, + 0.0044583282, + -0.025067333, + 0.001219747, + -0.016402408, + 0.0009696699, + -0.00857218, + -0.030287486, + 0.0003328841, + 0.0038588059, + 0.019476205, + 0.022642743, + 0.012520417, + 0.011891084, + 0.000675291, + 0.0030506095, + 0.015488219, + -0.007684489, + 0.014534283, + 0.001232168, + 0.011526734, + -0.0042629037, + -0.01142074, + 0.003941613, + -0.0026200132, + -0.014097062, + -0.0057699913, + -0.0008044699, + 0.013222621, + -0.012997385, + 0.0055480683, + 0.0066113104, + -0.021728555, + -0.037786487, + 0.004984981, + -0.005044602, + -0.0042099073, + -0.01623017, + -0.025809282, + 0.014865511, + -0.01503775, + 0.03428872, + 0.01697212, + 0.017409341, + 0.0009547646, + -0.02224527, + -0.011983828, + 0.0074195066, + 0.027425675, + -0.005498384, + -0.01457403, + -0.009307506, + 0.010254818, + -0.019436456, + 0.0064821313, + 0.010148825, + 0.018310282, + -0.003138385, + 0.005495072, + -0.0072472678, + -0.00424303, + -0.0048624263, + 0.014680023, + -0.003138385, + 0.00909552, + 0.002237445, + 0.0062038996, + -0.002726006, + -0.015647208, + -0.015289483, + 0.027293185, + -0.010599295, + -0.019621944, + -0.0051207845, + -0.020615628, + -0.0069491626, + 0.086331256, + -0.011765217, + 0.017846562, + 0.005991914, + 0.0093605025, + -0.0071015274, + -0.01742259, + -0.0047001247, + 0.0070087835, + 0.0079627205, + 0.0017372906, + -0.016481904, + 0.018601762, + 0.012725779, + 0.015859194, + -0.01986043, + -0.031347416, + -0.023821915, + 0.030711457, + -0.025491305, + -0.018760752, + 0.0019045608, + 0.0047796196, + 0.0050412896, + 0.005591128, + 0.005746805, + 0.0065947487, + 0.020469889, + 0.03712403, + -0.014415041, + 0.0054321387, + 0.010817905, + -0.010407182, + -0.00043887706, + -0.0044351425, + -0.008989527, + 0.017515335, + 0.003660069, + -0.006849794, + -0.017064866, + 0.016071182, + 0.0088504115, + 0.007379759, + -0.029121563, + 0.010075955, + -0.0056639984, + 0.0073863836, + 0.010281316, + -0.014746269, + -0.0180188, + 0.030658461, + -0.001954245, + -0.028061634, + -0.025411809, + -0.01746234, + 0.01670714, + -0.014600528, + 0.008565555, + 0.0053923912, + 0.011222003, + 0.011758593, + -0.021172091, + 0.0116724735, + -0.023093214, + -0.026034517, + -0.023093214, + -0.0022655993, + -0.021013102, + -0.036620565, + -0.0058362368, + 0.008631801, + 0.001326568, + -0.013116627, + 0.009837471, + 0.012606536, + -0.008201204, + 0.016998619, + -0.016998619, + 0.008671548, + 0.029810516, + -0.010195197, + -0.010148825, + -0.017170858, + -0.018005552, + -0.0058561102, + 0.008002467, + 0.020801116, + -0.037389014, + 0.00015919644, + -0.0018581889, + 0.041072268, + -0.005018104, + 0.0041635353, + -0.0003494455, + 0.003424897, + -0.027531669, + 0.012162691, + 0.014216304, + -0.011937456, + -0.009506242, + 0.017382843, + -0.013792332, + 0.016919125, + 0.012864894, + 0.006571563, + 0.012096445, + 0.018985987, + 0.01835003, + 0.01307688, + 0.013050382, + 0.024259137, + -0.032062866, + -0.017926058, + 0.02451087, + -0.031903878, + 0.02930705, + 0.007929597, + 0.023424441, + -0.008115085, + -0.0108974, + 0.0046636895, + -0.031055935, + 0.020827614, + 0.029837016, + 0.003941613, + 0.017528584, + -0.008042215, + -0.015978437, + 0.0018697819, + 0.002027115, + -0.016773384, + 0.0072340188, + -0.0016876064, + -0.0089034075, + -0.035004172, + -0.000004062718, + -0.0069822855, + 0.008585429, + 0.0079494715, + -0.031850882, + -0.012407799, + -0.00698891, + 0.008505934, + -0.010486677, + -0.022920975, + -0.023490688, + -0.009744727, + 0.02343769, + -0.0011692347, + 0.013646592, + 0.013911574, + 0.020072415, + -0.009088895, + -0.004415269, + -0.017833313, + -0.030049002, + -0.024457874, + -0.014256052, + 0.010042832, + 0.028432608, + 0.018972738, + -0.009685106, + 0.016680641, + -0.0021463572, + -0.0009199857, + 0.0027193816, + -0.0058693597, + 0.024643362, + -0.0059057944, + 0.007412882, + 0.019356962, + 0.0300755, + -0.022682492, + 0.0061608404, + -0.027041452, + 0.01015545, + 0.0006504489, + 0.0066874926, + 0.0018118169, + -0.034209225, + -0.0045113247, + -0.0057534296, + -0.013739336, + -0.0035607007, + -0.003660069, + -0.007406257, + -0.0040939776, + -0.01939671, + 0.016415657, + -0.0022407572, + 0.00096470147, + -0.014401792, + 0.004166848, + -0.00033681744, + 0.010102453, + -0.013633343, + -0.008598678, + -0.0034911428, + 0.009042524, + 0.019423207, + 0.03145341, + -0.010480053, + 0.009724853, + -0.00043887706, + 0.0203109, + 0.015554465, + 0.011467112, + -0.01179834, + 0.018469272, + -0.029731022, + -0.01518349, + -0.017369594, + 0.0054884474, + -0.020337397, + -0.027478673, + 0.02615376, + -0.009512867, + 0.015660457, + -0.026617479, + -0.011149134, + 0.018774, + -0.0064688823, + 0.024471123, + -0.0063761384, + 0.028777085, + 0.016468655, + -0.011175632, + 0.006386075, + -0.007273766, + -0.027584665, + -0.014865511, + 0.020403642, + -0.004382146, + -0.0050081667, + -0.033043303, + 0.0015203364, + 0.021927292, + -0.002500771, + -0.020814365, + 0.027902644, + 0.00037387357, + -0.004832616, + -0.003481206, + 0.009320755, + -0.008704671, + 0.00835357, + -0.007452629, + -0.00894978, + -0.008254201, + -0.012507168, + -0.009665232, + 0.016905876, + -0.020403642, + 0.0093605025, + 0.016243419, + -0.021437073, + -0.0026316063, + -0.008989527, + -0.013275617, + 0.015382227, + -0.004408644, + 0.03818396, + 0.0028568413, + 0.0049352967, + 0.014666774, + 0.015249736, + -0.0066113104, + -0.002866778, + 0.003931676, + 0.021423824, + -0.013951322, + -0.013924824, + 0.017356345, + -0.014083813, + 0.00034385602, + -0.0045179497, + 0.006323142, + -0.0145077845, + -0.036620565, + -0.006551689, + 0.0135405995, + 0.014812514, + 0.003448083, + -0.014309048, + -0.016852878, + -0.029890012, + -0.018813748, + 0.00023827712, + 0.0032973744, + -0.022497004, + -0.013487603, + 0.002191073, + -0.012407799, + 0.013898325, + -0.015236487, + -0.013964571, + 0.012732403, + 0.0076182433, + -0.01759483, + 0.01894624, + 0.0066510574, + 0.01788631, + -0.022497004, + -0.0078037307, + -0.0038323076, + -0.007154524, + 0.016495153, + 0.00008156489, + -0.024444625, + -0.009029275, + 0.011334621, + 0.02194054, + -0.002485866, + 0.013229245, + 0.03296381, + -0.0247891, + -0.0029893324, + -0.019277468, + -0.022033283, + 0.0026481675, + 0.008512558, + 0.018204289, + 0.001989024, + -0.020337397, + 0.0026912272, + 0.023782168, + -0.035984606, + 0.0012172628, + -0.013169624, + -0.027425675, + 0.005296335, + 0.0136068445, + -0.020695124, + -0.013182873, + -0.02163581, + -0.010029583, + -0.0130835045, + 0.009552615, + 0.0048061176, + -0.0020105538, + 0.005968728, + 0.010837779, + -0.014057315, + 0.028697591, + -0.0070286575, + -0.014017567, + 0.008399941, + -0.008187955, + -0.027041452, + -0.008247577, + -0.0010913962, + 0.04088678, + -0.0012214031, + -0.025173325, + -0.025968272, + 0.0070750294, + -0.0391114, + -0.010652292, + -0.013355112, + 0.017753819, + 0.00326922, + -0.0021463572, + 0.0041039144, + 0.018734254, + 0.0021331082, + 0.02538531, + 0.0032377534, + 0.001243761, + 0.026484989, + -0.01862826, + 0.026935458, + 0.010890775, + -0.023119712, + 0.0069822855, + 0.0165349, + 0.004905486, + 0.00336362, + 0.016110929, + -0.0030506095, + -0.008426439, + 0.01015545, + -0.009857344, + -0.012434298, + -0.0010922243, + 0.01224881, + -0.047140364, + 0.016574647, + 0.0038521811, + -0.013129877, + 0.01774057, + -0.007154524, + 0.005316209, + -0.0037726865, + 0.006882917, + -0.010996768, + -0.0088636605, + -0.0121428175, + -0.011334621, + 0.01697212, + 0.0015948627, + -0.021331081, + 0.021238336, + 0.01637591, + -0.0038223707, + -0.016905876, + 0.0069822855, + -0.0031317605, + 0.008075338, + 0.0016768415, + -0.018323531, + -0.010321063, + -0.014004318, + 0.004971732, + -0.032142363, + -0.0030737955, + 0.009380376, + -0.016309666, + -0.019515952, + 0.018548766, + 0.025981521, + -0.013885076, + -0.0038687426, + 0.0026117326, + -0.007684489, + 0.016998619, + -0.024219388, + 0.006256896, + -0.029439542, + 0.0029810518, + 0.0026730096, + -0.00819458, + -0.027266687, + 0.010427057, + 0.0020238028, + -0.020178407, + -0.008711295, + 0.23572832, + -0.0058594225, + -0.0018267222, + 0.022351263, + -0.001126175, + 0.023623178, + 0.025663543, + -0.008234328, + -0.008081962, + 0.008022341, + 0.00052292616, + -0.005339395, + 0.010062706, + -0.0154352235, + -0.0070617804, + -0.03216886, + -0.016733637, + -0.02178155, + -0.036620565, + 0.016004935, + 0.020946857, + -0.014945006, + -0.011937456, + -0.006382763, + 0.022894477, + 0.002653136, + -0.011447239, + 0.013494227, + 0.01605793, + 0.023490688, + -0.005852798, + 0.0043258374, + -0.0037230023, + 0.009757976, + 0.000064278924, + 0.008181331, + -0.00014149645, + 0.0024924905, + 0.027452175, + 0.03219536, + -0.007929597, + -0.015196739, + -0.0165349, + -0.004312588, + -0.010115702, + 0.016124178, + 0.0040177954, + -0.006299956, + -0.015395476, + 0.01922447, + -0.03407673, + -0.026855964, + 0.03023449, + 0.022126028, + 0.017170858, + -0.006445696, + 0.023252204, + -0.0023070027, + -0.00518703, + -0.016428906, + -0.011513484, + 0.02255, + -0.01788631, + 0.025133578, + -0.02044339, + 0.017091364, + -0.009281008, + -0.0157797, + 0.011838088, + -0.0041072266, + 0.015209988, + -0.0021331082, + -0.0002641543, + -0.01367309, + -0.026869213, + -0.025001086, + 0.032831315, + 0.008969653, + 0.015991686, + 0.026617479, + -0.030446475, + 0.016919125, + 0.01862826, + -0.008525807, + -0.003742876, + -0.03110893, + 0.0054884474, + 0.0054553244, + 0.009479744, + -0.0013795645, + 0.0008218594, + -0.02706795, + -0.016587896, + -0.028300118, + 0.006111156, + 0.0015799574, + -0.007856728, + 0.006170777, + -0.010572797, + 0.016322915, + -0.004888925, + 0.006929289, + 0.010612544, + -0.000272642, + 0.003471269, + -0.008963029, + -0.0144812865, + 0.0068299207, + -0.016733637, + -0.020204905, + -0.006326454, + -0.01894624, + 0.014083813, + -0.00036186655, + -0.0012487294, + 0.01789956, + 0.008307197, + 0.006326454, + 0.014242803, + -0.026683725, + 0.009486369, + -0.028141128, + -0.011910957, + 0.0108974, + -0.0032129113, + -0.0054453877, + -0.019330464, + -0.0012594943, + -0.0006641121, + -0.0315859, + 0.013964571, + 0.0011270031, + 0.02194054, + -0.004193346, + 0.0074923765, + 0.0029247429, + -0.009221386, + -0.010837779, + -0.020814365, + 0.0058826087, + 0.023861663, + -0.0103144385, + 0.015011251, + 0.0130967535, + -0.021410575, + -0.026710223, + 0.021529818, + 0.0068166717, + -0.024444625, + -0.002995957, + -0.017674325, + -0.024550617, + -0.016640892, + -0.014110311, + 0.021728555, + -0.0032410657, + -0.015156992, + -0.0024428063, + -0.0064125736, + 0.022523502, + -0.039482374, + -0.013414732, + 0.028538601, + -0.027478673, + -0.020536134, + -0.012262059, + -0.17170858, + 0.018204289, + 0.033546768, + -0.020496387, + 0.025146827, + 0.0210661, + 0.010380684, + -0.011301498, + -0.022046532, + -0.00048400686, + 0.035110164, + -0.0033470585, + -0.03667356, + -0.017475588, + -0.006634496, + -0.008088587, + -0.02162256, + 0.0055050086, + 0.015050999, + 0.00061028753, + 0.026087515, + -0.026670476, + 0.01609768, + -0.0046206303, + -0.021331081, + 0.023106463, + -0.015408725, + 0.003706441, + 0.0016627643, + -0.003411648, + -0.005587816, + -0.017912809, + 0.014521034, + 0.020827614, + -0.0021297957, + 0.014229554, + -0.008134959, + -0.008081962, + -0.018363278, + 0.0072936397, + -0.01593869, + 0.004859114, + 0.015488219, + -0.01262641, + -0.0017240415, + 0.0144680375, + 0.008671548, + -0.0055348193, + -0.0010516488, + -0.042768154, + 0.008896783, + -0.017541833, + 0.0036865673, + 0.022430757, + 0.0015004626, + 0.017237103, + -0.0053658932, + 0.016905876, + 0.023689425, + -0.0017372906, + -0.03142691, + -0.005011479, + 0.015806198, + -0.0093340045, + -0.0130437575, + -0.007412882, + -0.013368361, + -0.0027972201, + -0.02959853, + 0.007333387, + 0.007903099, + -0.016561398, + 0.009857344, + -0.040674794, + 0.014640276, + -0.0103011895, + 0.006492068, + 0.022470506, + 0.012401175, + -0.018151293, + -0.03216886, + 0.029360047, + -0.01970144, + -0.005061163, + -0.0056308755, + 0.045311987, + 0.010009709, + -0.00073035766, + -0.031347416, + -0.0028121255, + 0.015329231, + -0.014269301, + -0.009393625, + -0.013321989, + -0.005554693, + 0.012845021, + -0.011539983, + 0.031320915, + -0.0016486872, + 0.01233493, + -0.0008334524, + -0.008062089, + -0.01819104, + 0.013633343, + 0.024736105, + 0.018972738, + 0.019873679, + 0.014547532, + 0.024563866, + -0.0035441392, + -0.023623178, + -0.011374368, + 0.0144812865, + 0.015315982, + -0.00095145236, + 0.011977203, + 0.0233052, + -0.009439997, + 0.024524119, + 0.007903099, + 0.048465274, + -0.012527042, + -0.004772995, + 0.016760135, + -0.0017025118, + -0.028194124, + -0.05591128, + 0.010440306, + 0.012765526, + -0.013845329, + 0.0011990452, + 0.03852844, + 0.02195379, + 0.035136662, + -0.0041734725, + 0.013335238, + -0.0077639837, + -0.0037329393, + 0.0030953253, + -0.011380993, + 0.036726557, + -0.01608443, + 0.0054288264, + 0.0030853886, + -0.024391627, + 0.004951858, + -0.005389079, + -0.02239101, + -0.01669389, + -0.008433064, + -0.020006169, + 0.015739953, + -0.03094994, + 0.026710223, + 0.01730335, + 0.0052897106, + 0.0103144385, + 0.00045999285, + -0.0017356345, + -0.020377144, + 0.00003317455, + 0.014322298, + -0.02391466, + -0.0026034517, + 0.03410323, + -0.023397943, + -0.0036302586, + -0.009400249, + 0.01323587, + -0.011851337, + -0.009274383, + -0.009890467, + -0.01608443, + 0.009413498, + 0.022814982, + -0.017714072, + -0.024285635, + 0.008274075, + -0.0053460193, + -0.008929906, + 0.030737955, + -0.025650294, + -0.0004691016, + 0.009016025, + -0.052122034, + 0.02150332, + -0.008843787, + 0.002003929, + -0.007823604, + 0.025425058, + 0.032672327, + -0.0042595915, + -0.017078115, + -0.043086134, + 0.01997967, + -0.0039681112, + -0.009453246, + 0.031294417, + -0.006150903, + 0.0054321387, + -0.010208446, + -0.017555082, + -0.037177026, + -0.013169624, + 0.0023898098, + -0.016163925, + -0.004739872, + -0.02358343, + -0.0135538485, + 0.013315364, + -0.016269919, + 0.028750587, + -0.0063463277, + -0.006710679, + 0.016508402, + -0.01143399, + 0.0063562645, + 0.028856581, + 0.030472973, + -0.01059267, + -0.010195197, + 0.016839629, + 0.021158842, + 0.010566172, + -0.00064258225, + 0.017621327, + -0.007406257, + -0.027293185, + -0.08818613, + 0.026034517, + 0.017117862, + -0.01850902, + 0.012440923, + -0.009989835, + 0.023941157, + -0.0027773464, + 0.026405493, + -0.005173781, + -0.042900644, + 0.020986604, + -0.022510253, + -0.015064248, + -0.031506404, + -0.016654141, + 0.031506404, + 0.016627643, + 0.008346945, + 0.016150676, + 0.017992303, + -0.012434298, + 0.028538601, + 0.0028634658, + -0.018548766, + 0.011440614, + -0.04642491, + 0.039906345, + -0.0036799428, + -0.002321908, + 0.012560165, + -0.031029437, + 0.0036136971, + 0.013752585, + -0.0037826234, + 0.01081128, + -0.010393933, + -0.012646284, + 0.001006105, + 0.044861514, + -0.032990307, + 0.0028982447, + 0.0064721946, + -0.00492536, + -0.0026829466, + -0.0062668333, + 0.019515952, + 0.00480943, + 0.0070087835, + 0.0145077845, + -0.017661076, + 0.01983393, + -0.0046239425, + -0.015302732, + -0.0032394095, + -0.043987073, + 0.028247122, + -0.004915423, + 0.00058130507, + -0.0029181184, + 0.014521034, + 0.016269919, + 0.020231403, + 0.0050247284, + 0.0016735293, + -0.008724544, + -0.009188264, + -0.0046206303, + 0.016163925, + -0.026392244, + -0.037309516, + 0.012401175, + -0.004537823, + 0.037230022, + -0.0021397327, + -0.023543684, + -0.0052599, + 0.0043755216, + -0.021755053, + 0.014587279, + -0.00061898225, + 0.009002776, + -0.04014483, + 0.012189189, + 0.009797723, + -0.013726087, + -0.00473656, + -0.005352644, + -0.0077109872, + 0.020072415, + -0.02538531, + 0.012712529, + 0.01805855, + 0.0011245189, + 0.00097546633, + 0.01833678, + -0.0023335011, + -0.027982138, + 0.022377761, + 0.023106463, + 0.02314621, + -0.011520108, + 0.002545487, + -0.014640276, + -0.0075387484, + 0.012613161, + -0.022920975, + 0.009877218, + 0.009651983, + 0.009088895, + 0.02255, + 0.0034282093, + 0.0011924207, + 0.020655377, + 0.026061017, + -0.008512558, + -0.017647825, + -0.024881845, + -0.017064866, + 0.008797415, + 0.020377144, + 0.0144415395, + 0.013739336, + 0.0011468768, + 0.017184107, + -0.016481904, + 0.005425514, + -0.018866746, + -0.0009936839, + -0.008009092, + 0.0039482373, + 0.001657796, + -0.009380376, + -0.0073068887, + -0.025226321, + 0.0070551555, + 0.012315055, + 0.006303268, + 0.008333696, + 0.049366217, + 0.0051572192, + 0.009969962, + 0.019025734, + 0.008068713, + 0.0105198, + 0.008028965, + -0.00046123494, + -0.034050234, + -0.02420614, + 0.009022649, + -0.014534283, + 0.0055845035, + -0.010102453, + -0.018615011, + -0.026551234, + -0.0011063014, + 0.009221386, + -0.00037242443, + 0.008101836, + 0.037044536, + -0.0073400117, + 0.023225704, + 0.014256052, + -0.0008479436, + 0.007896475, + 0.0300755, + -0.0018300345, + -0.0004927016, + -0.019476205, + 0.0144547885, + 0.007393008, + -0.028512103, + -0.02225852, + -0.018707756, + -0.0028319992, + -0.016998619, + 0.01789956, + 0.004938609, + 0.0031582587, + 0.0019857117, + 0.018668009, + -0.022165775, + -0.02538531, + 0.031188425, + -0.020072415, + -0.000031751304, + 0.0067636753, + -0.017700823 + ] + }, + { + "object": "embedding", + "index": 2, + "embedding": [ + -0.0044841906, + 0.00023355159, + -0.00082493754, + 0.010029372, + -0.015641283, + 0.02653146, + -0.026091048, + -0.0066962577, + -0.008347801, + -0.021913812, + 0.017136013, + -0.013826254, + 0.012485, + -0.010282942, + -0.008074212, + -0.017709883, + 0.03384496, + -0.008374493, + 0.026838413, + -0.0343521, + 0.0005384198, + -0.005495135, + -0.010082755, + -0.006906454, + -0.009889241, + 0.006275865, + -0.0017316182, + -0.020539194, + 0.0030695351, + -0.032296848, + 0.02372884, + 0.010356344, + 0.0012778608, + -0.019031117, + -0.019645024, + -0.009628998, + -0.009955971, + -0.008194324, + -0.011243841, + -0.017136013, + 0.016748985, + -0.009228624, + -0.015441096, + -0.004170564, + -0.014333394, + 0.01742962, + 0.0025173523, + 0.016655564, + -0.028106265, + 0.012311505, + 0.0062091355, + 0.024329402, + -0.027705891, + -0.0017182723, + -0.014159899, + 0.0021203146, + -0.0042840033, + 0.002655815, + 0.0074269404, + -0.0026708292, + 0.024436168, + 0.011877766, + -0.018951043, + -0.003623386, + 0.014053132, + 0.000584296, + -0.0009575615, + 0.030054752, + -0.012992141, + -0.009115185, + 0.01901777, + 0.02137998, + -0.012731898, + 0.008234361, + 0.015040722, + -0.019458184, + -0.049539626, + 0.0010468116, + 0.00804752, + 0.001294543, + -0.003364811, + -0.019538257, + 0.012311505, + -0.0006247505, + 0.008094231, + 0.010643279, + -0.005154817, + 0.04406785, + -0.021019643, + -0.01533433, + 0.018283753, + 0.0029227312, + 0.005051387, + -0.009268661, + -0.03878291, + 0.004617648, + -0.016108386, + 0.027652508, + -0.007306828, + -0.032697223, + -0.010923541, + 0.008287745, + -0.016775677, + -0.014546927, + -0.02984122, + 0.010342998, + 0.012411598, + 0.007453632, + 0.015894853, + -0.0026674927, + 0.0011010289, + 0.012131336, + -0.009115185, + -0.05519825, + -0.015347675, + -0.037234794, + 0.0069932016, + 0.00059430534, + -0.019524911, + -0.019645024, + 0.012698533, + 0.018884314, + 0.016882444, + -0.026704956, + 0.0056219203, + -0.014573619, + -0.017202742, + -0.0058688177, + -0.0016457045, + -0.002824306, + 0.02853333, + 0.038996443, + 0.00025794937, + -0.013973057, + -0.021046335, + 0.008594698, + -0.035419766, + 0.006225818, + -0.011010289, + -0.029654378, + 0.0069798557, + 0.0028109602, + -0.0038435918, + 0.0027308853, + -0.009989335, + 0.0036734329, + 0.032136697, + 0.00459763, + 0.009849204, + 0.015027376, + 0.017976798, + 0.0032113343, + 0.0075470526, + -0.0009950965, + 0.0076938565, + 0.00986255, + 0.022287494, + 0.023328466, + -0.003823573, + -0.024382785, + -0.01211799, + -0.010509822, + 0.021460054, + -0.014400124, + -0.0030361705, + 0.016375303, + 0.005671967, + 0.054130584, + 0.0027909414, + -0.0036801056, + -0.0069398186, + 0.018043527, + -0.023995757, + 0.004791144, + 0.025637291, + 0.009362082, + 0.006886435, + 0.009302026, + -0.023982411, + 0.014533581, + -0.019564949, + 0.0028209696, + 0.010129466, + 0.012431617, + -0.008995072, + 0.019378109, + 0.018016836, + -0.0007114982, + 0.0057420325, + 0.000746948, + 0.013285749, + 0.029067162, + 0.0017449639, + 0.001951824, + -0.6700662, + -0.04406785, + -0.027999498, + 0.0029260677, + 0.04081147, + 0.030214902, + 0.018497285, + 0.027225442, + -0.00887496, + -0.010710008, + -0.046656933, + 0.0064393505, + -0.017202742, + 0.007867352, + 0.01377287, + -0.025357028, + 0.010296288, + -0.012171374, + 0.008868287, + 0.0120979715, + 0.011851074, + 0.007827315, + -0.0036200495, + -0.0065928274, + 0.018790893, + -0.0070065474, + -0.005805425, + -0.026718302, + -0.012284813, + 0.044841904, + -0.032136697, + 0.033417895, + -0.0017699874, + -0.008534642, + 0.044735137, + -0.024836542, + -0.025637291, + 0.03445887, + -0.011704271, + 0.049165946, + 0.003446554, + -0.006559463, + -0.010449765, + -0.017376238, + -0.00474777, + 0.010463111, + 0.022541065, + -0.023061551, + -0.014266665, + -0.010663298, + 0.008914998, + -0.013892983, + -0.0017533051, + -0.011670906, + 0.007894044, + 0.010349671, + 0.014653694, + -0.0001789172, + 0.015307638, + -0.019044463, + -0.008307763, + 0.0056519485, + -0.03795547, + -0.028239723, + -0.002780932, + -0.0026441375, + -0.037848704, + -0.0026825068, + 0.015214218, + -0.018924352, + -0.007860679, + 0.014159899, + -0.000095297386, + 0.020539194, + 0.0252903, + 0.031949855, + 0.01616177, + -0.0070198933, + -0.019364763, + -0.0009900919, + 0.008307763, + -0.017603116, + -0.0030661987, + -0.008768193, + 0.02172697, + -0.03331113, + -0.02853333, + 0.00665622, + 0.008200997, + -0.024676394, + 0.01809691, + 0.010423074, + -0.0063359207, + 0.0023521981, + -0.002750904, + 0.005331649, + -0.011090363, + 0.023501962, + 0.014720422, + -0.032110006, + 0.00526492, + 0.0029010442, + 0.007867352, + -0.0027559088, + -0.02039239, + -0.001042641, + -0.01839052, + 0.02503673, + 0.010556531, + -0.016188461, + 0.008074212, + -0.025570562, + -0.012224757, + -0.020045398, + 0.009468849, + -0.018857623, + 0.011036981, + 0.01717605, + 0.022767942, + -0.0057687243, + 0.010950233, + 0.006212472, + 0.027132021, + -0.0018750855, + 0.008728156, + 0.011750981, + -0.006182444, + -0.010423074, + -0.010289615, + 0.010903522, + -0.0013429216, + -0.00019737193, + 0.004237293, + -0.007780604, + 0.0038169, + -0.030294977, + -0.004974649, + 0.0071199867, + 0.02952092, + -0.02554387, + -0.043881007, + -0.025276953, + -0.0075337067, + 0.0035599933, + -0.021620203, + -0.009415465, + 0.012872029, + 0.015240909, + -0.012565075, + 0.019938633, + 0.0068130335, + -0.021873774, + -0.03961035, + 0.019524911, + 0.0120045515, + -0.008788212, + -0.029600995, + -0.007046585, + -0.02137998, + 0.008608044, + -0.0043073585, + -0.0043073585, + -0.033551354, + -0.009135203, + 0.005611911, + -0.015494479, + -0.004220611, + 0.011777673, + -0.0011744308, + -0.02653146, + -0.015187526, + -0.013706141, + -0.013826254, + 0.012992141, + 0.009555596, + -0.0010735032, + 0.012458309, + -0.0045309006, + 0.0138529455, + 0.010850139, + 0.005184845, + -0.031042341, + -0.021620203, + -0.0060890233, + 0.027225442, + 0.009201933, + -0.0022821326, + 0.02439613, + -0.014253319, + 0.011203803, + -0.031949855, + 0.015761396, + -0.0017266135, + -0.009021764, + 0.0138529455, + -0.01730951, + -0.0013103912, + 0.0044041155, + 0.015214218, + 0.008834923, + 0.026424693, + -0.0035966944, + 0.007059931, + -0.015240909, + 0.018337136, + -0.01975179, + -0.00028776893, + -0.0042339563, + 0.024169253, + 0.029627686, + 0.002655815, + -0.025677329, + 0.0011719285, + -0.005855472, + 0.011003616, + 0.012077954, + 0.025410412, + 0.019925287, + -0.004340723, + -0.014733768, + 0.023074897, + -0.011410663, + 0.006662893, + -0.023301775, + 0.0069198, + 0.021500092, + 0.023288429, + 0.022541065, + 0.026731648, + 0.0040537883, + -0.014013095, + -0.007473651, + -0.012204738, + -0.0050180224, + 0.0084812585, + -0.013919674, + 0.0036300588, + -0.0036367318, + 0.030561892, + -0.016415339, + 0.010783411, + -0.0015197535, + 0.016535452, + -0.011497411, + 0.005695322, + -0.016121732, + 0.04745768, + 0.0112571865, + -0.0069464915, + 0.020419082, + -0.025490487, + -0.003860274, + -0.01800349, + 0.028159648, + 0.002388899, + -0.031789705, + -0.00402376, + 0.009422138, + 0.007974118, + 0.0256106, + 0.014800497, + -0.0078339875, + 0.0018350482, + 0.024062486, + -0.016455377, + -0.00021686933, + 0.018110257, + 0.026051011, + -0.007914063, + -0.034832552, + -0.02531699, + -0.020218894, + 0.003519956, + 0.009535577, + 0.0043073585, + -0.009689054, + -0.015894853, + -0.011417336, + 0.014119862, + 0.0057553784, + -0.002882694, + -0.040250946, + 0.030001368, + 0.01492061, + -0.01016283, + -0.0077405665, + -0.009388774, + 0.008868287, + -0.01673564, + 0.01965837, + 0.026357964, + 0.020699343, + -0.004304022, + -0.018857623, + -0.0133991875, + 0.0074002487, + 0.02589086, + -0.041345302, + 0.013946366, + -0.019898595, + 0.0014004754, + -0.025930898, + -0.00903511, + -0.009188587, + 0.020218894, + 0.0027342218, + 0.00001191869, + -0.01673564, + -0.013459244, + -0.008427876, + 0.022180727, + -0.02885363, + -0.0024656374, + 0.009462176, + -0.0058621448, + 0.0050847516, + -0.006205799, + -0.016108386, + 0.016708948, + -0.0024089178, + -0.015828125, + 0.009095166, + -0.022848018, + -0.005925537, + 0.10890177, + -0.0012027906, + -0.003973713, + 0.021073025, + 0.0057854066, + 0.023328466, + -0.0040904894, + -0.0011410663, + 0.006352603, + 0.008307763, + -0.022287494, + 0.003483255, + -0.0039837225, + 0.0037368254, + 0.009849204, + -0.0012711879, + -0.013479263, + -0.052876078, + 0.030108135, + -0.009555596, + -0.012304832, + 0.017296163, + 0.0029911285, + 0.02045912, + 0.007960772, + -0.012985468, + 0.01689579, + 0.008794885, + 0.031896472, + -0.009849204, + -0.000403085, + 0.002167025, + 0.014119862, + 0.013292422, + -0.01730951, + -0.008274399, + 0.036914498, + -0.0035366383, + 0.008454567, + -0.003947022, + 0.01988525, + 0.00045792793, + -0.0020435764, + -0.003947022, + -0.002173698, + -0.0062825377, + -0.015000684, + 0.024489552, + -0.036700964, + -0.019858558, + 0.01418659, + 0.00031904815, + -0.03750171, + -0.009395447, + -0.026918488, + 0.024916617, + -0.0057120044, + -0.007974118, + 0.002056922, + 0.023635421, + 0.009642344, + -0.013879637, + -0.013372497, + -0.020525848, + -0.0013304099, + -0.043747548, + 0.0009709073, + -0.013205674, + -0.018884314, + -0.01476046, + 0.0102429055, + -0.011203803, + -0.025076767, + 0.02007209, + 0.015454442, + -0.009261988, + 0.016642218, + -0.02360873, + -0.007900717, + 0.020552538, + -0.013639413, + -0.0133991875, + -0.017349547, + -0.015908198, + -0.011784346, + 0.009689054, + 0.0130255055, + 0.0038736197, + -0.017669845, + 0.017189397, + 0.038596068, + -0.011951168, + 0.006522762, + -0.0035166196, + -0.011710944, + -0.009075147, + 0.008241034, + 0.017829996, + -0.018857623, + -0.0023488617, + 0.021927157, + -0.021940503, + -0.0069398186, + 0.021126408, + -0.0017850014, + -0.0021853754, + 0.010129466, + -0.003298082, + -0.010102774, + -0.001996866, + 0.02888032, + -0.0093153715, + 0.014360086, + 0.001457195, + 0.003616713, + 0.0082076695, + 0.00006532146, + 0.023114935, + 0.00850795, + 0.010189522, + -0.0147871515, + -0.0016231835, + 0.015427751, + 0.015027376, + 0.024195943, + -0.018817585, + 0.002757577, + -0.010896849, + 0.009101839, + 0.0016657233, + 0.008234361, + 0.018377174, + -0.019858558, + -0.016708948, + -0.0015189194, + 0.0044841906, + -0.0138396, + 0.023755532, + 0.003653414, + -0.029814528, + -0.008434549, + 0.005485126, + 0.018764202, + -0.015921544, + -0.039556965, + -0.028132956, + 0.0036033674, + 0.035286307, + 0.0026674927, + 0.008174306, + 0.009322044, + 0.028773556, + -0.007607109, + -0.010022699, + -0.011070345, + -0.006032304, + -0.015227563, + -0.013419206, + 0.012331524, + 0.005501808, + 0.020565884, + 0.00030507674, + 0.010816774, + 0.0043006856, + -0.0049946676, + 0.005395042, + -0.001981852, + 0.006886435, + 0.010409728, + 0.029067162, + 0.008174306, + 0.022073962, + -0.005131462, + -0.0011961177, + -0.030108135, + 0.0061323973, + -0.0135193, + -0.015521171, + -0.021099716, + -0.030268285, + -0.0015614592, + -0.00871481, + -0.010563204, + 0.009382101, + 0.0015005689, + 0.02595759, + 0.025223572, + -0.00041726494, + 0.013692795, + -0.008267726, + 0.009769129, + -0.011504084, + -0.023341812, + 0.008654755, + 0.00018559009, + -0.005014686, + -0.020886185, + 0.008788212, + 0.0062892106, + 0.008788212, + 0.010036045, + 0.0009784143, + -0.009949298, + 0.014680386, + -0.0007957436, + 0.041211843, + -0.00928868, + -0.008354474, + 0.015667975, + -0.0346724, + -0.016014965, + -0.007653819, + 0.0065861545, + -0.04409454, + -0.020832801, + 0.013145617, + -0.010249578, + 0.02255441, + -0.017736575, + -0.019645024, + 0.01959164, + 0.016535452, + 0.025717366, + -0.015828125, + 0.023061551, + 0.0083878385, + -0.010796756, + 0.011370625, + 0.015948236, + -0.01689579, + -0.023208354, + 0.018937698, + 0.018363828, + -0.020485811, + -0.020218894, + 0.002595759, + 0.009622325, + -0.03451225, + 0.006365949, + 0.027252134, + 0.029787837, + 0.0010835126, + 0.00572535, + 0.009582288, + -0.0054817894, + 0.023929028, + -0.015788088, + -0.020525848, + -0.01666891, + -0.004577611, + -0.015107451, + 0.006833052, + -0.002046913, + 0.0031095725, + 0.020552538, + -0.009322044, + -0.011010289, + -0.019898595, + 0.010016026, + 0.0069998745, + -0.02917393, + 0.023101589, + 0.0022737915, + 0.007053258, + 0.0107033355, + 0.0034699093, + -0.008628063, + 0.0013821248, + 0.014400124, + 0.024703085, + -0.0071333325, + 0.0059989393, + 0.002167025, + -0.011644214, + 0.0122781405, + 0.009248642, + -0.0009875896, + -0.00830109, + -0.0054250695, + -0.008781539, + 0.0106165875, + 0.0048678825, + 0.011070345, + -0.012138009, + -0.03002806, + -0.014707076, + -0.007994137, + -0.015467788, + 0.00079032185, + -0.011944495, + -0.0170159, + -0.020605922, + -0.0046710316, + 0.022207418, + 0.014013095, + -0.021446709, + 0.009141876, + 0.0044474895, + -0.0107033355, + 0.006646211, + -0.01717605, + 0.010509822, + 0.0018584033, + 0.0006201629, + -0.0147871515, + -0.025757402, + 0.027999498, + -0.023982411, + -0.0018250388, + -0.029387463, + -0.01377287, + 0.023501962, + -0.002078609, + 0.019217959, + 0.025850823, + -0.017189397, + 0.008527969, + -0.03333782, + -0.014627002, + 0.0028142966, + 0.010563204, + -0.0020902867, + 0.026291234, + -0.007366884, + 0.01517418, + 0.018977735, + 0.015454442, + 0.0035633298, + -0.010716681, + -0.013906329, + -0.009789147, + -0.00836782, + 0.00007934498, + -0.0073001552, + -0.017149359, + 0.0040137507, + -0.00944883, + -0.0053516678, + 0.01924465, + -0.0072134077, + 0.0067262854, + 0.013652759, + 0.022701213, + -0.0010526504, + -0.006803024, + -0.020685997, + -0.0127452435, + -0.006752977, + -0.02379557, + -0.006065668, + -0.0152676, + 0.02519688, + 0.027412282, + -0.040678013, + -0.02338185, + 0.026891796, + -0.031576175, + 0.003166292, + -0.02214069, + 0.015361021, + 0.014453506, + -0.00045167207, + -0.00036429876, + 0.010603242, + -0.010262924, + 0.009048455, + -0.029307388, + -0.003750171, + 0.022260802, + -0.017616462, + 0.008588025, + 0.00816096, + -0.014293357, + 0.0039236667, + 0.007580417, + -0.0014705409, + 0.01492061, + -0.006676239, + 0.00314961, + 0.0003401095, + 0.00036617552, + 0.01492061, + -0.0083878385, + 0.023942374, + 0.0071533513, + -0.0349927, + 0.012291486, + 0.010783411, + -0.016588835, + 0.008354474, + 0.013425879, + 0.0014421811, + -0.02080611, + 0.00541506, + -0.02089953, + 0.014573619, + -0.0012745244, + -0.0081075765, + 0.016415339, + -0.012972122, + -0.00024001596, + 0.031389333, + 0.000569282, + -0.0065394444, + -0.022474336, + 0.010543185, + -0.012391579, + 0.0085746795, + 0.013279076, + 0.0031712968, + -0.009201933, + -0.022113997, + 0.008354474, + -0.027492357, + -0.020178856, + 0.0065561268, + -0.0019801839, + -0.021793699, + 0.02519688, + 0.0011026971, + -0.0019234641, + -0.0062224814, + -0.011003616, + 0.00190845, + -0.006722949, + -0.025770748, + -0.003373152, + -0.03878291, + -0.018030182, + 0.0060756775, + -0.01393302, + -0.00020310647, + 0.0008024165, + 0.024556281, + -0.020525848, + 0.009155222, + 0.25111467, + -0.007520361, + -0.0110770175, + 0.028293107, + -0.0070799496, + 0.029414153, + 0.03387165, + -0.013158963, + -0.0097024, + 0.019831866, + -0.015107451, + -0.0027275488, + 0.01409317, + -0.0038402553, + 0.0082944175, + -0.011097036, + -0.019364763, + -0.04062463, + -0.0030862174, + -0.009375428, + 0.034378793, + -0.008914998, + -0.0014580291, + -0.0066495473, + 0.0050680693, + 0.013973057, + -0.0041238535, + 0.008434549, + 0.020152165, + 0.023261737, + 0.010683317, + 0.019578295, + 0.0003943268, + 0.03331113, + 0.0043507325, + 0.0070132203, + -0.0011886107, + -0.007787277, + 0.024943309, + 0.008321109, + 0.0021136417, + -0.012144682, + -0.0077472394, + -0.0011585826, + 0.0095022125, + 0.028613405, + -0.011270532, + -0.0061857803, + -0.003194652, + 0.02262114, + -0.029707761, + -0.004017087, + 0.01682906, + 0.023021514, + 0.011250514, + 0.0014229964, + 0.009048455, + -0.020619268, + -0.01915123, + -0.010509822, + 0.0008983395, + 0.024316056, + 0.003623386, + 0.024075832, + 0.0000784066, + -0.010823447, + -0.028266415, + 0.024502898, + -0.004871219, + 0.004140536, + -0.0005375857, + -0.003446554, + -0.0011844402, + -0.029787837, + -0.029013779, + -0.0026925162, + 0.03864945, + 0.00074152625, + 0.018150294, + 0.015881507, + -0.016175115, + 0.009835858, + -0.0013862954, + 0.0008512121, + -0.006893108, + -0.040384404, + 0.0027108665, + 0.0037835357, + 0.016281882, + -0.004387433, + 0.0052315556, + -0.021433363, + -0.0017166041, + -0.0077072023, + 0.0048478637, + -0.019351417, + -0.00092920166, + 0.006395977, + 0.000065217195, + 0.0056686304, + -0.0197251, + 0.004771125, + 0.0048512, + -0.022354223, + -0.01285201, + 0.0060890233, + 0.010556531, + 0.013679449, + 0.013138944, + -0.011710944, + -0.016014965, + -0.01682906, + 0.0060022757, + -0.010496476, + 0.00040663, + -0.0013270734, + -0.025930898, + -0.016975863, + 0.03267053, + -0.033898342, + 0.012158028, + -0.025010038, + -0.0071533513, + 0.0053516678, + -0.018457249, + 0.002078609, + -0.016081695, + 0.00060598296, + 0.009268661, + -0.031816397, + 0.030401744, + -0.016175115, + 0.014400124, + 0.0045142183, + -0.015881507, + 0.007320174, + 0.003947022, + -0.0033247736, + -0.0014446834, + -0.02137998, + 0.009969316, + -0.0074002487, + 0.008094231, + 0.00402376, + -0.0145068895, + -0.019231305, + 0.0069264728, + 0.017963452, + -0.013205674, + 0.0132990945, + -0.022380915, + -0.013158963, + 0.0022654503, + -0.016748985, + 0.015761396, + 0.00092836755, + 0.00026274554, + -0.008374493, + 0.011270532, + 0.027332207, + -0.015601246, + 0.0141332075, + 0.011744308, + -0.00578207, + -0.02188712, + -0.015734704, + -0.17306839, + 0.032910753, + 0.010896849, + -0.01632192, + 0.015187526, + 0.013499281, + 0.011824383, + -0.021633549, + 0.012358215, + 0.009328717, + 0.025263608, + 0.031202491, + -0.018777547, + -0.014733768, + 0.01151743, + -0.012358215, + -0.0040137507, + 0.0055451817, + 0.030161519, + 0.010489803, + 0.02166024, + -0.02057923, + 0.0009500545, + 0.0071600243, + -0.029814528, + 0.033925034, + 0.011183784, + 0.025877515, + -0.016855752, + -0.009015091, + -0.02751905, + -0.026344618, + 0.0120912995, + 0.032056622, + -0.0010001012, + 0.008601371, + 0.00053299806, + -0.024102524, + -0.012658495, + 0.022567756, + 0.003750171, + 0.020138819, + 0.00028568364, + -0.008654755, + 0.014653694, + 0.017629808, + 0.0013787885, + 0.0023021514, + -0.011791019, + -0.017789958, + 0.0256106, + -0.013919674, + 0.020298969, + 0.0006706267, + 0.0032380258, + 0.020032052, + 0.0141332075, + -0.0009216946, + 0.015948236, + -0.0214734, + -0.019551603, + -0.008601371, + 0.018403865, + -0.016415339, + -0.020672651, + 0.0063792947, + -0.016522106, + -0.0026257872, + -0.043267097, + 0.026998563, + -0.010029372, + -0.013225692, + 0.0026357963, + -0.012978795, + 0.0013103912, + -0.019338071, + -0.00022375076, + 0.030161519, + 0.0041805734, + -0.017629808, + -0.018684126, + 0.025490487, + -0.018363828, + -0.018564014, + 0.0025006703, + -0.008120922, + 0.0034231988, + 0.022954784, + -0.007053258, + -0.021913812, + 0.027572433, + -0.025410412, + 0.007954099, + -0.010756719, + 0.026264545, + 0.006576145, + -0.0031846426, + 0.021967195, + -0.004017087, + -0.010583223, + -0.00066520495, + -0.011550794, + -0.014280011, + 0.012838664, + 0.026704956, + -0.0019551604, + 0.008227688, + 0.0010217882, + 0.012298159, + -0.005361677, + -0.028426563, + 0.00093587453, + 0.015227563, + 0.021046335, + -0.026224507, + -0.00464434, + 0.016188461, + 0.0017583098, + 0.019578295, + -0.023341812, + 0.05207533, + -0.008314436, + 0.016628873, + 0.009775802, + 0.00029152242, + -0.01616177, + -0.06897112, + -0.021713624, + 0.002854334, + 0.005641939, + -0.011684252, + 0.029013779, + 0.007954099, + 0.01867078, + 0.008441222, + 0.02681172, + -0.0026891797, + -0.024489552, + -0.0020902867, + -0.0011427345, + 0.026838413, + -0.001641534, + 0.011010289, + -0.02853333, + 0.0060990327, + 0.026931833, + -0.000014557875, + -0.0046543493, + 0.008868287, + -0.011604177, + -0.015054068, + -0.0009208605, + -0.02554387, + 0.022420952, + 0.022848018, + 0.0031112407, + 0.001441347, + -0.0032430305, + 0.0025540534, + -0.028319798, + 0.0074002487, + 0.019271342, + -0.038729526, + -0.0016440363, + 0.020258931, + -0.024449514, + -0.0020102118, + -0.011584158, + 0.017216088, + -0.02137998, + -0.010196195, + 0.005962238, + -0.01800349, + -0.009622325, + 0.01593489, + -0.025637291, + -0.026357964, + -0.023195008, + 0.00068063603, + 0.01022956, + 0.008521296, + -0.017456312, + -0.018483939, + 0.0012545056, + -0.009635671, + -0.003166292, + 0.014560273, + 0.010850139, + -0.013879637, + 0.011303897, + 0.022594448, + 0.0028960395, + -0.021206483, + -0.02710533, + 0.009528904, + -0.0049713124, + 0.0068597435, + 0.010963579, + -0.007473651, + 0.0005559362, + -0.009008418, + -0.03680773, + -0.01800349, + -0.01119713, + 0.012725225, + -0.016775677, + 0.0028293105, + -0.03477917, + -0.0007181711, + -0.0019551604, + 0.025156843, + 0.015294292, + -0.0060623316, + 0.010302961, + -0.0016673915, + -0.034058493, + -0.006065668, + 0.036220513, + 0.008541315, + -0.03186978, + -0.014693731, + 0.032296848, + 0.0152676, + -0.014933956, + 0.005805425, + 0.014480198, + 0.00052590814, + -0.01816364, + -0.08295752, + 0.012698533, + 0.010356344, + -0.0037001243, + 0.014693731, + -0.0086681, + 0.015601246, + -0.018817585, + -0.0021837072, + -0.0061757714, + -0.017950106, + -0.00036054527, + -0.0054050507, + 0.0076938565, + -0.028960396, + -0.018523976, + 0.025050076, + -0.0014563609, + 0.015120797, + 0.012618458, + 0.0058821635, + 0.00526492, + 0.033097595, + -0.001323737, + -0.009755783, + 0.008354474, + -0.014266665, + 0.031202491, + -0.021193137, + -0.007867352, + -0.00056761375, + -0.029067162, + -0.013639413, + 0.016348612, + -0.0053082937, + -0.01896439, + -0.01068999, + 0.0024222636, + 0.0003165458, + 0.02602432, + -0.017029246, + -0.009615652, + 0.029654378, + -0.01476046, + -0.010082755, + 0.0061390703, + -0.0007736396, + -0.004941284, + 0.01616177, + 0.016762331, + -0.00049963355, + 0.01717605, + 0.015347675, + -0.0141332075, + 0.017042592, + -0.054504268, + 0.009055128, + 0.010649952, + -0.018203678, + 0.013178982, + 0.019645024, + 0.010790084, + 0.0025173523, + 0.011984533, + -0.0012294822, + -0.0143200485, + -0.0038502647, + -0.0014229964, + 0.007053258, + -0.02968107, + -0.04118515, + 0.014360086, + 0.015067413, + 0.020152165, + 0.020138819, + 0.0033531333, + 0.009842531, + -0.024409477, + -0.030081443, + 0.03248369, + -0.0012670173, + 0.0070866225, + -0.026785031, + 0.019137884, + 0.004814499, + -0.007046585, + -0.014907264, + -0.006913127, + -0.0058855, + 0.032777295, + -0.0077005294, + 0.0027792638, + 0.01581478, + 0.0042339563, + 0.023008168, + -0.002046913, + -0.008721483, + -0.027625816, + 0.025917552, + 0.01823037, + 0.016642218, + -0.0007899048, + -0.002382226, + -0.024649702, + -0.0068664164, + 0.00015358102, + -0.03931674, + -0.0052849385, + 0.01533433, + 0.0031079042, + 0.013352478, + 0.019965325, + -0.0037835357, + 0.03400511, + 0.008868287, + -0.0012895383, + -0.011343934, + -0.037741937, + -0.020685997, + 0.028907012, + 0.023275083, + 0.007653819, + 0.021913812, + -0.006676239, + -0.006906454, + 0.0069264728, + 0.008120922, + -0.017002555, + -0.00598893, + -0.007813969, + 0.013332459, + -0.0058888365, + -0.02738559, + 0.004200592, + -0.00804752, + -0.023848953, + 0.00183338, + 0.005975584, + -0.012444963, + 0.03632728, + 0.016989209, + 0.023421887, + -0.0036467412, + 0.0042172745, + 0.02039239, + 0.008060866, + 0.013652759, + -0.016855752, + -0.015921544, + 0.00862139, + -0.002714203, + -0.000095245254, + -0.01119713, + -0.020312315, + -0.011630869, + 0.006072341, + 0.024129216, + -0.012885374, + -0.0032380258, + 0.042679884, + 0.025076767, + 0.014773806, + 0.0105164945, + -0.006786342, + -0.008694792, + 0.023208354, + 0.0077605853, + 0.0095022125, + -0.008881633, + 0.022594448, + 0.012938757, + -0.017296163, + -0.008834923, + 0.014533581, + -0.010676644, + 0.0013871295, + -0.009942625, + 0.012771935, + 0.012605113, + -0.014853881, + 0.0077472394, + -0.016108386, + -0.040838163, + 0.0040270966, + 0.0019551604, + -0.0047677886, + 0.0013337464, + -0.013759525 + ] + }, + { + "object": "embedding", + "index": 3, + "embedding": [ + -0.0010213737, + 0.008644082, + 0.0023587057, + 0.009380755, + -0.0029162795, + 0.0086643575, + -0.018856129, + 0.0043659713, + -0.0068497085, + -0.04287573, + -0.0075086593, + -0.010408043, + 0.021775788, + -0.019937484, + -0.0062008956, + -0.013003294, + 0.023168033, + -0.006413787, + 0.010455352, + -0.025371293, + -0.013476388, + 0.023438372, + -0.016044606, + -0.009150967, + 0.0061704824, + 0.005903523, + 0.007907409, + -0.021383796, + 0.013523697, + -0.0016980654, + 0.0190724, + -0.0030886205, + 0.0021998817, + -0.004203768, + 0.0023468784, + -0.013625074, + -0.015490412, + -0.005937315, + -0.0011193715, + -0.011164991, + 0.02591197, + -0.02397905, + -0.010833826, + -0.008637324, + -0.0030210358, + 0.0026172171, + -0.016977275, + 0.017409816, + -0.024695447, + 0.010536454, + 0.0074951425, + 0.0034941286, + -0.03752302, + -0.012422066, + -0.019829348, + -0.00043676607, + -0.028196333, + 0.0045011407, + -0.006494889, + -0.014706429, + 0.011678635, + 0.000102855454, + -0.0281693, + 0.016409563, + -0.0037779843, + 0.00011837881, + -0.008157472, + 0.011901665, + -0.04260539, + -0.021140492, + 0.022843625, + 0.01858579, + -0.011219059, + -0.021478415, + 0.018639859, + -0.006626679, + -0.024560276, + 0.007522176, + 0.00737349, + 0.0059001436, + 0.016842104, + -0.018639859, + 0.01726113, + 0.004882994, + 0.024695447, + 0.0069071557, + -0.010921686, + 0.022613838, + 0.008191264, + -0.026425615, + 0.03173777, + 0.0031545155, + 0.011746219, + -0.0048221676, + -0.03033201, + -0.011556982, + -0.015517445, + 0.019194052, + -0.0077722394, + -0.010556729, + -0.01770719, + 0.011151474, + -0.004264594, + -0.015612064, + -0.016788037, + 0.00671116, + 0.008704908, + 0.0002832221, + 0.010293148, + 0.005704148, + 0.0093537215, + 0.024763031, + -0.016450115, + -0.052526824, + -0.02185689, + -0.016869139, + 0.03522514, + 0.0117259445, + -0.013260117, + -0.03381938, + 0.0075356932, + 0.036144294, + -0.007893892, + -0.0050046463, + 0.031818874, + 0.012307173, + -0.0087387, + -0.01046211, + -0.004720791, + -0.012090902, + 0.005271606, + 0.014760497, + 0.010867618, + 0.020762017, + -0.009664611, + 0.024735996, + -0.022938244, + 0.022897694, + -0.034278955, + -0.018707443, + 0.02203261, + 0.019045366, + -0.025155023, + 0.011935457, + 0.010313424, + 0.02662837, + 0.024465658, + 0.022438118, + 0.00737349, + 0.0055216695, + 0.018072147, + -0.016612317, + 0.020032102, + -0.014314438, + 0.0032085832, + 0.016990792, + 0.026141759, + 0.018964265, + -0.005197263, + 0.003558334, + 0.003761088, + 0.009286136, + 0.015598547, + -0.008927938, + -0.011219059, + 0.019613078, + 0.006728056, + 0.013834586, + 0.0060150377, + -0.021613585, + -0.013226325, + 0.020964772, + -0.0014032272, + 0.009772747, + 0.008252091, + 0.010313424, + 0.03222438, + 0.01761257, + -0.021208076, + 0.0067922617, + -0.0031359298, + -0.0132466, + 0.006227929, + 0.008434569, + -0.013239841, + -0.002096815, + 0.009941708, + 0.008015544, + 0.006643575, + 0.002061333, + 0.008488637, + 0.0397398, + 0.018031595, + 0.0026510095, + -0.67217034, + -0.051850975, + 0.0032254795, + 0.0016161189, + 0.020910705, + 0.0067719864, + 0.0150713865, + 0.006079243, + -0.0040415647, + -0.001850131, + -0.0314404, + 0.0071504605, + -0.007988511, + -0.0019126468, + -0.0027067668, + -0.0028317985, + -0.0006935879, + -0.012030075, + 0.014976768, + 0.012178762, + -0.006379995, + 0.0045856214, + -0.005704148, + 0.0048593394, + 0.021154009, + -0.015341725, + -0.0040753568, + -0.019275155, + -0.008718425, + 0.032602854, + -0.031007856, + 0.0381448, + 0.009475374, + 0.005268227, + 0.047011912, + -0.009948467, + -0.022776041, + 0.026236378, + 0.011279885, + 0.03425192, + -0.022654388, + -0.016585283, + 0.0058021457, + -0.025046887, + -0.011928698, + 0.012070626, + 0.017855875, + -0.04498437, + -0.0045450707, + -0.018991299, + 0.020248374, + -0.013219566, + -0.011894906, + -0.01942384, + 0.004626172, + 0.0143279545, + 0.02207316, + -0.014963251, + 0.006809158, + -0.00710991, + -0.021559516, + -0.0066570924, + -0.029548027, + -0.02287066, + -0.014638844, + -0.0017403058, + -0.029277688, + -0.0031883079, + 0.006278618, + -0.008427811, + 0.010259356, + 0.023789812, + -0.013571006, + 0.010293148, + 0.019923966, + 0.017274648, + 0.008988764, + 0.0015966883, + -0.007974993, + -0.01695024, + -0.007332939, + -0.003612402, + -0.0157202, + 0.0077114133, + 0.028764045, + -0.035684716, + -0.020910705, + 0.005548703, + 0.023032863, + -0.027790826, + 0.005656839, + 0.012253105, + -0.005224297, + 0.018004563, + -0.008157472, + 0.0095835095, + 0.0065861284, + -0.00096223707, + 0.014652361, + -0.011847597, + -0.017761257, + -0.011104165, + 0.0052918815, + -0.015544479, + -0.024965785, + -0.0029754161, + -0.0053662243, + 0.0087387, + 0.025939004, + -0.012895159, + 0.007718172, + -0.011577258, + -0.030223874, + -0.008725184, + 0.0097254375, + -0.027980063, + 0.017936977, + 0.0012925572, + 0.016531216, + 0.003686745, + 0.0035110246, + -0.0069747404, + 0.031467434, + 0.0033268565, + 0.00020835093, + 0.014598293, + -0.0020495057, + -0.014963251, + -0.010773, + 0.00238405, + 0.00037657344, + 0.002578356, + -0.006565853, + -0.008535947, + 0.026587818, + -0.017639605, + -0.018788544, + -0.0031646532, + 0.030602349, + -0.042443186, + -0.041037425, + -0.0081507135, + 0.004230802, + 0.0074072825, + 0.0111244405, + -0.023816846, + -0.022127228, + 0.02697981, + -0.0029720368, + 0.032467686, + 0.002101884, + -0.0038523274, + -0.037712257, + 0.022329982, + -0.0035346793, + -0.0032660302, + -0.022248881, + -0.011164991, + 0.0025749768, + 0.012624821, + 0.012205795, + 0.010326941, + -0.040577848, + 0.0012410239, + 0.008840078, + -0.015206556, + 0.014152234, + 0.014963251, + 0.002318155, + -0.018423587, + -0.003717158, + -0.005788629, + -0.009651094, + 0.015422827, + 0.015084904, + -0.01125961, + 0.009995776, + -0.0045247953, + -0.0035786096, + 0.006839571, + 0.0065489565, + -0.023965532, + -0.012983019, + 0.006545577, + 0.026371546, + -0.007055842, + 0.0077114133, + 0.014179269, + -0.0062448257, + 0.002874039, + -0.027358284, + 0.02437104, + -0.0007628622, + 0.0025935625, + 0.015949987, + -0.023384303, + 0.005359466, + 0.0055824956, + -0.0035313002, + 0.023478922, + 0.021924473, + -0.010739207, + 0.010489144, + -0.009319929, + 0.0051905042, + -0.02193799, + -0.0058021457, + -0.007359973, + 0.02176227, + 0.0281693, + 0.020342993, + -0.025966039, + -0.010658106, + 0.0064475797, + 0.022478668, + 0.03738785, + 0.015652616, + 0.009394272, + -0.005592633, + -0.002441497, + 0.0030869308, + -0.030304976, + 0.015220073, + -0.018558756, + -0.003541438, + 0.0019278533, + 0.006177241, + 0.038334038, + 0.015449861, + -0.0040145307, + -0.022059644, + -0.011333953, + -0.0077992734, + 0.008988764, + 0.012895159, + -0.019910451, + 0.0059542116, + -0.013787277, + 0.035792854, + 0.007927684, + 0.0147875305, + -0.0036968826, + 0.03676607, + -0.010705415, + -0.0039706007, + -0.009401031, + 0.040172342, + 0.015179521, + -0.0058798683, + 0.018328968, + -0.025438879, + -0.015990539, + -0.017964011, + 0.0067652278, + 0.014341472, + -0.035522513, + 0.009319929, + 0.0031714116, + 0.019369774, + 0.04211878, + 0.02397905, + -0.0010357354, + 0.0062718596, + 0.009968742, + 0.008137197, + -0.00023802483, + 0.032467686, + 0.0049776128, + -0.008143956, + -0.0061130356, + -0.02022134, + -0.0086643575, + -0.01593647, + -0.014706429, + -0.004095632, + -0.012604545, + -0.0014632086, + -0.018639859, + 0.026141759, + 0.0043423166, + -0.008731943, + -0.037279718, + 0.027561037, + -0.009529442, + -0.0007624398, + -0.013064121, + -0.009745712, + -0.009455099, + -0.026141759, + 0.021356763, + 0.009211794, + 0.016260877, + -0.008285883, + 0.00073878514, + -0.009042832, + 0.007130185, + 0.019315705, + -0.037144545, + -0.016923208, + -0.019234603, + 0.016801555, + -0.022708457, + 0.0029382445, + -0.0014311059, + 0.012435583, + -0.006596266, + 0.01774774, + -0.025709217, + -0.012834333, + 0.000044669257, + 0.022911211, + -0.012124694, + -0.0027135254, + 0.009482132, + 0.011252851, + 0.0013778829, + -0.00489989, + 0.0038219143, + 0.012401791, + -0.013908929, + -0.0052479515, + -0.021505449, + -0.024046633, + -0.00043148603, + 0.084778234, + -0.0034180959, + 0.00657937, + 0.002101884, + 0.011043339, + 0.008995523, + -0.004305145, + 0.0067517105, + 0.0062448257, + 0.016409563, + -0.011502914, + -0.018991299, + 0.012023317, + 0.001227507, + 0.0063833743, + -0.012124694, + -0.013537214, + -0.019194052, + 0.026033623, + -0.0063056517, + 0.00865084, + 0.012340965, + -0.001894061, + 0.018518206, + -0.0064002704, + -0.004115908, + 0.013097913, + 0.010049844, + 0.0013128327, + -0.025411844, + 0.012793782, + 0.0005677114, + -0.015409309, + -0.0016718763, + -0.020113204, + -0.0016271014, + 0.018085664, + 0.020586297, + -0.008157472, + -0.012199037, + 0.010212047, + 0.0063124103, + 0.0051195403, + -0.005082369, + -0.0018687168, + -0.0077384473, + 0.0021255387, + 0.012489651, + -0.027304215, + 0.004798513, + 0.03541438, + -0.0046025175, + -0.037279718, + -0.014909183, + -0.00094618567, + 0.01333446, + -0.012003041, + -0.0038557067, + 0.0017943736, + 0.014841598, + -0.00017962744, + -0.021559516, + 0.01457126, + -0.009421306, + -0.03400862, + -0.044524796, + -0.0015468446, + -0.014855116, + -0.03827997, + -0.021248627, + 0.016004056, + -0.013179015, + -0.029602095, + 0.009752471, + 0.017369267, + -0.004538312, + 0.026168793, + -0.010056602, + -0.0101850135, + 0.02662837, + -0.01607164, + -0.03417082, + -0.02392498, + -0.027817858, + 0.00040402974, + 0.009968742, + 0.020559262, + -0.017098928, + 0.002115401, + -0.016720453, + 0.040415645, + -0.011827321, + 0.014733463, + 0.0009689955, + -0.014368505, + -0.020829601, + 0.013239841, + 0.020599814, + -0.02949396, + -0.004896511, + 0.013354735, + -0.021708203, + 0.0019041987, + -0.013800794, + -0.0059069023, + 0.007846583, + 0.01690969, + 0.000936048, + -0.0072923885, + 0.00485596, + 0.029034384, + -0.036495734, + 0.00984709, + 0.013030329, + -0.020424094, + 0.03354904, + 0.013990032, + 0.0348737, + 0.007691138, + -0.00083382614, + 0.008421052, + -0.011002788, + 0.022154262, + 0.015963504, + 0.00047478246, + 0.006802399, + -0.0013381769, + -0.00034827236, + 0.006423925, + -0.0026594577, + -0.011131199, + 0.013388528, + -0.019491425, + -0.022235364, + -0.022194812, + -0.0075694853, + -0.0083805015, + 0.010563487, + 0.0037847427, + -0.03611726, + -0.01461181, + -0.016004056, + 0.011543466, + -0.008576497, + -0.020464644, + -0.016896173, + 0.006140069, + 0.015868885, + -0.0076505872, + 0.01377376, + 0.02012672, + 0.024398074, + -0.01426037, + -0.0075289346, + -0.024492692, + -0.030304976, + -0.021018839, + -0.030791586, + 0.002321534, + 0.017869392, + 0.034900736, + 0.0057751117, + -0.0041902508, + -0.01642308, + -0.0014648982, + 0.011151474, + -0.014733463, + 0.02397905, + -0.006298893, + 0.0135304555, + 0.027871927, + 0.018991299, + -0.015517445, + -0.004967475, + -0.037063446, + 0.028250402, + 0.0006534595, + -0.011408296, + -0.0067483317, + -0.03346794, + -0.0020106446, + -0.0037374336, + -0.015125454, + 0.008583256, + -0.0038962576, + -0.00024013685, + 0.021600068, + -0.004291628, + 0.015747232, + -0.013935964, + 0.020059137, + -0.009198276, + -0.0097254375, + -0.010252598, + 0.0026391821, + 0.0025935625, + -0.026817605, + 0.0026459408, + 0.01337501, + -0.001041649, + 0.024425108, + -0.0143279545, + -0.005612909, + -0.01037425, + 0.006386753, + 0.028412605, + -0.009421306, + -0.013706176, + 0.00036094448, + -0.027817858, + -0.037333783, + -0.006292135, + 0.0106107965, + -0.01284785, + -0.014017065, + 0.0043997634, + -0.0048863734, + 0.018315451, + -0.011604291, + -0.0026915604, + 0.026344514, + -0.004176734, + 0.021748753, + -0.016801555, + 0.015963504, + 0.0100092925, + -0.014733463, + -0.0010450283, + -0.00079707697, + -0.016152741, + -0.018883163, + 0.009637577, + 0.019491425, + -0.011469122, + -0.02675002, + -0.0045856214, + 0.009002281, + -0.014422573, + -0.0040246686, + 0.04322717, + 0.019085918, + -0.0059846244, + -0.015287657, + 0.0037982597, + -0.010725691, + 0.020897187, + -0.0024347384, + -0.009914674, + -0.0074951425, + -0.013949481, + 0.0018822337, + -0.0016144293, + -0.009157726, + 0.013746726, + 0.018612824, + -0.015017319, + 0.005646701, + -0.014165752, + 0.018815579, + 0.0039266706, + -0.012949227, + 0.016058123, + 0.010401284, + 0.0079209255, + 0.020194305, + 0.018247867, + -0.0013145222, + 0.016531216, + 0.008306159, + 0.029710231, + -0.013537214, + -0.019045366, + -0.001580637, + 0.0036326773, + 0.015436344, + -0.005822421, + 0.004578863, + 0.0014370196, + -0.03757709, + -0.0011261299, + 0.015476895, + 0.0034518882, + 0.004420039, + 0.0047444454, + -0.024479175, + -0.022965278, + 0.0041091493, + 0.00016452649, + -0.01006336, + -0.0015400861, + -0.0075019007, + -0.007434316, + -0.004825547, + 0.019045366, + -0.01205035, + -0.014706429, + 0.021546, + 0.016693419, + -0.008495396, + 0.000274774, + 0.009630819, + 0.0057818703, + -0.0016085156, + 0.0047714794, + -0.014138717, + -0.006238067, + 0.014246853, + -0.009542959, + 0.00042916278, + -0.020464644, + 0.005400017, + 0.043416407, + 0.025817353, + 0.013456112, + 0.025749767, + -0.030169807, + -0.0017960632, + -0.030791586, + -0.026087692, + 0.018288417, + 0.024884684, + 0.02666892, + 0.004626172, + -0.016301427, + 0.021126974, + 0.02339782, + -0.019477908, + -0.006940948, + -0.022221847, + -0.04182141, + -0.01108389, + 0.0039942553, + -0.01841007, + -0.024384556, + -0.018802062, + -0.0140981665, + -0.005136437, + 0.007630312, + 0.00067120045, + 0.0045315535, + 0.0056872517, + 0.022681423, + -0.00035650926, + 0.010577004, + -0.031197093, + -0.0070085325, + 0.0064171664, + -0.019545494, + -0.036090225, + -0.019207569, + -0.016517699, + 0.014679395, + -0.0015721889, + -0.020694433, + -0.016450115, + 0.013618316, + -0.034143787, + -0.0062177917, + -0.027142012, + 0.01258427, + 0.019761764, + 0.0005677114, + 0.010955479, + -0.0077722394, + -0.008704908, + 0.011685393, + -0.01443609, + 0.0073802485, + 0.012151727, + -0.023641124, + 0.0256957, + 0.019180536, + -0.021464897, + -0.008258849, + 0.012523443, + 0.005704148, + -0.0072721126, + -0.007420799, + -0.01103658, + 0.00084692065, + 0.009820056, + -0.013091154, + -0.008745459, + 0.022667905, + 0.017950494, + -0.045633186, + 0.0010264425, + -0.0039773593, + -0.006940948, + -0.0042882487, + -0.01258427, + 0.009907916, + 0.005815663, + 0.010806792, + -0.02710146, + -0.0134425955, + -0.0033674072, + -0.010766242, + 0.013037087, + 0.0039874967, + 0.004220664, + 0.009617302, + 0.0071369433, + -0.0021508827, + -0.0138143115, + -0.002586804, + -0.030899722, + -0.01108389, + 0.012077385, + -0.00856298, + -0.012509926, + -0.014246853, + 0.010340458, + -0.037982598, + -0.015355242, + 0.0033606489, + -0.0014370196, + -0.035117008, + 0.020802569, + 0.013037087, + -0.023330236, + -0.0050012674, + 0.0038388106, + -0.009455099, + -0.0063056517, + -0.021478415, + 0.008968488, + -0.03133226, + -0.010441835, + -0.0039976346, + 0.0031156542, + -0.024087185, + -0.00856298, + -0.0029720368, + -0.011185266, + -0.013449354, + 0.21756864, + -0.00763707, + -0.0062887557, + 0.021708203, + -0.014909183, + 0.035171073, + 0.028601842, + -0.00057911634, + -0.0031122752, + 0.0024431867, + -0.015341725, + -0.011320436, + 0.007359973, + -0.0031511362, + 0.0016693419, + -0.03576582, + -0.022911211, + -0.027898962, + -0.028574808, + -0.02057278, + 0.032062177, + -0.009441582, + 0.014517192, + -0.007745206, + 0.026506716, + 0.0058697304, + -0.018018078, + 0.015963504, + 0.02039706, + 0.025601082, + 0.017517952, + 0.014517192, + -0.0041699754, + 0.015625581, + -0.0023722227, + 0.012854609, + 0.0024617724, + -0.0026037002, + 0.024776548, + 0.014814565, + 0.009178001, + -0.019045366, + -0.021140492, + -0.0015882403, + -0.017842358, + 0.018747993, + -0.009279378, + 0.0015890851, + -0.0298454, + 0.025790319, + -0.038712513, + -0.0055655995, + 0.020315958, + 0.031467434, + 0.014287404, + -0.00543043, + 0.020099688, + -0.009015798, + -0.0016668075, + -0.002608769, + -0.014354989, + 0.026479682, + -0.012550477, + 0.037766326, + -0.007170736, + -0.00026062346, + -0.014409056, + -0.0023384304, + 0.011685393, + -0.002529357, + 0.027479935, + 0.0027287318, + -0.00018659711, + -0.034143787, + -0.021532483, + -0.021518966, + 0.04206471, + 0.024289938, + 0.016747486, + 0.01682859, + 0.003832052, + 0.004737687, + 0.006940948, + 0.015368759, + -0.013577765, + -0.014314438, + -0.008225057, + 0.00068767427, + 0.01002281, + -0.015571513, + 0.011759737, + -0.005285123, + -0.0027912478, + -0.015787784, + 0.00012355327, + 0.010347216, + 0.0007434316, + 0.007954719, + -0.006467855, + 0.015044352, + -0.025574047, + 0.0073261806, + 0.005893385, + -0.0051330575, + -0.006961223, + 0.004071978, + -0.0019836107, + 0.0030092085, + -0.006900397, + 0.0013770381, + -0.0077384473, + -0.010928445, + -0.00042219312, + -0.0039976346, + 0.00008706809, + -0.005974487, + -0.005589254, + -0.020478161, + 0.024492692, + -0.033873446, + 0.020586297, + -0.014706429, + -0.014652361, + 0.014409056, + -0.014503675, + -0.015463377, + -0.006481372, + -0.019045366, + -0.018612824, + -0.036847174, + 0.026722988, + -0.025628116, + 0.020613331, + -0.0030058292, + 0.0028571428, + 0.0086643575, + -0.012604545, + 0.006025175, + -0.005014784, + -0.0082926415, + 0.010745966, + -0.012719439, + 0.02631748, + 0.005427051, + -0.001880544, + 0.003448509, + 0.018139731, + 0.015260624, + -0.010712174, + 0.015449861, + -0.0066030244, + -0.025925487, + -0.0037272957, + 0.015882403, + 0.023289684, + 0.00018469628, + -0.013483146, + -0.021708203, + 0.010299907, + 0.019139985, + -0.033062432, + -0.013800794, + 0.04790403, + 0.0032085832, + -0.019450875, + -0.014300921, + -0.1757202, + 0.015030836, + 0.024722481, + -0.026966292, + 0.025925487, + 0.028764045, + 0.00441328, + -0.017112443, + -0.0037779843, + 0.008394019, + 0.03452226, + 0.017896427, + -0.01695024, + -0.008914421, + -0.0024448761, + -0.0035448172, + -0.000100849036, + 0.017017825, + 0.017044859, + 0.0065185437, + 0.025803836, + -0.015706683, + 0.008218299, + -0.0038962576, + -0.02635803, + 0.03262989, + -0.010293148, + 0.0052378136, + 0.0043456955, + -0.0033217876, + -0.0095362, + 0.0011050097, + 0.013767002, + 0.02887218, + 0.01673397, + 0.019748246, + -0.00251584, + -0.011861114, + -0.014354989, + 0.018139731, + -0.009022556, + 0.0003429923, + 0.009860607, + -0.0033302356, + -0.011793529, + 0.018639859, + 0.0145577425, + -0.0044605895, + 0.0056061503, + -0.009637577, + 0.03284616, + -0.025668666, + 0.016666384, + 0.01854524, + 0.016166259, + 0.018626342, + 0.023168033, + 0.004582242, + 0.005143195, + -0.019329222, + -0.019045366, + 0.0078601, + 0.0034603362, + -0.005345949, + -0.017342232, + -0.02715553, + -0.009326687, + 0.021532483, + -0.016490664, + 0.008164231, + 0.0027354904, + -0.008860353, + 0.014354989, + -0.028115232, + 0.022830108, + -0.008975247, + 0.0056230463, + 0.02914252, + 0.012158486, + -0.0022133987, + -0.029061418, + 0.03395455, + -0.014449608, + -0.009117175, + 0.009428064, + 0.01337501, + 0.012753231, + 0.004132804, + -0.035468448, + -0.016544733, + 0.022329982, + -0.019194052, + 0.014530709, + -0.02697981, + -0.0038388106, + 0.01068514, + -0.017909944, + 0.03235955, + -0.014909183, + -0.0005427896, + -0.0040314267, + -0.015963504, + -0.021789305, + 0.020937737, + 0.010806792, + 0.016409563, + 0.0035617133, + 0.019937484, + 0.018247867, + -0.008576497, + -0.0068497085, + 0.0029281068, + 0.009651094, + 0.008319676, + -0.023843879, + 0.015612064, + 0.02573625, + -0.009373996, + 0.016842104, + -0.0056940103, + 0.032305483, + -0.0004671792, + 0.006927431, + 0.011185266, + -0.0074410746, + -0.028358538, + -0.07585706, + 0.0118678715, + -0.0029855538, + 0.008542705, + -0.010941962, + 0.04387598, + 0.016517699, + 0.03711751, + -0.0091239335, + 0.022897694, + -0.0053628455, + -0.009245586, + 0.00033665626, + -0.0074681086, + 0.03290023, + -0.010408043, + -0.0016921518, + -0.007346456, + -0.0029179691, + 0.022681423, + -0.0060217963, + -0.027033877, + -0.0016262566, + 0.0027321111, + -0.018396553, + 0.010421559, + -0.023735743, + 0.02962913, + 0.023127481, + 0.011665118, + -0.0046329307, + -0.007846583, + 0.020288924, + -0.025817353, + -0.039820902, + 0.0140981665, + -0.024830615, + 0.0025682184, + 0.026898708, + -0.029926501, + -0.0070220493, + 0.00010385866, + 0.00242798, + -0.007968235, + -0.015774267, + -0.005558841, + -0.014125201, + 0.01527414, + 0.0140981665, + -0.009009039, + -0.016679902, + -0.012104418, + 0.014882149, + -0.021600068, + 0.028493706, + 0.0030210358, + 0.010299907, + 0.016436597, + -0.046768606, + 0.002816592, + 0.00927262, + 0.012597786, + -0.015747232, + 0.013523697, + 0.031115992, + 0.0241007, + -0.022492185, + -0.029791333, + 0.023262652, + -0.008880628, + 0.00037087098, + 0.016341979, + -0.006106277, + -0.0062346878, + -0.01757202, + -0.021072907, + -0.016896173, + -0.011671877, + 0.016382528, + -0.018004563, + 0.0012942469, + -0.034900736, + 0.005568979, + 0.0059001436, + -0.0054676016, + 0.026939258, + 0.015368759, + -0.008238574, + 0.015517445, + -0.016666384, + -0.003585368, + 0.009907916, + 0.022478668, + -0.030413112, + -0.022140745, + 0.0314404, + 0.019613078, + 0.00095463375, + 0.010036327, + 0.0097795045, + -0.005041818, + -0.027520487, + -0.095267385, + 0.01872096, + 0.012530202, + -0.0006243136, + 0.0061434484, + -0.017544987, + 0.04038861, + -0.008556222, + 0.0122733805, + -0.011300161, + -0.057906564, + 0.006538819, + -0.013652108, + -0.014273887, + -0.024654895, + -0.027953029, + 0.03903692, + 0.012003041, + 0.006089381, + 0.0076573454, + 0.016869139, + 0.011009546, + 0.007312664, + -0.0008621272, + -0.026777055, + 0.010225564, + -0.0082994, + 0.024560276, + -0.009549717, + 0.0006733125, + -0.009029315, + -0.046173863, + 0.017680155, + 0.026303962, + -0.007332939, + -0.019491425, + -0.006873363, + 0.013449354, + 0.010779758, + 0.03682014, + -0.04509251, + 0.012111177, + 0.022248881, + -0.0052209175, + -0.004122666, + -0.01099603, + 0.019018332, + 0.008116921, + 0.026020106, + 0.009211794, + 0.0027963165, + 0.02406015, + 0.0051905042, + -0.0050350595, + -0.0035110246, + -0.03773929, + 0.023614092, + -0.009063107, + -0.004686998, + 0.007988511, + 0.014030582, + 0.004247698, + 0.01143533, + 0.012016558, + 0.025155023, + -0.011225818, + -0.014814565, + 0.0043152827, + 0.020545747, + -0.016815072, + -0.018856129, + 0.01218552, + -0.003818535, + 0.0134425955, + 0.009029315, + -0.0029940018, + 0.010766242, + -0.0063495818, + -0.028115232, + 0.021478415, + -0.00014330067, + -0.0018129593, + -0.031494465, + 0.01823435, + 0.026858157, + -0.012908677, + -0.024019599, + -0.02962913, + 0.000034927558, + 0.02269494, + -0.015220073, + 0.0045011407, + 0.010543212, + 0.010455352, + -0.005058714, + 0.013429078, + -0.010786517, + -0.019085918, + 0.03184591, + 0.02485765, + 0.0052918815, + -0.001196249, + -0.005663597, + -0.03208921, + -0.009279378, + 0.014463124, + -0.033630144, + -0.018707443, + 0.026479682, + 0.015787784, + 0.009259103, + 0.020153755, + 0.00041374503, + 0.019951, + 0.0064205457, + 0.010103911, + -0.007576244, + -0.03249472, + -0.02357354, + 0.018612824, + 0.0134425955, + 0.024438625, + 0.0031207232, + -0.014706429, + 0.0024178424, + -0.011678635, + 0.014368505, + -0.024006082, + 0.006450959, + -0.013949481, + 0.004071978, + 0.010097153, + -0.000086487285, + 0.0026374925, + -0.0042443187, + -0.0023519474, + 0.0017293233, + 0.010441835, + -0.024127735, + 0.034414124, + 0.005200642, + 0.014030582, + 0.0091239335, + -0.01509842, + 0.0265743, + -0.0047782375, + 0.008535947, + 0.004997888, + -0.04025344, + -0.0056433217, + -0.0014277266, + 0.0011117682, + -0.02843964, + -0.028277434, + -0.0074816253, + -0.011266368, + 0.019356256, + -0.005288502, + -0.013050604, + 0.038712513, + -0.00058840925, + 0.008319676, + 0.021424348, + -0.02339782, + 0.0021069527, + 0.020640366, + 0.005751457, + 0.008657599, + -0.038712513, + 0.00944834, + 0.018802062, + -0.018666891, + -0.013821069, + -0.008867112, + -0.0101512205, + -0.016652867, + -0.004247698, + -0.0066030244, + 0.01319929, + -0.009772747, + 0.020451128, + -0.024654895, + -0.0011007857, + 0.039793868, + -0.0051330575, + -0.0133006675, + 0.010570246, + -0.022586804 + ] + }, + { + "object": "embedding", + "index": 4, + "embedding": [ + 0.019221356, + 0.0036138783, + -0.007965014, + -0.0067472225, + -0.024066191, + 0.013718256, + -0.00505548, + -0.01043351, + 0.0065530343, + -0.04420912, + 0.015508738, + 0.0044893716, + 0.012171331, + -0.031412434, + -0.014574001, + -0.018997546, + 0.02109083, + -0.020788029, + -0.0024273545, + -0.024145182, + 0.0010812012, + -0.012987581, + -0.014258034, + -0.014073719, + -0.020603715, + 0.013757751, + 0.0028387704, + -0.028753042, + 0.009880567, + -0.0032534779, + 0.02904268, + -0.0067735533, + -0.009307876, + -0.030490864, + -0.008037423, + -0.019642645, + -0.035230376, + -0.00874835, + -0.020630045, + -0.028489737, + 0.009742331, + -0.017575692, + -0.0019023876, + 0.0013996373, + -0.007563472, + 0.008491627, + -0.006510247, + -0.010644155, + -0.004374175, + 0.00862328, + 0.011348499, + 0.012809849, + -0.034809086, + -0.009900315, + 0.0029523212, + 0.010736313, + -0.019274017, + -0.006329224, + -0.0033538633, + -0.011809285, + 0.0025985036, + 0.0050521884, + -0.032544654, + 0.013810413, + -0.009413199, + -0.0071750954, + -0.029569292, + -0.005197007, + -0.020235086, + -0.004663812, + 0.026054153, + 0.030543525, + -0.0048382524, + -0.030227557, + 0.010525667, + 0.0027087631, + -0.01702275, + 0.005789446, + -0.0062436494, + -0.0027169914, + 0.029937921, + -0.025567036, + 0.018233957, + 0.002512929, + 0.035572674, + 0.016956922, + -0.011282673, + 0.012842762, + -0.0035348863, + -0.015324424, + 0.018984381, + 0.012934919, + 0.0049139527, + 0.015495572, + -0.023486918, + -0.030675178, + 0.0009191034, + 0.04434077, + -0.0020291037, + -0.036020294, + -0.006832797, + 0.012625535, + 0.0066682305, + -0.0084258, + -0.008807594, + 0.02128831, + 0.01811547, + 0.0011494963, + 0.015008456, + -0.0037027441, + 0.0133759575, + 0.031149128, + -0.0011708899, + -0.04426178, + -0.018444603, + -0.019432, + 0.03243933, + -0.009465859, + -0.014429183, + -0.026804576, + 0.016127508, + 0.027673487, + 0.01209234, + -0.0064641684, + 0.023895042, + -0.005187133, + -0.014442348, + -0.0035381778, + 0.021696435, + -0.01092721, + 0.028805703, + -0.000857391, + 0.0066254437, + -0.0017197189, + -0.021577947, + 0.018273454, + -0.017615188, + -0.0025902751, + -0.0048119216, + -0.013744586, + 0.014416017, + 0.015087448, + -0.013836743, + 0.025145747, + -0.0012210828, + 0.018839562, + 0.019589985, + -0.00042129, + 0.01957682, + -0.0073989057, + 0.013468115, + -0.030464534, + 0.009860819, + 0.005628171, + 0.0079321, + -0.00002769344, + 0.021617442, + 0.028042115, + -0.002312158, + 0.014284364, + -0.004792174, + 0.003060935, + 0.0158642, + -0.024158347, + -0.0265676, + 0.009274962, + 0.018984381, + 0.00787944, + 0.0052200463, + -0.0061909882, + -0.013468115, + 0.01179612, + -0.025619699, + 0.014968961, + -0.0010984808, + 0.020156093, + -0.00038343974, + 0.0022232921, + -0.016180169, + -0.019050207, + -0.0072475043, + -0.018997546, + 0.01516644, + 0.020932848, + 0.0061547835, + -0.028621389, + 0.0019451749, + 0.009090648, + 0.008978743, + -0.014218537, + 0.013784082, + 0.04183936, + 0.014942629, + 0.014600332, + -0.6736427, + -0.040312186, + 0.000431164, + -0.013277218, + 0.028753042, + 0.015126944, + 0.022446858, + -0.0015321132, + -0.009228884, + 0.01224374, + -0.016193334, + 0.014310694, + 0.0010392369, + -0.0006257637, + 0.0054274, + -0.024053026, + 0.0031086593, + -0.0096830875, + 0.016469806, + -0.0012836179, + -0.0061909882, + 0.013290383, + -0.017430874, + 0.008307312, + 0.026620261, + -0.024105687, + 0.002277599, + -0.02446115, + -0.01273744, + 0.04162872, + -0.012941502, + 0.048658993, + 0.03451945, + -0.004943575, + 0.042787265, + -0.014863637, + -0.0048777484, + 0.03754747, + 0.022762826, + 0.05397778, + -0.005786155, + -0.012691361, + 0.006177823, + -0.009005073, + -0.0030197934, + -0.01288884, + 0.032228686, + -0.032886952, + 0.014679323, + -0.015535069, + 0.0120660085, + -0.02446115, + -0.0158642, + 0.010861383, + -0.0043215137, + 0.0062173186, + 0.019945448, + -0.011223429, + -0.0026445822, + 0.0011503191, + 0.0012432992, + 0.014955794, + -0.002351654, + -0.0156008955, + -0.0024849528, + 0.0016341445, + -0.038548034, + -0.01729922, + 0.0031432183, + -0.015679887, + 0.016588293, + 0.028147439, + -0.007517393, + 0.0014317278, + 0.011032532, + 0.027726147, + 0.009623843, + -0.008320478, + -0.008537705, + -0.02218355, + -0.003992381, + 0.018181296, + -0.0136919245, + -0.017259724, + 0.00014378989, + -0.038416382, + -0.032965943, + 0.025619699, + 0.009900315, + -0.0071750954, + 0.018971216, + 0.014613497, + 0.0022035441, + 0.022565346, + -0.0030428327, + 0.0129809985, + -0.003179423, + 0.004854709, + 0.0069578676, + -0.03157042, + -0.010229448, + -0.0031942339, + -0.005940847, + -0.011453822, + 0.0127440225, + -0.014613497, + -0.030490864, + -0.0042392304, + 0.038442712, + -0.014889969, + 0.028963687, + -0.010604659, + -0.023855546, + -0.0016423727, + 0.013639264, + -0.02047206, + 0.02572502, + -0.010630989, + 0.03451945, + -0.019668976, + 0.013277218, + 0.0069578676, + 0.0246323, + 0.0053319517, + -0.0029572584, + 0.014982126, + 0.0022232921, + -0.00054841756, + -0.0065267035, + -0.012987581, + 0.00051015586, + 0.018233957, + -0.016733112, + -0.012711109, + 0.012474134, + -0.0064115073, + 0.0027350937, + 0.0014638181, + 0.023565909, + -0.013106069, + -0.048237704, + -0.020985508, + -0.006230484, + 0.0039594676, + -0.0100451335, + -0.021920245, + -0.0016917427, + 0.0023993782, + -0.010703399, + 0.008438965, + -0.004344553, + -0.0032370212, + -0.013560272, + 0.013955231, + -0.016680451, + -0.0035546343, + 0.011677632, + -0.009847654, + -0.020564217, + 0.00579932, + 0.009873984, + 0.014468678, + -0.030701509, + -0.00308562, + 0.003531595, + -0.010005637, + 0.005644628, + 0.003531595, + 0.02215722, + -0.015653556, + -0.023631737, + -0.027647156, + -0.017154401, + 0.02954296, + -0.0027844636, + -0.008735185, + 0.005206881, + -0.0034460204, + 0.016746277, + -0.0069578676, + -0.0033193044, + -0.0032567692, + -0.03615195, + 0.009873984, + 0.027594496, + -0.012869093, + 0.013836743, + 0.014982126, + -0.004713182, + 0.0073594097, + -0.017694179, + 0.0340455, + 0.01095354, + 0.0028683925, + 0.010933792, + -0.013744586, + 0.017351883, + 0.011901442, + -0.0020373322, + 0.01980063, + 0.022065064, + -0.0078070303, + 0.006520121, + -0.033360902, + 0.026027823, + -0.022012403, + 0.0010589848, + -0.008195407, + 0.009821323, + -0.009834488, + 0.0116249705, + -0.012632118, + -0.01452134, + -0.0033176588, + -0.005197007, + 0.02091968, + 0.0053286604, + 0.009992472, + 0.0051015588, + 0.009511938, + 0.01918186, + -0.029569292, + 0.018892223, + -0.022828652, + -0.004433419, + -0.0027449676, + 0.014402851, + 0.029727275, + 0.0025688815, + 0.0005064531, + -0.036494248, + -0.01578521, + -0.006990781, + -0.002958904, + 0.0004784768, + -0.011434074, + 0.0011700671, + -0.023500083, + 0.01727289, + 0.004453167, + 0.02322361, + -0.0053681564, + 0.019458331, + -0.0119936, + 0.009103813, + -0.01107861, + 0.035651665, + -0.00025980923, + -0.017825833, + 0.028674051, + -0.01937934, + -0.018892223, + -0.008188824, + 0.008616697, + 0.0037850274, + -0.01105228, + 0.004301766, + 0.0143238595, + -0.0011338625, + 0.036072955, + 0.016311822, + 0.0018233957, + 0.0014885032, + -0.0079781795, + 0.0073396615, + -0.007293583, + 0.017786337, + -0.009228884, + 0.003521721, + -0.005177259, + -0.012829597, + 0.0031958795, + -0.007984762, + -0.0055590533, + 0.0055623446, + -0.009228884, + -0.01606168, + -0.0040285857, + 0.013389123, + -0.000023720704, + 0.0019534032, + -0.04347186, + 0.012039678, + -0.009097231, + -0.008702272, + -0.014495009, + -0.022736495, + -0.0049304096, + -0.018523594, + 0.030569855, + 0.010170204, + 0.009841071, + -0.007451567, + -0.0072540874, + -0.012072591, + -0.010163621, + 0.018826397, + -0.028937357, + -0.019023877, + 0.0033867767, + 0.008346808, + -0.007945266, + 0.015324424, + -0.02044573, + 0.03625727, + -0.009037987, + -0.0035447604, + -0.018944884, + -0.0015938256, + -0.003943011, + 0.01030844, + -0.0061514922, + -0.01338254, + 0.016509302, + -0.004170113, + -0.0028058572, + -0.025145747, + 0.0059210993, + 0.013310131, + 0.0017081993, + -0.0181418, + -0.01606168, + -0.023855546, + -0.021275144, + 0.075937524, + -0.008853673, + 0.018523594, + 0.011822451, + 0.014797811, + 0.0104400925, + -0.0120660085, + -0.0158642, + -0.003531595, + -0.011124689, + 0.0035941303, + 0.0005315495, + 0.0029572584, + 0.00066978525, + 0.0017213646, + -0.0223547, + -0.0074054883, + -0.016272327, + 0.007234339, + -0.015113778, + 0.013547107, + 0.006753805, + -0.008629862, + 0.038100414, + 0.008234903, + 0.017430874, + 0.008511375, + 0.035704326, + 0.02577768, + -0.0127769355, + -0.0035447604, + 0.03675755, + -0.020063937, + 0.008991908, + -0.0012013348, + -0.0007475429, + 0.032623645, + 0.013955231, + -0.018813232, + 0.0032386668, + 0.005424109, + 0.017983817, + 0.02039307, + -0.009314459, + 0.014863637, + -0.014863637, + 0.00021023359, + 0.010512502, + -0.0061416184, + -0.000029621953, + 0.036915537, + 0.022762826, + -0.026909899, + -0.0143238595, + -0.016088013, + 0.034782756, + 0.009360537, + -0.0057137455, + 0.01105228, + 0.0040252944, + -0.0022446858, + -0.02292081, + 0.0073659923, + -0.0129020065, + -0.028884696, + -0.033913843, + -0.0063983416, + -0.019708473, + -0.026778245, + 0.000012953176, + 0.0053615733, + -0.017615188, + -0.02215722, + 0.009933229, + 0.022473188, + -0.0034558945, + 0.020287747, + -0.032807957, + -0.0036731223, + 0.021893915, + 0.009426364, + -0.03117546, + -0.011894859, + -0.0052233376, + -0.0068525453, + 0.018918553, + 0.025409052, + -0.02091968, + -0.018497264, + -0.0029128254, + 0.0265676, + 0.0075766374, + 0.008169076, + -0.0016563609, + -0.023355264, + 0.0060428786, + 0.018273454, + 0.026449112, + -0.013422036, + -0.016733112, + 0.025330061, + 0.00009375143, + 0.007392323, + -0.0031168878, + 0.01682527, + -0.0012646929, + 0.015614061, + 0.0040779556, + -0.008307312, + 0.00032584148, + 0.04834303, + -0.021670105, + 0.010920627, + -0.00078292465, + -0.022565346, + 0.020748531, + 0.016193334, + 0.03375586, + -0.0074384017, + -0.010473006, + 0.003551343, + -0.022710163, + 0.025119416, + 0.023210445, + 0.006971033, + -0.03154409, + 0.008195407, + -0.009827905, + -0.007155347, + -0.016640956, + -0.019524159, + 0.015311258, + -0.00916964, + -0.020458896, + -0.046947505, + -0.0056117144, + -0.02342109, + 0.0168516, + -0.01273744, + -0.02064321, + -0.0018579547, + -0.00014049857, + 0.004779008, + 0.006088957, + -0.010301857, + -0.016719947, + 0.0117500415, + 0.0037586966, + -0.00025919208, + 0.0028058572, + 0.014639827, + 0.020063937, + -0.0021130326, + 0.008906334, + -0.0034756425, + -0.035388358, + -0.020880185, + -0.011256342, + 0.009577765, + 0.00864961, + 0.020735366, + 0.02544855, + 0.018049642, + -0.010986453, + -0.01244122, + 0.0024635592, + -0.021235649, + -0.00031411613, + -0.016311822, + 0.00914331, + 0.01625916, + 0.027857801, + -0.022762826, + -0.007997927, + -0.008366556, + 0.024987763, + -0.011190516, + -0.014481843, + -0.011651302, + -0.03907465, + -0.0026248342, + -0.0064049247, + 0.0016004083, + -0.0037652794, + 0.006289728, + -0.002081765, + 0.022091394, + -0.014402851, + -0.009742331, + -0.013448367, + 0.019142365, + 0.003380194, + 0.019484662, + 0.008491627, + -0.0032633517, + -0.010038551, + -0.023763388, + 0.004351136, + -0.0047987564, + 0.0002133192, + 0.008109832, + -0.021051334, + 0.00520359, + -0.0019484663, + 0.0052990383, + 0.03446679, + 0.008188824, + -0.013797248, + 0.008873421, + -0.012566291, + -0.031149128, + -0.017088575, + -0.015324424, + -0.025659194, + 0.007813613, + 0.03117546, + -0.0018694743, + 0.040233195, + -0.023263106, + -0.016088013, + 0.014942629, + -0.008208572, + 0.022460023, + 0.006911789, + 0.04581529, + 0.010604659, + -0.0048876223, + -0.021340972, + -0.011987017, + -0.015442912, + -0.0077280384, + -0.006148201, + 0.0102097, + 0.0019369465, + -0.03615195, + 0.008465296, + 0.02485611, + -0.010288692, + -0.008807594, + 0.024553308, + 0.0030494155, + -0.0042820177, + -0.018707909, + -0.016561963, + -0.0036764136, + 0.022446858, + -0.02668609, + -0.01296125, + -0.0052002985, + -0.0128230145, + -0.008445548, + 0.010492754, + -0.025066756, + 0.0035645084, + 0.023236776, + -0.02698889, + 0.008866838, + -0.019142365, + -0.014192207, + 0.0008812531, + -0.001876057, + 0.029148001, + 0.0027729438, + 0.00617124, + -0.013428618, + 0.014810977, + -0.002777881, + 0.0064246724, + -0.020630045, + 0.025830343, + -0.012276654, + -0.020287747, + -0.006898624, + -0.008175659, + 0.009966142, + 0.0054043606, + -0.0045157024, + -0.006421381, + -0.021788592, + -0.0028700382, + 0.036915537, + 0.0102097, + -0.018220792, + -0.01679894, + -0.005325369, + -0.019366175, + -0.010946957, + -0.0041371994, + -0.019313512, + -0.023486918, + -0.018457768, + -0.010881131, + 0.00308562, + 0.014508175, + -0.0045025367, + -0.005980343, + 0.02109083, + 0.011493318, + -0.027568163, + 0.018879058, + 0.02059055, + 0.023881877, + -0.004897496, + 0.020261416, + -0.005851981, + -0.01477148, + 0.011605223, + 0.0025639446, + -0.00039681073, + -0.027647156, + 0.020090267, + 0.019247686, + 0.0168516, + 0.023355264, + 0.029305985, + -0.026370121, + 0.0015855973, + -0.031149128, + -0.02213089, + 0.00021599341, + 0.010525667, + 0.004867874, + 0.02448748, + -0.030569855, + 0.014824142, + 0.028331753, + -0.020340407, + 0.007675377, + -0.027594496, + -0.01283618, + 0.007102686, + -0.0035184298, + -0.007971597, + -0.023131454, + -0.016469806, + 0.005516266, + -0.0032057536, + 0.004963323, + 0.00080267264, + 0.0005689883, + 0.0024668504, + 0.03035921, + -0.0150479525, + 0.0008861901, + -0.010551997, + -0.019129198, + -0.01117735, + 0.0018612461, + -0.03199171, + -0.023802884, + -0.01169738, + 0.01679894, + 0.008544288, + -0.028911026, + -0.04170771, + -0.00034332665, + -0.022249378, + -0.0010556935, + -0.021512121, + 0.0074054883, + 0.02213089, + -0.008735185, + 0.010940375, + 0.018576255, + 0.006230484, + 0.0126189515, + -0.015350754, + -0.024303166, + 0.007971597, + -0.016575128, + 0.04299791, + 0.000023245004, + -0.022960305, + -0.022051899, + 0.030464534, + 0.013402288, + 0.0052792905, + 0.0038278145, + -0.03199171, + 0.006760388, + -0.010328188, + -0.0028338335, + -0.005578801, + 0.0009520167, + 0.006760388, + -0.038916662, + 0.008261234, + 0.0013222911, + -0.012803267, + -0.005697289, + 0.009873984, + 0.0014193852, + 0.012079174, + 0.025790848, + -0.016548797, + -0.026383286, + 0.0045157024, + -0.019221356, + 0.005489935, + 0.0000777062, + -0.0070961034, + 0.009617261, + -0.01276377, + -0.018036477, + -0.023078792, + 0.014731985, + -0.025685525, + -0.013797248, + 0.011302421, + 0.0033571546, + -0.014258034, + -0.01918186, + 0.003913389, + -0.022723328, + 0.008307312, + 0.0013247596, + -0.03401917, + -0.0030905572, + 0.017417708, + 0.010802139, + -0.013520776, + -0.02342109, + 0.004973197, + 0.0084521305, + 0.011565727, + -0.007168513, + 0.019919118, + -0.024842944, + 0.0022578512, + -0.008656193, + -0.017773172, + -0.046921175, + -0.016351318, + 0.0039561763, + 0.00021002788, + 0.0056413366, + 0.23507982, + 0.0023549453, + -0.0056512104, + 0.03420348, + 0.009439529, + 0.035309367, + 0.012507047, + -0.006059335, + -0.011256342, + 0.01982696, + -0.0229998, + -0.0013823578, + -0.003281454, + -0.0046572294, + 0.012467551, + -0.024948267, + -0.023039296, + -0.022644337, + -0.03243933, + -0.013560272, + 0.017338717, + -0.005226629, + 0.001489326, + -0.010604659, + -0.003130053, + 0.020801194, + -0.026054153, + -0.0023944413, + 0.023328934, + 0.028805703, + 0.0076687946, + 0.011940938, + -0.0018447894, + 0.0073462445, + 0.009854237, + -0.002988526, + 0.02361857, + -0.0013510901, + 0.00052249833, + 0.005358282, + -0.023763388, + -0.0008664421, + 0.011835616, + -0.006352263, + 0.0051838416, + 0.0012745669, + 0.008801011, + 0.0067373486, + -0.0062864367, + 0.024290001, + -0.017365048, + 0.005888186, + 0.03249199, + 0.027752478, + 0.00022319319, + -0.00453545, + 0.029648283, + -0.019432, + -0.0073594097, + 0.00091334357, + -0.014705654, + 0.030885823, + -0.021841254, + 0.017259724, + -0.021393633, + -0.0061284527, + -0.030069573, + -0.000862328, + -0.0015066054, + -0.025935665, + 0.007997927, + -0.030517194, + -0.02109083, + -0.005907934, + -0.032281347, + -0.023434255, + 0.017509865, + 0.010802139, + 0.012842762, + 0.02909534, + -0.015074283, + 0.006421381, + -0.00007791191, + 0.009709418, + -0.00083147176, + -0.019537324, + 0.007675377, + 0.0021821505, + 0.0040680817, + -0.0112760905, + 0.0030773918, + -0.02059055, + -0.0009799929, + -0.030464534, + -0.0019846708, + -0.0014531213, + -0.011190516, + 0.014705654, + 0.0034756425, + 0.0046901423, + -0.010380849, + -0.001915553, + 0.020735366, + 0.010894296, + -0.0070171114, + -0.0100451335, + 0.026580766, + -0.00047971107, + -0.0022216465, + -0.022288874, + -0.009505356, + -0.031860057, + 0.007622716, + -0.010644155, + -0.0027416763, + 0.0155219035, + -0.010881131, + -0.014982126, + 0.009702835, + -0.01053225, + 0.030464534, + -0.02693623, + -0.015693052, + -0.00041018176, + -0.017549362, + -0.013250887, + 0.017259724, + -0.019695308, + -0.0037652794, + -0.042050008, + 0.017391378, + 0.010466424, + 0.022499518, + -0.009340789, + 0.013244304, + 0.016509302, + 0.000004605931, + -0.011842199, + -0.0069183717, + 0.00055623444, + 0.009149892, + -0.00929471, + 0.01937934, + 0.016298657, + -0.011769789, + -0.013211391, + 0.01603535, + 0.0007997927, + -0.013171895, + 0.020998674, + -0.0025392596, + -0.035520013, + -0.015943194, + -0.009538269, + 0.039522268, + -0.0030823287, + -0.023328934, + 0.00369287, + 0.014810977, + 0.013626099, + -0.03209703, + -0.0029967541, + 0.016601458, + -0.032176025, + -0.03828473, + -0.008583784, + -0.17030647, + -0.007965014, + 0.009380285, + -0.031149128, + 0.013955231, + 0.0028042116, + 0.005878312, + 0.0029556127, + -0.010380849, + -0.0013659012, + 0.032413, + 0.017207064, + -0.010973288, + -0.035441022, + 0.0050719366, + -0.020169258, + -0.019432, + 0.006599113, + 0.024803448, + 0.0019747969, + 0.021577947, + -0.011124689, + 0.0027153457, + -0.0005368979, + -0.0026561017, + 0.03157042, + -0.009755497, + -0.008017675, + -0.0067735533, + -0.015666721, + -0.017259724, + 0.0035381778, + 0.015153275, + 0.024092522, + -0.004301766, + -0.0013823578, + -0.024579639, + -0.00919597, + -0.004522285, + 0.013560272, + -0.010848218, + 0.00803084, + 0.0009824614, + -0.01157231, + -0.0059869257, + 0.010802139, + 0.011282673, + -0.008866838, + -0.006056044, + -0.006572782, + 0.017970651, + -0.011842199, + 0.0012564645, + 0.019010711, + 0.022446858, + 0.00192049, + 0.0036237522, + 0.018102305, + 0.0132969655, + 0.0091301445, + -0.01876057, + -0.009505356, + 0.013981562, + -0.0026890151, + -0.020182423, + -0.011756624, + 0.008366556, + 0.022315204, + -0.02317095, + 0.01980063, + 0.0051476373, + 0.003712618, + -0.01747037, + -0.009452694, + 0.01960315, + -0.00079362147, + -0.009176223, + 0.03580965, + 0.0105980765, + -0.013211391, + -0.020774864, + 0.044525087, + -0.021275144, + 0.005977052, + 0.0022051898, + 0.026093649, + 0.0030066282, + -0.0076095504, + -0.01606168, + -0.021591112, + 0.01231615, + -0.008419218, + -0.0066089868, + -0.006984198, + 0.0009939811, + 0.0013988145, + -0.021670105, + 0.03831106, + -0.0012054489, + -0.000015813803, + -0.00014574412, + -0.014429183, + -0.007221174, + 0.022065064, + 0.01253996, + 0.018800067, + 0.016772607, + 0.016970087, + 0.0046802685, + 0.00016559495, + -0.027410181, + -0.009643591, + 0.011223429, + 0.006500373, + -0.012230575, + 0.0136919245, + 0.019037042, + -0.015298093, + 0.021591112, + 0.006483916, + 0.02128831, + -0.0132969655, + 0.013125816, + -0.0001234248, + -0.014363356, + -0.013448367, + -0.058822617, + -0.009472442, + 0.009419781, + 0.01727289, + -0.010782391, + 0.04839569, + 0.02091968, + 0.028358083, + -0.0082151545, + -0.003041187, + 0.0043708836, + -0.029990582, + 0.0022627881, + -0.00020848507, + 0.045393996, + 0.0010836698, + 0.011710545, + -0.00028531702, + 0.004094412, + 0.01957682, + -0.009841071, + -0.0037455314, + -0.014350191, + -0.013705091, + -0.0076292986, + 0.0022315204, + -0.0174967, + 0.008564035, + 0.015772045, + 0.01851043, + 0.02698889, + -0.0068130493, + 0.0005599372, + -0.013033659, + -0.004252396, + 0.005878312, + -0.022367865, + 0.005684124, + 0.0379161, + -0.029964251, + -0.0014539441, + 0.0057664067, + 0.0010647447, + -0.013705091, + -0.016601458, + -0.0008664421, + -0.021472625, + 0.019010711, + 0.03754747, + -0.020656375, + -0.019682143, + -0.003771862, + 0.00010809956, + -0.0084258, + 0.028647719, + -0.0015600895, + 0.020208754, + 0.00874835, + -0.025040423, + 0.007602968, + 0.01918186, + 0.006780136, + -0.0116710495, + 0.003972633, + 0.021419963, + 0.0015806603, + -0.015930029, + -0.026383286, + 0.020300912, + -0.0024997636, + -0.01305999, + -0.00023512426, + -0.010492754, + 0.0063983416, + -0.0106770685, + -0.034756426, + -0.020774864, + -0.006158075, + -0.0008236549, + -0.021999236, + 0.010670486, + -0.041102104, + -0.004637481, + 0.0011009492, + 0.0013025431, + 0.020551052, + 0.012263489, + -0.013277218, + 0.016088013, + -0.01288884, + 0.020169258, + 0.0053944867, + 0.03425614, + -0.03167574, + -0.009222302, + 0.029305985, + 0.005486644, + 0.02213089, + 0.0052134637, + 0.02086702, + -0.01519277, + -0.031781062, + -0.09600146, + 0.007221174, + 0.016522467, + -0.0017065536, + 0.007129017, + -0.017378213, + 0.020959178, + -0.0049995272, + 0.010512502, + -0.02059055, + -0.037758116, + 0.009261797, + -0.004005546, + -0.01980063, + -0.03151776, + -0.0017888368, + 0.028121108, + 0.01600902, + 0.017773172, + 0.02294714, + 0.015574564, + 0.0032732259, + 0.008392886, + -0.00049411063, + -0.03633626, + 0.011565727, + 0.0028535814, + 0.03170207, + -0.01224374, + 0.013053407, + 0.0015288219, + -0.026778245, + 0.015877366, + 0.03154409, + -0.014982126, + -0.010196535, + 0.004933701, + 0.014587166, + 0.018721074, + 0.03580965, + -0.034861747, + 0.0108350525, + 0.02002444, + -0.0059968, + -0.015679887, + 0.005233212, + 0.015574564, + 0.018233957, + 0.035362028, + -0.007793865, + 0.013402288, + 0.030622516, + -0.004170113, + -0.006559617, + -0.0077280384, + -0.03654691, + 0.010762643, + -0.0021969615, + -0.0050686453, + -0.010453258, + 0.02361857, + 0.01045984, + 0.01732555, + 0.007352827, + 0.014982126, + -0.007352827, + -0.017694179, + 0.007155347, + 0.01876057, + -0.0053418255, + -0.03459844, + 0.006161366, + 0.014337026, + 0.02901635, + 0.019853292, + -0.013448367, + -0.01598269, + -0.0099200625, + -0.019432, + 0.019339845, + 0.0040483335, + -0.019168695, + -0.0340455, + 0.021314641, + 0.028963687, + -0.010315022, + -0.012553126, + -0.015205936, + -0.009235467, + 0.034756426, + -0.005726911, + -0.009933229, + 0.012164748, + -0.00612187, + 0.019932283, + 0.03246566, + 0.006589239, + -0.01789166, + 0.035888642, + -0.0072870003, + 0.0023138036, + 0.016167004, + 0.013112651, + -0.0021574656, + -0.02339476, + 0.013560272, + -0.014113215, + -0.0217096, + 0.00916964, + 0.0014917945, + 0.006602404, + 0.008346808, + 0.009064318, + 0.028121108, + 0.0064345463, + 0.0040252944, + -0.016127508, + -0.02954296, + -0.01603535, + -0.0060922485, + 0.013836743, + 0.013586602, + 0.013652429, + -0.005506392, + 0.014995291, + -0.00966334, + 0.008208572, + -0.030648848, + 0.007826778, + 0.001890868, + 0.0050324406, + 0.0070566074, + -0.000534018, + -0.007115851, + -0.019129198, + 0.0075108106, + 0.012052843, + 0.011677632, + -0.0062568146, + 0.03617828, + 0.018194461, + -0.00322221, + 0.0031168878, + -0.0024717874, + 0.019260852, + 0.0057400763, + 0.012204245, + -0.0030839744, + -0.032202356, + 0.027410181, + -0.0021969615, + 0.013270635, + -0.014402851, + -0.01224374, + -0.026409617, + -0.0015329361, + 0.016693616, + -0.0034163985, + 0.0076095504, + 0.025514375, + -0.006266689, + 0.02002444, + 0.0073594097, + -0.011164185, + -0.009926646, + 0.026554435, + 0.0021327806, + 0.009518521, + -0.0156008955, + 0.013547107, + 0.0011050634, + -0.0252774, + -0.024763953, + 0.009623843, + 0.00852454, + -0.0008680878, + 0.006342389, + 0.007945266, + 0.008616697, + -0.0037586966, + 0.020801194, + -0.016601458, + -0.014271199, + 0.019168695, + -0.01851043, + 0.004301766, + 0.0047822995, + -0.003248541 + ] + }, + { + "object": "embedding", + "index": 5, + "embedding": [ + 0.0021845475, + 0.008128393, + 0.0016116065, + -0.0032902234, + -0.03658782, + 0.004707499, + -0.017878445, + -0.0045868796, + 0.010058301, + -0.03318368, + -0.004885077, + 0.0063559613, + 0.019768145, + -0.014166054, + -0.02752798, + -0.01904443, + 0.02173826, + -0.025544465, + -0.0021460163, + -0.026670244, + -0.00603431, + 0.033022854, + -0.012115528, + -0.020331034, + 0.0038229583, + 0.005575287, + -0.002809422, + -0.015680496, + -0.0014516185, + -0.011733566, + 0.01049387, + 0.0016526504, + 0.009689742, + -0.021537228, + 0.0055250293, + -0.02439188, + -0.014233065, + -0.009863969, + -0.016993904, + -0.020331034, + 0.019392885, + -0.018722778, + -0.008249013, + -0.00634926, + -0.007458287, + 0.01150573, + 0.0060008047, + 0.005149769, + -0.011840784, + 0.013227904, + 0.023560949, + 0.014005228, + -0.017865043, + -0.0012363467, + -0.000084129795, + -0.009046439, + -0.023467133, + -0.013817598, + -0.01125109, + -0.0092072645, + 0.0038665151, + 0.005173223, + -0.018092878, + -0.0010579309, + -0.0025363537, + -0.009488709, + -0.006342559, + 0.008007774, + -0.03224553, + -0.011780474, + 0.010949542, + 0.021698052, + -0.008604169, + -0.0045734774, + 0.038732164, + 0.003682236, + -0.031655837, + -0.00010491357, + 0.011793876, + -0.00007125118, + 0.021255782, + -0.018856801, + 0.0066709113, + 0.015613484, + 0.0046203854, + 0.015626887, + -0.016136168, + 0.025785703, + -0.008222208, + -0.00311097, + 0.010916037, + 0.008966027, + -0.00591034, + 0.004627086, + -0.030127993, + -0.025343433, + 0.0064765806, + 0.018883605, + -0.0061549293, + -0.043128062, + -0.0096562365, + 0.02161764, + -0.011874289, + -0.018012466, + -0.030020777, + 0.014045435, + 0.010835624, + -0.01521142, + 0.0017339009, + 0.011137172, + 0.0020287477, + 0.03181666, + -0.006838438, + -0.039080616, + -0.032272335, + -0.018374324, + 0.014460901, + -0.011512431, + -0.019567113, + -0.026817666, + 0.017784629, + 0.017302154, + -0.00015025047, + 0.001991892, + 0.018709376, + -0.003588421, + -0.017597, + -0.0056523494, + 0.0057461644, + 0.002444214, + 0.020974336, + 0.02299806, + 0.017865043, + 0.0012505865, + -0.014809356, + 0.015546474, + -0.021322792, + 0.010574282, + -0.0115928445, + -0.012209343, + 0.021135163, + 0.017985662, + -0.013790794, + 0.0056422977, + 0.0020320984, + 0.017717618, + 0.027259937, + 0.02180527, + 0.018803192, + -0.0025631578, + 0.008456745, + -0.005022449, + 0.006278899, + 0.008470148, + 0.016417611, + 0.0046203854, + 0.0141124455, + 0.01740937, + 0.0044160024, + 0.0034778533, + 0.009783557, + -0.003551565, + 0.009763453, + 0.008510354, + 0.0048281183, + 0.013650072, + 0.022555789, + 0.018937213, + 0.017114524, + 0.00068392756, + -0.014702139, + 0.03004758, + -0.0020220468, + 0.02445889, + 0.017422773, + 0.010373251, + 0.013710381, + 0.00414796, + -0.023668166, + -0.0054144613, + -0.033290897, + -0.0002041731, + 0.007310863, + 0.007994372, + 0.0028931852, + -0.007310863, + 0.0182269, + 0.00855056, + 0.006406219, + -0.013026873, + 0.0058734845, + 0.038303293, + 0.03229914, + 0.025115596, + -0.6776118, + -0.042752802, + -0.007404678, + -0.0079005575, + 0.019218657, + 0.028224891, + 0.010225827, + 0.012276353, + 0.004741004, + -0.005776319, + -0.018977419, + 0.032593984, + 0.0061448775, + 0.0013418884, + 0.008872212, + -0.015801115, + -0.013274812, + -0.015787711, + 0.006881995, + 0.006272198, + -0.0101990225, + 0.024445489, + -0.0063593118, + 0.0055149775, + 0.02238156, + -0.030127993, + 0.013650072, + -0.013965022, + -0.013375328, + 0.016055755, + -0.030181602, + 0.036346585, + 0.0028747574, + -0.016953697, + 0.051705427, + -0.008148496, + -0.010708304, + 0.024043426, + 0.008899016, + 0.045808487, + 0.00094987615, + -0.028064065, + 0.023614557, + -0.018561954, + -0.024525901, + 0.007518596, + 0.020156806, + -0.01941969, + 0.010400055, + -0.013670175, + -0.0028077466, + -0.029216649, + -0.02708571, + -0.011425318, + 0.010507272, + -0.0069356035, + 0.0069356035, + -0.007257255, + -0.0017523288, + 0.003129398, + -0.005990753, + 0.020625882, + -0.039482683, + -0.012678417, + -0.0042216717, + -0.0014733969, + -0.04393219, + 0.0018210147, + 0.018025868, + 0.008188703, + -0.0077062263, + 0.007679422, + -0.009642834, + 0.008919119, + 0.038169272, + 0.022220735, + 0.01754339, + -0.026201168, + -0.016833078, + -0.011948001, + 0.010916037, + -0.003608524, + -0.013180997, + -0.0049755415, + 0.005129666, + -0.015305235, + -0.023172287, + 0.0044294046, + 0.009750051, + -0.022033105, + 0.017717618, + 0.009863969, + 0.012953161, + 0.018066075, + -0.016296992, + 0.01584132, + -0.019727938, + 0.0044160024, + 0.02218053, + -0.027032102, + -0.00004824244, + -0.013100584, + -0.0007304162, + -0.0108289225, + -0.012805738, + -0.0069222013, + -0.024793945, + 0.00204215, + 0.0119413, + -0.02439188, + 0.0043020844, + -0.012336663, + -0.02376198, + -0.0043858476, + 0.019821754, + -0.03211151, + 0.0099711865, + -0.0062185894, + 0.00798097, + -0.00011171934, + 0.0141124455, + -0.01011861, + 0.038624946, + -0.008537158, + -0.00072622806, + 0.030690882, + 0.01062119, + -0.003323729, + -0.009629432, + 0.0056221946, + -0.007217048, + 0.018883605, + 0.012497488, + -0.0067144684, + 0.0038162572, + -0.0101521155, + 0.0037123905, + -0.00008203571, + 0.01539905, + -0.041519806, + -0.0439858, + -0.0067647262, + 0.019513505, + -0.000016072088, + -0.0036286274, + -0.023426928, + -0.017020708, + 0.0007655968, + -0.011432019, + 0.037499167, + -0.0029266907, + -0.011170677, + -0.03280842, + 0.01998258, + 0.0015110904, + -0.013469143, + 0.0014717217, + -0.012939759, + -0.0008837031, + -0.012329962, + 0.0088923145, + 0.0014859614, + -0.029136235, + 0.019768145, + 0.00710313, + -0.00066549965, + 0.013643371, + 0.0067044166, + 0.010440261, + -0.026335191, + -0.018709376, + -0.011988208, + 0.004657241, + 0.01766401, + 0.013221203, + 0.004784561, + 0.0005616331, + -0.0073510697, + -0.0053206463, + -0.025450649, + 0.010567581, + -0.03776721, + -0.02502178, + 0.0024676677, + 0.014621726, + -0.008852108, + 0.004013939, + 0.017141327, + -0.016859882, + 0.0012489113, + -0.017422773, + 0.012236147, + 0.01326141, + 0.005866783, + 0.021644443, + -0.008429941, + 0.00035390005, + 0.010279436, + 0.006895397, + 0.019245462, + 0.014715541, + -0.010373251, + 0.014099043, + -0.018334117, + 0.029297061, + -0.04141259, + -0.006868593, + -0.0132145025, + 0.02520941, + 0.019299071, + 0.0025028482, + -0.010949542, + -0.013938217, + -0.0076191123, + 0.01609596, + 0.015787711, + 0.01614957, + 0.010822222, + -0.004486364, + -0.0038899689, + 0.019634124, + -0.020880522, + 0.013382029, + 0.003796154, + -0.0065469416, + 0.004117805, + 0.0009054816, + 0.023239298, + 0.02224754, + 0.0017925352, + -0.005776319, + -0.010259332, + -0.01017892, + 0.017865043, + 0.005769618, + -0.014594922, + 0.012651613, + -0.010574282, + 0.038356904, + 0.0021644444, + 0.019701134, + 0.0047477055, + 0.027849631, + -0.010534076, + -0.011083564, + -0.0082155075, + 0.033961, + -0.008376333, + 0.0031578774, + 0.0065770964, + -0.018159889, + -0.0060376604, + -0.008751593, + 0.0012732026, + 0.009756752, + -0.017516587, + -0.0041446094, + 0.007585607, + 0.004298734, + 0.045594055, + 0.0017439525, + -0.00090799446, + 0.0010947867, + -0.011867588, + 0.005990753, + 0.008832005, + 0.011318101, + 0.0036889368, + -0.013790794, + -0.0055551836, + -0.026817666, + -0.0124036735, + -0.007404678, + -0.0033170278, + 0.014715541, + -0.018937213, + 0.0024592914, + -0.0026502716, + 0.02275682, + 0.01143872, + -0.014889769, + -0.03640019, + 0.01766401, + -0.005762917, + 0.0034678017, + -0.022783626, + -0.028439324, + 0.003665483, + -0.02841252, + 0.018468138, + 0.011204183, + 0.009482008, + 0.002784293, + -0.010922737, + -0.016176375, + 0.0056925556, + 0.018829996, + -0.03607854, + -0.019513505, + -0.0049688406, + -0.008074785, + -0.006248744, + -0.002023722, + 0.0007999398, + 0.019660927, + 0.003601823, + -0.006587148, + -0.0037291434, + 0.013040274, + -0.00077941775, + 0.019526906, + -0.020786706, + -0.0026201168, + 0.02067949, + 0.003953629, + 0.007954165, + -0.02110836, + -0.0017690815, + 0.031629033, + -0.00032311704, + -0.010815521, + 0.005096161, + -0.024365077, + -0.005119615, + 0.087596335, + 0.0031059443, + 0.013368627, + -0.0042317235, + 0.02570529, + 0.016873285, + -0.006077867, + -0.0048917783, + -0.0030054282, + -0.009287678, + -0.0118608875, + -0.010788716, + 0.009173759, + 0.00867788, + 0.00052980304, + -0.005166522, + -0.008302621, + -0.039080616, + 0.009167058, + -0.0068618916, + -0.003400791, + 0.011659855, + -0.00041232497, + 0.01288615, + -0.013053677, + 0.0100516, + 0.011840784, + 0.033961, + 0.017315555, + -0.011740268, + 0.014876367, + 0.018092878, + 0.0031059443, + -0.0031662537, + -0.006523488, + -0.0013779068, + 0.014795954, + 0.014246467, + -0.0049688406, + -0.0072639557, + 0.013616567, + -0.0015680495, + 0.01137841, + 0.008731489, + 0.021443412, + 0.00008318746, + -0.0087113865, + 0.019969177, + -0.012015012, + 0.0125712, + 0.029243452, + 0.009274276, + -0.026214572, + -0.01665885, + -0.01206862, + 0.020398045, + 0.005618844, + -0.0099711865, + 0.022019703, + 0.026201168, + -0.00515312, + -0.02357435, + -0.004342291, + -0.020639284, + -0.0070294184, + -0.041787848, + 0.0106815, + -0.032888833, + -0.011914495, + -0.019808352, + 0.00760571, + -0.022904243, + -0.0061113723, + 0.02067949, + 0.016511427, + 0.00597065, + 0.02350734, + -0.021765063, + -0.0059572477, + 0.012041816, + 0.009602628, + -0.024485696, + -0.027447566, + -0.01716813, + -0.006406219, + 0.014635129, + 0.017650608, + -0.016484622, + 0.007954165, + 0.009696443, + 0.027688805, + -0.00591034, + 0.015452659, + 0.0073510697, + -0.016189776, + -0.017489783, + 0.010078403, + 0.002017021, + -0.016645448, + -0.014018631, + 0.025249617, + -0.01986196, + -0.008751593, + 0.005317296, + 0.004915232, + -0.016390808, + 0.01728875, + -0.0008204618, + -0.0126717165, + 0.006309054, + 0.021885682, + -0.025812507, + 0.006881995, + 0.019098038, + -0.019151647, + 0.046424985, + -0.00057335995, + 0.022716613, + -0.006121424, + -0.001206192, + 0.01087583, + 0.0007924011, + 0.016109362, + 0.0066508083, + -0.011961403, + -0.008704685, + 0.0055015753, + -0.017462978, + 0.003268445, + -0.0023805539, + -0.00848355, + 0.026321787, + -0.012242848, + -0.03425585, + -0.027608393, + 0.00521678, + -0.017771227, + 0.019071234, + -0.011043357, + -0.02771561, + -0.035220806, + -0.009039738, + 0.012001609, + -0.009220667, + -0.018762985, + -0.021349598, + 0.007833546, + 0.0063392087, + 0.014313477, + 0.011974805, + 0.008161899, + 0.01628359, + -0.02776922, + -0.0029618712, + -0.03294244, + -0.035864107, + -0.022515582, + -0.014795954, + 0.01614957, + 0.009575823, + 0.026268179, + 0.029752733, + 0.007880454, + -0.012946459, + -0.007310863, + 0.0058835363, + -0.0008506166, + 0.009401596, + -0.015760908, + 0.0108289225, + 0.026831068, + 0.029377474, + -0.0030071035, + -0.026335191, + -0.017556794, + 0.020719696, + -0.016940296, + -0.00037693497, + -0.00993098, + -0.019272266, + 0.0018109631, + -0.0045801788, + -0.005297193, + -0.017114524, + 0.0058801854, + 0.008885614, + 0.00006428835, + -0.005045903, + 0.010641293, + -0.010406756, + 0.020974336, + -0.010601087, + -0.015693897, + -0.023172287, + -0.012162435, + 0.011686659, + -0.017449576, + 0.01182068, + 0.0118608875, + 0.010728407, + 0.023091873, + -0.012048517, + -0.01275883, + 0.0040809494, + 0.011043357, + 0.018950615, + 0.0060008047, + -0.017838238, + 0.005002346, + -0.037070297, + -0.023614557, + -0.015613484, + -0.009240771, + -0.026254777, + -0.011076862, + 0.021014543, + 0.0022565841, + 0.02105475, + -0.0073443684, + -0.008664479, + 0.018628964, + 0.008510354, + 0.012979965, + -0.020625882, + 0.02790324, + 0.018267106, + 0.0036889368, + -0.01413925, + -0.01991557, + -0.011887691, + -0.017985662, + 0.02275682, + 0.027876435, + -0.006875294, + -0.023520742, + 0.013871207, + 0.024097035, + -0.02570529, + -0.008249013, + 0.019768145, + 0.027822826, + 0.0019416339, + -0.01991557, + 0.0091603575, + -0.017516587, + 0.021952692, + -0.017503185, + -0.0017154729, + -0.015881527, + -0.010172218, + -0.018508345, + 0.015667092, + -0.023735177, + 0.0015018765, + 0.02652282, + -0.020960934, + 0.011545937, + -0.0008259064, + 0.004623736, + 0.0044093016, + -0.0105139725, + 0.02432487, + 0.01691349, + 0.0034644513, + -0.0037928035, + 0.013341823, + -0.0003802855, + 0.0005612143, + -0.0040273406, + 0.026227973, + -0.006228641, + -0.015988745, + -0.0039502787, + -0.00892582, + -0.0016291967, + -0.0063325074, + 0.0035616166, + 0.0010470416, + -0.016457818, + -0.007330966, + 0.02790324, + -0.0056791534, + -0.0029434434, + -0.017597, + -0.0056925556, + -0.019111441, + -0.004657241, + -0.0054613687, + 0.007592308, + -0.013274812, + -0.020880522, + -0.01923206, + 0.0074515855, + 0.027018698, + -0.008496952, + -0.018937213, + 0.013321719, + 0.011827381, + -0.02790324, + 0.007424781, + 0.010272735, + 0.0055015753, + -0.03256718, + 0.00086527516, + -0.01388461, + -0.010266033, + 0.0063559613, + -0.025504258, + -0.00911345, + -0.02972593, + -0.022676408, + 0.03739195, + 0.008952624, + 0.022207333, + 0.0257723, + -0.022864038, + -0.00070947537, + -0.01558668, + -0.010004692, + 0.008336126, + 0.007987671, + 0.011365009, + 0.024445489, + -0.016833078, + 0.01647122, + 0.0067345714, + 0.00049755414, + -0.0037123905, + -0.024539305, + -0.0327012, + 0.0025179256, + 0.0063593118, + -0.027930044, + -0.01206862, + -0.02047846, + -0.02117537, + -0.0027641898, + -0.0024224354, + 0.008838707, + -0.0005004859, + 0.0133485235, + 0.035408434, + 0.0018746232, + 0.016806275, + -0.01640421, + -0.015975341, + 0.0025815857, + -0.013804196, + -0.01628359, + -0.01125109, + -0.0025514308, + 0.02067949, + 0.009917578, + -0.017275348, + -0.019808352, + 0.019473298, + -0.037847623, + 0.0066005504, + -0.02180527, + 0.021094956, + 0.011948001, + -0.0072438526, + 0.004720901, + 0.027983652, + -0.0069557065, + 0.030556861, + -0.015077399, + -0.009723247, + 0.013026873, + -0.026281582, + 0.04846211, + 0.00021862228, + -0.01175367, + -0.0022214034, + 0.008282518, + 0.020371241, + 0.004312136, + 0.0030188302, + -0.021832073, + -0.0019466598, + -0.0020723047, + -0.0124505805, + -0.018990822, + 0.019580515, + 0.012350065, + -0.04631777, + 0.01439389, + -0.0005499062, + -0.007699525, + -0.0063023525, + -0.0008162736, + -0.0059036394, + -0.00081376074, + 0.022971256, + -0.013341823, + -0.012638211, + 0.0069289026, + -0.027259937, + 0.008604169, + 0.0017112847, + 0.0043255384, + 0.0028730822, + 0.0019081286, + -0.013703681, + -0.027930044, + 0.0004301247, + -0.029699124, + -0.0032918989, + 0.011539236, + -0.0010261007, + -0.009488709, + -0.0106479945, + 0.011217585, + -0.037365146, + -0.018079476, + 0.0029501445, + -0.029645517, + -0.02570529, + 0.018789789, + 0.0027156072, + -0.021537228, + -0.011545937, + -0.0066742618, + 0.0038363603, + -0.012725324, + -0.017382566, + 0.011338204, + -0.027018698, + 0.0024040076, + -0.0073376675, + -0.017690815, + -0.0257723, + 0.005890237, + 0.005437915, + -0.004436106, + 0.0010269384, + 0.23652083, + -0.010527375, + -0.0022599346, + 0.01998258, + -0.0075521017, + 0.017529989, + 0.028358912, + -0.0007073813, + 0.0017389266, + 0.02256919, + -0.017811434, + -0.000539017, + 0.018722778, + -0.004543323, + -0.0062018367, + -0.021832073, + -0.032888833, + -0.02551766, + -0.031012535, + -0.0015412453, + 0.02483415, + -0.015546474, + 0.005632246, + -0.002117537, + 0.0099711865, + -0.011994909, + -0.0017623804, + 0.01162635, + 0.011043357, + 0.024793945, + 0.0027072306, + 0.009327884, + -0.007699525, + 0.0038732162, + -0.006362662, + 0.008999532, + 0.007987671, + -0.012041816, + 0.029886754, + -0.0038330099, + -0.0036889368, + -0.0151042035, + -0.018722778, + 0.0059170416, + -0.0044897143, + 0.0076526175, + 0.007934063, + 0.0074515855, + -0.009736649, + 0.021041349, + -0.040367223, + -0.0007986833, + 0.014045435, + 0.026080549, + 0.012209343, + -0.021523824, + 0.030771296, + 0.0031729548, + -0.015063996, + -0.006121424, + 0.004456209, + 0.030396037, + -0.010728407, + 0.036855865, + -0.02407023, + -0.0011333178, + -0.009917578, + 0.0038531132, + 0.029779539, + -0.012732026, + 0.022515582, + 0.0124036735, + 0.004342291, + -0.021188771, + -0.010741809, + -0.023453731, + 0.027501175, + 0.0157207, + 0.016940296, + 0.041707437, + -0.009012934, + -0.012819139, + 0.008992831, + 0.007585607, + 0.0005260337, + -0.034095023, + 0.012209343, + -0.000043975746, + 0.0129866665, + -0.031575423, + 0.0037425454, + -0.0032835223, + -0.011257791, + -0.020076394, + 0.0021711455, + 0.009951083, + 0.009602628, + 0.01590833, + -0.01118408, + 0.021041349, + -0.015827918, + 0.0021610938, + 0.004895129, + -0.005739463, + -0.017141327, + -0.005990753, + -0.006888696, + 0.011177379, + -0.009461906, + -0.013871207, + 0.0011500705, + -0.03602493, + -0.0048281183, + -0.017570196, + 0.0071366355, + 0.008041279, + -0.02047846, + -0.011793876, + 0.034523893, + -0.021979498, + 0.019848557, + -0.027608393, + -0.013650072, + -0.012524293, + -0.017462978, + -0.010312941, + 0.009977887, + -0.01640421, + 0.0032282386, + -0.048220873, + 0.028305303, + -0.0032667697, + 0.020652685, + -0.0063258065, + -0.0022766872, + 0.02110836, + 0.006543591, + -0.006881995, + 0.012356766, + -0.0020387995, + 0.008986129, + -0.018159889, + 0.035435237, + 0.03640019, + -0.021161968, + 0.0021577433, + 0.02413724, + -0.0026754006, + -0.018508345, + 0.008912418, + -0.0100516, + -0.02149702, + -0.013341823, + -0.02110836, + 0.011351606, + 0.0046203854, + 0.0015035517, + -0.003930175, + 0.003638679, + 0.0019014275, + -0.04135898, + 0.0067647262, + 0.026429005, + -0.0075655035, + -0.036158953, + -0.02752798, + -0.17454937, + 0.027045503, + -0.00021548115, + -0.014487705, + 0.011545937, + 0.034389872, + 0.0079474645, + -0.022287747, + -0.00810829, + 0.015506268, + 0.031253774, + 0.019526906, + -0.005488173, + -0.014889769, + -0.0019684383, + -0.026040344, + -0.028921802, + 0.017556794, + 0.026683645, + 0.013408833, + 0.03042284, + -0.022153724, + -0.0005792234, + -0.016390808, + -0.001614957, + 0.024619717, + -0.009997991, + 0.012892852, + 0.0012313209, + 0.0013779068, + -0.017395968, + -0.019553712, + 0.026965091, + 0.014702139, + -0.004184816, + 0.0040440937, + -0.0077464324, + -0.009951083, + -0.00018270875, + 0.014742346, + -0.012651613, + 0.018923812, + 0.012236147, + 0.0163506, + -0.0012857671, + 0.019098038, + 0.005297193, + -0.0065134363, + -0.010185621, + -0.005380956, + 0.02092073, + -0.00760571, + 0.009066543, + 0.020652685, + 0.020009384, + 0.00019412152, + 0.007813443, + 0.005166522, + 0.012745428, + -0.008369632, + -0.025263019, + -0.016015548, + -0.00033044632, + -0.010507272, + -0.0046940967, + -0.00396033, + -0.021912487, + 0.022033105, + -0.017395968, + 0.010594386, + 0.0061683315, + -0.009924279, + 0.01049387, + -0.016551634, + -0.0039234743, + 0.0008112478, + -0.011425318, + 0.020826913, + 0.0021711455, + -0.015814517, + -0.03310327, + 0.026348593, + -0.03626617, + -0.009187162, + 0.00358172, + 0.03130738, + 0.0019198555, + 0.0101990225, + -0.025624877, + -0.003638679, + 0.022528984, + -0.013375328, + 0.0037525971, + -0.0045600757, + 0.011036656, + 0.022528984, + -0.01363667, + 0.037123907, + -0.025785703, + 0.004858273, + -0.01017892, + -0.005538431, + -0.012021713, + -0.00083763327, + 0.029109431, + 0.0007630839, + 0.020384643, + 0.035810497, + 0.027983652, + -0.012289755, + -0.015131007, + 0.0031913829, + 0.00848355, + -0.0030623872, + -0.016498026, + 0.016256787, + 0.019928971, + -0.013596463, + 0.016632047, + -0.00798097, + 0.029431082, + -0.0092072645, + 0.010473766, + 0.010353147, + -0.02236816, + 0.0056791534, + -0.053930182, + 0.023292907, + 0.005193326, + 0.018977419, + -0.012685118, + 0.037123907, + 0.02112176, + 0.032325942, + -0.00810829, + 0.016136168, + -0.012953161, + -0.011807279, + -0.0028496285, + -0.0005783858, + 0.03444348, + -0.005166522, + 0.0056724525, + 0.004154661, + 0.0010076729, + 0.024432087, + -0.007753134, + -0.011572741, + 0.00078402477, + -0.004111104, + -0.024177447, + 0.019017626, + -0.021403205, + 0.027742414, + 0.0327012, + 0.02187228, + 0.021537228, + 0.0018025868, + 0.014045435, + -0.013562958, + -0.01495678, + 0.014501107, + -0.01017892, + -0.0038531132, + 0.023453731, + -0.033666156, + 0.003085841, + -0.016605241, + -0.019580515, + -0.020947533, + -0.008597468, + 0.016270189, + -0.034148633, + 0.011492329, + 0.014192858, + -0.0033790127, + -0.033773374, + -0.028948605, + -0.013308317, + -0.011425318, + 0.027849631, + -0.010500571, + 0.01074851, + 0.00010899703, + -0.035730086, + -0.0031511763, + -0.0070629236, + 0.0074180802, + -0.041895065, + 0.018535148, + 0.022917647, + 0.008443343, + -0.012557798, + -0.03575689, + 0.01665885, + -0.0011483952, + -0.013234606, + -0.0036621327, + -0.026750656, + -0.00055535085, + -0.019098038, + -0.031226968, + -0.038169272, + 0.003281847, + -0.0016962073, + -0.0050291503, + 0.011445421, + -0.035542455, + -0.020076394, + -0.010292837, + 0.001948335, + 0.042029087, + 0.011137172, + -0.014621726, + 0.008818603, + -0.011579443, + 0.006530189, + 0.008691283, + 0.029752733, + -0.01991557, + -0.016605241, + 0.029002214, + 0.01149903, + 0.023413526, + 0.0010034847, + 0.010279436, + -0.010266033, + -0.026388798, + -0.090973675, + 0.015988745, + 0.026804265, + 0.007585607, + 0.0006826711, + -0.0219929, + 0.009957785, + -0.009012934, + 0.008141795, + 0.00849025, + -0.025343433, + 0.014192858, + -0.0069356035, + -0.016551634, + -0.032272335, + -0.010835624, + 0.011545937, + 0.0033086515, + 0.0074113794, + 0.01747638, + 0.0026301686, + 0.025383638, + 0.028680563, + -0.0072304504, + -0.022354757, + 0.000009966527, + -0.021322792, + 0.036239367, + -0.014755747, + -0.0073376675, + -0.0059672995, + -0.033773374, + -0.01232326, + 0.01659184, + -0.012624809, + -0.014246467, + 0.0035917715, + 0.020759903, + 0.0031277225, + 0.032325942, + -0.01614957, + 0.008778397, + 0.016310396, + 0.0015378947, + -0.010225827, + 0.01439389, + -0.0000051010556, + 0.002992026, + 0.02533003, + 0.0033203783, + 0.0011911145, + 0.020143405, + 0.0033220535, + -0.0050258, + 0.0014566443, + -0.025892919, + 0.013831001, + -0.006637406, + -0.006215239, + 0.0076727206, + 0.009173759, + 0.0076124114, + 0.023601156, + 0.010849026, + 0.005618844, + -0.013911413, + -0.005833278, + 0.010929439, + 0.027849631, + -0.022354757, + -0.039884746, + 0.023976415, + 0.004034042, + 0.014916574, + 0.015063996, + -0.0003350533, + 0.000020050846, + 0.0048917783, + -0.015827918, + 0.035783693, + 0.0075789057, + -0.010567581, + -0.03235275, + 0.01703411, + 0.023896001, + -0.019768145, + 0.0000081931, + -0.0039871344, + -0.0046739937, + 0.04449508, + -0.018829996, + -0.0013829325, + 0.008195404, + -0.001062119, + -0.005096161, + 0.031387795, + -0.0018310663, + -0.028734172, + 0.043262083, + 0.023078471, + 0.014568117, + 0.004117805, + 0.003876567, + -0.017704217, + -0.027474372, + 0.012631509, + -0.014434096, + -0.0064497762, + -0.002224754, + 0.022609398, + 0.0141124455, + 0.016377406, + -0.0017204988, + 0.025115596, + 0.0129866665, + -0.0076526175, + -0.00091469556, + -0.020706294, + -0.010889232, + 0.016377406, + 0.008758293, + 0.00515312, + 0.012055218, + -0.016444417, + -0.005367554, + 0.0009951083, + 0.010225827, + -0.024298066, + -0.0003149501, + 0.011358307, + 0.018401127, + 0.016766068, + -0.023735177, + -0.008979429, + -0.009079944, + -0.0037324938, + 0.0028211488, + 0.0018293911, + -0.038383707, + 0.022354757, + 0.019004224, + 0.0039938353, + -0.004278631, + -0.002697179, + 0.0152382245, + -0.0045466735, + 0.002638545, + -0.012658314, + -0.02533003, + 0.010346446, + -0.025933126, + -0.0059538973, + -0.01791865, + -0.014246467, + -0.012618108, + 0.009106749, + 0.006701066, + 0.006255445, + -0.0057729683, + 0.024847554, + -0.0074850908, + 0.025745496, + 0.014782552, + -0.023453731, + -0.0073778736, + 0.00993098, + -0.0039569796, + 0.011874289, + -0.014554716, + 0.021416608, + 0.000161035, + -0.016243385, + -0.019392885, + 0.02520941, + -0.01143872, + -0.026991894, + 0.00013747656, + -0.003538163, + 0.014125847, + -0.015988745, + 0.011666556, + -0.016189776, + -0.00792066, + 0.027688805, + -0.003926825, + 0.007826845, + -0.0019064533, + -0.012839243 + ] + }, + { + "object": "embedding", + "index": 6, + "embedding": [ + -0.0131454775, + -0.007023479, + -0.007137846, + -0.028793573, + -0.03425628, + 0.0073396703, + -0.032803144, + 0.013912409, + -0.007124391, + -0.025228014, + 0.000104275794, + -0.007595314, + 0.018890737, + -0.0022755668, + -0.0018584637, + 0.0096404655, + 0.019994043, + -0.006337277, + 0.004726048, + -0.005577073, + -0.044078387, + 0.001702891, + 0.012815831, + -0.005116241, + 0.0020535602, + -0.00840261, + 0.011147418, + -0.0054458873, + -0.010407397, + -0.012217086, + -0.007992235, + -0.008557342, + -0.004463677, + -0.010817773, + -0.0130109275, + -0.0073733074, + -0.00095698267, + -0.006098452, + 0.027246255, + -0.01677831, + 0.015917195, + -0.011066689, + 0.0026657602, + -0.01789507, + 0.008294971, + 0.0343101, + 0.00424167, + 0.020895522, + -0.008624617, + 0.0009553008, + -0.00075095386, + 0.056295473, + -0.024420718, + -0.011618341, + -0.018688913, + -0.0019139653, + -0.011584704, + 0.004816869, + -0.009034993, + -0.023653787, + -0.013737494, + -0.020020952, + -0.026721513, + 0.003582378, + 0.0043156724, + 0.008079692, + 0.0014716341, + 0.008079692, + 0.002578303, + 0.0019072378, + 0.020693699, + 0.017706702, + 0.0112550575, + 0.005775533, + 0.013461668, + -0.01710123, + -0.0072051208, + -0.002921404, + 0.012129629, + 0.011678888, + 0.01691286, + -0.023842156, + -0.024286168, + 0.029520141, + 0.04106448, + 0.021245351, + -0.010003748, + 0.04701156, + -0.009526098, + -0.009230089, + 0.001309334, + 0.01614593, + 0.0010965776, + 0.032534048, + -0.009660647, + -0.006313731, + -0.0038682956, + 0.03880405, + -0.01683213, + -0.0013900636, + 0.004460313, + 0.01183362, + -0.008469885, + -0.020518785, + -0.004039846, + -0.004167668, + -0.0129369255, + 0.0053517027, + 0.010508309, + 0.0006235524, + 0.02938559, + 0.026748423, + 0.022429386, + -0.047872677, + -0.010071023, + -0.018096896, + -0.0019358296, + -0.01813726, + -0.009647192, + -0.0047327755, + 0.024689816, + -0.0039187516, + -0.006414643, + -0.027663358, + 0.021164622, + 0.015580822, + -0.00594372, + -0.004779868, + 0.0035790142, + 0.0028877666, + 0.010999414, + 0.0112550575, + -0.000038788072, + -0.0018315538, + -0.034229368, + 0.013239662, + -0.026398594, + 0.014975349, + -0.029681599, + -0.009620283, + -0.00480005, + 0.015190628, + -0.032238036, + -0.0005697326, + 0.019576939, + 0.014719705, + 0.014127688, + -0.0027111706, + 0.021339536, + -0.01305802, + 0.013502033, + -0.03207658, + 0.01119451, + -0.0048673246, + 0.010858137, + 0.0038279307, + 0.007292578, + 0.023411596, + -0.009479006, + 0.009115722, + -0.004359401, + -0.015123353, + 0.0048101414, + -0.013286754, + 0.022617755, + 0.008624617, + 0.00739349, + 0.013044565, + 0.0025127102, + -0.007783683, + 0.008557342, + 0.022402477, + -0.02401707, + 0.02018241, + 0.032964606, + 0.01364331, + 0.0067510167, + -0.01903874, + -0.030569626, + -0.031134732, + -0.014612066, + 0.005476161, + 0.016119018, + 0.018352538, + -0.0049110535, + 0.016374663, + -0.0024925277, + -0.011187783, + 0.011853803, + -0.012930198, + 0.014558246, + 0.004463677, + 0.004103757, + -0.0125870975, + -0.6824346, + -0.027770998, + -0.01186053, + -0.011450155, + -0.011820165, + 0.025241468, + 0.014100778, + 0.0026489415, + -0.011389608, + -0.0132194795, + -0.0073800352, + 0.018554363, + 0.007595314, + 0.0053113378, + -0.012963835, + -0.0022335202, + 0.0064684628, + 0.016859042, + -0.0034747384, + 0.024864731, + -0.014961895, + 0.020720609, + 0.0075751315, + -0.004742867, + 0.012714919, + 0.006656832, + 0.0018197808, + -0.011954715, + -0.010952322, + 0.004921145, + -0.030650355, + 0.0035151034, + 0.0072185756, + -0.018904192, + 0.043970745, + 0.0144775165, + -0.019711489, + 0.01462552, + 0.012573642, + 0.03657053, + 0.015917195, + 0.0054257046, + 0.024676362, + -0.0050893314, + -0.010938867, + 0.010501581, + 0.013858589, + 0.0002537518, + 0.017303053, + -0.01949621, + -0.0076020416, + -0.03172675, + -0.017854707, + -0.01079759, + 0.007050389, + -0.003632834, + 0.01792198, + 0.006290185, + 0.007736591, + 0.014517881, + 0.0085909795, + 0.0049245083, + -0.02973542, + -0.014033503, + 0.0170205, + -0.008765894, + -0.015378998, + -0.0075145843, + 0.009384821, + 0.01358949, + 0.00038619884, + 0.017477969, + 0.0042248513, + -0.009613555, + 0.031296194, + 0.012149812, + 0.010030658, + 0.002450481, + 0.0040196637, + -0.0056073465, + 0.011766345, + -0.008860079, + -0.025308743, + 0.0060513597, + 0.037458554, + -0.024985826, + 0.0025244833, + -0.005758715, + 0.009021537, + 0.002909631, + 0.01903874, + 0.037862204, + -0.0052642454, + -0.011954715, + -0.022954129, + 0.02508001, + -0.01680522, + 0.0006550874, + 0.0201555, + -0.021218441, + 0.010602494, + -0.003266187, + -0.00032207766, + -0.005829353, + 0.007178211, + 0.022456296, + -0.017558698, + 0.015190628, + 0.014100778, + -0.022563936, + -0.009660647, + -0.0058259894, + -0.028820483, + -0.010030658, + -0.013132022, + -0.026358228, + 0.011685616, + -0.011187783, + 0.01745106, + -0.011322333, + 0.009748105, + -0.0151098985, + 0.022375567, + -0.005122969, + -0.010804318, + -0.0015313404, + -0.011699071, + -0.014329512, + 0.0045410427, + 0.0022402476, + -0.008227697, + 0.02976233, + 0.026842607, + -0.005499707, + 0.035251945, + 0.009458823, + -0.01130215, + -0.011732709, + -0.0056342566, + -0.028793573, + -0.013690402, + -0.0047966866, + 0.006949477, + -0.01568846, + -0.0065996484, + -0.03910006, + -0.013286754, + -0.015217538, + -0.01130215, + 0.014571701, + -0.006132089, + -0.013676947, + -0.025564387, + -0.009135905, + -0.0075011295, + -0.010467944, + 0.009674102, + -0.017303053, + -0.014316057, + -0.012196904, + 0.027905548, + 0.007709681, + -0.021352991, + -0.011403062, + -0.011154146, + -0.014046958, + 0.018446723, + 0.0028120826, + -0.013481851, + -0.015621186, + -0.0059100827, + 0.00023293866, + 0.0025648482, + 0.0011251695, + 0.020411145, + -0.010420851, + 0.013461668, + -0.0031097732, + -0.0031013638, + -0.0023478873, + -0.009956656, + -0.010817773, + -0.026923336, + -0.020855159, + 0.018783098, + -0.0074203997, + 0.015163718, + 0.016737947, + -0.019940222, + 0.0030727722, + 0.008503523, + 0.005516526, + 0.0010427579, + -0.0035420132, + -0.0060513597, + 0.012910016, + -0.0022654757, + -0.00003250735, + 0.0034848296, + 0.013468396, + 0.026075676, + 0.0067409254, + 0.014531336, + 0.028255375, + 0.0007866936, + -0.026210224, + -0.000914095, + -0.012903288, + 0.04830324, + 0.008046054, + 0.010111388, + -0.017383784, + -0.026936792, + 0.012775466, + -0.0061690905, + 0.033368252, + 0.011974897, + -0.0019005104, + -0.00808642, + -0.0031602292, + 0.013730767, + -0.01584992, + -0.006895657, + 0.018877283, + -0.027851727, + -0.0058461716, + 0.0052137896, + 0.023129044, + 0.0063843695, + -0.032507136, + -0.011820165, + 0.008046054, + -0.0014724751, + 0.016105564, + -0.006697197, + -0.0020064681, + 0.0010721906, + -0.010259393, + 0.03412173, + -0.0027548992, + 0.01917329, + 0.022308292, + 0.027824817, + -0.02146063, + -0.0172896, + -0.011059961, + 0.024030523, + 0.0036025604, + -0.012573642, + 0.009909564, + -0.019509664, + -0.0019795583, + -0.00085817295, + -0.011100326, + 0.017666338, + -0.028336106, + 0.011228148, + 0.007918233, + 0.0108312275, + 0.027932458, + 0.012842741, + -0.009795197, + 0.015123353, + -0.000015347041, + -0.017007045, + 0.020747518, + 0.010145025, + 0.008934081, + -0.009465551, + -0.012439093, + 0.011880713, + -0.000118887016, + -0.009721194, + 0.005015329, + 0.015136808, + -0.000084251056, + -0.010124843, + -0.009304091, + 0.013105112, + 0.029116493, + -0.01789507, + -0.021689365, + 0.0021141076, + 0.032910787, + -0.00962701, + -0.034686837, + -0.01481389, + 0.0020905614, + -0.0096001, + 0.0035487406, + -0.0001552574, + 0.03234568, + -0.004941327, + -0.0047159567, + -0.0045645884, + -0.0053416113, + 0.033475894, + -0.034283187, + -0.02154136, + 0.007090754, + 0.006054723, + -0.008368974, + -0.0035285582, + -0.025941126, + 0.04970255, + -0.0037606559, + -0.018971467, + 0.00011405165, + 0.0009670739, + -0.009620283, + -0.006629922, + 0.0003853579, + -0.012466002, + 0.013656765, + 0.0006336436, + 0.015177174, + -0.009331001, + 0.01478698, + 0.024716726, + -0.021608636, + -0.009526098, + -0.0069629317, + -0.021877734, + 0.011584704, + 0.096014455, + 0.020115137, + 0.022833034, + -0.00030084405, + 0.030677265, + 0.004904326, + -0.015634641, + -0.009801924, + 0.012008535, + 0.010481399, + -0.007649134, + -0.038050573, + 0.0012521504, + 0.01079759, + -0.012910016, + -0.0036765626, + -0.022927219, + -0.0065458287, + 0.021285716, + -0.011638524, + -0.0060849967, + -0.0024302986, + 0.0022637937, + 0.003468011, + 0.014208417, + -0.010461217, + 0.029331772, + 0.0075751315, + 0.011557794, + 0.010441034, + 0.0061455444, + 0.014181508, + 0.0076424065, + 0.011826893, + -0.0037202912, + -0.01130215, + 0.022644665, + -0.005092695, + 0.014221872, + -0.017625973, + 0.019106016, + 0.003834658, + 0.009028265, + -0.0023747971, + 0.0315922, + -0.025833486, + -0.012714919, + 0.016751401, + -0.0034646473, + -0.017464513, + 0.026519688, + 0.016024834, + -0.024003614, + -0.017356874, + -0.0019543301, + 0.011181056, + 0.0068250187, + -0.00026510438, + -0.0001514732, + 0.017114684, + -0.019765308, + -0.028712844, + 0.0039591165, + -0.01566155, + -0.012324726, + -0.028389925, + 0.002159518, + -0.011880713, + -0.013172387, + -0.025456747, + -0.0022419295, + -0.019859493, + -0.007548222, + 0.008927354, + 0.018043075, + -0.0060244496, + 0.020626424, + 0.014692795, + 0.013690402, + 0.027797908, + 0.0032207766, + -0.014221872, + -0.008490068, + -0.012647645, + -0.01584992, + 0.01693977, + 0.024743635, + -0.017733611, + -0.010737043, + 0.024649452, + 0.016253568, + 0.0005579596, + 0.015473182, + -0.007871141, + -0.012788922, + 0.0016473893, + 0.007036934, + 0.021675909, + -0.018769642, + -0.009546281, + 0.04098375, + -0.009822107, + 0.003126592, + -0.0014968622, + 0.025779666, + -0.008994628, + 0.005193607, + 0.0051633334, + -0.014168053, + -0.023209773, + 0.044751134, + -0.031242372, + 0.025187649, + 0.025201105, + 0.0051263324, + 0.018702367, + -0.004726048, + 0.024743635, + -0.018769642, + 0.0058058067, + -0.01802962, + -0.03248023, + 0.0063070036, + 0.037216365, + -0.012277634, + 0.015405907, + 0.022617755, + -0.014006593, + -0.0020047862, + -0.008348791, + 0.021070438, + 0.028416835, + -0.014046958, + -0.012136357, + -0.00019478129, + -0.0039927536, + -0.0050489665, + 0.011557794, + -0.019590395, + -0.005082604, + -0.010723588, + -0.00507924, + 0.01704741, + -0.010071023, + -0.025672028, + -0.020572605, + -0.00022473956, + -0.0038582042, + 0.0015616141, + 0.03425628, + -0.0029819512, + 0.012815831, + -0.0046184086, + 0.00070680486, + -0.037862204, + -0.010649585, + 0.0037942934, + -0.034283187, + 0.002781809, + 0.021366445, + 0.027905548, + -0.0016145929, + 0.019711489, + -0.0048875073, + -0.006771199, + -0.00039986402, + 0.0074203997, + -0.00041079617, + -0.018635092, + 0.010441034, + 0.01922711, + 0.011470337, + -0.010615949, + -0.005778897, + -0.015553911, + 0.012042172, + 0.0047495943, + -0.008220969, + -0.0033418708, + -0.025228014, + -0.018460179, + -0.017114684, + 0.014571701, + 0.0043257633, + -0.0040196637, + 0.0049245083, + 0.029224131, + -0.004534315, + 0.033314433, + -0.005139787, + 0.014181508, + -0.0036799263, + 0.005957175, + 0.019240566, + -0.0011066688, + -0.012062354, + 0.002120835, + 0.005183516, + 0.012190176, + 0.038238943, + 0.01590374, + -0.0019795583, + -0.018608183, + 0.023048313, + -0.0031854573, + 0.018123806, + 0.0056208014, + -0.0056611663, + 0.01843327, + -0.021285716, + -0.0025766212, + -0.016213203, + -0.023236683, + -0.01933475, + -0.011295423, + 0.011793256, + 0.0017222324, + 0.024339987, + -0.011059961, + -0.009048448, + -0.010676496, + 0.009162814, + 0.013939318, + 0.0007496925, + 0.022792669, + 0.023707606, + -0.012082537, + -0.016576488, + -0.010911957, + 0.009297364, + -0.021837369, + 0.012230542, + 0.035870872, + -0.005462706, + -0.00909554, + -0.0059134467, + 0.003239277, + -0.0001609337, + -0.014235327, + 0.026506234, + 0.012546732, + 0.0048202327, + -0.0028793574, + 0.0012672872, + 0.002388252, + 0.026519688, + -0.026869517, + -0.0116721615, + -0.02736735, + -0.006744289, + -0.0014977031, + 0.005640984, + -0.022052648, + 0.03883096, + -0.0025093465, + -0.010286302, + 0.004265216, + -0.019792218, + -0.0004406493, + -0.0035016483, + 0.008584253, + 0.0039187516, + -0.004140758, + -0.008624617, + -0.0015128399, + -0.0059672664, + -0.006172454, + 0.018998377, + -0.015096444, + 0.021070438, + -0.010932139, + -0.005893264, + 0.0008152853, + -0.025833486, + 0.006566011, + 0.018917646, + 0.013515488, + -0.0024656178, + -0.015230993, + -0.010555401, + 0.0015355451, + 0.009061903, + -0.010609221, + 0.008947535, + -0.013071475, + -0.009916292, + -0.00256653, + -0.021137713, + 0.018796552, + -0.0023344322, + -0.020101681, + -0.013125295, + -0.008436248, + 0.029116493, + -0.015015714, + 0.009976839, + 0.021985373, + 0.012990746, + -0.0046520457, + 0.011160874, + 0.0006151431, + -0.0057856245, + -0.011140691, + 0.0047933226, + -0.008712074, + -0.0099902935, + 0.028955033, + -0.027636448, + -0.002921404, + -0.0034141913, + 0.009337729, + 0.0067812903, + 0.0065021003, + -0.0019021922, + 0.032614775, + -0.0035588318, + 0.0018567818, + -0.0031669566, + -0.011477064, + 0.020464964, + -0.0068889298, + -0.002312568, + 0.006730834, + -0.004369492, + 0.009727922, + 0.017706702, + -0.012876378, + -0.0044704042, + -0.016415028, + -0.019698033, + -0.0034326918, + 0.015594277, + -0.016065199, + -0.025577843, + -0.012883106, + 0.00928391, + -0.0071042087, + 0.02962778, + -0.015944105, + -0.0077029536, + -0.0011739436, + 0.003177048, + 0.010387214, + -0.0055266167, + -0.006592921, + -0.032641686, + -0.015836466, + 0.0037438374, + -0.029816149, + -0.006710652, + -0.01829872, + 0.023546146, + 0.0071983933, + -0.026465869, + -0.005116241, + 0.01486771, + -0.017975802, + 0.015352087, + 0.00008703665, + 0.01707432, + 0.020559149, + 0.008712074, + 0.015500092, + 0.022779215, + 0.009801924, + 0.021164622, + -0.03923461, + -0.012560187, + 0.018635092, + -0.015163718, + 0.0077164085, + 0.006340641, + -0.030246707, + -0.0015860011, + 0.01677831, + 0.010938867, + 0.0038178395, + -0.0014884528, + -0.024703272, + -0.00784423, + -0.02704443, + -0.014141142, + -0.02499928, + 0.012614007, + -0.00073623756, + -0.019267475, + -0.0015304995, + 0.010595766, + -0.017868161, + -0.012614007, + -0.005462706, + -0.0030626808, + 0.00079215964, + 0.0024336623, + -0.0018180988, + 0.016078655, + 0.017639427, + -0.050913494, + -0.0043762196, + 0.004080211, + 0.0028154464, + 0.0015473182, + -0.007857685, + -0.010030658, + -0.007063844, + -0.004964873, + -0.025968036, + -0.009337729, + -0.0027616266, + -0.017545242, + 0.0024740272, + -0.028847393, + -0.0017045728, + -0.03401409, + 0.0032813237, + -0.026479324, + 0.0007740796, + -0.012143084, + 0.011066689, + 0.01481389, + -0.027582629, + -0.017787432, + -0.0137105845, + -0.01590374, + -0.016334299, + 0.0070571164, + 0.007265668, + -0.014423696, + -0.016267024, + 0.00970774, + -0.025362564, + -0.03396027, + 0.00035130008, + 0.0040331185, + -0.0065727388, + 0.004127303, + 0.23917502, + -0.022119923, + 0.004927872, + 0.021527905, + 0.0017693248, + 0.015056078, + 0.0343101, + -0.018608183, + -0.010737043, + -0.00068998616, + -0.019603848, + 0.010528491, + -0.005398795, + 0.007904777, + -0.013912409, + -0.014881165, + -0.035817053, + -0.037593104, + -0.019092562, + -0.013246389, + 0.0009098904, + -0.008839896, + -0.006158999, + -0.008079692, + 0.028524475, + 0.0099902935, + -0.015163718, + -0.014046958, + 0.020908978, + 0.022079557, + 0.0055333446, + 0.0032527319, + -0.0054088864, + 0.03662435, + 0.00041668268, + -0.006438189, + -0.0123045435, + -0.027609538, + 0.007050389, + 0.012943653, + -0.025120374, + -0.004100393, + -0.02390943, + -0.008153694, + -0.010178663, + 0.016240114, + -0.0063843695, + -0.0023478873, + 0.019846037, + 0.014100778, + -0.019671123, + -0.010676496, + 0.03891169, + 0.031672932, + 0.0010461217, + -0.012398728, + 0.010017203, + 0.01486771, + 0.009230089, + -0.010017203, + -0.018648548, + 0.01712814, + 0.00797878, + 0.019321295, + -0.01710123, + -0.0034579197, + -0.044159114, + 0.022119923, + 0.00068115635, + 0.005462706, + 0.007232031, + -0.013602945, + -0.009808652, + -0.01313875, + -0.032318767, + -0.014585156, + 0.023330867, + 0.010609221, + 0.00792496, + 0.035440315, + -0.0043728556, + 0.0065727388, + 0.016119018, + -0.009734649, + -0.0036361977, + -0.02148754, + 0.023425052, + -0.0016532758, + -0.008476613, + -0.0063473685, + 0.0029129947, + 0.004204669, + -0.021649, + -0.013925863, + 0.024864731, + 0.013313664, + 0.0054862523, + 0.03406791, + 0.001156284, + 0.0027246254, + -0.024434172, + 0.031107822, + 0.000033584794, + -0.010992686, + -0.015271358, + 0.00368329, + 0.012614007, + -0.0041104844, + -0.010488126, + -0.012640917, + -0.009815379, + -0.03172675, + -0.00281881, + -0.0016448665, + 0.006394461, + 0.01031994, + 0.012990746, + -0.0030794996, + 0.0033855995, + -0.012741829, + -0.006895657, + 0.0025143921, + -0.0054896157, + 0.0096404655, + -0.0048706885, + 0.0001105828, + -0.0038043845, + 0.016132474, + 0.00092334533, + -0.03686654, + 0.014329512, + -0.014746615, + 0.017989255, + -0.004164304, + -0.034659926, + 0.04109139, + 0.0022856581, + -0.01571537, + -0.019819127, + -0.0067779263, + 0.015029169, + -0.015096444, + 0.0066097397, + -0.0019896494, + -0.024905095, + -0.006138817, + 0.01925402, + 0.000007647242, + -0.0005571186, + -0.008617889, + -0.0030895907, + -0.011584704, + -0.0065391012, + -0.041925594, + 0.022981038, + -0.019294385, + -0.0076625887, + -0.026627328, + -0.017733611, + 0.017881617, + -0.044051476, + -0.0055568907, + 0.021931553, + -0.014692795, + -0.020962797, + 0.013925863, + -0.17523715, + 0.02031696, + 0.019119471, + -0.020088227, + 0.0010208937, + 0.0092906365, + 0.010447761, + 0.0028675843, + 0.0021443812, + 0.0018887373, + 0.012533277, + -0.0027347167, + -0.024461083, + 0.0055568907, + 0.0012311271, + -0.024784, + -0.0048740525, + -0.00027057045, + 0.0037101998, + -0.007090754, + 0.0117461635, + -0.036139973, + 0.010030658, + -0.023317412, + -0.0060244496, + 0.010938867, + -0.013562581, + 0.021635545, + -0.017168505, + -0.01598447, + -0.0063440045, + -0.0011974897, + 0.028820483, + 0.0030172705, + 0.0072723953, + 0.010017203, + -0.009532825, + -0.009230089, + -0.006350732, + 0.030784905, + 0.012291089, + 0.016253568, + -0.003811112, + 0.008409338, + 0.005038875, + 0.029089581, + 0.025281833, + 0.0006916681, + 0.007911505, + 0.004507405, + 0.028147737, + -0.01819108, + 0.0026523052, + -0.008812986, + -0.009775015, + -0.0043661282, + 0.0012269224, + 0.017370328, + 0.0007459083, + -0.014800435, + -0.034740657, + -0.029869968, + -0.007837503, + -0.010447761, + 0.0036092878, + -0.027582629, + -0.019698033, + 0.0075549493, + -0.0135693075, + 0.0100642955, + -0.016253568, + -0.033583533, + -0.0055871643, + -0.0037572922, + 0.0058259894, + 0.014100778, + -0.0054929797, + 0.005321429, + 0.00027288301, + -0.00070554344, + -0.014316057, + 0.030219797, + -0.0029264495, + -0.005536708, + -0.0049312357, + 0.0045645884, + -0.005015329, + 0.020586058, + -0.009849017, + -0.017383784, + 0.0044502215, + -0.02047842, + -0.006428098, + -0.0012101037, + 0.011342515, + 0.022927219, + -0.0052507906, + 0.022671575, + -0.005859627, + -0.0067846538, + 0.0068014725, + -0.0071042087, + -0.015863376, + 0.022631211, + 0.028766664, + 0.030327436, + 0.01481389, + -0.0040499372, + 0.0057217134, + 0.014437151, + -0.024380352, + -0.025174195, + 0.015190628, + 0.035063576, + -0.020411145, + 0.0042853984, + 0.029358681, + -0.014612066, + 0.016482303, + -0.0029634507, + 0.057264227, + -0.0015725462, + 0.005499707, + 0.015325177, + -0.015607731, + -0.001993013, + -0.09219325, + -0.022456296, + 0.022254473, + 0.009297364, + -0.006798109, + 0.017410694, + -0.0016179567, + -0.0022133377, + 0.0012656053, + 0.013105112, + -0.010656313, + -0.003060999, + 0.026761876, + -0.018756187, + 0.04327109, + 0.0029029034, + -0.017612517, + -0.0064617353, + -0.020693699, + 0.023115588, + -0.0070436615, + 0.0045780437, + -0.0024992554, + -0.008059509, + -0.0021141076, + -0.0038481131, + -0.019846037, + 0.018554363, + 0.007945143, + 0.020868612, + 0.0007084867, + -0.00006837843, + 0.014033503, + -0.006418007, + -0.0012000125, + 0.012802376, + -0.014221872, + 0.015378998, + 0.024313077, + -0.015096444, + -0.014854254, + 0.0013042883, + 0.0204246, + -0.007783683, + -0.005577073, + -0.00027162163, + -0.0058461716, + 0.006969659, + 0.006387733, + -0.013858589, + -0.013367483, + -0.008974445, + 0.001727278, + -0.0038481131, + 0.0042853984, + -0.010723588, + 0.027770998, + 0.016159384, + -0.035063576, + -0.010925412, + -0.0032964605, + 0.007124391, + -0.021608636, + 0.016051745, + 0.017558698, + 0.0012075809, + -0.02992379, + -0.00017806773, + 0.0039523887, + -0.028981943, + -0.012842741, + 0.0074809473, + -0.007353125, + -0.007736591, + -0.01568846, + 0.00011720515, + -0.0069629317, + 0.009196452, + 0.006175818, + -0.0023462053, + -0.035225034, + -0.023155954, + -0.0025446657, + -0.02641205, + 0.02595458, + 0.035386495, + 0.0014623839, + -0.015405907, + 0.016374663, + -0.017222324, + -0.0121699935, + 0.010387214, + 0.021191532, + -0.022981038, + -0.018123806, + 0.021352991, + 0.022994494, + -0.004524224, + -0.017666338, + 0.024609087, + -0.024299623, + 0.0057250774, + -0.08847969, + 0.011006142, + 0.009189725, + -0.00853716, + 0.0039086603, + -0.028120827, + 0.017706702, + -0.0034511923, + 0.012768739, + 0.0062060915, + -0.026802242, + -0.0137778595, + 0.008187331, + 0.0024185255, + -0.03643598, + -0.026990611, + 0.022227563, + 0.01590374, + 0.016576488, + 0.017773977, + -0.013347302, + 0.0047933226, + -0.0010007112, + 0.0072051208, + -0.021016618, + 0.006734198, + 0.009055175, + 0.017208869, + -0.004480495, + 0.0034781022, + 0.029035762, + -0.03654362, + -0.01077068, + 0.015419362, + -0.011981625, + -0.03215731, + -0.015271358, + 0.030354347, + -0.0047529577, + 0.044239845, + -0.0046049533, + -0.006172454, + 0.028578294, + 0.005001874, + -0.005751987, + -0.021420266, + 0.016576488, + 0.011692343, + 0.026654238, + 0.008826441, + -0.003912024, + 0.026290955, + -0.016697582, + 0.0027919002, + -0.01617284, + -0.011927805, + 0.013239662, + 0.016267024, + -0.0005323111, + -0.023734516, + 0.024891641, + -0.00015820067, + -0.004742867, + 0.019711489, + 0.03624761, + -0.00006328027, + -0.015325177, + -0.0032039578, + -0.00022852376, + -0.01462552, + -0.024757091, + 0.0038043845, + 0.029331772, + 0.0055299806, + 0.010642858, + -0.00077702285, + 0.011174329, + 0.0024084344, + -0.020088227, + 0.017181959, + 0.01856782, + -0.014100778, + -0.032883875, + 0.02606222, + 0.032722417, + 0.0004662978, + -0.0058663543, + -0.006552556, + -0.00731276, + 0.03248023, + 0.0101988455, + 0.015971014, + 0.0021763367, + -0.011288695, + 0.011470337, + 0.017060865, + -0.00092418626, + -0.03584396, + -0.006996569, + 0.03673199, + -0.0008644799, + -0.004379583, + -0.008705347, + -0.026802242, + -0.04087611, + 0.008638072, + -0.015446272, + -0.03178057, + 0.008335336, + 0.02595458, + 0.010461217, + -0.0017390511, + -0.00077954563, + 0.018984921, + 0.0014321102, + 0.0042080325, + 0.010367032, + -0.018608183, + -0.016441938, + 0.0003891421, + 0.01566155, + 0.03616688, + 0.00851025, + -0.026317865, + 0.02063988, + -0.0029701781, + 0.013979684, + -0.019778762, + 0.0040331185, + 0.013925863, + 0.006606376, + -0.018608183, + -0.008066237, + -0.021649, + -0.0040331185, + -0.0031854573, + -0.016509213, + 0.018258354, + -0.018527454, + 0.037377827, + 0.010145025, + -0.028551385, + -0.005338248, + 0.0074136723, + 0.023317412, + 0.0075751315, + 0.03624761, + -0.02273885, + -0.0121699935, + 0.02497237, + 0.000634905, + 0.0033469165, + -0.0294125, + -0.023223227, + 0.0053819763, + -0.018608183, + -0.0026321227, + -0.01726269, + -0.007783683, + 0.03802366, + -0.0033485985, + 0.0053819763, + 0.0104141245, + -0.024649452, + -0.007063844, + 0.023317412, + 0.015056078, + 0.0021948372, + -0.021770094, + 0.014437151, + 0.010367032, + -0.0074002175, + -0.025376018, + 0.022644665, + 0.0027885365, + -0.01699359, + -0.014840799, + 0.030300526, + -0.0006176659, + -0.028928123, + 0.023815244, + -0.02957396, + -0.033395164, + 0.025066555, + -0.015917195, + -0.022510115, + -0.02404398, + -0.01063613 + ] + }, + { + "object": "embedding", + "index": 7, + "embedding": [ + 0.024549589, + -0.006144328, + -0.0028832944, + -0.013314444, + -0.0069968407, + 0.013993681, + -0.026268475, + -0.008857813, + -0.020072164, + -0.013064927, + 0.022997046, + 0.018325554, + 0.0039887885, + -0.021319743, + -0.0155808795, + -0.009024157, + 0.04932097, + -0.0061477935, + 0.014118439, + -0.011817348, + -0.004775456, + -0.005073489, + 0.0033060852, + 0.0011115585, + 0.008712262, + -0.009516258, + 0.008746917, + -0.013238203, + -0.0026129854, + -0.013737234, + -0.003250637, + -0.0150541235, + -0.025783306, + -0.0341005, + -0.020987056, + -0.01412537, + -0.01635715, + -0.0047823875, + 0.0049002143, + -0.0023201508, + 0.012392621, + -0.009620222, + -0.004837835, + 0.0061270003, + -0.009661809, + 0.038453165, + -0.0066468255, + -0.013245134, + -0.025603099, + 0.0003155769, + 0.02205443, + 0.0023704006, + -0.020113751, + -0.02108409, + -0.026074408, + -0.026254613, + -0.018256243, + 0.03276975, + 0.0028763635, + -0.018588932, + -0.0022144532, + -0.0104658045, + 0.0045952504, + 0.013210478, + 0.0078112325, + -0.01461054, + -0.009620222, + 0.005371522, + -0.017064113, + -0.0048828865, + 0.011172766, + 0.005461625, + 0.0011860667, + -0.02136133, + 0.022484152, + -0.0065393946, + -0.0055967793, + 0.0025783305, + -0.01183121, + 0.005752727, + 0.026434818, + -0.014305576, + -0.007617165, + 0.021444501, + -0.0032610337, + 0.0035937214, + -0.005260626, + 0.02991418, + -0.012344104, + 0.007825094, + 0.015123433, + 0.019046377, + -0.016066048, + -0.0027931915, + -0.031910308, + -0.0038848233, + -0.011706453, + 0.04502375, + 0.016897768, + -0.0039160126, + 0.014035267, + 0.006414637, + -0.022373255, + -0.022109877, + -0.006972582, + -0.0012137907, + -0.00049383345, + 0.0022387118, + 0.008365712, + 0.010382632, + -0.0013385486, + 0.033296507, + 0.01935134, + -0.05838671, + 0.00013656229, + -0.040144328, + -0.010410356, + 0.0024812967, + -0.011644074, + -0.036484763, + 0.023149528, + 0.033989605, + 0.010548976, + 0.0018107228, + 0.027973501, + -0.0084072985, + -0.010590562, + -0.03493222, + 0.0013082256, + 0.01926817, + 0.01092325, + 0.011789625, + 0.029110184, + 0.014915504, + -0.0037947204, + 0.005943329, + -0.027848743, + 0.013155031, + -0.022345532, + -0.015622465, + -0.007894404, + 0.03166079, + -0.020127613, + 0.0046160435, + 0.011054939, + 0.013064927, + 0.005874019, + 0.012697585, + 0.017868107, + -0.0040061157, + 0.03263113, + -0.011914383, + 0.007021099, + -0.0015586078, + 0.005655693, + 0.025007034, + -0.004896749, + 0.031078586, + 0.005558659, + 0.0073329937, + 0.005246764, + 0.006525533, + 0.012725309, + 0.0008650749, + 0.019947406, + 0.002574865, + 0.0043006833, + 0.02922108, + 0.007346856, + -0.010514321, + 0.0050076446, + 0.023856489, + -0.034849048, + 0.018769138, + 0.006986444, + 0.03590256, + 0.016856182, + -0.013681786, + -0.026753645, + -0.0056348997, + -0.00897564, + 0.014776884, + 0.020432577, + 0.01996127, + -0.01447192, + 0.022151463, + 0.022802977, + -0.0017474773, + -0.008116197, + -0.01962858, + -0.0022560393, + 0.0153175015, + 0.02999735, + -0.014291714, + -0.66404486, + -0.0057042097, + -0.010278667, + 0.011359903, + 0.0086984, + 0.016523495, + 0.010847009, + 0.013064927, + -0.019531546, + -0.013155031, + -0.006109673, + -0.012572827, + -0.004751198, + -0.000104181534, + -0.0065844464, + -0.023468353, + 0.005063093, + -0.01718887, + 0.009446948, + 0.017216595, + 0.0065324637, + 0.013300582, + 0.007755785, + -0.0040234434, + 0.00036907554, + 0.011477729, + 0.012468862, + -0.023343595, + -0.003002854, + 0.012115381, + -0.02247029, + 0.033712365, + -0.023204975, + -0.02894384, + 0.013016411, + 0.011456937, + -0.010313322, + 0.038591787, + 0.024826828, + 0.050651718, + -0.0024067883, + 0.005867088, + 0.010874732, + 0.0046437676, + -0.017507697, + -0.011117318, + 0.027266538, + -0.014291714, + 0.0006905005, + 0.0030704313, + 0.01064601, + -0.040809706, + -0.00018410459, + 0.013758027, + 0.03069045, + 0.0009781368, + 0.03673428, + 0.009211293, + 0.0022543066, + 0.008920192, + 0.0025384773, + -0.027807156, + -0.003569463, + -0.0084696775, + -0.006882479, + 0.0020637042, + -0.0155808795, + -0.011297524, + -0.0020637042, + -0.019739477, + -0.011630211, + 0.03437774, + -0.018006727, + -0.006702273, + 0.0109994905, + 0.0060576904, + 0.011678728, + -0.010119255, + -0.014929365, + -0.0026112527, + -0.021278158, + -0.01732749, + -0.034571808, + 0.009571706, + 0.007076547, + -0.01691163, + -0.031300377, + 0.017590867, + 0.0293597, + -0.015539293, + 0.016897768, + 0.021735603, + 0.009828152, + -0.0075686476, + -0.0016062583, + 0.0058636228, + -0.007880542, + -0.014028336, + 0.0028226483, + -0.0059052086, + 0.010174702, + -0.004924473, + 0.0062725516, + 0.010410356, + 0.02894384, + -0.002160738, + -0.016246255, + 0.020765264, + 0.025797168, + -0.013536235, + -0.0020844971, + -0.012004485, + -0.01940679, + -0.006546326, + -0.0024691673, + -0.028777495, + 0.023981247, + -0.0029370096, + 0.032326166, + -0.0023149527, + 0.008656814, + -0.014804607, + 0.010611355, + -0.021042503, + 0.0034187138, + 0.02366242, + 0.0004886352, + -0.01774335, + -0.0007715065, + 0.008372643, + 0.0007702069, + 0.016371014, + 0.0069829784, + -0.010687596, + -0.0006029967, + 0.012018347, + 0.020155337, + -0.011560901, + 0.012441138, + -0.008656814, + -0.01663439, + -0.013771889, + -0.01002222, + 0.004914076, + -0.006764652, + -0.034072775, + -0.014097646, + -0.009446948, + -0.035375804, + -0.00031406077, + -0.0009971971, + 0.011886658, + -0.01642646, + 0.013695648, + 0.010237081, + -0.011581695, + 0.016759148, + -0.014499644, + -0.029831007, + -0.0019285496, + 0.015636327, + -0.0038986853, + -0.012565896, + -0.00078017026, + 0.0029768627, + -0.0051947813, + 0.0058705537, + 0.019365203, + 0.004775456, + -0.037760068, + 0.01231638, + -0.013071858, + -0.01454123, + 0.021042503, + 0.006511671, + 0.009578637, + 0.013203547, + -0.007956783, + -0.002713485, + 0.008733055, + 0.019794924, + -0.017632455, + -0.02852798, + -0.0075270617, + 0.010555907, + -0.005378453, + 0.011505454, + 0.017798798, + -0.02380104, + 0.011713384, + 0.0137233725, + 0.010521252, + -0.010250943, + -0.003437774, + -0.0049903174, + 0.0011427479, + 0.00028265468, + 0.021319743, + -0.011983693, + 0.03193803, + 0.020072164, + 0.0014355825, + 0.02156926, + 0.0067854454, + 0.018783, + -0.039229438, + -0.010292529, + -0.007838957, + 0.03179941, + 0.019254306, + 0.00025428092, + -0.019808786, + -0.015081847, + 0.0009486801, + -0.000596932, + 0.02037713, + -0.0029959232, + 0.0058948123, + -0.004584854, + -0.0042209765, + 0.016509634, + -0.012011416, + -0.015830396, + 0.012940169, + -0.020501886, + 0.0144580575, + 0.029831007, + 0.03451636, + 0.012891653, + -0.035569873, + -0.019171136, + 0.008691469, + -0.005960657, + -0.003912547, + -0.0027308124, + -0.0006081949, + 0.023191113, + -0.02330201, + 0.01551157, + 0.009550912, + 0.033241056, + 0.017798798, + 0.026351647, + -0.008199369, + -0.00897564, + -0.022400979, + 0.0058151055, + 0.012718378, + -0.0095370505, + 0.01488778, + -0.011935175, + 0.015969016, + 0.008019162, + 0.01260055, + 0.0018211192, + 0.0033355418, + 0.019794924, + 0.007173581, + 0.018450312, + 0.02525655, + -0.008871675, + -0.011318317, + -0.0052710227, + 0.013425339, + 0.00077627157, + -0.008441953, + 0.007242891, + -0.028417084, + -0.016925493, + -0.019101825, + -0.014763022, + -0.010244012, + 0.024799105, + -0.004896749, + -0.003957599, + -0.02999735, + -0.01635715, + -0.008317195, + 0.0023028234, + 0.0029647336, + -0.017369077, + -0.045633677, + 0.003624911, + 0.021056365, + -0.01134604, + -0.010680665, + -0.023884213, + -0.0038189788, + -0.0040996843, + 0.0023738663, + 0.0056660892, + 0.020862298, + -0.011124249, + -0.004307614, + 0.009641016, + -0.028236877, + 0.032326166, + -0.011713384, + 0.002968199, + -0.0034412395, + -0.0065775155, + -0.02357925, + -0.0079429215, + -0.027141782, + 0.027918052, + 0.036512487, + -0.018796861, + -0.04216818, + -0.02400897, + -0.026393233, + 0.007845888, + 0.0068027726, + 0.0016487107, + 0.005142799, + -0.00723596, + -0.007915198, + -0.012642137, + -0.0012510448, + 0.032464787, + 0.0090726735, + -0.02073754, + -0.02407828, + -0.036318418, + -0.01064601, + 0.10180247, + 0.03263113, + 0.0059537254, + 0.007270615, + -0.004165529, + 0.007388442, + -0.008642952, + -0.0019285496, + 0.021804914, + 0.0007793039, + 0.012787688, + 0.01190052, + 0.009308328, + 0.0040303743, + 0.012954032, + 0.011401488, + -0.014527367, + -0.033435125, + -0.0033961881, + -0.010146978, + -0.0069344616, + -0.01990582, + -0.013508512, + 0.041585978, + -0.013792682, + 0.0012822343, + 0.021832637, + 0.023094079, + 0.0012250536, + -0.025658548, + -0.014236266, + 0.008005301, + -0.00995291, + 0.003860565, + -0.022997046, + 0.00967567, + 0.025298135, + 0.0008516461, + 0.019642442, + 0.0016209867, + 0.013155031, + 0.014596677, + -0.005343798, + -0.0053195395, + 0.027945776, + -0.0026667006, + -0.017979003, + 0.012489655, + -0.002444909, + -0.02366242, + 0.030939966, + -0.008039955, + -0.03598573, + -0.0012302519, + 0.0023218838, + 0.013023342, + 0.02080685, + 0.0056660892, + -0.023260422, + 0.001045714, + -0.001802059, + -0.035514425, + 0.007818163, + -0.01071532, + -0.010840078, + -0.03346285, + 0.007242891, + -0.0065671187, + -0.03199348, + -0.0011748038, + 0.0046056467, + -0.023981247, + -0.012143105, + 0.016343288, + 0.004969524, + -0.006206707, + 0.02567241, + -0.012753033, + -0.021333605, + 0.019600857, + -0.021181123, + -0.016176945, + -0.0052329022, + -0.008601367, + -0.021139538, + 0.03437774, + 0.006123535, + -0.01822852, + -0.014970952, + 0.011637143, + 0.026102131, + -0.01642646, + 0.007326063, + -0.0018332484, + -0.016246255, + -0.0017700031, + 0.016828459, + 0.019517684, + -0.022525737, + -0.019642442, + 0.034904495, + -0.029831007, + -0.017424524, + -0.008296402, + 0.029331975, + 0.019157274, + 0.00608888, + -0.0068027726, + -0.017369077, + 0.0017301498, + 0.03742738, + -0.019988993, + -0.00855978, + 0.008733055, + -0.002181531, + 0.014555092, + -0.014305576, + 0.019697892, + 0.015497707, + -0.035514425, + -0.023856489, + -0.00904495, + 0.0023010906, + 0.037676893, + -0.005052696, + -0.008289471, + -0.0018869637, + -0.011082663, + 0.009377638, + -0.00290582, + 0.0047962493, + 0.0347936, + 0.0077904398, + -0.012364897, + -0.024535727, + 0.0086706765, + -0.012856998, + 0.009100398, + -0.009211293, + -0.011644074, + -0.012545103, + 0.009051881, + -0.005364591, + -0.0059537254, + -0.023704007, + -0.04183549, + 0.015386811, + -0.013543166, + -0.0147214355, + 0.021208849, + -0.011228214, + 0.015816534, + -0.0047789216, + 0.016163083, + -0.03897992, + -0.022345532, + -0.007908267, + -0.005295281, + 0.0054928144, + 0.023066355, + 0.028472532, + -0.0062240344, + 0.003562532, + -0.0013342168, + 0.0066191014, + 0.003992254, + 0.027252676, + -0.0055136075, + -0.014707574, + 0.023676282, + 0.011997554, + -0.004182856, + -0.015691776, + -0.00038142139, + -0.012863928, + 0.015705638, + 0.020418715, + -0.01649577, + -0.0056452965, + -0.020307818, + -0.010361839, + -0.009966772, + -0.035514425, + 0.002479564, + -0.0061547244, + -0.008504332, + 0.025353584, + 0.0025020896, + 0.005101213, + -0.014596677, + 0.0327143, + -0.0045536645, + 0.00046914179, + 0.020058302, + 0.0014052595, + 0.0046576294, + 0.0047096116, + -0.0016556417, + -0.005122006, + 0.013889716, + 0.012489655, + -0.008913261, + -0.015123433, + -0.0011626746, + 0.008379574, + 0.020224646, + 0.010535114, + -0.013619407, + 0.019171136, + -0.025062481, + -0.011657936, + -0.010535114, + -0.013813475, + -0.018076038, + -0.018394863, + 0.023426767, + -0.029692387, + 0.017979003, + -0.013064927, + -0.03124493, + 0.0075339926, + 0.00883702, + 0.017105699, + 0.004217511, + 0.025020896, + 0.018020589, + 0.00018702859, + -0.014638264, + 0.017147284, + 0.006310672, + -0.023898074, + 0.028555704, + 0.017687902, + -0.0035937214, + -0.012170829, + -0.009516258, + 0.004363062, + -0.018810723, + -0.0033736622, + 0.03590256, + 0.017992865, + 0.00876771, + -0.0078112325, + -0.009141983, + -0.01781266, + 0.028583428, + -0.02219305, + -0.00995291, + -0.0096687395, + -0.02330201, + -0.012399552, + 0.018672103, + -0.02219305, + 0.004706146, + 0.007845888, + -0.021319743, + 0.011124249, + -0.018519621, + -0.013570891, + 0.011373765, + 0.016412599, + 0.017272042, + -0.027613088, + -0.0058151055, + 0.0076379576, + 0.0058497605, + -0.013459994, + -0.006615636, + -0.008053818, + 0.028500255, + -0.007478545, + 0.0007112935, + 0.0098836, + -0.02032168, + 0.03046866, + -0.0027931915, + -0.011852004, + -0.01892162, + -0.0068201004, + -0.01836714, + 0.0045536645, + 0.020224646, + -0.008199369, + -0.009550912, + -0.017563144, + -0.008989502, + -0.007915198, + -0.0048586284, + 0.010528183, + 0.0038155133, + -0.010036082, + -0.011145041, + -0.0073953727, + 0.014943227, + -0.0062794825, + -0.0019302825, + 0.008920192, + 0.028028948, + -0.02776557, + 0.0074369586, + 0.006650291, + 0.0018956275, + -0.029193355, + 0.009862808, + -0.008448884, + -0.010410356, + 0.019448375, + 0.018311692, + -0.020335542, + 0.008227092, + -0.0038536338, + 0.007984508, + 0.009876669, + 0.009446948, + 0.031965755, + 0.0014693711, + -0.020820713, + -0.0013515443, + -0.021070229, + 0.011845073, + -0.016038325, + 0.00828254, + 0.02344063, + -0.013557028, + 0.01711956, + 0.0024414433, + 0.019226583, + 0.037593722, + -0.016412599, + -0.012787688, + -0.00476506, + 0.0005271889, + -0.011470798, + -0.04632678, + -0.01705025, + -0.003583325, + -0.021680156, + 0.042057283, + -0.003583325, + 0.00042603965, + 0.012863928, + 0.019670166, + 0.01962858, + 0.009585568, + -0.0030271125, + -0.01795128, + -0.014638264, + -0.0061616553, + 0.0054165735, + -0.0100014275, + -0.007457752, + 0.026102131, + 0.01064601, + -0.02581103, + -0.006632963, + 0.0020810317, + -0.022373255, + 0.01962858, + -0.02227622, + 0.02073754, + 0.022096016, + 0.012392621, + 0.0016166548, + 0.00959943, + 0.013217409, + 0.0040130466, + -0.022165326, + -0.03102314, + -0.0034065845, + -0.029886454, + -0.0050007137, + -0.025824891, + -0.016870044, + -0.010957905, + 0.03041321, + -0.0050353687, + 0.0116648665, + 0.012080726, + -0.011172766, + 0.0035729285, + 0.0022629702, + 0.0014962287, + -0.00049340026, + 0.014139232, + 0.026975436, + -0.027280401, + 0.006137397, + 0.030219143, + 0.010902457, + -0.01677301, + -0.010978698, + 0.010084599, + -0.014104577, + 0.011041077, + -0.014305576, + 0.01935134, + 0.006650291, + -0.030357763, + 0.009294466, + -0.018173072, + -0.025492204, + 0.009661809, + -0.012496586, + -0.0017509429, + -0.012753033, + 0.013148099, + -0.029193355, + -0.011519316, + 0.023329733, + -0.006813169, + 0.0028347773, + -0.013626338, + -0.015691776, + -0.017424524, + 0.006868617, + -0.0036907555, + -0.014527367, + 0.0008711396, + 0.028444808, + 0.024161452, + -0.015594741, + -0.00765182, + 0.0016963613, + -0.027543778, + 0.014513506, + -0.014527367, + 0.0014832332, + -0.023482215, + -0.0013567425, + -0.00055924477, + -0.022913873, + -0.017105699, + -0.007478545, + -0.00821323, + -0.00849047, + 0.0015170218, + 0.20615555, + -0.010361839, + 0.005316074, + 0.03498767, + 0.006359189, + 0.020002855, + 0.010569769, + 0.022622772, + -0.0043388037, + 0.012822343, + -0.024410969, + 0.0005024972, + 0.014832332, + 0.013494649, + 0.01767404, + -0.011470798, + -0.022844562, + -0.037593722, + -0.026628887, + 0.025575375, + 0.013688717, + 0.0070938743, + -0.014132301, + -0.016537357, + 0.0015768016, + 0.008393437, + -0.02414759, + -0.017992865, + 0.02894384, + 0.011096525, + 0.00946081, + 0.011359903, + -0.025436755, + -0.00009031954, + -0.00029478394, + 0.019850373, + -0.0025696668, + 0.032880645, + 0.019947406, + 0.0016833657, + -0.0060854144, + -0.0077141984, + -0.014665987, + 0.0013550097, + -0.0038813578, + -0.011158904, + -0.0043388037, + 0.008455815, + -0.0034741617, + 0.027557641, + -0.033157885, + -0.008739986, + 0.020488024, + 0.026310062, + 0.0031154826, + -0.02324656, + 0.035597596, + 0.030108247, + 0.0028295792, + -0.015456121, + -0.02269208, + 0.01948996, + -0.0048482316, + 0.010722251, + -0.0019770667, + 0.020404853, + -0.023204975, + -0.003694221, + 0.012288656, + -0.0045536645, + -0.00062812155, + -0.013709511, + -0.0017492102, + 0.0068720826, + -0.02547834, + -0.017771075, + 0.027931914, + -0.01120742, + 0.0008572776, + 0.022345532, + 0.0006632097, + -0.0056452965, + -0.0043318723, + 0.003203853, + 0.0029907248, + -0.028153706, + 0.03645704, + 0.013356029, + -0.023981247, + 0.00026294467, + -0.0057735196, + -0.0056868824, + 0.0048413007, + -0.012337173, + 0.0003433009, + 0.005402711, + 0.0015308837, + 0.041696873, + -0.02310794, + -0.009821221, + -0.016662115, + -0.02484069, + 0.021527674, + -0.0028191826, + 0.009232087, + 0.008150851, + -0.008296402, + 0.017881969, + -0.006979513, + -0.014943227, + -0.015705638, + -0.012413414, + 0.020931609, + -0.014790745, + 0.022082154, + 0.0040823566, + -0.005364591, + -0.011997554, + 0.0015048925, + -0.0125936195, + 0.017244319, + 0.0049972483, + 0.0010630415, + -0.0035365408, + 0.016398737, + -0.012579758, + -0.026115993, + 0.009627153, + -0.002236979, + -0.036346145, + 0.011699521, + -0.0011574763, + 0.01260055, + 0.011110387, + -0.039201714, + 0.007014168, + 0.0024466417, + 0.007173581, + -0.006736928, + 0.018214658, + 0.0016556417, + -0.021236572, + -0.0068304967, + 0.01467985, + 0.0013541434, + 0.006276017, + 0.024119867, + -0.0045813886, + -0.0063661197, + -0.010978698, + -0.012572827, + 0.00010591428, + -0.023080217, + -0.020501886, + 0.0293597, + 0.006234431, + -0.021860361, + -0.026129855, + 0.0113321785, + 0.0115955565, + -0.018048314, + -0.0001495579, + 0.025464479, + 0.007686475, + -0.0003125446, + -0.010424218, + -0.17987321, + 0.017105699, + 0.016967079, + -0.01537295, + 0.025228826, + 0.020723678, + 0.021194985, + -0.0026805627, + -0.013411477, + 0.0053126086, + 0.02129202, + -0.0075339926, + -0.027613088, + -0.008462747, + -0.020917745, + 0.0026476404, + 0.0013913974, + 0.013563959, + 0.018200796, + 0.009828152, + 0.02380104, + -0.03396188, + 0.023856489, + -0.000010633394, + -0.011865865, + 0.00019287663, + -0.011366834, + 0.00932219, + -0.0020255835, + -0.033379678, + -0.01635715, + 0.000749414, + 0.041336462, + 0.02533972, + 0.008532057, + 0.03227072, + 0.0011921313, + 0.0057146065, + -0.015622465, + 0.010375701, + 0.00849047, + 0.006352258, + -0.0023946592, + -0.009433086, + -0.007901335, + 0.01621853, + 0.012704516, + -0.0065948428, + -0.0037704618, + 0.003167465, + -0.007048823, + -0.02636551, + -0.010743044, + -0.002940475, + 0.0076587508, + 0.013203547, + 0.0054512285, + 0.0013784019, + -0.0005761391, + 0.008871675, + -0.035874836, + -0.00025428092, + 0.017784936, + -0.021139538, + -0.011443075, + -0.011810417, + -0.02477138, + -0.013709511, + -0.021319743, + 0.016592804, + -0.012607482, + -0.015650189, + -0.0017076242, + -0.039700747, + -0.016010601, + 0.020765264, + -0.025921926, + 0.0051289373, + -0.008227092, + 0.0037704618, + -0.0067923763, + 0.046520844, + -0.013619407, + -0.0029040873, + 0.0058324332, + -0.005385384, + 0.0034568342, + 0.020418715, + -0.010847009, + -0.016939355, + 0.007346856, + -0.010382632, + -0.006546326, + -0.0097380495, + 0.023288148, + 0.016925493, + -0.016232394, + 0.027640812, + -0.013959026, + -0.016925493, + -0.00084731425, + -0.005551728, + -0.02136133, + 0.014090715, + 0.044053413, + 0.01447192, + -0.00060559576, + -0.0019372134, + 0.013605545, + -0.0006012639, + -0.019018654, + 0.0021018246, + 0.030856794, + 0.010763837, + -0.016010601, + 0.013515443, + 0.012323311, + -0.009135053, + 0.025145654, + -0.01760473, + 0.04410886, + -0.0073607177, + 0.0047026807, + 0.013113445, + 0.015109572, + -0.013418408, + -0.13895261, + -0.031272653, + 0.012129243, + 0.038647234, + 0.0032229132, + 0.02122271, + 0.008573642, + 0.0056314343, + 0.012940169, + 0.020862298, + -0.022816839, + -0.02212374, + 0.005447763, + 0.020973194, + 0.018741414, + -0.009377638, + -0.0021936602, + -0.023620835, + -0.012011416, + 0.022719806, + -0.0068998067, + -0.0014633066, + 0.0105767, + 0.006068087, + 0.008441953, + 0.008726124, + -0.020474162, + 0.021264296, + 0.012448069, + 0.0005076955, + 0.0013558761, + -0.023288148, + 0.019642442, + -0.036900625, + -0.0150264, + 0.024341658, + -0.009398431, + 0.000066169356, + 0.026102131, + -0.035375804, + 0.003411783, + -0.0036283764, + 0.024438692, + -0.02136133, + -0.007977577, + 0.0022733668, + -0.015650189, + 0.020224646, + 0.013903578, + -0.02073754, + -0.030302314, + 0.003527877, + -0.00959943, + -0.009356845, + 0.01940679, + -0.015469983, + -0.0005536133, + 0.024161452, + -0.004245235, + -0.0033060852, + 0.0023513404, + -0.009051881, + -0.0055274693, + 0.0034499033, + 0.0066260323, + 0.005343798, + -0.013321375, + -0.009211293, + 0.010458873, + -0.0014451126, + 0.0025367446, + 0.014901642, + -0.005420039, + 0.026670473, + -0.031050863, + -0.0069552544, + -0.015761085, + -0.0037600654, + 0.010950974, + -0.03069045, + -0.010978698, + -0.0155808795, + 0.006262155, + -0.0010517787, + 0.020196922, + 0.020890022, + 0.024854552, + 0.006137397, + 0.0030323109, + -0.0071943738, + 0.008608297, + -0.0058601573, + 0.023814902, + -0.0197672, + 0.008344919, + -0.00723596, + 0.012205484, + -0.021056365, + -0.007277546, + 0.02665661, + -0.02832005, + -0.02366242, + -0.10518479, + 0.017701764, + -0.0063487925, + -0.0024709, + 0.0029266132, + -0.002706554, + -0.0002720416, + -0.008109265, + 0.0049348692, + -0.037732344, + -0.03276975, + 0.013155031, + -0.0077141984, + 0.0068270313, + -0.031189483, + -0.014804607, + 0.026947713, + 0.018034453, + -0.0025280807, + -0.0100014275, + 0.00006822699, + 0.0013818673, + 0.012198553, + 0.016800735, + -0.024064418, + -0.005586383, + 0.011775763, + -0.0067750486, + -0.014160025, + 0.0057908474, + 0.0016253185, + -0.024549589, + 0.0033615332, + 0.040948324, + -0.004120477, + -0.01585812, + -0.03742738, + 0.01474916, + 0.012884722, + 0.0204603, + -0.023745593, + -0.026698196, + 0.025755582, + -0.017285904, + 0.014166956, + 0.021070229, + 0.0013264194, + 0.02400897, + 0.020903884, + 0.008220161, + -0.005822037, + 0.022068292, + 0.009897462, + -0.01843645, + -0.021264296, + -0.020931609, + 0.01642646, + 0.027640812, + 0.013965957, + -0.020987056, + 0.031633068, + 0.011962899, + 0.017355215, + -0.005402711, + 0.003238508, + -0.02170788, + -0.020557335, + -0.01405606, + -0.006255224, + -0.026060546, + -0.015733361, + -0.011644074, + 0.020432577, + 0.0064596883, + 0.034682706, + -0.006553257, + -0.00090622774, + -0.0044843545, + 0.0063765165, + 0.03160534, + -0.004879421, + 0.012829274, + -0.0456614, + 0.020820713, + 0.013563959, + 0.0033961881, + -0.014430334, + -0.016066048, + -0.021305881, + 0.020141475, + 0.019753339, + 0.010084599, + 0.02463276, + -0.010819285, + -0.003086026, + 0.01426399, + 0.019309755, + -0.019711753, + 0.0016504434, + 0.014638264, + 0.003673428, + -0.011290593, + -0.025977373, + -0.0016920294, + -0.018685965, + -0.013945164, + -0.026850678, + -0.022442566, + -0.0065740496, + 0.013702579, + 0.0093360515, + 0.021097952, + 0.008663745, + 0.02991418, + -0.0045605954, + 0.0057908474, + 0.00723596, + -0.014652126, + -0.026864542, + 0.017577006, + 0.046160433, + 0.019434514, + 0.028555704, + 0.0032575682, + 0.014180818, + 0.003694221, + -0.005489349, + -0.03681745, + 0.01767404, + -0.0073329937, + 0.0022491082, + -0.013861992, + -0.016454184, + -0.0030548365, + -0.008587504, + 0.0012934972, + 0.0026961574, + 0.018783, + -0.032242995, + 0.049431864, + -0.018519621, + -0.015885843, + -0.0016253185, + -0.005343798, + 0.017646316, + 0.00240159, + 0.018186934, + -0.032326166, + -0.005752727, + 0.007915198, + 0.0013454796, + 0.013758027, + -0.009065743, + -0.010535114, + -0.0056452965, + -0.040976048, + 0.0027117522, + -0.019850373, + 0.001718887, + 0.03415595, + 0.01495709, + 0.015899705, + 0.012552034, + -0.025686271, + -0.020474162, + 0.011498523, + 0.0055136075, + 0.00008230558, + -0.012053003, + 0.013314444, + -0.009751911, + -0.038924474, + -0.03096769, + -0.0020238508, + -0.0019891958, + -0.011165835, + -0.003458567, + 0.0043041487, + 0.014638264, + -0.0064388956, + 0.0429999, + -0.011290593, + -0.029526044, + 0.0103964945, + -0.0064354297, + -0.007346856, + -0.013584753, + -0.0008802365 + ] + }, + { + "object": "embedding", + "index": 8, + "embedding": [ + 0.009350771, + 0.009786559, + -0.01786732, + -0.019336548, + -0.015128078, + 0.021042347, + -0.0039781244, + 0.0101414155, + -0.0073212427, + -0.022760598, + -0.0052387975, + -0.017605845, + -0.0019626035, + 0.0015789543, + -0.0068294243, + -0.010309505, + 0.024877284, + -0.01834046, + 0.0199342, + -0.016559953, + -0.017232312, + 0.0049928883, + 0.010365535, + -0.020320185, + -0.01778016, + -0.009294741, + 0.020594107, + -0.017369274, + 0.01035931, + -0.012401288, + 0.0040870714, + -0.012606732, + -0.014517974, + -0.007065995, + -0.007651197, + 0.0016030782, + -0.010570978, + 0.0049493094, + 0.022013532, + -0.0120153045, + 0.010620782, + 0.007993601, + -0.0017664988, + -0.012899333, + -0.0125258, + 0.026396317, + 0.00578042, + 0.011237112, + -0.019423705, + 0.009051945, + 0.0015486047, + 0.024105316, + -0.026744947, + -0.0077508055, + -0.020145869, + 0.0050738202, + -0.003922094, + 0.0116417715, + 0.0064683426, + 0.0032559608, + -0.017070448, + -0.022038434, + -0.026744947, + 0.0040995223, + 0.0028481875, + 0.006848101, + -0.0024575344, + 0.02769123, + 0.011511035, + 0.014343659, + 0.026495926, + 0.0036699597, + 0.00774458, + 0.010919608, + 0.020195672, + 0.009649597, + -0.008118113, + 0.0014038607, + -0.015464257, + -0.0052387975, + 0.0093943495, + -0.025549643, + -0.011666674, + 0.019510863, + 0.011498584, + -0.00097429805, + -0.0026707593, + 0.030505178, + 0.0049306327, + 0.008746893, + -0.009425477, + 0.01035931, + -0.011897019, + 0.0026349626, + -0.017356824, + 0.007956249, + -0.008846502, + 0.043429412, + -0.021465685, + -0.015078274, + 0.0199342, + -0.01926184, + -0.024566006, + -0.006985063, + -0.02071862, + -0.0132853165, + -0.0037415535, + 0.01093206, + 0.0101414155, + -0.006356283, + -0.010440242, + 0.017443981, + 0.02482748, + -0.052543614, + 0.02017077, + -0.022810403, + -0.008566352, + -0.03314481, + -0.016522601, + -0.027591622, + 0.021814315, + 0.01790467, + 0.009356996, + -0.0040652817, + 0.031177538, + -0.013472083, + 0.0033337802, + -0.00677962, + -0.0057586306, + 0.0029633602, + 0.012637859, + 0.007912669, + 0.020320185, + 0.0034147121, + -0.030032037, + 0.014206697, + -0.014331208, + 0.029783014, + -0.0082737515, + -0.02928497, + -0.007850414, + 0.024640713, + -0.014704741, + 0.0032995397, + 0.0018754458, + 0.023818942, + -0.009313418, + -0.016908584, + 0.0019750546, + -0.00842939, + 0.019373901, + -0.0027719245, + 0.010197445, + -0.01810389, + 0.0039999136, + 0.0049991137, + 0.016211323, + 0.028986145, + -0.012488446, + 0.0039968006, + 0.0029898188, + 0.0067920713, + 0.023756685, + -0.0108947065, + 0.019734982, + -0.0012334364, + 0.020133417, + 0.02084313, + 0.01778016, + -0.013297767, + -0.002745466, + 0.004955535, + -0.043653533, + 0.015190333, + 0.02711848, + 0.036406998, + 0.008037181, + -0.003869177, + -0.012475995, + 0.0006050453, + -0.027143383, + 0.011125051, + 0.027641427, + 0.036382094, + -0.032024212, + -0.003925207, + 0.029608699, + -0.013721105, + 0.022710793, + -0.014493072, + 0.007346145, + 0.018016731, + 0.013982577, + -0.022486674, + -0.6984565, + -0.0059111565, + -0.009139102, + 0.017717905, + 0.010104062, + 0.01458023, + 0.009020817, + 0.0046069045, + -0.028388493, + 0.011430103, + -0.03292069, + 0.0051423013, + -0.001163399, + 0.013111001, + -0.005506496, + -0.006767169, + 0.0018380926, + 0.008958561, + 0.017693004, + -0.009008366, + 0.0046753855, + 0.03053008, + -0.00859748, + -0.012183394, + 0.023582371, + 0.0059329458, + 0.020569205, + -0.024279632, + 0.003336893, + 0.006935259, + -0.025699057, + 0.021702254, + 0.0033835846, + 0.012899333, + 0.04965496, + -0.011149954, + -0.023246191, + 0.017356824, + 0.012799724, + 0.030928515, + 0.0009065952, + 0.0019812803, + 0.009525086, + -0.016074361, + 0.0025664815, + 0.006848101, + 0.014268952, + 0.0048403624, + 0.008248849, + -0.011766283, + 0.0003920149, + -0.024429044, + -0.02482748, + -0.006848101, + -0.0125258, + 0.00035641255, + 0.019971553, + -0.009506409, + -0.00035193792, + 0.003772681, + -0.008995915, + 0.0022552041, + -0.010346858, + -0.022138044, + 0.011336721, + 0.019759884, + 0.008342233, + -0.0015447137, + 0.0029135558, + -0.006331381, + 0.0007684659, + 0.037652105, + -0.0044979574, + -0.009774108, + -0.014107089, + -0.008759344, + 0.02893634, + -0.03282108, + 0.0012847972, + -0.008989689, + 0.023171484, + 0.011654223, + -0.04532198, + 0.005627894, + 0.04009252, + -0.013297767, + -0.012233199, + -0.006673786, + 0.013982577, + 0.002146257, + 0.016983291, + 0.01697084, + -0.030032037, + -0.0020310846, + -0.0023299109, + 0.022723245, + 0.0016871231, + 0.01013519, + -0.0021431444, + -0.0039625606, + -0.0022396403, + -0.020606559, + -0.0058862544, + -0.008323556, + -0.0045882277, + 0.0023999482, + -0.010813775, + 0.030305961, + 0.023495212, + -0.033294223, + -0.017269665, + -0.009537538, + -0.0069663865, + 0.0025836017, + 0.017157607, + -0.025649251, + 0.008547676, + 0.022312358, + 0.025923176, + -0.0051018354, + 0.022598734, + 0.0012972483, + 0.025275718, + -0.014654936, + -0.010857353, + 0.008342233, + -0.0014287629, + -0.019797238, + -0.0106705865, + 0.007190506, + 0.0012995829, + 0.004575777, + 0.031725384, + -0.0058955927, + 0.040715072, + 0.018850954, + 0.023246191, + -0.010981864, + 0.00096495973, + -0.014156893, + -0.023183934, + -0.0084231645, + -0.0054753684, + -0.00407462, + 0.0051516397, + -0.038125247, + 0.0007918117, + 0.0003772292, + -0.03961938, + 0.0066613345, + -0.013945224, + 0.0020559868, + -0.02644612, + -0.009942198, + -0.010041807, + -0.004491732, + -0.0077757076, + 0.0044761677, + -0.01548916, + -0.006617756, + -0.0025649252, + 0.011535938, + -0.026371416, + -0.01179741, + 0.00016799248, + 0.004052831, + 0.013272865, + 0.014978665, + -0.00979901, + -0.0050738202, + -0.014293855, + -0.0068294243, + -0.011909471, + 0.0050738202, + 0.024976892, + -0.0064060874, + -0.005089384, + -0.008441841, + -0.0009680725, + 0.017307019, + 0.017282117, + -0.02061901, + -0.017369274, + -0.004404574, + 0.03406619, + -0.0075702644, + 0.0083484575, + 0.01926184, + -0.0064870194, + 0.0054442403, + -0.0014684508, + -0.0066675604, + 0.009668274, + 0.010048032, + 0.00016653337, + 0.013945224, + 0.0010521173, + -0.015053371, + 0.024690518, + 0.015289942, + 0.021889022, + 0.004270725, + 0.025213463, + 0.004874603, + 0.010956962, + -0.012314131, + 0.00037158732, + -0.021889022, + 0.028687319, + 0.0036326065, + 0.0273426, + -0.014667387, + -0.023868745, + 0.004980437, + -0.0076636476, + 0.040266834, + 0.0014559997, + 0.0114923585, + -0.02380649, + -0.016223773, + 0.0016559954, + -0.029434383, + -0.0012023087, + 0.011430103, + -0.03620778, + 0.024080414, + 0.0064496663, + 0.01947351, + -0.0015003567, + -0.013297767, + -0.025400229, + -0.0068605524, + -0.0023143468, + 0.015426904, + -0.03361795, + -0.0060574566, + 0.0071407016, + -0.019523313, + 0.026222002, + -0.010184994, + 0.00831733, + 0.0011462787, + 0.02096764, + -0.0153771, + 0.013272865, + -0.0068543265, + 0.03155107, + 0.011809861, + -0.014119539, + -0.0030007134, + -0.0018956789, + 0.009562439, + -0.0059329458, + -0.0047967834, + 0.010633233, + -0.021677352, + 0.017356824, + -0.0060792463, + 0.011093924, + 0.0062255464, + 0.0035796892, + -0.007651197, + 0.019099977, + 0.0071407016, + -0.0102908285, + 0.007134476, + 0.027641427, + 0.011000541, + -0.023208838, + -0.004146214, + 0.0007427855, + -0.017431531, + -0.003361795, + -0.008448066, + 0.027990056, + -0.017443981, + -0.0068543265, + -0.019448608, + 0.009649597, + 0.018191047, + 0.004924407, + -0.026396317, + -0.0057461793, + 0.019585568, + -0.010770195, + -0.031775188, + -0.026645338, + 0.008217721, + -0.005696375, + 0.02654573, + 0.015862692, + 0.03394168, + -0.0057150517, + -0.006574177, + -0.013472083, + -0.014368561, + 0.04245823, + -0.008522773, + 0.0058208858, + -0.009562439, + -0.011542163, + -0.022723245, + -0.000067702815, + -0.007153153, + 0.029783014, + -0.0033960356, + -0.00814924, + -0.009220035, + -0.0070535443, + -0.0041306503, + 0.014841703, + 0.007781933, + -0.0066800113, + 0.023507664, + 0.015825339, + 0.017929574, + -0.0080434065, + 0.015651023, + 0.008242624, + -0.0030972094, + -0.006574177, + -0.019884396, + -0.022511575, + -0.0117911855, + 0.09965855, + 0.0028326237, + -0.0015307063, + -0.0024948877, + 0.0051236246, + -0.007041093, + -0.0038505006, + 0.0007828625, + 0.0066800113, + 0.023731783, + 0.010116513, + -0.028438296, + -0.0016108601, + 0.023756685, + -0.0039625606, + -0.0019236938, + -0.017095352, + 0.00017830354, + 0.0058582393, + -0.0060201036, + 0.023818942, + -0.025823567, + 0.020980092, + 0.02517611, + -0.0072527616, + 0.0016917923, + 0.009637146, + 0.001219429, + 0.0041368757, + -0.0035392232, + -0.013347572, + 0.010004453, + -0.01037176, + 0.011890794, + 0.002588271, + -0.0022489787, + 0.027865546, + 0.011753832, + 0.022822853, + -0.009307192, + 0.0006536824, + 0.008292428, + 0.01778016, + -0.012164718, + 0.036954843, + -0.033792265, + -0.00032878667, + 0.013833164, + -0.020195672, + -0.007893993, + 0.025524741, + 0.006399862, + -0.021465685, + 0.0066239815, + -0.0041711163, + 0.011822313, + -0.00900214, + -0.010975638, + -0.012096236, + 0.0102908285, + -0.004379672, + -0.039818596, + 0.004224033, + -0.002849744, + -0.0055625257, + -0.021141956, + -0.018203499, + 0.016485248, + -0.016522601, + -0.0048528137, + 0.0091142, + -0.039818596, + -0.008553901, + 0.011977951, + 0.0041648904, + -0.019909298, + 0.021428332, + -0.011324269, + 0.0012295455, + 0.031775188, + -0.0114176525, + -0.0058831414, + -0.023632174, + -0.008267526, + -0.036157973, + 0.015314844, + 0.025524741, + -0.01400748, + -0.024553556, + 0.004507296, + 0.0072714384, + 0.0050177905, + 0.015887594, + 0.015464257, + -0.005643458, + -0.0055251727, + -0.006393636, + 0.02359482, + -0.009736755, + -0.012787272, + 0.014231599, + -0.02597298, + 0.009954649, + 0.0043734466, + 0.019996455, + 0.029982232, + 0.0109694125, + 0.013833164, + -0.033194613, + -0.00785664, + 0.021814315, + -0.038897216, + 0.030853808, + 0.022237653, + -0.015078274, + 0.022225201, + 0.0072527616, + 0.022088239, + 0.012158493, + 0.0033804718, + -0.010458918, + -0.02050695, + 0.008852727, + 0.010514948, + -0.004423251, + 0.009556214, + -0.0075951666, + -0.019311646, + -0.02277305, + 0.006010765, + -0.007893993, + 0.008914983, + -0.020071162, + -0.004765656, + -0.026969068, + 0.00054084434, + -0.00535397, + 0.010284603, + -0.009232486, + -0.013260414, + -0.007875317, + -0.0017073561, + 0.011286916, + -0.0073087914, + -0.042856663, + -0.017057998, + 0.006960161, + -0.000019102214, + -0.017356824, + 0.017630748, + -0.007999827, + 0.029907525, + -0.008410714, + 0.0017166944, + -0.008360909, + -0.015028469, + -0.0077757076, + -0.02689436, + 0.0070908973, + 0.01844007, + 0.027741035, + 0.00053033873, + 0.018751346, + -0.02119176, + -0.013322669, + -0.0052387975, + 0.0037104257, + 0.0031625775, + -0.015514062, + 0.012849528, + 0.019162232, + -0.008006053, + -0.004376559, + 0.026794752, + -0.013907871, + 0.020220576, + -0.023781588, + -0.011187307, + -0.0057866457, + -0.009761657, + -0.027492013, + -0.032621864, + -0.00024357451, + 0.006290915, + -0.011112601, + -0.0005914269, + 0.019660275, + 0.0031485702, + 0.0007330581, + 0.00010777977, + 0.009549988, + -0.004625581, + 0.028039861, + 0.007346145, + -0.01548916, + -0.018203499, + -0.011573291, + -0.009276064, + -0.013036294, + 0.022524027, + 0.0061664036, + -0.0070099654, + 0.0016155293, + 0.011604419, + 0.010278378, + 0.028562807, + 0.0222003, + 0.00700374, + 0.01571328, + -0.01834046, + -0.017892221, + -0.012283003, + -0.008410714, + -0.027890448, + -0.00450107, + 0.012538251, + -0.004245823, + 0.027267894, + -0.026047686, + -0.017518688, + 0.014754545, + 0.0027781501, + 0.012426191, + 0.00889008, + 0.032422647, + 0.009861265, + 0.017307019, + -0.022648538, + 0.02858771, + -0.0069539356, + -0.0079002185, + 0.023408055, + 0.032995395, + 0.0012217636, + -0.024528652, + -0.01719496, + 0.009257387, + 0.0062255464, + 0.00246376, + 0.029110655, + -0.0037353279, + -0.0050831586, + -0.01800428, + -0.012550701, + -0.02836359, + 0.015128078, + -0.006574177, + 0.0053633084, + -0.016734269, + -0.018539678, + -0.0115670655, + -0.0070099654, + -0.00752046, + 0.013845615, + -0.0060325544, + -0.014742094, + -0.0069228075, + 0.004009252, + -0.015887594, + 0.022760598, + 0.017493786, + 0.0069103567, + -0.013609044, + -0.0013330452, + 0.018203499, + 0.018415166, + -0.006110374, + 0.00037431097, + 0.0033991484, + 0.011847215, + -0.009593567, + -0.016771622, + 0.0033804718, + 0.0059889755, + 0.015563866, + 0.0032839759, + 0.008964787, + -0.0018536565, + 0.00350187, + -0.0046598217, + 0.0058582393, + 0.02084313, + -0.0011244894, + -0.012837077, + -0.02516366, + -0.014268952, + -0.011075247, + -0.009020817, + 0.030505178, + -0.010353084, + -0.0032466224, + -0.006785846, + -0.018066537, + 0.00837336, + -0.00063578394, + 0.0064434404, + 0.014194246, + 0.018938113, + -0.015140529, + 0.022262555, + 0.020519402, + 0.0159623, + -0.010346858, + 0.004958648, + -0.0040559433, + -0.0060574566, + 0.01765565, + -0.019062623, + -0.011523486, + -0.029982232, + -0.005064482, + 0.002423294, + -0.008753118, + -0.00046963966, + 0.034589138, + -0.0058551263, + -0.007128251, + -0.00635317, + -0.017443981, + 0.032646764, + -0.015140529, + 0.010321956, + 0.008585028, + -0.01685878, + -0.004834137, + 0.030380666, + -0.00046069044, + -0.0012388837, + -0.0025291282, + -0.019299194, + 0.011106375, + 0.021490587, + 0.0011844102, + -0.025997883, + -0.0056341197, + -0.014069735, + -0.0046971748, + 0.024541104, + -0.0033151035, + 0.0054847063, + 0.0122394245, + 0.020295281, + 0.04646748, + -0.00635317, + -0.015277491, + -0.025076501, + -0.0006015434, + -0.0042084693, + -0.036307387, + -0.017008193, + -0.01572573, + 0.013521887, + -0.0023345798, + -0.009817687, + -0.025524741, + 0.006505696, + -0.030256156, + -0.0058177733, + -0.007881542, + 0.014505523, + 0.014941311, + 0.0233458, + 0.007134476, + 0.008560127, + 0.009332094, + 0.024478849, + -0.004336093, + -0.006244223, + 0.028388493, + -0.022872658, + 0.0170829, + -0.017232312, + -0.018191047, + 0.011878342, + 0.01355924, + 0.0010980307, + 0.016460344, + 0.008684637, + -0.04046605, + -0.013086099, + -0.0120153045, + 0.013658849, + -0.008279976, + 0.01790467, + 0.000060066795, + -0.021278918, + 0.0008404488, + 0.018763797, + -0.010054258, + 0.0010139858, + 0.0055936533, + -0.00020719397, + -0.019050172, + 0.01628603, + -0.027716134, + -0.0043454315, + 0.022735696, + -0.030380666, + 0.0307542, + -0.009288515, + 0.0027190074, + 0.012656536, + -0.013833164, + -0.0033835846, + -0.010415339, + 0.004230259, + -0.01948596, + -0.02198863, + 0.025375327, + -0.018763797, + -0.001550161, + 0.011461231, + 0.011249563, + -0.03792603, + -0.0017353711, + 0.00535397, + -0.0075764903, + -0.0054131127, + 0.012027755, + 0.024167571, + -0.012787272, + -0.0068294243, + -0.0053352932, + -0.016547503, + -0.008778021, + -0.008242624, + 0.008435615, + -0.005024016, + -0.008553901, + 0.011934373, + -0.009039493, + -0.033767365, + -0.0041368757, + 0.0011104819, + 0.015078274, + -0.006505696, + 0.21395957, + -0.017394178, + -0.003489419, + 0.029758113, + 0.0016855667, + 0.028114568, + 0.032173626, + 0.0016248677, + -0.0023968355, + 0.0039999136, + -0.04044115, + 0.015588769, + -0.010340633, + -0.002331467, + -0.0099982275, + -0.009898619, + -0.02243687, + -0.05174674, + -0.012812175, + -0.016236225, + -0.010508723, + -0.006549275, + 0.0019221375, + -0.009531312, + 0.024105316, + 0.014704741, + -0.009008366, + -0.008634833, + 0.017244764, + 0.003405374, + 0.0043454315, + -0.0018178596, + -0.017406628, + 0.004553987, + -0.0028995483, + -0.0056683603, + -0.014804349, + -0.008279976, + 0.009693176, + 0.031177538, + -0.010602105, + -0.0055220597, + -0.000547459, + -0.008641059, + -0.016086813, + 0.016323382, + -0.009817687, + -0.0069663865, + -0.009556214, + 0.03212382, + -0.035410907, + -0.0040995223, + 0.01435611, + 0.02711848, + -0.0016077474, + -0.024902185, + 0.03543581, + 0.011915696, + -0.0056901495, + -0.0244913, + -0.019411255, + 0.003694862, + -0.01179741, + -0.004102635, + 0.0036077043, + 0.009792784, + -0.03394168, + -0.008186594, + 0.00842939, + 0.0027081128, + -0.0008957005, + -0.0020715506, + -0.013571692, + 0.00535397, + -0.021689804, + -0.047314152, + 0.023980806, + 0.00572439, + -0.0010684595, + 0.025948077, + 0.0018629947, + 0.003392923, + 0.02095519, + 0.007047319, + 0.008435615, + -0.023308447, + 0.008329781, + 0.012146041, + -0.009693176, + -0.015302394, + -0.0052823764, + -0.03259696, + -0.0018738895, + -0.008354683, + 0.015551415, + 0.007931346, + 0.019423705, + 0.026072588, + -0.014393464, + -0.006216208, + -0.016721819, + -0.013982577, + 0.018290656, + 0.008921208, + -0.002182054, + 0.0056652473, + 0.009680725, + -0.002339249, + -0.02699397, + -0.023420505, + 0.003349344, + -0.019075075, + -0.0031828107, + -0.006069908, + 0.005659022, + 0.011517261, + 0.008143015, + -0.009027042, + 0.01122466, + -0.018215949, + 0.0035610127, + -0.01697084, + 0.009076847, + 0.002182054, + 0.00963092, + -0.012861979, + -0.014443268, + 0.005627894, + -0.018938113, + -0.04360373, + 0.0030100518, + -0.0075702644, + 0.007165604, + -0.018626835, + -0.023706881, + 0.0069477097, + 0.008821599, + -0.009300967, + -0.013086099, + -0.0044730552, + 0.011349171, + -0.0005221677, + 0.014156893, + -0.0065679518, + -0.021241564, + -0.009325868, + 0.0029400142, + 0.0028248418, + -0.018315557, + 0.00768855, + -0.0060885847, + -0.0020388665, + -0.008099436, + -0.03040557, + 0.038324464, + -0.0067609437, + 0.0004435702, + -0.02644612, + 0.011012992, + 0.025076501, + -0.021428332, + -0.017580943, + 0.034140896, + -0.009780333, + -0.00870954, + 0.01719496, + -0.15857711, + 0.022001082, + 0.016522601, + 0.0043734466, + 0.017008193, + -0.003498757, + 0.0074021746, + 0.004507296, + -0.012283003, + -0.002568038, + 0.029434383, + 0.00074084004, + -0.026969068, + -0.019236939, + -0.020220576, + -0.02050695, + -0.0022567606, + 0.00067975186, + 0.0091142, + 0.008130563, + 0.024404142, + -0.026097491, + 0.02323374, + -0.007153153, + -0.002684767, + -0.010676812, + -0.017693004, + 0.018888308, + -0.018601933, + -0.015215236, + -0.022050885, + 0.0029804804, + 0.02004626, + -0.00027548044, + -0.0044574915, + 0.019535765, + 0.0029726985, + -0.006960161, + -0.016086813, + 0.0050395797, + 0.017580943, + 0.014281403, + -0.009145328, + 0.0018209723, + -0.00044084652, + 0.02574886, + 0.008006053, + -0.010639459, + -0.004189793, + 0.011915696, + 0.020033808, + -0.008441841, + 0.013521887, + -0.0015447137, + -0.0007704114, + 0.0067982967, + 0.005939171, + -0.011069022, + -0.0035454486, + -0.008883855, + -0.021963729, + -0.005587428, + 0.0009276064, + -0.01469229, + 0.00012460821, + -0.007962474, + -0.019286742, + 0.0041804546, + -0.009232486, + 0.01695839, + -0.009294741, + -0.024155121, + 0.020096064, + -0.014903958, + 0.02439169, + 0.011131277, + -0.013609044, + 0.021590196, + 0.017344372, + 0.0010015348, + 0.0061165993, + 0.05772327, + -0.012077561, + 0.033792265, + -0.0030380667, + -0.0035298849, + -0.0046878364, + 0.006823199, + -0.02312168, + -0.0040279287, + 0.017892221, + -0.009039493, + -0.023457859, + -0.008852727, + 0.00086146, + 0.019336548, + -0.0011190419, + 0.018016731, + -0.018191047, + -0.010832451, + 0.016310932, + 0.0018443181, + -0.020755973, + 0.014667387, + 0.052792635, + 0.025599448, + 0.019236939, + -0.00009931692, + 0.010303279, + 0.0273426, + -0.033294223, + -0.017605845, + -0.00025446923, + 0.026122393, + -0.020071162, + -0.009973326, + 0.020282831, + -0.028438296, + 0.018850954, + -0.011511035, + 0.05184635, + 0.006574177, + -0.00450107, + 0.009294741, + -0.02232481, + -0.009076847, + -0.073063016, + -0.030828906, + 0.00889008, + 0.011025443, + -0.01309855, + 0.018502325, + -0.0023034522, + -0.014991116, + 0.013073647, + 0.008591254, + -0.017506236, + -0.011872117, + 0.012812175, + -0.005481594, + 0.04350412, + -0.00046730507, + -0.0043018525, + -0.014854154, + 0.0006136054, + 0.0027999396, + -0.016609758, + 0.009736755, + 0.0008567908, + -0.0020217462, + -0.021714706, + 0.0005034911, + -0.029484188, + 0.003990575, + 0.0054566916, + 0.02232481, + -0.007389724, + -0.023408055, + -0.0009618469, + -0.009942198, + -0.0033835846, + 0.0066924626, + -0.013360023, + 0.006371847, + 0.023632174, + -0.021328723, + -0.0153895505, + 0.008877629, + 0.01019122, + -0.022872658, + -0.008784246, + -0.014679839, + -0.0061290506, + 0.021839216, + 0.0045664385, + -0.008678412, + 0.0042489353, + -0.0012591168, + -0.015738182, + -0.019734982, + 0.00837336, + -0.016833877, + 0.008553901, + 0.022710793, + -0.006371847, + 0.017232312, + -0.016846329, + 0.00013355743, + -0.028438296, + 0.035933856, + -0.0053477446, + 0.005546962, + -0.024242278, + -0.0027236766, + 0.0188136, + -0.016945938, + -0.0092449365, + -0.012656536, + -0.025026698, + 0.0032279459, + -0.017580943, + 0.0039594476, + -0.0024668728, + 0.0066924626, + 0.0025991658, + -0.01604946, + -0.010377986, + -0.02562435, + 0.0010007566, + -0.011398976, + 0.028089665, + 0.012563153, + 0.0077881585, + -0.0025820455, + -0.0061197123, + -0.009960874, + 0.0018738895, + 0.0074208514, + 0.025948077, + -0.014829252, + -0.010060484, + 0.035037376, + -0.0010894707, + -0.012774821, + 0.014966214, + 0.013360023, + -0.020195672, + -0.020369988, + -0.08611176, + 0.015165431, + 0.0094690565, + -0.01150481, + 0.02117931, + 0.0109694125, + 0.017481335, + -0.0013789586, + -0.005929833, + 0.007221634, + -0.04908221, + -0.008622382, + -0.0153895505, + 0.016024556, + -0.012220748, + -0.012283003, + 0.021503037, + 0.025823567, + -0.009437929, + 0.021789413, + 0.007701001, + -0.0096184695, + 0.00214937, + 0.00050504744, + -0.013584143, + 0.004939971, + -0.010508723, + 0.02744221, + -0.027018871, + -0.008952335, + 0.030106742, + -0.034265406, + -0.0049773245, + 0.02368198, + 0.009805236, + -0.021390978, + 0.00883405, + 0.0035454486, + -0.003486306, + 0.019984005, + -0.006586628, + -0.020681266, + 0.016759172, + -0.013633947, + -0.0070535443, + -0.014791898, + 0.0159623, + 0.012812175, + 0.00876557, + 0.021042347, + 0.0016731157, + 0.035037376, + -0.007234085, + -0.008759344, + -0.011069022, + -0.016896132, + 0.016659562, + 0.017929574, + 0.009724304, + -0.027765937, + 0.014430817, + -0.015787985, + -0.0064683426, + 0.016659562, + 0.02756672, + -0.022387065, + -0.017506236, + 0.005136076, + 0.018987916, + -0.027392404, + -0.01733192, + -0.012594281, + 0.022287456, + 0.009431703, + 0.021602646, + 0.013945224, + 0.020245478, + -0.008124338, + -0.03907153, + 0.026520828, + 0.00017139707, + 0.0072527616, + -0.031376753, + 0.0097678825, + 0.024989344, + -0.0009073734, + -0.020980092, + -0.020942738, + -0.007109574, + 0.02836359, + -0.0076138433, + -0.0033244418, + 0.01799183, + -0.0011307149, + 0.0013875187, + 0.0076823244, + -0.007277664, + 0.0027548042, + -0.00780061, + 0.03658131, + 0.01832801, + 0.0019174683, + -0.023719331, + -0.02836359, + -0.016896132, + 0.026969068, + 0.012270552, + -0.023669528, + -0.006561726, + 0.029085753, + 0.01662221, + -0.00046224683, + 0.0034489527, + 0.021764511, + -0.005789758, + 0.0082737515, + -0.0028404056, + -0.011517261, + -0.027516916, + 0.003402261, + 0.03269657, + 0.019909298, + 0.022710793, + -0.010209897, + 0.017805062, + 0.0077508055, + 0.005257474, + -0.031600874, + -0.004230259, + 0.0016653336, + -0.0009065952, + 0.006200644, + -0.016572405, + -0.024092864, + -0.007427077, + -0.011031669, + 0.022872658, + 0.011704028, + -0.016024556, + 0.043354705, + -0.008080759, + -0.010745293, + 0.0069228075, + -0.01606191, + 0.027940253, + 0.0056092176, + 0.01926184, + -0.027168285, + -0.03259696, + -0.00313145, + 0.0011571734, + -0.0026707593, + -0.034614038, + -0.0025633688, + -0.004448153, + -0.018527227, + 0.009176455, + -0.015787985, + 0.016149068, + 0.021664903, + 0.007551588, + -0.013708653, + 0.012924234, + -0.011436329, + 0.008385811, + 0.017170057, + 0.0210797, + -0.010900932, + -0.020008907, + 0.012924234, + 0.007862865, + -0.020183222, + -0.008958561, + 0.018489873, + -0.029608699, + -0.0074208514, + -0.013061197, + 0.02597298, + 0.009419252, + -0.018016731, + 0.02676985, + -0.02244932, + -0.05433657, + 0.0012054214, + 0.0016824539, + -0.009960874, + 0.0033711335, + -0.017344372 + ] + }, + { + "object": "embedding", + "index": 9, + "embedding": [ + -0.008189119, + -0.0015157744, + 0.0074148276, + -0.034777507, + -0.021128977, + 0.0044751437, + -0.019960977, + 0.020341562, + -0.017729968, + -0.0353287, + 0.022835044, + -0.0058432776, + 0.012998914, + 0.0019521337, + -0.010229837, + -0.01561707, + 0.016115766, + -0.011404398, + 0.008445029, + -0.0051181996, + -0.008208805, + 0.027297063, + -0.010879455, + -0.008215366, + 0.0019783808, + 0.0065093, + -0.002918358, + -0.016535722, + 0.0061976146, + -0.024475493, + 0.013307318, + -0.028793152, + -0.024449244, + -0.037244745, + 0.011791544, + -0.011798106, + -0.015984531, + -0.008733748, + 0.006151682, + -0.009494917, + 0.012887363, + -0.011023814, + -0.003313706, + -0.010026421, + -0.021404572, + 0.015722059, + -0.0073098387, + -0.003343234, + -0.028688164, + 0.006670064, + 0.021535808, + 0.022441337, + -0.0248692, + 0.0019258866, + -0.025590997, + -0.013806015, + -0.015577699, + -0.0004457919, + -0.017323136, + -0.010761342, + -0.0062993225, + -0.01956727, + -0.015630193, + 0.024081785, + 0.0025951895, + -0.018438641, + -0.0024196615, + 0.0134385545, + 0.0038714586, + 0.02171954, + 0.030525466, + -0.0061352775, + 0.012847993, + -0.0032087173, + 0.014212846, + 0.0012319769, + -0.019829743, + 0.013333566, + -0.0075263777, + 0.0059023337, + 0.004183144, + -0.042940382, + -0.030079264, + 0.026247177, + 0.017415002, + 0.009199635, + -0.031549107, + 0.023950549, + -0.006975187, + -0.0041929865, + 0.022034505, + 0.021916393, + 0.022467583, + 0.0011507747, + -0.032756478, + 0.014147229, + -0.0021407853, + 0.037717193, + -0.014186599, + -0.012231184, + 0.011955589, + -0.005836716, + -0.010846646, + -0.02040718, + -0.0014239093, + 0.008930602, + -0.02175891, + -0.034357555, + 0.013543543, + -0.016378239, + -0.013451678, + 0.014750914, + 0.0056398623, + -0.041234314, + -0.002867504, + -0.023071269, + 0.003335032, + -0.0158008, + -0.025840346, + -0.038609598, + 0.020538416, + 0.021772033, + 0.010754781, + -0.020367809, + 0.037795935, + 0.0056004915, + -0.00057210645, + -0.019304799, + -0.008504085, + 0.0029298412, + 0.021207718, + -0.0065093, + -0.0076576136, + 0.0034711892, + -0.013327004, + 0.023058144, + -0.033412658, + 0.009711456, + -0.018123675, + -0.035197463, + 0.0015379206, + 0.028241962, + -0.0060926257, + 0.020748394, + -0.007040805, + 0.020039719, + 0.0023310774, + 0.004842604, + 0.013195768, + -0.025407268, + 0.018661743, + -0.022808796, + 0.0075066923, + 0.0073229624, + 0.0025361334, + 0.012559274, + 0.012847993, + 0.019409787, + 0.007972579, + 0.0030331893, + -0.0024311447, + -0.007106423, + 0.030997915, + -0.034278814, + 0.020328438, + 0.016207632, + 0.012008083, + -0.0034908745, + 0.0060335696, + -0.016430732, + -0.010347949, + 0.020275945, + -0.018254912, + 0.02077464, + 0.013792891, + 0.009914871, + 0.0066208504, + 0.022716932, + -0.022231359, + -0.0051542893, + 0.007244221, + 0.008655006, + 0.007841344, + 0.028688164, + 0.0038124025, + 0.0062665134, + 0.025761604, + -0.017139407, + -0.00019572601, + -0.02282192, + -0.004406245, + 0.02398992, + 0.023635583, + -0.010846646, + -0.6702479, + -0.016666956, + -0.011286286, + -0.0068701985, + 0.017454373, + 0.0113847125, + 0.022401966, + 0.017651226, + -0.02165392, + -0.013117027, + -0.011732488, + 0.0056004915, + 0.0064469627, + -0.012933296, + -0.013963498, + -0.0033547173, + 0.01459343, + -0.0063583786, + -0.029370591, + 0.0076641757, + -0.013451678, + -0.0011868646, + -0.0036253913, + -0.004334065, + 0.024436122, + 0.0033924475, + 0.0030594366, + -0.0072639063, + -0.010525118, + 0.0064141536, + -0.03566991, + 0.016614463, + 0.018044934, + -0.0039042674, + 0.047271166, + 0.0016666957, + -0.023740571, + -0.0036549193, + 0.024344256, + 0.009389928, + 0.0054397276, + -0.0039436384, + 0.009055276, + -0.010420129, + -0.001067932, + 0.008864984, + 0.014068487, + -0.006830828, + 0.015564576, + 0.018569877, + 0.017861204, + 0.0023720886, + -0.013215453, + -0.005255997, + 0.007165479, + -0.0031102905, + 0.008733748, + 0.0010654713, + 0.019659135, + -0.009245568, + -0.004215953, + -0.005095233, + -0.036116116, + -0.008727186, + -0.01232305, + 0.014094734, + -0.010288893, + 0.0016552126, + -0.00054914015, + -0.009265253, + 0.008438467, + 0.035092477, + -0.018189294, + -0.001996426, + 0.01748062, + 0.019002955, + 0.015498958, + -0.006817704, + 0.006214019, + -0.0067783333, + 0.018373024, + 0.004275009, + -0.008536894, + 0.014107858, + 0.011620938, + -0.027218321, + -0.033412658, + 0.008641883, + 0.0015239767, + -0.0006393648, + 0.01057105, + 0.024724841, + -0.01700817, + 0.001861909, + -0.014002869, + 0.01085977, + 0.013884757, + 0.020827135, + 0.013832262, + -0.008943725, + -0.011030376, + -0.024987312, + -0.011305971, + 0.0008915838, + 0.0012877521, + 0.008038198, + 0.009245568, + 0.01155532, + 0.025039807, + -0.043622807, + 0.004199548, + -0.02128646, + -0.048583522, + -0.008674691, + 0.025722234, + -0.029239355, + 0.022428213, + -0.0057875025, + 0.016338868, + -0.014882149, + -0.0033727621, + -0.007447636, + 0.012054016, + -0.008333478, + 0.018228665, + 0.009501478, + 0.008661568, + -0.017205024, + -0.009258691, + 0.001945572, + -0.0033104252, + 0.018386148, + 0.014724666, + 0.001847145, + 0.023740571, + 0.0032497286, + 0.005416761, + -0.0147377895, + 0.0049508736, + -0.019331045, + -0.023228751, + -0.0043110987, + -0.012716757, + -0.008976534, + -0.0056234575, + -0.020538416, + -0.012382106, + -0.023058144, + -0.041890495, + 0.011647184, + -0.021496437, + -0.010282331, + -0.0408931, + 0.009711456, + -0.00541348, + -0.015328351, + 0.004275009, + -0.02194264, + 0.0049279076, + -0.0041503347, + 0.021181472, + 0.021968886, + -0.03162785, + -0.003251369, + 0.022362594, + -0.0034875935, + 0.023136886, + 0.016430732, + -0.0013189206, + -0.010708848, + -0.00113355, + -0.009567096, + 0.0021342235, + 0.0020948527, + 0.032231532, + 0.016443856, + -0.006243547, + -0.0026690098, + -0.0036221105, + -0.0005782581, + 0.00039739866, + -0.02161455, + -0.01389788, + 0.00892404, + 0.009718017, + 0.005160851, + 0.01631262, + 0.019751001, + -0.022769425, + 0.00041236775, + -0.016811317, + 0.0034318184, + -0.014829655, + 0.005761255, + -0.0048918175, + -0.00039657843, + -0.0082481755, + 0.005964671, + 0.0003272695, + 0.022113247, + 0.025315402, + -0.010892578, + 0.0017733249, + -0.005679233, + -0.006670064, + -0.031549107, + 0.012624892, + -0.02161455, + 0.021010865, + 0.0066339737, + 0.014291587, + -0.024344256, + 0.0053445813, + 0.015236486, + 0.021955764, + 0.04047315, + -0.01013141, + 0.0011868646, + 0.014396576, + 0.01013141, + -0.010807275, + -0.022953156, + -0.0036811666, + 0.0059056147, + -0.012099949, + 0.015669564, + 0.006177929, + 0.027769513, + -0.004809795, + -0.023556842, + -0.022283852, + 0.008385973, + 0.010052669, + 0.008169434, + -0.01645698, + -0.0076379282, + 0.011719365, + -0.028556928, + 0.019698506, + -0.0035597733, + 0.02556475, + -0.010741657, + 0.033780117, + 0.0023671673, + -0.005446289, + -0.00314474, + 0.032940205, + 0.005767817, + -0.024987312, + 0.02673275, + -0.014252217, + -0.00438984, + 0.00043758965, + -0.004685121, + 0.010183904, + -0.016443856, + 0.03262524, + -0.008490962, + 0.005797345, + 0.037061013, + -0.0019586955, + -0.0102495225, + 0.014803408, + 0.002326156, + 0.00047942108, + -0.018438641, + 0.029738052, + -0.010623544, + -0.007677299, + -0.010374197, + -0.010052669, + -0.01232305, + 0.031286635, + -0.021877022, + 0.011588128, + -0.028530682, + -0.004078155, + -0.013248262, + -0.0003565925, + -0.00917995, + -0.014422824, + -0.023097515, + 0.014449071, + 0.009173389, + -0.0076116812, + -0.017454373, + -0.0017536395, + 0.0048196376, + -0.008359726, + 0.051234487, + 0.0031004478, + 0.03236277, + -0.0054955026, + -0.00259683, + -0.0030692792, + -0.0050394577, + 0.029318096, + -0.017834956, + -0.010223275, + -0.017401878, + 0.018281158, + -0.010649792, + -0.008162872, + 0.0011745611, + 0.05141822, + 0.007139232, + 0.00053642667, + -0.0068964455, + -0.005922019, + -0.009501478, + 0.008930602, + 0.0059909183, + -0.005101795, + -0.0030988073, + -0.011102555, + -0.018858597, + -0.006975187, + 0.009875501, + 0.015643317, + -0.009534287, + -0.005236312, + -0.030840432, + -0.017992439, + -0.016155137, + 0.10467374, + -0.0028100885, + -0.0047376156, + 0.004537481, + 0.0029052345, + 0.014278464, + 0.00071441534, + 0.005823592, + 0.015971407, + -0.0052428734, + 0.009823006, + -0.033727624, + 0.016391361, + 0.0060795024, + -0.0020981338, + -0.008353164, + -0.0046916828, + -0.033045195, + 0.019790372, + -0.012841431, + 0.009527725, + -0.0100854775, + 0.011673432, + 0.02658839, + -0.0066799065, + -0.007769164, + 0.03968573, + 0.012441162, + 0.021811403, + -0.008733748, + -0.005987637, + 0.022467583, + 0.0029462455, + 0.01872736, + 0.00003957582, + -0.020656528, + 0.030919174, + 0.006889884, + 0.0063911877, + -0.011811229, + 0.025105424, + -0.007112985, + -0.0027608748, + -0.017113158, + 0.011483139, + -0.0010613702, + -0.02333374, + 0.013208891, + -0.029711803, + -0.0043110987, + 0.048216064, + -0.008792805, + -0.0054659746, + -0.00009171133, + -0.0024295042, + 0.015315227, + -0.0067061535, + -0.021168347, + 0.005003368, + -0.0070736143, + -0.016653834, + -0.023976795, + -0.0074082655, + -0.011679994, + -0.018792978, + -0.03698227, + -0.012375544, + -0.0032661331, + -0.042546675, + -0.030892927, + 0.01085977, + -0.029921781, + -0.004048627, + -0.0011286286, + 0.024173649, + -0.025932211, + 0.020249696, + 0.004275009, + 0.009737702, + 0.022743179, + -0.0014255497, + -0.029134367, + 0.0066372547, + 0.011732488, + 0.0022277292, + 0.022913786, + 0.026772121, + -0.031470366, + -0.0019111226, + 0.02040718, + 0.0015830329, + -0.007237659, + 0.021732662, + 0.012664263, + -0.009055276, + -0.023202505, + 0.006758648, + 0.025761604, + -0.010991005, + -0.016522598, + 0.022152618, + -0.02552538, + 0.007906962, + -0.008353164, + 0.015577699, + 0.014094734, + 0.009639275, + 0.023254998, + -0.025000436, + -0.0029380433, + 0.028005738, + -0.03013176, + 0.0069555016, + 0.009632714, + -0.01846489, + 0.026798368, + 0.008910917, + 0.009015905, + -0.01085977, + -0.00917995, + 0.025814097, + -0.025735356, + 0.01375352, + 0.03734973, + 0.001441134, + -0.00081612315, + -0.006128716, + 0.0008440108, + -0.019803494, + -0.0051444466, + -0.010485747, + 0.0017290327, + -0.012697072, + -0.018911092, + -0.028136974, + -0.00943586, + -0.011942466, + 0.011470016, + -0.007920085, + -0.022835044, + -0.0024114593, + -0.004911503, + 0.0072639063, + -0.0034547846, + -0.031732835, + -0.012979229, + 0.017401878, + 0.0037369418, + -0.027165828, + 0.012218061, + -0.017113158, + 0.007828221, + -0.022677561, + 0.0014435947, + -0.0143572055, + -0.018766731, + -0.028399445, + -0.013504173, + 0.017821833, + 0.010420129, + 0.027218321, + 0.0017257519, + 0.013235139, + 0.0030348299, + -0.017821833, + 0.0018635496, + -0.009711456, + 0.0151708685, + 0.001002314, + 0.016876934, + 0.027060838, + 0.013543543, + -0.015538328, + 0.0014362127, + -0.016063273, + 0.018609248, + 0.011804667, + -0.018123675, + -0.017100036, + -0.019029204, + -0.016719451, + 0.0028871894, + -0.012080263, + 0.0030331893, + -0.019396663, + -0.015288981, + 0.022664437, + -0.01210651, + -0.0021899987, + 0.006624131, + 0.009737702, + -0.01938354, + 0.010964758, + 0.020197202, + -0.016194507, + -0.013622285, + -0.015498958, + -0.0038681778, + 0.008425344, + 0.023753695, + 0.018661743, + 0.0017798867, + -0.016404485, + -0.0034219758, + -0.0004466121, + 0.015328351, + -0.00079233665, + -0.016653834, + 0.017953068, + -0.02779576, + -0.015420216, + -0.0022687404, + 0.0033990094, + -0.018058058, + -0.010452938, + 0.012585521, + -0.022362594, + 0.017467497, + -0.02750704, + -0.009514602, + -0.011076309, + -0.010964758, + 0.019737877, + -0.0053773904, + 0.018596124, + 0.013418869, + -0.013005476, + -0.013287633, + 0.017310012, + 0.0036910092, + -0.022585696, + 0.021824528, + 0.0021850774, + -0.010918826, + -0.022191988, + -0.0039305147, + -0.0026903355, + 0.009980489, + -0.0065617943, + 0.035984877, + 0.023740571, + 0.0031709871, + -0.03178533, + -0.02194264, + 0.0073360857, + 0.013235139, + -0.0086812535, + 0.008576265, + -0.0071851644, + -0.0023130325, + -0.01729689, + 0.007040805, + -0.02640466, + 0.019803494, + 0.009927995, + -0.025669739, + -0.009941118, + -0.012099949, + 0.0030988073, + -0.00097442645, + 0.0050525814, + 0.019357292, + 0.018819226, + 0.012401791, + -0.003946919, + -0.00030655882, + -0.032494005, + 0.01784808, + -0.019987226, + 0.020932123, + -0.014186599, + -0.013701026, + -0.002252336, + 0.0045834132, + 0.02644403, + 0.028583175, + 0.004527638, + -0.01960664, + -0.014580307, + 0.0027789199, + 0.024396751, + 0.0030610769, + -0.003269414, + -0.00837285, + -0.021640796, + -0.014514688, + -0.014790284, + 0.0089502875, + 0.012821746, + -0.007493569, + -0.0086812535, + -0.007966018, + -0.0052166265, + 0.020604033, + -0.0020472798, + -0.0138716325, + 0.03616861, + 0.027034592, + -0.004970559, + -0.0028691445, + -0.002472156, + 0.013300757, + -0.034226317, + -0.001879954, + -0.007854467, + -0.007966018, + 0.013648531, + -0.012598645, + -0.00035741273, + -0.011699679, + 0.015774554, + 0.012972667, + 0.016247002, + 0.01225087, + 0.023727447, + -0.010426691, + 0.0062960414, + -0.014659048, + 0.0017241114, + 0.024527987, + -0.0075132544, + 0.006059817, + 0.009225883, + -0.008175995, + 0.03010551, + 0.013182645, + 0.00976395, + 0.012152443, + -0.020131584, + -0.011371589, + -0.012231184, + 0.014711542, + -0.011896533, + -0.008149749, + -0.013701026, + -0.014449071, + -0.0053445813, + 0.015945159, + 0.015302104, + -0.014829655, + -0.021050235, + 0.032756478, + 0.03921328, + 0.012624892, + -0.0059023337, + -0.020354686, + -0.00859595, + 0.002677212, + -0.05448914, + -0.013556667, + -0.0030249872, + 0.030840432, + 0.009376803, + -0.018294282, + -0.031732835, + 0.0062173, + -0.024659222, + -0.006082783, + -0.007493569, + 0.023097515, + 0.01524961, + -0.008116939, + -0.012664263, + -0.0021785158, + 0.0041044024, + 0.022690684, + -0.00010550135, + 0.0061943335, + 0.030158006, + -0.031207893, + 0.02458048, + 0.0014304711, + -0.009494917, + 0.010229837, + 0.0137666445, + -0.00025611502, + 0.00021407854, + 0.0013952014, + -0.017493743, + -0.013609161, + -0.016732575, + 0.0004293874, + -0.011515949, + 0.021522684, + 0.033622634, + -0.037244745, + 0.0027198638, + 0.021667045, + -0.026129065, + 0.0036713239, + 0.008497523, + 0.0007603479, + 0.0069883107, + 0.00015574008, + -0.028530682, + -0.0068242657, + -0.005446289, + -0.041129325, + 0.015682688, + 0.012598645, + -0.012565835, + 0.0076969843, + -0.0027756388, + 0.0055906484, + -0.010557927, + -0.0067192772, + -0.037979666, + -0.007880715, + 0.020997742, + -0.026877109, + -0.008280984, + -0.010741657, + 0.012565835, + -0.034357555, + 0.0047310535, + 0.0003309605, + -0.012821746, + -0.014514688, + -0.0020128305, + 0.016470103, + -0.007106423, + -0.0027297065, + 0.0062533896, + -0.021312708, + -0.001503471, + -0.006528985, + 0.01758561, + -0.010518556, + 0.024436122, + 0.013464802, + -0.007040805, + -0.042494178, + -0.004524357, + 0.013622285, + 0.0016265047, + 0.0060106036, + 0.23475474, + 0.018110553, + 0.0013000554, + 0.031207893, + -0.0067783333, + 0.030525466, + 0.025249785, + -0.005735008, + -0.00994768, + -0.010098601, + -0.018058058, + -0.007749479, + -0.0077626025, + -0.0012992353, + -0.0091668265, + -0.015669564, + -0.020958371, + -0.039160788, + -0.01027577, + -0.022428213, + 0.0016256846, + 0.005928581, + -0.0018291001, + -0.020302191, + 0.033333912, + 0.004567009, + -0.016509473, + 0.013884757, + 0.03228403, + 0.0059154574, + -0.003167706, + 0.009475231, + 0.014606554, + 0.008609074, + -0.012185251, + -0.012185251, + -0.022428213, + -0.0034711892, + 0.015538328, + 0.01872736, + 0.0007808535, + -0.008904355, + 0.005794064, + -0.0053905137, + -0.0031168521, + 0.040210675, + 0.0006287019, + -0.004143773, + 0.018412394, + 0.019449158, + -0.023635583, + -0.009639275, + 0.00980332, + 0.039475754, + 0.013687903, + 0.0080841305, + 0.026024075, + 0.013195768, + 0.0033891667, + 0.0019833022, + -0.017782463, + 0.0065913224, + -0.014435947, + 0.006204176, + -0.003992852, + 0.0025295718, + -0.029134367, + 0.03514497, + 0.005767817, + 0.0020948527, + 0.0146852955, + -0.016811317, + -0.011975274, + -0.010026421, + -0.02051217, + -0.032494005, + 0.027822006, + 0.037953418, + 0.0037763126, + 0.0183599, + -0.022178864, + 0.015288981, + 0.018766731, + -0.00076198834, + 0.011417522, + -0.03404259, + 0.004970559, + 0.008451591, + 0.0037172565, + 0.00175528, + 0.007565749, + 0.0043832785, + -0.014015992, + -0.0038124025, + 0.010544803, + 0.0057186037, + 0.0035466498, + 0.012847993, + -0.01408161, + 0.008405658, + -0.010702286, + -0.005397076, + 0.02519729, + -0.0023655267, + -0.0050985143, + 0.0011097634, + 0.008891231, + 0.015498958, + -0.027008345, + -0.037323486, + -0.01013141, + -0.010439814, + -0.008766557, + -0.0012631454, + 0.029081872, + 0.003628672, + 0.032572746, + -0.0126839485, + 0.012172128, + -0.01608952, + 0.00057374686, + -0.01923918, + -0.018858597, + 0.012933296, + 0.0071917265, + -0.011837477, + -0.018569877, + 0.0038353687, + 0.0082481755, + -0.031732835, + 0.0022392122, + 0.010354511, + -0.00057989854, + -0.0061221537, + -0.006496176, + 0.027926996, + 0.0037402227, + -0.021076484, + -0.010761342, + -0.0017175496, + 0.026929604, + 0.006410873, + 0.011305971, + 0.017572485, + -0.006666783, + -0.0040748743, + 0.022979403, + 0.0016404486, + 0.0028428973, + -0.012368982, + -0.013366375, + -0.017165653, + -0.0035433688, + -0.018884843, + 0.01803181, + -0.019002955, + -0.023451852, + -0.023963673, + -0.014908397, + 0.03616861, + -0.014580307, + 0.0073820185, + 0.033963848, + -0.013431992, + -0.030525466, + -0.0007845445, + -0.16934678, + 0.0274283, + 0.039108295, + -0.00028092682, + 0.010052669, + 0.01989536, + -0.005587368, + -0.012204937, + -0.0038386495, + 0.017113158, + 0.039187036, + 0.0019980664, + -0.025171041, + -0.016522598, + 0.0012483813, + -0.026982097, + -0.008313793, + -0.0037369418, + 0.010931949, + -0.002874066, + 0.016443856, + -0.013806015, + 0.022178864, + -0.027585782, + -0.006597884, + 0.017165653, + 0.0010728533, + 0.02220511, + -0.0019997067, + -0.018609248, + -0.02761203, + -0.010630107, + 0.016076395, + 0.0048918175, + 0.022021381, + 0.021312708, + 0.0015379206, + -0.012565835, + -0.0076707373, + 0.008359726, + 0.009029029, + 0.019331045, + 0.015328351, + 0.008490962, + -0.0035204026, + 0.024698593, + 0.03517122, + 0.0027854815, + 0.0061024684, + -0.014606554, + 0.016037025, + -0.021496437, + -0.003533526, + 0.014475318, + 0.0012811903, + 0.011634061, + -0.0018192574, + -0.0011614376, + 0.0073492094, + -0.016627586, + -0.021995135, + 0.0008579546, + -0.005426604, + -0.0054692556, + -0.022795673, + -0.022323223, + -0.0050985143, + 0.009593343, + -0.026220929, + 0.018163046, + 0.0044849864, + -0.03632609, + 0.013327004, + -0.024947941, + 0.026247177, + 0.018819226, + -0.015000261, + 0.014934643, + -0.009914871, + -0.001301696, + -0.020105338, + 0.027533289, + -0.020840257, + -0.022520078, + 0.010662915, + 0.009396489, + -0.008497523, + 0.0026050322, + -0.0071326704, + -0.016693205, + -0.014317835, + -0.02542039, + 0.0056693903, + -0.03262524, + 0.0063419743, + 0.007867591, + -0.010872893, + -0.002897032, + -0.011424083, + 0.008477838, + 0.027848255, + 0.0021457067, + -0.030420478, + 0.02845194, + 0.029606815, + 0.010833522, + -0.009448984, + 0.014619677, + 0.012408352, + -0.012460847, + -0.028294457, + -0.01129941, + 0.021023989, + 0.0042782896, + -0.009134018, + 0.0009826287, + 0.012939858, + -0.006981749, + 0.004176582, + -0.0014723026, + 0.05496159, + -0.0007816737, + -0.0076969843, + 0.039738227, + -0.00015850834, + -0.013543543, + -0.07690423, + -0.027218321, + 0.02106336, + 0.016194507, + -0.013674779, + 0.04433148, + -0.0055808057, + 0.01762498, + 0.0036188294, + 0.019436033, + 0.0068439515, + -0.018084304, + 0.01371415, + -0.013976621, + 0.0427829, + 0.019081697, + 0.008792805, + -0.028294457, + -0.008182557, + 0.016601339, + -0.017126283, + 0.0041240877, + -0.011634061, + -0.016483227, + 0.000017788614, + -0.0018012126, + -0.029475579, + 0.01755936, + 0.011889971, + 0.011876848, + -0.010807275, + -0.020604033, + -0.01960664, + -0.00281665, + -0.014147229, + 0.009849253, + -0.034173824, + 0.010879455, + 0.020131584, + -0.04015818, + -0.007565749, + 0.00208501, + 0.0046687163, + -0.021850774, + -0.010492309, + -0.004078155, + 0.015735183, + -0.0130186, + 0.023793066, + -0.009527725, + -0.0022687404, + -0.0022917066, + -0.008504085, + 0.015525205, + -0.016443856, + -0.016430732, + -0.01024296, + 0.011430645, + -0.020787764, + -0.0067652096, + -0.00917995, + -0.0043078177, + -0.025945334, + 0.010800713, + 0.016194507, + 0.014882149, + -0.031339128, + -0.026181558, + 0.012605207, + -0.0169688, + -0.016942553, + 0.009081523, + -0.02695585, + -0.00071277487, + -0.023071269, + -0.010518556, + -0.013556667, + -0.0156039465, + 0.024737963, + -0.029239355, + -0.027926996, + -0.028845647, + 0.008746872, + 0.013136712, + 0.023924302, + 0.025879717, + 0.0012024487, + -0.015813924, + -0.0068045803, + -0.024265515, + 0.015315227, + 0.031207893, + -0.0020308753, + -0.025066053, + -0.008707501, + 0.024186773, + 0.0031939533, + -0.006378064, + 0.007447636, + 0.0158008, + -0.012710195, + -0.010072354, + -0.08887294, + 0.013648531, + -0.0027854815, + -0.019094821, + 0.030289242, + -0.014882149, + 0.0027379086, + -0.021352079, + -0.001368134, + 0.012027768, + -0.047271166, + -0.007985704, + 0.0021243808, + 0.0117062405, + -0.020302191, + -0.02490857, + 0.031207893, + 0.012172128, + 0.009665523, + 0.010439814, + 0.014816531, + 0.0035630541, + 0.014514688, + -0.008307232, + -0.020879628, + -0.00073902204, + -0.010945072, + 0.017375631, + 0.0015805722, + -0.0052133454, + 0.009560534, + -0.039187036, + 0.005613615, + 0.0446202, + -0.00075952767, + -0.021575179, + 0.013412307, + 0.024698593, + 0.03446254, + 0.008641883, + -0.009672085, + -0.008602512, + 0.008202243, + -0.020695899, + -0.009744264, + 0.0073229624, + 0.009927995, + -0.002040718, + 0.016470103, + 0.031654093, + 0.0014271903, + 0.03923953, + 0.00039145202, + -0.02304502, + -0.0092193205, + -0.023254998, + 0.017716844, + 0.0036713239, + -0.007723232, + 0.011017253, + 0.023963673, + 0.0125199035, + 0.011640623, + 0.024173649, + 0.023766818, + -0.011056623, + -0.02545976, + 0.0020472798, + 0.021863898, + -0.015341475, + -0.00015502238, + 0.0011679993, + 0.023071269, + 0.0009777073, + 0.028268209, + -0.0183599, + 0.015905788, + -0.0027149424, + -0.029974276, + 0.02212637, + 0.0020718866, + 0.000023261047, + -0.01758561, + 0.020761516, + 0.01254615, + -0.0006791457, + -0.023018774, + 0.00318247, + -0.005954828, + 0.0167457, + -0.004212672, + -0.010649792, + 0.012847993, + -0.0031217735, + 0.010557927, + 0.011279725, + 0.010945072, + -0.005108357, + 0.017782463, + 0.01758561, + 0.008792805, + -0.023018774, + -0.0044423346, + -0.016338868, + -0.016010778, + 0.030315489, + -0.0005606233, + -0.015367722, + -0.012093387, + 0.011050061, + 0.023386234, + 0.026654009, + 0.009613029, + 0.02538102, + -0.026378412, + 0.01700817, + -0.0138191385, + -0.029055625, + -0.03244151, + 0.015695812, + 0.013464802, + 0.023359988, + 0.0060040415, + -0.0077035464, + 0.012716757, + 0.015236486, + -0.0066208504, + -0.008622197, + 0.008038198, + -0.0068964455, + 0.023622459, + 0.007578872, + -0.020564662, + 0.006027008, + -0.013622285, + 0.013661656, + -0.008182557, + -0.0034908745, + -0.017073788, + 0.024186773, + -0.0037336608, + 0.00961959, + 0.0058465586, + 0.012198376, + 0.031837825, + 0.012992352, + 0.022401966, + -0.027664524, + -0.019659135, + 0.009724579, + 0.01729689, + 0.006975187, + -0.012480533, + -0.016706329, + 0.0034022902, + 0.002165392, + 0.017533114, + -0.014278464, + 0.012040893, + 0.039370764, + 0.005219907, + 0.029606815, + -0.01733626, + -0.022730054, + -0.005105076, + 0.017310012, + 0.010991005, + -0.0013927408, + -0.026798368, + 0.0107875895, + 0.00032644926, + -0.016286373, + -0.023241876, + 0.012237746, + -0.014068487, + -0.02431801, + 0.0028806275, + 0.026535895, + 0.018648619, + -0.007723232, + 0.024790458, + -0.020052843, + -0.0042651664, + 0.013477925, + -0.014029116, + -0.007355771, + 0.0037795934, + -0.013340128 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 24, + "total_tokens": 24 + } +} +276 34131 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 81 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["Which of these are cities in Japan"]}HTTP/2.0 200 OK +Content-Length: 33176 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:27:34 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 93 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6659cb4779-w85sk +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999992 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_b56738fd1bd44b29aa74f58173fa82f4 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.01976611, + 0.003909019, + 0.00026493086, + 0.013577655, + -0.01501591, + 0.02332876, + -0.03802799, + -0.0021227456, + -0.00035028602, + -0.048372872, + -0.011829318, + 0.01184911, + 0.011684173, + -0.009757702, + -0.011994255, + -0.010377868, + 0.024252411, + -0.0069867526, + 0.011479651, + -0.02113839, + -0.01522703, + 0.01448811, + 0.0046908227, + -0.03370003, + 0.0010646716, + 0.029029, + 0.008860443, + -0.02335515, + -0.00997542, + 0.0027725995, + 0.011459858, + 0.0018753394, + -0.0049679177, + -0.0051130624, + -0.0041498276, + -0.0030942275, + -0.008490982, + -0.00704613, + -0.019700136, + 0.0027247677, + 0.04235595, + -0.0035428575, + -0.009361853, + -0.0066304877, + -0.00332514, + 0.004621549, + -0.025373986, + 0.022734985, + -0.01638819, + 0.018697316, + 0.019198725, + 0.015161055, + -0.034623682, + -0.000048347305, + -0.025849005, + 0.0034537914, + -0.020808516, + 0.01659931, + -0.023051666, + 0.00027874438, + 0.013696411, + 0.005456133, + -0.018987605, + 0.012317533, + 0.0068745953, + -0.0089726, + -0.0012155893, + 0.008359033, + -0.014606865, + -0.0076596974, + 0.03055962, + 0.011961267, + -0.007323225, + -0.01274637, + 0.014303381, + -0.03417505, + -0.012416495, + -0.013709606, + 0.012581433, + 0.028685931, + 0.008847248, + -0.019964036, + 0.0048326687, + -0.025123281, + 0.02113839, + 0.004601756, + -0.0093156705, + 0.029767921, + -0.00026080743, + 0.0018225594, + 0.01419782, + 0.029847091, + -0.000028090919, + 0.017298644, + -0.027445601, + -0.01884246, + 0.0014283587, + 0.02016196, + -0.008807663, + -0.012073426, + 0.0079104025, + 0.013267573, + 0.002462517, + -0.01050322, + -0.008279863, + 0.02280096, + 0.005898165, + -0.021784946, + 0.005848684, + -0.008570152, + -0.0017714287, + 0.026469171, + 0.0040607615, + -0.07478926, + -0.03190551, + -0.02707614, + 0.02937207, + -0.0074749677, + -0.01498952, + -0.015847195, + 0.0002001929, + 0.04048226, + 0.012614421, + -0.011354297, + 0.04449354, + 0.0095004, + -0.012845333, + -0.02340793, + -0.014474915, + -0.01396031, + 0.03005821, + -0.0021079013, + 0.0064094714, + 0.0050998675, + -0.0072638476, + 0.01462006, + -0.0018374037, + -0.0062907166, + -0.014633255, + -0.01828827, + 0.006795425, + -0.0054891203, + 0.00635999, + 0.01509508, + 0.0269178, + 0.010232722, + 0.03422783, + 0.00786422, + 0.007738868, + -0.020914076, + -0.00094179314, + -0.015583295, + 0.0009648844, + 0.0063072103, + 0.0038100563, + 0.00910455, + 0.016216656, + 0.01388114, + 0.0028765101, + -0.012944295, + -0.010015005, + 0.0124098975, + 0.02435797, + -0.010588988, + -0.013122428, + 0.020095985, + 0.01831466, + 0.024846185, + 0.0025235438, + 0.000048218448, + -0.03116659, + 0.0075013577, + -0.04488939, + 0.012053633, + 0.014276991, + -0.005977335, + 0.01411865, + 0.01467284, + -0.03179995, + 0.008194095, + 0.004925034, + -0.00480298, + 0.019607771, + 0.001966055, + 0.013999895, + 0.0018291569, + 0.0166257, + 0.0006869647, + 0.010325087, + -0.01931748, + 0.03557372, + 0.02773589, + 0.02997904, + 0.011440065, + -0.6232262, + -0.039321102, + -0.0020996544, + 0.0044533126, + 0.03211663, + 0.00934206, + 0.0321958, + 0.0057761115, + 0.0035824426, + 0.02995265, + -0.010965046, + 0.01562288, + -0.027419211, + -0.004525885, + -0.010364673, + -0.006267625, + 0.008583347, + -0.01348529, + 0.003813355, + 0.02053142, + -0.0069867526, + 0.0002610136, + -0.011255335, + -0.014316576, + 0.012396703, + -0.01129492, + -0.023658635, + -0.009012185, + -0.012053633, + 0.04631445, + -0.03222219, + 0.04312126, + 0.020544615, + -0.00504049, + 0.031008251, + 0.0021128494, + -0.031034641, + 0.02240511, + 0.0139867, + 0.024846185, + -0.02675946, + 0.00467103, + 0.013524875, + -0.0013821763, + 0.0008584997, + 0.01364363, + 0.04053504, + -0.023394736, + 0.005307689, + -0.0017301944, + 0.02372461, + -0.0314041, + -0.03731546, + -0.009467413, + 0.013577655, + 0.010694548, + 0.019013995, + -0.012647408, + -0.0070659225, + -0.021362705, + -0.022787765, + 0.0038661351, + -0.0179452, + -0.010094175, + -0.013999895, + 0.013313755, + -0.008174303, + -0.008596542, + 0.00725725, + -0.03546816, + 0.0045324825, + 0.0076465025, + -0.011195958, + 0.009724715, + 0.020848101, + 0.03955861, + 0.019805696, + -0.007323225, + -0.01359085, + -0.013366535, + 0.012027243, + -0.00069191284, + -0.02055781, + -0.03346252, + -0.00032451455, + -0.03528343, + -0.015002715, + 0.011228945, + 0.01712711, + -0.01572844, + 0.0032624637, + -0.0027725995, + -0.014817986, + 0.0055089127, + -0.010008408, + 0.015385371, + -0.002027082, + 0.002172227, + 0.004938229, + -0.019462625, + -0.022471085, + -0.009876458, + 0.008352435, + -0.0015083535, + -0.014211015, + -0.029873481, + -0.01783964, + 0.0081677055, + 0.02562469, + -0.017166695, + 0.010932058, + 0.002040277, + -0.017826445, + -0.00665028, + 0.02615249, + -0.02251067, + 0.02127034, + -0.0051526474, + 0.01517425, + 0.0087218955, + 0.0057200324, + 0.017536156, + 0.021758555, + 0.0011067307, + 0.02720809, + 0.0155041255, + -0.006442459, + -0.005423145, + -0.006478745, + 0.010015005, + -0.011479651, + 0.014554085, + 0.01789242, + -0.018961215, + 0.004502794, + 0.022154406, + -0.0005183161, + -0.006082895, + 0.02789423, + -0.01717989, + -0.02997904, + -0.01981889, + 0.01799798, + -0.017087525, + 0.00038079947, + -0.024291996, + -0.0008609738, + -0.00134589, + -0.03288194, + 0.006224741, + 0.011156373, + -0.017391011, + -0.02047864, + 0.01274637, + -0.009249696, + -0.0057728128, + -0.0023272682, + -0.00054594316, + 0.007296835, + 0.00947401, + 0.03623347, + 0.0008782922, + -0.019581381, + 0.0032162813, + 0.013551265, + -0.020650174, + 0.04280458, + 0.012178985, + -0.0020617188, + -0.022009261, + -0.020571005, + -0.012832138, + 0.0011809525, + 0.008741688, + -0.00841841, + -0.0055880826, + 0.008979198, + -0.010707743, + 0.00030101094, + 0.006867998, + 0.0138151655, + -0.01712711, + -0.02483299, + -0.0051625436, + 0.034623682, + -0.01356446, + 0.01704794, + -0.00024369516, + 0.007217665, + 0.0145145, + -0.02578303, + 0.014211015, + 0.0043378565, + 0.0043411553, + 0.02836925, + 0.0020831607, + 0.01419782, + 0.016111095, + -0.024661455, + 0.0060169203, + 0.015768025, + -0.0032756587, + 0.001594121, + -0.024608675, + 0.03736824, + -0.01462006, + -0.0101535525, + -0.023130836, + 0.024107266, + 0.01026571, + 0.022048846, + -0.01754935, + -0.00477659, + 0.017536156, + -0.0068152174, + 0.027419211, + 0.00022575821, + 0.014844376, + -0.0153062, + -0.004130035, + 0.019739721, + -0.019911256, + 0.009810483, + -0.012277948, + -0.019607771, + 0.0021920195, + -0.010285502, + 0.030955471, + -0.0008094308, + -0.008128121, + -0.02784145, + -0.017166695, + -0.0061323764, + 0.0031173187, + -0.0060433103, + -0.008655921, + 0.022629425, + -0.011341102, + 0.02726087, + 0.0069867526, + 0.015240225, + 0.010443843, + 0.018473001, + -0.00828646, + 0.01158521, + 0.006769035, + 0.04525885, + 0.017615326, + 0.007006545, + 0.02121756, + -0.03042767, + -0.017496571, + -0.00248066, + 0.016282631, + 0.005291195, + -0.02551913, + 0.02496494, + 0.0060268166, + 0.01361724, + 0.03356808, + 0.0044038314, + -0.006867998, + -0.0024790107, + -0.00921011, + 0.0009269488, + 0.0059278538, + 0.0129311, + 0.02026752, + -0.021837726, + -0.01765491, + -0.025585106, + -0.0042191013, + -0.015556905, + 0.0017202982, + 0.00556829, + -0.0023322164, + -0.0058519826, + -0.0043510515, + 0.01604512, + 0.03005821, + 0.0064721475, + -0.059588622, + 0.01359085, + 0.02728726, + -0.019634161, + -0.020465445, + -0.010892473, + -0.0066700727, + -0.017470181, + 0.0065843053, + 0.020861296, + 0.018776486, + 0.0073562125, + -0.009724715, + -0.01702155, + 0.0066073965, + 0.03000543, + -0.02134951, + -0.019383455, + -0.017061135, + -0.0003364725, + -0.027445601, + -0.0031222668, + 0.0030315514, + 0.03137771, + -0.024872575, + -0.00035234774, + -0.010621975, + 0.012686993, + -0.006867998, + -0.009388243, + -0.012614421, + -0.006953765, + 0.011802928, + 0.021798141, + -0.02565108, + -0.019964036, + 0.008253473, + 0.021494655, + -0.0036715087, + -0.014791595, + -0.01607151, + -0.022576645, + -0.0025433362, + 0.11579932, + -0.00944762, + 0.007824635, + -0.019330675, + 0.01704794, + 0.006953765, + -0.00266539, + 0.0059707374, + -0.010325087, + 0.01118936, + -0.01683682, + -0.010509818, + 0.012522055, + 0.005518809, + 0.019172335, + -0.013472095, + -0.04201288, + -0.04095728, + 0.0087218955, + -0.013359938, + 0.001095185, + -0.015108275, + 0.028553981, + 0.007857623, + -0.02013557, + 0.022497475, + 0.02567747, + 0.01652014, + 0.015213835, + -0.012343923, + -0.0012188881, + 0.0055484977, + -0.01947582, + 0.01797159, + -0.016374996, + 0.011070605, + 0.011090398, + 0.03676127, + 0.0011826019, + -0.0011380687, + -0.005888269, + 0.007171483, + -0.0002983307, + -0.01401309, + 0.008675713, + -0.03198468, + 0.0035560525, + 0.0101667475, + -0.0071648853, + -0.0145145, + 0.028659541, + -0.014316576, + -0.032565262, + -0.03528343, + -0.019409845, + 0.012211973, + -0.003786965, + -0.0033944137, + 0.009269488, + -0.0155041255, + -0.00009179803, + -0.0072638476, + 0.0057068374, + -0.0032690612, + -0.02174536, + -0.03884608, + 0.011987657, + -0.03108742, + -0.05140772, + -0.0044698063, + 0.0005814047, + -0.016981965, + -0.02897622, + 0.020095985, + 0.03148327, + -0.012000852, + 0.02430519, + -0.024846185, + 0.008906625, + 0.01797159, + -0.0168896, + -0.03396393, + -0.024291996, + -0.01417143, + -0.01937026, + 0.02464826, + 0.013577655, + -0.02274818, + -0.01301027, + -0.010015005, + 0.0060795965, + -0.0027890932, + 0.008273265, + 0.01997723, + -0.0030233045, + -0.009559778, + 0.01079351, + 0.019660551, + -0.00749476, + -0.02916095, + 0.03855579, + -0.0018308063, + -0.00847119, + -0.008405215, + 0.0070791175, + 0.010668158, + 0.014554085, + -0.002942485, + -0.00002896715, + 0.002726417, + 0.02491216, + -0.02945124, + 0.02272179, + 0.007903805, + -0.01351168, + 0.03676127, + 0.014329771, + 0.020439055, + -0.0035560525, + -0.0134589, + 0.010285502, + -0.0067756325, + 0.023473905, + 0.03211663, + -0.02997904, + 0.008900028, + -0.009348658, + 0.00041997212, + 0.0007108806, + -0.01411865, + -0.016031925, + 0.037104342, + -0.0069603627, + -0.029794311, + -0.01889524, + -0.009638947, + -0.01016015, + 0.018670926, + -0.017325036, + -0.0129311, + -0.020966856, + -0.0070263376, + 0.020940466, + -0.008345838, + -0.05219942, + -0.02335515, + 0.01142687, + 0.014580475, + 0.011255335, + 0.010041395, + 0.015385371, + 0.0050206976, + -0.012614421, + -0.0030084602, + -0.04436159, + -0.02810535, + -0.015438151, + -0.016850015, + -0.001156212, + 0.0197925, + 0.04953403, + 0.024041291, + 0.02905539, + 0.0017301944, + -0.010542805, + -0.00078798895, + -0.0046380428, + 0.0321958, + -0.008405215, + -0.002916095, + 0.018327855, + 0.02171897, + -0.024199631, + -0.006138974, + -0.012080023, + 0.04892706, + 0.002335515, + -0.009790691, + -0.011209153, + -0.05204108, + -0.0013368184, + -0.00847119, + 0.0042388937, + -0.011433467, + 0.011420272, + -0.0033234907, + 0.0031849432, + -0.0126935905, + 0.005106465, + -0.009177122, + 0.008728493, + 0.0012708434, + 0.010780315, + 0.009863263, + 0.0027462095, + -0.008352435, + -0.017417401, + -0.01517425, + -0.0004362597, + 0.023051666, + 0.01649375, + 0.0009162278, + -0.006000426, + 0.01229774, + -0.0029457838, + 0.012865125, + -0.00760032, + -0.01681043, + -0.016506946, + -0.0023190214, + -0.024252411, + 0.0047502, + 0.0025565312, + -0.03288194, + -0.016374996, + -0.009487205, + -0.010938656, + 0.028738711, + -0.02549274, + -0.020821711, + 0.01287832, + 0.00020472867, + 0.02288013, + 0.0121130105, + 0.012383508, + 0.0064754463, + 0.005782709, + -0.010430648, + -0.026086515, + -0.024978135, + 0.0008403566, + 0.015715245, + 0.02615249, + -0.01799798, + -0.031008251, + -0.005657356, + 0.0107209375, + -0.003496675, + -0.0033218414, + 0.03607513, + 0.03435978, + -0.0145145, + -0.0056672525, + 0.012950893, + -0.01612429, + 0.032433312, + -0.010298697, + -0.012634213, + 0.00533078, + 0.0022893324, + -0.0017747275, + 0.0031371112, + -0.015424956, + -0.0041498276, + 0.000092983515, + -0.016256241, + 0.01781325, + -0.022682205, + 0.0014473266, + 0.012522055, + 0.0019165737, + 0.013867945, + 0.0040442673, + 0.0068482053, + 0.01385475, + 0.0115720155, + -0.000658513, + -0.010984838, + 0.0010069434, + 0.03182634, + -0.009150732, + -0.016823625, + -0.00353626, + 0.0004201783, + 0.011908487, + -0.0035329612, + 0.009935835, + 0.01182272, + -0.02881788, + 0.0074617728, + 0.04441437, + -0.0058915676, + -0.007949987, + -0.014686035, + -0.022655815, + -0.020544615, + 0.0075277477, + 0.0015075288, + -0.0025532325, + -0.02161341, + -0.0155173205, + 0.017588936, + -0.002805587, + 0.015372176, + -0.013894335, + -0.01295749, + 0.011888695, + 0.0093024755, + -0.013221391, + 0.008556957, + -0.00007540736, + 0.02277457, + -0.022207186, + -0.01596595, + -0.013359938, + -0.013947115, + 0.012330728, + -0.0076069175, + -0.013452303, + -0.02934568, + -0.006719554, + 0.03048045, + 0.03132493, + 0.03169439, + 0.018354245, + -0.025453156, + -0.011888695, + -0.015715245, + -0.02997904, + 0.022391915, + 0.0002653432, + 0.018143125, + 0.02470104, + -0.01005459, + 0.02372461, + 0.009935835, + -0.00009071563, + -0.011816123, + 0.009638947, + -0.02884427, + -0.016823625, + -0.0032377231, + -0.023843365, + -0.016902795, + -0.004473105, + -0.00046965954, + -0.006086194, + -0.006557915, + 0.012106413, + 0.0069207777, + 0.008708701, + 0.041590642, + -0.0095861675, + 0.013656825, + -0.010727535, + -0.01440894, + 0.009559778, + -0.0049943076, + -0.023658635, + -0.013762386, + -0.015794415, + 0.027577551, + 0.005746423, + -0.008570152, + -0.02335515, + -0.0017499869, + -0.02100644, + -0.03222219, + -0.00361543, + 0.016638895, + 0.012416495, + -0.001147965, + 0.004288375, + 0.010648365, + 0.008253473, + 0.0168896, + -0.01514786, + 0.009533388, + 0.0074023954, + -0.037236292, + 0.02245789, + 0.01778686, + -0.0050239963, + -0.011156373, + 0.0048590587, + 0.008847248, + 0.017219475, + 0.020689761, + -0.022959301, + -0.02282735, + -0.0034867788, + -0.011882097, + -0.02953041, + 0.02330237, + 0.006482044, + -0.03348891, + 0.01762852, + 0.01778686, + -0.017747276, + 0.0016939081, + 0.01058239, + -0.0018786382, + -0.005000905, + 0.0010770418, + 0.00042471406, + -0.015213835, + 0.0107473275, + -0.02778867, + 0.018380634, + -0.0027445601, + -0.011308115, + 0.01905358, + -0.025176061, + -0.021705775, + -0.017509766, + -0.00675584, + -0.009850068, + -0.014079065, + -0.002444374, + -0.011380687, + -0.012812345, + -0.001224661, + -0.01021293, + -0.03734185, + 0.0047996813, + -0.0006828413, + -0.014606865, + -0.023473905, + 0.022009261, + 0.011750148, + -0.013775581, + -0.012574836, + 0.02129673, + -0.03319862, + 0.0031024744, + -0.0232232, + 0.013293963, + -0.04095728, + 0.021811336, + -0.0077058803, + -0.021468265, + -0.028501201, + 0.00498771, + 0.01118936, + -0.03019016, + -0.016084705, + 0.22104265, + -0.01018654, + -0.0043609478, + 0.03446534, + -0.0044665076, + 0.03420144, + 0.028659541, + -0.009361853, + -0.015952755, + 0.010391063, + -0.03288194, + -0.009546583, + 0.0064358613, + 0.011149775, + -0.003346582, + -0.04438798, + -0.026139295, + -0.02997904, + 0.0036781062, + 0.020729346, + -0.0038760314, + 0.0017565844, + -0.008088535, + -0.0043906365, + -0.004331259, + 0.03731546, + -0.014831181, + 0.010602183, + 0.023579465, + 0.009236501, + 0.013735996, + 0.017852835, + 0.0051493486, + 0.022497475, + 0.0020518226, + -0.014356161, + -0.0068482053, + 0.0036451188, + 0.01778686, + 0.016612506, + -0.007639905, + -0.0013153766, + -0.01140048, + 0.019251505, + -0.014276991, + 0.00757393, + -0.0073430175, + 0.011756745, + -0.0077916477, + 0.00994903, + -0.03016377, + -0.014606865, + 0.0398489, + 0.022734985, + 0.01913275, + -0.023025276, + 0.02802618, + 0.0003393589, + -0.015319395, + -0.015688855, + 0.0027033256, + 0.03040128, + -0.01459367, + 0.03277638, + -0.011096995, + 0.0061191814, + -0.03119298, + -0.0035296625, + 0.01572844, + -0.008708701, + -0.00947401, + -0.0028402237, + 0.0023371645, + -0.0190008, + -0.021996066, + -0.00841841, + 0.043701842, + 0.02235233, + 0.023091251, + 0.014263796, + -0.0061587663, + -0.015029105, + 0.023064861, + 0.024978135, + 0.01599234, + -0.02319681, + 0.006310509, + 0.0042289975, + -0.0035197663, + -0.011756745, + -0.017773665, + -0.0271817, + 0.0009904497, + -0.026429586, + -0.0056639537, + -0.0061818575, + 0.0017038044, + 0.0036220276, + 0.0068152174, + -0.019489015, + 0.0041894126, + 0.013524875, + 0.00902538, + -0.0017169995, + -0.012106413, + 0.006376484, + -0.0048194737, + -0.012917905, + -0.008662518, + -0.015609685, + 0.002441075, + -0.03119298, + 0.010173345, + -0.0049976064, + 0.0010250866, + -0.00031358743, + -0.00709891, + -0.02720809, + 0.01396031, + -0.014831181, + 0.014422135, + -0.013129026, + -0.023526685, + 0.0066568777, + -0.009817081, + -0.02124395, + -0.0037209901, + -0.03042767, + 0.009902848, + -0.028606761, + 0.03063879, + -0.0154909305, + 0.01617707, + -0.012502262, + 0.009355255, + 0.022787765, + 0.005835489, + -0.008266668, + 0.017377816, + -0.007917, + 0.005558394, + 0.008425008, + 0.02359266, + 0.0066733714, + -0.007798245, + -0.00796978, + 0.00477659, + 0.022814155, + -0.026495561, + 0.0019578082, + -0.011670978, + -0.018829266, + 0.00833924, + -0.0037308864, + 0.05404672, + 0.002734664, + 0.0038166537, + -0.01462006, + 0.021969676, + 0.03591679, + -0.04042948, + -0.0063171065, + 0.03372642, + -0.018512586, + -0.03639181, + 0.0058156964, + -0.16657369, + 0.02388295, + 0.03887247, + -0.03069157, + 0.018802876, + 0.020742541, + 0.0072110677, + -0.030902691, + -0.001330221, + -0.0039881887, + 0.057266302, + 0.017404206, + -0.02668029, + -0.02264262, + -0.016137484, + -0.021705775, + -0.018195905, + 0.01393392, + 0.021824531, + 0.00335153, + 0.037104342, + -0.011123385, + -0.01227135, + 0.0043180636, + -0.02681224, + 0.03005821, + -0.0025268425, + -0.009744507, + 0.026587926, + -0.00997542, + -0.0015355682, + -0.02055781, + 0.01615068, + 0.0277095, + 0.015345785, + 0.0077322703, + -0.009012185, + -0.007903805, + -0.01818271, + -0.0024361268, + 0.00039420064, + -0.0028996014, + 0.004647939, + 0.01947582, + 0.01462006, + 0.005818995, + 0.007870818, + -0.020755736, + -0.0066964626, + -0.0069207777, + 0.03029572, + -0.012040438, + -0.0007537644, + 0.015741635, + -0.0008040703, + 0.0022596437, + 0.0138019705, + 0.03507231, + 0.006237936, + -0.010509818, + -0.029715141, + -0.0008189147, + 0.016559726, + -0.011941475, + -0.0056309663, + -0.0060169203, + -0.008088535, + 0.025954565, + -0.03119298, + 0.01403948, + -0.009434425, + -0.012198778, + 0.021824531, + -0.02884427, + -0.0005323358, + 0.01221857, + -0.0037539776, + 0.01638819, + 0.002792392, + -0.00027915672, + -0.030876301, + 0.0591136, + -0.021125196, + -0.0030266033, + -0.0074749677, + 0.02396212, + 0.0057266303, + 0.012845333, + -0.0398489, + 0.001264246, + 0.029794311, + -0.01947582, + -0.005861879, + 0.004915138, + 0.010015005, + 0.0108199, + -0.00955318, + 0.023869755, + -0.021257145, + -0.026535146, + 0.0059410487, + -0.016981965, + -0.0059806337, + 0.02050503, + 0.03285555, + 0.00878787, + 0.0047172126, + 0.030902691, + 0.00913094, + 0.010932058, + -0.0065513174, + 0.0013277469, + 0.011921682, + 0.012937698, + -0.01572844, + -0.00045935094, + 0.02142868, + 0.009196915, + 0.0543634, + 0.013551265, + 0.010984838, + -0.0054000537, + 0.013346743, + 0.0024377762, + -0.0016279331, + -0.002739612, + -0.087720364, + 0.03794882, + -0.0071780803, + 0.015055495, + -0.008873638, + 0.05370365, + 0.03449173, + 0.021837726, + 0.010371271, + 0.010509818, + -0.00625443, + -0.015688855, + -0.0030513438, + -0.003892525, + 0.004258686, + -0.02908178, + -0.0017433894, + 0.009823678, + 0.0056045763, + 0.03182634, + -0.00424879, + -0.01580761, + 0.004393935, + -0.03019016, + -0.012528652, + -0.0033449326, + -0.019660551, + 0.007323225, + 0.02364544, + 0.009256293, + 0.0026505457, + -0.018908435, + -0.009144135, + -0.011591808, + -0.00596414, + 0.03346252, + -0.02731365, + 0.00014906227, + 0.03581123, + -0.03596957, + -0.0015421656, + 0.0074155903, + 0.006613994, + -0.010391063, + -0.00971152, + -0.022761375, + -0.039426662, + -0.012752968, + -0.0039552012, + -0.019304285, + -0.02134951, + -0.013498485, + 0.0021392393, + -0.012970685, + 0.010272307, + -0.0057233316, + 0.0010283854, + 0.008246875, + -0.03876691, + 0.0028517693, + 0.013722801, + -0.0077454653, + -0.02910817, + 0.026086515, + 0.04214483, + 0.0046182503, + -0.016005535, + -0.019700136, + 0.014738815, + -0.0364182, + -0.02493855, + 0.023421125, + -0.03111381, + -0.009177122, + -0.02211482, + -0.02900261, + 0.0039881887, + 0.0072638476, + 0.015820805, + -0.015715245, + 0.0035956376, + -0.01902719, + -0.009751105, + -0.007686088, + 0.0012931101, + 0.017879225, + 0.01351168, + -0.01501591, + 0.014474915, + -0.03055962, + 0.030929081, + 0.007376005, + 0.029029, + -0.01287832, + -0.012654006, + 0.016638895, + 0.005241714, + 0.01058239, + 0.02016196, + 0.01918553, + -0.016533336, + -0.02459548, + -0.0865592, + 0.012673798, + -0.005660655, + -0.009520193, + 0.0069999476, + -0.0101799425, + 0.01422421, + -0.0045951586, + 0.023896145, + -0.00778505, + -0.028685931, + 0.02261623, + -0.00899899, + -0.019779306, + -0.02583581, + 0.000015501548, + 0.013722801, + 0.018855656, + 0.025228841, + -0.011149775, + -0.0092892805, + 0.0047567976, + 0.02132312, + 0.0022266563, + -0.04499495, + 0.0070263376, + -0.00899899, + 0.03106103, + -0.03005821, + 0.0013928972, + 0.006953765, + -0.045813043, + 0.0057068374, + -0.00079664815, + -0.0084448, + -0.014580475, + -0.014131845, + 0.018697316, + 0.02390934, + 0.037183512, + -0.023117641, + -0.009638947, + 0.01356446, + -0.01475201, + -0.011011228, + -0.009137537, + 0.01403948, + 0.0072242627, + 0.02343432, + 0.009348658, + 0.0031255656, + 0.021072416, + 0.008279863, + -0.0115588205, + 0.005142751, + -0.048452042, + 0.007844428, + -0.0013862997, + -0.00683501, + 0.0033680238, + 0.020676566, + 0.025532326, + 0.024291996, + 0.00567385, + 0.010259112, + -0.028791491, + -0.010173345, + 0.0132477805, + 0.019013995, + -0.017668106, + -0.029715141, + 0.0129311, + 0.002124395, + 0.022576645, + -0.00038244884, + -0.01641458, + 0.026799046, + -0.02277457, + -0.03385837, + 0.009454218, + 0.003922214, + -0.0029886675, + -0.05547178, + 0.017325036, + 0.021098806, + -0.03063879, + -0.021679385, + -0.01158521, + -0.016929185, + 0.0279734, + 0.00261261, + -0.007844428, + 0.017509766, + -0.0015363928, + 0.000819327, + 0.020755736, + -0.017984785, + -0.02734004, + 0.01776047, + 0.017298644, + 0.010377868, + -0.016955575, + -0.017113915, + -0.02119117, + -0.00849758, + 0.02039947, + -0.019660551, + -0.024687845, + 0.010727535, + 0.023341956, + -0.0047963825, + 0.02908178, + -0.00881426, + 0.01612429, + 0.008504177, + -0.004245491, + -0.012997075, + -0.017470181, + -0.0068877903, + 0.015979145, + 0.02258984, + 0.019713331, + 0.0018934825, + -0.0068745953, + 0.03834467, + 0.00960596, + 0.010813302, + -0.017298644, + 0.019660551, + -0.00083252206, + 0.0095861675, + -0.0023338657, + -0.021916896, + -0.0017054537, + -0.00839202, + -0.0095861675, + 0.009091355, + 0.0049547227, + -0.01419782, + 0.057319082, + 0.018433416, + 0.009282683, + -0.014250601, + -0.00833924, + 0.04127396, + 0.009005588, + 0.014079065, + -0.0055748876, + -0.029794311, + 0.012805748, + -0.005192233, + -0.012416495, + -0.03533621, + -0.020795321, + -0.008009365, + -0.021916896, + 0.0054957177, + 0.0084513975, + 0.0029787712, + 0.03195829, + -0.0072506526, + 0.03063879, + 0.01517425, + -0.02892344, + -0.0039123176, + 0.03868774, + -0.012997075, + 0.021969676, + -0.028633151, + 0.021098806, + 0.0149631305, + -0.017219475, + -0.024226021, + 0.00781144, + -0.01348529, + -0.011103593, + -0.017298644, + 0.00799617, + 0.02807896, + 0.0024691145, + -0.006313808, + -0.01673126, + -0.01562288, + -0.0024790107, + -0.0059311525, + -0.01367002, + -0.0055122115, + -0.010457038 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 7, + "total_tokens": 7 + } +} +276 34131 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 81 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["Which of these are cities in Japan"]}HTTP/2.0 200 OK +Content-Length: 33176 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:27:35 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 91 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-p6w2b +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999992 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_f5cb3b86e3ac4af0bda8e35ec8b97d74 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.01976611, + 0.003909019, + 0.00026493086, + 0.013577655, + -0.01501591, + 0.02332876, + -0.03802799, + -0.0021227456, + -0.00035028602, + -0.048372872, + -0.011829318, + 0.01184911, + 0.011684173, + -0.009757702, + -0.011994255, + -0.010377868, + 0.024252411, + -0.0069867526, + 0.011479651, + -0.02113839, + -0.01522703, + 0.01448811, + 0.0046908227, + -0.03370003, + 0.0010646716, + 0.029029, + 0.008860443, + -0.02335515, + -0.00997542, + 0.0027725995, + 0.011459858, + 0.0018753394, + -0.0049679177, + -0.0051130624, + -0.0041498276, + -0.0030942275, + -0.008490982, + -0.00704613, + -0.019700136, + 0.0027247677, + 0.04235595, + -0.0035428575, + -0.009361853, + -0.0066304877, + -0.00332514, + 0.004621549, + -0.025373986, + 0.022734985, + -0.01638819, + 0.018697316, + 0.019198725, + 0.015161055, + -0.034623682, + -0.000048347305, + -0.025849005, + 0.0034537914, + -0.020808516, + 0.01659931, + -0.023051666, + 0.00027874438, + 0.013696411, + 0.005456133, + -0.018987605, + 0.012317533, + 0.0068745953, + -0.0089726, + -0.0012155893, + 0.008359033, + -0.014606865, + -0.0076596974, + 0.03055962, + 0.011961267, + -0.007323225, + -0.01274637, + 0.014303381, + -0.03417505, + -0.012416495, + -0.013709606, + 0.012581433, + 0.028685931, + 0.008847248, + -0.019964036, + 0.0048326687, + -0.025123281, + 0.02113839, + 0.004601756, + -0.0093156705, + 0.029767921, + -0.00026080743, + 0.0018225594, + 0.01419782, + 0.029847091, + -0.000028090919, + 0.017298644, + -0.027445601, + -0.01884246, + 0.0014283587, + 0.02016196, + -0.008807663, + -0.012073426, + 0.0079104025, + 0.013267573, + 0.002462517, + -0.01050322, + -0.008279863, + 0.02280096, + 0.005898165, + -0.021784946, + 0.005848684, + -0.008570152, + -0.0017714287, + 0.026469171, + 0.0040607615, + -0.07478926, + -0.03190551, + -0.02707614, + 0.02937207, + -0.0074749677, + -0.01498952, + -0.015847195, + 0.0002001929, + 0.04048226, + 0.012614421, + -0.011354297, + 0.04449354, + 0.0095004, + -0.012845333, + -0.02340793, + -0.014474915, + -0.01396031, + 0.03005821, + -0.0021079013, + 0.0064094714, + 0.0050998675, + -0.0072638476, + 0.01462006, + -0.0018374037, + -0.0062907166, + -0.014633255, + -0.01828827, + 0.006795425, + -0.0054891203, + 0.00635999, + 0.01509508, + 0.0269178, + 0.010232722, + 0.03422783, + 0.00786422, + 0.007738868, + -0.020914076, + -0.00094179314, + -0.015583295, + 0.0009648844, + 0.0063072103, + 0.0038100563, + 0.00910455, + 0.016216656, + 0.01388114, + 0.0028765101, + -0.012944295, + -0.010015005, + 0.0124098975, + 0.02435797, + -0.010588988, + -0.013122428, + 0.020095985, + 0.01831466, + 0.024846185, + 0.0025235438, + 0.000048218448, + -0.03116659, + 0.0075013577, + -0.04488939, + 0.012053633, + 0.014276991, + -0.005977335, + 0.01411865, + 0.01467284, + -0.03179995, + 0.008194095, + 0.004925034, + -0.00480298, + 0.019607771, + 0.001966055, + 0.013999895, + 0.0018291569, + 0.0166257, + 0.0006869647, + 0.010325087, + -0.01931748, + 0.03557372, + 0.02773589, + 0.02997904, + 0.011440065, + -0.6232262, + -0.039321102, + -0.0020996544, + 0.0044533126, + 0.03211663, + 0.00934206, + 0.0321958, + 0.0057761115, + 0.0035824426, + 0.02995265, + -0.010965046, + 0.01562288, + -0.027419211, + -0.004525885, + -0.010364673, + -0.006267625, + 0.008583347, + -0.01348529, + 0.003813355, + 0.02053142, + -0.0069867526, + 0.0002610136, + -0.011255335, + -0.014316576, + 0.012396703, + -0.01129492, + -0.023658635, + -0.009012185, + -0.012053633, + 0.04631445, + -0.03222219, + 0.04312126, + 0.020544615, + -0.00504049, + 0.031008251, + 0.0021128494, + -0.031034641, + 0.02240511, + 0.0139867, + 0.024846185, + -0.02675946, + 0.00467103, + 0.013524875, + -0.0013821763, + 0.0008584997, + 0.01364363, + 0.04053504, + -0.023394736, + 0.005307689, + -0.0017301944, + 0.02372461, + -0.0314041, + -0.03731546, + -0.009467413, + 0.013577655, + 0.010694548, + 0.019013995, + -0.012647408, + -0.0070659225, + -0.021362705, + -0.022787765, + 0.0038661351, + -0.0179452, + -0.010094175, + -0.013999895, + 0.013313755, + -0.008174303, + -0.008596542, + 0.00725725, + -0.03546816, + 0.0045324825, + 0.0076465025, + -0.011195958, + 0.009724715, + 0.020848101, + 0.03955861, + 0.019805696, + -0.007323225, + -0.01359085, + -0.013366535, + 0.012027243, + -0.00069191284, + -0.02055781, + -0.03346252, + -0.00032451455, + -0.03528343, + -0.015002715, + 0.011228945, + 0.01712711, + -0.01572844, + 0.0032624637, + -0.0027725995, + -0.014817986, + 0.0055089127, + -0.010008408, + 0.015385371, + -0.002027082, + 0.002172227, + 0.004938229, + -0.019462625, + -0.022471085, + -0.009876458, + 0.008352435, + -0.0015083535, + -0.014211015, + -0.029873481, + -0.01783964, + 0.0081677055, + 0.02562469, + -0.017166695, + 0.010932058, + 0.002040277, + -0.017826445, + -0.00665028, + 0.02615249, + -0.02251067, + 0.02127034, + -0.0051526474, + 0.01517425, + 0.0087218955, + 0.0057200324, + 0.017536156, + 0.021758555, + 0.0011067307, + 0.02720809, + 0.0155041255, + -0.006442459, + -0.005423145, + -0.006478745, + 0.010015005, + -0.011479651, + 0.014554085, + 0.01789242, + -0.018961215, + 0.004502794, + 0.022154406, + -0.0005183161, + -0.006082895, + 0.02789423, + -0.01717989, + -0.02997904, + -0.01981889, + 0.01799798, + -0.017087525, + 0.00038079947, + -0.024291996, + -0.0008609738, + -0.00134589, + -0.03288194, + 0.006224741, + 0.011156373, + -0.017391011, + -0.02047864, + 0.01274637, + -0.009249696, + -0.0057728128, + -0.0023272682, + -0.00054594316, + 0.007296835, + 0.00947401, + 0.03623347, + 0.0008782922, + -0.019581381, + 0.0032162813, + 0.013551265, + -0.020650174, + 0.04280458, + 0.012178985, + -0.0020617188, + -0.022009261, + -0.020571005, + -0.012832138, + 0.0011809525, + 0.008741688, + -0.00841841, + -0.0055880826, + 0.008979198, + -0.010707743, + 0.00030101094, + 0.006867998, + 0.0138151655, + -0.01712711, + -0.02483299, + -0.0051625436, + 0.034623682, + -0.01356446, + 0.01704794, + -0.00024369516, + 0.007217665, + 0.0145145, + -0.02578303, + 0.014211015, + 0.0043378565, + 0.0043411553, + 0.02836925, + 0.0020831607, + 0.01419782, + 0.016111095, + -0.024661455, + 0.0060169203, + 0.015768025, + -0.0032756587, + 0.001594121, + -0.024608675, + 0.03736824, + -0.01462006, + -0.0101535525, + -0.023130836, + 0.024107266, + 0.01026571, + 0.022048846, + -0.01754935, + -0.00477659, + 0.017536156, + -0.0068152174, + 0.027419211, + 0.00022575821, + 0.014844376, + -0.0153062, + -0.004130035, + 0.019739721, + -0.019911256, + 0.009810483, + -0.012277948, + -0.019607771, + 0.0021920195, + -0.010285502, + 0.030955471, + -0.0008094308, + -0.008128121, + -0.02784145, + -0.017166695, + -0.0061323764, + 0.0031173187, + -0.0060433103, + -0.008655921, + 0.022629425, + -0.011341102, + 0.02726087, + 0.0069867526, + 0.015240225, + 0.010443843, + 0.018473001, + -0.00828646, + 0.01158521, + 0.006769035, + 0.04525885, + 0.017615326, + 0.007006545, + 0.02121756, + -0.03042767, + -0.017496571, + -0.00248066, + 0.016282631, + 0.005291195, + -0.02551913, + 0.02496494, + 0.0060268166, + 0.01361724, + 0.03356808, + 0.0044038314, + -0.006867998, + -0.0024790107, + -0.00921011, + 0.0009269488, + 0.0059278538, + 0.0129311, + 0.02026752, + -0.021837726, + -0.01765491, + -0.025585106, + -0.0042191013, + -0.015556905, + 0.0017202982, + 0.00556829, + -0.0023322164, + -0.0058519826, + -0.0043510515, + 0.01604512, + 0.03005821, + 0.0064721475, + -0.059588622, + 0.01359085, + 0.02728726, + -0.019634161, + -0.020465445, + -0.010892473, + -0.0066700727, + -0.017470181, + 0.0065843053, + 0.020861296, + 0.018776486, + 0.0073562125, + -0.009724715, + -0.01702155, + 0.0066073965, + 0.03000543, + -0.02134951, + -0.019383455, + -0.017061135, + -0.0003364725, + -0.027445601, + -0.0031222668, + 0.0030315514, + 0.03137771, + -0.024872575, + -0.00035234774, + -0.010621975, + 0.012686993, + -0.006867998, + -0.009388243, + -0.012614421, + -0.006953765, + 0.011802928, + 0.021798141, + -0.02565108, + -0.019964036, + 0.008253473, + 0.021494655, + -0.0036715087, + -0.014791595, + -0.01607151, + -0.022576645, + -0.0025433362, + 0.11579932, + -0.00944762, + 0.007824635, + -0.019330675, + 0.01704794, + 0.006953765, + -0.00266539, + 0.0059707374, + -0.010325087, + 0.01118936, + -0.01683682, + -0.010509818, + 0.012522055, + 0.005518809, + 0.019172335, + -0.013472095, + -0.04201288, + -0.04095728, + 0.0087218955, + -0.013359938, + 0.001095185, + -0.015108275, + 0.028553981, + 0.007857623, + -0.02013557, + 0.022497475, + 0.02567747, + 0.01652014, + 0.015213835, + -0.012343923, + -0.0012188881, + 0.0055484977, + -0.01947582, + 0.01797159, + -0.016374996, + 0.011070605, + 0.011090398, + 0.03676127, + 0.0011826019, + -0.0011380687, + -0.005888269, + 0.007171483, + -0.0002983307, + -0.01401309, + 0.008675713, + -0.03198468, + 0.0035560525, + 0.0101667475, + -0.0071648853, + -0.0145145, + 0.028659541, + -0.014316576, + -0.032565262, + -0.03528343, + -0.019409845, + 0.012211973, + -0.003786965, + -0.0033944137, + 0.009269488, + -0.0155041255, + -0.00009179803, + -0.0072638476, + 0.0057068374, + -0.0032690612, + -0.02174536, + -0.03884608, + 0.011987657, + -0.03108742, + -0.05140772, + -0.0044698063, + 0.0005814047, + -0.016981965, + -0.02897622, + 0.020095985, + 0.03148327, + -0.012000852, + 0.02430519, + -0.024846185, + 0.008906625, + 0.01797159, + -0.0168896, + -0.03396393, + -0.024291996, + -0.01417143, + -0.01937026, + 0.02464826, + 0.013577655, + -0.02274818, + -0.01301027, + -0.010015005, + 0.0060795965, + -0.0027890932, + 0.008273265, + 0.01997723, + -0.0030233045, + -0.009559778, + 0.01079351, + 0.019660551, + -0.00749476, + -0.02916095, + 0.03855579, + -0.0018308063, + -0.00847119, + -0.008405215, + 0.0070791175, + 0.010668158, + 0.014554085, + -0.002942485, + -0.00002896715, + 0.002726417, + 0.02491216, + -0.02945124, + 0.02272179, + 0.007903805, + -0.01351168, + 0.03676127, + 0.014329771, + 0.020439055, + -0.0035560525, + -0.0134589, + 0.010285502, + -0.0067756325, + 0.023473905, + 0.03211663, + -0.02997904, + 0.008900028, + -0.009348658, + 0.00041997212, + 0.0007108806, + -0.01411865, + -0.016031925, + 0.037104342, + -0.0069603627, + -0.029794311, + -0.01889524, + -0.009638947, + -0.01016015, + 0.018670926, + -0.017325036, + -0.0129311, + -0.020966856, + -0.0070263376, + 0.020940466, + -0.008345838, + -0.05219942, + -0.02335515, + 0.01142687, + 0.014580475, + 0.011255335, + 0.010041395, + 0.015385371, + 0.0050206976, + -0.012614421, + -0.0030084602, + -0.04436159, + -0.02810535, + -0.015438151, + -0.016850015, + -0.001156212, + 0.0197925, + 0.04953403, + 0.024041291, + 0.02905539, + 0.0017301944, + -0.010542805, + -0.00078798895, + -0.0046380428, + 0.0321958, + -0.008405215, + -0.002916095, + 0.018327855, + 0.02171897, + -0.024199631, + -0.006138974, + -0.012080023, + 0.04892706, + 0.002335515, + -0.009790691, + -0.011209153, + -0.05204108, + -0.0013368184, + -0.00847119, + 0.0042388937, + -0.011433467, + 0.011420272, + -0.0033234907, + 0.0031849432, + -0.0126935905, + 0.005106465, + -0.009177122, + 0.008728493, + 0.0012708434, + 0.010780315, + 0.009863263, + 0.0027462095, + -0.008352435, + -0.017417401, + -0.01517425, + -0.0004362597, + 0.023051666, + 0.01649375, + 0.0009162278, + -0.006000426, + 0.01229774, + -0.0029457838, + 0.012865125, + -0.00760032, + -0.01681043, + -0.016506946, + -0.0023190214, + -0.024252411, + 0.0047502, + 0.0025565312, + -0.03288194, + -0.016374996, + -0.009487205, + -0.010938656, + 0.028738711, + -0.02549274, + -0.020821711, + 0.01287832, + 0.00020472867, + 0.02288013, + 0.0121130105, + 0.012383508, + 0.0064754463, + 0.005782709, + -0.010430648, + -0.026086515, + -0.024978135, + 0.0008403566, + 0.015715245, + 0.02615249, + -0.01799798, + -0.031008251, + -0.005657356, + 0.0107209375, + -0.003496675, + -0.0033218414, + 0.03607513, + 0.03435978, + -0.0145145, + -0.0056672525, + 0.012950893, + -0.01612429, + 0.032433312, + -0.010298697, + -0.012634213, + 0.00533078, + 0.0022893324, + -0.0017747275, + 0.0031371112, + -0.015424956, + -0.0041498276, + 0.000092983515, + -0.016256241, + 0.01781325, + -0.022682205, + 0.0014473266, + 0.012522055, + 0.0019165737, + 0.013867945, + 0.0040442673, + 0.0068482053, + 0.01385475, + 0.0115720155, + -0.000658513, + -0.010984838, + 0.0010069434, + 0.03182634, + -0.009150732, + -0.016823625, + -0.00353626, + 0.0004201783, + 0.011908487, + -0.0035329612, + 0.009935835, + 0.01182272, + -0.02881788, + 0.0074617728, + 0.04441437, + -0.0058915676, + -0.007949987, + -0.014686035, + -0.022655815, + -0.020544615, + 0.0075277477, + 0.0015075288, + -0.0025532325, + -0.02161341, + -0.0155173205, + 0.017588936, + -0.002805587, + 0.015372176, + -0.013894335, + -0.01295749, + 0.011888695, + 0.0093024755, + -0.013221391, + 0.008556957, + -0.00007540736, + 0.02277457, + -0.022207186, + -0.01596595, + -0.013359938, + -0.013947115, + 0.012330728, + -0.0076069175, + -0.013452303, + -0.02934568, + -0.006719554, + 0.03048045, + 0.03132493, + 0.03169439, + 0.018354245, + -0.025453156, + -0.011888695, + -0.015715245, + -0.02997904, + 0.022391915, + 0.0002653432, + 0.018143125, + 0.02470104, + -0.01005459, + 0.02372461, + 0.009935835, + -0.00009071563, + -0.011816123, + 0.009638947, + -0.02884427, + -0.016823625, + -0.0032377231, + -0.023843365, + -0.016902795, + -0.004473105, + -0.00046965954, + -0.006086194, + -0.006557915, + 0.012106413, + 0.0069207777, + 0.008708701, + 0.041590642, + -0.0095861675, + 0.013656825, + -0.010727535, + -0.01440894, + 0.009559778, + -0.0049943076, + -0.023658635, + -0.013762386, + -0.015794415, + 0.027577551, + 0.005746423, + -0.008570152, + -0.02335515, + -0.0017499869, + -0.02100644, + -0.03222219, + -0.00361543, + 0.016638895, + 0.012416495, + -0.001147965, + 0.004288375, + 0.010648365, + 0.008253473, + 0.0168896, + -0.01514786, + 0.009533388, + 0.0074023954, + -0.037236292, + 0.02245789, + 0.01778686, + -0.0050239963, + -0.011156373, + 0.0048590587, + 0.008847248, + 0.017219475, + 0.020689761, + -0.022959301, + -0.02282735, + -0.0034867788, + -0.011882097, + -0.02953041, + 0.02330237, + 0.006482044, + -0.03348891, + 0.01762852, + 0.01778686, + -0.017747276, + 0.0016939081, + 0.01058239, + -0.0018786382, + -0.005000905, + 0.0010770418, + 0.00042471406, + -0.015213835, + 0.0107473275, + -0.02778867, + 0.018380634, + -0.0027445601, + -0.011308115, + 0.01905358, + -0.025176061, + -0.021705775, + -0.017509766, + -0.00675584, + -0.009850068, + -0.014079065, + -0.002444374, + -0.011380687, + -0.012812345, + -0.001224661, + -0.01021293, + -0.03734185, + 0.0047996813, + -0.0006828413, + -0.014606865, + -0.023473905, + 0.022009261, + 0.011750148, + -0.013775581, + -0.012574836, + 0.02129673, + -0.03319862, + 0.0031024744, + -0.0232232, + 0.013293963, + -0.04095728, + 0.021811336, + -0.0077058803, + -0.021468265, + -0.028501201, + 0.00498771, + 0.01118936, + -0.03019016, + -0.016084705, + 0.22104265, + -0.01018654, + -0.0043609478, + 0.03446534, + -0.0044665076, + 0.03420144, + 0.028659541, + -0.009361853, + -0.015952755, + 0.010391063, + -0.03288194, + -0.009546583, + 0.0064358613, + 0.011149775, + -0.003346582, + -0.04438798, + -0.026139295, + -0.02997904, + 0.0036781062, + 0.020729346, + -0.0038760314, + 0.0017565844, + -0.008088535, + -0.0043906365, + -0.004331259, + 0.03731546, + -0.014831181, + 0.010602183, + 0.023579465, + 0.009236501, + 0.013735996, + 0.017852835, + 0.0051493486, + 0.022497475, + 0.0020518226, + -0.014356161, + -0.0068482053, + 0.0036451188, + 0.01778686, + 0.016612506, + -0.007639905, + -0.0013153766, + -0.01140048, + 0.019251505, + -0.014276991, + 0.00757393, + -0.0073430175, + 0.011756745, + -0.0077916477, + 0.00994903, + -0.03016377, + -0.014606865, + 0.0398489, + 0.022734985, + 0.01913275, + -0.023025276, + 0.02802618, + 0.0003393589, + -0.015319395, + -0.015688855, + 0.0027033256, + 0.03040128, + -0.01459367, + 0.03277638, + -0.011096995, + 0.0061191814, + -0.03119298, + -0.0035296625, + 0.01572844, + -0.008708701, + -0.00947401, + -0.0028402237, + 0.0023371645, + -0.0190008, + -0.021996066, + -0.00841841, + 0.043701842, + 0.02235233, + 0.023091251, + 0.014263796, + -0.0061587663, + -0.015029105, + 0.023064861, + 0.024978135, + 0.01599234, + -0.02319681, + 0.006310509, + 0.0042289975, + -0.0035197663, + -0.011756745, + -0.017773665, + -0.0271817, + 0.0009904497, + -0.026429586, + -0.0056639537, + -0.0061818575, + 0.0017038044, + 0.0036220276, + 0.0068152174, + -0.019489015, + 0.0041894126, + 0.013524875, + 0.00902538, + -0.0017169995, + -0.012106413, + 0.006376484, + -0.0048194737, + -0.012917905, + -0.008662518, + -0.015609685, + 0.002441075, + -0.03119298, + 0.010173345, + -0.0049976064, + 0.0010250866, + -0.00031358743, + -0.00709891, + -0.02720809, + 0.01396031, + -0.014831181, + 0.014422135, + -0.013129026, + -0.023526685, + 0.0066568777, + -0.009817081, + -0.02124395, + -0.0037209901, + -0.03042767, + 0.009902848, + -0.028606761, + 0.03063879, + -0.0154909305, + 0.01617707, + -0.012502262, + 0.009355255, + 0.022787765, + 0.005835489, + -0.008266668, + 0.017377816, + -0.007917, + 0.005558394, + 0.008425008, + 0.02359266, + 0.0066733714, + -0.007798245, + -0.00796978, + 0.00477659, + 0.022814155, + -0.026495561, + 0.0019578082, + -0.011670978, + -0.018829266, + 0.00833924, + -0.0037308864, + 0.05404672, + 0.002734664, + 0.0038166537, + -0.01462006, + 0.021969676, + 0.03591679, + -0.04042948, + -0.0063171065, + 0.03372642, + -0.018512586, + -0.03639181, + 0.0058156964, + -0.16657369, + 0.02388295, + 0.03887247, + -0.03069157, + 0.018802876, + 0.020742541, + 0.0072110677, + -0.030902691, + -0.001330221, + -0.0039881887, + 0.057266302, + 0.017404206, + -0.02668029, + -0.02264262, + -0.016137484, + -0.021705775, + -0.018195905, + 0.01393392, + 0.021824531, + 0.00335153, + 0.037104342, + -0.011123385, + -0.01227135, + 0.0043180636, + -0.02681224, + 0.03005821, + -0.0025268425, + -0.009744507, + 0.026587926, + -0.00997542, + -0.0015355682, + -0.02055781, + 0.01615068, + 0.0277095, + 0.015345785, + 0.0077322703, + -0.009012185, + -0.007903805, + -0.01818271, + -0.0024361268, + 0.00039420064, + -0.0028996014, + 0.004647939, + 0.01947582, + 0.01462006, + 0.005818995, + 0.007870818, + -0.020755736, + -0.0066964626, + -0.0069207777, + 0.03029572, + -0.012040438, + -0.0007537644, + 0.015741635, + -0.0008040703, + 0.0022596437, + 0.0138019705, + 0.03507231, + 0.006237936, + -0.010509818, + -0.029715141, + -0.0008189147, + 0.016559726, + -0.011941475, + -0.0056309663, + -0.0060169203, + -0.008088535, + 0.025954565, + -0.03119298, + 0.01403948, + -0.009434425, + -0.012198778, + 0.021824531, + -0.02884427, + -0.0005323358, + 0.01221857, + -0.0037539776, + 0.01638819, + 0.002792392, + -0.00027915672, + -0.030876301, + 0.0591136, + -0.021125196, + -0.0030266033, + -0.0074749677, + 0.02396212, + 0.0057266303, + 0.012845333, + -0.0398489, + 0.001264246, + 0.029794311, + -0.01947582, + -0.005861879, + 0.004915138, + 0.010015005, + 0.0108199, + -0.00955318, + 0.023869755, + -0.021257145, + -0.026535146, + 0.0059410487, + -0.016981965, + -0.0059806337, + 0.02050503, + 0.03285555, + 0.00878787, + 0.0047172126, + 0.030902691, + 0.00913094, + 0.010932058, + -0.0065513174, + 0.0013277469, + 0.011921682, + 0.012937698, + -0.01572844, + -0.00045935094, + 0.02142868, + 0.009196915, + 0.0543634, + 0.013551265, + 0.010984838, + -0.0054000537, + 0.013346743, + 0.0024377762, + -0.0016279331, + -0.002739612, + -0.087720364, + 0.03794882, + -0.0071780803, + 0.015055495, + -0.008873638, + 0.05370365, + 0.03449173, + 0.021837726, + 0.010371271, + 0.010509818, + -0.00625443, + -0.015688855, + -0.0030513438, + -0.003892525, + 0.004258686, + -0.02908178, + -0.0017433894, + 0.009823678, + 0.0056045763, + 0.03182634, + -0.00424879, + -0.01580761, + 0.004393935, + -0.03019016, + -0.012528652, + -0.0033449326, + -0.019660551, + 0.007323225, + 0.02364544, + 0.009256293, + 0.0026505457, + -0.018908435, + -0.009144135, + -0.011591808, + -0.00596414, + 0.03346252, + -0.02731365, + 0.00014906227, + 0.03581123, + -0.03596957, + -0.0015421656, + 0.0074155903, + 0.006613994, + -0.010391063, + -0.00971152, + -0.022761375, + -0.039426662, + -0.012752968, + -0.0039552012, + -0.019304285, + -0.02134951, + -0.013498485, + 0.0021392393, + -0.012970685, + 0.010272307, + -0.0057233316, + 0.0010283854, + 0.008246875, + -0.03876691, + 0.0028517693, + 0.013722801, + -0.0077454653, + -0.02910817, + 0.026086515, + 0.04214483, + 0.0046182503, + -0.016005535, + -0.019700136, + 0.014738815, + -0.0364182, + -0.02493855, + 0.023421125, + -0.03111381, + -0.009177122, + -0.02211482, + -0.02900261, + 0.0039881887, + 0.0072638476, + 0.015820805, + -0.015715245, + 0.0035956376, + -0.01902719, + -0.009751105, + -0.007686088, + 0.0012931101, + 0.017879225, + 0.01351168, + -0.01501591, + 0.014474915, + -0.03055962, + 0.030929081, + 0.007376005, + 0.029029, + -0.01287832, + -0.012654006, + 0.016638895, + 0.005241714, + 0.01058239, + 0.02016196, + 0.01918553, + -0.016533336, + -0.02459548, + -0.0865592, + 0.012673798, + -0.005660655, + -0.009520193, + 0.0069999476, + -0.0101799425, + 0.01422421, + -0.0045951586, + 0.023896145, + -0.00778505, + -0.028685931, + 0.02261623, + -0.00899899, + -0.019779306, + -0.02583581, + 0.000015501548, + 0.013722801, + 0.018855656, + 0.025228841, + -0.011149775, + -0.0092892805, + 0.0047567976, + 0.02132312, + 0.0022266563, + -0.04499495, + 0.0070263376, + -0.00899899, + 0.03106103, + -0.03005821, + 0.0013928972, + 0.006953765, + -0.045813043, + 0.0057068374, + -0.00079664815, + -0.0084448, + -0.014580475, + -0.014131845, + 0.018697316, + 0.02390934, + 0.037183512, + -0.023117641, + -0.009638947, + 0.01356446, + -0.01475201, + -0.011011228, + -0.009137537, + 0.01403948, + 0.0072242627, + 0.02343432, + 0.009348658, + 0.0031255656, + 0.021072416, + 0.008279863, + -0.0115588205, + 0.005142751, + -0.048452042, + 0.007844428, + -0.0013862997, + -0.00683501, + 0.0033680238, + 0.020676566, + 0.025532326, + 0.024291996, + 0.00567385, + 0.010259112, + -0.028791491, + -0.010173345, + 0.0132477805, + 0.019013995, + -0.017668106, + -0.029715141, + 0.0129311, + 0.002124395, + 0.022576645, + -0.00038244884, + -0.01641458, + 0.026799046, + -0.02277457, + -0.03385837, + 0.009454218, + 0.003922214, + -0.0029886675, + -0.05547178, + 0.017325036, + 0.021098806, + -0.03063879, + -0.021679385, + -0.01158521, + -0.016929185, + 0.0279734, + 0.00261261, + -0.007844428, + 0.017509766, + -0.0015363928, + 0.000819327, + 0.020755736, + -0.017984785, + -0.02734004, + 0.01776047, + 0.017298644, + 0.010377868, + -0.016955575, + -0.017113915, + -0.02119117, + -0.00849758, + 0.02039947, + -0.019660551, + -0.024687845, + 0.010727535, + 0.023341956, + -0.0047963825, + 0.02908178, + -0.00881426, + 0.01612429, + 0.008504177, + -0.004245491, + -0.012997075, + -0.017470181, + -0.0068877903, + 0.015979145, + 0.02258984, + 0.019713331, + 0.0018934825, + -0.0068745953, + 0.03834467, + 0.00960596, + 0.010813302, + -0.017298644, + 0.019660551, + -0.00083252206, + 0.0095861675, + -0.0023338657, + -0.021916896, + -0.0017054537, + -0.00839202, + -0.0095861675, + 0.009091355, + 0.0049547227, + -0.01419782, + 0.057319082, + 0.018433416, + 0.009282683, + -0.014250601, + -0.00833924, + 0.04127396, + 0.009005588, + 0.014079065, + -0.0055748876, + -0.029794311, + 0.012805748, + -0.005192233, + -0.012416495, + -0.03533621, + -0.020795321, + -0.008009365, + -0.021916896, + 0.0054957177, + 0.0084513975, + 0.0029787712, + 0.03195829, + -0.0072506526, + 0.03063879, + 0.01517425, + -0.02892344, + -0.0039123176, + 0.03868774, + -0.012997075, + 0.021969676, + -0.028633151, + 0.021098806, + 0.0149631305, + -0.017219475, + -0.024226021, + 0.00781144, + -0.01348529, + -0.011103593, + -0.017298644, + 0.00799617, + 0.02807896, + 0.0024691145, + -0.006313808, + -0.01673126, + -0.01562288, + -0.0024790107, + -0.0059311525, + -0.01367002, + -0.0055122115, + -0.010457038 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 7, + "total_tokens": 7 + } +} diff --git a/vectorstores/inmemory/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr b/vectorstores/inmemory/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr new file mode 100644 index 000000000..0af1b8fa2 --- /dev/null +++ b/vectorstores/inmemory/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr @@ -0,0 +1,18646 @@ +httprr trace v1 +334 334599 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 138 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["Tokyo","Yokohama","Osaka","Nagoya","Sapporo","Fukuoka","Dublin","Paris","London ","New York"]}HTTP/2.0 200 OK +Content-Length: 333642 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:27:36 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 190 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6659cb4779-w85sk +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999984 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_40ca5b13f8b84f13af1b3ecc6320390e + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.001070031, + 0.008037085, + -0.008887224, + -0.008638722, + -0.010875242, + 0.014713947, + -0.029375577, + 0.013065985, + -0.011051809, + -0.035548896, + 0.001566218, + -0.02474559, + 0.016296513, + -0.027125979, + -0.007997848, + -0.021070372, + 0.021711247, + -0.01803603, + 0.0024016432, + -0.02207746, + -0.011306851, + 0.012686692, + -0.0024065478, + -0.019016959, + -0.008344443, + -0.011803855, + 0.0013651273, + -0.015302505, + 0.008965698, + -0.020010969, + 0.019043118, + -0.019095434, + -0.010522107, + -0.022875283, + 0.008828368, + -0.004652877, + -0.015328663, + -0.0060261786, + -0.0023493269, + -0.0118496325, + 0.009122647, + -0.008207113, + 0.0015155366, + -0.017251285, + -0.018323768, + 0.01607417, + -0.016649649, + 0.016571173, + -0.00018801155, + 0.012255083, + 0.015119398, + 0.020311786, + -0.032331448, + -0.0067684157, + -0.026602816, + -0.016388068, + -0.028486202, + -0.0007291578, + 0.000018967197, + 0.0041558724, + -0.0033645893, + -0.0059934813, + -0.015982617, + 0.0117123015, + 0.014269259, + -0.011346088, + -0.011241456, + 0.028616993, + -0.015302505, + 0.0038223565, + 0.013242552, + 0.017395156, + -0.0010079053, + -0.0024752128, + 0.031625178, + -0.008010927, + -0.0015245284, + 0.004652877, + 0.011856171, + 0.009848535, + 0.01523711, + -0.035601214, + 0.004365138, + 0.0026583197, + 0.013190236, + 0.007605476, + -0.008743354, + 0.0360459, + -0.002671399, + -0.00082071126, + 0.009534637, + 0.003756961, + 0.00992047, + 0.01062674, + -0.024850221, + -0.016113406, + -0.006454518, + 0.043344017, + -0.01857227, + -0.013196776, + -0.0015964633, + 0.009815837, + -0.0037242635, + -0.011529195, + -0.025883468, + 0.011568432, + 0.014321575, + -0.016440384, + 0.008906842, + -0.008710656, + -0.0019765736, + 0.027989198, + -0.013085604, + -0.059065055, + -0.017722132, + -0.012961352, + 0.005476858, + -0.01662349, + -0.010234368, + -0.014753184, + 0.018807694, + 0.019265462, + 0.011856171, + 0.002682843, + 0.02725677, + 0.00033167689, + -0.006483946, + -0.019330857, + 0.00050926604, + -0.009613113, + 0.026995188, + 0.011744999, + -0.0058986577, + 0.015629482, + -0.021004977, + 0.013903045, + -0.016440384, + 0.01131993, + -0.01103873, + -0.006441439, + 0.0063368063, + 0.0090637915, + -0.01286326, + 0.013347185, + 0.0097242845, + 0.02502025, + 0.023136863, + -0.0030392476, + 0.015851825, + -0.005967323, + 0.003730803, + -0.0050256304, + 0.016976625, + 0.0071804062, + 0.009580415, + 0.0035738542, + 0.03225297, + 0.018611507, + 0.0059280857, + 0.010548265, + 0.006931904, + 0.004237617, + 0.031389754, + -0.021345032, + 0.0030081847, + 0.0127063105, + 0.012032739, + 0.014413129, + -0.00033699026, + -0.011588051, + -0.018336847, + 0.019448569, + -0.04049278, + 0.018624587, + 0.005208737, + 0.017578263, + 0.011006032, + 0.009292675, + -0.019854018, + -0.007971689, + -0.0023803897, + 0.00003410264, + 0.02683824, + 0.009927009, + -0.007919373, + 0.005771137, + 0.027779931, + 0.01551177, + -0.0011803856, + -0.014504682, + 0.025870388, + 0.035548896, + 0.031180488, + 0.0071346294, + -0.67843723, + -0.03280229, + 0.0011599495, + 0.004224538, + 0.020468736, + 0.005329719, + 0.018245295, + 0.015498691, + -0.012830562, + 0.013562989, + -0.027230611, + 0.017996792, + -0.01789216, + -0.012601678, + -0.008749894, + 0.0048032864, + 0.015263268, + -0.0027139059, + -0.004208189, + 0.0105548045, + 0.0047771283, + 0.017813684, + -0.008409838, + -0.0052348953, + 0.013236013, + -0.010567884, + 0.007697029, + -0.004306282, + -0.009416926, + 0.02362079, + -0.029794108, + 0.049700443, + 0.0050485185, + -0.01508016, + 0.039917305, + -0.015694877, + -0.02305839, + 0.017565183, + 0.02054721, + 0.031258963, + 0.0014574982, + 0.003841975, + 0.0028806638, + -0.0026027337, + 0.005336258, + 0.002027255, + 0.022208251, + -0.023280734, + 0.008991856, + -0.008220192, + 0.021828959, + -0.036229007, + -0.016675808, + -0.01634883, + -0.0004142385, + 0.0098354565, + 0.0035967426, + -0.0034332543, + -0.0009694856, + -0.009534637, + -0.015851825, + -0.0092011215, + -0.027779931, + -0.021279637, + -0.012366255, + 0.012405492, + -0.010437093, + -0.023306891, + -0.0006384218, + -0.01968399, + 0.004554784, + 0.021397348, + -0.0070365365, + -0.009586954, + 0.017656736, + 0.006235444, + 0.0259881, + -0.031991392, + -0.0034169054, + -0.007618555, + 0.004201649, + 0.012183148, + -0.01969707, + -0.0053035603, + 0.015681798, + -0.040178884, + -0.035967425, + 0.002808729, + 0.026602816, + -0.012882878, + 0.0046430677, + 0.0036719472, + 0.0063923923, + 0.00908995, + -0.011810395, + 0.011882329, + -0.0016970086, + -0.008050164, + 0.006748797, + -0.0071346294, + -0.014216943, + -0.015446375, + 0.009750443, + 0.0036261706, + -0.015302505, + -0.004280124, + -0.014910133, + 0.017238207, + 0.021894353, + -0.014923212, + 0.006107923, + -0.010240907, + -0.017722132, + 0.00039257627, + 0.018493796, + -0.023019154, + 0.017839843, + -0.00011781375, + 0.022391358, + 0.0090637915, + 0.007363513, + 0.0019733037, + 0.016374988, + 0.022574464, + 0.017251285, + 0.015106319, + 0.006078495, + 0.0010798402, + -0.00642509, + 0.0061733183, + -0.001871941, + 0.014426208, + 0.010574424, + -0.006467597, + 0.023176102, + -0.009488861, + -0.009181503, + -0.0059346254, + 0.018493796, + -0.036385957, + -0.033587035, + -0.012425111, + -0.0015277981, + -0.003521538, + 0.012085055, + -0.026419709, + -0.016937388, + 0.0007418282, + -0.019827861, + 0.00503217, + -0.008213652, + 0.0026615895, + -0.029794108, + 0.01914775, + -0.0060065603, + -0.013484515, + -0.00008174415, + -0.0026632245, + -0.021057293, + 0.0029525987, + 0.019043118, + 0.0080697825, + -0.03832166, + -0.0014574982, + 0.0060686856, + -0.012071976, + 0.012804404, + 0.017447472, + -0.0054833977, + -0.008867606, + -0.02151506, + -0.019265462, + -0.02388237, + 0.003953147, + 0.018925406, + 0.0033090033, + 0.010541726, + -0.013628385, + -0.0012694866, + 0.002153141, + 0.011091046, + -0.020730317, + -0.013602227, + 0.011758079, + 0.02027255, + -0.01971015, + 0.011267614, + 0.017944476, + -0.00084196473, + 0.0032043706, + -0.0073308153, + 0.015877984, + 0.008030545, + -0.000106778294, + 0.0120981345, + -0.012909036, + 0.009730823, + -0.003897561, + -0.021828959, + 0.015825668, + 0.032933082, + -0.01523711, + 0.0024572292, + -0.00950194, + 0.016322672, + -0.012124293, + -0.00656569, + -0.018951563, + 0.031206647, + 0.014596236, + 0.014648552, + -0.015210952, + -0.0068861274, + 0.01857227, + -0.006931904, + 0.03288077, + 0.006833811, + 0.023019154, + -0.019396253, + -0.0068665086, + 0.021201164, + -0.034214832, + -0.016257277, + -0.018415323, + -0.012765166, + 0.016741201, + -0.0011983692, + 0.033456247, + 0.0073308153, + -0.0059738625, + -0.034450255, + -0.013406041, + 0.001732976, + 0.021188084, + -0.01522403, + -0.029009365, + 0.00009017401, + -0.024640957, + 0.030081848, + 0.012562441, + 0.023267655, + 0.010253986, + 0.028957048, + -0.019670913, + -0.000803545, + 0.001984748, + 0.035862792, + 0.014269259, + -0.009632731, + 0.01886001, + -0.016688885, + -0.009096489, + -0.005699202, + -0.004064319, + 0.0011893774, + -0.03382246, + 0.021619692, + -0.00048596898, + 0.014831658, + 0.038504764, + -0.0002630118, + 0.0009237089, + 0.0055128257, + 0.005270863, + -0.0011632192, + -0.0044926587, + 0.02725677, + 0.012941734, + -0.007906294, + -0.008298666, + -0.015315584, + 0.006369504, + -0.012967892, + -0.0045318957, + 0.019893257, + -0.016701965, + -0.025831152, + -0.0170551, + 0.01285672, + 0.01647962, + -0.007389671, + -0.04444266, + -0.005100835, + 0.0046365284, + 0.0043945657, + -0.024654036, + -0.01076407, + -0.013039826, + -0.01131339, + 0.019801702, + 0.009966247, + 0.023816975, + 0.001081475, + -0.01789216, + -0.017866002, + -0.009789679, + 0.02207746, + -0.013334106, + -0.011908487, + -0.01048941, + 0.015197872, + -0.008148257, + -0.00030837982, + 0.005431081, + 0.026210444, + 0.011267614, + 0.005355877, + -0.011143362, + -0.0051891184, + -0.0034365242, + 0.017565183, + -0.011091046, + -0.006304109, + 0.010528646, + 0.012549362, + -0.009874693, + -0.0146093145, + 0.008056703, + 0.02417011, + -0.0012057262, + -0.017709052, + 0.006680132, + -0.026668211, + -0.0089526195, + 0.08569403, + 0.0059607835, + 0.01145726, + -0.005633807, + 0.0029362498, + 0.0073308153, + -0.016008774, + 0.0008820194, + 0.0099727865, + 0.008056703, + 0.0038452449, + -0.009233819, + -0.0020174456, + 0.011130284, + -0.0024294362, + -0.00656569, + -0.01676736, + -0.027361402, + 0.02418319, + -0.01969707, + 0.00038338007, + 0.00628776, + 0.0027972849, + 0.012130832, + -0.000813763, + -0.0035476962, + 0.024797905, + 0.018101424, + 0.01913467, + -0.025778836, + 0.0021040945, + 0.019644754, + -0.018402243, + 0.017133573, + -0.008226731, + -0.00004115307, + 0.009966247, + 0.0212404, + 0.0062092855, + -0.01160113, + 0.007513922, + 0.015394058, + 0.00824635, + 0.00038481058, + 0.014138469, + -0.019592438, + -0.018101424, + 0.02024639, + -0.019500885, + -0.018506875, + 0.032776136, + 0.006944983, + -0.041042104, + -0.017656736, + -0.017473629, + 0.008900303, + -0.009547717, + -0.013615306, + -0.0027694919, + 0.010038181, + 0.0066016577, + -0.042114586, + 0.005257784, + -0.011921567, + -0.024614798, + -0.037903126, + -0.002767857, + -0.016741201, + -0.03633364, + -0.0063923923, + -0.005558602, + -0.029401736, + -0.022796808, + 0.024300901, + 0.01607417, + -0.03047422, + 0.008095941, + -0.01621804, + -0.0010790228, + 0.036935277, + -0.026027337, + -0.011398404, + -0.012117753, + -0.008710656, + -0.031886756, + 0.025268752, + 0.031651337, + -0.03280229, + -0.0027760314, + -0.00006381153, + 0.0148055, + -0.00684689, + 0.0153679, + 0.0212404, + 0.0027466035, + -0.011359167, + 0.010155893, + 0.032357603, + -0.016034933, + -0.01313138, + 0.023660026, + -0.014033835, + 0.008462154, + 0.015812589, + 0.015119398, + 0.011346088, + 0.012922116, + 0.018820774, + -0.010777148, + 0.0012743913, + 0.02934942, + -0.018402243, + 0.0084294565, + 0.013484515, + -0.013824571, + 0.021920511, + 0.010280144, + 0.021397348, + 0.011928107, + -0.019762466, + 0.0070299967, + -0.023293814, + 0.015681798, + 0.02989874, + 0.0058855787, + -0.014334654, + 0.0138376495, + -0.009070331, + -0.0061242715, + 0.00097193796, + -0.009259977, + 0.013772255, + -0.02178972, + -0.008050164, + -0.022836046, + 0.001999462, + -0.033482403, + 0.0128436405, + 0.0031079126, + -0.031075856, + -0.007415829, + 0.007481225, + 0.01160113, + -0.0012327018, + -0.03675217, + -0.021985907, + 0.0017297062, + 0.010665976, + -0.0066310856, + 0.017826764, + 0.005404923, + 0.020442577, + -0.01061366, + 0.0062975693, + -0.030918907, + -0.02628892, + -0.025124881, + -0.028172305, + 0.0058299927, + 0.008847987, + 0.031520545, + 0.011189139, + 0.005404923, + -0.011640367, + -0.007997848, + 0.002779301, + 0.004253966, + 0.020939581, + -0.013445278, + 0.02516412, + 0.012366255, + 0.01816682, + -0.02751835, + 0.007487764, + -0.02780609, + 0.023568474, + -0.0027482384, + -0.011195679, + -0.009652349, + -0.02516412, + -0.00907687, + -0.019213146, + 0.005195658, + 0.0005362416, + -0.0025929245, + -0.0032763055, + -0.00060163694, + -0.0124578085, + 0.023555394, + 0.007991308, + 0.007605476, + -0.009338452, + 0.0002950964, + -0.0023918338, + -0.006346616, + 0.005257784, + -0.012680152, + -0.005404923, + -0.0026926524, + 0.025961943, + 0.018820774, + -0.014334654, + -0.0045482446, + 0.002601099, + 0.012130832, + 0.03944646, + 0.0059084673, + -0.015302505, + 0.007278499, + -0.012215846, + -0.026053496, + -0.011751539, + 0.007383132, + -0.01940933, + -0.02359463, + 0.010090498, + -0.006676862, + 0.028303094, + -0.0248633, + -0.015642561, + 0.019893257, + 0.011862711, + 0.032043707, + 0.015681798, + 0.010665976, + 0.008913382, + -0.0071346294, + -0.004737891, + 0.004201649, + -0.015982617, + -0.0070692343, + 0.023110706, + 0.020913424, + -0.011496497, + -0.037301492, + -0.016322672, + 0.004247426, + -0.0016087248, + -0.0010675786, + 0.023856213, + 0.0015899237, + 0.00489157, + -0.026184287, + -0.0014599506, + -0.022875283, + 0.036569063, + -0.015276347, + -0.002754778, + -0.0008574961, + -0.019108513, + -0.0015980981, + 0.014269259, + -0.003802738, + 0.003662138, + 0.015027844, + -0.012621297, + 0.0031226266, + -0.018258374, + -0.00531337, + 0.013942283, + 0.00043201784, + 0.024810985, + 0.009325373, + -0.0010871972, + 0.012804404, + 0.005467049, + -0.011267614, + 0.0054016532, + -0.00014376752, + 0.023686185, + -0.004260505, + -0.011594591, + -0.021358112, + -0.0018523225, + 0.003202736, + 0.009214201, + 0.005215277, + -0.007291578, + -0.01774829, + -0.0049209977, + 0.008409838, + 0.007468146, + -0.0029248057, + -0.011758079, + -0.025216436, + -0.024797905, + -0.022260567, + -0.0061831274, + 0.025948863, + -0.018768458, + 0.0013634925, + 0.0025880197, + -0.018977722, + 0.023960846, + -0.013347185, + -0.0044795796, + 0.017852923, + 0.027884565, + -0.024379376, + 0.011431102, + 0.0070496155, + 0.021763563, + -0.020507973, + -0.0012531378, + 0.00030286208, + -0.011404944, + 0.012928654, + -0.0138376495, + -0.0099727865, + -0.030500377, + 0.006451248, + 0.012124293, + 0.0069384435, + 0.025595728, + 0.033717826, + -0.026158128, + -0.0028888383, + -0.020298708, + -0.015564086, + 0.0181799, + -0.0051466115, + 0.014504682, + 0.020442577, + -0.012464348, + -0.0010021833, + 0.013536831, + -0.013458357, + -0.0059411647, + -0.0073308153, + -0.027701458, + -0.0069580623, + 0.0068534296, + -0.0110779675, + -0.012078515, + -0.02054721, + 0.0036261706, + -0.010947176, + 0.008900303, + 0.010430554, + 0.0046201795, + 0.0011158077, + 0.015446375, + 0.01453084, + 0.012281241, + -0.0113264695, + -0.029113997, + 0.006160239, + -0.0033367963, + -0.029584844, + -0.03897561, + -0.005100835, + 0.020926502, + 0.0034201753, + -0.014897054, + -0.020141758, + 0.011208758, + -0.021449665, + -0.007389671, + -0.013536831, + 0.018846931, + 0.012202767, + -0.012340097, + 0.007808201, + 0.0061275414, + 0.014779342, + 0.00823981, + -0.0034790311, + 0.018336847, + 0.038766347, + -0.036569063, + 0.032226812, + 0.006408741, + -0.016610412, + -0.010502488, + 0.005493207, + 0.005646886, + -0.002699192, + 0.0068534296, + -0.01702894, + -0.010136275, + -0.012111213, + 0.0022724874, + -0.026642054, + 0.017996792, + 0.007605476, + -0.03591511, + 0.026158128, + 0.017695975, + -0.01494937, + 0.005656695, + 0.0059346254, + -0.00475097, + -0.0011787507, + 0.004162412, + -0.025791915, + -0.0034005567, + -0.000193938, + -0.031991392, + 0.01984094, + -0.012261623, + 0.014713947, + 0.0045318957, + 0.00922074, + -0.01075753, + -0.019854018, + 0.0005378765, + -0.015642561, + -0.014413129, + 0.026040416, + -0.0013667622, + -0.025621887, + -0.0122354645, + 0.017983712, + -0.045619775, + 0.009214201, + 0.008834908, + -0.007808201, + -0.024928696, + 0.008167876, + 0.023581553, + -0.026380472, + -0.016937388, + 0.009998945, + -0.022862203, + -0.0003002054, + -0.011888869, + 0.027570667, + -0.031102015, + 0.015616402, + -0.0011501402, + -0.0022463293, + -0.031625178, + -0.0061177323, + 0.011391865, + -0.008043624, + -0.008468694, + 0.23981772, + -0.023542315, + -0.0048000165, + 0.038949452, + -0.0032223545, + 0.039629564, + 0.030134164, + -0.0012049088, + -0.014687789, + 0.00032452427, + -0.03131128, + 0.001627526, + 0.020834949, + -0.0019160829, + -0.0029591382, + -0.025098724, + -0.021292716, + -0.03301156, + -0.038190868, + -0.0060294485, + 0.020141758, + -0.00258475, + -0.002694287, + -0.01341912, + 0.014269259, + 0.012693232, + -0.011287232, + -0.0056665046, + 0.020442577, + 0.019867098, + 0.0048588724, + 0.008017466, + -0.00517277, + 0.02122732, + 0.00013763671, + -0.009600033, + -0.015040924, + -0.0046626865, + 0.02725677, + 0.023673106, + -0.004567863, + 0.0020861106, + -0.010796768, + -0.010247447, + 0.00038848908, + 0.021894353, + -0.007873597, + 0.008364062, + -0.011980423, + 0.034162514, + -0.032933082, + -0.01048941, + 0.030788116, + 0.01662349, + 0.0094234655, + -0.013602227, + 0.036412116, + 0.015250188, + -0.009573875, + -0.017172812, + -0.020861108, + 0.010417474, + -0.010012023, + 0.027230611, + 0.0048163654, + 0.0001181203, + -0.023411525, + 0.012869799, + 0.0062092855, + -0.00083624263, + 0.014923212, + -0.011470339, + -0.0033940172, + -0.01734284, + -0.02893089, + -0.016597332, + 0.032226812, + -0.0033874775, + 0.02177664, + 0.037118383, + -0.008403298, + 0.006833811, + 0.022718335, + 0.0007839264, + 0.009279596, + -0.016793517, + 0.023503078, + 0.0156033235, + 0.0077885827, + -0.008468694, + -0.01369378, + -0.018140662, + -0.014596236, + -0.020390261, + -0.0070757736, + 0.014700868, + 0.0005292934, + 0.008978778, + -7.4080634e-7, + -0.016793517, + -0.008187494, + -0.001349596, + 0.015904142, + -0.009586954, + 0.004257235, + 0.0059869415, + -0.000112091664, + -0.0023264384, + -0.006052337, + -0.03060501, + -0.006232174, + -0.03479031, + 0.008972238, + 0.016989704, + 0.0020713967, + -0.0068926667, + -0.008861066, + -0.023660026, + 0.017368997, + -0.02263986, + 0.014910133, + -0.02024639, + -0.015001686, + 0.00115341, + -0.0036850262, + -0.011025651, + -0.0018212596, + -0.01607417, + 0.0069711413, + -0.035732005, + 0.010541726, + 0.0032730359, + 0.014230021, + 0.0020223502, + -0.0090637915, + 0.021266557, + 0.011542274, + -0.008004387, + -0.014779342, + 0.014975528, + 0.018807694, + -0.012745548, + 0.018075267, + -0.0004217998, + -0.0018572271, + -0.011548813, + 0.0101951305, + 0.012085055, + -0.013458357, + 0.008677959, + -0.0100578, + -0.024000082, + -0.0058365325, + -0.01675428, + 0.031128172, + -0.0050550583, + -0.0127063105, + -0.020298708, + -0.00038276697, + 0.01704202, + -0.029506369, + -0.016231118, + 0.046927683, + -0.017277444, + -0.030029532, + -0.0043520587, + -0.16908614, + 0.027884565, + 0.020848028, + -0.021148847, + 0.019357014, + 0.012948274, + -0.0101951305, + -0.019644754, + -0.0063793133, + 0.023372287, + 0.053101, + 0.018611507, + -0.007952071, + -0.014190785, + 0.0032615915, + -0.019082354, + 0.00040769894, + -0.006382583, + 0.025674203, + 0.01229432, + 0.044364184, + -0.02976795, + 0.002838157, + 0.0011722111, + -0.0028659499, + 0.026053496, + -0.014556998, + 0.009881233, + 0.023136863, + -0.015917221, + -0.02390853, + -0.017447472, + 0.037223015, + 0.0265505, + 0.009979326, + 0.008887224, + 0.00011883556, + -0.01760442, + -0.019880177, + 0.027989198, + 0.006464327, + 0.013916125, + -0.0006760241, + -0.0034496032, + 0.008128638, + 0.027282927, + 0.0042703142, + -0.0068272715, + -0.016244197, + -0.011287232, + 0.031651337, + -0.015694877, + -0.007154248, + 0.018650746, + 0.0056959325, + -0.0024425152, + 0.0062289042, + 0.0106202, + 0.004165682, + -0.012653994, + -0.032906923, + 0.0010160798, + 0.019016959, + -0.0011010937, + -0.012183148, + -0.0034430637, + -0.007873597, + -0.0070757736, + -0.017172812, + 0.020586446, + 0.0003275897, + -0.011915027, + 0.017578263, + -0.03295924, + 0.015446375, + 0.00017779352, + -0.0087041175, + 0.025556492, + 0.011686143, + 0.0088414475, + -0.022208251, + 0.042951647, + -0.014190785, + -0.013680701, + -0.0022872014, + 0.010999493, + -0.0076774107, + -0.0022103619, + -0.03175597, + -0.01956628, + 0.007363513, + -0.018467639, + -0.007814741, + -0.011673065, + 0.000020998028, + 0.008854526, + -0.007952071, + 0.02934942, + -0.021972828, + 0.003253417, + 0.006735718, + -0.008697578, + -0.010077419, + 0.033796303, + 0.024784826, + 0.025922704, + 0.019827861, + 0.019278541, + 0.01104527, + 0.011012572, + -0.029297104, + -0.005084486, + 0.012915576, + 0.028747782, + -0.032906923, + 0.002151506, + 0.01940933, + -0.0082921265, + 0.018323768, + 0.01257552, + 0.044808872, + -0.0100839585, + 0.002180934, + 0.025648044, + -0.016374988, + -0.023660026, + -0.07219643, + -0.000642509, + 0.0045318957, + 0.018546114, + -0.004384756, + 0.042402327, + 0.0056501557, + 0.01691123, + 0.00377331, + 0.013432199, + -0.0024212617, + -0.017238207, + 0.0048523326, + -0.016322672, + 0.028041514, + -0.00335478, + 0.0059313555, + -0.002205457, + -0.0023362478, + 0.023960846, + -0.018389164, + -0.016414225, + 0.0028446964, + -0.008965698, + -0.014844738, + 0.008847987, + -0.026785923, + 0.011398404, + 0.01508016, + 0.007853978, + -0.003701375, + -0.0012931925, + 0.0024555943, + -0.029140154, + -0.02109653, + 0.024536325, + -0.019618597, + 0.013183696, + 0.033299297, + -0.045096613, + -0.010783688, + 0.0100839585, + 0.003004915, + -0.011071428, + -0.013615306, + -0.0029575033, + -0.028538518, + 0.005421272, + 0.0048163654, + -0.018768458, + -0.0122354645, + -0.0019226224, + -0.00081049325, + 0.0025455127, + 0.014779342, + -0.0028005545, + 0.0037536914, + 0.01565564, + -0.030003373, + 0.0070823133, + 0.010594042, + -0.0046201795, + -0.018768458, + 0.026458947, + 0.01551177, + 0.008762973, + -0.019200066, + -0.026668211, + 0.025765756, + -0.022992995, + -0.021384269, + 0.013098682, + -0.016871992, + 0.00684689, + -0.018506875, + -0.014046915, + -0.0028561407, + -0.003212545, + 0.014897054, + -0.02362079, + -0.011346088, + -0.030526536, + -0.0023934687, + 0.007376592, + -0.0024931966, + 0.014910133, + 0.012058897, + -0.0058071045, + 0.013301408, + -0.01916083, + 0.014883975, + 0.009403847, + 0.0030997382, + -0.0159303, + -0.007572778, + 0.026432788, + 0.0051662303, + -0.009698126, + 0.005143342, + 0.018977722, + -0.015524849, + -0.024078557, + -0.09129187, + 0.027910722, + 0.007520462, + -0.008409838, + 0.016545016, + -0.006807653, + 0.022312883, + 0.0057907556, + 0.01732976, + -0.018088346, + -0.04852333, + 0.00049904804, + -0.00922728, + -0.011411483, + -0.033796303, + -0.025543412, + 0.014203863, + 0.016466541, + 0.0056926627, + 0.011588051, + 0.0013250727, + 0.0027318895, + 0.016453462, + 0.010587502, + -0.027466035, + 0.011431102, + -0.006189667, + 0.023764659, + -0.031808283, + -0.013013668, + 0.022129776, + -0.031494386, + -0.0011166251, + 0.01857227, + -0.0063368063, + -0.0127063105, + 0.005473588, + 0.01354991, + 0.0070169177, + 0.0405451, + -0.019749386, + -0.005002742, + 0.009070331, + -0.010796768, + 0.0069515225, + -0.0056795836, + 0.017525947, + 0.000104734696, + 0.016832756, + 0.022129776, + -0.009815837, + 0.038949452, + -0.0104436325, + -0.003032708, + -0.0049733142, + -0.016139565, + 0.0040904772, + 0.0019651293, + -0.0077493456, + -0.008782592, + 0.023450762, + 0.0040479703, + 0.011803855, + 0.01047633, + 0.021959748, + -0.0068141925, + -0.02025947, + 0.007167327, + 0.008115559, + -0.03452873, + -0.026079653, + 0.010234368, + 0.016701965, + 0.014687789, + 0.00076512527, + -0.0061536995, + 0.014386971, + -0.008220192, + -0.034345623, + 0.01914775, + 0.004708463, + 0.0035411566, + -0.05367648, + 0.004093747, + 0.014713947, + -0.01789216, + -0.0079324525, + -0.010744452, + -0.01732976, + 0.0265505, + -0.00036396584, + -0.005503016, + 0.00740275, + 0.004404375, + 0.004021812, + 0.012902496, + -0.006245253, + -0.026066575, + 0.030866591, + 0.02403932, + 0.0088414475, + -0.016191881, + -0.012183148, + -0.0079324525, + -0.020730317, + -0.0019749387, + -0.019030038, + -0.02151506, + 0.018363006, + 0.025281832, + 0.015459454, + 0.02097882, + -0.0052054673, + 0.011097586, + -0.0037536914, + -0.002738429, + -0.013746097, + -0.028538518, + -0.011012572, + 0.013562989, + 0.024130873, + 0.029218629, + 0.01620496, + -0.013876887, + 0.010672516, + -0.005198928, + 0.009998945, + -0.027753774, + 0.0010896495, + -0.0051368023, + 0.011496497, + 0.009279596, + -0.010999493, + 0.0015384249, + -0.0023362478, + 0.012497046, + 0.0037406124, + 0.019030038, + -0.0026109081, + 0.024300901, + 0.0005570864, + 0.0034921102, + -0.0027155406, + 0.004355328, + 0.025674203, + -0.006820732, + 0.0254257, + -0.029846424, + -0.022718335, + -0.00642836, + -0.0077885827, + -0.002543878, + -0.00188502, + -0.023777738, + -0.007598936, + -0.020782633, + 0.019631675, + -0.004361868, + 0.014570077, + 0.03983883, + -0.0085929455, + 0.026485104, + 0.023843134, + -0.014831658, + 0.00089101127, + 0.014844738, + 0.015106319, + 0.007716648, + -0.01634883, + 0.01872922, + -0.0015220761, + -0.022535227, + -0.01341912, + 0.0077755037, + -0.013641464, + -0.021410428, + 0.0014215307, + 0.0059444346, + 0.008468694, + 0.002136792, + 0.014190785, + -0.021292716, + -0.026890555, + 0.009796219, + -0.004149333, + -0.011476879, + -0.0071869455, + -0.017643657 + ] + }, + { + "object": "embedding", + "index": 1, + "embedding": [ + 0.0026680413, + -0.0026349186, + 0.008843787, + -0.0049684197, + -0.033255287, + 0.01970144, + -0.02827362, + 0.0020668625, + -0.012116319, + -0.035746124, + 0.00008668857, + -0.0036931918, + 0.016720388, + -0.018151293, + -0.036779553, + -0.024100147, + 0.012487294, + -0.023715923, + 0.009870593, + -0.023212455, + 0.0044020195, + 0.0038091217, + -0.010128952, + -0.015819447, + -0.011096137, + 0.008585429, + 0.0054586367, + -0.017488837, + 0.006253584, + -0.018800499, + 0.020045916, + 0.0018300345, + -0.00961886, + 0.0020685187, + 0.003918427, + -0.00977785, + -0.0061608404, + -0.0112153785, + -0.0011576418, + 0.00024324554, + 0.001564224, + 0.0026713535, + -0.0020635503, + -0.01999292, + -0.0040476057, + 0.013348487, + 0.003825683, + -0.0020536133, + -0.01968819, + 0.028538601, + 0.0107715335, + 0.020655377, + -0.008201204, + -0.005057851, + -0.021092597, + 0.014905258, + -0.020483138, + 0.005163844, + -0.012467421, + -0.006396012, + 0.007333387, + 0.0032874376, + -0.023980904, + 0.011573105, + 0.0063893874, + -0.017038366, + -0.016786633, + 0.011261751, + -0.021145593, + -0.0028286867, + 0.019012485, + 0.0014847293, + -0.020112162, + -0.014229554, + 0.036938544, + 0.013474354, + -0.014706521, + -0.0053957035, + -0.0013091785, + 0.0020171783, + 0.022364512, + -0.023119712, + 0.0028253745, + -0.004888925, + 0.03428872, + 0.0007568559, + -0.010976895, + 0.018230787, + 0.0062204613, + -0.019197972, + 0.024762603, + 0.019423207, + 0.009532741, + -0.004322525, + -0.016495153, + -0.026643978, + -0.0054188897, + 0.01938346, + 0.012898017, + -0.029678026, + -0.018959489, + 0.02571654, + 0.001242933, + -0.01968819, + -0.019303966, + -0.00054611213, + -0.002073487, + -0.020098913, + -0.0015857539, + 0.0011071295, + 0.007823604, + 0.020509636, + -0.0027690658, + -0.05079712, + -0.015845945, + -0.010890775, + 0.005670623, + -0.0001018526, + -0.026723472, + -0.022470506, + 0.011374368, + 0.023543684, + 0.004216532, + -0.0033785251, + 0.028035134, + 0.0016669048, + -0.005034665, + -0.011619477, + -0.0076447413, + -0.001836659, + 0.006134342, + 0.01217594, + 0.027293185, + 0.0031350728, + -0.024020651, + 0.012003701, + -0.013938073, + 0.0210396, + -0.026259754, + -0.01909198, + 0.007260517, + 0.01926422, + -0.00810846, + -0.00009802278, + 0.016362661, + 0.024325382, + 0.03439471, + 0.023517186, + 0.0013373329, + 0.000698477, + -0.007638117, + -0.0040608547, + 0.014335547, + -0.002936336, + -0.0014648556, + 0.0055944403, + 0.015103995, + 0.004206595, + -0.012527042, + 0.025358813, + -0.004832616, + 0.005283086, + 0.030790951, + -0.027902644, + 0.016349413, + 0.01457403, + 0.016813131, + 0.005978665, + -0.0018234099, + -0.022814982, + -0.018866746, + 0.017793566, + -0.027160693, + 0.010619168, + -0.010692039, + 0.01233493, + 0.027213689, + 0.007836854, + -0.026948707, + -0.01909198, + -0.009645359, + 0.0157797, + 0.02045664, + 0.011705596, + 0.01923772, + 0.0017356345, + 0.020006169, + 0.016932374, + 0.021596063, + -0.009711604, + 0.015090746, + 0.046583902, + 0.005081037, + -0.0046703145, + -0.67114735, + -0.04674289, + -0.011785091, + 0.018204289, + 0.023331698, + 0.024444625, + 0.023291951, + -0.006409261, + -0.020072415, + 0.012228937, + -0.02314621, + 0.024550617, + -0.028247122, + -0.0026581045, + 0.0068895416, + -0.016627643, + 0.0049087983, + -0.025001086, + 0.02253675, + 0.01759483, + -0.0065285033, + 0.010764909, + -0.007187647, + 0.0074791275, + 0.039296884, + -0.011314747, + -0.007532124, + -0.008459562, + -0.008664924, + 0.036011104, + -0.040038835, + 0.04030382, + 0.0029048692, + -0.002283817, + 0.056017272, + -0.0071942713, + -0.005922356, + 0.028538601, + 0.023358196, + 0.048544772, + 0.0044682655, + -0.015753202, + 0.0071942713, + 0.0063893874, + 0.0056805597, + -0.0021413888, + 0.030737955, + -0.04239718, + 0.0058263, + -0.022059783, + 0.013328614, + -0.0066113104, + -0.021079348, + -0.00080488395, + 0.00025173326, + 0.013885076, + 0.009420123, + -0.006574875, + -0.011751968, + -0.006184026, + -0.020032667, + -0.0040177954, + -0.030631963, + -0.024736105, + -0.011314747, + 0.020628877, + -0.019515952, + -0.006442384, + -0.00007613068, + -0.0038389321, + -0.0058428613, + 0.022351263, + 0.0051174723, + -0.0035607007, + 0.034050234, + 0.027452175, + 0.0285651, + -0.017011868, + -0.0056772474, + -0.003221192, + 0.010705288, + 0.019356962, + 0.0058196755, + -0.010665541, + 0.019462956, + -0.022642743, + -0.0330698, + -0.0065814997, + 0.006005163, + -0.017846562, + 0.020642126, + 0.0068630436, + -0.0076646153, + 0.0013820487, + -0.0013174593, + 0.03094994, + -0.0033851499, + 0.0034878305, + 0.03847544, + -0.0048690513, + -0.019476205, + -0.006313205, + -0.0025073958, + -0.012427674, + -0.004892237, + -0.023676176, + -0.0035010795, + 0.005919044, + 0.015925441, + -0.014004318, + 0.021543067, + 0.0009845751, + -0.02074812, + -0.009327379, + 0.0072075203, + -0.027929142, + 0.019052232, + -0.0060217245, + 0.03895241, + -0.017846562, + 0.0018499081, + -0.0044583282, + 0.03243384, + 0.011539983, + 0.007863352, + 0.024245888, + 0.007724236, + -0.012990761, + -0.007287015, + -0.0064854436, + -0.01849577, + 0.01850902, + 0.003128448, + -0.011944081, + 0.01909198, + 0.011639351, + -0.010115702, + 0.0068895416, + 0.0023301886, + -0.028671093, + -0.026524736, + -0.020549383, + -0.0056639984, + 0.010393933, + 0.0025587361, + -0.012984136, + -0.0021182029, + -0.010506551, + -0.012566789, + 0.028618095, + -0.0010731786, + -0.016296417, + -0.03145341, + 0.021715306, + -0.02510708, + -0.028220622, + -0.0107715335, + -0.014295799, + -0.005875984, + 0.018389776, + 0.008313822, + 0.006690805, + -0.018654758, + 0.018588513, + 0.016468655, + -0.024378378, + 0.003766062, + -0.0077308607, + -0.0026796341, + -0.02525282, + -0.01864151, + -0.00969173, + -0.012209062, + -0.0038157462, + 0.022642743, + -0.0051174723, + 0.011169007, + 0.0025421747, + 0.0051505947, + 0.0003231543, + 0.008221078, + -0.030843949, + -0.011937456, + 0.015117245, + 0.031479906, + -0.010095828, + 0.012646284, + 0.026378995, + -0.021278085, + 0.0107847825, + -0.012725779, + 0.022073032, + 0.0032857815, + 0.0023401256, + 0.016468655, + -0.03198337, + 0.0032973744, + 0.013911574, + 0.002522301, + 0.018866746, + 0.024921592, + -0.0016834661, + 0.0042695287, + -0.013818831, + 0.022218771, + -0.012189189, + -0.004368897, + -0.012944389, + 0.02660423, + 0.012507168, + 0.009519491, + -0.012884768, + -0.02674997, + 0.0050975983, + 0.00072000676, + 0.026167009, + -0.012401175, + 0.016945623, + -0.001420968, + 0.0029711148, + 0.021649059, + -0.00916839, + 0.012056698, + -0.033599764, + -0.008936531, + 0.004491451, + 0.027584665, + 0.03656757, + 0.016667392, + -0.010307814, + -0.03622309, + -0.009433373, + -0.005498384, + 0.0051108473, + -0.00234675, + -0.015686957, + 0.0079494715, + -0.02058913, + 0.041708227, + 0.024431374, + 0.033043303, + 0.0039846725, + 0.033043303, + -0.018893244, + -0.0012893048, + 0.016587896, + 0.0360376, + 0.009651983, + -0.005452012, + 0.0044583282, + -0.025067333, + 0.001219747, + -0.016402408, + 0.0009696699, + -0.00857218, + -0.030287486, + 0.0003328841, + 0.0038588059, + 0.019476205, + 0.022642743, + 0.012520417, + 0.011891084, + 0.000675291, + 0.0030506095, + 0.015488219, + -0.007684489, + 0.014534283, + 0.001232168, + 0.011526734, + -0.0042629037, + -0.01142074, + 0.003941613, + -0.0026200132, + -0.014097062, + -0.0057699913, + -0.0008044699, + 0.013222621, + -0.012997385, + 0.0055480683, + 0.0066113104, + -0.021728555, + -0.037786487, + 0.004984981, + -0.005044602, + -0.0042099073, + -0.01623017, + -0.025809282, + 0.014865511, + -0.01503775, + 0.03428872, + 0.01697212, + 0.017409341, + 0.0009547646, + -0.02224527, + -0.011983828, + 0.0074195066, + 0.027425675, + -0.005498384, + -0.01457403, + -0.009307506, + 0.010254818, + -0.019436456, + 0.0064821313, + 0.010148825, + 0.018310282, + -0.003138385, + 0.005495072, + -0.0072472678, + -0.00424303, + -0.0048624263, + 0.014680023, + -0.003138385, + 0.00909552, + 0.002237445, + 0.0062038996, + -0.002726006, + -0.015647208, + -0.015289483, + 0.027293185, + -0.010599295, + -0.019621944, + -0.0051207845, + -0.020615628, + -0.0069491626, + 0.086331256, + -0.011765217, + 0.017846562, + 0.005991914, + 0.0093605025, + -0.0071015274, + -0.01742259, + -0.0047001247, + 0.0070087835, + 0.0079627205, + 0.0017372906, + -0.016481904, + 0.018601762, + 0.012725779, + 0.015859194, + -0.01986043, + -0.031347416, + -0.023821915, + 0.030711457, + -0.025491305, + -0.018760752, + 0.0019045608, + 0.0047796196, + 0.0050412896, + 0.005591128, + 0.005746805, + 0.0065947487, + 0.020469889, + 0.03712403, + -0.014415041, + 0.0054321387, + 0.010817905, + -0.010407182, + -0.00043887706, + -0.0044351425, + -0.008989527, + 0.017515335, + 0.003660069, + -0.006849794, + -0.017064866, + 0.016071182, + 0.0088504115, + 0.007379759, + -0.029121563, + 0.010075955, + -0.0056639984, + 0.0073863836, + 0.010281316, + -0.014746269, + -0.0180188, + 0.030658461, + -0.001954245, + -0.028061634, + -0.025411809, + -0.01746234, + 0.01670714, + -0.014600528, + 0.008565555, + 0.0053923912, + 0.011222003, + 0.011758593, + -0.021172091, + 0.0116724735, + -0.023093214, + -0.026034517, + -0.023093214, + -0.0022655993, + -0.021013102, + -0.036620565, + -0.0058362368, + 0.008631801, + 0.001326568, + -0.013116627, + 0.009837471, + 0.012606536, + -0.008201204, + 0.016998619, + -0.016998619, + 0.008671548, + 0.029810516, + -0.010195197, + -0.010148825, + -0.017170858, + -0.018005552, + -0.0058561102, + 0.008002467, + 0.020801116, + -0.037389014, + 0.00015919644, + -0.0018581889, + 0.041072268, + -0.005018104, + 0.0041635353, + -0.0003494455, + 0.003424897, + -0.027531669, + 0.012162691, + 0.014216304, + -0.011937456, + -0.009506242, + 0.017382843, + -0.013792332, + 0.016919125, + 0.012864894, + 0.006571563, + 0.012096445, + 0.018985987, + 0.01835003, + 0.01307688, + 0.013050382, + 0.024259137, + -0.032062866, + -0.017926058, + 0.02451087, + -0.031903878, + 0.02930705, + 0.007929597, + 0.023424441, + -0.008115085, + -0.0108974, + 0.0046636895, + -0.031055935, + 0.020827614, + 0.029837016, + 0.003941613, + 0.017528584, + -0.008042215, + -0.015978437, + 0.0018697819, + 0.002027115, + -0.016773384, + 0.0072340188, + -0.0016876064, + -0.0089034075, + -0.035004172, + -0.000004062718, + -0.0069822855, + 0.008585429, + 0.0079494715, + -0.031850882, + -0.012407799, + -0.00698891, + 0.008505934, + -0.010486677, + -0.022920975, + -0.023490688, + -0.009744727, + 0.02343769, + -0.0011692347, + 0.013646592, + 0.013911574, + 0.020072415, + -0.009088895, + -0.004415269, + -0.017833313, + -0.030049002, + -0.024457874, + -0.014256052, + 0.010042832, + 0.028432608, + 0.018972738, + -0.009685106, + 0.016680641, + -0.0021463572, + -0.0009199857, + 0.0027193816, + -0.0058693597, + 0.024643362, + -0.0059057944, + 0.007412882, + 0.019356962, + 0.0300755, + -0.022682492, + 0.0061608404, + -0.027041452, + 0.01015545, + 0.0006504489, + 0.0066874926, + 0.0018118169, + -0.034209225, + -0.0045113247, + -0.0057534296, + -0.013739336, + -0.0035607007, + -0.003660069, + -0.007406257, + -0.0040939776, + -0.01939671, + 0.016415657, + -0.0022407572, + 0.00096470147, + -0.014401792, + 0.004166848, + -0.00033681744, + 0.010102453, + -0.013633343, + -0.008598678, + -0.0034911428, + 0.009042524, + 0.019423207, + 0.03145341, + -0.010480053, + 0.009724853, + -0.00043887706, + 0.0203109, + 0.015554465, + 0.011467112, + -0.01179834, + 0.018469272, + -0.029731022, + -0.01518349, + -0.017369594, + 0.0054884474, + -0.020337397, + -0.027478673, + 0.02615376, + -0.009512867, + 0.015660457, + -0.026617479, + -0.011149134, + 0.018774, + -0.0064688823, + 0.024471123, + -0.0063761384, + 0.028777085, + 0.016468655, + -0.011175632, + 0.006386075, + -0.007273766, + -0.027584665, + -0.014865511, + 0.020403642, + -0.004382146, + -0.0050081667, + -0.033043303, + 0.0015203364, + 0.021927292, + -0.002500771, + -0.020814365, + 0.027902644, + 0.00037387357, + -0.004832616, + -0.003481206, + 0.009320755, + -0.008704671, + 0.00835357, + -0.007452629, + -0.00894978, + -0.008254201, + -0.012507168, + -0.009665232, + 0.016905876, + -0.020403642, + 0.0093605025, + 0.016243419, + -0.021437073, + -0.0026316063, + -0.008989527, + -0.013275617, + 0.015382227, + -0.004408644, + 0.03818396, + 0.0028568413, + 0.0049352967, + 0.014666774, + 0.015249736, + -0.0066113104, + -0.002866778, + 0.003931676, + 0.021423824, + -0.013951322, + -0.013924824, + 0.017356345, + -0.014083813, + 0.00034385602, + -0.0045179497, + 0.006323142, + -0.0145077845, + -0.036620565, + -0.006551689, + 0.0135405995, + 0.014812514, + 0.003448083, + -0.014309048, + -0.016852878, + -0.029890012, + -0.018813748, + 0.00023827712, + 0.0032973744, + -0.022497004, + -0.013487603, + 0.002191073, + -0.012407799, + 0.013898325, + -0.015236487, + -0.013964571, + 0.012732403, + 0.0076182433, + -0.01759483, + 0.01894624, + 0.0066510574, + 0.01788631, + -0.022497004, + -0.0078037307, + -0.0038323076, + -0.007154524, + 0.016495153, + 0.00008156489, + -0.024444625, + -0.009029275, + 0.011334621, + 0.02194054, + -0.002485866, + 0.013229245, + 0.03296381, + -0.0247891, + -0.0029893324, + -0.019277468, + -0.022033283, + 0.0026481675, + 0.008512558, + 0.018204289, + 0.001989024, + -0.020337397, + 0.0026912272, + 0.023782168, + -0.035984606, + 0.0012172628, + -0.013169624, + -0.027425675, + 0.005296335, + 0.0136068445, + -0.020695124, + -0.013182873, + -0.02163581, + -0.010029583, + -0.0130835045, + 0.009552615, + 0.0048061176, + -0.0020105538, + 0.005968728, + 0.010837779, + -0.014057315, + 0.028697591, + -0.0070286575, + -0.014017567, + 0.008399941, + -0.008187955, + -0.027041452, + -0.008247577, + -0.0010913962, + 0.04088678, + -0.0012214031, + -0.025173325, + -0.025968272, + 0.0070750294, + -0.0391114, + -0.010652292, + -0.013355112, + 0.017753819, + 0.00326922, + -0.0021463572, + 0.0041039144, + 0.018734254, + 0.0021331082, + 0.02538531, + 0.0032377534, + 0.001243761, + 0.026484989, + -0.01862826, + 0.026935458, + 0.010890775, + -0.023119712, + 0.0069822855, + 0.0165349, + 0.004905486, + 0.00336362, + 0.016110929, + -0.0030506095, + -0.008426439, + 0.01015545, + -0.009857344, + -0.012434298, + -0.0010922243, + 0.01224881, + -0.047140364, + 0.016574647, + 0.0038521811, + -0.013129877, + 0.01774057, + -0.007154524, + 0.005316209, + -0.0037726865, + 0.006882917, + -0.010996768, + -0.0088636605, + -0.0121428175, + -0.011334621, + 0.01697212, + 0.0015948627, + -0.021331081, + 0.021238336, + 0.01637591, + -0.0038223707, + -0.016905876, + 0.0069822855, + -0.0031317605, + 0.008075338, + 0.0016768415, + -0.018323531, + -0.010321063, + -0.014004318, + 0.004971732, + -0.032142363, + -0.0030737955, + 0.009380376, + -0.016309666, + -0.019515952, + 0.018548766, + 0.025981521, + -0.013885076, + -0.0038687426, + 0.0026117326, + -0.007684489, + 0.016998619, + -0.024219388, + 0.006256896, + -0.029439542, + 0.0029810518, + 0.0026730096, + -0.00819458, + -0.027266687, + 0.010427057, + 0.0020238028, + -0.020178407, + -0.008711295, + 0.23572832, + -0.0058594225, + -0.0018267222, + 0.022351263, + -0.001126175, + 0.023623178, + 0.025663543, + -0.008234328, + -0.008081962, + 0.008022341, + 0.00052292616, + -0.005339395, + 0.010062706, + -0.0154352235, + -0.0070617804, + -0.03216886, + -0.016733637, + -0.02178155, + -0.036620565, + 0.016004935, + 0.020946857, + -0.014945006, + -0.011937456, + -0.006382763, + 0.022894477, + 0.002653136, + -0.011447239, + 0.013494227, + 0.01605793, + 0.023490688, + -0.005852798, + 0.0043258374, + -0.0037230023, + 0.009757976, + 0.000064278924, + 0.008181331, + -0.00014149645, + 0.0024924905, + 0.027452175, + 0.03219536, + -0.007929597, + -0.015196739, + -0.0165349, + -0.004312588, + -0.010115702, + 0.016124178, + 0.0040177954, + -0.006299956, + -0.015395476, + 0.01922447, + -0.03407673, + -0.026855964, + 0.03023449, + 0.022126028, + 0.017170858, + -0.006445696, + 0.023252204, + -0.0023070027, + -0.00518703, + -0.016428906, + -0.011513484, + 0.02255, + -0.01788631, + 0.025133578, + -0.02044339, + 0.017091364, + -0.009281008, + -0.0157797, + 0.011838088, + -0.0041072266, + 0.015209988, + -0.0021331082, + -0.0002641543, + -0.01367309, + -0.026869213, + -0.025001086, + 0.032831315, + 0.008969653, + 0.015991686, + 0.026617479, + -0.030446475, + 0.016919125, + 0.01862826, + -0.008525807, + -0.003742876, + -0.03110893, + 0.0054884474, + 0.0054553244, + 0.009479744, + -0.0013795645, + 0.0008218594, + -0.02706795, + -0.016587896, + -0.028300118, + 0.006111156, + 0.0015799574, + -0.007856728, + 0.006170777, + -0.010572797, + 0.016322915, + -0.004888925, + 0.006929289, + 0.010612544, + -0.000272642, + 0.003471269, + -0.008963029, + -0.0144812865, + 0.0068299207, + -0.016733637, + -0.020204905, + -0.006326454, + -0.01894624, + 0.014083813, + -0.00036186655, + -0.0012487294, + 0.01789956, + 0.008307197, + 0.006326454, + 0.014242803, + -0.026683725, + 0.009486369, + -0.028141128, + -0.011910957, + 0.0108974, + -0.0032129113, + -0.0054453877, + -0.019330464, + -0.0012594943, + -0.0006641121, + -0.0315859, + 0.013964571, + 0.0011270031, + 0.02194054, + -0.004193346, + 0.0074923765, + 0.0029247429, + -0.009221386, + -0.010837779, + -0.020814365, + 0.0058826087, + 0.023861663, + -0.0103144385, + 0.015011251, + 0.0130967535, + -0.021410575, + -0.026710223, + 0.021529818, + 0.0068166717, + -0.024444625, + -0.002995957, + -0.017674325, + -0.024550617, + -0.016640892, + -0.014110311, + 0.021728555, + -0.0032410657, + -0.015156992, + -0.0024428063, + -0.0064125736, + 0.022523502, + -0.039482374, + -0.013414732, + 0.028538601, + -0.027478673, + -0.020536134, + -0.012262059, + -0.17170858, + 0.018204289, + 0.033546768, + -0.020496387, + 0.025146827, + 0.0210661, + 0.010380684, + -0.011301498, + -0.022046532, + -0.00048400686, + 0.035110164, + -0.0033470585, + -0.03667356, + -0.017475588, + -0.006634496, + -0.008088587, + -0.02162256, + 0.0055050086, + 0.015050999, + 0.00061028753, + 0.026087515, + -0.026670476, + 0.01609768, + -0.0046206303, + -0.021331081, + 0.023106463, + -0.015408725, + 0.003706441, + 0.0016627643, + -0.003411648, + -0.005587816, + -0.017912809, + 0.014521034, + 0.020827614, + -0.0021297957, + 0.014229554, + -0.008134959, + -0.008081962, + -0.018363278, + 0.0072936397, + -0.01593869, + 0.004859114, + 0.015488219, + -0.01262641, + -0.0017240415, + 0.0144680375, + 0.008671548, + -0.0055348193, + -0.0010516488, + -0.042768154, + 0.008896783, + -0.017541833, + 0.0036865673, + 0.022430757, + 0.0015004626, + 0.017237103, + -0.0053658932, + 0.016905876, + 0.023689425, + -0.0017372906, + -0.03142691, + -0.005011479, + 0.015806198, + -0.0093340045, + -0.0130437575, + -0.007412882, + -0.013368361, + -0.0027972201, + -0.02959853, + 0.007333387, + 0.007903099, + -0.016561398, + 0.009857344, + -0.040674794, + 0.014640276, + -0.0103011895, + 0.006492068, + 0.022470506, + 0.012401175, + -0.018151293, + -0.03216886, + 0.029360047, + -0.01970144, + -0.005061163, + -0.0056308755, + 0.045311987, + 0.010009709, + -0.00073035766, + -0.031347416, + -0.0028121255, + 0.015329231, + -0.014269301, + -0.009393625, + -0.013321989, + -0.005554693, + 0.012845021, + -0.011539983, + 0.031320915, + -0.0016486872, + 0.01233493, + -0.0008334524, + -0.008062089, + -0.01819104, + 0.013633343, + 0.024736105, + 0.018972738, + 0.019873679, + 0.014547532, + 0.024563866, + -0.0035441392, + -0.023623178, + -0.011374368, + 0.0144812865, + 0.015315982, + -0.00095145236, + 0.011977203, + 0.0233052, + -0.009439997, + 0.024524119, + 0.007903099, + 0.048465274, + -0.012527042, + -0.004772995, + 0.016760135, + -0.0017025118, + -0.028194124, + -0.05591128, + 0.010440306, + 0.012765526, + -0.013845329, + 0.0011990452, + 0.03852844, + 0.02195379, + 0.035136662, + -0.0041734725, + 0.013335238, + -0.0077639837, + -0.0037329393, + 0.0030953253, + -0.011380993, + 0.036726557, + -0.01608443, + 0.0054288264, + 0.0030853886, + -0.024391627, + 0.004951858, + -0.005389079, + -0.02239101, + -0.01669389, + -0.008433064, + -0.020006169, + 0.015739953, + -0.03094994, + 0.026710223, + 0.01730335, + 0.0052897106, + 0.0103144385, + 0.00045999285, + -0.0017356345, + -0.020377144, + 0.00003317455, + 0.014322298, + -0.02391466, + -0.0026034517, + 0.03410323, + -0.023397943, + -0.0036302586, + -0.009400249, + 0.01323587, + -0.011851337, + -0.009274383, + -0.009890467, + -0.01608443, + 0.009413498, + 0.022814982, + -0.017714072, + -0.024285635, + 0.008274075, + -0.0053460193, + -0.008929906, + 0.030737955, + -0.025650294, + -0.0004691016, + 0.009016025, + -0.052122034, + 0.02150332, + -0.008843787, + 0.002003929, + -0.007823604, + 0.025425058, + 0.032672327, + -0.0042595915, + -0.017078115, + -0.043086134, + 0.01997967, + -0.0039681112, + -0.009453246, + 0.031294417, + -0.006150903, + 0.0054321387, + -0.010208446, + -0.017555082, + -0.037177026, + -0.013169624, + 0.0023898098, + -0.016163925, + -0.004739872, + -0.02358343, + -0.0135538485, + 0.013315364, + -0.016269919, + 0.028750587, + -0.0063463277, + -0.006710679, + 0.016508402, + -0.01143399, + 0.0063562645, + 0.028856581, + 0.030472973, + -0.01059267, + -0.010195197, + 0.016839629, + 0.021158842, + 0.010566172, + -0.00064258225, + 0.017621327, + -0.007406257, + -0.027293185, + -0.08818613, + 0.026034517, + 0.017117862, + -0.01850902, + 0.012440923, + -0.009989835, + 0.023941157, + -0.0027773464, + 0.026405493, + -0.005173781, + -0.042900644, + 0.020986604, + -0.022510253, + -0.015064248, + -0.031506404, + -0.016654141, + 0.031506404, + 0.016627643, + 0.008346945, + 0.016150676, + 0.017992303, + -0.012434298, + 0.028538601, + 0.0028634658, + -0.018548766, + 0.011440614, + -0.04642491, + 0.039906345, + -0.0036799428, + -0.002321908, + 0.012560165, + -0.031029437, + 0.0036136971, + 0.013752585, + -0.0037826234, + 0.01081128, + -0.010393933, + -0.012646284, + 0.001006105, + 0.044861514, + -0.032990307, + 0.0028982447, + 0.0064721946, + -0.00492536, + -0.0026829466, + -0.0062668333, + 0.019515952, + 0.00480943, + 0.0070087835, + 0.0145077845, + -0.017661076, + 0.01983393, + -0.0046239425, + -0.015302732, + -0.0032394095, + -0.043987073, + 0.028247122, + -0.004915423, + 0.00058130507, + -0.0029181184, + 0.014521034, + 0.016269919, + 0.020231403, + 0.0050247284, + 0.0016735293, + -0.008724544, + -0.009188264, + -0.0046206303, + 0.016163925, + -0.026392244, + -0.037309516, + 0.012401175, + -0.004537823, + 0.037230022, + -0.0021397327, + -0.023543684, + -0.0052599, + 0.0043755216, + -0.021755053, + 0.014587279, + -0.00061898225, + 0.009002776, + -0.04014483, + 0.012189189, + 0.009797723, + -0.013726087, + -0.00473656, + -0.005352644, + -0.0077109872, + 0.020072415, + -0.02538531, + 0.012712529, + 0.01805855, + 0.0011245189, + 0.00097546633, + 0.01833678, + -0.0023335011, + -0.027982138, + 0.022377761, + 0.023106463, + 0.02314621, + -0.011520108, + 0.002545487, + -0.014640276, + -0.0075387484, + 0.012613161, + -0.022920975, + 0.009877218, + 0.009651983, + 0.009088895, + 0.02255, + 0.0034282093, + 0.0011924207, + 0.020655377, + 0.026061017, + -0.008512558, + -0.017647825, + -0.024881845, + -0.017064866, + 0.008797415, + 0.020377144, + 0.0144415395, + 0.013739336, + 0.0011468768, + 0.017184107, + -0.016481904, + 0.005425514, + -0.018866746, + -0.0009936839, + -0.008009092, + 0.0039482373, + 0.001657796, + -0.009380376, + -0.0073068887, + -0.025226321, + 0.0070551555, + 0.012315055, + 0.006303268, + 0.008333696, + 0.049366217, + 0.0051572192, + 0.009969962, + 0.019025734, + 0.008068713, + 0.0105198, + 0.008028965, + -0.00046123494, + -0.034050234, + -0.02420614, + 0.009022649, + -0.014534283, + 0.0055845035, + -0.010102453, + -0.018615011, + -0.026551234, + -0.0011063014, + 0.009221386, + -0.00037242443, + 0.008101836, + 0.037044536, + -0.0073400117, + 0.023225704, + 0.014256052, + -0.0008479436, + 0.007896475, + 0.0300755, + -0.0018300345, + -0.0004927016, + -0.019476205, + 0.0144547885, + 0.007393008, + -0.028512103, + -0.02225852, + -0.018707756, + -0.0028319992, + -0.016998619, + 0.01789956, + 0.004938609, + 0.0031582587, + 0.0019857117, + 0.018668009, + -0.022165775, + -0.02538531, + 0.031188425, + -0.020072415, + -0.000031751304, + 0.0067636753, + -0.017700823 + ] + }, + { + "object": "embedding", + "index": 2, + "embedding": [ + -0.0044841906, + 0.00023355159, + -0.00082493754, + 0.010029372, + -0.015641283, + 0.02653146, + -0.026091048, + -0.0066962577, + -0.008347801, + -0.021913812, + 0.017136013, + -0.013826254, + 0.012485, + -0.010282942, + -0.008074212, + -0.017709883, + 0.03384496, + -0.008374493, + 0.026838413, + -0.0343521, + 0.0005384198, + -0.005495135, + -0.010082755, + -0.006906454, + -0.009889241, + 0.006275865, + -0.0017316182, + -0.020539194, + 0.0030695351, + -0.032296848, + 0.02372884, + 0.010356344, + 0.0012778608, + -0.019031117, + -0.019645024, + -0.009628998, + -0.009955971, + -0.008194324, + -0.011243841, + -0.017136013, + 0.016748985, + -0.009228624, + -0.015441096, + -0.004170564, + -0.014333394, + 0.01742962, + 0.0025173523, + 0.016655564, + -0.028106265, + 0.012311505, + 0.0062091355, + 0.024329402, + -0.027705891, + -0.0017182723, + -0.014159899, + 0.0021203146, + -0.0042840033, + 0.002655815, + 0.0074269404, + -0.0026708292, + 0.024436168, + 0.011877766, + -0.018951043, + -0.003623386, + 0.014053132, + 0.000584296, + -0.0009575615, + 0.030054752, + -0.012992141, + -0.009115185, + 0.01901777, + 0.02137998, + -0.012731898, + 0.008234361, + 0.015040722, + -0.019458184, + -0.049539626, + 0.0010468116, + 0.00804752, + 0.001294543, + -0.003364811, + -0.019538257, + 0.012311505, + -0.0006247505, + 0.008094231, + 0.010643279, + -0.005154817, + 0.04406785, + -0.021019643, + -0.01533433, + 0.018283753, + 0.0029227312, + 0.005051387, + -0.009268661, + -0.03878291, + 0.004617648, + -0.016108386, + 0.027652508, + -0.007306828, + -0.032697223, + -0.010923541, + 0.008287745, + -0.016775677, + -0.014546927, + -0.02984122, + 0.010342998, + 0.012411598, + 0.007453632, + 0.015894853, + -0.0026674927, + 0.0011010289, + 0.012131336, + -0.009115185, + -0.05519825, + -0.015347675, + -0.037234794, + 0.0069932016, + 0.00059430534, + -0.019524911, + -0.019645024, + 0.012698533, + 0.018884314, + 0.016882444, + -0.026704956, + 0.0056219203, + -0.014573619, + -0.017202742, + -0.0058688177, + -0.0016457045, + -0.002824306, + 0.02853333, + 0.038996443, + 0.00025794937, + -0.013973057, + -0.021046335, + 0.008594698, + -0.035419766, + 0.006225818, + -0.011010289, + -0.029654378, + 0.0069798557, + 0.0028109602, + -0.0038435918, + 0.0027308853, + -0.009989335, + 0.0036734329, + 0.032136697, + 0.00459763, + 0.009849204, + 0.015027376, + 0.017976798, + 0.0032113343, + 0.0075470526, + -0.0009950965, + 0.0076938565, + 0.00986255, + 0.022287494, + 0.023328466, + -0.003823573, + -0.024382785, + -0.01211799, + -0.010509822, + 0.021460054, + -0.014400124, + -0.0030361705, + 0.016375303, + 0.005671967, + 0.054130584, + 0.0027909414, + -0.0036801056, + -0.0069398186, + 0.018043527, + -0.023995757, + 0.004791144, + 0.025637291, + 0.009362082, + 0.006886435, + 0.009302026, + -0.023982411, + 0.014533581, + -0.019564949, + 0.0028209696, + 0.010129466, + 0.012431617, + -0.008995072, + 0.019378109, + 0.018016836, + -0.0007114982, + 0.0057420325, + 0.000746948, + 0.013285749, + 0.029067162, + 0.0017449639, + 0.001951824, + -0.6700662, + -0.04406785, + -0.027999498, + 0.0029260677, + 0.04081147, + 0.030214902, + 0.018497285, + 0.027225442, + -0.00887496, + -0.010710008, + -0.046656933, + 0.0064393505, + -0.017202742, + 0.007867352, + 0.01377287, + -0.025357028, + 0.010296288, + -0.012171374, + 0.008868287, + 0.0120979715, + 0.011851074, + 0.007827315, + -0.0036200495, + -0.0065928274, + 0.018790893, + -0.0070065474, + -0.005805425, + -0.026718302, + -0.012284813, + 0.044841904, + -0.032136697, + 0.033417895, + -0.0017699874, + -0.008534642, + 0.044735137, + -0.024836542, + -0.025637291, + 0.03445887, + -0.011704271, + 0.049165946, + 0.003446554, + -0.006559463, + -0.010449765, + -0.017376238, + -0.00474777, + 0.010463111, + 0.022541065, + -0.023061551, + -0.014266665, + -0.010663298, + 0.008914998, + -0.013892983, + -0.0017533051, + -0.011670906, + 0.007894044, + 0.010349671, + 0.014653694, + -0.0001789172, + 0.015307638, + -0.019044463, + -0.008307763, + 0.0056519485, + -0.03795547, + -0.028239723, + -0.002780932, + -0.0026441375, + -0.037848704, + -0.0026825068, + 0.015214218, + -0.018924352, + -0.007860679, + 0.014159899, + -0.000095297386, + 0.020539194, + 0.0252903, + 0.031949855, + 0.01616177, + -0.0070198933, + -0.019364763, + -0.0009900919, + 0.008307763, + -0.017603116, + -0.0030661987, + -0.008768193, + 0.02172697, + -0.03331113, + -0.02853333, + 0.00665622, + 0.008200997, + -0.024676394, + 0.01809691, + 0.010423074, + -0.0063359207, + 0.0023521981, + -0.002750904, + 0.005331649, + -0.011090363, + 0.023501962, + 0.014720422, + -0.032110006, + 0.00526492, + 0.0029010442, + 0.007867352, + -0.0027559088, + -0.02039239, + -0.001042641, + -0.01839052, + 0.02503673, + 0.010556531, + -0.016188461, + 0.008074212, + -0.025570562, + -0.012224757, + -0.020045398, + 0.009468849, + -0.018857623, + 0.011036981, + 0.01717605, + 0.022767942, + -0.0057687243, + 0.010950233, + 0.006212472, + 0.027132021, + -0.0018750855, + 0.008728156, + 0.011750981, + -0.006182444, + -0.010423074, + -0.010289615, + 0.010903522, + -0.0013429216, + -0.00019737193, + 0.004237293, + -0.007780604, + 0.0038169, + -0.030294977, + -0.004974649, + 0.0071199867, + 0.02952092, + -0.02554387, + -0.043881007, + -0.025276953, + -0.0075337067, + 0.0035599933, + -0.021620203, + -0.009415465, + 0.012872029, + 0.015240909, + -0.012565075, + 0.019938633, + 0.0068130335, + -0.021873774, + -0.03961035, + 0.019524911, + 0.0120045515, + -0.008788212, + -0.029600995, + -0.007046585, + -0.02137998, + 0.008608044, + -0.0043073585, + -0.0043073585, + -0.033551354, + -0.009135203, + 0.005611911, + -0.015494479, + -0.004220611, + 0.011777673, + -0.0011744308, + -0.02653146, + -0.015187526, + -0.013706141, + -0.013826254, + 0.012992141, + 0.009555596, + -0.0010735032, + 0.012458309, + -0.0045309006, + 0.0138529455, + 0.010850139, + 0.005184845, + -0.031042341, + -0.021620203, + -0.0060890233, + 0.027225442, + 0.009201933, + -0.0022821326, + 0.02439613, + -0.014253319, + 0.011203803, + -0.031949855, + 0.015761396, + -0.0017266135, + -0.009021764, + 0.0138529455, + -0.01730951, + -0.0013103912, + 0.0044041155, + 0.015214218, + 0.008834923, + 0.026424693, + -0.0035966944, + 0.007059931, + -0.015240909, + 0.018337136, + -0.01975179, + -0.00028776893, + -0.0042339563, + 0.024169253, + 0.029627686, + 0.002655815, + -0.025677329, + 0.0011719285, + -0.005855472, + 0.011003616, + 0.012077954, + 0.025410412, + 0.019925287, + -0.004340723, + -0.014733768, + 0.023074897, + -0.011410663, + 0.006662893, + -0.023301775, + 0.0069198, + 0.021500092, + 0.023288429, + 0.022541065, + 0.026731648, + 0.0040537883, + -0.014013095, + -0.007473651, + -0.012204738, + -0.0050180224, + 0.0084812585, + -0.013919674, + 0.0036300588, + -0.0036367318, + 0.030561892, + -0.016415339, + 0.010783411, + -0.0015197535, + 0.016535452, + -0.011497411, + 0.005695322, + -0.016121732, + 0.04745768, + 0.0112571865, + -0.0069464915, + 0.020419082, + -0.025490487, + -0.003860274, + -0.01800349, + 0.028159648, + 0.002388899, + -0.031789705, + -0.00402376, + 0.009422138, + 0.007974118, + 0.0256106, + 0.014800497, + -0.0078339875, + 0.0018350482, + 0.024062486, + -0.016455377, + -0.00021686933, + 0.018110257, + 0.026051011, + -0.007914063, + -0.034832552, + -0.02531699, + -0.020218894, + 0.003519956, + 0.009535577, + 0.0043073585, + -0.009689054, + -0.015894853, + -0.011417336, + 0.014119862, + 0.0057553784, + -0.002882694, + -0.040250946, + 0.030001368, + 0.01492061, + -0.01016283, + -0.0077405665, + -0.009388774, + 0.008868287, + -0.01673564, + 0.01965837, + 0.026357964, + 0.020699343, + -0.004304022, + -0.018857623, + -0.0133991875, + 0.0074002487, + 0.02589086, + -0.041345302, + 0.013946366, + -0.019898595, + 0.0014004754, + -0.025930898, + -0.00903511, + -0.009188587, + 0.020218894, + 0.0027342218, + 0.00001191869, + -0.01673564, + -0.013459244, + -0.008427876, + 0.022180727, + -0.02885363, + -0.0024656374, + 0.009462176, + -0.0058621448, + 0.0050847516, + -0.006205799, + -0.016108386, + 0.016708948, + -0.0024089178, + -0.015828125, + 0.009095166, + -0.022848018, + -0.005925537, + 0.10890177, + -0.0012027906, + -0.003973713, + 0.021073025, + 0.0057854066, + 0.023328466, + -0.0040904894, + -0.0011410663, + 0.006352603, + 0.008307763, + -0.022287494, + 0.003483255, + -0.0039837225, + 0.0037368254, + 0.009849204, + -0.0012711879, + -0.013479263, + -0.052876078, + 0.030108135, + -0.009555596, + -0.012304832, + 0.017296163, + 0.0029911285, + 0.02045912, + 0.007960772, + -0.012985468, + 0.01689579, + 0.008794885, + 0.031896472, + -0.009849204, + -0.000403085, + 0.002167025, + 0.014119862, + 0.013292422, + -0.01730951, + -0.008274399, + 0.036914498, + -0.0035366383, + 0.008454567, + -0.003947022, + 0.01988525, + 0.00045792793, + -0.0020435764, + -0.003947022, + -0.002173698, + -0.0062825377, + -0.015000684, + 0.024489552, + -0.036700964, + -0.019858558, + 0.01418659, + 0.00031904815, + -0.03750171, + -0.009395447, + -0.026918488, + 0.024916617, + -0.0057120044, + -0.007974118, + 0.002056922, + 0.023635421, + 0.009642344, + -0.013879637, + -0.013372497, + -0.020525848, + -0.0013304099, + -0.043747548, + 0.0009709073, + -0.013205674, + -0.018884314, + -0.01476046, + 0.0102429055, + -0.011203803, + -0.025076767, + 0.02007209, + 0.015454442, + -0.009261988, + 0.016642218, + -0.02360873, + -0.007900717, + 0.020552538, + -0.013639413, + -0.0133991875, + -0.017349547, + -0.015908198, + -0.011784346, + 0.009689054, + 0.0130255055, + 0.0038736197, + -0.017669845, + 0.017189397, + 0.038596068, + -0.011951168, + 0.006522762, + -0.0035166196, + -0.011710944, + -0.009075147, + 0.008241034, + 0.017829996, + -0.018857623, + -0.0023488617, + 0.021927157, + -0.021940503, + -0.0069398186, + 0.021126408, + -0.0017850014, + -0.0021853754, + 0.010129466, + -0.003298082, + -0.010102774, + -0.001996866, + 0.02888032, + -0.0093153715, + 0.014360086, + 0.001457195, + 0.003616713, + 0.0082076695, + 0.00006532146, + 0.023114935, + 0.00850795, + 0.010189522, + -0.0147871515, + -0.0016231835, + 0.015427751, + 0.015027376, + 0.024195943, + -0.018817585, + 0.002757577, + -0.010896849, + 0.009101839, + 0.0016657233, + 0.008234361, + 0.018377174, + -0.019858558, + -0.016708948, + -0.0015189194, + 0.0044841906, + -0.0138396, + 0.023755532, + 0.003653414, + -0.029814528, + -0.008434549, + 0.005485126, + 0.018764202, + -0.015921544, + -0.039556965, + -0.028132956, + 0.0036033674, + 0.035286307, + 0.0026674927, + 0.008174306, + 0.009322044, + 0.028773556, + -0.007607109, + -0.010022699, + -0.011070345, + -0.006032304, + -0.015227563, + -0.013419206, + 0.012331524, + 0.005501808, + 0.020565884, + 0.00030507674, + 0.010816774, + 0.0043006856, + -0.0049946676, + 0.005395042, + -0.001981852, + 0.006886435, + 0.010409728, + 0.029067162, + 0.008174306, + 0.022073962, + -0.005131462, + -0.0011961177, + -0.030108135, + 0.0061323973, + -0.0135193, + -0.015521171, + -0.021099716, + -0.030268285, + -0.0015614592, + -0.00871481, + -0.010563204, + 0.009382101, + 0.0015005689, + 0.02595759, + 0.025223572, + -0.00041726494, + 0.013692795, + -0.008267726, + 0.009769129, + -0.011504084, + -0.023341812, + 0.008654755, + 0.00018559009, + -0.005014686, + -0.020886185, + 0.008788212, + 0.0062892106, + 0.008788212, + 0.010036045, + 0.0009784143, + -0.009949298, + 0.014680386, + -0.0007957436, + 0.041211843, + -0.00928868, + -0.008354474, + 0.015667975, + -0.0346724, + -0.016014965, + -0.007653819, + 0.0065861545, + -0.04409454, + -0.020832801, + 0.013145617, + -0.010249578, + 0.02255441, + -0.017736575, + -0.019645024, + 0.01959164, + 0.016535452, + 0.025717366, + -0.015828125, + 0.023061551, + 0.0083878385, + -0.010796756, + 0.011370625, + 0.015948236, + -0.01689579, + -0.023208354, + 0.018937698, + 0.018363828, + -0.020485811, + -0.020218894, + 0.002595759, + 0.009622325, + -0.03451225, + 0.006365949, + 0.027252134, + 0.029787837, + 0.0010835126, + 0.00572535, + 0.009582288, + -0.0054817894, + 0.023929028, + -0.015788088, + -0.020525848, + -0.01666891, + -0.004577611, + -0.015107451, + 0.006833052, + -0.002046913, + 0.0031095725, + 0.020552538, + -0.009322044, + -0.011010289, + -0.019898595, + 0.010016026, + 0.0069998745, + -0.02917393, + 0.023101589, + 0.0022737915, + 0.007053258, + 0.0107033355, + 0.0034699093, + -0.008628063, + 0.0013821248, + 0.014400124, + 0.024703085, + -0.0071333325, + 0.0059989393, + 0.002167025, + -0.011644214, + 0.0122781405, + 0.009248642, + -0.0009875896, + -0.00830109, + -0.0054250695, + -0.008781539, + 0.0106165875, + 0.0048678825, + 0.011070345, + -0.012138009, + -0.03002806, + -0.014707076, + -0.007994137, + -0.015467788, + 0.00079032185, + -0.011944495, + -0.0170159, + -0.020605922, + -0.0046710316, + 0.022207418, + 0.014013095, + -0.021446709, + 0.009141876, + 0.0044474895, + -0.0107033355, + 0.006646211, + -0.01717605, + 0.010509822, + 0.0018584033, + 0.0006201629, + -0.0147871515, + -0.025757402, + 0.027999498, + -0.023982411, + -0.0018250388, + -0.029387463, + -0.01377287, + 0.023501962, + -0.002078609, + 0.019217959, + 0.025850823, + -0.017189397, + 0.008527969, + -0.03333782, + -0.014627002, + 0.0028142966, + 0.010563204, + -0.0020902867, + 0.026291234, + -0.007366884, + 0.01517418, + 0.018977735, + 0.015454442, + 0.0035633298, + -0.010716681, + -0.013906329, + -0.009789147, + -0.00836782, + 0.00007934498, + -0.0073001552, + -0.017149359, + 0.0040137507, + -0.00944883, + -0.0053516678, + 0.01924465, + -0.0072134077, + 0.0067262854, + 0.013652759, + 0.022701213, + -0.0010526504, + -0.006803024, + -0.020685997, + -0.0127452435, + -0.006752977, + -0.02379557, + -0.006065668, + -0.0152676, + 0.02519688, + 0.027412282, + -0.040678013, + -0.02338185, + 0.026891796, + -0.031576175, + 0.003166292, + -0.02214069, + 0.015361021, + 0.014453506, + -0.00045167207, + -0.00036429876, + 0.010603242, + -0.010262924, + 0.009048455, + -0.029307388, + -0.003750171, + 0.022260802, + -0.017616462, + 0.008588025, + 0.00816096, + -0.014293357, + 0.0039236667, + 0.007580417, + -0.0014705409, + 0.01492061, + -0.006676239, + 0.00314961, + 0.0003401095, + 0.00036617552, + 0.01492061, + -0.0083878385, + 0.023942374, + 0.0071533513, + -0.0349927, + 0.012291486, + 0.010783411, + -0.016588835, + 0.008354474, + 0.013425879, + 0.0014421811, + -0.02080611, + 0.00541506, + -0.02089953, + 0.014573619, + -0.0012745244, + -0.0081075765, + 0.016415339, + -0.012972122, + -0.00024001596, + 0.031389333, + 0.000569282, + -0.0065394444, + -0.022474336, + 0.010543185, + -0.012391579, + 0.0085746795, + 0.013279076, + 0.0031712968, + -0.009201933, + -0.022113997, + 0.008354474, + -0.027492357, + -0.020178856, + 0.0065561268, + -0.0019801839, + -0.021793699, + 0.02519688, + 0.0011026971, + -0.0019234641, + -0.0062224814, + -0.011003616, + 0.00190845, + -0.006722949, + -0.025770748, + -0.003373152, + -0.03878291, + -0.018030182, + 0.0060756775, + -0.01393302, + -0.00020310647, + 0.0008024165, + 0.024556281, + -0.020525848, + 0.009155222, + 0.25111467, + -0.007520361, + -0.0110770175, + 0.028293107, + -0.0070799496, + 0.029414153, + 0.03387165, + -0.013158963, + -0.0097024, + 0.019831866, + -0.015107451, + -0.0027275488, + 0.01409317, + -0.0038402553, + 0.0082944175, + -0.011097036, + -0.019364763, + -0.04062463, + -0.0030862174, + -0.009375428, + 0.034378793, + -0.008914998, + -0.0014580291, + -0.0066495473, + 0.0050680693, + 0.013973057, + -0.0041238535, + 0.008434549, + 0.020152165, + 0.023261737, + 0.010683317, + 0.019578295, + 0.0003943268, + 0.03331113, + 0.0043507325, + 0.0070132203, + -0.0011886107, + -0.007787277, + 0.024943309, + 0.008321109, + 0.0021136417, + -0.012144682, + -0.0077472394, + -0.0011585826, + 0.0095022125, + 0.028613405, + -0.011270532, + -0.0061857803, + -0.003194652, + 0.02262114, + -0.029707761, + -0.004017087, + 0.01682906, + 0.023021514, + 0.011250514, + 0.0014229964, + 0.009048455, + -0.020619268, + -0.01915123, + -0.010509822, + 0.0008983395, + 0.024316056, + 0.003623386, + 0.024075832, + 0.0000784066, + -0.010823447, + -0.028266415, + 0.024502898, + -0.004871219, + 0.004140536, + -0.0005375857, + -0.003446554, + -0.0011844402, + -0.029787837, + -0.029013779, + -0.0026925162, + 0.03864945, + 0.00074152625, + 0.018150294, + 0.015881507, + -0.016175115, + 0.009835858, + -0.0013862954, + 0.0008512121, + -0.006893108, + -0.040384404, + 0.0027108665, + 0.0037835357, + 0.016281882, + -0.004387433, + 0.0052315556, + -0.021433363, + -0.0017166041, + -0.0077072023, + 0.0048478637, + -0.019351417, + -0.00092920166, + 0.006395977, + 0.000065217195, + 0.0056686304, + -0.0197251, + 0.004771125, + 0.0048512, + -0.022354223, + -0.01285201, + 0.0060890233, + 0.010556531, + 0.013679449, + 0.013138944, + -0.011710944, + -0.016014965, + -0.01682906, + 0.0060022757, + -0.010496476, + 0.00040663, + -0.0013270734, + -0.025930898, + -0.016975863, + 0.03267053, + -0.033898342, + 0.012158028, + -0.025010038, + -0.0071533513, + 0.0053516678, + -0.018457249, + 0.002078609, + -0.016081695, + 0.00060598296, + 0.009268661, + -0.031816397, + 0.030401744, + -0.016175115, + 0.014400124, + 0.0045142183, + -0.015881507, + 0.007320174, + 0.003947022, + -0.0033247736, + -0.0014446834, + -0.02137998, + 0.009969316, + -0.0074002487, + 0.008094231, + 0.00402376, + -0.0145068895, + -0.019231305, + 0.0069264728, + 0.017963452, + -0.013205674, + 0.0132990945, + -0.022380915, + -0.013158963, + 0.0022654503, + -0.016748985, + 0.015761396, + 0.00092836755, + 0.00026274554, + -0.008374493, + 0.011270532, + 0.027332207, + -0.015601246, + 0.0141332075, + 0.011744308, + -0.00578207, + -0.02188712, + -0.015734704, + -0.17306839, + 0.032910753, + 0.010896849, + -0.01632192, + 0.015187526, + 0.013499281, + 0.011824383, + -0.021633549, + 0.012358215, + 0.009328717, + 0.025263608, + 0.031202491, + -0.018777547, + -0.014733768, + 0.01151743, + -0.012358215, + -0.0040137507, + 0.0055451817, + 0.030161519, + 0.010489803, + 0.02166024, + -0.02057923, + 0.0009500545, + 0.0071600243, + -0.029814528, + 0.033925034, + 0.011183784, + 0.025877515, + -0.016855752, + -0.009015091, + -0.02751905, + -0.026344618, + 0.0120912995, + 0.032056622, + -0.0010001012, + 0.008601371, + 0.00053299806, + -0.024102524, + -0.012658495, + 0.022567756, + 0.003750171, + 0.020138819, + 0.00028568364, + -0.008654755, + 0.014653694, + 0.017629808, + 0.0013787885, + 0.0023021514, + -0.011791019, + -0.017789958, + 0.0256106, + -0.013919674, + 0.020298969, + 0.0006706267, + 0.0032380258, + 0.020032052, + 0.0141332075, + -0.0009216946, + 0.015948236, + -0.0214734, + -0.019551603, + -0.008601371, + 0.018403865, + -0.016415339, + -0.020672651, + 0.0063792947, + -0.016522106, + -0.0026257872, + -0.043267097, + 0.026998563, + -0.010029372, + -0.013225692, + 0.0026357963, + -0.012978795, + 0.0013103912, + -0.019338071, + -0.00022375076, + 0.030161519, + 0.0041805734, + -0.017629808, + -0.018684126, + 0.025490487, + -0.018363828, + -0.018564014, + 0.0025006703, + -0.008120922, + 0.0034231988, + 0.022954784, + -0.007053258, + -0.021913812, + 0.027572433, + -0.025410412, + 0.007954099, + -0.010756719, + 0.026264545, + 0.006576145, + -0.0031846426, + 0.021967195, + -0.004017087, + -0.010583223, + -0.00066520495, + -0.011550794, + -0.014280011, + 0.012838664, + 0.026704956, + -0.0019551604, + 0.008227688, + 0.0010217882, + 0.012298159, + -0.005361677, + -0.028426563, + 0.00093587453, + 0.015227563, + 0.021046335, + -0.026224507, + -0.00464434, + 0.016188461, + 0.0017583098, + 0.019578295, + -0.023341812, + 0.05207533, + -0.008314436, + 0.016628873, + 0.009775802, + 0.00029152242, + -0.01616177, + -0.06897112, + -0.021713624, + 0.002854334, + 0.005641939, + -0.011684252, + 0.029013779, + 0.007954099, + 0.01867078, + 0.008441222, + 0.02681172, + -0.0026891797, + -0.024489552, + -0.0020902867, + -0.0011427345, + 0.026838413, + -0.001641534, + 0.011010289, + -0.02853333, + 0.0060990327, + 0.026931833, + -0.000014557875, + -0.0046543493, + 0.008868287, + -0.011604177, + -0.015054068, + -0.0009208605, + -0.02554387, + 0.022420952, + 0.022848018, + 0.0031112407, + 0.001441347, + -0.0032430305, + 0.0025540534, + -0.028319798, + 0.0074002487, + 0.019271342, + -0.038729526, + -0.0016440363, + 0.020258931, + -0.024449514, + -0.0020102118, + -0.011584158, + 0.017216088, + -0.02137998, + -0.010196195, + 0.005962238, + -0.01800349, + -0.009622325, + 0.01593489, + -0.025637291, + -0.026357964, + -0.023195008, + 0.00068063603, + 0.01022956, + 0.008521296, + -0.017456312, + -0.018483939, + 0.0012545056, + -0.009635671, + -0.003166292, + 0.014560273, + 0.010850139, + -0.013879637, + 0.011303897, + 0.022594448, + 0.0028960395, + -0.021206483, + -0.02710533, + 0.009528904, + -0.0049713124, + 0.0068597435, + 0.010963579, + -0.007473651, + 0.0005559362, + -0.009008418, + -0.03680773, + -0.01800349, + -0.01119713, + 0.012725225, + -0.016775677, + 0.0028293105, + -0.03477917, + -0.0007181711, + -0.0019551604, + 0.025156843, + 0.015294292, + -0.0060623316, + 0.010302961, + -0.0016673915, + -0.034058493, + -0.006065668, + 0.036220513, + 0.008541315, + -0.03186978, + -0.014693731, + 0.032296848, + 0.0152676, + -0.014933956, + 0.005805425, + 0.014480198, + 0.00052590814, + -0.01816364, + -0.08295752, + 0.012698533, + 0.010356344, + -0.0037001243, + 0.014693731, + -0.0086681, + 0.015601246, + -0.018817585, + -0.0021837072, + -0.0061757714, + -0.017950106, + -0.00036054527, + -0.0054050507, + 0.0076938565, + -0.028960396, + -0.018523976, + 0.025050076, + -0.0014563609, + 0.015120797, + 0.012618458, + 0.0058821635, + 0.00526492, + 0.033097595, + -0.001323737, + -0.009755783, + 0.008354474, + -0.014266665, + 0.031202491, + -0.021193137, + -0.007867352, + -0.00056761375, + -0.029067162, + -0.013639413, + 0.016348612, + -0.0053082937, + -0.01896439, + -0.01068999, + 0.0024222636, + 0.0003165458, + 0.02602432, + -0.017029246, + -0.009615652, + 0.029654378, + -0.01476046, + -0.010082755, + 0.0061390703, + -0.0007736396, + -0.004941284, + 0.01616177, + 0.016762331, + -0.00049963355, + 0.01717605, + 0.015347675, + -0.0141332075, + 0.017042592, + -0.054504268, + 0.009055128, + 0.010649952, + -0.018203678, + 0.013178982, + 0.019645024, + 0.010790084, + 0.0025173523, + 0.011984533, + -0.0012294822, + -0.0143200485, + -0.0038502647, + -0.0014229964, + 0.007053258, + -0.02968107, + -0.04118515, + 0.014360086, + 0.015067413, + 0.020152165, + 0.020138819, + 0.0033531333, + 0.009842531, + -0.024409477, + -0.030081443, + 0.03248369, + -0.0012670173, + 0.0070866225, + -0.026785031, + 0.019137884, + 0.004814499, + -0.007046585, + -0.014907264, + -0.006913127, + -0.0058855, + 0.032777295, + -0.0077005294, + 0.0027792638, + 0.01581478, + 0.0042339563, + 0.023008168, + -0.002046913, + -0.008721483, + -0.027625816, + 0.025917552, + 0.01823037, + 0.016642218, + -0.0007899048, + -0.002382226, + -0.024649702, + -0.0068664164, + 0.00015358102, + -0.03931674, + -0.0052849385, + 0.01533433, + 0.0031079042, + 0.013352478, + 0.019965325, + -0.0037835357, + 0.03400511, + 0.008868287, + -0.0012895383, + -0.011343934, + -0.037741937, + -0.020685997, + 0.028907012, + 0.023275083, + 0.007653819, + 0.021913812, + -0.006676239, + -0.006906454, + 0.0069264728, + 0.008120922, + -0.017002555, + -0.00598893, + -0.007813969, + 0.013332459, + -0.0058888365, + -0.02738559, + 0.004200592, + -0.00804752, + -0.023848953, + 0.00183338, + 0.005975584, + -0.012444963, + 0.03632728, + 0.016989209, + 0.023421887, + -0.0036467412, + 0.0042172745, + 0.02039239, + 0.008060866, + 0.013652759, + -0.016855752, + -0.015921544, + 0.00862139, + -0.002714203, + -0.000095245254, + -0.01119713, + -0.020312315, + -0.011630869, + 0.006072341, + 0.024129216, + -0.012885374, + -0.0032380258, + 0.042679884, + 0.025076767, + 0.014773806, + 0.0105164945, + -0.006786342, + -0.008694792, + 0.023208354, + 0.0077605853, + 0.0095022125, + -0.008881633, + 0.022594448, + 0.012938757, + -0.017296163, + -0.008834923, + 0.014533581, + -0.010676644, + 0.0013871295, + -0.009942625, + 0.012771935, + 0.012605113, + -0.014853881, + 0.0077472394, + -0.016108386, + -0.040838163, + 0.0040270966, + 0.0019551604, + -0.0047677886, + 0.0013337464, + -0.013759525 + ] + }, + { + "object": "embedding", + "index": 3, + "embedding": [ + -0.0010213737, + 0.008644082, + 0.0023587057, + 0.009380755, + -0.0029162795, + 0.0086643575, + -0.018856129, + 0.0043659713, + -0.0068497085, + -0.04287573, + -0.0075086593, + -0.010408043, + 0.021775788, + -0.019937484, + -0.0062008956, + -0.013003294, + 0.023168033, + -0.006413787, + 0.010455352, + -0.025371293, + -0.013476388, + 0.023438372, + -0.016044606, + -0.009150967, + 0.0061704824, + 0.005903523, + 0.007907409, + -0.021383796, + 0.013523697, + -0.0016980654, + 0.0190724, + -0.0030886205, + 0.0021998817, + -0.004203768, + 0.0023468784, + -0.013625074, + -0.015490412, + -0.005937315, + -0.0011193715, + -0.011164991, + 0.02591197, + -0.02397905, + -0.010833826, + -0.008637324, + -0.0030210358, + 0.0026172171, + -0.016977275, + 0.017409816, + -0.024695447, + 0.010536454, + 0.0074951425, + 0.0034941286, + -0.03752302, + -0.012422066, + -0.019829348, + -0.00043676607, + -0.028196333, + 0.0045011407, + -0.006494889, + -0.014706429, + 0.011678635, + 0.000102855454, + -0.0281693, + 0.016409563, + -0.0037779843, + 0.00011837881, + -0.008157472, + 0.011901665, + -0.04260539, + -0.021140492, + 0.022843625, + 0.01858579, + -0.011219059, + -0.021478415, + 0.018639859, + -0.006626679, + -0.024560276, + 0.007522176, + 0.00737349, + 0.0059001436, + 0.016842104, + -0.018639859, + 0.01726113, + 0.004882994, + 0.024695447, + 0.0069071557, + -0.010921686, + 0.022613838, + 0.008191264, + -0.026425615, + 0.03173777, + 0.0031545155, + 0.011746219, + -0.0048221676, + -0.03033201, + -0.011556982, + -0.015517445, + 0.019194052, + -0.0077722394, + -0.010556729, + -0.01770719, + 0.011151474, + -0.004264594, + -0.015612064, + -0.016788037, + 0.00671116, + 0.008704908, + 0.0002832221, + 0.010293148, + 0.005704148, + 0.0093537215, + 0.024763031, + -0.016450115, + -0.052526824, + -0.02185689, + -0.016869139, + 0.03522514, + 0.0117259445, + -0.013260117, + -0.03381938, + 0.0075356932, + 0.036144294, + -0.007893892, + -0.0050046463, + 0.031818874, + 0.012307173, + -0.0087387, + -0.01046211, + -0.004720791, + -0.012090902, + 0.005271606, + 0.014760497, + 0.010867618, + 0.020762017, + -0.009664611, + 0.024735996, + -0.022938244, + 0.022897694, + -0.034278955, + -0.018707443, + 0.02203261, + 0.019045366, + -0.025155023, + 0.011935457, + 0.010313424, + 0.02662837, + 0.024465658, + 0.022438118, + 0.00737349, + 0.0055216695, + 0.018072147, + -0.016612317, + 0.020032102, + -0.014314438, + 0.0032085832, + 0.016990792, + 0.026141759, + 0.018964265, + -0.005197263, + 0.003558334, + 0.003761088, + 0.009286136, + 0.015598547, + -0.008927938, + -0.011219059, + 0.019613078, + 0.006728056, + 0.013834586, + 0.0060150377, + -0.021613585, + -0.013226325, + 0.020964772, + -0.0014032272, + 0.009772747, + 0.008252091, + 0.010313424, + 0.03222438, + 0.01761257, + -0.021208076, + 0.0067922617, + -0.0031359298, + -0.0132466, + 0.006227929, + 0.008434569, + -0.013239841, + -0.002096815, + 0.009941708, + 0.008015544, + 0.006643575, + 0.002061333, + 0.008488637, + 0.0397398, + 0.018031595, + 0.0026510095, + -0.67217034, + -0.051850975, + 0.0032254795, + 0.0016161189, + 0.020910705, + 0.0067719864, + 0.0150713865, + 0.006079243, + -0.0040415647, + -0.001850131, + -0.0314404, + 0.0071504605, + -0.007988511, + -0.0019126468, + -0.0027067668, + -0.0028317985, + -0.0006935879, + -0.012030075, + 0.014976768, + 0.012178762, + -0.006379995, + 0.0045856214, + -0.005704148, + 0.0048593394, + 0.021154009, + -0.015341725, + -0.0040753568, + -0.019275155, + -0.008718425, + 0.032602854, + -0.031007856, + 0.0381448, + 0.009475374, + 0.005268227, + 0.047011912, + -0.009948467, + -0.022776041, + 0.026236378, + 0.011279885, + 0.03425192, + -0.022654388, + -0.016585283, + 0.0058021457, + -0.025046887, + -0.011928698, + 0.012070626, + 0.017855875, + -0.04498437, + -0.0045450707, + -0.018991299, + 0.020248374, + -0.013219566, + -0.011894906, + -0.01942384, + 0.004626172, + 0.0143279545, + 0.02207316, + -0.014963251, + 0.006809158, + -0.00710991, + -0.021559516, + -0.0066570924, + -0.029548027, + -0.02287066, + -0.014638844, + -0.0017403058, + -0.029277688, + -0.0031883079, + 0.006278618, + -0.008427811, + 0.010259356, + 0.023789812, + -0.013571006, + 0.010293148, + 0.019923966, + 0.017274648, + 0.008988764, + 0.0015966883, + -0.007974993, + -0.01695024, + -0.007332939, + -0.003612402, + -0.0157202, + 0.0077114133, + 0.028764045, + -0.035684716, + -0.020910705, + 0.005548703, + 0.023032863, + -0.027790826, + 0.005656839, + 0.012253105, + -0.005224297, + 0.018004563, + -0.008157472, + 0.0095835095, + 0.0065861284, + -0.00096223707, + 0.014652361, + -0.011847597, + -0.017761257, + -0.011104165, + 0.0052918815, + -0.015544479, + -0.024965785, + -0.0029754161, + -0.0053662243, + 0.0087387, + 0.025939004, + -0.012895159, + 0.007718172, + -0.011577258, + -0.030223874, + -0.008725184, + 0.0097254375, + -0.027980063, + 0.017936977, + 0.0012925572, + 0.016531216, + 0.003686745, + 0.0035110246, + -0.0069747404, + 0.031467434, + 0.0033268565, + 0.00020835093, + 0.014598293, + -0.0020495057, + -0.014963251, + -0.010773, + 0.00238405, + 0.00037657344, + 0.002578356, + -0.006565853, + -0.008535947, + 0.026587818, + -0.017639605, + -0.018788544, + -0.0031646532, + 0.030602349, + -0.042443186, + -0.041037425, + -0.0081507135, + 0.004230802, + 0.0074072825, + 0.0111244405, + -0.023816846, + -0.022127228, + 0.02697981, + -0.0029720368, + 0.032467686, + 0.002101884, + -0.0038523274, + -0.037712257, + 0.022329982, + -0.0035346793, + -0.0032660302, + -0.022248881, + -0.011164991, + 0.0025749768, + 0.012624821, + 0.012205795, + 0.010326941, + -0.040577848, + 0.0012410239, + 0.008840078, + -0.015206556, + 0.014152234, + 0.014963251, + 0.002318155, + -0.018423587, + -0.003717158, + -0.005788629, + -0.009651094, + 0.015422827, + 0.015084904, + -0.01125961, + 0.009995776, + -0.0045247953, + -0.0035786096, + 0.006839571, + 0.0065489565, + -0.023965532, + -0.012983019, + 0.006545577, + 0.026371546, + -0.007055842, + 0.0077114133, + 0.014179269, + -0.0062448257, + 0.002874039, + -0.027358284, + 0.02437104, + -0.0007628622, + 0.0025935625, + 0.015949987, + -0.023384303, + 0.005359466, + 0.0055824956, + -0.0035313002, + 0.023478922, + 0.021924473, + -0.010739207, + 0.010489144, + -0.009319929, + 0.0051905042, + -0.02193799, + -0.0058021457, + -0.007359973, + 0.02176227, + 0.0281693, + 0.020342993, + -0.025966039, + -0.010658106, + 0.0064475797, + 0.022478668, + 0.03738785, + 0.015652616, + 0.009394272, + -0.005592633, + -0.002441497, + 0.0030869308, + -0.030304976, + 0.015220073, + -0.018558756, + -0.003541438, + 0.0019278533, + 0.006177241, + 0.038334038, + 0.015449861, + -0.0040145307, + -0.022059644, + -0.011333953, + -0.0077992734, + 0.008988764, + 0.012895159, + -0.019910451, + 0.0059542116, + -0.013787277, + 0.035792854, + 0.007927684, + 0.0147875305, + -0.0036968826, + 0.03676607, + -0.010705415, + -0.0039706007, + -0.009401031, + 0.040172342, + 0.015179521, + -0.0058798683, + 0.018328968, + -0.025438879, + -0.015990539, + -0.017964011, + 0.0067652278, + 0.014341472, + -0.035522513, + 0.009319929, + 0.0031714116, + 0.019369774, + 0.04211878, + 0.02397905, + -0.0010357354, + 0.0062718596, + 0.009968742, + 0.008137197, + -0.00023802483, + 0.032467686, + 0.0049776128, + -0.008143956, + -0.0061130356, + -0.02022134, + -0.0086643575, + -0.01593647, + -0.014706429, + -0.004095632, + -0.012604545, + -0.0014632086, + -0.018639859, + 0.026141759, + 0.0043423166, + -0.008731943, + -0.037279718, + 0.027561037, + -0.009529442, + -0.0007624398, + -0.013064121, + -0.009745712, + -0.009455099, + -0.026141759, + 0.021356763, + 0.009211794, + 0.016260877, + -0.008285883, + 0.00073878514, + -0.009042832, + 0.007130185, + 0.019315705, + -0.037144545, + -0.016923208, + -0.019234603, + 0.016801555, + -0.022708457, + 0.0029382445, + -0.0014311059, + 0.012435583, + -0.006596266, + 0.01774774, + -0.025709217, + -0.012834333, + 0.000044669257, + 0.022911211, + -0.012124694, + -0.0027135254, + 0.009482132, + 0.011252851, + 0.0013778829, + -0.00489989, + 0.0038219143, + 0.012401791, + -0.013908929, + -0.0052479515, + -0.021505449, + -0.024046633, + -0.00043148603, + 0.084778234, + -0.0034180959, + 0.00657937, + 0.002101884, + 0.011043339, + 0.008995523, + -0.004305145, + 0.0067517105, + 0.0062448257, + 0.016409563, + -0.011502914, + -0.018991299, + 0.012023317, + 0.001227507, + 0.0063833743, + -0.012124694, + -0.013537214, + -0.019194052, + 0.026033623, + -0.0063056517, + 0.00865084, + 0.012340965, + -0.001894061, + 0.018518206, + -0.0064002704, + -0.004115908, + 0.013097913, + 0.010049844, + 0.0013128327, + -0.025411844, + 0.012793782, + 0.0005677114, + -0.015409309, + -0.0016718763, + -0.020113204, + -0.0016271014, + 0.018085664, + 0.020586297, + -0.008157472, + -0.012199037, + 0.010212047, + 0.0063124103, + 0.0051195403, + -0.005082369, + -0.0018687168, + -0.0077384473, + 0.0021255387, + 0.012489651, + -0.027304215, + 0.004798513, + 0.03541438, + -0.0046025175, + -0.037279718, + -0.014909183, + -0.00094618567, + 0.01333446, + -0.012003041, + -0.0038557067, + 0.0017943736, + 0.014841598, + -0.00017962744, + -0.021559516, + 0.01457126, + -0.009421306, + -0.03400862, + -0.044524796, + -0.0015468446, + -0.014855116, + -0.03827997, + -0.021248627, + 0.016004056, + -0.013179015, + -0.029602095, + 0.009752471, + 0.017369267, + -0.004538312, + 0.026168793, + -0.010056602, + -0.0101850135, + 0.02662837, + -0.01607164, + -0.03417082, + -0.02392498, + -0.027817858, + 0.00040402974, + 0.009968742, + 0.020559262, + -0.017098928, + 0.002115401, + -0.016720453, + 0.040415645, + -0.011827321, + 0.014733463, + 0.0009689955, + -0.014368505, + -0.020829601, + 0.013239841, + 0.020599814, + -0.02949396, + -0.004896511, + 0.013354735, + -0.021708203, + 0.0019041987, + -0.013800794, + -0.0059069023, + 0.007846583, + 0.01690969, + 0.000936048, + -0.0072923885, + 0.00485596, + 0.029034384, + -0.036495734, + 0.00984709, + 0.013030329, + -0.020424094, + 0.03354904, + 0.013990032, + 0.0348737, + 0.007691138, + -0.00083382614, + 0.008421052, + -0.011002788, + 0.022154262, + 0.015963504, + 0.00047478246, + 0.006802399, + -0.0013381769, + -0.00034827236, + 0.006423925, + -0.0026594577, + -0.011131199, + 0.013388528, + -0.019491425, + -0.022235364, + -0.022194812, + -0.0075694853, + -0.0083805015, + 0.010563487, + 0.0037847427, + -0.03611726, + -0.01461181, + -0.016004056, + 0.011543466, + -0.008576497, + -0.020464644, + -0.016896173, + 0.006140069, + 0.015868885, + -0.0076505872, + 0.01377376, + 0.02012672, + 0.024398074, + -0.01426037, + -0.0075289346, + -0.024492692, + -0.030304976, + -0.021018839, + -0.030791586, + 0.002321534, + 0.017869392, + 0.034900736, + 0.0057751117, + -0.0041902508, + -0.01642308, + -0.0014648982, + 0.011151474, + -0.014733463, + 0.02397905, + -0.006298893, + 0.0135304555, + 0.027871927, + 0.018991299, + -0.015517445, + -0.004967475, + -0.037063446, + 0.028250402, + 0.0006534595, + -0.011408296, + -0.0067483317, + -0.03346794, + -0.0020106446, + -0.0037374336, + -0.015125454, + 0.008583256, + -0.0038962576, + -0.00024013685, + 0.021600068, + -0.004291628, + 0.015747232, + -0.013935964, + 0.020059137, + -0.009198276, + -0.0097254375, + -0.010252598, + 0.0026391821, + 0.0025935625, + -0.026817605, + 0.0026459408, + 0.01337501, + -0.001041649, + 0.024425108, + -0.0143279545, + -0.005612909, + -0.01037425, + 0.006386753, + 0.028412605, + -0.009421306, + -0.013706176, + 0.00036094448, + -0.027817858, + -0.037333783, + -0.006292135, + 0.0106107965, + -0.01284785, + -0.014017065, + 0.0043997634, + -0.0048863734, + 0.018315451, + -0.011604291, + -0.0026915604, + 0.026344514, + -0.004176734, + 0.021748753, + -0.016801555, + 0.015963504, + 0.0100092925, + -0.014733463, + -0.0010450283, + -0.00079707697, + -0.016152741, + -0.018883163, + 0.009637577, + 0.019491425, + -0.011469122, + -0.02675002, + -0.0045856214, + 0.009002281, + -0.014422573, + -0.0040246686, + 0.04322717, + 0.019085918, + -0.0059846244, + -0.015287657, + 0.0037982597, + -0.010725691, + 0.020897187, + -0.0024347384, + -0.009914674, + -0.0074951425, + -0.013949481, + 0.0018822337, + -0.0016144293, + -0.009157726, + 0.013746726, + 0.018612824, + -0.015017319, + 0.005646701, + -0.014165752, + 0.018815579, + 0.0039266706, + -0.012949227, + 0.016058123, + 0.010401284, + 0.0079209255, + 0.020194305, + 0.018247867, + -0.0013145222, + 0.016531216, + 0.008306159, + 0.029710231, + -0.013537214, + -0.019045366, + -0.001580637, + 0.0036326773, + 0.015436344, + -0.005822421, + 0.004578863, + 0.0014370196, + -0.03757709, + -0.0011261299, + 0.015476895, + 0.0034518882, + 0.004420039, + 0.0047444454, + -0.024479175, + -0.022965278, + 0.0041091493, + 0.00016452649, + -0.01006336, + -0.0015400861, + -0.0075019007, + -0.007434316, + -0.004825547, + 0.019045366, + -0.01205035, + -0.014706429, + 0.021546, + 0.016693419, + -0.008495396, + 0.000274774, + 0.009630819, + 0.0057818703, + -0.0016085156, + 0.0047714794, + -0.014138717, + -0.006238067, + 0.014246853, + -0.009542959, + 0.00042916278, + -0.020464644, + 0.005400017, + 0.043416407, + 0.025817353, + 0.013456112, + 0.025749767, + -0.030169807, + -0.0017960632, + -0.030791586, + -0.026087692, + 0.018288417, + 0.024884684, + 0.02666892, + 0.004626172, + -0.016301427, + 0.021126974, + 0.02339782, + -0.019477908, + -0.006940948, + -0.022221847, + -0.04182141, + -0.01108389, + 0.0039942553, + -0.01841007, + -0.024384556, + -0.018802062, + -0.0140981665, + -0.005136437, + 0.007630312, + 0.00067120045, + 0.0045315535, + 0.0056872517, + 0.022681423, + -0.00035650926, + 0.010577004, + -0.031197093, + -0.0070085325, + 0.0064171664, + -0.019545494, + -0.036090225, + -0.019207569, + -0.016517699, + 0.014679395, + -0.0015721889, + -0.020694433, + -0.016450115, + 0.013618316, + -0.034143787, + -0.0062177917, + -0.027142012, + 0.01258427, + 0.019761764, + 0.0005677114, + 0.010955479, + -0.0077722394, + -0.008704908, + 0.011685393, + -0.01443609, + 0.0073802485, + 0.012151727, + -0.023641124, + 0.0256957, + 0.019180536, + -0.021464897, + -0.008258849, + 0.012523443, + 0.005704148, + -0.0072721126, + -0.007420799, + -0.01103658, + 0.00084692065, + 0.009820056, + -0.013091154, + -0.008745459, + 0.022667905, + 0.017950494, + -0.045633186, + 0.0010264425, + -0.0039773593, + -0.006940948, + -0.0042882487, + -0.01258427, + 0.009907916, + 0.005815663, + 0.010806792, + -0.02710146, + -0.0134425955, + -0.0033674072, + -0.010766242, + 0.013037087, + 0.0039874967, + 0.004220664, + 0.009617302, + 0.0071369433, + -0.0021508827, + -0.0138143115, + -0.002586804, + -0.030899722, + -0.01108389, + 0.012077385, + -0.00856298, + -0.012509926, + -0.014246853, + 0.010340458, + -0.037982598, + -0.015355242, + 0.0033606489, + -0.0014370196, + -0.035117008, + 0.020802569, + 0.013037087, + -0.023330236, + -0.0050012674, + 0.0038388106, + -0.009455099, + -0.0063056517, + -0.021478415, + 0.008968488, + -0.03133226, + -0.010441835, + -0.0039976346, + 0.0031156542, + -0.024087185, + -0.00856298, + -0.0029720368, + -0.011185266, + -0.013449354, + 0.21756864, + -0.00763707, + -0.0062887557, + 0.021708203, + -0.014909183, + 0.035171073, + 0.028601842, + -0.00057911634, + -0.0031122752, + 0.0024431867, + -0.015341725, + -0.011320436, + 0.007359973, + -0.0031511362, + 0.0016693419, + -0.03576582, + -0.022911211, + -0.027898962, + -0.028574808, + -0.02057278, + 0.032062177, + -0.009441582, + 0.014517192, + -0.007745206, + 0.026506716, + 0.0058697304, + -0.018018078, + 0.015963504, + 0.02039706, + 0.025601082, + 0.017517952, + 0.014517192, + -0.0041699754, + 0.015625581, + -0.0023722227, + 0.012854609, + 0.0024617724, + -0.0026037002, + 0.024776548, + 0.014814565, + 0.009178001, + -0.019045366, + -0.021140492, + -0.0015882403, + -0.017842358, + 0.018747993, + -0.009279378, + 0.0015890851, + -0.0298454, + 0.025790319, + -0.038712513, + -0.0055655995, + 0.020315958, + 0.031467434, + 0.014287404, + -0.00543043, + 0.020099688, + -0.009015798, + -0.0016668075, + -0.002608769, + -0.014354989, + 0.026479682, + -0.012550477, + 0.037766326, + -0.007170736, + -0.00026062346, + -0.014409056, + -0.0023384304, + 0.011685393, + -0.002529357, + 0.027479935, + 0.0027287318, + -0.00018659711, + -0.034143787, + -0.021532483, + -0.021518966, + 0.04206471, + 0.024289938, + 0.016747486, + 0.01682859, + 0.003832052, + 0.004737687, + 0.006940948, + 0.015368759, + -0.013577765, + -0.014314438, + -0.008225057, + 0.00068767427, + 0.01002281, + -0.015571513, + 0.011759737, + -0.005285123, + -0.0027912478, + -0.015787784, + 0.00012355327, + 0.010347216, + 0.0007434316, + 0.007954719, + -0.006467855, + 0.015044352, + -0.025574047, + 0.0073261806, + 0.005893385, + -0.0051330575, + -0.006961223, + 0.004071978, + -0.0019836107, + 0.0030092085, + -0.006900397, + 0.0013770381, + -0.0077384473, + -0.010928445, + -0.00042219312, + -0.0039976346, + 0.00008706809, + -0.005974487, + -0.005589254, + -0.020478161, + 0.024492692, + -0.033873446, + 0.020586297, + -0.014706429, + -0.014652361, + 0.014409056, + -0.014503675, + -0.015463377, + -0.006481372, + -0.019045366, + -0.018612824, + -0.036847174, + 0.026722988, + -0.025628116, + 0.020613331, + -0.0030058292, + 0.0028571428, + 0.0086643575, + -0.012604545, + 0.006025175, + -0.005014784, + -0.0082926415, + 0.010745966, + -0.012719439, + 0.02631748, + 0.005427051, + -0.001880544, + 0.003448509, + 0.018139731, + 0.015260624, + -0.010712174, + 0.015449861, + -0.0066030244, + -0.025925487, + -0.0037272957, + 0.015882403, + 0.023289684, + 0.00018469628, + -0.013483146, + -0.021708203, + 0.010299907, + 0.019139985, + -0.033062432, + -0.013800794, + 0.04790403, + 0.0032085832, + -0.019450875, + -0.014300921, + -0.1757202, + 0.015030836, + 0.024722481, + -0.026966292, + 0.025925487, + 0.028764045, + 0.00441328, + -0.017112443, + -0.0037779843, + 0.008394019, + 0.03452226, + 0.017896427, + -0.01695024, + -0.008914421, + -0.0024448761, + -0.0035448172, + -0.000100849036, + 0.017017825, + 0.017044859, + 0.0065185437, + 0.025803836, + -0.015706683, + 0.008218299, + -0.0038962576, + -0.02635803, + 0.03262989, + -0.010293148, + 0.0052378136, + 0.0043456955, + -0.0033217876, + -0.0095362, + 0.0011050097, + 0.013767002, + 0.02887218, + 0.01673397, + 0.019748246, + -0.00251584, + -0.011861114, + -0.014354989, + 0.018139731, + -0.009022556, + 0.0003429923, + 0.009860607, + -0.0033302356, + -0.011793529, + 0.018639859, + 0.0145577425, + -0.0044605895, + 0.0056061503, + -0.009637577, + 0.03284616, + -0.025668666, + 0.016666384, + 0.01854524, + 0.016166259, + 0.018626342, + 0.023168033, + 0.004582242, + 0.005143195, + -0.019329222, + -0.019045366, + 0.0078601, + 0.0034603362, + -0.005345949, + -0.017342232, + -0.02715553, + -0.009326687, + 0.021532483, + -0.016490664, + 0.008164231, + 0.0027354904, + -0.008860353, + 0.014354989, + -0.028115232, + 0.022830108, + -0.008975247, + 0.0056230463, + 0.02914252, + 0.012158486, + -0.0022133987, + -0.029061418, + 0.03395455, + -0.014449608, + -0.009117175, + 0.009428064, + 0.01337501, + 0.012753231, + 0.004132804, + -0.035468448, + -0.016544733, + 0.022329982, + -0.019194052, + 0.014530709, + -0.02697981, + -0.0038388106, + 0.01068514, + -0.017909944, + 0.03235955, + -0.014909183, + -0.0005427896, + -0.0040314267, + -0.015963504, + -0.021789305, + 0.020937737, + 0.010806792, + 0.016409563, + 0.0035617133, + 0.019937484, + 0.018247867, + -0.008576497, + -0.0068497085, + 0.0029281068, + 0.009651094, + 0.008319676, + -0.023843879, + 0.015612064, + 0.02573625, + -0.009373996, + 0.016842104, + -0.0056940103, + 0.032305483, + -0.0004671792, + 0.006927431, + 0.011185266, + -0.0074410746, + -0.028358538, + -0.07585706, + 0.0118678715, + -0.0029855538, + 0.008542705, + -0.010941962, + 0.04387598, + 0.016517699, + 0.03711751, + -0.0091239335, + 0.022897694, + -0.0053628455, + -0.009245586, + 0.00033665626, + -0.0074681086, + 0.03290023, + -0.010408043, + -0.0016921518, + -0.007346456, + -0.0029179691, + 0.022681423, + -0.0060217963, + -0.027033877, + -0.0016262566, + 0.0027321111, + -0.018396553, + 0.010421559, + -0.023735743, + 0.02962913, + 0.023127481, + 0.011665118, + -0.0046329307, + -0.007846583, + 0.020288924, + -0.025817353, + -0.039820902, + 0.0140981665, + -0.024830615, + 0.0025682184, + 0.026898708, + -0.029926501, + -0.0070220493, + 0.00010385866, + 0.00242798, + -0.007968235, + -0.015774267, + -0.005558841, + -0.014125201, + 0.01527414, + 0.0140981665, + -0.009009039, + -0.016679902, + -0.012104418, + 0.014882149, + -0.021600068, + 0.028493706, + 0.0030210358, + 0.010299907, + 0.016436597, + -0.046768606, + 0.002816592, + 0.00927262, + 0.012597786, + -0.015747232, + 0.013523697, + 0.031115992, + 0.0241007, + -0.022492185, + -0.029791333, + 0.023262652, + -0.008880628, + 0.00037087098, + 0.016341979, + -0.006106277, + -0.0062346878, + -0.01757202, + -0.021072907, + -0.016896173, + -0.011671877, + 0.016382528, + -0.018004563, + 0.0012942469, + -0.034900736, + 0.005568979, + 0.0059001436, + -0.0054676016, + 0.026939258, + 0.015368759, + -0.008238574, + 0.015517445, + -0.016666384, + -0.003585368, + 0.009907916, + 0.022478668, + -0.030413112, + -0.022140745, + 0.0314404, + 0.019613078, + 0.00095463375, + 0.010036327, + 0.0097795045, + -0.005041818, + -0.027520487, + -0.095267385, + 0.01872096, + 0.012530202, + -0.0006243136, + 0.0061434484, + -0.017544987, + 0.04038861, + -0.008556222, + 0.0122733805, + -0.011300161, + -0.057906564, + 0.006538819, + -0.013652108, + -0.014273887, + -0.024654895, + -0.027953029, + 0.03903692, + 0.012003041, + 0.006089381, + 0.0076573454, + 0.016869139, + 0.011009546, + 0.007312664, + -0.0008621272, + -0.026777055, + 0.010225564, + -0.0082994, + 0.024560276, + -0.009549717, + 0.0006733125, + -0.009029315, + -0.046173863, + 0.017680155, + 0.026303962, + -0.007332939, + -0.019491425, + -0.006873363, + 0.013449354, + 0.010779758, + 0.03682014, + -0.04509251, + 0.012111177, + 0.022248881, + -0.0052209175, + -0.004122666, + -0.01099603, + 0.019018332, + 0.008116921, + 0.026020106, + 0.009211794, + 0.0027963165, + 0.02406015, + 0.0051905042, + -0.0050350595, + -0.0035110246, + -0.03773929, + 0.023614092, + -0.009063107, + -0.004686998, + 0.007988511, + 0.014030582, + 0.004247698, + 0.01143533, + 0.012016558, + 0.025155023, + -0.011225818, + -0.014814565, + 0.0043152827, + 0.020545747, + -0.016815072, + -0.018856129, + 0.01218552, + -0.003818535, + 0.0134425955, + 0.009029315, + -0.0029940018, + 0.010766242, + -0.0063495818, + -0.028115232, + 0.021478415, + -0.00014330067, + -0.0018129593, + -0.031494465, + 0.01823435, + 0.026858157, + -0.012908677, + -0.024019599, + -0.02962913, + 0.000034927558, + 0.02269494, + -0.015220073, + 0.0045011407, + 0.010543212, + 0.010455352, + -0.005058714, + 0.013429078, + -0.010786517, + -0.019085918, + 0.03184591, + 0.02485765, + 0.0052918815, + -0.001196249, + -0.005663597, + -0.03208921, + -0.009279378, + 0.014463124, + -0.033630144, + -0.018707443, + 0.026479682, + 0.015787784, + 0.009259103, + 0.020153755, + 0.00041374503, + 0.019951, + 0.0064205457, + 0.010103911, + -0.007576244, + -0.03249472, + -0.02357354, + 0.018612824, + 0.0134425955, + 0.024438625, + 0.0031207232, + -0.014706429, + 0.0024178424, + -0.011678635, + 0.014368505, + -0.024006082, + 0.006450959, + -0.013949481, + 0.004071978, + 0.010097153, + -0.000086487285, + 0.0026374925, + -0.0042443187, + -0.0023519474, + 0.0017293233, + 0.010441835, + -0.024127735, + 0.034414124, + 0.005200642, + 0.014030582, + 0.0091239335, + -0.01509842, + 0.0265743, + -0.0047782375, + 0.008535947, + 0.004997888, + -0.04025344, + -0.0056433217, + -0.0014277266, + 0.0011117682, + -0.02843964, + -0.028277434, + -0.0074816253, + -0.011266368, + 0.019356256, + -0.005288502, + -0.013050604, + 0.038712513, + -0.00058840925, + 0.008319676, + 0.021424348, + -0.02339782, + 0.0021069527, + 0.020640366, + 0.005751457, + 0.008657599, + -0.038712513, + 0.00944834, + 0.018802062, + -0.018666891, + -0.013821069, + -0.008867112, + -0.0101512205, + -0.016652867, + -0.004247698, + -0.0066030244, + 0.01319929, + -0.009772747, + 0.020451128, + -0.024654895, + -0.0011007857, + 0.039793868, + -0.0051330575, + -0.0133006675, + 0.010570246, + -0.022586804 + ] + }, + { + "object": "embedding", + "index": 4, + "embedding": [ + 0.019221356, + 0.0036138783, + -0.007965014, + -0.0067472225, + -0.024066191, + 0.013718256, + -0.00505548, + -0.01043351, + 0.0065530343, + -0.04420912, + 0.015508738, + 0.0044893716, + 0.012171331, + -0.031412434, + -0.014574001, + -0.018997546, + 0.02109083, + -0.020788029, + -0.0024273545, + -0.024145182, + 0.0010812012, + -0.012987581, + -0.014258034, + -0.014073719, + -0.020603715, + 0.013757751, + 0.0028387704, + -0.028753042, + 0.009880567, + -0.0032534779, + 0.02904268, + -0.0067735533, + -0.009307876, + -0.030490864, + -0.008037423, + -0.019642645, + -0.035230376, + -0.00874835, + -0.020630045, + -0.028489737, + 0.009742331, + -0.017575692, + -0.0019023876, + 0.0013996373, + -0.007563472, + 0.008491627, + -0.006510247, + -0.010644155, + -0.004374175, + 0.00862328, + 0.011348499, + 0.012809849, + -0.034809086, + -0.009900315, + 0.0029523212, + 0.010736313, + -0.019274017, + -0.006329224, + -0.0033538633, + -0.011809285, + 0.0025985036, + 0.0050521884, + -0.032544654, + 0.013810413, + -0.009413199, + -0.0071750954, + -0.029569292, + -0.005197007, + -0.020235086, + -0.004663812, + 0.026054153, + 0.030543525, + -0.0048382524, + -0.030227557, + 0.010525667, + 0.0027087631, + -0.01702275, + 0.005789446, + -0.0062436494, + -0.0027169914, + 0.029937921, + -0.025567036, + 0.018233957, + 0.002512929, + 0.035572674, + 0.016956922, + -0.011282673, + 0.012842762, + -0.0035348863, + -0.015324424, + 0.018984381, + 0.012934919, + 0.0049139527, + 0.015495572, + -0.023486918, + -0.030675178, + 0.0009191034, + 0.04434077, + -0.0020291037, + -0.036020294, + -0.006832797, + 0.012625535, + 0.0066682305, + -0.0084258, + -0.008807594, + 0.02128831, + 0.01811547, + 0.0011494963, + 0.015008456, + -0.0037027441, + 0.0133759575, + 0.031149128, + -0.0011708899, + -0.04426178, + -0.018444603, + -0.019432, + 0.03243933, + -0.009465859, + -0.014429183, + -0.026804576, + 0.016127508, + 0.027673487, + 0.01209234, + -0.0064641684, + 0.023895042, + -0.005187133, + -0.014442348, + -0.0035381778, + 0.021696435, + -0.01092721, + 0.028805703, + -0.000857391, + 0.0066254437, + -0.0017197189, + -0.021577947, + 0.018273454, + -0.017615188, + -0.0025902751, + -0.0048119216, + -0.013744586, + 0.014416017, + 0.015087448, + -0.013836743, + 0.025145747, + -0.0012210828, + 0.018839562, + 0.019589985, + -0.00042129, + 0.01957682, + -0.0073989057, + 0.013468115, + -0.030464534, + 0.009860819, + 0.005628171, + 0.0079321, + -0.00002769344, + 0.021617442, + 0.028042115, + -0.002312158, + 0.014284364, + -0.004792174, + 0.003060935, + 0.0158642, + -0.024158347, + -0.0265676, + 0.009274962, + 0.018984381, + 0.00787944, + 0.0052200463, + -0.0061909882, + -0.013468115, + 0.01179612, + -0.025619699, + 0.014968961, + -0.0010984808, + 0.020156093, + -0.00038343974, + 0.0022232921, + -0.016180169, + -0.019050207, + -0.0072475043, + -0.018997546, + 0.01516644, + 0.020932848, + 0.0061547835, + -0.028621389, + 0.0019451749, + 0.009090648, + 0.008978743, + -0.014218537, + 0.013784082, + 0.04183936, + 0.014942629, + 0.014600332, + -0.6736427, + -0.040312186, + 0.000431164, + -0.013277218, + 0.028753042, + 0.015126944, + 0.022446858, + -0.0015321132, + -0.009228884, + 0.01224374, + -0.016193334, + 0.014310694, + 0.0010392369, + -0.0006257637, + 0.0054274, + -0.024053026, + 0.0031086593, + -0.0096830875, + 0.016469806, + -0.0012836179, + -0.0061909882, + 0.013290383, + -0.017430874, + 0.008307312, + 0.026620261, + -0.024105687, + 0.002277599, + -0.02446115, + -0.01273744, + 0.04162872, + -0.012941502, + 0.048658993, + 0.03451945, + -0.004943575, + 0.042787265, + -0.014863637, + -0.0048777484, + 0.03754747, + 0.022762826, + 0.05397778, + -0.005786155, + -0.012691361, + 0.006177823, + -0.009005073, + -0.0030197934, + -0.01288884, + 0.032228686, + -0.032886952, + 0.014679323, + -0.015535069, + 0.0120660085, + -0.02446115, + -0.0158642, + 0.010861383, + -0.0043215137, + 0.0062173186, + 0.019945448, + -0.011223429, + -0.0026445822, + 0.0011503191, + 0.0012432992, + 0.014955794, + -0.002351654, + -0.0156008955, + -0.0024849528, + 0.0016341445, + -0.038548034, + -0.01729922, + 0.0031432183, + -0.015679887, + 0.016588293, + 0.028147439, + -0.007517393, + 0.0014317278, + 0.011032532, + 0.027726147, + 0.009623843, + -0.008320478, + -0.008537705, + -0.02218355, + -0.003992381, + 0.018181296, + -0.0136919245, + -0.017259724, + 0.00014378989, + -0.038416382, + -0.032965943, + 0.025619699, + 0.009900315, + -0.0071750954, + 0.018971216, + 0.014613497, + 0.0022035441, + 0.022565346, + -0.0030428327, + 0.0129809985, + -0.003179423, + 0.004854709, + 0.0069578676, + -0.03157042, + -0.010229448, + -0.0031942339, + -0.005940847, + -0.011453822, + 0.0127440225, + -0.014613497, + -0.030490864, + -0.0042392304, + 0.038442712, + -0.014889969, + 0.028963687, + -0.010604659, + -0.023855546, + -0.0016423727, + 0.013639264, + -0.02047206, + 0.02572502, + -0.010630989, + 0.03451945, + -0.019668976, + 0.013277218, + 0.0069578676, + 0.0246323, + 0.0053319517, + -0.0029572584, + 0.014982126, + 0.0022232921, + -0.00054841756, + -0.0065267035, + -0.012987581, + 0.00051015586, + 0.018233957, + -0.016733112, + -0.012711109, + 0.012474134, + -0.0064115073, + 0.0027350937, + 0.0014638181, + 0.023565909, + -0.013106069, + -0.048237704, + -0.020985508, + -0.006230484, + 0.0039594676, + -0.0100451335, + -0.021920245, + -0.0016917427, + 0.0023993782, + -0.010703399, + 0.008438965, + -0.004344553, + -0.0032370212, + -0.013560272, + 0.013955231, + -0.016680451, + -0.0035546343, + 0.011677632, + -0.009847654, + -0.020564217, + 0.00579932, + 0.009873984, + 0.014468678, + -0.030701509, + -0.00308562, + 0.003531595, + -0.010005637, + 0.005644628, + 0.003531595, + 0.02215722, + -0.015653556, + -0.023631737, + -0.027647156, + -0.017154401, + 0.02954296, + -0.0027844636, + -0.008735185, + 0.005206881, + -0.0034460204, + 0.016746277, + -0.0069578676, + -0.0033193044, + -0.0032567692, + -0.03615195, + 0.009873984, + 0.027594496, + -0.012869093, + 0.013836743, + 0.014982126, + -0.004713182, + 0.0073594097, + -0.017694179, + 0.0340455, + 0.01095354, + 0.0028683925, + 0.010933792, + -0.013744586, + 0.017351883, + 0.011901442, + -0.0020373322, + 0.01980063, + 0.022065064, + -0.0078070303, + 0.006520121, + -0.033360902, + 0.026027823, + -0.022012403, + 0.0010589848, + -0.008195407, + 0.009821323, + -0.009834488, + 0.0116249705, + -0.012632118, + -0.01452134, + -0.0033176588, + -0.005197007, + 0.02091968, + 0.0053286604, + 0.009992472, + 0.0051015588, + 0.009511938, + 0.01918186, + -0.029569292, + 0.018892223, + -0.022828652, + -0.004433419, + -0.0027449676, + 0.014402851, + 0.029727275, + 0.0025688815, + 0.0005064531, + -0.036494248, + -0.01578521, + -0.006990781, + -0.002958904, + 0.0004784768, + -0.011434074, + 0.0011700671, + -0.023500083, + 0.01727289, + 0.004453167, + 0.02322361, + -0.0053681564, + 0.019458331, + -0.0119936, + 0.009103813, + -0.01107861, + 0.035651665, + -0.00025980923, + -0.017825833, + 0.028674051, + -0.01937934, + -0.018892223, + -0.008188824, + 0.008616697, + 0.0037850274, + -0.01105228, + 0.004301766, + 0.0143238595, + -0.0011338625, + 0.036072955, + 0.016311822, + 0.0018233957, + 0.0014885032, + -0.0079781795, + 0.0073396615, + -0.007293583, + 0.017786337, + -0.009228884, + 0.003521721, + -0.005177259, + -0.012829597, + 0.0031958795, + -0.007984762, + -0.0055590533, + 0.0055623446, + -0.009228884, + -0.01606168, + -0.0040285857, + 0.013389123, + -0.000023720704, + 0.0019534032, + -0.04347186, + 0.012039678, + -0.009097231, + -0.008702272, + -0.014495009, + -0.022736495, + -0.0049304096, + -0.018523594, + 0.030569855, + 0.010170204, + 0.009841071, + -0.007451567, + -0.0072540874, + -0.012072591, + -0.010163621, + 0.018826397, + -0.028937357, + -0.019023877, + 0.0033867767, + 0.008346808, + -0.007945266, + 0.015324424, + -0.02044573, + 0.03625727, + -0.009037987, + -0.0035447604, + -0.018944884, + -0.0015938256, + -0.003943011, + 0.01030844, + -0.0061514922, + -0.01338254, + 0.016509302, + -0.004170113, + -0.0028058572, + -0.025145747, + 0.0059210993, + 0.013310131, + 0.0017081993, + -0.0181418, + -0.01606168, + -0.023855546, + -0.021275144, + 0.075937524, + -0.008853673, + 0.018523594, + 0.011822451, + 0.014797811, + 0.0104400925, + -0.0120660085, + -0.0158642, + -0.003531595, + -0.011124689, + 0.0035941303, + 0.0005315495, + 0.0029572584, + 0.00066978525, + 0.0017213646, + -0.0223547, + -0.0074054883, + -0.016272327, + 0.007234339, + -0.015113778, + 0.013547107, + 0.006753805, + -0.008629862, + 0.038100414, + 0.008234903, + 0.017430874, + 0.008511375, + 0.035704326, + 0.02577768, + -0.0127769355, + -0.0035447604, + 0.03675755, + -0.020063937, + 0.008991908, + -0.0012013348, + -0.0007475429, + 0.032623645, + 0.013955231, + -0.018813232, + 0.0032386668, + 0.005424109, + 0.017983817, + 0.02039307, + -0.009314459, + 0.014863637, + -0.014863637, + 0.00021023359, + 0.010512502, + -0.0061416184, + -0.000029621953, + 0.036915537, + 0.022762826, + -0.026909899, + -0.0143238595, + -0.016088013, + 0.034782756, + 0.009360537, + -0.0057137455, + 0.01105228, + 0.0040252944, + -0.0022446858, + -0.02292081, + 0.0073659923, + -0.0129020065, + -0.028884696, + -0.033913843, + -0.0063983416, + -0.019708473, + -0.026778245, + 0.000012953176, + 0.0053615733, + -0.017615188, + -0.02215722, + 0.009933229, + 0.022473188, + -0.0034558945, + 0.020287747, + -0.032807957, + -0.0036731223, + 0.021893915, + 0.009426364, + -0.03117546, + -0.011894859, + -0.0052233376, + -0.0068525453, + 0.018918553, + 0.025409052, + -0.02091968, + -0.018497264, + -0.0029128254, + 0.0265676, + 0.0075766374, + 0.008169076, + -0.0016563609, + -0.023355264, + 0.0060428786, + 0.018273454, + 0.026449112, + -0.013422036, + -0.016733112, + 0.025330061, + 0.00009375143, + 0.007392323, + -0.0031168878, + 0.01682527, + -0.0012646929, + 0.015614061, + 0.0040779556, + -0.008307312, + 0.00032584148, + 0.04834303, + -0.021670105, + 0.010920627, + -0.00078292465, + -0.022565346, + 0.020748531, + 0.016193334, + 0.03375586, + -0.0074384017, + -0.010473006, + 0.003551343, + -0.022710163, + 0.025119416, + 0.023210445, + 0.006971033, + -0.03154409, + 0.008195407, + -0.009827905, + -0.007155347, + -0.016640956, + -0.019524159, + 0.015311258, + -0.00916964, + -0.020458896, + -0.046947505, + -0.0056117144, + -0.02342109, + 0.0168516, + -0.01273744, + -0.02064321, + -0.0018579547, + -0.00014049857, + 0.004779008, + 0.006088957, + -0.010301857, + -0.016719947, + 0.0117500415, + 0.0037586966, + -0.00025919208, + 0.0028058572, + 0.014639827, + 0.020063937, + -0.0021130326, + 0.008906334, + -0.0034756425, + -0.035388358, + -0.020880185, + -0.011256342, + 0.009577765, + 0.00864961, + 0.020735366, + 0.02544855, + 0.018049642, + -0.010986453, + -0.01244122, + 0.0024635592, + -0.021235649, + -0.00031411613, + -0.016311822, + 0.00914331, + 0.01625916, + 0.027857801, + -0.022762826, + -0.007997927, + -0.008366556, + 0.024987763, + -0.011190516, + -0.014481843, + -0.011651302, + -0.03907465, + -0.0026248342, + -0.0064049247, + 0.0016004083, + -0.0037652794, + 0.006289728, + -0.002081765, + 0.022091394, + -0.014402851, + -0.009742331, + -0.013448367, + 0.019142365, + 0.003380194, + 0.019484662, + 0.008491627, + -0.0032633517, + -0.010038551, + -0.023763388, + 0.004351136, + -0.0047987564, + 0.0002133192, + 0.008109832, + -0.021051334, + 0.00520359, + -0.0019484663, + 0.0052990383, + 0.03446679, + 0.008188824, + -0.013797248, + 0.008873421, + -0.012566291, + -0.031149128, + -0.017088575, + -0.015324424, + -0.025659194, + 0.007813613, + 0.03117546, + -0.0018694743, + 0.040233195, + -0.023263106, + -0.016088013, + 0.014942629, + -0.008208572, + 0.022460023, + 0.006911789, + 0.04581529, + 0.010604659, + -0.0048876223, + -0.021340972, + -0.011987017, + -0.015442912, + -0.0077280384, + -0.006148201, + 0.0102097, + 0.0019369465, + -0.03615195, + 0.008465296, + 0.02485611, + -0.010288692, + -0.008807594, + 0.024553308, + 0.0030494155, + -0.0042820177, + -0.018707909, + -0.016561963, + -0.0036764136, + 0.022446858, + -0.02668609, + -0.01296125, + -0.0052002985, + -0.0128230145, + -0.008445548, + 0.010492754, + -0.025066756, + 0.0035645084, + 0.023236776, + -0.02698889, + 0.008866838, + -0.019142365, + -0.014192207, + 0.0008812531, + -0.001876057, + 0.029148001, + 0.0027729438, + 0.00617124, + -0.013428618, + 0.014810977, + -0.002777881, + 0.0064246724, + -0.020630045, + 0.025830343, + -0.012276654, + -0.020287747, + -0.006898624, + -0.008175659, + 0.009966142, + 0.0054043606, + -0.0045157024, + -0.006421381, + -0.021788592, + -0.0028700382, + 0.036915537, + 0.0102097, + -0.018220792, + -0.01679894, + -0.005325369, + -0.019366175, + -0.010946957, + -0.0041371994, + -0.019313512, + -0.023486918, + -0.018457768, + -0.010881131, + 0.00308562, + 0.014508175, + -0.0045025367, + -0.005980343, + 0.02109083, + 0.011493318, + -0.027568163, + 0.018879058, + 0.02059055, + 0.023881877, + -0.004897496, + 0.020261416, + -0.005851981, + -0.01477148, + 0.011605223, + 0.0025639446, + -0.00039681073, + -0.027647156, + 0.020090267, + 0.019247686, + 0.0168516, + 0.023355264, + 0.029305985, + -0.026370121, + 0.0015855973, + -0.031149128, + -0.02213089, + 0.00021599341, + 0.010525667, + 0.004867874, + 0.02448748, + -0.030569855, + 0.014824142, + 0.028331753, + -0.020340407, + 0.007675377, + -0.027594496, + -0.01283618, + 0.007102686, + -0.0035184298, + -0.007971597, + -0.023131454, + -0.016469806, + 0.005516266, + -0.0032057536, + 0.004963323, + 0.00080267264, + 0.0005689883, + 0.0024668504, + 0.03035921, + -0.0150479525, + 0.0008861901, + -0.010551997, + -0.019129198, + -0.01117735, + 0.0018612461, + -0.03199171, + -0.023802884, + -0.01169738, + 0.01679894, + 0.008544288, + -0.028911026, + -0.04170771, + -0.00034332665, + -0.022249378, + -0.0010556935, + -0.021512121, + 0.0074054883, + 0.02213089, + -0.008735185, + 0.010940375, + 0.018576255, + 0.006230484, + 0.0126189515, + -0.015350754, + -0.024303166, + 0.007971597, + -0.016575128, + 0.04299791, + 0.000023245004, + -0.022960305, + -0.022051899, + 0.030464534, + 0.013402288, + 0.0052792905, + 0.0038278145, + -0.03199171, + 0.006760388, + -0.010328188, + -0.0028338335, + -0.005578801, + 0.0009520167, + 0.006760388, + -0.038916662, + 0.008261234, + 0.0013222911, + -0.012803267, + -0.005697289, + 0.009873984, + 0.0014193852, + 0.012079174, + 0.025790848, + -0.016548797, + -0.026383286, + 0.0045157024, + -0.019221356, + 0.005489935, + 0.0000777062, + -0.0070961034, + 0.009617261, + -0.01276377, + -0.018036477, + -0.023078792, + 0.014731985, + -0.025685525, + -0.013797248, + 0.011302421, + 0.0033571546, + -0.014258034, + -0.01918186, + 0.003913389, + -0.022723328, + 0.008307312, + 0.0013247596, + -0.03401917, + -0.0030905572, + 0.017417708, + 0.010802139, + -0.013520776, + -0.02342109, + 0.004973197, + 0.0084521305, + 0.011565727, + -0.007168513, + 0.019919118, + -0.024842944, + 0.0022578512, + -0.008656193, + -0.017773172, + -0.046921175, + -0.016351318, + 0.0039561763, + 0.00021002788, + 0.0056413366, + 0.23507982, + 0.0023549453, + -0.0056512104, + 0.03420348, + 0.009439529, + 0.035309367, + 0.012507047, + -0.006059335, + -0.011256342, + 0.01982696, + -0.0229998, + -0.0013823578, + -0.003281454, + -0.0046572294, + 0.012467551, + -0.024948267, + -0.023039296, + -0.022644337, + -0.03243933, + -0.013560272, + 0.017338717, + -0.005226629, + 0.001489326, + -0.010604659, + -0.003130053, + 0.020801194, + -0.026054153, + -0.0023944413, + 0.023328934, + 0.028805703, + 0.0076687946, + 0.011940938, + -0.0018447894, + 0.0073462445, + 0.009854237, + -0.002988526, + 0.02361857, + -0.0013510901, + 0.00052249833, + 0.005358282, + -0.023763388, + -0.0008664421, + 0.011835616, + -0.006352263, + 0.0051838416, + 0.0012745669, + 0.008801011, + 0.0067373486, + -0.0062864367, + 0.024290001, + -0.017365048, + 0.005888186, + 0.03249199, + 0.027752478, + 0.00022319319, + -0.00453545, + 0.029648283, + -0.019432, + -0.0073594097, + 0.00091334357, + -0.014705654, + 0.030885823, + -0.021841254, + 0.017259724, + -0.021393633, + -0.0061284527, + -0.030069573, + -0.000862328, + -0.0015066054, + -0.025935665, + 0.007997927, + -0.030517194, + -0.02109083, + -0.005907934, + -0.032281347, + -0.023434255, + 0.017509865, + 0.010802139, + 0.012842762, + 0.02909534, + -0.015074283, + 0.006421381, + -0.00007791191, + 0.009709418, + -0.00083147176, + -0.019537324, + 0.007675377, + 0.0021821505, + 0.0040680817, + -0.0112760905, + 0.0030773918, + -0.02059055, + -0.0009799929, + -0.030464534, + -0.0019846708, + -0.0014531213, + -0.011190516, + 0.014705654, + 0.0034756425, + 0.0046901423, + -0.010380849, + -0.001915553, + 0.020735366, + 0.010894296, + -0.0070171114, + -0.0100451335, + 0.026580766, + -0.00047971107, + -0.0022216465, + -0.022288874, + -0.009505356, + -0.031860057, + 0.007622716, + -0.010644155, + -0.0027416763, + 0.0155219035, + -0.010881131, + -0.014982126, + 0.009702835, + -0.01053225, + 0.030464534, + -0.02693623, + -0.015693052, + -0.00041018176, + -0.017549362, + -0.013250887, + 0.017259724, + -0.019695308, + -0.0037652794, + -0.042050008, + 0.017391378, + 0.010466424, + 0.022499518, + -0.009340789, + 0.013244304, + 0.016509302, + 0.000004605931, + -0.011842199, + -0.0069183717, + 0.00055623444, + 0.009149892, + -0.00929471, + 0.01937934, + 0.016298657, + -0.011769789, + -0.013211391, + 0.01603535, + 0.0007997927, + -0.013171895, + 0.020998674, + -0.0025392596, + -0.035520013, + -0.015943194, + -0.009538269, + 0.039522268, + -0.0030823287, + -0.023328934, + 0.00369287, + 0.014810977, + 0.013626099, + -0.03209703, + -0.0029967541, + 0.016601458, + -0.032176025, + -0.03828473, + -0.008583784, + -0.17030647, + -0.007965014, + 0.009380285, + -0.031149128, + 0.013955231, + 0.0028042116, + 0.005878312, + 0.0029556127, + -0.010380849, + -0.0013659012, + 0.032413, + 0.017207064, + -0.010973288, + -0.035441022, + 0.0050719366, + -0.020169258, + -0.019432, + 0.006599113, + 0.024803448, + 0.0019747969, + 0.021577947, + -0.011124689, + 0.0027153457, + -0.0005368979, + -0.0026561017, + 0.03157042, + -0.009755497, + -0.008017675, + -0.0067735533, + -0.015666721, + -0.017259724, + 0.0035381778, + 0.015153275, + 0.024092522, + -0.004301766, + -0.0013823578, + -0.024579639, + -0.00919597, + -0.004522285, + 0.013560272, + -0.010848218, + 0.00803084, + 0.0009824614, + -0.01157231, + -0.0059869257, + 0.010802139, + 0.011282673, + -0.008866838, + -0.006056044, + -0.006572782, + 0.017970651, + -0.011842199, + 0.0012564645, + 0.019010711, + 0.022446858, + 0.00192049, + 0.0036237522, + 0.018102305, + 0.0132969655, + 0.0091301445, + -0.01876057, + -0.009505356, + 0.013981562, + -0.0026890151, + -0.020182423, + -0.011756624, + 0.008366556, + 0.022315204, + -0.02317095, + 0.01980063, + 0.0051476373, + 0.003712618, + -0.01747037, + -0.009452694, + 0.01960315, + -0.00079362147, + -0.009176223, + 0.03580965, + 0.0105980765, + -0.013211391, + -0.020774864, + 0.044525087, + -0.021275144, + 0.005977052, + 0.0022051898, + 0.026093649, + 0.0030066282, + -0.0076095504, + -0.01606168, + -0.021591112, + 0.01231615, + -0.008419218, + -0.0066089868, + -0.006984198, + 0.0009939811, + 0.0013988145, + -0.021670105, + 0.03831106, + -0.0012054489, + -0.000015813803, + -0.00014574412, + -0.014429183, + -0.007221174, + 0.022065064, + 0.01253996, + 0.018800067, + 0.016772607, + 0.016970087, + 0.0046802685, + 0.00016559495, + -0.027410181, + -0.009643591, + 0.011223429, + 0.006500373, + -0.012230575, + 0.0136919245, + 0.019037042, + -0.015298093, + 0.021591112, + 0.006483916, + 0.02128831, + -0.0132969655, + 0.013125816, + -0.0001234248, + -0.014363356, + -0.013448367, + -0.058822617, + -0.009472442, + 0.009419781, + 0.01727289, + -0.010782391, + 0.04839569, + 0.02091968, + 0.028358083, + -0.0082151545, + -0.003041187, + 0.0043708836, + -0.029990582, + 0.0022627881, + -0.00020848507, + 0.045393996, + 0.0010836698, + 0.011710545, + -0.00028531702, + 0.004094412, + 0.01957682, + -0.009841071, + -0.0037455314, + -0.014350191, + -0.013705091, + -0.0076292986, + 0.0022315204, + -0.0174967, + 0.008564035, + 0.015772045, + 0.01851043, + 0.02698889, + -0.0068130493, + 0.0005599372, + -0.013033659, + -0.004252396, + 0.005878312, + -0.022367865, + 0.005684124, + 0.0379161, + -0.029964251, + -0.0014539441, + 0.0057664067, + 0.0010647447, + -0.013705091, + -0.016601458, + -0.0008664421, + -0.021472625, + 0.019010711, + 0.03754747, + -0.020656375, + -0.019682143, + -0.003771862, + 0.00010809956, + -0.0084258, + 0.028647719, + -0.0015600895, + 0.020208754, + 0.00874835, + -0.025040423, + 0.007602968, + 0.01918186, + 0.006780136, + -0.0116710495, + 0.003972633, + 0.021419963, + 0.0015806603, + -0.015930029, + -0.026383286, + 0.020300912, + -0.0024997636, + -0.01305999, + -0.00023512426, + -0.010492754, + 0.0063983416, + -0.0106770685, + -0.034756426, + -0.020774864, + -0.006158075, + -0.0008236549, + -0.021999236, + 0.010670486, + -0.041102104, + -0.004637481, + 0.0011009492, + 0.0013025431, + 0.020551052, + 0.012263489, + -0.013277218, + 0.016088013, + -0.01288884, + 0.020169258, + 0.0053944867, + 0.03425614, + -0.03167574, + -0.009222302, + 0.029305985, + 0.005486644, + 0.02213089, + 0.0052134637, + 0.02086702, + -0.01519277, + -0.031781062, + -0.09600146, + 0.007221174, + 0.016522467, + -0.0017065536, + 0.007129017, + -0.017378213, + 0.020959178, + -0.0049995272, + 0.010512502, + -0.02059055, + -0.037758116, + 0.009261797, + -0.004005546, + -0.01980063, + -0.03151776, + -0.0017888368, + 0.028121108, + 0.01600902, + 0.017773172, + 0.02294714, + 0.015574564, + 0.0032732259, + 0.008392886, + -0.00049411063, + -0.03633626, + 0.011565727, + 0.0028535814, + 0.03170207, + -0.01224374, + 0.013053407, + 0.0015288219, + -0.026778245, + 0.015877366, + 0.03154409, + -0.014982126, + -0.010196535, + 0.004933701, + 0.014587166, + 0.018721074, + 0.03580965, + -0.034861747, + 0.0108350525, + 0.02002444, + -0.0059968, + -0.015679887, + 0.005233212, + 0.015574564, + 0.018233957, + 0.035362028, + -0.007793865, + 0.013402288, + 0.030622516, + -0.004170113, + -0.006559617, + -0.0077280384, + -0.03654691, + 0.010762643, + -0.0021969615, + -0.0050686453, + -0.010453258, + 0.02361857, + 0.01045984, + 0.01732555, + 0.007352827, + 0.014982126, + -0.007352827, + -0.017694179, + 0.007155347, + 0.01876057, + -0.0053418255, + -0.03459844, + 0.006161366, + 0.014337026, + 0.02901635, + 0.019853292, + -0.013448367, + -0.01598269, + -0.0099200625, + -0.019432, + 0.019339845, + 0.0040483335, + -0.019168695, + -0.0340455, + 0.021314641, + 0.028963687, + -0.010315022, + -0.012553126, + -0.015205936, + -0.009235467, + 0.034756426, + -0.005726911, + -0.009933229, + 0.012164748, + -0.00612187, + 0.019932283, + 0.03246566, + 0.006589239, + -0.01789166, + 0.035888642, + -0.0072870003, + 0.0023138036, + 0.016167004, + 0.013112651, + -0.0021574656, + -0.02339476, + 0.013560272, + -0.014113215, + -0.0217096, + 0.00916964, + 0.0014917945, + 0.006602404, + 0.008346808, + 0.009064318, + 0.028121108, + 0.0064345463, + 0.0040252944, + -0.016127508, + -0.02954296, + -0.01603535, + -0.0060922485, + 0.013836743, + 0.013586602, + 0.013652429, + -0.005506392, + 0.014995291, + -0.00966334, + 0.008208572, + -0.030648848, + 0.007826778, + 0.001890868, + 0.0050324406, + 0.0070566074, + -0.000534018, + -0.007115851, + -0.019129198, + 0.0075108106, + 0.012052843, + 0.011677632, + -0.0062568146, + 0.03617828, + 0.018194461, + -0.00322221, + 0.0031168878, + -0.0024717874, + 0.019260852, + 0.0057400763, + 0.012204245, + -0.0030839744, + -0.032202356, + 0.027410181, + -0.0021969615, + 0.013270635, + -0.014402851, + -0.01224374, + -0.026409617, + -0.0015329361, + 0.016693616, + -0.0034163985, + 0.0076095504, + 0.025514375, + -0.006266689, + 0.02002444, + 0.0073594097, + -0.011164185, + -0.009926646, + 0.026554435, + 0.0021327806, + 0.009518521, + -0.0156008955, + 0.013547107, + 0.0011050634, + -0.0252774, + -0.024763953, + 0.009623843, + 0.00852454, + -0.0008680878, + 0.006342389, + 0.007945266, + 0.008616697, + -0.0037586966, + 0.020801194, + -0.016601458, + -0.014271199, + 0.019168695, + -0.01851043, + 0.004301766, + 0.0047822995, + -0.003248541 + ] + }, + { + "object": "embedding", + "index": 5, + "embedding": [ + 0.0021845475, + 0.008128393, + 0.0016116065, + -0.0032902234, + -0.03658782, + 0.004707499, + -0.017878445, + -0.0045868796, + 0.010058301, + -0.03318368, + -0.004885077, + 0.0063559613, + 0.019768145, + -0.014166054, + -0.02752798, + -0.01904443, + 0.02173826, + -0.025544465, + -0.0021460163, + -0.026670244, + -0.00603431, + 0.033022854, + -0.012115528, + -0.020331034, + 0.0038229583, + 0.005575287, + -0.002809422, + -0.015680496, + -0.0014516185, + -0.011733566, + 0.01049387, + 0.0016526504, + 0.009689742, + -0.021537228, + 0.0055250293, + -0.02439188, + -0.014233065, + -0.009863969, + -0.016993904, + -0.020331034, + 0.019392885, + -0.018722778, + -0.008249013, + -0.00634926, + -0.007458287, + 0.01150573, + 0.0060008047, + 0.005149769, + -0.011840784, + 0.013227904, + 0.023560949, + 0.014005228, + -0.017865043, + -0.0012363467, + -0.000084129795, + -0.009046439, + -0.023467133, + -0.013817598, + -0.01125109, + -0.0092072645, + 0.0038665151, + 0.005173223, + -0.018092878, + -0.0010579309, + -0.0025363537, + -0.009488709, + -0.006342559, + 0.008007774, + -0.03224553, + -0.011780474, + 0.010949542, + 0.021698052, + -0.008604169, + -0.0045734774, + 0.038732164, + 0.003682236, + -0.031655837, + -0.00010491357, + 0.011793876, + -0.00007125118, + 0.021255782, + -0.018856801, + 0.0066709113, + 0.015613484, + 0.0046203854, + 0.015626887, + -0.016136168, + 0.025785703, + -0.008222208, + -0.00311097, + 0.010916037, + 0.008966027, + -0.00591034, + 0.004627086, + -0.030127993, + -0.025343433, + 0.0064765806, + 0.018883605, + -0.0061549293, + -0.043128062, + -0.0096562365, + 0.02161764, + -0.011874289, + -0.018012466, + -0.030020777, + 0.014045435, + 0.010835624, + -0.01521142, + 0.0017339009, + 0.011137172, + 0.0020287477, + 0.03181666, + -0.006838438, + -0.039080616, + -0.032272335, + -0.018374324, + 0.014460901, + -0.011512431, + -0.019567113, + -0.026817666, + 0.017784629, + 0.017302154, + -0.00015025047, + 0.001991892, + 0.018709376, + -0.003588421, + -0.017597, + -0.0056523494, + 0.0057461644, + 0.002444214, + 0.020974336, + 0.02299806, + 0.017865043, + 0.0012505865, + -0.014809356, + 0.015546474, + -0.021322792, + 0.010574282, + -0.0115928445, + -0.012209343, + 0.021135163, + 0.017985662, + -0.013790794, + 0.0056422977, + 0.0020320984, + 0.017717618, + 0.027259937, + 0.02180527, + 0.018803192, + -0.0025631578, + 0.008456745, + -0.005022449, + 0.006278899, + 0.008470148, + 0.016417611, + 0.0046203854, + 0.0141124455, + 0.01740937, + 0.0044160024, + 0.0034778533, + 0.009783557, + -0.003551565, + 0.009763453, + 0.008510354, + 0.0048281183, + 0.013650072, + 0.022555789, + 0.018937213, + 0.017114524, + 0.00068392756, + -0.014702139, + 0.03004758, + -0.0020220468, + 0.02445889, + 0.017422773, + 0.010373251, + 0.013710381, + 0.00414796, + -0.023668166, + -0.0054144613, + -0.033290897, + -0.0002041731, + 0.007310863, + 0.007994372, + 0.0028931852, + -0.007310863, + 0.0182269, + 0.00855056, + 0.006406219, + -0.013026873, + 0.0058734845, + 0.038303293, + 0.03229914, + 0.025115596, + -0.6776118, + -0.042752802, + -0.007404678, + -0.0079005575, + 0.019218657, + 0.028224891, + 0.010225827, + 0.012276353, + 0.004741004, + -0.005776319, + -0.018977419, + 0.032593984, + 0.0061448775, + 0.0013418884, + 0.008872212, + -0.015801115, + -0.013274812, + -0.015787711, + 0.006881995, + 0.006272198, + -0.0101990225, + 0.024445489, + -0.0063593118, + 0.0055149775, + 0.02238156, + -0.030127993, + 0.013650072, + -0.013965022, + -0.013375328, + 0.016055755, + -0.030181602, + 0.036346585, + 0.0028747574, + -0.016953697, + 0.051705427, + -0.008148496, + -0.010708304, + 0.024043426, + 0.008899016, + 0.045808487, + 0.00094987615, + -0.028064065, + 0.023614557, + -0.018561954, + -0.024525901, + 0.007518596, + 0.020156806, + -0.01941969, + 0.010400055, + -0.013670175, + -0.0028077466, + -0.029216649, + -0.02708571, + -0.011425318, + 0.010507272, + -0.0069356035, + 0.0069356035, + -0.007257255, + -0.0017523288, + 0.003129398, + -0.005990753, + 0.020625882, + -0.039482683, + -0.012678417, + -0.0042216717, + -0.0014733969, + -0.04393219, + 0.0018210147, + 0.018025868, + 0.008188703, + -0.0077062263, + 0.007679422, + -0.009642834, + 0.008919119, + 0.038169272, + 0.022220735, + 0.01754339, + -0.026201168, + -0.016833078, + -0.011948001, + 0.010916037, + -0.003608524, + -0.013180997, + -0.0049755415, + 0.005129666, + -0.015305235, + -0.023172287, + 0.0044294046, + 0.009750051, + -0.022033105, + 0.017717618, + 0.009863969, + 0.012953161, + 0.018066075, + -0.016296992, + 0.01584132, + -0.019727938, + 0.0044160024, + 0.02218053, + -0.027032102, + -0.00004824244, + -0.013100584, + -0.0007304162, + -0.0108289225, + -0.012805738, + -0.0069222013, + -0.024793945, + 0.00204215, + 0.0119413, + -0.02439188, + 0.0043020844, + -0.012336663, + -0.02376198, + -0.0043858476, + 0.019821754, + -0.03211151, + 0.0099711865, + -0.0062185894, + 0.00798097, + -0.00011171934, + 0.0141124455, + -0.01011861, + 0.038624946, + -0.008537158, + -0.00072622806, + 0.030690882, + 0.01062119, + -0.003323729, + -0.009629432, + 0.0056221946, + -0.007217048, + 0.018883605, + 0.012497488, + -0.0067144684, + 0.0038162572, + -0.0101521155, + 0.0037123905, + -0.00008203571, + 0.01539905, + -0.041519806, + -0.0439858, + -0.0067647262, + 0.019513505, + -0.000016072088, + -0.0036286274, + -0.023426928, + -0.017020708, + 0.0007655968, + -0.011432019, + 0.037499167, + -0.0029266907, + -0.011170677, + -0.03280842, + 0.01998258, + 0.0015110904, + -0.013469143, + 0.0014717217, + -0.012939759, + -0.0008837031, + -0.012329962, + 0.0088923145, + 0.0014859614, + -0.029136235, + 0.019768145, + 0.00710313, + -0.00066549965, + 0.013643371, + 0.0067044166, + 0.010440261, + -0.026335191, + -0.018709376, + -0.011988208, + 0.004657241, + 0.01766401, + 0.013221203, + 0.004784561, + 0.0005616331, + -0.0073510697, + -0.0053206463, + -0.025450649, + 0.010567581, + -0.03776721, + -0.02502178, + 0.0024676677, + 0.014621726, + -0.008852108, + 0.004013939, + 0.017141327, + -0.016859882, + 0.0012489113, + -0.017422773, + 0.012236147, + 0.01326141, + 0.005866783, + 0.021644443, + -0.008429941, + 0.00035390005, + 0.010279436, + 0.006895397, + 0.019245462, + 0.014715541, + -0.010373251, + 0.014099043, + -0.018334117, + 0.029297061, + -0.04141259, + -0.006868593, + -0.0132145025, + 0.02520941, + 0.019299071, + 0.0025028482, + -0.010949542, + -0.013938217, + -0.0076191123, + 0.01609596, + 0.015787711, + 0.01614957, + 0.010822222, + -0.004486364, + -0.0038899689, + 0.019634124, + -0.020880522, + 0.013382029, + 0.003796154, + -0.0065469416, + 0.004117805, + 0.0009054816, + 0.023239298, + 0.02224754, + 0.0017925352, + -0.005776319, + -0.010259332, + -0.01017892, + 0.017865043, + 0.005769618, + -0.014594922, + 0.012651613, + -0.010574282, + 0.038356904, + 0.0021644444, + 0.019701134, + 0.0047477055, + 0.027849631, + -0.010534076, + -0.011083564, + -0.0082155075, + 0.033961, + -0.008376333, + 0.0031578774, + 0.0065770964, + -0.018159889, + -0.0060376604, + -0.008751593, + 0.0012732026, + 0.009756752, + -0.017516587, + -0.0041446094, + 0.007585607, + 0.004298734, + 0.045594055, + 0.0017439525, + -0.00090799446, + 0.0010947867, + -0.011867588, + 0.005990753, + 0.008832005, + 0.011318101, + 0.0036889368, + -0.013790794, + -0.0055551836, + -0.026817666, + -0.0124036735, + -0.007404678, + -0.0033170278, + 0.014715541, + -0.018937213, + 0.0024592914, + -0.0026502716, + 0.02275682, + 0.01143872, + -0.014889769, + -0.03640019, + 0.01766401, + -0.005762917, + 0.0034678017, + -0.022783626, + -0.028439324, + 0.003665483, + -0.02841252, + 0.018468138, + 0.011204183, + 0.009482008, + 0.002784293, + -0.010922737, + -0.016176375, + 0.0056925556, + 0.018829996, + -0.03607854, + -0.019513505, + -0.0049688406, + -0.008074785, + -0.006248744, + -0.002023722, + 0.0007999398, + 0.019660927, + 0.003601823, + -0.006587148, + -0.0037291434, + 0.013040274, + -0.00077941775, + 0.019526906, + -0.020786706, + -0.0026201168, + 0.02067949, + 0.003953629, + 0.007954165, + -0.02110836, + -0.0017690815, + 0.031629033, + -0.00032311704, + -0.010815521, + 0.005096161, + -0.024365077, + -0.005119615, + 0.087596335, + 0.0031059443, + 0.013368627, + -0.0042317235, + 0.02570529, + 0.016873285, + -0.006077867, + -0.0048917783, + -0.0030054282, + -0.009287678, + -0.0118608875, + -0.010788716, + 0.009173759, + 0.00867788, + 0.00052980304, + -0.005166522, + -0.008302621, + -0.039080616, + 0.009167058, + -0.0068618916, + -0.003400791, + 0.011659855, + -0.00041232497, + 0.01288615, + -0.013053677, + 0.0100516, + 0.011840784, + 0.033961, + 0.017315555, + -0.011740268, + 0.014876367, + 0.018092878, + 0.0031059443, + -0.0031662537, + -0.006523488, + -0.0013779068, + 0.014795954, + 0.014246467, + -0.0049688406, + -0.0072639557, + 0.013616567, + -0.0015680495, + 0.01137841, + 0.008731489, + 0.021443412, + 0.00008318746, + -0.0087113865, + 0.019969177, + -0.012015012, + 0.0125712, + 0.029243452, + 0.009274276, + -0.026214572, + -0.01665885, + -0.01206862, + 0.020398045, + 0.005618844, + -0.0099711865, + 0.022019703, + 0.026201168, + -0.00515312, + -0.02357435, + -0.004342291, + -0.020639284, + -0.0070294184, + -0.041787848, + 0.0106815, + -0.032888833, + -0.011914495, + -0.019808352, + 0.00760571, + -0.022904243, + -0.0061113723, + 0.02067949, + 0.016511427, + 0.00597065, + 0.02350734, + -0.021765063, + -0.0059572477, + 0.012041816, + 0.009602628, + -0.024485696, + -0.027447566, + -0.01716813, + -0.006406219, + 0.014635129, + 0.017650608, + -0.016484622, + 0.007954165, + 0.009696443, + 0.027688805, + -0.00591034, + 0.015452659, + 0.0073510697, + -0.016189776, + -0.017489783, + 0.010078403, + 0.002017021, + -0.016645448, + -0.014018631, + 0.025249617, + -0.01986196, + -0.008751593, + 0.005317296, + 0.004915232, + -0.016390808, + 0.01728875, + -0.0008204618, + -0.0126717165, + 0.006309054, + 0.021885682, + -0.025812507, + 0.006881995, + 0.019098038, + -0.019151647, + 0.046424985, + -0.00057335995, + 0.022716613, + -0.006121424, + -0.001206192, + 0.01087583, + 0.0007924011, + 0.016109362, + 0.0066508083, + -0.011961403, + -0.008704685, + 0.0055015753, + -0.017462978, + 0.003268445, + -0.0023805539, + -0.00848355, + 0.026321787, + -0.012242848, + -0.03425585, + -0.027608393, + 0.00521678, + -0.017771227, + 0.019071234, + -0.011043357, + -0.02771561, + -0.035220806, + -0.009039738, + 0.012001609, + -0.009220667, + -0.018762985, + -0.021349598, + 0.007833546, + 0.0063392087, + 0.014313477, + 0.011974805, + 0.008161899, + 0.01628359, + -0.02776922, + -0.0029618712, + -0.03294244, + -0.035864107, + -0.022515582, + -0.014795954, + 0.01614957, + 0.009575823, + 0.026268179, + 0.029752733, + 0.007880454, + -0.012946459, + -0.007310863, + 0.0058835363, + -0.0008506166, + 0.009401596, + -0.015760908, + 0.0108289225, + 0.026831068, + 0.029377474, + -0.0030071035, + -0.026335191, + -0.017556794, + 0.020719696, + -0.016940296, + -0.00037693497, + -0.00993098, + -0.019272266, + 0.0018109631, + -0.0045801788, + -0.005297193, + -0.017114524, + 0.0058801854, + 0.008885614, + 0.00006428835, + -0.005045903, + 0.010641293, + -0.010406756, + 0.020974336, + -0.010601087, + -0.015693897, + -0.023172287, + -0.012162435, + 0.011686659, + -0.017449576, + 0.01182068, + 0.0118608875, + 0.010728407, + 0.023091873, + -0.012048517, + -0.01275883, + 0.0040809494, + 0.011043357, + 0.018950615, + 0.0060008047, + -0.017838238, + 0.005002346, + -0.037070297, + -0.023614557, + -0.015613484, + -0.009240771, + -0.026254777, + -0.011076862, + 0.021014543, + 0.0022565841, + 0.02105475, + -0.0073443684, + -0.008664479, + 0.018628964, + 0.008510354, + 0.012979965, + -0.020625882, + 0.02790324, + 0.018267106, + 0.0036889368, + -0.01413925, + -0.01991557, + -0.011887691, + -0.017985662, + 0.02275682, + 0.027876435, + -0.006875294, + -0.023520742, + 0.013871207, + 0.024097035, + -0.02570529, + -0.008249013, + 0.019768145, + 0.027822826, + 0.0019416339, + -0.01991557, + 0.0091603575, + -0.017516587, + 0.021952692, + -0.017503185, + -0.0017154729, + -0.015881527, + -0.010172218, + -0.018508345, + 0.015667092, + -0.023735177, + 0.0015018765, + 0.02652282, + -0.020960934, + 0.011545937, + -0.0008259064, + 0.004623736, + 0.0044093016, + -0.0105139725, + 0.02432487, + 0.01691349, + 0.0034644513, + -0.0037928035, + 0.013341823, + -0.0003802855, + 0.0005612143, + -0.0040273406, + 0.026227973, + -0.006228641, + -0.015988745, + -0.0039502787, + -0.00892582, + -0.0016291967, + -0.0063325074, + 0.0035616166, + 0.0010470416, + -0.016457818, + -0.007330966, + 0.02790324, + -0.0056791534, + -0.0029434434, + -0.017597, + -0.0056925556, + -0.019111441, + -0.004657241, + -0.0054613687, + 0.007592308, + -0.013274812, + -0.020880522, + -0.01923206, + 0.0074515855, + 0.027018698, + -0.008496952, + -0.018937213, + 0.013321719, + 0.011827381, + -0.02790324, + 0.007424781, + 0.010272735, + 0.0055015753, + -0.03256718, + 0.00086527516, + -0.01388461, + -0.010266033, + 0.0063559613, + -0.025504258, + -0.00911345, + -0.02972593, + -0.022676408, + 0.03739195, + 0.008952624, + 0.022207333, + 0.0257723, + -0.022864038, + -0.00070947537, + -0.01558668, + -0.010004692, + 0.008336126, + 0.007987671, + 0.011365009, + 0.024445489, + -0.016833078, + 0.01647122, + 0.0067345714, + 0.00049755414, + -0.0037123905, + -0.024539305, + -0.0327012, + 0.0025179256, + 0.0063593118, + -0.027930044, + -0.01206862, + -0.02047846, + -0.02117537, + -0.0027641898, + -0.0024224354, + 0.008838707, + -0.0005004859, + 0.0133485235, + 0.035408434, + 0.0018746232, + 0.016806275, + -0.01640421, + -0.015975341, + 0.0025815857, + -0.013804196, + -0.01628359, + -0.01125109, + -0.0025514308, + 0.02067949, + 0.009917578, + -0.017275348, + -0.019808352, + 0.019473298, + -0.037847623, + 0.0066005504, + -0.02180527, + 0.021094956, + 0.011948001, + -0.0072438526, + 0.004720901, + 0.027983652, + -0.0069557065, + 0.030556861, + -0.015077399, + -0.009723247, + 0.013026873, + -0.026281582, + 0.04846211, + 0.00021862228, + -0.01175367, + -0.0022214034, + 0.008282518, + 0.020371241, + 0.004312136, + 0.0030188302, + -0.021832073, + -0.0019466598, + -0.0020723047, + -0.0124505805, + -0.018990822, + 0.019580515, + 0.012350065, + -0.04631777, + 0.01439389, + -0.0005499062, + -0.007699525, + -0.0063023525, + -0.0008162736, + -0.0059036394, + -0.00081376074, + 0.022971256, + -0.013341823, + -0.012638211, + 0.0069289026, + -0.027259937, + 0.008604169, + 0.0017112847, + 0.0043255384, + 0.0028730822, + 0.0019081286, + -0.013703681, + -0.027930044, + 0.0004301247, + -0.029699124, + -0.0032918989, + 0.011539236, + -0.0010261007, + -0.009488709, + -0.0106479945, + 0.011217585, + -0.037365146, + -0.018079476, + 0.0029501445, + -0.029645517, + -0.02570529, + 0.018789789, + 0.0027156072, + -0.021537228, + -0.011545937, + -0.0066742618, + 0.0038363603, + -0.012725324, + -0.017382566, + 0.011338204, + -0.027018698, + 0.0024040076, + -0.0073376675, + -0.017690815, + -0.0257723, + 0.005890237, + 0.005437915, + -0.004436106, + 0.0010269384, + 0.23652083, + -0.010527375, + -0.0022599346, + 0.01998258, + -0.0075521017, + 0.017529989, + 0.028358912, + -0.0007073813, + 0.0017389266, + 0.02256919, + -0.017811434, + -0.000539017, + 0.018722778, + -0.004543323, + -0.0062018367, + -0.021832073, + -0.032888833, + -0.02551766, + -0.031012535, + -0.0015412453, + 0.02483415, + -0.015546474, + 0.005632246, + -0.002117537, + 0.0099711865, + -0.011994909, + -0.0017623804, + 0.01162635, + 0.011043357, + 0.024793945, + 0.0027072306, + 0.009327884, + -0.007699525, + 0.0038732162, + -0.006362662, + 0.008999532, + 0.007987671, + -0.012041816, + 0.029886754, + -0.0038330099, + -0.0036889368, + -0.0151042035, + -0.018722778, + 0.0059170416, + -0.0044897143, + 0.0076526175, + 0.007934063, + 0.0074515855, + -0.009736649, + 0.021041349, + -0.040367223, + -0.0007986833, + 0.014045435, + 0.026080549, + 0.012209343, + -0.021523824, + 0.030771296, + 0.0031729548, + -0.015063996, + -0.006121424, + 0.004456209, + 0.030396037, + -0.010728407, + 0.036855865, + -0.02407023, + -0.0011333178, + -0.009917578, + 0.0038531132, + 0.029779539, + -0.012732026, + 0.022515582, + 0.0124036735, + 0.004342291, + -0.021188771, + -0.010741809, + -0.023453731, + 0.027501175, + 0.0157207, + 0.016940296, + 0.041707437, + -0.009012934, + -0.012819139, + 0.008992831, + 0.007585607, + 0.0005260337, + -0.034095023, + 0.012209343, + -0.000043975746, + 0.0129866665, + -0.031575423, + 0.0037425454, + -0.0032835223, + -0.011257791, + -0.020076394, + 0.0021711455, + 0.009951083, + 0.009602628, + 0.01590833, + -0.01118408, + 0.021041349, + -0.015827918, + 0.0021610938, + 0.004895129, + -0.005739463, + -0.017141327, + -0.005990753, + -0.006888696, + 0.011177379, + -0.009461906, + -0.013871207, + 0.0011500705, + -0.03602493, + -0.0048281183, + -0.017570196, + 0.0071366355, + 0.008041279, + -0.02047846, + -0.011793876, + 0.034523893, + -0.021979498, + 0.019848557, + -0.027608393, + -0.013650072, + -0.012524293, + -0.017462978, + -0.010312941, + 0.009977887, + -0.01640421, + 0.0032282386, + -0.048220873, + 0.028305303, + -0.0032667697, + 0.020652685, + -0.0063258065, + -0.0022766872, + 0.02110836, + 0.006543591, + -0.006881995, + 0.012356766, + -0.0020387995, + 0.008986129, + -0.018159889, + 0.035435237, + 0.03640019, + -0.021161968, + 0.0021577433, + 0.02413724, + -0.0026754006, + -0.018508345, + 0.008912418, + -0.0100516, + -0.02149702, + -0.013341823, + -0.02110836, + 0.011351606, + 0.0046203854, + 0.0015035517, + -0.003930175, + 0.003638679, + 0.0019014275, + -0.04135898, + 0.0067647262, + 0.026429005, + -0.0075655035, + -0.036158953, + -0.02752798, + -0.17454937, + 0.027045503, + -0.00021548115, + -0.014487705, + 0.011545937, + 0.034389872, + 0.0079474645, + -0.022287747, + -0.00810829, + 0.015506268, + 0.031253774, + 0.019526906, + -0.005488173, + -0.014889769, + -0.0019684383, + -0.026040344, + -0.028921802, + 0.017556794, + 0.026683645, + 0.013408833, + 0.03042284, + -0.022153724, + -0.0005792234, + -0.016390808, + -0.001614957, + 0.024619717, + -0.009997991, + 0.012892852, + 0.0012313209, + 0.0013779068, + -0.017395968, + -0.019553712, + 0.026965091, + 0.014702139, + -0.004184816, + 0.0040440937, + -0.0077464324, + -0.009951083, + -0.00018270875, + 0.014742346, + -0.012651613, + 0.018923812, + 0.012236147, + 0.0163506, + -0.0012857671, + 0.019098038, + 0.005297193, + -0.0065134363, + -0.010185621, + -0.005380956, + 0.02092073, + -0.00760571, + 0.009066543, + 0.020652685, + 0.020009384, + 0.00019412152, + 0.007813443, + 0.005166522, + 0.012745428, + -0.008369632, + -0.025263019, + -0.016015548, + -0.00033044632, + -0.010507272, + -0.0046940967, + -0.00396033, + -0.021912487, + 0.022033105, + -0.017395968, + 0.010594386, + 0.0061683315, + -0.009924279, + 0.01049387, + -0.016551634, + -0.0039234743, + 0.0008112478, + -0.011425318, + 0.020826913, + 0.0021711455, + -0.015814517, + -0.03310327, + 0.026348593, + -0.03626617, + -0.009187162, + 0.00358172, + 0.03130738, + 0.0019198555, + 0.0101990225, + -0.025624877, + -0.003638679, + 0.022528984, + -0.013375328, + 0.0037525971, + -0.0045600757, + 0.011036656, + 0.022528984, + -0.01363667, + 0.037123907, + -0.025785703, + 0.004858273, + -0.01017892, + -0.005538431, + -0.012021713, + -0.00083763327, + 0.029109431, + 0.0007630839, + 0.020384643, + 0.035810497, + 0.027983652, + -0.012289755, + -0.015131007, + 0.0031913829, + 0.00848355, + -0.0030623872, + -0.016498026, + 0.016256787, + 0.019928971, + -0.013596463, + 0.016632047, + -0.00798097, + 0.029431082, + -0.0092072645, + 0.010473766, + 0.010353147, + -0.02236816, + 0.0056791534, + -0.053930182, + 0.023292907, + 0.005193326, + 0.018977419, + -0.012685118, + 0.037123907, + 0.02112176, + 0.032325942, + -0.00810829, + 0.016136168, + -0.012953161, + -0.011807279, + -0.0028496285, + -0.0005783858, + 0.03444348, + -0.005166522, + 0.0056724525, + 0.004154661, + 0.0010076729, + 0.024432087, + -0.007753134, + -0.011572741, + 0.00078402477, + -0.004111104, + -0.024177447, + 0.019017626, + -0.021403205, + 0.027742414, + 0.0327012, + 0.02187228, + 0.021537228, + 0.0018025868, + 0.014045435, + -0.013562958, + -0.01495678, + 0.014501107, + -0.01017892, + -0.0038531132, + 0.023453731, + -0.033666156, + 0.003085841, + -0.016605241, + -0.019580515, + -0.020947533, + -0.008597468, + 0.016270189, + -0.034148633, + 0.011492329, + 0.014192858, + -0.0033790127, + -0.033773374, + -0.028948605, + -0.013308317, + -0.011425318, + 0.027849631, + -0.010500571, + 0.01074851, + 0.00010899703, + -0.035730086, + -0.0031511763, + -0.0070629236, + 0.0074180802, + -0.041895065, + 0.018535148, + 0.022917647, + 0.008443343, + -0.012557798, + -0.03575689, + 0.01665885, + -0.0011483952, + -0.013234606, + -0.0036621327, + -0.026750656, + -0.00055535085, + -0.019098038, + -0.031226968, + -0.038169272, + 0.003281847, + -0.0016962073, + -0.0050291503, + 0.011445421, + -0.035542455, + -0.020076394, + -0.010292837, + 0.001948335, + 0.042029087, + 0.011137172, + -0.014621726, + 0.008818603, + -0.011579443, + 0.006530189, + 0.008691283, + 0.029752733, + -0.01991557, + -0.016605241, + 0.029002214, + 0.01149903, + 0.023413526, + 0.0010034847, + 0.010279436, + -0.010266033, + -0.026388798, + -0.090973675, + 0.015988745, + 0.026804265, + 0.007585607, + 0.0006826711, + -0.0219929, + 0.009957785, + -0.009012934, + 0.008141795, + 0.00849025, + -0.025343433, + 0.014192858, + -0.0069356035, + -0.016551634, + -0.032272335, + -0.010835624, + 0.011545937, + 0.0033086515, + 0.0074113794, + 0.01747638, + 0.0026301686, + 0.025383638, + 0.028680563, + -0.0072304504, + -0.022354757, + 0.000009966527, + -0.021322792, + 0.036239367, + -0.014755747, + -0.0073376675, + -0.0059672995, + -0.033773374, + -0.01232326, + 0.01659184, + -0.012624809, + -0.014246467, + 0.0035917715, + 0.020759903, + 0.0031277225, + 0.032325942, + -0.01614957, + 0.008778397, + 0.016310396, + 0.0015378947, + -0.010225827, + 0.01439389, + -0.0000051010556, + 0.002992026, + 0.02533003, + 0.0033203783, + 0.0011911145, + 0.020143405, + 0.0033220535, + -0.0050258, + 0.0014566443, + -0.025892919, + 0.013831001, + -0.006637406, + -0.006215239, + 0.0076727206, + 0.009173759, + 0.0076124114, + 0.023601156, + 0.010849026, + 0.005618844, + -0.013911413, + -0.005833278, + 0.010929439, + 0.027849631, + -0.022354757, + -0.039884746, + 0.023976415, + 0.004034042, + 0.014916574, + 0.015063996, + -0.0003350533, + 0.000020050846, + 0.0048917783, + -0.015827918, + 0.035783693, + 0.0075789057, + -0.010567581, + -0.03235275, + 0.01703411, + 0.023896001, + -0.019768145, + 0.0000081931, + -0.0039871344, + -0.0046739937, + 0.04449508, + -0.018829996, + -0.0013829325, + 0.008195404, + -0.001062119, + -0.005096161, + 0.031387795, + -0.0018310663, + -0.028734172, + 0.043262083, + 0.023078471, + 0.014568117, + 0.004117805, + 0.003876567, + -0.017704217, + -0.027474372, + 0.012631509, + -0.014434096, + -0.0064497762, + -0.002224754, + 0.022609398, + 0.0141124455, + 0.016377406, + -0.0017204988, + 0.025115596, + 0.0129866665, + -0.0076526175, + -0.00091469556, + -0.020706294, + -0.010889232, + 0.016377406, + 0.008758293, + 0.00515312, + 0.012055218, + -0.016444417, + -0.005367554, + 0.0009951083, + 0.010225827, + -0.024298066, + -0.0003149501, + 0.011358307, + 0.018401127, + 0.016766068, + -0.023735177, + -0.008979429, + -0.009079944, + -0.0037324938, + 0.0028211488, + 0.0018293911, + -0.038383707, + 0.022354757, + 0.019004224, + 0.0039938353, + -0.004278631, + -0.002697179, + 0.0152382245, + -0.0045466735, + 0.002638545, + -0.012658314, + -0.02533003, + 0.010346446, + -0.025933126, + -0.0059538973, + -0.01791865, + -0.014246467, + -0.012618108, + 0.009106749, + 0.006701066, + 0.006255445, + -0.0057729683, + 0.024847554, + -0.0074850908, + 0.025745496, + 0.014782552, + -0.023453731, + -0.0073778736, + 0.00993098, + -0.0039569796, + 0.011874289, + -0.014554716, + 0.021416608, + 0.000161035, + -0.016243385, + -0.019392885, + 0.02520941, + -0.01143872, + -0.026991894, + 0.00013747656, + -0.003538163, + 0.014125847, + -0.015988745, + 0.011666556, + -0.016189776, + -0.00792066, + 0.027688805, + -0.003926825, + 0.007826845, + -0.0019064533, + -0.012839243 + ] + }, + { + "object": "embedding", + "index": 6, + "embedding": [ + -0.0131454775, + -0.007023479, + -0.007137846, + -0.028793573, + -0.03425628, + 0.0073396703, + -0.032803144, + 0.013912409, + -0.007124391, + -0.025228014, + 0.000104275794, + -0.007595314, + 0.018890737, + -0.0022755668, + -0.0018584637, + 0.0096404655, + 0.019994043, + -0.006337277, + 0.004726048, + -0.005577073, + -0.044078387, + 0.001702891, + 0.012815831, + -0.005116241, + 0.0020535602, + -0.00840261, + 0.011147418, + -0.0054458873, + -0.010407397, + -0.012217086, + -0.007992235, + -0.008557342, + -0.004463677, + -0.010817773, + -0.0130109275, + -0.0073733074, + -0.00095698267, + -0.006098452, + 0.027246255, + -0.01677831, + 0.015917195, + -0.011066689, + 0.0026657602, + -0.01789507, + 0.008294971, + 0.0343101, + 0.00424167, + 0.020895522, + -0.008624617, + 0.0009553008, + -0.00075095386, + 0.056295473, + -0.024420718, + -0.011618341, + -0.018688913, + -0.0019139653, + -0.011584704, + 0.004816869, + -0.009034993, + -0.023653787, + -0.013737494, + -0.020020952, + -0.026721513, + 0.003582378, + 0.0043156724, + 0.008079692, + 0.0014716341, + 0.008079692, + 0.002578303, + 0.0019072378, + 0.020693699, + 0.017706702, + 0.0112550575, + 0.005775533, + 0.013461668, + -0.01710123, + -0.0072051208, + -0.002921404, + 0.012129629, + 0.011678888, + 0.01691286, + -0.023842156, + -0.024286168, + 0.029520141, + 0.04106448, + 0.021245351, + -0.010003748, + 0.04701156, + -0.009526098, + -0.009230089, + 0.001309334, + 0.01614593, + 0.0010965776, + 0.032534048, + -0.009660647, + -0.006313731, + -0.0038682956, + 0.03880405, + -0.01683213, + -0.0013900636, + 0.004460313, + 0.01183362, + -0.008469885, + -0.020518785, + -0.004039846, + -0.004167668, + -0.0129369255, + 0.0053517027, + 0.010508309, + 0.0006235524, + 0.02938559, + 0.026748423, + 0.022429386, + -0.047872677, + -0.010071023, + -0.018096896, + -0.0019358296, + -0.01813726, + -0.009647192, + -0.0047327755, + 0.024689816, + -0.0039187516, + -0.006414643, + -0.027663358, + 0.021164622, + 0.015580822, + -0.00594372, + -0.004779868, + 0.0035790142, + 0.0028877666, + 0.010999414, + 0.0112550575, + -0.000038788072, + -0.0018315538, + -0.034229368, + 0.013239662, + -0.026398594, + 0.014975349, + -0.029681599, + -0.009620283, + -0.00480005, + 0.015190628, + -0.032238036, + -0.0005697326, + 0.019576939, + 0.014719705, + 0.014127688, + -0.0027111706, + 0.021339536, + -0.01305802, + 0.013502033, + -0.03207658, + 0.01119451, + -0.0048673246, + 0.010858137, + 0.0038279307, + 0.007292578, + 0.023411596, + -0.009479006, + 0.009115722, + -0.004359401, + -0.015123353, + 0.0048101414, + -0.013286754, + 0.022617755, + 0.008624617, + 0.00739349, + 0.013044565, + 0.0025127102, + -0.007783683, + 0.008557342, + 0.022402477, + -0.02401707, + 0.02018241, + 0.032964606, + 0.01364331, + 0.0067510167, + -0.01903874, + -0.030569626, + -0.031134732, + -0.014612066, + 0.005476161, + 0.016119018, + 0.018352538, + -0.0049110535, + 0.016374663, + -0.0024925277, + -0.011187783, + 0.011853803, + -0.012930198, + 0.014558246, + 0.004463677, + 0.004103757, + -0.0125870975, + -0.6824346, + -0.027770998, + -0.01186053, + -0.011450155, + -0.011820165, + 0.025241468, + 0.014100778, + 0.0026489415, + -0.011389608, + -0.0132194795, + -0.0073800352, + 0.018554363, + 0.007595314, + 0.0053113378, + -0.012963835, + -0.0022335202, + 0.0064684628, + 0.016859042, + -0.0034747384, + 0.024864731, + -0.014961895, + 0.020720609, + 0.0075751315, + -0.004742867, + 0.012714919, + 0.006656832, + 0.0018197808, + -0.011954715, + -0.010952322, + 0.004921145, + -0.030650355, + 0.0035151034, + 0.0072185756, + -0.018904192, + 0.043970745, + 0.0144775165, + -0.019711489, + 0.01462552, + 0.012573642, + 0.03657053, + 0.015917195, + 0.0054257046, + 0.024676362, + -0.0050893314, + -0.010938867, + 0.010501581, + 0.013858589, + 0.0002537518, + 0.017303053, + -0.01949621, + -0.0076020416, + -0.03172675, + -0.017854707, + -0.01079759, + 0.007050389, + -0.003632834, + 0.01792198, + 0.006290185, + 0.007736591, + 0.014517881, + 0.0085909795, + 0.0049245083, + -0.02973542, + -0.014033503, + 0.0170205, + -0.008765894, + -0.015378998, + -0.0075145843, + 0.009384821, + 0.01358949, + 0.00038619884, + 0.017477969, + 0.0042248513, + -0.009613555, + 0.031296194, + 0.012149812, + 0.010030658, + 0.002450481, + 0.0040196637, + -0.0056073465, + 0.011766345, + -0.008860079, + -0.025308743, + 0.0060513597, + 0.037458554, + -0.024985826, + 0.0025244833, + -0.005758715, + 0.009021537, + 0.002909631, + 0.01903874, + 0.037862204, + -0.0052642454, + -0.011954715, + -0.022954129, + 0.02508001, + -0.01680522, + 0.0006550874, + 0.0201555, + -0.021218441, + 0.010602494, + -0.003266187, + -0.00032207766, + -0.005829353, + 0.007178211, + 0.022456296, + -0.017558698, + 0.015190628, + 0.014100778, + -0.022563936, + -0.009660647, + -0.0058259894, + -0.028820483, + -0.010030658, + -0.013132022, + -0.026358228, + 0.011685616, + -0.011187783, + 0.01745106, + -0.011322333, + 0.009748105, + -0.0151098985, + 0.022375567, + -0.005122969, + -0.010804318, + -0.0015313404, + -0.011699071, + -0.014329512, + 0.0045410427, + 0.0022402476, + -0.008227697, + 0.02976233, + 0.026842607, + -0.005499707, + 0.035251945, + 0.009458823, + -0.01130215, + -0.011732709, + -0.0056342566, + -0.028793573, + -0.013690402, + -0.0047966866, + 0.006949477, + -0.01568846, + -0.0065996484, + -0.03910006, + -0.013286754, + -0.015217538, + -0.01130215, + 0.014571701, + -0.006132089, + -0.013676947, + -0.025564387, + -0.009135905, + -0.0075011295, + -0.010467944, + 0.009674102, + -0.017303053, + -0.014316057, + -0.012196904, + 0.027905548, + 0.007709681, + -0.021352991, + -0.011403062, + -0.011154146, + -0.014046958, + 0.018446723, + 0.0028120826, + -0.013481851, + -0.015621186, + -0.0059100827, + 0.00023293866, + 0.0025648482, + 0.0011251695, + 0.020411145, + -0.010420851, + 0.013461668, + -0.0031097732, + -0.0031013638, + -0.0023478873, + -0.009956656, + -0.010817773, + -0.026923336, + -0.020855159, + 0.018783098, + -0.0074203997, + 0.015163718, + 0.016737947, + -0.019940222, + 0.0030727722, + 0.008503523, + 0.005516526, + 0.0010427579, + -0.0035420132, + -0.0060513597, + 0.012910016, + -0.0022654757, + -0.00003250735, + 0.0034848296, + 0.013468396, + 0.026075676, + 0.0067409254, + 0.014531336, + 0.028255375, + 0.0007866936, + -0.026210224, + -0.000914095, + -0.012903288, + 0.04830324, + 0.008046054, + 0.010111388, + -0.017383784, + -0.026936792, + 0.012775466, + -0.0061690905, + 0.033368252, + 0.011974897, + -0.0019005104, + -0.00808642, + -0.0031602292, + 0.013730767, + -0.01584992, + -0.006895657, + 0.018877283, + -0.027851727, + -0.0058461716, + 0.0052137896, + 0.023129044, + 0.0063843695, + -0.032507136, + -0.011820165, + 0.008046054, + -0.0014724751, + 0.016105564, + -0.006697197, + -0.0020064681, + 0.0010721906, + -0.010259393, + 0.03412173, + -0.0027548992, + 0.01917329, + 0.022308292, + 0.027824817, + -0.02146063, + -0.0172896, + -0.011059961, + 0.024030523, + 0.0036025604, + -0.012573642, + 0.009909564, + -0.019509664, + -0.0019795583, + -0.00085817295, + -0.011100326, + 0.017666338, + -0.028336106, + 0.011228148, + 0.007918233, + 0.0108312275, + 0.027932458, + 0.012842741, + -0.009795197, + 0.015123353, + -0.000015347041, + -0.017007045, + 0.020747518, + 0.010145025, + 0.008934081, + -0.009465551, + -0.012439093, + 0.011880713, + -0.000118887016, + -0.009721194, + 0.005015329, + 0.015136808, + -0.000084251056, + -0.010124843, + -0.009304091, + 0.013105112, + 0.029116493, + -0.01789507, + -0.021689365, + 0.0021141076, + 0.032910787, + -0.00962701, + -0.034686837, + -0.01481389, + 0.0020905614, + -0.0096001, + 0.0035487406, + -0.0001552574, + 0.03234568, + -0.004941327, + -0.0047159567, + -0.0045645884, + -0.0053416113, + 0.033475894, + -0.034283187, + -0.02154136, + 0.007090754, + 0.006054723, + -0.008368974, + -0.0035285582, + -0.025941126, + 0.04970255, + -0.0037606559, + -0.018971467, + 0.00011405165, + 0.0009670739, + -0.009620283, + -0.006629922, + 0.0003853579, + -0.012466002, + 0.013656765, + 0.0006336436, + 0.015177174, + -0.009331001, + 0.01478698, + 0.024716726, + -0.021608636, + -0.009526098, + -0.0069629317, + -0.021877734, + 0.011584704, + 0.096014455, + 0.020115137, + 0.022833034, + -0.00030084405, + 0.030677265, + 0.004904326, + -0.015634641, + -0.009801924, + 0.012008535, + 0.010481399, + -0.007649134, + -0.038050573, + 0.0012521504, + 0.01079759, + -0.012910016, + -0.0036765626, + -0.022927219, + -0.0065458287, + 0.021285716, + -0.011638524, + -0.0060849967, + -0.0024302986, + 0.0022637937, + 0.003468011, + 0.014208417, + -0.010461217, + 0.029331772, + 0.0075751315, + 0.011557794, + 0.010441034, + 0.0061455444, + 0.014181508, + 0.0076424065, + 0.011826893, + -0.0037202912, + -0.01130215, + 0.022644665, + -0.005092695, + 0.014221872, + -0.017625973, + 0.019106016, + 0.003834658, + 0.009028265, + -0.0023747971, + 0.0315922, + -0.025833486, + -0.012714919, + 0.016751401, + -0.0034646473, + -0.017464513, + 0.026519688, + 0.016024834, + -0.024003614, + -0.017356874, + -0.0019543301, + 0.011181056, + 0.0068250187, + -0.00026510438, + -0.0001514732, + 0.017114684, + -0.019765308, + -0.028712844, + 0.0039591165, + -0.01566155, + -0.012324726, + -0.028389925, + 0.002159518, + -0.011880713, + -0.013172387, + -0.025456747, + -0.0022419295, + -0.019859493, + -0.007548222, + 0.008927354, + 0.018043075, + -0.0060244496, + 0.020626424, + 0.014692795, + 0.013690402, + 0.027797908, + 0.0032207766, + -0.014221872, + -0.008490068, + -0.012647645, + -0.01584992, + 0.01693977, + 0.024743635, + -0.017733611, + -0.010737043, + 0.024649452, + 0.016253568, + 0.0005579596, + 0.015473182, + -0.007871141, + -0.012788922, + 0.0016473893, + 0.007036934, + 0.021675909, + -0.018769642, + -0.009546281, + 0.04098375, + -0.009822107, + 0.003126592, + -0.0014968622, + 0.025779666, + -0.008994628, + 0.005193607, + 0.0051633334, + -0.014168053, + -0.023209773, + 0.044751134, + -0.031242372, + 0.025187649, + 0.025201105, + 0.0051263324, + 0.018702367, + -0.004726048, + 0.024743635, + -0.018769642, + 0.0058058067, + -0.01802962, + -0.03248023, + 0.0063070036, + 0.037216365, + -0.012277634, + 0.015405907, + 0.022617755, + -0.014006593, + -0.0020047862, + -0.008348791, + 0.021070438, + 0.028416835, + -0.014046958, + -0.012136357, + -0.00019478129, + -0.0039927536, + -0.0050489665, + 0.011557794, + -0.019590395, + -0.005082604, + -0.010723588, + -0.00507924, + 0.01704741, + -0.010071023, + -0.025672028, + -0.020572605, + -0.00022473956, + -0.0038582042, + 0.0015616141, + 0.03425628, + -0.0029819512, + 0.012815831, + -0.0046184086, + 0.00070680486, + -0.037862204, + -0.010649585, + 0.0037942934, + -0.034283187, + 0.002781809, + 0.021366445, + 0.027905548, + -0.0016145929, + 0.019711489, + -0.0048875073, + -0.006771199, + -0.00039986402, + 0.0074203997, + -0.00041079617, + -0.018635092, + 0.010441034, + 0.01922711, + 0.011470337, + -0.010615949, + -0.005778897, + -0.015553911, + 0.012042172, + 0.0047495943, + -0.008220969, + -0.0033418708, + -0.025228014, + -0.018460179, + -0.017114684, + 0.014571701, + 0.0043257633, + -0.0040196637, + 0.0049245083, + 0.029224131, + -0.004534315, + 0.033314433, + -0.005139787, + 0.014181508, + -0.0036799263, + 0.005957175, + 0.019240566, + -0.0011066688, + -0.012062354, + 0.002120835, + 0.005183516, + 0.012190176, + 0.038238943, + 0.01590374, + -0.0019795583, + -0.018608183, + 0.023048313, + -0.0031854573, + 0.018123806, + 0.0056208014, + -0.0056611663, + 0.01843327, + -0.021285716, + -0.0025766212, + -0.016213203, + -0.023236683, + -0.01933475, + -0.011295423, + 0.011793256, + 0.0017222324, + 0.024339987, + -0.011059961, + -0.009048448, + -0.010676496, + 0.009162814, + 0.013939318, + 0.0007496925, + 0.022792669, + 0.023707606, + -0.012082537, + -0.016576488, + -0.010911957, + 0.009297364, + -0.021837369, + 0.012230542, + 0.035870872, + -0.005462706, + -0.00909554, + -0.0059134467, + 0.003239277, + -0.0001609337, + -0.014235327, + 0.026506234, + 0.012546732, + 0.0048202327, + -0.0028793574, + 0.0012672872, + 0.002388252, + 0.026519688, + -0.026869517, + -0.0116721615, + -0.02736735, + -0.006744289, + -0.0014977031, + 0.005640984, + -0.022052648, + 0.03883096, + -0.0025093465, + -0.010286302, + 0.004265216, + -0.019792218, + -0.0004406493, + -0.0035016483, + 0.008584253, + 0.0039187516, + -0.004140758, + -0.008624617, + -0.0015128399, + -0.0059672664, + -0.006172454, + 0.018998377, + -0.015096444, + 0.021070438, + -0.010932139, + -0.005893264, + 0.0008152853, + -0.025833486, + 0.006566011, + 0.018917646, + 0.013515488, + -0.0024656178, + -0.015230993, + -0.010555401, + 0.0015355451, + 0.009061903, + -0.010609221, + 0.008947535, + -0.013071475, + -0.009916292, + -0.00256653, + -0.021137713, + 0.018796552, + -0.0023344322, + -0.020101681, + -0.013125295, + -0.008436248, + 0.029116493, + -0.015015714, + 0.009976839, + 0.021985373, + 0.012990746, + -0.0046520457, + 0.011160874, + 0.0006151431, + -0.0057856245, + -0.011140691, + 0.0047933226, + -0.008712074, + -0.0099902935, + 0.028955033, + -0.027636448, + -0.002921404, + -0.0034141913, + 0.009337729, + 0.0067812903, + 0.0065021003, + -0.0019021922, + 0.032614775, + -0.0035588318, + 0.0018567818, + -0.0031669566, + -0.011477064, + 0.020464964, + -0.0068889298, + -0.002312568, + 0.006730834, + -0.004369492, + 0.009727922, + 0.017706702, + -0.012876378, + -0.0044704042, + -0.016415028, + -0.019698033, + -0.0034326918, + 0.015594277, + -0.016065199, + -0.025577843, + -0.012883106, + 0.00928391, + -0.0071042087, + 0.02962778, + -0.015944105, + -0.0077029536, + -0.0011739436, + 0.003177048, + 0.010387214, + -0.0055266167, + -0.006592921, + -0.032641686, + -0.015836466, + 0.0037438374, + -0.029816149, + -0.006710652, + -0.01829872, + 0.023546146, + 0.0071983933, + -0.026465869, + -0.005116241, + 0.01486771, + -0.017975802, + 0.015352087, + 0.00008703665, + 0.01707432, + 0.020559149, + 0.008712074, + 0.015500092, + 0.022779215, + 0.009801924, + 0.021164622, + -0.03923461, + -0.012560187, + 0.018635092, + -0.015163718, + 0.0077164085, + 0.006340641, + -0.030246707, + -0.0015860011, + 0.01677831, + 0.010938867, + 0.0038178395, + -0.0014884528, + -0.024703272, + -0.00784423, + -0.02704443, + -0.014141142, + -0.02499928, + 0.012614007, + -0.00073623756, + -0.019267475, + -0.0015304995, + 0.010595766, + -0.017868161, + -0.012614007, + -0.005462706, + -0.0030626808, + 0.00079215964, + 0.0024336623, + -0.0018180988, + 0.016078655, + 0.017639427, + -0.050913494, + -0.0043762196, + 0.004080211, + 0.0028154464, + 0.0015473182, + -0.007857685, + -0.010030658, + -0.007063844, + -0.004964873, + -0.025968036, + -0.009337729, + -0.0027616266, + -0.017545242, + 0.0024740272, + -0.028847393, + -0.0017045728, + -0.03401409, + 0.0032813237, + -0.026479324, + 0.0007740796, + -0.012143084, + 0.011066689, + 0.01481389, + -0.027582629, + -0.017787432, + -0.0137105845, + -0.01590374, + -0.016334299, + 0.0070571164, + 0.007265668, + -0.014423696, + -0.016267024, + 0.00970774, + -0.025362564, + -0.03396027, + 0.00035130008, + 0.0040331185, + -0.0065727388, + 0.004127303, + 0.23917502, + -0.022119923, + 0.004927872, + 0.021527905, + 0.0017693248, + 0.015056078, + 0.0343101, + -0.018608183, + -0.010737043, + -0.00068998616, + -0.019603848, + 0.010528491, + -0.005398795, + 0.007904777, + -0.013912409, + -0.014881165, + -0.035817053, + -0.037593104, + -0.019092562, + -0.013246389, + 0.0009098904, + -0.008839896, + -0.006158999, + -0.008079692, + 0.028524475, + 0.0099902935, + -0.015163718, + -0.014046958, + 0.020908978, + 0.022079557, + 0.0055333446, + 0.0032527319, + -0.0054088864, + 0.03662435, + 0.00041668268, + -0.006438189, + -0.0123045435, + -0.027609538, + 0.007050389, + 0.012943653, + -0.025120374, + -0.004100393, + -0.02390943, + -0.008153694, + -0.010178663, + 0.016240114, + -0.0063843695, + -0.0023478873, + 0.019846037, + 0.014100778, + -0.019671123, + -0.010676496, + 0.03891169, + 0.031672932, + 0.0010461217, + -0.012398728, + 0.010017203, + 0.01486771, + 0.009230089, + -0.010017203, + -0.018648548, + 0.01712814, + 0.00797878, + 0.019321295, + -0.01710123, + -0.0034579197, + -0.044159114, + 0.022119923, + 0.00068115635, + 0.005462706, + 0.007232031, + -0.013602945, + -0.009808652, + -0.01313875, + -0.032318767, + -0.014585156, + 0.023330867, + 0.010609221, + 0.00792496, + 0.035440315, + -0.0043728556, + 0.0065727388, + 0.016119018, + -0.009734649, + -0.0036361977, + -0.02148754, + 0.023425052, + -0.0016532758, + -0.008476613, + -0.0063473685, + 0.0029129947, + 0.004204669, + -0.021649, + -0.013925863, + 0.024864731, + 0.013313664, + 0.0054862523, + 0.03406791, + 0.001156284, + 0.0027246254, + -0.024434172, + 0.031107822, + 0.000033584794, + -0.010992686, + -0.015271358, + 0.00368329, + 0.012614007, + -0.0041104844, + -0.010488126, + -0.012640917, + -0.009815379, + -0.03172675, + -0.00281881, + -0.0016448665, + 0.006394461, + 0.01031994, + 0.012990746, + -0.0030794996, + 0.0033855995, + -0.012741829, + -0.006895657, + 0.0025143921, + -0.0054896157, + 0.0096404655, + -0.0048706885, + 0.0001105828, + -0.0038043845, + 0.016132474, + 0.00092334533, + -0.03686654, + 0.014329512, + -0.014746615, + 0.017989255, + -0.004164304, + -0.034659926, + 0.04109139, + 0.0022856581, + -0.01571537, + -0.019819127, + -0.0067779263, + 0.015029169, + -0.015096444, + 0.0066097397, + -0.0019896494, + -0.024905095, + -0.006138817, + 0.01925402, + 0.000007647242, + -0.0005571186, + -0.008617889, + -0.0030895907, + -0.011584704, + -0.0065391012, + -0.041925594, + 0.022981038, + -0.019294385, + -0.0076625887, + -0.026627328, + -0.017733611, + 0.017881617, + -0.044051476, + -0.0055568907, + 0.021931553, + -0.014692795, + -0.020962797, + 0.013925863, + -0.17523715, + 0.02031696, + 0.019119471, + -0.020088227, + 0.0010208937, + 0.0092906365, + 0.010447761, + 0.0028675843, + 0.0021443812, + 0.0018887373, + 0.012533277, + -0.0027347167, + -0.024461083, + 0.0055568907, + 0.0012311271, + -0.024784, + -0.0048740525, + -0.00027057045, + 0.0037101998, + -0.007090754, + 0.0117461635, + -0.036139973, + 0.010030658, + -0.023317412, + -0.0060244496, + 0.010938867, + -0.013562581, + 0.021635545, + -0.017168505, + -0.01598447, + -0.0063440045, + -0.0011974897, + 0.028820483, + 0.0030172705, + 0.0072723953, + 0.010017203, + -0.009532825, + -0.009230089, + -0.006350732, + 0.030784905, + 0.012291089, + 0.016253568, + -0.003811112, + 0.008409338, + 0.005038875, + 0.029089581, + 0.025281833, + 0.0006916681, + 0.007911505, + 0.004507405, + 0.028147737, + -0.01819108, + 0.0026523052, + -0.008812986, + -0.009775015, + -0.0043661282, + 0.0012269224, + 0.017370328, + 0.0007459083, + -0.014800435, + -0.034740657, + -0.029869968, + -0.007837503, + -0.010447761, + 0.0036092878, + -0.027582629, + -0.019698033, + 0.0075549493, + -0.0135693075, + 0.0100642955, + -0.016253568, + -0.033583533, + -0.0055871643, + -0.0037572922, + 0.0058259894, + 0.014100778, + -0.0054929797, + 0.005321429, + 0.00027288301, + -0.00070554344, + -0.014316057, + 0.030219797, + -0.0029264495, + -0.005536708, + -0.0049312357, + 0.0045645884, + -0.005015329, + 0.020586058, + -0.009849017, + -0.017383784, + 0.0044502215, + -0.02047842, + -0.006428098, + -0.0012101037, + 0.011342515, + 0.022927219, + -0.0052507906, + 0.022671575, + -0.005859627, + -0.0067846538, + 0.0068014725, + -0.0071042087, + -0.015863376, + 0.022631211, + 0.028766664, + 0.030327436, + 0.01481389, + -0.0040499372, + 0.0057217134, + 0.014437151, + -0.024380352, + -0.025174195, + 0.015190628, + 0.035063576, + -0.020411145, + 0.0042853984, + 0.029358681, + -0.014612066, + 0.016482303, + -0.0029634507, + 0.057264227, + -0.0015725462, + 0.005499707, + 0.015325177, + -0.015607731, + -0.001993013, + -0.09219325, + -0.022456296, + 0.022254473, + 0.009297364, + -0.006798109, + 0.017410694, + -0.0016179567, + -0.0022133377, + 0.0012656053, + 0.013105112, + -0.010656313, + -0.003060999, + 0.026761876, + -0.018756187, + 0.04327109, + 0.0029029034, + -0.017612517, + -0.0064617353, + -0.020693699, + 0.023115588, + -0.0070436615, + 0.0045780437, + -0.0024992554, + -0.008059509, + -0.0021141076, + -0.0038481131, + -0.019846037, + 0.018554363, + 0.007945143, + 0.020868612, + 0.0007084867, + -0.00006837843, + 0.014033503, + -0.006418007, + -0.0012000125, + 0.012802376, + -0.014221872, + 0.015378998, + 0.024313077, + -0.015096444, + -0.014854254, + 0.0013042883, + 0.0204246, + -0.007783683, + -0.005577073, + -0.00027162163, + -0.0058461716, + 0.006969659, + 0.006387733, + -0.013858589, + -0.013367483, + -0.008974445, + 0.001727278, + -0.0038481131, + 0.0042853984, + -0.010723588, + 0.027770998, + 0.016159384, + -0.035063576, + -0.010925412, + -0.0032964605, + 0.007124391, + -0.021608636, + 0.016051745, + 0.017558698, + 0.0012075809, + -0.02992379, + -0.00017806773, + 0.0039523887, + -0.028981943, + -0.012842741, + 0.0074809473, + -0.007353125, + -0.007736591, + -0.01568846, + 0.00011720515, + -0.0069629317, + 0.009196452, + 0.006175818, + -0.0023462053, + -0.035225034, + -0.023155954, + -0.0025446657, + -0.02641205, + 0.02595458, + 0.035386495, + 0.0014623839, + -0.015405907, + 0.016374663, + -0.017222324, + -0.0121699935, + 0.010387214, + 0.021191532, + -0.022981038, + -0.018123806, + 0.021352991, + 0.022994494, + -0.004524224, + -0.017666338, + 0.024609087, + -0.024299623, + 0.0057250774, + -0.08847969, + 0.011006142, + 0.009189725, + -0.00853716, + 0.0039086603, + -0.028120827, + 0.017706702, + -0.0034511923, + 0.012768739, + 0.0062060915, + -0.026802242, + -0.0137778595, + 0.008187331, + 0.0024185255, + -0.03643598, + -0.026990611, + 0.022227563, + 0.01590374, + 0.016576488, + 0.017773977, + -0.013347302, + 0.0047933226, + -0.0010007112, + 0.0072051208, + -0.021016618, + 0.006734198, + 0.009055175, + 0.017208869, + -0.004480495, + 0.0034781022, + 0.029035762, + -0.03654362, + -0.01077068, + 0.015419362, + -0.011981625, + -0.03215731, + -0.015271358, + 0.030354347, + -0.0047529577, + 0.044239845, + -0.0046049533, + -0.006172454, + 0.028578294, + 0.005001874, + -0.005751987, + -0.021420266, + 0.016576488, + 0.011692343, + 0.026654238, + 0.008826441, + -0.003912024, + 0.026290955, + -0.016697582, + 0.0027919002, + -0.01617284, + -0.011927805, + 0.013239662, + 0.016267024, + -0.0005323111, + -0.023734516, + 0.024891641, + -0.00015820067, + -0.004742867, + 0.019711489, + 0.03624761, + -0.00006328027, + -0.015325177, + -0.0032039578, + -0.00022852376, + -0.01462552, + -0.024757091, + 0.0038043845, + 0.029331772, + 0.0055299806, + 0.010642858, + -0.00077702285, + 0.011174329, + 0.0024084344, + -0.020088227, + 0.017181959, + 0.01856782, + -0.014100778, + -0.032883875, + 0.02606222, + 0.032722417, + 0.0004662978, + -0.0058663543, + -0.006552556, + -0.00731276, + 0.03248023, + 0.0101988455, + 0.015971014, + 0.0021763367, + -0.011288695, + 0.011470337, + 0.017060865, + -0.00092418626, + -0.03584396, + -0.006996569, + 0.03673199, + -0.0008644799, + -0.004379583, + -0.008705347, + -0.026802242, + -0.04087611, + 0.008638072, + -0.015446272, + -0.03178057, + 0.008335336, + 0.02595458, + 0.010461217, + -0.0017390511, + -0.00077954563, + 0.018984921, + 0.0014321102, + 0.0042080325, + 0.010367032, + -0.018608183, + -0.016441938, + 0.0003891421, + 0.01566155, + 0.03616688, + 0.00851025, + -0.026317865, + 0.02063988, + -0.0029701781, + 0.013979684, + -0.019778762, + 0.0040331185, + 0.013925863, + 0.006606376, + -0.018608183, + -0.008066237, + -0.021649, + -0.0040331185, + -0.0031854573, + -0.016509213, + 0.018258354, + -0.018527454, + 0.037377827, + 0.010145025, + -0.028551385, + -0.005338248, + 0.0074136723, + 0.023317412, + 0.0075751315, + 0.03624761, + -0.02273885, + -0.0121699935, + 0.02497237, + 0.000634905, + 0.0033469165, + -0.0294125, + -0.023223227, + 0.0053819763, + -0.018608183, + -0.0026321227, + -0.01726269, + -0.007783683, + 0.03802366, + -0.0033485985, + 0.0053819763, + 0.0104141245, + -0.024649452, + -0.007063844, + 0.023317412, + 0.015056078, + 0.0021948372, + -0.021770094, + 0.014437151, + 0.010367032, + -0.0074002175, + -0.025376018, + 0.022644665, + 0.0027885365, + -0.01699359, + -0.014840799, + 0.030300526, + -0.0006176659, + -0.028928123, + 0.023815244, + -0.02957396, + -0.033395164, + 0.025066555, + -0.015917195, + -0.022510115, + -0.02404398, + -0.01063613 + ] + }, + { + "object": "embedding", + "index": 7, + "embedding": [ + 0.024549589, + -0.006144328, + -0.0028832944, + -0.013314444, + -0.0069968407, + 0.013993681, + -0.026268475, + -0.008857813, + -0.020072164, + -0.013064927, + 0.022997046, + 0.018325554, + 0.0039887885, + -0.021319743, + -0.0155808795, + -0.009024157, + 0.04932097, + -0.0061477935, + 0.014118439, + -0.011817348, + -0.004775456, + -0.005073489, + 0.0033060852, + 0.0011115585, + 0.008712262, + -0.009516258, + 0.008746917, + -0.013238203, + -0.0026129854, + -0.013737234, + -0.003250637, + -0.0150541235, + -0.025783306, + -0.0341005, + -0.020987056, + -0.01412537, + -0.01635715, + -0.0047823875, + 0.0049002143, + -0.0023201508, + 0.012392621, + -0.009620222, + -0.004837835, + 0.0061270003, + -0.009661809, + 0.038453165, + -0.0066468255, + -0.013245134, + -0.025603099, + 0.0003155769, + 0.02205443, + 0.0023704006, + -0.020113751, + -0.02108409, + -0.026074408, + -0.026254613, + -0.018256243, + 0.03276975, + 0.0028763635, + -0.018588932, + -0.0022144532, + -0.0104658045, + 0.0045952504, + 0.013210478, + 0.0078112325, + -0.01461054, + -0.009620222, + 0.005371522, + -0.017064113, + -0.0048828865, + 0.011172766, + 0.005461625, + 0.0011860667, + -0.02136133, + 0.022484152, + -0.0065393946, + -0.0055967793, + 0.0025783305, + -0.01183121, + 0.005752727, + 0.026434818, + -0.014305576, + -0.007617165, + 0.021444501, + -0.0032610337, + 0.0035937214, + -0.005260626, + 0.02991418, + -0.012344104, + 0.007825094, + 0.015123433, + 0.019046377, + -0.016066048, + -0.0027931915, + -0.031910308, + -0.0038848233, + -0.011706453, + 0.04502375, + 0.016897768, + -0.0039160126, + 0.014035267, + 0.006414637, + -0.022373255, + -0.022109877, + -0.006972582, + -0.0012137907, + -0.00049383345, + 0.0022387118, + 0.008365712, + 0.010382632, + -0.0013385486, + 0.033296507, + 0.01935134, + -0.05838671, + 0.00013656229, + -0.040144328, + -0.010410356, + 0.0024812967, + -0.011644074, + -0.036484763, + 0.023149528, + 0.033989605, + 0.010548976, + 0.0018107228, + 0.027973501, + -0.0084072985, + -0.010590562, + -0.03493222, + 0.0013082256, + 0.01926817, + 0.01092325, + 0.011789625, + 0.029110184, + 0.014915504, + -0.0037947204, + 0.005943329, + -0.027848743, + 0.013155031, + -0.022345532, + -0.015622465, + -0.007894404, + 0.03166079, + -0.020127613, + 0.0046160435, + 0.011054939, + 0.013064927, + 0.005874019, + 0.012697585, + 0.017868107, + -0.0040061157, + 0.03263113, + -0.011914383, + 0.007021099, + -0.0015586078, + 0.005655693, + 0.025007034, + -0.004896749, + 0.031078586, + 0.005558659, + 0.0073329937, + 0.005246764, + 0.006525533, + 0.012725309, + 0.0008650749, + 0.019947406, + 0.002574865, + 0.0043006833, + 0.02922108, + 0.007346856, + -0.010514321, + 0.0050076446, + 0.023856489, + -0.034849048, + 0.018769138, + 0.006986444, + 0.03590256, + 0.016856182, + -0.013681786, + -0.026753645, + -0.0056348997, + -0.00897564, + 0.014776884, + 0.020432577, + 0.01996127, + -0.01447192, + 0.022151463, + 0.022802977, + -0.0017474773, + -0.008116197, + -0.01962858, + -0.0022560393, + 0.0153175015, + 0.02999735, + -0.014291714, + -0.66404486, + -0.0057042097, + -0.010278667, + 0.011359903, + 0.0086984, + 0.016523495, + 0.010847009, + 0.013064927, + -0.019531546, + -0.013155031, + -0.006109673, + -0.012572827, + -0.004751198, + -0.000104181534, + -0.0065844464, + -0.023468353, + 0.005063093, + -0.01718887, + 0.009446948, + 0.017216595, + 0.0065324637, + 0.013300582, + 0.007755785, + -0.0040234434, + 0.00036907554, + 0.011477729, + 0.012468862, + -0.023343595, + -0.003002854, + 0.012115381, + -0.02247029, + 0.033712365, + -0.023204975, + -0.02894384, + 0.013016411, + 0.011456937, + -0.010313322, + 0.038591787, + 0.024826828, + 0.050651718, + -0.0024067883, + 0.005867088, + 0.010874732, + 0.0046437676, + -0.017507697, + -0.011117318, + 0.027266538, + -0.014291714, + 0.0006905005, + 0.0030704313, + 0.01064601, + -0.040809706, + -0.00018410459, + 0.013758027, + 0.03069045, + 0.0009781368, + 0.03673428, + 0.009211293, + 0.0022543066, + 0.008920192, + 0.0025384773, + -0.027807156, + -0.003569463, + -0.0084696775, + -0.006882479, + 0.0020637042, + -0.0155808795, + -0.011297524, + -0.0020637042, + -0.019739477, + -0.011630211, + 0.03437774, + -0.018006727, + -0.006702273, + 0.0109994905, + 0.0060576904, + 0.011678728, + -0.010119255, + -0.014929365, + -0.0026112527, + -0.021278158, + -0.01732749, + -0.034571808, + 0.009571706, + 0.007076547, + -0.01691163, + -0.031300377, + 0.017590867, + 0.0293597, + -0.015539293, + 0.016897768, + 0.021735603, + 0.009828152, + -0.0075686476, + -0.0016062583, + 0.0058636228, + -0.007880542, + -0.014028336, + 0.0028226483, + -0.0059052086, + 0.010174702, + -0.004924473, + 0.0062725516, + 0.010410356, + 0.02894384, + -0.002160738, + -0.016246255, + 0.020765264, + 0.025797168, + -0.013536235, + -0.0020844971, + -0.012004485, + -0.01940679, + -0.006546326, + -0.0024691673, + -0.028777495, + 0.023981247, + -0.0029370096, + 0.032326166, + -0.0023149527, + 0.008656814, + -0.014804607, + 0.010611355, + -0.021042503, + 0.0034187138, + 0.02366242, + 0.0004886352, + -0.01774335, + -0.0007715065, + 0.008372643, + 0.0007702069, + 0.016371014, + 0.0069829784, + -0.010687596, + -0.0006029967, + 0.012018347, + 0.020155337, + -0.011560901, + 0.012441138, + -0.008656814, + -0.01663439, + -0.013771889, + -0.01002222, + 0.004914076, + -0.006764652, + -0.034072775, + -0.014097646, + -0.009446948, + -0.035375804, + -0.00031406077, + -0.0009971971, + 0.011886658, + -0.01642646, + 0.013695648, + 0.010237081, + -0.011581695, + 0.016759148, + -0.014499644, + -0.029831007, + -0.0019285496, + 0.015636327, + -0.0038986853, + -0.012565896, + -0.00078017026, + 0.0029768627, + -0.0051947813, + 0.0058705537, + 0.019365203, + 0.004775456, + -0.037760068, + 0.01231638, + -0.013071858, + -0.01454123, + 0.021042503, + 0.006511671, + 0.009578637, + 0.013203547, + -0.007956783, + -0.002713485, + 0.008733055, + 0.019794924, + -0.017632455, + -0.02852798, + -0.0075270617, + 0.010555907, + -0.005378453, + 0.011505454, + 0.017798798, + -0.02380104, + 0.011713384, + 0.0137233725, + 0.010521252, + -0.010250943, + -0.003437774, + -0.0049903174, + 0.0011427479, + 0.00028265468, + 0.021319743, + -0.011983693, + 0.03193803, + 0.020072164, + 0.0014355825, + 0.02156926, + 0.0067854454, + 0.018783, + -0.039229438, + -0.010292529, + -0.007838957, + 0.03179941, + 0.019254306, + 0.00025428092, + -0.019808786, + -0.015081847, + 0.0009486801, + -0.000596932, + 0.02037713, + -0.0029959232, + 0.0058948123, + -0.004584854, + -0.0042209765, + 0.016509634, + -0.012011416, + -0.015830396, + 0.012940169, + -0.020501886, + 0.0144580575, + 0.029831007, + 0.03451636, + 0.012891653, + -0.035569873, + -0.019171136, + 0.008691469, + -0.005960657, + -0.003912547, + -0.0027308124, + -0.0006081949, + 0.023191113, + -0.02330201, + 0.01551157, + 0.009550912, + 0.033241056, + 0.017798798, + 0.026351647, + -0.008199369, + -0.00897564, + -0.022400979, + 0.0058151055, + 0.012718378, + -0.0095370505, + 0.01488778, + -0.011935175, + 0.015969016, + 0.008019162, + 0.01260055, + 0.0018211192, + 0.0033355418, + 0.019794924, + 0.007173581, + 0.018450312, + 0.02525655, + -0.008871675, + -0.011318317, + -0.0052710227, + 0.013425339, + 0.00077627157, + -0.008441953, + 0.007242891, + -0.028417084, + -0.016925493, + -0.019101825, + -0.014763022, + -0.010244012, + 0.024799105, + -0.004896749, + -0.003957599, + -0.02999735, + -0.01635715, + -0.008317195, + 0.0023028234, + 0.0029647336, + -0.017369077, + -0.045633677, + 0.003624911, + 0.021056365, + -0.01134604, + -0.010680665, + -0.023884213, + -0.0038189788, + -0.0040996843, + 0.0023738663, + 0.0056660892, + 0.020862298, + -0.011124249, + -0.004307614, + 0.009641016, + -0.028236877, + 0.032326166, + -0.011713384, + 0.002968199, + -0.0034412395, + -0.0065775155, + -0.02357925, + -0.0079429215, + -0.027141782, + 0.027918052, + 0.036512487, + -0.018796861, + -0.04216818, + -0.02400897, + -0.026393233, + 0.007845888, + 0.0068027726, + 0.0016487107, + 0.005142799, + -0.00723596, + -0.007915198, + -0.012642137, + -0.0012510448, + 0.032464787, + 0.0090726735, + -0.02073754, + -0.02407828, + -0.036318418, + -0.01064601, + 0.10180247, + 0.03263113, + 0.0059537254, + 0.007270615, + -0.004165529, + 0.007388442, + -0.008642952, + -0.0019285496, + 0.021804914, + 0.0007793039, + 0.012787688, + 0.01190052, + 0.009308328, + 0.0040303743, + 0.012954032, + 0.011401488, + -0.014527367, + -0.033435125, + -0.0033961881, + -0.010146978, + -0.0069344616, + -0.01990582, + -0.013508512, + 0.041585978, + -0.013792682, + 0.0012822343, + 0.021832637, + 0.023094079, + 0.0012250536, + -0.025658548, + -0.014236266, + 0.008005301, + -0.00995291, + 0.003860565, + -0.022997046, + 0.00967567, + 0.025298135, + 0.0008516461, + 0.019642442, + 0.0016209867, + 0.013155031, + 0.014596677, + -0.005343798, + -0.0053195395, + 0.027945776, + -0.0026667006, + -0.017979003, + 0.012489655, + -0.002444909, + -0.02366242, + 0.030939966, + -0.008039955, + -0.03598573, + -0.0012302519, + 0.0023218838, + 0.013023342, + 0.02080685, + 0.0056660892, + -0.023260422, + 0.001045714, + -0.001802059, + -0.035514425, + 0.007818163, + -0.01071532, + -0.010840078, + -0.03346285, + 0.007242891, + -0.0065671187, + -0.03199348, + -0.0011748038, + 0.0046056467, + -0.023981247, + -0.012143105, + 0.016343288, + 0.004969524, + -0.006206707, + 0.02567241, + -0.012753033, + -0.021333605, + 0.019600857, + -0.021181123, + -0.016176945, + -0.0052329022, + -0.008601367, + -0.021139538, + 0.03437774, + 0.006123535, + -0.01822852, + -0.014970952, + 0.011637143, + 0.026102131, + -0.01642646, + 0.007326063, + -0.0018332484, + -0.016246255, + -0.0017700031, + 0.016828459, + 0.019517684, + -0.022525737, + -0.019642442, + 0.034904495, + -0.029831007, + -0.017424524, + -0.008296402, + 0.029331975, + 0.019157274, + 0.00608888, + -0.0068027726, + -0.017369077, + 0.0017301498, + 0.03742738, + -0.019988993, + -0.00855978, + 0.008733055, + -0.002181531, + 0.014555092, + -0.014305576, + 0.019697892, + 0.015497707, + -0.035514425, + -0.023856489, + -0.00904495, + 0.0023010906, + 0.037676893, + -0.005052696, + -0.008289471, + -0.0018869637, + -0.011082663, + 0.009377638, + -0.00290582, + 0.0047962493, + 0.0347936, + 0.0077904398, + -0.012364897, + -0.024535727, + 0.0086706765, + -0.012856998, + 0.009100398, + -0.009211293, + -0.011644074, + -0.012545103, + 0.009051881, + -0.005364591, + -0.0059537254, + -0.023704007, + -0.04183549, + 0.015386811, + -0.013543166, + -0.0147214355, + 0.021208849, + -0.011228214, + 0.015816534, + -0.0047789216, + 0.016163083, + -0.03897992, + -0.022345532, + -0.007908267, + -0.005295281, + 0.0054928144, + 0.023066355, + 0.028472532, + -0.0062240344, + 0.003562532, + -0.0013342168, + 0.0066191014, + 0.003992254, + 0.027252676, + -0.0055136075, + -0.014707574, + 0.023676282, + 0.011997554, + -0.004182856, + -0.015691776, + -0.00038142139, + -0.012863928, + 0.015705638, + 0.020418715, + -0.01649577, + -0.0056452965, + -0.020307818, + -0.010361839, + -0.009966772, + -0.035514425, + 0.002479564, + -0.0061547244, + -0.008504332, + 0.025353584, + 0.0025020896, + 0.005101213, + -0.014596677, + 0.0327143, + -0.0045536645, + 0.00046914179, + 0.020058302, + 0.0014052595, + 0.0046576294, + 0.0047096116, + -0.0016556417, + -0.005122006, + 0.013889716, + 0.012489655, + -0.008913261, + -0.015123433, + -0.0011626746, + 0.008379574, + 0.020224646, + 0.010535114, + -0.013619407, + 0.019171136, + -0.025062481, + -0.011657936, + -0.010535114, + -0.013813475, + -0.018076038, + -0.018394863, + 0.023426767, + -0.029692387, + 0.017979003, + -0.013064927, + -0.03124493, + 0.0075339926, + 0.00883702, + 0.017105699, + 0.004217511, + 0.025020896, + 0.018020589, + 0.00018702859, + -0.014638264, + 0.017147284, + 0.006310672, + -0.023898074, + 0.028555704, + 0.017687902, + -0.0035937214, + -0.012170829, + -0.009516258, + 0.004363062, + -0.018810723, + -0.0033736622, + 0.03590256, + 0.017992865, + 0.00876771, + -0.0078112325, + -0.009141983, + -0.01781266, + 0.028583428, + -0.02219305, + -0.00995291, + -0.0096687395, + -0.02330201, + -0.012399552, + 0.018672103, + -0.02219305, + 0.004706146, + 0.007845888, + -0.021319743, + 0.011124249, + -0.018519621, + -0.013570891, + 0.011373765, + 0.016412599, + 0.017272042, + -0.027613088, + -0.0058151055, + 0.0076379576, + 0.0058497605, + -0.013459994, + -0.006615636, + -0.008053818, + 0.028500255, + -0.007478545, + 0.0007112935, + 0.0098836, + -0.02032168, + 0.03046866, + -0.0027931915, + -0.011852004, + -0.01892162, + -0.0068201004, + -0.01836714, + 0.0045536645, + 0.020224646, + -0.008199369, + -0.009550912, + -0.017563144, + -0.008989502, + -0.007915198, + -0.0048586284, + 0.010528183, + 0.0038155133, + -0.010036082, + -0.011145041, + -0.0073953727, + 0.014943227, + -0.0062794825, + -0.0019302825, + 0.008920192, + 0.028028948, + -0.02776557, + 0.0074369586, + 0.006650291, + 0.0018956275, + -0.029193355, + 0.009862808, + -0.008448884, + -0.010410356, + 0.019448375, + 0.018311692, + -0.020335542, + 0.008227092, + -0.0038536338, + 0.007984508, + 0.009876669, + 0.009446948, + 0.031965755, + 0.0014693711, + -0.020820713, + -0.0013515443, + -0.021070229, + 0.011845073, + -0.016038325, + 0.00828254, + 0.02344063, + -0.013557028, + 0.01711956, + 0.0024414433, + 0.019226583, + 0.037593722, + -0.016412599, + -0.012787688, + -0.00476506, + 0.0005271889, + -0.011470798, + -0.04632678, + -0.01705025, + -0.003583325, + -0.021680156, + 0.042057283, + -0.003583325, + 0.00042603965, + 0.012863928, + 0.019670166, + 0.01962858, + 0.009585568, + -0.0030271125, + -0.01795128, + -0.014638264, + -0.0061616553, + 0.0054165735, + -0.0100014275, + -0.007457752, + 0.026102131, + 0.01064601, + -0.02581103, + -0.006632963, + 0.0020810317, + -0.022373255, + 0.01962858, + -0.02227622, + 0.02073754, + 0.022096016, + 0.012392621, + 0.0016166548, + 0.00959943, + 0.013217409, + 0.0040130466, + -0.022165326, + -0.03102314, + -0.0034065845, + -0.029886454, + -0.0050007137, + -0.025824891, + -0.016870044, + -0.010957905, + 0.03041321, + -0.0050353687, + 0.0116648665, + 0.012080726, + -0.011172766, + 0.0035729285, + 0.0022629702, + 0.0014962287, + -0.00049340026, + 0.014139232, + 0.026975436, + -0.027280401, + 0.006137397, + 0.030219143, + 0.010902457, + -0.01677301, + -0.010978698, + 0.010084599, + -0.014104577, + 0.011041077, + -0.014305576, + 0.01935134, + 0.006650291, + -0.030357763, + 0.009294466, + -0.018173072, + -0.025492204, + 0.009661809, + -0.012496586, + -0.0017509429, + -0.012753033, + 0.013148099, + -0.029193355, + -0.011519316, + 0.023329733, + -0.006813169, + 0.0028347773, + -0.013626338, + -0.015691776, + -0.017424524, + 0.006868617, + -0.0036907555, + -0.014527367, + 0.0008711396, + 0.028444808, + 0.024161452, + -0.015594741, + -0.00765182, + 0.0016963613, + -0.027543778, + 0.014513506, + -0.014527367, + 0.0014832332, + -0.023482215, + -0.0013567425, + -0.00055924477, + -0.022913873, + -0.017105699, + -0.007478545, + -0.00821323, + -0.00849047, + 0.0015170218, + 0.20615555, + -0.010361839, + 0.005316074, + 0.03498767, + 0.006359189, + 0.020002855, + 0.010569769, + 0.022622772, + -0.0043388037, + 0.012822343, + -0.024410969, + 0.0005024972, + 0.014832332, + 0.013494649, + 0.01767404, + -0.011470798, + -0.022844562, + -0.037593722, + -0.026628887, + 0.025575375, + 0.013688717, + 0.0070938743, + -0.014132301, + -0.016537357, + 0.0015768016, + 0.008393437, + -0.02414759, + -0.017992865, + 0.02894384, + 0.011096525, + 0.00946081, + 0.011359903, + -0.025436755, + -0.00009031954, + -0.00029478394, + 0.019850373, + -0.0025696668, + 0.032880645, + 0.019947406, + 0.0016833657, + -0.0060854144, + -0.0077141984, + -0.014665987, + 0.0013550097, + -0.0038813578, + -0.011158904, + -0.0043388037, + 0.008455815, + -0.0034741617, + 0.027557641, + -0.033157885, + -0.008739986, + 0.020488024, + 0.026310062, + 0.0031154826, + -0.02324656, + 0.035597596, + 0.030108247, + 0.0028295792, + -0.015456121, + -0.02269208, + 0.01948996, + -0.0048482316, + 0.010722251, + -0.0019770667, + 0.020404853, + -0.023204975, + -0.003694221, + 0.012288656, + -0.0045536645, + -0.00062812155, + -0.013709511, + -0.0017492102, + 0.0068720826, + -0.02547834, + -0.017771075, + 0.027931914, + -0.01120742, + 0.0008572776, + 0.022345532, + 0.0006632097, + -0.0056452965, + -0.0043318723, + 0.003203853, + 0.0029907248, + -0.028153706, + 0.03645704, + 0.013356029, + -0.023981247, + 0.00026294467, + -0.0057735196, + -0.0056868824, + 0.0048413007, + -0.012337173, + 0.0003433009, + 0.005402711, + 0.0015308837, + 0.041696873, + -0.02310794, + -0.009821221, + -0.016662115, + -0.02484069, + 0.021527674, + -0.0028191826, + 0.009232087, + 0.008150851, + -0.008296402, + 0.017881969, + -0.006979513, + -0.014943227, + -0.015705638, + -0.012413414, + 0.020931609, + -0.014790745, + 0.022082154, + 0.0040823566, + -0.005364591, + -0.011997554, + 0.0015048925, + -0.0125936195, + 0.017244319, + 0.0049972483, + 0.0010630415, + -0.0035365408, + 0.016398737, + -0.012579758, + -0.026115993, + 0.009627153, + -0.002236979, + -0.036346145, + 0.011699521, + -0.0011574763, + 0.01260055, + 0.011110387, + -0.039201714, + 0.007014168, + 0.0024466417, + 0.007173581, + -0.006736928, + 0.018214658, + 0.0016556417, + -0.021236572, + -0.0068304967, + 0.01467985, + 0.0013541434, + 0.006276017, + 0.024119867, + -0.0045813886, + -0.0063661197, + -0.010978698, + -0.012572827, + 0.00010591428, + -0.023080217, + -0.020501886, + 0.0293597, + 0.006234431, + -0.021860361, + -0.026129855, + 0.0113321785, + 0.0115955565, + -0.018048314, + -0.0001495579, + 0.025464479, + 0.007686475, + -0.0003125446, + -0.010424218, + -0.17987321, + 0.017105699, + 0.016967079, + -0.01537295, + 0.025228826, + 0.020723678, + 0.021194985, + -0.0026805627, + -0.013411477, + 0.0053126086, + 0.02129202, + -0.0075339926, + -0.027613088, + -0.008462747, + -0.020917745, + 0.0026476404, + 0.0013913974, + 0.013563959, + 0.018200796, + 0.009828152, + 0.02380104, + -0.03396188, + 0.023856489, + -0.000010633394, + -0.011865865, + 0.00019287663, + -0.011366834, + 0.00932219, + -0.0020255835, + -0.033379678, + -0.01635715, + 0.000749414, + 0.041336462, + 0.02533972, + 0.008532057, + 0.03227072, + 0.0011921313, + 0.0057146065, + -0.015622465, + 0.010375701, + 0.00849047, + 0.006352258, + -0.0023946592, + -0.009433086, + -0.007901335, + 0.01621853, + 0.012704516, + -0.0065948428, + -0.0037704618, + 0.003167465, + -0.007048823, + -0.02636551, + -0.010743044, + -0.002940475, + 0.0076587508, + 0.013203547, + 0.0054512285, + 0.0013784019, + -0.0005761391, + 0.008871675, + -0.035874836, + -0.00025428092, + 0.017784936, + -0.021139538, + -0.011443075, + -0.011810417, + -0.02477138, + -0.013709511, + -0.021319743, + 0.016592804, + -0.012607482, + -0.015650189, + -0.0017076242, + -0.039700747, + -0.016010601, + 0.020765264, + -0.025921926, + 0.0051289373, + -0.008227092, + 0.0037704618, + -0.0067923763, + 0.046520844, + -0.013619407, + -0.0029040873, + 0.0058324332, + -0.005385384, + 0.0034568342, + 0.020418715, + -0.010847009, + -0.016939355, + 0.007346856, + -0.010382632, + -0.006546326, + -0.0097380495, + 0.023288148, + 0.016925493, + -0.016232394, + 0.027640812, + -0.013959026, + -0.016925493, + -0.00084731425, + -0.005551728, + -0.02136133, + 0.014090715, + 0.044053413, + 0.01447192, + -0.00060559576, + -0.0019372134, + 0.013605545, + -0.0006012639, + -0.019018654, + 0.0021018246, + 0.030856794, + 0.010763837, + -0.016010601, + 0.013515443, + 0.012323311, + -0.009135053, + 0.025145654, + -0.01760473, + 0.04410886, + -0.0073607177, + 0.0047026807, + 0.013113445, + 0.015109572, + -0.013418408, + -0.13895261, + -0.031272653, + 0.012129243, + 0.038647234, + 0.0032229132, + 0.02122271, + 0.008573642, + 0.0056314343, + 0.012940169, + 0.020862298, + -0.022816839, + -0.02212374, + 0.005447763, + 0.020973194, + 0.018741414, + -0.009377638, + -0.0021936602, + -0.023620835, + -0.012011416, + 0.022719806, + -0.0068998067, + -0.0014633066, + 0.0105767, + 0.006068087, + 0.008441953, + 0.008726124, + -0.020474162, + 0.021264296, + 0.012448069, + 0.0005076955, + 0.0013558761, + -0.023288148, + 0.019642442, + -0.036900625, + -0.0150264, + 0.024341658, + -0.009398431, + 0.000066169356, + 0.026102131, + -0.035375804, + 0.003411783, + -0.0036283764, + 0.024438692, + -0.02136133, + -0.007977577, + 0.0022733668, + -0.015650189, + 0.020224646, + 0.013903578, + -0.02073754, + -0.030302314, + 0.003527877, + -0.00959943, + -0.009356845, + 0.01940679, + -0.015469983, + -0.0005536133, + 0.024161452, + -0.004245235, + -0.0033060852, + 0.0023513404, + -0.009051881, + -0.0055274693, + 0.0034499033, + 0.0066260323, + 0.005343798, + -0.013321375, + -0.009211293, + 0.010458873, + -0.0014451126, + 0.0025367446, + 0.014901642, + -0.005420039, + 0.026670473, + -0.031050863, + -0.0069552544, + -0.015761085, + -0.0037600654, + 0.010950974, + -0.03069045, + -0.010978698, + -0.0155808795, + 0.006262155, + -0.0010517787, + 0.020196922, + 0.020890022, + 0.024854552, + 0.006137397, + 0.0030323109, + -0.0071943738, + 0.008608297, + -0.0058601573, + 0.023814902, + -0.0197672, + 0.008344919, + -0.00723596, + 0.012205484, + -0.021056365, + -0.007277546, + 0.02665661, + -0.02832005, + -0.02366242, + -0.10518479, + 0.017701764, + -0.0063487925, + -0.0024709, + 0.0029266132, + -0.002706554, + -0.0002720416, + -0.008109265, + 0.0049348692, + -0.037732344, + -0.03276975, + 0.013155031, + -0.0077141984, + 0.0068270313, + -0.031189483, + -0.014804607, + 0.026947713, + 0.018034453, + -0.0025280807, + -0.0100014275, + 0.00006822699, + 0.0013818673, + 0.012198553, + 0.016800735, + -0.024064418, + -0.005586383, + 0.011775763, + -0.0067750486, + -0.014160025, + 0.0057908474, + 0.0016253185, + -0.024549589, + 0.0033615332, + 0.040948324, + -0.004120477, + -0.01585812, + -0.03742738, + 0.01474916, + 0.012884722, + 0.0204603, + -0.023745593, + -0.026698196, + 0.025755582, + -0.017285904, + 0.014166956, + 0.021070229, + 0.0013264194, + 0.02400897, + 0.020903884, + 0.008220161, + -0.005822037, + 0.022068292, + 0.009897462, + -0.01843645, + -0.021264296, + -0.020931609, + 0.01642646, + 0.027640812, + 0.013965957, + -0.020987056, + 0.031633068, + 0.011962899, + 0.017355215, + -0.005402711, + 0.003238508, + -0.02170788, + -0.020557335, + -0.01405606, + -0.006255224, + -0.026060546, + -0.015733361, + -0.011644074, + 0.020432577, + 0.0064596883, + 0.034682706, + -0.006553257, + -0.00090622774, + -0.0044843545, + 0.0063765165, + 0.03160534, + -0.004879421, + 0.012829274, + -0.0456614, + 0.020820713, + 0.013563959, + 0.0033961881, + -0.014430334, + -0.016066048, + -0.021305881, + 0.020141475, + 0.019753339, + 0.010084599, + 0.02463276, + -0.010819285, + -0.003086026, + 0.01426399, + 0.019309755, + -0.019711753, + 0.0016504434, + 0.014638264, + 0.003673428, + -0.011290593, + -0.025977373, + -0.0016920294, + -0.018685965, + -0.013945164, + -0.026850678, + -0.022442566, + -0.0065740496, + 0.013702579, + 0.0093360515, + 0.021097952, + 0.008663745, + 0.02991418, + -0.0045605954, + 0.0057908474, + 0.00723596, + -0.014652126, + -0.026864542, + 0.017577006, + 0.046160433, + 0.019434514, + 0.028555704, + 0.0032575682, + 0.014180818, + 0.003694221, + -0.005489349, + -0.03681745, + 0.01767404, + -0.0073329937, + 0.0022491082, + -0.013861992, + -0.016454184, + -0.0030548365, + -0.008587504, + 0.0012934972, + 0.0026961574, + 0.018783, + -0.032242995, + 0.049431864, + -0.018519621, + -0.015885843, + -0.0016253185, + -0.005343798, + 0.017646316, + 0.00240159, + 0.018186934, + -0.032326166, + -0.005752727, + 0.007915198, + 0.0013454796, + 0.013758027, + -0.009065743, + -0.010535114, + -0.0056452965, + -0.040976048, + 0.0027117522, + -0.019850373, + 0.001718887, + 0.03415595, + 0.01495709, + 0.015899705, + 0.012552034, + -0.025686271, + -0.020474162, + 0.011498523, + 0.0055136075, + 0.00008230558, + -0.012053003, + 0.013314444, + -0.009751911, + -0.038924474, + -0.03096769, + -0.0020238508, + -0.0019891958, + -0.011165835, + -0.003458567, + 0.0043041487, + 0.014638264, + -0.0064388956, + 0.0429999, + -0.011290593, + -0.029526044, + 0.0103964945, + -0.0064354297, + -0.007346856, + -0.013584753, + -0.0008802365 + ] + }, + { + "object": "embedding", + "index": 8, + "embedding": [ + 0.009350771, + 0.009786559, + -0.01786732, + -0.019336548, + -0.015128078, + 0.021042347, + -0.0039781244, + 0.0101414155, + -0.0073212427, + -0.022760598, + -0.0052387975, + -0.017605845, + -0.0019626035, + 0.0015789543, + -0.0068294243, + -0.010309505, + 0.024877284, + -0.01834046, + 0.0199342, + -0.016559953, + -0.017232312, + 0.0049928883, + 0.010365535, + -0.020320185, + -0.01778016, + -0.009294741, + 0.020594107, + -0.017369274, + 0.01035931, + -0.012401288, + 0.0040870714, + -0.012606732, + -0.014517974, + -0.007065995, + -0.007651197, + 0.0016030782, + -0.010570978, + 0.0049493094, + 0.022013532, + -0.0120153045, + 0.010620782, + 0.007993601, + -0.0017664988, + -0.012899333, + -0.0125258, + 0.026396317, + 0.00578042, + 0.011237112, + -0.019423705, + 0.009051945, + 0.0015486047, + 0.024105316, + -0.026744947, + -0.0077508055, + -0.020145869, + 0.0050738202, + -0.003922094, + 0.0116417715, + 0.0064683426, + 0.0032559608, + -0.017070448, + -0.022038434, + -0.026744947, + 0.0040995223, + 0.0028481875, + 0.006848101, + -0.0024575344, + 0.02769123, + 0.011511035, + 0.014343659, + 0.026495926, + 0.0036699597, + 0.00774458, + 0.010919608, + 0.020195672, + 0.009649597, + -0.008118113, + 0.0014038607, + -0.015464257, + -0.0052387975, + 0.0093943495, + -0.025549643, + -0.011666674, + 0.019510863, + 0.011498584, + -0.00097429805, + -0.0026707593, + 0.030505178, + 0.0049306327, + 0.008746893, + -0.009425477, + 0.01035931, + -0.011897019, + 0.0026349626, + -0.017356824, + 0.007956249, + -0.008846502, + 0.043429412, + -0.021465685, + -0.015078274, + 0.0199342, + -0.01926184, + -0.024566006, + -0.006985063, + -0.02071862, + -0.0132853165, + -0.0037415535, + 0.01093206, + 0.0101414155, + -0.006356283, + -0.010440242, + 0.017443981, + 0.02482748, + -0.052543614, + 0.02017077, + -0.022810403, + -0.008566352, + -0.03314481, + -0.016522601, + -0.027591622, + 0.021814315, + 0.01790467, + 0.009356996, + -0.0040652817, + 0.031177538, + -0.013472083, + 0.0033337802, + -0.00677962, + -0.0057586306, + 0.0029633602, + 0.012637859, + 0.007912669, + 0.020320185, + 0.0034147121, + -0.030032037, + 0.014206697, + -0.014331208, + 0.029783014, + -0.0082737515, + -0.02928497, + -0.007850414, + 0.024640713, + -0.014704741, + 0.0032995397, + 0.0018754458, + 0.023818942, + -0.009313418, + -0.016908584, + 0.0019750546, + -0.00842939, + 0.019373901, + -0.0027719245, + 0.010197445, + -0.01810389, + 0.0039999136, + 0.0049991137, + 0.016211323, + 0.028986145, + -0.012488446, + 0.0039968006, + 0.0029898188, + 0.0067920713, + 0.023756685, + -0.0108947065, + 0.019734982, + -0.0012334364, + 0.020133417, + 0.02084313, + 0.01778016, + -0.013297767, + -0.002745466, + 0.004955535, + -0.043653533, + 0.015190333, + 0.02711848, + 0.036406998, + 0.008037181, + -0.003869177, + -0.012475995, + 0.0006050453, + -0.027143383, + 0.011125051, + 0.027641427, + 0.036382094, + -0.032024212, + -0.003925207, + 0.029608699, + -0.013721105, + 0.022710793, + -0.014493072, + 0.007346145, + 0.018016731, + 0.013982577, + -0.022486674, + -0.6984565, + -0.0059111565, + -0.009139102, + 0.017717905, + 0.010104062, + 0.01458023, + 0.009020817, + 0.0046069045, + -0.028388493, + 0.011430103, + -0.03292069, + 0.0051423013, + -0.001163399, + 0.013111001, + -0.005506496, + -0.006767169, + 0.0018380926, + 0.008958561, + 0.017693004, + -0.009008366, + 0.0046753855, + 0.03053008, + -0.00859748, + -0.012183394, + 0.023582371, + 0.0059329458, + 0.020569205, + -0.024279632, + 0.003336893, + 0.006935259, + -0.025699057, + 0.021702254, + 0.0033835846, + 0.012899333, + 0.04965496, + -0.011149954, + -0.023246191, + 0.017356824, + 0.012799724, + 0.030928515, + 0.0009065952, + 0.0019812803, + 0.009525086, + -0.016074361, + 0.0025664815, + 0.006848101, + 0.014268952, + 0.0048403624, + 0.008248849, + -0.011766283, + 0.0003920149, + -0.024429044, + -0.02482748, + -0.006848101, + -0.0125258, + 0.00035641255, + 0.019971553, + -0.009506409, + -0.00035193792, + 0.003772681, + -0.008995915, + 0.0022552041, + -0.010346858, + -0.022138044, + 0.011336721, + 0.019759884, + 0.008342233, + -0.0015447137, + 0.0029135558, + -0.006331381, + 0.0007684659, + 0.037652105, + -0.0044979574, + -0.009774108, + -0.014107089, + -0.008759344, + 0.02893634, + -0.03282108, + 0.0012847972, + -0.008989689, + 0.023171484, + 0.011654223, + -0.04532198, + 0.005627894, + 0.04009252, + -0.013297767, + -0.012233199, + -0.006673786, + 0.013982577, + 0.002146257, + 0.016983291, + 0.01697084, + -0.030032037, + -0.0020310846, + -0.0023299109, + 0.022723245, + 0.0016871231, + 0.01013519, + -0.0021431444, + -0.0039625606, + -0.0022396403, + -0.020606559, + -0.0058862544, + -0.008323556, + -0.0045882277, + 0.0023999482, + -0.010813775, + 0.030305961, + 0.023495212, + -0.033294223, + -0.017269665, + -0.009537538, + -0.0069663865, + 0.0025836017, + 0.017157607, + -0.025649251, + 0.008547676, + 0.022312358, + 0.025923176, + -0.0051018354, + 0.022598734, + 0.0012972483, + 0.025275718, + -0.014654936, + -0.010857353, + 0.008342233, + -0.0014287629, + -0.019797238, + -0.0106705865, + 0.007190506, + 0.0012995829, + 0.004575777, + 0.031725384, + -0.0058955927, + 0.040715072, + 0.018850954, + 0.023246191, + -0.010981864, + 0.00096495973, + -0.014156893, + -0.023183934, + -0.0084231645, + -0.0054753684, + -0.00407462, + 0.0051516397, + -0.038125247, + 0.0007918117, + 0.0003772292, + -0.03961938, + 0.0066613345, + -0.013945224, + 0.0020559868, + -0.02644612, + -0.009942198, + -0.010041807, + -0.004491732, + -0.0077757076, + 0.0044761677, + -0.01548916, + -0.006617756, + -0.0025649252, + 0.011535938, + -0.026371416, + -0.01179741, + 0.00016799248, + 0.004052831, + 0.013272865, + 0.014978665, + -0.00979901, + -0.0050738202, + -0.014293855, + -0.0068294243, + -0.011909471, + 0.0050738202, + 0.024976892, + -0.0064060874, + -0.005089384, + -0.008441841, + -0.0009680725, + 0.017307019, + 0.017282117, + -0.02061901, + -0.017369274, + -0.004404574, + 0.03406619, + -0.0075702644, + 0.0083484575, + 0.01926184, + -0.0064870194, + 0.0054442403, + -0.0014684508, + -0.0066675604, + 0.009668274, + 0.010048032, + 0.00016653337, + 0.013945224, + 0.0010521173, + -0.015053371, + 0.024690518, + 0.015289942, + 0.021889022, + 0.004270725, + 0.025213463, + 0.004874603, + 0.010956962, + -0.012314131, + 0.00037158732, + -0.021889022, + 0.028687319, + 0.0036326065, + 0.0273426, + -0.014667387, + -0.023868745, + 0.004980437, + -0.0076636476, + 0.040266834, + 0.0014559997, + 0.0114923585, + -0.02380649, + -0.016223773, + 0.0016559954, + -0.029434383, + -0.0012023087, + 0.011430103, + -0.03620778, + 0.024080414, + 0.0064496663, + 0.01947351, + -0.0015003567, + -0.013297767, + -0.025400229, + -0.0068605524, + -0.0023143468, + 0.015426904, + -0.03361795, + -0.0060574566, + 0.0071407016, + -0.019523313, + 0.026222002, + -0.010184994, + 0.00831733, + 0.0011462787, + 0.02096764, + -0.0153771, + 0.013272865, + -0.0068543265, + 0.03155107, + 0.011809861, + -0.014119539, + -0.0030007134, + -0.0018956789, + 0.009562439, + -0.0059329458, + -0.0047967834, + 0.010633233, + -0.021677352, + 0.017356824, + -0.0060792463, + 0.011093924, + 0.0062255464, + 0.0035796892, + -0.007651197, + 0.019099977, + 0.0071407016, + -0.0102908285, + 0.007134476, + 0.027641427, + 0.011000541, + -0.023208838, + -0.004146214, + 0.0007427855, + -0.017431531, + -0.003361795, + -0.008448066, + 0.027990056, + -0.017443981, + -0.0068543265, + -0.019448608, + 0.009649597, + 0.018191047, + 0.004924407, + -0.026396317, + -0.0057461793, + 0.019585568, + -0.010770195, + -0.031775188, + -0.026645338, + 0.008217721, + -0.005696375, + 0.02654573, + 0.015862692, + 0.03394168, + -0.0057150517, + -0.006574177, + -0.013472083, + -0.014368561, + 0.04245823, + -0.008522773, + 0.0058208858, + -0.009562439, + -0.011542163, + -0.022723245, + -0.000067702815, + -0.007153153, + 0.029783014, + -0.0033960356, + -0.00814924, + -0.009220035, + -0.0070535443, + -0.0041306503, + 0.014841703, + 0.007781933, + -0.0066800113, + 0.023507664, + 0.015825339, + 0.017929574, + -0.0080434065, + 0.015651023, + 0.008242624, + -0.0030972094, + -0.006574177, + -0.019884396, + -0.022511575, + -0.0117911855, + 0.09965855, + 0.0028326237, + -0.0015307063, + -0.0024948877, + 0.0051236246, + -0.007041093, + -0.0038505006, + 0.0007828625, + 0.0066800113, + 0.023731783, + 0.010116513, + -0.028438296, + -0.0016108601, + 0.023756685, + -0.0039625606, + -0.0019236938, + -0.017095352, + 0.00017830354, + 0.0058582393, + -0.0060201036, + 0.023818942, + -0.025823567, + 0.020980092, + 0.02517611, + -0.0072527616, + 0.0016917923, + 0.009637146, + 0.001219429, + 0.0041368757, + -0.0035392232, + -0.013347572, + 0.010004453, + -0.01037176, + 0.011890794, + 0.002588271, + -0.0022489787, + 0.027865546, + 0.011753832, + 0.022822853, + -0.009307192, + 0.0006536824, + 0.008292428, + 0.01778016, + -0.012164718, + 0.036954843, + -0.033792265, + -0.00032878667, + 0.013833164, + -0.020195672, + -0.007893993, + 0.025524741, + 0.006399862, + -0.021465685, + 0.0066239815, + -0.0041711163, + 0.011822313, + -0.00900214, + -0.010975638, + -0.012096236, + 0.0102908285, + -0.004379672, + -0.039818596, + 0.004224033, + -0.002849744, + -0.0055625257, + -0.021141956, + -0.018203499, + 0.016485248, + -0.016522601, + -0.0048528137, + 0.0091142, + -0.039818596, + -0.008553901, + 0.011977951, + 0.0041648904, + -0.019909298, + 0.021428332, + -0.011324269, + 0.0012295455, + 0.031775188, + -0.0114176525, + -0.0058831414, + -0.023632174, + -0.008267526, + -0.036157973, + 0.015314844, + 0.025524741, + -0.01400748, + -0.024553556, + 0.004507296, + 0.0072714384, + 0.0050177905, + 0.015887594, + 0.015464257, + -0.005643458, + -0.0055251727, + -0.006393636, + 0.02359482, + -0.009736755, + -0.012787272, + 0.014231599, + -0.02597298, + 0.009954649, + 0.0043734466, + 0.019996455, + 0.029982232, + 0.0109694125, + 0.013833164, + -0.033194613, + -0.00785664, + 0.021814315, + -0.038897216, + 0.030853808, + 0.022237653, + -0.015078274, + 0.022225201, + 0.0072527616, + 0.022088239, + 0.012158493, + 0.0033804718, + -0.010458918, + -0.02050695, + 0.008852727, + 0.010514948, + -0.004423251, + 0.009556214, + -0.0075951666, + -0.019311646, + -0.02277305, + 0.006010765, + -0.007893993, + 0.008914983, + -0.020071162, + -0.004765656, + -0.026969068, + 0.00054084434, + -0.00535397, + 0.010284603, + -0.009232486, + -0.013260414, + -0.007875317, + -0.0017073561, + 0.011286916, + -0.0073087914, + -0.042856663, + -0.017057998, + 0.006960161, + -0.000019102214, + -0.017356824, + 0.017630748, + -0.007999827, + 0.029907525, + -0.008410714, + 0.0017166944, + -0.008360909, + -0.015028469, + -0.0077757076, + -0.02689436, + 0.0070908973, + 0.01844007, + 0.027741035, + 0.00053033873, + 0.018751346, + -0.02119176, + -0.013322669, + -0.0052387975, + 0.0037104257, + 0.0031625775, + -0.015514062, + 0.012849528, + 0.019162232, + -0.008006053, + -0.004376559, + 0.026794752, + -0.013907871, + 0.020220576, + -0.023781588, + -0.011187307, + -0.0057866457, + -0.009761657, + -0.027492013, + -0.032621864, + -0.00024357451, + 0.006290915, + -0.011112601, + -0.0005914269, + 0.019660275, + 0.0031485702, + 0.0007330581, + 0.00010777977, + 0.009549988, + -0.004625581, + 0.028039861, + 0.007346145, + -0.01548916, + -0.018203499, + -0.011573291, + -0.009276064, + -0.013036294, + 0.022524027, + 0.0061664036, + -0.0070099654, + 0.0016155293, + 0.011604419, + 0.010278378, + 0.028562807, + 0.0222003, + 0.00700374, + 0.01571328, + -0.01834046, + -0.017892221, + -0.012283003, + -0.008410714, + -0.027890448, + -0.00450107, + 0.012538251, + -0.004245823, + 0.027267894, + -0.026047686, + -0.017518688, + 0.014754545, + 0.0027781501, + 0.012426191, + 0.00889008, + 0.032422647, + 0.009861265, + 0.017307019, + -0.022648538, + 0.02858771, + -0.0069539356, + -0.0079002185, + 0.023408055, + 0.032995395, + 0.0012217636, + -0.024528652, + -0.01719496, + 0.009257387, + 0.0062255464, + 0.00246376, + 0.029110655, + -0.0037353279, + -0.0050831586, + -0.01800428, + -0.012550701, + -0.02836359, + 0.015128078, + -0.006574177, + 0.0053633084, + -0.016734269, + -0.018539678, + -0.0115670655, + -0.0070099654, + -0.00752046, + 0.013845615, + -0.0060325544, + -0.014742094, + -0.0069228075, + 0.004009252, + -0.015887594, + 0.022760598, + 0.017493786, + 0.0069103567, + -0.013609044, + -0.0013330452, + 0.018203499, + 0.018415166, + -0.006110374, + 0.00037431097, + 0.0033991484, + 0.011847215, + -0.009593567, + -0.016771622, + 0.0033804718, + 0.0059889755, + 0.015563866, + 0.0032839759, + 0.008964787, + -0.0018536565, + 0.00350187, + -0.0046598217, + 0.0058582393, + 0.02084313, + -0.0011244894, + -0.012837077, + -0.02516366, + -0.014268952, + -0.011075247, + -0.009020817, + 0.030505178, + -0.010353084, + -0.0032466224, + -0.006785846, + -0.018066537, + 0.00837336, + -0.00063578394, + 0.0064434404, + 0.014194246, + 0.018938113, + -0.015140529, + 0.022262555, + 0.020519402, + 0.0159623, + -0.010346858, + 0.004958648, + -0.0040559433, + -0.0060574566, + 0.01765565, + -0.019062623, + -0.011523486, + -0.029982232, + -0.005064482, + 0.002423294, + -0.008753118, + -0.00046963966, + 0.034589138, + -0.0058551263, + -0.007128251, + -0.00635317, + -0.017443981, + 0.032646764, + -0.015140529, + 0.010321956, + 0.008585028, + -0.01685878, + -0.004834137, + 0.030380666, + -0.00046069044, + -0.0012388837, + -0.0025291282, + -0.019299194, + 0.011106375, + 0.021490587, + 0.0011844102, + -0.025997883, + -0.0056341197, + -0.014069735, + -0.0046971748, + 0.024541104, + -0.0033151035, + 0.0054847063, + 0.0122394245, + 0.020295281, + 0.04646748, + -0.00635317, + -0.015277491, + -0.025076501, + -0.0006015434, + -0.0042084693, + -0.036307387, + -0.017008193, + -0.01572573, + 0.013521887, + -0.0023345798, + -0.009817687, + -0.025524741, + 0.006505696, + -0.030256156, + -0.0058177733, + -0.007881542, + 0.014505523, + 0.014941311, + 0.0233458, + 0.007134476, + 0.008560127, + 0.009332094, + 0.024478849, + -0.004336093, + -0.006244223, + 0.028388493, + -0.022872658, + 0.0170829, + -0.017232312, + -0.018191047, + 0.011878342, + 0.01355924, + 0.0010980307, + 0.016460344, + 0.008684637, + -0.04046605, + -0.013086099, + -0.0120153045, + 0.013658849, + -0.008279976, + 0.01790467, + 0.000060066795, + -0.021278918, + 0.0008404488, + 0.018763797, + -0.010054258, + 0.0010139858, + 0.0055936533, + -0.00020719397, + -0.019050172, + 0.01628603, + -0.027716134, + -0.0043454315, + 0.022735696, + -0.030380666, + 0.0307542, + -0.009288515, + 0.0027190074, + 0.012656536, + -0.013833164, + -0.0033835846, + -0.010415339, + 0.004230259, + -0.01948596, + -0.02198863, + 0.025375327, + -0.018763797, + -0.001550161, + 0.011461231, + 0.011249563, + -0.03792603, + -0.0017353711, + 0.00535397, + -0.0075764903, + -0.0054131127, + 0.012027755, + 0.024167571, + -0.012787272, + -0.0068294243, + -0.0053352932, + -0.016547503, + -0.008778021, + -0.008242624, + 0.008435615, + -0.005024016, + -0.008553901, + 0.011934373, + -0.009039493, + -0.033767365, + -0.0041368757, + 0.0011104819, + 0.015078274, + -0.006505696, + 0.21395957, + -0.017394178, + -0.003489419, + 0.029758113, + 0.0016855667, + 0.028114568, + 0.032173626, + 0.0016248677, + -0.0023968355, + 0.0039999136, + -0.04044115, + 0.015588769, + -0.010340633, + -0.002331467, + -0.0099982275, + -0.009898619, + -0.02243687, + -0.05174674, + -0.012812175, + -0.016236225, + -0.010508723, + -0.006549275, + 0.0019221375, + -0.009531312, + 0.024105316, + 0.014704741, + -0.009008366, + -0.008634833, + 0.017244764, + 0.003405374, + 0.0043454315, + -0.0018178596, + -0.017406628, + 0.004553987, + -0.0028995483, + -0.0056683603, + -0.014804349, + -0.008279976, + 0.009693176, + 0.031177538, + -0.010602105, + -0.0055220597, + -0.000547459, + -0.008641059, + -0.016086813, + 0.016323382, + -0.009817687, + -0.0069663865, + -0.009556214, + 0.03212382, + -0.035410907, + -0.0040995223, + 0.01435611, + 0.02711848, + -0.0016077474, + -0.024902185, + 0.03543581, + 0.011915696, + -0.0056901495, + -0.0244913, + -0.019411255, + 0.003694862, + -0.01179741, + -0.004102635, + 0.0036077043, + 0.009792784, + -0.03394168, + -0.008186594, + 0.00842939, + 0.0027081128, + -0.0008957005, + -0.0020715506, + -0.013571692, + 0.00535397, + -0.021689804, + -0.047314152, + 0.023980806, + 0.00572439, + -0.0010684595, + 0.025948077, + 0.0018629947, + 0.003392923, + 0.02095519, + 0.007047319, + 0.008435615, + -0.023308447, + 0.008329781, + 0.012146041, + -0.009693176, + -0.015302394, + -0.0052823764, + -0.03259696, + -0.0018738895, + -0.008354683, + 0.015551415, + 0.007931346, + 0.019423705, + 0.026072588, + -0.014393464, + -0.006216208, + -0.016721819, + -0.013982577, + 0.018290656, + 0.008921208, + -0.002182054, + 0.0056652473, + 0.009680725, + -0.002339249, + -0.02699397, + -0.023420505, + 0.003349344, + -0.019075075, + -0.0031828107, + -0.006069908, + 0.005659022, + 0.011517261, + 0.008143015, + -0.009027042, + 0.01122466, + -0.018215949, + 0.0035610127, + -0.01697084, + 0.009076847, + 0.002182054, + 0.00963092, + -0.012861979, + -0.014443268, + 0.005627894, + -0.018938113, + -0.04360373, + 0.0030100518, + -0.0075702644, + 0.007165604, + -0.018626835, + -0.023706881, + 0.0069477097, + 0.008821599, + -0.009300967, + -0.013086099, + -0.0044730552, + 0.011349171, + -0.0005221677, + 0.014156893, + -0.0065679518, + -0.021241564, + -0.009325868, + 0.0029400142, + 0.0028248418, + -0.018315557, + 0.00768855, + -0.0060885847, + -0.0020388665, + -0.008099436, + -0.03040557, + 0.038324464, + -0.0067609437, + 0.0004435702, + -0.02644612, + 0.011012992, + 0.025076501, + -0.021428332, + -0.017580943, + 0.034140896, + -0.009780333, + -0.00870954, + 0.01719496, + -0.15857711, + 0.022001082, + 0.016522601, + 0.0043734466, + 0.017008193, + -0.003498757, + 0.0074021746, + 0.004507296, + -0.012283003, + -0.002568038, + 0.029434383, + 0.00074084004, + -0.026969068, + -0.019236939, + -0.020220576, + -0.02050695, + -0.0022567606, + 0.00067975186, + 0.0091142, + 0.008130563, + 0.024404142, + -0.026097491, + 0.02323374, + -0.007153153, + -0.002684767, + -0.010676812, + -0.017693004, + 0.018888308, + -0.018601933, + -0.015215236, + -0.022050885, + 0.0029804804, + 0.02004626, + -0.00027548044, + -0.0044574915, + 0.019535765, + 0.0029726985, + -0.006960161, + -0.016086813, + 0.0050395797, + 0.017580943, + 0.014281403, + -0.009145328, + 0.0018209723, + -0.00044084652, + 0.02574886, + 0.008006053, + -0.010639459, + -0.004189793, + 0.011915696, + 0.020033808, + -0.008441841, + 0.013521887, + -0.0015447137, + -0.0007704114, + 0.0067982967, + 0.005939171, + -0.011069022, + -0.0035454486, + -0.008883855, + -0.021963729, + -0.005587428, + 0.0009276064, + -0.01469229, + 0.00012460821, + -0.007962474, + -0.019286742, + 0.0041804546, + -0.009232486, + 0.01695839, + -0.009294741, + -0.024155121, + 0.020096064, + -0.014903958, + 0.02439169, + 0.011131277, + -0.013609044, + 0.021590196, + 0.017344372, + 0.0010015348, + 0.0061165993, + 0.05772327, + -0.012077561, + 0.033792265, + -0.0030380667, + -0.0035298849, + -0.0046878364, + 0.006823199, + -0.02312168, + -0.0040279287, + 0.017892221, + -0.009039493, + -0.023457859, + -0.008852727, + 0.00086146, + 0.019336548, + -0.0011190419, + 0.018016731, + -0.018191047, + -0.010832451, + 0.016310932, + 0.0018443181, + -0.020755973, + 0.014667387, + 0.052792635, + 0.025599448, + 0.019236939, + -0.00009931692, + 0.010303279, + 0.0273426, + -0.033294223, + -0.017605845, + -0.00025446923, + 0.026122393, + -0.020071162, + -0.009973326, + 0.020282831, + -0.028438296, + 0.018850954, + -0.011511035, + 0.05184635, + 0.006574177, + -0.00450107, + 0.009294741, + -0.02232481, + -0.009076847, + -0.073063016, + -0.030828906, + 0.00889008, + 0.011025443, + -0.01309855, + 0.018502325, + -0.0023034522, + -0.014991116, + 0.013073647, + 0.008591254, + -0.017506236, + -0.011872117, + 0.012812175, + -0.005481594, + 0.04350412, + -0.00046730507, + -0.0043018525, + -0.014854154, + 0.0006136054, + 0.0027999396, + -0.016609758, + 0.009736755, + 0.0008567908, + -0.0020217462, + -0.021714706, + 0.0005034911, + -0.029484188, + 0.003990575, + 0.0054566916, + 0.02232481, + -0.007389724, + -0.023408055, + -0.0009618469, + -0.009942198, + -0.0033835846, + 0.0066924626, + -0.013360023, + 0.006371847, + 0.023632174, + -0.021328723, + -0.0153895505, + 0.008877629, + 0.01019122, + -0.022872658, + -0.008784246, + -0.014679839, + -0.0061290506, + 0.021839216, + 0.0045664385, + -0.008678412, + 0.0042489353, + -0.0012591168, + -0.015738182, + -0.019734982, + 0.00837336, + -0.016833877, + 0.008553901, + 0.022710793, + -0.006371847, + 0.017232312, + -0.016846329, + 0.00013355743, + -0.028438296, + 0.035933856, + -0.0053477446, + 0.005546962, + -0.024242278, + -0.0027236766, + 0.0188136, + -0.016945938, + -0.0092449365, + -0.012656536, + -0.025026698, + 0.0032279459, + -0.017580943, + 0.0039594476, + -0.0024668728, + 0.0066924626, + 0.0025991658, + -0.01604946, + -0.010377986, + -0.02562435, + 0.0010007566, + -0.011398976, + 0.028089665, + 0.012563153, + 0.0077881585, + -0.0025820455, + -0.0061197123, + -0.009960874, + 0.0018738895, + 0.0074208514, + 0.025948077, + -0.014829252, + -0.010060484, + 0.035037376, + -0.0010894707, + -0.012774821, + 0.014966214, + 0.013360023, + -0.020195672, + -0.020369988, + -0.08611176, + 0.015165431, + 0.0094690565, + -0.01150481, + 0.02117931, + 0.0109694125, + 0.017481335, + -0.0013789586, + -0.005929833, + 0.007221634, + -0.04908221, + -0.008622382, + -0.0153895505, + 0.016024556, + -0.012220748, + -0.012283003, + 0.021503037, + 0.025823567, + -0.009437929, + 0.021789413, + 0.007701001, + -0.0096184695, + 0.00214937, + 0.00050504744, + -0.013584143, + 0.004939971, + -0.010508723, + 0.02744221, + -0.027018871, + -0.008952335, + 0.030106742, + -0.034265406, + -0.0049773245, + 0.02368198, + 0.009805236, + -0.021390978, + 0.00883405, + 0.0035454486, + -0.003486306, + 0.019984005, + -0.006586628, + -0.020681266, + 0.016759172, + -0.013633947, + -0.0070535443, + -0.014791898, + 0.0159623, + 0.012812175, + 0.00876557, + 0.021042347, + 0.0016731157, + 0.035037376, + -0.007234085, + -0.008759344, + -0.011069022, + -0.016896132, + 0.016659562, + 0.017929574, + 0.009724304, + -0.027765937, + 0.014430817, + -0.015787985, + -0.0064683426, + 0.016659562, + 0.02756672, + -0.022387065, + -0.017506236, + 0.005136076, + 0.018987916, + -0.027392404, + -0.01733192, + -0.012594281, + 0.022287456, + 0.009431703, + 0.021602646, + 0.013945224, + 0.020245478, + -0.008124338, + -0.03907153, + 0.026520828, + 0.00017139707, + 0.0072527616, + -0.031376753, + 0.0097678825, + 0.024989344, + -0.0009073734, + -0.020980092, + -0.020942738, + -0.007109574, + 0.02836359, + -0.0076138433, + -0.0033244418, + 0.01799183, + -0.0011307149, + 0.0013875187, + 0.0076823244, + -0.007277664, + 0.0027548042, + -0.00780061, + 0.03658131, + 0.01832801, + 0.0019174683, + -0.023719331, + -0.02836359, + -0.016896132, + 0.026969068, + 0.012270552, + -0.023669528, + -0.006561726, + 0.029085753, + 0.01662221, + -0.00046224683, + 0.0034489527, + 0.021764511, + -0.005789758, + 0.0082737515, + -0.0028404056, + -0.011517261, + -0.027516916, + 0.003402261, + 0.03269657, + 0.019909298, + 0.022710793, + -0.010209897, + 0.017805062, + 0.0077508055, + 0.005257474, + -0.031600874, + -0.004230259, + 0.0016653336, + -0.0009065952, + 0.006200644, + -0.016572405, + -0.024092864, + -0.007427077, + -0.011031669, + 0.022872658, + 0.011704028, + -0.016024556, + 0.043354705, + -0.008080759, + -0.010745293, + 0.0069228075, + -0.01606191, + 0.027940253, + 0.0056092176, + 0.01926184, + -0.027168285, + -0.03259696, + -0.00313145, + 0.0011571734, + -0.0026707593, + -0.034614038, + -0.0025633688, + -0.004448153, + -0.018527227, + 0.009176455, + -0.015787985, + 0.016149068, + 0.021664903, + 0.007551588, + -0.013708653, + 0.012924234, + -0.011436329, + 0.008385811, + 0.017170057, + 0.0210797, + -0.010900932, + -0.020008907, + 0.012924234, + 0.007862865, + -0.020183222, + -0.008958561, + 0.018489873, + -0.029608699, + -0.0074208514, + -0.013061197, + 0.02597298, + 0.009419252, + -0.018016731, + 0.02676985, + -0.02244932, + -0.05433657, + 0.0012054214, + 0.0016824539, + -0.009960874, + 0.0033711335, + -0.017344372 + ] + }, + { + "object": "embedding", + "index": 9, + "embedding": [ + -0.008189119, + -0.0015157744, + 0.0074148276, + -0.034777507, + -0.021128977, + 0.0044751437, + -0.019960977, + 0.020341562, + -0.017729968, + -0.0353287, + 0.022835044, + -0.0058432776, + 0.012998914, + 0.0019521337, + -0.010229837, + -0.01561707, + 0.016115766, + -0.011404398, + 0.008445029, + -0.0051181996, + -0.008208805, + 0.027297063, + -0.010879455, + -0.008215366, + 0.0019783808, + 0.0065093, + -0.002918358, + -0.016535722, + 0.0061976146, + -0.024475493, + 0.013307318, + -0.028793152, + -0.024449244, + -0.037244745, + 0.011791544, + -0.011798106, + -0.015984531, + -0.008733748, + 0.006151682, + -0.009494917, + 0.012887363, + -0.011023814, + -0.003313706, + -0.010026421, + -0.021404572, + 0.015722059, + -0.0073098387, + -0.003343234, + -0.028688164, + 0.006670064, + 0.021535808, + 0.022441337, + -0.0248692, + 0.0019258866, + -0.025590997, + -0.013806015, + -0.015577699, + -0.0004457919, + -0.017323136, + -0.010761342, + -0.0062993225, + -0.01956727, + -0.015630193, + 0.024081785, + 0.0025951895, + -0.018438641, + -0.0024196615, + 0.0134385545, + 0.0038714586, + 0.02171954, + 0.030525466, + -0.0061352775, + 0.012847993, + -0.0032087173, + 0.014212846, + 0.0012319769, + -0.019829743, + 0.013333566, + -0.0075263777, + 0.0059023337, + 0.004183144, + -0.042940382, + -0.030079264, + 0.026247177, + 0.017415002, + 0.009199635, + -0.031549107, + 0.023950549, + -0.006975187, + -0.0041929865, + 0.022034505, + 0.021916393, + 0.022467583, + 0.0011507747, + -0.032756478, + 0.014147229, + -0.0021407853, + 0.037717193, + -0.014186599, + -0.012231184, + 0.011955589, + -0.005836716, + -0.010846646, + -0.02040718, + -0.0014239093, + 0.008930602, + -0.02175891, + -0.034357555, + 0.013543543, + -0.016378239, + -0.013451678, + 0.014750914, + 0.0056398623, + -0.041234314, + -0.002867504, + -0.023071269, + 0.003335032, + -0.0158008, + -0.025840346, + -0.038609598, + 0.020538416, + 0.021772033, + 0.010754781, + -0.020367809, + 0.037795935, + 0.0056004915, + -0.00057210645, + -0.019304799, + -0.008504085, + 0.0029298412, + 0.021207718, + -0.0065093, + -0.0076576136, + 0.0034711892, + -0.013327004, + 0.023058144, + -0.033412658, + 0.009711456, + -0.018123675, + -0.035197463, + 0.0015379206, + 0.028241962, + -0.0060926257, + 0.020748394, + -0.007040805, + 0.020039719, + 0.0023310774, + 0.004842604, + 0.013195768, + -0.025407268, + 0.018661743, + -0.022808796, + 0.0075066923, + 0.0073229624, + 0.0025361334, + 0.012559274, + 0.012847993, + 0.019409787, + 0.007972579, + 0.0030331893, + -0.0024311447, + -0.007106423, + 0.030997915, + -0.034278814, + 0.020328438, + 0.016207632, + 0.012008083, + -0.0034908745, + 0.0060335696, + -0.016430732, + -0.010347949, + 0.020275945, + -0.018254912, + 0.02077464, + 0.013792891, + 0.009914871, + 0.0066208504, + 0.022716932, + -0.022231359, + -0.0051542893, + 0.007244221, + 0.008655006, + 0.007841344, + 0.028688164, + 0.0038124025, + 0.0062665134, + 0.025761604, + -0.017139407, + -0.00019572601, + -0.02282192, + -0.004406245, + 0.02398992, + 0.023635583, + -0.010846646, + -0.6702479, + -0.016666956, + -0.011286286, + -0.0068701985, + 0.017454373, + 0.0113847125, + 0.022401966, + 0.017651226, + -0.02165392, + -0.013117027, + -0.011732488, + 0.0056004915, + 0.0064469627, + -0.012933296, + -0.013963498, + -0.0033547173, + 0.01459343, + -0.0063583786, + -0.029370591, + 0.0076641757, + -0.013451678, + -0.0011868646, + -0.0036253913, + -0.004334065, + 0.024436122, + 0.0033924475, + 0.0030594366, + -0.0072639063, + -0.010525118, + 0.0064141536, + -0.03566991, + 0.016614463, + 0.018044934, + -0.0039042674, + 0.047271166, + 0.0016666957, + -0.023740571, + -0.0036549193, + 0.024344256, + 0.009389928, + 0.0054397276, + -0.0039436384, + 0.009055276, + -0.010420129, + -0.001067932, + 0.008864984, + 0.014068487, + -0.006830828, + 0.015564576, + 0.018569877, + 0.017861204, + 0.0023720886, + -0.013215453, + -0.005255997, + 0.007165479, + -0.0031102905, + 0.008733748, + 0.0010654713, + 0.019659135, + -0.009245568, + -0.004215953, + -0.005095233, + -0.036116116, + -0.008727186, + -0.01232305, + 0.014094734, + -0.010288893, + 0.0016552126, + -0.00054914015, + -0.009265253, + 0.008438467, + 0.035092477, + -0.018189294, + -0.001996426, + 0.01748062, + 0.019002955, + 0.015498958, + -0.006817704, + 0.006214019, + -0.0067783333, + 0.018373024, + 0.004275009, + -0.008536894, + 0.014107858, + 0.011620938, + -0.027218321, + -0.033412658, + 0.008641883, + 0.0015239767, + -0.0006393648, + 0.01057105, + 0.024724841, + -0.01700817, + 0.001861909, + -0.014002869, + 0.01085977, + 0.013884757, + 0.020827135, + 0.013832262, + -0.008943725, + -0.011030376, + -0.024987312, + -0.011305971, + 0.0008915838, + 0.0012877521, + 0.008038198, + 0.009245568, + 0.01155532, + 0.025039807, + -0.043622807, + 0.004199548, + -0.02128646, + -0.048583522, + -0.008674691, + 0.025722234, + -0.029239355, + 0.022428213, + -0.0057875025, + 0.016338868, + -0.014882149, + -0.0033727621, + -0.007447636, + 0.012054016, + -0.008333478, + 0.018228665, + 0.009501478, + 0.008661568, + -0.017205024, + -0.009258691, + 0.001945572, + -0.0033104252, + 0.018386148, + 0.014724666, + 0.001847145, + 0.023740571, + 0.0032497286, + 0.005416761, + -0.0147377895, + 0.0049508736, + -0.019331045, + -0.023228751, + -0.0043110987, + -0.012716757, + -0.008976534, + -0.0056234575, + -0.020538416, + -0.012382106, + -0.023058144, + -0.041890495, + 0.011647184, + -0.021496437, + -0.010282331, + -0.0408931, + 0.009711456, + -0.00541348, + -0.015328351, + 0.004275009, + -0.02194264, + 0.0049279076, + -0.0041503347, + 0.021181472, + 0.021968886, + -0.03162785, + -0.003251369, + 0.022362594, + -0.0034875935, + 0.023136886, + 0.016430732, + -0.0013189206, + -0.010708848, + -0.00113355, + -0.009567096, + 0.0021342235, + 0.0020948527, + 0.032231532, + 0.016443856, + -0.006243547, + -0.0026690098, + -0.0036221105, + -0.0005782581, + 0.00039739866, + -0.02161455, + -0.01389788, + 0.00892404, + 0.009718017, + 0.005160851, + 0.01631262, + 0.019751001, + -0.022769425, + 0.00041236775, + -0.016811317, + 0.0034318184, + -0.014829655, + 0.005761255, + -0.0048918175, + -0.00039657843, + -0.0082481755, + 0.005964671, + 0.0003272695, + 0.022113247, + 0.025315402, + -0.010892578, + 0.0017733249, + -0.005679233, + -0.006670064, + -0.031549107, + 0.012624892, + -0.02161455, + 0.021010865, + 0.0066339737, + 0.014291587, + -0.024344256, + 0.0053445813, + 0.015236486, + 0.021955764, + 0.04047315, + -0.01013141, + 0.0011868646, + 0.014396576, + 0.01013141, + -0.010807275, + -0.022953156, + -0.0036811666, + 0.0059056147, + -0.012099949, + 0.015669564, + 0.006177929, + 0.027769513, + -0.004809795, + -0.023556842, + -0.022283852, + 0.008385973, + 0.010052669, + 0.008169434, + -0.01645698, + -0.0076379282, + 0.011719365, + -0.028556928, + 0.019698506, + -0.0035597733, + 0.02556475, + -0.010741657, + 0.033780117, + 0.0023671673, + -0.005446289, + -0.00314474, + 0.032940205, + 0.005767817, + -0.024987312, + 0.02673275, + -0.014252217, + -0.00438984, + 0.00043758965, + -0.004685121, + 0.010183904, + -0.016443856, + 0.03262524, + -0.008490962, + 0.005797345, + 0.037061013, + -0.0019586955, + -0.0102495225, + 0.014803408, + 0.002326156, + 0.00047942108, + -0.018438641, + 0.029738052, + -0.010623544, + -0.007677299, + -0.010374197, + -0.010052669, + -0.01232305, + 0.031286635, + -0.021877022, + 0.011588128, + -0.028530682, + -0.004078155, + -0.013248262, + -0.0003565925, + -0.00917995, + -0.014422824, + -0.023097515, + 0.014449071, + 0.009173389, + -0.0076116812, + -0.017454373, + -0.0017536395, + 0.0048196376, + -0.008359726, + 0.051234487, + 0.0031004478, + 0.03236277, + -0.0054955026, + -0.00259683, + -0.0030692792, + -0.0050394577, + 0.029318096, + -0.017834956, + -0.010223275, + -0.017401878, + 0.018281158, + -0.010649792, + -0.008162872, + 0.0011745611, + 0.05141822, + 0.007139232, + 0.00053642667, + -0.0068964455, + -0.005922019, + -0.009501478, + 0.008930602, + 0.0059909183, + -0.005101795, + -0.0030988073, + -0.011102555, + -0.018858597, + -0.006975187, + 0.009875501, + 0.015643317, + -0.009534287, + -0.005236312, + -0.030840432, + -0.017992439, + -0.016155137, + 0.10467374, + -0.0028100885, + -0.0047376156, + 0.004537481, + 0.0029052345, + 0.014278464, + 0.00071441534, + 0.005823592, + 0.015971407, + -0.0052428734, + 0.009823006, + -0.033727624, + 0.016391361, + 0.0060795024, + -0.0020981338, + -0.008353164, + -0.0046916828, + -0.033045195, + 0.019790372, + -0.012841431, + 0.009527725, + -0.0100854775, + 0.011673432, + 0.02658839, + -0.0066799065, + -0.007769164, + 0.03968573, + 0.012441162, + 0.021811403, + -0.008733748, + -0.005987637, + 0.022467583, + 0.0029462455, + 0.01872736, + 0.00003957582, + -0.020656528, + 0.030919174, + 0.006889884, + 0.0063911877, + -0.011811229, + 0.025105424, + -0.007112985, + -0.0027608748, + -0.017113158, + 0.011483139, + -0.0010613702, + -0.02333374, + 0.013208891, + -0.029711803, + -0.0043110987, + 0.048216064, + -0.008792805, + -0.0054659746, + -0.00009171133, + -0.0024295042, + 0.015315227, + -0.0067061535, + -0.021168347, + 0.005003368, + -0.0070736143, + -0.016653834, + -0.023976795, + -0.0074082655, + -0.011679994, + -0.018792978, + -0.03698227, + -0.012375544, + -0.0032661331, + -0.042546675, + -0.030892927, + 0.01085977, + -0.029921781, + -0.004048627, + -0.0011286286, + 0.024173649, + -0.025932211, + 0.020249696, + 0.004275009, + 0.009737702, + 0.022743179, + -0.0014255497, + -0.029134367, + 0.0066372547, + 0.011732488, + 0.0022277292, + 0.022913786, + 0.026772121, + -0.031470366, + -0.0019111226, + 0.02040718, + 0.0015830329, + -0.007237659, + 0.021732662, + 0.012664263, + -0.009055276, + -0.023202505, + 0.006758648, + 0.025761604, + -0.010991005, + -0.016522598, + 0.022152618, + -0.02552538, + 0.007906962, + -0.008353164, + 0.015577699, + 0.014094734, + 0.009639275, + 0.023254998, + -0.025000436, + -0.0029380433, + 0.028005738, + -0.03013176, + 0.0069555016, + 0.009632714, + -0.01846489, + 0.026798368, + 0.008910917, + 0.009015905, + -0.01085977, + -0.00917995, + 0.025814097, + -0.025735356, + 0.01375352, + 0.03734973, + 0.001441134, + -0.00081612315, + -0.006128716, + 0.0008440108, + -0.019803494, + -0.0051444466, + -0.010485747, + 0.0017290327, + -0.012697072, + -0.018911092, + -0.028136974, + -0.00943586, + -0.011942466, + 0.011470016, + -0.007920085, + -0.022835044, + -0.0024114593, + -0.004911503, + 0.0072639063, + -0.0034547846, + -0.031732835, + -0.012979229, + 0.017401878, + 0.0037369418, + -0.027165828, + 0.012218061, + -0.017113158, + 0.007828221, + -0.022677561, + 0.0014435947, + -0.0143572055, + -0.018766731, + -0.028399445, + -0.013504173, + 0.017821833, + 0.010420129, + 0.027218321, + 0.0017257519, + 0.013235139, + 0.0030348299, + -0.017821833, + 0.0018635496, + -0.009711456, + 0.0151708685, + 0.001002314, + 0.016876934, + 0.027060838, + 0.013543543, + -0.015538328, + 0.0014362127, + -0.016063273, + 0.018609248, + 0.011804667, + -0.018123675, + -0.017100036, + -0.019029204, + -0.016719451, + 0.0028871894, + -0.012080263, + 0.0030331893, + -0.019396663, + -0.015288981, + 0.022664437, + -0.01210651, + -0.0021899987, + 0.006624131, + 0.009737702, + -0.01938354, + 0.010964758, + 0.020197202, + -0.016194507, + -0.013622285, + -0.015498958, + -0.0038681778, + 0.008425344, + 0.023753695, + 0.018661743, + 0.0017798867, + -0.016404485, + -0.0034219758, + -0.0004466121, + 0.015328351, + -0.00079233665, + -0.016653834, + 0.017953068, + -0.02779576, + -0.015420216, + -0.0022687404, + 0.0033990094, + -0.018058058, + -0.010452938, + 0.012585521, + -0.022362594, + 0.017467497, + -0.02750704, + -0.009514602, + -0.011076309, + -0.010964758, + 0.019737877, + -0.0053773904, + 0.018596124, + 0.013418869, + -0.013005476, + -0.013287633, + 0.017310012, + 0.0036910092, + -0.022585696, + 0.021824528, + 0.0021850774, + -0.010918826, + -0.022191988, + -0.0039305147, + -0.0026903355, + 0.009980489, + -0.0065617943, + 0.035984877, + 0.023740571, + 0.0031709871, + -0.03178533, + -0.02194264, + 0.0073360857, + 0.013235139, + -0.0086812535, + 0.008576265, + -0.0071851644, + -0.0023130325, + -0.01729689, + 0.007040805, + -0.02640466, + 0.019803494, + 0.009927995, + -0.025669739, + -0.009941118, + -0.012099949, + 0.0030988073, + -0.00097442645, + 0.0050525814, + 0.019357292, + 0.018819226, + 0.012401791, + -0.003946919, + -0.00030655882, + -0.032494005, + 0.01784808, + -0.019987226, + 0.020932123, + -0.014186599, + -0.013701026, + -0.002252336, + 0.0045834132, + 0.02644403, + 0.028583175, + 0.004527638, + -0.01960664, + -0.014580307, + 0.0027789199, + 0.024396751, + 0.0030610769, + -0.003269414, + -0.00837285, + -0.021640796, + -0.014514688, + -0.014790284, + 0.0089502875, + 0.012821746, + -0.007493569, + -0.0086812535, + -0.007966018, + -0.0052166265, + 0.020604033, + -0.0020472798, + -0.0138716325, + 0.03616861, + 0.027034592, + -0.004970559, + -0.0028691445, + -0.002472156, + 0.013300757, + -0.034226317, + -0.001879954, + -0.007854467, + -0.007966018, + 0.013648531, + -0.012598645, + -0.00035741273, + -0.011699679, + 0.015774554, + 0.012972667, + 0.016247002, + 0.01225087, + 0.023727447, + -0.010426691, + 0.0062960414, + -0.014659048, + 0.0017241114, + 0.024527987, + -0.0075132544, + 0.006059817, + 0.009225883, + -0.008175995, + 0.03010551, + 0.013182645, + 0.00976395, + 0.012152443, + -0.020131584, + -0.011371589, + -0.012231184, + 0.014711542, + -0.011896533, + -0.008149749, + -0.013701026, + -0.014449071, + -0.0053445813, + 0.015945159, + 0.015302104, + -0.014829655, + -0.021050235, + 0.032756478, + 0.03921328, + 0.012624892, + -0.0059023337, + -0.020354686, + -0.00859595, + 0.002677212, + -0.05448914, + -0.013556667, + -0.0030249872, + 0.030840432, + 0.009376803, + -0.018294282, + -0.031732835, + 0.0062173, + -0.024659222, + -0.006082783, + -0.007493569, + 0.023097515, + 0.01524961, + -0.008116939, + -0.012664263, + -0.0021785158, + 0.0041044024, + 0.022690684, + -0.00010550135, + 0.0061943335, + 0.030158006, + -0.031207893, + 0.02458048, + 0.0014304711, + -0.009494917, + 0.010229837, + 0.0137666445, + -0.00025611502, + 0.00021407854, + 0.0013952014, + -0.017493743, + -0.013609161, + -0.016732575, + 0.0004293874, + -0.011515949, + 0.021522684, + 0.033622634, + -0.037244745, + 0.0027198638, + 0.021667045, + -0.026129065, + 0.0036713239, + 0.008497523, + 0.0007603479, + 0.0069883107, + 0.00015574008, + -0.028530682, + -0.0068242657, + -0.005446289, + -0.041129325, + 0.015682688, + 0.012598645, + -0.012565835, + 0.0076969843, + -0.0027756388, + 0.0055906484, + -0.010557927, + -0.0067192772, + -0.037979666, + -0.007880715, + 0.020997742, + -0.026877109, + -0.008280984, + -0.010741657, + 0.012565835, + -0.034357555, + 0.0047310535, + 0.0003309605, + -0.012821746, + -0.014514688, + -0.0020128305, + 0.016470103, + -0.007106423, + -0.0027297065, + 0.0062533896, + -0.021312708, + -0.001503471, + -0.006528985, + 0.01758561, + -0.010518556, + 0.024436122, + 0.013464802, + -0.007040805, + -0.042494178, + -0.004524357, + 0.013622285, + 0.0016265047, + 0.0060106036, + 0.23475474, + 0.018110553, + 0.0013000554, + 0.031207893, + -0.0067783333, + 0.030525466, + 0.025249785, + -0.005735008, + -0.00994768, + -0.010098601, + -0.018058058, + -0.007749479, + -0.0077626025, + -0.0012992353, + -0.0091668265, + -0.015669564, + -0.020958371, + -0.039160788, + -0.01027577, + -0.022428213, + 0.0016256846, + 0.005928581, + -0.0018291001, + -0.020302191, + 0.033333912, + 0.004567009, + -0.016509473, + 0.013884757, + 0.03228403, + 0.0059154574, + -0.003167706, + 0.009475231, + 0.014606554, + 0.008609074, + -0.012185251, + -0.012185251, + -0.022428213, + -0.0034711892, + 0.015538328, + 0.01872736, + 0.0007808535, + -0.008904355, + 0.005794064, + -0.0053905137, + -0.0031168521, + 0.040210675, + 0.0006287019, + -0.004143773, + 0.018412394, + 0.019449158, + -0.023635583, + -0.009639275, + 0.00980332, + 0.039475754, + 0.013687903, + 0.0080841305, + 0.026024075, + 0.013195768, + 0.0033891667, + 0.0019833022, + -0.017782463, + 0.0065913224, + -0.014435947, + 0.006204176, + -0.003992852, + 0.0025295718, + -0.029134367, + 0.03514497, + 0.005767817, + 0.0020948527, + 0.0146852955, + -0.016811317, + -0.011975274, + -0.010026421, + -0.02051217, + -0.032494005, + 0.027822006, + 0.037953418, + 0.0037763126, + 0.0183599, + -0.022178864, + 0.015288981, + 0.018766731, + -0.00076198834, + 0.011417522, + -0.03404259, + 0.004970559, + 0.008451591, + 0.0037172565, + 0.00175528, + 0.007565749, + 0.0043832785, + -0.014015992, + -0.0038124025, + 0.010544803, + 0.0057186037, + 0.0035466498, + 0.012847993, + -0.01408161, + 0.008405658, + -0.010702286, + -0.005397076, + 0.02519729, + -0.0023655267, + -0.0050985143, + 0.0011097634, + 0.008891231, + 0.015498958, + -0.027008345, + -0.037323486, + -0.01013141, + -0.010439814, + -0.008766557, + -0.0012631454, + 0.029081872, + 0.003628672, + 0.032572746, + -0.0126839485, + 0.012172128, + -0.01608952, + 0.00057374686, + -0.01923918, + -0.018858597, + 0.012933296, + 0.0071917265, + -0.011837477, + -0.018569877, + 0.0038353687, + 0.0082481755, + -0.031732835, + 0.0022392122, + 0.010354511, + -0.00057989854, + -0.0061221537, + -0.006496176, + 0.027926996, + 0.0037402227, + -0.021076484, + -0.010761342, + -0.0017175496, + 0.026929604, + 0.006410873, + 0.011305971, + 0.017572485, + -0.006666783, + -0.0040748743, + 0.022979403, + 0.0016404486, + 0.0028428973, + -0.012368982, + -0.013366375, + -0.017165653, + -0.0035433688, + -0.018884843, + 0.01803181, + -0.019002955, + -0.023451852, + -0.023963673, + -0.014908397, + 0.03616861, + -0.014580307, + 0.0073820185, + 0.033963848, + -0.013431992, + -0.030525466, + -0.0007845445, + -0.16934678, + 0.0274283, + 0.039108295, + -0.00028092682, + 0.010052669, + 0.01989536, + -0.005587368, + -0.012204937, + -0.0038386495, + 0.017113158, + 0.039187036, + 0.0019980664, + -0.025171041, + -0.016522598, + 0.0012483813, + -0.026982097, + -0.008313793, + -0.0037369418, + 0.010931949, + -0.002874066, + 0.016443856, + -0.013806015, + 0.022178864, + -0.027585782, + -0.006597884, + 0.017165653, + 0.0010728533, + 0.02220511, + -0.0019997067, + -0.018609248, + -0.02761203, + -0.010630107, + 0.016076395, + 0.0048918175, + 0.022021381, + 0.021312708, + 0.0015379206, + -0.012565835, + -0.0076707373, + 0.008359726, + 0.009029029, + 0.019331045, + 0.015328351, + 0.008490962, + -0.0035204026, + 0.024698593, + 0.03517122, + 0.0027854815, + 0.0061024684, + -0.014606554, + 0.016037025, + -0.021496437, + -0.003533526, + 0.014475318, + 0.0012811903, + 0.011634061, + -0.0018192574, + -0.0011614376, + 0.0073492094, + -0.016627586, + -0.021995135, + 0.0008579546, + -0.005426604, + -0.0054692556, + -0.022795673, + -0.022323223, + -0.0050985143, + 0.009593343, + -0.026220929, + 0.018163046, + 0.0044849864, + -0.03632609, + 0.013327004, + -0.024947941, + 0.026247177, + 0.018819226, + -0.015000261, + 0.014934643, + -0.009914871, + -0.001301696, + -0.020105338, + 0.027533289, + -0.020840257, + -0.022520078, + 0.010662915, + 0.009396489, + -0.008497523, + 0.0026050322, + -0.0071326704, + -0.016693205, + -0.014317835, + -0.02542039, + 0.0056693903, + -0.03262524, + 0.0063419743, + 0.007867591, + -0.010872893, + -0.002897032, + -0.011424083, + 0.008477838, + 0.027848255, + 0.0021457067, + -0.030420478, + 0.02845194, + 0.029606815, + 0.010833522, + -0.009448984, + 0.014619677, + 0.012408352, + -0.012460847, + -0.028294457, + -0.01129941, + 0.021023989, + 0.0042782896, + -0.009134018, + 0.0009826287, + 0.012939858, + -0.006981749, + 0.004176582, + -0.0014723026, + 0.05496159, + -0.0007816737, + -0.0076969843, + 0.039738227, + -0.00015850834, + -0.013543543, + -0.07690423, + -0.027218321, + 0.02106336, + 0.016194507, + -0.013674779, + 0.04433148, + -0.0055808057, + 0.01762498, + 0.0036188294, + 0.019436033, + 0.0068439515, + -0.018084304, + 0.01371415, + -0.013976621, + 0.0427829, + 0.019081697, + 0.008792805, + -0.028294457, + -0.008182557, + 0.016601339, + -0.017126283, + 0.0041240877, + -0.011634061, + -0.016483227, + 0.000017788614, + -0.0018012126, + -0.029475579, + 0.01755936, + 0.011889971, + 0.011876848, + -0.010807275, + -0.020604033, + -0.01960664, + -0.00281665, + -0.014147229, + 0.009849253, + -0.034173824, + 0.010879455, + 0.020131584, + -0.04015818, + -0.007565749, + 0.00208501, + 0.0046687163, + -0.021850774, + -0.010492309, + -0.004078155, + 0.015735183, + -0.0130186, + 0.023793066, + -0.009527725, + -0.0022687404, + -0.0022917066, + -0.008504085, + 0.015525205, + -0.016443856, + -0.016430732, + -0.01024296, + 0.011430645, + -0.020787764, + -0.0067652096, + -0.00917995, + -0.0043078177, + -0.025945334, + 0.010800713, + 0.016194507, + 0.014882149, + -0.031339128, + -0.026181558, + 0.012605207, + -0.0169688, + -0.016942553, + 0.009081523, + -0.02695585, + -0.00071277487, + -0.023071269, + -0.010518556, + -0.013556667, + -0.0156039465, + 0.024737963, + -0.029239355, + -0.027926996, + -0.028845647, + 0.008746872, + 0.013136712, + 0.023924302, + 0.025879717, + 0.0012024487, + -0.015813924, + -0.0068045803, + -0.024265515, + 0.015315227, + 0.031207893, + -0.0020308753, + -0.025066053, + -0.008707501, + 0.024186773, + 0.0031939533, + -0.006378064, + 0.007447636, + 0.0158008, + -0.012710195, + -0.010072354, + -0.08887294, + 0.013648531, + -0.0027854815, + -0.019094821, + 0.030289242, + -0.014882149, + 0.0027379086, + -0.021352079, + -0.001368134, + 0.012027768, + -0.047271166, + -0.007985704, + 0.0021243808, + 0.0117062405, + -0.020302191, + -0.02490857, + 0.031207893, + 0.012172128, + 0.009665523, + 0.010439814, + 0.014816531, + 0.0035630541, + 0.014514688, + -0.008307232, + -0.020879628, + -0.00073902204, + -0.010945072, + 0.017375631, + 0.0015805722, + -0.0052133454, + 0.009560534, + -0.039187036, + 0.005613615, + 0.0446202, + -0.00075952767, + -0.021575179, + 0.013412307, + 0.024698593, + 0.03446254, + 0.008641883, + -0.009672085, + -0.008602512, + 0.008202243, + -0.020695899, + -0.009744264, + 0.0073229624, + 0.009927995, + -0.002040718, + 0.016470103, + 0.031654093, + 0.0014271903, + 0.03923953, + 0.00039145202, + -0.02304502, + -0.0092193205, + -0.023254998, + 0.017716844, + 0.0036713239, + -0.007723232, + 0.011017253, + 0.023963673, + 0.0125199035, + 0.011640623, + 0.024173649, + 0.023766818, + -0.011056623, + -0.02545976, + 0.0020472798, + 0.021863898, + -0.015341475, + -0.00015502238, + 0.0011679993, + 0.023071269, + 0.0009777073, + 0.028268209, + -0.0183599, + 0.015905788, + -0.0027149424, + -0.029974276, + 0.02212637, + 0.0020718866, + 0.000023261047, + -0.01758561, + 0.020761516, + 0.01254615, + -0.0006791457, + -0.023018774, + 0.00318247, + -0.005954828, + 0.0167457, + -0.004212672, + -0.010649792, + 0.012847993, + -0.0031217735, + 0.010557927, + 0.011279725, + 0.010945072, + -0.005108357, + 0.017782463, + 0.01758561, + 0.008792805, + -0.023018774, + -0.0044423346, + -0.016338868, + -0.016010778, + 0.030315489, + -0.0005606233, + -0.015367722, + -0.012093387, + 0.011050061, + 0.023386234, + 0.026654009, + 0.009613029, + 0.02538102, + -0.026378412, + 0.01700817, + -0.0138191385, + -0.029055625, + -0.03244151, + 0.015695812, + 0.013464802, + 0.023359988, + 0.0060040415, + -0.0077035464, + 0.012716757, + 0.015236486, + -0.0066208504, + -0.008622197, + 0.008038198, + -0.0068964455, + 0.023622459, + 0.007578872, + -0.020564662, + 0.006027008, + -0.013622285, + 0.013661656, + -0.008182557, + -0.0034908745, + -0.017073788, + 0.024186773, + -0.0037336608, + 0.00961959, + 0.0058465586, + 0.012198376, + 0.031837825, + 0.012992352, + 0.022401966, + -0.027664524, + -0.019659135, + 0.009724579, + 0.01729689, + 0.006975187, + -0.012480533, + -0.016706329, + 0.0034022902, + 0.002165392, + 0.017533114, + -0.014278464, + 0.012040893, + 0.039370764, + 0.005219907, + 0.029606815, + -0.01733626, + -0.022730054, + -0.005105076, + 0.017310012, + 0.010991005, + -0.0013927408, + -0.026798368, + 0.0107875895, + 0.00032644926, + -0.016286373, + -0.023241876, + 0.012237746, + -0.014068487, + -0.02431801, + 0.0028806275, + 0.026535895, + 0.018648619, + -0.007723232, + 0.024790458, + -0.020052843, + -0.0042651664, + 0.013477925, + -0.014029116, + -0.007355771, + 0.0037795934, + -0.013340128 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 24, + "total_tokens": 24 + } +} +276 34131 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 81 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["Which of these are cities in Japan"]}HTTP/2.0 200 OK +Content-Length: 33176 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:27:37 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 63 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6fbb69b6c9-ft5fh +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999992 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_6fab12ac1bd04d0cbcd2ec9fbbf90e00 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.01976611, + 0.003909019, + 0.00026493086, + 0.013577655, + -0.01501591, + 0.02332876, + -0.03802799, + -0.0021227456, + -0.00035028602, + -0.048372872, + -0.011829318, + 0.01184911, + 0.011684173, + -0.009757702, + -0.011994255, + -0.010377868, + 0.024252411, + -0.0069867526, + 0.011479651, + -0.02113839, + -0.01522703, + 0.01448811, + 0.0046908227, + -0.03370003, + 0.0010646716, + 0.029029, + 0.008860443, + -0.02335515, + -0.00997542, + 0.0027725995, + 0.011459858, + 0.0018753394, + -0.0049679177, + -0.0051130624, + -0.0041498276, + -0.0030942275, + -0.008490982, + -0.00704613, + -0.019700136, + 0.0027247677, + 0.04235595, + -0.0035428575, + -0.009361853, + -0.0066304877, + -0.00332514, + 0.004621549, + -0.025373986, + 0.022734985, + -0.01638819, + 0.018697316, + 0.019198725, + 0.015161055, + -0.034623682, + -0.000048347305, + -0.025849005, + 0.0034537914, + -0.020808516, + 0.01659931, + -0.023051666, + 0.00027874438, + 0.013696411, + 0.005456133, + -0.018987605, + 0.012317533, + 0.0068745953, + -0.0089726, + -0.0012155893, + 0.008359033, + -0.014606865, + -0.0076596974, + 0.03055962, + 0.011961267, + -0.007323225, + -0.01274637, + 0.014303381, + -0.03417505, + -0.012416495, + -0.013709606, + 0.012581433, + 0.028685931, + 0.008847248, + -0.019964036, + 0.0048326687, + -0.025123281, + 0.02113839, + 0.004601756, + -0.0093156705, + 0.029767921, + -0.00026080743, + 0.0018225594, + 0.01419782, + 0.029847091, + -0.000028090919, + 0.017298644, + -0.027445601, + -0.01884246, + 0.0014283587, + 0.02016196, + -0.008807663, + -0.012073426, + 0.0079104025, + 0.013267573, + 0.002462517, + -0.01050322, + -0.008279863, + 0.02280096, + 0.005898165, + -0.021784946, + 0.005848684, + -0.008570152, + -0.0017714287, + 0.026469171, + 0.0040607615, + -0.07478926, + -0.03190551, + -0.02707614, + 0.02937207, + -0.0074749677, + -0.01498952, + -0.015847195, + 0.0002001929, + 0.04048226, + 0.012614421, + -0.011354297, + 0.04449354, + 0.0095004, + -0.012845333, + -0.02340793, + -0.014474915, + -0.01396031, + 0.03005821, + -0.0021079013, + 0.0064094714, + 0.0050998675, + -0.0072638476, + 0.01462006, + -0.0018374037, + -0.0062907166, + -0.014633255, + -0.01828827, + 0.006795425, + -0.0054891203, + 0.00635999, + 0.01509508, + 0.0269178, + 0.010232722, + 0.03422783, + 0.00786422, + 0.007738868, + -0.020914076, + -0.00094179314, + -0.015583295, + 0.0009648844, + 0.0063072103, + 0.0038100563, + 0.00910455, + 0.016216656, + 0.01388114, + 0.0028765101, + -0.012944295, + -0.010015005, + 0.0124098975, + 0.02435797, + -0.010588988, + -0.013122428, + 0.020095985, + 0.01831466, + 0.024846185, + 0.0025235438, + 0.000048218448, + -0.03116659, + 0.0075013577, + -0.04488939, + 0.012053633, + 0.014276991, + -0.005977335, + 0.01411865, + 0.01467284, + -0.03179995, + 0.008194095, + 0.004925034, + -0.00480298, + 0.019607771, + 0.001966055, + 0.013999895, + 0.0018291569, + 0.0166257, + 0.0006869647, + 0.010325087, + -0.01931748, + 0.03557372, + 0.02773589, + 0.02997904, + 0.011440065, + -0.6232262, + -0.039321102, + -0.0020996544, + 0.0044533126, + 0.03211663, + 0.00934206, + 0.0321958, + 0.0057761115, + 0.0035824426, + 0.02995265, + -0.010965046, + 0.01562288, + -0.027419211, + -0.004525885, + -0.010364673, + -0.006267625, + 0.008583347, + -0.01348529, + 0.003813355, + 0.02053142, + -0.0069867526, + 0.0002610136, + -0.011255335, + -0.014316576, + 0.012396703, + -0.01129492, + -0.023658635, + -0.009012185, + -0.012053633, + 0.04631445, + -0.03222219, + 0.04312126, + 0.020544615, + -0.00504049, + 0.031008251, + 0.0021128494, + -0.031034641, + 0.02240511, + 0.0139867, + 0.024846185, + -0.02675946, + 0.00467103, + 0.013524875, + -0.0013821763, + 0.0008584997, + 0.01364363, + 0.04053504, + -0.023394736, + 0.005307689, + -0.0017301944, + 0.02372461, + -0.0314041, + -0.03731546, + -0.009467413, + 0.013577655, + 0.010694548, + 0.019013995, + -0.012647408, + -0.0070659225, + -0.021362705, + -0.022787765, + 0.0038661351, + -0.0179452, + -0.010094175, + -0.013999895, + 0.013313755, + -0.008174303, + -0.008596542, + 0.00725725, + -0.03546816, + 0.0045324825, + 0.0076465025, + -0.011195958, + 0.009724715, + 0.020848101, + 0.03955861, + 0.019805696, + -0.007323225, + -0.01359085, + -0.013366535, + 0.012027243, + -0.00069191284, + -0.02055781, + -0.03346252, + -0.00032451455, + -0.03528343, + -0.015002715, + 0.011228945, + 0.01712711, + -0.01572844, + 0.0032624637, + -0.0027725995, + -0.014817986, + 0.0055089127, + -0.010008408, + 0.015385371, + -0.002027082, + 0.002172227, + 0.004938229, + -0.019462625, + -0.022471085, + -0.009876458, + 0.008352435, + -0.0015083535, + -0.014211015, + -0.029873481, + -0.01783964, + 0.0081677055, + 0.02562469, + -0.017166695, + 0.010932058, + 0.002040277, + -0.017826445, + -0.00665028, + 0.02615249, + -0.02251067, + 0.02127034, + -0.0051526474, + 0.01517425, + 0.0087218955, + 0.0057200324, + 0.017536156, + 0.021758555, + 0.0011067307, + 0.02720809, + 0.0155041255, + -0.006442459, + -0.005423145, + -0.006478745, + 0.010015005, + -0.011479651, + 0.014554085, + 0.01789242, + -0.018961215, + 0.004502794, + 0.022154406, + -0.0005183161, + -0.006082895, + 0.02789423, + -0.01717989, + -0.02997904, + -0.01981889, + 0.01799798, + -0.017087525, + 0.00038079947, + -0.024291996, + -0.0008609738, + -0.00134589, + -0.03288194, + 0.006224741, + 0.011156373, + -0.017391011, + -0.02047864, + 0.01274637, + -0.009249696, + -0.0057728128, + -0.0023272682, + -0.00054594316, + 0.007296835, + 0.00947401, + 0.03623347, + 0.0008782922, + -0.019581381, + 0.0032162813, + 0.013551265, + -0.020650174, + 0.04280458, + 0.012178985, + -0.0020617188, + -0.022009261, + -0.020571005, + -0.012832138, + 0.0011809525, + 0.008741688, + -0.00841841, + -0.0055880826, + 0.008979198, + -0.010707743, + 0.00030101094, + 0.006867998, + 0.0138151655, + -0.01712711, + -0.02483299, + -0.0051625436, + 0.034623682, + -0.01356446, + 0.01704794, + -0.00024369516, + 0.007217665, + 0.0145145, + -0.02578303, + 0.014211015, + 0.0043378565, + 0.0043411553, + 0.02836925, + 0.0020831607, + 0.01419782, + 0.016111095, + -0.024661455, + 0.0060169203, + 0.015768025, + -0.0032756587, + 0.001594121, + -0.024608675, + 0.03736824, + -0.01462006, + -0.0101535525, + -0.023130836, + 0.024107266, + 0.01026571, + 0.022048846, + -0.01754935, + -0.00477659, + 0.017536156, + -0.0068152174, + 0.027419211, + 0.00022575821, + 0.014844376, + -0.0153062, + -0.004130035, + 0.019739721, + -0.019911256, + 0.009810483, + -0.012277948, + -0.019607771, + 0.0021920195, + -0.010285502, + 0.030955471, + -0.0008094308, + -0.008128121, + -0.02784145, + -0.017166695, + -0.0061323764, + 0.0031173187, + -0.0060433103, + -0.008655921, + 0.022629425, + -0.011341102, + 0.02726087, + 0.0069867526, + 0.015240225, + 0.010443843, + 0.018473001, + -0.00828646, + 0.01158521, + 0.006769035, + 0.04525885, + 0.017615326, + 0.007006545, + 0.02121756, + -0.03042767, + -0.017496571, + -0.00248066, + 0.016282631, + 0.005291195, + -0.02551913, + 0.02496494, + 0.0060268166, + 0.01361724, + 0.03356808, + 0.0044038314, + -0.006867998, + -0.0024790107, + -0.00921011, + 0.0009269488, + 0.0059278538, + 0.0129311, + 0.02026752, + -0.021837726, + -0.01765491, + -0.025585106, + -0.0042191013, + -0.015556905, + 0.0017202982, + 0.00556829, + -0.0023322164, + -0.0058519826, + -0.0043510515, + 0.01604512, + 0.03005821, + 0.0064721475, + -0.059588622, + 0.01359085, + 0.02728726, + -0.019634161, + -0.020465445, + -0.010892473, + -0.0066700727, + -0.017470181, + 0.0065843053, + 0.020861296, + 0.018776486, + 0.0073562125, + -0.009724715, + -0.01702155, + 0.0066073965, + 0.03000543, + -0.02134951, + -0.019383455, + -0.017061135, + -0.0003364725, + -0.027445601, + -0.0031222668, + 0.0030315514, + 0.03137771, + -0.024872575, + -0.00035234774, + -0.010621975, + 0.012686993, + -0.006867998, + -0.009388243, + -0.012614421, + -0.006953765, + 0.011802928, + 0.021798141, + -0.02565108, + -0.019964036, + 0.008253473, + 0.021494655, + -0.0036715087, + -0.014791595, + -0.01607151, + -0.022576645, + -0.0025433362, + 0.11579932, + -0.00944762, + 0.007824635, + -0.019330675, + 0.01704794, + 0.006953765, + -0.00266539, + 0.0059707374, + -0.010325087, + 0.01118936, + -0.01683682, + -0.010509818, + 0.012522055, + 0.005518809, + 0.019172335, + -0.013472095, + -0.04201288, + -0.04095728, + 0.0087218955, + -0.013359938, + 0.001095185, + -0.015108275, + 0.028553981, + 0.007857623, + -0.02013557, + 0.022497475, + 0.02567747, + 0.01652014, + 0.015213835, + -0.012343923, + -0.0012188881, + 0.0055484977, + -0.01947582, + 0.01797159, + -0.016374996, + 0.011070605, + 0.011090398, + 0.03676127, + 0.0011826019, + -0.0011380687, + -0.005888269, + 0.007171483, + -0.0002983307, + -0.01401309, + 0.008675713, + -0.03198468, + 0.0035560525, + 0.0101667475, + -0.0071648853, + -0.0145145, + 0.028659541, + -0.014316576, + -0.032565262, + -0.03528343, + -0.019409845, + 0.012211973, + -0.003786965, + -0.0033944137, + 0.009269488, + -0.0155041255, + -0.00009179803, + -0.0072638476, + 0.0057068374, + -0.0032690612, + -0.02174536, + -0.03884608, + 0.011987657, + -0.03108742, + -0.05140772, + -0.0044698063, + 0.0005814047, + -0.016981965, + -0.02897622, + 0.020095985, + 0.03148327, + -0.012000852, + 0.02430519, + -0.024846185, + 0.008906625, + 0.01797159, + -0.0168896, + -0.03396393, + -0.024291996, + -0.01417143, + -0.01937026, + 0.02464826, + 0.013577655, + -0.02274818, + -0.01301027, + -0.010015005, + 0.0060795965, + -0.0027890932, + 0.008273265, + 0.01997723, + -0.0030233045, + -0.009559778, + 0.01079351, + 0.019660551, + -0.00749476, + -0.02916095, + 0.03855579, + -0.0018308063, + -0.00847119, + -0.008405215, + 0.0070791175, + 0.010668158, + 0.014554085, + -0.002942485, + -0.00002896715, + 0.002726417, + 0.02491216, + -0.02945124, + 0.02272179, + 0.007903805, + -0.01351168, + 0.03676127, + 0.014329771, + 0.020439055, + -0.0035560525, + -0.0134589, + 0.010285502, + -0.0067756325, + 0.023473905, + 0.03211663, + -0.02997904, + 0.008900028, + -0.009348658, + 0.00041997212, + 0.0007108806, + -0.01411865, + -0.016031925, + 0.037104342, + -0.0069603627, + -0.029794311, + -0.01889524, + -0.009638947, + -0.01016015, + 0.018670926, + -0.017325036, + -0.0129311, + -0.020966856, + -0.0070263376, + 0.020940466, + -0.008345838, + -0.05219942, + -0.02335515, + 0.01142687, + 0.014580475, + 0.011255335, + 0.010041395, + 0.015385371, + 0.0050206976, + -0.012614421, + -0.0030084602, + -0.04436159, + -0.02810535, + -0.015438151, + -0.016850015, + -0.001156212, + 0.0197925, + 0.04953403, + 0.024041291, + 0.02905539, + 0.0017301944, + -0.010542805, + -0.00078798895, + -0.0046380428, + 0.0321958, + -0.008405215, + -0.002916095, + 0.018327855, + 0.02171897, + -0.024199631, + -0.006138974, + -0.012080023, + 0.04892706, + 0.002335515, + -0.009790691, + -0.011209153, + -0.05204108, + -0.0013368184, + -0.00847119, + 0.0042388937, + -0.011433467, + 0.011420272, + -0.0033234907, + 0.0031849432, + -0.0126935905, + 0.005106465, + -0.009177122, + 0.008728493, + 0.0012708434, + 0.010780315, + 0.009863263, + 0.0027462095, + -0.008352435, + -0.017417401, + -0.01517425, + -0.0004362597, + 0.023051666, + 0.01649375, + 0.0009162278, + -0.006000426, + 0.01229774, + -0.0029457838, + 0.012865125, + -0.00760032, + -0.01681043, + -0.016506946, + -0.0023190214, + -0.024252411, + 0.0047502, + 0.0025565312, + -0.03288194, + -0.016374996, + -0.009487205, + -0.010938656, + 0.028738711, + -0.02549274, + -0.020821711, + 0.01287832, + 0.00020472867, + 0.02288013, + 0.0121130105, + 0.012383508, + 0.0064754463, + 0.005782709, + -0.010430648, + -0.026086515, + -0.024978135, + 0.0008403566, + 0.015715245, + 0.02615249, + -0.01799798, + -0.031008251, + -0.005657356, + 0.0107209375, + -0.003496675, + -0.0033218414, + 0.03607513, + 0.03435978, + -0.0145145, + -0.0056672525, + 0.012950893, + -0.01612429, + 0.032433312, + -0.010298697, + -0.012634213, + 0.00533078, + 0.0022893324, + -0.0017747275, + 0.0031371112, + -0.015424956, + -0.0041498276, + 0.000092983515, + -0.016256241, + 0.01781325, + -0.022682205, + 0.0014473266, + 0.012522055, + 0.0019165737, + 0.013867945, + 0.0040442673, + 0.0068482053, + 0.01385475, + 0.0115720155, + -0.000658513, + -0.010984838, + 0.0010069434, + 0.03182634, + -0.009150732, + -0.016823625, + -0.00353626, + 0.0004201783, + 0.011908487, + -0.0035329612, + 0.009935835, + 0.01182272, + -0.02881788, + 0.0074617728, + 0.04441437, + -0.0058915676, + -0.007949987, + -0.014686035, + -0.022655815, + -0.020544615, + 0.0075277477, + 0.0015075288, + -0.0025532325, + -0.02161341, + -0.0155173205, + 0.017588936, + -0.002805587, + 0.015372176, + -0.013894335, + -0.01295749, + 0.011888695, + 0.0093024755, + -0.013221391, + 0.008556957, + -0.00007540736, + 0.02277457, + -0.022207186, + -0.01596595, + -0.013359938, + -0.013947115, + 0.012330728, + -0.0076069175, + -0.013452303, + -0.02934568, + -0.006719554, + 0.03048045, + 0.03132493, + 0.03169439, + 0.018354245, + -0.025453156, + -0.011888695, + -0.015715245, + -0.02997904, + 0.022391915, + 0.0002653432, + 0.018143125, + 0.02470104, + -0.01005459, + 0.02372461, + 0.009935835, + -0.00009071563, + -0.011816123, + 0.009638947, + -0.02884427, + -0.016823625, + -0.0032377231, + -0.023843365, + -0.016902795, + -0.004473105, + -0.00046965954, + -0.006086194, + -0.006557915, + 0.012106413, + 0.0069207777, + 0.008708701, + 0.041590642, + -0.0095861675, + 0.013656825, + -0.010727535, + -0.01440894, + 0.009559778, + -0.0049943076, + -0.023658635, + -0.013762386, + -0.015794415, + 0.027577551, + 0.005746423, + -0.008570152, + -0.02335515, + -0.0017499869, + -0.02100644, + -0.03222219, + -0.00361543, + 0.016638895, + 0.012416495, + -0.001147965, + 0.004288375, + 0.010648365, + 0.008253473, + 0.0168896, + -0.01514786, + 0.009533388, + 0.0074023954, + -0.037236292, + 0.02245789, + 0.01778686, + -0.0050239963, + -0.011156373, + 0.0048590587, + 0.008847248, + 0.017219475, + 0.020689761, + -0.022959301, + -0.02282735, + -0.0034867788, + -0.011882097, + -0.02953041, + 0.02330237, + 0.006482044, + -0.03348891, + 0.01762852, + 0.01778686, + -0.017747276, + 0.0016939081, + 0.01058239, + -0.0018786382, + -0.005000905, + 0.0010770418, + 0.00042471406, + -0.015213835, + 0.0107473275, + -0.02778867, + 0.018380634, + -0.0027445601, + -0.011308115, + 0.01905358, + -0.025176061, + -0.021705775, + -0.017509766, + -0.00675584, + -0.009850068, + -0.014079065, + -0.002444374, + -0.011380687, + -0.012812345, + -0.001224661, + -0.01021293, + -0.03734185, + 0.0047996813, + -0.0006828413, + -0.014606865, + -0.023473905, + 0.022009261, + 0.011750148, + -0.013775581, + -0.012574836, + 0.02129673, + -0.03319862, + 0.0031024744, + -0.0232232, + 0.013293963, + -0.04095728, + 0.021811336, + -0.0077058803, + -0.021468265, + -0.028501201, + 0.00498771, + 0.01118936, + -0.03019016, + -0.016084705, + 0.22104265, + -0.01018654, + -0.0043609478, + 0.03446534, + -0.0044665076, + 0.03420144, + 0.028659541, + -0.009361853, + -0.015952755, + 0.010391063, + -0.03288194, + -0.009546583, + 0.0064358613, + 0.011149775, + -0.003346582, + -0.04438798, + -0.026139295, + -0.02997904, + 0.0036781062, + 0.020729346, + -0.0038760314, + 0.0017565844, + -0.008088535, + -0.0043906365, + -0.004331259, + 0.03731546, + -0.014831181, + 0.010602183, + 0.023579465, + 0.009236501, + 0.013735996, + 0.017852835, + 0.0051493486, + 0.022497475, + 0.0020518226, + -0.014356161, + -0.0068482053, + 0.0036451188, + 0.01778686, + 0.016612506, + -0.007639905, + -0.0013153766, + -0.01140048, + 0.019251505, + -0.014276991, + 0.00757393, + -0.0073430175, + 0.011756745, + -0.0077916477, + 0.00994903, + -0.03016377, + -0.014606865, + 0.0398489, + 0.022734985, + 0.01913275, + -0.023025276, + 0.02802618, + 0.0003393589, + -0.015319395, + -0.015688855, + 0.0027033256, + 0.03040128, + -0.01459367, + 0.03277638, + -0.011096995, + 0.0061191814, + -0.03119298, + -0.0035296625, + 0.01572844, + -0.008708701, + -0.00947401, + -0.0028402237, + 0.0023371645, + -0.0190008, + -0.021996066, + -0.00841841, + 0.043701842, + 0.02235233, + 0.023091251, + 0.014263796, + -0.0061587663, + -0.015029105, + 0.023064861, + 0.024978135, + 0.01599234, + -0.02319681, + 0.006310509, + 0.0042289975, + -0.0035197663, + -0.011756745, + -0.017773665, + -0.0271817, + 0.0009904497, + -0.026429586, + -0.0056639537, + -0.0061818575, + 0.0017038044, + 0.0036220276, + 0.0068152174, + -0.019489015, + 0.0041894126, + 0.013524875, + 0.00902538, + -0.0017169995, + -0.012106413, + 0.006376484, + -0.0048194737, + -0.012917905, + -0.008662518, + -0.015609685, + 0.002441075, + -0.03119298, + 0.010173345, + -0.0049976064, + 0.0010250866, + -0.00031358743, + -0.00709891, + -0.02720809, + 0.01396031, + -0.014831181, + 0.014422135, + -0.013129026, + -0.023526685, + 0.0066568777, + -0.009817081, + -0.02124395, + -0.0037209901, + -0.03042767, + 0.009902848, + -0.028606761, + 0.03063879, + -0.0154909305, + 0.01617707, + -0.012502262, + 0.009355255, + 0.022787765, + 0.005835489, + -0.008266668, + 0.017377816, + -0.007917, + 0.005558394, + 0.008425008, + 0.02359266, + 0.0066733714, + -0.007798245, + -0.00796978, + 0.00477659, + 0.022814155, + -0.026495561, + 0.0019578082, + -0.011670978, + -0.018829266, + 0.00833924, + -0.0037308864, + 0.05404672, + 0.002734664, + 0.0038166537, + -0.01462006, + 0.021969676, + 0.03591679, + -0.04042948, + -0.0063171065, + 0.03372642, + -0.018512586, + -0.03639181, + 0.0058156964, + -0.16657369, + 0.02388295, + 0.03887247, + -0.03069157, + 0.018802876, + 0.020742541, + 0.0072110677, + -0.030902691, + -0.001330221, + -0.0039881887, + 0.057266302, + 0.017404206, + -0.02668029, + -0.02264262, + -0.016137484, + -0.021705775, + -0.018195905, + 0.01393392, + 0.021824531, + 0.00335153, + 0.037104342, + -0.011123385, + -0.01227135, + 0.0043180636, + -0.02681224, + 0.03005821, + -0.0025268425, + -0.009744507, + 0.026587926, + -0.00997542, + -0.0015355682, + -0.02055781, + 0.01615068, + 0.0277095, + 0.015345785, + 0.0077322703, + -0.009012185, + -0.007903805, + -0.01818271, + -0.0024361268, + 0.00039420064, + -0.0028996014, + 0.004647939, + 0.01947582, + 0.01462006, + 0.005818995, + 0.007870818, + -0.020755736, + -0.0066964626, + -0.0069207777, + 0.03029572, + -0.012040438, + -0.0007537644, + 0.015741635, + -0.0008040703, + 0.0022596437, + 0.0138019705, + 0.03507231, + 0.006237936, + -0.010509818, + -0.029715141, + -0.0008189147, + 0.016559726, + -0.011941475, + -0.0056309663, + -0.0060169203, + -0.008088535, + 0.025954565, + -0.03119298, + 0.01403948, + -0.009434425, + -0.012198778, + 0.021824531, + -0.02884427, + -0.0005323358, + 0.01221857, + -0.0037539776, + 0.01638819, + 0.002792392, + -0.00027915672, + -0.030876301, + 0.0591136, + -0.021125196, + -0.0030266033, + -0.0074749677, + 0.02396212, + 0.0057266303, + 0.012845333, + -0.0398489, + 0.001264246, + 0.029794311, + -0.01947582, + -0.005861879, + 0.004915138, + 0.010015005, + 0.0108199, + -0.00955318, + 0.023869755, + -0.021257145, + -0.026535146, + 0.0059410487, + -0.016981965, + -0.0059806337, + 0.02050503, + 0.03285555, + 0.00878787, + 0.0047172126, + 0.030902691, + 0.00913094, + 0.010932058, + -0.0065513174, + 0.0013277469, + 0.011921682, + 0.012937698, + -0.01572844, + -0.00045935094, + 0.02142868, + 0.009196915, + 0.0543634, + 0.013551265, + 0.010984838, + -0.0054000537, + 0.013346743, + 0.0024377762, + -0.0016279331, + -0.002739612, + -0.087720364, + 0.03794882, + -0.0071780803, + 0.015055495, + -0.008873638, + 0.05370365, + 0.03449173, + 0.021837726, + 0.010371271, + 0.010509818, + -0.00625443, + -0.015688855, + -0.0030513438, + -0.003892525, + 0.004258686, + -0.02908178, + -0.0017433894, + 0.009823678, + 0.0056045763, + 0.03182634, + -0.00424879, + -0.01580761, + 0.004393935, + -0.03019016, + -0.012528652, + -0.0033449326, + -0.019660551, + 0.007323225, + 0.02364544, + 0.009256293, + 0.0026505457, + -0.018908435, + -0.009144135, + -0.011591808, + -0.00596414, + 0.03346252, + -0.02731365, + 0.00014906227, + 0.03581123, + -0.03596957, + -0.0015421656, + 0.0074155903, + 0.006613994, + -0.010391063, + -0.00971152, + -0.022761375, + -0.039426662, + -0.012752968, + -0.0039552012, + -0.019304285, + -0.02134951, + -0.013498485, + 0.0021392393, + -0.012970685, + 0.010272307, + -0.0057233316, + 0.0010283854, + 0.008246875, + -0.03876691, + 0.0028517693, + 0.013722801, + -0.0077454653, + -0.02910817, + 0.026086515, + 0.04214483, + 0.0046182503, + -0.016005535, + -0.019700136, + 0.014738815, + -0.0364182, + -0.02493855, + 0.023421125, + -0.03111381, + -0.009177122, + -0.02211482, + -0.02900261, + 0.0039881887, + 0.0072638476, + 0.015820805, + -0.015715245, + 0.0035956376, + -0.01902719, + -0.009751105, + -0.007686088, + 0.0012931101, + 0.017879225, + 0.01351168, + -0.01501591, + 0.014474915, + -0.03055962, + 0.030929081, + 0.007376005, + 0.029029, + -0.01287832, + -0.012654006, + 0.016638895, + 0.005241714, + 0.01058239, + 0.02016196, + 0.01918553, + -0.016533336, + -0.02459548, + -0.0865592, + 0.012673798, + -0.005660655, + -0.009520193, + 0.0069999476, + -0.0101799425, + 0.01422421, + -0.0045951586, + 0.023896145, + -0.00778505, + -0.028685931, + 0.02261623, + -0.00899899, + -0.019779306, + -0.02583581, + 0.000015501548, + 0.013722801, + 0.018855656, + 0.025228841, + -0.011149775, + -0.0092892805, + 0.0047567976, + 0.02132312, + 0.0022266563, + -0.04499495, + 0.0070263376, + -0.00899899, + 0.03106103, + -0.03005821, + 0.0013928972, + 0.006953765, + -0.045813043, + 0.0057068374, + -0.00079664815, + -0.0084448, + -0.014580475, + -0.014131845, + 0.018697316, + 0.02390934, + 0.037183512, + -0.023117641, + -0.009638947, + 0.01356446, + -0.01475201, + -0.011011228, + -0.009137537, + 0.01403948, + 0.0072242627, + 0.02343432, + 0.009348658, + 0.0031255656, + 0.021072416, + 0.008279863, + -0.0115588205, + 0.005142751, + -0.048452042, + 0.007844428, + -0.0013862997, + -0.00683501, + 0.0033680238, + 0.020676566, + 0.025532326, + 0.024291996, + 0.00567385, + 0.010259112, + -0.028791491, + -0.010173345, + 0.0132477805, + 0.019013995, + -0.017668106, + -0.029715141, + 0.0129311, + 0.002124395, + 0.022576645, + -0.00038244884, + -0.01641458, + 0.026799046, + -0.02277457, + -0.03385837, + 0.009454218, + 0.003922214, + -0.0029886675, + -0.05547178, + 0.017325036, + 0.021098806, + -0.03063879, + -0.021679385, + -0.01158521, + -0.016929185, + 0.0279734, + 0.00261261, + -0.007844428, + 0.017509766, + -0.0015363928, + 0.000819327, + 0.020755736, + -0.017984785, + -0.02734004, + 0.01776047, + 0.017298644, + 0.010377868, + -0.016955575, + -0.017113915, + -0.02119117, + -0.00849758, + 0.02039947, + -0.019660551, + -0.024687845, + 0.010727535, + 0.023341956, + -0.0047963825, + 0.02908178, + -0.00881426, + 0.01612429, + 0.008504177, + -0.004245491, + -0.012997075, + -0.017470181, + -0.0068877903, + 0.015979145, + 0.02258984, + 0.019713331, + 0.0018934825, + -0.0068745953, + 0.03834467, + 0.00960596, + 0.010813302, + -0.017298644, + 0.019660551, + -0.00083252206, + 0.0095861675, + -0.0023338657, + -0.021916896, + -0.0017054537, + -0.00839202, + -0.0095861675, + 0.009091355, + 0.0049547227, + -0.01419782, + 0.057319082, + 0.018433416, + 0.009282683, + -0.014250601, + -0.00833924, + 0.04127396, + 0.009005588, + 0.014079065, + -0.0055748876, + -0.029794311, + 0.012805748, + -0.005192233, + -0.012416495, + -0.03533621, + -0.020795321, + -0.008009365, + -0.021916896, + 0.0054957177, + 0.0084513975, + 0.0029787712, + 0.03195829, + -0.0072506526, + 0.03063879, + 0.01517425, + -0.02892344, + -0.0039123176, + 0.03868774, + -0.012997075, + 0.021969676, + -0.028633151, + 0.021098806, + 0.0149631305, + -0.017219475, + -0.024226021, + 0.00781144, + -0.01348529, + -0.011103593, + -0.017298644, + 0.00799617, + 0.02807896, + 0.0024691145, + -0.006313808, + -0.01673126, + -0.01562288, + -0.0024790107, + -0.0059311525, + -0.01367002, + -0.0055122115, + -0.010457038 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 7, + "total_tokens": 7 + } +} +276 34131 +POST https://api.openai.com/v1/embeddings HTTP/1.1 +Host: api.openai.com +User-Agent: langchaingo-httprr +Content-Length: 81 +Authorization: Bearer test-api-key +Content-Type: application/json + +{"model":"text-embedding-ada-002","input":["Which of these are cities in Japan"]}HTTP/2.0 200 OK +Content-Length: 33176 +Access-Control-Allow-Origin: * +Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray +Alt-Svc: h3=":443"; ma=86400 +Cf-Cache-Status: DYNAMIC +Content-Type: application/json +Date: Wed, 23 Sep 2026 09:27:39 GMT +Openai-Model: text-embedding-ada-002-v2 +Openai-Organization: lcgo-tst +Openai-Processing-Ms: 84 +Openai-Project: proj_lcgo-tst +Openai-Version: 2020-10-01 +Server: cloudflare +Strict-Transport-Security: max-age=31536000; includeSubDomains; preload +Via: envoy-router-6659cb4779-vrl5c +X-Content-Type-Options: nosniff +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 10000 +X-Ratelimit-Limit-Tokens: 10000000 +X-Ratelimit-Remaining-Requests: 9999 +X-Ratelimit-Remaining-Tokens: 9999992 +X-Ratelimit-Reset-Requests: 6ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_ba5941ab9ba94a649609062108c8a8f0 + +{ + "object": "list", + "data": [ + { + "object": "embedding", + "index": 0, + "embedding": [ + 0.01976611, + 0.003909019, + 0.00026493086, + 0.013577655, + -0.01501591, + 0.02332876, + -0.03802799, + -0.0021227456, + -0.00035028602, + -0.048372872, + -0.011829318, + 0.01184911, + 0.011684173, + -0.009757702, + -0.011994255, + -0.010377868, + 0.024252411, + -0.0069867526, + 0.011479651, + -0.02113839, + -0.01522703, + 0.01448811, + 0.0046908227, + -0.03370003, + 0.0010646716, + 0.029029, + 0.008860443, + -0.02335515, + -0.00997542, + 0.0027725995, + 0.011459858, + 0.0018753394, + -0.0049679177, + -0.0051130624, + -0.0041498276, + -0.0030942275, + -0.008490982, + -0.00704613, + -0.019700136, + 0.0027247677, + 0.04235595, + -0.0035428575, + -0.009361853, + -0.0066304877, + -0.00332514, + 0.004621549, + -0.025373986, + 0.022734985, + -0.01638819, + 0.018697316, + 0.019198725, + 0.015161055, + -0.034623682, + -0.000048347305, + -0.025849005, + 0.0034537914, + -0.020808516, + 0.01659931, + -0.023051666, + 0.00027874438, + 0.013696411, + 0.005456133, + -0.018987605, + 0.012317533, + 0.0068745953, + -0.0089726, + -0.0012155893, + 0.008359033, + -0.014606865, + -0.0076596974, + 0.03055962, + 0.011961267, + -0.007323225, + -0.01274637, + 0.014303381, + -0.03417505, + -0.012416495, + -0.013709606, + 0.012581433, + 0.028685931, + 0.008847248, + -0.019964036, + 0.0048326687, + -0.025123281, + 0.02113839, + 0.004601756, + -0.0093156705, + 0.029767921, + -0.00026080743, + 0.0018225594, + 0.01419782, + 0.029847091, + -0.000028090919, + 0.017298644, + -0.027445601, + -0.01884246, + 0.0014283587, + 0.02016196, + -0.008807663, + -0.012073426, + 0.0079104025, + 0.013267573, + 0.002462517, + -0.01050322, + -0.008279863, + 0.02280096, + 0.005898165, + -0.021784946, + 0.005848684, + -0.008570152, + -0.0017714287, + 0.026469171, + 0.0040607615, + -0.07478926, + -0.03190551, + -0.02707614, + 0.02937207, + -0.0074749677, + -0.01498952, + -0.015847195, + 0.0002001929, + 0.04048226, + 0.012614421, + -0.011354297, + 0.04449354, + 0.0095004, + -0.012845333, + -0.02340793, + -0.014474915, + -0.01396031, + 0.03005821, + -0.0021079013, + 0.0064094714, + 0.0050998675, + -0.0072638476, + 0.01462006, + -0.0018374037, + -0.0062907166, + -0.014633255, + -0.01828827, + 0.006795425, + -0.0054891203, + 0.00635999, + 0.01509508, + 0.0269178, + 0.010232722, + 0.03422783, + 0.00786422, + 0.007738868, + -0.020914076, + -0.00094179314, + -0.015583295, + 0.0009648844, + 0.0063072103, + 0.0038100563, + 0.00910455, + 0.016216656, + 0.01388114, + 0.0028765101, + -0.012944295, + -0.010015005, + 0.0124098975, + 0.02435797, + -0.010588988, + -0.013122428, + 0.020095985, + 0.01831466, + 0.024846185, + 0.0025235438, + 0.000048218448, + -0.03116659, + 0.0075013577, + -0.04488939, + 0.012053633, + 0.014276991, + -0.005977335, + 0.01411865, + 0.01467284, + -0.03179995, + 0.008194095, + 0.004925034, + -0.00480298, + 0.019607771, + 0.001966055, + 0.013999895, + 0.0018291569, + 0.0166257, + 0.0006869647, + 0.010325087, + -0.01931748, + 0.03557372, + 0.02773589, + 0.02997904, + 0.011440065, + -0.6232262, + -0.039321102, + -0.0020996544, + 0.0044533126, + 0.03211663, + 0.00934206, + 0.0321958, + 0.0057761115, + 0.0035824426, + 0.02995265, + -0.010965046, + 0.01562288, + -0.027419211, + -0.004525885, + -0.010364673, + -0.006267625, + 0.008583347, + -0.01348529, + 0.003813355, + 0.02053142, + -0.0069867526, + 0.0002610136, + -0.011255335, + -0.014316576, + 0.012396703, + -0.01129492, + -0.023658635, + -0.009012185, + -0.012053633, + 0.04631445, + -0.03222219, + 0.04312126, + 0.020544615, + -0.00504049, + 0.031008251, + 0.0021128494, + -0.031034641, + 0.02240511, + 0.0139867, + 0.024846185, + -0.02675946, + 0.00467103, + 0.013524875, + -0.0013821763, + 0.0008584997, + 0.01364363, + 0.04053504, + -0.023394736, + 0.005307689, + -0.0017301944, + 0.02372461, + -0.0314041, + -0.03731546, + -0.009467413, + 0.013577655, + 0.010694548, + 0.019013995, + -0.012647408, + -0.0070659225, + -0.021362705, + -0.022787765, + 0.0038661351, + -0.0179452, + -0.010094175, + -0.013999895, + 0.013313755, + -0.008174303, + -0.008596542, + 0.00725725, + -0.03546816, + 0.0045324825, + 0.0076465025, + -0.011195958, + 0.009724715, + 0.020848101, + 0.03955861, + 0.019805696, + -0.007323225, + -0.01359085, + -0.013366535, + 0.012027243, + -0.00069191284, + -0.02055781, + -0.03346252, + -0.00032451455, + -0.03528343, + -0.015002715, + 0.011228945, + 0.01712711, + -0.01572844, + 0.0032624637, + -0.0027725995, + -0.014817986, + 0.0055089127, + -0.010008408, + 0.015385371, + -0.002027082, + 0.002172227, + 0.004938229, + -0.019462625, + -0.022471085, + -0.009876458, + 0.008352435, + -0.0015083535, + -0.014211015, + -0.029873481, + -0.01783964, + 0.0081677055, + 0.02562469, + -0.017166695, + 0.010932058, + 0.002040277, + -0.017826445, + -0.00665028, + 0.02615249, + -0.02251067, + 0.02127034, + -0.0051526474, + 0.01517425, + 0.0087218955, + 0.0057200324, + 0.017536156, + 0.021758555, + 0.0011067307, + 0.02720809, + 0.0155041255, + -0.006442459, + -0.005423145, + -0.006478745, + 0.010015005, + -0.011479651, + 0.014554085, + 0.01789242, + -0.018961215, + 0.004502794, + 0.022154406, + -0.0005183161, + -0.006082895, + 0.02789423, + -0.01717989, + -0.02997904, + -0.01981889, + 0.01799798, + -0.017087525, + 0.00038079947, + -0.024291996, + -0.0008609738, + -0.00134589, + -0.03288194, + 0.006224741, + 0.011156373, + -0.017391011, + -0.02047864, + 0.01274637, + -0.009249696, + -0.0057728128, + -0.0023272682, + -0.00054594316, + 0.007296835, + 0.00947401, + 0.03623347, + 0.0008782922, + -0.019581381, + 0.0032162813, + 0.013551265, + -0.020650174, + 0.04280458, + 0.012178985, + -0.0020617188, + -0.022009261, + -0.020571005, + -0.012832138, + 0.0011809525, + 0.008741688, + -0.00841841, + -0.0055880826, + 0.008979198, + -0.010707743, + 0.00030101094, + 0.006867998, + 0.0138151655, + -0.01712711, + -0.02483299, + -0.0051625436, + 0.034623682, + -0.01356446, + 0.01704794, + -0.00024369516, + 0.007217665, + 0.0145145, + -0.02578303, + 0.014211015, + 0.0043378565, + 0.0043411553, + 0.02836925, + 0.0020831607, + 0.01419782, + 0.016111095, + -0.024661455, + 0.0060169203, + 0.015768025, + -0.0032756587, + 0.001594121, + -0.024608675, + 0.03736824, + -0.01462006, + -0.0101535525, + -0.023130836, + 0.024107266, + 0.01026571, + 0.022048846, + -0.01754935, + -0.00477659, + 0.017536156, + -0.0068152174, + 0.027419211, + 0.00022575821, + 0.014844376, + -0.0153062, + -0.004130035, + 0.019739721, + -0.019911256, + 0.009810483, + -0.012277948, + -0.019607771, + 0.0021920195, + -0.010285502, + 0.030955471, + -0.0008094308, + -0.008128121, + -0.02784145, + -0.017166695, + -0.0061323764, + 0.0031173187, + -0.0060433103, + -0.008655921, + 0.022629425, + -0.011341102, + 0.02726087, + 0.0069867526, + 0.015240225, + 0.010443843, + 0.018473001, + -0.00828646, + 0.01158521, + 0.006769035, + 0.04525885, + 0.017615326, + 0.007006545, + 0.02121756, + -0.03042767, + -0.017496571, + -0.00248066, + 0.016282631, + 0.005291195, + -0.02551913, + 0.02496494, + 0.0060268166, + 0.01361724, + 0.03356808, + 0.0044038314, + -0.006867998, + -0.0024790107, + -0.00921011, + 0.0009269488, + 0.0059278538, + 0.0129311, + 0.02026752, + -0.021837726, + -0.01765491, + -0.025585106, + -0.0042191013, + -0.015556905, + 0.0017202982, + 0.00556829, + -0.0023322164, + -0.0058519826, + -0.0043510515, + 0.01604512, + 0.03005821, + 0.0064721475, + -0.059588622, + 0.01359085, + 0.02728726, + -0.019634161, + -0.020465445, + -0.010892473, + -0.0066700727, + -0.017470181, + 0.0065843053, + 0.020861296, + 0.018776486, + 0.0073562125, + -0.009724715, + -0.01702155, + 0.0066073965, + 0.03000543, + -0.02134951, + -0.019383455, + -0.017061135, + -0.0003364725, + -0.027445601, + -0.0031222668, + 0.0030315514, + 0.03137771, + -0.024872575, + -0.00035234774, + -0.010621975, + 0.012686993, + -0.006867998, + -0.009388243, + -0.012614421, + -0.006953765, + 0.011802928, + 0.021798141, + -0.02565108, + -0.019964036, + 0.008253473, + 0.021494655, + -0.0036715087, + -0.014791595, + -0.01607151, + -0.022576645, + -0.0025433362, + 0.11579932, + -0.00944762, + 0.007824635, + -0.019330675, + 0.01704794, + 0.006953765, + -0.00266539, + 0.0059707374, + -0.010325087, + 0.01118936, + -0.01683682, + -0.010509818, + 0.012522055, + 0.005518809, + 0.019172335, + -0.013472095, + -0.04201288, + -0.04095728, + 0.0087218955, + -0.013359938, + 0.001095185, + -0.015108275, + 0.028553981, + 0.007857623, + -0.02013557, + 0.022497475, + 0.02567747, + 0.01652014, + 0.015213835, + -0.012343923, + -0.0012188881, + 0.0055484977, + -0.01947582, + 0.01797159, + -0.016374996, + 0.011070605, + 0.011090398, + 0.03676127, + 0.0011826019, + -0.0011380687, + -0.005888269, + 0.007171483, + -0.0002983307, + -0.01401309, + 0.008675713, + -0.03198468, + 0.0035560525, + 0.0101667475, + -0.0071648853, + -0.0145145, + 0.028659541, + -0.014316576, + -0.032565262, + -0.03528343, + -0.019409845, + 0.012211973, + -0.003786965, + -0.0033944137, + 0.009269488, + -0.0155041255, + -0.00009179803, + -0.0072638476, + 0.0057068374, + -0.0032690612, + -0.02174536, + -0.03884608, + 0.011987657, + -0.03108742, + -0.05140772, + -0.0044698063, + 0.0005814047, + -0.016981965, + -0.02897622, + 0.020095985, + 0.03148327, + -0.012000852, + 0.02430519, + -0.024846185, + 0.008906625, + 0.01797159, + -0.0168896, + -0.03396393, + -0.024291996, + -0.01417143, + -0.01937026, + 0.02464826, + 0.013577655, + -0.02274818, + -0.01301027, + -0.010015005, + 0.0060795965, + -0.0027890932, + 0.008273265, + 0.01997723, + -0.0030233045, + -0.009559778, + 0.01079351, + 0.019660551, + -0.00749476, + -0.02916095, + 0.03855579, + -0.0018308063, + -0.00847119, + -0.008405215, + 0.0070791175, + 0.010668158, + 0.014554085, + -0.002942485, + -0.00002896715, + 0.002726417, + 0.02491216, + -0.02945124, + 0.02272179, + 0.007903805, + -0.01351168, + 0.03676127, + 0.014329771, + 0.020439055, + -0.0035560525, + -0.0134589, + 0.010285502, + -0.0067756325, + 0.023473905, + 0.03211663, + -0.02997904, + 0.008900028, + -0.009348658, + 0.00041997212, + 0.0007108806, + -0.01411865, + -0.016031925, + 0.037104342, + -0.0069603627, + -0.029794311, + -0.01889524, + -0.009638947, + -0.01016015, + 0.018670926, + -0.017325036, + -0.0129311, + -0.020966856, + -0.0070263376, + 0.020940466, + -0.008345838, + -0.05219942, + -0.02335515, + 0.01142687, + 0.014580475, + 0.011255335, + 0.010041395, + 0.015385371, + 0.0050206976, + -0.012614421, + -0.0030084602, + -0.04436159, + -0.02810535, + -0.015438151, + -0.016850015, + -0.001156212, + 0.0197925, + 0.04953403, + 0.024041291, + 0.02905539, + 0.0017301944, + -0.010542805, + -0.00078798895, + -0.0046380428, + 0.0321958, + -0.008405215, + -0.002916095, + 0.018327855, + 0.02171897, + -0.024199631, + -0.006138974, + -0.012080023, + 0.04892706, + 0.002335515, + -0.009790691, + -0.011209153, + -0.05204108, + -0.0013368184, + -0.00847119, + 0.0042388937, + -0.011433467, + 0.011420272, + -0.0033234907, + 0.0031849432, + -0.0126935905, + 0.005106465, + -0.009177122, + 0.008728493, + 0.0012708434, + 0.010780315, + 0.009863263, + 0.0027462095, + -0.008352435, + -0.017417401, + -0.01517425, + -0.0004362597, + 0.023051666, + 0.01649375, + 0.0009162278, + -0.006000426, + 0.01229774, + -0.0029457838, + 0.012865125, + -0.00760032, + -0.01681043, + -0.016506946, + -0.0023190214, + -0.024252411, + 0.0047502, + 0.0025565312, + -0.03288194, + -0.016374996, + -0.009487205, + -0.010938656, + 0.028738711, + -0.02549274, + -0.020821711, + 0.01287832, + 0.00020472867, + 0.02288013, + 0.0121130105, + 0.012383508, + 0.0064754463, + 0.005782709, + -0.010430648, + -0.026086515, + -0.024978135, + 0.0008403566, + 0.015715245, + 0.02615249, + -0.01799798, + -0.031008251, + -0.005657356, + 0.0107209375, + -0.003496675, + -0.0033218414, + 0.03607513, + 0.03435978, + -0.0145145, + -0.0056672525, + 0.012950893, + -0.01612429, + 0.032433312, + -0.010298697, + -0.012634213, + 0.00533078, + 0.0022893324, + -0.0017747275, + 0.0031371112, + -0.015424956, + -0.0041498276, + 0.000092983515, + -0.016256241, + 0.01781325, + -0.022682205, + 0.0014473266, + 0.012522055, + 0.0019165737, + 0.013867945, + 0.0040442673, + 0.0068482053, + 0.01385475, + 0.0115720155, + -0.000658513, + -0.010984838, + 0.0010069434, + 0.03182634, + -0.009150732, + -0.016823625, + -0.00353626, + 0.0004201783, + 0.011908487, + -0.0035329612, + 0.009935835, + 0.01182272, + -0.02881788, + 0.0074617728, + 0.04441437, + -0.0058915676, + -0.007949987, + -0.014686035, + -0.022655815, + -0.020544615, + 0.0075277477, + 0.0015075288, + -0.0025532325, + -0.02161341, + -0.0155173205, + 0.017588936, + -0.002805587, + 0.015372176, + -0.013894335, + -0.01295749, + 0.011888695, + 0.0093024755, + -0.013221391, + 0.008556957, + -0.00007540736, + 0.02277457, + -0.022207186, + -0.01596595, + -0.013359938, + -0.013947115, + 0.012330728, + -0.0076069175, + -0.013452303, + -0.02934568, + -0.006719554, + 0.03048045, + 0.03132493, + 0.03169439, + 0.018354245, + -0.025453156, + -0.011888695, + -0.015715245, + -0.02997904, + 0.022391915, + 0.0002653432, + 0.018143125, + 0.02470104, + -0.01005459, + 0.02372461, + 0.009935835, + -0.00009071563, + -0.011816123, + 0.009638947, + -0.02884427, + -0.016823625, + -0.0032377231, + -0.023843365, + -0.016902795, + -0.004473105, + -0.00046965954, + -0.006086194, + -0.006557915, + 0.012106413, + 0.0069207777, + 0.008708701, + 0.041590642, + -0.0095861675, + 0.013656825, + -0.010727535, + -0.01440894, + 0.009559778, + -0.0049943076, + -0.023658635, + -0.013762386, + -0.015794415, + 0.027577551, + 0.005746423, + -0.008570152, + -0.02335515, + -0.0017499869, + -0.02100644, + -0.03222219, + -0.00361543, + 0.016638895, + 0.012416495, + -0.001147965, + 0.004288375, + 0.010648365, + 0.008253473, + 0.0168896, + -0.01514786, + 0.009533388, + 0.0074023954, + -0.037236292, + 0.02245789, + 0.01778686, + -0.0050239963, + -0.011156373, + 0.0048590587, + 0.008847248, + 0.017219475, + 0.020689761, + -0.022959301, + -0.02282735, + -0.0034867788, + -0.011882097, + -0.02953041, + 0.02330237, + 0.006482044, + -0.03348891, + 0.01762852, + 0.01778686, + -0.017747276, + 0.0016939081, + 0.01058239, + -0.0018786382, + -0.005000905, + 0.0010770418, + 0.00042471406, + -0.015213835, + 0.0107473275, + -0.02778867, + 0.018380634, + -0.0027445601, + -0.011308115, + 0.01905358, + -0.025176061, + -0.021705775, + -0.017509766, + -0.00675584, + -0.009850068, + -0.014079065, + -0.002444374, + -0.011380687, + -0.012812345, + -0.001224661, + -0.01021293, + -0.03734185, + 0.0047996813, + -0.0006828413, + -0.014606865, + -0.023473905, + 0.022009261, + 0.011750148, + -0.013775581, + -0.012574836, + 0.02129673, + -0.03319862, + 0.0031024744, + -0.0232232, + 0.013293963, + -0.04095728, + 0.021811336, + -0.0077058803, + -0.021468265, + -0.028501201, + 0.00498771, + 0.01118936, + -0.03019016, + -0.016084705, + 0.22104265, + -0.01018654, + -0.0043609478, + 0.03446534, + -0.0044665076, + 0.03420144, + 0.028659541, + -0.009361853, + -0.015952755, + 0.010391063, + -0.03288194, + -0.009546583, + 0.0064358613, + 0.011149775, + -0.003346582, + -0.04438798, + -0.026139295, + -0.02997904, + 0.0036781062, + 0.020729346, + -0.0038760314, + 0.0017565844, + -0.008088535, + -0.0043906365, + -0.004331259, + 0.03731546, + -0.014831181, + 0.010602183, + 0.023579465, + 0.009236501, + 0.013735996, + 0.017852835, + 0.0051493486, + 0.022497475, + 0.0020518226, + -0.014356161, + -0.0068482053, + 0.0036451188, + 0.01778686, + 0.016612506, + -0.007639905, + -0.0013153766, + -0.01140048, + 0.019251505, + -0.014276991, + 0.00757393, + -0.0073430175, + 0.011756745, + -0.0077916477, + 0.00994903, + -0.03016377, + -0.014606865, + 0.0398489, + 0.022734985, + 0.01913275, + -0.023025276, + 0.02802618, + 0.0003393589, + -0.015319395, + -0.015688855, + 0.0027033256, + 0.03040128, + -0.01459367, + 0.03277638, + -0.011096995, + 0.0061191814, + -0.03119298, + -0.0035296625, + 0.01572844, + -0.008708701, + -0.00947401, + -0.0028402237, + 0.0023371645, + -0.0190008, + -0.021996066, + -0.00841841, + 0.043701842, + 0.02235233, + 0.023091251, + 0.014263796, + -0.0061587663, + -0.015029105, + 0.023064861, + 0.024978135, + 0.01599234, + -0.02319681, + 0.006310509, + 0.0042289975, + -0.0035197663, + -0.011756745, + -0.017773665, + -0.0271817, + 0.0009904497, + -0.026429586, + -0.0056639537, + -0.0061818575, + 0.0017038044, + 0.0036220276, + 0.0068152174, + -0.019489015, + 0.0041894126, + 0.013524875, + 0.00902538, + -0.0017169995, + -0.012106413, + 0.006376484, + -0.0048194737, + -0.012917905, + -0.008662518, + -0.015609685, + 0.002441075, + -0.03119298, + 0.010173345, + -0.0049976064, + 0.0010250866, + -0.00031358743, + -0.00709891, + -0.02720809, + 0.01396031, + -0.014831181, + 0.014422135, + -0.013129026, + -0.023526685, + 0.0066568777, + -0.009817081, + -0.02124395, + -0.0037209901, + -0.03042767, + 0.009902848, + -0.028606761, + 0.03063879, + -0.0154909305, + 0.01617707, + -0.012502262, + 0.009355255, + 0.022787765, + 0.005835489, + -0.008266668, + 0.017377816, + -0.007917, + 0.005558394, + 0.008425008, + 0.02359266, + 0.0066733714, + -0.007798245, + -0.00796978, + 0.00477659, + 0.022814155, + -0.026495561, + 0.0019578082, + -0.011670978, + -0.018829266, + 0.00833924, + -0.0037308864, + 0.05404672, + 0.002734664, + 0.0038166537, + -0.01462006, + 0.021969676, + 0.03591679, + -0.04042948, + -0.0063171065, + 0.03372642, + -0.018512586, + -0.03639181, + 0.0058156964, + -0.16657369, + 0.02388295, + 0.03887247, + -0.03069157, + 0.018802876, + 0.020742541, + 0.0072110677, + -0.030902691, + -0.001330221, + -0.0039881887, + 0.057266302, + 0.017404206, + -0.02668029, + -0.02264262, + -0.016137484, + -0.021705775, + -0.018195905, + 0.01393392, + 0.021824531, + 0.00335153, + 0.037104342, + -0.011123385, + -0.01227135, + 0.0043180636, + -0.02681224, + 0.03005821, + -0.0025268425, + -0.009744507, + 0.026587926, + -0.00997542, + -0.0015355682, + -0.02055781, + 0.01615068, + 0.0277095, + 0.015345785, + 0.0077322703, + -0.009012185, + -0.007903805, + -0.01818271, + -0.0024361268, + 0.00039420064, + -0.0028996014, + 0.004647939, + 0.01947582, + 0.01462006, + 0.005818995, + 0.007870818, + -0.020755736, + -0.0066964626, + -0.0069207777, + 0.03029572, + -0.012040438, + -0.0007537644, + 0.015741635, + -0.0008040703, + 0.0022596437, + 0.0138019705, + 0.03507231, + 0.006237936, + -0.010509818, + -0.029715141, + -0.0008189147, + 0.016559726, + -0.011941475, + -0.0056309663, + -0.0060169203, + -0.008088535, + 0.025954565, + -0.03119298, + 0.01403948, + -0.009434425, + -0.012198778, + 0.021824531, + -0.02884427, + -0.0005323358, + 0.01221857, + -0.0037539776, + 0.01638819, + 0.002792392, + -0.00027915672, + -0.030876301, + 0.0591136, + -0.021125196, + -0.0030266033, + -0.0074749677, + 0.02396212, + 0.0057266303, + 0.012845333, + -0.0398489, + 0.001264246, + 0.029794311, + -0.01947582, + -0.005861879, + 0.004915138, + 0.010015005, + 0.0108199, + -0.00955318, + 0.023869755, + -0.021257145, + -0.026535146, + 0.0059410487, + -0.016981965, + -0.0059806337, + 0.02050503, + 0.03285555, + 0.00878787, + 0.0047172126, + 0.030902691, + 0.00913094, + 0.010932058, + -0.0065513174, + 0.0013277469, + 0.011921682, + 0.012937698, + -0.01572844, + -0.00045935094, + 0.02142868, + 0.009196915, + 0.0543634, + 0.013551265, + 0.010984838, + -0.0054000537, + 0.013346743, + 0.0024377762, + -0.0016279331, + -0.002739612, + -0.087720364, + 0.03794882, + -0.0071780803, + 0.015055495, + -0.008873638, + 0.05370365, + 0.03449173, + 0.021837726, + 0.010371271, + 0.010509818, + -0.00625443, + -0.015688855, + -0.0030513438, + -0.003892525, + 0.004258686, + -0.02908178, + -0.0017433894, + 0.009823678, + 0.0056045763, + 0.03182634, + -0.00424879, + -0.01580761, + 0.004393935, + -0.03019016, + -0.012528652, + -0.0033449326, + -0.019660551, + 0.007323225, + 0.02364544, + 0.009256293, + 0.0026505457, + -0.018908435, + -0.009144135, + -0.011591808, + -0.00596414, + 0.03346252, + -0.02731365, + 0.00014906227, + 0.03581123, + -0.03596957, + -0.0015421656, + 0.0074155903, + 0.006613994, + -0.010391063, + -0.00971152, + -0.022761375, + -0.039426662, + -0.012752968, + -0.0039552012, + -0.019304285, + -0.02134951, + -0.013498485, + 0.0021392393, + -0.012970685, + 0.010272307, + -0.0057233316, + 0.0010283854, + 0.008246875, + -0.03876691, + 0.0028517693, + 0.013722801, + -0.0077454653, + -0.02910817, + 0.026086515, + 0.04214483, + 0.0046182503, + -0.016005535, + -0.019700136, + 0.014738815, + -0.0364182, + -0.02493855, + 0.023421125, + -0.03111381, + -0.009177122, + -0.02211482, + -0.02900261, + 0.0039881887, + 0.0072638476, + 0.015820805, + -0.015715245, + 0.0035956376, + -0.01902719, + -0.009751105, + -0.007686088, + 0.0012931101, + 0.017879225, + 0.01351168, + -0.01501591, + 0.014474915, + -0.03055962, + 0.030929081, + 0.007376005, + 0.029029, + -0.01287832, + -0.012654006, + 0.016638895, + 0.005241714, + 0.01058239, + 0.02016196, + 0.01918553, + -0.016533336, + -0.02459548, + -0.0865592, + 0.012673798, + -0.005660655, + -0.009520193, + 0.0069999476, + -0.0101799425, + 0.01422421, + -0.0045951586, + 0.023896145, + -0.00778505, + -0.028685931, + 0.02261623, + -0.00899899, + -0.019779306, + -0.02583581, + 0.000015501548, + 0.013722801, + 0.018855656, + 0.025228841, + -0.011149775, + -0.0092892805, + 0.0047567976, + 0.02132312, + 0.0022266563, + -0.04499495, + 0.0070263376, + -0.00899899, + 0.03106103, + -0.03005821, + 0.0013928972, + 0.006953765, + -0.045813043, + 0.0057068374, + -0.00079664815, + -0.0084448, + -0.014580475, + -0.014131845, + 0.018697316, + 0.02390934, + 0.037183512, + -0.023117641, + -0.009638947, + 0.01356446, + -0.01475201, + -0.011011228, + -0.009137537, + 0.01403948, + 0.0072242627, + 0.02343432, + 0.009348658, + 0.0031255656, + 0.021072416, + 0.008279863, + -0.0115588205, + 0.005142751, + -0.048452042, + 0.007844428, + -0.0013862997, + -0.00683501, + 0.0033680238, + 0.020676566, + 0.025532326, + 0.024291996, + 0.00567385, + 0.010259112, + -0.028791491, + -0.010173345, + 0.0132477805, + 0.019013995, + -0.017668106, + -0.029715141, + 0.0129311, + 0.002124395, + 0.022576645, + -0.00038244884, + -0.01641458, + 0.026799046, + -0.02277457, + -0.03385837, + 0.009454218, + 0.003922214, + -0.0029886675, + -0.05547178, + 0.017325036, + 0.021098806, + -0.03063879, + -0.021679385, + -0.01158521, + -0.016929185, + 0.0279734, + 0.00261261, + -0.007844428, + 0.017509766, + -0.0015363928, + 0.000819327, + 0.020755736, + -0.017984785, + -0.02734004, + 0.01776047, + 0.017298644, + 0.010377868, + -0.016955575, + -0.017113915, + -0.02119117, + -0.00849758, + 0.02039947, + -0.019660551, + -0.024687845, + 0.010727535, + 0.023341956, + -0.0047963825, + 0.02908178, + -0.00881426, + 0.01612429, + 0.008504177, + -0.004245491, + -0.012997075, + -0.017470181, + -0.0068877903, + 0.015979145, + 0.02258984, + 0.019713331, + 0.0018934825, + -0.0068745953, + 0.03834467, + 0.00960596, + 0.010813302, + -0.017298644, + 0.019660551, + -0.00083252206, + 0.0095861675, + -0.0023338657, + -0.021916896, + -0.0017054537, + -0.00839202, + -0.0095861675, + 0.009091355, + 0.0049547227, + -0.01419782, + 0.057319082, + 0.018433416, + 0.009282683, + -0.014250601, + -0.00833924, + 0.04127396, + 0.009005588, + 0.014079065, + -0.0055748876, + -0.029794311, + 0.012805748, + -0.005192233, + -0.012416495, + -0.03533621, + -0.020795321, + -0.008009365, + -0.021916896, + 0.0054957177, + 0.0084513975, + 0.0029787712, + 0.03195829, + -0.0072506526, + 0.03063879, + 0.01517425, + -0.02892344, + -0.0039123176, + 0.03868774, + -0.012997075, + 0.021969676, + -0.028633151, + 0.021098806, + 0.0149631305, + -0.017219475, + -0.024226021, + 0.00781144, + -0.01348529, + -0.011103593, + -0.017298644, + 0.00799617, + 0.02807896, + 0.0024691145, + -0.006313808, + -0.01673126, + -0.01562288, + -0.0024790107, + -0.0059311525, + -0.01367002, + -0.0055122115, + -0.010457038 + ] + } + ], + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 7, + "total_tokens": 7 + } +} diff --git a/vectorstores/milvus/testdata/TestMilvusConnection.httprr b/vectorstores/milvus/testdata/TestMilvusConnection.httprr index 5c099f863..9cfc35965 100644 --- a/vectorstores/milvus/testdata/TestMilvusConnection.httprr +++ b/vectorstores/milvus/testdata/TestMilvusConnection.httprr @@ -1,5 +1,5 @@ httprr trace v1 -377 434498 +377 434482 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:59:06 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 50 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -20090,7 +20090,7 @@ X-Request-Id: req_b4c23ac1d42047b780225eef84f9d44b "total_tokens": 31 } } -247 34374 +247 34358 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -20109,7 +20109,7 @@ Date: Thu, 22 Jan 2026 20:59:11 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 33 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -21677,7 +21677,7 @@ X-Request-Id: req_dc24e46f8fcb4af5ad7847dfbd8bab44 "total_tokens": 2 } } -247 34376 +247 34360 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -21696,7 +21696,7 @@ Date: Thu, 22 Jan 2026 20:59:12 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 105 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/milvus/v2/testdata/TestAddDocuments.httprr b/vectorstores/milvus/v2/testdata/TestAddDocuments.httprr index 901fac64b..066d25e6a 100644 --- a/vectorstores/milvus/v2/testdata/TestAddDocuments.httprr +++ b/vectorstores/milvus/v2/testdata/TestAddDocuments.httprr @@ -1,5 +1,5 @@ httprr trace v1 -265 67858 +265 67842 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 21:08:40 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 209 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/milvus/v2/testdata/TestSimilaritySearch.httprr b/vectorstores/milvus/v2/testdata/TestSimilaritySearch.httprr index 77e560016..34aea4c55 100644 --- a/vectorstores/milvus/v2/testdata/TestSimilaritySearch.httprr +++ b/vectorstores/milvus/v2/testdata/TestSimilaritySearch.httprr @@ -1,5 +1,5 @@ httprr trace v1 -287 67741 +287 67725 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 21:08:55 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 63 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -3128,7 +3128,7 @@ X-Request-Id: req_7e252e3af3b3400ea84b016619a4b716 "total_tokens": 10 } } -245 34306 +245 34290 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -3147,7 +3147,7 @@ Date: Thu, 22 Jan 2026 21:08:56 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 117 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/mongovector/mongovector_test.go b/vectorstores/mongovector/mongovector_test.go index d352aef0a..72657a478 100644 --- a/vectorstores/mongovector/mongovector_test.go +++ b/vectorstores/mongovector/mongovector_test.go @@ -12,7 +12,6 @@ import ( "flag" "fmt" "math" - "net/http" "os" "strings" "sync" @@ -20,7 +19,6 @@ import ( "time" "github.com/vxcontrol/langchaingo/embeddings" - "github.com/vxcontrol/langchaingo/internal/httprr" "github.com/vxcontrol/langchaingo/internal/testutil/testctr" "github.com/vxcontrol/langchaingo/schema" "github.com/vxcontrol/langchaingo/vectorstores" @@ -28,7 +26,9 @@ import ( "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/testcontainers/testcontainers-go" "github.com/testcontainers/testcontainers-go/modules/mongodb" + "github.com/testcontainers/testcontainers-go/wait" "go.mongodb.org/mongo-driver/v2/bson" "go.mongodb.org/mongo-driver/v2/mongo" "go.mongodb.org/mongo-driver/v2/mongo/options" @@ -106,7 +106,7 @@ func cleanName(name string) string { // This uses sync.Once to ensure the MongoDB Atlas Local container is only // created once and shared across all tests for efficiency. // The container includes both MongoDB and Atlas Search capabilities. -func setupTestEnv(t *testing.T, _ ...*http.Client) *testEnv { +func setupTestEnv(t *testing.T) *testEnv { t.Helper() if testing.Short() { @@ -120,9 +120,15 @@ func setupTestEnv(t *testing.T, _ ...*http.Client) *testEnv { } ctx := t.Context() + // Atlas Local restarts mongod while it wires up search, so the first + // "Waiting for connections" the module waits for comes before the + // restarts, and a search index created then fails with + // InterruptedAtShutdown. The image's healthcheck passes only once + // mongod and mongot are both up for good. container, err := mongodb.Run(ctx, "mongodb/mongodb-atlas-local:7.0.5", mongodb.WithUsername("admin"), mongodb.WithPassword("password"), + testcontainers.WithAdditionalWaitStrategyAndDeadline(2*time.Minute, wait.ForHealthCheck()), ) if err != nil { setupErr = fmt.Errorf("failed to start MongoDB container: %w", err) @@ -371,15 +377,10 @@ func TestNew(t *testing.T) { // TestStore_AddDocuments verifies document insertion functionality. // Each subtest gets its own collection to enable parallel execution. func TestStore_AddDocuments(t *testing.T) { - httprr.SkipIfNoCredentialsAndRecordingMissing(t, "MONGODB_URI") - rr := httprr.OpenForTest(t, http.DefaultTransport) - - if !rr.Recording() { - t.Parallel() - } + t.Parallel() // Set up shared test environment for all subtests - env := setupTestEnv(t, rr.Client()) + env := setupTestEnv(t) ctx := t.Context() tests := []struct { @@ -843,7 +844,10 @@ func createVectorSearchIndex( doc = cursor.Current } else { if time.Now().After(deadline) { - return "", fmt.Errorf("index %s did not become queryable before deadline (last error: %w)", searchName, lastErr) + if lastErr != nil { + return "", fmt.Errorf("index %s did not become queryable before deadline: %w", searchName, lastErr) + } + return "", fmt.Errorf("index %s did not become queryable before deadline", searchName) } time.Sleep(2 * time.Second) } diff --git a/vectorstores/opensearch/opensearch_test.go b/vectorstores/opensearch/opensearch_test.go index 61f9c68ef..f37e8b78b 100644 --- a/vectorstores/opensearch/opensearch_test.go +++ b/vectorstores/opensearch/opensearch_test.go @@ -154,6 +154,7 @@ func createOpenAILLMAndEmbedder(t *testing.T, httpClient *http.Client, recording t.Helper() llmOpts := []openai.Option{ + openai.WithModel("gpt-4.1-nano"), openai.WithHTTPClient(httpClient), } // Only add fake token when NOT recording (i.e., during replay) @@ -216,6 +217,21 @@ func setOpensearchClient( return client } +// refreshIndex makes the documents just added visible to search, so what a +// test retrieves does not hang on the refresh interval firing in time under +// load. A partial hit set changes the prompt the chain sends and misses the +// recorded chat completion. +func refreshIndex(t *testing.T, client *opensearchgo.Client, indexName string) { + t.Helper() + res, err := client.Indices.Refresh( + client.Indices.Refresh.WithContext(t.Context()), + client.Indices.Refresh.WithIndex(indexName), + ) + require.NoError(t, err) + defer res.Body.Close() + require.False(t, res.IsError(), "refresh index %s: %s", indexName, res.String()) +} + func TestOpensearchStoreRest(t *testing.T) { httprr.SkipIfNoCredentialsAndRecordingMissing( t, "OPENSEARCH_ENDPOINT", "OPENSEARCH_USER", "OPENSEARCH_PASSWORD", "OPENAI_API_KEY", @@ -232,8 +248,9 @@ func TestOpensearchStoreRest(t *testing.T) { indexName := uuid.New().String() e := createOpenAIEmbedder(t, rr.Client()) + client := setOpensearchClient(t, opensearchEndpoint, opensearchUser, opensearchPassword) storer, err := opensearch.New( - setOpensearchClient(t, opensearchEndpoint, opensearchUser, opensearchPassword), + client, opensearch.WithEmbedder(e), ) require.NoError(t, err) @@ -246,7 +263,7 @@ func TestOpensearchStoreRest(t *testing.T) { {PageContent: "potato"}, }, vectorstores.WithNameSpace(indexName)) require.NoError(t, err) - time.Sleep(time.Second) + refreshIndex(t, client, indexName) docs, err := storer.SimilaritySearch(ctx, "japan", 1, vectorstores.WithNameSpace(indexName)) require.NoError(t, err) require.Len(t, docs, 1) @@ -270,8 +287,9 @@ func TestOpensearchStoreRestWithScoreThreshold(t *testing.T) { e := createOpenAIEmbedder(t, rr.Client()) + client := setOpensearchClient(t, opensearchEndpoint, opensearchUser, opensearchPassword) storer, err := opensearch.New( - setOpensearchClient(t, opensearchEndpoint, opensearchUser, opensearchPassword), + client, opensearch.WithEmbedder(e), ) require.NoError(t, err) @@ -292,7 +310,7 @@ func TestOpensearchStoreRestWithScoreThreshold(t *testing.T) { {PageContent: "New York"}, }, vectorstores.WithNameSpace(indexName)) require.NoError(t, err) - time.Sleep(time.Second) + refreshIndex(t, client, indexName) // test with a score threshold of 0.72, expected 6 documents docs, err := storer.SimilaritySearch(ctx, "Which of these are cities in Japan", 10, @@ -319,8 +337,9 @@ func TestOpensearchAsRetriever(t *testing.T) { llm, e := createOpenAILLMAndEmbedder(t, rr.Client(), rr.Recording()) + client := setOpensearchClient(t, opensearchEndpoint, opensearchUser, opensearchPassword) storer, err := opensearch.New( - setOpensearchClient(t, opensearchEndpoint, opensearchUser, opensearchPassword), + client, opensearch.WithEmbedder(e), ) require.NoError(t, err) @@ -339,7 +358,7 @@ func TestOpensearchAsRetriever(t *testing.T) { ) require.NoError(t, err) - time.Sleep(time.Second) + refreshIndex(t, client, indexName) result, err := chains.Run( ctx, @@ -370,8 +389,9 @@ func TestOpensearchAsRetrieverWithScoreThreshold(t *testing.T) { llm, e := createOpenAILLMAndEmbedder(t, rr.Client(), rr.Recording()) + client := setOpensearchClient(t, opensearchEndpoint, opensearchUser, opensearchPassword) storer, err := opensearch.New( - setOpensearchClient(t, opensearchEndpoint, opensearchUser, opensearchPassword), + client, opensearch.WithEmbedder(e), ) require.NoError(t, err) @@ -391,7 +411,7 @@ func TestOpensearchAsRetrieverWithScoreThreshold(t *testing.T) { vectorstores.WithNameSpace(indexName), ) require.NoError(t, err) - time.Sleep(time.Second) + refreshIndex(t, client, indexName) result, err := chains.Run( ctx, chains.NewRetrievalQAFromLLM( diff --git a/vectorstores/opensearch/testdata/TestOpensearchAsRetriever.httprr b/vectorstores/opensearch/testdata/TestOpensearchAsRetriever.httprr index 60cad9d66..af8479523 100644 --- a/vectorstores/opensearch/testdata/TestOpensearchAsRetriever.httprr +++ b/vectorstores/opensearch/testdata/TestOpensearchAsRetriever.httprr @@ -1,5 +1,5 @@ httprr trace v1 -340 101258 +340 101242 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:19:55 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 138 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -4670,7 +4670,7 @@ X-Request-Id: req_7279659454d7438888c45f6e1d90cc85 "total_tokens": 24 } } -265 34413 +265 34397 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -4689,7 +4689,7 @@ Date: Thu, 22 Jan 2026 20:19:58 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 77 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -6257,7 +6257,7 @@ X-Request-Id: req_d4a8e6d336d1488696c4913816dbd906 "total_tokens": 6 } } -610 1638 +610 1622 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -6274,7 +6274,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 20:19:59 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 178 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/opensearch/testdata/TestOpensearchAsRetrieverWithScoreThreshold.httprr b/vectorstores/opensearch/testdata/TestOpensearchAsRetrieverWithScoreThreshold.httprr index 283edaf1c..6738973f8 100644 --- a/vectorstores/opensearch/testdata/TestOpensearchAsRetrieverWithScoreThreshold.httprr +++ b/vectorstores/opensearch/testdata/TestOpensearchAsRetrieverWithScoreThreshold.httprr @@ -1,5 +1,5 @@ httprr trace v1 -441 168060 +441 168044 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:20:08 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 46 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -7754,7 +7754,7 @@ X-Request-Id: req_e45ff9ea9c104c0c9bae049ed1473c6f "total_tokens": 46 } } -299 34432 +299 34416 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -7773,7 +7773,7 @@ Date: Thu, 22 Jan 2026 20:20:11 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 139 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -9341,7 +9341,7 @@ X-Request-Id: req_e6975d15d8f14cd880ea449a6be2d50a "total_tokens": 12 } } -926 1683 +926 1667 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -9358,7 +9358,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 20:20:13 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 347 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/opensearch/testdata/TestOpensearchStoreRest.httprr b/vectorstores/opensearch/testdata/TestOpensearchStoreRest.httprr index 698e246e6..5ded75cf1 100644 --- a/vectorstores/opensearch/testdata/TestOpensearchStoreRest.httprr +++ b/vectorstores/opensearch/testdata/TestOpensearchStoreRest.httprr @@ -1,5 +1,5 @@ httprr trace v1 -256 67760 +256 67744 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:19:35 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 34 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -3128,7 +3128,7 @@ X-Request-Id: req_82a266831adb4321b89273d3869cbacb "total_tokens": 4 } } -247 34426 +247 34410 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -3147,7 +3147,7 @@ Date: Thu, 22 Jan 2026 20:19:37 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 154 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/opensearch/testdata/TestOpensearchStoreRestWithScoreThreshold.httprr b/vectorstores/opensearch/testdata/TestOpensearchStoreRestWithScoreThreshold.httprr index 3329b2b45..71351c998 100644 --- a/vectorstores/opensearch/testdata/TestOpensearchStoreRestWithScoreThreshold.httprr +++ b/vectorstores/opensearch/testdata/TestOpensearchStoreRestWithScoreThreshold.httprr @@ -1,5 +1,5 @@ httprr trace v1 -334 334547 +334 334531 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:19:45 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 50 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -15464,7 +15464,7 @@ X-Request-Id: req_f348a4de78734428a0709730df17626d "total_tokens": 24 } } -276 34082 +276 34066 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -15483,7 +15483,7 @@ Date: Thu, 22 Jan 2026 20:19:48 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 117 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/pgvector/filter_test.go b/vectorstores/pgvector/filter_test.go new file mode 100644 index 000000000..7ec1f604b --- /dev/null +++ b/vectorstores/pgvector/filter_test.go @@ -0,0 +1,125 @@ +package pgvector + +import ( + "errors" + "strings" + "testing" +) + +func TestFilterPredicatesKeepCallerValuesOutOfTheStatement(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + value string + }{ + {"value closes the literal and appends a tautology", "x' OR '1'='1"}, + {"value ends the statement", "x'; DROP TABLE langchaingo_pg_embedding; --"}, + {"quote inside an ordinary value", "O'Brien"}, + {"value carries a comment marker", "x --"}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + predicates, args, err := filterPredicates("data.", map[string]any{"kind": tc.value}, 0) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if want := "(data.cmetadata ->> 'kind') = $1"; predicates[0] != want { + t.Errorf("want %q, got %q", want, predicates[0]) + } + if len(args) != 1 || args[0] != tc.value { + t.Errorf("value must travel as an argument, got %v", args) + } + }) + } +} + +// The key reaches the statement as text, so the gate is the whole defence. +func TestFilterPredicatesRejectAKeyThatIsNotAnIdentifier(t *testing.T) { + t.Parallel() + + for _, key := range []string{ + "kind') = 'x' OR '1'='1", + "", + "1abc", + "a-b", + "a.b", + "a b", + "a;b", + `a"b`, + "a`b", + "ключ", + strings.Repeat("a", 64), + } { + t.Run(key, func(t *testing.T) { + t.Parallel() + + predicates, args, err := filterPredicates("data.", map[string]any{key: "y"}, 0) + if !errors.Is(err, ErrInvalidFilterKey) { + t.Fatalf("want ErrInvalidFilterKey, got %v", err) + } + if predicates != nil || args != nil { + t.Errorf("a rejected filter must render nothing, got %v and %v", predicates, args) + } + }) + } +} + +func TestFilterPredicatesNumberFromTheOffset(t *testing.T) { + t.Parallel() + + predicates, args, err := filterPredicates("data.", map[string]any{"a": "1", "b": "2"}, 4) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + want := "(data.cmetadata ->> 'a') = $5 AND (data.cmetadata ->> 'b') = $6" + if got := strings.Join(predicates, " AND "); got != want { + t.Errorf("want %q, got %q", want, got) + } + if len(args) != 2 || args[0] != "1" || args[1] != "2" { + t.Errorf("want the two values in key order, got %v", args) + } +} + +// Sorting is what keeps one filter rendering as one statement text, which is +// what lets the driver and the server reuse a plan for it. +func TestFilterPredicatesRenderTheSameTextWhateverTheInsertionOrder(t *testing.T) { + t.Parallel() + + first, _, err := filterPredicates("data.", map[string]any{"flow_id": "1", "doc_type": "memory"}, 4) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + second, _, err := filterPredicates("data.", map[string]any{"doc_type": "memory", "flow_id": "1"}, 4) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if strings.Join(first, " AND ") != strings.Join(second, " AND ") { + t.Errorf("statement text varies with map order: %q vs %q", first, second) + } +} + +func TestFilterPredicatesOnValuesThatAreNotStrings(t *testing.T) { + t.Parallel() + + _, args, err := filterPredicates("t.", map[string]any{"n": 5}, 0) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if len(args) != 1 || args[0] != "5" { + t.Errorf("a non-string value must reach the wire as text, got %v", args) + } +} + +func TestFilterPredicatesOnAnEmptyFilter(t *testing.T) { + t.Parallel() + + predicates, args, err := filterPredicates("data.", map[string]any{}, 3) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if len(predicates) != 0 || len(args) != 0 { + t.Errorf("an empty filter must add nothing, got %v and %v", predicates, args) + } +} diff --git a/vectorstores/pgvector/init_test.go b/vectorstores/pgvector/init_test.go new file mode 100644 index 000000000..4fb123791 --- /dev/null +++ b/vectorstores/pgvector/init_test.go @@ -0,0 +1,251 @@ +package pgvector + +import ( + "context" + "errors" + "strings" + "testing" + "time" + + "github.com/google/uuid" + "github.com/jackc/pgx/v5" + "github.com/jackc/pgx/v5/pgconn" + "github.com/jackc/pgx/v5/pgxpool" + "github.com/stretchr/testify/require" +) + +type scriptedTx struct { + pgx.Tx + + failOn string + failWith error + + committed bool + rolledBack bool + rollbackCtxErr error +} + +func (tx *scriptedTx) fails(sql string) bool { + return tx.failOn != "" && strings.Contains(sql, tx.failOn) +} + +func (tx *scriptedTx) Exec(_ context.Context, sql string, _ ...any) (pgconn.CommandTag, error) { + if tx.fails(sql) { + return pgconn.CommandTag{}, tx.failWith + } + return pgconn.CommandTag{}, nil +} + +func (tx *scriptedTx) QueryRow(_ context.Context, sql string, _ ...any) pgx.Row { + if tx.fails(sql) { + return scriptedRow{err: tx.failWith} + } + return scriptedRow{} +} + +func (tx *scriptedTx) Commit(context.Context) error { + tx.committed = true + return nil +} + +func (tx *scriptedTx) Rollback(ctx context.Context) error { + tx.rolledBack = true + tx.rollbackCtxErr = ctx.Err() + return nil +} + +type scriptedRow struct{ err error } + +func (r scriptedRow) Scan(dest ...any) error { + if r.err != nil { + return r.err + } + if id, ok := dest[0].(*string); ok { + *id = uuid.NewString() + } + return nil +} + +type scriptedConn struct { + PGXConn + + tx *scriptedTx +} + +func (scriptedConn) Ping(context.Context) error { return nil } + +func (c scriptedConn) Begin(context.Context) (pgx.Tx, error) { return c.tx, nil } + +func openScripted(ctx context.Context, tx *scriptedTx) error { + _, err := New(ctx, + WithConn(scriptedConn{tx: tx}), + WithEmbedder(fixedEmbedder{dims: 3}), + WithPreDeleteCollection(true), + WithHNSWIndex(16, 64, "vector_l2_ops"), + WithMetadataIndexes(MetadataIndex{Keys: []string{"flow_id"}}), + ) + return err +} + +func TestInitRollsBackWhenAnyStepFails(t *testing.T) { + t.Parallel() + + failure := errors.New("step failed") + for _, step := range []string{ + "pg_advisory_xact_lock", + "CREATE EXTENSION", + "CREATE TABLE IF NOT EXISTS langchain_pg_collection", + "CREATE TABLE IF NOT EXISTS langchain_pg_embedding", + "CREATE INDEX IF NOT EXISTS langchain_pg_embedding_collection_id", + "CREATE INDEX IF NOT EXISTS langchain_pg_embedding_embedding_hnsw", + "CREATE INDEX IF NOT EXISTS langchain_pg_embedding_meta_flow_id", + "ANALYZE", + "DELETE FROM langchain_pg_collection", + "INSERT INTO langchain_pg_collection", + "SELECT uuid FROM langchain_pg_collection", + } { + t.Run(step, func(t *testing.T) { + t.Parallel() + + tx := &scriptedTx{failOn: step, failWith: failure} + require.ErrorIs(t, openScripted(t.Context(), tx), failure) + require.True(t, tx.rolledBack) + require.False(t, tx.committed) + }) + } +} + +func TestInitCommitsWithoutRollingBack(t *testing.T) { + t.Parallel() + + tx := &scriptedTx{} + require.NoError(t, openScripted(t.Context(), tx)) + require.True(t, tx.committed) + require.False(t, tx.rolledBack) +} + +func TestInitRollsBackEvenWhenTheCallerCancelled(t *testing.T) { + t.Parallel() + + ctx, cancel := context.WithCancel(t.Context()) + cancel() + + tx := &scriptedTx{failOn: "CREATE EXTENSION", failWith: context.Canceled} + require.ErrorIs(t, openScripted(ctx, tx), context.Canceled) + require.True(t, tx.rolledBack) + require.NoError(t, tx.rollbackCtxErr) +} + +type cancelAfterQuery struct { + marker string + cancel context.CancelFunc + armed bool +} + +func (c *cancelAfterQuery) TraceQueryStart( + ctx context.Context, _ *pgx.Conn, data pgx.TraceQueryStartData, +) context.Context { + c.armed = strings.Contains(data.SQL, c.marker) + return ctx +} + +func (c *cancelAfterQuery) TraceQueryEnd(context.Context, *pgx.Conn, pgx.TraceQueryEndData) { + if c.armed { + c.cancel() + } +} + +func TestInitCancelledBeforeCommitKeepsTheCallersConnection(t *testing.T) { + t.Parallel() + + url := narrowingURL(t) + collectionTable := "cancel_collection_" + strings.ReplaceAll(uuid.NewString(), "-", "")[:12] + + ctx, cancel := context.WithCancel(t.Context()) + defer cancel() + + cfg, err := pgx.ParseConfig(url) + require.NoError(t, err) + cfg.Tracer = &cancelAfterQuery{marker: "SELECT uuid FROM " + collectionTable, cancel: cancel} + conn, err := pgx.ConnectConfig(t.Context(), cfg) + require.NoError(t, err) + t.Cleanup(func() { _ = conn.Close(context.Background()) }) + + _, err = New(ctx, + WithConn(conn), + WithEmbedder(fixedEmbedder{dims: 3}), + WithCollectionName("cancel"), + WithCollectionTableName(collectionTable), + WithEmbeddingTableName("cancel_embedding_"+collectionTable[len("cancel_collection_"):]), + ) + require.ErrorIs(t, err, context.Canceled) + require.False(t, conn.IsClosed(), "a caller that cancelled before the commit lost its connection") + + var created bool + require.NoError(t, conn.QueryRow(t.Context(), "SELECT to_regclass($1) IS NOT NULL", collectionTable).Scan(&created)) + require.False(t, created, "a cancelled init must roll back rather than commit") +} + +// Not parallel: a store opening in parallel holds the advisory locks this timeout also bounds. +func TestFailedInitReturnsItsConnectionToThePool(t *testing.T) { + url := narrowingURL(t) + ctx := t.Context() + + suffix := strings.ReplaceAll(uuid.NewString(), "-", "")[:12] + collectionTable := "rollback_collection_" + suffix + embeddingTable := "rollback_embedding_" + suffix + + cfg, err := pgxpool.ParseConfig(url) + require.NoError(t, err) + cfg.MaxConns = 1 + cfg.ConnConfig.RuntimeParams["statement_timeout"] = "500" + pool, err := pgxpool.NewWithConfig(ctx, cfg) + require.NoError(t, err) + t.Cleanup(func() { + closed := make(chan struct{}) + go func() { + pool.Close() + close(closed) + }() + select { + case <-closed: + case <-time.After(5 * time.Second): + t.Error("closing the pool waits on a connection that was never released") + } + }) + + open := func(ctx context.Context) error { + _, err := New(ctx, + WithConn(pool), + WithEmbedder(fixedEmbedder{dims: 3}), + WithCollectionName("rollback"), + WithCollectionTableName(collectionTable), + WithEmbeddingTableName(embeddingTable), + ) + return err + } + require.NoError(t, open(ctx)) + t.Cleanup(func() { + conn, err := pgx.Connect(context.Background(), url) + if err != nil { + return + } + defer conn.Close(context.Background()) + _, _ = conn.Exec(context.Background(), "DROP TABLE IF EXISTS "+embeddingTable+", "+collectionTable) + }) + + writer, err := pgx.Connect(ctx, url) + require.NoError(t, err) + defer writer.Close(ctx) + held, err := writer.Begin(ctx) + require.NoError(t, err) + _, err = held.Exec(ctx, "LOCK TABLE "+embeddingTable+" IN ROW EXCLUSIVE MODE") + require.NoError(t, err) + + require.Error(t, open(ctx), "init must time out while a writer holds the table") + require.NoError(t, held.Rollback(ctx)) + + bounded, cancel := context.WithTimeout(ctx, 5*time.Second) + defer cancel() + require.NoError(t, open(bounded), "the failed init still holds the pool's only connection") +} diff --git a/vectorstores/pgvector/metadata_index.go b/vectorstores/pgvector/metadata_index.go new file mode 100644 index 000000000..a47d583f2 --- /dev/null +++ b/vectorstores/pgvector/metadata_index.go @@ -0,0 +1,196 @@ +package pgvector + +import ( + "context" + "fmt" + "hash/fnv" + "maps" + "regexp" + "slices" + "strings" + + "github.com/jackc/pgx/v5" +) + +// metadataKeyPattern gates every metadata key that reaches the statement text. +// A key that travels as a bind parameter makes `cmetadata ->> $n` a different +// expression from the `cmetadata ->> 'key'` an index was built over, so the +// index becomes unreachable as soon as the planner chooses a generic plan. +// Inlining the key is what keeps the index in play, and nothing this pattern +// admits needs quoting. +var metadataKeyPattern = regexp.MustCompile(`^[A-Za-z_][A-Za-z0-9_]{0,62}$`) + +// maxIdentifierLen is PostgreSQL's NAMEDATALEN-1: a longer name is silently +// truncated, which would collide two distinct declarations under one index. +const maxIdentifierLen = 63 + +// MetadataIndex declares an index over keys inside the cmetadata column. The +// store creates every declared index it does not already find when it starts. +// +// Declaring an index is only half the work: a query reaches it solely when it +// constrains Keys from the first one onwards, so the leading key belongs to +// whichever filter every caller of that search path supplies. +type MetadataIndex struct { + // Name overrides the derived name. Leave it empty unless an existing index + // has to be adopted under the name it already carries. + Name string + + // Keys are the cmetadata keys in index order, most selective predicate + // first. At least one is required. + Keys []string + + // Exclude restricts the index to rows whose key does NOT hold the given + // value. It earns its place when the interesting rows are a small minority + // of the table: the index then spans that minority rather than every row. + Exclude map[string]string +} + +func (m MetadataIndex) validate() error { + if len(m.Keys) == 0 { + return fmt.Errorf("%w: an index needs at least one key", ErrInvalidMetadataIndex) + } + for _, key := range m.Keys { + if !metadataKeyPattern.MatchString(key) { + return fmt.Errorf("%w: key %q is not a bare identifier", ErrInvalidMetadataIndex, key) + } + } + for key := range m.Exclude { + if !metadataKeyPattern.MatchString(key) { + return fmt.Errorf("%w: excluded key %q is not a bare identifier", ErrInvalidMetadataIndex, key) + } + } + if m.Name != "" && !metadataKeyPattern.MatchString(m.Name) { + return fmt.Errorf("%w: name %q is not a bare identifier", ErrInvalidMetadataIndex, m.Name) + } + return nil +} + +func (m MetadataIndex) indexName(table string) string { + if m.Name != "" { + return m.Name + } + + parts := make([]string, 0, len(m.Keys)+3) + parts = append(parts, strings.ReplaceAll(table, ".", "_"), "meta") + parts = append(parts, m.Keys...) + if len(m.Exclude) > 0 { + parts = append(parts, "partial") + } + name := strings.Join(parts, "_") + prefix := strings.ToValidUTF8(name[:min(len(name), maxIdentifierLen-9)], "") + return fmt.Sprintf("%s_%08x", prefix, m.fingerprint(table)) +} + +func (m MetadataIndex) fingerprint(table string) uint32 { + sum := fnv.New32a() + _, _ = sum.Write([]byte(m.definition(table))) + return sum.Sum32() +} + +func (m MetadataIndex) definition(table string) string { + var b strings.Builder + _, _ = fmt.Fprintf(&b, "%q", table) + for _, key := range m.Keys { + _, _ = fmt.Fprintf(&b, " k%q", key) + } + for _, key := range m.excludedKeys() { + _, _ = fmt.Fprintf(&b, " x%q=%q", key, m.Exclude[key]) + } + return b.String() +} + +func (m MetadataIndex) excludedKeys() []string { + return slices.Sorted(maps.Keys(m.Exclude)) +} + +// ddl renders the CREATE INDEX for this declaration. Index expressions and +// predicates admit no bind parameters, so every part is rendered as literal +// text; validate must pass first. +func (m MetadataIndex) ddl(table string) (string, error) { + if err := m.validate(); err != nil { + return "", err + } + + columns := make([]string, 0, len(m.Keys)) + for _, key := range m.Keys { + columns = append(columns, fmt.Sprintf("(cmetadata ->> '%s')", key)) + } + + statement := fmt.Sprintf("CREATE INDEX IF NOT EXISTS %s ON %s (%s)", + m.indexName(table), table, strings.Join(columns, ", ")) + + if len(m.Exclude) == 0 { + return statement, nil + } + + keys := m.excludedKeys() + predicates := make([]string, 0, len(keys)) + for _, key := range keys { + literal, err := quoteLiteral(m.Exclude[key]) + if err != nil { + return "", err + } + // IS DISTINCT FROM rather than <>, so a row without the key is indexed + // instead of being dropped by a NULL comparison. + predicates = append(predicates, + fmt.Sprintf("(cmetadata ->> '%s') IS DISTINCT FROM %s", key, literal)) + } + + return statement + " WHERE " + strings.Join(predicates, " AND "), nil +} + +// quoteLiteral renders a string as an SQL literal. Doubling the quote is the +// whole of the escaping under standard_conforming_strings, which has been on by +// default since PostgreSQL 9.1; a backslash is rejected rather than trusted to +// it, and a NUL byte cannot appear in a statement at all. +func quoteLiteral(value string) (string, error) { + if strings.ContainsAny(value, "\x00\\") { + return "", fmt.Errorf("%w: value %q may not contain a backslash or a NUL byte", + ErrInvalidMetadataIndex, value) + } + return "'" + strings.ReplaceAll(value, "'", "''") + "'", nil +} + +// createMetadataIndexesIfNotExist brings the declared indexes into existence. +// +// It runs inside init's transaction, which already holds the embedding table's +// advisory lock, so concurrent stores opening against one table serialise here +// rather than racing. That also rules out CREATE INDEX CONCURRENTLY, which +// cannot run inside a transaction: the first build takes a ShareLock and blocks +// writers for its duration, and every start afterwards is a catalog lookup. +func (s Store) createMetadataIndexesIfNotExist(ctx context.Context, tx pgx.Tx) error { + if len(s.metadataIndexes) == 0 { + return nil + } + + if _, err := tx.Exec(ctx, "SELECT pg_advisory_xact_lock($1)", pgLockIDEmbeddingTable); err != nil { + return err + } + + definitions := make(map[string]string, len(s.metadataIndexes)) + for _, index := range s.metadataIndexes { + statement, err := index.ddl(s.embeddingTableName) + if err != nil { + return err + } + name := index.indexName(s.embeddingTableName) + folded := strings.ToLower(name) + definition := index.definition(s.embeddingTableName) + if declared, ok := definitions[folded]; ok && declared != definition { + return fmt.Errorf("%w: two declarations share the index name %s", ErrInvalidMetadataIndex, name) + } + definitions[folded] = definition + if _, err := tx.Exec(ctx, statement); err != nil { + return fmt.Errorf("create metadata index %s: %w", name, err) + } + } + + // An expression index carries no statistics of its own until the table is + // analysed, and until then the planner costs it off the column's own + // distribution and can reject it outright. + if _, err := tx.Exec(ctx, "ANALYZE "+s.embeddingTableName); err != nil { + return err + } + + return nil +} diff --git a/vectorstores/pgvector/metadata_index_test.go b/vectorstores/pgvector/metadata_index_test.go new file mode 100644 index 000000000..3ac8ea7d2 --- /dev/null +++ b/vectorstores/pgvector/metadata_index_test.go @@ -0,0 +1,205 @@ +package pgvector + +import ( + "errors" + "strings" + "testing" + "unicode/utf8" +) + +func TestMetadataIndexDDL(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + index MetadataIndex + want string + }{ + { + name: "one key", + index: MetadataIndex{Keys: []string{"flow_id"}}, + want: "CREATE INDEX IF NOT EXISTS langchain_pg_embedding_meta_flow_id_6de4f5f1 " + + "ON langchain_pg_embedding ((cmetadata ->> 'flow_id'))", + }, + { + name: "keys keep the order they were declared in", + index: MetadataIndex{Keys: []string{"doc_type", "flow_id"}}, + want: "CREATE INDEX IF NOT EXISTS langchain_pg_embedding_meta_doc_type_flow_id_6c451f01 " + + "ON langchain_pg_embedding ((cmetadata ->> 'doc_type'), (cmetadata ->> 'flow_id'))", + }, + { + name: "an explicit name wins", + index: MetadataIndex{Name: "lpe_custom", Keys: []string{"flow_id"}}, + want: "CREATE INDEX IF NOT EXISTS lpe_custom ON langchain_pg_embedding ((cmetadata ->> 'flow_id'))", + }, + { + name: "exclude renders a partial index", + index: MetadataIndex{ + Keys: []string{"doc_type"}, + Exclude: map[string]string{"doc_type": "memory"}, + }, + want: "CREATE INDEX IF NOT EXISTS langchain_pg_embedding_meta_doc_type_partial_bf975523 " + + "ON langchain_pg_embedding ((cmetadata ->> 'doc_type')) " + + "WHERE (cmetadata ->> 'doc_type') IS DISTINCT FROM 'memory'", + }, + { + name: "a quote in an excluded value is doubled", + index: MetadataIndex{ + Keys: []string{"owner"}, + Exclude: map[string]string{"owner": "O'Brien"}, + }, + want: "CREATE INDEX IF NOT EXISTS langchain_pg_embedding_meta_owner_partial_fb6d36ce " + + "ON langchain_pg_embedding ((cmetadata ->> 'owner')) " + + "WHERE (cmetadata ->> 'owner') IS DISTINCT FROM 'O''Brien'", + }, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + got, err := tc.index.ddl("langchain_pg_embedding") + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if got != tc.want { + t.Errorf("want:\n%s\ngot:\n%s", tc.want, got) + } + }) + } +} + +func TestMetadataIndexRejectsWhatCannotBeInlinedSafely(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + index MetadataIndex + }{ + {"no keys", MetadataIndex{}}, + {"key is not an identifier", MetadataIndex{Keys: []string{"a-b"}}}, + {"key closes the literal", MetadataIndex{Keys: []string{"x') OR true --"}}}, + {"excluded key is not an identifier", MetadataIndex{ + Keys: []string{"doc_type"}, Exclude: map[string]string{"a.b": "x"}, + }}, + {"name is not an identifier", MetadataIndex{Name: "a b", Keys: []string{"doc_type"}}}, + {"excluded value carries a backslash", MetadataIndex{ + Keys: []string{"doc_type"}, Exclude: map[string]string{"doc_type": `a\b`}, + }}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + if _, err := tc.index.ddl("langchain_pg_embedding"); !errors.Is(err, ErrInvalidMetadataIndex) { + t.Fatalf("want ErrInvalidMetadataIndex, got %v", err) + } + }) + } +} + +// PostgreSQL truncates an identifier at 63 bytes, which would collide two +// distinct declarations under one index. +func TestMetadataIndexNameStaysWithinTheIdentifierLimit(t *testing.T) { + t.Parallel() + + long := MetadataIndex{Keys: []string{ + strings.Repeat("a", 60), strings.Repeat("b", 60), strings.Repeat("c", 60), + }} + first := long.indexName("langchain_pg_embedding") + if len(first) > maxIdentifierLen { + t.Fatalf("name is %d bytes: %s", len(first), first) + } + + other := MetadataIndex{Keys: []string{ + strings.Repeat("a", 60), strings.Repeat("b", 60), strings.Repeat("d", 60), + }} + if second := other.indexName("langchain_pg_embedding"); first == second { + t.Errorf("two declarations collapsed onto one name: %s", first) + } +} + +func TestMetadataIndexNameCutsATableNameOnACharacterBoundary(t *testing.T) { + t.Parallel() + + name := MetadataIndex{Keys: []string{"k"}}.indexName("t" + strings.Repeat("ж", 27)) + if !utf8.ValidString(name) || len(name) > maxIdentifierLen { + t.Errorf("name is %d bytes, valid UTF-8 = %v: %q", len(name), utf8.ValidString(name), name) + } +} + +func TestMetadataIndexNameDistinguishesEveryDeclaration(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + a, b MetadataIndex + }{ + { + "a partial index and the full one", + MetadataIndex{Keys: []string{"doc_type"}}, + MetadataIndex{Keys: []string{"doc_type"}, Exclude: map[string]string{"doc_type": "memory"}}, + }, + { + "two partial indexes excluding different values", + MetadataIndex{Keys: []string{"doc_type"}, Exclude: map[string]string{"doc_type": "memory"}}, + MetadataIndex{Keys: []string{"doc_type"}, Exclude: map[string]string{"doc_type": "session"}}, + }, + { + "keys that regroup around an underscore", + MetadataIndex{Keys: []string{"a_b", "c"}}, + MetadataIndex{Keys: []string{"a", "b_c"}}, + }, + { + "a key named partial and a partial index", + MetadataIndex{Keys: []string{"flow_id", "partial"}}, + MetadataIndex{Keys: []string{"flow_id"}, Exclude: map[string]string{"doc_type": "memory"}}, + }, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + if name := tc.a.indexName("lpe"); name == tc.b.indexName("lpe") { + t.Errorf("two declarations collapsed onto one name: %s", name) + } + }) + } +} + +func TestMetadataIndexesSharingANameMustAgree(t *testing.T) { + t.Parallel() + + for _, tc := range []struct { + name string + indexes []MetadataIndex + refused bool + }{ + {"different keys under one name", []MetadataIndex{ + {Name: "lpe_shared", Keys: []string{"flow_id"}}, + {Name: "lpe_shared", Keys: []string{"doc_type"}}, + }, true}, + {"names that differ only in case", []MetadataIndex{ + {Name: "Lpe_shared", Keys: []string{"flow_id"}}, + {Name: "lpe_shared", Keys: []string{"doc_type"}}, + }, true}, + {"exclusions that differ under one name", []MetadataIndex{ + {Name: "lpe_shared", Keys: []string{"doc_type"}, Exclude: map[string]string{"doc_type": "memory"}}, + {Name: "lpe_shared", Keys: []string{"doc_type"}, Exclude: map[string]string{"doc_type": "session"}}, + }, true}, + {"names that differ only in case over the same keys", []MetadataIndex{ + {Name: "Lpe_shared", Keys: []string{"flow_id"}}, + {Name: "lpe_shared", Keys: []string{"flow_id"}}, + }, false}, + {"the same declaration twice", []MetadataIndex{ + {Name: "lpe_shared", Keys: []string{"flow_id"}}, + {Name: "lpe_shared", Keys: []string{"flow_id"}}, + }, false}, + } { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + store := Store{embeddingTableName: "langchain_pg_embedding", metadataIndexes: tc.indexes} + err := store.createMetadataIndexesIfNotExist(t.Context(), &scriptedTx{}) + if refused := errors.Is(err, ErrInvalidMetadataIndex); refused != tc.refused || (!refused && err != nil) { + t.Fatalf("refused = %v, want %v (err: %v)", refused, tc.refused, err) + } + }) + } +} diff --git a/vectorstores/pgvector/narrowing_test.go b/vectorstores/pgvector/narrowing_test.go new file mode 100644 index 000000000..f65abfcda --- /dev/null +++ b/vectorstores/pgvector/narrowing_test.go @@ -0,0 +1,304 @@ +package pgvector + +import ( + "context" + "fmt" + "math" + "os" + "strconv" + "strings" + "testing" + + "github.com/google/uuid" + "github.com/jackc/pgx/v5" + "github.com/stretchr/testify/require" + "github.com/vxcontrol/langchaingo/schema" + "github.com/vxcontrol/langchaingo/vectorstores" +) + +// fixedEmbedder answers with a deterministic unit vector of a fixed width, so a +// search asserts about the statement the store builds rather than about a model. +type fixedEmbedder struct{ dims int } + +func (e fixedEmbedder) EmbedDocuments(_ context.Context, texts []string) ([][]float32, error) { + out := make([][]float32, len(texts)) + for i, text := range texts { + out[i] = e.vector(text) + } + return out, nil +} + +func (e fixedEmbedder) EmbedQuery(_ context.Context, text string) ([]float32, error) { + return e.vector(text), nil +} + +func (e fixedEmbedder) vector(text string) []float32 { + var seed uint32 = 2166136261 + for _, b := range []byte(text) { + seed ^= uint32(b) + seed *= 16777619 + } + vec := make([]float32, e.dims) + for i := range vec { + seed = seed*1664525 + 1013904223 + vec[i] = float32(seed%1000)/1000 + 0.001 + } + var norm float64 + for _, v := range vec { + norm += float64(v) * float64(v) + } + norm = math.Sqrt(norm) + for i := range vec { + vec[i] = float32(float64(vec[i]) / norm) + } + return vec +} + +// These cases live inside the package because they assert about the statement +// the store builds, so they cannot borrow the external suite's helpers. +func narrowingURL(t *testing.T) string { + t.Helper() + + if testing.Short() { + t.Skip("skipping integration test in short mode") + } + url := os.Getenv("PGVECTOR_CONNECTION_STRING") + if url == "" { + t.Skip("PGVECTOR_CONNECTION_STRING is not set") + } + return url +} + +func narrowingCollection() string { + return "narrowing-" + uuid.New().String() +} + +func newNarrowingStore(t *testing.T, url, collection string, dims int, indexes ...MetadataIndex) Store { + t.Helper() + + opts := []Option{ + WithConnectionURL(url), + WithEmbedder(fixedEmbedder{dims: dims}), + WithCollectionName(collection), + } + if len(indexes) > 0 { + opts = append(opts, WithMetadataIndexes(indexes...)) + } + + store, err := New(t.Context(), opts...) + require.NoError(t, err) + t.Cleanup(func() { _ = store.Close() }) + return store +} + +// A table written before an embedding model changed holds more than one vector +// width. The dimension guard has to be evaluated before the distance operator, +// or every search on such a table fails outright. +func TestSimilaritySearchToleratesAMixedWidthTableUnderFiltersAndThreshold(t *testing.T) { + t.Parallel() + + url := narrowingURL(t) + collection := narrowingCollection() + ctx := t.Context() + + wide := newNarrowingStore(t, url, collection, 64) + _, err := wide.AddDocuments(ctx, []schema.Document{ + {PageContent: "the lamp beside the desk is blue", Metadata: map[string]any{"flow_id": "7", "doc_type": "memory"}}, + {PageContent: "the chair beside the desk is beige", Metadata: map[string]any{"flow_id": "7", "doc_type": "memory"}}, + {PageContent: "the desk is orange", Metadata: map[string]any{"flow_id": "9", "doc_type": "memory"}}, + }) + require.NoError(t, err) + + // The same collection, now written by a narrower model, and landing in the + // very flow the search below scopes to. + narrow := newNarrowingStore(t, url, collection, 32) + _, err = narrow.AddDocuments(ctx, []schema.Document{ + {PageContent: "written after the model changed", Metadata: map[string]any{"flow_id": "7", "doc_type": "memory"}}, + }) + require.NoError(t, err) + + docs, err := wide.SimilaritySearch(ctx, "what colour is the lamp", 3, + vectorstores.WithScoreThreshold(0.2), + vectorstores.WithFilters(map[string]any{"flow_id": "7", "doc_type": "memory"})) + require.NoError(t, err) + require.NotEmpty(t, docs) + for _, doc := range docs { + require.Equal(t, "7", doc.Metadata["flow_id"]) + require.NotEqual(t, "written after the model changed", doc.PageContent) + } +} + +func TestSimilaritySearchKeepsTheFilterScope(t *testing.T) { + t.Parallel() + + url := narrowingURL(t) + collection := narrowingCollection() + ctx := t.Context() + + store := newNarrowingStore(t, url, collection, 64) + _, err := store.AddDocuments(ctx, []schema.Document{ + {PageContent: "mine", Metadata: map[string]any{"flow_id": "1", "doc_type": "memory"}}, + {PageContent: "theirs", Metadata: map[string]any{"flow_id": "2", "doc_type": "memory"}}, + }) + require.NoError(t, err) + + docs, err := store.SimilaritySearch(ctx, "anything", 10, + vectorstores.WithFilters(map[string]any{"flow_id": "1"})) + require.NoError(t, err) + require.Len(t, docs, 1) + require.Equal(t, "mine", docs[0].PageContent) +} + +// A key that cannot be inlined must fail the search rather than widen it: the +// filter it carries may be the only thing scoping the caller's results. +func TestSimilaritySearchRefusesAFilterKeyItCannotInline(t *testing.T) { + t.Parallel() + + url := narrowingURL(t) + collection := narrowingCollection() + ctx := t.Context() + + store := newNarrowingStore(t, url, collection, 64) + _, err := store.AddDocuments(ctx, []schema.Document{ + {PageContent: "mine", Metadata: map[string]any{"flow_id": "1"}}, + {PageContent: "theirs", Metadata: map[string]any{"flow_id": "2"}}, + }) + require.NoError(t, err) + + _, err = store.SimilaritySearch(ctx, "anything", 10, + vectorstores.WithFilters(map[string]any{"flow id": "1"})) + require.ErrorIs(t, err, ErrInvalidFilterKey) +} + +func TestStoreCreatesTheDeclaredMetadataIndexes(t *testing.T) { + t.Parallel() + + url := narrowingURL(t) + ctx := t.Context() + + declared := []MetadataIndex{ + {Keys: []string{"doc_type", "flow_id"}}, + {Keys: []string{"doc_type"}, Exclude: map[string]string{"doc_type": "memory"}}, + {Keys: []string{"doc_type"}, Exclude: map[string]string{"doc_type": "session"}}, + } + store := newNarrowingStore(t, url, narrowingCollection(), 64, declared...) + + conn, err := pgx.Connect(ctx, url) + require.NoError(t, err) + defer conn.Close(ctx) + + for _, index := range declared { + name := index.indexName(store.embeddingTableName) + var definition string + err := conn.QueryRow(ctx, + "SELECT indexdef FROM pg_indexes WHERE tablename = $1 AND indexname = $2", + store.embeddingTableName, name).Scan(&definition) + require.NoErrorf(t, err, "index %s was not created", name) + for _, key := range index.Keys { + require.Contains(t, definition, fmt.Sprintf("(cmetadata ->> '%s'::text)", key)) + } + for _, value := range index.Exclude { + require.Contains(t, definition, fmt.Sprintf("'%s'::text", value)) + } + } + + // A second store against the same table must be a no-op rather than an error. + newNarrowingStore(t, url, narrowingCollection(), 64, declared...) +} + +// The whole point of the rewrite: the scan reads one flow, not the table. +func TestSimilaritySearchReadsOnlyTheFilteredRows(t *testing.T) { + t.Parallel() + + url := narrowingURL(t) + ctx := t.Context() + + suffix := strings.ReplaceAll(uuid.NewString(), "-", "")[:12] + index := MetadataIndex{Keys: []string{"doc_type", "flow_id"}} + store, err := New(ctx, + WithConnectionURL(url), + WithEmbedder(fixedEmbedder{dims: 64}), + WithCollectionName(narrowingCollection()), + WithCollectionTableName("plan_collection_"+suffix), + WithEmbeddingTableName("plan_embedding_"+suffix), + WithMetadataIndexes(index), + ) + require.NoError(t, err) + t.Cleanup(func() { _ = store.Close() }) + t.Cleanup(func() { + conn, err := pgx.Connect(context.Background(), url) + if err != nil { + return + } + defer conn.Close(context.Background()) + _, _ = conn.Exec(context.Background(), + "DROP TABLE IF EXISTS "+store.embeddingTableName+", "+store.collectionTableName) + }) + + const flows, perFlow = 200, 25 + docs := make([]schema.Document, 0, flows*perFlow) + for flow := range flows { + for i := range perFlow { + docs = append(docs, schema.Document{ + PageContent: fmt.Sprintf("flow %d document %d", flow, i), + Metadata: map[string]any{"flow_id": strconv.Itoa(flow), "doc_type": "memory"}, + }) + } + } + for start := 0; start < len(docs); start += 500 { + _, err := store.AddDocuments(ctx, docs[start:min(start+500, len(docs))]) + require.NoError(t, err) + } + + conn, err := pgx.Connect(ctx, url) + require.NoError(t, err) + defer conn.Close(ctx) + _, err = conn.Exec(ctx, "ANALYZE "+store.embeddingTableName) + require.NoError(t, err) + + plan := explainSimilaritySearch(t, ctx, conn, store, "flow 3 document 1", + map[string]any{"doc_type": "memory", "flow_id": "3"}) + + require.Contains(t, plan, index.indexName(store.embeddingTableName), + "the metadata index must carry the scan:\n%s", plan) + require.NotContains(t, plan, "Seq Scan on "+store.embeddingTableName, + "the whole table was read:\n%s", plan) +} + +type recordingConn struct { + PGXConn + + sql string + args []any +} + +func (c *recordingConn) Query(ctx context.Context, sql string, args ...any) (pgx.Rows, error) { + c.sql, c.args = sql, args + return c.PGXConn.Query(ctx, sql, args...) +} + +func explainSimilaritySearch( + t *testing.T, ctx context.Context, conn *pgx.Conn, store Store, query string, filter map[string]any, +) string { + t.Helper() + + recorder := &recordingConn{PGXConn: store.conn} + store.conn = recorder + _, err := store.SimilaritySearch(ctx, query, 3, + vectorstores.WithScoreThreshold(0.2), vectorstores.WithFilters(filter)) + require.NoError(t, err) + + rows, err := conn.Query(ctx, "EXPLAIN (COSTS OFF) "+recorder.sql, recorder.args...) + require.NoError(t, err) + defer rows.Close() + + var plan strings.Builder + for rows.Next() { + var line string + require.NoError(t, rows.Scan(&line)) + plan.WriteString(line) + plan.WriteString("\n") + } + require.NoError(t, rows.Err()) + return plan.String() +} diff --git a/vectorstores/pgvector/options.go b/vectorstores/pgvector/options.go index 7619fc048..7e00e9754 100644 --- a/vectorstores/pgvector/options.go +++ b/vectorstores/pgvector/options.go @@ -86,6 +86,19 @@ func WithVectorDimensions(size int) Option { } } +// WithMetadataIndexes declares indexes over keys inside the cmetadata column. +// The store creates any of them it does not find when it starts. +// +// Without one, a filtered search reads every row of the table: the metadata +// predicates narrow the candidate set only after a distance has already been +// computed for each row, and on a table of embeddings that cost is dominated by +// detoasting vectors that were never going to be returned. +func WithMetadataIndexes(indexes ...MetadataIndex) Option { + return func(p *Store) { + p.metadataIndexes = indexes + } +} + // WithHNSWIndex is an option for specifying the HNSW index parameters. // See here for more details: https://github.com/pgvector/pgvector#hnsw // diff --git a/vectorstores/pgvector/pgvector.go b/vectorstores/pgvector/pgvector.go index 850c0659d..f358e280d 100644 --- a/vectorstores/pgvector/pgvector.go +++ b/vectorstores/pgvector/pgvector.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "io" + "sort" "strings" "github.com/vxcontrol/langchaingo/embeddings" @@ -34,6 +35,8 @@ var ( ErrEmbedderWrongNumberVectors = errors.New("number of vectors from embedder does not match number of documents") ErrInvalidScoreThreshold = errors.New("score threshold must be between 0 and 1") ErrInvalidFilters = errors.New("invalid filters") + ErrInvalidFilterKey = errors.New("filter key must be a bare identifier") + ErrInvalidMetadataIndex = errors.New("invalid metadata index") ErrUnsupportedOptions = errors.New("unsupported options") ) @@ -64,6 +67,7 @@ type Store struct { preDeleteCollection bool vectorDimensions int hnswIndex *HNSWIndex + metadataIndexes []MetadataIndex } type HNSWIndex struct { @@ -106,11 +110,16 @@ func (s Store) Close() error { return nil } -func (s *Store) init(ctx context.Context) error { +func (s *Store) init(ctx context.Context) (err error) { tx, err := s.conn.Begin(ctx) if err != nil { return err } + defer func() { + if err != nil { + _ = tx.Rollback(context.WithoutCancel(ctx)) + } + }() if err := s.createVectorExtensionIfNotExists(ctx, tx); err != nil { return err @@ -121,6 +130,9 @@ func (s *Store) init(ctx context.Context) error { if err := s.createEmbeddingTableIfNotExists(ctx, tx); err != nil { return err } + if err := s.createMetadataIndexesIfNotExist(ctx, tx); err != nil { + return err + } if s.preDeleteCollection { if err := s.RemoveCollection(ctx, tx); err != nil { return err @@ -129,6 +141,9 @@ func (s *Store) init(ctx context.Context) error { if err := s.createOrGetCollection(ctx, tx); err != nil { return err } + if err := ctx.Err(); err != nil { + return err + } return tx.Commit(ctx) } @@ -294,46 +309,58 @@ func (s Store) SimilaritySearch( if err != nil { return nil, err } - whereQuerys := make([]string, 0) - if scoreThreshold != 0 { - whereQuerys = append(whereQuerys, fmt.Sprintf("data.distance < %f", 1-scoreThreshold)) + args := make([]any, 0, 5+len(filter)) + args = append(args, len(embedderData), pgvector.NewVector(embedderData), numDocuments, collectionName) + + // Every predicate that can reject a row belongs inside the fence, so that a + // distance is computed only for the rows that survive it, and so that a + // metadata index is reachable at the scan. Hoisting them out, as this query + // once did, costs a full table scan and a detoast of every stored vector. + innerQuerys, filterArgs, err := filterPredicates(s.embeddingTableName+".", filter, len(args)) + if err != nil { + return nil, err } - for k, v := range filter { - whereQuerys = append(whereQuerys, fmt.Sprintf("(data.cmetadata ->> '%s') = '%s'", k, v)) + args = append(args, filterArgs...) + innerQuery := strings.Join(innerQuerys, " AND ") + if len(innerQuery) == 0 { + innerQuery = "TRUE" } - whereQuery := strings.Join(whereQuerys, " AND ") - if len(whereQuery) == 0 { - whereQuery = "TRUE" + + // The threshold is the one predicate that cannot move inside: it reads the + // distance the fenced select computes. + outerQuery := "TRUE" + if scoreThreshold != 0 { + args = append(args, float64(1-scoreThreshold)) + outerQuery = fmt.Sprintf("data.distance < $%d", len(args)) } - dims := len(embedderData) + + // AS MATERIALIZED is load-bearing rather than decorative. It is what orders + // vector_dims() ahead of <=>, and a table holding more than one embedding + // dimension -- any table written before an embedding model was changed -- + // fails outright with "different vector dimensions" without it. sql := fmt.Sprintf(`WITH filtered_embedding_dims AS MATERIALIZED ( - SELECT - * - FROM - %s - WHERE - vector_dims ( - embedding - ) = $1 + SELECT + %[1]s.uuid, + %[1]s.document, + %[1]s.cmetadata, + %[1]s.embedding <=> $2 AS distance + FROM + %[1]s + WHERE %[1]s.collection_id = (SELECT %[2]s.uuid FROM %[2]s WHERE %[2]s.name = $4 ORDER BY %[2]s.name LIMIT 1) + AND vector_dims(%[1]s.embedding) = $1 + AND %[3]s ) SELECT data.document, data.cmetadata, (1 - data.distance) AS score -FROM ( - SELECT - filtered_embedding_dims.*, - embedding <=> $2 AS distance - FROM - filtered_embedding_dims - JOIN %s ON filtered_embedding_dims.collection_id=%s.uuid WHERE %s.name='%s') AS data -WHERE %s +FROM filtered_embedding_dims AS data +WHERE %[4]s ORDER BY - data.distance -LIMIT $3`, s.embeddingTableName, - s.collectionTableName, s.collectionTableName, s.collectionTableName, collectionName, - whereQuery) - rows, err := s.conn.Query(ctx, sql, dims, pgvector.NewVector(embedderData), numDocuments) + data.distance, + data.uuid +LIMIT $3`, s.embeddingTableName, s.collectionTableName, innerQuery, outerQuery) + rows, err := s.conn.Query(ctx, sql, args...) if err != nil { return nil, err } @@ -362,10 +389,13 @@ func (s Store) Search( if err != nil { return nil, err } - whereQuerys := make([]string, 0) - for k, v := range filter { - whereQuerys = append(whereQuerys, fmt.Sprintf("(%s.cmetadata ->> '%s') = '%s'", s.embeddingTableName, k, v)) + args := make([]any, 0, 2+len(filter)) + args = append(args, numDocuments, collectionName) + whereQuerys, filterArgs, err := filterPredicates(s.embeddingTableName+".", filter, len(args)) + if err != nil { + return nil, err } + args = append(args, filterArgs...) whereQuery := strings.Join(whereQuerys, " AND ") if len(whereQuery) == 0 { whereQuery = "TRUE" @@ -375,11 +405,11 @@ func (s Store) Search( %s.cmetadata FROM %s JOIN %s ON %s.collection_id=%s.uuid -WHERE %s.name='%s' AND %s +WHERE %s.name=$2 AND %s LIMIT $1`, s.embeddingTableName, s.embeddingTableName, s.embeddingTableName, - s.collectionTableName, s.embeddingTableName, s.collectionTableName, s.collectionTableName, collectionName, + s.collectionTableName, s.embeddingTableName, s.collectionTableName, s.collectionTableName, whereQuery) - rows, err := s.conn.Query(ctx, sql, numDocuments) + rows, err := s.conn.Query(ctx, sql, args...) if err != nil { return nil, err } @@ -446,6 +476,34 @@ func (s Store) getScoreThreshold(opts vectorstores.Options) (float32, error) { return opts.ScoreThreshold, nil } +// filterPredicates renders the metadata filter as predicates numbered from +// argOffset; the returned args must be appended to the query in the same order. +// Keys are sorted so that one filter always renders as one statement text. +// +// The key is inlined and only the value is bound, because `cmetadata ->> $n` is +// not the expression a metadata index was built over. A key that fails the gate +// is an error rather than a dropped predicate: a caller's filter may be the only +// thing keeping one tenant's documents out of another's results. +func filterPredicates(prefix string, filter map[string]any, argOffset int) ([]string, []any, error) { + keys := make([]string, 0, len(filter)) + for k := range filter { + if !metadataKeyPattern.MatchString(k) { + return nil, nil, fmt.Errorf("%w: %q", ErrInvalidFilterKey, k) + } + keys = append(keys, k) + } + sort.Strings(keys) + + predicates := make([]string, 0, len(keys)) + args := make([]any, 0, len(keys)) + for _, k := range keys { + predicates = append(predicates, fmt.Sprintf("(%scmetadata ->> '%s') = $%d", + prefix, k, argOffset+len(args)+1)) + args = append(args, fmt.Sprintf("%v", filter[k])) + } + return predicates, args, nil +} + // getFilters return metadata filters, now only support map[key]value pattern // TODO: should support more types like {"key1": {"key2":"values2"}} or {"key": ["value1", "values2"]}. func (s Store) getFilters(opts vectorstores.Options) (map[string]any, error) { diff --git a/vectorstores/pgvector/pgvector_test.go b/vectorstores/pgvector/pgvector_test.go index 769c7d259..85b3382dd 100644 --- a/vectorstores/pgvector/pgvector_test.go +++ b/vectorstores/pgvector/pgvector_test.go @@ -55,6 +55,7 @@ func createOpenAILLMAndEmbedder(t *testing.T, rr *httprr.RecordReplay) (llm *ope httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") opts := []openai.Option{ + openai.WithModel("gpt-4.1-nano"), openai.WithHTTPClient(rr.Client()), } if !rr.Recording() { diff --git a/vectorstores/pgvector/testdata/TestDeduplicater.httprr b/vectorstores/pgvector/testdata/TestDeduplicater.httprr index 187477dcc..9a84910b9 100644 --- a/vectorstores/pgvector/testdata/TestDeduplicater.httprr +++ b/vectorstores/pgvector/testdata/TestDeduplicater.httprr @@ -1,5 +1,5 @@ httprr trace v1 -248 22147 +248 22131 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:04:39 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 74 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/pgvector/testdata/TestPgvectorAsRetriever.httprr b/vectorstores/pgvector/testdata/TestPgvectorAsRetriever.httprr index 3f39eafa2..dad4e2c91 100644 --- a/vectorstores/pgvector/testdata/TestPgvectorAsRetriever.httprr +++ b/vectorstores/pgvector/testdata/TestPgvectorAsRetriever.httprr @@ -1,5 +1,5 @@ httprr trace v1 -340 64339 +340 64396 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -11,30 +11,33 @@ Content-Type: application/json Content-Length: 63433 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Thu, 22 Jan 2026 20:04:08 GMT +Date: Mon, 21 Sep 2026 07:47:54 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst -Openai-Processing-Ms: 178 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 148 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload -Via: envoy-router-5c8d7bd656-hm6vb +Via: envoy-router-canary-78f5895f85-655jl X-Content-Type-Options: nosniff -X-Envoy-Upstream-Service-Time: 199 +X-Engine-Geography: EU X-Openai-Proxy-Wasm: v0.1 X-Ratelimit-Limit-Requests: 10000 X-Ratelimit-Limit-Tokens: 10000000 X-Ratelimit-Remaining-Requests: 9999 -X-Ratelimit-Remaining-Tokens: 9999977 +X-Ratelimit-Remaining-Tokens: 9999978 X-Ratelimit-Reset-Requests: 6ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_abf0d970e0c4416886161077433d76b9 +X-Request-Id: req_ceae54eb3c10475585c6f81fb3c516ce { + "object": "list", "data": [ { "object": "embedding", @@ -42,9 +45,9 @@ X-Request-Id: req_abf0d970e0c4416886161077433d76b9 "embedding": [0.0045962376, 0.00861834, -0.008126223, -0.0057255807, -0.016656235, 0.023255637, -0.0021608942, 0.0004629361, 0.03417052, -0.009558408, -0.021224082, 0.019343946, 0.008006349, -0.017110497, -0.008088369, -0.009735065, 0.019672023, -0.024353435, 0.018031636, -0.0012744544, -0.03485191, 0.028063232, -0.0003330064, -0.0025457542, -0.0055268416, -0.005293402, 0.01669409, -0.013539501, 0.017047405, 0.007836002, -0.0042019137, -0.01500323, -0.011741384, -0.009659355, -0.010170398, -0.0058580735, -0.0010071029, 0.0023943337, -0.007186156, 8.675122e-06, 0.01755214, -0.0024795078, 0.0055457694, -0.030965455, -0.0057445085, 0.005832837, 0.0017397564, 0.0144227855, -0.022713048, 0.008290263, 0.0053501846, 0.026296662, -0.0006660128, -0.03437241, 0.0062997164, -0.011110466, 0.0062050787, 0.015596293, 0.0025773, -0.004785513, 0.010145161, -0.02176667, -0.011899114, -0.012328138, -0.029602673, -0.010511094, -0.017905453, -0.010498475, 0.005618325, 0.022511154, 0.019268235, 0.024782458, 0.0139180515, -0.001563888, 0.012782399, 0.013451172, -0.023444913, -0.012290282, 0.0012602587, 0.010908572, 0.006561547, -0.004507909, -0.033287235, 0.007507924, 0.029224122, 0.017791888, -0.015911752, 0.014902283, -0.039899256, 0.0029921287, 0.024429144, 0.041716296, 0.016845511, -0.008959035, -0.009053674, -0.014183037, 0.011993751, 0.029880276, 0.006914861, -0.026220951, -0.00060213235, 0.011318669, -0.048025478, 0.00761518, -0.03015788, 0.0017019013, -0.0023186237, -0.004255542, 0.027432315, -0.029577436, -0.025337666, 0.027508024, 0.024782458, -0.031520665, -0.00094085647, -8.300515e-05, 0.0006277634, -0.011854949, -0.0102397995, 0.01654267, 0.009911722, 0.021817144, 0.014637298, 0.017640468, -0.004946397, 0.005485832, -0.021968564, -0.044113785, -0.005362803, -0.0021640488, 0.009413296, 0.021526922, 0.015836041, 0.0018312394, -0.025640508, -0.0038643728, -0.026094768, 0.028416546, -0.024656275, -0.00353945, 0.009779229, 0.019558458, -0.023369202, -0.0035993871, 0.019836063, 0.02861844, 0.003400648, -0.0028706768, -0.0105174035, -0.030258827, 0.017779268, -0.031596374, 0.0141451815, 0.020580545, 0.020984333, 0.0360128, -0.008977963, 0.012662524, -0.03333771, 0.013526882, -0.025716217, -0.0013304483, 0.036441825, -0.006362808, 0.034321938, 0.018839212, 0.017564757, 0.0049053873, -0.028366074, 0.0011963783, -0.012403848, 0.035810906, -0.039571177, 0.021640487, 0.007886475, 0.01523036, -0.0057034986, 0.0015607334, -0.01669409, -0.0049716337, -0.041665826, -0.0055299965, 0.0111987945, 0.006681422, -0.0016798192, 0.012946437, 0.016138883, -0.008353354, 0.017817125, 0.0018959086, 0.021514304, 0.004731885, -0.0024479618, -0.00040891374, -0.6856312, -0.017981162, 0.010132543, -0.02200642, 0.02161525, 0.021526922, 0.026725687, 0.0070284265, -0.01577295, -0.017211443, -0.005914856, -0.0013501645, -0.010088379, -0.0015402286, 0.0032902374, -0.0035236771, 0.007829692, 0.01008207, 0.0049905614, 0.005022107, -0.0075647067, -0.009324968, -0.015066322, 0.001839126, 0.01577295, 0.009823393, 0.014788718, 0.0016861283, -0.028896045, 0.014902283, -0.015735095, 0.03470049, -0.0020094737, 0.008719287, 0.03263108, 0.0047129574, -0.02114837, 0.036896084, 0.021791907, 0.013829722, -0.0024952807, -0.0036151602, 0.019343946, -0.00020209092, -0.010126234, 0.006255552, 0.009501625, -0.010933809, 0.010334437, 0.0074069775, 0.00669404, -0.009451152, -0.00892749, 0.021034807, 0.021299792, 0.00046254176, 0.036492296, 0.020795057, -0.010151471, -0.0066435663, -0.00815146, 0.0025268267, -0.012485867, -0.021400739, -0.015129413, 0.002026824, -0.027785629, -0.01608841, -0.0141451815, -0.005340721, -0.00081625016, 0.017097877, -0.02294018, 0.023053743, 0.0026277734, -0.0019590005, 0.03480144, -0.008877017, -0.010801316, 0.013135713, 0.015343926, -0.018019019, -0.012126244, -0.018813975, 0.009028437, -0.015697239, -0.01885183, -0.019911772, 0.004432199, -0.027104238, 0.020214614, -0.0074069775, -0.014864428, -0.025135772, -0.013299751, 0.009817084, -0.0067508225, 0.02015152, 0.016138883, -0.021905473, -0.017577376, -0.008971654, 0.0007425116, 0.010397528, 0.03210111, 0.012302901, -0.004485827, 0.023508005, 0.0039022279, -0.026246188, 0.02215784, -0.0056877257, -0.015066322, 0.0061956146, -0.004763431, -0.02360895, 0.014940138, 0.0076404167, 0.02977933, -0.013690921, 0.02016414, 0.0032586914, -0.00073304784, -0.003369102, 0.0151041765, 0.0052965567, -0.010700369, -0.0050725807, -0.0048202137, 0.00042547533, 0.0031608993, 0.011671983, 0.022069512, 0.009552099, 0.013186187, 0.003378566, 0.00619246, -0.008612031, 0.031192586, -0.007192465, -0.014637298, 0.014536351, -0.01138807, 0.0065110736, -0.00946377, -0.031949688, -0.037981264, -0.018978013, -0.025097918, 0.01692122, -0.005851764, -0.00074448326, 0.0019858144, 0.015608911, -0.01162151, 0.011224031, 0.0012571041, -0.0008667236, -0.008397519, 0.013514264, 0.023419676, 0.015899133, -0.0026987516, 0.006580475, -0.01530607, -0.013842341, -0.018372333, 0.013413317, -0.01261205, -0.022031657, 0.007810765, -0.004078885, -0.013211423, -0.016214592, -0.01838495, 0.006977953, -0.03333771, -0.033135813, -0.004583619, -0.012996911, 0.01806949, 0.015470109, -0.004763431, -0.0027397615, 0.016530052, 0.0074889967, 0.037829842, 0.032429185, 0.0043060156, 0.0071483008, -0.0014771367, 0.0144480225, 0.0012768203, 0.022183077, 0.011640437, -0.009375442, -0.00077997235, 0.009154621, -0.004138822, 0.014889665, 0.02476984, 0.0024905489, 0.013678302, -0.020366034, -0.0027413387, -0.042902425, 0.020138903, 0.002561527, -0.001892754, 0.005946402, -0.019356564, -0.02208213, -0.01660576, -0.013375462, 0.009665663, -0.012018988, -0.005662489, 0.006422745, 0.009552099, -0.006971644, 0.006031576, 0.00011908577, 0.029022228, -0.00438488, -0.014460641, -0.012239809, 0.0004830466, 0.011160939, -0.014864428, -0.010132543, -0.021198845, 0.0073123397, -0.008107296, 0.009507935, -0.0028690996, 0.0105174035, 0.018296622, -0.020252468, 0.0013951174, -0.0013170413, 0.019179907, 0.026296662, 0.0017381791, -0.0076845814, 0.021817144, -0.0049116965, 0.010858099, -0.00034877934, -0.020504834, 0.014864428, -0.007753982, -0.0049337787, -0.014889665, -0.0005788673, 0.013375462, -0.01953322, 0.02685187, -0.0056025516, 0.026145242, 0.017741414, 0.03321152, 0.0060662767, -0.0007535527, -0.007817074, 0.00984232, -0.0016048977, -0.020631019, -0.008283953, -0.005794982, -0.025968585, -0.006100977, -0.009482698, 0.029224122, -0.0015694086, 0.0007488208, -0.007331267, 0.0021593168, -0.0016656235, 0.012170408, -0.009880176, -0.0078486195, -0.023381822, 0.0052460833, 0.012599433, -5.0769184e-05, -0.009438533, -0.0303093, 0.02100957, -0.015507964, 0.012971674, 0.026372373, 0.0016672008, 0.0063501894, -0.008567867, -0.00488646, -0.02839131, 0.0025362903, -0.0027902348, 0.015722476, -0.017060023, 0.008826543, -0.0193818, -0.007974803, -0.0010165666, 0.008069442, 0.022296643, 0.00885178, 0.0149275195, -0.012403848, -0.022801377, -0.029501725, -0.0076277987, 0.008006349, 0.009104147, -0.015293452, -0.0052681654, -0.025489086, -0.02476984, 0.024429144, 0.013287133, -0.00066522416, -0.0055489237, -0.01276978, -0.0008895944, 0.085602954, -0.018612081, 0.0021041115, -0.001769725, 0.023331348, -0.017425954, -0.016201975, 0.0061829966, -0.008347045, 0.026448082, 0.011413307, -0.002197172, 0.0069211703, 0.012492176, 0.00043217881, -0.0014211428, 0.024164159, -0.0116152, 0.012340756, -0.019507984, -0.026725687, 0.0029495417, 0.014725626, 0.007829692, -0.0040410296, 0.008990581, 0.012795017, 0.0006581263, 0.021413356, -0.009627809, -0.004861223, 0.013981143, -0.002235027, -0.019457512, -0.00091246516, -0.020138903, -0.03439765, -0.007400668, 0.01238492, -0.026220951, 0.029426016, 0.012151481, 0.008984272, -0.009571026, 0.002984242, 0.012006369, -0.0014637298, 0.0412368, -0.013022147, -0.010183017, 0.030889746, -0.017123114, 0.0014353384, 0.00438488, 0.013148331, 0.015810804, 0.005933784, 0.005523687, 0.01755214, -0.029804567, -0.0149275195, -0.025842402, -0.015899133, 0.002908532, -0.002946387, -0.03886455, -0.015091559, -0.00082413666, -0.022220932, -0.015318689, 0.025993822, -0.011299741, -0.018359713, 0.01515465, 0.024403907, 0.022952797, 0.002925882, -0.018965395, -0.019634169, 0.02016414, -0.012996911, -0.0021246164, 0.015041085, 0.008839161, -0.0041230493, -0.0027350294, 0.023318728, -0.027255658, -0.00792433, 0.022914942, 0.004823368, 0.0019558459, 0.030359775, 0.009451152, -0.008984272, 0.0043817256, -0.001984237, 0.009116765, -0.01669409, 0.0024448072, 0.010933809, -0.031066403, -0.013577355, -0.004548919, -0.0061041317, 0.0025063218, 0.010302891, -0.0005694035, -0.04138822, 0.005302866, 0.016807655, -0.017135734, 2.8194148e-05, -0.030208353, 0.003277619, 0.023861319, -0.019331327, 0.017577376, 0.0023659426, -0.03538188, 0.027205184, -0.036366113, 0.025123155, 0.010763461, -0.007356504, 0.004744503, 0.008895944, -0.0059211655, -0.016164118, 0.0039274646, 0.0022097903, 0.00082255935, -0.022145221, -0.012946437, -0.01969726, -0.013047384, 0.019444892, 0.0047728946, 4.029496e-05, -0.011255577, -0.0111987945, 0.011911732, 0.0030883437, -0.0017634158, -0.024731986, -0.016416486, 0.00276973, -0.0144480225, -0.013552119, 0.022750903, 0.016731946, -0.0076593445, -0.001903795, 0.022107366, 0.006839151, -0.009873867, -0.017981162, -0.004100967, 0.02161525, 0.029602673, 0.006681422, -0.00030402362, 0.02176667, -0.009552099, -0.016290303, -0.011968515, 0.0075836345, -0.0053911945, -0.021425975, 0.01962155, 0.01631554, 0.027861338, 0.015457491, 0.022271406, 0.0056372522, 0.015962224, 0.0049653244, -0.0027239884, -0.015205123, -0.037527002, -0.01808211, 0.0024243025, -0.019672023, 0.00423346, 0.021943329, -0.0035552229, 0.010883335, 0.01953322, 0.0077792187, 0.001205842, 0.02439129, -0.013665684, 0.042347215, -0.0028596357, -0.0072807935, -0.0058044456, -0.008914871, -0.011495326, 0.008952727, 0.0023359738, 0.018498516, 0.020366034, -0.021943329, -0.008208243, 0.0033943388, 0.019583695, -0.0014006379, -0.0057413536, 0.005302866, -0.012037915, -0.018675173, -0.018801356, -0.012719307, -0.043381922, 0.003608851, 0.010788698, -0.028643677, 0.022435443, -0.005239774, -0.020580545, -0.008895944, -0.0040284116, 0.011829712, -0.0040599573, 0.023735136, 0.0051829913, -0.02801276, -0.0150284665, 0.011047374, -0.0146499155, -0.01515465, 0.010832862, 0.0036624789, -0.012700379, -0.0034038026, 0.0110978475, 0.006801296, 0.012479558, -0.011690911, -0.009173548, 0.0035205225, 0.017716177, -0.017955925, 0.0074637597, -0.008580484, 0.025728837, -0.0068265325, -0.021741435, 0.0051672184, -0.011123084, -0.015255597, -0.009564717, -0.025817165, 0.012252428, 0.004848605, -0.008119915, 0.0035899235, 0.0107950065, -0.012933819, -0.0073817405, -0.009104147, 0.047066484, 0.0040820395, 0.012334446, 0.015533201, 0.026347136, 0.0041640587, -0.011608891, 0.010353364, 0.026220951, -0.0010496898, 0.0015701972, -0.0071735377, 0.05130625, 0.021590013, -0.009741374, -0.005186146, -0.014952756, -0.02215784, -0.013766631, 0.0145994425, -0.00087382144, -0.015419636, -0.0034101119, -0.027861338, -0.010277654, -0.027810866, -0.01300953, 0.010776079, -0.0031198894, -0.016353395, -0.013678302, -0.021993801, 0.027987523, 0.02099695, 9.715151e-05, -0.005785518, 0.010050524, -0.025211483, 0.018183056, -0.023104217, 0.022485917, -0.013375462, 0.008447992, 0.011791857, -0.018473279, 0.010599422, -0.00042271506, -0.0283156, -0.04555228, 0.009804466, -0.009198785, 0.012391229, -0.0063217985, -0.018612081, 0.010750842, 0.009110456, -0.015444873, -0.021791907, 0.010536331, -0.0060284217, -0.0019022177, 0.021943329, -0.0140947085, -0.0032050635, 0.019041106, -0.016820274, -0.00033596382, -0.0263219, -0.012795017, 0.016037935, 0.025640508, 5.6092555e-05, -0.021918092, 0.000246058, -0.015356544, -0.017905453, 0.0051262085, -0.005555233, 0.0014960644, 0.03591185, 0.025186246, -0.003962165, 0.0054448224, -0.02677616, -0.009501625, -0.021451212, -0.021261936, -0.016227212, -0.027659444, 0.00777291, 0.016832892, -0.0067318953, -0.019861298, 0.00078825315, 0.0122335, -0.0035741504, -0.018498516, 0.011413307, 0.015659384, 0.016668854, -0.0054826774, -0.0046277833, 0.02161525, -0.0016009544, 0.005952711, -0.0057508177, 0.003839136, 0.0020394425, -0.01261836, 0.021123135, 0.012056843, 0.0065741655, -0.019369183, 0.009135692, 0.008416446, 0.0052366196, 0.012403848, -0.008485847, 0.010990592, -0.008365973, 0.012933819, 0.008372282, 0.0073438855, 0.007671963, -0.008290263, -0.01823353, -0.0128518, 0.0014605751, -0.011356524, -0.00039294362, 0.020731965, 0.00021451213, -0.022675192, -0.0139937615, -0.01323666, -0.025198866, -0.016176738, 0.0065741655, 0.001552847, -0.0047918223, 0.011571036, 0.0023817155, 0.011854949, -0.0071987743, 0.002176667, -0.0137161575, 0.00022614466, -0.027533261, -0.01769094, 0.002523672, -0.02670045, -0.022637337, -0.024782458, 4.091109e-05, -0.0012839182, -0.004324943, -0.028567966, 0.027205184, 0.010372292, -0.0108707175, 0.0072303205, -0.043104317, -0.015091559, 0.009571026, -0.005063117, -0.008719287, -0.016290303, 0.010687751, 0.0033943388, -0.0044353534, -0.0057665906, 0.010151471, 0.015836041, 0.0056246337, 0.04063112, 0.22591911, -0.0003475964, -0.00011977584, 0.039217863, 0.016984312, 0.021564778, 0.0144732585, 0.017034786, 0.00296216, 0.015205123, -0.0037634259, -0.0050315713, -0.013438554, 0.014372312, 0.00046372472, -0.035129514, -0.030334538, -0.00861834, -0.0063186437, 0.007501615, -0.019608932, -0.026044294, -0.0071419915, -0.008990581, 0.0029590053, 0.006555238, -0.01815782, 0.014283983, 0.024214633, -0.0010796584, -0.0018848676, -0.035482828, 0.010731915, -0.003416421, -0.007015808, -0.0043407157, 0.005501605, -0.020883385, 0.025602652, 0.02685187, 0.00040043576, -0.0035615321, -0.024467, 0.0043407157, -0.013653065, 0.017148351, -0.0059211655, -0.00569088, 0.008119915, 0.008397519, -0.024000121, -0.021400739, 0.009375442, 0.047344085, -0.0052271555, 0.010927499, 0.015760332, -0.0021514304, 0.017160969, -0.0044195806, -0.027937049, 0.037880316, -0.020921241, 0.028138943, -0.0010110461, -0.002069411, -0.015268216, 0.0010930655, 0.00853632, -0.015596293, 0.01538178, 0.010012669, -0.0012878614, -0.007009499, -0.0059747933, -0.014990612, 0.031142112, 0.00626817, 0.030914983, 0.013690921, -0.02393703, 0.03000646, -0.022183077, -0.0011695642, 0.0112745045, -0.04010115, 0.012119935, -0.024517473, 0.013539501, 0.0020993797, 0.011123084, 0.0071672285, 0.00037657918, -0.0039747832, 0.01984868, 0.018208293, 0.0139180515, 0.027028527, -0.028643677, 0.0072240112, -0.037350345, -0.029224122, 0.017905453, 0.0051293634, -0.012530032, 0.008719287, 0.017148351, 0.0015694086, 0.021325028, -0.008977963, 0.025754072, -0.012637287, 0.0030015924, 5.6536166e-05, 0.016719326, 0.0001789244, -0.0056057065, -0.025060063, -0.003940083, 0.0076277987, -0.020908622, 0.0043438706, -0.01515465, 0.010788698, 0.014940138, -0.023280874, -0.018637318, 0.0103092, 0.0010347056, -0.048429266, 0.0006498455, 0.005318639, 0.039646886, -0.0034511215, -0.0142966015, 0.03437241, 0.01577295, -0.0335396, -0.0112492675, 0.002411684, -0.00091246516, -0.025640508, -0.0041262037, -0.016984312, -0.0012665679, -0.010094688, 0.0064732186, 0.00037993092, -0.029526962, -0.017981162, -0.019949628, 0.0011963783, -0.017943308, -0.011583654, 0.020366034, -0.02099695, -0.019823443, -0.012586814, 0.008813924, 0.029754093, -0.010176707, 0.019672023, 0.022321878, 0.0039116917, -0.019571077, 0.013564737, -0.16050553, 0.027280895, 0.011123084, 0.005318639, -0.012479558, -0.022826614, 0.006091513, 0.006485837, -0.013678302, 0.024050593, 0.025261957, 0.0083849, -0.016984312, 2.9845378e-05, -0.024277724, -0.0014053698, 0.0008194047, -0.0069211703, 0.018119965, 0.013337607, 0.013148331, -0.014940138, 0.015558437, 0.0014755594, -0.0068265325, -0.01007576, -0.011766621, 0.030284064, -0.001716097, -0.0315459, -0.0073880497, 0.0019053724, 0.0069653345, 0.0048139044, 0.014586824, 0.001315464, -0.0017350245, 0.0075647067, -0.0075647067, 0.0049337787, 0.0108959535, 0.0024369208, 0.017564757, 0.013072621, -0.02730613, 0.014586824, 0.02977933, 0.028870808, -0.009501625, -0.012391229, -0.019104198, -0.021905473, -0.006031576, -0.013653065, 0.03533141, 0.02307898, 0.0048517594, 0.012176718, -0.00013919629, -0.0055836244, -0.03061214, -0.009981123, 0.004608856, 0.0053281025, 0.019596312, -0.009110456, 0.008574176, 0.0052839383, -0.02376037, 0.012662524, -0.013337607, -0.03147019, -0.013123094, -0.0034416576, -0.003501595, 0.008340736, -0.017804505, -0.00015043451, -0.0049653244, -0.021211464, 0.0020189376, 0.037754133, -0.031899214, -0.024681512, -0.017022168, 0.020075811, -0.0057508177, 0.006504765, -0.008668813, -0.009501625, 0.008725596, -0.043432396, -0.0038265176, -0.024530092, 0.02116099, 0.020340797, 0.017589994, -0.001494487, -0.0027192566, -0.009217712, 0.005041035, -0.007671963, -0.012479558, 0.0028517493, 0.036189456, 0.0139180515, 0.0036214693, 0.02715471, 0.0315459, 0.022359734, -0.00892749, 0.015987461, 0.012946437, 0.013123094, 0.0027933894, -0.009343895, 0.018170439, -0.015444873, -0.0029369232, 0.005362803, 0.048429266, 0.0051293634, -0.018448042, 0.012454322, 0.00031723347, 0.0013541077, -0.094839595, -0.010649896, 0.023848701, 0.01253634, 0.0032003315, 0.0055646966, -0.0070725908, 0.03447336, 0.019924391, 0.018965395, -0.0041356673, -0.013539501, 0.0060820496, -0.026574265, 0.010712988, 0.0063186437, 0.01115463, -0.020302942, -0.032656316, 0.016706709, -0.0027192566, -0.006416436, -0.013627829, -0.008826543, 0.0021482757, -0.016492197, -0.04209485, 0.026498556, 0.004918006, 0.013362844, 0.028694151, 0.0020410197, -0.008088369, -0.0077035087, -0.0021088433, -0.0151041765, 0.0100631425, -0.008119915, 0.01947013, -0.019419655, -0.0011601005, -0.02339444, 0.0017949617, -0.041943427, 0.011564727, 0.00072042947, -0.01731239, 0.015583674, -0.009911722, -0.000672322, -0.005375421, 0.0108454805, -0.0056593344, 0.00010163695, 0.025653126, -0.01885183, 0.014258747, 0.019495366, -0.046057016, 0.007993731, 0.0044385083, 0.0057034986, -3.728824e-05, 0.029097939, -0.005457441, -0.005653025, -0.024668893, -0.005533151, 0.0073880497, -0.03384244, -0.018044256, 0.033135813, 0.0011246114, 0.023684662, -0.017791888, -0.006201924, -0.04461852, 0.00077129726, 0.020933859, -0.02276352, -0.01130605, -0.013766631, 0.007892784, -0.026372373, 0.0033375563, 0.019747734, 0.007507924, 0.009817084, 0.009552099, 0.00031683914, 0.018031636, 0.023899173, -0.0145742055, -0.024517473, -0.007394359, 0.012012679, -0.025817165, 0.004918006, 0.008132533, -0.018183056, -0.022713048, -0.023142071, -0.043028608, 0.01916729, -0.010914882, -0.02292756, 0.008403827, -0.0144732585, -0.0050063343, -0.0140694715, -0.021842381, 0.023747753, 0.0058233733, 0.026599502, -0.0030331383, -0.013564737, -0.0107445335, 0.009741374, -0.0136404475, -0.0018028482, 0.009028437, -0.00016206707, -0.010731915, 0.002053638, 0.011779239, -0.0017208288, -0.031066403, 0.0036403968, -0.006230315, 0.010933809, -0.03793079, -0.024101067, 0.006107286, -0.025325049, 0.0063501894, 0.05070057, -0.021602632, -0.024214633, -0.009280804, 0.007861238, 0.020782439, -0.02617048, -0.034448124, -0.044139024, 0.0016577371, -0.02876986, 0.0068454603, 0.012359683, 0.0009960618, -0.0006502399, 0.0073249578, 0.0064511364, 0.008365973, 0.021665724, -0.0065678563, -0.008763451, 0.0039810925, -0.034220994, -0.0022287178, -0.0009810774, 0.018599462, -0.005116745, 0.022410206, -0.018763501, 0.0056246337, 0.0034668944, 0.026372373, -0.0043123243, 0.017943308, 0.019192526, -0.0027097927, -0.04146393, 0.004533146, -0.009047364, 0.038687892, -0.00041443427, 0.024744604, 0.00400002, 0.014725626, -0.011091539, -0.013665684, 0.030485958, -0.0018343941, 0.02407583, -0.020605782, 0.024113687, 0.021287173, 0.010176707, -0.023142071, 0.0015047394, 0.0017854979, 0.017438574, -0.031949688, 0.0024668893, 0.013564737, 0.010555258, -0.009716137, 0.004924315, 0.008656195, -0.0105931135, 0.0030788798, 0.06647352, -0.011665674, 0.0014881778, -0.029552199, -0.035028566, -0.02685187, 0.009451152, -0.0068517695, -0.0145742055, 0.0058454555, 0.0077981465, 0.007041045, -0.0017870752, -0.0038896094, 0.021968564, -0.0077666007, 0.017968545, -0.01870041, -0.011634128, -0.004290242, 0.032959156, -0.010271345, 0.008277644, 0.0015938566, -0.0071356827, 0.002107266, 0.0074448325, 0.01776665, -0.01130605, 0.0016261912, 0.011318669, 0.011690911, -0.0019274545, -0.008492156, 0.0016766646, -0.020681491, -0.0071735377, 0.00977292, 0.018776119, 0.013602592, 0.0424734, 0.0062429337, -0.041337747, 0.015369163, -0.00036534097, 0.016630998, 0.007930639, 0.031646848, 0.015167269, -0.011287123, -0.00024802962, -0.0009692478, 0.026902344, 0.0014361271, -0.03131877, -0.021325028, -0.021375502, 0.026448082, -0.031268295, -0.0062366244, -0.0066120205, 0.017034786, 0.022599483, -0.0034290394, -0.015457491, -0.018107347, 0.012984293, -0.01770356, -0.0056120157, -0.006763441, 0.006388045, -0.0030709933, -0.024668893, 0.00043967098, 0.004362798, 0.0038801457, -0.009457461, -0.0043344065, 0.001630923, 0.011148321, 0.002599382, 0.033438653, -0.008403827, -0.006580475, 0.0074195955, 0.01123665, -0.019142052, -0.013135713, -0.02147645] }, { + "object": "embedding", "index": 1, - "embedding": [0.00089398306, -0.00462804, 0.0042670527, -0.0047607105, -0.017598893, 0.003273567, -0.024374345, -0.025522098, 0.0054086363, -0.024312638, -0.018931769, 0.029347945, -0.00042616535, -0.018746648, -0.011675002, -0.019425428, 0.024892684, -0.012687, 0.013587926, -0.008262594, -0.0074048643, 0.017352065, -0.029372627, 0.011428174, -0.007238255, -0.007355498, 0.02142474, -0.012582098, 0.03068082, -0.008873495, 0.008237911, -0.024053467, -0.0022800812, -0.018117234, -0.01122454, -0.00754062, 0.004739113, -0.0063033905, 8.147279e-05, -0.012150148, 0.02151113, -0.0002720902, 0.001740143, -0.01875899, 0.0031362686, -0.0052574533, 0.007546791, 0.010224883, -0.0011215283, 0.020894058, -0.0047175153, -0.0028323606, -0.008151521, -0.032852914, 0.011496051, -0.0066952314, -0.007694888, 0.033124425, -0.022732932, -0.013921144, 0.0149825085, 0.0007686403, -0.00968186, -0.0025608488, -0.012384635, -0.0065162806, 0.017870406, 0.0114405155, -0.005812818, 0.024756929, 0.00745423, -0.00065023964, 0.013180658, -0.0019345208, -0.0083798375, -0.023029128, -0.029965017, 0.003248884, 0.016586896, -0.003949261, 0.010718541, -0.0034093228, -0.03127321, 0.02655878, 0.024682881, 0.0031779208, -0.044676013, 0.0041528945, 0.0017771674, -0.0043842965, 0.01165649, 0.03314911, 0.021992447, -0.01636475, -0.0024096663, 0.0055845017, 0.020474449, 0.026237901, -0.0015565641, -0.023868345, 0.01336578, 0.0058745258, -0.029718189, 0.012322928, -0.03616042, -0.023596834, 0.009064788, 0.006744597, 0.010132322, -0.024300296, -0.021807324, 0.031075746, 0.035987638, -0.03675281, 0.016846066, 0.0029403481, 0.012421659, -0.009848469, -0.02673156, -0.0016167287, 0.016154945, 0.032877598, -0.0011654948, -0.014143291, 0.024868002, 0.0033445302, -0.011347954, -0.032359257, 0.0068001337, -0.0042824796, -0.0018357892, 0.0005187262, -0.011415832, 0.016006848, -0.008972227, 0.015044216, -0.02853341, 0.03872744, -0.02133835, -0.033469986, 0.012150148, 0.020338694, -0.02132601, 0.0056184405, -0.00847857, 0.020104205, 0.012477196, 0.011767563, 0.0057233428, -0.023436395, 0.028434679, -0.028829604, 0.03956666, 0.009496738, 0.017512504, 0.017450796, 0.0057480256, -0.01508124, -0.02981692, 0.013847096, -0.00797257, 0.011162832, 0.024386685, -0.0065779877, 0.014686313, 0.02365854, 0.0115947835, 0.0005488084, -0.0043380163, -0.0047144303, -0.010132322, 0.050698638, -0.018536843, -0.0021767216, -0.0032612255, 0.023510443, 0.015007191, 0.011551588, -0.024374345, -0.010471712, -0.0039184075, 0.0011222997, 0.03386491, 0.0052481974, 0.017672943, 0.013723682, 0.012847439, -0.01756187, -0.0005977885, -0.012020563, 0.015179971, 0.034852225, 0.01062598, -0.004362699, -0.68993586, -0.02211586, 0.007546791, -0.001740143, 0.013415146, 0.03386491, 0.029347945, 0.0034648594, -0.016636262, 0.0011747509, -0.00736784, 4.3002205e-05, 0.0029372629, -0.014291388, 0.007787449, -0.029347945, -0.014994849, 0.009817616, -0.017500162, 0.032532036, -0.0117613925, -0.019770987, -0.021498788, -0.0033291036, 0.026015757, 0.025299953, 0.006991426, 0.0030745612, -0.0033167622, 0.0023587577, -0.012822757, -0.0028863542, -0.0040911874, -0.008083643, 0.036283836, -0.013205341, -0.01122454, 0.031075746, 0.012032905, 0.031421307, 0.013995193, 0.014427143, -0.00021192567, -0.026805608, -0.0029681164, -0.011113467, -0.0043318453, -0.015636604, 0.016673286, 0.0029804579, 0.008614325, 0.0013591012, 0.009885494, 0.02571956, 0.0050846734, -0.006068903, 0.025423367, 0.015883433, -0.026435364, 0.00608433, -0.0023834407, 0.011434345, -0.0010189401, -0.021548154, 0.0048039057, 0.0053839535, -0.0068803527, 0.010897492, 0.009299275, 0.0042115166, -0.016006848, 0.003940005, -0.010070615, 0.0067816214, 3.0082261e-05, -0.005371612, 0.041442554, 0.012051417, -0.00924991, 0.019561183, 0.018438112, 0.007392523, -0.020412741, -0.008336643, 0.020671912, -0.025546782, -0.033198476, -0.013958169, 0.017500162, -0.010564273, 0.016241336, 0.029273896, -0.021005131, -0.0051309536, -0.011094955, 0.0064484025, -0.0091511775, 0.012421659, 0.0077689365, -0.0028863542, 0.0046372963, -0.030039065, -0.010317444, 0.009928688, 0.019598207, 0.01884538, -0.021412399, 0.002713574, -0.003427835, -0.023485761, 0.028928336, 0.011045589, -0.013526218, 0.03403769, -0.012921488, -0.025324635, 0.015871093, 0.014710996, 0.022918055, -0.04507094, 0.016031532, 0.006929719, 0.00012987437, 0.0114405155, -0.0063620126, -0.022560153, 0.0029881713, 0.008077472, -0.015463824, -0.029520726, 0.02742268, 0.0027922508, 0.019178597, 0.007016109, 0.008645179, -0.008435374, 0.016648604, 0.00063095614, 0.011687344, -0.017278016, -0.017919771, 0.014945484, -0.018129576, 0.008330472, 0.0024852576, -0.0066705486, -0.03401301, 0.0024405199, -0.00062671374, 0.0061151837, -0.019252647, -0.008805618, -0.020585522, -0.0044922843, -0.011002394, 0.0048902957, -0.0226342, -0.009712714, -0.0039369194, 0.006090501, 0.021622203, 0.014661631, -0.011804587, 6.05984e-05, -0.0112862475, -0.011064101, -0.0070901574, 0.034062374, -0.029545408, -0.014587582, 0.007923204, -0.0140692415, -0.013575585, -0.008342814, -0.019203281, 0.00086235814, -0.016253676, -0.024473077, -0.008540276, -0.0028385313, 0.009700372, -0.005896123, 0.0033815545, -0.010348298, 0.032186475, 0.002978915, 0.02571956, 0.027644826, -0.013118951, 0.033815548, -0.023238933, -0.013069585, -0.006615012, 0.019647572, -0.0031239272, 0.00030390796, -0.008885837, -0.00033244755, -0.009527592, 0.014686313, 0.01875899, 0.012551244, 0.022239275, -0.020462109, 0.027274583, -0.005704831, 0.008645179, -0.019166257, 0.017105237, 0.034383252, 0.0016367835, -0.009033934, -0.0048810397, 0.004985942, 0.007978741, -0.0023464162, 0.006892694, 0.015278703, 0.0030637626, -0.019351378, -0.02621322, 0.031248527, 0.03512374, -0.040010948, -0.019474793, -0.010440858, 0.017364407, 0.013081927, 0.0011678088, -0.017055871, -0.034210473, 0.010082956, 0.0016738079, 0.0014192656, -0.0034586887, -0.00031875627, 0.013674316, -0.015315727, 0.01901816, -0.0056523797, 0.015488507, 0.02870619, 0.020980448, -0.018820696, 0.017290358, -0.011773734, 0.022128202, 0.011002394, -0.009237568, 0.022955079, -0.013242366, 0.0046403813, -0.017031187, -0.005220429, -3.6108355e-05, -0.022239275, 0.04635445, -0.0031779208, 0.012174831, 0.012785732, 0.011884807, 0.0042115166, -0.00123183, -0.008151521, 1.9440178e-05, 0.011162832, -0.019203281, -0.0034586887, -0.00033726843, -0.012748708, -0.00030545064, -0.016130263, -0.0017864235, -0.030088432, 0.009077129, 0.0024220077, 0.010730882, -0.003292079, -7.6218035e-05, 0.025065465, 0.02168391, -0.0152910445, 0.017389089, 0.02981692, -0.019931426, -0.027447363, -0.037394565, 0.0059855985, -0.005621526, 0.004430577, 0.035025008, 0.023029128, 0.0181666, 0.012896805, 0.0008515594, -0.003616042, 0.019067526, 0.005991769, 0.018907087, -0.014809729, -0.005828245, -0.015562556, -0.032680135, -0.0056431238, 0.030433992, 0.026830291, 0.029347945, 0.009811445, 0.0042886506, -0.0020286243, -0.022498446, -0.020474449, -0.009749738, -0.007386352, -0.011347954, -0.0018990391, 0.008768593, -0.009367153, 0.024682881, 0.016673286, -0.0021921482, -0.009811445, 0.0037425417, -0.004985942, 0.07557898, -0.0059269764, 0.004695918, 0.0019545755, 0.007256767, -0.013032561, -0.024374345, -0.02210352, 0.0014084668, -0.0022847091, 0.0007239026, -0.021943081, -5.3849173e-05, -0.010348298, 0.0033105914, -0.0017077468, 0.0032828231, -0.014032218, 0.016006848, -0.017722309, -0.015871093, -0.0027475131, 0.001075248, -0.017537186, -0.0079170335, -0.0056091845, 0.017598893, 0.005741855, 0.020165913, -0.020116547, 0.0181666, 0.012582098, -0.015735336, -0.016920114, 0.006584158, -0.013513877, -0.0025253673, -0.0037302002, 0.011212198, -0.005158722, 0.015611921, 0.008015766, 0.0018728136, -0.0065162806, 0.0041004433, -0.0054456606, 9.458557e-05, 0.0037147736, -0.013526218, -0.02125196, 0.02544805, -0.0022245445, -0.012687, 0.0042207725, -0.0026318121, 0.014636948, -0.028113801, 0.0029079518, -0.02107918, -0.006584158, -0.0011770648, -0.0140692415, -0.0008330472, -0.00090709585, -0.031766865, -0.010212542, 0.003119299, -0.016303042, -0.0071580354, 0.00762701, 0.0003278195, -0.019573525, -0.017080553, 0.025670195, 0.03435857, 0.014254363, 0.0018234478, -0.017450796, -0.001894411, 0.023214249, -0.003986285, -0.007083987, 0.0116071245, -0.003350701, -0.0062262565, 0.006522451, 0.013180658, -0.020585522, -0.012909146, 0.014994849, 0.02425093, -0.0010073701, 0.01833938, -0.0068433285, -0.016130263, -0.0021042156, 0.0016228994, 0.00805279, -0.01695714, -0.0067260847, 0.017981479, -0.020634888, -0.016611578, -0.030656137, 0.02347342, -0.009120325, 0.020499133, -0.006121354, -0.01669797, 0.006436061, -0.009502909, -0.0065779877, 0.0041775773, -0.018154258, 0.0032334574, 0.012699342, -0.01620431, 0.024300296, -0.0026626657, -0.043096308, 0.009428861, -0.032063063, 0.032186475, 0.027521411, 0.010150835, 0.011422003, -0.019511817, -0.0061336956, -0.015031874, 0.011946514, 0.009052446, 0.018104892, -0.010983882, -0.010558102, -0.009897835, -0.015179971, 0.01585875, 0.020165913, 0.006349671, -0.010595126, -0.023818979, 0.024954392, 0.02707712, -0.011335613, -0.02038806, -0.014155632, 0.01482207, 0.02262186, -0.027768241, 0.017068211, -0.0026333549, -0.0028431593, -0.02836063, 0.0028693848, 0.02312786, 0.0020656486, -0.025818292, -0.0054610875, 0.015229337, 0.024781613, 0.028409995, -0.005297563, 0.017327381, -0.0096139815, -0.008453887, 0.009965713, 0.0054641725, 0.01568597, -0.018438112, 0.02406581, 0.027052436, -0.0038998951, 0.003214945, 0.013871779, -0.0049304054, 0.021980105, 0.00013459883, -0.0038998951, -0.0005333816, -0.036826856, -0.0030622198, 0.029027067, -0.012736366, 0.004146724, -0.0006857213, -0.003099244, -0.0060966713, -0.0044151503, 0.005192661, 0.020807669, 0.015537873, -0.019425428, 0.011730539, 0.0018758989, -0.002883269, -0.012970854, -0.032013696, -0.0009680317, 0.015155288, -0.0026009586, 0.03616042, 0.023152541, 0.0073740105, -0.017376747, -0.0041004433, 0.02947136, 0.01490846, -0.02947136, 0.022350349, -0.0045046257, -0.019758645, -0.016611578, -0.020104205, -0.039640706, 0.002232258, 0.005424063, -0.039023634, 0.017450796, -0.01585875, -0.016241336, -0.001154696, 0.01473568, 0.015389776, -0.029249214, 0.022041813, 0.00642989, -0.026978388, -0.021646887, 0.01800616, -0.009589299, -0.0064052073, 0.016784359, 0.021042155, -0.014957826, -0.0016275274, -0.007009938, 0.0102187125, 0.015722996, -0.030063748, -0.0012248879, 0.012008221, 0.015500849, -0.021992447, 0.0052667097, 0.0010305103, 0.006152208, -0.014538216, -0.015389776, 0.0074048643, -0.013057244, -0.02742268, 0.019499475, -0.02665751, -0.0020671913, 0.00874391, -0.026435364, 0.008768593, -0.019511817, -0.007738083, -0.004695918, -0.018672599, 0.033889595, 0.014933143, 0.030113114, 0.007324645, -0.011181345, -0.0059424033, -0.009996567, 0.011662661, 0.028558092, -0.0115701, -0.009996567, -0.015871093, 0.035000324, 0.0076516927, 0.0058004768, 0.0023541297, -0.009552275, -0.026978388, -0.0007929375, 0.020128889, -0.011434345, -0.024127515, 0.018462794, -0.030532723, -0.0009965713, -0.029940333, 0.003582103, 0.015895775, -0.0019283501, -0.019339036, 0.003788822, -0.01208844, 0.0052142586, 0.0060874154, -0.009620152, 0.018277673, 0.010261907, -0.024090491, 0.012316757, -0.009262251, 0.036925588, 0.00950908, 0.011366466, 0.020881716, -0.01824065, 0.025250586, -0.00079910824, -0.01851216, -0.009157348, 0.022214592, -0.007694888, 0.009453543, -0.01671031, 0.0050599906, 0.01748782, 0.024756929, -0.005766538, 0.00086081546, 0.012699342, -0.01669797, -0.0066890605, 0.021906056, -0.013242366, -0.0043441867, -0.0088303005, -0.012736366, 0.002724373, 0.0010567359, -0.018129576, -0.020857034, 0.010878979, -0.0035018837, -0.02099279, -0.007164206, -0.020104205, -0.01208227, 0.012612952, 0.008811789, 0.0071271816, 0.006460744, 0.025818292, 0.0006012595, 0.01620431, -0.029101117, 0.0069790846, 0.0077689365, 0.00668289, -0.014254363, -0.016340068, 0.0008322759, 0.010274249, 0.025768926, -0.03307506, -0.017709967, 0.0046897475, -0.022523127, 0.0034000669, -0.0014570613, 0.011977368, 0.020215278, -0.010033591, -0.011773734, 0.0033105914, 0.004720601, 0.0074665714, -0.0019345208, 0.010996223, -0.0018990391, -0.002030167, 0.011675002, 0.010866638, -0.017426113, -0.018919427, 0.0076516927, 0.014427143, 0.033124425, 0.019005818, -0.022436738, 0.033445302, -0.014883777, 0.004038736, 0.017919771, 0.02870619, 0.0020224536, -0.008552618, -0.02579361, -0.0069544017, 0.013982852, -0.0060781594, -0.014488851, 0.0028693848, 0.0134521695, -0.013378121, -0.016858408, -0.0030884454, -0.024645856, -0.017290358, -0.002540794, 0.009101812, -0.025744244, 0.013686657, 0.010311273, -0.0028092202, -0.00552588, -0.008669862, 0.0013459884, 0.005707916, -0.0100644445, -0.0028308178, -0.0017771674, -0.008034278, 0.0014439485, -0.023954736, 0.003341445, 0.017092895, -0.0143654365, -0.03751798, 0.031001698, -0.00951525, -0.018549185, 0.013094268, -0.020375717, -0.021622203, 0.013822413, -0.0063805245, -0.0028431593, -0.010342127, 0.008435374, 0.0015149118, -0.005004454, -0.02373259, -0.001538052, 0.028212532, -0.006744597, 0.03147067, 0.22056621, 0.002096502, 0.0037672247, 0.027101804, -0.017635917, 0.033445302, 0.0062108296, -0.010249566, -0.010582785, 0.012045246, 0.009194373, 0.01191566, -0.028089117, 0.0032427134, 0.013217682, -0.007941716, -0.012847439, -0.015957482, -0.022066494, -0.028508727, -0.016451139, 0.0014177229, -0.0116071245, 0.0025917024, 0.012069928, -1.4125164e-05, 0.0037086029, 0.025571464, 0.012921488, -0.0021366118, -0.01627836, -0.00951525, 0.015821727, -0.0067137433, -0.011082613, -0.003915322, 0.00057966204, 0.014957826, 0.013513877, 0.023325322, 0.020597864, 0.009274593, 0.015303385, -0.026805608, -0.016080897, 0.006127525, -0.016870748, -0.01740143, 0.0030406222, 0.0022091179, -0.02014123, -0.024287954, 0.017413773, 0.04823035, -0.004223858, 0.005390124, 0.027101804, 0.005760367, 0.0074912542, -0.004257797, -0.022325665, 0.008731569, -0.005982513, 0.011650319, -0.0016738079, 0.015266362, -0.02184435, 0.01422968, 0.011958855, -0.016056214, 0.02270825, -0.008935203, 0.015204654, -0.0021288984, 0.0034741154, -0.0031686649, 0.0106815165, -0.004334931, 0.032063063, 0.014316071, -0.0026379828, 0.008355155, 0.003230372, -0.0032365427, -0.0062509393, -0.021646887, 0.0039523463, 0.011545417, 0.028311264, 0.0016861493, 0.010638322, -0.005967086, -0.010576614, -0.027620142, 0.008262594, 0.025966391, 0.0055752457, 0.023596834, 0.009632494, 0.0021474105, -0.028138483, -0.020536156, 0.010514907, -0.0007084758, -0.0067199143, 0.014044559, 0.0041960897, 0.004763796, 0.020696595, -0.024399027, 0.020351036, -0.024584148, 0.022300983, -0.0072135716, 0.026410682, -0.0057788794, 0.005056905, -0.02433732, -0.0034864568, 0.0039523463, -0.0045601623, -0.001086818, 0.00711484, -0.008645179, -0.015969824, -0.021523472, -0.031914964, 0.010298932, -0.0122118555, -0.020684253, 0.003264311, -0.015661288, 0.04475006, -0.0021304411, -0.008441545, 0.016191969, -0.0053345873, -0.01182927, 0.006007196, -0.004140553, 0.01646348, 0.0009742024, 0.005680148, -0.009546104, -0.013550902, -0.009194373, -0.0054209777, -0.015994506, -0.043392505, -0.008170034, -0.01988206, -0.010786419, -0.019598207, -0.009725055, 0.012002051, -0.014994849, -0.0363332, 0.0019345208, 0.0028909824, 0.030878283, -0.009737397, 0.020276986, 0.013230024, -0.009996567, -0.008725398, -0.018462794, -0.15560088, 0.019388402, 0.0050846734, -0.007904693, -0.009836128, -0.011724368, 0.018796014, 0.015019532, -0.019339036, 0.03016248, 0.027546095, -0.016722651, -0.03727115, -0.012489538, 0.012810415, -0.00027131886, -0.0021258132, 0.023522785, 0.0035759322, 0.008355155, 0.0049211495, -0.028780239, 0.020116547, 0.0011153576, -0.011366466, 0.0029372629, -0.0031810063, 0.027792923, -0.015105923, -0.0181666, -0.007670205, -0.014513534, 0.011428174, 0.029841602, -0.0037980783, -0.00024200793, -0.023251273, 0.0045138816, -0.017981479, 0.019770987, -0.015611921, 0.009021593, -9.364549e-06, 0.0047853934, -0.010039762, 0.031643454, 0.015797043, 0.012822757, -0.0021798068, -0.013007878, 0.0061645494, -0.015624263, -0.0114528565, -0.017179284, 0.046329767, 0.03240862, 0.0058251596, 0.021449422, 0.011699685, 0.019203281, -0.016241336, -0.0036407248, 0.018388746, 0.0021690081, 0.015611921, -0.024028784, 0.018203624, 0.006676719, -0.029101117, 0.015241679, -0.0034926275, -0.009033934, -0.012921488, -0.021967763, 0.0016290701, 0.0055752457, -0.020659572, 0.015130606, -0.006608841, -0.026879657, -0.0013668145, 0.045712695, -0.0009680317, -0.018438112, -0.0076455222, 0.012748708, 0.017981479, -0.008410691, -0.013155975, -0.005735684, 0.00014520476, -0.043738063, 0.023325322, -0.037246466, 0.016549872, 0.010872809, -0.016944798, -0.0011894063, -0.0029125798, -0.0042732237, -0.0017092895, -0.0031285551, -0.024275612, -0.0019036671, 0.010126152, 0.021474106, 0.017956795, 0.01954884, 0.04114636, 0.025090149, -0.008935203, 0.015229337, 0.013353438, 0.028039752, -0.0030344515, 0.0047761374, 0.023461077, -0.0091511775, -0.0076455222, 0.01464929, 0.03914705, -0.01996845, 0.010440858, 0.014513534, 0.009990396, -0.020770645, -0.09379494, -0.027373314, 0.0034556033, 0.0012865951, 0.007448059, 0.0217703, -0.0054364046, 0.0115947835, -0.004732942, 0.014994849, -0.00685567, -0.020869376, -0.017919771, -0.012785732, 0.025040783, 0.0033599571, 0.024004102, -0.011724368, -0.03830783, 0.010089127, -0.020178255, -0.00951525, -0.021153228, 0.006152208, -0.0014161803, -0.010601297, -0.04050461, 0.016636262, 0.010891321, 0.0065101096, -0.0041436385, 0.010039762, 0.01594514, -0.022584835, -0.014081583, -0.013834755, -0.0140569005, -0.013513877, 0.011175174, -0.03418579, -0.0018033929, 8.282263e-05, 0.004393553, -0.027348632, -0.018055527, 0.00847857, -0.0024405199, 0.020795327, 0.0017200882, -0.00968186, -0.019215623, 0.017253334, -0.0030822747, 0.0034432618, 0.030656137, -0.024522442, 0.02082001, 0.005535136, -0.031569403, 0.011070272, -0.0015071984, 0.00924991, 0.018487478, 0.02312786, -0.017500162, -0.006590329, -0.016599238, 0.0123661235, 0.019647572, -0.029890968, -0.009286934, 0.010095298, -0.020289328, 0.004779223, -0.010514907, 0.00056539226, -0.03050804, -0.015525532, 0.020894058, -0.008151521, -0.009219056, -0.007898522, 0.0029295494, -0.035469297, -0.018055527, 0.0250161, 0.0053438437, -0.027546095, -0.0046156985, -0.005896123, 0.0012326014, 0.031692818, 0.02347342, -0.033198476, -0.026706876, 0.023559809, 8.370244e-06, 0.017092895, -0.015463824, -0.011835441, -0.00745423, -0.018610891, -0.032951646, 0.0167967, -0.009743567, -0.029150482, 0.0025809037, -0.008774764, 0.009398007, -0.018833037, -0.008620496, 0.022288641, -0.021461764, 0.0019391488, 0.0022384287, -0.009638665, -0.0344573, 0.020931082, -0.00084307464, 0.007293791, -0.00736784, -0.0066890605, -0.005655465, 0.012785732, -0.00823174, -0.008768593, -0.010582785, 0.004507711, 0.006254025, 0.02880492, -0.019215623, -0.018018503, 0.027447363, -0.012909146, 0.011175174, 0.02579361, -0.02056084, -0.024756929, 0.0017000334, 0.01054576, 0.008281106, -0.02406581, -0.00720123, -0.0317175, 0.009206714, -0.009953371, -0.010101469, 0.001460918, -0.023707906, -0.0044213207, 0.0022785384, 0.017524846, 0.0137483645, 0.023868345, -0.028730873, -0.007318474, -0.0062509393, -0.03102638, 0.0008723856, 0.0013297902, -0.006701402, -0.015821727, 0.02665751, -0.0067569385, 0.001011998, -0.014846752, 0.020696595, -0.0037949928, -0.009089471, -0.0039585168, -0.004276309, -0.02511483, -0.017759332, 0.008348985, 0.019055184, 0.0051463805, 0.021918397, -0.015537873, -0.0072197425, -0.021634545, -0.009410348, 0.007269108, 0.002695062, -0.006349671, -0.035000324, -0.00094334886, 0.03699964, 0.019561183, -0.013847096, 0.0007624696, -0.0021875203, -0.00075398484, -0.039048318, 0.007170377, -0.0018280759, -0.0008176204, -0.013958169, -0.0046588937, -0.006272537, -0.008367497, 0.004810076, 0.060522422, 0.009058617, 0.0031424393, -0.025398685, -0.03418579, -0.0041498095, 0.015179971, -0.001009684, -0.0023063067, -0.0126746595, -0.023448735, 0.019993134, -0.022905713, -0.006374354, 0.020523814, 0.003119299, 0.00066836615, -0.01721631, -0.01285978, -0.024300296, 0.03857934, -0.008207058, 0.02700307, -0.00968186, 0.016117921, 0.02887897, 0.002729001, 0.0126746595, -0.010638322, 0.010144664, 0.0044953697, 0.026929023, 0.0006228571, 0.0015642776, -0.0017231735, -0.036456615, 2.7286153e-05, 0.011644149, 0.015871093, -0.0060565616, 0.044700697, -0.0012611409, -0.04072675, 0.02766951, -0.0075961566, -0.0006085873, 0.024090491, -0.0053932094, -0.013575585, -0.008095984, 0.0005711773, 0.01173671, 0.018055527, 0.00565855, -0.025262928, -0.0045601623, -0.020782985, 0.0075035957, -0.033692133, -0.0209064, 0.014081583, 0.013180658, 0.015216996, 0.0062355124, 0.0067877923, -0.017500162, 0.017858064, -0.0023541297, 0.006368183, -0.0011153576, 0.0039369194, 0.014587582, -0.042355824, -0.013020219, 0.0028724703, 0.0005954745, -0.018018503, -0.021227278, 0.008632838, 0.02031401, 0.0004061105, 0.041417874, -0.016253676, -0.03203838, 0.014303729, -0.0027274583, -0.018314697, -0.019092208, -0.01714226], - "object": "embedding" + "embedding": [0.00089398306, -0.00462804, 0.0042670527, -0.0047607105, -0.017598893, 0.003273567, -0.024374345, -0.025522098, 0.0054086363, -0.024312638, -0.018931769, 0.029347945, -0.00042616535, -0.018746648, -0.011675002, -0.019425428, 0.024892684, -0.012687, 0.013587926, -0.008262594, -0.0074048643, 0.017352065, -0.029372627, 0.011428174, -0.007238255, -0.007355498, 0.02142474, -0.012582098, 0.03068082, -0.008873495, 0.008237911, -0.024053467, -0.0022800812, -0.018117234, -0.01122454, -0.00754062, 0.004739113, -0.0063033905, 8.147279e-05, -0.012150148, 0.02151113, -0.0002720902, 0.001740143, -0.01875899, 0.0031362686, -0.0052574533, 0.007546791, 0.010224883, -0.0011215283, 0.020894058, -0.0047175153, -0.0028323606, -0.008151521, -0.032852914, 0.011496051, -0.0066952314, -0.007694888, 0.033124425, -0.022732932, -0.013921144, 0.0149825085, 0.0007686403, -0.00968186, -0.0025608488, -0.012384635, -0.0065162806, 0.017870406, 0.0114405155, -0.005812818, 0.024756929, 0.00745423, -0.00065023964, 0.013180658, -0.0019345208, -0.0083798375, -0.023029128, -0.029965017, 0.003248884, 0.016586896, -0.003949261, 0.010718541, -0.0034093228, -0.03127321, 0.02655878, 0.024682881, 0.0031779208, -0.044676013, 0.0041528945, 0.0017771674, -0.0043842965, 0.01165649, 0.03314911, 0.021992447, -0.01636475, -0.0024096663, 0.0055845017, 0.020474449, 0.026237901, -0.0015565641, -0.023868345, 0.01336578, 0.0058745258, -0.029718189, 0.012322928, -0.03616042, -0.023596834, 0.009064788, 0.006744597, 0.010132322, -0.024300296, -0.021807324, 0.031075746, 0.035987638, -0.03675281, 0.016846066, 0.0029403481, 0.012421659, -0.009848469, -0.02673156, -0.0016167287, 0.016154945, 0.032877598, -0.0011654948, -0.014143291, 0.024868002, 0.0033445302, -0.011347954, -0.032359257, 0.0068001337, -0.0042824796, -0.0018357892, 0.0005187262, -0.011415832, 0.016006848, -0.008972227, 0.015044216, -0.02853341, 0.03872744, -0.02133835, -0.033469986, 0.012150148, 0.020338694, -0.02132601, 0.0056184405, -0.00847857, 0.020104205, 0.012477196, 0.011767563, 0.0057233428, -0.023436395, 0.028434679, -0.028829604, 0.03956666, 0.009496738, 0.017512504, 0.017450796, 0.0057480256, -0.01508124, -0.02981692, 0.013847096, -0.00797257, 0.011162832, 0.024386685, -0.0065779877, 0.014686313, 0.02365854, 0.0115947835, 0.0005488084, -0.0043380163, -0.0047144303, -0.010132322, 0.050698638, -0.018536843, -0.0021767216, -0.0032612255, 0.023510443, 0.015007191, 0.011551588, -0.024374345, -0.010471712, -0.0039184075, 0.0011222997, 0.03386491, 0.0052481974, 0.017672943, 0.013723682, 0.012847439, -0.01756187, -0.0005977885, -0.012020563, 0.015179971, 0.034852225, 0.01062598, -0.004362699, -0.68993586, -0.02211586, 0.007546791, -0.001740143, 0.013415146, 0.03386491, 0.029347945, 0.0034648594, -0.016636262, 0.0011747509, -0.00736784, 4.3002205e-05, 0.0029372629, -0.014291388, 0.007787449, -0.029347945, -0.014994849, 0.009817616, -0.017500162, 0.032532036, -0.0117613925, -0.019770987, -0.021498788, -0.0033291036, 0.026015757, 0.025299953, 0.006991426, 0.0030745612, -0.0033167622, 0.0023587577, -0.012822757, -0.0028863542, -0.0040911874, -0.008083643, 0.036283836, -0.013205341, -0.01122454, 0.031075746, 0.012032905, 0.031421307, 0.013995193, 0.014427143, -0.00021192567, -0.026805608, -0.0029681164, -0.011113467, -0.0043318453, -0.015636604, 0.016673286, 0.0029804579, 0.008614325, 0.0013591012, 0.009885494, 0.02571956, 0.0050846734, -0.006068903, 0.025423367, 0.015883433, -0.026435364, 0.00608433, -0.0023834407, 0.011434345, -0.0010189401, -0.021548154, 0.0048039057, 0.0053839535, -0.0068803527, 0.010897492, 0.009299275, 0.0042115166, -0.016006848, 0.003940005, -0.010070615, 0.0067816214, 3.0082261e-05, -0.005371612, 0.041442554, 0.012051417, -0.00924991, 0.019561183, 0.018438112, 0.007392523, -0.020412741, -0.008336643, 0.020671912, -0.025546782, -0.033198476, -0.013958169, 0.017500162, -0.010564273, 0.016241336, 0.029273896, -0.021005131, -0.0051309536, -0.011094955, 0.0064484025, -0.0091511775, 0.012421659, 0.0077689365, -0.0028863542, 0.0046372963, -0.030039065, -0.010317444, 0.009928688, 0.019598207, 0.01884538, -0.021412399, 0.002713574, -0.003427835, -0.023485761, 0.028928336, 0.011045589, -0.013526218, 0.03403769, -0.012921488, -0.025324635, 0.015871093, 0.014710996, 0.022918055, -0.04507094, 0.016031532, 0.006929719, 0.00012987437, 0.0114405155, -0.0063620126, -0.022560153, 0.0029881713, 0.008077472, -0.015463824, -0.029520726, 0.02742268, 0.0027922508, 0.019178597, 0.007016109, 0.008645179, -0.008435374, 0.016648604, 0.00063095614, 0.011687344, -0.017278016, -0.017919771, 0.014945484, -0.018129576, 0.008330472, 0.0024852576, -0.0066705486, -0.03401301, 0.0024405199, -0.00062671374, 0.0061151837, -0.019252647, -0.008805618, -0.020585522, -0.0044922843, -0.011002394, 0.0048902957, -0.0226342, -0.009712714, -0.0039369194, 0.006090501, 0.021622203, 0.014661631, -0.011804587, 6.05984e-05, -0.0112862475, -0.011064101, -0.0070901574, 0.034062374, -0.029545408, -0.014587582, 0.007923204, -0.0140692415, -0.013575585, -0.008342814, -0.019203281, 0.00086235814, -0.016253676, -0.024473077, -0.008540276, -0.0028385313, 0.009700372, -0.005896123, 0.0033815545, -0.010348298, 0.032186475, 0.002978915, 0.02571956, 0.027644826, -0.013118951, 0.033815548, -0.023238933, -0.013069585, -0.006615012, 0.019647572, -0.0031239272, 0.00030390796, -0.008885837, -0.00033244755, -0.009527592, 0.014686313, 0.01875899, 0.012551244, 0.022239275, -0.020462109, 0.027274583, -0.005704831, 0.008645179, -0.019166257, 0.017105237, 0.034383252, 0.0016367835, -0.009033934, -0.0048810397, 0.004985942, 0.007978741, -0.0023464162, 0.006892694, 0.015278703, 0.0030637626, -0.019351378, -0.02621322, 0.031248527, 0.03512374, -0.040010948, -0.019474793, -0.010440858, 0.017364407, 0.013081927, 0.0011678088, -0.017055871, -0.034210473, 0.010082956, 0.0016738079, 0.0014192656, -0.0034586887, -0.00031875627, 0.013674316, -0.015315727, 0.01901816, -0.0056523797, 0.015488507, 0.02870619, 0.020980448, -0.018820696, 0.017290358, -0.011773734, 0.022128202, 0.011002394, -0.009237568, 0.022955079, -0.013242366, 0.0046403813, -0.017031187, -0.005220429, -3.6108355e-05, -0.022239275, 0.04635445, -0.0031779208, 0.012174831, 0.012785732, 0.011884807, 0.0042115166, -0.00123183, -0.008151521, 1.9440178e-05, 0.011162832, -0.019203281, -0.0034586887, -0.00033726843, -0.012748708, -0.00030545064, -0.016130263, -0.0017864235, -0.030088432, 0.009077129, 0.0024220077, 0.010730882, -0.003292079, -7.6218035e-05, 0.025065465, 0.02168391, -0.0152910445, 0.017389089, 0.02981692, -0.019931426, -0.027447363, -0.037394565, 0.0059855985, -0.005621526, 0.004430577, 0.035025008, 0.023029128, 0.0181666, 0.012896805, 0.0008515594, -0.003616042, 0.019067526, 0.005991769, 0.018907087, -0.014809729, -0.005828245, -0.015562556, -0.032680135, -0.0056431238, 0.030433992, 0.026830291, 0.029347945, 0.009811445, 0.0042886506, -0.0020286243, -0.022498446, -0.020474449, -0.009749738, -0.007386352, -0.011347954, -0.0018990391, 0.008768593, -0.009367153, 0.024682881, 0.016673286, -0.0021921482, -0.009811445, 0.0037425417, -0.004985942, 0.07557898, -0.0059269764, 0.004695918, 0.0019545755, 0.007256767, -0.013032561, -0.024374345, -0.02210352, 0.0014084668, -0.0022847091, 0.0007239026, -0.021943081, -5.3849173e-05, -0.010348298, 0.0033105914, -0.0017077468, 0.0032828231, -0.014032218, 0.016006848, -0.017722309, -0.015871093, -0.0027475131, 0.001075248, -0.017537186, -0.0079170335, -0.0056091845, 0.017598893, 0.005741855, 0.020165913, -0.020116547, 0.0181666, 0.012582098, -0.015735336, -0.016920114, 0.006584158, -0.013513877, -0.0025253673, -0.0037302002, 0.011212198, -0.005158722, 0.015611921, 0.008015766, 0.0018728136, -0.0065162806, 0.0041004433, -0.0054456606, 9.458557e-05, 0.0037147736, -0.013526218, -0.02125196, 0.02544805, -0.0022245445, -0.012687, 0.0042207725, -0.0026318121, 0.014636948, -0.028113801, 0.0029079518, -0.02107918, -0.006584158, -0.0011770648, -0.0140692415, -0.0008330472, -0.00090709585, -0.031766865, -0.010212542, 0.003119299, -0.016303042, -0.0071580354, 0.00762701, 0.0003278195, -0.019573525, -0.017080553, 0.025670195, 0.03435857, 0.014254363, 0.0018234478, -0.017450796, -0.001894411, 0.023214249, -0.003986285, -0.007083987, 0.0116071245, -0.003350701, -0.0062262565, 0.006522451, 0.013180658, -0.020585522, -0.012909146, 0.014994849, 0.02425093, -0.0010073701, 0.01833938, -0.0068433285, -0.016130263, -0.0021042156, 0.0016228994, 0.00805279, -0.01695714, -0.0067260847, 0.017981479, -0.020634888, -0.016611578, -0.030656137, 0.02347342, -0.009120325, 0.020499133, -0.006121354, -0.01669797, 0.006436061, -0.009502909, -0.0065779877, 0.0041775773, -0.018154258, 0.0032334574, 0.012699342, -0.01620431, 0.024300296, -0.0026626657, -0.043096308, 0.009428861, -0.032063063, 0.032186475, 0.027521411, 0.010150835, 0.011422003, -0.019511817, -0.0061336956, -0.015031874, 0.011946514, 0.009052446, 0.018104892, -0.010983882, -0.010558102, -0.009897835, -0.015179971, 0.01585875, 0.020165913, 0.006349671, -0.010595126, -0.023818979, 0.024954392, 0.02707712, -0.011335613, -0.02038806, -0.014155632, 0.01482207, 0.02262186, -0.027768241, 0.017068211, -0.0026333549, -0.0028431593, -0.02836063, 0.0028693848, 0.02312786, 0.0020656486, -0.025818292, -0.0054610875, 0.015229337, 0.024781613, 0.028409995, -0.005297563, 0.017327381, -0.0096139815, -0.008453887, 0.009965713, 0.0054641725, 0.01568597, -0.018438112, 0.02406581, 0.027052436, -0.0038998951, 0.003214945, 0.013871779, -0.0049304054, 0.021980105, 0.00013459883, -0.0038998951, -0.0005333816, -0.036826856, -0.0030622198, 0.029027067, -0.012736366, 0.004146724, -0.0006857213, -0.003099244, -0.0060966713, -0.0044151503, 0.005192661, 0.020807669, 0.015537873, -0.019425428, 0.011730539, 0.0018758989, -0.002883269, -0.012970854, -0.032013696, -0.0009680317, 0.015155288, -0.0026009586, 0.03616042, 0.023152541, 0.0073740105, -0.017376747, -0.0041004433, 0.02947136, 0.01490846, -0.02947136, 0.022350349, -0.0045046257, -0.019758645, -0.016611578, -0.020104205, -0.039640706, 0.002232258, 0.005424063, -0.039023634, 0.017450796, -0.01585875, -0.016241336, -0.001154696, 0.01473568, 0.015389776, -0.029249214, 0.022041813, 0.00642989, -0.026978388, -0.021646887, 0.01800616, -0.009589299, -0.0064052073, 0.016784359, 0.021042155, -0.014957826, -0.0016275274, -0.007009938, 0.0102187125, 0.015722996, -0.030063748, -0.0012248879, 0.012008221, 0.015500849, -0.021992447, 0.0052667097, 0.0010305103, 0.006152208, -0.014538216, -0.015389776, 0.0074048643, -0.013057244, -0.02742268, 0.019499475, -0.02665751, -0.0020671913, 0.00874391, -0.026435364, 0.008768593, -0.019511817, -0.007738083, -0.004695918, -0.018672599, 0.033889595, 0.014933143, 0.030113114, 0.007324645, -0.011181345, -0.0059424033, -0.009996567, 0.011662661, 0.028558092, -0.0115701, -0.009996567, -0.015871093, 0.035000324, 0.0076516927, 0.0058004768, 0.0023541297, -0.009552275, -0.026978388, -0.0007929375, 0.020128889, -0.011434345, -0.024127515, 0.018462794, -0.030532723, -0.0009965713, -0.029940333, 0.003582103, 0.015895775, -0.0019283501, -0.019339036, 0.003788822, -0.01208844, 0.0052142586, 0.0060874154, -0.009620152, 0.018277673, 0.010261907, -0.024090491, 0.012316757, -0.009262251, 0.036925588, 0.00950908, 0.011366466, 0.020881716, -0.01824065, 0.025250586, -0.00079910824, -0.01851216, -0.009157348, 0.022214592, -0.007694888, 0.009453543, -0.01671031, 0.0050599906, 0.01748782, 0.024756929, -0.005766538, 0.00086081546, 0.012699342, -0.01669797, -0.0066890605, 0.021906056, -0.013242366, -0.0043441867, -0.0088303005, -0.012736366, 0.002724373, 0.0010567359, -0.018129576, -0.020857034, 0.010878979, -0.0035018837, -0.02099279, -0.007164206, -0.020104205, -0.01208227, 0.012612952, 0.008811789, 0.0071271816, 0.006460744, 0.025818292, 0.0006012595, 0.01620431, -0.029101117, 0.0069790846, 0.0077689365, 0.00668289, -0.014254363, -0.016340068, 0.0008322759, 0.010274249, 0.025768926, -0.03307506, -0.017709967, 0.0046897475, -0.022523127, 0.0034000669, -0.0014570613, 0.011977368, 0.020215278, -0.010033591, -0.011773734, 0.0033105914, 0.004720601, 0.0074665714, -0.0019345208, 0.010996223, -0.0018990391, -0.002030167, 0.011675002, 0.010866638, -0.017426113, -0.018919427, 0.0076516927, 0.014427143, 0.033124425, 0.019005818, -0.022436738, 0.033445302, -0.014883777, 0.004038736, 0.017919771, 0.02870619, 0.0020224536, -0.008552618, -0.02579361, -0.0069544017, 0.013982852, -0.0060781594, -0.014488851, 0.0028693848, 0.0134521695, -0.013378121, -0.016858408, -0.0030884454, -0.024645856, -0.017290358, -0.002540794, 0.009101812, -0.025744244, 0.013686657, 0.010311273, -0.0028092202, -0.00552588, -0.008669862, 0.0013459884, 0.005707916, -0.0100644445, -0.0028308178, -0.0017771674, -0.008034278, 0.0014439485, -0.023954736, 0.003341445, 0.017092895, -0.0143654365, -0.03751798, 0.031001698, -0.00951525, -0.018549185, 0.013094268, -0.020375717, -0.021622203, 0.013822413, -0.0063805245, -0.0028431593, -0.010342127, 0.008435374, 0.0015149118, -0.005004454, -0.02373259, -0.001538052, 0.028212532, -0.006744597, 0.03147067, 0.22056621, 0.002096502, 0.0037672247, 0.027101804, -0.017635917, 0.033445302, 0.0062108296, -0.010249566, -0.010582785, 0.012045246, 0.009194373, 0.01191566, -0.028089117, 0.0032427134, 0.013217682, -0.007941716, -0.012847439, -0.015957482, -0.022066494, -0.028508727, -0.016451139, 0.0014177229, -0.0116071245, 0.0025917024, 0.012069928, -1.4125164e-05, 0.0037086029, 0.025571464, 0.012921488, -0.0021366118, -0.01627836, -0.00951525, 0.015821727, -0.0067137433, -0.011082613, -0.003915322, 0.00057966204, 0.014957826, 0.013513877, 0.023325322, 0.020597864, 0.009274593, 0.015303385, -0.026805608, -0.016080897, 0.006127525, -0.016870748, -0.01740143, 0.0030406222, 0.0022091179, -0.02014123, -0.024287954, 0.017413773, 0.04823035, -0.004223858, 0.005390124, 0.027101804, 0.005760367, 0.0074912542, -0.004257797, -0.022325665, 0.008731569, -0.005982513, 0.011650319, -0.0016738079, 0.015266362, -0.02184435, 0.01422968, 0.011958855, -0.016056214, 0.02270825, -0.008935203, 0.015204654, -0.0021288984, 0.0034741154, -0.0031686649, 0.0106815165, -0.004334931, 0.032063063, 0.014316071, -0.0026379828, 0.008355155, 0.003230372, -0.0032365427, -0.0062509393, -0.021646887, 0.0039523463, 0.011545417, 0.028311264, 0.0016861493, 0.010638322, -0.005967086, -0.010576614, -0.027620142, 0.008262594, 0.025966391, 0.0055752457, 0.023596834, 0.009632494, 0.0021474105, -0.028138483, -0.020536156, 0.010514907, -0.0007084758, -0.0067199143, 0.014044559, 0.0041960897, 0.004763796, 0.020696595, -0.024399027, 0.020351036, -0.024584148, 0.022300983, -0.0072135716, 0.026410682, -0.0057788794, 0.005056905, -0.02433732, -0.0034864568, 0.0039523463, -0.0045601623, -0.001086818, 0.00711484, -0.008645179, -0.015969824, -0.021523472, -0.031914964, 0.010298932, -0.0122118555, -0.020684253, 0.003264311, -0.015661288, 0.04475006, -0.0021304411, -0.008441545, 0.016191969, -0.0053345873, -0.01182927, 0.006007196, -0.004140553, 0.01646348, 0.0009742024, 0.005680148, -0.009546104, -0.013550902, -0.009194373, -0.0054209777, -0.015994506, -0.043392505, -0.008170034, -0.01988206, -0.010786419, -0.019598207, -0.009725055, 0.012002051, -0.014994849, -0.0363332, 0.0019345208, 0.0028909824, 0.030878283, -0.009737397, 0.020276986, 0.013230024, -0.009996567, -0.008725398, -0.018462794, -0.15560088, 0.019388402, 0.0050846734, -0.007904693, -0.009836128, -0.011724368, 0.018796014, 0.015019532, -0.019339036, 0.03016248, 0.027546095, -0.016722651, -0.03727115, -0.012489538, 0.012810415, -0.00027131886, -0.0021258132, 0.023522785, 0.0035759322, 0.008355155, 0.0049211495, -0.028780239, 0.020116547, 0.0011153576, -0.011366466, 0.0029372629, -0.0031810063, 0.027792923, -0.015105923, -0.0181666, -0.007670205, -0.014513534, 0.011428174, 0.029841602, -0.0037980783, -0.00024200793, -0.023251273, 0.0045138816, -0.017981479, 0.019770987, -0.015611921, 0.009021593, -9.364549e-06, 0.0047853934, -0.010039762, 0.031643454, 0.015797043, 0.012822757, -0.0021798068, -0.013007878, 0.0061645494, -0.015624263, -0.0114528565, -0.017179284, 0.046329767, 0.03240862, 0.0058251596, 0.021449422, 0.011699685, 0.019203281, -0.016241336, -0.0036407248, 0.018388746, 0.0021690081, 0.015611921, -0.024028784, 0.018203624, 0.006676719, -0.029101117, 0.015241679, -0.0034926275, -0.009033934, -0.012921488, -0.021967763, 0.0016290701, 0.0055752457, -0.020659572, 0.015130606, -0.006608841, -0.026879657, -0.0013668145, 0.045712695, -0.0009680317, -0.018438112, -0.0076455222, 0.012748708, 0.017981479, -0.008410691, -0.013155975, -0.005735684, 0.00014520476, -0.043738063, 0.023325322, -0.037246466, 0.016549872, 0.010872809, -0.016944798, -0.0011894063, -0.0029125798, -0.0042732237, -0.0017092895, -0.0031285551, -0.024275612, -0.0019036671, 0.010126152, 0.021474106, 0.017956795, 0.01954884, 0.04114636, 0.025090149, -0.008935203, 0.015229337, 0.013353438, 0.028039752, -0.0030344515, 0.0047761374, 0.023461077, -0.0091511775, -0.0076455222, 0.01464929, 0.03914705, -0.01996845, 0.010440858, 0.014513534, 0.009990396, -0.020770645, -0.09379494, -0.027373314, 0.0034556033, 0.0012865951, 0.007448059, 0.0217703, -0.0054364046, 0.0115947835, -0.004732942, 0.014994849, -0.00685567, -0.020869376, -0.017919771, -0.012785732, 0.025040783, 0.0033599571, 0.024004102, -0.011724368, -0.03830783, 0.010089127, -0.020178255, -0.00951525, -0.021153228, 0.006152208, -0.0014161803, -0.010601297, -0.04050461, 0.016636262, 0.010891321, 0.0065101096, -0.0041436385, 0.010039762, 0.01594514, -0.022584835, -0.014081583, -0.013834755, -0.0140569005, -0.013513877, 0.011175174, -0.03418579, -0.0018033929, 8.282263e-05, 0.004393553, -0.027348632, -0.018055527, 0.00847857, -0.0024405199, 0.020795327, 0.0017200882, -0.00968186, -0.019215623, 0.017253334, -0.0030822747, 0.0034432618, 0.030656137, -0.024522442, 0.02082001, 0.005535136, -0.031569403, 0.011070272, -0.0015071984, 0.00924991, 0.018487478, 0.02312786, -0.017500162, -0.006590329, -0.016599238, 0.0123661235, 0.019647572, -0.029890968, -0.009286934, 0.010095298, -0.020289328, 0.004779223, -0.010514907, 0.00056539226, -0.03050804, -0.015525532, 0.020894058, -0.008151521, -0.009219056, -0.007898522, 0.0029295494, -0.035469297, -0.018055527, 0.0250161, 0.0053438437, -0.027546095, -0.0046156985, -0.005896123, 0.0012326014, 0.031692818, 0.02347342, -0.033198476, -0.026706876, 0.023559809, 8.370244e-06, 0.017092895, -0.015463824, -0.011835441, -0.00745423, -0.018610891, -0.032951646, 0.0167967, -0.009743567, -0.029150482, 0.0025809037, -0.008774764, 0.009398007, -0.018833037, -0.008620496, 0.022288641, -0.021461764, 0.0019391488, 0.0022384287, -0.009638665, -0.0344573, 0.020931082, -0.00084307464, 0.007293791, -0.00736784, -0.0066890605, -0.005655465, 0.012785732, -0.00823174, -0.008768593, -0.010582785, 0.004507711, 0.006254025, 0.02880492, -0.019215623, -0.018018503, 0.027447363, -0.012909146, 0.011175174, 0.02579361, -0.02056084, -0.024756929, 0.0017000334, 0.01054576, 0.008281106, -0.02406581, -0.00720123, -0.0317175, 0.009206714, -0.009953371, -0.010101469, 0.001460918, -0.023707906, -0.0044213207, 0.0022785384, 0.017524846, 0.0137483645, 0.023868345, -0.028730873, -0.007318474, -0.0062509393, -0.03102638, 0.0008723856, 0.0013297902, -0.006701402, -0.015821727, 0.02665751, -0.0067569385, 0.001011998, -0.014846752, 0.020696595, -0.0037949928, -0.009089471, -0.0039585168, -0.004276309, -0.02511483, -0.017759332, 0.008348985, 0.019055184, 0.0051463805, 0.021918397, -0.015537873, -0.0072197425, -0.021634545, -0.009410348, 0.007269108, 0.002695062, -0.006349671, -0.035000324, -0.00094334886, 0.03699964, 0.019561183, -0.013847096, 0.0007624696, -0.0021875203, -0.00075398484, -0.039048318, 0.007170377, -0.0018280759, -0.0008176204, -0.013958169, -0.0046588937, -0.006272537, -0.008367497, 0.004810076, 0.060522422, 0.009058617, 0.0031424393, -0.025398685, -0.03418579, -0.0041498095, 0.015179971, -0.001009684, -0.0023063067, -0.0126746595, -0.023448735, 0.019993134, -0.022905713, -0.006374354, 0.020523814, 0.003119299, 0.00066836615, -0.01721631, -0.01285978, -0.024300296, 0.03857934, -0.008207058, 0.02700307, -0.00968186, 0.016117921, 0.02887897, 0.002729001, 0.0126746595, -0.010638322, 0.010144664, 0.0044953697, 0.026929023, 0.0006228571, 0.0015642776, -0.0017231735, -0.036456615, 2.7286153e-05, 0.011644149, 0.015871093, -0.0060565616, 0.044700697, -0.0012611409, -0.04072675, 0.02766951, -0.0075961566, -0.0006085873, 0.024090491, -0.0053932094, -0.013575585, -0.008095984, 0.0005711773, 0.01173671, 0.018055527, 0.00565855, -0.025262928, -0.0045601623, -0.020782985, 0.0075035957, -0.033692133, -0.0209064, 0.014081583, 0.013180658, 0.015216996, 0.0062355124, 0.0067877923, -0.017500162, 0.017858064, -0.0023541297, 0.006368183, -0.0011153576, 0.0039369194, 0.014587582, -0.042355824, -0.013020219, 0.0028724703, 0.0005954745, -0.018018503, -0.021227278, 0.008632838, 0.02031401, 0.0004061105, 0.041417874, -0.016253676, -0.03203838, 0.014303729, -0.0027274583, -0.018314697, -0.019092208, -0.01714226] }, { "object": "embedding", @@ -56,9 +59,8 @@ X-Request-Id: req_abf0d970e0c4416886161077433d76b9 "usage": { "prompt_tokens": 24, "total_tokens": 24 - }, - "object": "list" -}265 22111 + } +}265 22162 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -70,44 +72,46 @@ Content-Type: application/json Content-Length: 21207 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Thu, 22 Jan 2026 20:04:09 GMT +Date: Mon, 21 Sep 2026 07:47:56 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst -Openai-Processing-Ms: 36 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 98 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload -Via: envoy-router-5c8d7bd656-frpsx +Via: envoy-router-84fffc8dd7-ccgqv X-Content-Type-Options: nosniff -X-Envoy-Upstream-Service-Time: 53 +X-Engine-Geography: EU X-Openai-Proxy-Wasm: v0.1 X-Ratelimit-Limit-Requests: 10000 X-Ratelimit-Limit-Tokens: 10000000 X-Ratelimit-Remaining-Requests: 9999 -X-Ratelimit-Remaining-Tokens: 9999995 +X-Ratelimit-Remaining-Tokens: 9999994 X-Ratelimit-Reset-Requests: 6ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_91060d2426ce49c8ab7885a26baa4a3b +X-Request-Id: req_eb5eade10a984f59872a758c105c830a { - "object": "list", "data": [ { + "object": "embedding", "index": 0, - "embedding": [0.014726514, -0.0071365014, 0.0019683642, -0.024905318, -0.01816564, 0.0029745921, -0.042025365, -0.011350376, 0.015494963, -0.006342857, 0.004730373, 0.008112811, -0.022121266, 0.0067837704, -0.014965867, 0.00699163, 0.021466194, 0.010367768, 0.007438842, -0.021466194, -0.044368505, 0.01642718, -0.010682707, 0.009750489, -0.022373216, 0.013617931, 0.023859724, -0.005798014, 0.0071365014, 0.012849482, 0.025043892, -0.0020077315, 0.0032375655, -0.03648245, -0.03144344, 0.019450588, 0.0027116186, 0.00944185, 0.019211235, -0.021113463, 0.0053161583, 0.004629593, 0.0036186408, 0.003999716, -0.002582494, 0.012792793, 0.015557951, 0.012824287, -0.0026029649, 0.011312583, 0.012427464, 0.044368505, -0.006308214, -0.013454163, 0.004210725, -0.02459038, 0.01408404, 0.025522599, -0.02571156, -0.005259469, 0.008534827, 0.0007751418, 0.0073569585, 0.0065507162, -0.012049539, 0.004163484, -0.010298482, 0.00995205, -0.012326684, 0.013554944, 0.025698964, 0.035348672, 0.022335423, 0.019715136, 0.023444006, 0.0040028654, 0.0074514397, 0.011696808, -0.017346801, -0.009334771, 0.0002572652, 0.005684636, -0.032174096, -0.002036076, 0.014978465, 0.0061507444, 0.006588509, 0.012389672, -0.031821363, -0.010386664, -0.014335991, 0.029931733, 0.029528612, -0.0051964815, -0.012836885, 0.009252886, 0.02540922, 0.017535763, 0.0073947506, -0.029024713, 0.005429536, 0.020735536, -0.023733748, -0.0016660235, -0.022310227, -0.005873599, 0.004465825, 0.0014250957, 0.020634755, -0.02642962, -0.035499845, 0.018304212, 0.02995693, -0.01659095, -0.0008865513, -0.012950262, 0.014613137, -0.018593956, -0.012055838, -0.006966435, 0.012257398, 0.041974973, 0.032728385, -0.029553808, 0.0382713, 0.0067837704, -0.016150035, -0.0058798976, -0.003628089, 0.0044374806, 0.010575628, 0.01652796, 0.0071616964, 0.014663527, -0.020433195, 0.0098638665, -0.0066326, 0.034063723, 0.005520868, -0.020193843, -0.0020502482, 0.029478222, -0.0032690594, 0.001273138, 0.0027368136, 0.028243665, 0.018329408, -0.0145627465, -0.017926287, 0.009007235, 0.0014652504, -0.006213732, 0.017573556, 0.02678235, 0.00095741235, 0.024325833, -0.025686366, -0.0111425165, -0.018694736, -0.0014250957, -0.019778123, -0.0035556532, 0.029075103, -0.006027919, 0.03345904, 0.024628174, 0.021718144, 0.013328188, -0.002443921, 0.011306284, -0.025169868, 0.02673196, -0.011444857, 0.013995857, 0.009126911, 0.0138320895, 0.021503985, -0.0012581784, -0.021831522, 0.01336598, -0.0148902815, 0.014940672, 0.0052783657, 0.011986551, 0.0068341605, -0.012893573, 0.016036658, -0.02326764, 0.018253822, -0.008446645, 0.015091842, 0.01704446, 0.0013188041, -0.015482366, -0.67280895, -0.04918076, 0.018493176, -0.0070231236, -0.0016408284, 0.03393775, 0.010374067, 0.02592572, -0.003026557, -0.029100297, 0.017271215, 0.0066703926, 0.01587289, -0.007256178, -0.0006956199, -0.033811774, 0.0033257483, 0.019639552, -0.00403121, 0.0025935168, -0.0019242729, 0.015469768, -0.008629309, -0.0031052914, 0.021781132, 0.017397191, 0.01791369, -0.015948474, -0.013895077, -0.008245084, -0.012301489, 0.01331559, -0.02469116, -0.0074451407, 0.040538855, 0.00018354997, -0.021151256, 0.025182465, -0.006506625, 0.032476436, -0.0037540642, 0.011016541, 0.0010204001, -0.018518372, -0.010437055, -0.004714626, 0.0130888345, 0.0066011064, 0.044116553, -0.011955057, 0.018845906, -0.016288608, 0.016805107, 0.015318598, 0.012515647, 0.005164988, 0.04414175, 0.01985371, 0.0035462051, -0.003184026, -0.008509632, 0.018556163, -0.02356998, -0.015066647, -0.017825507, 0.0037981556, -0.03408892, -0.02587533, -0.027991714, -0.013529749, 0.00612555, 0.0043146545, -0.014411576, 0.020634755, 0.030914342, 0.01117401, 0.020760732, -0.018430188, 0.007791573, -0.010890566, -0.010210299, -0.0053571, -0.018367201, -0.026555596, 0.029402638, -0.021315023, -0.013970662, -0.018039664, 0.01525561, 0.006216882, 0.022814129, 0.030939536, -0.0054169386, -0.0012644771, -0.0125534395, 0.030284464, 0.004342999, 0.0009959923, -0.009712697, 0.00015924066, 0.005098851, -0.014827294, 0.015583146, 0.012767598, 0.032224484, -0.010840176, -0.029830953, 0.041849, 0.013857285, -0.012257398, 0.02005527, -0.025043892, -0.032552022, 0.002138431, 0.01577211, -0.03025927, 0.054068603, 0.005375996, 0.010525238, 0.003398184, 0.01505405, -0.001191254, -0.0041004964, -0.009422953, 0.012597531, -0.008150603, -0.00883087, -0.013844687, -0.01612484, 0.009712697, 0.00653182, 0.000116330324, 0.01657835, 0.0023084977, -0.008389955, -0.0077537806, 0.016263412, -0.019626953, 0.006878252, -0.011690509, -0.01229519, -0.006563314, -0.012755, -0.0089883385, -0.008799376, -0.01403365, -0.035701405, -0.007123904, -0.020861512, 0.010204, -0.018770322, -0.028520811, -0.019425394, 0.005010668, 0.014487161, -0.021100866, -0.016817704, -0.015293403, -0.0055271666, 0.010518938, 0.0003253706, 0.002409278, -0.016956277, 0.0045036175, -0.0036627322, -0.02786574, -0.02015605, 0.044746432, -0.0056909346, -0.015331196, -0.011759795, 0.0026360333, -0.011281089, -0.013605334, -0.018102651, -0.016049255, -0.007224684, -0.033232287, -0.010109519, -0.0134793585, 0.0043304013, 0.016490169, -0.008673401, 0.0056909346, 0.037817787, -0.0020045822, 0.008515931, 0.045250334, -0.0074577383, 0.013126628, 0.007205788, -0.011016541, -0.005259469, -0.0009432401, 0.006802667, 0.00050350756, 0.0007310505, -0.0036784792, 0.0010093772, -0.0052752164, 0.020571768, -0.009618215, 0.0118605755, -0.008648206, 0.007527025, -0.0122133065, 0.01495327, -0.0034013335, 0.0022565327, 0.036608424, 0.0002501791, -0.017838104, 0.013378578, -0.005470478, 0.029150687, -0.0031934741, -0.02224724, 0.010348872, -0.023645567, -0.015406781, 0.007577415, 0.013945467, 0.030763172, -0.014197418, -0.01878292, -0.01209363, 0.037540644, 0.015696524, -0.0037414667, -0.024678564, -0.024514796, -0.008024627, -0.0021762236, 0.0039209817, -0.022751141, 0.0039115334, 0.004868946, -0.018077457, 0.005539764, 0.0045477087, 0.0035021137, 0.036306083, 0.023305433, -0.020219037, 0.019009674, -0.006689289, 0.018556163, 0.026253255, -0.025056489, 0.016666533, -0.024099078, -0.0018786069, -0.012389672, 0.017901093, 0.024628174, -0.010065427, 0.037061937, -0.010033933, 0.009347368, 0.011350376, -0.0032627606, -0.009788282, 0.0036816285, -0.009926855, 0.012786495, -0.012578635, -0.010859072, 0.0018439636, -0.0065129236, -0.030939536, -0.014361186, -0.0016345297, 0.012584934, -0.0019683642, 0.0025069087, -0.008560022, 0.008547425, -0.0066451975, 0.012339282, 0.0055523617, -0.005259469, -0.021869315, 0.02418726, 0.0012148744, -0.0004987835, -0.01806486, -0.009347368, 0.014814696, -0.012162916, -0.0008715917, 0.0084529435, 0.024955709, 0.004069003, -0.00821359, 0.0012298339, -0.02367076, 0.011986551, 0.008207291, 0.01321481, -0.0009448148, -0.009870166, -0.010632317, -0.03000732, -0.009410356, 0.006853057, 0.024162065, -0.0006842034, -0.0014471414, -0.014373783, -0.0321489, -0.0068089655, 0.0020439494, -0.0040564053, 0.0077033904, -0.013302993, 0.0056122, -0.03464321, -0.015784707, 0.027437422, 0.018770322, -0.0072183856, -0.023771541, 0.0005767307, -0.007130203, 0.06540638, 0.026152475, -0.009907958, 0.017208228, 0.012925067, -0.006333409, -0.018304212, -0.00032340226, -0.0043398496, -0.009139509, 0.012282593, -0.0004940594, -0.007130203, 0.0025887927, -0.012717208, 0.00035666762, 0.013328188, 0.00038205952, 0.017749922, -0.031166293, -0.011041736, 0.011602326, -0.009725294, 0.00837106, -0.010386664, 0.020609561, 0.005199631, -0.0075396225, 0.02259997, -0.021541778, -0.0031367852, 0.024010895, 0.0020266278, -0.0058389558, -0.008667101, -0.017472776, -0.017434983, 0.008018329, 0.00836476, -0.006960136, 0.023179457, 0.0056247977, 0.0036406866, -0.021881912, -0.0051964815, 0.009460746, -0.006081458, 0.016464973, -0.012629025, -0.014147027, 0.020773329, -0.0039871186, -0.019009674, 0.0008629309, 0.010078025, 0.00035095934, -0.021970095, -0.02525805, 0.001359746, -0.022562178, -0.0029919136, 0.008018329, 0.008679699, 0.006588509, -0.016162632, -0.027739763, -0.00089442474, -0.00077553553, 0.0016691729, 0.0016644488, -0.017901093, -0.016767314, -0.019223833, -0.0020785925, 0.033131506, 0.029175883, 0.024678564, -0.035071526, 0.0045729037, 0.031141097, 0.016301205, -0.020067867, 0.0050799544, -0.005470478, 0.005281515, -0.0010440204, 0.034315675, -0.0109472545, -0.00040705773, 0.0152808055, 0.03378658, 0.008786778, 0.020508781, -0.015898084, -0.007199489, -0.006802667, 0.02306608, 0.019110454, -0.02577455, -0.019601759, 0.010008738, -0.025220258, 0.0028958574, -0.008245084, -0.012440062, 0.0063145123, 0.014928075, -0.00046886437, -0.01652796, 0.014235211, 0.024766747, -0.014839891, -0.002393531, -0.018644346, 0.01296286, 0.015797304, 0.008037225, 0.016502766, -0.01714524, -0.017397191, 0.023947908, -0.039077543, 0.023532188, 0.013907675, -0.011048035, -0.004765016, 0.020269427, -0.01898448, -0.0037320186, 0.009479642, -0.001765229, 0.028999517, -0.028697176, -0.0117346, -0.020130854, -0.017472776, 0.024527393, 0.02122684, -0.013580139, 0.0044532274, -0.013920272, 0.012792793, -0.002102213, -0.001168421, -0.045930598, -0.02566117, -0.0098764645, 0.019450588, -0.022751141, 0.023292836, -0.006871953, 0.015507561, 0.001719563, 0.011041736, -0.0016140587, -0.019916696, -0.013277798, -0.008112811, 0.026656376, 0.013907675, 0.014638332, 0.010701602, -7.1353206e-05, 0.0011731451, 0.0003409207, -0.016338998, -0.0019825364, -0.012440062, -0.0013219535, 0.008963143, 0.016150035, 0.006934941, 0.0209245, 0.013592736, -0.0006782983, 0.030989926, -0.01672952, -0.009561527, -0.036633622, -0.02612728, 0.0079049505, -0.014487161, -0.020811122, -0.0046768333, -0.0041918284, -0.009070222, 0.016250815, 0.002127408, 0.0016053979, -0.0037225704, 0.032375656, 0.0036910765, 0.04169783, -0.01652796, 0.005139793, 0.004853199, -0.034517236, -0.0049413815, 0.010619719, 0.0077789756, 0.00826398, 0.012515647, 0.011671613, -0.00806242, 0.0003052933, -0.0004527238, 0.013769101, 0.012383373, -0.018379798, -0.019097857, -0.024829734, -0.023393616, -0.02826886, -0.037112325, 0.01873253, -0.0030202582, -0.041723024, 0.018203432, 0.0049476805, -0.028394835, -0.00068695913, 0.0039934176, 0.026958717, 0.0035493544, 0.005520868, 0.01689329, -0.01153304, -0.001339275, -0.00648143, -0.01577211, 0.0038265001, 0.035399064, 0.027286252, -0.015129635, 0.024703758, 0.009618215, -0.0044280323, 0.010758292, -0.0122133065, -0.018304212, -0.019677343, 0.002184097, -0.014928075, 0.017737323, -0.014701319, 0.013378578, -0.021970095, -0.012307788, 0.0009944176, -0.0016817704, -0.014348588, 0.003480068, -0.024225052, 0.0234692, 0.02786574, 0.0027746062, -0.016162632, -0.0049193357, -0.00959302, -0.0004641403, 0.011148815, 0.016540559, -0.008975741, 0.017220825, -0.005514569, 0.008295475, -0.031166293, 0.00347062, -0.0046673855, 0.024199858, -0.01280539, -0.00026356397, -0.012465257, 0.01158343, 0.029150687, -0.012326684, -0.0073317634, 0.00131408, -0.010115817, 0.00617279, 0.009196198, -0.016666533, -0.020886706, 0.017271215, -0.018329408, 0.0017337352, -0.027588593, -0.009416655, 0.019425394, -0.020445794, -0.016364193, -0.0015140658, 0.019488381, 0.020030074, 0.0042012767, -0.008465541, 0.027160278, -0.00011416513, -0.027689373, 0.023242446, -0.00053145835, 0.010065427, -0.011822783, 0.015734317, 0.005095701, -0.033131506, 0.028394835, 0.0068089655, -0.018430188, -0.031720582, 0.0055712583, -0.019815916, -0.0027541353, -0.011822783, -0.0012266845, 0.0043807914, 0.0168303, 0.006878252, -0.0019683642, -0.0058767484, -0.017749922, 0.0025541494, 0.00806242, -0.010235494, -0.0047114766, 0.008673401, -0.004979174, 0.013403773, -0.02597611, -0.006903447, -0.020647354, 0.012755, -0.01602406, -0.0069223433, -0.024779344, -0.0044122855, -0.011640118, -0.00069837563, -0.015646134, -0.0027399631, 0.0057161297, 0.030334854, -0.0030564761, 0.009712697, -0.008667101, -0.0028690877, -0.012351879, -0.021781132, -0.028445225, -0.015935877, 0.007413647, 0.00095741235, 0.0036910765, -0.035600625, -0.031141097, 0.01000244, 0.0063145123, -0.026958717, 0.015079245, 0.0063963966, 0.03504633, -0.010361469, -0.014273003, 0.019778123, -0.0024927366, -0.016288608, -0.023242446, -0.009958348, -0.002045524, -0.026757156, 0.0070546176, -0.015016257, -0.006383799, -0.021768535, 0.024174662, -0.00398082, 0.0034674704, -0.010147312, 0.009315874, 0.008081316, -0.0011196056, 0.0123959705, 0.047467496, 0.022335423, -0.0019179741, -0.024955709, -0.003867442, -0.00010904738, 0.03892637, -0.005117747, 0.0058515533, 0.005577557, -0.013605334, -0.0056972336, -0.027588593, 0.007999432, -0.0036721805, 0.018505773, 0.009479642, -0.007256178, -0.00030667114, 0.02005527, -0.0065759113, -0.017951483, -0.020659951, -0.0010503192, -0.027311448, -0.0069538374, 0.010367768, -0.035247892, 0.002853341, -0.013542346, 0.00087789044, -0.02520766, -0.03240085, -0.01801447, -0.001571542, -0.03005771, 0.02791613, 0.0076341038, -0.018417591, -0.0067837704, -0.017170435, -0.015482366, 0.00045036175, -0.018342005, -0.011249595, -0.03383697, -0.03000732, 0.0011707831, -0.0062515247, -0.020672549, 0.0014077742, 0.0055901543, 0.02663118, 0.02087411, 0.2332055, 0.017346801, 0.0050610583, 0.0525569, -0.0013219535, 0.031216683, 0.031367853, 0.0025415518, 0.0070294226, 0.02781535, 0.007432543, -0.0074451407, -0.006821563, 0.009939452, 0.010279586, -0.013920272, -0.033307873, -0.022070875, -0.0062011345, 0.004793361, 0.025031295, -0.0026360333, 0.011079528, 0.0003480068, 0.017246021, 0.016666533, -0.0029430983, -0.0018959284, 0.005382295, 0.0003334409, -0.008238785, -0.017208228, -0.002275429, 0.003924131, -0.00048776067, -0.0025447013, -0.012880975, -0.002036076, 0.019047467, 0.0331567, 0.015230415, -0.016515363, -0.03464321, -0.0055712583, -0.013139225, -0.0025935168, -0.012666818, -0.001359746, 0.006897148, 0.008755284, -0.01781291, -0.002867513, 0.0280673, 0.023960505, -0.01316442, 0.0098764645, 0.022184253, -0.023632968, 0.008629309, -0.019047467, -0.021718144, 0.029075103, -0.01500366, 0.0077789756, 0.0069538374, -0.012685714, -0.018959284, -0.0014770605, 0.02428804, -0.018669542, 0.0017699532, 0.013580139, 0.014713917, -0.0043335506, 0.004843751, -0.009265484, 0.022373216, 0.0036658817, 0.023305433, 0.0032533125, -0.009284381, -0.01408404, -0.021718144, 0.021466194, -0.0074640373, -0.014386381, 0.007035721, -0.0027998013, 0.035071526, -0.003306852, -0.0038170519, 0.010953553, 0.00067554263, 0.002092765, 0.016490169, 0.021516584, 0.0017101149, 0.029327054, -0.00847184, 0.00073734927, -0.03224968, -0.002454944, 0.008408852, -0.005234274, -0.019563965, 0.017787714, -0.00045744787, -0.0047083274, 0.031115903, -0.008994637, -0.0014148602, -0.015910681, 0.019312015, -0.007980536, -0.00070703647, 0.0023210952, -0.0011164562, -0.018228628, -0.026555596, -0.020811122, 0.0016439778, -0.031241877, -0.012099929, 0.00842145, -0.011287388, -0.013240005, 0.017346801, 0.015117037, -0.00043540218, -0.036910765, 0.008604114, 0.007016825, 0.031241877, -0.010015037, -0.017409788, 0.009725294, 0.005520868, 0.0039146827, 0.0060688606, -0.005986977, -0.01572172, -0.020911902, 0.012578635, -0.018140445, 0.017346801, -0.007596311, -0.0030690734, -0.012698311, -0.012326684, -0.021390608, -0.0023415661, -0.013038445, -0.0050799544, 0.008711193, 0.010991346, -0.008660803, -0.004276862, -0.010997645, -0.013252603, 0.019563965, 0.003842247, 0.038649227, 0.013038445, -0.0077033904, -0.010430756, 0.013491956, -0.1592328, 0.028697176, 0.008434047, -0.0030926939, -0.0134793585, 0.009347368, 0.013605334, 0.02642962, -0.008837168, 0.032350462, 0.004818556, -0.009844971, -0.032677997, -0.014096637, -0.0033635409, 0.0145501485, 0.001466825, -0.017901093, 0.013328188, 0.0065759113, 0.0076530003, -0.02137801, 0.0031383599, 0.002872237, 0.0076530003, -0.004862647, -0.025069088, 0.032224484, 0.00449102, -0.0141848205, -0.005398042, -0.010241793, -0.0057791173, 0.021264633, 0.0012723507, 0.008049822, 0.00836476, 0.0008582068, -0.008018329, 0.009844971, -0.0030706483, 0.026706766, -0.0039934176, -0.0032170946, -0.0145501485, 0.007287672, 0.017674336, 0.022763738, 0.007230983, -0.018102651, 0.019123053, -0.0362305, -0.018770322, -0.00801203, 0.023506993, 0.0156209385, 0.016981471, 0.0034769187, -0.0027210668, 0.0010109519, -0.008226188, -0.031015122, -0.0029509717, 0.0022329125, 0.0034611716, -0.0031115902, 0.0064940276, -0.00267855, -0.014159625, 0.010682707, -0.008427748, -0.011942459, 0.003892637, -0.026958717, 0.006827862, 0.019979684, -0.015646134, -0.0035115618, -0.005375996, -0.0038453965, 0.009511136, 0.038649227, -0.003810753, -0.0008645056, -0.007955341, -0.0002421088, -0.013542346, -0.00852223, -0.009611917, -0.013958065, 0.007344361, -0.034265283, 0.012282593, -0.024716357, 0.02995693, 0.009215094, -0.012874677, -6.579258e-05, 0.0010204001, -0.015847694, -0.010928358, -0.016616143, -0.029553808, 0.0199041, 0.020395404, 0.031065512, -0.010871669, 0.0122448, 0.037011545, 0.008106511, -0.025648573, 0.038548447, 0.016061852, 0.024766747, 0.02587533, 0.01388248, -0.006525521, -0.03628089, -0.0027761809, -0.006153894, 0.051498707, 0.0014660377, -0.020370208, 0.022310227, -0.0033698396, -0.0075144274, -0.091004565, -0.0043807914, 0.008282877, 0.015066647, 0.005675188, 0.02535883, 0.014046247, 0.02990654, 0.009366265, 0.030863952, -0.008465541, -0.004097347, -0.004506767, 0.00026139876, 0.0014148602, -0.009933153, -0.002760434, -0.02811769, -0.031720582, 0.012446361, -0.003530458, -0.015835097, 0.006408994, -0.0113251805, 0.0013644701, -0.02316686, -0.03403853, 0.014298198, 0.014701319, 0.0149028795, 0.013000652, -0.0152682075, -0.009970946, -0.00893165, -0.036406863, -0.0017069655, -0.0073506595, -0.007476635, 0.009555227, -0.034013335, 0.0052941125, 0.0152808055, 0.003480068, -0.043663044, -0.0010770889, 0.023506993, -0.019400198, 0.00076490635, -0.00091489573, -0.012414867, 0.009189899, 0.017409788, 0.00028009823, -0.016213022, 0.03383697, -0.011312583, 0.019979684, 0.024628174, -0.019790722, 0.0028942828, 0.0034737692, 0.034819577, 0.0028753865, 0.035499845, 0.0007987622, -0.013743906, -0.027487813, 0.0059460346, 0.025736757, -0.041874193, -0.005627947, 0.017737323, -0.028873542, -0.00052988366, -0.012540842, 0.00081883953, -0.027538203, 0.0042422186, 0.009630812, -0.0022029933, -0.020760732, -0.027613789, -0.012269995, -0.020697745, 0.00076254434, 0.028445225, -0.02771457, -0.009265484, 0.020382805, -0.022310227, -0.014260406, 0.044620454, 0.011375571, -0.020458391, 0.0030533266, 0.020937096, 0.0009463895, 0.00786086, 0.010235494, -0.015331196, -0.014310796, -0.003240715, -0.055882648, 0.010493743, -0.012679415, -0.03892637, 0.0028643636, 0.013504554, -0.0072435807, -0.017258618, -0.014096637, -0.007760079, 0.00093457935, 0.011470052, -0.01010322, -0.0056877853, -0.009164704, 0.0109472545, 0.020370208, 0.0039052346, 0.023381017, -0.0029525463, -0.014877684, 0.011388169, -0.0030486025, 0.007067215, -0.02786574, 0.016981471, -0.03388736, -0.027588593, -0.019375004, -0.021466194, 0.015646134, -0.01393287, 0.01577211, 0.036961157, -0.021264633, -0.020420598, -0.009372563, 0.037717007, 0.01515483, -0.027790153, -0.004122542, -0.029982124, 0.017598752, -0.015381586, 0.0015573698, 0.022562178, -0.0138320895, -0.0029871897, 0.015217817, -0.0074640373, 0.022184253, 0.028747566, 0.00898204, -0.0044815717, -0.009706398, -0.019072663, 0.0209245, -0.0039430275, 0.010468548, -0.036961157, 0.006062562, 0.0047083274, 0.0042422186, 0.023305433, 0.007199489, 0.0023714853, -0.0018282167, -0.010159909, -0.0015400482, -0.010657512, -0.001678621, -9.13321e-05, 0.04179861, -0.007873457, 0.028394835, 0.0011172435, 0.0021951199, -0.003204497, -0.0053445026, 0.028571201, -0.00075742655, -0.012377074, -0.03134266, 0.0079175485, 0.037893374, 0.012925067, -0.02612728, 0.0004409136, 0.004903589, 0.00083616114, -0.024149468, -0.0032060717, -0.016855497, -0.0062231803, 0.003933579, -0.008018329, -0.0077537806, -0.01316442, 0.014474563, 0.047366716, 0.011929862, -0.0039682225, -0.003703674, -0.040992368, -0.01204324, 0.008673401, -0.007363257, -0.01776252, -0.00444063, 0.010751992, 0.0039871186, -0.0008456093, -0.021503985, 0.018719932, 0.002780905, -0.0031304865, -0.0469384, -0.027084691, -0.023028286, 0.022612568, 0.0064215916, 0.000785771, 0.0042926087, 0.009164704, 0.021000085, 0.02127723, 0.042226925, -0.030612001, -0.0038642928, 0.031594608, 0.0131014325, 0.0014691871, 0.0037918568, -0.008874961, -0.010015037, -0.009063924, -0.008679699, 0.028042104, -0.0011077954, 0.06092166, -0.00021376436, -0.015646134, 0.021844119, 0.0013479359, 0.006802667, 0.032627605, -0.01565873, -0.012975457, -0.018140445, -0.0055492125, 0.0007235707, 0.021390608, 0.005990126, -0.017636543, -0.0016723223, -0.022587374, 0.03204812, -0.035852574, -0.009555227, 0.01076459, -0.0109598525, 0.0022833026, 0.010997645, -0.021806326, -0.0046106963, -0.004821705, 0.0018770321, -0.0022896014, -0.01005283, 0.028596396, -0.018820712, -0.020659951, -0.00760261, 0.008849766, -0.03388736, -0.021894509, -0.020067867, 3.907203e-05, 0.012610129, 0.0071868915, 0.01672952, -0.019992283, -0.022751141, -0.01153304, -0.0073947506, -0.014373783, -0.006169641, -0.020496184], - "object": "embedding" + "embedding": [0.014726514, -0.0071365014, 0.0019683642, -0.024905318, -0.01816564, 0.0029745921, -0.042025365, -0.011350376, 0.015494963, -0.006342857, 0.004730373, 0.008112811, -0.022121266, 0.0067837704, -0.014965867, 0.00699163, 0.021466194, 0.010367768, 0.007438842, -0.021466194, -0.044368505, 0.01642718, -0.010682707, 0.009750489, -0.022373216, 0.013617931, 0.023859724, -0.005798014, 0.0071365014, 0.012849482, 0.025043892, -0.0020077315, 0.0032375655, -0.03648245, -0.03144344, 0.019450588, 0.0027116186, 0.00944185, 0.019211235, -0.021113463, 0.0053161583, 0.004629593, 0.0036186408, 0.003999716, -0.002582494, 0.012792793, 0.015557951, 0.012824287, -0.0026029649, 0.011312583, 0.012427464, 0.044368505, -0.006308214, -0.013454163, 0.004210725, -0.02459038, 0.01408404, 0.025522599, -0.02571156, -0.005259469, 0.008534827, 0.0007751418, 0.0073569585, 0.0065507162, -0.012049539, 0.004163484, -0.010298482, 0.00995205, -0.012326684, 0.013554944, 0.025698964, 0.035348672, 0.022335423, 0.019715136, 0.023444006, 0.0040028654, 0.0074514397, 0.011696808, -0.017346801, -0.009334771, 0.0002572652, 0.005684636, -0.032174096, -0.002036076, 0.014978465, 0.0061507444, 0.006588509, 0.012389672, -0.031821363, -0.010386664, -0.014335991, 0.029931733, 0.029528612, -0.0051964815, -0.012836885, 0.009252886, 0.02540922, 0.017535763, 0.0073947506, -0.029024713, 0.005429536, 0.020735536, -0.023733748, -0.0016660235, -0.022310227, -0.005873599, 0.004465825, 0.0014250957, 0.020634755, -0.02642962, -0.035499845, 0.018304212, 0.02995693, -0.01659095, -0.0008865513, -0.012950262, 0.014613137, -0.018593956, -0.012055838, -0.006966435, 0.012257398, 0.041974973, 0.032728385, -0.029553808, 0.0382713, 0.0067837704, -0.016150035, -0.0058798976, -0.003628089, 0.0044374806, 0.010575628, 0.01652796, 0.0071616964, 0.014663527, -0.020433195, 0.0098638665, -0.0066326, 0.034063723, 0.005520868, -0.020193843, -0.0020502482, 0.029478222, -0.0032690594, 0.001273138, 0.0027368136, 0.028243665, 0.018329408, -0.0145627465, -0.017926287, 0.009007235, 0.0014652504, -0.006213732, 0.017573556, 0.02678235, 0.00095741235, 0.024325833, -0.025686366, -0.0111425165, -0.018694736, -0.0014250957, -0.019778123, -0.0035556532, 0.029075103, -0.006027919, 0.03345904, 0.024628174, 0.021718144, 0.013328188, -0.002443921, 0.011306284, -0.025169868, 0.02673196, -0.011444857, 0.013995857, 0.009126911, 0.0138320895, 0.021503985, -0.0012581784, -0.021831522, 0.01336598, -0.0148902815, 0.014940672, 0.0052783657, 0.011986551, 0.0068341605, -0.012893573, 0.016036658, -0.02326764, 0.018253822, -0.008446645, 0.015091842, 0.01704446, 0.0013188041, -0.015482366, -0.67280895, -0.04918076, 0.018493176, -0.0070231236, -0.0016408284, 0.03393775, 0.010374067, 0.02592572, -0.003026557, -0.029100297, 0.017271215, 0.0066703926, 0.01587289, -0.007256178, -0.0006956199, -0.033811774, 0.0033257483, 0.019639552, -0.00403121, 0.0025935168, -0.0019242729, 0.015469768, -0.008629309, -0.0031052914, 0.021781132, 0.017397191, 0.01791369, -0.015948474, -0.013895077, -0.008245084, -0.012301489, 0.01331559, -0.02469116, -0.0074451407, 0.040538855, 0.00018354997, -0.021151256, 0.025182465, -0.006506625, 0.032476436, -0.0037540642, 0.011016541, 0.0010204001, -0.018518372, -0.010437055, -0.004714626, 0.0130888345, 0.0066011064, 0.044116553, -0.011955057, 0.018845906, -0.016288608, 0.016805107, 0.015318598, 0.012515647, 0.005164988, 0.04414175, 0.01985371, 0.0035462051, -0.003184026, -0.008509632, 0.018556163, -0.02356998, -0.015066647, -0.017825507, 0.0037981556, -0.03408892, -0.02587533, -0.027991714, -0.013529749, 0.00612555, 0.0043146545, -0.014411576, 0.020634755, 0.030914342, 0.01117401, 0.020760732, -0.018430188, 0.007791573, -0.010890566, -0.010210299, -0.0053571, -0.018367201, -0.026555596, 0.029402638, -0.021315023, -0.013970662, -0.018039664, 0.01525561, 0.006216882, 0.022814129, 0.030939536, -0.0054169386, -0.0012644771, -0.0125534395, 0.030284464, 0.004342999, 0.0009959923, -0.009712697, 0.00015924066, 0.005098851, -0.014827294, 0.015583146, 0.012767598, 0.032224484, -0.010840176, -0.029830953, 0.041849, 0.013857285, -0.012257398, 0.02005527, -0.025043892, -0.032552022, 0.002138431, 0.01577211, -0.03025927, 0.054068603, 0.005375996, 0.010525238, 0.003398184, 0.01505405, -0.001191254, -0.0041004964, -0.009422953, 0.012597531, -0.008150603, -0.00883087, -0.013844687, -0.01612484, 0.009712697, 0.00653182, 0.000116330324, 0.01657835, 0.0023084977, -0.008389955, -0.0077537806, 0.016263412, -0.019626953, 0.006878252, -0.011690509, -0.01229519, -0.006563314, -0.012755, -0.0089883385, -0.008799376, -0.01403365, -0.035701405, -0.007123904, -0.020861512, 0.010204, -0.018770322, -0.028520811, -0.019425394, 0.005010668, 0.014487161, -0.021100866, -0.016817704, -0.015293403, -0.0055271666, 0.010518938, 0.0003253706, 0.002409278, -0.016956277, 0.0045036175, -0.0036627322, -0.02786574, -0.02015605, 0.044746432, -0.0056909346, -0.015331196, -0.011759795, 0.0026360333, -0.011281089, -0.013605334, -0.018102651, -0.016049255, -0.007224684, -0.033232287, -0.010109519, -0.0134793585, 0.0043304013, 0.016490169, -0.008673401, 0.0056909346, 0.037817787, -0.0020045822, 0.008515931, 0.045250334, -0.0074577383, 0.013126628, 0.007205788, -0.011016541, -0.005259469, -0.0009432401, 0.006802667, 0.00050350756, 0.0007310505, -0.0036784792, 0.0010093772, -0.0052752164, 0.020571768, -0.009618215, 0.0118605755, -0.008648206, 0.007527025, -0.0122133065, 0.01495327, -0.0034013335, 0.0022565327, 0.036608424, 0.0002501791, -0.017838104, 0.013378578, -0.005470478, 0.029150687, -0.0031934741, -0.02224724, 0.010348872, -0.023645567, -0.015406781, 0.007577415, 0.013945467, 0.030763172, -0.014197418, -0.01878292, -0.01209363, 0.037540644, 0.015696524, -0.0037414667, -0.024678564, -0.024514796, -0.008024627, -0.0021762236, 0.0039209817, -0.022751141, 0.0039115334, 0.004868946, -0.018077457, 0.005539764, 0.0045477087, 0.0035021137, 0.036306083, 0.023305433, -0.020219037, 0.019009674, -0.006689289, 0.018556163, 0.026253255, -0.025056489, 0.016666533, -0.024099078, -0.0018786069, -0.012389672, 0.017901093, 0.024628174, -0.010065427, 0.037061937, -0.010033933, 0.009347368, 0.011350376, -0.0032627606, -0.009788282, 0.0036816285, -0.009926855, 0.012786495, -0.012578635, -0.010859072, 0.0018439636, -0.0065129236, -0.030939536, -0.014361186, -0.0016345297, 0.012584934, -0.0019683642, 0.0025069087, -0.008560022, 0.008547425, -0.0066451975, 0.012339282, 0.0055523617, -0.005259469, -0.021869315, 0.02418726, 0.0012148744, -0.0004987835, -0.01806486, -0.009347368, 0.014814696, -0.012162916, -0.0008715917, 0.0084529435, 0.024955709, 0.004069003, -0.00821359, 0.0012298339, -0.02367076, 0.011986551, 0.008207291, 0.01321481, -0.0009448148, -0.009870166, -0.010632317, -0.03000732, -0.009410356, 0.006853057, 0.024162065, -0.0006842034, -0.0014471414, -0.014373783, -0.0321489, -0.0068089655, 0.0020439494, -0.0040564053, 0.0077033904, -0.013302993, 0.0056122, -0.03464321, -0.015784707, 0.027437422, 0.018770322, -0.0072183856, -0.023771541, 0.0005767307, -0.007130203, 0.06540638, 0.026152475, -0.009907958, 0.017208228, 0.012925067, -0.006333409, -0.018304212, -0.00032340226, -0.0043398496, -0.009139509, 0.012282593, -0.0004940594, -0.007130203, 0.0025887927, -0.012717208, 0.00035666762, 0.013328188, 0.00038205952, 0.017749922, -0.031166293, -0.011041736, 0.011602326, -0.009725294, 0.00837106, -0.010386664, 0.020609561, 0.005199631, -0.0075396225, 0.02259997, -0.021541778, -0.0031367852, 0.024010895, 0.0020266278, -0.0058389558, -0.008667101, -0.017472776, -0.017434983, 0.008018329, 0.00836476, -0.006960136, 0.023179457, 0.0056247977, 0.0036406866, -0.021881912, -0.0051964815, 0.009460746, -0.006081458, 0.016464973, -0.012629025, -0.014147027, 0.020773329, -0.0039871186, -0.019009674, 0.0008629309, 0.010078025, 0.00035095934, -0.021970095, -0.02525805, 0.001359746, -0.022562178, -0.0029919136, 0.008018329, 0.008679699, 0.006588509, -0.016162632, -0.027739763, -0.00089442474, -0.00077553553, 0.0016691729, 0.0016644488, -0.017901093, -0.016767314, -0.019223833, -0.0020785925, 0.033131506, 0.029175883, 0.024678564, -0.035071526, 0.0045729037, 0.031141097, 0.016301205, -0.020067867, 0.0050799544, -0.005470478, 0.005281515, -0.0010440204, 0.034315675, -0.0109472545, -0.00040705773, 0.0152808055, 0.03378658, 0.008786778, 0.020508781, -0.015898084, -0.007199489, -0.006802667, 0.02306608, 0.019110454, -0.02577455, -0.019601759, 0.010008738, -0.025220258, 0.0028958574, -0.008245084, -0.012440062, 0.0063145123, 0.014928075, -0.00046886437, -0.01652796, 0.014235211, 0.024766747, -0.014839891, -0.002393531, -0.018644346, 0.01296286, 0.015797304, 0.008037225, 0.016502766, -0.01714524, -0.017397191, 0.023947908, -0.039077543, 0.023532188, 0.013907675, -0.011048035, -0.004765016, 0.020269427, -0.01898448, -0.0037320186, 0.009479642, -0.001765229, 0.028999517, -0.028697176, -0.0117346, -0.020130854, -0.017472776, 0.024527393, 0.02122684, -0.013580139, 0.0044532274, -0.013920272, 0.012792793, -0.002102213, -0.001168421, -0.045930598, -0.02566117, -0.0098764645, 0.019450588, -0.022751141, 0.023292836, -0.006871953, 0.015507561, 0.001719563, 0.011041736, -0.0016140587, -0.019916696, -0.013277798, -0.008112811, 0.026656376, 0.013907675, 0.014638332, 0.010701602, -7.1353206e-05, 0.0011731451, 0.0003409207, -0.016338998, -0.0019825364, -0.012440062, -0.0013219535, 0.008963143, 0.016150035, 0.006934941, 0.0209245, 0.013592736, -0.0006782983, 0.030989926, -0.01672952, -0.009561527, -0.036633622, -0.02612728, 0.0079049505, -0.014487161, -0.020811122, -0.0046768333, -0.0041918284, -0.009070222, 0.016250815, 0.002127408, 0.0016053979, -0.0037225704, 0.032375656, 0.0036910765, 0.04169783, -0.01652796, 0.005139793, 0.004853199, -0.034517236, -0.0049413815, 0.010619719, 0.0077789756, 0.00826398, 0.012515647, 0.011671613, -0.00806242, 0.0003052933, -0.0004527238, 0.013769101, 0.012383373, -0.018379798, -0.019097857, -0.024829734, -0.023393616, -0.02826886, -0.037112325, 0.01873253, -0.0030202582, -0.041723024, 0.018203432, 0.0049476805, -0.028394835, -0.00068695913, 0.0039934176, 0.026958717, 0.0035493544, 0.005520868, 0.01689329, -0.01153304, -0.001339275, -0.00648143, -0.01577211, 0.0038265001, 0.035399064, 0.027286252, -0.015129635, 0.024703758, 0.009618215, -0.0044280323, 0.010758292, -0.0122133065, -0.018304212, -0.019677343, 0.002184097, -0.014928075, 0.017737323, -0.014701319, 0.013378578, -0.021970095, -0.012307788, 0.0009944176, -0.0016817704, -0.014348588, 0.003480068, -0.024225052, 0.0234692, 0.02786574, 0.0027746062, -0.016162632, -0.0049193357, -0.00959302, -0.0004641403, 0.011148815, 0.016540559, -0.008975741, 0.017220825, -0.005514569, 0.008295475, -0.031166293, 0.00347062, -0.0046673855, 0.024199858, -0.01280539, -0.00026356397, -0.012465257, 0.01158343, 0.029150687, -0.012326684, -0.0073317634, 0.00131408, -0.010115817, 0.00617279, 0.009196198, -0.016666533, -0.020886706, 0.017271215, -0.018329408, 0.0017337352, -0.027588593, -0.009416655, 0.019425394, -0.020445794, -0.016364193, -0.0015140658, 0.019488381, 0.020030074, 0.0042012767, -0.008465541, 0.027160278, -0.00011416513, -0.027689373, 0.023242446, -0.00053145835, 0.010065427, -0.011822783, 0.015734317, 0.005095701, -0.033131506, 0.028394835, 0.0068089655, -0.018430188, -0.031720582, 0.0055712583, -0.019815916, -0.0027541353, -0.011822783, -0.0012266845, 0.0043807914, 0.0168303, 0.006878252, -0.0019683642, -0.0058767484, -0.017749922, 0.0025541494, 0.00806242, -0.010235494, -0.0047114766, 0.008673401, -0.004979174, 0.013403773, -0.02597611, -0.006903447, -0.020647354, 0.012755, -0.01602406, -0.0069223433, -0.024779344, -0.0044122855, -0.011640118, -0.00069837563, -0.015646134, -0.0027399631, 0.0057161297, 0.030334854, -0.0030564761, 0.009712697, -0.008667101, -0.0028690877, -0.012351879, -0.021781132, -0.028445225, -0.015935877, 0.007413647, 0.00095741235, 0.0036910765, -0.035600625, -0.031141097, 0.01000244, 0.0063145123, -0.026958717, 0.015079245, 0.0063963966, 0.03504633, -0.010361469, -0.014273003, 0.019778123, -0.0024927366, -0.016288608, -0.023242446, -0.009958348, -0.002045524, -0.026757156, 0.0070546176, -0.015016257, -0.006383799, -0.021768535, 0.024174662, -0.00398082, 0.0034674704, -0.010147312, 0.009315874, 0.008081316, -0.0011196056, 0.0123959705, 0.047467496, 0.022335423, -0.0019179741, -0.024955709, -0.003867442, -0.00010904738, 0.03892637, -0.005117747, 0.0058515533, 0.005577557, -0.013605334, -0.0056972336, -0.027588593, 0.007999432, -0.0036721805, 0.018505773, 0.009479642, -0.007256178, -0.00030667114, 0.02005527, -0.0065759113, -0.017951483, -0.020659951, -0.0010503192, -0.027311448, -0.0069538374, 0.010367768, -0.035247892, 0.002853341, -0.013542346, 0.00087789044, -0.02520766, -0.03240085, -0.01801447, -0.001571542, -0.03005771, 0.02791613, 0.0076341038, -0.018417591, -0.0067837704, -0.017170435, -0.015482366, 0.00045036175, -0.018342005, -0.011249595, -0.03383697, -0.03000732, 0.0011707831, -0.0062515247, -0.020672549, 0.0014077742, 0.0055901543, 0.02663118, 0.02087411, 0.2332055, 0.017346801, 0.0050610583, 0.0525569, -0.0013219535, 0.031216683, 0.031367853, 0.0025415518, 0.0070294226, 0.02781535, 0.007432543, -0.0074451407, -0.006821563, 0.009939452, 0.010279586, -0.013920272, -0.033307873, -0.022070875, -0.0062011345, 0.004793361, 0.025031295, -0.0026360333, 0.011079528, 0.0003480068, 0.017246021, 0.016666533, -0.0029430983, -0.0018959284, 0.005382295, 0.0003334409, -0.008238785, -0.017208228, -0.002275429, 0.003924131, -0.00048776067, -0.0025447013, -0.012880975, -0.002036076, 0.019047467, 0.0331567, 0.015230415, -0.016515363, -0.03464321, -0.0055712583, -0.013139225, -0.0025935168, -0.012666818, -0.001359746, 0.006897148, 0.008755284, -0.01781291, -0.002867513, 0.0280673, 0.023960505, -0.01316442, 0.0098764645, 0.022184253, -0.023632968, 0.008629309, -0.019047467, -0.021718144, 0.029075103, -0.01500366, 0.0077789756, 0.0069538374, -0.012685714, -0.018959284, -0.0014770605, 0.02428804, -0.018669542, 0.0017699532, 0.013580139, 0.014713917, -0.0043335506, 0.004843751, -0.009265484, 0.022373216, 0.0036658817, 0.023305433, 0.0032533125, -0.009284381, -0.01408404, -0.021718144, 0.021466194, -0.0074640373, -0.014386381, 0.007035721, -0.0027998013, 0.035071526, -0.003306852, -0.0038170519, 0.010953553, 0.00067554263, 0.002092765, 0.016490169, 0.021516584, 0.0017101149, 0.029327054, -0.00847184, 0.00073734927, -0.03224968, -0.002454944, 0.008408852, -0.005234274, -0.019563965, 0.017787714, -0.00045744787, -0.0047083274, 0.031115903, -0.008994637, -0.0014148602, -0.015910681, 0.019312015, -0.007980536, -0.00070703647, 0.0023210952, -0.0011164562, -0.018228628, -0.026555596, -0.020811122, 0.0016439778, -0.031241877, -0.012099929, 0.00842145, -0.011287388, -0.013240005, 0.017346801, 0.015117037, -0.00043540218, -0.036910765, 0.008604114, 0.007016825, 0.031241877, -0.010015037, -0.017409788, 0.009725294, 0.005520868, 0.0039146827, 0.0060688606, -0.005986977, -0.01572172, -0.020911902, 0.012578635, -0.018140445, 0.017346801, -0.007596311, -0.0030690734, -0.012698311, -0.012326684, -0.021390608, -0.0023415661, -0.013038445, -0.0050799544, 0.008711193, 0.010991346, -0.008660803, -0.004276862, -0.010997645, -0.013252603, 0.019563965, 0.003842247, 0.038649227, 0.013038445, -0.0077033904, -0.010430756, 0.013491956, -0.1592328, 0.028697176, 0.008434047, -0.0030926939, -0.0134793585, 0.009347368, 0.013605334, 0.02642962, -0.008837168, 0.032350462, 0.004818556, -0.009844971, -0.032677997, -0.014096637, -0.0033635409, 0.0145501485, 0.001466825, -0.017901093, 0.013328188, 0.0065759113, 0.0076530003, -0.02137801, 0.0031383599, 0.002872237, 0.0076530003, -0.004862647, -0.025069088, 0.032224484, 0.00449102, -0.0141848205, -0.005398042, -0.010241793, -0.0057791173, 0.021264633, 0.0012723507, 0.008049822, 0.00836476, 0.0008582068, -0.008018329, 0.009844971, -0.0030706483, 0.026706766, -0.0039934176, -0.0032170946, -0.0145501485, 0.007287672, 0.017674336, 0.022763738, 0.007230983, -0.018102651, 0.019123053, -0.0362305, -0.018770322, -0.00801203, 0.023506993, 0.0156209385, 0.016981471, 0.0034769187, -0.0027210668, 0.0010109519, -0.008226188, -0.031015122, -0.0029509717, 0.0022329125, 0.0034611716, -0.0031115902, 0.0064940276, -0.00267855, -0.014159625, 0.010682707, -0.008427748, -0.011942459, 0.003892637, -0.026958717, 0.006827862, 0.019979684, -0.015646134, -0.0035115618, -0.005375996, -0.0038453965, 0.009511136, 0.038649227, -0.003810753, -0.0008645056, -0.007955341, -0.0002421088, -0.013542346, -0.00852223, -0.009611917, -0.013958065, 0.007344361, -0.034265283, 0.012282593, -0.024716357, 0.02995693, 0.009215094, -0.012874677, -6.579258e-05, 0.0010204001, -0.015847694, -0.010928358, -0.016616143, -0.029553808, 0.0199041, 0.020395404, 0.031065512, -0.010871669, 0.0122448, 0.037011545, 0.008106511, -0.025648573, 0.038548447, 0.016061852, 0.024766747, 0.02587533, 0.01388248, -0.006525521, -0.03628089, -0.0027761809, -0.006153894, 0.051498707, 0.0014660377, -0.020370208, 0.022310227, -0.0033698396, -0.0075144274, -0.091004565, -0.0043807914, 0.008282877, 0.015066647, 0.005675188, 0.02535883, 0.014046247, 0.02990654, 0.009366265, 0.030863952, -0.008465541, -0.004097347, -0.004506767, 0.00026139876, 0.0014148602, -0.009933153, -0.002760434, -0.02811769, -0.031720582, 0.012446361, -0.003530458, -0.015835097, 0.006408994, -0.0113251805, 0.0013644701, -0.02316686, -0.03403853, 0.014298198, 0.014701319, 0.0149028795, 0.013000652, -0.0152682075, -0.009970946, -0.00893165, -0.036406863, -0.0017069655, -0.0073506595, -0.007476635, 0.009555227, -0.034013335, 0.0052941125, 0.0152808055, 0.003480068, -0.043663044, -0.0010770889, 0.023506993, -0.019400198, 0.00076490635, -0.00091489573, -0.012414867, 0.009189899, 0.017409788, 0.00028009823, -0.016213022, 0.03383697, -0.011312583, 0.019979684, 0.024628174, -0.019790722, 0.0028942828, 0.0034737692, 0.034819577, 0.0028753865, 0.035499845, 0.0007987622, -0.013743906, -0.027487813, 0.0059460346, 0.025736757, -0.041874193, -0.005627947, 0.017737323, -0.028873542, -0.00052988366, -0.012540842, 0.00081883953, -0.027538203, 0.0042422186, 0.009630812, -0.0022029933, -0.020760732, -0.027613789, -0.012269995, -0.020697745, 0.00076254434, 0.028445225, -0.02771457, -0.009265484, 0.020382805, -0.022310227, -0.014260406, 0.044620454, 0.011375571, -0.020458391, 0.0030533266, 0.020937096, 0.0009463895, 0.00786086, 0.010235494, -0.015331196, -0.014310796, -0.003240715, -0.055882648, 0.010493743, -0.012679415, -0.03892637, 0.0028643636, 0.013504554, -0.0072435807, -0.017258618, -0.014096637, -0.007760079, 0.00093457935, 0.011470052, -0.01010322, -0.0056877853, -0.009164704, 0.0109472545, 0.020370208, 0.0039052346, 0.023381017, -0.0029525463, -0.014877684, 0.011388169, -0.0030486025, 0.007067215, -0.02786574, 0.016981471, -0.03388736, -0.027588593, -0.019375004, -0.021466194, 0.015646134, -0.01393287, 0.01577211, 0.036961157, -0.021264633, -0.020420598, -0.009372563, 0.037717007, 0.01515483, -0.027790153, -0.004122542, -0.029982124, 0.017598752, -0.015381586, 0.0015573698, 0.022562178, -0.0138320895, -0.0029871897, 0.015217817, -0.0074640373, 0.022184253, 0.028747566, 0.00898204, -0.0044815717, -0.009706398, -0.019072663, 0.0209245, -0.0039430275, 0.010468548, -0.036961157, 0.006062562, 0.0047083274, 0.0042422186, 0.023305433, 0.007199489, 0.0023714853, -0.0018282167, -0.010159909, -0.0015400482, -0.010657512, -0.001678621, -9.13321e-05, 0.04179861, -0.007873457, 0.028394835, 0.0011172435, 0.0021951199, -0.003204497, -0.0053445026, 0.028571201, -0.00075742655, -0.012377074, -0.03134266, 0.0079175485, 0.037893374, 0.012925067, -0.02612728, 0.0004409136, 0.004903589, 0.00083616114, -0.024149468, -0.0032060717, -0.016855497, -0.0062231803, 0.003933579, -0.008018329, -0.0077537806, -0.01316442, 0.014474563, 0.047366716, 0.011929862, -0.0039682225, -0.003703674, -0.040992368, -0.01204324, 0.008673401, -0.007363257, -0.01776252, -0.00444063, 0.010751992, 0.0039871186, -0.0008456093, -0.021503985, 0.018719932, 0.002780905, -0.0031304865, -0.0469384, -0.027084691, -0.023028286, 0.022612568, 0.0064215916, 0.000785771, 0.0042926087, 0.009164704, 0.021000085, 0.02127723, 0.042226925, -0.030612001, -0.0038642928, 0.031594608, 0.0131014325, 0.0014691871, 0.0037918568, -0.008874961, -0.010015037, -0.009063924, -0.008679699, 0.028042104, -0.0011077954, 0.06092166, -0.00021376436, -0.015646134, 0.021844119, 0.0013479359, 0.006802667, 0.032627605, -0.01565873, -0.012975457, -0.018140445, -0.0055492125, 0.0007235707, 0.021390608, 0.005990126, -0.017636543, -0.0016723223, -0.022587374, 0.03204812, -0.035852574, -0.009555227, 0.01076459, -0.0109598525, 0.0022833026, 0.010997645, -0.021806326, -0.0046106963, -0.004821705, 0.0018770321, -0.0022896014, -0.01005283, 0.028596396, -0.018820712, -0.020659951, -0.00760261, 0.008849766, -0.03388736, -0.021894509, -0.020067867, 3.907203e-05, 0.012610129, 0.0071868915, 0.01672952, -0.019992283, -0.022751141, -0.01153304, -0.0073947506, -0.014373783, -0.006169641, -0.020496184] } ], "model": "text-embedding-ada-002-v2", "usage": { "prompt_tokens": 6, "total_tokens": 6 - } -}610 1637 + }, + "object": "list" +}610 1663 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -118,18 +122,19 @@ Content-Type: application/json {"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the desk is orange.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What color is the desk?\nHelpful Answer:"}]}HTTP/2.0 200 OK Content-Length: 838 Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Thu, 22 Jan 2026 20:04:11 GMT +Date: Mon, 21 Sep 2026 07:47:58 GMT Openai-Organization: lcgo-tst -Openai-Processing-Ms: 232 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 483 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload X-Content-Type-Options: nosniff -X-Envoy-Upstream-Service-Time: 247 X-Openai-Proxy-Wasm: v0.1 X-Ratelimit-Limit-Requests: 30000 X-Ratelimit-Limit-Tokens: 150000000 @@ -137,24 +142,23 @@ X-Ratelimit-Remaining-Requests: 29999 X-Ratelimit-Remaining-Tokens: 149999925 X-Ratelimit-Reset-Requests: 2ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_f26ea45bf905484aaa16eb73b9acd329 +X-Request-Id: req_ba173373096144b3ab37285acd629531 { - "id": "chatcmpl-D0vCVQoD2HoaM5g1lBSigOVHUpjMc", "object": "chat.completion", - "created": 1769112251, + "created": 1789976878, "model": "gpt-4.1-nano-2025-04-14", "choices": [ { + "logprobs": null, + "finish_reason": "stop", + "index": 0, "message": { - "role": "assistant", "content": "The color of the desk is orange.", "refusal": null, - "annotations": [] - }, - "logprobs": null, - "finish_reason": "stop", - "index": 0 + "annotations": [], + "role": "assistant" + } } ], "usage": { @@ -162,8 +166,8 @@ X-Request-Id: req_f26ea45bf905484aaa16eb73b9acd329 "completion_tokens": 8, "total_tokens": 80, "prompt_tokens_details": { - "audio_tokens": 0, - "cached_tokens": 0 + "cached_tokens": 0, + "audio_tokens": 0 }, "completion_tokens_details": { "reasoning_tokens": 0, @@ -173,5 +177,6 @@ X-Request-Id: req_f26ea45bf905484aaa16eb73b9acd329 } }, "service_tier": "default", - "system_fingerprint": "fp_fe84ea9799" + "system_fingerprint": "fp_a8d11c9b56", + "id": "chatcmpl-EQT2kgHYfpj6QkEEOKrdCseaDi0oD" } \ No newline at end of file diff --git a/vectorstores/pgvector/testdata/TestPgvectorAsRetrieverWithMetadataFilterNotSelected.httprr b/vectorstores/pgvector/testdata/TestPgvectorAsRetrieverWithMetadataFilterNotSelected.httprr index 06f96e654..c6307c730 100644 --- a/vectorstores/pgvector/testdata/TestPgvectorAsRetrieverWithMetadataFilterNotSelected.httprr +++ b/vectorstores/pgvector/testdata/TestPgvectorAsRetrieverWithMetadataFilterNotSelected.httprr @@ -1,5 +1,5 @@ httprr trace v1 -554 106366 +554 106416 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -11,20 +11,22 @@ Content-Type: application/json Content-Length: 105459 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Thu, 22 Jan 2026 20:04:24 GMT +Date: Mon, 21 Sep 2026 07:48:05 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst -Openai-Processing-Ms: 241 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 158 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload -Via: envoy-router-58675c86cb-8llg5 +Via: envoy-router-7d5f5f44cf-z9b2b X-Content-Type-Options: nosniff -X-Envoy-Upstream-Service-Time: 260 +X-Engine-Geography: EU X-Openai-Proxy-Wasm: v0.1 X-Ratelimit-Limit-Requests: 10000 X-Ratelimit-Limit-Tokens: 10000000 @@ -32,9 +34,10 @@ X-Ratelimit-Remaining-Requests: 9999 X-Ratelimit-Remaining-Tokens: 9999926 X-Ratelimit-Reset-Requests: 6ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_df4996cfd74548ff9c92a98c5f091ebe +X-Request-Id: req_4c86eb857e274cc4b50ba9a666c97ea0 { + "object": "list", "data": [ { "object": "embedding", @@ -47,9 +50,9 @@ X-Request-Id: req_df4996cfd74548ff9c92a98c5f091ebe "embedding": [0.017523589, 6.212279e-05, -0.00040200076, -0.02405605, -0.0050159977, 0.018119805, -0.017679123, -0.013687063, 0.0186901, -0.009098786, -0.00013609296, 0.022552546, -0.006143625, 0.012384459, -0.016642224, -0.008534973, 0.027711118, 0.013213978, 0.027918497, -0.02352464, -0.029784916, 0.021036083, -0.007368461, 0.0015593985, -0.019182626, -0.016020086, 0.008035965, -0.017873542, -0.0028417506, 0.018677138, 0.0047308505, -0.016694069, 0.008735872, -0.03600631, -0.025170716, 0.0021823477, 0.0042383233, -0.010057918, 0.018080922, -0.0109328, 0.011917855, 0.011483653, -0.0006026974, -0.012015064, -0.008217422, 0.012306691, 0.028125877, 0.0096626, -0.009474662, 0.019273356, 0.0072453297, 0.033647362, -0.013933326, -0.019247433, -0.001123577, -0.028203646, 0.0036712694, 0.01186601, -0.0022098904, -0.008709949, -0.021087928, -0.01817165, 0.0004909067, -0.007031469, -0.0041767578, 0.0003876219, -0.016499652, -0.0052914238, 0.009636678, 0.017886503, 0.02784073, 0.024937414, 0.013220458, 0.02195633, 0.021723028, 0.016110813, -0.0038008818, 0.000109765446, 0.00061930396, -0.0013325769, -0.0013293365, -0.020336175, -0.043186832, -0.016046008, 0.0104597155, 0.0045429124, -0.025157755, 0.011042971, -0.0340362, -0.020219525, 0.00037830602, 0.033362217, 0.017199557, -0.011885451, -0.00018783663, 0.018223494, 0.020323215, 0.02846287, 0.0071351593, -0.02877394, 0.0092543205, 0.014516582, -0.04212401, -0.002499898, -0.041190803, -0.017458782, -0.0018421153, -0.011567901, 0.028955396, -0.019921416, -0.03958361, 0.022669198, 0.03927254, -0.03004414, -0.009280244, -0.011898412, -0.009882941, -0.022928422, -0.02006399, 0.0071157175, 0.007971159, 0.037354276, 0.008463685, -0.0052330983, 0.018223494, 0.00756288, -0.017510626, -0.032014247, 0.00036190194, -8.986793e-05, 0.012572397, 0.013298226, 0.017497666, 0.017186597, -0.016564457, -0.0134408, -0.0032516494, 0.014127745, -0.006629671, -0.021437882, 0.0008570616, 0.032999303, -0.018949324, -0.010861514, -0.0016549876, 0.037146896, 0.0151646435, -0.004578556, -0.015618287, -0.0035902618, 0.0027461615, -0.028385103, 0.013803714, 0.005223377, 0.0090275, 0.02405605, -0.009312646, 0.016460767, -0.026959367, 0.014555465, -0.022280362, 0.0011462591, 0.030432977, -0.009183034, 0.039635453, 0.0222674, 0.004756773, 0.019273356, -0.018003155, 0.0051618116, -0.009144151, 0.039039236, -0.03730243, 0.03214386, -0.0048896256, 0.0212305, 0.0032305876, 0.0001013609, -0.016538534, 0.009934786, -0.03297338, -0.010887437, 0.019053014, 0.0012418482, 0.0033277967, -0.008223902, 0.011632707, -0.011386444, 0.011140181, -0.0034962927, 0.024561537, 0.01712179, -0.019830687, -0.026907522, -0.6847679, -0.036706213, 0.016214503, -0.0060658576, 0.0059070825, 0.019947339, 0.015216488, 0.023174686, 0.00283689, -0.017692083, 0.0030815334, -4.3946682e-05, 0.012889947, -0.0058455165, 0.0039142924, -0.012015064, -0.0053724316, 0.012617761, 0.0014476078, -0.018016115, 0.0078091435, 0.0052168965, -0.001502693, 0.0027785646, 0.023978282, 0.0007080074, 0.02552067, 0.008554414, -0.017990192, 0.0055733304, -0.0073555, 0.017199557, 0.0068240897, -0.0033018743, 0.044871792, -0.013855559, -0.025624359, 0.01815869, 0.027607428, 0.012481668, -0.005385393, -0.017303247, -0.0023249213, -0.018249417, -0.0045655947, 0.010368987, 0.014529543, -0.011742878, 0.033906586, 0.009908863, 0.026298344, -0.036809903, -0.0017805495, 0.0009915344, 0.015683092, 0.010116243, 0.03800234, 0.0016436465, -0.005421036, -0.002363805, -0.017342132, -0.01554052, -0.011315157, -0.025753971, -0.020984238, 0.011535498, -0.040050212, -0.031599488, -0.010621731, -0.0094357785, -0.006461175, 0.011943777, -0.0134408, 0.02395236, 0.017497666, -0.00059095124, 0.02763335, -0.010245855, -0.001565069, -0.0036291454, 0.02500222, -0.014685078, -0.027788885, -0.023602407, 0.04214993, -0.015060954, -0.012481668, -0.011179064, 0.015294256, -0.011658629, 0.032299396, -0.0029713628, -0.015566442, -0.015190566, -0.0059524467, 0.03572116, -0.0005998621, -0.0016671387, 0.012157638, -0.009882941, -0.0016314953, -0.00367775, -0.0025274407, 0.003264611, 0.03258454, -0.0071027563, -0.022643276, 0.03025152, 0.009202476, -0.017355092, 0.021062005, -0.020413943, -0.0176532, 0.0026505722, -0.00054153654, -0.027918497, 0.03362144, 0.012468707, 0.013570412, -0.009105267, 0.0052330983, 0.0040179826, -0.007731376, -0.008735872, 0.012857544, 0.008943251, -0.010122724, -0.014736922, -0.01731621, -0.00050913345, -0.0070055467, -0.0005022478, 0.025248483, 0.0061533456, -0.0036647888, 0.00079266046, 0.013609296, -0.010414352, 0.04106119, -0.015773822, -0.023265414, -0.005097005, -0.023226531, 0.024652267, -0.005223377, -0.027140824, -0.024989258, -0.007206446, -0.037017282, 0.01806796, -0.014905419, -0.019299278, -0.025339212, 0.032429006, 0.019986223, -0.0047535324, -0.021165695, 0.008152616, -0.021334192, 0.01786058, 0.003392603, 0.0041346336, -0.0018972006, 0.006986105, 7.14893e-05, -0.028748017, -0.012215963, 0.03541009, -0.009805174, -0.032429006, 0.015696054, 0.0045234705, -0.0032224867, 0.00703795, -0.024069011, -0.0096626, -0.021139773, -0.03266231, 0.017082905, -0.0099801505, 0.012902908, 0.021710066, 0.0022196113, -0.021800796, 0.03245493, 0.004977114, 0.017743928, 0.018482719, 0.008573856, -0.012520552, -0.005515005, 0.004086029, -0.014335125, -0.009967189, 0.017808735, 0.0011179064, 0.010142165, 0.01879379, 0.014244396, -0.0029567815, 0.022034097, -0.009241359, 0.0071157175, -0.010738382, 0.005725625, -0.048682395, 0.019701075, -0.008684027, -0.0024545337, 0.021813756, -0.0052168965, -0.023693135, -0.01261128, -0.016538534, 0.020543555, 0.002593867, -0.017069945, 0.015501636, 0.00019077316, -0.016201543, 0.007919314, 0.008210941, 0.026596451, 0.006594028, -0.012319652, 0.0066879964, 0.038106028, 0.006662074, -0.011736398, -0.012805699, -0.02102312, -0.0013350071, -0.016707031, 0.020699091, -0.034399115, -0.008625701, 0.009831096, -0.038935546, 0.016992178, 0.014399931, -0.004792416, 0.043186832, 0.020452827, -0.006166307, 0.004546153, 0.019947339, 0.010057918, 0.008658105, -0.016525574, 0.004497548, -0.028644327, 0.0012734412, -0.006321842, 0.017912425, 0.030614434, -0.0052492996, 0.03416581, 0.009526507, 0.03318076, 0.018210534, -0.011114258, -0.0064773764, 0.0019312239, -0.00058325555, -0.0009615615, -0.0055733304, -0.008852523, -0.011684553, -0.013959249, -0.014762846, -0.011315157, 0.011088336, 0.028099954, -0.015605326, 0.014192551, -0.013946287, -0.010031995, -0.014879497, 0.020621324, 0.014011093, -0.013907404, -0.039557684, 0.02426343, -0.011937296, -0.007860988, -0.018314224, -0.025261445, 0.020660207, -0.0017578673, 0.013518567, 0.016940333, 0.0072842133, 0.023757942, -0.019130781, 0.0059070825, -0.043446057, 0.0040244632, -0.002930859, 0.024613382, 0.0031641612, -0.0010952243, -0.009338569, -0.035487857, -0.012060428, 0.0140759, -0.0017287045, -0.004977114, 0.010524522, -0.01112722, -0.037250586, -0.005061362, 0.0023152004, 0.0015310458, -0.019078936, -0.012326133, 0.0069925855, -0.028203646, -0.014788768, 0.02511887, 0.009753329, -0.003875409, -0.016642224, -0.01312325, 0.012416862, 0.08118917, 0.0067592836, -0.0043096105, 0.00504192, -0.0024853165, -0.015579403, -0.02279881, 0.004662804, -0.0097403675, 0.009396895, 0.016512612, -0.01712179, 0.013998132, 0.004047145, -0.013738908, -0.0035578588, 0.0058746794, -0.0019782083, 0.02121754, -0.022461819, -0.0007683581, 0.0065713455, -0.007303655, 0.015851589, 0.009202476, -0.016421882, 0.02090647, 0.0032905333, 0.027374126, -0.0045072692, -0.003593502, 0.011891932, -0.014723961, -0.015851589, -0.01134108, -0.006752803, -0.015151682, 0.0039142924, 0.006837051, -0.014153668, 0.031884637, 0.020400982, 0.012481668, -0.016888488, -0.0075369575, 0.01292235, -0.0085932985, 0.022708083, -0.0067592836, -0.0048248195, 0.022980267, 0.0105828475, -0.0034282464, 0.0027364404, 0.013324148, 0.008023004, -5.4528315e-05, 0.00012606825, 0.0016752395, -0.010466197, 0.013790753, -0.013142691, 0.011263312, -0.0033990836, -0.027918497, -0.0193252, -0.004273967, 0.0022860377, -0.024548577, -0.004630401, -0.0015221349, -0.017614316, -0.020945353, -0.0027753243, 0.02531329, 0.016240425, 0.0096172355, -0.009759809, -0.015320178, 0.034943487, -0.013226939, -0.00053465087, -0.0042804475, 0.0012726311, -0.007660089, 0.0025825258, 0.033310372, -0.028385103, -0.015514597, 0.0010903638, 0.039039236, -0.005839036, 0.013687063, -0.014477698, 0.0053141057, -0.0044424627, 0.0077961823, 0.0049933153, -0.009085825, -0.011574382, 0.0126890475, -0.024885569, -0.014309202, -0.013635218, 0.003998541, 0.0186901, 0.009779251, 0.005485842, -0.030821813, -0.001733565, 0.012377978, -0.002331402, -0.009798693, -0.004277207, 0.015397945, 0.018236456, -0.014412892, 0.02615577, 0.0064028497, -0.020025106, 0.017666161, -0.038365252, 0.023576485, 0.006733361, -0.009468181, -0.00388513, 0.027374126, -0.001806472, -0.012643684, 0.013712985, 0.0023913477, 0.010556925, -0.013725947, -0.02708898, -0.04023167, -0.025792856, 0.036602523, 0.0032484091, -0.01522945, -0.0061630667, 0.0041540754, 0.014775807, 0.0030993551, -5.6654768e-05, -0.011703994, -0.021645261, 0.011276273, -0.012436304, -0.010323623, 0.023278376, -0.0047114086, -0.0024205104, -0.012682567, 0.012585358, 0.004873424, -0.020323215, -0.020232486, -0.023615368, 0.022721043, 0.0016250147, 0.019610347, -0.0034800912, 0.0031430991, -0.00483454, -0.004380897, -0.0019036812, -0.0045072692, 0.0069601825, -0.041424103, 0.014555465, 0.02373202, 0.0072647715, 0.015099837, -0.0053400286, 0.010349546, 0.029758994, 0.0010020654, -0.0056510977, -0.022656238, -0.021204578, -0.0041443547, -0.010485638, -0.01335007, -0.017471744, 0.0020089913, -0.0057807104, 0.03543601, 0.008794197, 0.0051942146, -0.0010449995, 0.029136853, -0.011457731, 0.03727651, -0.0072194072, 0.00043622652, -0.0073295776, -0.014879497, -0.0061922297, 0.0042966492, 0.011269793, 0.01796427, 0.011276273, -0.0078674685, -0.026505724, 0.006383408, 0.017899465, 0.027063057, 3.4985205e-05, -0.01303252, -0.014335125, -0.0042998893, -0.017277325, -0.028099954, -0.053452127, 0.012047467, -0.0004054436, -0.030951427, 0.027114902, -0.014555465, -0.012915869, -0.00924784, 0.003023208, 0.023161724, -0.0034930524, 0.019908456, 0.0060658576, -0.0075693605, -0.010518041, 0.0017627279, -0.011885451, -0.0010684917, 0.025974313, 0.018236456, -0.008347034, 0.025468824, 0.016797759, 0.01659038, 0.02931831, -0.0052687414, -0.017588394, 0.0068111285, 0.014970225, -0.026350189, 0.0062635164, -0.02447081, 0.02111385, -0.017471744, -0.02111385, 0.0063412837, -0.0010490499, -0.013246381, -0.003813843, -0.042797994, 0.009306166, 0.009390414, 0.005417796, 0.008126694, -0.0007420306, -0.028877629, -0.0039240136, -0.0050905244, 0.030173752, -0.001858317, 0.008599779, 0.006419051, 0.012481668, -0.018858595, -0.0053303074, 0.0030539907, 0.025637321, -0.010122724, 0.004423021, -0.008003562, 0.024872608, 0.04728258, -0.016007124, -0.0051488504, -0.0034282464, -0.008742352, -0.0097403675, 0.007737857, 0.009921825, -0.011354041, 0.006383408, -0.026090965, -0.006986105, -0.0363433, 0.008431283, -0.0046206797, -0.018988207, -0.0013366273, -0.0151646435, 0.009358011, 0.0066879964, 0.012766816, 0.0025015182, 0.026116887, 0.009358011, -0.0135963345, 0.027244514, -0.02215075, 0.02141196, -0.0038948508, 0.017160675, 0.009753329, -0.022513663, 0.023045074, -0.02102312, -0.028177723, -0.022384051, -0.008586817, -0.017730968, 0.0069277794, -0.005644617, 0.0009356391, -0.013259342, 0.0015626388, -0.02342095, -0.012164118, -0.008781236, -0.026726063, 0.011263312, 0.028177723, -0.018106844, 0.0036226648, 0.0061501055, -0.0010296081, -0.001040139, -0.030536667, -0.0023881074, -0.012643684, 0.0155275585, 0.009396895, -0.011639188, 0.0027137583, -0.013674102, -0.01889748, 0.007835066, -0.0040536257, 0.014490659, 0.005631656, -0.0009842437, -0.026220577, 0.01786058, -0.015203527, 0.013110288, -0.014516582, -0.03204017, -0.018638255, 0.0005557129, 0.014399931, -0.00924784, -0.011639188, -0.040179826, -0.014361047, -0.0054048346, -0.008664585, 0.00084491045, 0.010965204, 0.0134148775, 0.021645261, -0.011042971, -0.011282754, 0.016642224, 0.0040082615, -0.00703795, -0.02288954, -0.0019976501, 0.0032386882, -0.007187004, 0.01228725, 0.012714971, -0.011405886, -0.020543555, 0.012896428, -0.01292235, -0.0031544403, -0.008742352, -0.007692492, -0.00054680207, 0.019467773, 0.019934379, 0.026103925, 0.014218474, -0.006901857, -0.016525574, -0.00011492969, 0.002068937, 0.033362217, -0.026570529, 0.008074849, 0.009422817, -0.011950257, -0.016227465, -0.030614434, 0.013648179, 0.0116651105, 0.0084701665, 0.011775281, -0.0058260746, 0.0076536085, 0.035876695, -0.0075175157, -0.0052817026, -0.00231196, -0.008580337, -0.03520271, -0.010258816, 0.0009680422, -0.021152733, 8.442523e-06, -0.018482719, -0.003224107, -0.021100888, 0.009461701, -0.025092948, -0.0063121207, -0.02225444, 0.024522655, 0.019078936, -0.017730968, 0.008437763, -0.031703178, -0.0027348204, -0.0051391292, -0.0069277794, 0.00096075144, -0.020802781, -0.007193485, -0.0068305703, -0.0030961148, -0.021826718, -0.0019360844, 0.015994163, 0.028748017, 0.01953258, 0.20841664, -0.0045105093, -0.012099312, 0.0422277, -0.006338043, 0.020128796, 0.018949324, -0.002362185, 0.031780947, 0.024626344, -0.013933326, 0.012008583, -0.0058779195, -0.0064968183, 0.000976953, -0.017912425, -0.033258528, -0.009461701, -0.010414352, -0.009688523, -0.006921299, -0.014516582, -0.0005455869, -0.008910848, 0.015605326, -0.00086192205, -0.009818135, 0.0023994483, 0.025728049, 0.018754905, -0.016940333, -0.016681109, -0.010064398, -0.02216371, -0.0014354567, 0.0029778434, -0.0055182455, -0.011807684, 0.021619339, 0.031806868, 0.008787717, -0.010330103, -0.022954345, -0.0015326659, -0.012883467, 0.02469115, -0.015683092, -0.011904893, 0.01554052, 0.0132334195, -0.020660207, -0.0023670453, 0.023356143, 0.022734005, -0.0015918015, 0.023615368, 0.02142492, -0.0035157346, 0.0071675624, 0.00020656966, -0.018210534, 0.023589445, -0.03289561, 0.0055538886, 0.0031220373, -0.0020106114, -0.003350479, -0.003235448, 0.025248483, -0.030173752, 0.0065843067, 0.0043225717, -0.012274289, 0.004179998, -0.01428328, -0.021969292, 0.024146779, -0.0069083376, 0.019999184, 0.008956213, -0.019726997, 0.0024221307, -0.014244396, 0.0057807104, -0.00095346075, -0.021710066, 0.0023589446, 0.0014532784, 0.02185264, -0.0028709134, 0.0005103486, -0.008029484, 0.008800678, 0.017355092, 0.028099954, 0.022604391, 0.0020964795, 0.0006699338, -0.02911093, -0.0026003476, -0.03248085, -0.043575667, 0.019156704, -0.003382882, -0.007854507, 0.014594349, -0.0076341666, 0.008347034, 0.039428074, 0.0034055642, 0.012215963, -0.013272303, 0.006739842, -0.0005609784, 0.004014742, -0.01009032, 0.011697514, -0.014011093, -0.008035965, -0.0026489522, 0.00031593008, -0.007608244, 0.0058163535, 0.0061987103, 0.020128796, -0.017912425, -0.009811654, 0.008282228, 0.002080278, -0.04274615, 0.027659273, -0.0027186188, 0.030873658, -0.010524522, -0.002122402, 0.029292388, 0.009695003, -0.011470692, -0.0045720753, 0.0021823477, 0.005599253, -0.012034506, 0.0096172355, 0.007511035, 0.004873424, 0.0009202476, 0.009513546, -0.0034476882, -0.021697106, -0.022202594, -0.018288301, 0.018262379, -0.00787395, -0.0050808038, 0.01691441, -0.013492645, -0.01565717, -0.016564457, 0.00651302, 0.026220577, -0.011334599, 0.010174569, 0.009403375, -0.0045882766, 0.003235448, 0.0039272537, -0.16611117, 0.017536549, 0.021360114, -0.007990601, -0.0037781997, 0.012040987, 0.00041759474, 0.028618405, -0.01815869, 0.026531646, -0.0043614553, 0.017069945, -0.034502804, -0.0075888024, -0.002595487, 0.008917329, -0.0023103398, -0.0108226305, 0.02132123, 0.01889748, 0.0038365251, -0.018832672, -0.0003612944, 0.0066361516, 0.010077359, -0.0036842306, -0.0023702856, 0.02225444, -0.004818339, -0.02698529, 0.005388633, 0.007394384, 0.015255372, 0.020608362, 0.032195706, 0.016149698, -0.014322164, 0.006966663, 0.0003718254, -0.008327593, 0.0010595808, 0.020310253, 0.0036518276, 0.015372023, -0.01354449, 0.014892458, 0.020025106, 0.0126307225, -0.0058033923, -0.014011093, 0.008522011, -0.03297338, -0.0041637965, -0.0053918734, 0.014309202, 0.030329287, 0.019726997, 0.007945237, -0.008599779, 0.009234879, -0.016655186, -0.0363433, -0.0043128505, 0.006564865, 0.009053422, -0.004821579, 0.01627931, 0.014088862, -0.021295307, -0.0023459834, -0.018741945, -0.021541571, -0.0096172355, -0.022111865, -0.003425006, 0.01417959, -0.009306166, -0.006772245, -0.005835796, -0.020323215, 0.0017319449, 0.034839798, -0.0072194072, 0.0025663243, -0.016058968, 0.007835066, -0.0047211293, 0.013790753, -0.02090647, -0.0036064633, 0.03823564, -0.034217656, 0.0022552547, -0.023070997, 0.010887437, 0.016551496, -0.001848596, -0.007530477, 0.005482602, 0.020102873, 0.014736922, -0.0056024934, -0.014490659, 0.014723961, 0.03004414, 0.019195586, -0.0025128592, 0.012844583, 0.024496732, -0.0014062938, -0.019351123, 0.02269512, -0.009118228, 0.01954554, 0.011321638, -0.0017400456, 0.015475714, -0.025922468, 0.0087747555, 0.009792212, 0.04282392, -0.001953906, -0.0029276188, 0.01008384, -0.01944185, -0.025365135, -0.1075264, -0.0002774514, 0.0193252, 0.03235124, 0.0013819915, 0.015890473, -0.0040277033, 0.022215554, 0.0030944946, 0.028203646, -0.021256423, -0.012591839, -0.012572397, -0.013816675, 0.0035319363, -0.010174569, 0.0040568663, -0.02784073, -0.044845868, 0.024496732, -0.0055733304, 0.00064968184, 0.004497548, -0.010064398, -0.0047535324, -0.0092543205, -0.029862683, 0.022824733, 0.003499533, -0.0034379673, 0.026570529, -0.012429823, 0.0020284331, -0.0013220458, -0.021463804, -0.0170181, 0.0076406472, -0.001973348, 0.0043614553, -0.03413989, -0.003907812, 0.0066555934, 0.013298226, -0.02541698, 0.002112681, 0.0055927723, -0.015553481, 0.015372023, -0.010796708, -0.009163592, 0.008658105, 0.018366069, -0.031340264, -0.0075693605, 0.03802826, -0.012261327, 0.018534565, 0.021710066, -0.028125877, 0.012844583, 0.0033099751, 0.013803714, -0.009656119, 0.024535615, -0.02763335, -0.009040461, -0.039246615, -0.012546474, 0.028748017, -0.020841664, -0.014218474, 0.017069945, -0.013725947, 0.016784798, -0.026194654, 0.0048896256, -0.018923402, -0.0058649583, 0.011827126, -0.01713475, -0.031210652, -0.021917446, -0.005064602, -0.002742921, -0.004883145, 0.02763335, -0.011094816, -0.008859003, 0.021684144, -0.006146865, -0.0026084483, 0.032117937, -0.0017141232, -0.02300619, -0.0039531766, 0.006176028, -0.0055085244, 0.00063712563, 0.00808781, -0.02269512, -0.010790227, -0.017264364, -0.042175855, 0.011652149, 0.00409575, -0.017730968, -0.0009121468, 0.0035578588, -0.0027753243, 0.0027218591, -0.020932393, 0.0060852994, 0.0046206797, 0.00058690086, -0.010738382, -0.02121754, -0.01576086, -0.0067592836, 0.0038948508, 0.006901857, 0.012442784, -0.0062959194, 0.0024010686, 0.00096885226, 0.011166103, 0.01713475, -0.037769035, 0.00346713, -0.0023168207, -0.01629227, -0.02522256, -0.015346101, 0.025792856, -0.030407054, -0.00178541, 0.038702246, -0.022837695, -0.025883583, -0.014996148, 0.02606504, 0.011211467, -0.015294256, -0.027607428, -0.033102993, 0.0132334195, -0.027244514, -0.00777026, 0.02877394, -0.014153668, -0.0017141232, -0.00043420133, 0.008223902, 0.019454813, 0.020452827, 0.008029484, -0.005576571, -0.01460731, -0.0140759, 0.029188698, 0.016577419, 0.02364129, -0.012066909, 0.0042836876, -0.0032516494, 0.0064125704, 0.012844583, 0.005113207, 0.014231435, 0.011107777, 0.0016541774, -0.0028741537, -0.013453761, -0.014011093, -0.011516056, 0.036084075, 0.018055, 0.0073879035, -0.0039434554, 0.0027024173, -0.009591313, -0.029396078, 0.031858712, 0.020193603, -0.0043322924, -0.009520026, 0.012339095, 0.023939399, 0.030847736, -0.037120976, 0.008100771, 0.0060528964, 0.008483128, -0.015838629, 0.005644617, 0.019921416, 0.019726997, 0.01386852, 0.0044716257, -0.014062938, -0.006111222, 0.00021284776, 0.031029195, -0.0039434554, -0.009111747, 0.00065575744, -0.04399043, -0.023058034, 0.009947747, -0.014153668, -0.013401916, 0.0018566968, 0.020400982, 0.011250351, 0.00043582148, -0.0063704466, 0.016383, -0.006253795, -0.0024496731, -0.013103807, -0.014062938, -0.020154718, 0.010978165, 0.00703795, 0.009578352, 0.01849568, -0.013427839, 0.013959249, 0.008560895, 0.02867025, -0.015942318, 0.015035031, 0.011438289, 0.011645668, 0.0040406645, -0.0031884636, 0.0021191617, 0.00041030406, -0.03035521, -0.00987646, 0.016953293, 0.0057321056, 0.0519227, -0.007154601, -0.044249654, 0.026622374, -0.008969174, 0.006334803, 0.017095868, 0.012902908, -0.00609178, -0.005495563, 0.011606785, 0.0068759345, 0.03569524, -0.009176553, -0.029033164, -0.0072129266, -0.024107896, 0.022980267, -0.025753971, -0.003005386, 0.009021019, -0.014127745, 0.010181049, 0.008722911, -0.020012146, -0.005560369, 0.011179064, 0.008165577, -0.003528696, -0.0011827126, 0.021995215, -0.019208549, -0.024963336, -0.001501883, 0.0043744165, -0.01870306, -0.018741945, -0.00986998, 0.011593823, 0.011580862, 0.012838102, 0.020828703, -0.022734005, -0.008671066, 0.006250555, -0.011114258, 0.0048280596, 0.011062413, -0.018366069] }, { - "object": "embedding", "index": 2, - "embedding": [0.016153779, -0.015616193, -0.008981606, -0.01708472, 0.0021126443, 0.014409905, -0.021975433, -0.0053955195, 0.0075065247, -0.018435238, 0.023837313, 0.0075327484, -0.01509172, 0.016783146, -0.026525239, -0.007637643, 0.03511349, -0.005415187, 0.02217211, -0.015353957, -0.03875858, 0.010004329, -0.01960219, 0.010850042, -0.0075327484, -0.015694864, 0.008286679, -0.024256893, 0.016822482, -0.0005588919, 0.012803705, -0.021372288, 0.012646363, -0.03340895, -0.029370507, 0.0135969715, 0.007886767, -0.004871046, 0.012253009, -0.027429955, 0.017700976, 0.0026518684, -0.005215232, -0.017910764, -0.0037335947, 0.022788366, 0.025371397, 0.00534635, -0.011990772, 0.020008657, 0.00051709794, 0.023640636, -0.011813762, -0.022631025, 0.009958438, -0.03304182, -0.0017979601, 0.013570747, -0.025476292, -0.02223767, -0.005359462, -0.0122989, -0.0019290785, -0.007781873, 0.004313793, -0.0018684362, -0.0038974925, 0.010895934, -0.0038089876, -0.0028846033, 0.030655466, 0.025135385, -0.001303808, 0.019562855, 0.0118006505, 0.0113024, -0.0063297376, 0.0026944818, 0.0058609894, -0.009348737, -0.00017905848, -0.023588188, -0.02517472, -0.0048612123, 0.014986826, 0.0101223355, -0.004176119, 0.0034975817, -0.025830312, -0.015026161, -0.0028682137, 0.02795443, 0.030288335, 0.0030566962, -0.004385908, 0.015485075, 0.0151441675, 0.026656358, 0.020978933, -0.022539241, 0.01380676, 0.019536631, -0.035637964, -0.0039991094, -0.029318059, -0.024322452, 0.010279678, 0.0008330112, 0.037709635, -0.02774464, -0.027639745, 0.021359177, 0.021359177, -0.020716697, -0.018697474, -0.023994654, -0.0035696966, -0.021765644, -0.029921204, -0.008339126, -0.00088422926, 0.040332, 0.015065497, -0.01401655, 0.029370507, 0.011027052, -0.007834321, -0.020978933, -0.010909045, 0.0049497173, 0.012292344, 0.018238561, 0.022867037, 0.016835595, -0.0058675455, -0.007237732, -0.004654701, 0.026931707, -0.0075130807, -0.030943926, 0.0189466, 0.028846033, -0.0030058878, -0.0044449116, -0.008227675, 0.0359002, 0.028347785, -0.0035238052, -0.0015299871, 0.0017405959, 0.0071918406, -0.03367119, 0.018776145, -0.00021327217, 0.011426963, -0.0030566962, -9.7442435e-06, 0.0013783815, -0.03359252, -0.0033189328, -0.014567247, 0.004539972, 0.027272614, 0.010705812, 0.020402012, 0.021057604, 0.00024297867, 0.0151441675, -0.00815556, 0.010738592, 0.0012194006, 0.030734139, -0.0169536, 0.026931707, -0.007145949, 0.0134068495, 0.004330183, 0.0017110943, -0.013701866, 0.008863599, -0.014331234, -0.0058839354, 0.016324233, -0.00081703113, 0.011453186, -0.009558527, 0.008981606, -0.008837376, 0.01408211, -0.008752149, 0.021936098, 0.02246057, -0.0018553245, -0.018356567, -0.69775933, -0.03325161, 0.0027141494, -0.000667884, 0.007991662, 0.021608302, 0.0042088986, 0.008850488, -0.0031075045, -0.015668642, -0.0011112279, 0.009912546, 0.004487525, -0.010017441, 0.008745593, -0.032936927, -0.011767871, 0.02761352, -0.0061527276, -0.009237287, -0.0015480159, -0.0005322585, -0.02695793, -0.00213559, 0.031337284, 0.013977215, 0.02474203, -0.0036155882, -0.00033496637, 0.016337344, -0.0065067476, -0.0032714026, -0.0075065247, -0.01608822, 0.040961366, 0.0091651715, -0.019038383, 0.008430909, 0.0034844698, 0.015839094, -0.009702757, -0.0044481894, -0.0049136598, -0.02244746, -0.006942716, -0.0015578497, 0.009853543, -0.00850958, 0.037735857, -0.00013111833, 0.023365287, -0.014934379, 0.0012964326, -0.0038745468, 0.024191333, -0.0023076828, 0.016652029, -0.0015119583, 0.006129782, -0.0023896317, -0.012200561, 0.0026420346, -0.018999048, -0.017176501, -0.012233341, 0.007585196, -0.03805054, -0.018723698, -0.0053004585, -0.0030353894, 0.00883082, 0.013282287, -0.015131056, 0.02811177, 0.014252563, 0.0016799537, 0.01652091, -0.019038383, 0.026774364, 0.013131501, 0.01694049, -0.006303514, -0.021188723, -0.004199065, 0.020179112, -0.0113024, -0.03275336, -0.02881981, 0.01644224, -0.010791039, 0.04413443, 0.0019176056, -0.004628477, -0.009289734, -0.002758402, 0.025751641, -0.009866655, -0.00023293991, 0.013059386, -0.012089111, 0.008430909, -0.026905483, -0.008699701, 0.0051562283, 0.03382853, 0.010941825, -0.029108271, 0.036031317, 0.011276177, -0.018972823, 0.01873681, -0.019051494, -0.02295882, -0.0009342181, 0.015537523, -0.022985045, 0.04568163, 0.017714087, 0.0072573996, -0.0055102482, -0.0036549235, -0.0011267982, -0.0064215204, -0.024873149, 0.007932659, -0.012987271, -0.0020356122, -0.0258172, -0.019077718, -0.004802209, 0.0063362936, -0.0028796864, 0.009184839, 0.006480524, -0.003220594, -0.003622144, 0.007926104, -0.017425627, 0.031337284, -0.030209664, -0.025843425, -0.012954491, -0.021136276, -0.004975941, -0.00757864, -0.018081218, -0.031153716, -0.0062248427, -0.029082047, 0.017989436, -0.03432678, -0.019969322, -0.03217644, 0.019274395, -0.00030382577, -0.006536249, -0.024178222, 0.0030353894, -0.009466744, 0.0314684, 0.0026469515, 0.00944052, -0.009899435, -0.004884158, -0.0017094553, -0.03784075, -0.000945691, 0.032858256, -0.0035729746, -0.03482503, -0.001888104, -0.0027125105, 0.010037108, -0.0065559167, -0.024584688, -0.015668642, -0.016756924, -0.023470182, 0.016861819, -0.010384572, 0.012515245, 0.0151441675, -0.0009383156, -0.024873149, 0.035716634, -0.0064838016, 0.016324233, 0.01401655, -0.0016602859, 0.008273567, -0.017032271, -0.0033697411, 0.0022339285, -0.012613583, 0.02010044, 0.007657311, -0.0031910925, 0.011735091, 0.0077687614, -0.0018667973, 0.015681753, -0.0010636975, 0.017399402, -0.018487684, 0.028793586, -0.028950928, 0.017333845, -0.006542805, 0.01147941, 0.03920438, 0.00026776822, -0.01945796, -0.0090471655, -0.01147941, 0.013288843, 0.015327733, -0.012259564, 0.029868757, 0.0046153655, -0.01165642, 0.002519111, 0.00043596845, 0.03975508, 0.0050218324, -0.013282287, -0.006001942, 0.036267333, 0.014855707, -0.011446631, -0.0025928651, -0.018461462, -0.0035860864, -0.020651137, 0.0052906247, -0.012279232, -0.010535358, 0.0042679016, -0.039781302, 0.01709783, 0.020493796, 0.006228121, 0.036346003, 0.037788305, -0.012220229, 0.009368405, -0.0041269497, 0.026210556, 0.008529248, -0.015825983, 0.00022003296, -0.022867037, -0.0015742395, -0.0030206386, 0.01701916, 0.03312049, 0.009656865, 0.037211385, 0.011715423, 0.03060302, 0.025436956, -0.026984153, -0.0058577117, 0.0135183, -0.012325124, 0.00022720349, -0.0037467065, -0.0043564066, 0.005765929, -0.004975941, -0.004802209, 0.0008735759, 0.0048415447, 0.02488626, -0.015458852, 0.01680937, -0.011853098, -0.020992046, -0.004556362, 0.017582968, 0.008214564, -0.006772262, -0.040515564, 0.0141870035, -0.0026977598, 0.0012898766, -0.020742921, -0.02782331, 0.018527022, -0.004798931, 0.011813762, 0.0102993455, 0.018579468, 0.02023156, 0.0022585134, 0.014724589, -0.029685192, 0.0020601968, -0.0055758073, 0.006231399, 0.0069951634, -0.0058675455, -0.0157342, -0.02573853, 0.0036516457, 0.013065942, 0.01538018, -0.018540133, 0.005451245, -0.017386291, -0.01966775, -0.007447521, -0.00062158285, -0.0013701866, -0.005192286, -0.011086055, 0.0011694117, -0.021634525, -0.009368405, 0.02774464, 0.0078408765, 0.026144996, -0.021936098, -0.009506079, -0.0013398655, 0.08349615, 0.012167782, -0.0063526835, 0.009020941, -0.0045137485, -0.013754313, -0.0155112995, 0.01054847, -0.012725035, -0.007794985, 0.0069754953, -0.009833875, 0.013819872, 0.008135892, -0.0004156861, -0.0110794995, 0.01140074, 0.009250399, 0.03812921, -0.012489022, -0.00082727475, 0.0019241616, -0.016652029, 0.003930272, 0.0013857569, -0.011499078, 0.027797086, 0.015563746, 0.018225448, -0.004871046, 0.0038188214, 0.019497296, -0.001970053, -0.011558081, -0.0151441675, -0.013439629, -0.010286233, 0.0033156548, 0.012305455, -0.021726308, 0.029527849, 0.018553244, 0.014265675, -0.020323342, -0.002442079, 0.010535358, -0.0060773348, 0.010482911, -0.007342627, 0.0026174497, 0.023811089, 0.005415187, 0.0012267759, -0.011571193, 0.009243842, 0.01987754, -0.0024617468, -0.001981526, 0.0021536187, -0.010319013, 0.0059724404, -0.01674381, 0.0024174943, -0.015340845, -0.023325952, -0.0045366944, 0.00041671045, -0.001494749, -0.0036418117, 0.0026272836, -0.002351935, -0.020047994, -0.022040993, 0.0075917514, 0.028059324, 0.016035773, 0.009427409, -0.0055102482, 0.007073834, 0.03854879, -0.010279678, 0.0005187369, -0.018540133, -0.0066411435, -0.012226785, 0.010423908, 0.021555854, -0.024191333, -0.0038712688, -0.009919102, 0.023876648, 0.0005437313, 0.00040953993, -0.017386291, -0.0010825457, -0.0147901485, 0.018343454, 0.0015988242, -0.015603082, -0.006480524, 0.0036155882, -0.02194921, -0.014436129, -0.0067525944, 0.010509134, 0.023627523, 0.021005157, 0.01701916, -0.018291008, -0.00021655012, 0.0280331, -0.011131947, 0.0017455128, -0.008358794, 0.003553307, 0.014606583, -0.017294507, 0.02631545, 0.013282287, -0.024322452, 0.004825155, -0.03081281, 0.019654639, -0.0025076382, -0.0049103815, 0.0016176725, 0.014475464, -0.01509172, -0.0011612168, 0.0014644279, 0.00095552485, 0.016979825, -0.008883268, -0.01981198, -0.042797025, -0.025017379, 0.006205175, -0.007709758, -0.018028772, -0.0055102482, -0.008070334, 0.020821592, 0.022355676, -0.0020749476, -0.026158107, -0.01694049, 0.0057233153, 0.0072967354, -0.0009669977, 0.011558081, -0.0033599073, -0.00025568076, -0.025358286, 0.02152963, 0.007349183, -0.0059658843, -0.02517472, -0.021280507, 0.012600472, 0.01083693, 0.030209664, -0.004726816, -0.0023863537, 0.0031271724, -0.010246898, 0.0024240501, -0.017438738, -0.006539527, -0.03503482, 0.0058577117, 0.013885432, 0.0019503853, 0.02181809, -0.002196232, 0.00865381, 0.012534913, -0.0019110497, -0.007001719, -0.023221057, -0.030786585, 0.001334129, -0.0037991537, -0.023181722, -0.011131947, 0.008942271, -0.011826874, 0.03262224, 0.016271785, 0.0043400167, -0.0059167147, 0.023352176, 0.0022716252, 0.028059324, -0.008142449, -0.005431577, -0.016638916, -0.022119664, -0.0060150535, 0.014488576, 0.00929629, 0.021568965, 0.005431577, -0.00045768495, -0.022919485, 0.023207946, 0.018985935, 0.028426455, 0.003471358, -0.007185285, -0.01952352, -0.012200561, -0.026577687, -0.026525239, -0.03553307, 0.010305901, 0.0018241839, -0.025895871, 0.026053213, -0.0011522024, -0.019575967, 0.012856153, -0.00054004363, 0.01616689, -0.004874324, 0.01151219, -0.0011661337, 0.0005957689, -0.012253009, -0.0034779138, -0.014357458, -0.010686144, 0.02645968, 0.010994272, -0.0019995547, 0.01687493, 0.02045446, 0.013583859, 0.033146717, -0.011984216, -0.013649419, 0.017530521, 0.012200561, -0.022853926, 0.008083445, -0.03411699, 0.016927376, -0.010502579, -0.020651137, -0.0024928874, -0.012397239, -0.01902527, -0.003930272, -0.042036537, 0.009630642, 0.011649864, -0.0059724404, 0.0019389124, -0.01104672, -0.017110942, -0.012541469, -0.0035762526, 0.016363569, -0.004231844, 0.014173892, -0.009217619, -0.000510542, -0.02782331, -0.002591226, -2.306095e-05, 0.02517472, -0.0025076382, -0.006287124, -0.014436129, 0.021306729, 0.03747362, -0.010201006, -0.0076638665, 0.006392019, -0.007309847, -0.0009768317, 0.025397621, 0.004871046, -0.016350456, 0.0070935017, -0.01937929, 0.009027497, -0.020939598, -0.0049136598, -0.012115334, -0.0050710016, -0.000452768, -0.008673478, 0.0076769786, -0.0034910257, 0.008489912, -0.018120553, 0.03288448, 0.0101813385, -0.008424353, 0.020978933, -0.011984216, 0.01544574, 0.00093995454, 0.013793649, 0.004097448, -0.018802369, 0.03524461, -0.013039718, -0.029029598, -0.009519191, 0.0076966463, -0.0056282547, -0.0038417673, -0.0020913375, 0.011145058, 0.0014095221, 0.020611802, -0.01652091, -0.015891543, 0.003845045, -0.028767362, -0.0017373179, 0.010345236, -0.016861819, -0.005739705, 0.008817708, 0.0020192224, 0.011610528, -0.045366943, -0.014816372, -0.015616193, 0.017936988, -0.006244511, -0.01387232, -0.017556746, 0.0046415892, -0.000989124, 0.009191396, -0.009381517, 0.010909045, -0.008286679, -0.0064543, -0.01422634, 0.021647638, -0.01859258, 0.006772262, -0.021228058, -0.009964993, -0.010771371, 0.010856598, -0.0057134815, -0.01658647, 0.0027207055, -0.039650183, -0.021214947, -0.01265292, -0.021123163, -0.002052002, 0.0089160465, 0.015957102, 0.0314684, -0.007939215, 0.0011284371, 0.021398513, 0.008306347, 0.0102993455, -0.036949147, -0.013282287, -0.000113601745, -0.018186113, 0.016429128, 0.011787538, 0.0015094999, -0.009079944, 0.002910827, -0.009984661, 0.008470245, -0.0147901485, -0.014593471, 0.0024978044, 0.018225448, 0.018212337, 0.031704415, 0.013354402, -0.013623195, -0.012790593, -0.006188785, 0.021700084, 0.025292726, -0.010305901, 0.0034057987, -0.0008752149, -0.013164281, 0.011767871, -0.007388518, 0.010397684, 0.004199065, 0.006451022, 0.007834321, -0.010941825, 0.00086128357, 0.015209727, -0.0070935017, -0.0062609003, -7.21535e-06, 0.0002074333, -0.03288448, -0.0057888743, 0.01416078, -0.007853989, -0.0061035585, -0.026197443, 0.0023388234, -0.04083025, 0.0055430275, -0.021306729, -0.002192954, -0.024374899, 0.016035773, 0.015655529, -0.031520847, -0.006451022, -0.026669469, -0.002045446, 0.0030058878, -0.010817262, -0.016153779, -0.020847816, -0.017045384, 0.002286376, 0.011289288, -0.025279615, -0.012836485, -0.0028944372, 0.01644224, 0.02874114, 0.21398512, 0.01408211, -0.017320732, 0.03503482, -0.009152059, 0.03917816, 0.023719307, -0.007493413, 0.022001656, 0.024309339, -0.011944881, 0.0053102924, 0.0023125997, -0.0033189328, -0.00028456777, -0.004330183, -0.032360006, 0.0010284594, -0.011630196, -0.0061789514, 0.0024928874, -0.007152505, 0.013623195, -0.006244511, 0.022683471, 0.010207563, -0.009152059, 0.0021011713, 0.03262224, 0.018710587, -0.011957992, -0.006677201, 0.0072967354, -0.008142449, -0.0036319778, -0.0020175835, -0.011145058, 0.0014586914, 0.007939215, 0.026538352, 0.011885877, 0.008811153, -0.024125773, -0.018330343, -0.00039233064, 0.028583797, -0.007657311, -0.0089160465, 0.022355676, 0.010863154, -0.026617022, -0.008522692, 0.033225387, 0.017674752, -0.001057961, 0.032648467, 0.019995546, -0.00801133, 0.016901154, -0.006700147, -0.008614475, 0.020205336, -0.019156389, -0.0072246203, 0.010607474, -0.0027272613, -0.007650755, 0.015642418, 0.009643754, -0.014960602, 0.023207946, 0.01276437, 0.010876266, 0.0044645793, -0.017609192, -0.018002547, 0.023719307, 0.012613583, 0.014895042, -0.010522246, -0.012384127, -0.0036778692, 0.0014324678, 0.023561966, -0.010142003, -0.02252613, -0.008548915, 0.013465853, 0.036922924, 0.0043498506, -0.0018667973, -0.009846987, 0.0146721415, 0.0069230483, 0.0009784705, 0.024204444, -0.014580359, 0.018041883, -0.035506845, 0.0062740124, -0.036660686, -0.024440458, 0.022198334, -0.009669977, -0.007408186, 0.008857043, -0.0030517792, 0.018081218, 0.037945647, -0.0035991983, 0.015498187, -0.011669531, 0.008017886, -0.0011972743, 0.015760424, -0.013623195, 0.011453186, -0.01558997, -0.018238561, -0.0104173515, 0.0043826303, -0.01766164, -0.012357903, 0.00740163, -0.0010931991, -0.0038024317, -0.015563746, 0.01679626, 8.609763e-05, -0.030550571, 0.032727137, -0.000109709166, 0.025895871, 0.0047464836, -0.005457801, 0.0040515563, -0.01722895, -0.00037286777, 0.0039171604, -0.008450577, -0.0015439184, -0.01645535, 0.0038089876, -0.0066444217, -0.0030501403, 0.0067394823, 0.018382791, -0.013321623, -0.014514799, -0.026787477, -0.008765261, -0.006080613, -0.0072246203, -0.013341291, 0.02331284, -0.02066425, -0.01981198, -0.0031058656, 0.0027338173, 0.02294571, -0.017818982, 0.008771816, 0.00028907496, -0.013741202, -0.0050742794, 0.0058708233, -0.16971958, 0.013688754, 0.018173002, -0.017753422, -0.0055364715, 0.004726816, 0.013819872, 0.02524028, -0.0084440205, 0.031232387, -0.0028616576, 0.013380626, -0.059003253, -0.00955197, 0.005274235, 0.015078609, -0.014750813, -0.0072705117, 0.024348674, 0.008293235, -0.0040450008, -0.024060214, 0.012738146, -0.006523137, -0.00075966684, 0.004952995, -0.012790593, 0.029632743, -0.0025650025, -0.0069623836, -0.0029583573, 0.00772287, 0.00048554759, 0.025279615, 0.022054104, -0.0006715717, -0.000104228835, 0.00613306, 0.0019864428, -0.0045596403, 0.0005298, 0.018081218, -0.0009112724, 0.0029468846, -0.017543633, 0.02031023, 0.032936927, 0.010325569, -0.007906436, -0.005913437, 0.020913374, -0.041276053, -0.010909045, -0.004972663, 0.0139509905, 0.009525747, 0.014895042, 0.016245563, -0.008280123, 0.015550635, 0.001181704, -0.040568013, -0.0026993987, 0.0071918406, -0.005113615, -0.011603973, 0.012161226, 0.0032074822, -0.023194833, 0.0129348235, -0.019287508, -0.0138329845, 0.012849597, -0.020205336, 0.0077556497, 0.0049136598, -0.004441634, 0.013544524, -0.004012221, -0.019864427, 0.0033336836, 0.029868757, 0.0016996214, -0.0023486572, -0.013714978, 0.022277005, -0.00740163, 0.016193114, -0.0122136725, -0.027875759, 0.027193943, -0.04418688, 0.004408854, -0.030078545, 0.0018717143, 0.017268285, -0.00045317775, -0.011984216, -0.0017569857, -0.0045301383, 0.00441541, -0.0023027658, -0.008896379, 0.021398513, 0.029763862, 0.024007767, 4.5456065e-05, 0.0069492715, 0.022919485, 0.004887436, -0.020257782, 0.020769143, 0.006074057, 0.020874038, -0.00045399723, 0.0012382488, 0.004562918, -0.022840815, 0.008214564, 0.01766164, 0.0280331, 0.0013882153, -0.005120171, -0.0032566516, -0.005674146, -0.018238561, -0.09676533, -0.023404622, 0.012528357, 0.018330343, 0.0030435843, 0.011649864, 0.0040318887, 0.027141495, -0.014711477, 0.037001595, -0.0071328375, -0.013354402, -0.014763924, 0.0032337059, 0.009433964, -0.0083850175, 0.0030337505, -0.02230323, -0.030340783, 0.009866655, -0.016625805, -0.0046973145, 0.0007965439, -0.010135448, -0.02495182, -0.015747312, -0.029134493, 0.014108333, 0.0056315325, -0.01151219, 0.025646746, -0.014816372, 0.011361403, 0.00050890306, -0.005831488, 0.006831265, -0.0124496855, 0.0025502515, 0.010423908, -0.037001595, -0.002196232, 0.0006191244, 0.008457133, -0.0056512, -0.00035156103, -0.0077032023, -0.01530151, 0.00033496637, -0.0054774685, -0.027508626, 0.0009293012, 0.030130994, -0.024401123, -0.0031271724, 0.03697537, -0.020834703, 0.015799759, 0.022919485, -0.018028772, 0.011630196, 0.014829484, 0.008817708, -0.0011358126, 0.03524461, -0.004628477, -0.016061995, -0.032648467, -0.014606583, 0.014842596, -0.0304719, -0.013144613, 0.0077490937, -0.021293618, 0.012947936, -0.019995546, -0.00047981116, -0.006805042, -0.016507799, 0.003690981, -0.004090892, -0.028216666, -0.020638026, 0.00029665523, -0.002751846, 0.003138645, 0.02109694, -0.0075327484, -0.015498187, 0.03841767, -0.015367069, 0.013714978, 0.028137995, 0.0067394823, -0.008693146, -0.012318567, 0.018395903, 0.011879321, 0.012489022, 0.009309402, -0.017740311, -0.020113552, -0.009506079, -0.047779523, 0.019012159, 0.0016766757, -0.022342565, -0.0028567407, 0.013478965, -0.013321623, 0.008627586, 0.0028551018, -0.00173404, -0.015891543, -0.0014808177, -0.01279715, -0.0035762526, -0.019326843, -0.00068878103, 0.009007829, -0.0042810137, 0.033566292, 0.004572752, 0.007309847, 0.0036778692, 0.007939215, 9.946555e-05, -0.02424378, 0.006519859, -0.01966775, -0.011033608, -0.026197443, -0.011630196, 0.006398575, -0.020493796, 0.0020044716, 0.047386166, -0.01437057, -0.027508626, 0.004595698, 0.032438677, 0.004015499, -0.013623195, -0.032779586, -0.0314684, 0.027429955, -0.012495577, -0.016783146, 0.013269176, -0.011636753, -0.0054053534, 0.003304182, -0.0020913375, 0.01322984, 0.016625805, 0.0013218367, -0.0075917514, -0.0026617022, -0.012233341, 0.038942147, 0.008339126, 0.0068968246, -0.020729808, 0.014134556, -0.0036516457, 0.0034844698, 0.02617122, 0.00940774, 0.0072246203, -0.0068247095, -0.015550635, 0.0047530397, -0.0017160112, -0.01844835, -0.0057757627, 0.031048821, 0.018356567, 0.019287508, 0.0027223444, -0.012397239, 0.0018815481, -0.0098273195, 0.017438738, 0.018068107, -0.008666922, -0.001494749, 0.016638916, 0.024912484, 0.046756797, -0.03739495, -0.006690313, 0.004425244, 0.0006056028, -0.017530521, 0.0013013495, -0.0014488576, -0.0016766757, -0.0017209281, 5.5417982e-05, -0.010201006, 0.008712813, 0.010135448, 0.032071546, 0.02194921, -0.008358794, -0.0035631408, -0.028846033, -0.01680937, 0.011289288, -0.008607918, -0.015563746, -0.015485075, 0.007886767, 0.0025699195, -0.012849597, 0.015576858, 0.016927376, -0.0031681468, -0.007244288, -0.014829484, -0.019890651, -0.020428237, 0.0020126665, 0.0036418117, 0.005733149, 0.0061265044, -0.018487684, 0.03154707, 0.013701866, 0.029213166, -0.031625744, 0.009034053, 0.010895934, 0.004189231, -0.0020683918, -0.015563746, -0.020428237, -0.017963212, -0.016258674, -0.019929986, 0.024178222, 0.0032419008, 0.04625855, -0.013203616, -0.03283203, 0.03254357, -0.01005022, 0.008037554, 0.0043793526, 0.0032107602, -0.016717589, -0.00631007, 0.010496023, 0.0045137485, 0.02503049, -0.00944052, -0.031651966, -0.009742092, -0.024846924, 0.010732036, -0.026499016, -0.014921267, 0.026407233, 0.005425021, 0.007001719, 0.0037860419, -0.026289226, -0.010135448, 0.012325124, 0.0027911814, -0.01244313, -0.013557636, 0.01258736, -0.014645918, -0.02167386, -0.007041055, 0.022827702, -0.024545353, -0.01679626, -0.020061105, 0.01380676, 0.0113155125, -0.002673175, 0.027351284, -0.022709696, -0.031153716, -0.008037554, -0.009230731, -0.012725035, 0.014475464, -0.014632806] + "embedding": [0.016153779, -0.015616193, -0.008981606, -0.01708472, 0.0021126443, 0.014409905, -0.021975433, -0.0053955195, 0.0075065247, -0.018435238, 0.023837313, 0.0075327484, -0.01509172, 0.016783146, -0.026525239, -0.007637643, 0.03511349, -0.005415187, 0.02217211, -0.015353957, -0.03875858, 0.010004329, -0.01960219, 0.010850042, -0.0075327484, -0.015694864, 0.008286679, -0.024256893, 0.016822482, -0.0005588919, 0.012803705, -0.021372288, 0.012646363, -0.03340895, -0.029370507, 0.0135969715, 0.007886767, -0.004871046, 0.012253009, -0.027429955, 0.017700976, 0.0026518684, -0.005215232, -0.017910764, -0.0037335947, 0.022788366, 0.025371397, 0.00534635, -0.011990772, 0.020008657, 0.00051709794, 0.023640636, -0.011813762, -0.022631025, 0.009958438, -0.03304182, -0.0017979601, 0.013570747, -0.025476292, -0.02223767, -0.005359462, -0.0122989, -0.0019290785, -0.007781873, 0.004313793, -0.0018684362, -0.0038974925, 0.010895934, -0.0038089876, -0.0028846033, 0.030655466, 0.025135385, -0.001303808, 0.019562855, 0.0118006505, 0.0113024, -0.0063297376, 0.0026944818, 0.0058609894, -0.009348737, -0.00017905848, -0.023588188, -0.02517472, -0.0048612123, 0.014986826, 0.0101223355, -0.004176119, 0.0034975817, -0.025830312, -0.015026161, -0.0028682137, 0.02795443, 0.030288335, 0.0030566962, -0.004385908, 0.015485075, 0.0151441675, 0.026656358, 0.020978933, -0.022539241, 0.01380676, 0.019536631, -0.035637964, -0.0039991094, -0.029318059, -0.024322452, 0.010279678, 0.0008330112, 0.037709635, -0.02774464, -0.027639745, 0.021359177, 0.021359177, -0.020716697, -0.018697474, -0.023994654, -0.0035696966, -0.021765644, -0.029921204, -0.008339126, -0.00088422926, 0.040332, 0.015065497, -0.01401655, 0.029370507, 0.011027052, -0.007834321, -0.020978933, -0.010909045, 0.0049497173, 0.012292344, 0.018238561, 0.022867037, 0.016835595, -0.0058675455, -0.007237732, -0.004654701, 0.026931707, -0.0075130807, -0.030943926, 0.0189466, 0.028846033, -0.0030058878, -0.0044449116, -0.008227675, 0.0359002, 0.028347785, -0.0035238052, -0.0015299871, 0.0017405959, 0.0071918406, -0.03367119, 0.018776145, -0.00021327217, 0.011426963, -0.0030566962, -9.7442435e-06, 0.0013783815, -0.03359252, -0.0033189328, -0.014567247, 0.004539972, 0.027272614, 0.010705812, 0.020402012, 0.021057604, 0.00024297867, 0.0151441675, -0.00815556, 0.010738592, 0.0012194006, 0.030734139, -0.0169536, 0.026931707, -0.007145949, 0.0134068495, 0.004330183, 0.0017110943, -0.013701866, 0.008863599, -0.014331234, -0.0058839354, 0.016324233, -0.00081703113, 0.011453186, -0.009558527, 0.008981606, -0.008837376, 0.01408211, -0.008752149, 0.021936098, 0.02246057, -0.0018553245, -0.018356567, -0.69775933, -0.03325161, 0.0027141494, -0.000667884, 0.007991662, 0.021608302, 0.0042088986, 0.008850488, -0.0031075045, -0.015668642, -0.0011112279, 0.009912546, 0.004487525, -0.010017441, 0.008745593, -0.032936927, -0.011767871, 0.02761352, -0.0061527276, -0.009237287, -0.0015480159, -0.0005322585, -0.02695793, -0.00213559, 0.031337284, 0.013977215, 0.02474203, -0.0036155882, -0.00033496637, 0.016337344, -0.0065067476, -0.0032714026, -0.0075065247, -0.01608822, 0.040961366, 0.0091651715, -0.019038383, 0.008430909, 0.0034844698, 0.015839094, -0.009702757, -0.0044481894, -0.0049136598, -0.02244746, -0.006942716, -0.0015578497, 0.009853543, -0.00850958, 0.037735857, -0.00013111833, 0.023365287, -0.014934379, 0.0012964326, -0.0038745468, 0.024191333, -0.0023076828, 0.016652029, -0.0015119583, 0.006129782, -0.0023896317, -0.012200561, 0.0026420346, -0.018999048, -0.017176501, -0.012233341, 0.007585196, -0.03805054, -0.018723698, -0.0053004585, -0.0030353894, 0.00883082, 0.013282287, -0.015131056, 0.02811177, 0.014252563, 0.0016799537, 0.01652091, -0.019038383, 0.026774364, 0.013131501, 0.01694049, -0.006303514, -0.021188723, -0.004199065, 0.020179112, -0.0113024, -0.03275336, -0.02881981, 0.01644224, -0.010791039, 0.04413443, 0.0019176056, -0.004628477, -0.009289734, -0.002758402, 0.025751641, -0.009866655, -0.00023293991, 0.013059386, -0.012089111, 0.008430909, -0.026905483, -0.008699701, 0.0051562283, 0.03382853, 0.010941825, -0.029108271, 0.036031317, 0.011276177, -0.018972823, 0.01873681, -0.019051494, -0.02295882, -0.0009342181, 0.015537523, -0.022985045, 0.04568163, 0.017714087, 0.0072573996, -0.0055102482, -0.0036549235, -0.0011267982, -0.0064215204, -0.024873149, 0.007932659, -0.012987271, -0.0020356122, -0.0258172, -0.019077718, -0.004802209, 0.0063362936, -0.0028796864, 0.009184839, 0.006480524, -0.003220594, -0.003622144, 0.007926104, -0.017425627, 0.031337284, -0.030209664, -0.025843425, -0.012954491, -0.021136276, -0.004975941, -0.00757864, -0.018081218, -0.031153716, -0.0062248427, -0.029082047, 0.017989436, -0.03432678, -0.019969322, -0.03217644, 0.019274395, -0.00030382577, -0.006536249, -0.024178222, 0.0030353894, -0.009466744, 0.0314684, 0.0026469515, 0.00944052, -0.009899435, -0.004884158, -0.0017094553, -0.03784075, -0.000945691, 0.032858256, -0.0035729746, -0.03482503, -0.001888104, -0.0027125105, 0.010037108, -0.0065559167, -0.024584688, -0.015668642, -0.016756924, -0.023470182, 0.016861819, -0.010384572, 0.012515245, 0.0151441675, -0.0009383156, -0.024873149, 0.035716634, -0.0064838016, 0.016324233, 0.01401655, -0.0016602859, 0.008273567, -0.017032271, -0.0033697411, 0.0022339285, -0.012613583, 0.02010044, 0.007657311, -0.0031910925, 0.011735091, 0.0077687614, -0.0018667973, 0.015681753, -0.0010636975, 0.017399402, -0.018487684, 0.028793586, -0.028950928, 0.017333845, -0.006542805, 0.01147941, 0.03920438, 0.00026776822, -0.01945796, -0.0090471655, -0.01147941, 0.013288843, 0.015327733, -0.012259564, 0.029868757, 0.0046153655, -0.01165642, 0.002519111, 0.00043596845, 0.03975508, 0.0050218324, -0.013282287, -0.006001942, 0.036267333, 0.014855707, -0.011446631, -0.0025928651, -0.018461462, -0.0035860864, -0.020651137, 0.0052906247, -0.012279232, -0.010535358, 0.0042679016, -0.039781302, 0.01709783, 0.020493796, 0.006228121, 0.036346003, 0.037788305, -0.012220229, 0.009368405, -0.0041269497, 0.026210556, 0.008529248, -0.015825983, 0.00022003296, -0.022867037, -0.0015742395, -0.0030206386, 0.01701916, 0.03312049, 0.009656865, 0.037211385, 0.011715423, 0.03060302, 0.025436956, -0.026984153, -0.0058577117, 0.0135183, -0.012325124, 0.00022720349, -0.0037467065, -0.0043564066, 0.005765929, -0.004975941, -0.004802209, 0.0008735759, 0.0048415447, 0.02488626, -0.015458852, 0.01680937, -0.011853098, -0.020992046, -0.004556362, 0.017582968, 0.008214564, -0.006772262, -0.040515564, 0.0141870035, -0.0026977598, 0.0012898766, -0.020742921, -0.02782331, 0.018527022, -0.004798931, 0.011813762, 0.0102993455, 0.018579468, 0.02023156, 0.0022585134, 0.014724589, -0.029685192, 0.0020601968, -0.0055758073, 0.006231399, 0.0069951634, -0.0058675455, -0.0157342, -0.02573853, 0.0036516457, 0.013065942, 0.01538018, -0.018540133, 0.005451245, -0.017386291, -0.01966775, -0.007447521, -0.00062158285, -0.0013701866, -0.005192286, -0.011086055, 0.0011694117, -0.021634525, -0.009368405, 0.02774464, 0.0078408765, 0.026144996, -0.021936098, -0.009506079, -0.0013398655, 0.08349615, 0.012167782, -0.0063526835, 0.009020941, -0.0045137485, -0.013754313, -0.0155112995, 0.01054847, -0.012725035, -0.007794985, 0.0069754953, -0.009833875, 0.013819872, 0.008135892, -0.0004156861, -0.0110794995, 0.01140074, 0.009250399, 0.03812921, -0.012489022, -0.00082727475, 0.0019241616, -0.016652029, 0.003930272, 0.0013857569, -0.011499078, 0.027797086, 0.015563746, 0.018225448, -0.004871046, 0.0038188214, 0.019497296, -0.001970053, -0.011558081, -0.0151441675, -0.013439629, -0.010286233, 0.0033156548, 0.012305455, -0.021726308, 0.029527849, 0.018553244, 0.014265675, -0.020323342, -0.002442079, 0.010535358, -0.0060773348, 0.010482911, -0.007342627, 0.0026174497, 0.023811089, 0.005415187, 0.0012267759, -0.011571193, 0.009243842, 0.01987754, -0.0024617468, -0.001981526, 0.0021536187, -0.010319013, 0.0059724404, -0.01674381, 0.0024174943, -0.015340845, -0.023325952, -0.0045366944, 0.00041671045, -0.001494749, -0.0036418117, 0.0026272836, -0.002351935, -0.020047994, -0.022040993, 0.0075917514, 0.028059324, 0.016035773, 0.009427409, -0.0055102482, 0.007073834, 0.03854879, -0.010279678, 0.0005187369, -0.018540133, -0.0066411435, -0.012226785, 0.010423908, 0.021555854, -0.024191333, -0.0038712688, -0.009919102, 0.023876648, 0.0005437313, 0.00040953993, -0.017386291, -0.0010825457, -0.0147901485, 0.018343454, 0.0015988242, -0.015603082, -0.006480524, 0.0036155882, -0.02194921, -0.014436129, -0.0067525944, 0.010509134, 0.023627523, 0.021005157, 0.01701916, -0.018291008, -0.00021655012, 0.0280331, -0.011131947, 0.0017455128, -0.008358794, 0.003553307, 0.014606583, -0.017294507, 0.02631545, 0.013282287, -0.024322452, 0.004825155, -0.03081281, 0.019654639, -0.0025076382, -0.0049103815, 0.0016176725, 0.014475464, -0.01509172, -0.0011612168, 0.0014644279, 0.00095552485, 0.016979825, -0.008883268, -0.01981198, -0.042797025, -0.025017379, 0.006205175, -0.007709758, -0.018028772, -0.0055102482, -0.008070334, 0.020821592, 0.022355676, -0.0020749476, -0.026158107, -0.01694049, 0.0057233153, 0.0072967354, -0.0009669977, 0.011558081, -0.0033599073, -0.00025568076, -0.025358286, 0.02152963, 0.007349183, -0.0059658843, -0.02517472, -0.021280507, 0.012600472, 0.01083693, 0.030209664, -0.004726816, -0.0023863537, 0.0031271724, -0.010246898, 0.0024240501, -0.017438738, -0.006539527, -0.03503482, 0.0058577117, 0.013885432, 0.0019503853, 0.02181809, -0.002196232, 0.00865381, 0.012534913, -0.0019110497, -0.007001719, -0.023221057, -0.030786585, 0.001334129, -0.0037991537, -0.023181722, -0.011131947, 0.008942271, -0.011826874, 0.03262224, 0.016271785, 0.0043400167, -0.0059167147, 0.023352176, 0.0022716252, 0.028059324, -0.008142449, -0.005431577, -0.016638916, -0.022119664, -0.0060150535, 0.014488576, 0.00929629, 0.021568965, 0.005431577, -0.00045768495, -0.022919485, 0.023207946, 0.018985935, 0.028426455, 0.003471358, -0.007185285, -0.01952352, -0.012200561, -0.026577687, -0.026525239, -0.03553307, 0.010305901, 0.0018241839, -0.025895871, 0.026053213, -0.0011522024, -0.019575967, 0.012856153, -0.00054004363, 0.01616689, -0.004874324, 0.01151219, -0.0011661337, 0.0005957689, -0.012253009, -0.0034779138, -0.014357458, -0.010686144, 0.02645968, 0.010994272, -0.0019995547, 0.01687493, 0.02045446, 0.013583859, 0.033146717, -0.011984216, -0.013649419, 0.017530521, 0.012200561, -0.022853926, 0.008083445, -0.03411699, 0.016927376, -0.010502579, -0.020651137, -0.0024928874, -0.012397239, -0.01902527, -0.003930272, -0.042036537, 0.009630642, 0.011649864, -0.0059724404, 0.0019389124, -0.01104672, -0.017110942, -0.012541469, -0.0035762526, 0.016363569, -0.004231844, 0.014173892, -0.009217619, -0.000510542, -0.02782331, -0.002591226, -2.306095e-05, 0.02517472, -0.0025076382, -0.006287124, -0.014436129, 0.021306729, 0.03747362, -0.010201006, -0.0076638665, 0.006392019, -0.007309847, -0.0009768317, 0.025397621, 0.004871046, -0.016350456, 0.0070935017, -0.01937929, 0.009027497, -0.020939598, -0.0049136598, -0.012115334, -0.0050710016, -0.000452768, -0.008673478, 0.0076769786, -0.0034910257, 0.008489912, -0.018120553, 0.03288448, 0.0101813385, -0.008424353, 0.020978933, -0.011984216, 0.01544574, 0.00093995454, 0.013793649, 0.004097448, -0.018802369, 0.03524461, -0.013039718, -0.029029598, -0.009519191, 0.0076966463, -0.0056282547, -0.0038417673, -0.0020913375, 0.011145058, 0.0014095221, 0.020611802, -0.01652091, -0.015891543, 0.003845045, -0.028767362, -0.0017373179, 0.010345236, -0.016861819, -0.005739705, 0.008817708, 0.0020192224, 0.011610528, -0.045366943, -0.014816372, -0.015616193, 0.017936988, -0.006244511, -0.01387232, -0.017556746, 0.0046415892, -0.000989124, 0.009191396, -0.009381517, 0.010909045, -0.008286679, -0.0064543, -0.01422634, 0.021647638, -0.01859258, 0.006772262, -0.021228058, -0.009964993, -0.010771371, 0.010856598, -0.0057134815, -0.01658647, 0.0027207055, -0.039650183, -0.021214947, -0.01265292, -0.021123163, -0.002052002, 0.0089160465, 0.015957102, 0.0314684, -0.007939215, 0.0011284371, 0.021398513, 0.008306347, 0.0102993455, -0.036949147, -0.013282287, -0.000113601745, -0.018186113, 0.016429128, 0.011787538, 0.0015094999, -0.009079944, 0.002910827, -0.009984661, 0.008470245, -0.0147901485, -0.014593471, 0.0024978044, 0.018225448, 0.018212337, 0.031704415, 0.013354402, -0.013623195, -0.012790593, -0.006188785, 0.021700084, 0.025292726, -0.010305901, 0.0034057987, -0.0008752149, -0.013164281, 0.011767871, -0.007388518, 0.010397684, 0.004199065, 0.006451022, 0.007834321, -0.010941825, 0.00086128357, 0.015209727, -0.0070935017, -0.0062609003, -7.21535e-06, 0.0002074333, -0.03288448, -0.0057888743, 0.01416078, -0.007853989, -0.0061035585, -0.026197443, 0.0023388234, -0.04083025, 0.0055430275, -0.021306729, -0.002192954, -0.024374899, 0.016035773, 0.015655529, -0.031520847, -0.006451022, -0.026669469, -0.002045446, 0.0030058878, -0.010817262, -0.016153779, -0.020847816, -0.017045384, 0.002286376, 0.011289288, -0.025279615, -0.012836485, -0.0028944372, 0.01644224, 0.02874114, 0.21398512, 0.01408211, -0.017320732, 0.03503482, -0.009152059, 0.03917816, 0.023719307, -0.007493413, 0.022001656, 0.024309339, -0.011944881, 0.0053102924, 0.0023125997, -0.0033189328, -0.00028456777, -0.004330183, -0.032360006, 0.0010284594, -0.011630196, -0.0061789514, 0.0024928874, -0.007152505, 0.013623195, -0.006244511, 0.022683471, 0.010207563, -0.009152059, 0.0021011713, 0.03262224, 0.018710587, -0.011957992, -0.006677201, 0.0072967354, -0.008142449, -0.0036319778, -0.0020175835, -0.011145058, 0.0014586914, 0.007939215, 0.026538352, 0.011885877, 0.008811153, -0.024125773, -0.018330343, -0.00039233064, 0.028583797, -0.007657311, -0.0089160465, 0.022355676, 0.010863154, -0.026617022, -0.008522692, 0.033225387, 0.017674752, -0.001057961, 0.032648467, 0.019995546, -0.00801133, 0.016901154, -0.006700147, -0.008614475, 0.020205336, -0.019156389, -0.0072246203, 0.010607474, -0.0027272613, -0.007650755, 0.015642418, 0.009643754, -0.014960602, 0.023207946, 0.01276437, 0.010876266, 0.0044645793, -0.017609192, -0.018002547, 0.023719307, 0.012613583, 0.014895042, -0.010522246, -0.012384127, -0.0036778692, 0.0014324678, 0.023561966, -0.010142003, -0.02252613, -0.008548915, 0.013465853, 0.036922924, 0.0043498506, -0.0018667973, -0.009846987, 0.0146721415, 0.0069230483, 0.0009784705, 0.024204444, -0.014580359, 0.018041883, -0.035506845, 0.0062740124, -0.036660686, -0.024440458, 0.022198334, -0.009669977, -0.007408186, 0.008857043, -0.0030517792, 0.018081218, 0.037945647, -0.0035991983, 0.015498187, -0.011669531, 0.008017886, -0.0011972743, 0.015760424, -0.013623195, 0.011453186, -0.01558997, -0.018238561, -0.0104173515, 0.0043826303, -0.01766164, -0.012357903, 0.00740163, -0.0010931991, -0.0038024317, -0.015563746, 0.01679626, 8.609763e-05, -0.030550571, 0.032727137, -0.000109709166, 0.025895871, 0.0047464836, -0.005457801, 0.0040515563, -0.01722895, -0.00037286777, 0.0039171604, -0.008450577, -0.0015439184, -0.01645535, 0.0038089876, -0.0066444217, -0.0030501403, 0.0067394823, 0.018382791, -0.013321623, -0.014514799, -0.026787477, -0.008765261, -0.006080613, -0.0072246203, -0.013341291, 0.02331284, -0.02066425, -0.01981198, -0.0031058656, 0.0027338173, 0.02294571, -0.017818982, 0.008771816, 0.00028907496, -0.013741202, -0.0050742794, 0.0058708233, -0.16971958, 0.013688754, 0.018173002, -0.017753422, -0.0055364715, 0.004726816, 0.013819872, 0.02524028, -0.0084440205, 0.031232387, -0.0028616576, 0.013380626, -0.059003253, -0.00955197, 0.005274235, 0.015078609, -0.014750813, -0.0072705117, 0.024348674, 0.008293235, -0.0040450008, -0.024060214, 0.012738146, -0.006523137, -0.00075966684, 0.004952995, -0.012790593, 0.029632743, -0.0025650025, -0.0069623836, -0.0029583573, 0.00772287, 0.00048554759, 0.025279615, 0.022054104, -0.0006715717, -0.000104228835, 0.00613306, 0.0019864428, -0.0045596403, 0.0005298, 0.018081218, -0.0009112724, 0.0029468846, -0.017543633, 0.02031023, 0.032936927, 0.010325569, -0.007906436, -0.005913437, 0.020913374, -0.041276053, -0.010909045, -0.004972663, 0.0139509905, 0.009525747, 0.014895042, 0.016245563, -0.008280123, 0.015550635, 0.001181704, -0.040568013, -0.0026993987, 0.0071918406, -0.005113615, -0.011603973, 0.012161226, 0.0032074822, -0.023194833, 0.0129348235, -0.019287508, -0.0138329845, 0.012849597, -0.020205336, 0.0077556497, 0.0049136598, -0.004441634, 0.013544524, -0.004012221, -0.019864427, 0.0033336836, 0.029868757, 0.0016996214, -0.0023486572, -0.013714978, 0.022277005, -0.00740163, 0.016193114, -0.0122136725, -0.027875759, 0.027193943, -0.04418688, 0.004408854, -0.030078545, 0.0018717143, 0.017268285, -0.00045317775, -0.011984216, -0.0017569857, -0.0045301383, 0.00441541, -0.0023027658, -0.008896379, 0.021398513, 0.029763862, 0.024007767, 4.5456065e-05, 0.0069492715, 0.022919485, 0.004887436, -0.020257782, 0.020769143, 0.006074057, 0.020874038, -0.00045399723, 0.0012382488, 0.004562918, -0.022840815, 0.008214564, 0.01766164, 0.0280331, 0.0013882153, -0.005120171, -0.0032566516, -0.005674146, -0.018238561, -0.09676533, -0.023404622, 0.012528357, 0.018330343, 0.0030435843, 0.011649864, 0.0040318887, 0.027141495, -0.014711477, 0.037001595, -0.0071328375, -0.013354402, -0.014763924, 0.0032337059, 0.009433964, -0.0083850175, 0.0030337505, -0.02230323, -0.030340783, 0.009866655, -0.016625805, -0.0046973145, 0.0007965439, -0.010135448, -0.02495182, -0.015747312, -0.029134493, 0.014108333, 0.0056315325, -0.01151219, 0.025646746, -0.014816372, 0.011361403, 0.00050890306, -0.005831488, 0.006831265, -0.0124496855, 0.0025502515, 0.010423908, -0.037001595, -0.002196232, 0.0006191244, 0.008457133, -0.0056512, -0.00035156103, -0.0077032023, -0.01530151, 0.00033496637, -0.0054774685, -0.027508626, 0.0009293012, 0.030130994, -0.024401123, -0.0031271724, 0.03697537, -0.020834703, 0.015799759, 0.022919485, -0.018028772, 0.011630196, 0.014829484, 0.008817708, -0.0011358126, 0.03524461, -0.004628477, -0.016061995, -0.032648467, -0.014606583, 0.014842596, -0.0304719, -0.013144613, 0.0077490937, -0.021293618, 0.012947936, -0.019995546, -0.00047981116, -0.006805042, -0.016507799, 0.003690981, -0.004090892, -0.028216666, -0.020638026, 0.00029665523, -0.002751846, 0.003138645, 0.02109694, -0.0075327484, -0.015498187, 0.03841767, -0.015367069, 0.013714978, 0.028137995, 0.0067394823, -0.008693146, -0.012318567, 0.018395903, 0.011879321, 0.012489022, 0.009309402, -0.017740311, -0.020113552, -0.009506079, -0.047779523, 0.019012159, 0.0016766757, -0.022342565, -0.0028567407, 0.013478965, -0.013321623, 0.008627586, 0.0028551018, -0.00173404, -0.015891543, -0.0014808177, -0.01279715, -0.0035762526, -0.019326843, -0.00068878103, 0.009007829, -0.0042810137, 0.033566292, 0.004572752, 0.007309847, 0.0036778692, 0.007939215, 9.946555e-05, -0.02424378, 0.006519859, -0.01966775, -0.011033608, -0.026197443, -0.011630196, 0.006398575, -0.020493796, 0.0020044716, 0.047386166, -0.01437057, -0.027508626, 0.004595698, 0.032438677, 0.004015499, -0.013623195, -0.032779586, -0.0314684, 0.027429955, -0.012495577, -0.016783146, 0.013269176, -0.011636753, -0.0054053534, 0.003304182, -0.0020913375, 0.01322984, 0.016625805, 0.0013218367, -0.0075917514, -0.0026617022, -0.012233341, 0.038942147, 0.008339126, 0.0068968246, -0.020729808, 0.014134556, -0.0036516457, 0.0034844698, 0.02617122, 0.00940774, 0.0072246203, -0.0068247095, -0.015550635, 0.0047530397, -0.0017160112, -0.01844835, -0.0057757627, 0.031048821, 0.018356567, 0.019287508, 0.0027223444, -0.012397239, 0.0018815481, -0.0098273195, 0.017438738, 0.018068107, -0.008666922, -0.001494749, 0.016638916, 0.024912484, 0.046756797, -0.03739495, -0.006690313, 0.004425244, 0.0006056028, -0.017530521, 0.0013013495, -0.0014488576, -0.0016766757, -0.0017209281, 5.5417982e-05, -0.010201006, 0.008712813, 0.010135448, 0.032071546, 0.02194921, -0.008358794, -0.0035631408, -0.028846033, -0.01680937, 0.011289288, -0.008607918, -0.015563746, -0.015485075, 0.007886767, 0.0025699195, -0.012849597, 0.015576858, 0.016927376, -0.0031681468, -0.007244288, -0.014829484, -0.019890651, -0.020428237, 0.0020126665, 0.0036418117, 0.005733149, 0.0061265044, -0.018487684, 0.03154707, 0.013701866, 0.029213166, -0.031625744, 0.009034053, 0.010895934, 0.004189231, -0.0020683918, -0.015563746, -0.020428237, -0.017963212, -0.016258674, -0.019929986, 0.024178222, 0.0032419008, 0.04625855, -0.013203616, -0.03283203, 0.03254357, -0.01005022, 0.008037554, 0.0043793526, 0.0032107602, -0.016717589, -0.00631007, 0.010496023, 0.0045137485, 0.02503049, -0.00944052, -0.031651966, -0.009742092, -0.024846924, 0.010732036, -0.026499016, -0.014921267, 0.026407233, 0.005425021, 0.007001719, 0.0037860419, -0.026289226, -0.010135448, 0.012325124, 0.0027911814, -0.01244313, -0.013557636, 0.01258736, -0.014645918, -0.02167386, -0.007041055, 0.022827702, -0.024545353, -0.01679626, -0.020061105, 0.01380676, 0.0113155125, -0.002673175, 0.027351284, -0.022709696, -0.031153716, -0.008037554, -0.009230731, -0.012725035, 0.014475464, -0.014632806], + "object": "embedding" }, { "object": "embedding", @@ -64,11 +67,10 @@ X-Request-Id: req_df4996cfd74548ff9c92a98c5f091ebe ], "model": "text-embedding-ada-002-v2", "usage": { - "total_tokens": 71, - "prompt_tokens": 71 - }, - "object": "list" -}278 22090 + "prompt_tokens": 71, + "total_tokens": 71 + } +}278 22141 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -80,20 +82,22 @@ Content-Type: application/json Content-Length: 21186 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Thu, 22 Jan 2026 20:04:25 GMT +Date: Mon, 21 Sep 2026 07:48:06 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst -Openai-Processing-Ms: 34 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 97 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload -Via: envoy-router-76f6979656-fp26q +Via: envoy-router-7d5f5f44cf-rnj5b X-Content-Type-Options: nosniff -X-Envoy-Upstream-Service-Time: 52 +X-Engine-Geography: EU X-Openai-Proxy-Wasm: v0.1 X-Ratelimit-Limit-Requests: 10000 X-Ratelimit-Limit-Tokens: 10000000 @@ -101,23 +105,23 @@ X-Ratelimit-Remaining-Requests: 9999 X-Ratelimit-Remaining-Tokens: 9999991 X-Ratelimit-Reset-Requests: 6ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_bb4610e3c12e477e8974e4e8a0e1d029 +X-Request-Id: req_df341c580d224d4395db06ccb6d1e43f { "object": "list", "data": [ { + "object": "embedding", "index": 0, - "embedding": [0.02230405, 0.008771547, 0.014554557, -0.011423711, -0.008448112, 0.015473112, 0.0068826885, -0.008881515, 0.004744786, -0.005595419, -0.016676288, 0.01731022, -0.017698342, 0.024891527, -0.0063878335, -0.0012743324, 0.031618968, 0.021294935, 0.013648941, -0.0046218806, -0.020337569, 0.025512522, -0.01429581, -0.001887241, -0.01562836, -0.008959139, 0.017374907, -0.008868577, -0.011934738, 0.006138789, 0.0034187038, -0.016792726, -0.012723918, -0.0168186, -0.016844476, 0.0169221, 0.010860935, 0.0039006216, 0.011591896, -0.014606307, 0.015718922, -0.0003416278, -0.00038286572, 0.00014958851, -0.0055177948, 0.007827118, -0.0011853878, 0.0067468463, -0.039355524, 0.01296326, -0.008124677, 0.0066562844, -0.012885635, -0.052706905, -0.026172329, 0.00087650784, 0.008674516, 0.01811234, -0.011714802, -0.0054789823, -0.0041917125, -0.0013471051, -0.014502808, 0.0060676336, -0.0006072485, -0.001574318, -0.0084093, 0.010860935, 0.017038535, -0.0021136452, 0.021424308, 0.028125875, 0.017581906, -0.00033576557, 0.029419612, -0.008752141, -0.020712754, -0.0023740102, 0.007109093, 0.00022701068, 0.0044892724, 0.0069279694, -0.03260221, 0.008758609, 0.018733334, 0.013441943, 0.0025923285, 0.018371087, -0.034594566, -0.0030613088, -0.013196132, 0.051439043, 0.030040607, -0.021760682, -0.012445764, 0.0054854513, -0.0074325274, 0.02478803, 0.0125169195, -0.013791252, 0.016119981, -0.015291989, -0.031308472, 0.005977072, -0.017129097, -0.023222605, 0.0037486071, 0.008480456, 0.032679833, -0.040105894, -0.03487919, 0.049187936, 0.039459024, -0.038449906, -0.021980617, -0.0070767496, 0.0012702894, -0.024141159, -0.037337292, 0.0070055937, -0.0022672766, 0.040468138, 0.017982965, -0.027530754, 0.04486685, -0.002137903, -0.026482826, -0.024503406, -0.024956215, 0.005016471, 0.010802716, 0.014929742, 0.013467818, 0.021243185, -0.008920327, 0.0013099102, -0.006513973, 0.024425782, -0.03793241, 0.00328933, 0.013545441, 0.006119383, -0.0047900667, -0.008059991, -0.0056406995, 0.030972099, 0.0048094727, -0.0027427257, -0.020402256, -0.0018662177, 0.005673043, -0.012717449, 0.023817725, 0.012827417, 0.0014692018, 0.016999723, -0.0019567795, 0.017827716, -0.044219982, 0.0069538443, -0.04931731, 0.0048968, 0.030402854, -0.005876807, 0.012342265, 0.028772743, 0.020686878, 0.0049744244, -0.010395189, 0.0075101517, -0.032576334, 0.027039135, -0.020466942, 0.03330083, 0.00044795693, 0.034930937, 0.007859461, -0.016158793, 0.003978246, 0.01157249, -0.0095930705, -0.0068438766, -0.008538674, -0.009146731, 0.0009783898, -0.017129097, 0.0017497813, -0.001466776, 0.024011785, -0.004550725, 0.01143018, 0.027763627, -0.015059115, -0.0069991252, -0.66901803, -0.032653958, 0.004961487, -0.0085904235, 0.0080988025, 0.013390193, 0.0239471, 0.028255248, -0.003522203, -0.016003545, 0.009386073, 0.007063812, 0.0042078844, -0.023934161, 0.0125233885, -0.021825368, -0.0053981235, 0.010893278, -0.00018577276, 0.0017788904, -0.008765078, 0.019108517, -0.0018112338, -0.00398148, 0.021411372, 0.022834484, 0.009638351, -0.016495166, -0.015020303, 0.012102923, -0.015304926, 0.011792426, 0.013099102, -0.023106169, 0.025447836, -0.003709795, -0.024555156, 0.028824493, 0.0054886853, 0.029962983, -0.028384622, -0.0021750978, 0.017323159, -0.02305442, -0.010666873, 0.010847997, 0.017568968, -0.00046129862, 0.046833333, -0.014024125, 0.012769199, -0.030014733, -0.015718922, 0.01844871, 0.018254649, 0.015990607, 0.046212338, 0.009858287, -0.008467519, 0.0031146754, -0.009987661, -0.018086463, 0.0013495309, 0.002897974, 0.007445465, 0.00079120195, -0.0252279, -0.023507228, -0.020104695, -0.022329926, -0.0035933587, 0.016158793, -0.03904503, 0.02423172, 0.0061064456, -0.010796247, 0.029911233, -0.007102624, -0.0024710405, -0.017206721, 0.002055427, -0.015123802, -0.02853987, -0.015123802, 0.01741372, -0.010472813, -0.014670994, -0.020893876, 0.015757734, 0.026987385, 0.009612476, 0.015046178, -0.01839696, 0.0003299033, -0.017103223, 0.03216234, -0.01646929, 0.0032181744, -0.011320212, -0.025033839, 0.000618973, -0.03270571, -0.0037453729, 0.013312569, 0.02913499, -0.0064428174, -0.0077494932, 0.031877715, 0.015641298, -0.014399309, 0.0004980893, -0.013176726, -0.021631308, 0.0009832412, 0.014502808, -0.022498112, 0.04877394, 0.013234944, 0.024218785, -0.015874172, 0.007607182, -0.0003988353, 0.014231123, -0.0182029, 0.020570442, 0.008965608, -0.013648941, -0.009146731, -0.009599539, 0.024218785, -0.011967081, 0.011346086, 0.010207596, -0.0065269107, -0.030583978, 0.0065269107, 0.01662454, -0.026094705, 0.013881814, -0.013312569, -0.01687035, 0.0033507827, -0.026651012, 0.007833586, -0.023481352, -0.027065009, -0.028358746, -0.007128499, -0.027686004, -0.012329328, -0.018332275, -0.025991205, -0.042977992, 0.007671869, 0.013299632, 0.0028947399, -0.015990607, -0.0078077116, -0.028332872, 0.006614238, 0.024956215, 0.011967081, -0.015421363, 0.003324908, -0.010304627, -0.024205847, -0.009981193, 0.02903149, 0.00025308758, -0.042822745, -0.0026004142, 0.0050229398, -0.002137903, 0.013868877, -0.011837707, -0.00040328252, -0.0031454016, -0.037984163, -0.006850345, -0.010298158, 0.012568669, 0.029393738, -0.015304926, 0.0046024746, 0.03423232, 0.012549263, 0.022679236, 0.023274355, 0.0025680708, 0.010511625, -0.015123802, -0.004977659, 0.013545441, -0.0077883056, 0.008726266, -0.0033281422, 0.022265239, -0.012872698, -0.00095332356, -0.011087338, 0.029600736, -0.0019017955, -0.005094095, -0.011514273, 0.029755985, -0.033870075, 0.009159668, -0.005210532, 0.013907689, 0.025253775, -0.007704213, -0.025745396, 0.0020344038, -0.022627486, 0.01641754, 0.010110566, -0.01687035, 0.028358746, -0.0054886853, -0.00026905717, 0.01063453, 0.011954144, 0.03635405, 0.0006104828, -0.015887108, 0.0037874193, 0.006649816, 0.020906813, 0.009787131, -0.011281399, -0.02804825, -0.0077624307, 5.4630127e-05, 0.006513973, -0.015279051, 0.0025179384, 0.008959139, -0.016404605, -0.0049841274, 0.0050714547, 0.020402256, 0.030972099, 0.022950921, 0.0077818367, 0.03244696, -0.0034963281, 0.00796296, 0.026288766, -0.02449047, 0.013726565, -0.008881515, -0.012374609, -0.024115285, 0.0058250576, 0.018086463, 0.0038359344, 0.032628085, -0.0063781305, 0.0040396983, 0.010906215, -0.0004334024, -0.0010632913, 0.016728038, -0.005912385, -0.0072578727, 0.008913858, -0.023287293, -0.014554557, 0.0029189973, -0.0059447284, -0.012853292, -0.008467519, 0.014774493, 0.0008178853, 0.017129097, 0.0022624251, -0.0077430247, -0.017090285, 0.018358149, 0.0336372, -0.0033895948, -0.02240755, 0.014308748, -0.0011603216, -0.014515745, -0.018422836, -0.018177025, 0.018513398, -0.017646592, 0.0072449353, 0.016326979, -0.0062519913, 0.024154097, -0.0005373058, 0.0018079996, -0.022886233, -0.001822554, -0.0007689658, 0.023222605, 0.005980306, -0.011139088, 0.00031231655, -0.027220257, -0.013855939, 0.016378729, 0.011857113, -0.016947974, -0.008364019, -0.006420177, -0.0251244, -0.023093231, -0.009871225, 0.004013824, 0.011223181, 0.013390193, 0.008053522, -0.019328453, -0.018358149, 0.023584852, 0.004159369, -0.021113811, -0.029238489, -0.011449586, -0.0014821391, 0.05852873, 0.009916506, -0.006306975, 0.017077347, -0.002411205, -0.0194837, -0.017737154, 0.012820948, -0.00930198, 0.010097628, 0.013196132, -0.007859461, -0.007587776, -0.009890631, -0.014748619, -0.0019406077, 0.0066821594, -0.009877693, 0.019328453, -0.007594245, -0.010472813, 0.0090820445, -0.0051523135, 0.02606883, -0.023390792, -0.011113213, 0.022394612, -0.014567495, 0.015123802, -0.01236814, -0.012161141, 0.016262293, -0.0058638696, -0.0024500173, -0.025706584, -0.01697385, -0.016107043, 0.008027648, 0.029238489, -0.0019001784, 0.027479006, 0.0066950964, 0.0009306831, -0.025603084, 0.000605227, 0.0065754256, -0.009974724, 0.02137256, 0.0066821594, -0.013687753, 8.136402e-05, -0.0019858885, -0.003997652, -0.0042984462, 0.0040526357, 9.975937e-05, -0.013273757, -0.024645718, 0.009366667, -0.01741372, -0.0038909183, 0.0034639847, 0.030816851, -0.0052364063, -0.03565543, -0.024063535, -0.0013940032, -0.011798895, -0.0080858655, -0.007794774, -0.0052816872, -0.015343738, -0.042072374, 0.012064111, 0.04719558, 0.024645718, 0.030532228, -0.0120511735, 0.0045442563, 0.01953545, 0.0043987106, -0.010375783, 0.0060223527, -0.006119383, -0.0105310315, -0.0052267034, 0.021036187, -0.012070579, -0.01434756, 0.027789501, 0.026198205, -0.0054304674, 0.02903149, -0.027737753, -0.007937086, -0.009263167, -0.0014675845, 0.02542196, -0.028074125, -0.012665699, 0.017012661, -0.019781262, 0.012588075, -0.035396684, -0.019781262, 0.01018819, -0.0041787755, -0.009418416, -0.03169659, 0.011171431, 0.0006618281, -0.020790378, -0.004023527, -0.014852118, 0.028876243, 0.01627523, -0.026159393, 0.012199954, -0.0047674263, -0.032032963, 0.009780663, -0.03542256, 0.026935635, 0.0014683931, -0.03679392, 0.005372249, 0.011928269, -0.009237292, 0.01890152, 0.008629235, 0.004744786, 0.01800884, -0.027789501, -0.014037062, -0.026935635, -0.007212592, 0.012555731, 0.009334323, -0.015097928, 0.014127624, -0.009935912, 0.019600138, -0.0029545752, -0.015072053, -0.011727739, -0.02631464, 0.011585428, -0.0010333736, 0.0063781305, 0.028229373, 0.01608117, 0.0050358768, -0.03596593, 0.017750092, -0.013073227, -0.019224953, -0.006164664, -0.016145855, 0.011449586, 0.013894751, 0.016042357, 0.0036192334, 0.0073225596, 0.005543669, -0.0065366137, 0.0056665745, 0.009017357, -0.0019470764, -0.027116759, -0.005669809, 0.011902394, 0.012083517, 0.015563673, 0.008933264, 0.01152721, 0.029212615, -0.005317265, 0.00062705885, -0.03482744, -0.026780386, 0.001640622, -0.016999723, -0.011734208, 0.0043696016, 0.0014303896, 0.013713628, 0.0067468463, -0.003897387, -0.015473112, -0.00925023, 0.029652486, -0.014632182, 0.044763353, -0.025344336, 0.014321685, -0.009127324, -0.038812153, -0.023106169, -0.0061873044, -0.020130571, 0.0059447284, 0.008376957, 0.0032197917, -0.02433522, 0.021980617, -0.0027799206, 0.018979143, -0.0007612842, -0.0071996544, -0.018177025, -0.03358545, -0.024050599, -0.022575736, -0.02869512, 0.016585726, -0.014412247, -0.03167072, 0.020454004, 0.0022769796, -0.007102624, -0.010479282, -0.009269636, 0.025163213, 0.013933564, 0.026237017, 0.013881814, -0.0050358768, -0.011714802, -0.022523986, -0.025913581, -0.017918278, 0.021424308, 0.022420488, 0.0047415514, 0.010472813, 0.0135066295, -0.0030499885, 0.012866229, -0.016003545, -0.0012161141, 0.013933564, 0.0068180016, -0.005026174, 0.00945076, -0.017504282, 0.023339042, -0.007950023, -0.008635704, 0.010291689, -0.0005227512, -0.021825368, -0.0012581607, -0.01844871, 0.035629556, 0.01687035, -0.011928269, 0.015744798, -0.016702164, -0.009554259, 0.0026699528, 0.0068891575, 0.035344936, 0.0009694953, 0.0055080913, 0.0076848064, 0.0074389963, -0.015563673, -0.00885564, 0.009431354, 0.029445488, -0.015550736, -0.0043598986, -0.0110355895, 0.020764502, 0.03032523, -0.01454162, 0.002259191, 0.0120252995, -0.01137843, 0.015162615, 0.020001197, -0.0037033265, -0.01741372, 0.0044601634, -0.03037698, 0.00420465, -0.026379328, -0.011714802, -0.00026663142, -0.03423232, 0.0016737741, 0.010265815, 0.024891527, 0.009515447, 0.0052331723, 0.0021136452, 0.028902117, -0.014114686, -0.0052752187, 0.0033895948, 0.01068628, 0.016753914, -0.016495166, 0.00413026, -0.0009694953, -0.041037384, 0.017517218, 0.010311096, -0.033119705, -0.0031890653, 0.022730986, -0.0038941528, 0.004773895, -0.016016481, -0.0038197627, 0.002102325, 0.0012056025, -0.012866229, 0.0041884785, -0.0056924494, -0.017995901, 0.015175552, 0.009683632, -0.0060126497, 0.00791768, 0.0048903315, -0.010252877, 0.012284047, -0.01513674, 0.0017708045, 0.0016066615, 0.018021777, -0.0014675845, -0.015990607, 0.011100276, -0.004366367, -0.008364019, -0.0014643503, 0.009192012, 0.008124677, 0.0036774515, 0.0144898705, -0.0039847144, 0.019651888, -0.03260221, -0.0073743095, -0.014231123, -0.034542818, -0.02641814, -0.020337569, -0.02547371, 0.007633057, -0.010666873, -0.028125875, 0.0021815666, -0.005795948, 0.008668047, -0.018384025, 0.0053690146, -0.0022478707, 0.008900921, -0.0019729512, -0.004476335, 0.026094705, 0.0038068255, -0.0029092943, -0.0078077116, 0.0048968, 0.006239054, -0.017271409, 0.0033863604, -0.0015597634, -0.008739203, -0.018733334, 0.018319337, 0.012109392, 0.011009715, -0.008972077, -0.020686878, 0.00727081, 0.004579834, 0.022562798, 0.02696151, 0.032886833, -0.012723918, -0.027686004, -0.02286036, -0.020466942, 0.014140561, -0.021657182, -0.007801243, 0.030635728, 0.009166137, -0.008829765, -0.031386096, -0.002327112, -0.004269337, 0.0055274977, 0.014231123, -0.00022559565, -0.011274931, 0.004026761, 0.016728038, -0.007044406, 0.0021055595, -0.005391655, -0.011785957, 0.00027896237, 0.008913858, 0.001550869, -0.0038003568, -0.014722744, -0.013338444, -0.016508102, -0.0012403717, -0.007341966, -0.02156662, -0.021087937, 0.024904465, 0.00939901, -0.015990607, 0.0026521639, -0.040778637, -0.020285819, -0.0004916206, -0.0066110035, 0.005158782, -0.030040607, -0.0050358768, 0.0011554701, -0.001466776, -0.018293463, -0.022562798, 0.003690389, 0.023623664, 0.012698043, 0.2370129, 0.008454581, 0.0027119992, 0.04199475, -0.008875046, 0.014205248, 0.027039135, 0.0049291435, 0.016443416, 0.023015607, -0.02750488, 0.0011109979, 0.009386073, 0.010938559, -0.011850644, -0.014554557, -0.01811234, -0.015304926, 0.01310557, 0.0023109403, 0.008021179, 9.2381015e-05, 0.0040041204, -0.021256123, 0.015304926, 0.021993553, -0.0022915343, -0.001701266, 0.019328453, 0.020259945, 0.005411061, -0.020945625, -0.008286395, -0.00024257596, -0.004456929, -0.0085710175, -0.0023869474, -0.0026521639, 0.0222523, 0.024813903, -0.0040688077, -0.0144769335, -0.020997375, 0.014127624, -0.006552785, -0.0051070326, -0.019858886, -0.012782136, 0.01687035, 0.0072449353, -0.017944153, -0.0072772787, 0.02324848, 0.023274355, -4.644319e-05, 0.0061711324, 0.02859162, -0.018138213, 0.00640724, 0.00865511, -0.006119383, 0.035267312, -0.020945625, 0.023636602, 0.010996777, -0.008344613, -0.002513087, -0.00048515192, 0.024425782, -0.012070579, 0.006300506, -0.0031421673, -0.0031648078, 0.015964733, 0.01760778, 0.007937086, 0.026832135, 0.010957965, 0.0095736645, 0.002344901, -0.010977371, -0.0075554326, -0.004421351, 0.028384622, 0.00058056513, -0.017180847, -0.0062455223, 0.008150552, 0.029419612, 0.009631883, 0.00390709, 0.0017643358, 0.0052008284, 0.017193785, 0.015317864, 0.022278177, 0.008422238, 0.00885564, -0.018992081, -0.0023060888, -0.029109115, -0.0115207415, 0.01879802, 0.002307706, -0.02696151, 0.011003246, 0.004211119, -0.021760682, 0.029238489, 0.0044860383, 0.004026761, -0.009192012, 0.008784484, 0.0013325507, 0.0059447284, -0.0029303175, 0.005158782, -0.031618968, -0.017245533, -0.0063231466, -0.008525737, -0.020738628, -0.010841528, -0.0013163789, -0.008234645, -0.025486648, -0.01562836, 0.013674815, 0.0073290286, -0.03780304, 0.0065107387, -0.012892104, 0.024451656, -0.0026861245, -0.0017109691, -0.0021314342, 0.013687753, -0.0080858655, 0.016857412, -0.012601012, 0.008519268, -0.008131146, 0.016546914, -0.0010738029, 0.0052267034, -0.011876519, 0.0044439915, -0.008480456, -0.014451059, -0.027530754, -0.01795709, -0.006219648, 0.0018662177, -0.021152625, 0.026094705, -0.012070579, -0.00045765997, 0.0020667473, 0.028436372, 0.01370069, -0.009463697, 0.0063393186, 0.013817127, -0.0021087937, -0.007503683, 0.0025858597, -0.16487403, 0.0057571363, 0.044219982, -0.03314558, -0.022045303, 0.00796296, 0.0095801335, 0.023558978, -0.014735681, 0.039640147, 0.00035961886, 0.011132619, -0.04572072, -0.0026020315, -0.010847997, 0.0036095304, -0.005391655, 0.019250829, -0.011578959, 0.006921501, 0.011443117, -0.018616896, 0.007037937, 0.014127624, -0.0037712476, -0.019431952, -0.02305442, 0.021644244, 0.01038872, -0.02300267, -0.009489572, -0.0003606296, 0.00051547395, 0.006400771, 0.009813006, 0.0034445787, 0.003968543, 0.0026295234, -0.013868877, 0.00059754547, -0.0077688997, 0.010802716, 0.017827716, 0.03348195, -0.0062778657, 0.020492818, 0.011986487, 0.0009039998, -0.01221936, -0.008933264, 0.009360198, -0.025137339, -0.0054045925, -0.002624672, 0.005540435, 0.02067394, 0.017103223, 0.01953545, 0.0009573665, -0.000321211, -0.008247583, -0.03834641, -0.011766551, -0.0025454303, 0.012406952, 0.009664226, 0.015887108, -0.0031551046, -0.017387845, 0.008985014, -0.00221391, -0.02088094, -0.0061226175, -0.019781262, 0.004903269, 0.011093807, 0.0030790975, -0.026094705, -0.011934738, -0.01009116, -0.002120114, 0.050171178, -0.017646592, 0.0125233885, -0.013674815, 0.01592592, 0.00041803924, 0.004560428, -0.027427256, 0.0015678493, 0.029109115, -0.010052348, 0.00846105, -0.02853987, 0.010744498, 0.0043501956, 0.0054498734, -0.00571509, 0.0004378496, 0.0018079996, -0.013674815, 0.010097628, -0.018862708, 0.021605432, 0.032860957, -0.00930198, -0.016339917, 0.018319337, 0.03749254, -0.005210532, -0.022174677, 0.010699217, 0.009819475, 0.020014133, 0.016184669, -0.005857401, 0.014877993, -0.0061452575, 0.024050599, 0.029471362, 0.04230525, -0.020518692, -0.015473112, 0.016314043, 0.0071802484, -0.016158793, -0.08569723, 0.003531906, -0.0037033265, 0.021346685, 0.0077106813, 0.028798617, 0.021631308, 0.035267312, 0.00687622, 0.01518849, -0.012232297, -0.011669521, -0.01608117, 0.009754788, 0.0008522502, -0.011391367, 0.01083506, -0.032576334, -0.04574659, 0.016145855, 0.000981624, -0.0030241136, 0.012801542, -0.0077300873, 0.006365193, -0.037673663, -0.038605157, 0.0110355895, 0.0035157343, 0.0034154695, 0.02349429, -0.027039135, -0.016986785, -0.013312569, -0.021708932, -0.0149814915, -0.021281999, -0.019263767, 0.011941206, -0.03961427, -0.008991483, 0.018306399, 0.0168186, -0.015563673, 0.015162615, -0.0058379946, -0.016197605, 0.012549263, -0.009386073, -0.022627486, 0.012665699, 0.0045054443, -0.008680985, -0.023416666, 0.026599264, -0.011734208, 0.008564549, 0.030144107, -0.013687753, 0.00895267, -0.0022656594, 0.028617496, -0.0004867691, 0.020945625, 0.0050100023, -0.026482826, -0.025680708, -0.0009444291, 0.009800069, -0.037259668, -0.036198802, -0.003531906, -0.0029384035, -0.013894751, -0.028902117, -0.008182895, -0.013648941, 0.016896224, -0.0016333448, -0.0054983883, -0.017530156, -0.022562798, 0.0057991827, 0.006064399, -0.001644665, 0.03555193, -0.031748343, -0.018772146, 0.0024144393, -0.0015686579, -0.0060417587, 0.019134391, 0.013124976, -0.016249355, -0.025098527, 0.018371087, -0.0025001497, 0.014670994, 0.02734963, -0.01890152, -0.022433424, 0.00079686206, -0.05387127, 0.019315515, -0.005165251, -0.013959438, -0.013429006, -0.0043437267, 0.005805651, -0.0063037407, -0.0067597837, 0.007193186, -0.008351082, 0.017866528, -0.010343439, 0.002391799, -0.0044957413, 0.0054789823, 0.009036764, 0.017504282, -0.0047577233, -0.00801471, -0.015537799, -0.0018338743, 0.017672468, 0.017737154, -0.029367864, 0.004773895, -0.008842702, 0.001822554, -0.022394612, -0.01370069, 0.03819116, -0.036923297, 0.0043404927, 0.04947256, -0.010653936, -0.039950643, -0.029859483, 0.030092357, 0.03423232, -0.040287014, -0.00791768, -0.025848895, 0.011456054, -0.024593968, 0.007982367, 0.031644844, -0.015641298, 0.006921501, 0.010673342, 0.0007115562, 0.022523986, 0.016883288, 0.0011045292, 0.0010754201, -0.010265815, -0.025797145, 0.02354604, -0.016055295, 0.029290238, -0.025745396, 0.011798895, 0.0055727786, 0.013312569, 0.008079397, 0.020686878, -0.011158494, 0.024865653, 0.0037680133, -0.0049905963, -0.014774493, 0.005753902, 0.010446938, 0.026780386, 0.016805662, 0.020363443, 0.002352987, 0.023468416, 0.0075101517, -0.016404605, 0.018138213, 0.019845948, -0.0027152337, -0.023313167, 0.014037062, 0.035836555, 0.0002749194, -0.036172926, 0.017750092, 0.010304627, 0.0036030617, -0.017504282, 0.0056762774, 0.008215239, 0.004615412, 0.008351082, 0.0041076196, -0.00472538, 0.01454162, -0.0036483426, 0.021100875, -0.015343738, -0.022769798, 0.0066821594, -0.02552546, -0.012969729, 0.005346374, -0.0050035333, -0.017970027, -0.0076395255, 0.003402532, 0.0042919773, 0.0011012949, 0.004139963, 0.007658932, 0.004589537, -0.006219648, -0.028953867, -0.023804788, -0.022472236, 0.015615423, 0.0015557205, 0.008972077, -0.005905916, 0.001896944, 0.0063748965, 0.01058278, 0.018189963, -0.011197306, 0.030532228, 0.02582302, 0.010479282, 0.0062455223, -0.0009436205, -0.0067015653, 0.001402089, -0.022718048, 0.0034898594, 0.011747145, -0.01276273, 0.06810239, 0.0030338168, -0.022601612, 0.03487919, -0.013726565, 0.033430204, 0.008441644, 0.009528384, -0.022032365, -0.009780663, -0.0017999136, 0.019548388, 0.011404305, -0.028850367, -0.02908324, -0.019224953, -0.024852715, 0.0059382594, -0.0004519999, -0.015253177, 0.018707458, -0.01725847, 0.007924148, 0.015059115, -0.022187615, -0.024115285, 0.0144898705, -0.0020360209, 0.0006181644, 0.0032214087, 0.021683056, -0.0045539592, -0.03293858, -0.0051070326, 0.014231123, -0.015822422, -0.011675989, -0.019199079, -0.008887983, -0.0038100597, 0.010828591, 0.027479006, -0.010155847, -0.008499862, 0.013196132, -0.014049999, -0.0034995626, 0.008661579, -0.0046024746], - "object": "embedding" + "embedding": [0.02230405, 0.008771547, 0.014554557, -0.011423711, -0.008448112, 0.015473112, 0.0068826885, -0.008881515, 0.004744786, -0.005595419, -0.016676288, 0.01731022, -0.017698342, 0.024891527, -0.0063878335, -0.0012743324, 0.031618968, 0.021294935, 0.013648941, -0.0046218806, -0.020337569, 0.025512522, -0.01429581, -0.001887241, -0.01562836, -0.008959139, 0.017374907, -0.008868577, -0.011934738, 0.006138789, 0.0034187038, -0.016792726, -0.012723918, -0.0168186, -0.016844476, 0.0169221, 0.010860935, 0.0039006216, 0.011591896, -0.014606307, 0.015718922, -0.0003416278, -0.00038286572, 0.00014958851, -0.0055177948, 0.007827118, -0.0011853878, 0.0067468463, -0.039355524, 0.01296326, -0.008124677, 0.0066562844, -0.012885635, -0.052706905, -0.026172329, 0.00087650784, 0.008674516, 0.01811234, -0.011714802, -0.0054789823, -0.0041917125, -0.0013471051, -0.014502808, 0.0060676336, -0.0006072485, -0.001574318, -0.0084093, 0.010860935, 0.017038535, -0.0021136452, 0.021424308, 0.028125875, 0.017581906, -0.00033576557, 0.029419612, -0.008752141, -0.020712754, -0.0023740102, 0.007109093, 0.00022701068, 0.0044892724, 0.0069279694, -0.03260221, 0.008758609, 0.018733334, 0.013441943, 0.0025923285, 0.018371087, -0.034594566, -0.0030613088, -0.013196132, 0.051439043, 0.030040607, -0.021760682, -0.012445764, 0.0054854513, -0.0074325274, 0.02478803, 0.0125169195, -0.013791252, 0.016119981, -0.015291989, -0.031308472, 0.005977072, -0.017129097, -0.023222605, 0.0037486071, 0.008480456, 0.032679833, -0.040105894, -0.03487919, 0.049187936, 0.039459024, -0.038449906, -0.021980617, -0.0070767496, 0.0012702894, -0.024141159, -0.037337292, 0.0070055937, -0.0022672766, 0.040468138, 0.017982965, -0.027530754, 0.04486685, -0.002137903, -0.026482826, -0.024503406, -0.024956215, 0.005016471, 0.010802716, 0.014929742, 0.013467818, 0.021243185, -0.008920327, 0.0013099102, -0.006513973, 0.024425782, -0.03793241, 0.00328933, 0.013545441, 0.006119383, -0.0047900667, -0.008059991, -0.0056406995, 0.030972099, 0.0048094727, -0.0027427257, -0.020402256, -0.0018662177, 0.005673043, -0.012717449, 0.023817725, 0.012827417, 0.0014692018, 0.016999723, -0.0019567795, 0.017827716, -0.044219982, 0.0069538443, -0.04931731, 0.0048968, 0.030402854, -0.005876807, 0.012342265, 0.028772743, 0.020686878, 0.0049744244, -0.010395189, 0.0075101517, -0.032576334, 0.027039135, -0.020466942, 0.03330083, 0.00044795693, 0.034930937, 0.007859461, -0.016158793, 0.003978246, 0.01157249, -0.0095930705, -0.0068438766, -0.008538674, -0.009146731, 0.0009783898, -0.017129097, 0.0017497813, -0.001466776, 0.024011785, -0.004550725, 0.01143018, 0.027763627, -0.015059115, -0.0069991252, -0.66901803, -0.032653958, 0.004961487, -0.0085904235, 0.0080988025, 0.013390193, 0.0239471, 0.028255248, -0.003522203, -0.016003545, 0.009386073, 0.007063812, 0.0042078844, -0.023934161, 0.0125233885, -0.021825368, -0.0053981235, 0.010893278, -0.00018577276, 0.0017788904, -0.008765078, 0.019108517, -0.0018112338, -0.00398148, 0.021411372, 0.022834484, 0.009638351, -0.016495166, -0.015020303, 0.012102923, -0.015304926, 0.011792426, 0.013099102, -0.023106169, 0.025447836, -0.003709795, -0.024555156, 0.028824493, 0.0054886853, 0.029962983, -0.028384622, -0.0021750978, 0.017323159, -0.02305442, -0.010666873, 0.010847997, 0.017568968, -0.00046129862, 0.046833333, -0.014024125, 0.012769199, -0.030014733, -0.015718922, 0.01844871, 0.018254649, 0.015990607, 0.046212338, 0.009858287, -0.008467519, 0.0031146754, -0.009987661, -0.018086463, 0.0013495309, 0.002897974, 0.007445465, 0.00079120195, -0.0252279, -0.023507228, -0.020104695, -0.022329926, -0.0035933587, 0.016158793, -0.03904503, 0.02423172, 0.0061064456, -0.010796247, 0.029911233, -0.007102624, -0.0024710405, -0.017206721, 0.002055427, -0.015123802, -0.02853987, -0.015123802, 0.01741372, -0.010472813, -0.014670994, -0.020893876, 0.015757734, 0.026987385, 0.009612476, 0.015046178, -0.01839696, 0.0003299033, -0.017103223, 0.03216234, -0.01646929, 0.0032181744, -0.011320212, -0.025033839, 0.000618973, -0.03270571, -0.0037453729, 0.013312569, 0.02913499, -0.0064428174, -0.0077494932, 0.031877715, 0.015641298, -0.014399309, 0.0004980893, -0.013176726, -0.021631308, 0.0009832412, 0.014502808, -0.022498112, 0.04877394, 0.013234944, 0.024218785, -0.015874172, 0.007607182, -0.0003988353, 0.014231123, -0.0182029, 0.020570442, 0.008965608, -0.013648941, -0.009146731, -0.009599539, 0.024218785, -0.011967081, 0.011346086, 0.010207596, -0.0065269107, -0.030583978, 0.0065269107, 0.01662454, -0.026094705, 0.013881814, -0.013312569, -0.01687035, 0.0033507827, -0.026651012, 0.007833586, -0.023481352, -0.027065009, -0.028358746, -0.007128499, -0.027686004, -0.012329328, -0.018332275, -0.025991205, -0.042977992, 0.007671869, 0.013299632, 0.0028947399, -0.015990607, -0.0078077116, -0.028332872, 0.006614238, 0.024956215, 0.011967081, -0.015421363, 0.003324908, -0.010304627, -0.024205847, -0.009981193, 0.02903149, 0.00025308758, -0.042822745, -0.0026004142, 0.0050229398, -0.002137903, 0.013868877, -0.011837707, -0.00040328252, -0.0031454016, -0.037984163, -0.006850345, -0.010298158, 0.012568669, 0.029393738, -0.015304926, 0.0046024746, 0.03423232, 0.012549263, 0.022679236, 0.023274355, 0.0025680708, 0.010511625, -0.015123802, -0.004977659, 0.013545441, -0.0077883056, 0.008726266, -0.0033281422, 0.022265239, -0.012872698, -0.00095332356, -0.011087338, 0.029600736, -0.0019017955, -0.005094095, -0.011514273, 0.029755985, -0.033870075, 0.009159668, -0.005210532, 0.013907689, 0.025253775, -0.007704213, -0.025745396, 0.0020344038, -0.022627486, 0.01641754, 0.010110566, -0.01687035, 0.028358746, -0.0054886853, -0.00026905717, 0.01063453, 0.011954144, 0.03635405, 0.0006104828, -0.015887108, 0.0037874193, 0.006649816, 0.020906813, 0.009787131, -0.011281399, -0.02804825, -0.0077624307, 5.4630127e-05, 0.006513973, -0.015279051, 0.0025179384, 0.008959139, -0.016404605, -0.0049841274, 0.0050714547, 0.020402256, 0.030972099, 0.022950921, 0.0077818367, 0.03244696, -0.0034963281, 0.00796296, 0.026288766, -0.02449047, 0.013726565, -0.008881515, -0.012374609, -0.024115285, 0.0058250576, 0.018086463, 0.0038359344, 0.032628085, -0.0063781305, 0.0040396983, 0.010906215, -0.0004334024, -0.0010632913, 0.016728038, -0.005912385, -0.0072578727, 0.008913858, -0.023287293, -0.014554557, 0.0029189973, -0.0059447284, -0.012853292, -0.008467519, 0.014774493, 0.0008178853, 0.017129097, 0.0022624251, -0.0077430247, -0.017090285, 0.018358149, 0.0336372, -0.0033895948, -0.02240755, 0.014308748, -0.0011603216, -0.014515745, -0.018422836, -0.018177025, 0.018513398, -0.017646592, 0.0072449353, 0.016326979, -0.0062519913, 0.024154097, -0.0005373058, 0.0018079996, -0.022886233, -0.001822554, -0.0007689658, 0.023222605, 0.005980306, -0.011139088, 0.00031231655, -0.027220257, -0.013855939, 0.016378729, 0.011857113, -0.016947974, -0.008364019, -0.006420177, -0.0251244, -0.023093231, -0.009871225, 0.004013824, 0.011223181, 0.013390193, 0.008053522, -0.019328453, -0.018358149, 0.023584852, 0.004159369, -0.021113811, -0.029238489, -0.011449586, -0.0014821391, 0.05852873, 0.009916506, -0.006306975, 0.017077347, -0.002411205, -0.0194837, -0.017737154, 0.012820948, -0.00930198, 0.010097628, 0.013196132, -0.007859461, -0.007587776, -0.009890631, -0.014748619, -0.0019406077, 0.0066821594, -0.009877693, 0.019328453, -0.007594245, -0.010472813, 0.0090820445, -0.0051523135, 0.02606883, -0.023390792, -0.011113213, 0.022394612, -0.014567495, 0.015123802, -0.01236814, -0.012161141, 0.016262293, -0.0058638696, -0.0024500173, -0.025706584, -0.01697385, -0.016107043, 0.008027648, 0.029238489, -0.0019001784, 0.027479006, 0.0066950964, 0.0009306831, -0.025603084, 0.000605227, 0.0065754256, -0.009974724, 0.02137256, 0.0066821594, -0.013687753, 8.136402e-05, -0.0019858885, -0.003997652, -0.0042984462, 0.0040526357, 9.975937e-05, -0.013273757, -0.024645718, 0.009366667, -0.01741372, -0.0038909183, 0.0034639847, 0.030816851, -0.0052364063, -0.03565543, -0.024063535, -0.0013940032, -0.011798895, -0.0080858655, -0.007794774, -0.0052816872, -0.015343738, -0.042072374, 0.012064111, 0.04719558, 0.024645718, 0.030532228, -0.0120511735, 0.0045442563, 0.01953545, 0.0043987106, -0.010375783, 0.0060223527, -0.006119383, -0.0105310315, -0.0052267034, 0.021036187, -0.012070579, -0.01434756, 0.027789501, 0.026198205, -0.0054304674, 0.02903149, -0.027737753, -0.007937086, -0.009263167, -0.0014675845, 0.02542196, -0.028074125, -0.012665699, 0.017012661, -0.019781262, 0.012588075, -0.035396684, -0.019781262, 0.01018819, -0.0041787755, -0.009418416, -0.03169659, 0.011171431, 0.0006618281, -0.020790378, -0.004023527, -0.014852118, 0.028876243, 0.01627523, -0.026159393, 0.012199954, -0.0047674263, -0.032032963, 0.009780663, -0.03542256, 0.026935635, 0.0014683931, -0.03679392, 0.005372249, 0.011928269, -0.009237292, 0.01890152, 0.008629235, 0.004744786, 0.01800884, -0.027789501, -0.014037062, -0.026935635, -0.007212592, 0.012555731, 0.009334323, -0.015097928, 0.014127624, -0.009935912, 0.019600138, -0.0029545752, -0.015072053, -0.011727739, -0.02631464, 0.011585428, -0.0010333736, 0.0063781305, 0.028229373, 0.01608117, 0.0050358768, -0.03596593, 0.017750092, -0.013073227, -0.019224953, -0.006164664, -0.016145855, 0.011449586, 0.013894751, 0.016042357, 0.0036192334, 0.0073225596, 0.005543669, -0.0065366137, 0.0056665745, 0.009017357, -0.0019470764, -0.027116759, -0.005669809, 0.011902394, 0.012083517, 0.015563673, 0.008933264, 0.01152721, 0.029212615, -0.005317265, 0.00062705885, -0.03482744, -0.026780386, 0.001640622, -0.016999723, -0.011734208, 0.0043696016, 0.0014303896, 0.013713628, 0.0067468463, -0.003897387, -0.015473112, -0.00925023, 0.029652486, -0.014632182, 0.044763353, -0.025344336, 0.014321685, -0.009127324, -0.038812153, -0.023106169, -0.0061873044, -0.020130571, 0.0059447284, 0.008376957, 0.0032197917, -0.02433522, 0.021980617, -0.0027799206, 0.018979143, -0.0007612842, -0.0071996544, -0.018177025, -0.03358545, -0.024050599, -0.022575736, -0.02869512, 0.016585726, -0.014412247, -0.03167072, 0.020454004, 0.0022769796, -0.007102624, -0.010479282, -0.009269636, 0.025163213, 0.013933564, 0.026237017, 0.013881814, -0.0050358768, -0.011714802, -0.022523986, -0.025913581, -0.017918278, 0.021424308, 0.022420488, 0.0047415514, 0.010472813, 0.0135066295, -0.0030499885, 0.012866229, -0.016003545, -0.0012161141, 0.013933564, 0.0068180016, -0.005026174, 0.00945076, -0.017504282, 0.023339042, -0.007950023, -0.008635704, 0.010291689, -0.0005227512, -0.021825368, -0.0012581607, -0.01844871, 0.035629556, 0.01687035, -0.011928269, 0.015744798, -0.016702164, -0.009554259, 0.0026699528, 0.0068891575, 0.035344936, 0.0009694953, 0.0055080913, 0.0076848064, 0.0074389963, -0.015563673, -0.00885564, 0.009431354, 0.029445488, -0.015550736, -0.0043598986, -0.0110355895, 0.020764502, 0.03032523, -0.01454162, 0.002259191, 0.0120252995, -0.01137843, 0.015162615, 0.020001197, -0.0037033265, -0.01741372, 0.0044601634, -0.03037698, 0.00420465, -0.026379328, -0.011714802, -0.00026663142, -0.03423232, 0.0016737741, 0.010265815, 0.024891527, 0.009515447, 0.0052331723, 0.0021136452, 0.028902117, -0.014114686, -0.0052752187, 0.0033895948, 0.01068628, 0.016753914, -0.016495166, 0.00413026, -0.0009694953, -0.041037384, 0.017517218, 0.010311096, -0.033119705, -0.0031890653, 0.022730986, -0.0038941528, 0.004773895, -0.016016481, -0.0038197627, 0.002102325, 0.0012056025, -0.012866229, 0.0041884785, -0.0056924494, -0.017995901, 0.015175552, 0.009683632, -0.0060126497, 0.00791768, 0.0048903315, -0.010252877, 0.012284047, -0.01513674, 0.0017708045, 0.0016066615, 0.018021777, -0.0014675845, -0.015990607, 0.011100276, -0.004366367, -0.008364019, -0.0014643503, 0.009192012, 0.008124677, 0.0036774515, 0.0144898705, -0.0039847144, 0.019651888, -0.03260221, -0.0073743095, -0.014231123, -0.034542818, -0.02641814, -0.020337569, -0.02547371, 0.007633057, -0.010666873, -0.028125875, 0.0021815666, -0.005795948, 0.008668047, -0.018384025, 0.0053690146, -0.0022478707, 0.008900921, -0.0019729512, -0.004476335, 0.026094705, 0.0038068255, -0.0029092943, -0.0078077116, 0.0048968, 0.006239054, -0.017271409, 0.0033863604, -0.0015597634, -0.008739203, -0.018733334, 0.018319337, 0.012109392, 0.011009715, -0.008972077, -0.020686878, 0.00727081, 0.004579834, 0.022562798, 0.02696151, 0.032886833, -0.012723918, -0.027686004, -0.02286036, -0.020466942, 0.014140561, -0.021657182, -0.007801243, 0.030635728, 0.009166137, -0.008829765, -0.031386096, -0.002327112, -0.004269337, 0.0055274977, 0.014231123, -0.00022559565, -0.011274931, 0.004026761, 0.016728038, -0.007044406, 0.0021055595, -0.005391655, -0.011785957, 0.00027896237, 0.008913858, 0.001550869, -0.0038003568, -0.014722744, -0.013338444, -0.016508102, -0.0012403717, -0.007341966, -0.02156662, -0.021087937, 0.024904465, 0.00939901, -0.015990607, 0.0026521639, -0.040778637, -0.020285819, -0.0004916206, -0.0066110035, 0.005158782, -0.030040607, -0.0050358768, 0.0011554701, -0.001466776, -0.018293463, -0.022562798, 0.003690389, 0.023623664, 0.012698043, 0.2370129, 0.008454581, 0.0027119992, 0.04199475, -0.008875046, 0.014205248, 0.027039135, 0.0049291435, 0.016443416, 0.023015607, -0.02750488, 0.0011109979, 0.009386073, 0.010938559, -0.011850644, -0.014554557, -0.01811234, -0.015304926, 0.01310557, 0.0023109403, 0.008021179, 9.2381015e-05, 0.0040041204, -0.021256123, 0.015304926, 0.021993553, -0.0022915343, -0.001701266, 0.019328453, 0.020259945, 0.005411061, -0.020945625, -0.008286395, -0.00024257596, -0.004456929, -0.0085710175, -0.0023869474, -0.0026521639, 0.0222523, 0.024813903, -0.0040688077, -0.0144769335, -0.020997375, 0.014127624, -0.006552785, -0.0051070326, -0.019858886, -0.012782136, 0.01687035, 0.0072449353, -0.017944153, -0.0072772787, 0.02324848, 0.023274355, -4.644319e-05, 0.0061711324, 0.02859162, -0.018138213, 0.00640724, 0.00865511, -0.006119383, 0.035267312, -0.020945625, 0.023636602, 0.010996777, -0.008344613, -0.002513087, -0.00048515192, 0.024425782, -0.012070579, 0.006300506, -0.0031421673, -0.0031648078, 0.015964733, 0.01760778, 0.007937086, 0.026832135, 0.010957965, 0.0095736645, 0.002344901, -0.010977371, -0.0075554326, -0.004421351, 0.028384622, 0.00058056513, -0.017180847, -0.0062455223, 0.008150552, 0.029419612, 0.009631883, 0.00390709, 0.0017643358, 0.0052008284, 0.017193785, 0.015317864, 0.022278177, 0.008422238, 0.00885564, -0.018992081, -0.0023060888, -0.029109115, -0.0115207415, 0.01879802, 0.002307706, -0.02696151, 0.011003246, 0.004211119, -0.021760682, 0.029238489, 0.0044860383, 0.004026761, -0.009192012, 0.008784484, 0.0013325507, 0.0059447284, -0.0029303175, 0.005158782, -0.031618968, -0.017245533, -0.0063231466, -0.008525737, -0.020738628, -0.010841528, -0.0013163789, -0.008234645, -0.025486648, -0.01562836, 0.013674815, 0.0073290286, -0.03780304, 0.0065107387, -0.012892104, 0.024451656, -0.0026861245, -0.0017109691, -0.0021314342, 0.013687753, -0.0080858655, 0.016857412, -0.012601012, 0.008519268, -0.008131146, 0.016546914, -0.0010738029, 0.0052267034, -0.011876519, 0.0044439915, -0.008480456, -0.014451059, -0.027530754, -0.01795709, -0.006219648, 0.0018662177, -0.021152625, 0.026094705, -0.012070579, -0.00045765997, 0.0020667473, 0.028436372, 0.01370069, -0.009463697, 0.0063393186, 0.013817127, -0.0021087937, -0.007503683, 0.0025858597, -0.16487403, 0.0057571363, 0.044219982, -0.03314558, -0.022045303, 0.00796296, 0.0095801335, 0.023558978, -0.014735681, 0.039640147, 0.00035961886, 0.011132619, -0.04572072, -0.0026020315, -0.010847997, 0.0036095304, -0.005391655, 0.019250829, -0.011578959, 0.006921501, 0.011443117, -0.018616896, 0.007037937, 0.014127624, -0.0037712476, -0.019431952, -0.02305442, 0.021644244, 0.01038872, -0.02300267, -0.009489572, -0.0003606296, 0.00051547395, 0.006400771, 0.009813006, 0.0034445787, 0.003968543, 0.0026295234, -0.013868877, 0.00059754547, -0.0077688997, 0.010802716, 0.017827716, 0.03348195, -0.0062778657, 0.020492818, 0.011986487, 0.0009039998, -0.01221936, -0.008933264, 0.009360198, -0.025137339, -0.0054045925, -0.002624672, 0.005540435, 0.02067394, 0.017103223, 0.01953545, 0.0009573665, -0.000321211, -0.008247583, -0.03834641, -0.011766551, -0.0025454303, 0.012406952, 0.009664226, 0.015887108, -0.0031551046, -0.017387845, 0.008985014, -0.00221391, -0.02088094, -0.0061226175, -0.019781262, 0.004903269, 0.011093807, 0.0030790975, -0.026094705, -0.011934738, -0.01009116, -0.002120114, 0.050171178, -0.017646592, 0.0125233885, -0.013674815, 0.01592592, 0.00041803924, 0.004560428, -0.027427256, 0.0015678493, 0.029109115, -0.010052348, 0.00846105, -0.02853987, 0.010744498, 0.0043501956, 0.0054498734, -0.00571509, 0.0004378496, 0.0018079996, -0.013674815, 0.010097628, -0.018862708, 0.021605432, 0.032860957, -0.00930198, -0.016339917, 0.018319337, 0.03749254, -0.005210532, -0.022174677, 0.010699217, 0.009819475, 0.020014133, 0.016184669, -0.005857401, 0.014877993, -0.0061452575, 0.024050599, 0.029471362, 0.04230525, -0.020518692, -0.015473112, 0.016314043, 0.0071802484, -0.016158793, -0.08569723, 0.003531906, -0.0037033265, 0.021346685, 0.0077106813, 0.028798617, 0.021631308, 0.035267312, 0.00687622, 0.01518849, -0.012232297, -0.011669521, -0.01608117, 0.009754788, 0.0008522502, -0.011391367, 0.01083506, -0.032576334, -0.04574659, 0.016145855, 0.000981624, -0.0030241136, 0.012801542, -0.0077300873, 0.006365193, -0.037673663, -0.038605157, 0.0110355895, 0.0035157343, 0.0034154695, 0.02349429, -0.027039135, -0.016986785, -0.013312569, -0.021708932, -0.0149814915, -0.021281999, -0.019263767, 0.011941206, -0.03961427, -0.008991483, 0.018306399, 0.0168186, -0.015563673, 0.015162615, -0.0058379946, -0.016197605, 0.012549263, -0.009386073, -0.022627486, 0.012665699, 0.0045054443, -0.008680985, -0.023416666, 0.026599264, -0.011734208, 0.008564549, 0.030144107, -0.013687753, 0.00895267, -0.0022656594, 0.028617496, -0.0004867691, 0.020945625, 0.0050100023, -0.026482826, -0.025680708, -0.0009444291, 0.009800069, -0.037259668, -0.036198802, -0.003531906, -0.0029384035, -0.013894751, -0.028902117, -0.008182895, -0.013648941, 0.016896224, -0.0016333448, -0.0054983883, -0.017530156, -0.022562798, 0.0057991827, 0.006064399, -0.001644665, 0.03555193, -0.031748343, -0.018772146, 0.0024144393, -0.0015686579, -0.0060417587, 0.019134391, 0.013124976, -0.016249355, -0.025098527, 0.018371087, -0.0025001497, 0.014670994, 0.02734963, -0.01890152, -0.022433424, 0.00079686206, -0.05387127, 0.019315515, -0.005165251, -0.013959438, -0.013429006, -0.0043437267, 0.005805651, -0.0063037407, -0.0067597837, 0.007193186, -0.008351082, 0.017866528, -0.010343439, 0.002391799, -0.0044957413, 0.0054789823, 0.009036764, 0.017504282, -0.0047577233, -0.00801471, -0.015537799, -0.0018338743, 0.017672468, 0.017737154, -0.029367864, 0.004773895, -0.008842702, 0.001822554, -0.022394612, -0.01370069, 0.03819116, -0.036923297, 0.0043404927, 0.04947256, -0.010653936, -0.039950643, -0.029859483, 0.030092357, 0.03423232, -0.040287014, -0.00791768, -0.025848895, 0.011456054, -0.024593968, 0.007982367, 0.031644844, -0.015641298, 0.006921501, 0.010673342, 0.0007115562, 0.022523986, 0.016883288, 0.0011045292, 0.0010754201, -0.010265815, -0.025797145, 0.02354604, -0.016055295, 0.029290238, -0.025745396, 0.011798895, 0.0055727786, 0.013312569, 0.008079397, 0.020686878, -0.011158494, 0.024865653, 0.0037680133, -0.0049905963, -0.014774493, 0.005753902, 0.010446938, 0.026780386, 0.016805662, 0.020363443, 0.002352987, 0.023468416, 0.0075101517, -0.016404605, 0.018138213, 0.019845948, -0.0027152337, -0.023313167, 0.014037062, 0.035836555, 0.0002749194, -0.036172926, 0.017750092, 0.010304627, 0.0036030617, -0.017504282, 0.0056762774, 0.008215239, 0.004615412, 0.008351082, 0.0041076196, -0.00472538, 0.01454162, -0.0036483426, 0.021100875, -0.015343738, -0.022769798, 0.0066821594, -0.02552546, -0.012969729, 0.005346374, -0.0050035333, -0.017970027, -0.0076395255, 0.003402532, 0.0042919773, 0.0011012949, 0.004139963, 0.007658932, 0.004589537, -0.006219648, -0.028953867, -0.023804788, -0.022472236, 0.015615423, 0.0015557205, 0.008972077, -0.005905916, 0.001896944, 0.0063748965, 0.01058278, 0.018189963, -0.011197306, 0.030532228, 0.02582302, 0.010479282, 0.0062455223, -0.0009436205, -0.0067015653, 0.001402089, -0.022718048, 0.0034898594, 0.011747145, -0.01276273, 0.06810239, 0.0030338168, -0.022601612, 0.03487919, -0.013726565, 0.033430204, 0.008441644, 0.009528384, -0.022032365, -0.009780663, -0.0017999136, 0.019548388, 0.011404305, -0.028850367, -0.02908324, -0.019224953, -0.024852715, 0.0059382594, -0.0004519999, -0.015253177, 0.018707458, -0.01725847, 0.007924148, 0.015059115, -0.022187615, -0.024115285, 0.0144898705, -0.0020360209, 0.0006181644, 0.0032214087, 0.021683056, -0.0045539592, -0.03293858, -0.0051070326, 0.014231123, -0.015822422, -0.011675989, -0.019199079, -0.008887983, -0.0038100597, 0.010828591, 0.027479006, -0.010155847, -0.008499862, 0.013196132, -0.014049999, -0.0034995626, 0.008661579, -0.0046024746] } ], "model": "text-embedding-ada-002-v2", "usage": { - "prompt_tokens": 9, - "total_tokens": 9 + "total_tokens": 9, + "prompt_tokens": 9 } -}1799 1879 +}1799 1824 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -126,20 +130,21 @@ Authorization: Bearer test-api-key Content-Type: application/json {"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003ein bedroom, The color of the lamp beside the desk is blue.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003ebedroom\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003ein sitting room, The color of the lamp beside the desk is purple.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003esitting room\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003ein patio, The color of the lamp beside the desk is yellow.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003epatio\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003ein kitchen, The color of the lamp beside the desk is black.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003ekitchen\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003ein office, The color of the lamp beside the desk is orange.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003eoffice\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What color is the lamp in each room?\nHelpful Answer:"}]}HTTP/2.0 200 OK -Content-Length: 1079 +Content-Length: 999 Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Thu, 22 Jan 2026 20:04:27 GMT +Date: Mon, 21 Sep 2026 07:48:08 GMT Openai-Organization: lcgo-tst -Openai-Processing-Ms: 557 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 584 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload X-Content-Type-Options: nosniff -X-Envoy-Upstream-Service-Time: 575 X-Openai-Proxy-Wasm: v0.1 X-Ratelimit-Limit-Requests: 30000 X-Ratelimit-Limit-Tokens: 150000000 @@ -147,10 +152,10 @@ X-Ratelimit-Remaining-Requests: 29999 X-Ratelimit-Remaining-Tokens: 149999735 X-Ratelimit-Reset-Requests: 2ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_a4f019c02b204d87a40521cfdfad688f +X-Request-Id: req_59ec5d0bc999440a8e58569fbd375a04 { - "created": 1769112266, + "created": 1789976888, "model": "gpt-4.1-nano-2025-04-14", "choices": [ { @@ -158,7 +163,7 @@ X-Request-Id: req_a4f019c02b204d87a40521cfdfad688f "index": 0, "message": { "role": "assistant", - "content": "In the bedroom, the lamp beside the desk is blue. \nIn the sitting room, the lamp beside the desk is purple. \nIn the patio, the lamp beside the desk is yellow. \nIn the kitchen, the lamp beside the desk is black. \nIn the office, the lamp beside the desk is orange.", + "content": "In the bedroom, the lamp is blue. \nIn the sitting room, the lamp is purple. \nIn the patio, the lamp is yellow. \nIn the kitchen, the lamp is black. \nIn the office, the lamp is orange.", "refusal": null, "annotations": [] }, @@ -166,22 +171,22 @@ X-Request-Id: req_a4f019c02b204d87a40521cfdfad688f } ], "usage": { - "total_tokens": 333, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { + "rejected_prediction_tokens": 0, "reasoning_tokens": 0, "audio_tokens": 0, - "accepted_prediction_tokens": 0, - "rejected_prediction_tokens": 0 + "accepted_prediction_tokens": 0 }, "prompt_tokens": 268, - "completion_tokens": 65 + "completion_tokens": 50, + "total_tokens": 318 }, "service_tier": "default", - "system_fingerprint": "fp_f0bc439dc3", - "id": "chatcmpl-D0vCkvp43gfSgGwthRyPn2rRIxp09", + "system_fingerprint": "fp_109d5ede69", + "id": "chatcmpl-EQT2uKzFSSRll5fbis9htIvBkSSNi", "object": "chat.completion" } \ No newline at end of file diff --git a/vectorstores/pgvector/testdata/TestPgvectorAsRetrieverWithMetadataFilters.httprr b/vectorstores/pgvector/testdata/TestPgvectorAsRetrieverWithMetadataFilters.httprr index cd0ea7609..6eea8d177 100644 --- a/vectorstores/pgvector/testdata/TestPgvectorAsRetrieverWithMetadataFilters.httprr +++ b/vectorstores/pgvector/testdata/TestPgvectorAsRetrieverWithMetadataFilters.httprr @@ -1,5 +1,5 @@ httprr trace v1 -431 64228 +431 64280 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -11,20 +11,22 @@ Content-Type: application/json Content-Length: 63324 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Thu, 22 Jan 2026 20:04:31 GMT +Date: Mon, 21 Sep 2026 07:48:10 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst -Openai-Processing-Ms: 57 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 115 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload -Via: envoy-router-6b489b9458-tzj4z +Via: envoy-router-7d5f5f44cf-kcjq7 X-Content-Type-Options: nosniff -X-Envoy-Upstream-Service-Time: 77 +X-Engine-Geography: EU X-Openai-Proxy-Wasm: v0.1 X-Ratelimit-Limit-Requests: 10000 X-Ratelimit-Limit-Tokens: 10000000 @@ -32,9 +34,14 @@ X-Ratelimit-Remaining-Requests: 9999 X-Ratelimit-Remaining-Tokens: 9999955 X-Ratelimit-Reset-Requests: 6ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_c01bb7e609204d759fd650266e4533c0 +X-Request-Id: req_7642a9d75e4c4d2f9b51bb9f50b91035 { + "model": "text-embedding-ada-002-v2", + "usage": { + "prompt_tokens": 43, + "total_tokens": 43 + }, "object": "list", "data": [ { @@ -52,13 +59,8 @@ X-Request-Id: req_c01bb7e609204d759fd650266e4533c0 "index": 2, "embedding": [0.014424977, -0.008803002, -0.0020790275, -0.028590279, 0.0013365176, 0.030901391, -0.019891147, -0.011133589, -0.002213734, -0.007063175, 0.0026779042, 0.0068814023, -0.015970046, 0.02278653, -0.011217983, 0.002093634, 0.02595457, 0.0029603012, 0.03388766, -0.012126848, -0.028564312, 0.014996263, -0.0065178564, 0.0009299631, -0.01859277, -0.011140081, 0.010244201, -0.017969549, 0.0022461936, 0.021085655, 0.014801507, -0.01807342, 0.004550814, -0.03173235, -0.01825519, 0.0014103629, 0.017450197, 0.002220226, 0.023604508, -0.01175681, 0.0047488166, -0.003031712, 0.0005169166, -0.022929352, -0.012730594, 0.016710121, 0.028434472, 0.0028759066, -0.01175681, 0.01498328, 0.0054337108, 0.012393015, -0.016969798, -0.015970046, 0.0038821495, -0.021566054, 0.014386025, 0.023825232, -0.017865678, -0.015684403, -0.0049305893, 0.0021114869, -0.0017804005, 0.013555064, 0.010062427, -0.0075760344, 0.0056674187, 0.0032151078, 0.00063011894, 0.00807591, 0.03334234, 0.034978297, 0.006641202, 0.0135940155, 0.02749964, 0.010101379, -0.0058816513, 0.006193262, -0.014100382, -0.00093077455, 0.0072124884, -0.019566553, -0.018761558, -0.00091454486, 0.01498328, 0.0016797762, -0.012464426, 0.00979626, -0.013581031, -0.018346077, 0.00022701324, 0.038198274, 0.023150075, -0.0035413252, -0.00074291555, 0.02478603, 0.012438459, 0.013957561, 0.030174298, -0.021007752, 5.3558084e-05, 0.011620481, -0.027837219, 0.0016124229, -0.031498645, -0.022397017, 0.008932839, -0.0013697885, 0.028720116, -0.020916866, -0.034043465, 0.034432977, 0.033524115, -0.0282527, -0.017606003, -0.029447207, 0.006261427, -0.01698278, -0.029758818, 0.0028337094, 0.0039470685, 0.04014584, 0.020501385, -0.010004001, 0.032563314, -0.007647445, -0.01234108, -0.019371796, -0.018956315, 0.012367048, -0.014528847, 0.02357854, 0.018190272, 0.025318366, -0.021916617, 0.0018274667, -0.0064983806, -0.0006078031, -0.015528598, -0.026240215, 0.0045735356, 0.009101628, -0.018878413, -0.014178285, -0.0008650442, 0.028720116, 0.01663222, 0.01615182, -0.019047203, -0.014775539, 0.0060471944, -0.023903135, 0.010685649, -0.0089652985, -0.0062776566, 0.020488402, -0.020436466, 0.011049194, -0.035212006, -0.010653189, -0.010133838, -0.008264175, 0.0131460745, 0.005777781, 0.023877166, 0.02474708, -8.064143e-05, 0.012315113, -0.010906373, -0.0047585545, -0.006946321, 0.031888157, -0.017164554, 0.024292648, -0.013308372, 0.02124146, 0.009770293, -0.0007161365, -0.01825519, -0.0054629245, -0.024448453, -0.015749322, 0.019475667, -0.0056284675, 0.019099137, -0.01433409, 0.022539837, -0.0060991296, 0.0077383313, 0.0041126115, 0.017229473, 0.022384033, -0.02086493, -0.02457829, -0.6892828, -0.034796525, 0.012633216, -0.0039048712, 0.0015012493, 0.020774044, 0.007069667, 0.016073916, -0.00097053737, -0.025305383, -0.010971292, 0.00041142345, 0.01663222, 0.0022072422, 0.009965049, -0.016281657, -0.007881153, 0.006407494, 0.00862772, 0.0007490017, 0.0022380787, 0.017774792, -0.017008748, 0.012406, 0.016138835, 0.012633216, 0.015074166, -0.0045735356, -0.012678659, 0.022254195, -0.011380281, 0.024734097, -0.008582277, -0.019384779, 0.043158077, 0.008342077, -0.010880406, 0.011659432, 0.009367796, 0.030953325, -0.015671419, -0.014476912, 0.0032459444, -0.027863186, -0.011691892, 0.0027233474, 0.025941588, -0.02305919, 0.01615182, 0.00082406413, 0.038795527, -0.021656942, 0.001230213, 0.0025805258, 0.016658187, 0.0076344614, 0.020838963, -0.008101877, -0.006829467, 0.010153314, -0.0065632993, -0.0059790295, -0.012607248, -0.015139084, -0.014230221, 0.0006171352, -0.033627983, -0.020709125, -0.009504125, -0.0031177297, -0.007413737, 0.010400006, -0.027421739, 0.015892144, 0.016203754, -0.008809493, 0.014178285, -0.011523102, -0.013081156, 0.01615182, 0.008621228, -0.02395507, -0.040950835, -0.009783276, 0.032900892, -0.017346326, -0.030979292, -0.007868169, 0.030511877, 0.0026681663, 0.039262943, 0.0061965077, -0.027317869, -0.0068619265, -0.008958806, 0.025928603, -0.015918111, 0.0029083663, 0.01646343, -0.02069614, -0.001459052, -0.01481449, 0.0022608002, -0.006835959, 0.04227518, 0.014048447, -0.012698134, 0.029057695, 0.003202124, -0.017774792, 0.031135099, -0.010302627, -0.010523352, 0.0040736604, 0.016645202, -0.03388766, 0.05406445, 0.016788024, 0.0066866456, 0.0005347693, 0.0025058691, -0.0021244707, 0.00013369233, -0.008147321, 0.012185276, 0.01667117, -0.00687491, -0.0228904, -0.017138587, 0.005644697, -0.004609241, -0.01577529, 0.018644705, 0.0017706626, 0.00035887974, -0.011841205, 0.0180085, -0.008958806, 0.021085655, -0.016242705, -0.030148331, -0.01261374, -0.03194009, 0.010250692, -0.0069138617, -0.02814883, -0.03058978, -0.0075046234, -0.030252201, 0.02495482, -0.027811252, -0.011425724, -0.025474172, 0.022630725, 0.0081667965, -0.0020595517, -0.021423234, 0.0020822734, -0.016619235, 0.016476413, 0.0047682924, 0.008322601, -0.005200003, -0.009322353, -0.004265171, -0.029083662, -0.010705125, 0.032771055, 0.0019475666, -0.0272919, 0.00384969, -0.0008999381, -0.005183773, -0.012620232, -0.023942085, -0.0038626739, -0.009030217, -0.027188031, 0.0048169815, -0.005430465, -0.002166668, 0.015385777, 0.003570539, -0.009646947, 0.03503023, -0.003388766, 0.013736837, 0.028382538, -0.008186271, 0.019657439, -0.015749322, 0.0026389528, -0.0074851476, -0.0035835225, 0.0027233474, -0.0034764064, 0.0017300884, 0.008848445, 0.0069073695, 0.0031940092, 0.01773584, -0.012938335, 0.032615248, -0.016865928, 0.0065795295, -0.035861194, 0.011211492, -0.0134771615, 0.013223978, 0.036614254, 0.003153435, -0.017385278, -0.017411245, -0.015100134, 0.019164056, 0.018566802, -0.020566303, 0.02224121, -0.008608244, -0.017190522, 0.011016735, 0.014347075, 0.018475916, -0.0019021234, -0.0031761567, 0.0004211613, 0.03186219, 0.017995516, -0.016749073, -0.012925351, -0.016995765, 8.611896e-05, -0.0063945106, 0.023539588, -0.030745585, -0.012074913, 0.0022413246, -0.045910638, 0.016762057, 0.024032973, 0.0076149856, 0.02351362, 0.020877915, -0.010607746, 0.013879659, 0.011159557, 0.017476164, -0.0007396696, -0.0153078735, 0.01089339, -0.014217236, 0.0079071205, -0.009582028, 0.014879409, 0.043911137, -0.0025010002, 0.042742595, 0.011386773, 0.04887094, 0.020319613, -0.012789021, -0.016307624, 0.017567052, -0.00070152973, 0.005901127, -0.013684901, 0.009926098, -0.01433409, 0.006355559, -0.0013973791, 0.004086644, 0.00721898, 0.019332845, -0.025591025, -0.00025987843, -0.011062179, -0.011821729, -0.0040833983, 0.010159806, 0.011964551, -0.012431967, -0.038042467, 0.014217236, -0.0025285906, -0.0005712862, -0.0130292205, -0.031680416, 0.012626723, -0.0049370816, 0.004495633, 0.017112618, 0.0075176074, 0.024007006, -0.004213236, 0.013866674, -0.03503023, -0.00074494426, 0.0068619265, 0.020332595, -0.0021488152, -0.004664422, -0.016554317, -0.03323847, -0.012568297, 0.019631471, 0.011328346, -0.013009745, 0.008634212, -0.01825519, -0.015593517, -0.014853441, 0.010692141, -0.014100382, -0.002973285, -0.01842398, -0.01577529, -0.012412491, -0.012055437, 0.030901391, -0.002976531, 0.003791263, -0.013516112, -0.014009496, 0.001605931, 0.069333375, 0.009283401, 0.00419376, 0.01471062, 0.006375035, -0.007433213, -0.0209688, 0.003437455, 0.0004002655, 0.012594264, 0.0014858311, -0.007167045, 0.014918361, 0.001751187, -0.0031290904, 0.00015783405, 0.024123859, 0.015346825, 0.031368807, -0.016112868, 0.0015028722, 0.008205747, -0.010406498, 0.008329093, 0.006887894, 0.0045767818, 0.02996656, 0.0018485653, 0.030563813, -0.0027412002, -0.0021196017, 0.014775539, -0.003677655, -0.012892891, -0.018852444, 0.005832962, -0.011334837, 0.0037101144, 0.016099885, -0.0020011247, 0.031187033, 0.012827972, 0.007894137, -0.016710121, 0.0013381406, 0.01660625, -0.0046968814, 0.014827474, -0.013879659, -0.007420229, 0.020955818, 0.004904622, 0.0027071177, -0.01996905, 0.0143211065, -0.00039985977, -0.012237211, 0.002744446, -0.015242955, -0.013632966, 0.006482151, -0.010510368, 0.010698632, -0.018060435, -0.00849139, -0.008458931, 0.0019605504, -0.009763801, -0.02017679, 0.0010192265, -0.013905626, -0.006537332, -0.028382538, -0.0041158576, 0.018462932, 0.013568047, 0.012107372, -0.010425974, -0.0025496893, 0.03791263, -0.007920104, 0.011185524, -0.012003503, -0.010419481, -0.0033498146, 0.010387022, 0.034458946, -0.016320609, -0.005245446, 0.0060277185, 0.025889652, -0.008121353, -0.00017203506, -0.026486907, -0.0066866456, -0.011607497, 0.017891645, 0.013055189, -0.014996263, -0.009536585, 0.004245695, -0.025188528, -0.007777283, -0.008147321, 0.010497384, 0.012146324, 0.029836722, 0.017060684, -0.016956814, 0.0112439515, 0.01780076, -0.013152567, 0.004258679, 0.0017917613, -0.006952813, 0.013619983, -0.015814241, 0.01354208, 0.010231216, -0.025889652, -0.0005595197, -0.04344372, 0.030174298, 0.0034017498, 0.00040635167, 0.0030787783, 0.021202508, -0.014035463, 0.0037425738, 0.00076360843, 0.0018469424, 0.021228475, 0.0003767324, -0.019215992, -0.046144344, -0.020631222, 0.037237473, -0.00433009, -0.015424727, -0.0042878925, -0.0011912616, 0.008906871, 0.008919856, 0.0023159813, -0.022202259, -0.020215742, 0.00091454486, -0.0005136707, 0.0023987528, 0.015515614, -0.019566553, 0.0003276375, -0.014009496, 0.015957063, -0.0052097407, -0.00537853, -0.008471915, -0.028434472, 0.01460675, 0.008809493, 0.012821481, -0.009945573, 0.0033433228, 0.014879409, -0.0018323356, -0.0011855812, -0.021189526, 0.0034601768, -0.03791263, 0.019839212, 0.02522748, -0.0014833966, 0.025720863, -0.00769938, 0.003340077, 0.008062926, -0.0038302145, -0.00169276, -0.02739577, -0.020423481, -0.007167045, 0.017008748, -0.02305919, -0.006680154, 0.010523352, 0.00035218496, 0.02034558, 0.014541831, -0.004080152, -0.010198757, 0.026694646, -0.013529096, 0.022007503, -0.007063175, 0.016554317, -0.012074913, -0.02343572, -0.0059303404, 0.0006666358, -4.3718814e-05, 0.015762307, 0.002106618, -0.011419232, -0.03303073, 0.009296385, 0.018242208, 0.017489148, 2.9162782e-05, -0.006478905, -0.024591275, -0.0019199761, -0.023747329, -0.027421739, -0.036276676, 0.0061088675, -0.0008252814, -0.0389773, 0.025045708, -0.0036614253, -0.021656942, 0.0045930115, 0.0043528113, 0.029265435, -0.007121602, 0.01780076, 0.011562054, -0.008290142, -0.027473673, 0.0030203513, -0.011205, -0.0039568064, 0.014191269, 0.012711118, -0.017580034, 0.01189314, 0.012457934, 0.029784786, 0.028590279, 0.0029521864, 0.0051642978, 0.012698134, 0.02055332, -0.026642712, -0.004596257, -0.012295637, 0.019267926, -0.010205249, -0.028330602, 0.014632718, -0.0065632993, -0.016177787, 0.0055732867, -0.04448242, 0.012646199, 0.008854936, -0.005329841, -0.0022429475, -0.011140081, -0.0194497, -0.0008691016, -0.0021098638, 0.027551576, -0.0015402007, 0.013568047, 0.0060471944, 0.0010646698, -0.009504125, -0.0014209122, 0.010555811, 0.02698029, -0.0049305893, -0.0072124884, -0.0052876435, 0.042560823, 0.038925365, -0.021877665, -0.0039957576, -0.013555064, -0.0013292142, -0.0065178564, 0.016281657, 0.008218731, -0.0050474433, 0.027317869, -0.012769545, 0.00046295283, -0.024396518, 0.0037588037, -0.0053623, -0.0027769054, -0.0038659198, -0.0033222241, 0.0072709154, -0.0002022629, 0.00096161105, -0.0055505647, 0.018307127, 0.0008918232, -0.0074461964, 0.022903383, -0.013308372, 0.013853691, 0.00023756256, 0.018657688, -0.0055148597, -0.008127845, 0.029343337, -0.014996263, -0.020877915, -0.012548821, 0.014191269, 0.001983272, 0.0032232227, -0.015268923, 0.0037295902, -0.009607996, 0.013529096, -0.022942334, -0.014373042, 4.305948e-05, -0.02330588, 0.01625569, 0.026616745, -0.02649989, 0.016294641, 0.0114322165, -0.013022729, -0.0010297758, -0.034926362, -0.00443396, -0.021592023, 0.009835212, 0.015515614, -0.012172291, -0.006404248, -0.009114612, 0.0031940092, 0.008205747, -0.004833211, 0.01996905, 0.013736837, -0.003388766, -0.023812247, 0.015814241, -0.01735931, 0.007452688, -0.008257682, -0.010088395, -0.010698632, -0.00769938, -0.0007173537, -0.014191269, 0.0024766556, -0.041989535, -0.019683408, -0.0059335865, -0.027110128, -0.01299027, 0.010783027, -0.0016164803, 0.013658934, -0.01529489, -0.0066087428, 0.010393514, 0.015165052, 0.006303624, -0.028460441, -0.022046454, -0.006303624, -0.0170477, 0.002171537, 0.0012496886, -0.009062677, -0.019904131, 0.006894386, -0.015242955, 0.011471167, -0.0037295902, -0.015216988, -0.0035478172, -0.00077212905, 0.013529096, 0.02241, 0.0070242235, -0.002510738, -0.027889155, -0.005732338, 0.0023240962, 0.030330105, -0.020228725, -0.0010354563, 0.010601254, -0.023747329, -0.008368045, -0.009614487, -0.011399757, -0.011828221, 0.018268175, 0.021747828, -0.008134336, 0.0030154823, 0.031394776, 0.0005708805, -0.016865928, -0.0013852068, -0.00687491, -0.021838713, -0.004547568, 0.014450944, 0.0005436957, 0.009413239, -0.024967805, 0.016060933, -0.027188031, 0.0040022493, -0.01343821, -0.012763053, -0.011503627, 0.031109132, 0.027239965, -0.015061182, 0.0031096148, -0.03991213, 0.0047520627, -0.0048559327, -0.011620481, -0.0016278411, -0.034978297, -0.020254694, -0.0007765922, 0.0019362058, -0.02962898, 0.0038951333, 0.011776286, 0.015697388, 0.026902387, 0.2141804, 0.009367796, -0.010335087, 0.02708416, -0.0032345837, 0.038795527, 0.02113759, -0.0070891427, 0.03269315, 0.023760313, -0.01763197, 0.0077513154, 0.0051091164, -0.000626873, 0.0002450688, 0.0016862681, -0.031472676, -0.011750319, -0.025292398, -0.014749572, 0.0038853954, -0.01715157, 0.009069169, 0.009121104, 0.030667683, 0.0175281, -0.0051578055, 0.0017414491, 0.031680416, 0.02024171, -0.017203506, -0.0107246, -0.0051123626, -0.011639956, 0.009121104, -0.0037652955, -0.009049693, -0.01615182, 0.02942124, 0.027110128, 0.01832011, -0.0061575565, -0.01832011, -0.011678908, -0.0071605532, 0.0068034995, -0.017657937, -0.007569542, 0.009835212, 0.0059790295, -0.026590776, -0.007881153, 0.03503023, 0.016281657, -0.004372287, 0.02739577, 0.020527352, -0.01412635, 0.00934832, 0.00010559463, -0.024513371, 0.025188528, -0.02024171, 0.010049444, -0.008932839, -0.01625569, -0.0100689195, -0.005021476, 0.01529489, -0.024760064, 0.022630725, 0.0045702895, 0.004787768, 0.0145807825, -0.016047949, -0.014424977, 0.020371547, -0.00063214765, 0.0066736615, 0.0029927606, -0.011639956, 0.0093872715, -0.015905127, 0.009575536, -0.0010979407, -0.033160567, 0.0077707907, -0.0029635471, 0.009095136, 0.004508617, 0.005884897, -0.007004748, 0.008887396, 0.009309368, 0.022332098, 0.023461686, -0.01687891, 0.007257932, -0.024084907, 0.014411993, -0.032433476, -0.05520702, 0.018242208, 0.0012294014, -0.0036841468, 0.007660429, -0.00035380793, 0.019995017, 0.034770556, 0.0024182287, 0.011217983, -0.0120878965, 0.00934832, 0.0037880172, 0.01715157, -0.013970545, 0.007420229, -0.0123475725, -0.0080239745, -0.0073877694, -0.006420478, -0.022864433, -0.008647196, 0.018501883, 0.0014054939, -0.006719105, -0.02389015, 0.018112369, -0.008783526, -0.039678425, 0.03326444, -0.0053395787, 0.026434971, 0.00065446354, -0.0072059967, 0.010094887, -0.0009397009, 0.0023143583, 0.0069073695, 0.0041840225, 0.0006378281, -0.023669427, 0.016580284, 0.00079403917, 0.006241951, 0.0005335521, 0.0027217243, -0.021566054, -0.015242955, -0.039029237, -0.002796381, -0.008530342, -0.016385527, -0.0065632993, 0.017073667, -0.020137839, -0.010536335, 0.0028369555, 0.005479154, 0.020709125, -0.02468216, -0.0042327116, 0.00075427635, 0.0061023757, -0.0045118625, 0.0031972553, -0.16691944, 0.008257682, 0.0155675495, -0.015905127, -0.007861678, 0.02161799, 0.022864433, 0.02505869, -0.0137108695, 0.02516256, 0.013295388, 0.028538343, -0.046404023, -0.016788024, 5.026142e-05, 0.027162062, -0.0059887674, -0.011620481, 0.01959252, 0.020202758, 0.012289145, -0.011568545, 0.026357068, -0.0020514368, 0.013451193, 0.0024263435, -0.011613989, 0.015035215, -0.010990768, -0.008335585, 0.009471666, 0.010023477, 0.016515365, 0.009750817, 0.026616745, 0.006063424, -0.004586519, 0.0012407623, -0.016346576, 0.00034893904, 0.00807591, 0.0069593047, 0.0019102383, 0.011451691, -0.021384282, 0.01687891, 0.0016611121, 0.0124189835, -0.019215992, -0.008335585, 0.014788522, -0.041833732, -0.0032459444, -0.006034211, 0.0057583055, 0.024071924, 0.014554814, 0.0057388297, -0.013866674, 0.018540835, -0.0016797762, -0.0408989, -0.0063847727, 0.015723355, -0.013684901, -0.014658685, 0.0051805275, 0.012328097, -0.016398512, -0.0027558068, -0.014165301, -0.031836223, 0.018865429, -0.01343821, 0.011938583, 0.01769689, -0.00866018, -0.007952563, -0.011802254, -0.021955568, 0.006647694, 0.0360949, -0.005839454, 0.018891396, -0.021955568, 0.01134133, 0.009134088, 0.013801755, -0.025487155, -0.019436715, 0.025279416, -0.04214534, 0.0024620488, -0.032121867, -0.0070242235, 0.006822975, -0.0010906373, 0.0011182278, -0.0021828976, 0.0019134842, 0.0064107403, 0.0012391392, -0.015411744, 0.013133091, 0.02749964, 0.013152567, -0.006238705, 0.01715157, 0.011860681, -0.003930839, -0.011295887, 0.029395273, -0.00721898, 0.008777034, 0.0073228506, -0.010731092, 0.010458433, -0.022825481, 0.017476164, -0.005174035, 0.031290904, -0.0037652955, -0.008238207, 0.013736837, 0.0057842727, -0.019735342, -0.10335087, -0.0049273437, 0.026201263, 0.010237709, -0.0030544337, 0.013775788, 0.007965548, 0.035861194, -0.016891895, 0.030901391, -0.013321356, -0.019683408, -0.017294392, -0.01062073, 0.016891895, -0.015152069, 0.016242705, -0.030200267, -0.04739079, 0.002871038, 0.0112439515, -0.0045767818, 0.0028272176, -0.009711865, -0.022981286, -0.013347323, -0.019021234, 0.018346077, -0.0005051501, -0.0016667924, 0.020890899, -0.009828719, 0.014373042, -0.0077318395, -0.009088645, -0.013282404, 0.0055732867, -0.00064229127, 0.008692639, -0.021436216, -0.013275913, 0.0054044975, 0.022422984, -0.023500638, 0.0052843974, -0.01062073, -0.003794509, 0.008127845, -0.0035770307, -0.03835408, 0.003327093, 0.011393265, -0.007777283, -0.0093872715, 0.03973036, -0.026798517, 0.008809493, 0.013723853, -0.02553909, 0.010925849, 0.0029992526, 0.0031842715, 0.019657439, 0.013308372, -0.017398262, -0.017164554, -0.024123859, -0.029187532, 0.023240961, -0.023656443, -0.014944328, 0.015931096, -0.024889901, 0.0156065, -0.021812746, -0.008809493, -0.013736837, -0.011808746, 0.009465174, -0.023929102, -0.03588716, -0.019761309, 0.0032637971, -0.003262174, 0.0051805275, 0.02814883, -0.004670914, -0.012354065, 0.03908117, -0.013957561, 0.002213734, 0.03069365, 0.013159059, -0.02107267, -0.017372295, 0.01694383, 0.002687642, -0.0017674167, 0.012665675, -0.011821729, -0.03058978, -0.016099885, -0.03248541, 0.019527601, -0.0069398293, 0.00013602535, 0.0060601784, 0.0015913242, -0.010880406, 0.0034861444, -0.014087399, 0.002341949, -0.0057972567, -0.0010622353, -0.02203347, -0.01732036, -0.010906373, 0.0069657965, 0.010958308, 0.0042781546, 0.013879659, 0.0044631734, 0.001253746, -0.0014136088, 0.0107246, 0.008270666, -0.03482249, 0.010607746, -0.026279166, -0.022526855, -0.014230221, -0.008640704, 0.019293893, -0.022942334, 0.0060991296, 0.033524115, -0.017748823, -0.02395507, 0.001635956, 0.016762057, 0.009439207, -0.025850702, -0.04048342, -0.025889652, 0.026201263, -0.016073916, -0.016697139, 0.023734346, -0.012256686, 0.012827972, 0.00903671, -0.0026438218, 0.013840707, 0.02076106, 0.024409503, -0.004911114, -0.0066671697, -0.018449947, 0.022098389, 0.0069073695, 0.00501823, -0.015359809, -0.0035413252, -0.00097540626, 0.005917357, 0.019917116, 0.015113117, 0.01625569, -0.007465672, -0.0014858311, 0.00396979, -0.012568297, -0.013775788, 0.003794509, 0.028408505, 0.017852694, 0.027577544, -0.009640455, -0.0037036226, -0.0069982563, -0.008056434, 0.01615182, 0.026746582, 0.009062677, -0.009160055, 0.0056966324, 0.028953824, 0.0238512, -0.041600022, -0.016125852, 0.0068684183, 0.012146324, -0.016917862, 0.004310614, -0.009770293, 0.01571037, 0.010166298, -0.006991764, -0.0025837717, -0.010679157, -0.011763303, 0.034381043, -0.0026097393, -0.014450944, 0.00042075553, -0.020293644, -0.011419232, -0.008601753, -0.023864184, -0.002218603, -0.0008991266, 0.009380779, 0.0051058703, -0.011107622, 0.010107871, 0.011217983, 0.0033189782, 0.008192764, -0.0071475697, -0.01917704, -0.021085655, 0.010296135, 0.0053460705, -0.0075435746, 0.009224974, -0.005544073, 0.03326444, 0.007926596, 0.017670922, -0.0052876435, 0.015113117, -0.0040119872, 0.02076106, -0.0066931373, -0.015697388, -0.010224725, -0.007627969, -0.028330602, -0.008861428, 0.02931737, -0.006310116, 0.05406445, -0.010464924, -0.02340975, 0.025616992, -0.010912865, 0.014100382, 0.014762555, 0.0016505627, -0.018891396, -0.023799265, 0.013386275, 0.020787029, 0.032459445, -0.01471062, -0.02299427, -0.01821624, -0.030252201, 0.018034467, -0.022020487, -0.010432465, 0.02942124, 0.022332098, 0.005245446, 0.0052422, -0.023994021, -0.01498328, 0.022864433, 0.0029116122, -0.0024880164, -0.015697388, 0.010581778, -0.00515456, -0.019709375, -0.015814241, 0.010049444, -0.03635458, -0.011380281, -0.028486408, 0.00804345, 0.019644456, 0.017216489, 0.022539837, -0.017411245, -0.030979292, 0.011406248, 0.0023435717, -0.008731591, 0.009335336, -0.022968303] } - ], - "model": "text-embedding-ada-002-v2", - "usage": { - "prompt_tokens": 43, - "total_tokens": 43 - } -}278 22090 + ] +}278 22141 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -70,20 +72,22 @@ Content-Type: application/json Content-Length: 21186 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Thu, 22 Jan 2026 20:04:33 GMT +Date: Mon, 21 Sep 2026 07:48:11 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst -Openai-Processing-Ms: 40 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 85 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload -Via: envoy-router-6558979846-vsb88 +Via: envoy-router-7d5f5f44cf-wqprl X-Content-Type-Options: nosniff -X-Envoy-Upstream-Service-Time: 62 +X-Engine-Geography: EU X-Openai-Proxy-Wasm: v0.1 X-Ratelimit-Limit-Requests: 10000 X-Ratelimit-Limit-Tokens: 10000000 @@ -91,23 +95,23 @@ X-Ratelimit-Remaining-Requests: 9999 X-Ratelimit-Remaining-Tokens: 9999991 X-Ratelimit-Reset-Requests: 6ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_0996ff38e0bf486db41992938b2c629d +X-Request-Id: req_504948cceb074a42836386ac323d8102 { + "usage": { + "prompt_tokens": 9, + "total_tokens": 9 + }, "object": "list", "data": [ { + "embedding": [0.02230405, 0.008771547, 0.014554557, -0.011423711, -0.008448112, 0.015473112, 0.0068826885, -0.008881515, 0.004744786, -0.005595419, -0.016676288, 0.01731022, -0.017698342, 0.024891527, -0.0063878335, -0.0012743324, 0.031618968, 0.021294935, 0.013648941, -0.0046218806, -0.020337569, 0.025512522, -0.01429581, -0.001887241, -0.01562836, -0.008959139, 0.017374907, -0.008868577, -0.011934738, 0.006138789, 0.0034187038, -0.016792726, -0.012723918, -0.0168186, -0.016844476, 0.0169221, 0.010860935, 0.0039006216, 0.011591896, -0.014606307, 0.015718922, -0.0003416278, -0.00038286572, 0.00014958851, -0.0055177948, 0.007827118, -0.0011853878, 0.0067468463, -0.039355524, 0.01296326, -0.008124677, 0.0066562844, -0.012885635, -0.052706905, -0.026172329, 0.00087650784, 0.008674516, 0.01811234, -0.011714802, -0.0054789823, -0.0041917125, -0.0013471051, -0.014502808, 0.0060676336, -0.0006072485, -0.001574318, -0.0084093, 0.010860935, 0.017038535, -0.0021136452, 0.021424308, 0.028125875, 0.017581906, -0.00033576557, 0.029419612, -0.008752141, -0.020712754, -0.0023740102, 0.007109093, 0.00022701068, 0.0044892724, 0.0069279694, -0.03260221, 0.008758609, 0.018733334, 0.013441943, 0.0025923285, 0.018371087, -0.034594566, -0.0030613088, -0.013196132, 0.051439043, 0.030040607, -0.021760682, -0.012445764, 0.0054854513, -0.0074325274, 0.02478803, 0.0125169195, -0.013791252, 0.016119981, -0.015291989, -0.031308472, 0.005977072, -0.017129097, -0.023222605, 0.0037486071, 0.008480456, 0.032679833, -0.040105894, -0.03487919, 0.049187936, 0.039459024, -0.038449906, -0.021980617, -0.0070767496, 0.0012702894, -0.024141159, -0.037337292, 0.0070055937, -0.0022672766, 0.040468138, 0.017982965, -0.027530754, 0.04486685, -0.002137903, -0.026482826, -0.024503406, -0.024956215, 0.005016471, 0.010802716, 0.014929742, 0.013467818, 0.021243185, -0.008920327, 0.0013099102, -0.006513973, 0.024425782, -0.03793241, 0.00328933, 0.013545441, 0.006119383, -0.0047900667, -0.008059991, -0.0056406995, 0.030972099, 0.0048094727, -0.0027427257, -0.020402256, -0.0018662177, 0.005673043, -0.012717449, 0.023817725, 0.012827417, 0.0014692018, 0.016999723, -0.0019567795, 0.017827716, -0.044219982, 0.0069538443, -0.04931731, 0.0048968, 0.030402854, -0.005876807, 0.012342265, 0.028772743, 0.020686878, 0.0049744244, -0.010395189, 0.0075101517, -0.032576334, 0.027039135, -0.020466942, 0.03330083, 0.00044795693, 0.034930937, 0.007859461, -0.016158793, 0.003978246, 0.01157249, -0.0095930705, -0.0068438766, -0.008538674, -0.009146731, 0.0009783898, -0.017129097, 0.0017497813, -0.001466776, 0.024011785, -0.004550725, 0.01143018, 0.027763627, -0.015059115, -0.0069991252, -0.66901803, -0.032653958, 0.004961487, -0.0085904235, 0.0080988025, 0.013390193, 0.0239471, 0.028255248, -0.003522203, -0.016003545, 0.009386073, 0.007063812, 0.0042078844, -0.023934161, 0.0125233885, -0.021825368, -0.0053981235, 0.010893278, -0.00018577276, 0.0017788904, -0.008765078, 0.019108517, -0.0018112338, -0.00398148, 0.021411372, 0.022834484, 0.009638351, -0.016495166, -0.015020303, 0.012102923, -0.015304926, 0.011792426, 0.013099102, -0.023106169, 0.025447836, -0.003709795, -0.024555156, 0.028824493, 0.0054886853, 0.029962983, -0.028384622, -0.0021750978, 0.017323159, -0.02305442, -0.010666873, 0.010847997, 0.017568968, -0.00046129862, 0.046833333, -0.014024125, 0.012769199, -0.030014733, -0.015718922, 0.01844871, 0.018254649, 0.015990607, 0.046212338, 0.009858287, -0.008467519, 0.0031146754, -0.009987661, -0.018086463, 0.0013495309, 0.002897974, 0.007445465, 0.00079120195, -0.0252279, -0.023507228, -0.020104695, -0.022329926, -0.0035933587, 0.016158793, -0.03904503, 0.02423172, 0.0061064456, -0.010796247, 0.029911233, -0.007102624, -0.0024710405, -0.017206721, 0.002055427, -0.015123802, -0.02853987, -0.015123802, 0.01741372, -0.010472813, -0.014670994, -0.020893876, 0.015757734, 0.026987385, 0.009612476, 0.015046178, -0.01839696, 0.0003299033, -0.017103223, 0.03216234, -0.01646929, 0.0032181744, -0.011320212, -0.025033839, 0.000618973, -0.03270571, -0.0037453729, 0.013312569, 0.02913499, -0.0064428174, -0.0077494932, 0.031877715, 0.015641298, -0.014399309, 0.0004980893, -0.013176726, -0.021631308, 0.0009832412, 0.014502808, -0.022498112, 0.04877394, 0.013234944, 0.024218785, -0.015874172, 0.007607182, -0.0003988353, 0.014231123, -0.0182029, 0.020570442, 0.008965608, -0.013648941, -0.009146731, -0.009599539, 0.024218785, -0.011967081, 0.011346086, 0.010207596, -0.0065269107, -0.030583978, 0.0065269107, 0.01662454, -0.026094705, 0.013881814, -0.013312569, -0.01687035, 0.0033507827, -0.026651012, 0.007833586, -0.023481352, -0.027065009, -0.028358746, -0.007128499, -0.027686004, -0.012329328, -0.018332275, -0.025991205, -0.042977992, 0.007671869, 0.013299632, 0.0028947399, -0.015990607, -0.0078077116, -0.028332872, 0.006614238, 0.024956215, 0.011967081, -0.015421363, 0.003324908, -0.010304627, -0.024205847, -0.009981193, 0.02903149, 0.00025308758, -0.042822745, -0.0026004142, 0.0050229398, -0.002137903, 0.013868877, -0.011837707, -0.00040328252, -0.0031454016, -0.037984163, -0.006850345, -0.010298158, 0.012568669, 0.029393738, -0.015304926, 0.0046024746, 0.03423232, 0.012549263, 0.022679236, 0.023274355, 0.0025680708, 0.010511625, -0.015123802, -0.004977659, 0.013545441, -0.0077883056, 0.008726266, -0.0033281422, 0.022265239, -0.012872698, -0.00095332356, -0.011087338, 0.029600736, -0.0019017955, -0.005094095, -0.011514273, 0.029755985, -0.033870075, 0.009159668, -0.005210532, 0.013907689, 0.025253775, -0.007704213, -0.025745396, 0.0020344038, -0.022627486, 0.01641754, 0.010110566, -0.01687035, 0.028358746, -0.0054886853, -0.00026905717, 0.01063453, 0.011954144, 0.03635405, 0.0006104828, -0.015887108, 0.0037874193, 0.006649816, 0.020906813, 0.009787131, -0.011281399, -0.02804825, -0.0077624307, 5.4630127e-05, 0.006513973, -0.015279051, 0.0025179384, 0.008959139, -0.016404605, -0.0049841274, 0.0050714547, 0.020402256, 0.030972099, 0.022950921, 0.0077818367, 0.03244696, -0.0034963281, 0.00796296, 0.026288766, -0.02449047, 0.013726565, -0.008881515, -0.012374609, -0.024115285, 0.0058250576, 0.018086463, 0.0038359344, 0.032628085, -0.0063781305, 0.0040396983, 0.010906215, -0.0004334024, -0.0010632913, 0.016728038, -0.005912385, -0.0072578727, 0.008913858, -0.023287293, -0.014554557, 0.0029189973, -0.0059447284, -0.012853292, -0.008467519, 0.014774493, 0.0008178853, 0.017129097, 0.0022624251, -0.0077430247, -0.017090285, 0.018358149, 0.0336372, -0.0033895948, -0.02240755, 0.014308748, -0.0011603216, -0.014515745, -0.018422836, -0.018177025, 0.018513398, -0.017646592, 0.0072449353, 0.016326979, -0.0062519913, 0.024154097, -0.0005373058, 0.0018079996, -0.022886233, -0.001822554, -0.0007689658, 0.023222605, 0.005980306, -0.011139088, 0.00031231655, -0.027220257, -0.013855939, 0.016378729, 0.011857113, -0.016947974, -0.008364019, -0.006420177, -0.0251244, -0.023093231, -0.009871225, 0.004013824, 0.011223181, 0.013390193, 0.008053522, -0.019328453, -0.018358149, 0.023584852, 0.004159369, -0.021113811, -0.029238489, -0.011449586, -0.0014821391, 0.05852873, 0.009916506, -0.006306975, 0.017077347, -0.002411205, -0.0194837, -0.017737154, 0.012820948, -0.00930198, 0.010097628, 0.013196132, -0.007859461, -0.007587776, -0.009890631, -0.014748619, -0.0019406077, 0.0066821594, -0.009877693, 0.019328453, -0.007594245, -0.010472813, 0.0090820445, -0.0051523135, 0.02606883, -0.023390792, -0.011113213, 0.022394612, -0.014567495, 0.015123802, -0.01236814, -0.012161141, 0.016262293, -0.0058638696, -0.0024500173, -0.025706584, -0.01697385, -0.016107043, 0.008027648, 0.029238489, -0.0019001784, 0.027479006, 0.0066950964, 0.0009306831, -0.025603084, 0.000605227, 0.0065754256, -0.009974724, 0.02137256, 0.0066821594, -0.013687753, 8.136402e-05, -0.0019858885, -0.003997652, -0.0042984462, 0.0040526357, 9.975937e-05, -0.013273757, -0.024645718, 0.009366667, -0.01741372, -0.0038909183, 0.0034639847, 0.030816851, -0.0052364063, -0.03565543, -0.024063535, -0.0013940032, -0.011798895, -0.0080858655, -0.007794774, -0.0052816872, -0.015343738, -0.042072374, 0.012064111, 0.04719558, 0.024645718, 0.030532228, -0.0120511735, 0.0045442563, 0.01953545, 0.0043987106, -0.010375783, 0.0060223527, -0.006119383, -0.0105310315, -0.0052267034, 0.021036187, -0.012070579, -0.01434756, 0.027789501, 0.026198205, -0.0054304674, 0.02903149, -0.027737753, -0.007937086, -0.009263167, -0.0014675845, 0.02542196, -0.028074125, -0.012665699, 0.017012661, -0.019781262, 0.012588075, -0.035396684, -0.019781262, 0.01018819, -0.0041787755, -0.009418416, -0.03169659, 0.011171431, 0.0006618281, -0.020790378, -0.004023527, -0.014852118, 0.028876243, 0.01627523, -0.026159393, 0.012199954, -0.0047674263, -0.032032963, 0.009780663, -0.03542256, 0.026935635, 0.0014683931, -0.03679392, 0.005372249, 0.011928269, -0.009237292, 0.01890152, 0.008629235, 0.004744786, 0.01800884, -0.027789501, -0.014037062, -0.026935635, -0.007212592, 0.012555731, 0.009334323, -0.015097928, 0.014127624, -0.009935912, 0.019600138, -0.0029545752, -0.015072053, -0.011727739, -0.02631464, 0.011585428, -0.0010333736, 0.0063781305, 0.028229373, 0.01608117, 0.0050358768, -0.03596593, 0.017750092, -0.013073227, -0.019224953, -0.006164664, -0.016145855, 0.011449586, 0.013894751, 0.016042357, 0.0036192334, 0.0073225596, 0.005543669, -0.0065366137, 0.0056665745, 0.009017357, -0.0019470764, -0.027116759, -0.005669809, 0.011902394, 0.012083517, 0.015563673, 0.008933264, 0.01152721, 0.029212615, -0.005317265, 0.00062705885, -0.03482744, -0.026780386, 0.001640622, -0.016999723, -0.011734208, 0.0043696016, 0.0014303896, 0.013713628, 0.0067468463, -0.003897387, -0.015473112, -0.00925023, 0.029652486, -0.014632182, 0.044763353, -0.025344336, 0.014321685, -0.009127324, -0.038812153, -0.023106169, -0.0061873044, -0.020130571, 0.0059447284, 0.008376957, 0.0032197917, -0.02433522, 0.021980617, -0.0027799206, 0.018979143, -0.0007612842, -0.0071996544, -0.018177025, -0.03358545, -0.024050599, -0.022575736, -0.02869512, 0.016585726, -0.014412247, -0.03167072, 0.020454004, 0.0022769796, -0.007102624, -0.010479282, -0.009269636, 0.025163213, 0.013933564, 0.026237017, 0.013881814, -0.0050358768, -0.011714802, -0.022523986, -0.025913581, -0.017918278, 0.021424308, 0.022420488, 0.0047415514, 0.010472813, 0.0135066295, -0.0030499885, 0.012866229, -0.016003545, -0.0012161141, 0.013933564, 0.0068180016, -0.005026174, 0.00945076, -0.017504282, 0.023339042, -0.007950023, -0.008635704, 0.010291689, -0.0005227512, -0.021825368, -0.0012581607, -0.01844871, 0.035629556, 0.01687035, -0.011928269, 0.015744798, -0.016702164, -0.009554259, 0.0026699528, 0.0068891575, 0.035344936, 0.0009694953, 0.0055080913, 0.0076848064, 0.0074389963, -0.015563673, -0.00885564, 0.009431354, 0.029445488, -0.015550736, -0.0043598986, -0.0110355895, 0.020764502, 0.03032523, -0.01454162, 0.002259191, 0.0120252995, -0.01137843, 0.015162615, 0.020001197, -0.0037033265, -0.01741372, 0.0044601634, -0.03037698, 0.00420465, -0.026379328, -0.011714802, -0.00026663142, -0.03423232, 0.0016737741, 0.010265815, 0.024891527, 0.009515447, 0.0052331723, 0.0021136452, 0.028902117, -0.014114686, -0.0052752187, 0.0033895948, 0.01068628, 0.016753914, -0.016495166, 0.00413026, -0.0009694953, -0.041037384, 0.017517218, 0.010311096, -0.033119705, -0.0031890653, 0.022730986, -0.0038941528, 0.004773895, -0.016016481, -0.0038197627, 0.002102325, 0.0012056025, -0.012866229, 0.0041884785, -0.0056924494, -0.017995901, 0.015175552, 0.009683632, -0.0060126497, 0.00791768, 0.0048903315, -0.010252877, 0.012284047, -0.01513674, 0.0017708045, 0.0016066615, 0.018021777, -0.0014675845, -0.015990607, 0.011100276, -0.004366367, -0.008364019, -0.0014643503, 0.009192012, 0.008124677, 0.0036774515, 0.0144898705, -0.0039847144, 0.019651888, -0.03260221, -0.0073743095, -0.014231123, -0.034542818, -0.02641814, -0.020337569, -0.02547371, 0.007633057, -0.010666873, -0.028125875, 0.0021815666, -0.005795948, 0.008668047, -0.018384025, 0.0053690146, -0.0022478707, 0.008900921, -0.0019729512, -0.004476335, 0.026094705, 0.0038068255, -0.0029092943, -0.0078077116, 0.0048968, 0.006239054, -0.017271409, 0.0033863604, -0.0015597634, -0.008739203, -0.018733334, 0.018319337, 0.012109392, 0.011009715, -0.008972077, -0.020686878, 0.00727081, 0.004579834, 0.022562798, 0.02696151, 0.032886833, -0.012723918, -0.027686004, -0.02286036, -0.020466942, 0.014140561, -0.021657182, -0.007801243, 0.030635728, 0.009166137, -0.008829765, -0.031386096, -0.002327112, -0.004269337, 0.0055274977, 0.014231123, -0.00022559565, -0.011274931, 0.004026761, 0.016728038, -0.007044406, 0.0021055595, -0.005391655, -0.011785957, 0.00027896237, 0.008913858, 0.001550869, -0.0038003568, -0.014722744, -0.013338444, -0.016508102, -0.0012403717, -0.007341966, -0.02156662, -0.021087937, 0.024904465, 0.00939901, -0.015990607, 0.0026521639, -0.040778637, -0.020285819, -0.0004916206, -0.0066110035, 0.005158782, -0.030040607, -0.0050358768, 0.0011554701, -0.001466776, -0.018293463, -0.022562798, 0.003690389, 0.023623664, 0.012698043, 0.2370129, 0.008454581, 0.0027119992, 0.04199475, -0.008875046, 0.014205248, 0.027039135, 0.0049291435, 0.016443416, 0.023015607, -0.02750488, 0.0011109979, 0.009386073, 0.010938559, -0.011850644, -0.014554557, -0.01811234, -0.015304926, 0.01310557, 0.0023109403, 0.008021179, 9.2381015e-05, 0.0040041204, -0.021256123, 0.015304926, 0.021993553, -0.0022915343, -0.001701266, 0.019328453, 0.020259945, 0.005411061, -0.020945625, -0.008286395, -0.00024257596, -0.004456929, -0.0085710175, -0.0023869474, -0.0026521639, 0.0222523, 0.024813903, -0.0040688077, -0.0144769335, -0.020997375, 0.014127624, -0.006552785, -0.0051070326, -0.019858886, -0.012782136, 0.01687035, 0.0072449353, -0.017944153, -0.0072772787, 0.02324848, 0.023274355, -4.644319e-05, 0.0061711324, 0.02859162, -0.018138213, 0.00640724, 0.00865511, -0.006119383, 0.035267312, -0.020945625, 0.023636602, 0.010996777, -0.008344613, -0.002513087, -0.00048515192, 0.024425782, -0.012070579, 0.006300506, -0.0031421673, -0.0031648078, 0.015964733, 0.01760778, 0.007937086, 0.026832135, 0.010957965, 0.0095736645, 0.002344901, -0.010977371, -0.0075554326, -0.004421351, 0.028384622, 0.00058056513, -0.017180847, -0.0062455223, 0.008150552, 0.029419612, 0.009631883, 0.00390709, 0.0017643358, 0.0052008284, 0.017193785, 0.015317864, 0.022278177, 0.008422238, 0.00885564, -0.018992081, -0.0023060888, -0.029109115, -0.0115207415, 0.01879802, 0.002307706, -0.02696151, 0.011003246, 0.004211119, -0.021760682, 0.029238489, 0.0044860383, 0.004026761, -0.009192012, 0.008784484, 0.0013325507, 0.0059447284, -0.0029303175, 0.005158782, -0.031618968, -0.017245533, -0.0063231466, -0.008525737, -0.020738628, -0.010841528, -0.0013163789, -0.008234645, -0.025486648, -0.01562836, 0.013674815, 0.0073290286, -0.03780304, 0.0065107387, -0.012892104, 0.024451656, -0.0026861245, -0.0017109691, -0.0021314342, 0.013687753, -0.0080858655, 0.016857412, -0.012601012, 0.008519268, -0.008131146, 0.016546914, -0.0010738029, 0.0052267034, -0.011876519, 0.0044439915, -0.008480456, -0.014451059, -0.027530754, -0.01795709, -0.006219648, 0.0018662177, -0.021152625, 0.026094705, -0.012070579, -0.00045765997, 0.0020667473, 0.028436372, 0.01370069, -0.009463697, 0.0063393186, 0.013817127, -0.0021087937, -0.007503683, 0.0025858597, -0.16487403, 0.0057571363, 0.044219982, -0.03314558, -0.022045303, 0.00796296, 0.0095801335, 0.023558978, -0.014735681, 0.039640147, 0.00035961886, 0.011132619, -0.04572072, -0.0026020315, -0.010847997, 0.0036095304, -0.005391655, 0.019250829, -0.011578959, 0.006921501, 0.011443117, -0.018616896, 0.007037937, 0.014127624, -0.0037712476, -0.019431952, -0.02305442, 0.021644244, 0.01038872, -0.02300267, -0.009489572, -0.0003606296, 0.00051547395, 0.006400771, 0.009813006, 0.0034445787, 0.003968543, 0.0026295234, -0.013868877, 0.00059754547, -0.0077688997, 0.010802716, 0.017827716, 0.03348195, -0.0062778657, 0.020492818, 0.011986487, 0.0009039998, -0.01221936, -0.008933264, 0.009360198, -0.025137339, -0.0054045925, -0.002624672, 0.005540435, 0.02067394, 0.017103223, 0.01953545, 0.0009573665, -0.000321211, -0.008247583, -0.03834641, -0.011766551, -0.0025454303, 0.012406952, 0.009664226, 0.015887108, -0.0031551046, -0.017387845, 0.008985014, -0.00221391, -0.02088094, -0.0061226175, -0.019781262, 0.004903269, 0.011093807, 0.0030790975, -0.026094705, -0.011934738, -0.01009116, -0.002120114, 0.050171178, -0.017646592, 0.0125233885, -0.013674815, 0.01592592, 0.00041803924, 0.004560428, -0.027427256, 0.0015678493, 0.029109115, -0.010052348, 0.00846105, -0.02853987, 0.010744498, 0.0043501956, 0.0054498734, -0.00571509, 0.0004378496, 0.0018079996, -0.013674815, 0.010097628, -0.018862708, 0.021605432, 0.032860957, -0.00930198, -0.016339917, 0.018319337, 0.03749254, -0.005210532, -0.022174677, 0.010699217, 0.009819475, 0.020014133, 0.016184669, -0.005857401, 0.014877993, -0.0061452575, 0.024050599, 0.029471362, 0.04230525, -0.020518692, -0.015473112, 0.016314043, 0.0071802484, -0.016158793, -0.08569723, 0.003531906, -0.0037033265, 0.021346685, 0.0077106813, 0.028798617, 0.021631308, 0.035267312, 0.00687622, 0.01518849, -0.012232297, -0.011669521, -0.01608117, 0.009754788, 0.0008522502, -0.011391367, 0.01083506, -0.032576334, -0.04574659, 0.016145855, 0.000981624, -0.0030241136, 0.012801542, -0.0077300873, 0.006365193, -0.037673663, -0.038605157, 0.0110355895, 0.0035157343, 0.0034154695, 0.02349429, -0.027039135, -0.016986785, -0.013312569, -0.021708932, -0.0149814915, -0.021281999, -0.019263767, 0.011941206, -0.03961427, -0.008991483, 0.018306399, 0.0168186, -0.015563673, 0.015162615, -0.0058379946, -0.016197605, 0.012549263, -0.009386073, -0.022627486, 0.012665699, 0.0045054443, -0.008680985, -0.023416666, 0.026599264, -0.011734208, 0.008564549, 0.030144107, -0.013687753, 0.00895267, -0.0022656594, 0.028617496, -0.0004867691, 0.020945625, 0.0050100023, -0.026482826, -0.025680708, -0.0009444291, 0.009800069, -0.037259668, -0.036198802, -0.003531906, -0.0029384035, -0.013894751, -0.028902117, -0.008182895, -0.013648941, 0.016896224, -0.0016333448, -0.0054983883, -0.017530156, -0.022562798, 0.0057991827, 0.006064399, -0.001644665, 0.03555193, -0.031748343, -0.018772146, 0.0024144393, -0.0015686579, -0.0060417587, 0.019134391, 0.013124976, -0.016249355, -0.025098527, 0.018371087, -0.0025001497, 0.014670994, 0.02734963, -0.01890152, -0.022433424, 0.00079686206, -0.05387127, 0.019315515, -0.005165251, -0.013959438, -0.013429006, -0.0043437267, 0.005805651, -0.0063037407, -0.0067597837, 0.007193186, -0.008351082, 0.017866528, -0.010343439, 0.002391799, -0.0044957413, 0.0054789823, 0.009036764, 0.017504282, -0.0047577233, -0.00801471, -0.015537799, -0.0018338743, 0.017672468, 0.017737154, -0.029367864, 0.004773895, -0.008842702, 0.001822554, -0.022394612, -0.01370069, 0.03819116, -0.036923297, 0.0043404927, 0.04947256, -0.010653936, -0.039950643, -0.029859483, 0.030092357, 0.03423232, -0.040287014, -0.00791768, -0.025848895, 0.011456054, -0.024593968, 0.007982367, 0.031644844, -0.015641298, 0.006921501, 0.010673342, 0.0007115562, 0.022523986, 0.016883288, 0.0011045292, 0.0010754201, -0.010265815, -0.025797145, 0.02354604, -0.016055295, 0.029290238, -0.025745396, 0.011798895, 0.0055727786, 0.013312569, 0.008079397, 0.020686878, -0.011158494, 0.024865653, 0.0037680133, -0.0049905963, -0.014774493, 0.005753902, 0.010446938, 0.026780386, 0.016805662, 0.020363443, 0.002352987, 0.023468416, 0.0075101517, -0.016404605, 0.018138213, 0.019845948, -0.0027152337, -0.023313167, 0.014037062, 0.035836555, 0.0002749194, -0.036172926, 0.017750092, 0.010304627, 0.0036030617, -0.017504282, 0.0056762774, 0.008215239, 0.004615412, 0.008351082, 0.0041076196, -0.00472538, 0.01454162, -0.0036483426, 0.021100875, -0.015343738, -0.022769798, 0.0066821594, -0.02552546, -0.012969729, 0.005346374, -0.0050035333, -0.017970027, -0.0076395255, 0.003402532, 0.0042919773, 0.0011012949, 0.004139963, 0.007658932, 0.004589537, -0.006219648, -0.028953867, -0.023804788, -0.022472236, 0.015615423, 0.0015557205, 0.008972077, -0.005905916, 0.001896944, 0.0063748965, 0.01058278, 0.018189963, -0.011197306, 0.030532228, 0.02582302, 0.010479282, 0.0062455223, -0.0009436205, -0.0067015653, 0.001402089, -0.022718048, 0.0034898594, 0.011747145, -0.01276273, 0.06810239, 0.0030338168, -0.022601612, 0.03487919, -0.013726565, 0.033430204, 0.008441644, 0.009528384, -0.022032365, -0.009780663, -0.0017999136, 0.019548388, 0.011404305, -0.028850367, -0.02908324, -0.019224953, -0.024852715, 0.0059382594, -0.0004519999, -0.015253177, 0.018707458, -0.01725847, 0.007924148, 0.015059115, -0.022187615, -0.024115285, 0.0144898705, -0.0020360209, 0.0006181644, 0.0032214087, 0.021683056, -0.0045539592, -0.03293858, -0.0051070326, 0.014231123, -0.015822422, -0.011675989, -0.019199079, -0.008887983, -0.0038100597, 0.010828591, 0.027479006, -0.010155847, -0.008499862, 0.013196132, -0.014049999, -0.0034995626, 0.008661579, -0.0046024746], "object": "embedding", - "index": 0, - "embedding": [0.02230405, 0.008771547, 0.014554557, -0.011423711, -0.008448112, 0.015473112, 0.0068826885, -0.008881515, 0.004744786, -0.005595419, -0.016676288, 0.01731022, -0.017698342, 0.024891527, -0.0063878335, -0.0012743324, 0.031618968, 0.021294935, 0.013648941, -0.0046218806, -0.020337569, 0.025512522, -0.01429581, -0.001887241, -0.01562836, -0.008959139, 0.017374907, -0.008868577, -0.011934738, 0.006138789, 0.0034187038, -0.016792726, -0.012723918, -0.0168186, -0.016844476, 0.0169221, 0.010860935, 0.0039006216, 0.011591896, -0.014606307, 0.015718922, -0.0003416278, -0.00038286572, 0.00014958851, -0.0055177948, 0.007827118, -0.0011853878, 0.0067468463, -0.039355524, 0.01296326, -0.008124677, 0.0066562844, -0.012885635, -0.052706905, -0.026172329, 0.00087650784, 0.008674516, 0.01811234, -0.011714802, -0.0054789823, -0.0041917125, -0.0013471051, -0.014502808, 0.0060676336, -0.0006072485, -0.001574318, -0.0084093, 0.010860935, 0.017038535, -0.0021136452, 0.021424308, 0.028125875, 0.017581906, -0.00033576557, 0.029419612, -0.008752141, -0.020712754, -0.0023740102, 0.007109093, 0.00022701068, 0.0044892724, 0.0069279694, -0.03260221, 0.008758609, 0.018733334, 0.013441943, 0.0025923285, 0.018371087, -0.034594566, -0.0030613088, -0.013196132, 0.051439043, 0.030040607, -0.021760682, -0.012445764, 0.0054854513, -0.0074325274, 0.02478803, 0.0125169195, -0.013791252, 0.016119981, -0.015291989, -0.031308472, 0.005977072, -0.017129097, -0.023222605, 0.0037486071, 0.008480456, 0.032679833, -0.040105894, -0.03487919, 0.049187936, 0.039459024, -0.038449906, -0.021980617, -0.0070767496, 0.0012702894, -0.024141159, -0.037337292, 0.0070055937, -0.0022672766, 0.040468138, 0.017982965, -0.027530754, 0.04486685, -0.002137903, -0.026482826, -0.024503406, -0.024956215, 0.005016471, 0.010802716, 0.014929742, 0.013467818, 0.021243185, -0.008920327, 0.0013099102, -0.006513973, 0.024425782, -0.03793241, 0.00328933, 0.013545441, 0.006119383, -0.0047900667, -0.008059991, -0.0056406995, 0.030972099, 0.0048094727, -0.0027427257, -0.020402256, -0.0018662177, 0.005673043, -0.012717449, 0.023817725, 0.012827417, 0.0014692018, 0.016999723, -0.0019567795, 0.017827716, -0.044219982, 0.0069538443, -0.04931731, 0.0048968, 0.030402854, -0.005876807, 0.012342265, 0.028772743, 0.020686878, 0.0049744244, -0.010395189, 0.0075101517, -0.032576334, 0.027039135, -0.020466942, 0.03330083, 0.00044795693, 0.034930937, 0.007859461, -0.016158793, 0.003978246, 0.01157249, -0.0095930705, -0.0068438766, -0.008538674, -0.009146731, 0.0009783898, -0.017129097, 0.0017497813, -0.001466776, 0.024011785, -0.004550725, 0.01143018, 0.027763627, -0.015059115, -0.0069991252, -0.66901803, -0.032653958, 0.004961487, -0.0085904235, 0.0080988025, 0.013390193, 0.0239471, 0.028255248, -0.003522203, -0.016003545, 0.009386073, 0.007063812, 0.0042078844, -0.023934161, 0.0125233885, -0.021825368, -0.0053981235, 0.010893278, -0.00018577276, 0.0017788904, -0.008765078, 0.019108517, -0.0018112338, -0.00398148, 0.021411372, 0.022834484, 0.009638351, -0.016495166, -0.015020303, 0.012102923, -0.015304926, 0.011792426, 0.013099102, -0.023106169, 0.025447836, -0.003709795, -0.024555156, 0.028824493, 0.0054886853, 0.029962983, -0.028384622, -0.0021750978, 0.017323159, -0.02305442, -0.010666873, 0.010847997, 0.017568968, -0.00046129862, 0.046833333, -0.014024125, 0.012769199, -0.030014733, -0.015718922, 0.01844871, 0.018254649, 0.015990607, 0.046212338, 0.009858287, -0.008467519, 0.0031146754, -0.009987661, -0.018086463, 0.0013495309, 0.002897974, 0.007445465, 0.00079120195, -0.0252279, -0.023507228, -0.020104695, -0.022329926, -0.0035933587, 0.016158793, -0.03904503, 0.02423172, 0.0061064456, -0.010796247, 0.029911233, -0.007102624, -0.0024710405, -0.017206721, 0.002055427, -0.015123802, -0.02853987, -0.015123802, 0.01741372, -0.010472813, -0.014670994, -0.020893876, 0.015757734, 0.026987385, 0.009612476, 0.015046178, -0.01839696, 0.0003299033, -0.017103223, 0.03216234, -0.01646929, 0.0032181744, -0.011320212, -0.025033839, 0.000618973, -0.03270571, -0.0037453729, 0.013312569, 0.02913499, -0.0064428174, -0.0077494932, 0.031877715, 0.015641298, -0.014399309, 0.0004980893, -0.013176726, -0.021631308, 0.0009832412, 0.014502808, -0.022498112, 0.04877394, 0.013234944, 0.024218785, -0.015874172, 0.007607182, -0.0003988353, 0.014231123, -0.0182029, 0.020570442, 0.008965608, -0.013648941, -0.009146731, -0.009599539, 0.024218785, -0.011967081, 0.011346086, 0.010207596, -0.0065269107, -0.030583978, 0.0065269107, 0.01662454, -0.026094705, 0.013881814, -0.013312569, -0.01687035, 0.0033507827, -0.026651012, 0.007833586, -0.023481352, -0.027065009, -0.028358746, -0.007128499, -0.027686004, -0.012329328, -0.018332275, -0.025991205, -0.042977992, 0.007671869, 0.013299632, 0.0028947399, -0.015990607, -0.0078077116, -0.028332872, 0.006614238, 0.024956215, 0.011967081, -0.015421363, 0.003324908, -0.010304627, -0.024205847, -0.009981193, 0.02903149, 0.00025308758, -0.042822745, -0.0026004142, 0.0050229398, -0.002137903, 0.013868877, -0.011837707, -0.00040328252, -0.0031454016, -0.037984163, -0.006850345, -0.010298158, 0.012568669, 0.029393738, -0.015304926, 0.0046024746, 0.03423232, 0.012549263, 0.022679236, 0.023274355, 0.0025680708, 0.010511625, -0.015123802, -0.004977659, 0.013545441, -0.0077883056, 0.008726266, -0.0033281422, 0.022265239, -0.012872698, -0.00095332356, -0.011087338, 0.029600736, -0.0019017955, -0.005094095, -0.011514273, 0.029755985, -0.033870075, 0.009159668, -0.005210532, 0.013907689, 0.025253775, -0.007704213, -0.025745396, 0.0020344038, -0.022627486, 0.01641754, 0.010110566, -0.01687035, 0.028358746, -0.0054886853, -0.00026905717, 0.01063453, 0.011954144, 0.03635405, 0.0006104828, -0.015887108, 0.0037874193, 0.006649816, 0.020906813, 0.009787131, -0.011281399, -0.02804825, -0.0077624307, 5.4630127e-05, 0.006513973, -0.015279051, 0.0025179384, 0.008959139, -0.016404605, -0.0049841274, 0.0050714547, 0.020402256, 0.030972099, 0.022950921, 0.0077818367, 0.03244696, -0.0034963281, 0.00796296, 0.026288766, -0.02449047, 0.013726565, -0.008881515, -0.012374609, -0.024115285, 0.0058250576, 0.018086463, 0.0038359344, 0.032628085, -0.0063781305, 0.0040396983, 0.010906215, -0.0004334024, -0.0010632913, 0.016728038, -0.005912385, -0.0072578727, 0.008913858, -0.023287293, -0.014554557, 0.0029189973, -0.0059447284, -0.012853292, -0.008467519, 0.014774493, 0.0008178853, 0.017129097, 0.0022624251, -0.0077430247, -0.017090285, 0.018358149, 0.0336372, -0.0033895948, -0.02240755, 0.014308748, -0.0011603216, -0.014515745, -0.018422836, -0.018177025, 0.018513398, -0.017646592, 0.0072449353, 0.016326979, -0.0062519913, 0.024154097, -0.0005373058, 0.0018079996, -0.022886233, -0.001822554, -0.0007689658, 0.023222605, 0.005980306, -0.011139088, 0.00031231655, -0.027220257, -0.013855939, 0.016378729, 0.011857113, -0.016947974, -0.008364019, -0.006420177, -0.0251244, -0.023093231, -0.009871225, 0.004013824, 0.011223181, 0.013390193, 0.008053522, -0.019328453, -0.018358149, 0.023584852, 0.004159369, -0.021113811, -0.029238489, -0.011449586, -0.0014821391, 0.05852873, 0.009916506, -0.006306975, 0.017077347, -0.002411205, -0.0194837, -0.017737154, 0.012820948, -0.00930198, 0.010097628, 0.013196132, -0.007859461, -0.007587776, -0.009890631, -0.014748619, -0.0019406077, 0.0066821594, -0.009877693, 0.019328453, -0.007594245, -0.010472813, 0.0090820445, -0.0051523135, 0.02606883, -0.023390792, -0.011113213, 0.022394612, -0.014567495, 0.015123802, -0.01236814, -0.012161141, 0.016262293, -0.0058638696, -0.0024500173, -0.025706584, -0.01697385, -0.016107043, 0.008027648, 0.029238489, -0.0019001784, 0.027479006, 0.0066950964, 0.0009306831, -0.025603084, 0.000605227, 0.0065754256, -0.009974724, 0.02137256, 0.0066821594, -0.013687753, 8.136402e-05, -0.0019858885, -0.003997652, -0.0042984462, 0.0040526357, 9.975937e-05, -0.013273757, -0.024645718, 0.009366667, -0.01741372, -0.0038909183, 0.0034639847, 0.030816851, -0.0052364063, -0.03565543, -0.024063535, -0.0013940032, -0.011798895, -0.0080858655, -0.007794774, -0.0052816872, -0.015343738, -0.042072374, 0.012064111, 0.04719558, 0.024645718, 0.030532228, -0.0120511735, 0.0045442563, 0.01953545, 0.0043987106, -0.010375783, 0.0060223527, -0.006119383, -0.0105310315, -0.0052267034, 0.021036187, -0.012070579, -0.01434756, 0.027789501, 0.026198205, -0.0054304674, 0.02903149, -0.027737753, -0.007937086, -0.009263167, -0.0014675845, 0.02542196, -0.028074125, -0.012665699, 0.017012661, -0.019781262, 0.012588075, -0.035396684, -0.019781262, 0.01018819, -0.0041787755, -0.009418416, -0.03169659, 0.011171431, 0.0006618281, -0.020790378, -0.004023527, -0.014852118, 0.028876243, 0.01627523, -0.026159393, 0.012199954, -0.0047674263, -0.032032963, 0.009780663, -0.03542256, 0.026935635, 0.0014683931, -0.03679392, 0.005372249, 0.011928269, -0.009237292, 0.01890152, 0.008629235, 0.004744786, 0.01800884, -0.027789501, -0.014037062, -0.026935635, -0.007212592, 0.012555731, 0.009334323, -0.015097928, 0.014127624, -0.009935912, 0.019600138, -0.0029545752, -0.015072053, -0.011727739, -0.02631464, 0.011585428, -0.0010333736, 0.0063781305, 0.028229373, 0.01608117, 0.0050358768, -0.03596593, 0.017750092, -0.013073227, -0.019224953, -0.006164664, -0.016145855, 0.011449586, 0.013894751, 0.016042357, 0.0036192334, 0.0073225596, 0.005543669, -0.0065366137, 0.0056665745, 0.009017357, -0.0019470764, -0.027116759, -0.005669809, 0.011902394, 0.012083517, 0.015563673, 0.008933264, 0.01152721, 0.029212615, -0.005317265, 0.00062705885, -0.03482744, -0.026780386, 0.001640622, -0.016999723, -0.011734208, 0.0043696016, 0.0014303896, 0.013713628, 0.0067468463, -0.003897387, -0.015473112, -0.00925023, 0.029652486, -0.014632182, 0.044763353, -0.025344336, 0.014321685, -0.009127324, -0.038812153, -0.023106169, -0.0061873044, -0.020130571, 0.0059447284, 0.008376957, 0.0032197917, -0.02433522, 0.021980617, -0.0027799206, 0.018979143, -0.0007612842, -0.0071996544, -0.018177025, -0.03358545, -0.024050599, -0.022575736, -0.02869512, 0.016585726, -0.014412247, -0.03167072, 0.020454004, 0.0022769796, -0.007102624, -0.010479282, -0.009269636, 0.025163213, 0.013933564, 0.026237017, 0.013881814, -0.0050358768, -0.011714802, -0.022523986, -0.025913581, -0.017918278, 0.021424308, 0.022420488, 0.0047415514, 0.010472813, 0.0135066295, -0.0030499885, 0.012866229, -0.016003545, -0.0012161141, 0.013933564, 0.0068180016, -0.005026174, 0.00945076, -0.017504282, 0.023339042, -0.007950023, -0.008635704, 0.010291689, -0.0005227512, -0.021825368, -0.0012581607, -0.01844871, 0.035629556, 0.01687035, -0.011928269, 0.015744798, -0.016702164, -0.009554259, 0.0026699528, 0.0068891575, 0.035344936, 0.0009694953, 0.0055080913, 0.0076848064, 0.0074389963, -0.015563673, -0.00885564, 0.009431354, 0.029445488, -0.015550736, -0.0043598986, -0.0110355895, 0.020764502, 0.03032523, -0.01454162, 0.002259191, 0.0120252995, -0.01137843, 0.015162615, 0.020001197, -0.0037033265, -0.01741372, 0.0044601634, -0.03037698, 0.00420465, -0.026379328, -0.011714802, -0.00026663142, -0.03423232, 0.0016737741, 0.010265815, 0.024891527, 0.009515447, 0.0052331723, 0.0021136452, 0.028902117, -0.014114686, -0.0052752187, 0.0033895948, 0.01068628, 0.016753914, -0.016495166, 0.00413026, -0.0009694953, -0.041037384, 0.017517218, 0.010311096, -0.033119705, -0.0031890653, 0.022730986, -0.0038941528, 0.004773895, -0.016016481, -0.0038197627, 0.002102325, 0.0012056025, -0.012866229, 0.0041884785, -0.0056924494, -0.017995901, 0.015175552, 0.009683632, -0.0060126497, 0.00791768, 0.0048903315, -0.010252877, 0.012284047, -0.01513674, 0.0017708045, 0.0016066615, 0.018021777, -0.0014675845, -0.015990607, 0.011100276, -0.004366367, -0.008364019, -0.0014643503, 0.009192012, 0.008124677, 0.0036774515, 0.0144898705, -0.0039847144, 0.019651888, -0.03260221, -0.0073743095, -0.014231123, -0.034542818, -0.02641814, -0.020337569, -0.02547371, 0.007633057, -0.010666873, -0.028125875, 0.0021815666, -0.005795948, 0.008668047, -0.018384025, 0.0053690146, -0.0022478707, 0.008900921, -0.0019729512, -0.004476335, 0.026094705, 0.0038068255, -0.0029092943, -0.0078077116, 0.0048968, 0.006239054, -0.017271409, 0.0033863604, -0.0015597634, -0.008739203, -0.018733334, 0.018319337, 0.012109392, 0.011009715, -0.008972077, -0.020686878, 0.00727081, 0.004579834, 0.022562798, 0.02696151, 0.032886833, -0.012723918, -0.027686004, -0.02286036, -0.020466942, 0.014140561, -0.021657182, -0.007801243, 0.030635728, 0.009166137, -0.008829765, -0.031386096, -0.002327112, -0.004269337, 0.0055274977, 0.014231123, -0.00022559565, -0.011274931, 0.004026761, 0.016728038, -0.007044406, 0.0021055595, -0.005391655, -0.011785957, 0.00027896237, 0.008913858, 0.001550869, -0.0038003568, -0.014722744, -0.013338444, -0.016508102, -0.0012403717, -0.007341966, -0.02156662, -0.021087937, 0.024904465, 0.00939901, -0.015990607, 0.0026521639, -0.040778637, -0.020285819, -0.0004916206, -0.0066110035, 0.005158782, -0.030040607, -0.0050358768, 0.0011554701, -0.001466776, -0.018293463, -0.022562798, 0.003690389, 0.023623664, 0.012698043, 0.2370129, 0.008454581, 0.0027119992, 0.04199475, -0.008875046, 0.014205248, 0.027039135, 0.0049291435, 0.016443416, 0.023015607, -0.02750488, 0.0011109979, 0.009386073, 0.010938559, -0.011850644, -0.014554557, -0.01811234, -0.015304926, 0.01310557, 0.0023109403, 0.008021179, 9.2381015e-05, 0.0040041204, -0.021256123, 0.015304926, 0.021993553, -0.0022915343, -0.001701266, 0.019328453, 0.020259945, 0.005411061, -0.020945625, -0.008286395, -0.00024257596, -0.004456929, -0.0085710175, -0.0023869474, -0.0026521639, 0.0222523, 0.024813903, -0.0040688077, -0.0144769335, -0.020997375, 0.014127624, -0.006552785, -0.0051070326, -0.019858886, -0.012782136, 0.01687035, 0.0072449353, -0.017944153, -0.0072772787, 0.02324848, 0.023274355, -4.644319e-05, 0.0061711324, 0.02859162, -0.018138213, 0.00640724, 0.00865511, -0.006119383, 0.035267312, -0.020945625, 0.023636602, 0.010996777, -0.008344613, -0.002513087, -0.00048515192, 0.024425782, -0.012070579, 0.006300506, -0.0031421673, -0.0031648078, 0.015964733, 0.01760778, 0.007937086, 0.026832135, 0.010957965, 0.0095736645, 0.002344901, -0.010977371, -0.0075554326, -0.004421351, 0.028384622, 0.00058056513, -0.017180847, -0.0062455223, 0.008150552, 0.029419612, 0.009631883, 0.00390709, 0.0017643358, 0.0052008284, 0.017193785, 0.015317864, 0.022278177, 0.008422238, 0.00885564, -0.018992081, -0.0023060888, -0.029109115, -0.0115207415, 0.01879802, 0.002307706, -0.02696151, 0.011003246, 0.004211119, -0.021760682, 0.029238489, 0.0044860383, 0.004026761, -0.009192012, 0.008784484, 0.0013325507, 0.0059447284, -0.0029303175, 0.005158782, -0.031618968, -0.017245533, -0.0063231466, -0.008525737, -0.020738628, -0.010841528, -0.0013163789, -0.008234645, -0.025486648, -0.01562836, 0.013674815, 0.0073290286, -0.03780304, 0.0065107387, -0.012892104, 0.024451656, -0.0026861245, -0.0017109691, -0.0021314342, 0.013687753, -0.0080858655, 0.016857412, -0.012601012, 0.008519268, -0.008131146, 0.016546914, -0.0010738029, 0.0052267034, -0.011876519, 0.0044439915, -0.008480456, -0.014451059, -0.027530754, -0.01795709, -0.006219648, 0.0018662177, -0.021152625, 0.026094705, -0.012070579, -0.00045765997, 0.0020667473, 0.028436372, 0.01370069, -0.009463697, 0.0063393186, 0.013817127, -0.0021087937, -0.007503683, 0.0025858597, -0.16487403, 0.0057571363, 0.044219982, -0.03314558, -0.022045303, 0.00796296, 0.0095801335, 0.023558978, -0.014735681, 0.039640147, 0.00035961886, 0.011132619, -0.04572072, -0.0026020315, -0.010847997, 0.0036095304, -0.005391655, 0.019250829, -0.011578959, 0.006921501, 0.011443117, -0.018616896, 0.007037937, 0.014127624, -0.0037712476, -0.019431952, -0.02305442, 0.021644244, 0.01038872, -0.02300267, -0.009489572, -0.0003606296, 0.00051547395, 0.006400771, 0.009813006, 0.0034445787, 0.003968543, 0.0026295234, -0.013868877, 0.00059754547, -0.0077688997, 0.010802716, 0.017827716, 0.03348195, -0.0062778657, 0.020492818, 0.011986487, 0.0009039998, -0.01221936, -0.008933264, 0.009360198, -0.025137339, -0.0054045925, -0.002624672, 0.005540435, 0.02067394, 0.017103223, 0.01953545, 0.0009573665, -0.000321211, -0.008247583, -0.03834641, -0.011766551, -0.0025454303, 0.012406952, 0.009664226, 0.015887108, -0.0031551046, -0.017387845, 0.008985014, -0.00221391, -0.02088094, -0.0061226175, -0.019781262, 0.004903269, 0.011093807, 0.0030790975, -0.026094705, -0.011934738, -0.01009116, -0.002120114, 0.050171178, -0.017646592, 0.0125233885, -0.013674815, 0.01592592, 0.00041803924, 0.004560428, -0.027427256, 0.0015678493, 0.029109115, -0.010052348, 0.00846105, -0.02853987, 0.010744498, 0.0043501956, 0.0054498734, -0.00571509, 0.0004378496, 0.0018079996, -0.013674815, 0.010097628, -0.018862708, 0.021605432, 0.032860957, -0.00930198, -0.016339917, 0.018319337, 0.03749254, -0.005210532, -0.022174677, 0.010699217, 0.009819475, 0.020014133, 0.016184669, -0.005857401, 0.014877993, -0.0061452575, 0.024050599, 0.029471362, 0.04230525, -0.020518692, -0.015473112, 0.016314043, 0.0071802484, -0.016158793, -0.08569723, 0.003531906, -0.0037033265, 0.021346685, 0.0077106813, 0.028798617, 0.021631308, 0.035267312, 0.00687622, 0.01518849, -0.012232297, -0.011669521, -0.01608117, 0.009754788, 0.0008522502, -0.011391367, 0.01083506, -0.032576334, -0.04574659, 0.016145855, 0.000981624, -0.0030241136, 0.012801542, -0.0077300873, 0.006365193, -0.037673663, -0.038605157, 0.0110355895, 0.0035157343, 0.0034154695, 0.02349429, -0.027039135, -0.016986785, -0.013312569, -0.021708932, -0.0149814915, -0.021281999, -0.019263767, 0.011941206, -0.03961427, -0.008991483, 0.018306399, 0.0168186, -0.015563673, 0.015162615, -0.0058379946, -0.016197605, 0.012549263, -0.009386073, -0.022627486, 0.012665699, 0.0045054443, -0.008680985, -0.023416666, 0.026599264, -0.011734208, 0.008564549, 0.030144107, -0.013687753, 0.00895267, -0.0022656594, 0.028617496, -0.0004867691, 0.020945625, 0.0050100023, -0.026482826, -0.025680708, -0.0009444291, 0.009800069, -0.037259668, -0.036198802, -0.003531906, -0.0029384035, -0.013894751, -0.028902117, -0.008182895, -0.013648941, 0.016896224, -0.0016333448, -0.0054983883, -0.017530156, -0.022562798, 0.0057991827, 0.006064399, -0.001644665, 0.03555193, -0.031748343, -0.018772146, 0.0024144393, -0.0015686579, -0.0060417587, 0.019134391, 0.013124976, -0.016249355, -0.025098527, 0.018371087, -0.0025001497, 0.014670994, 0.02734963, -0.01890152, -0.022433424, 0.00079686206, -0.05387127, 0.019315515, -0.005165251, -0.013959438, -0.013429006, -0.0043437267, 0.005805651, -0.0063037407, -0.0067597837, 0.007193186, -0.008351082, 0.017866528, -0.010343439, 0.002391799, -0.0044957413, 0.0054789823, 0.009036764, 0.017504282, -0.0047577233, -0.00801471, -0.015537799, -0.0018338743, 0.017672468, 0.017737154, -0.029367864, 0.004773895, -0.008842702, 0.001822554, -0.022394612, -0.01370069, 0.03819116, -0.036923297, 0.0043404927, 0.04947256, -0.010653936, -0.039950643, -0.029859483, 0.030092357, 0.03423232, -0.040287014, -0.00791768, -0.025848895, 0.011456054, -0.024593968, 0.007982367, 0.031644844, -0.015641298, 0.006921501, 0.010673342, 0.0007115562, 0.022523986, 0.016883288, 0.0011045292, 0.0010754201, -0.010265815, -0.025797145, 0.02354604, -0.016055295, 0.029290238, -0.025745396, 0.011798895, 0.0055727786, 0.013312569, 0.008079397, 0.020686878, -0.011158494, 0.024865653, 0.0037680133, -0.0049905963, -0.014774493, 0.005753902, 0.010446938, 0.026780386, 0.016805662, 0.020363443, 0.002352987, 0.023468416, 0.0075101517, -0.016404605, 0.018138213, 0.019845948, -0.0027152337, -0.023313167, 0.014037062, 0.035836555, 0.0002749194, -0.036172926, 0.017750092, 0.010304627, 0.0036030617, -0.017504282, 0.0056762774, 0.008215239, 0.004615412, 0.008351082, 0.0041076196, -0.00472538, 0.01454162, -0.0036483426, 0.021100875, -0.015343738, -0.022769798, 0.0066821594, -0.02552546, -0.012969729, 0.005346374, -0.0050035333, -0.017970027, -0.0076395255, 0.003402532, 0.0042919773, 0.0011012949, 0.004139963, 0.007658932, 0.004589537, -0.006219648, -0.028953867, -0.023804788, -0.022472236, 0.015615423, 0.0015557205, 0.008972077, -0.005905916, 0.001896944, 0.0063748965, 0.01058278, 0.018189963, -0.011197306, 0.030532228, 0.02582302, 0.010479282, 0.0062455223, -0.0009436205, -0.0067015653, 0.001402089, -0.022718048, 0.0034898594, 0.011747145, -0.01276273, 0.06810239, 0.0030338168, -0.022601612, 0.03487919, -0.013726565, 0.033430204, 0.008441644, 0.009528384, -0.022032365, -0.009780663, -0.0017999136, 0.019548388, 0.011404305, -0.028850367, -0.02908324, -0.019224953, -0.024852715, 0.0059382594, -0.0004519999, -0.015253177, 0.018707458, -0.01725847, 0.007924148, 0.015059115, -0.022187615, -0.024115285, 0.0144898705, -0.0020360209, 0.0006181644, 0.0032214087, 0.021683056, -0.0045539592, -0.03293858, -0.0051070326, 0.014231123, -0.015822422, -0.011675989, -0.019199079, -0.008887983, -0.0038100597, 0.010828591, 0.027479006, -0.010155847, -0.008499862, 0.013196132, -0.014049999, -0.0034995626, 0.008661579, -0.0046024746] + "index": 0 } ], - "model": "text-embedding-ada-002-v2", - "usage": { - "prompt_tokens": 9, - "total_tokens": 9 - } -}823 1735 + "model": "text-embedding-ada-002-v2" +}823 1744 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -116,48 +120,48 @@ Authorization: Bearer test-api-key Content-Type: application/json {"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003ein sitting room, the color of the lamp beside the desk is purple.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003esitting room\u003c/kv\u003e\n\n\u003ckv key=\"square_feet\"\u003e400\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What color is the lamp in each room?\nHelpful Answer:"}]}HTTP/2.0 200 OK -Content-Length: 936 +Content-Length: 919 Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Thu, 22 Jan 2026 20:04:34 GMT +Date: Mon, 21 Sep 2026 07:48:13 GMT Openai-Organization: lcgo-tst -Openai-Processing-Ms: 405 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 436 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload X-Content-Type-Options: nosniff -X-Envoy-Upstream-Service-Time: 426 X-Openai-Proxy-Wasm: v0.1 X-Ratelimit-Limit-Requests: 30000 X-Ratelimit-Limit-Tokens: 150000000 X-Ratelimit-Remaining-Requests: 29999 -X-Ratelimit-Remaining-Tokens: 149999890 +X-Ratelimit-Remaining-Tokens: 149999887 X-Ratelimit-Reset-Requests: 2ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_f0fa9acfeaaf4594a6e18641af8b4622 +X-Request-Id: req_0c518a26b8364e9a8eb31798f476f85b { - "object": "chat.completion", - "created": 1769112274, - "model": "gpt-4.1-nano-2025-04-14", "choices": [ { - "logprobs": null, - "finish_reason": "stop", "index": 0, "message": { - "annotations": [], "role": "assistant", - "content": "The lamp beside the desk in the sitting room is purple. The information does not specify the color of any lamps in other rooms.", - "refusal": null - } + "content": "The lamp beside the desk in the sitting room is purple. The color of the lamp in other rooms is not specified.", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" } ], "usage": { - "total_tokens": 139, + "prompt_tokens": 113, + "completion_tokens": 24, + "total_tokens": 137, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 @@ -167,11 +171,12 @@ X-Request-Id: req_f0fa9acfeaaf4594a6e18641af8b4622 "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 - }, - "prompt_tokens": 113, - "completion_tokens": 26 + } }, "service_tier": "default", - "system_fingerprint": "fp_7f8eb7d1f9", - "id": "chatcmpl-D0vCs9SmMD5hRmNnR626pXbP6twgc" + "system_fingerprint": "fp_55df626f50", + "id": "chatcmpl-EQT2y8noqBAemUENIaOxkBLnqlYqr", + "object": "chat.completion", + "created": 1789976892, + "model": "gpt-4.1-nano-2025-04-14" } \ No newline at end of file diff --git a/vectorstores/pgvector/testdata/TestPgvectorAsRetrieverWithScoreThreshold.httprr b/vectorstores/pgvector/testdata/TestPgvectorAsRetrieverWithScoreThreshold.httprr index 39b00f61a..9beea5155 100644 --- a/vectorstores/pgvector/testdata/TestPgvectorAsRetrieverWithScoreThreshold.httprr +++ b/vectorstores/pgvector/testdata/TestPgvectorAsRetrieverWithScoreThreshold.httprr @@ -1,5 +1,5 @@ httprr trace v1 -441 106539 +441 106590 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -11,20 +11,22 @@ Content-Type: application/json Content-Length: 105633 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Thu, 22 Jan 2026 20:04:16 GMT +Date: Mon, 21 Sep 2026 07:48:00 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst -Openai-Processing-Ms: 43 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 157 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload -Via: envoy-router-76f6979656-n29nx +Via: envoy-router-7d5f5f44cf-kcjq7 X-Content-Type-Options: nosniff -X-Envoy-Upstream-Service-Time: 175 +X-Engine-Geography: EU X-Openai-Proxy-Wasm: v0.1 X-Ratelimit-Limit-Requests: 10000 X-Ratelimit-Limit-Tokens: 10000000 @@ -32,7 +34,7 @@ X-Ratelimit-Remaining-Requests: 9999 X-Ratelimit-Remaining-Tokens: 9999954 X-Ratelimit-Reset-Requests: 6ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_058307448e324bc3958c7da418e46690 +X-Request-Id: req_6a5d3b7d1f8f44799d6223d910c166d6 { "usage": { @@ -57,9 +59,9 @@ X-Request-Id: req_058307448e324bc3958c7da418e46690 "embedding": [0.013982197, -0.018476475, -0.005729884, -0.023803027, 0.0031706425, 0.009507126, -0.044174526, -0.0043758387, 0.01791309, -0.02065319, 0.010851568, 0.010934795, -0.016222933, 0.019359965, -0.024520062, -0.0053873714, 0.03178005, -0.0010819557, 0.010729928, -0.022381758, -0.045480553, 0.0045486954, -0.020665996, 0.017695418, -0.016619865, 0.0010731529, 0.015685158, -0.015185793, 0.026453499, 0.010755536, 0.02481456, -0.012765798, 0.017285684, -0.037337076, -0.040947862, 0.017093621, -0.0021639115, 0.010064109, -0.0013468429, -0.020627582, 0.008495593, 0.0055666305, -0.003665205, -0.0038092525, -0.007996229, 0.013559658, 0.013918176, 0.010256172, -0.008854112, 0.010320193, -0.0048271874, 0.030858146, -0.0041229557, -0.0043150187, 0.01831002, -0.025621224, -0.00086028286, 0.01782346, -0.020947687, -0.016709493, 0.012714581, -0.0020694805, 0.005134488, -0.0097312, -0.0075928965, 0.010204955, -0.0059027406, -0.004638325, -0.0038860778, 0.0057522915, 0.02932164, 0.029372858, 0.00069662905, 0.0151473805, 0.0032106556, 0.013726113, -0.0042541986, -0.0020390705, -0.0048303884, -0.017503355, 0.0042894105, -0.012977066, -0.026171805, -0.0008050647, 0.027196143, 0.011869502, -0.002901754, 0.0011355734, -0.031088622, -0.012035958, -0.005256128, 0.029424075, 0.032471478, -0.0012075971, -0.013598071, 0.016427802, 0.022368954, 0.020000177, 0.005729884, -0.029065557, 0.0048976103, 0.014545582, -0.03836141, 0.0026472704, -0.036824908, -0.015531506, 0.015557115, -0.012573734, 0.027477834, -0.03211296, -0.020269064, 0.0089885555, 0.011082044, -0.020461127, -0.0070487177, -0.020025784, 0.017157642, -0.0084315725, -0.017861873, -0.015697962, 0.014558387, 0.037337076, 0.016824732, -0.023226837, 0.027247358, 0.0114149535, -0.01256093, -0.013329183, 0.0060243807, -0.0002958973, 0.011037229, 0.007829774, 0.01009612, 0.017554572, -0.0070295115, 0.010179347, -0.009058978, 0.03157518, 0.007855383, -0.029961852, 0.01523701, 0.02834852, -0.0064757294, -0.0077337427, -0.004628722, 0.030550845, 0.02025626, -0.016466213, 0.0021383031, 0.00906538, 0.0049616313, -0.024507258, 0.019897742, 0.013546854, 0.022983557, 0.0033098883, -0.011645429, -0.0093662795, -0.020115415, -0.016094891, -0.0067926333, 0.0061332164, 0.028655821, 0.002460009, 0.030730104, 0.019718483, 0.009711993, 0.019001449, 0.0012700176, 0.0035115546, -0.001566115, 0.035877395, -0.010569875, 0.014929709, 0.0047215526, 0.010544267, 0.012048761, 0.003950099, -0.014251086, 0.0031978514, -0.019001449, -0.0023671784, 0.013406008, 0.005432186, 0.0010955603, -0.009756808, 0.010441833, -0.020858059, 0.012208814, -0.013149924, 0.014609603, 0.018348433, 0.0051024775, -0.01654304, -0.6912225, -0.040282045, 0.0114789745, -0.0017381716, 0.0023895856, 0.03779803, 0.005845122, 0.012580137, 0.0074264416, -0.026069371, 0.0063572903, 0.008860514, 0.013092305, -0.0029545715, 0.007080728, -0.030192327, -0.0099872835, 0.015749179, -0.0035819777, 0.014327911, -0.009071783, -0.004180575, -0.028655821, -0.0047919755, 0.020153826, 0.018258803, 0.010998816, -0.0097376015, -0.0056914715, 0.020691603, -0.0045358916, -0.0046095154, -0.017951502, -0.020128218, 0.038335804, 0.0019030257, -0.015172989, 0.008194694, -0.008041044, 0.025185881, -0.0027897172, 0.015774786, -0.0015805197, -0.014686429, -0.010627494, -0.005720281, 0.0057010744, -0.0014436747, 0.033214122, -0.00071423483, 0.020819645, 0.003068209, 0.023700593, -0.005480202, 0.0148400795, -0.0010651503, 0.030192327, 0.0151473805, 0.0063092746, -0.007195966, -0.019564833, 0.012733787, -0.029577725, -0.009654375, -0.012516115, 0.00413576, -0.032164175, -0.017631397, -0.0015269021, -0.0019542426, 0.006078799, 0.007458452, -0.011178075, 0.029859418, 0.01651743, 0.0022791494, 0.026120588, -0.01788748, 0.021395834, 0.012554528, 0.0018069941, 0.003918088, -0.017324096, -0.009142206, 0.027759528, -0.021254988, -0.029526507, -0.02131901, 0.019475203, -0.011395747, 0.033956766, 0.019641658, 0.00074744574, -0.0029673756, -0.006274063, 0.014635212, -0.014443149, 0.0005897939, 0.0031306294, -0.0058003073, 0.014468757, -0.035288405, -0.0016821531, -0.0015725171, 0.039846703, 0.0045230873, -0.026146198, 0.033470206, 0.019808114, -0.017503355, 0.019180706, -0.011747863, -0.0246353, 0.0062484546, 0.0101729445, -0.024750538, 0.046223197, 0.009084587, 0.011594213, -0.003205854, 0.009379084, 0.0065525547, -0.00052177155, -0.014622408, 0.0006009976, -0.004820785, 0.00044174524, -0.016107697, -0.027913177, -0.0037356282, 0.015531506, -0.009475116, 0.009968078, 0.0053809695, 0.0030345977, -0.003841263, 0.005976365, -0.017938698, 0.02578768, -0.029961852, -0.025736462, -0.01073633, -0.013879764, -0.013585267, -0.00032290618, -0.009103794, -0.03093497, -0.0077721556, -0.019231923, 0.021447051, -0.033700682, -0.021639114, -0.017144836, 0.0021879193, -0.006405306, -0.0040877443, -0.022817103, 0.003543565, -0.0017749836, 0.02530112, 0.008457181, 0.003469941, -0.01548029, -0.00013364395, -0.00906538, -0.040077176, -0.009411095, 0.037337076, -0.014481561, -0.022343347, -0.006213243, -0.002821728, 0.0007470456, -0.023700593, -0.024891384, -0.011773471, -0.025749266, -0.023303661, 0.00018245999, -0.016248543, 0.014929709, 0.010268976, 0.005598641, -0.01921912, 0.035288405, -0.0067862314, 0.019795308, 0.03567253, -0.0020822845, 0.01937277, -0.008405964, -0.0072791935, -0.007925806, -0.011382943, 0.016094891, -0.0023031572, -0.0036524008, 0.006181232, 0.0006033984, -0.00037952478, 0.013559658, -0.0044174525, 0.019078273, -0.02040991, 0.01970568, -0.013265162, 0.01256093, -0.002040671, 0.015505899, 0.03613348, 0.002983381, -0.02259943, 0.0027513045, 0.0018566104, 0.017785048, -0.00103394, -0.012330454, 0.0147120375, -0.010864372, -0.014699233, -0.005419382, 0.0085532125, 0.043841615, -0.012746591, -0.014558387, -0.013341987, 0.03925771, 0.011357334, 0.0023879851, -0.008137075, -0.028758256, -0.0025624426, -0.01243929, 0.00018986243, -0.016824732, -0.0049168165, 0.00927665, -0.03129349, 0.014430345, 0.011440562, 0.010640299, 0.0422795, 0.032036133, -0.017925894, 0.022548214, -0.020448323, 0.026299847, 0.015621136, -0.0206788, 0.01426389, -0.018911818, -0.010185749, -0.017644202, 0.015672352, 0.022676256, 0.0028569393, 0.039488185, 0.003354703, 0.0270681, 0.01749055, -0.016389389, -0.011101251, 0.01475045, -0.017349705, 0.003841263, -0.0040557333, -0.008700461, 0.021639114, -0.007311204, -0.013393204, -0.004823986, 0.00094911206, 0.016978383, -0.003908485, 0.0018149968, -0.022215305, -0.011626223, 0.0031338304, 0.022164088, 0.010845166, 0.00095231313, -0.021088533, 0.009199825, 0.012087175, 0.0089885555, -0.021178164, -0.025646832, 0.021459855, -0.0062452536, 0.011216488, 0.023162816, 0.023777418, 0.01402061, 0.003482745, -0.0008050647, -0.02536514, 0.0047759702, -0.010134532, 0.0033995179, -0.002375181, -0.00939829, -0.015685158, -0.026555931, 0.0016949573, 0.0011403749, 0.027733918, -0.009468714, 0.006837448, -0.02609498, -0.011421355, 0.008745275, -0.0058131116, 0.0014132647, 0.0032490683, -0.019027056, -0.0012388073, -0.029065557, -0.010550669, 0.024788952, 0.022061653, 0.016875949, -0.01928314, -0.01158781, -0.0032490683, 0.0684257, 0.0055826358, -0.009161413, 0.010717124, 0.010192151, -0.016005263, -0.016261347, 0.0043182196, -0.00802824, -0.0028265293, 0.0020038588, 0.0015381058, 0.007375225, 0.0064149094, -0.00031870478, -0.014724841, 0.008706863, 0.00018716154, 0.030345978, -0.02162631, -0.0047855736, 0.010134532, -0.009455909, -0.0024664109, -0.0061204126, 0.0077145365, 0.022189695, 0.016402192, 0.015493094, -0.022176892, 0.008642842, 0.020537952, 0.00650774, -0.0121639995, -0.009558342, -0.01289384, -0.0032202587, 0.0047951764, 0.00696549, -0.02122938, 0.015992459, 0.0040877443, 0.0065173428, -0.021050122, -0.0066197766, 0.007291998, -0.011549397, 0.013457225, -0.020064197, 0.0030586056, 0.022727473, -0.010192151, -0.01265056, -0.007074326, 0.011703048, 0.0149041, -0.012624951, -0.008758079, -0.008444376, -0.018476475, 0.004571103, -0.017311292, -0.008258715, -0.0031050208, -0.0093662795, -0.013482833, -0.004468669, 0.004145363, -0.011363736, 0.0134700285, 0.0013700505, -0.01766981, -0.013802938, -0.0013628481, 0.030909363, 0.02627424, 0.006779829, -0.022868318, 0.010499452, 0.046760976, -0.0020294674, -0.0076377112, -0.0142126735, -0.0020134621, 0.005483403, 0.0008874918, 0.033290945, -0.013598071, 0.003409121, 0.002317562, 0.031370316, 0.0057522915, 0.0072279763, -0.0017877878, -0.007381627, -0.012087175, 0.022164088, 0.004820785, -0.014302302, -0.01548029, 0.0033258935, -0.023495726, -0.0058131116, 0.0009211029, 0.007624907, 0.01256093, 0.025006622, 0.0056914715, -0.021254988, 0.014635212, 0.026812015, -0.004551897, 0.0024584082, -0.008457181, 0.0029177594, 0.010550669, -0.0016565446, 0.013457225, 0.0022599432, -0.029654551, 0.005044859, -0.04437939, 0.02366218, 0.0010467442, -0.0033418988, -0.001234806, 0.01161982, -0.021088533, -0.0038092525, -0.00027769132, -0.013943785, 0.019628854, -0.028630214, -0.02658154, -0.031703223, -0.018937428, 0.009948871, 0.0069270777, -0.0023975882, -0.015006534, -0.025083447, 0.017785048, 0.018258803, -0.00016935568, -0.031037405, -0.022240913, -0.0065813637, 0.009539137, 0.0028297305, 0.012554528, -0.0041709715, 0.013572463, -0.012945056, 0.02186959, 0.0034635388, -0.012381671, -0.026043763, -0.017695418, 0.018975839, 0.010576277, 0.033751898, -0.006017979, 0.0011875905, 0.008886122, -0.006779829, -0.008169086, -0.007925806, -0.0134700285, -0.019411182, 0.013495637, 0.014724841, 0.0051568956, 0.017208857, -0.011818286, 0.009654375, 0.0051985094, -0.0055346196, -0.0143407155, -0.028425347, -0.022855515, 0.0014692831, 0.0015725171, -0.019846525, -0.012817014, 0.010000088, -0.0077145365, 0.023623768, 0.012938654, 0.0025352335, -0.0076953303, 0.028220478, 0.0068694586, 0.03014111, -0.009379084, 0.0013644486, 0.00019456397, -0.025698049, -0.0009363079, 0.009097391, 0.0130346855, 0.013508442, 0.0062068407, 0.0019030257, -0.020781232, 0.016235739, 0.017785048, 0.021754352, 0.0147760585, -0.0026392678, -0.023879852, -0.023777418, -0.03516036, -0.024584083, -0.032317825, 0.003297084, 0.011639027, -0.0343665, 0.021293402, -0.0013892568, -0.034929886, 0.014814471, 0.010140934, 0.024007894, -0.011735058, 0.005621048, 0.005496207, -0.011062837, -0.013329183, -0.0008022638, -0.016645472, -0.004206183, 0.033956766, 0.01021776, -0.003540364, 0.017592985, 0.005685069, 0.00022887526, 0.025915721, -0.017708223, -0.018079545, 0.0075352774, 0.015493094, -0.021754352, 0.019987373, -0.014135848, 0.013713309, -0.024763342, -0.029270424, -0.004990441, -0.00024067913, -0.018604517, 0.003260272, -0.038207762, 0.0041293576, 0.006363692, -0.007311204, -0.0075288755, -0.0048431926, -0.01766981, -0.018706951, -0.006280465, 0.0054065776, -0.012016751, 0.022663452, 0.0018117958, 0.0024744135, -0.031728834, -0.0028761458, 0.004574304, 0.027426617, -0.0016309363, -0.006219645, -0.010749134, 0.018002719, 0.0298082, -0.0058003073, -0.0054513924, -0.001447676, -0.0054673976, 0.0058195135, 0.017746635, -0.012644158, -0.008930936, 0.0139053725, -0.018899014, 0.005185705, -0.015697962, -0.019091077, -0.006040386, -0.01450717, -0.014251086, -0.0012083973, 0.011536594, 0.0027865162, 0.0067350143, -0.02503223, 0.031242272, 0.011318922, -0.021843983, 0.015377856, -0.0051024775, 0.009961676, 0.0026728788, 0.015224205, 0.0059443545, -0.019718483, 0.03449454, -0.009980882, -0.028066829, -0.015493094, 0.006411708, -0.008930936, -0.0005221717, 9.51813e-05, 0.002773712, -0.013239553, 0.02624863, -0.0014812871, -0.0015861215, -0.0040013157, -0.0234189, -0.015313835, 0.0026312652, -0.02019224, -0.0025112256, 0.014878492, -0.0018838194, 0.008783688, -0.040128395, -0.0059443545, -0.03129349, 0.01037141, -0.009660777, -0.012176803, -0.027247358, 0.0011203684, -0.008527604, -0.004218987, -0.009270248, 0.0013148324, -0.0058835344, 0.012304846, -0.007291998, 0.014443149, 0.0025832495, -0.0008882921, -0.012266433, -0.0014036616, -0.015249814, 0.0041901777, 0.0045839073, -0.017132033, 0.014161456, -0.031395923, -0.030345978, 0.007266389, -0.010198553, -0.0011355734, 0.011325324, 0.014545582, 0.03288121, -0.0029545715, -0.0016469415, 0.022420172, -0.0016901557, -0.00083867577, -0.038668714, -0.018489279, 0.0032426661, -0.017785048, 0.0041293576, -0.0034763431, -0.009942469, -0.022522606, 0.008277922, 0.0034219252, 0.007516071, -0.0081818905, 0.0069718924, 0.011703048, -0.001241208, 0.023098795, 0.032343436, 0.013700505, 0.005662662, -0.010992414, -0.010441833, 0.010742732, 0.036824908, -0.0007582493, -0.00068542536, -0.0034219252, -0.011805481, 0.00988485, -0.010723526, 0.014238281, 0.0054481914, 0.011094848, 0.005185705, -0.0090525765, -0.0049616313, 0.017388117, 0.0014820873, -0.007202368, -0.018758168, 0.013764526, -0.014443149, -0.008476387, 0.009142206, -0.024366412, -0.0065429513, -0.021908004, 0.00915501, -0.042049024, -0.0112292925, -0.023610963, -0.004641526, -0.033828724, 0.024609692, 0.01718325, -0.0170296, -0.006178031, -0.023982285, -0.003902083, -0.0021078931, -0.013828547, -0.02326525, -0.038694322, -0.03259952, -0.0058419206, 0.010544267, -0.017119229, -0.0060819997, -0.0040589347, 0.008521202, 0.024379216, 0.23068064, 0.010909187, -0.0053201495, 0.03257391, 0.0033611052, 0.04962912, 0.022970753, -0.008540408, 0.013201141, 0.020909276, 0.0037964482, 0.0025256304, 0.009379084, 0.0043150187, 0.0061428198, -0.0041773734, -0.028092436, -0.0008682855, -0.015800396, 0.010019294, 0.014635212, -0.017797852, 0.011280509, 0.00383166, 0.034725018, -0.001922232, -0.018169174, -0.0018197984, 0.023073187, 0.0054705986, -0.0062356503, -0.011472573, 0.0033354966, -0.009097391, -0.0070359134, -0.005502609, -0.01928314, 0.008201096, 0.020934884, 0.026069371, 0.012138391, 0.012932252, -0.032138567, -0.021818373, -0.0041261567, 0.02348292, -0.009404692, -0.0061908355, 0.019193511, 0.0066261785, -0.017759439, -0.001922232, 0.023777418, 0.02350853, 0.0011091647, 0.023226837, 0.022061653, -0.011690244, 0.029526507, -0.014891297, -0.014071827, 0.023457313, -0.018668538, 0.0031882483, 0.0077081346, -0.0071575535, -0.019808114, 0.009475116, 0.013457225, -0.010569875, 0.017746635, 0.010992414, 0.019628854, 0.0056402544, -0.006286867, -0.003236264, 0.024840167, 0.008162684, 0.026940057, -0.017900286, -0.0037420304, -0.014404736, -0.014404736, 0.022868318, -0.018719755, -0.022804298, 0.0076313093, 0.0020566762, 0.03569814, -0.008674853, -0.009263846, -0.009583951, 0.00976321, -0.010032099, 0.006238851, 0.024776146, -0.0134700285, 0.022151284, -0.02368779, 0.0031738435, -0.036517605, -0.01700399, 0.017900286, -0.010787547, -0.013649288, 0.011114054, 0.00480478, 0.015531506, 0.038873583, -0.008828503, 0.013457225, -0.005112081, 0.012003947, -0.0023223637, 0.01833563, -0.00136845, 0.0033835126, -0.012618549, -0.018450867, -0.0139053725, -0.00018806184, -0.022036046, -0.01441754, 0.009628766, -0.015710765, -0.0037388294, -0.0040877443, 0.020077001, 0.00031870478, -0.040282045, 0.03047402, -0.0020022583, 0.030909363, -0.0023719799, -0.009289455, -0.00086748524, -0.009526332, -0.005243324, 0.011504583, -0.01012813, -0.008636439, -0.008918133, 0.012445692, -0.013738917, 0.0056466567, 0.0077977637, 0.005105679, -0.012887438, -0.013585267, -0.017119229, 0.0010091318, -0.02147266, -0.00059219473, 0.003473142, 0.016146109, -0.013111511, -0.026376672, -0.007618505, -0.016389389, 0.019539224, -0.006824644, 0.025864504, -0.006472528, -0.014225477, -0.008905328, 0.0014468757, -0.16409875, 0.024071915, 0.004164569, -0.004033326, -0.013828547, -0.0011675839, 0.02578768, 0.018233195, -0.0010171344, 0.028322913, 0.015160184, -0.008649244, -0.0520107, -0.024123132, 0.008924535, 0.019001449, -0.0042285905, -0.015224205, 0.026402282, 0.009961676, -0.0029785794, -0.029142382, 0.012215217, -0.0026408683, 0.00465433, 0.00016485421, -0.00918702, 0.030243544, -0.0017877878, -0.007080728, -0.00465433, -0.0052721333, 0.0028057224, 0.036287133, 0.0072855954, 0.005067266, 0.00013964591, 0.005172901, 0.0010923592, 0.003972506, -0.008137075, 0.024929797, -0.006152423, 0.009628766, -0.019987373, 0.022970753, 0.03505793, 0.021101339, -0.0015829204, -0.0073048016, 0.008681254, -0.03157518, -0.023828635, -0.008649244, 0.01784907, 0.0052049113, 0.018566104, 0.009808025, -0.003850866, 0.022586627, 0.0036299936, -0.0267608, -0.0009651173, 0.0026200614, -0.0011043631, -0.012810612, 0.0030714099, 0.008258715, -0.031856876, 0.014788862, -0.013041088, -0.0066005704, 0.02323964, -0.017349705, 0.012477702, 0.009910459, -0.014571191, 0.012035958, -0.005377768, -0.010838764, 0.013329183, 0.02618461, 0.0016773515, -0.014519975, -0.016799124, 0.014865688, -0.013687701, 0.005672265, -0.006261259, -0.028246088, 0.00814988, -0.039949134, 0.0040013157, -0.03877115, 0.016094891, 0.0133804, -0.010448235, -0.011158869, -0.0011883908, -0.021088533, 0.011575006, -0.010883578, -0.012112782, 0.01809235, 0.024097523, 0.024660908, -0.00043574328, 0.010397019, 0.027042491, 0.008233107, -0.014699233, 0.031523965, 0.0142126735, 0.03323973, 0.014545582, -0.00028869492, 0.0083035305, -0.034801845, -0.0027080905, 0.006779829, 0.036773693, 0.012170401, -0.009692787, 0.009219031, -0.0030522035, -0.024673713, -0.095365755, -0.022919536, 0.012432888, 0.01475045, -0.0013924579, 0.0151473805, 0.010185749, 0.03743951, 0.00018466072, 0.02934725, -0.008322736, -0.017349705, -0.015019339, 0.002871344, 0.008476387, -0.013201141, 0.007996229, -0.025454769, -0.024981014, 0.0053297523, -0.004010919, -0.012420083, 0.0022039246, -0.004270204, -0.01629976, -0.020269064, -0.03920649, 0.019936156, 0.00498724, -0.00471515, 0.0152114015, -0.0072407806, 0.0048559965, -0.010768341, -0.017196054, 0.013790134, -0.014827276, -0.00037292263, 0.006101206, -0.03144714, 0.010268976, 0.012003947, 0.006510941, -0.028578997, -0.013508442, 0.0040269243, -0.013713309, -0.011971937, -0.009353476, -0.01937277, 0.010883578, 0.037004165, -0.0033835126, -0.011178075, 0.037516337, -0.020333085, 0.021280598, 0.0206788, -0.009455909, 0.004817584, 0.011088446, 0.012368867, 0.008508397, 0.02551879, -0.0053809695, -0.015390661, -0.027324185, 0.003533962, 0.012176803, -0.041895375, -0.0005985968, 0.02092208, -0.018745363, 0.013226749, -0.009603158, -0.001101162, -0.020755624, -0.011523789, 0.009558342, -0.00032050538, -0.026018154, -0.020614779, -0.006277264, -0.02366218, 0.0070423153, 0.022253716, -0.013341987, -0.004388643, 0.028604604, -0.014494366, 0.0005645856, 0.04312458, 0.013802938, -0.012260031, -0.0075352774, 0.011901514, 0.0122280205, 0.018284412, 0.00903337, -0.019398378, -0.021664724, -0.0026504714, -0.049321815, 0.010115326, -0.002378382, -0.023252446, -0.0032698752, 0.009878448, -0.01578759, -0.004033326, -0.005256128, -0.00535216, -0.0019750495, -0.002357575, -0.0050224513, 0.00065141416, -0.01402061, 0.0027016883, 0.018002719, -0.0050288537, 0.02722175, 0.00053697656, -0.0019126289, 0.014571191, 0.011101251, 0.0007462454, -0.016350977, 0.01742653, -0.03096058, -0.01523701, -0.016607061, -0.014468757, -0.0065493532, -0.018194782, 0.015006534, 0.039283317, -0.019257532, -0.01903986, -0.006155624, 0.030243544, 0.008822101, -0.020179436, -0.013687701, -0.043508705, 0.016632669, -0.013303574, -0.016325368, 0.0188606, -0.0016453409, -0.012727384, 0.005854725, -0.0013548455, 0.021050122, 0.027119316, -0.0002262744, -0.009122999, 0.00036051855, -0.017144836, 0.030089894, 0.008834905, 0.011120456, -0.03190809, 0.016607061, -0.012490507, -0.00034311283, 0.011939926, 0.008495593, 0.008521202, -0.017068012, -0.014699233, 0.0075736903, 0.007618505, -0.008265117, -0.00918702, 0.040256437, 0.008591625, 0.02323964, 0.0109476, -0.011991142, 0.0037964482, -0.0013764526, 0.008124271, 0.013239553, -0.0077721556, -0.019731287, 0.02691445, 0.020422716, 0.031984918, -0.038310196, -0.0009251042, 0.005364964, -0.005006446, -0.031370316, -0.004567902, -0.007701732, -0.002986582, -0.00413576, 0.0041901777, -0.0036620041, 0.0020870862, 0.015979653, 0.035390835, 0.013802938, -0.0062100417, -0.0079066, -0.026530324, -0.0088669155, 0.0077209384, -0.007804166, -0.0036363956, -0.012234422, 0.0076313093, 0.007080728, -0.021575093, -0.0007982625, 0.022010436, -0.0017189652, -0.005726683, -0.033316553, -0.028809473, -0.018783776, 0.0065557556, 0.0013556457, 0.011722255, -0.011658234, -0.010397019, 0.022253716, 0.027016884, 0.040154003, -0.031523965, -0.0037388294, 0.018719755, 0.011542995, -0.0032506688, 0.008469985, -0.01937277, -0.024443237, -0.0075096693, -0.019103881, 0.02609498, 0.016235739, 0.054084983, -0.004427056, -0.03577496, 0.017055208, 0.001292425, 0.007842579, 0.013802938, 0.0011843895, -0.014481561, -0.013713309, 0.002469612, 0.0009987283, 0.021203771, 0.0033451, -0.016837535, -0.0022279324, -0.01912949, 0.020000177, -0.031088622, -0.013028284, 0.022304934, 0.0052049113, 0.012356062, 0.0034571367, -0.016184522, -0.007151151, -0.006818242, 0.012388073, -0.005006446, -0.020909276, 0.017260075, -0.022420172, -0.023201229, -0.00021547085, 0.01466082, -0.018630126, -0.015685158, -0.025505986, -0.006213243, 0.014583996, -0.00046975445, 0.020819645, -0.015838807, -0.027452227, -0.011542995, -0.010064109, -0.020025784, 0.005979566, -0.023841439] }, { - "object": "embedding", "index": 3, - "embedding": [0.01577385, -0.0072296807, 0.0065341513, -0.021912377, -0.006553294, 0.0037105556, -0.01824968, -0.033232283, 0.011862292, -0.017496722, 0.019436548, 0.009731036, -0.0045847534, -0.0013471901, -0.016896907, -0.00010548602, 0.03307914, 0.011607052, 0.026468417, -0.016514046, -0.022308, 0.018185869, -0.008920648, 0.011626194, -0.020878654, -0.010196849, 0.008014545, -0.016654428, 0.0024199968, 0.015505847, 0.010509518, -0.018236918, 0.012238772, -0.025102882, -0.035759162, 0.015595181, 0.0045209434, -0.0034936012, 0.017062813, -0.018619778, -0.0006265351, 0.009845894, 0.0032798375, -0.007835876, -0.008984458, 0.012130294, 0.019538643, 0.0072871097, -0.017586054, 0.011638957, 0.003598888, 0.019181307, -0.018096536, -0.018734636, 0.011192286, -0.035248682, 0.0039466526, 0.017675389, 0.0057237633, -0.008180451, -0.0126024885, -0.016922431, 0.0041348925, -0.014050977, 0.004409276, -0.000938008, -0.009539605, 0.004303989, 0.00019840944, 0.0054972377, 0.021325326, 0.038005278, 0.006368245, 0.019359974, 0.025077358, 0.009265222, -0.013770213, 0.023418296, -0.004466705, -0.0031474316, 0.0009906513, -0.008735598, -0.03073093, -0.0048080888, 0.0144338375, -0.0017388244, -0.009628939, 0.00431037, -0.034993444, -0.0030772407, -0.011262477, 0.03073093, 0.026596038, -0.012111152, 0.00066123187, 0.014803936, 0.011313525, 0.029709969, 0.015735563, -0.035350777, 0.014931556, 0.004524134, -0.042446457, 0.0029831207, -0.024745544, -0.02059789, 0.0024790212, 0.003978558, 0.026162129, -0.020559605, -0.022256952, 0.023903253, 0.046683446, -0.023035435, -0.0019318499, -0.021044562, 0.012870491, -0.028306147, -0.017981678, -0.006052385, 0.0065245796, 0.051175676, 0.01799444, -0.015225083, 0.037060887, -0.0001232332, -0.008914267, -0.028969772, -0.0042178454, 0.015684515, -0.0063395305, 0.01730529, 0.0020706367, 0.01350221, 0.007274348, -0.0010265445, -0.0144338375, 0.02731071, -0.005950289, -0.019411024, 0.010815807, 0.032313418, -0.016067376, 0.0039307005, -0.006546913, 0.034993444, 0.015978042, -0.003972177, -0.020380937, -0.005615286, 0.0032479325, -0.011256096, 0.003187313, -0.0035765544, 0.015416513, 0.0052515687, -0.0071722516, 0.005302617, -0.027234137, 0.001990874, -0.019436548, -0.006451198, 0.030143877, -0.011875054, 0.04354399, 0.027872238, 0.0016104067, -0.002837953, -0.016258806, -0.002268448, 0.0006664164, 0.025166692, -0.012985349, 0.032313418, -0.017586054, 0.0121941045, 0.0077848285, -0.0018106108, -0.016360901, 0.004367799, -0.02491145, -0.003314933, 0.016207758, 0.004587944, 0.006033242, -0.00506971, 0.02547298, -0.008646265, 0.014880508, -0.004852756, 0.023801155, 0.025945174, -0.02160609, -0.033538572, -0.68118525, -0.043952376, 0.020074647, -0.0036339834, 0.0017978487, 0.02464345, 0.0067192004, 0.015442037, 0.0057173823, -0.01629709, 0.011811243, 0.005442999, 0.011077428, -0.013566021, -0.0060491944, -0.02243562, -0.0033851243, 0.022205904, -0.002155185, -0.015480323, 0.0005595345, 0.0069297734, -0.017649865, -0.011696386, 0.021963425, 0.009029125, 0.017445672, -0.00071148225, -0.017394625, -0.0018536826, -0.016845858, 0.015122986, -0.020827606, -0.013023635, 0.04696421, -0.011415621, -0.007070156, 0.024758307, 0.008799409, 0.026417369, -0.009635321, -0.0017547769, 0.01204096, -0.030935122, -0.013808499, 0.010694568, 0.015071939, -0.006680914, 0.0321858, 0.0014157859, 0.019500358, -0.03187951, 0.0051048053, 0.00994799, 0.007893305, 0.0015099058, 0.04234436, 0.00076292915, 0.0009435914, 0.007210538, 0.007133966, 0.0022174, -0.004664516, -0.016194995, -0.016628904, -0.0009108887, -0.038209468, -0.015850421, -0.018415585, -0.00071227987, -0.0053377124, 0.0041859406, -0.015850421, 0.02382668, 0.02027884, -0.005152663, 0.030756453, -0.009029125, 0.00024207945, -0.0021583757, 0.011141238, -0.014446599, -0.03111379, -0.017318053, 0.029633395, -0.021695424, -0.016246043, -0.025421932, 0.016105661, -0.0045751818, 0.025000785, -0.0013774999, -0.016105661, -0.0081357835, -0.013795737, 0.03614202, 0.002204638, 0.0030086448, 0.0034457438, 0.0059470986, -0.0026305702, -0.015978042, -0.0045177527, -1.5173586e-06, 0.026264224, -0.012213247, -0.027361758, 0.028408242, 0.0111795245, -0.015926993, 0.025077358, -0.0111795245, -0.009916085, 0.017662628, 0.011989912, -0.027846714, 0.04821489, 0.0024247826, 0.018709112, -0.008678169, 0.0065915803, 0.024822118, -0.009156745, -0.008295309, -0.0017834915, -0.013195923, -0.008907885, -0.012442963, -0.044207618, 0.0014556672, 0.0031649794, 0.009750179, 0.01679481, 0.006757486, 0.008646265, 0.0035574113, 0.010949808, -0.021618852, 0.024439257, -0.005797145, -0.011332668, -0.0010289374, -0.026008984, 0.013578783, 0.0033978862, -0.034253243, -0.03461058, -0.006119386, -0.012328105, 0.015352703, -0.023813918, -0.012315343, -0.039255954, 0.009903323, 0.015620705, -0.016526807, -0.02211657, -0.005430237, -0.013285256, 0.029837588, 0.016628904, 0.0011182715, 0.001812206, -0.0007577446, -0.0104329465, -0.0216699, -0.008295309, 0.0413234, -0.0007465778, -0.026442893, -0.021133894, 0.0010066038, -0.0039275098, -0.008212356, -0.015161272, -0.019972552, -0.0062629585, -0.015071939, 0.0034010767, -0.009437509, 0.01850492, 0.017164908, 0.009986276, -0.017407387, 0.04739812, 0.006999965, 0.016501283, 0.0028507148, 0.0015226678, -0.0018473015, -0.012525917, -0.010254278, 0.002959192, -0.0092779845, 0.009928847, 0.012149437, 0.010656281, 0.011211429, 0.0023817108, -0.0021950663, 0.00944389, -0.011351812, 0.017535007, -0.014280694, 0.00602048, -0.026876802, 0.017905105, -0.010694568, 0.0005623262, 0.026442893, 0.004367799, -0.023979824, -0.0032096466, -0.007574255, 0.016143948, -0.00589286, -0.024311636, 0.002935263, 0.0020339459, -0.0123344865, 0.0011836768, 0.014791174, 0.023520391, -0.014076501, -0.0037616035, 0.0016383235, 0.032338943, 0.01761158, -0.0070254887, -0.018173108, -0.023035435, -0.005101615, -0.012034579, 0.010700949, -0.032543134, -0.006077909, 0.0056408104, -0.0320837, 0.022308, 0.011938864, -0.011319906, 0.03517211, 0.025613362, 0.0048878514, 0.0039370814, -0.0013487854, 0.016335377, 0.011709148, -0.017854057, 0.006617104, -0.012525917, 0.009424747, -0.0034010767, 0.015658991, 0.039255954, -0.0083655, 0.036780123, 0.0015936565, 0.017101098, 0.023405533, -0.026085556, -0.0063714352, 0.0058450024, -0.0057684304, 0.013049159, -0.0009427938, -0.0054717134, -0.0018058249, 0.0050984244, -0.009386461, -0.017420148, -0.0018329442, 0.02876558, -0.007299872, 0.02674918, -0.010471232, -0.0052707116, -0.004361418, 0.0308075, 0.011422003, -0.008097498, -0.026111081, 0.014816698, -0.0011900578, -0.0047729933, -0.030118352, -0.023048198, 0.0177392, -0.0006349102, 0.009979894, 0.008378262, 0.009533225, 0.029199488, -0.0060842903, 0.0076189223, -0.02579203, 0.0057716207, 0.007880543, 0.01660338, 0.002325877, -0.004568801, -0.018275203, -0.032134753, -0.015875945, 0.011824006, 0.009845894, -0.006744724, 0.008422929, -0.01013942, -0.028740056, -0.011492194, -0.0005914396, 0.00079363777, -0.013770213, -0.005430237, -0.002332258, -0.029250536, 0.004530515, 0.034431912, 0.020802082, 0.005232426, -0.010113896, -0.012034579, -0.00880579, 0.077235706, 0.0249625, 0.008052831, 0.010094753, -0.002775738, -0.011562385, -0.028586911, 0.011983531, -0.01324697, -0.0065915803, 0.01660338, -0.026060032, 0.001767539, 0.004485848, 0.005165425, -0.006680914, 0.0071148225, -0.0013128922, 0.033793814, -0.020138457, 0.0061321477, 0.0017563722, -0.0140254535, 0.0123344865, 0.0037296985, -0.006483103, 0.007529588, -0.010228754, 0.015710039, -0.011568765, 0.00899722, 0.009737416, -0.007567874, -0.006572437, -0.017573293, 0.0024471162, -0.0017946583, 0.0056248577, 0.010145801, -0.014650792, 0.03606545, 0.004460324, 0.012787538, -0.0068851067, -0.02142742, 0.007076537, -0.014012692, 0.020546842, -0.011989912, -0.018173108, 0.026315272, 0.007357301, -0.015263368, 0.0059215743, 0.010720092, 0.0035893165, -0.010956189, -0.01807101, -0.007861401, 0.00093880564, 0.000978687, -0.007331777, 0.0024423304, -0.005494047, -0.015033652, -0.008659027, 0.0038636997, -0.0031043598, -0.017981678, -0.0034616962, 0.014625268, -0.012659918, -0.021874093, 0.0079954015, 0.027285187, 0.008544168, 0.017624341, -0.024311636, -0.01781577, 0.041655213, -0.0004343073, -0.0077401614, -0.0038668902, -0.0029879066, -0.0070382506, 0.0010345208, 0.025957936, -0.023494868, -0.014408314, -0.010560567, 0.03236447, -0.0018935638, 0.013068303, -0.005293045, -0.013770213, -0.010343612, 0.029607872, 0.0084612155, -0.009679987, 0.005293045, 0.003605269, -0.024783831, -0.00066163065, -0.015442037, 0.015799373, 0.01425517, 0.02851034, 0.0034553153, -0.017968915, 0.013195923, 0.0070127267, -0.009450272, -0.012557821, -0.0038987952, 0.004734707, 0.0068276776, -0.006065147, 0.014357266, -0.008722836, -0.027157566, -0.0015202749, -0.040838443, 0.027157566, 0.0017005383, 0.010675425, 0.0017101099, 0.027616998, -0.005755668, -0.013259732, 0.013323543, -0.009131221, 0.020648938, -0.010649901, -0.017330814, -0.033946957, -0.025485741, 0.033538572, 0.0022923767, -0.01604185, -0.0048814705, 0.011626194, 0.012762014, 0.009839512, 0.0026911898, -0.03529973, -0.023035435, -0.0055801906, 0.0040072724, -0.007070156, 0.016935192, -0.00957151, 0.0055546667, -0.009456652, 0.011071047, -0.001292154, -0.012666299, -0.031905036, -0.025562314, 0.03047569, 0.016743762, 0.017356338, -0.0026401416, 0.0038828426, 0.0016718238, -0.005666334, 0.0028826199, -0.00893341, 0.0018361347, -0.030118352, 0.014497648, 0.0138850715, -0.0028491195, 0.023941537, -0.005545095, 0.012436583, 0.013400114, -0.0042306078, -3.614242e-05, -0.026442893, -0.027412806, 0.007638065, -0.0001354967, -0.0076827323, -0.0018808017, -0.0001483584, -0.018594254, 0.01754777, 0.0029225012, -0.008008163, 0.0037616035, 0.03338543, -0.0009826751, 0.034304295, -0.0045528486, -0.002211019, -0.0052770926, -0.026902325, -0.0035223158, 0.013463925, 0.0068787253, 0.007236062, 0.005570619, 0.011906959, -0.024860403, 0.01577385, 0.01286411, 0.03149665, 0.008537787, -0.009207793, -0.01976836, -0.031011693, -0.036014404, -0.03662698, -0.03226237, 0.013336305, 0.0022317572, -0.031598747, 0.021542279, -0.008225118, -0.020457508, 0.008040069, 0.011530479, 0.029122915, 0.0008414953, 0.008907885, 0.02160609, -0.008595216, -0.008659027, 0.008320833, -0.011402859, -0.0067766295, 0.019270642, 0.019500358, -0.020227792, 0.024809355, 0.012723728, 0.011760196, 0.022091046, -0.009373699, -0.0033532192, -0.005289855, 0.010777521, -0.020776559, 0.011868672, -0.026136605, 0.005848193, -0.037290603, 0.0022923767, -0.0024168063, -0.010420185, -0.014663554, -0.0056535723, -0.03338543, 0.015327179, 0.021631613, 0.008391025, 0.006250196, -0.0068978686, -0.008384643, -0.0032176226, -0.010483994, 0.032721803, 0.00030868122, 0.0015354297, 0.006476722, -0.00128338, -0.010196849, -0.008257023, -0.003212837, 0.025370883, -0.0034489343, -0.0022174, -0.024132969, 0.008148545, 0.038617853, -0.01653957, -0.0007577446, -0.002136042, -0.0054334276, 0.0027214994, 0.006680914, 0.0018345395, -0.015199559, 0.018607017, -0.024069158, -0.012245152, -0.028050907, -0.0036084594, 0.008193213, -0.015607943, -0.005248378, -0.028050907, 0.014982604, 4.454242e-05, -0.0038381757, -0.017394625, 0.031037217, 0.005107996, -0.018594254, 0.01939826, 0.00013669314, 0.015901469, 0.002268448, 0.014318979, 0.004240179, -0.02515393, 0.030654358, 0.0021583757, -0.03529973, -0.027080994, -0.008907885, -0.0111795245, 0.0012618441, -0.005031424, 0.009335414, -0.0021902807, 0.013157636, -0.020636177, 0.0005794752, -0.005924765, -0.026340798, 0.018147584, 0.020623414, -0.020891417, -0.017522246, 0.0090099815, -0.011173143, 0.0013695236, -0.027361758, -0.008499501, -0.012647156, 0.01863254, 0.013221446, -0.01933445, -0.0039434624, -0.012321725, -0.012423821, 0.0033276952, -0.0021934712, 0.014370028, -0.0026991658, -0.0012474868, -0.024579639, 0.0142934555, -0.021465708, 0.013936119, 0.0016135972, -0.019755598, -0.017968915, -0.002136042, 0.0042050835, -0.004594325, -0.004811279, -0.030424641, -0.018351777, 0.0027023565, -0.003225599, -0.0027932858, 0.0017850867, 0.0081357835, 0.018262442, -0.0056535723, -0.015480323, 0.020546842, 0.0007437861, -0.0015936565, -0.018045487, -0.017841296, -0.008403786, -0.009297127, 0.013936119, 0.0038892238, 0.004556039, -0.008327214, 0.026442893, -0.016922431, 0.004916566, -0.004125321, -0.022997148, -0.00071307755, 0.02142742, 0.0200236, 0.031343505, 0.010069229, -0.008129403, -0.02313753, -0.005545095, 0.009469414, 0.037111938, -0.012513154, 0.0149698425, 0.009431128, -0.01033085, 0.0013926547, -0.03098617, 0.0075423503, 0.011683623, 0.021312563, 0.005596143, -0.0074849213, 0.011989912, 0.028586911, -0.0028507148, -0.022780195, -0.0014907627, -0.005360046, -0.03504449, 0.0014046192, 0.009533225, -0.028740056, 0.0076061604, -0.023673536, -0.004169988, -0.02344382, -0.007523207, -0.024796592, -0.00880579, -0.03392143, 0.028791104, 0.024554115, -0.009552367, 0.0088696, -0.028535863, -0.0027470235, -0.007006346, -0.009156745, -0.00969275, -0.026570512, -0.006623485, -0.007861401, 0.0006995179, -0.031649794, -0.005564238, 0.006540532, 0.0069170115, 0.020368174, 0.23420848, 0.008754741, -0.013591545, 0.032134753, -0.01812206, 0.025077358, 0.02376287, -0.015875945, 0.028484816, 0.036652505, -0.021657137, 0.0006440829, 0.00089174573, -0.0018345395, 0.011989912, -0.013030016, -0.03376829, -0.002338639, -0.0014357265, -0.0090801725, 0.01685862, 0.002649713, 0.009169507, 0.00033121413, 0.028995296, 0.015697276, -0.0069042495, 0.0036116499, 0.004476276, 0.01178572, -0.0012068079, -0.018721875, 0.004364609, -0.0060619568, 0.002522093, -0.0029065486, -0.0067383433, 0.003219218, 0.009386461, 0.038617853, 0.006058766, 0.0062629585, -0.024873165, -0.008550549, 0.004785755, 0.00849312, -0.015735563, -0.0067383433, 0.021950664, 0.015046414, -0.010152182, -0.0061449097, 0.044513904, 0.023214104, -0.011007237, 0.021823043, 0.033615146, -0.011268858, 0.025715457, -0.010349994, -0.0151102245, 0.023673536, -0.019883217, 0.004594325, 0.019155784, -0.0015721206, -0.015799373, 0.0051399013, 0.021912377, -0.022780195, 0.011332668, 0.0024550925, 0.0077146376, 0.0018042297, -0.0057173823, -0.019653501, 0.022716384, -0.006128957, 0.027897762, 0.006508627, -0.016360901, -0.008129403, -0.007644446, 0.01799444, -0.006700057, -0.008914267, -0.0018329442, 0.015684515, 0.022831243, -0.0068659633, 0.0041029872, -0.0029575967, 0.0016925621, 0.010273421, 0.030373594, 0.022550479, -0.005360046, 0.007363682, -0.026111081, -0.000995437, -0.034942392, -0.035657067, 0.004214655, -0.017190432, -0.00912484, 0.007248824, -0.0009746988, 0.0015107034, 0.033666193, -0.0004159619, 0.0040710825, -0.011996293, 0.0083335955, -0.008308071, 0.009003601, -0.0061576716, 0.013961643, -0.013234208, -0.017101098, -0.018747399, -0.0034648867, -0.020687224, 0.0017866819, -0.006700057, -4.6710964e-05, -0.019857693, -0.0027342616, -0.0025045453, 0.007261586, -0.042778272, 0.036473837, -0.0046868497, 0.02136361, -8.260413e-05, -0.005417475, 0.011906959, 0.00017288541, -0.0077210185, -0.00047059925, -0.008129403, 0.001628752, 0.0017404197, 0.00988418, -0.0052579497, 0.0014756079, -0.0066745332, 0.005886479, -0.02782119, -0.02718309, -0.024298875, -0.025396409, -0.010401041, -0.009405605, -0.0070573934, 0.009354556, 0.0030836216, -0.021478469, -0.008952552, 0.00095156766, 0.03111379, -0.0113773355, -0.0014588577, 0.026468417, -0.014803936, 0.013310781, 0.0030469308, -0.16253701, 0.024069158, 0.014140312, -0.014918794, -0.0050473763, -0.0026832134, 0.016182235, 0.020444747, -0.020189505, 0.028714532, -0.0036403644, 0.024630686, -0.042446457, -0.009137602, -0.012557821, 0.0009013172, 0.00013061124, -0.0009866632, 0.017407387, 0.0033564097, 0.007491302, -0.02091694, 0.022767432, 0.021057323, 0.0151102245, -0.0032559088, -0.026315272, 0.03256866, 0.0074721593, -0.007191395, -0.0070191077, -0.0034712679, -0.00025763316, 0.02491145, 0.016488522, -0.0026018557, 0.0023242817, 0.010547805, -0.00024566878, -0.010381898, 0.002238138, 0.028612435, 0.009609796, 0.012181343, 0.001036116, 0.02743833, 0.029097391, 0.02117218, 0.0035510303, -0.009597034, 0.023265151, -0.03338543, -0.013425639, -0.0078550195, 0.022154856, 0.020317126, 0.016399188, 0.009297127, -0.00817407, 0.009214174, 0.00066721404, -0.03864338, -0.023456581, 0.006377816, 0.0010608424, -0.0069808215, 0.01083495, 0.011906959, -0.004473086, 0.006052385, -0.020508556, -0.006259768, -0.0058450024, -0.02136361, -0.006559675, 0.0008973291, -0.01159429, -0.0026066413, -0.0035382684, -0.013183161, 0.010318088, 0.02249943, -0.015008128, -0.008786647, -0.008844076, 0.008927029, 0.004903804, 0.00823788, -0.024235064, -0.0005890467, 0.023290675, -0.036218595, 0.0037296985, -0.03946015, 0.008971696, 0.017343577, 0.0015737158, -0.011077428, 0.007848638, 0.012200485, 0.00022393346, 0.0013184756, -0.023839442, 0.00957151, 0.030322544, 0.018466635, -0.012238772, 0.0062151006, 0.030450165, -0.0040742727, -0.01685862, 0.022359049, -0.0046964213, 0.0067638676, 0.022984387, 0.010190468, 0.013731927, -0.02851034, -0.0014429052, 0.009597034, 0.048878513, -0.0061672432, -0.0062852916, 0.019500358, -0.0023099245, -0.030960646, -0.099952094, -0.013668117, 0.01780301, 0.020751035, 0.013706403, 0.02700442, 0.004986757, 0.0173691, 0.0023418295, 0.02414573, 0.0021870902, -0.022805719, -0.019500358, 0.0103627555, 0.005315379, -0.013463925, 0.018594254, -0.023022672, -0.05063967, 0.0037775561, -0.003924319, 0.0068532014, -0.0034234102, -0.016743762, -0.005296236, 0.0034457438, -0.024184017, 0.0058577643, 0.01786682, -0.0040327962, 0.010662663, -0.014791174, 0.0041923216, -0.0066681523, -0.008665407, -0.00039263134, -0.0047602314, 0.0012658322, 0.027514901, -0.030935122, -0.0045975153, 0.0022237808, 0.015263368, -0.032823898, -0.004138083, 0.010273421, -0.00010468839, 0.012296201, 0.0042497506, -0.019245116, 0.006077909, 0.020636177, -0.034636106, -0.009711892, 0.04410552, -0.029480252, 0.011613432, 0.01703729, -0.027080994, 0.021810282, 0.0048176604, 0.01703729, 0.0013152851, 0.029250536, -0.02598346, -0.016386425, -0.049006134, -0.008595216, 0.023022672, -0.031471126, 0.0034776488, 0.017535007, -0.016156709, -0.0040774634, -0.019819407, 0.019181307, -0.025192216, -0.013010873, 0.00842931, -0.012219628, -0.026417369, -0.020380937, 0.0081357835, -0.005666334, -0.0074147303, 0.029556824, -0.021950664, -0.008442072, 0.025549551, -0.002971954, 0.0133490665, 0.038617853, 0.013285256, -0.019525882, -0.008614359, 0.020967988, 0.007331777, 0.0028570958, 0.019206831, -0.018134821, -0.019755598, -0.0079252105, -0.035886783, 0.014778412, -0.014791174, -0.02445202, -0.0118559105, 0.013157636, -0.011709148, 0.0034680772, -0.011543241, -0.004476276, -0.011224192, -0.007344539, -0.012634394, -0.015978042, -0.005369617, 0.0027103326, 0.016756523, -0.001984493, 0.011875054, -0.009226936, -0.007248824, -0.0014915604, 0.0003704972, 0.008033688, -0.033232283, 0.0067192004, -0.016462998, -0.01906645, -0.029454729, -0.0020052313, 0.024184017, -0.02649394, 0.011485812, 0.026978897, -0.018709112, -0.03193056, -0.012162199, 0.021376373, 0.008435691, -0.020074647, -0.02389049, -0.022984387, 0.017152147, -0.0109817125, -0.01976836, 0.030781977, -0.01260887, -0.0076508275, 0.002065851, 0.012787538, 0.01850492, 0.017700912, 0.0027645712, -0.0052834735, -0.01159429, -0.008563311, 0.029148439, 0.012149437, 0.0067766295, -0.013821261, 0.0063522924, -0.0046868497, 0.013476687, 0.011664481, -0.0032463372, 0.018658064, -0.005666334, -0.0031266934, -0.0043199416, -0.023877729, -0.01425517, -0.0040264153, 0.050792817, 0.01634814, 0.012564203, -0.005950289, -0.009654463, -0.018262442, -0.012015436, 0.01703729, 0.0048240414, -0.0037233175, -0.01236001, -0.0010496756, 0.027642522, 0.023596963, -0.053243123, -0.008231499, 0.018262442, -0.0013639402, -0.024809355, 0.012755632, -0.0038605093, 0.008505883, 0.0132086845, 0.00033719634, -0.001473215, -0.006103433, -0.0029496204, 0.022333525, 0.0062246723, -0.017586054, -0.007382825, -0.03440639, -0.010113896, 0.024247827, -0.0069425358, -0.018339014, -0.0144338375, 0.018275203, 0.009112078, -0.014523172, 0.0035382684, 0.014114787, -0.0070382506, -0.0020291603, -0.039434623, -0.01013942, -0.013527735, 0.01362983, 0.011492194, 0.005190949, 0.009099316, -0.0032622898, 0.021376373, 0.010656281, 0.02649394, -0.038388137, 0.018466635, 0.007465778, 0.0027613807, 0.012876872, -0.015352703, 0.00228121, -0.024120206, -0.011996293, -0.016360901, 0.017956154, 0.0031346697, 0.0512012, -0.008856838, -0.031726368, 0.033308856, -0.024158493, 0.0015027272, 0.0121941045, 0.0007314229, -0.022831243, -0.0118559105, -0.0111795245, 0.013706403, 0.020176744, -0.016590618, -0.0045751818, -0.00020319519, -0.029812064, 0.027463853, -0.02807643, -0.0013352257, 0.028714532, 0.002611427, 0.011236954, 0.015442037, -0.018709112, -0.019053686, 0.014459361, 0.026111081, 0.0031665748, -0.0010576519, 0.019998075, -0.008754741, -0.022027235, -0.011504956, 0.0010209611, -0.0361165, -0.01596528, -0.014459361, -3.359999e-05, 0.014625268, 0.0084612155, 0.029888637, -0.020036362, -0.020100173, 0.005685477, -0.012781157, -0.0077848285, 0.007185014, -0.006240625] + "embedding": [0.01577385, -0.0072296807, 0.0065341513, -0.021912377, -0.006553294, 0.0037105556, -0.01824968, -0.033232283, 0.011862292, -0.017496722, 0.019436548, 0.009731036, -0.0045847534, -0.0013471901, -0.016896907, -0.00010548602, 0.03307914, 0.011607052, 0.026468417, -0.016514046, -0.022308, 0.018185869, -0.008920648, 0.011626194, -0.020878654, -0.010196849, 0.008014545, -0.016654428, 0.0024199968, 0.015505847, 0.010509518, -0.018236918, 0.012238772, -0.025102882, -0.035759162, 0.015595181, 0.0045209434, -0.0034936012, 0.017062813, -0.018619778, -0.0006265351, 0.009845894, 0.0032798375, -0.007835876, -0.008984458, 0.012130294, 0.019538643, 0.0072871097, -0.017586054, 0.011638957, 0.003598888, 0.019181307, -0.018096536, -0.018734636, 0.011192286, -0.035248682, 0.0039466526, 0.017675389, 0.0057237633, -0.008180451, -0.0126024885, -0.016922431, 0.0041348925, -0.014050977, 0.004409276, -0.000938008, -0.009539605, 0.004303989, 0.00019840944, 0.0054972377, 0.021325326, 0.038005278, 0.006368245, 0.019359974, 0.025077358, 0.009265222, -0.013770213, 0.023418296, -0.004466705, -0.0031474316, 0.0009906513, -0.008735598, -0.03073093, -0.0048080888, 0.0144338375, -0.0017388244, -0.009628939, 0.00431037, -0.034993444, -0.0030772407, -0.011262477, 0.03073093, 0.026596038, -0.012111152, 0.00066123187, 0.014803936, 0.011313525, 0.029709969, 0.015735563, -0.035350777, 0.014931556, 0.004524134, -0.042446457, 0.0029831207, -0.024745544, -0.02059789, 0.0024790212, 0.003978558, 0.026162129, -0.020559605, -0.022256952, 0.023903253, 0.046683446, -0.023035435, -0.0019318499, -0.021044562, 0.012870491, -0.028306147, -0.017981678, -0.006052385, 0.0065245796, 0.051175676, 0.01799444, -0.015225083, 0.037060887, -0.0001232332, -0.008914267, -0.028969772, -0.0042178454, 0.015684515, -0.0063395305, 0.01730529, 0.0020706367, 0.01350221, 0.007274348, -0.0010265445, -0.0144338375, 0.02731071, -0.005950289, -0.019411024, 0.010815807, 0.032313418, -0.016067376, 0.0039307005, -0.006546913, 0.034993444, 0.015978042, -0.003972177, -0.020380937, -0.005615286, 0.0032479325, -0.011256096, 0.003187313, -0.0035765544, 0.015416513, 0.0052515687, -0.0071722516, 0.005302617, -0.027234137, 0.001990874, -0.019436548, -0.006451198, 0.030143877, -0.011875054, 0.04354399, 0.027872238, 0.0016104067, -0.002837953, -0.016258806, -0.002268448, 0.0006664164, 0.025166692, -0.012985349, 0.032313418, -0.017586054, 0.0121941045, 0.0077848285, -0.0018106108, -0.016360901, 0.004367799, -0.02491145, -0.003314933, 0.016207758, 0.004587944, 0.006033242, -0.00506971, 0.02547298, -0.008646265, 0.014880508, -0.004852756, 0.023801155, 0.025945174, -0.02160609, -0.033538572, -0.68118525, -0.043952376, 0.020074647, -0.0036339834, 0.0017978487, 0.02464345, 0.0067192004, 0.015442037, 0.0057173823, -0.01629709, 0.011811243, 0.005442999, 0.011077428, -0.013566021, -0.0060491944, -0.02243562, -0.0033851243, 0.022205904, -0.002155185, -0.015480323, 0.0005595345, 0.0069297734, -0.017649865, -0.011696386, 0.021963425, 0.009029125, 0.017445672, -0.00071148225, -0.017394625, -0.0018536826, -0.016845858, 0.015122986, -0.020827606, -0.013023635, 0.04696421, -0.011415621, -0.007070156, 0.024758307, 0.008799409, 0.026417369, -0.009635321, -0.0017547769, 0.01204096, -0.030935122, -0.013808499, 0.010694568, 0.015071939, -0.006680914, 0.0321858, 0.0014157859, 0.019500358, -0.03187951, 0.0051048053, 0.00994799, 0.007893305, 0.0015099058, 0.04234436, 0.00076292915, 0.0009435914, 0.007210538, 0.007133966, 0.0022174, -0.004664516, -0.016194995, -0.016628904, -0.0009108887, -0.038209468, -0.015850421, -0.018415585, -0.00071227987, -0.0053377124, 0.0041859406, -0.015850421, 0.02382668, 0.02027884, -0.005152663, 0.030756453, -0.009029125, 0.00024207945, -0.0021583757, 0.011141238, -0.014446599, -0.03111379, -0.017318053, 0.029633395, -0.021695424, -0.016246043, -0.025421932, 0.016105661, -0.0045751818, 0.025000785, -0.0013774999, -0.016105661, -0.0081357835, -0.013795737, 0.03614202, 0.002204638, 0.0030086448, 0.0034457438, 0.0059470986, -0.0026305702, -0.015978042, -0.0045177527, -1.5173586e-06, 0.026264224, -0.012213247, -0.027361758, 0.028408242, 0.0111795245, -0.015926993, 0.025077358, -0.0111795245, -0.009916085, 0.017662628, 0.011989912, -0.027846714, 0.04821489, 0.0024247826, 0.018709112, -0.008678169, 0.0065915803, 0.024822118, -0.009156745, -0.008295309, -0.0017834915, -0.013195923, -0.008907885, -0.012442963, -0.044207618, 0.0014556672, 0.0031649794, 0.009750179, 0.01679481, 0.006757486, 0.008646265, 0.0035574113, 0.010949808, -0.021618852, 0.024439257, -0.005797145, -0.011332668, -0.0010289374, -0.026008984, 0.013578783, 0.0033978862, -0.034253243, -0.03461058, -0.006119386, -0.012328105, 0.015352703, -0.023813918, -0.012315343, -0.039255954, 0.009903323, 0.015620705, -0.016526807, -0.02211657, -0.005430237, -0.013285256, 0.029837588, 0.016628904, 0.0011182715, 0.001812206, -0.0007577446, -0.0104329465, -0.0216699, -0.008295309, 0.0413234, -0.0007465778, -0.026442893, -0.021133894, 0.0010066038, -0.0039275098, -0.008212356, -0.015161272, -0.019972552, -0.0062629585, -0.015071939, 0.0034010767, -0.009437509, 0.01850492, 0.017164908, 0.009986276, -0.017407387, 0.04739812, 0.006999965, 0.016501283, 0.0028507148, 0.0015226678, -0.0018473015, -0.012525917, -0.010254278, 0.002959192, -0.0092779845, 0.009928847, 0.012149437, 0.010656281, 0.011211429, 0.0023817108, -0.0021950663, 0.00944389, -0.011351812, 0.017535007, -0.014280694, 0.00602048, -0.026876802, 0.017905105, -0.010694568, 0.0005623262, 0.026442893, 0.004367799, -0.023979824, -0.0032096466, -0.007574255, 0.016143948, -0.00589286, -0.024311636, 0.002935263, 0.0020339459, -0.0123344865, 0.0011836768, 0.014791174, 0.023520391, -0.014076501, -0.0037616035, 0.0016383235, 0.032338943, 0.01761158, -0.0070254887, -0.018173108, -0.023035435, -0.005101615, -0.012034579, 0.010700949, -0.032543134, -0.006077909, 0.0056408104, -0.0320837, 0.022308, 0.011938864, -0.011319906, 0.03517211, 0.025613362, 0.0048878514, 0.0039370814, -0.0013487854, 0.016335377, 0.011709148, -0.017854057, 0.006617104, -0.012525917, 0.009424747, -0.0034010767, 0.015658991, 0.039255954, -0.0083655, 0.036780123, 0.0015936565, 0.017101098, 0.023405533, -0.026085556, -0.0063714352, 0.0058450024, -0.0057684304, 0.013049159, -0.0009427938, -0.0054717134, -0.0018058249, 0.0050984244, -0.009386461, -0.017420148, -0.0018329442, 0.02876558, -0.007299872, 0.02674918, -0.010471232, -0.0052707116, -0.004361418, 0.0308075, 0.011422003, -0.008097498, -0.026111081, 0.014816698, -0.0011900578, -0.0047729933, -0.030118352, -0.023048198, 0.0177392, -0.0006349102, 0.009979894, 0.008378262, 0.009533225, 0.029199488, -0.0060842903, 0.0076189223, -0.02579203, 0.0057716207, 0.007880543, 0.01660338, 0.002325877, -0.004568801, -0.018275203, -0.032134753, -0.015875945, 0.011824006, 0.009845894, -0.006744724, 0.008422929, -0.01013942, -0.028740056, -0.011492194, -0.0005914396, 0.00079363777, -0.013770213, -0.005430237, -0.002332258, -0.029250536, 0.004530515, 0.034431912, 0.020802082, 0.005232426, -0.010113896, -0.012034579, -0.00880579, 0.077235706, 0.0249625, 0.008052831, 0.010094753, -0.002775738, -0.011562385, -0.028586911, 0.011983531, -0.01324697, -0.0065915803, 0.01660338, -0.026060032, 0.001767539, 0.004485848, 0.005165425, -0.006680914, 0.0071148225, -0.0013128922, 0.033793814, -0.020138457, 0.0061321477, 0.0017563722, -0.0140254535, 0.0123344865, 0.0037296985, -0.006483103, 0.007529588, -0.010228754, 0.015710039, -0.011568765, 0.00899722, 0.009737416, -0.007567874, -0.006572437, -0.017573293, 0.0024471162, -0.0017946583, 0.0056248577, 0.010145801, -0.014650792, 0.03606545, 0.004460324, 0.012787538, -0.0068851067, -0.02142742, 0.007076537, -0.014012692, 0.020546842, -0.011989912, -0.018173108, 0.026315272, 0.007357301, -0.015263368, 0.0059215743, 0.010720092, 0.0035893165, -0.010956189, -0.01807101, -0.007861401, 0.00093880564, 0.000978687, -0.007331777, 0.0024423304, -0.005494047, -0.015033652, -0.008659027, 0.0038636997, -0.0031043598, -0.017981678, -0.0034616962, 0.014625268, -0.012659918, -0.021874093, 0.0079954015, 0.027285187, 0.008544168, 0.017624341, -0.024311636, -0.01781577, 0.041655213, -0.0004343073, -0.0077401614, -0.0038668902, -0.0029879066, -0.0070382506, 0.0010345208, 0.025957936, -0.023494868, -0.014408314, -0.010560567, 0.03236447, -0.0018935638, 0.013068303, -0.005293045, -0.013770213, -0.010343612, 0.029607872, 0.0084612155, -0.009679987, 0.005293045, 0.003605269, -0.024783831, -0.00066163065, -0.015442037, 0.015799373, 0.01425517, 0.02851034, 0.0034553153, -0.017968915, 0.013195923, 0.0070127267, -0.009450272, -0.012557821, -0.0038987952, 0.004734707, 0.0068276776, -0.006065147, 0.014357266, -0.008722836, -0.027157566, -0.0015202749, -0.040838443, 0.027157566, 0.0017005383, 0.010675425, 0.0017101099, 0.027616998, -0.005755668, -0.013259732, 0.013323543, -0.009131221, 0.020648938, -0.010649901, -0.017330814, -0.033946957, -0.025485741, 0.033538572, 0.0022923767, -0.01604185, -0.0048814705, 0.011626194, 0.012762014, 0.009839512, 0.0026911898, -0.03529973, -0.023035435, -0.0055801906, 0.0040072724, -0.007070156, 0.016935192, -0.00957151, 0.0055546667, -0.009456652, 0.011071047, -0.001292154, -0.012666299, -0.031905036, -0.025562314, 0.03047569, 0.016743762, 0.017356338, -0.0026401416, 0.0038828426, 0.0016718238, -0.005666334, 0.0028826199, -0.00893341, 0.0018361347, -0.030118352, 0.014497648, 0.0138850715, -0.0028491195, 0.023941537, -0.005545095, 0.012436583, 0.013400114, -0.0042306078, -3.614242e-05, -0.026442893, -0.027412806, 0.007638065, -0.0001354967, -0.0076827323, -0.0018808017, -0.0001483584, -0.018594254, 0.01754777, 0.0029225012, -0.008008163, 0.0037616035, 0.03338543, -0.0009826751, 0.034304295, -0.0045528486, -0.002211019, -0.0052770926, -0.026902325, -0.0035223158, 0.013463925, 0.0068787253, 0.007236062, 0.005570619, 0.011906959, -0.024860403, 0.01577385, 0.01286411, 0.03149665, 0.008537787, -0.009207793, -0.01976836, -0.031011693, -0.036014404, -0.03662698, -0.03226237, 0.013336305, 0.0022317572, -0.031598747, 0.021542279, -0.008225118, -0.020457508, 0.008040069, 0.011530479, 0.029122915, 0.0008414953, 0.008907885, 0.02160609, -0.008595216, -0.008659027, 0.008320833, -0.011402859, -0.0067766295, 0.019270642, 0.019500358, -0.020227792, 0.024809355, 0.012723728, 0.011760196, 0.022091046, -0.009373699, -0.0033532192, -0.005289855, 0.010777521, -0.020776559, 0.011868672, -0.026136605, 0.005848193, -0.037290603, 0.0022923767, -0.0024168063, -0.010420185, -0.014663554, -0.0056535723, -0.03338543, 0.015327179, 0.021631613, 0.008391025, 0.006250196, -0.0068978686, -0.008384643, -0.0032176226, -0.010483994, 0.032721803, 0.00030868122, 0.0015354297, 0.006476722, -0.00128338, -0.010196849, -0.008257023, -0.003212837, 0.025370883, -0.0034489343, -0.0022174, -0.024132969, 0.008148545, 0.038617853, -0.01653957, -0.0007577446, -0.002136042, -0.0054334276, 0.0027214994, 0.006680914, 0.0018345395, -0.015199559, 0.018607017, -0.024069158, -0.012245152, -0.028050907, -0.0036084594, 0.008193213, -0.015607943, -0.005248378, -0.028050907, 0.014982604, 4.454242e-05, -0.0038381757, -0.017394625, 0.031037217, 0.005107996, -0.018594254, 0.01939826, 0.00013669314, 0.015901469, 0.002268448, 0.014318979, 0.004240179, -0.02515393, 0.030654358, 0.0021583757, -0.03529973, -0.027080994, -0.008907885, -0.0111795245, 0.0012618441, -0.005031424, 0.009335414, -0.0021902807, 0.013157636, -0.020636177, 0.0005794752, -0.005924765, -0.026340798, 0.018147584, 0.020623414, -0.020891417, -0.017522246, 0.0090099815, -0.011173143, 0.0013695236, -0.027361758, -0.008499501, -0.012647156, 0.01863254, 0.013221446, -0.01933445, -0.0039434624, -0.012321725, -0.012423821, 0.0033276952, -0.0021934712, 0.014370028, -0.0026991658, -0.0012474868, -0.024579639, 0.0142934555, -0.021465708, 0.013936119, 0.0016135972, -0.019755598, -0.017968915, -0.002136042, 0.0042050835, -0.004594325, -0.004811279, -0.030424641, -0.018351777, 0.0027023565, -0.003225599, -0.0027932858, 0.0017850867, 0.0081357835, 0.018262442, -0.0056535723, -0.015480323, 0.020546842, 0.0007437861, -0.0015936565, -0.018045487, -0.017841296, -0.008403786, -0.009297127, 0.013936119, 0.0038892238, 0.004556039, -0.008327214, 0.026442893, -0.016922431, 0.004916566, -0.004125321, -0.022997148, -0.00071307755, 0.02142742, 0.0200236, 0.031343505, 0.010069229, -0.008129403, -0.02313753, -0.005545095, 0.009469414, 0.037111938, -0.012513154, 0.0149698425, 0.009431128, -0.01033085, 0.0013926547, -0.03098617, 0.0075423503, 0.011683623, 0.021312563, 0.005596143, -0.0074849213, 0.011989912, 0.028586911, -0.0028507148, -0.022780195, -0.0014907627, -0.005360046, -0.03504449, 0.0014046192, 0.009533225, -0.028740056, 0.0076061604, -0.023673536, -0.004169988, -0.02344382, -0.007523207, -0.024796592, -0.00880579, -0.03392143, 0.028791104, 0.024554115, -0.009552367, 0.0088696, -0.028535863, -0.0027470235, -0.007006346, -0.009156745, -0.00969275, -0.026570512, -0.006623485, -0.007861401, 0.0006995179, -0.031649794, -0.005564238, 0.006540532, 0.0069170115, 0.020368174, 0.23420848, 0.008754741, -0.013591545, 0.032134753, -0.01812206, 0.025077358, 0.02376287, -0.015875945, 0.028484816, 0.036652505, -0.021657137, 0.0006440829, 0.00089174573, -0.0018345395, 0.011989912, -0.013030016, -0.03376829, -0.002338639, -0.0014357265, -0.0090801725, 0.01685862, 0.002649713, 0.009169507, 0.00033121413, 0.028995296, 0.015697276, -0.0069042495, 0.0036116499, 0.004476276, 0.01178572, -0.0012068079, -0.018721875, 0.004364609, -0.0060619568, 0.002522093, -0.0029065486, -0.0067383433, 0.003219218, 0.009386461, 0.038617853, 0.006058766, 0.0062629585, -0.024873165, -0.008550549, 0.004785755, 0.00849312, -0.015735563, -0.0067383433, 0.021950664, 0.015046414, -0.010152182, -0.0061449097, 0.044513904, 0.023214104, -0.011007237, 0.021823043, 0.033615146, -0.011268858, 0.025715457, -0.010349994, -0.0151102245, 0.023673536, -0.019883217, 0.004594325, 0.019155784, -0.0015721206, -0.015799373, 0.0051399013, 0.021912377, -0.022780195, 0.011332668, 0.0024550925, 0.0077146376, 0.0018042297, -0.0057173823, -0.019653501, 0.022716384, -0.006128957, 0.027897762, 0.006508627, -0.016360901, -0.008129403, -0.007644446, 0.01799444, -0.006700057, -0.008914267, -0.0018329442, 0.015684515, 0.022831243, -0.0068659633, 0.0041029872, -0.0029575967, 0.0016925621, 0.010273421, 0.030373594, 0.022550479, -0.005360046, 0.007363682, -0.026111081, -0.000995437, -0.034942392, -0.035657067, 0.004214655, -0.017190432, -0.00912484, 0.007248824, -0.0009746988, 0.0015107034, 0.033666193, -0.0004159619, 0.0040710825, -0.011996293, 0.0083335955, -0.008308071, 0.009003601, -0.0061576716, 0.013961643, -0.013234208, -0.017101098, -0.018747399, -0.0034648867, -0.020687224, 0.0017866819, -0.006700057, -4.6710964e-05, -0.019857693, -0.0027342616, -0.0025045453, 0.007261586, -0.042778272, 0.036473837, -0.0046868497, 0.02136361, -8.260413e-05, -0.005417475, 0.011906959, 0.00017288541, -0.0077210185, -0.00047059925, -0.008129403, 0.001628752, 0.0017404197, 0.00988418, -0.0052579497, 0.0014756079, -0.0066745332, 0.005886479, -0.02782119, -0.02718309, -0.024298875, -0.025396409, -0.010401041, -0.009405605, -0.0070573934, 0.009354556, 0.0030836216, -0.021478469, -0.008952552, 0.00095156766, 0.03111379, -0.0113773355, -0.0014588577, 0.026468417, -0.014803936, 0.013310781, 0.0030469308, -0.16253701, 0.024069158, 0.014140312, -0.014918794, -0.0050473763, -0.0026832134, 0.016182235, 0.020444747, -0.020189505, 0.028714532, -0.0036403644, 0.024630686, -0.042446457, -0.009137602, -0.012557821, 0.0009013172, 0.00013061124, -0.0009866632, 0.017407387, 0.0033564097, 0.007491302, -0.02091694, 0.022767432, 0.021057323, 0.0151102245, -0.0032559088, -0.026315272, 0.03256866, 0.0074721593, -0.007191395, -0.0070191077, -0.0034712679, -0.00025763316, 0.02491145, 0.016488522, -0.0026018557, 0.0023242817, 0.010547805, -0.00024566878, -0.010381898, 0.002238138, 0.028612435, 0.009609796, 0.012181343, 0.001036116, 0.02743833, 0.029097391, 0.02117218, 0.0035510303, -0.009597034, 0.023265151, -0.03338543, -0.013425639, -0.0078550195, 0.022154856, 0.020317126, 0.016399188, 0.009297127, -0.00817407, 0.009214174, 0.00066721404, -0.03864338, -0.023456581, 0.006377816, 0.0010608424, -0.0069808215, 0.01083495, 0.011906959, -0.004473086, 0.006052385, -0.020508556, -0.006259768, -0.0058450024, -0.02136361, -0.006559675, 0.0008973291, -0.01159429, -0.0026066413, -0.0035382684, -0.013183161, 0.010318088, 0.02249943, -0.015008128, -0.008786647, -0.008844076, 0.008927029, 0.004903804, 0.00823788, -0.024235064, -0.0005890467, 0.023290675, -0.036218595, 0.0037296985, -0.03946015, 0.008971696, 0.017343577, 0.0015737158, -0.011077428, 0.007848638, 0.012200485, 0.00022393346, 0.0013184756, -0.023839442, 0.00957151, 0.030322544, 0.018466635, -0.012238772, 0.0062151006, 0.030450165, -0.0040742727, -0.01685862, 0.022359049, -0.0046964213, 0.0067638676, 0.022984387, 0.010190468, 0.013731927, -0.02851034, -0.0014429052, 0.009597034, 0.048878513, -0.0061672432, -0.0062852916, 0.019500358, -0.0023099245, -0.030960646, -0.099952094, -0.013668117, 0.01780301, 0.020751035, 0.013706403, 0.02700442, 0.004986757, 0.0173691, 0.0023418295, 0.02414573, 0.0021870902, -0.022805719, -0.019500358, 0.0103627555, 0.005315379, -0.013463925, 0.018594254, -0.023022672, -0.05063967, 0.0037775561, -0.003924319, 0.0068532014, -0.0034234102, -0.016743762, -0.005296236, 0.0034457438, -0.024184017, 0.0058577643, 0.01786682, -0.0040327962, 0.010662663, -0.014791174, 0.0041923216, -0.0066681523, -0.008665407, -0.00039263134, -0.0047602314, 0.0012658322, 0.027514901, -0.030935122, -0.0045975153, 0.0022237808, 0.015263368, -0.032823898, -0.004138083, 0.010273421, -0.00010468839, 0.012296201, 0.0042497506, -0.019245116, 0.006077909, 0.020636177, -0.034636106, -0.009711892, 0.04410552, -0.029480252, 0.011613432, 0.01703729, -0.027080994, 0.021810282, 0.0048176604, 0.01703729, 0.0013152851, 0.029250536, -0.02598346, -0.016386425, -0.049006134, -0.008595216, 0.023022672, -0.031471126, 0.0034776488, 0.017535007, -0.016156709, -0.0040774634, -0.019819407, 0.019181307, -0.025192216, -0.013010873, 0.00842931, -0.012219628, -0.026417369, -0.020380937, 0.0081357835, -0.005666334, -0.0074147303, 0.029556824, -0.021950664, -0.008442072, 0.025549551, -0.002971954, 0.0133490665, 0.038617853, 0.013285256, -0.019525882, -0.008614359, 0.020967988, 0.007331777, 0.0028570958, 0.019206831, -0.018134821, -0.019755598, -0.0079252105, -0.035886783, 0.014778412, -0.014791174, -0.02445202, -0.0118559105, 0.013157636, -0.011709148, 0.0034680772, -0.011543241, -0.004476276, -0.011224192, -0.007344539, -0.012634394, -0.015978042, -0.005369617, 0.0027103326, 0.016756523, -0.001984493, 0.011875054, -0.009226936, -0.007248824, -0.0014915604, 0.0003704972, 0.008033688, -0.033232283, 0.0067192004, -0.016462998, -0.01906645, -0.029454729, -0.0020052313, 0.024184017, -0.02649394, 0.011485812, 0.026978897, -0.018709112, -0.03193056, -0.012162199, 0.021376373, 0.008435691, -0.020074647, -0.02389049, -0.022984387, 0.017152147, -0.0109817125, -0.01976836, 0.030781977, -0.01260887, -0.0076508275, 0.002065851, 0.012787538, 0.01850492, 0.017700912, 0.0027645712, -0.0052834735, -0.01159429, -0.008563311, 0.029148439, 0.012149437, 0.0067766295, -0.013821261, 0.0063522924, -0.0046868497, 0.013476687, 0.011664481, -0.0032463372, 0.018658064, -0.005666334, -0.0031266934, -0.0043199416, -0.023877729, -0.01425517, -0.0040264153, 0.050792817, 0.01634814, 0.012564203, -0.005950289, -0.009654463, -0.018262442, -0.012015436, 0.01703729, 0.0048240414, -0.0037233175, -0.01236001, -0.0010496756, 0.027642522, 0.023596963, -0.053243123, -0.008231499, 0.018262442, -0.0013639402, -0.024809355, 0.012755632, -0.0038605093, 0.008505883, 0.0132086845, 0.00033719634, -0.001473215, -0.006103433, -0.0029496204, 0.022333525, 0.0062246723, -0.017586054, -0.007382825, -0.03440639, -0.010113896, 0.024247827, -0.0069425358, -0.018339014, -0.0144338375, 0.018275203, 0.009112078, -0.014523172, 0.0035382684, 0.014114787, -0.0070382506, -0.0020291603, -0.039434623, -0.01013942, -0.013527735, 0.01362983, 0.011492194, 0.005190949, 0.009099316, -0.0032622898, 0.021376373, 0.010656281, 0.02649394, -0.038388137, 0.018466635, 0.007465778, 0.0027613807, 0.012876872, -0.015352703, 0.00228121, -0.024120206, -0.011996293, -0.016360901, 0.017956154, 0.0031346697, 0.0512012, -0.008856838, -0.031726368, 0.033308856, -0.024158493, 0.0015027272, 0.0121941045, 0.0007314229, -0.022831243, -0.0118559105, -0.0111795245, 0.013706403, 0.020176744, -0.016590618, -0.0045751818, -0.00020319519, -0.029812064, 0.027463853, -0.02807643, -0.0013352257, 0.028714532, 0.002611427, 0.011236954, 0.015442037, -0.018709112, -0.019053686, 0.014459361, 0.026111081, 0.0031665748, -0.0010576519, 0.019998075, -0.008754741, -0.022027235, -0.011504956, 0.0010209611, -0.0361165, -0.01596528, -0.014459361, -3.359999e-05, 0.014625268, 0.0084612155, 0.029888637, -0.020036362, -0.020100173, 0.005685477, -0.012781157, -0.0077848285, 0.007185014, -0.006240625], + "object": "embedding" }, { "object": "embedding", @@ -68,7 +70,7 @@ X-Request-Id: req_058307448e324bc3958c7da418e46690 } ], "model": "text-embedding-ada-002-v2" -}327 22092 +}327 22142 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -80,20 +82,22 @@ Content-Type: application/json Content-Length: 21186 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Thu, 22 Jan 2026 20:04:17 GMT +Date: Mon, 21 Sep 2026 07:48:02 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst -Openai-Processing-Ms: 105 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 110 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload -Via: envoy-router-5bddb4cdd8-ggbwb +Via: envoy-router-84fffc8dd7-pxjf2 X-Content-Type-Options: nosniff -X-Envoy-Upstream-Service-Time: 126 +X-Engine-Geography: EU X-Openai-Proxy-Wasm: v0.1 X-Ratelimit-Limit-Requests: 10000 X-Ratelimit-Limit-Tokens: 10000000 @@ -101,15 +105,15 @@ X-Ratelimit-Remaining-Requests: 9999 X-Ratelimit-Remaining-Tokens: 9999979 X-Ratelimit-Reset-Requests: 6ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_25786abf429546a0a9de6148854e5360 +X-Request-Id: req_07c4f59d847c4190ab95c4fe99d92ec5 { "object": "list", "data": [ { - "object": "embedding", "index": 0, - "embedding": [0.010940914, 0.00037101895, 0.0019054401, -0.018620905, -0.012196111, 0.010196854, -0.024728665, -0.0048946193, 0.019022051, 0.0058942474, 0.0070329825, -0.0033191538, -0.022502957, 0.0068453504, -0.005832782, 0.0009373536, 0.010552709, 0.016097572, 0.026281487, -0.020885436, -0.032816272, 0.009122821, -0.003642658, -0.0032479828, -0.021040717, 0.008708735, 0.030823486, -0.004545235, 0.009433384, 0.01748217, 0.03421381, -0.010170974, 0.0015277489, -0.039596923, -0.012558435, 0.02888246, 0.00837229, 0.0072982563, 0.01519176, -0.007815863, -0.0021076303, 0.009562786, 0.00030207212, 9.371514e-05, -0.0046228757, 0.0040761535, 0.011186778, 0.016226973, -0.015748188, 0.0040082177, 0.021959469, 0.036517162, -0.02049723, -0.017805675, 0.009291043, -0.018426802, 0.0032415127, 0.041434426, -0.035973676, -0.011549102, 0.009724538, 0.002754639, -0.0017954487, -0.001341734, -0.004102034, -0.015049418, -0.01288841, 0.0018569145, -0.0029940319, 0.0110250255, 0.034343213, 0.055849776, 0.015101179, 0.01589053, 0.033152718, -0.0014484903, 0.0087928455, 0.0023809914, -0.0065024355, -0.0027853716, 0.00987335, 0.0012762243, -0.027873127, -0.0019572007, 0.023175845, 0.00016347074, 0.02357699, 0.027588444, -0.007912914, -0.0021302756, -0.015372923, 0.028494256, 0.009769829, -0.011251478, -0.0077058715, 0.01586465, 0.019229094, 0.022671178, 0.004791098, -0.02968475, 0.015579965, 0.017715093, -0.03856171, 0.0033417991, -0.019034991, -0.027484922, -0.000926031, -0.020717213, 0.020354887, -0.014907076, -0.034472615, 0.028261332, 0.023318186, -0.016201094, -0.002047782, -0.01818094, 0.035559587, -0.018698547, -0.009815119, -0.016421076, 0.0045064143, 0.043634254, 0.026126204, -0.026993196, 0.028753059, 0.002591269, -0.008864017, -0.0067030084, -0.026372068, -0.016472837, 0.007692931, 0.022671178, 0.009316923, 0.027536683, -0.006596252, 0.0040308633, -0.016252855, 0.021687726, 0.00646685, -0.008171718, 0.011736735, 0.015424684, -0.009252222, -0.0074858884, 0.00986688, 0.034162052, 0.012364333, -0.011283829, -0.021739487, -0.0035132563, 0.01445417, 0.00044684028, 0.015411743, 0.0130372215, 0.0069488715, 0.017145727, -0.03623248, -0.018336222, -0.030849367, -0.012726658, -0.023357008, -0.010119214, 0.025957981, -0.0077705723, 0.028649537, 0.020238427, 0.027226118, 0.012364333, -0.0064215595, -0.003500316, -0.012435504, 0.019940803, -0.020303128, 0.0072335554, 0.004037333, 0.0078029227, 0.017249247, -0.0077899825, -0.008876957, -0.0038917563, 0.0061336407, -0.020290187, 0.01749511, -0.009232812, -0.0095174955, -0.023939315, 0.0104103675, -0.01666694, 0.0027061133, -0.006631837, 0.030487042, 0.005842487, -0.0058133714, -0.011245009, -0.65384096, -0.046429332, 0.023887554, -0.02202417, 0.012344923, 0.03035764, 0.02357699, 0.030849367, 4.443129e-05, -0.02348641, 0.012830179, 0.0069553414, 0.027743725, -0.017702153, -0.0037300042, -0.024625145, 0.022425316, 0.014285948, -0.011490871, 0.0017356004, -0.0060527646, 0.020885436, 0.00063164206, -0.006389209, 0.02820957, 0.009045179, 0.017702153, -0.008488752, -0.009679248, 0.015308222, -0.024366342, 0.015321162, -0.020354887, -0.005528688, 0.037552375, -0.00085647753, -0.0212607, 0.015359983, 0.0062953928, 0.024819247, -0.0097439485, 0.008482282, 0.008495222, -0.01589053, 0.0074729486, 0.00025597276, 0.018944409, 0.0017792735, 0.0377853, -0.014492991, 0.00914223, -0.017081026, -0.0031638716, 0.014156546, 0.03284215, 0.0013207061, 0.04461771, 0.019306734, 0.005751906, 0.006282453, 0.003338564, -0.001672517, -0.035326667, -0.008132897, -0.031366974, 0.0043737777, -0.038173504, -0.03470554, -0.023046443, -0.02346053, 0.010462128, 0.011122077, -0.01900911, 0.020393709, 0.028468376, 0.0073306067, 0.02952947, 0.0032091623, 0.011458521, -0.012260811, -0.0056645595, -0.0049916706, -0.03108229, -0.0145447515, 0.029348306, -0.016615178, -0.019280855, -0.01667988, 0.016511658, 0.005020786, 0.013496598, 0.018646786, 0.00041812926, -0.006165991, -0.00142908, 0.026941435, -0.004781393, 0.0017339828, -0.00045411912, -0.001118516, 0.006123936, -0.012435504, -0.0060074744, 0.0031800468, 0.024081657, -0.015722306, -0.027484922, 0.03411029, 0.01977258, -0.00685829, 0.008728145, -0.04182263, -0.015994051, 0.0071947346, 0.009362213, -0.032221023, 0.045989364, 0.0014808407, 0.0024553973, -0.0042023202, 0.017663334, 0.0045064143, -0.007945265, -0.009232812, 0.024482803, 0.0016102424, 0.0017792735, -0.02509099, -0.018439744, 0.017986838, 0.019086752, 0.0007299065, 0.008119957, -0.00094058865, -0.009426914, -0.013276615, 0.009595136, -0.011070316, 0.023887554, -0.023952255, -0.021674786, -0.009051649, 0.0006474129, 0.0032318076, -0.004878444, -0.016563417, -0.030150598, -0.0001479021, -0.028546017, -0.0063374485, -0.03403265, -0.014648273, -0.04016629, 0.0066835983, 0.025686238, 0.001750158, -0.03328212, 0.00026648663, -0.0035035512, 0.016485777, 0.0033029786, -0.012551965, 0.0028533076, 0.005839252, -0.008139367, -0.021571264, -0.020587811, 0.023796974, -0.0003390729, -0.02505217, -0.0032512178, -0.008779906, -0.0055675083, -0.0077770427, -0.024599263, -0.004923735, -0.0044158334, -0.014790615, -0.00012242615, -0.0073370766, -0.00047595563, 0.008074666, -0.0029244786, 0.010772692, 0.032945674, 2.8913193e-05, 0.016861042, 0.018413862, -0.017042205, 0.006243632, 0.002578329, -0.0057195555, -0.014609452, -0.017728034, 0.0074664783, 0.0052569443, -0.005463987, -0.0063180383, 0.01062388, -0.0060333544, 0.025401555, -0.0032835682, 0.018802067, -0.028261332, 0.013406017, -0.02511687, 0.011542632, -0.008954598, -0.008391701, 0.028623657, 0.017792735, -0.042935487, 0.0024246646, -0.019345555, 0.017960956, -0.01291429, -0.020950137, 0.016861042, -0.019707879, 0.0038141152, 0.005011081, 0.0037720597, 0.02958123, -0.006227457, -0.015023538, -0.01065623, 0.023227606, 0.024547504, 0.0013902596, -0.013418957, -0.018879708, -0.012299632, -0.0061142305, 0.013444837, -0.017676273, 0.00681947, 0.0050434317, -0.017844494, -0.0035164913, 0.009756888, -0.006696538, 0.03266099, 0.0021852714, -0.005451047, 0.029814152, -0.0038335256, 0.007660581, 0.028313093, -0.027510803, 0.01138088, 0.0070847436, -0.00042823877, -0.01749511, 0.02197241, 0.018672666, -0.0107468115, 0.045212954, -0.012351393, 0.01290135, 0.012610196, -0.0020332243, -0.017236307, 0.012707247, -0.021623025, 0.014324768, -0.009808649, -0.025621537, -0.00493991, 0.012331982, -0.012293162, 2.7598957e-05, 0.010843863, 0.012991931, 0.0070265126, 0.009316923, -0.00681947, 0.0012835031, -0.018620905, 0.025699178, 0.0076864613, -0.006140111, -0.020898376, 0.021726547, 0.00683241, -0.0080681965, -0.008268769, -0.021687726, 0.01440241, -0.012759008, 0.009718068, 0.016511658, 0.027459042, 0.020419588, -0.0082364185, -0.00569691, -0.030538803, 0.007938795, 0.0078029227, 0.021765366, 0.0044352436, -0.009899231, -0.0009575726, -0.041356783, -0.013690701, 0.017042205, 0.010953855, 0.004710222, -0.015631726, -0.026203845, -0.04927617, -0.012564906, 0.00022584641, -0.01220258, -0.0042929016, -0.00569691, -0.008398171, -0.044255383, -0.009957462, 0.04557528, 0.0258674, -0.017365709, -0.028390734, -0.008689324, 0.0007481036, 0.07049805, 0.02743316, -0.013393076, 0.01587759, -0.00081765704, -0.010455658, -0.0034841408, -0.0019620534, 0.008022905, -0.008935188, 0.003068438, 0.002510393, 0.0032593054, -0.0079582045, 0.0036361879, -0.0070071025, -0.005628974, -0.019358495, 0.011743205, -0.03113405, -0.02127364, 0.017637452, -0.005758376, 0.020846615, -0.0070912135, 0.028002528, 0.014117726, 0.00058109453, 0.01667988, -0.026061503, 0.0099121705, 0.023072325, -0.012739598, 0.0050369613, -0.027717846, -0.030487042, -0.010889154, 0.021713607, 0.0070847436, -0.003581192, 0.022412375, 0.0019749936, -0.0024780426, -0.02274882, -0.0035456067, 0.025401555, -0.016175212, 0.011704384, -0.0076799914, -0.015554085, 0.007505299, -0.007117094, -0.0017275128, -0.0069359313, 0.0052342988, -0.011173837, -0.033825606, -0.014040085, -0.003869111, -0.022127692, 0.0061271708, 0.014040085, 0.009750418, 0.00084596366, -0.018310342, -0.032790393, -0.013975384, 0.0027837541, -0.008482282, -0.02192065, -0.020794854, -0.0036232478, -0.0073241363, -0.004244376, 0.03364444, 0.02655323, 0.025336854, -0.023589931, 0.005011081, 0.033592682, 0.0008322147, -0.010229205, 0.006690068, 0.0056225043, 0.010138623, -0.0012592403, 0.035896033, -0.009996282, -0.0048428588, 0.006224222, 0.030668205, -0.0019539658, 0.021480683, -0.015735248, -0.007867624, -0.0036620682, 0.01290782, 0.016589299, -0.025453316, -0.024443982, 0.013574239, -0.023991076, 0.0052342988, -0.017158667, -0.009938051, 0.0038270555, 0.008508163, -0.0028436026, -0.011982598, 0.013794222, 0.011866136, -0.0057195555, -0.016654, -0.005848957, 0.008844607, 0.008113487, 0.009614547, 0.024172239, -0.021403043, -0.0019086752, 0.033049196, -0.046843417, 0.030823486, -0.0040632137, -0.030927008, -0.0005730069, 0.008993419, -0.0039014614, 0.004930205, 0.0082881795, -0.018413862, 0.03656892, -0.0041376194, -0.011924367, -0.032428067, -0.010073923, 0.015450563, 0.014764735, -0.018620905, 0.0010384487, -0.011898487, 0.01366482, -0.008139367, -0.018659726, -0.03871699, -0.029891795, -0.0028565426, 0.017158667, -0.004260551, 0.026035624, -0.0045937607, 0.0068906406, -0.011963188, 0.0023098204, -0.022412375, -0.012060239, -0.01441535, -0.012681367, 0.021519504, 0.010520359, 0.008935188, 0.0019151452, 0.0070200423, 0.009724538, 0.0039273417, 0.0085146325, -0.016239913, -0.0073758974, 0.0008872104, 0.016188154, 0.010403897, 0.008669915, 0.010733872, 0.012713717, 0.008728145, 0.036931247, -0.017922137, -0.0110250255, -0.019552598, -0.032324545, 0.013781281, -0.014285948, -0.017378649, -0.0008221052, -0.0053604655, -0.000670867, 0.005454282, 0.0033547392, 0.0011872606, -0.016343435, 0.036206596, 0.0006227457, 0.033722084, -0.019707879, 0.01441535, 0.0075829397, -0.019863162, -0.014764735, -0.0065380214, -0.004344662, 0.0041635, 0.018931469, 0.008967538, -0.020303128, 0.0007489124, -0.008087606, 0.013354256, 0.0043964228, -0.016356375, -0.021830067, -0.030927008, -0.017210428, -0.017365709, -0.032143384, 0.012571376, -0.004402893, -0.045471758, 0.010552709, 0.007136504, -0.035430185, -0.009996282, -0.010830923, 0.026165025, 0.012978991, 0.0032835682, 0.017106906, -0.010319786, 0.0036103076, -0.023978136, -0.027795486, 0.00456788, 0.026734393, 0.03737121, -0.028494256, 0.027303759, 0.010073923, -0.015411743, 0.0009624252, -0.025530957, -0.00835288, -0.007822333, 0.017042205, -0.025919162, 0.011225598, -0.011613803, 0.0046714013, -0.011050906, -0.019086752, 0.02120894, -0.003788235, -0.002358346, 0.020160785, -0.0438413, 0.03258335, 0.021687726, 0.00911635, -0.019565538, 0.0020639573, -0.003642658, 0.0013465865, -0.0009041944, 0.017275129, -0.00454847, 0.009659837, 0.0063406834, 0.011911427, -0.022334734, -0.013354256, 0.0005232681, 0.026385007, -0.018517384, 0.0066447775, -0.009672778, 0.017986838, 0.048189197, -0.014182427, -0.0044417134, -0.0016708996, -0.02355111, 0.0037526495, 0.003720299, -0.016175212, -0.00014274626, 0.02129952, -0.017689213, -0.008909307, -0.013858923, -0.011989068, 0.004474064, -0.019358495, -0.02199829, -0.010086863, 0.0142083075, 0.009633957, 0.004855799, -0.021040717, 0.00906459, -0.008443461, -0.02494865, 0.035093743, -0.0069359313, 0.007667051, -0.014868256, 0.021428922, -0.0076799914, -0.023085264, 0.04404834, 0.0065768417, -0.029011862, -0.013910683, 0.016796341, -0.012972521, 0.0029180085, -0.013231324, -0.0015689956, -0.006677128, 0.012325512, -0.001672517, 0.0044546537, 0.0034776707, -0.012733128, 0.0047619827, 0.0027869893, -0.0049043247, 0.02114424, -0.0004650374, 0.007751162, 0.018245641, -0.024379281, -0.014855316, -0.012810769, 0.007518239, -0.0084564015, -0.006922991, -0.010805042, -0.0054995725, -0.0052116537, -0.007738222, -0.004655226, -0.004014688, 0.007447068, 0.02503923, -0.00015700066, 0.027148478, -0.011037965, 0.005017551, -0.018491503, -0.04026981, -0.03721593, -0.007207675, 0.007000632, 0.0034582606, 0.009808649, -0.044565946, -0.03405853, 0.020380769, -0.002689938, -0.02048429, 0.025207452, 0.007964675, 0.030202357, -0.0056580896, -0.024676906, 0.03263511, 0.008081136, -0.006961812, -0.019966682, -0.011102666, 0.0030797606, -0.024806308, 0.00606247, 0.0038497008, -0.0074988287, -0.030098837, 0.042210836, 0.0031881344, -0.013910683, -0.019177333, 0.0018763248, 0.0010344048, 0.0024634849, 0.014078906, 0.039648682, 0.01744335, -0.012448444, -0.02052311, -0.00058271206, 0.0056030937, 0.033980887, -0.016369315, -0.0035973673, 0.009336333, -0.012241402, -0.011665564, -0.014842375, 0.00986688, 0.013975384, 0.025065111, 0.011710854, -0.014298889, 0.008281709, 0.018491503, -0.007712342, -0.027096717, -0.012480794, -0.017766854, -0.032764513, -0.02582858, 0.014518871, -0.021066597, 0.0048202137, -0.009756888, -0.006288923, -0.013380136, -0.031004649, -0.02743316, -0.010242145, -0.009401034, 0.01891853, 0.019190272, -0.0030393226, 0.008249358, -0.032039862, -0.020096084, -0.018789127, -0.015411743, -0.01371658, -0.04459183, -0.014687094, 0.0060980553, -0.012196111, -0.01515294, 0.0024133418, 0.007343547, 0.025142752, 0.022826461, 0.23830618, 0.0027449336, -0.0038464656, 0.029814152, 0.0019572007, 0.032945674, 0.028338974, 0.004490239, 0.029193025, 0.04707634, -0.0068647605, 0.003869111, 0.0036264828, 0.006974752, 0.01965612, -0.011982598, -0.047024578, -0.015748188, -0.008113487, 0.018543264, 0.014078906, 0.00759588, 0.0093492735, -0.0057486705, 0.026294427, 0.010973264, -0.0060948203, 0.00028124652, 0.0006882553, 0.0050466666, 0.0014218013, -0.017948017, 0.0050434317, 0.004389953, -0.000111103494, -0.0033806195, -0.011814375, -0.004639051, 0.03273863, 0.023732273, 0.0105268285, -0.0125907855, -0.041434426, -0.0070718033, -0.0036717735, 0.008210538, -0.01890559, 0.0015277489, 0.02045841, 0.0027724316, -0.020005504, -0.006327743, 0.017003383, 0.027950767, -0.0020186666, 0.019099692, 0.016472837, -0.021079538, 0.018491503, -0.0033320938, -0.018387983, 0.038354665, -0.01444123, 0.010824453, 0.0060074744, -0.011296769, 0.0018569145, -0.002000874, 0.032479826, -0.016861042, 0.021027777, 0.017016325, 0.00170325, 0.0070718033, 0.016576359, -0.006159521, 0.020393709, -0.0101321535, 0.018620905, -0.0005256944, -0.0002980283, -0.025414495, -0.026294427, 0.025634477, -0.005528688, -0.019345555, 0.008721675, -0.004389953, 0.022955863, -0.007925854, -0.002916391, 0.017365709, -0.0039952775, 0.014273008, 0.015722306, 0.016628118, 0.0019636708, 0.01586465, -0.020212546, 0.0048105083, -0.02808017, 0.005389581, -0.008327, 0.0052828244, -0.021674786, 0.017184546, -0.013218384, -0.0066383076, 0.013302496, 0.00023393401, -0.003108876, -0.013470718, 0.011199717, -0.021066597, 0.019280855, 0.007880564, 0.0038529357, -0.012597256, -0.0227747, -0.009511026, -0.00913576, -0.02743316, -0.0156058455, 0.009316923, 0.0007266714, -0.018064478, 0.005897483, 0.015062358, 0.008948128, -0.034317333, 0.015463504, -0.020665452, 0.023253486, -0.016058752, -0.007997026, 0.010067453, -0.0034388504, -0.011212658, 0.008449932, -9.1642694e-05, -0.0069424016, -0.0095174955, 0.011329119, -0.018167999, 0.0075635295, -0.0077641024, -0.019565538, -0.023369947, -0.014091846, -0.023149965, -0.0051307776, -0.0024101068, -0.0048913844, -0.005302235, 0.0061271708, -0.005444577, 0.00906459, -0.02278764, 0.0003433189, 0.021403043, -0.0025217158, 0.004344662, 0.013250735, -0.0039014614, -0.022813521, 0.01603287, -0.16356376, 0.022554718, 0.018387983, -0.0018536794, -0.0009373536, 0.010817982, 0.014661213, 0.038949914, -0.019707879, 0.025246272, 0.010999145, -0.011367939, -0.027769607, -0.01890559, 0.004477299, 0.013897743, -0.006897111, 0.0027805192, 0.012416094, 0.017236307, 0.009672778, -0.024832187, 0.004085859, 0.013263674, 0.008475812, -0.010921504, -0.026993196, 0.026708512, 0.016162273, 0.0020186666, -0.008941658, -0.00571632, 0.010824453, 0.0035326665, 0.0049916706, 0.013457777, 0.0036038375, 0.003788235, -0.012616666, -0.005687205, -0.00841111, 0.024146358, -0.00571632, 0.01821976, -0.014234188, -0.00050062285, 0.029943554, 0.016925743, 0.0009737478, -0.020406649, 0.010313316, -0.03046116, -0.0061045256, -0.002875953, 0.011012085, 0.014932957, 0.03335976, 0.008385231, 0.004771688, 0.012733128, 0.017986838, -0.035714872, 0.007647641, 0.004609936, 0.0142083075, -0.013153683, 0.007673521, 0.0047425725, -0.012759008, -0.004859034, -0.014570632, -0.011691444, 0.021079538, -0.01371658, 0.006813, 0.030150598, -0.012319042, -0.014182427, 0.0046681664, 0.012959581, -0.0058295466, 0.0394934, -0.0154376235, -0.003196222, 0.0085146325, 0.0020623396, -0.01906087, -0.0030182947, -0.032298665, -0.0079582045, 0.01215082, -0.03346328, 0.0030328524, -0.029814152, 0.02193359, 0.011102666, -0.008553453, -0.005020786, 0.007162384, -0.0154893845, 0.006690068, -0.016265795, -0.013845982, 0.017262187, 0.028571896, 0.0064053843, -0.01811624, 0.016912803, 0.03423969, 0.0052342988, -0.016912803, 0.024780426, 0.01220258, 0.030176478, 0.024081657, 0.011697914, 0.0049754954, -0.02952947, 0.00042015116, 0.017210428, 0.038949914, -0.008145837, -0.030512922, 0.022929981, -0.007130034, -0.009769829, -0.10212383, 0.009841, 0.012500205, 0.014273008, 0.0032560704, 0.019410256, 0.009433384, 0.021726547, 0.00757, 0.03568899, -0.0010578589, -0.013418957, -0.0050499015, 0.009038709, -0.011290299, -0.014803555, -0.008974008, -0.027226118, -0.021778308, 0.012836649, 0.0009915406, -0.022981742, 0.004102034, -0.0073758974, 0.012765478, -0.011704384, -0.02808017, 0.008003496, 0.01666694, 0.011581453, 0.019474957, -0.014130666, -0.01603287, -0.0035294315, -0.01366482, -0.008993419, -0.01752099, -0.032013983, 0.012778418, -0.045627043, 0.009316923, 0.005451047, 0.002000874, -0.047412783, 0.0005968654, -0.003568252, -0.02268412, 0.0038205853, -0.0015350278, -0.009310452, 0.012002008, 0.013535419, -0.006677128, -0.01140029, 0.045989364, -0.004205555, 0.011633214, 0.030719966, -0.00837229, -0.0033288589, -0.0020380768, 0.017999778, 0.0067288885, 0.028649537, 0.0013740844, -0.01827152, -0.028364854, 0.0013069572, 0.019306734, -0.036775965, -0.0042087906, 0.0068712304, -0.023512289, 0.0109150335, -0.02122188, 0.00030106117, -0.0228394, -0.0062759826, 0.023434648, -0.007447068, -0.02968475, -0.029296545, -0.004412598, -0.006146581, 0.011335589, 0.027691964, -0.023253486, 0.0020041089, 0.0052828244, -0.008605214, 0.0011541015, 0.052821778, 0.015204701, -0.030538803, 0.0015131911, 0.011329119, -0.0003821394, 0.00026385815, 0.010293906, -0.0089610685, -0.024055777, -0.0014412114, -0.051165435, 0.017909195, -0.003632953, -0.022205332, 0.0068259398, 0.008831667, 0.012875469, -0.020096084, -0.006324508, 0.013833042, -0.019462017, 0.0062533375, -0.015722306, -0.0019410256, 0.0011904957, 0.019358495, 0.029348306, 0.006651248, 0.009174581, -0.012021419, -0.007453538, 0.008132897, 0.0125325555, 0.013004871, -0.019850222, 0.01436359, -0.017896255, -0.014803555, -0.02494865, -0.012196111, 0.031651657, -0.0071688546, 0.011574983, 0.047179863, -0.022218272, -0.019992564, -0.020587811, 0.035404306, 0.021610085, -0.029917674, -0.017805675, -0.029374188, -0.00052933383, -0.022502957, 0.004037333, 0.03423969, 0.010462128, -0.010151564, 0.016809281, -0.008838137, 0.016226973, 0.028934222, 0.017624512, -0.012377273, -0.015851708, -0.0061174654, 0.022929981, -0.009562786, 0.008217008, -0.025660358, 0.0019992564, 0.005059607, 0.022619419, 0.009653367, 0.010798573, 0.0060462947, 0.015579965, 0.0045387647, 0.0041343844, 0.00032754807, -0.023227606, 0.009569256, 0.022606477, -0.0020170491, 0.018866768, -0.014014205, -0.0069359313, 0.005975124, -0.014583572, 0.019940803, 0.007304726, -0.008799316, -0.021648906, 0.010073923, 0.043323692, -0.0100803925, -0.032039862, 0.015476444, -0.005693675, -0.0059298333, -0.03038352, 0.0051728333, -0.021131298, -0.0024084894, -0.0005022404, -0.010319786, -0.017663334, -0.0011775555, 0.010824453, 0.03719005, 0.0006716757, -0.009970401, 0.0009041944, -0.036646564, -0.017236307, 0.020743093, -0.01441535, -0.018090358, -0.02127364, 0.01673164, 0.0017081025, 0.004037333, -0.0069294614, 0.010397427, -0.0035035512, 0.013406017, -0.028157812, -0.020846615, -0.022619419, 0.016058752, 0.013897743, 0.010274495, 0.001939408, 0.011555572, 0.028701298, 0.024883948, 0.029141264, -0.019254973, 0.009808649, 0.021648906, 0.010093333, -0.010966795, 0.008449932, -0.0061692265, -0.01827152, -0.022347674, -0.0022386494, 0.021532444, -0.0040114527, 0.059680067, 0.00533135, -0.009989812, 0.028390734, -0.0008010774, 0.0020801325, 0.024016956, -0.0064377347, -0.0046843416, -0.020872494, -0.004250846, 0.010753281, 0.026242666, -0.004736102, -0.014945897, 0.0066447775, -0.036284238, 0.021687726, -0.033670325, -0.0037364743, 0.006586547, -0.017948017, 0.01590347, 0.0029066857, -0.026837913, -0.010287436, 0.009569256, -0.0020801325, -0.0066835983, -0.024793366, 0.023214666, -0.016899863, -0.038820513, -0.0100803925, -0.0028516902, -0.023033503, -0.025543896, -0.019138511, -7.218189e-05, 0.0039920425, 0.00161833, 0.00091389957, -0.032298665, 0.0037300042, -0.0062371623, -0.0058004316, -0.01604581, 0.0069359313, -0.03030588] + "embedding": [0.010940914, 0.00037101895, 0.0019054401, -0.018620905, -0.012196111, 0.010196854, -0.024728665, -0.0048946193, 0.019022051, 0.0058942474, 0.0070329825, -0.0033191538, -0.022502957, 0.0068453504, -0.005832782, 0.0009373536, 0.010552709, 0.016097572, 0.026281487, -0.020885436, -0.032816272, 0.009122821, -0.003642658, -0.0032479828, -0.021040717, 0.008708735, 0.030823486, -0.004545235, 0.009433384, 0.01748217, 0.03421381, -0.010170974, 0.0015277489, -0.039596923, -0.012558435, 0.02888246, 0.00837229, 0.0072982563, 0.01519176, -0.007815863, -0.0021076303, 0.009562786, 0.00030207212, 9.371514e-05, -0.0046228757, 0.0040761535, 0.011186778, 0.016226973, -0.015748188, 0.0040082177, 0.021959469, 0.036517162, -0.02049723, -0.017805675, 0.009291043, -0.018426802, 0.0032415127, 0.041434426, -0.035973676, -0.011549102, 0.009724538, 0.002754639, -0.0017954487, -0.001341734, -0.004102034, -0.015049418, -0.01288841, 0.0018569145, -0.0029940319, 0.0110250255, 0.034343213, 0.055849776, 0.015101179, 0.01589053, 0.033152718, -0.0014484903, 0.0087928455, 0.0023809914, -0.0065024355, -0.0027853716, 0.00987335, 0.0012762243, -0.027873127, -0.0019572007, 0.023175845, 0.00016347074, 0.02357699, 0.027588444, -0.007912914, -0.0021302756, -0.015372923, 0.028494256, 0.009769829, -0.011251478, -0.0077058715, 0.01586465, 0.019229094, 0.022671178, 0.004791098, -0.02968475, 0.015579965, 0.017715093, -0.03856171, 0.0033417991, -0.019034991, -0.027484922, -0.000926031, -0.020717213, 0.020354887, -0.014907076, -0.034472615, 0.028261332, 0.023318186, -0.016201094, -0.002047782, -0.01818094, 0.035559587, -0.018698547, -0.009815119, -0.016421076, 0.0045064143, 0.043634254, 0.026126204, -0.026993196, 0.028753059, 0.002591269, -0.008864017, -0.0067030084, -0.026372068, -0.016472837, 0.007692931, 0.022671178, 0.009316923, 0.027536683, -0.006596252, 0.0040308633, -0.016252855, 0.021687726, 0.00646685, -0.008171718, 0.011736735, 0.015424684, -0.009252222, -0.0074858884, 0.00986688, 0.034162052, 0.012364333, -0.011283829, -0.021739487, -0.0035132563, 0.01445417, 0.00044684028, 0.015411743, 0.0130372215, 0.0069488715, 0.017145727, -0.03623248, -0.018336222, -0.030849367, -0.012726658, -0.023357008, -0.010119214, 0.025957981, -0.0077705723, 0.028649537, 0.020238427, 0.027226118, 0.012364333, -0.0064215595, -0.003500316, -0.012435504, 0.019940803, -0.020303128, 0.0072335554, 0.004037333, 0.0078029227, 0.017249247, -0.0077899825, -0.008876957, -0.0038917563, 0.0061336407, -0.020290187, 0.01749511, -0.009232812, -0.0095174955, -0.023939315, 0.0104103675, -0.01666694, 0.0027061133, -0.006631837, 0.030487042, 0.005842487, -0.0058133714, -0.011245009, -0.65384096, -0.046429332, 0.023887554, -0.02202417, 0.012344923, 0.03035764, 0.02357699, 0.030849367, 4.443129e-05, -0.02348641, 0.012830179, 0.0069553414, 0.027743725, -0.017702153, -0.0037300042, -0.024625145, 0.022425316, 0.014285948, -0.011490871, 0.0017356004, -0.0060527646, 0.020885436, 0.00063164206, -0.006389209, 0.02820957, 0.009045179, 0.017702153, -0.008488752, -0.009679248, 0.015308222, -0.024366342, 0.015321162, -0.020354887, -0.005528688, 0.037552375, -0.00085647753, -0.0212607, 0.015359983, 0.0062953928, 0.024819247, -0.0097439485, 0.008482282, 0.008495222, -0.01589053, 0.0074729486, 0.00025597276, 0.018944409, 0.0017792735, 0.0377853, -0.014492991, 0.00914223, -0.017081026, -0.0031638716, 0.014156546, 0.03284215, 0.0013207061, 0.04461771, 0.019306734, 0.005751906, 0.006282453, 0.003338564, -0.001672517, -0.035326667, -0.008132897, -0.031366974, 0.0043737777, -0.038173504, -0.03470554, -0.023046443, -0.02346053, 0.010462128, 0.011122077, -0.01900911, 0.020393709, 0.028468376, 0.0073306067, 0.02952947, 0.0032091623, 0.011458521, -0.012260811, -0.0056645595, -0.0049916706, -0.03108229, -0.0145447515, 0.029348306, -0.016615178, -0.019280855, -0.01667988, 0.016511658, 0.005020786, 0.013496598, 0.018646786, 0.00041812926, -0.006165991, -0.00142908, 0.026941435, -0.004781393, 0.0017339828, -0.00045411912, -0.001118516, 0.006123936, -0.012435504, -0.0060074744, 0.0031800468, 0.024081657, -0.015722306, -0.027484922, 0.03411029, 0.01977258, -0.00685829, 0.008728145, -0.04182263, -0.015994051, 0.0071947346, 0.009362213, -0.032221023, 0.045989364, 0.0014808407, 0.0024553973, -0.0042023202, 0.017663334, 0.0045064143, -0.007945265, -0.009232812, 0.024482803, 0.0016102424, 0.0017792735, -0.02509099, -0.018439744, 0.017986838, 0.019086752, 0.0007299065, 0.008119957, -0.00094058865, -0.009426914, -0.013276615, 0.009595136, -0.011070316, 0.023887554, -0.023952255, -0.021674786, -0.009051649, 0.0006474129, 0.0032318076, -0.004878444, -0.016563417, -0.030150598, -0.0001479021, -0.028546017, -0.0063374485, -0.03403265, -0.014648273, -0.04016629, 0.0066835983, 0.025686238, 0.001750158, -0.03328212, 0.00026648663, -0.0035035512, 0.016485777, 0.0033029786, -0.012551965, 0.0028533076, 0.005839252, -0.008139367, -0.021571264, -0.020587811, 0.023796974, -0.0003390729, -0.02505217, -0.0032512178, -0.008779906, -0.0055675083, -0.0077770427, -0.024599263, -0.004923735, -0.0044158334, -0.014790615, -0.00012242615, -0.0073370766, -0.00047595563, 0.008074666, -0.0029244786, 0.010772692, 0.032945674, 2.8913193e-05, 0.016861042, 0.018413862, -0.017042205, 0.006243632, 0.002578329, -0.0057195555, -0.014609452, -0.017728034, 0.0074664783, 0.0052569443, -0.005463987, -0.0063180383, 0.01062388, -0.0060333544, 0.025401555, -0.0032835682, 0.018802067, -0.028261332, 0.013406017, -0.02511687, 0.011542632, -0.008954598, -0.008391701, 0.028623657, 0.017792735, -0.042935487, 0.0024246646, -0.019345555, 0.017960956, -0.01291429, -0.020950137, 0.016861042, -0.019707879, 0.0038141152, 0.005011081, 0.0037720597, 0.02958123, -0.006227457, -0.015023538, -0.01065623, 0.023227606, 0.024547504, 0.0013902596, -0.013418957, -0.018879708, -0.012299632, -0.0061142305, 0.013444837, -0.017676273, 0.00681947, 0.0050434317, -0.017844494, -0.0035164913, 0.009756888, -0.006696538, 0.03266099, 0.0021852714, -0.005451047, 0.029814152, -0.0038335256, 0.007660581, 0.028313093, -0.027510803, 0.01138088, 0.0070847436, -0.00042823877, -0.01749511, 0.02197241, 0.018672666, -0.0107468115, 0.045212954, -0.012351393, 0.01290135, 0.012610196, -0.0020332243, -0.017236307, 0.012707247, -0.021623025, 0.014324768, -0.009808649, -0.025621537, -0.00493991, 0.012331982, -0.012293162, 2.7598957e-05, 0.010843863, 0.012991931, 0.0070265126, 0.009316923, -0.00681947, 0.0012835031, -0.018620905, 0.025699178, 0.0076864613, -0.006140111, -0.020898376, 0.021726547, 0.00683241, -0.0080681965, -0.008268769, -0.021687726, 0.01440241, -0.012759008, 0.009718068, 0.016511658, 0.027459042, 0.020419588, -0.0082364185, -0.00569691, -0.030538803, 0.007938795, 0.0078029227, 0.021765366, 0.0044352436, -0.009899231, -0.0009575726, -0.041356783, -0.013690701, 0.017042205, 0.010953855, 0.004710222, -0.015631726, -0.026203845, -0.04927617, -0.012564906, 0.00022584641, -0.01220258, -0.0042929016, -0.00569691, -0.008398171, -0.044255383, -0.009957462, 0.04557528, 0.0258674, -0.017365709, -0.028390734, -0.008689324, 0.0007481036, 0.07049805, 0.02743316, -0.013393076, 0.01587759, -0.00081765704, -0.010455658, -0.0034841408, -0.0019620534, 0.008022905, -0.008935188, 0.003068438, 0.002510393, 0.0032593054, -0.0079582045, 0.0036361879, -0.0070071025, -0.005628974, -0.019358495, 0.011743205, -0.03113405, -0.02127364, 0.017637452, -0.005758376, 0.020846615, -0.0070912135, 0.028002528, 0.014117726, 0.00058109453, 0.01667988, -0.026061503, 0.0099121705, 0.023072325, -0.012739598, 0.0050369613, -0.027717846, -0.030487042, -0.010889154, 0.021713607, 0.0070847436, -0.003581192, 0.022412375, 0.0019749936, -0.0024780426, -0.02274882, -0.0035456067, 0.025401555, -0.016175212, 0.011704384, -0.0076799914, -0.015554085, 0.007505299, -0.007117094, -0.0017275128, -0.0069359313, 0.0052342988, -0.011173837, -0.033825606, -0.014040085, -0.003869111, -0.022127692, 0.0061271708, 0.014040085, 0.009750418, 0.00084596366, -0.018310342, -0.032790393, -0.013975384, 0.0027837541, -0.008482282, -0.02192065, -0.020794854, -0.0036232478, -0.0073241363, -0.004244376, 0.03364444, 0.02655323, 0.025336854, -0.023589931, 0.005011081, 0.033592682, 0.0008322147, -0.010229205, 0.006690068, 0.0056225043, 0.010138623, -0.0012592403, 0.035896033, -0.009996282, -0.0048428588, 0.006224222, 0.030668205, -0.0019539658, 0.021480683, -0.015735248, -0.007867624, -0.0036620682, 0.01290782, 0.016589299, -0.025453316, -0.024443982, 0.013574239, -0.023991076, 0.0052342988, -0.017158667, -0.009938051, 0.0038270555, 0.008508163, -0.0028436026, -0.011982598, 0.013794222, 0.011866136, -0.0057195555, -0.016654, -0.005848957, 0.008844607, 0.008113487, 0.009614547, 0.024172239, -0.021403043, -0.0019086752, 0.033049196, -0.046843417, 0.030823486, -0.0040632137, -0.030927008, -0.0005730069, 0.008993419, -0.0039014614, 0.004930205, 0.0082881795, -0.018413862, 0.03656892, -0.0041376194, -0.011924367, -0.032428067, -0.010073923, 0.015450563, 0.014764735, -0.018620905, 0.0010384487, -0.011898487, 0.01366482, -0.008139367, -0.018659726, -0.03871699, -0.029891795, -0.0028565426, 0.017158667, -0.004260551, 0.026035624, -0.0045937607, 0.0068906406, -0.011963188, 0.0023098204, -0.022412375, -0.012060239, -0.01441535, -0.012681367, 0.021519504, 0.010520359, 0.008935188, 0.0019151452, 0.0070200423, 0.009724538, 0.0039273417, 0.0085146325, -0.016239913, -0.0073758974, 0.0008872104, 0.016188154, 0.010403897, 0.008669915, 0.010733872, 0.012713717, 0.008728145, 0.036931247, -0.017922137, -0.0110250255, -0.019552598, -0.032324545, 0.013781281, -0.014285948, -0.017378649, -0.0008221052, -0.0053604655, -0.000670867, 0.005454282, 0.0033547392, 0.0011872606, -0.016343435, 0.036206596, 0.0006227457, 0.033722084, -0.019707879, 0.01441535, 0.0075829397, -0.019863162, -0.014764735, -0.0065380214, -0.004344662, 0.0041635, 0.018931469, 0.008967538, -0.020303128, 0.0007489124, -0.008087606, 0.013354256, 0.0043964228, -0.016356375, -0.021830067, -0.030927008, -0.017210428, -0.017365709, -0.032143384, 0.012571376, -0.004402893, -0.045471758, 0.010552709, 0.007136504, -0.035430185, -0.009996282, -0.010830923, 0.026165025, 0.012978991, 0.0032835682, 0.017106906, -0.010319786, 0.0036103076, -0.023978136, -0.027795486, 0.00456788, 0.026734393, 0.03737121, -0.028494256, 0.027303759, 0.010073923, -0.015411743, 0.0009624252, -0.025530957, -0.00835288, -0.007822333, 0.017042205, -0.025919162, 0.011225598, -0.011613803, 0.0046714013, -0.011050906, -0.019086752, 0.02120894, -0.003788235, -0.002358346, 0.020160785, -0.0438413, 0.03258335, 0.021687726, 0.00911635, -0.019565538, 0.0020639573, -0.003642658, 0.0013465865, -0.0009041944, 0.017275129, -0.00454847, 0.009659837, 0.0063406834, 0.011911427, -0.022334734, -0.013354256, 0.0005232681, 0.026385007, -0.018517384, 0.0066447775, -0.009672778, 0.017986838, 0.048189197, -0.014182427, -0.0044417134, -0.0016708996, -0.02355111, 0.0037526495, 0.003720299, -0.016175212, -0.00014274626, 0.02129952, -0.017689213, -0.008909307, -0.013858923, -0.011989068, 0.004474064, -0.019358495, -0.02199829, -0.010086863, 0.0142083075, 0.009633957, 0.004855799, -0.021040717, 0.00906459, -0.008443461, -0.02494865, 0.035093743, -0.0069359313, 0.007667051, -0.014868256, 0.021428922, -0.0076799914, -0.023085264, 0.04404834, 0.0065768417, -0.029011862, -0.013910683, 0.016796341, -0.012972521, 0.0029180085, -0.013231324, -0.0015689956, -0.006677128, 0.012325512, -0.001672517, 0.0044546537, 0.0034776707, -0.012733128, 0.0047619827, 0.0027869893, -0.0049043247, 0.02114424, -0.0004650374, 0.007751162, 0.018245641, -0.024379281, -0.014855316, -0.012810769, 0.007518239, -0.0084564015, -0.006922991, -0.010805042, -0.0054995725, -0.0052116537, -0.007738222, -0.004655226, -0.004014688, 0.007447068, 0.02503923, -0.00015700066, 0.027148478, -0.011037965, 0.005017551, -0.018491503, -0.04026981, -0.03721593, -0.007207675, 0.007000632, 0.0034582606, 0.009808649, -0.044565946, -0.03405853, 0.020380769, -0.002689938, -0.02048429, 0.025207452, 0.007964675, 0.030202357, -0.0056580896, -0.024676906, 0.03263511, 0.008081136, -0.006961812, -0.019966682, -0.011102666, 0.0030797606, -0.024806308, 0.00606247, 0.0038497008, -0.0074988287, -0.030098837, 0.042210836, 0.0031881344, -0.013910683, -0.019177333, 0.0018763248, 0.0010344048, 0.0024634849, 0.014078906, 0.039648682, 0.01744335, -0.012448444, -0.02052311, -0.00058271206, 0.0056030937, 0.033980887, -0.016369315, -0.0035973673, 0.009336333, -0.012241402, -0.011665564, -0.014842375, 0.00986688, 0.013975384, 0.025065111, 0.011710854, -0.014298889, 0.008281709, 0.018491503, -0.007712342, -0.027096717, -0.012480794, -0.017766854, -0.032764513, -0.02582858, 0.014518871, -0.021066597, 0.0048202137, -0.009756888, -0.006288923, -0.013380136, -0.031004649, -0.02743316, -0.010242145, -0.009401034, 0.01891853, 0.019190272, -0.0030393226, 0.008249358, -0.032039862, -0.020096084, -0.018789127, -0.015411743, -0.01371658, -0.04459183, -0.014687094, 0.0060980553, -0.012196111, -0.01515294, 0.0024133418, 0.007343547, 0.025142752, 0.022826461, 0.23830618, 0.0027449336, -0.0038464656, 0.029814152, 0.0019572007, 0.032945674, 0.028338974, 0.004490239, 0.029193025, 0.04707634, -0.0068647605, 0.003869111, 0.0036264828, 0.006974752, 0.01965612, -0.011982598, -0.047024578, -0.015748188, -0.008113487, 0.018543264, 0.014078906, 0.00759588, 0.0093492735, -0.0057486705, 0.026294427, 0.010973264, -0.0060948203, 0.00028124652, 0.0006882553, 0.0050466666, 0.0014218013, -0.017948017, 0.0050434317, 0.004389953, -0.000111103494, -0.0033806195, -0.011814375, -0.004639051, 0.03273863, 0.023732273, 0.0105268285, -0.0125907855, -0.041434426, -0.0070718033, -0.0036717735, 0.008210538, -0.01890559, 0.0015277489, 0.02045841, 0.0027724316, -0.020005504, -0.006327743, 0.017003383, 0.027950767, -0.0020186666, 0.019099692, 0.016472837, -0.021079538, 0.018491503, -0.0033320938, -0.018387983, 0.038354665, -0.01444123, 0.010824453, 0.0060074744, -0.011296769, 0.0018569145, -0.002000874, 0.032479826, -0.016861042, 0.021027777, 0.017016325, 0.00170325, 0.0070718033, 0.016576359, -0.006159521, 0.020393709, -0.0101321535, 0.018620905, -0.0005256944, -0.0002980283, -0.025414495, -0.026294427, 0.025634477, -0.005528688, -0.019345555, 0.008721675, -0.004389953, 0.022955863, -0.007925854, -0.002916391, 0.017365709, -0.0039952775, 0.014273008, 0.015722306, 0.016628118, 0.0019636708, 0.01586465, -0.020212546, 0.0048105083, -0.02808017, 0.005389581, -0.008327, 0.0052828244, -0.021674786, 0.017184546, -0.013218384, -0.0066383076, 0.013302496, 0.00023393401, -0.003108876, -0.013470718, 0.011199717, -0.021066597, 0.019280855, 0.007880564, 0.0038529357, -0.012597256, -0.0227747, -0.009511026, -0.00913576, -0.02743316, -0.0156058455, 0.009316923, 0.0007266714, -0.018064478, 0.005897483, 0.015062358, 0.008948128, -0.034317333, 0.015463504, -0.020665452, 0.023253486, -0.016058752, -0.007997026, 0.010067453, -0.0034388504, -0.011212658, 0.008449932, -9.1642694e-05, -0.0069424016, -0.0095174955, 0.011329119, -0.018167999, 0.0075635295, -0.0077641024, -0.019565538, -0.023369947, -0.014091846, -0.023149965, -0.0051307776, -0.0024101068, -0.0048913844, -0.005302235, 0.0061271708, -0.005444577, 0.00906459, -0.02278764, 0.0003433189, 0.021403043, -0.0025217158, 0.004344662, 0.013250735, -0.0039014614, -0.022813521, 0.01603287, -0.16356376, 0.022554718, 0.018387983, -0.0018536794, -0.0009373536, 0.010817982, 0.014661213, 0.038949914, -0.019707879, 0.025246272, 0.010999145, -0.011367939, -0.027769607, -0.01890559, 0.004477299, 0.013897743, -0.006897111, 0.0027805192, 0.012416094, 0.017236307, 0.009672778, -0.024832187, 0.004085859, 0.013263674, 0.008475812, -0.010921504, -0.026993196, 0.026708512, 0.016162273, 0.0020186666, -0.008941658, -0.00571632, 0.010824453, 0.0035326665, 0.0049916706, 0.013457777, 0.0036038375, 0.003788235, -0.012616666, -0.005687205, -0.00841111, 0.024146358, -0.00571632, 0.01821976, -0.014234188, -0.00050062285, 0.029943554, 0.016925743, 0.0009737478, -0.020406649, 0.010313316, -0.03046116, -0.0061045256, -0.002875953, 0.011012085, 0.014932957, 0.03335976, 0.008385231, 0.004771688, 0.012733128, 0.017986838, -0.035714872, 0.007647641, 0.004609936, 0.0142083075, -0.013153683, 0.007673521, 0.0047425725, -0.012759008, -0.004859034, -0.014570632, -0.011691444, 0.021079538, -0.01371658, 0.006813, 0.030150598, -0.012319042, -0.014182427, 0.0046681664, 0.012959581, -0.0058295466, 0.0394934, -0.0154376235, -0.003196222, 0.0085146325, 0.0020623396, -0.01906087, -0.0030182947, -0.032298665, -0.0079582045, 0.01215082, -0.03346328, 0.0030328524, -0.029814152, 0.02193359, 0.011102666, -0.008553453, -0.005020786, 0.007162384, -0.0154893845, 0.006690068, -0.016265795, -0.013845982, 0.017262187, 0.028571896, 0.0064053843, -0.01811624, 0.016912803, 0.03423969, 0.0052342988, -0.016912803, 0.024780426, 0.01220258, 0.030176478, 0.024081657, 0.011697914, 0.0049754954, -0.02952947, 0.00042015116, 0.017210428, 0.038949914, -0.008145837, -0.030512922, 0.022929981, -0.007130034, -0.009769829, -0.10212383, 0.009841, 0.012500205, 0.014273008, 0.0032560704, 0.019410256, 0.009433384, 0.021726547, 0.00757, 0.03568899, -0.0010578589, -0.013418957, -0.0050499015, 0.009038709, -0.011290299, -0.014803555, -0.008974008, -0.027226118, -0.021778308, 0.012836649, 0.0009915406, -0.022981742, 0.004102034, -0.0073758974, 0.012765478, -0.011704384, -0.02808017, 0.008003496, 0.01666694, 0.011581453, 0.019474957, -0.014130666, -0.01603287, -0.0035294315, -0.01366482, -0.008993419, -0.01752099, -0.032013983, 0.012778418, -0.045627043, 0.009316923, 0.005451047, 0.002000874, -0.047412783, 0.0005968654, -0.003568252, -0.02268412, 0.0038205853, -0.0015350278, -0.009310452, 0.012002008, 0.013535419, -0.006677128, -0.01140029, 0.045989364, -0.004205555, 0.011633214, 0.030719966, -0.00837229, -0.0033288589, -0.0020380768, 0.017999778, 0.0067288885, 0.028649537, 0.0013740844, -0.01827152, -0.028364854, 0.0013069572, 0.019306734, -0.036775965, -0.0042087906, 0.0068712304, -0.023512289, 0.0109150335, -0.02122188, 0.00030106117, -0.0228394, -0.0062759826, 0.023434648, -0.007447068, -0.02968475, -0.029296545, -0.004412598, -0.006146581, 0.011335589, 0.027691964, -0.023253486, 0.0020041089, 0.0052828244, -0.008605214, 0.0011541015, 0.052821778, 0.015204701, -0.030538803, 0.0015131911, 0.011329119, -0.0003821394, 0.00026385815, 0.010293906, -0.0089610685, -0.024055777, -0.0014412114, -0.051165435, 0.017909195, -0.003632953, -0.022205332, 0.0068259398, 0.008831667, 0.012875469, -0.020096084, -0.006324508, 0.013833042, -0.019462017, 0.0062533375, -0.015722306, -0.0019410256, 0.0011904957, 0.019358495, 0.029348306, 0.006651248, 0.009174581, -0.012021419, -0.007453538, 0.008132897, 0.0125325555, 0.013004871, -0.019850222, 0.01436359, -0.017896255, -0.014803555, -0.02494865, -0.012196111, 0.031651657, -0.0071688546, 0.011574983, 0.047179863, -0.022218272, -0.019992564, -0.020587811, 0.035404306, 0.021610085, -0.029917674, -0.017805675, -0.029374188, -0.00052933383, -0.022502957, 0.004037333, 0.03423969, 0.010462128, -0.010151564, 0.016809281, -0.008838137, 0.016226973, 0.028934222, 0.017624512, -0.012377273, -0.015851708, -0.0061174654, 0.022929981, -0.009562786, 0.008217008, -0.025660358, 0.0019992564, 0.005059607, 0.022619419, 0.009653367, 0.010798573, 0.0060462947, 0.015579965, 0.0045387647, 0.0041343844, 0.00032754807, -0.023227606, 0.009569256, 0.022606477, -0.0020170491, 0.018866768, -0.014014205, -0.0069359313, 0.005975124, -0.014583572, 0.019940803, 0.007304726, -0.008799316, -0.021648906, 0.010073923, 0.043323692, -0.0100803925, -0.032039862, 0.015476444, -0.005693675, -0.0059298333, -0.03038352, 0.0051728333, -0.021131298, -0.0024084894, -0.0005022404, -0.010319786, -0.017663334, -0.0011775555, 0.010824453, 0.03719005, 0.0006716757, -0.009970401, 0.0009041944, -0.036646564, -0.017236307, 0.020743093, -0.01441535, -0.018090358, -0.02127364, 0.01673164, 0.0017081025, 0.004037333, -0.0069294614, 0.010397427, -0.0035035512, 0.013406017, -0.028157812, -0.020846615, -0.022619419, 0.016058752, 0.013897743, 0.010274495, 0.001939408, 0.011555572, 0.028701298, 0.024883948, 0.029141264, -0.019254973, 0.009808649, 0.021648906, 0.010093333, -0.010966795, 0.008449932, -0.0061692265, -0.01827152, -0.022347674, -0.0022386494, 0.021532444, -0.0040114527, 0.059680067, 0.00533135, -0.009989812, 0.028390734, -0.0008010774, 0.0020801325, 0.024016956, -0.0064377347, -0.0046843416, -0.020872494, -0.004250846, 0.010753281, 0.026242666, -0.004736102, -0.014945897, 0.0066447775, -0.036284238, 0.021687726, -0.033670325, -0.0037364743, 0.006586547, -0.017948017, 0.01590347, 0.0029066857, -0.026837913, -0.010287436, 0.009569256, -0.0020801325, -0.0066835983, -0.024793366, 0.023214666, -0.016899863, -0.038820513, -0.0100803925, -0.0028516902, -0.023033503, -0.025543896, -0.019138511, -7.218189e-05, 0.0039920425, 0.00161833, 0.00091389957, -0.032298665, 0.0037300042, -0.0062371623, -0.0058004316, -0.01604581, 0.0069359313, -0.03030588], + "object": "embedding" } ], "model": "text-embedding-ada-002-v2", @@ -117,7 +121,7 @@ X-Request-Id: req_25786abf429546a0a9de6148854e5360 "prompt_tokens": 18, "total_tokens": 18 } -}1079 1698 +}1079 1724 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -128,26 +132,27 @@ Content-Type: application/json {"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the chair beside the desk is beige.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the desk is orange.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is black.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the house is blue.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What colors are all of the pieces of furniture next to the desk and the desk itself?\nHelpful Answer:"}]}HTTP/2.0 200 OK Content-Length: 899 Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Thu, 22 Jan 2026 20:04:19 GMT +Date: Mon, 21 Sep 2026 07:48:04 GMT Openai-Organization: lcgo-tst -Openai-Processing-Ms: 480 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 531 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload X-Content-Type-Options: nosniff -X-Envoy-Upstream-Service-Time: 496 X-Openai-Proxy-Wasm: v0.1 X-Ratelimit-Limit-Requests: 30000 X-Ratelimit-Limit-Tokens: 150000000 X-Ratelimit-Remaining-Requests: 29999 -X-Ratelimit-Remaining-Tokens: 149999845 +X-Ratelimit-Remaining-Tokens: 149999842 X-Ratelimit-Reset-Requests: 2ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_78edac29f6f24e4aba3040ffc7b70d3e +X-Request-Id: req_186937bc76964c9ea1bd399550ab95f0 { "model": "gpt-4.1-nano-2025-04-14", @@ -155,33 +160,33 @@ X-Request-Id: req_78edac29f6f24e4aba3040ffc7b70d3e { "index": 0, "message": { - "annotations": [], "role": "assistant", "content": "The desk is orange. The chair beside the desk is beige. The lamp beside the desk is black.", - "refusal": null + "refusal": null, + "annotations": [] }, "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 144, "completion_tokens": 21, "total_tokens": 165, "prompt_tokens_details": { - "cached_tokens": 0, - "audio_tokens": 0 + "audio_tokens": 0, + "cached_tokens": 0 }, "completion_tokens_details": { "reasoning_tokens": 0, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 - } + }, + "prompt_tokens": 144 }, "service_tier": "default", - "system_fingerprint": "fp_f0bc439dc3", - "id": "chatcmpl-D0vCdFfhT721xULlroI9tTIXclKQI", + "system_fingerprint": "fp_a8d11c9b56", + "id": "chatcmpl-EQT2qXEuRaDUlBKnlVLyVcV1Wu0AI", "object": "chat.completion", - "created": 1769112259 + "created": 1789976884 } \ No newline at end of file diff --git a/vectorstores/pgvector/testdata/TestPgvectorStoreRest.httprr b/vectorstores/pgvector/testdata/TestPgvectorStoreRest.httprr index f69aaa8b8..3c52cc636 100644 --- a/vectorstores/pgvector/testdata/TestPgvectorStoreRest.httprr +++ b/vectorstores/pgvector/testdata/TestPgvectorStoreRest.httprr @@ -1,5 +1,5 @@ httprr trace v1 -256 43208 +256 43192 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:03:34 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 279 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -53,7 +53,7 @@ X-Request-Id: req_b0e056495f034a9c89ed10fa180afa5a "prompt_tokens": 4, "total_tokens": 4 } -}247 22117 +}247 22101 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -72,7 +72,7 @@ Date: Thu, 22 Jan 2026 20:03:36 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 177 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/pgvector/testdata/TestPgvectorStoreRestWithScoreThreshold.httprr b/vectorstores/pgvector/testdata/TestPgvectorStoreRestWithScoreThreshold.httprr index fd62350e3..bbc9acbd4 100644 --- a/vectorstores/pgvector/testdata/TestPgvectorStoreRestWithScoreThreshold.httprr +++ b/vectorstores/pgvector/testdata/TestPgvectorStoreRestWithScoreThreshold.httprr @@ -1,5 +1,5 @@ httprr trace v1 -333 211510 +333 211494 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:03:40 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 177 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -93,7 +93,7 @@ X-Request-Id: req_6e819f66001044a682389f5ca93baf97 "total_tokens": 23, "prompt_tokens": 23 } -}276 21774 +}276 21758 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -112,7 +112,7 @@ Date: Thu, 22 Jan 2026 20:03:42 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 44 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -142,7 +142,7 @@ X-Request-Id: req_a7624c7f5a2848e4b679855d9d7eb98c "prompt_tokens": 7, "total_tokens": 7 } -}276 21775 +}276 21759 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -161,7 +161,7 @@ Date: Thu, 22 Jan 2026 20:03:44 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 41 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/pgvector/testdata/TestPgvectorStoreSimilarityScore.httprr b/vectorstores/pgvector/testdata/TestPgvectorStoreSimilarityScore.httprr index c3e34530a..851e819aa 100644 --- a/vectorstores/pgvector/testdata/TestPgvectorStoreSimilarityScore.httprr +++ b/vectorstores/pgvector/testdata/TestPgvectorStoreSimilarityScore.httprr @@ -1,5 +1,5 @@ httprr trace v1 -333 64235 +333 64219 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:03:48 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 167 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -58,7 +58,7 @@ X-Request-Id: req_a422fff4b99d412c9be6201a41a82674 "total_tokens": 22 }, "object": "list" -}276 22025 +}276 22009 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -77,7 +77,7 @@ Date: Thu, 22 Jan 2026 20:03:50 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 118 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/pgvector/testdata/TestSimilaritySearchWithDifferentDimensions.httprr b/vectorstores/pgvector/testdata/TestSimilaritySearchWithDifferentDimensions.httprr index 9684b8171..46f66c2e6 100644 --- a/vectorstores/pgvector/testdata/TestSimilaritySearchWithDifferentDimensions.httprr +++ b/vectorstores/pgvector/testdata/TestSimilaritySearchWithDifferentDimensions.httprr @@ -5,7 +5,7 @@ Host: generativelanguage.googleapis.com User-Agent: langchaingo-httprr Content-Length: 109 Content-Type: application/json -X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/go1.26.5 +X-Goog-Api-Client: google-genai-sdk/X.XX.X gl-go/goX.XX.X X-Goog-Api-Key: test-api-key {"requests":[{"content":{"parts":[{"text":"Beijing"}],"role":"user"},"model":"models/gemini-embedding-001"}]}HTTP/2.0 200 OK @@ -28,7 +28,7 @@ X-Xss-Protection: 0 "values": [-0.0063551543, 0.016102875, 0.0025184422, -0.06450228, -0.011145094, -0.0017095193, -0.010466754, -0.014819786, 0.007944607, -0.009844465, 0.02627988, 0.0005290811, 0.021550694, 0.014117757, 0.08421562, 0.007890114, 0.021590482, -0.036296967, 0.008239877, -0.033143397, -0.024023073, -0.0071394015, 0.026021717, -0.016012026, -0.0013396433, 0.011513916, -0.00964948, -0.02027911, 0.020185934, 0.026132856, 0.022241998, -0.019913755, 0.0060549704, -0.017460946, 0.013950326, -0.013509957, 0.0044174525, 0.0081113335, -0.014121574, 0.0071531185, 0.015969781, 0.013153238, -0.004400515, 0.014650824, 0.0046382556, -0.019576825, 0.0066992207, -0.025219817, 0.028843993, 0.009681094, 0.028219955, 0.017304933, 0.003994314, -0.14916469, -0.0020506408, -0.022159234, -0.01220226, -0.0005695116, 0.016322328, 0.0036592477, -0.017106129, -0.013098781, -0.011157898, -0.0071095936, 0.0017108265, -0.0071799583, 0.022572618, 0.0046764133, -0.0512339, 0.00329169, 0.009588029, -0.011635375, -0.0017702867, 0.004274009, 0.0022750008, -0.018372174, -0.017434062, -0.009578391, -0.019144882, 0.02661255, -0.0058826096, 0.019118166, 0.0038887938, 0.0049904794, 0.008675974, 0.009201594, 0.0034076595, -0.0063505503, -0.0120315775, 0.022470584, 0.02058215, -0.00012978374, -0.0039833416, -0.022589803, 0.021844324, 0.018430045, -0.021536823, 0.007484924, 0.0023836636, 0.0020405757, -0.005447644, -0.0041501103, 0.009563024, 0.008413351, -0.0024128684, -0.02541384, 0.009046341, -0.0021488206, -0.0085451305, 0.014438212, -0.002896873, 0.007498084, -0.0025235151, 0.02277479, 0.016626634, -0.18287012, -0.0073958687, 0.012745881, 0.013355627, -0.006209894, 0.029279338, 0.010433714, 0.0098551065, -0.006656174, -0.020760003, -0.003321761, 0.010822108, -0.015899125, 0.009552324, 0.010090353, 0.0136583485, -0.0018861623, -0.005349075, -0.001015341, -0.034654666, 0.024294017, -0.008448941, -0.021153277, -0.020333815, -0.02146894, 0.007534668, -0.009168525, -0.010094172, -0.025726954, -0.012099901, -0.04991192, 0.004274897, 0.021763584, 0.010298866, 0.007188806, -0.007859624, 0.0034723051, -0.0051036524, 0.00055222417, -0.0030106427, -0.05011998, 0.0070394934, -0.009704327, 0.0045076204, -0.0029967614, -0.0018685178, 0.00027954477, 0.0057056723, 0.004698614, 0.015422536, 0.018253483, -0.02473913, 0.011234085, 0.01670005, 0.016503641, 0.02322702, 0.014981803, -0.011549604, 0.0030360892, 0.0034499634, -0.006891598, -0.011392665, 0.0053600525, 0.0017250235, -0.015849752, 0.0019526418, 0.00441381, 0.0011083069, 0.00879632, -0.006487191, -0.006071513, -0.014979449, 0.002908953, 0.007734771, -0.00062810123, -0.013057615, 0.004856765, -0.028751146, -0.0378328, 0.0071902177, -0.0026101978, -0.006176157, -0.014301397, 0.009311645, 0.005812043, 0.006216182, -0.028744193, -0.026385684, -0.0117400745, -0.016666705, -0.03396553, -0.026202817, 0.007959171, -0.00038143582, 0.0060949964, 0.010590929, 0.0046335543, 0.017146029, 0.00062021264, 0.011148049, 6.3616985e-06, -0.026893452, 0.016917495, 0.012630638, 0.00021880504, 0.008228402, -0.0035598008, 0.004849153, -0.00068987056, 0.020476872, 0.015225312, 0.011713798, 0.010487364, -0.021695467, -0.004192251, -0.008274628, 0.002563185, -0.007375835, -0.004681318, -0.025145316, 0.0067083687, 0.033540048, -0.0061201155, -0.0024181919, 0.025476867, 0.018105075, 0.007092122, -0.04112829, 0.01879443, 0.012370854, -0.021660259, 0.01008139, -0.015663356, 0.023410449, 0.018574718, -0.020436762, 0.0044952407, -0.008403982, -0.0048802453, 0.009639978, -0.01811318, -0.023762362, 0.0104453005, 0.016646363, 0.019754373, -0.04181457, -0.0061548315, -0.009867979, 0.0033878842, -0.018200044, -0.012585777, 0.02678131, 0.024188522, -0.03144448, 0.033384383, -0.0007540113, 0.009400057, -0.00971263, 0.0021998873, 0.0009807494, 0.0032415488, -0.124622345, 0.011174502, 0.024572065, -0.011790753, -0.012057281, -0.010909291, -0.029012749, 0.0068161655, 0.01376444, -0.003577031, -0.0074938694, -0.023549544, 0.029214898, 0.009093398, -0.010575748, -0.008189132, -0.0037616221, 0.0145715065, 0.030900769, -0.035605688, 0.0020199956, 0.0041381693, -0.020411737, -0.028485753, 0.011085002, 0.0035083066, 0.025516436, 0.016869627, -0.004033204, -0.006885995, -0.0040293713, -0.011581048, 0.033477582, 0.02492992, 0.008761239, -0.010692216, -0.006940811, -0.024590697, 0.0025437665, -0.006774471, -0.004200975, -0.00869821, 0.00758568, 0.01852672, -0.01876319, 0.0045159985, -0.013281693, -0.0004899191, -0.01579372, 0.018986015, -0.021734033, -0.006706007, 0.0060647964, -0.0019459872, -0.007123383, 0.012118385, 0.01166797, 0.0020355766, -0.005540299, 0.004892636, 0.0064751203, -0.0013884788, 0.0037279443, -0.023315618, -0.018937973, 0.011611779, -0.015195095, 0.016511658, -0.005727811, 0.025226949, 0.009488917, -0.021378398, -0.019656911, -0.016410029, 0.021136995, 0.035832502, -0.013867513, 0.004386308, 0.0015575212, -0.003359174, 0.005140994, -0.016254758, 0.026736539, -0.0062967846, 0.027923945, 0.008575099, 0.019918622, 0.0152424155, 0.021759192, -0.0379675, 0.013200135, 0.006362793, 0.017756319, -0.006131732, 0.009085887, -0.013920091, 0.013506577, 0.0013176923, 0.0068232627, 0.00810692, -0.023185266, -0.013748858, 0.013784822, -0.0053748903, 0.0012270955, -0.018692145, -0.0025695444, 0.033486832, 0.013972321, -0.0046645477, 0.007211459, 0.003860303, 0.033323407, 0.03173955, 0.0022209324, 0.008125612, 0.00032341457, -0.003504367, 0.008849454, -0.014901913, 0.020093285, 0.010984518, 0.020708168, -0.027557617, -0.019866042, -0.019064197, -0.009329451, -0.001619139, 0.017031545, 0.008624701, 0.0075506493, -0.00046830848, -0.012231559, 0.005261167, -0.009973151, 0.012327313, -0.00029284228, -0.012177945, 0.026138522, -0.0052511594, -0.032983255, 0.0019666967, -0.01631379, -0.005283866, 0.0067007225, -0.018335393, -0.01242996, 0.023244824, 0.004459207, -0.012739205, -0.023677023, -0.008792814, -0.015042924, -0.015243082, -0.01852342, -0.00979116, -0.010403343, 0.011183803, -0.014179961, -0.01996088, 0.008711537, 0.01358377, -0.017433995, -0.009293668, 0.0025363783, -0.0039437036, 0.003040843, 0.014627929, -0.01513753, -0.010893818, 0.028436167, -0.00030052045, -0.016798263, -0.0037398995, 0.013743322, 0.024623534, 0.0017090314, 0.021805495, 0.0021703215, -0.0035057694, 0.021018457, 0.03189835, 0.009966769, -0.012396259, 0.01910743, 0.01285138, -0.008228967, 0.042157833, -0.0034584103, 0.014909452, -0.037549157, 0.0023912285, 0.0041717207, -0.0024750216, -0.0026060815, -0.0011443269, -0.010756205, 0.02133299, 0.0049221194, -0.006027957, -0.021874117, 0.011923416, -0.017914725, -0.027032953, -0.004819454, -0.0038527464, 0.005984662, -0.003016204, -0.014474656, -0.0059804735, -0.0024918262, -0.0051547373, -0.019267162, -0.0043931603, 0.0015678286, 0.005682289, -0.004605099, -0.018670866, 0.013046881, 0.012114228, -0.0049528107, -0.0049569765, 0.0076052253, 0.019269137, 0.0035500932, 0.017008971, -0.009618731, -0.0027449355, -0.0066079027, -0.025162073, 0.023254089, 0.020586526, 0.020907655, 0.0078194635, 0.017589271, -0.0093044415, 0.03972411, -0.01367009, 0.021820767, 0.0065663103, 0.022037128, 0.0033105027, -0.017324902, 0.01886154, -0.0024833062, -0.033237927, -0.029825876, -0.007130667, 0.008148691, -0.013622872, 0.008215217, 0.023586703, -0.0032375052, 0.018134532, 0.003340157, 0.062084984, 0.024971696, 0.00078927726, -0.008140991, 0.022751125, 0.0024958488, 0.021983938, 0.030028807, 0.013055454, 0.021202512, 0.008967539, 0.014477907, -0.024139725, -0.007268213, -0.08979645, 0.009827532, 0.0044519864, 0.006242123, -0.028093224, -0.007492523, 0.0108569795, -0.038266905, -0.00062515767, -0.020292485, 0.0069982656, -0.009460653, -0.022561941, -0.0016777073, 0.009359358, -0.0056340685, 0.0009903106, 0.02589537, 0.013633952, -0.008307132, 0.022135915, 0.022014154, -0.0015987023, -0.008531485, -0.038564667, 0.0136941, 0.007536604, -0.0034995447, 0.0077190925, 0.003736426, -0.005453855, -0.0037902861, -0.009574276, 0.02503652, -0.009713838, 0.025748665, -0.0030429803, -0.0017319445, -0.005556372, 0.007151899, 0.00044861686, 0.024243254, -0.0011174859, -0.0042923554, -0.0034043856, 0.0020586264, -0.0024652036, 0.0010641557, 0.0063525126, 0.0061083874, -0.033520598, 0.024725132, -0.009062996, -0.018589048, -0.027296893, 0.009039292, -0.019942956, -0.014651528, 0.008203328, 0.006380216, -0.0029732834, 0.0148180835, -0.0037313567, 0.018803854, 0.009569448, 0.0015683277, 0.007917696, -0.0044776164, 0.02532016, -0.0073694712, -0.012464774, -0.008975098, -0.029023916, 0.0112504475, -0.0024546199, 0.008568983, -0.0025914637, 0.007500221, 0.01136516, 0.006178373, 0.00065487315, -0.0010890116, -0.111340486, 0.0076107616, -0.011710949, 0.002834612, -0.01966956, 0.00855262, -0.0010161481, -0.011820341, -0.0019463799, 0.0014960662, 0.02480435, 0.0032408242, -0.013242925, 4.790979e-05, -0.0032446042, -0.009810685, -0.0024709958, -0.002814128, -7.2203e-05, 7.994804e-05, 0.007851277, 0.0056396984, 0.009152572, 0.011867177, 0.004770401, -0.012824003, 0.0012317409, -0.0285443, -0.010837693, -0.0030892438, -0.005758533, -0.13255383, 0.0047593284, 0.028043093, -0.023309993, -0.0077553773, -0.029166562, -0.0064552925, 0.02165724, 0.0039130286, -0.009785951, -0.0125840865, 0.013915085, -0.010369048, 0.011079606, -0.015707199, 0.14853208, -0.0194613, -0.0038884897, 0.014487094, -0.022777615, -0.0142748235, 0.009197172, -0.0061391294, -0.01160789, 0.0054051797, 0.0031735098, 0.004734277, 0.019488329, -0.009929215, -0.0153087545, -0.00031808962, -0.011743752, -0.0063962415, 0.009748386, -0.0021266262, -0.009444004, -0.01820517, 0.010775697, 0.009769245, 0.0023124106, 0.011758359, 0.0019383354, -0.025756916, -0.0058244932, -0.016744541, -0.005177213, -0.0010623655, -0.007505421, -0.010191935, 0.023054658, -0.020112004, -0.063145414, 0.005531174, -0.0010751032, -0.014058348, 0.029796744, -0.002334073, 0.017840018, 0.009151701, -0.0042541544, -0.0019743878, -0.06923265, -0.009436598, 0.0233867, -0.007027338, 0.008806033, 0.012857061, 0.018439652, 0.025269529, 0.017095635, 0.0062048156, 0.010068323, -0.022050511, 0.007765344, 0.0005873925, -0.0069274115, 0.015783776, 0.0015900064, 0.010024876, -0.0115946885, -0.007553512, -0.0017752476, 0.014310054, -0.0014167057, 0.010843936, -0.00752356, 0.015507261, 0.027154377, -0.021629224, 0.0020533637, 0.008390171, -0.01356634, 0.012175692, 0.00056733814, -0.0029302756, 0.007758077, -0.013251133, 0.03735139, -0.011355253, -0.0008606549, 0.018703135, -0.031041395, 0.001513347, -0.03283054, 0.036566976, 0.015855275, -0.01553206, -0.0018216535, 0.026656386, 0.009425796, 0.013647747, -0.0038406998, -0.0034908426, 0.032966126, -0.020823695, 0.014203207, 0.0035750426, -0.008039023, -0.0061734766, -0.018390669, 0.0031592986, 0.01102675, -0.009378094, 0.01946, 0.0056270505, -0.006576176, -0.0036247377, 0.002222759, -0.005955491, 0.0033926242, -0.0022702909, 0.004542753, -0.0020777804, 0.0069348146, 0.018808065, 0.002593777, 0.00035886414, 0.0023482353, 0.0053278566, -0.0048979986, -0.0027712337, -0.01519547, 0.014016227, -0.003993287, -0.0039424673, 0.0068112765, 0.0009354211, 0.009655554, -0.0021440438, -0.01173959, -0.009086621, -0.003311498, -0.0075752395, -0.005547464, -0.012148378, 0.0055227103, 0.004714189, 0.0074225753, -0.008678949, -0.006936506, -0.011988269, 0.0145136425, 0.008268353, 0.0013511959, 0.0022097428, 0.0067520393, -0.015721671, 0.0015095283, 0.0018876757, 0.0131803, -0.0052125994, 0.013240421, 0.0032718752, 0.011470708, 0.019719018, -0.007868722, -0.0031630448, -0.013607919, -0.007671135, 0.02265445, -0.018993057, 0.0011178631, 0.0030184465, -0.0032923226, -0.012910732, 0.0055696806, -0.004385955, -0.014097004, 0.013098738, 0.009927833, -0.020466123, -0.031790804, 0.008953468, -0.007841991, 0.009622844, 0.011689912, 0.014736357, 0.011966775, -0.0049949824, -0.013456217, 0.0029761053, -0.0004972462, 0.0018124623, 0.023450242, 0.008818961, 0.015578403, 0.006838381, 0.011787743, 0.006401848, -0.008554068, 0.0032769984, 0.005691664, 0.0033446192, 0.004996657, -0.012328935, -0.00014337787, -0.0072276476, -0.013489926, 0.006542398, 0.0024200412, 0.006407659, 0.00658257, 0.0098438375, -0.006926448, -0.0018434568, -0.011406963, 0.002057549, -0.0028111308, -0.0062484816, 0.0047938316, -0.007665935, 0.014911896, 0.012184405, -0.0004537209, 0.017269272, 0.0015187316, 0.022711638, -0.009039745, 0.000566125, 0.0057224897, -0.014241028, 0.00728214, -0.012275623, -0.003991845, 0.0031499718, 0.013683913, 0.005002052, 0.007791011, -0.006061983, 0.012462491, -0.017259948, -0.003294801, 0.020635586, 0.0064685466, -0.0032722915, -0.010588137, 0.0055095153, 0.012568544, 0.020467281, 0.0039871284, -0.006567104, -0.0052050436, 0.019310508, 0.0007541559, -0.0039628134, 0.0018161333, -0.025565801, 0.0022170816, 0.008383371, 0.0016976749, 0.0013169087, 0.0072280904, 0.00043818206, 0.006487496, -0.008234987, -0.013804775, -0.0071011824, 0.004301779, 0.0076040607, 0.00026553465, -0.013978863, -0.0022398445, -0.010073331, 0.001378665, -0.011655543, -0.0025281853, 0.0064877234, 0.005105184, -0.001253591, -0.016037136, 0.0022178087, -0.00018209097, -0.0017776627, 9.390462e-05, -0.010127431, 0.010108842, 0.008802711, 0.0012650582, 0.0014346605, -0.0022895061, -0.009721528, 0.002106671, -0.0032146594, 0.0012294214, 0.025103608, -0.0060916333, -0.004375702, 0.0031169306, -0.002403232, 0.0036379022, 0.099150434, 0.0050977077, 0.019103516, 0.018123176, -0.00641615, -0.007812411, 0.01689265, 0.006873689, 0.0012032719, -0.010745668, -0.0072558033, -0.0057703336, -0.016017653, 0.011575295, -0.014287684, 0.0040288507, 0.00035499665, 0.0038425853, -0.0059944894, 0.0064374455, -0.01055123, -0.011411333, -0.0020794396, -0.03357867, 0.023145113, 0.0038708441, 0.013038566, 0.0013081246, 0.0137445815, 0.0037631444, 0.006775272, -0.014702711, -0.012787806, -0.011213579, 0.0018051929, 0.007411551, 0.0012860112, 0.0023756204, 0.008827388, 0.008103292, -0.006595727, 0.009404119, 0.005707071, -0.0076382444, 0.0044162855, -0.011250839, -0.007862551, -0.004038489, -0.013900646, 0.009726302, -0.010318265, -0.0049637896, -0.008849078, 0.011831046, -0.018245734, 0.0026684778, 0.0030156735, 0.002048939, -0.017357029, -0.006360324, -0.0031979224, 0.013873581, -0.011460241, 0.015699241, -0.006945846, -0.014704577, 0.001639534, -0.0036077767, 7.477201e-05, -0.0070529534, -0.0074082003, 0.008105086, 0.0027408854, -0.012404076, 0.047166396, -0.023610884, 0.005393696, -0.009819781, -0.020763718, 0.016728906, -0.0044856705, -0.011954361, -0.005414105, 0.0039427187, -0.003017932, -0.005948869, -0.018116254, -0.0055170427, -0.012061531, 0.0025465896, 0.019162923, -0.0038469536, -0.02426238, 0.0033866293, 0.001715548, -0.0126257595, 0.110108815, 0.009526291, 0.015302868, -0.0018256153, 0.009874081, -0.015023826, -0.0026252833, -0.007113226, 0.012222318, 0.010760951, -0.0006905928, 0.008161423, 0.017670702, -0.0023108753, 0.014374014, -0.008081441, -0.008081291, 0.0125306295, -0.0026793822, -0.0032000365, -0.007764513, 0.008264854, -0.017081711, 0.01505305, 0.015108973, -0.0058961324, -0.008967146, -0.0009737416, -0.026299978, -0.010576113, -0.009151786, 0.000629556, -0.00080465974, 0.009976492, -0.005365671, -0.014674663, 0.0056867753, 0.00039618395, -0.008198037, -0.019754961, -0.006353381, -0.0047243657, 0.011523915, -0.003669543, -0.001969544, 0.009289482, -0.0057113664, 7.804169e-05, -0.005704618, 0.017114911, -0.00028992468, 0.0021905575, 0.0032700768, -0.003848536, -0.0069853826, 0.0154455695, -0.008593011, -0.01874888, 0.00533686, -0.013470405, 0.010130901, 0.0016556757, 0.01733363, 0.012311638, 0.0010464182, 0.016613899, -0.0018007389, -0.0075159017, 2.5645355e-05, -0.010907435, 0.013142811, -0.022482142, -0.011474547, 0.018076569, 0.005050351, -0.001997235, 0.008096223, 0.0043833777, 0.00949188, 0.01515072, 0.00046413866, -0.00854549, -0.004377132, -0.0063424995, -0.000576798, 0.004404358, -0.0059497557, 0.019253355, 0.005373753, -0.005796289, -0.0045998674, 0.015444049, 0.013625838, -0.0019261105, -0.0049046995, -0.028571926, 0.028330754, -0.0026768905, -0.014038912, 0.017988183, -0.012462325, -0.0029675905, 0.016606113, -0.014302834, -0.018672237, -0.015079303, -0.0022023825, -0.026077606, 0.010548628, -0.023084678, -0.005073793, -0.004002584, 0.00067545514, -0.0009742146, -0.018017456, 0.0034590624, -0.0023994674, 0.0032991623, 0.003367507, -0.0026153838, 0.0057632807, -0.008392058, -0.0018211775, 0.0071298676, 0.012505902, 0.0028128691, -0.021341728, 0.0074576484, 0.016159458, 0.0098391455, 0.0046103573, -0.029048951, 0.0044192513, -0.035650607, -0.0012240071, -0.01462015, -0.0025579168, 0.01802885, -0.016236685, -0.0030668057, -0.012446593, -0.013280719, 0.0039154715, -0.019768277, -0.0018593695, 0.013105579, -0.012902612, -0.0011059877, 0.008373417, 0.024523573, -0.0046463627, 0.012843337, -0.01789186, 0.0013248714, -0.008297413, -0.0017105504, 0.002998413, 0.008483556, 0.0025365911, -0.01965758, -0.00034947516, -0.07128841, 0.02114405, 0.012849592, 0.0044030068, 0.012301979, 0.0012762411, 0.010948455, -0.009778161, -0.0076717194, -0.004807137, 0.011057163, -0.0027344066, 0.0039713355, 0.014307493, -0.004719575, -0.005606275, -0.004857556, 0.0030969298, -0.0071502356, 0.0071694753, 0.0056118337, -0.011003906, -0.013242454, -0.002201133, -0.011210143, 0.011707216, 0.014977044, 0.01779632, 0.0049853637, 0.011419012, -0.015742203, -0.00091059506, 0.019840932, -0.0076076766, 0.014827489, -0.0013193649, -0.004084095, -0.0046535544, -0.0033257792, 0.016922941, 0.00933627, -0.0029515675, -0.019037096, -0.011801967, -0.009330346, -0.010905885, 0.007985489, 0.009175586, -0.0026117398, -0.017909586, -0.018827332, 0.010766246, -0.012840325, -0.010998265, 0.016460525, 0.006236891, 0.010233909, 0.0026413705, -0.008256922, 0.00972893, 0.007981085, 0.01276551, 0.0018061681, -0.0043630814, -0.00842181, 0.004283824, -0.0077637713, 0.015816802, -0.009293964, 0.012796772, 0.0040589576, 0.0011082987, 0.010102504, -0.01052493, -0.008747211, 0.012556736, -0.0055830814, 0.014535094, -0.0045808023, 0.00898575, 0.0039800196, -0.00030643796, -0.009707205, -0.0021455677, 0.004889441, -0.0019278255, -0.00551531, -0.00697778, -0.009371127, -0.007763565, 0.0070936517, 0.010226026, -0.025632773, -0.0029757218, -0.0073764855, -0.0039766, -0.01939676, -0.005446109, -0.009669013, 0.013183179, 0.005567823, -0.019986682, -0.009758843, -0.00025886044, -0.0105059445, 0.020477045, 0.011233786, 0.0077587278, 0.0035075815, 0.007340564, -0.0016727118, -0.0027424465, 0.01035379, 0.007912738, -0.000476204, 0.004735652, 0.0073024845, 0.01843886, 0.019832747, -0.00910018, -0.015345127, 0.008405346, 0.0019537315, 0.0019164104, 0.002299855, 0.002696311, 0.005631684, 0.00578032, 0.00852868, 0.0028267794, 0.008999864, -0.007418031, 0.02282058, 0.011151882, -0.024318231, 0.0009780303, 0.0048498465, 0.012158211, 0.013832286, 0.005164173, 0.0015807186, -0.011898483, -0.009008129, -0.008798536, -0.010670915, 0.014252894, 0.009829728, -0.009099043, 0.0069771223, 0.02418554, 0.015512573, 0.00018900732, 0.0064851698, 0.019639648, 0.0027836817, -0.008141263, -0.001998092, -0.008841341, -0.0021694945, -0.027253378, 0.021251235, 0.0019023509, 0.0038814552, 0.0021502986, 0.014704044, 0.0013565895, 0.007978371, -0.0006929121, 0.010177474, 0.0063588684, -0.0010999792, 0.011858147, 0.00059684494, 0.013481803, -0.0013868957, -0.0039049794, 0.0035277978, -0.0069398256, 0.013482031, 0.0053362814, 0.011165399, -0.0091067515, 0.009329792, 8.713115e-05, 0.001329974, 0.003414262, 0.009019938, 0.0031056672, -0.009470695, -0.0022317746, -0.027405925, 0.025359284, 0.012371703, -0.0037342575, 0.0018377325, 0.00076526735, -0.015860876, 0.0033443947, 0.0005435608, 0.011880754, 0.0064352187, -0.0040956065, 0.0013957444, -0.0019419627, -0.004247217, -0.10113446, -0.0049007274, 0.005112618, 0.014931993, -0.004185019, -0.011393176, 0.01751062, 0.0077599576, -0.0061833723, -0.029866148, 0.004701496, -0.0037799496, -0.0043319985, -0.0015041421, -0.004327486, -0.01946988, 0.0157463, -0.009110845, -0.0012058119, 0.010209955, 0.012683676, 0.008276147, -0.009890312, 0.009617936, 0.0058802175, -0.0015596602, 0.011550261, 0.009336738, 0.01749894, 0.010255385, -0.027008766, 0.013050459, 0.008046472, 0.0030197853, -0.004652549, 0.0069988957, 0.009348113, 0.0010765893, -0.13154635, 0.0012652715, -0.0071356157, -0.0040416284, -5.566019e-05, 0.00078611454, -1.2464685e-05, 0.00022251309, -0.0005219734, 0.017187934, 0.0023682495, 0.0081900945, 0.003430522, -0.0023826663, -0.007831453, -0.0032064104, -0.01439624, 0.023305664, -0.0075669624, 0.015986707, -0.0068884487, 0.00775772, 0.01839717, 0.008425049, 0.00012909493, -0.014745144, 0.004739198, 0.020555062, -0.014311922, -0.0004176774, -0.0014121381, -0.0014468001, -0.009847998, -0.0040604915, 0.0064213397, 0.0001540802, -0.0045972574, 0.004563926, 5.513047e-05, -0.013095992, -2.350623e-05, 0.00257934, -0.022639152, -0.004979251, -0.0066806725, 0.01242826, -0.01733605, 0.015073579, 0.004502074, -0.013236162, 0.005460156, 0.008564144, -0.018589975, 0.011798008, 0.01764574, -0.006389439, 0.013675649, 0.0027546242, 0.004415887, 0.0009002774, 0.0007691865, 0.008201844, -0.0050344197, -0.0043231295, 0.0039198464, -0.00011188745, -0.011282626, 0.0126269655, 0.013221059, 0.011627293, -0.006934167, -0.00085665955, -0.018859025, -0.014511176, -0.00013327446, 7.926157e-05, -0.0009064932, 0.009159476, 0.007928088, -0.007916146, -0.0027911032, -0.0050543775, -0.0042212503, 0.014304856, 0.009245745, -0.03528282, -7.623171e-05, -0.00063225004, -0.00079313794, -0.041682914, -0.022347867, 0.008790185, 0.010286237, 0.01932483, 0.009303921, 0.014143503, -0.00030344658, 0.008106611, 0.0033638885, 0.013180762, 0.00077922305, -0.005838258, 0.012066535, 0.0051860586, -0.0070442194, -0.006834165, -0.00023954672, 0.007342173, -0.023239428, -0.003617059, -0.0026720944, -0.003708353, 0.0154788615, 0.009052739, 0.0043318435, 0.0039538904, -0.0017184541, -0.002295819, -0.008554293, -0.007275183, 0.024533488, -0.01794375, -0.007010153, 0.0021689893, 0.009303209, -0.0012250267, 0.028254261, 0.0009670305, -0.010763198, -0.016930241, 0.0051692757, 0.0061168987, -0.012951033, -0.0076493258, -0.0026840272, 0.011222177, -0.0010592218, 0.011700341, -0.03209625, -0.006637757, 0.014856078, -0.0023493082, -0.003142559, -0.0010250331, -0.0064032343, 0.00408636, -0.008821977, -0.009490421, 0.009515141, 0.0054991934, -0.011902213, -0.024442425, -0.005363275, 0.005948597, 0.019373002, 0.00038308738, 0.0071736826, -0.0068738596, -0.0050033713, 0.010404801, 0.01242861, 0.003386588, -0.01729966, 0.0044065197, -0.0056427605, 0.01180931, 0.013047892, -0.011034325, -0.009681939, 0.0023137769, -0.013493431, -0.001059334, 0.0094511295, 0.016935976, -0.006434127, 0.010116888, 0.0014509656, 0.0135692, 0.017733265, 0.007530965, -0.0008389675, -0.020920306, -0.01974019, -0.011524619, 0.020378327, 0.0011572792, 0.0057896916, -0.0076154163, -0.007968624, 0.0062724855, -0.02427061, 0.011058769, -0.002157005, -0.0049139075, -0.022619544, 0.0036295229, -0.00033956114, 0.0061540008, 0.011330802, -0.0016705551, -0.0006477638, 0.008865951, 0.008978624, -0.12549376, 0.0011483863, -0.0007791609, 0.0005772204, 0.007218184, -0.010967211, -0.01324162, 0.00046197567, 0.00034464907, -0.01693338, 0.014493383, -0.0025178269, 0.0027948504, 0.0036025217, -0.009861312, -0.0225297, -0.000573024, -0.012890834, -0.0013044835, -0.0038721594, -0.006036357, 0.009784855, -0.00015153433, 0.0011565959, 0.004817443, -0.018549193, 0.0057863165, 0.012938486, 0.003984826, 0.008245914, -0.00889808, 0.0015177145, 0.0004841874, 0.0023484682, 0.0063209306, -0.019559119, -0.013507841, 0.009482627, -0.010881602, 0.011027014, -0.011760992, 0.0031759902, -0.0015512988, 0.0014484901, 0.014865368, -0.016976962, -0.02547821, -0.0065713366, -0.02425702, -0.00451906, 0.020565875, -0.013748187, 0.025450295, 0.008542114, 0.019847086, 0.011130348, -0.021192199, -0.003708448, -0.0078379, -0.0063854987, 0.0025960186, -0.029646127, 0.0044672065, -0.013433558, -0.0058213654, 0.0012396253, 0.003019675, 0.15411599, 0.010998347, 0.029062161, 0.006693313, -0.0054720165, 0.019001098, 0.0017947664, 0.009643303, -0.019859176, -0.013053867, -0.0014972056, 0.012968202, 0.022594115, 0.0042089564, 0.0057625542, 0.012586268, -0.002975285, 0.0036044864, 0.002609338, -0.013938287, 0.0072566983, 0.0050863284, -0.0026246917, -0.012773603, 0.017351517, 0.0008529758, -0.0040164003, 0.026201462, -0.0035293067, 0.029804457, -0.03150015, -0.025760215, -0.011178453, 0.00096790073, 0.022471966, -0.013772505, 0.0046933587, -0.00025096192, -0.00555039, -0.0049909786, 0.004744763, 0.017482406, 0.001062143, 0.0011754198, -0.01266103, 0.030516041, -0.009300723, 0.028953398, 0.013668008, 0.012296531, -0.01588032, 0.01264528, -0.016288685, 0.0040984144, 0.008894846, -0.009905231, -0.0031888848, -0.019149061, -0.022689741, 0.005309861, -0.010596462, -0.02324654, 0.0013965329, -0.029675262, -0.0043770433, -0.003507999, -0.0064335177, -0.0103402445, 0.01674405, -0.13440363, 0.0075927963, -0.026676102, -0.032818712, -0.0067202155, -0.014972761, 0.027623676, 0.004783768, 0.010645377, 0.012571089, -0.0047334954, -0.001073749, -0.010340614, -0.0057129604, -0.019388748, -0.002851394, 0.0018149882, 0.0051914062, -0.003441121, 0.031389713, -0.0032258602, 0.019027298, -0.008462774, 0.012915185, 0.0032007927, -0.010973557, -0.034335855, -0.0059200427, -0.03785064, -0.0037700073, 8.772684e-05, 0.012637739, -0.0051584966, 0.009722612, -0.0118046375, -0.015749305, 0.0069755847, -0.0036867931, -0.011300213, -0.031987187, 0.027123645, -0.016610831, 0.0005068831, -0.01626866, 0.004232682, -0.0039797314, 0.0006992772, 0.008946579, 0.009619923, 0.008039646, 0.006433071, 0.0083857635, 0.029214738, -0.0034094984, -0.0071839793, -0.014568484, 0.025239041, -0.023112576, -0.0040391656, 0.0025568993, 0.005448043, 0.008596333, -0.01949378, -0.024491489, 0.015189006, 0.0069937613, -0.0015614115, 0.0022333695, 0.0013130095, 0.027399655, -0.021442642, -0.0027017589, 0.024845898, 0.0042768396, -0.015303012, -0.0012927616, -0.014212585, -0.008490385, -0.012857499, 0.0026918866, 0.0024612076, -0.01787842, 0.00016677297, -0.013076192, 0.01851199, -0.020004472, -0.018267537, -0.008571638, 0.009272392, 0.009917584, 2.2427668e-05, -0.0001679924, 0.001495124, 0.0029355432, -0.009955851, 0.011481669, -0.018617634, -0.012655013, 0.002959863, -0.010551828, 0.010566976, -0.00547638, -0.007314806, 0.007814827, 0.017825393, -0.011271756, 0.0015437632, 0.026420074, 0.011520657, 0.0028496024, -0.009558027, -0.003171749, -0.026519092, 0.00839664, 0.010000108, -0.00984401, -0.012995163, 0.01792866, 0.0103383735, 0.008174345, -0.013954868, -0.0008839658, -0.0016546377, -0.0014585721, -0.003730229, 0.008337699, 0.021007448, -0.0116751855, 0.006853999, 0.010470975, 0.0047475155, -0.017074361, -0.0036898616, 0.007525888, 0.014242162, -0.0031338038, -0.010483396, 0.004184124, 0.004200691, -0.0047563063, 0.0067842705, 0.006841096, -0.006166926, 0.0073447954, -0.00331166, -0.0033253352, 0.014838811, 0.03302482, 0.013676978, -0.003965307, 0.00034891054, -0.0070057632, -0.031226847, 0.008741119, 7.7074925e-05, 0.002309868, -0.021092178, 0.004424756, -0.010805343, -0.0070582503, 0.0009030877, 0.0047311857, 0.00027707225, -0.015054697, 0.011745699, -0.015118417, 0.0020726868, -0.0074079563, -0.003979076, -0.0373274, 0.0076907068, -0.0033847496, 0.009676019, 0.003989316, 0.00537552, -0.0102131115, 0.01604806, -0.0021019657, -0.0036074242, -0.07370773, 0.016251508, 0.01913491, -0.0075744167, -0.0057346495, -0.019592883, -0.00089839625, -0.008792925, -0.0062233307, -0.0034513252, -0.0009158271, 0.006966837, -0.021693151, -0.022992263, 0.011297129, 0.012391907, -0.028648555, 0.010610384, -0.010035838, 0.0014479007, 0.0036349122, 0.0019729754, 0.027745439, 0.0024648064, 0.002361533, -0.0014738202, -0.003769813, -0.020667529, -0.01568652, -0.006640782, 0.007305903, -0.001541139, 0.0011563754, 0.012078278, 0.014150128, 0.0066564083, 0.0012767742, -0.0030075193, 0.008200627, -0.059310015, 0.025066322, 0.00867268, -0.10115889, 0.001994195, -0.018544506, 0.0028172724, -0.008930844, -0.0077836025, -0.015807088, -0.0027923172, 0.011694538, 0.022896796, -0.002467835, -0.014921493, -0.0013206194, -0.0022400932, 0.0028951548, -0.015705826, -0.009918975, -0.022789411, -0.0011261936, 0.015051474, 0.006905711, 0.007927853, 0.001767738, 0.003032793, -9.9784564e-05, 0.010290896, 0.0037157934, -0.0009753703, 0.0030746039, -0.01603226, 0.008226444, 0.010678811, -0.001846853, -0.01040114, -0.0029527647, -0.0107408315, 0.0031248461, -0.002524024, -0.0051562926, 0.0032902923, -0.008285604, 0.030032016, 0.008766954, -0.012917063, -0.0019435539, -0.12764004, -0.0117520355, -0.026418528, 0.0015738814, -0.0022685546, 0.01869576, 0.007770697, 0.1321313, -0.031599507, 0.0009070102, -0.013740191, -0.0071907807, 0.00022861015, -0.0064419587, 0.0021176182, -0.00010337344, 0.011212686, -0.010468846, -0.016620316, -0.0018967239, -0.0239491, 0.00014967505, -0.004005274, -0.0051165093, -0.0032032167, -0.041815303, 0.0073320684, 0.019712688, 0.00586059, -0.0021483193, -0.0046662134, -0.0040648635, 0.015170731, 0.005767225, 0.0012438516, 0.017445898, -0.00781913, -0.00075357634, -0.0026311597, 0.0015433509, 0.005465703, 0.009966477, 0.012214459, -0.025185978, -0.01744069, -0.010157152, -0.015251515, -0.007837943, 0.026992958, -0.014606038, 0.0125807235, 0.012833016, -0.007330095, 0.006914375, -0.022544127, -0.00012776212, 0.0022015842, -0.013039287, -0.0064494205, 0.00250702, -0.014849575, -0.0054368586, -0.003328686, -0.013628556, 0.0036707746, 0.018588293, 0.0033171338, -0.005719763, -0.0046660253, -0.00085371744, 0.006026803, 0.01482038, 0.008803959, 0.0050346083, -0.0071692043, 0.0038208691, 0.010881046, -0.00025067513, -0.025629546, 0.015926838, 0.012460762, -0.0012118124, -0.0003016765, -0.012153138, 0.015534729, -0.0044092545, -0.00095768174, -0.0016420397, 0.013804815, -0.010450318, -0.009980672, -0.016674217, -0.018013258, -0.0026939707, 0.006385547, -0.00022842591, 0.010432637, 0.0026066245, -0.015953293, -0.0056060944, -0.022458443, -0.022350803, -0.008945824, -0.0022699353, 0.0007100897, -0.0075403196, -0.0020852736, -0.008612602, 0.003081507, -0.0063186265, 0.015791815, -0.008857787, 0.012388251, 0.0036018589, 0.003696184, 0.014438639, 0.0069463286, 0.008595042, -0.014976479, 0.005360097, -0.0008863557, 0.0021500725, -0.009453832, -0.01975644, -0.005339055, -0.012412678, 0.022777477, 0.0026788148, 0.004590457, -0.019592844, -0.010005164, -0.0024333696, 0.0029599476, 0.013824455, -0.011126957, -0.0044667856, -0.0027832435, 0.009864287, -0.010240515, -0.02289832, -0.018920938, 0.0055165305, -0.021835156, -0.010456208, 0.016913459, 0.007766291, 0.0077063288, -0.02810555, -0.016521297, -0.023434367, 0.0053794077, 0.0036307161, 0.02542831, -0.0025094163, -0.006459824, 0.0063279364, -0.005066118, 0.0075214356, 0.011747835, -0.002646805, -0.029509472, -0.00086615206, -0.007892074, -0.003725141, -0.021037554, -0.0011267157, -5.579391e-05, -0.010627381, 0.023485506, 0.005429961, -0.004252876, -0.017227678, -6.281759e-05, 0.003560077, 0.017644353, 0.0030251953, 0.0035889088, 0.006534239, 0.010435479, -0.010141574, -0.003465907, 3.264064e-05, -0.0017140793, -3.5351193e-05, 0.0045308904, 0.00033461765, -0.0051832167, 0.0012082846, -0.0068293232, 0.0032011736, -0.0020273188, 0.012943087, 0.007367056, 0.015017999, -0.0009245704, 0.00767235, 0.0054951287, -0.019832144, -0.0026459172, 0.017353136, 0.014508564, -0.008996641, -0.008176985, -0.023621656, 0.016050432, 0.016184215, 0.00855087, 0.0077263364, -0.022535987, -0.0062524043, 0.00948866, 0.007980636, -0.006194562, 0.008656705, 0.011052535, 0.006233825, 0.013555629, -0.001158201, 0.0016663927, 0.003887912, 0.016378049, 0.010259253, 0.03075573, -0.0073310076, 0.002906897, -0.023796588, -0.0049516573, 0.009867118, 0.009279919, -0.0013618099, 0.004735957, -0.011912313, 0.014314374, -0.010991461, -0.01793626, -0.0042441883, -0.011599214, -0.004664947, -0.007730245, -0.023849424, -0.008907767, 0.001680627, 0.0021082838, 0.004427241, -0.009299997, -0.027704282, 0.013674968, 0.018026924, -0.013029633, -0.013729332, -0.005878005, 0.0016829204, -0.0051390175, 0.010078276, 0.0030407524, 0.013154401, 0.010024837, 0.007754739, 0.010033473, 0.004688279, -0.004011831, 0.006805001, 0.009030964, -0.0032740508, -0.024805795, -0.012260087, -0.017885132, 0.022400007, -0.019947696, 0.0022859147, 0.0013856788, 0.0060809995, -0.022569733, -0.021946022, -0.0054134256, -0.017881397, -0.009177422, 0.0107345125, -0.010607636, 0.013973255, 0.003978502, -0.012738835, 0.000791927, -0.022167979, -0.010027519, -0.006300139, 0.0016046254, -0.0011658802, 0.0128343385, -0.025260564, 0.004826241, -0.0064358516, 0.0054054204, -0.0033747216, -0.0011064982, -0.004175435, 0.010213595, -0.012992344, 0.010516374, -0.004002639, 0.028947463, -0.006851498, -0.008816499, -0.012853919, -0.005094008, -0.014931464, -0.0034168812, -0.01646018, -0.02397455, -0.0047775037, -0.02043237, -0.0029183512, 0.02339196, 0.0010641259, -0.035893433, 0.015418697, -0.00570236, 0.022694616, 0.032251097, 0.0014124541, 0.014922707, 0.006191483, 0.021030203, 0.011940469, 0.02959254, -0.0066985167, 0.01737022, 0.001593132, -0.0024463893, -0.008048572, 0.016283758, -0.0076325587, -0.022071593, -0.009680199, -0.009991326, -0.008559377, -0.003527623, 0.009898091, -0.0239721, -0.006869922, 0.005094324, 0.014594455, -0.0042542615, -0.018695602, -0.0059096892, 0.010420368, -0.0024047978, -0.005004349, -0.018082088, -0.0026000964, -0.0023837327, -0.011441631, -0.0074695516, 0.008580243, -0.0063919043, -0.0017962483, 0.011074562, -0.0025787882, 0.005604805, -0.0037249092, -0.016371569, 0.03919583, 0.0032451504, 0.004928544, 0.011013678, 0.005899762, -0.038711008, -0.006520802, -0.009998993, 0.01638301, 0.01924471, 0.008516619, 0.012274732, -0.004723619, -0.015955744, -0.01359156, -0.010410402, -0.00184826, -8.660255e-05, 0.014252323, -0.004730456, 0.013736535, 0.012686817, -0.013235756, -0.0009964491, 0.0037149363, -0.020582091, 0.02038097, 0.028052317, -0.007478327, 0.0033647777, -0.0037701842, 0.0016368731, 0.0045173857, 0.011923115, -0.011889629, -0.0012407245, -0.0010608097, 0.0019567208, -0.0248674, 0.033993214, 0.00042667708, -0.0034449252, -0.022427725, 0.009021254, -0.027144741, -0.0023788041, 0.011085944, -0.023597613, -0.009491141, -0.005776225, -0.0016031681, -0.021279635, 0.012437693, -0.016642189, 0.025417395, -0.014908248, -0.008183821, 0.039981786, 0.0040104603, -0.0074198744, -0.015832355, 0.021973945, 0.010837469, 0.0030428884, -0.0038051778, -0.012305103, -0.020555655, 0.03235212, -0.010549047, 0.015897121, -0.013503583, -0.015522676, -0.021551834, -0.0021402794, -0.003645485, -0.013429839, -0.007476074, -0.0013966657, 0.011476252, -0.011817603, 0.0143499, 0.026428957, -0.0056521515, 0.019470528, -0.009124, -0.018970879, 0.015043343, 0.0004576729, 0.040772706, 0.002367863, 0.0028462203, -0.002960511, 0.012848347, -0.009437713, 0.008334162, -0.005632875, 0.0031996076, 0.029671298, 0.008185566, 0.0084228795, 0.005100863, 0.011880753, 0.0012442798, -0.019727675, -0.023113897, 0.0035514317, -0.012268589, -0.0054680523, -0.0017859386, -0.046230547, -0.013419785, -0.033217926, 0.011873421, -0.003891995, 0.012969521, 0.0065369657, 0.0013104244, 0.011228913, -0.04874567, -0.0065299175, -0.012434343, -0.026985493, -0.0038235527, 0.018916523, -0.0042355824, 0.009603488, -0.034257222, -0.014229425, 0.017436275, 0.0023552575, 0.004705255, -0.0017279481, -0.015836205, -0.011282497, 0.00075895473, -0.011368437, 0.0042966832, -0.0017585753, 0.01659405, -0.012923276, -0.0059640934, -0.0046882005, -0.011100364, 0.014342708, 0.015982203, -0.00887332, -0.0022998685, 0.030196847, -0.018628055, -0.006706339, 0.014671887, -0.0099548185, -0.0067233085, -0.009807834, -0.01689993, -0.008447269, -0.01216179, -0.017622743, 0.017328693, 0.017838366, -0.011037993, 0.0039087404, -0.0032270402, 0.011305451, -0.0068248753, 0.0034847471, 0.0033400392, 0.021361908, 0.019645192, -0.011504775, 0.020355903, -0.017869975, 0.008740273, 0.0040119006, -0.02039089, 0.010365827, 0.011100598, 0.012329933, 0.0031863514, 0.025081683, 0.0017841234, -0.012944432, 0.008082693, 0.012554458, -0.0070418385, 8.4894644e-05, -0.031730615, 0.009901145, 0.009566268, -0.007260933, -0.016410906, 0.0039879605, -0.014069598, 0.024369983, 0.00776768, 0.013354023, 0.0076537197, 0.008906825, -0.011182678, -0.01077545, -0.0007510319, -0.0010947599, 0.002254599, 0.01809531, -0.024941899, 0.025307592, -0.012712451, -0.00095111044, 0.012815936, -0.007110248, 0.0022671574, 0.0070549324, -0.009609365, 0.0030197115, 0.013972379, -0.010187787, -0.015748797, -0.010865253, 0.0046360004, -0.0028331748, -0.003289964, -0.01276741, -0.005548282, -0.026381258, 0.01732164, 0.0051409523, 0.014974104, 0.012286174, -0.004700372, 0.011064182, -0.008523704, 0.024264384, 0.011873411, -0.009858362, 0.020916112, -0.0016135278, -0.028254904, -0.020963738, 0.0061805816, 0.011928123, -0.016326925, -0.017728625, -0.028945975, -0.008378486, 0.018371321, -0.00047020285, 0.0050460277, -0.0014687211, -0.008961886, -0.027412, 0.02813198, -0.015013141, 0.0026996767, 0.015116287, 0.0007102734, 0.024283363, -0.023386529, 0.0022846186, -0.007687656, -0.0033755803, -0.0020437601, -0.0054740226, -0.0036424045, 0.0028392277, -0.012008524, 0.031928256, 0.0041273134, -0.0089144325, -0.032349136, 0.018246403, 0.0064425273, 0.013568862, -0.0056619854, -0.011318169, 0.009910818, 0.005976557, -0.0024324104, -0.009070891, 0.02609382, 0.009164383, 0.0067841965, -0.0003882786, -0.00662996, 0.0072617503, -0.0032657527, 0.0012167445, -0.0037888796, 0.012696804, -0.001716066, -0.0024137483, -0.00061802333, 0.009255335, 0.013259118, 0.010822346, -0.0022604822, 0.007705501, -0.0062117274, 0.022560894, 0.005789997, 0.009870279, -0.016180025, 0.008896671, -0.017942028, -0.00044274877, 0.016847199, 0.0148135545, -0.008388685, 0.0025089493, 0.00496837, -0.010412286, -0.00950524, -0.012983192, 0.011212081, 0.00030424952, -0.015531045, 0.0068566757, 0.00036008502, -0.015272015, 0.011732208, -0.033582006, 0.01810853, -0.00037915682, -0.0044306708, 0.016721655, 0.0024983326, 0.18192898, 0.11574661, -0.006695629, 0.00040009964, -0.0012250019, 0.0076864487, 0.0034757166, 0.012513828, 0.0037730555, -0.016599694, -0.02198299, -0.012400087, -0.0046616937, -0.0045308257, -0.008734685, -0.018628504, -0.0053031123, -0.009979567, -0.012507724, -0.0038312646, 0.007432121, 0.025419325, 0.015787736, 0.016439037, -0.01633571, -0.0069500324, -0.028771466, 0.0007385791, 0.0042925347, 0.0098091485, 0.0053268457, 0.0054380856, -0.0075696036, 0.00061018346, 0.00820882, 0.0011488122, -0.004683429, -0.00546984, 0.0011713504, -0.008540978, -0.008693511, 0.009943681, -0.027417703, 0.008421478, -0.004617386, -0.0036036822, -0.00806491, 0.006609918, -0.002115457, -0.006302717, -0.0004683854, -0.0011388202, 0.0023845516, 0.005539582, -0.02458794, 0.0066834376, 0.009032304, 0.022472192, -0.024583867, 0.011357299, 0.030708237, 0.006286613, -0.024127001, -0.004261912, 0.0060589416, -0.019336466, 0.011349811, -0.017727597, 0.019299418, 0.011931476, 0.0025496334, 0.003698905, 0.021144561, -0.0053581125, -0.007147438, -0.0070261406, 0.007004396, 0.02087099, -0.02232327, -0.00914425, -0.03734111, -0.012692625, 0.00951948, 0.0027951377, 0.0029665923, 0.008958011, -0.014967644, 0.017949145, 0.13550235, 0.008739238, 0.0069498075, -0.016870564, 0.008574542, -0.015286999, -0.009498894, 0.050684035, 0.0031985315, -0.0071731596, 0.0034208817, -0.023815464, 0.011259904, -0.013000243, 0.0023959975, -0.0031024679, 0.018822419, 0.07259271, -0.005754364, -0.01297449, -0.009203447, -0.012284401, 0.00066643266, -0.016920662, -0.01871044, 0.014503336, 0.00446966, -0.014284746, -0.020385472, -0.010954158, -0.11834668, -0.012137524, 0.0034122174, 0.02119757, 0.023010245, 0.013619113, -0.03608078, -0.022575248, 0.020519473, 0.0077648647, 0.0129157165, 0.0010266651, 0.037588265, -0.013121277, -0.010810563, -0.010819504, 0.01107703, 0.0058187465, 0.0073332693, 0.0055080527, 0.0063170707, 0.010691358, -0.013011938, -0.017021524, 0.0018511998, 0.010016584, 0.0029402256, 0.0049434146, 0.016218748, -0.00094759377, 0.005489795, 0.006671583, -0.002078264, 0.01642489, -0.005284572, 0.006392261, -0.016854798, 0.0001234301, 0.0070276, -0.017583396, 0.008571602, -0.007872555, 0.014736844, -0.03051385, -0.008184289, -0.02187798, 0.025266686, -0.02554556, -0.006624621, 0.001638356, 0.0661878, -0.00018980939, -0.01949759, -0.014423047, 0.011357499, 0.016133076, 0.009662694, 0.011706927, -0.02588653, 0.009055956, -0.028707054, 0.009987235, 0.009483339, -0.015588614, 0.025857266, 0.0008257921, -0.009878127, 0.0011446921, 0.00858539, 0.007949241, -0.012273512, -0.010559733, -0.009155529, -0.01851766, -0.023253812, -0.015820866, -0.0071343724, 0.010148998, 0.005852047, -0.004211419, 0.014076001, -0.021029646, 0.01143922, 0.12621424, 0.016577745, -0.013200802, 0.007252911, 0.010128976, -0.01800221, -0.0071450714, 0.00057110324, 2.8346067e-05, 0.01218976, -0.011770302, 0.009635198, 0.007728661, 0.018418025, 0.01590825, -0.022693992, 0.023796547, -0.011384495, 0.0056952396, -0.0020202643, 0.0030059956, 0.0052879816, 0.004840821, 0.004000073, 0.001347768, 0.0021706864, -0.026343353, -0.007946671, -0.004369344, -0.011418952, -0.00075893884, -0.0019176402, 0.00233453, 0.0035377692, -0.006982876, 0.0041959435, 0.012710008, -0.011041814, 0.0009983975, -0.0037775876, 0.013419514, 0.018840149, -0.009303957, 0.01006055, -0.02049406, 0.19282317, -0.01902035, 0.0070103165, -0.0062239985, 0.000586477, 0.013768561, -0.016021231, 0.013410198, 0.008437876, 0.003821201, 0.02031044, -0.0114681395, -0.006616491, 0.013073506, 0.0159395, 0.0057846056, 0.0004546654, 0.038460035, -0.017734298, 0.011703511, 0.00028914964, -0.012233376, -0.030684683, 0.00022904284, -0.010351831, 0.011136337, 0.01243425, -0.01100715, 0.0084689, -0.025079433, -0.022724723, -0.028273942, 0.011432339, -0.009235956, 0.008413546, -0.0010819634, 0.013597246, -0.013910726, -0.013140183, 0.023079393, -0.013715101, -0.01590305, 0.030263143, 0.017954111, 0.005136289, -0.025599692, -0.0030492947, 0.014094089, -0.006422627, -0.010872441, 0.0054095616, 0.009063865, 0.034053225, 0.012715899, -0.0225691, 0.010167347, -0.011571894, 0.018559432, -0.0064651566, 0.0020887065, 0.0014984119, -0.007625711, 0.011184661, 0.0034512766, 0.018264674, 9.511567e-05, -0.0081613185] } ] -}333 211576 +}333 211560 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -49,7 +49,7 @@ Date: Tue, 04 Aug 2026 10:15:31 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 175 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -124,7 +124,7 @@ X-Request-Id: req_7c7e87a658bf4ec88bc9d1bf6fe4d06e "total_tokens": 23, "prompt_tokens": 23 } -}276 21841 +}276 21825 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -145,7 +145,7 @@ Date: Tue, 04 Aug 2026 10:15:32 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 59 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/pgvector/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr b/vectorstores/pgvector/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr index a4e8db31b..c45785d5c 100644 --- a/vectorstores/pgvector/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr +++ b/vectorstores/pgvector/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr @@ -1,5 +1,5 @@ httprr trace v1 -333 211509 +333 211493 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:03:55 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 50 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/pgvector/testdata/TestWithAllOptions.httprr b/vectorstores/pgvector/testdata/TestWithAllOptions.httprr index efa17ee2d..ccd8f35f8 100644 --- a/vectorstores/pgvector/testdata/TestWithAllOptions.httprr +++ b/vectorstores/pgvector/testdata/TestWithAllOptions.httprr @@ -1,5 +1,5 @@ httprr trace v1 -256 43156 +256 43140 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:04:46 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 246 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -53,7 +53,7 @@ X-Request-Id: req_40e3ef1198864535b62e40eec4915421 "prompt_tokens": 4, "total_tokens": 4 } -}247 22116 +}247 22100 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -72,7 +72,7 @@ Date: Thu, 22 Jan 2026 20:04:48 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 98 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -102,7 +102,7 @@ X-Request-Id: req_8f1b4c19db314ec785666aa7d556059f "prompt_tokens": 2, "total_tokens": 2 } -}256 43153 +}256 43137 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -121,7 +121,7 @@ Date: Thu, 22 Jan 2026 20:04:49 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 36 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -156,7 +156,7 @@ X-Request-Id: req_18537d75ab5d418f8c6345de9f8cb3de "embedding": [-0.0023426407, -0.031335898, 0.0022720497, -0.026686734, -0.028682984, -0.00530911, -0.026870599, -0.019752385, -0.0106050875, -0.029996308, 0.00056267704, 0.0222083, -0.0049840626, 0.026581667, -0.0053452267, 0.035197068, 0.029602312, -0.01461729, 0.047857508, -0.021302108, -0.0134090325, -0.0044160504, 0.014288959, -0.009574128, -0.032911886, -0.012995336, 0.00978426, -0.026213937, 0.004136969, -0.007400578, 0.021105109, -0.027474727, -0.020855578, -0.017769266, -0.035249602, -0.023744889, -0.0021932502, -0.013776763, 0.02797379, 0.004202635, 0.0021308674, 0.002152209, -0.008549736, -0.001971627, -0.018439062, -0.00013943802, -0.025045078, -0.027789924, -0.018373396, 0.012719538, 0.027474727, 0.023298359, -0.0069080815, -0.0013042943, 0.0061036707, 0.010053491, -0.00037819613, 0.023652956, -0.020632312, -0.016955007, -0.005542225, 0.017716734, -0.033647347, 0.02127584, -0.017743, -0.0037298386, 0.0028794617, -0.005433876, -0.004402917, 0.009226098, 0.006317086, 0.034277745, 0.017756134, -0.00803754, 0.01660041, -0.010342423, -0.015050687, -0.0052565774, 0.0033407665, -0.0009373846, 0.015431551, -0.019030057, 0.0026627635, 0.008457803, 0.016022546, 0.005085845, -0.024953146, 0.010020658, -0.014288959, -0.01737527, -0.0010490172, 0.020120116, 0.014013162, 0.01900379, -0.029339647, 0.029365914, 0.018727994, 0.03333215, -0.023311492, -0.027264595, -0.017349003, 0.010086324, -0.004924963, -0.018741125, -0.008090072, 0.00020397555, 0.010683887, -0.0021686254, 0.02078991, -0.010316156, -0.009002833, 0.04554606, 0.007853675, -0.020225182, 0.00070837385, -0.0048658634, 0.019108856, -0.01900379, -0.014879955, -0.008884633, 0.012995336, -0.00022716392, 0.018911859, -0.038060114, 0.017073205, -0.0011089375, -0.01372423, 0.0060150214, -0.005584908, -0.0035689566, 0.03459294, 0.010513155, -0.0036214895, 0.0058804057, -0.025439076, -0.0046721483, -0.035722397, -0.02321956, -0.017769266, -0.020225182, 0.012883703, 0.021420306, -0.028998183, -0.018990658, -0.006986881, 0.03779745, 0.030075109, 0.010184824, -0.010046924, -0.0034474742, 0.016574143, 0.0023853239, 0.028814318, -0.020120116, -0.00037388678, -0.009212964, -0.01073642, 0.013934362, 0.006796449, 0.009035666, -0.021341506, -0.0041074194, 0.008142605, -0.018767392, 0.0055586416, 0.036562927, 0.019332122, -0.003058402, 0.0013830938, -0.013402466, -0.0034080744, 0.031073233, -0.021105109, 0.02090811, 0.017861199, -0.009245797, -0.0013822729, 0.0054732757, 0.010506588, 0.008930599, -0.02585934, 0.0026315718, 0.025347143, 0.04210515, -0.0068752486, 0.005689974, 0.004136969, 0.0015530051, -0.01879366, -0.009061932, 0.022457832, 0.010204524, 0.01826833, 0.005259861, -0.68965244, -0.025990672, 0.018058198, -0.015168887, 0.030180173, 0.036195196, 0.010092891, -0.0030239273, -0.011596646, -0.015195153, 0.0041862186, 0.016206412, 0.001814028, -0.0022720497, 7.690125e-05, -0.025439076, 0.024782414, 0.0021998168, -0.010762686, 0.008641669, -0.023810554, 0.018977525, -0.008956866, 0.004094286, 0.005253294, 0.005447009, 0.01110415, 0.0052368776, -0.005906672, 0.017427802, -0.016666075, -0.012450307, 0.012601339, -0.03170363, 0.049564827, -0.01021109, -0.012003777, 0.030784303, -0.00087746425, 0.024138886, -0.008733601, -0.025439076, 0.031440966, -0.0063761855, -0.019621054, 0.0054371594, 0.019634185, 0.00038743042, -0.005200761, -0.032544155, -0.0007428486, 0.009902459, -0.005978905, -0.009160431, 0.016390277, 0.00076501095, 0.0013280984, -0.015405284, -0.018412795, 0.0074071446, -0.025097612, 0.009521595, -0.019358387, -0.035144538, -0.0070656803, -0.012332108, -0.022313366, 0.0037692385, 0.01815013, -0.010591954, 0.01461729, 0.018583527, 0.014551624, -0.023561023, 0.009534729, 0.021341506, 0.003276742, 0.009928726, 0.002127584, -0.002217875, -0.010769253, 0.013947495, -0.004698415, -0.005647291, 0.046228986, -0.011819911, -0.025058212, 0.0057293735, 0.0082805045, 0.00012035378, 0.004087719, 0.035985064, -0.007249546, -0.016350877, -0.027343394, -0.0061857537, -0.042683013, -0.017309604, 0.005689974, -0.00069277815, -0.008057239, -0.003624773, 0.0071116467, 0.014525358, 0.0057392237, 0.03422521, -0.022523498, 0.0128180375, 0.024900613, -0.037666116, 0.0131266685, -0.0015513634, -0.006986881, -0.026647333, 0.015694216, -0.029707378, 0.008884633, 0.009876193, -0.0008076939, -0.021341506, 0.020697977, 0.007945607, 0.016902473, -0.0039925035, 0.0010375256, -0.00066487, -0.013750497, -0.03356855, -0.029576045, -0.012936236, -0.012844304, -0.0046754316, 0.011734545, -0.010526287, 0.009823659, 0.009863059, 0.014945622, -0.002255633, 0.006954048, 0.0028860283, -0.008582569, -0.0005680124, 0.0054273093, 0.008030973, 0.0019962518, -0.030784303, -0.012194209, -0.004402917, -0.0036641725, 0.013205468, 0.014748623, -0.010112591, -0.013803029, 0.013829296, 0.020409048, -0.014604157, -0.009613528, -0.010257056, -0.013711097, -0.00807694, 0.007190446, 0.025688607, 0.000911939, 0.008411837, -0.004274868, -0.034330275, -0.021643572, 0.013047868, -0.04375994, -0.021091975, 0.02057978, -0.0046425983, 0.01021109, -0.0060544214, -0.015694216, 0.027711125, -0.0036313394, -0.005847573, 0.015076954, 0.0075056436, -0.017926866, -0.007807708, -0.009928726, 0.0013092194, 0.0067077996, 0.0017237371, -0.011767378, 0.025018813, -0.004297851, 0.014013162, 0.00086186855, -0.0019190939, 0.0057720565, 0.0046951314, -0.0002177244, -0.008208272, -0.0060609877, 0.011012217, 0.002759621, 0.023823688, 0.027553527, -0.015720483, -0.0015439759, -0.0079718735, -0.0010859544, -0.038401578, -0.00080974604, 0.0074071446, 0.014446558, 0.0019601353, -0.0013691398, -0.024257084, -0.014788022, -0.0069606146, 0.01956852, 0.04052916, 0.0108020855, -0.0051843445, -0.006189037, 0.012719538, 0.017191404, 0.0030025858, -0.0013198901, 0.0072167125, -0.022667963, 0.018530995, 0.016350877, 0.046544183, 0.022195166, -0.016022546, -0.0040122033, 0.0026775382, 0.010506588, 0.0088124005, 0.003211076, 0.0043438175, 0.01684994, -0.01244374, 0.02537341, 0.006287536, -0.022287099, 0.01465669, 0.0062481365, -0.011839611, -0.0076632425, 0.01067732, 0.016429678, 0.0017434369, -0.013067569, -0.0049807793, -0.011458747, 0.031519763, -0.023600424, -0.02570174, -0.0070262807, -0.031493496, -0.003966237, 0.0358012, 0.035958797, 0.022418432, 0.029129514, 9.2496964e-05, -0.007380878, 0.003509857, -0.00067513034, 0.00530911, 0.0028794617, -0.014288959, 0.0012886986, 0.021840569, -0.017349003, 0.0057096737, 0.008221405, -0.004619615, -0.009580695, -0.0028088705, -0.0050168955, 0.03309575, -0.012614472, -0.008661368, -0.028446587, -0.017834933, 0.020146383, 0.008608836, -0.0036083562, -4.5068544e-05, -0.01945032, 0.011990643, -0.022733629, 0.0031240683, 0.0046327487, 0.020277714, 0.0051350947, 0.007945607, -0.010933418, 0.010151991, 0.0049052634, -0.013310534, 0.010848052, 0.008576002, 0.0044226167, -0.013369633, -0.013474699, -0.010060058, 0.034067612, -0.0017352287, 0.017230805, -0.014709223, 0.009823659, -0.008694202, 0.0015743466, 0.0043733674, 0.012548806, -0.010197957, -0.010394955, 0.0056078914, -0.012476573, 0.017966265, 0.036510393, 0.00623172, -0.015720483, -0.003050194, -0.01469609, -0.0022966745, 0.04938096, 0.041107025, 0.006796449, 0.0012386282, 0.016863074, 0.006106954, -0.030994434, -0.0002626647, 0.024401551, 0.0027054464, 0.010500021, 0.0003295621, 0.026056338, -0.0005347689, 0.007939041, 0.010591954, 0.00623172, -0.0046327487, -0.009580695, -0.009639794, 0.020435313, 0.00081426057, 0.019016923, 0.011025351, 0.0071444795, 0.0026808216, 0.03832278, 0.02071111, 0.030994434, 0.014091961, -0.02366609, -0.0018780526, 0.00038127424, -0.017467203, -0.00443575, -0.025951272, 0.022024434, 0.010999084, -0.00577534, 0.012634172, 0.02789499, -0.004225618, -0.0038710209, -0.0063105193, 0.016258944, -0.01822893, 0.0026069472, 0.03191376, 0.00013092194, -0.010046924, 0.0049840626, 0.016088212, -0.01388183, 0.0004998837, -0.006366336, 0.00036690975, -0.003020644, 0.0057819067, -0.0061200876, 0.0027136547, -0.010953118, -0.022681097, 0.00014025884, -0.00042149477, -0.010545988, -0.0068358486, -0.010920284, -0.0119775105, -0.020238316, 0.018452195, -0.011767378, 0.0035656733, -0.028577918, -0.0076501095, 0.030626703, 0.019673586, 0.0043733674, 0.00484288, 0.009534729, 0.034277745, 0.005138378, -0.024349017, -0.019594787, -0.011622913, -0.0046819984, -0.001624417, 0.023088226, -0.008339604, -0.0047148312, 0.0011606496, 0.034698006, -0.012640739, -0.0054502925, -0.0050267456, 0.009712027, -0.0053222436, 0.0088518, 0.00033366625, -0.0064517017, -0.012765504, 0.004885563, -0.012923103, -0.00050603994, -0.010303022, 0.0035394067, 0.0051843445, 0.010683887, 0.018517861, -0.011439048, 0.0030813853, 0.029208314, -0.0068424153, -0.007847108, -0.004698415, 0.005272994, 0.01692874, 0.007032847, 0.006940915, -0.025544142, 0.001823878, -0.011544113, -0.021052575, 0.014026294, 0.01469609, -0.0013830938, 0.0010424505, 0.023324626, -0.03167736, -0.02789499, 0.002137434, 0.017283337, 0.009022532, 0.002245783, -0.0023442823, -0.021814303, -0.0010793877, 0.015562884, 0.018570393, 0.006402452, -0.021853702, -0.01822893, -0.018045064, -0.00757131, -0.014394025, -0.020803044, -0.03475054, 0.00398922, 0.012548806, 0.01199721, 0.01737527, 0.0058869724, 0.0057884734, -0.012023477, 0.0075581768, 0.008208272, -0.03369988, -0.035144538, 1.2607393e-05, 0.019831184, 0.013566632, 0.026699867, 0.0034080744, 0.005857423, 0.022155767, -0.011583513, -0.0043372507, 0.026122004, 0.0024493483, -0.011242049, 0.0058311564, 0.036431592, 0.035092004, 0.0021505672, -0.0021719087, -0.024060085, 0.0052631437, -0.0040351865, 0.0057523567, -0.039005708, -0.017243937, 0.0048691467, 0.000645991, -0.012161375, 0.015234552, 0.009968125, -0.022589164, 0.010053491, -0.016836807, 0.012975636, -0.0049479464, 0.0125685055, -0.0058541396, 0.013750497, -0.0055290917, 0.022707364, -0.013474699, 0.0017697033, 0.019305855, -0.0056111747, 0.002170267, 0.0068555484, 0.0054273093, -0.033148285, -0.0021669837, -0.010644487, 0.03065297, -0.011800212, -0.012660438, 0.0040122033, -0.045493525, 1.976398e-05, -0.0041139857, -0.015470951, -0.02191937, 0.00799814, 0.015484083, -0.020553512, 0.026607934, -0.023626689, -0.013251434, 0.009863059, 6.607659e-05, 0.03438281, 0.024454083, 0.04218395, -0.004402917, -0.003660889, -0.02975991, 0.010414655, 0.012233608, 0.00044488834, -0.0010145424, 0.0014947263, -0.004488283, -0.028525386, 0.014459692, -0.0017976115, 0.020330248, -0.04129089, 0.0132777, -0.00492168, 0.020566646, -0.018754259, -0.03348975, -0.015773015, 0.024073219, -0.010165124, 0.0077157756, -0.026082605, -0.023324626, -0.029943775, 0.029812442, 0.0012591489, 0.011714846, 0.007518777, -0.017939998, -0.0004896234, -0.0044587334, -0.019791786, 0.013231734, -0.00057827274, 0.021249574, -0.011130417, 0.023600424, -0.010033791, 0.004796914, -0.012962502, 0.0024690481, -0.002418157, 0.022667963, -0.014131361, -0.021157641, -0.009140732, 0.010447488, 0.007814275, -0.003143768, -0.017270204, -0.001106475, 0.004819897, -0.021788036, 0.010710153, -0.010086324, -0.036431592, -0.014144494, -0.0013239942, -0.017559135, -0.019699853, -0.006940915, 0.0067570494, -0.015300219, -0.013606031, 0.00023414096, 0.008687635, 0.023902487, 0.010526287, -0.002749771, 0.009101332, 0.014879955, -0.030968167, 0.033936277, -0.009147298, 0.004491566, -0.010427789, 0.0017073206, -0.024624815, -0.008746735, 0.018977525, -0.020067582, -0.029365914, 0.0017729867, -0.0046327487, 0.0034803073, 0.020290848, -0.011517847, 0.054056395, -0.007479377, -0.0037068555, -0.025833072, -0.0033588249, -0.0030452688, -0.018517861, 0.025885606, 0.01240434, 0.01628521, -0.005200761, -0.0011836328, 0.010985951, 0.00032730485, -0.044810597, -0.041264623, -0.00039153456, 0.036195196, 0.00053846266, 0.0071379133, -6.310109e-06, -0.0039925035, -0.015050687, 0.00929833, -0.01558915, -0.0111369835, -0.008004706, 0.01290997, -0.0024985978, -0.007840541, -0.007833974, -0.02139404, -0.012699838, -0.0016465794, -0.022470964, -0.005640724, -0.009180131, 0.034855604, 0.0036773058, -0.015746748, -0.0050989785, 0.0016638167, -0.033516016, -0.013008469, 0.004928246, -0.008306771, 0.008201705, -0.019870585, 0.0047509475, 0.021459706, -0.022759896, 0.017060071, -0.0039925035, 0.0012484782, 0.016009413, -0.019292722, 0.0033456916, -0.009403396, -0.028315254, -0.02123644, 0.019699853, 0.0028679701, -0.00032525277, 0.011931544, 0.005072712, -0.025570408, -0.020448446, 0.017585402, -0.0102964565, 0.007866807, 0.012627605, -0.023193292, 0.008983132, -0.0026003805, 0.0068424153, -0.019634185, 0.0044948496, -0.0011507997, 0.0037790884, 0.014144494, -0.034803074, -0.012397774, -0.0050365957, -0.027553527, 0.0059526386, 0.001956852, -0.0077289087, 0.022300232, -0.0100731915, -0.030600438, 0.0025987388, -0.013645431, -0.021853702, -0.01285087, 0.025504742, 0.0070262807, 0.0033653914, -0.013566632, 0.03309575, -0.02102631, 0.0049479464, -0.012647305, -0.03333215, 0.0037922217, 0.008050673, 0.0063630524, 0.0030288522, 0.0071510463, -0.0015644965, 0.008818967, -0.010710153, -0.012391207, 0.015300219, -0.013290834, -0.019266456, 0.014827422, -0.016955007, -0.024677347, -0.012581639, 0.017204538, 0.0029516944, 0.010670753, 0.19762892, -0.009475629, 0.020671712, 0.045178328, 0.005253294, 0.022116367, 0.031230832, -0.0069737476, -0.0019749103, 0.012975636, -0.011800212, 0.014078828, -0.016337745, -0.0019732686, -0.024940012, -0.016232679, -0.014105095, -0.013829296, -0.020028183, -0.018439062, 0.0017729867, -0.019778652, -0.007472811, -0.009488762, 0.032622956, -0.009915592, -0.0031618262, 0.0053419434, 0.03309575, -0.010782386, -0.008273938, -0.0088124005, 0.0037167054, 0.0006455806, -0.0111107165, 0.0045572324, 0.0038874375, -0.010552554, 0.024230817, 0.02776366, -0.009981259, -0.0026627635, 0.013225167, -0.0011286373, -0.0071970127, 0.007499077, 0.0064090188, -0.023626689, 0.01729647, 0.021157641, -0.0112223495, 0.013973762, 0.014958754, 0.021249574, -0.01729647, 0.0091210315, 0.009291763, 0.014538491, -0.012936236, -0.001738512, -0.0046425983, 0.031887494, -0.018320862, 0.016981272, 0.00010403984, 0.014078828, -0.025425943, 0.0027711126, -0.008674501, -0.03876931, 0.013290834, -0.03362108, 0.0001390276, 0.012653871, -0.017532868, -0.03220269, 0.01937152, 0.018005665, 0.0004867505, 0.03690439, -0.018570393, -0.016626675, 0.004619615, 0.010782386, -0.036247727, -0.024585415, 0.026489735, -0.010408089, -0.003585373, 0.002313091, 0.021971902, -0.008825534, 0.004957796, -0.021735504, 0.008267371, 0.027185796, 0.0010481963, 0.03372615, -0.0009480554, -0.0073020784, -0.015457817, -0.03527587, 0.021656705, -0.0026036638, -0.018977525, 0.0033686748, -0.0015382301, 0.020553512, 0.00583444, -0.027422193, 0.0015218136, -0.019292722, 0.0011926619, -0.0006858011, 0.01558915, 0.006235003, 0.008306771, -0.027474727, -0.0019076023, -0.0025560558, 0.023652956, -0.017598534, -0.017283337, 0.011307715, -0.036641724, -0.010092891, -0.020041317, 0.023232693, -0.013028169, -0.037639853, 0.020028183, -0.022103235, -0.0055225254, 0.010624787, 0.004534249, 0.035827465, -0.0013075777, -0.011156683, -0.016836807, 0.0055126753, 0.007032847, -0.01636401, 0.004179652, 0.019174524, 0.0041730856, -0.0061332206, -0.0034507574, 0.007019714, -0.006136504, -0.022983162, -0.011288015, -0.023075094, 0.0057687736, -0.0030222856, -0.0069737476, -0.018005665, -0.04938096, -0.039688636, 0.0019141689, 0.010756119, -0.026502868, 0.0020126682, 0.01993625, -0.0028400621, -0.017651068, -0.0040056366, -0.16978645, 0.014236427, 0.0061824704, -0.013487833, 0.009672628, 0.016061947, 0.011747679, 0.009915592, 0.0091210315, 0.011990643, 0.022379031, 0.0077420417, -0.021788036, -0.029418446, 0.010440921, -0.01013229, -0.01993625, 0.023206426, 0.020540379, 0.013382766, 0.03288562, -0.015195153, 0.020330248, 0.0033309166, 0.011760811, 0.010631354, 0.008510336, 0.0027776791, -0.010165124, -0.012936236, -0.01558915, -0.004711548, 0.015602283, 0.017322736, 0.0005343585, 0.0016375502, -0.00022552226, -0.013428733, -0.0015152469, 0.015457817, 0.023285225, 0.048908167, -0.0025560558, -0.00716418, -0.0114456145, 0.020514112, 0.020737378, -0.01201691, 0.017243937, -0.009928726, 0.033962544, -0.005128528, -0.009449363, 0.0024542732, 0.03178243, 0.0012041535, -0.007774875, 0.005712957, -0.0123715075, 0.01834713, -0.013934362, -0.0034277742, 0.011366814, 0.005108828, 0.0019749103, -0.015733615, -0.0077354754, 0.0026036638, -0.01989685, -0.0050398787, -0.011596646, -0.03028524, 0.016350877, -0.01506382, -0.00076501095, 0.025609808, -0.019765519, 0.02335089, -0.011268316, 0.00041061878, 0.0006706158, 0.013251434, -0.0039334036, -0.006454985, -0.0019683435, -0.004317551, -0.0048133307, 0.0035689566, -0.005942789, -0.015667949, 0.028131388, -0.011826478, -0.014551624, -0.006967181, 0.019384654, 0.021052575, -0.012752371, 0.003660889, -0.001600613, -0.017861199, -0.010316156, -0.0021834003, -0.020120116, 0.010125724, 0.051508546, 0.016416544, 0.023048827, 0.011872444, 0.034067612, 0.02057978, -0.00710508, 0.002982886, 0.03593253, 0.04168489, 0.011800212, -0.0015997922, 0.008779568, -0.0035656733, 0.014958754, 0.007807708, 0.025281478, -0.0016375502, 0.002812154, 0.009199831, -0.0007190446, -0.003903854, -0.10065311, -0.03414641, 0.016692342, 0.019739252, 0.00049906294, 0.018465329, 0.0016153879, 0.008667935, 0.006415585, 0.021157641, -0.012358374, -0.045046996, -0.0049052634, -0.017637935, 0.011071317, 0.014065694, -0.009147298, 0.004288001, -0.0099878255, 0.013973762, -0.0043996335, -0.012049743, -0.0056735575, -0.014499092, 0.007177313, 0.011150116, -0.013789897, 0.02090811, 0.008136039, 0.00753191, 0.0023344324, -0.00795874, 0.013487833, -0.021617305, 0.0021505672, 0.007820841, -0.031152032, -0.0038743042, 0.013540365, -0.0051974775, 0.0037462553, 0.0010884168, 0.003424491, -0.027474727, 0.017440936, -0.029287113, -0.024506615, -0.0010284964, 0.0103818225, -0.0017450786, -0.00669795, -0.0018485028, -0.02480868, 0.010151991, -0.011097583, -0.021302108, 0.017427802, 0.012194209, -0.011872444, 0.0006677429, -0.027290862, -0.010197957, -0.007879941, 0.019988783, -0.0045999154, 0.002616797, -0.020198915, -0.043628607, 0.0179006, -0.022260834, -0.014840555, -0.01595688, 0.0007682942, 0.025911873, -0.034356542, -0.008989699, -0.025189545, -0.024821814, 0.005942789, -0.02082931, -0.01432836, -0.020172648, 0.020894976, -0.008838667, 0.029260848, 0.014013162, 0.005870556, 0.012010343, 0.0077683083, -0.018727994, 0.0041993516, 0.008858367, 0.010467188, -0.01432836, 0.011905277, 0.024992546, -0.009823659, 0.023626689, 0.02797379, -0.011005651, -0.016508477, -0.0049085463, -0.045782458, 0.023193292, -0.002820362, -0.0059592053, 0.025110746, -0.006921215, 0.013947495, -0.008530036, -0.007630409, 0.012141676, -0.014013162, -0.0013239942, -0.0026479885, -0.0102964565, -0.024086352, -0.031729896, 0.02290436, 0.001462714, 0.026699867, 0.008917467, 0.0082805045, 0.017716734, 0.022457832, 0.023403425, -0.018517861, 0.0017089621, -0.005085845, 0.018202664, -0.014302093, -0.032334026, 0.025767406, -0.018806793, 0.00445545, 0.02752726, -0.009863059, -0.005660424, -0.0013469774, 0.013776763, 0.0022720497, -0.0025675474, -0.006862115, -0.023075094, 0.029602312, -0.016981272, -0.013947495, -0.0030304939, -0.019673586, 0.001951927, 0.01937152, -0.006674967, 0.02147284, 0.017848067, 0.00978426, -0.0010432714, -0.010756119, -0.041028224, 0.022195166, 0.019844318, 0.0062547033, -0.02480868, 0.018452195, 0.010335856, 0.01289027, -0.014354626, 0.000795792, -0.010099458, 0.0017056789, -0.014827422, 0.011557247, -0.034960672, -0.0002417336, -0.002503523, 0.011583513, 0.0035295568, 0.03333215, 0.016114479, 0.010401522, -0.0060544214, -0.012332108, 0.02046158, 0.004777214, 0.0020241598, -0.030941902, 0.018373396, 0.018557262, 0.014236427, -0.030810568, 0.015694216, -0.004793631, 0.008654802, -0.010723286, 0.015681082, 0.0017631368, -0.0265948, 0.0057359403, 0.027133264, -0.0049413797, -0.016324611, 0.004432467, 0.014433425, 0.024165152, -0.011859311, -0.025596675, -0.0223265, -0.0041107023, 0.0041533853, -0.027553527, -0.028709251, -0.0060150214, 0.0066487, 0.028840583, 0.014814289, 0.015208286, 0.023955021, -0.015260818, 0.012857437, -0.028157655, -0.024178285, -0.00094969705, 0.013527232, 0.04136969, 0.011360249, 0.031020701, -0.015641682, 0.009948425, 0.002730071, 0.0058442894, -0.018176397, 0.0088715, -0.005049729, -0.0047607976, -0.010079757, -0.013947495, -0.02589874, -0.017624801, -0.002687388, 0.024060085, 0.029628579, -0.036142662, 0.04257795, 0.00073012576, -0.0071116467, -0.009212964, 0.033016954, 0.022562897, 0.02768486, -0.0065896004, -0.017874332, -0.041317157, -0.00935743, 0.0028285705, 0.012962502, -0.020435313, -0.0046852813, 0.012712971, -0.005617741, -0.0020931093, -0.013133235, -0.0037561052, 0.024388418, 0.0015447967, 0.014288959, 0.0055684918, -0.013527232, -0.0011754245, 0.019988783, -0.030311506, -0.018530995, -0.024020687, 0.0074202777, -0.0035722398, -0.046228986, -0.022733629, 0.0033686748, -0.017401537, -0.005128528, 0.0031043685, 0.011498147, -0.00010896481, -0.0060478547, 0.010316156, -0.016981272, -0.02574114, 0.009580695, -0.0068424153, 0.008969999, -0.019082591, -0.0052467273] } ] -}247 22116 +}247 22100 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -175,7 +175,7 @@ Date: Thu, 22 Jan 2026 20:04:50 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 96 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/pinecone/pinecone.go b/vectorstores/pinecone/pinecone.go index da7960a46..517c298da 100644 --- a/vectorstores/pinecone/pinecone.go +++ b/vectorstores/pinecone/pinecone.go @@ -5,6 +5,7 @@ import ( "encoding/json" "errors" "net/http" + "sort" "github.com/vxcontrol/langchaingo/embeddings" "github.com/vxcontrol/langchaingo/schema" @@ -209,6 +210,14 @@ func (s Store) getDocumentsFromMatches(queryResult *pinecone.QueryVectorsRespons resultDocuments = append(resultDocuments, doc) } } + // Keep relevance order, and break score ties by text so retriever + // prompts stay stable across approximate nearest-neighbor reordering. + sort.SliceStable(resultDocuments, func(i, j int) bool { + if resultDocuments[i].Score != resultDocuments[j].Score { + return resultDocuments[i].Score > resultDocuments[j].Score + } + return resultDocuments[i].PageContent < resultDocuments[j].PageContent + }) return resultDocuments, nil } diff --git a/vectorstores/pinecone/pinecone_test.go b/vectorstores/pinecone/pinecone_test.go index 31370d376..d462427d6 100644 --- a/vectorstores/pinecone/pinecone_test.go +++ b/vectorstores/pinecone/pinecone_test.go @@ -79,6 +79,7 @@ func createOpenAILLMAndEmbedder(t *testing.T, rr *httprr.RecordReplay) (*openai. httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") opts := []openai.Option{ + openai.WithModel("gpt-4.1-nano"), openai.WithHTTPClient(rr.Client()), } embeddingOpts := []openai.Option{ diff --git a/vectorstores/pinecone/pinecone_unit_test.go b/vectorstores/pinecone/pinecone_unit_test.go index 9745fb365..6d797f26c 100644 --- a/vectorstores/pinecone/pinecone_unit_test.go +++ b/vectorstores/pinecone/pinecone_unit_test.go @@ -7,7 +7,10 @@ import ( "github.com/vxcontrol/langchaingo/vectorstores" + "github.com/pinecone-io/go-pinecone/v4/pinecone" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "google.golang.org/protobuf/types/known/structpb" ) // testEmbedder is a mock embedder for testing @@ -228,6 +231,36 @@ func TestGetNameSpace(t *testing.T) { } } +func TestGetDocumentsFromMatchesStableOrder(t *testing.T) { + t.Parallel() + + store := Store{textKey: "text"} + match := func(text string, score float32) *pinecone.ScoredVector { + t.Helper() + metadata, err := structpb.NewStruct(map[string]any{"text": text}) + require.NoError(t, err) + return &pinecone.ScoredVector{ + Vector: &pinecone.Vector{Metadata: metadata}, + Score: score, + } + } + + docs, err := store.getDocumentsFromMatches(&pinecone.QueryVectorsResponse{ + Matches: []*pinecone.ScoredVector{ + match("The color of the desk is orange.", 0.81), + match("The color of the chair beside the desk is beige.", 0.81), + match("The color of the lamp beside the desk is black.", 0.90), + match("The color of the car is red.", 0.70), + }, + }, 0.8) + require.NoError(t, err) + require.Equal(t, []string{ + "The color of the lamp beside the desk is black.", + "The color of the chair beside the desk is beige.", + "The color of the desk is orange.", + }, []string{docs[0].PageContent, docs[1].PageContent, docs[2].PageContent}) +} + func TestGetScoreThreshold(t *testing.T) { t.Parallel() diff --git a/vectorstores/pinecone/testdata/TestPineconeAsRetriever.httprr b/vectorstores/pinecone/testdata/TestPineconeAsRetriever.httprr index 2d099fb88..2bf68f989 100644 --- a/vectorstores/pinecone/testdata/TestPineconeAsRetriever.httprr +++ b/vectorstores/pinecone/testdata/TestPineconeAsRetriever.httprr @@ -1,5 +1,5 @@ httprr trace v1 -340 101257 +340 101241 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:18:51 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 70 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -4670,7 +4670,7 @@ X-Request-Id: req_b1b0f52a3c3249018684cf7afac539f7 "total_tokens": 24 } } -265 34412 +265 34396 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -4689,7 +4689,7 @@ Date: Thu, 22 Jan 2026 20:19:09 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 33 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -6257,7 +6257,7 @@ X-Request-Id: req_6076db8e39904fd58b4825c86aaf39eb "total_tokens": 6 } } -610 1638 +610 1622 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -6274,7 +6274,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 20:19:11 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 225 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/pinecone/testdata/TestPineconeAsRetrieverWithMetadataFilterEqualsClause.httprr b/vectorstores/pinecone/testdata/TestPineconeAsRetrieverWithMetadataFilterEqualsClause.httprr index 4e966c786..3a4ad4da5 100644 --- a/vectorstores/pinecone/testdata/TestPineconeAsRetrieverWithMetadataFilterEqualsClause.httprr +++ b/vectorstores/pinecone/testdata/TestPineconeAsRetrieverWithMetadataFilterEqualsClause.httprr @@ -1,5 +1,5 @@ httprr trace v1 -492 167983 +492 167967 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:18:51 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 162 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -7754,7 +7754,7 @@ X-Request-Id: req_4d1c36e05adb49899196939dfab0b18b "total_tokens": 55 } } -266 34418 +266 34402 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -7773,7 +7773,7 @@ Date: Thu, 22 Jan 2026 20:19:09 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 258 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -9341,7 +9341,7 @@ X-Request-Id: req_7a5a181772ff4750b5b66a51b7dd1b40 "total_tokens": 6 } } -731 1642 +731 1626 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -9358,7 +9358,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 20:19:12 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 231 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/pinecone/testdata/TestPineconeAsRetrieverWithMetadataFilterInClause.httprr b/vectorstores/pinecone/testdata/TestPineconeAsRetrieverWithMetadataFilterInClause.httprr index 07b157330..d484a7aa4 100644 --- a/vectorstores/pinecone/testdata/TestPineconeAsRetrieverWithMetadataFilterInClause.httprr +++ b/vectorstores/pinecone/testdata/TestPineconeAsRetrieverWithMetadataFilterInClause.httprr @@ -1,5 +1,5 @@ httprr trace v1 -492 168049 +492 168040 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,15 +16,15 @@ Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Tue, 04 Aug 2026 10:43:52 GMT +Date: Sun, 06 Sep 2026 05:50:31 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst -Openai-Processing-Ms: 151 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 103 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload -Via: envoy-router-6868bd775b-jwdnd +Via: envoy-router-canary-749cf59fd5-4k4ch X-Content-Type-Options: nosniff X-Engine-Geography: EU X-Openai-Proxy-Wasm: v0.1 @@ -34,7 +34,7 @@ X-Ratelimit-Remaining-Requests: 9999 X-Ratelimit-Remaining-Tokens: 9999941 X-Ratelimit-Reset-Requests: 6ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_3d4ea4f7dc774ed7848079de70ed4ed4 +X-Request-Id: req_0b72d396521644a2a3081898d417db5d { "object": "list", @@ -7756,7 +7756,7 @@ X-Request-Id: req_3d4ea4f7dc774ed7848079de70ed4ed4 "total_tokens": 55 } } -278 34466 +278 34442 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -7773,15 +7773,15 @@ Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Tue, 04 Aug 2026 10:44:06 GMT +Date: Sun, 06 Sep 2026 05:50:45 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst -Openai-Processing-Ms: 175 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 67 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload -Via: envoy-router-canary-659cfbdff-fjvrc +Via: envoy-router-796b65995-j5kk9 X-Content-Type-Options: nosniff X-Engine-Geography: EU X-Openai-Proxy-Wasm: v0.1 @@ -7791,7 +7791,7 @@ X-Ratelimit-Remaining-Requests: 9999 X-Ratelimit-Remaining-Tokens: 9999991 X-Ratelimit-Reset-Requests: 6ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_a1823c6a576c49d1a8517ffcccfe7f1b +X-Request-Id: req_02a28f9764564449a2dd84413da51627 { "object": "list", @@ -9345,7 +9345,7 @@ X-Request-Id: req_a1823c6a576c49d1a8517ffcccfe7f1b "total_tokens": 9 } } -991 1752 +991 1706 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -9353,18 +9353,18 @@ Content-Length: 789 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is black.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003ekitchen\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is orange.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003eoffice\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What color is the lamp in each room?\nHelpful Answer:"}]}HTTP/2.0 200 OK -Content-Length: 911 +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is orange.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003eoffice\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is black.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003ekitchen\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What color is the lamp in each room?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 881 Access-Control-Expose-Headers: X-Request-ID Access-Control-Expose-Headers: CF-Ray Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Tue, 04 Aug 2026 10:44:09 GMT +Date: Sun, 06 Sep 2026 05:50:48 GMT Openai-Organization: lcgo-tst -Openai-Processing-Ms: 461 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 468 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -9376,19 +9376,19 @@ X-Ratelimit-Remaining-Requests: 29999 X-Ratelimit-Remaining-Tokens: 149999865 X-Ratelimit-Reset-Requests: 2ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_8d30b2de67b64e77a958cd4ac8f40db0 +X-Request-Id: req_a3713138d456441f84b544857c93c310 { - "id": "chatcmpl-E96uukMEL9pGENSzYmLgZVGiurSFN", + "id": "chatcmpl-EL0486d3jT3rHNDKnpZjAyQiLyMR1", "object": "chat.completion", - "created": 1785840248, + "created": 1788673848, "model": "gpt-4.1-nano-2025-04-14", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "In the kitchen, the lamp beside the desk is black. In the office, the lamp beside the desk is orange.", + "content": "The lamp in the office is orange, and the lamp in the kitchen is black.", "refusal": null, "annotations": [] }, @@ -9398,8 +9398,8 @@ X-Request-Id: req_8d30b2de67b64e77a958cd4ac8f40db0 ], "usage": { "prompt_tokens": 132, - "completion_tokens": 24, - "total_tokens": 156, + "completion_tokens": 17, + "total_tokens": 149, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 @@ -9412,5 +9412,5 @@ X-Request-Id: req_8d30b2de67b64e77a958cd4ac8f40db0 } }, "service_tier": "default", - "system_fingerprint": "fp_28f6c54d57" + "system_fingerprint": "fp_642c59d8b6" } diff --git a/vectorstores/pinecone/testdata/TestPineconeAsRetrieverWithMetadataFilterNotSelected.httprr b/vectorstores/pinecone/testdata/TestPineconeAsRetrieverWithMetadataFilterNotSelected.httprr index f2d06f6bb..bc516de88 100644 --- a/vectorstores/pinecone/testdata/TestPineconeAsRetrieverWithMetadataFilterNotSelected.httprr +++ b/vectorstores/pinecone/testdata/TestPineconeAsRetrieverWithMetadataFilterNotSelected.httprr @@ -1,5 +1,5 @@ httprr trace v1 -492 168049 +492 168032 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,15 +16,15 @@ Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Tue, 04 Aug 2026 10:44:16 GMT +Date: Sun, 06 Sep 2026 05:50:31 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst -Openai-Processing-Ms: 127 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 102 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload -Via: envoy-router-6868bd775b-6w5bd +Via: envoy-router-796b65995-7l6xm X-Content-Type-Options: nosniff X-Engine-Geography: EU X-Openai-Proxy-Wasm: v0.1 @@ -34,7 +34,7 @@ X-Ratelimit-Remaining-Requests: 9999 X-Ratelimit-Remaining-Tokens: 9999941 X-Ratelimit-Reset-Requests: 6ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_b9aa11841c964d09ad6eaf083bc3bf8c +X-Request-Id: req_b2515d0957294e7b94aaba5225591747 { "object": "list", @@ -7756,7 +7756,7 @@ X-Request-Id: req_b9aa11841c964d09ad6eaf083bc3bf8c "total_tokens": 55 } } -278 34466 +278 34443 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -7773,15 +7773,15 @@ Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Tue, 04 Aug 2026 10:44:30 GMT +Date: Sun, 06 Sep 2026 05:50:47 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst -Openai-Processing-Ms: 89 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 93 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload -Via: envoy-router-canary-7bb6646df6-m6dws +Via: envoy-router-7d54c87895-r7kv9 X-Content-Type-Options: nosniff X-Engine-Geography: EU X-Openai-Proxy-Wasm: v0.1 @@ -7791,7 +7791,7 @@ X-Ratelimit-Remaining-Requests: 9999 X-Ratelimit-Remaining-Tokens: 9999991 X-Ratelimit-Reset-Requests: 6ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_59abbb4c53b545d0b29d5ce8e5a31a58 +X-Request-Id: req_a360fd1e52f847998c34c3bfc76f821b { "object": "list", @@ -9345,7 +9345,7 @@ X-Request-Id: req_59abbb4c53b545d0b29d5ce8e5a31a58 "total_tokens": 9 } } -1737 1923 +1737 1820 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -9353,18 +9353,18 @@ Content-Length: 1534 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is black.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003ekitchen\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is purple.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003esitting room\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is yellow.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003epatio\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is blue.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003ebedroom\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is orange.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003eoffice\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What color is the lamp in each room?\nHelpful Answer:"}]}HTTP/2.0 200 OK -Content-Length: 1080 +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is yellow.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003epatio\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is blue.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003ebedroom\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is orange.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003eoffice\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is black.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003ekitchen\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is purple.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"location\"\u003esitting room\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What color is the lamp in each room?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 995 Access-Control-Expose-Headers: X-Request-ID Access-Control-Expose-Headers: CF-Ray Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Tue, 04 Aug 2026 10:44:34 GMT +Date: Sun, 06 Sep 2026 05:50:49 GMT Openai-Organization: lcgo-tst -Openai-Processing-Ms: 1477 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 426 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -9376,19 +9376,19 @@ X-Ratelimit-Remaining-Requests: 29999 X-Ratelimit-Remaining-Tokens: 149999750 X-Ratelimit-Reset-Requests: 2ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_0d6e00be4a344e31830732f7c0714304 +X-Request-Id: req_8b54798130484de0823eba8d21e36978 { - "id": "chatcmpl-E96vIS1sDgYnIHT3mus47yc59WgIX", + "id": "chatcmpl-EL049CleO0vKYNnR3Sgv0p6gf7Q6t", "object": "chat.completion", - "created": 1785840272, + "created": 1788673849, "model": "gpt-4.1-nano-2025-04-14", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "In the kitchen, the lamp beside the desk is black. \nIn the sitting room, the lamp beside the desk is purple. \nIn the patio, the lamp beside the desk is yellow. \nIn the bedroom, the lamp beside the desk is blue. \nIn the office, the lamp beside the desk is orange.", + "content": "The lamp in the patio is yellow. \nThe lamp in the bedroom is blue. \nThe lamp in the office is orange. \nThe lamp in the kitchen is black. \nThe lamp in the sitting room is purple.", "refusal": null, "annotations": [] }, @@ -9398,8 +9398,8 @@ X-Request-Id: req_0d6e00be4a344e31830732f7c0714304 ], "usage": { "prompt_tokens": 247, - "completion_tokens": 65, - "total_tokens": 312, + "completion_tokens": 45, + "total_tokens": 292, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 @@ -9412,5 +9412,5 @@ X-Request-Id: req_0d6e00be4a344e31830732f7c0714304 } }, "service_tier": "default", - "system_fingerprint": "fp_ea5819d2b4" + "system_fingerprint": "fp_ef5528ec1b" } diff --git a/vectorstores/pinecone/testdata/TestPineconeAsRetrieverWithMetadataFilters.httprr b/vectorstores/pinecone/testdata/TestPineconeAsRetrieverWithMetadataFilters.httprr index e6b170d10..c4ee86ef9 100644 --- a/vectorstores/pinecone/testdata/TestPineconeAsRetrieverWithMetadataFilters.httprr +++ b/vectorstores/pinecone/testdata/TestPineconeAsRetrieverWithMetadataFilters.httprr @@ -1,5 +1,5 @@ httprr trace v1 -393 101153 +393 101137 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:18:51 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 148 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -4670,7 +4670,7 @@ X-Request-Id: req_6b173d75f1bc40f99e92c6ae35c40887 "total_tokens": 33 } } -278 34393 +278 34377 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -4689,7 +4689,7 @@ Date: Thu, 22 Jan 2026 20:19:09 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 36 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -6257,7 +6257,7 @@ X-Request-Id: req_11f3b69fe79a407f81b1e243a320b71e "total_tokens": 9 } } -806 1664 +806 1648 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -6274,7 +6274,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 20:19:12 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 304 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/pinecone/testdata/TestPineconeAsRetrieverWithScoreThreshold.httprr b/vectorstores/pinecone/testdata/TestPineconeAsRetrieverWithScoreThreshold.httprr index d43fb0959..e4ee9b1ed 100644 --- a/vectorstores/pinecone/testdata/TestPineconeAsRetrieverWithScoreThreshold.httprr +++ b/vectorstores/pinecone/testdata/TestPineconeAsRetrieverWithScoreThreshold.httprr @@ -1,5 +1,5 @@ httprr trace v1 -441 168128 +441 168110 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -16,15 +16,15 @@ Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Tue, 04 Aug 2026 10:43:29 GMT +Date: Sun, 06 Sep 2026 05:50:31 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst -Openai-Processing-Ms: 146 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 82 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload -Via: envoy-router-6868bd775b-sq58h +Via: envoy-router-796b65995-z4tfd X-Content-Type-Options: nosniff X-Engine-Geography: EU X-Openai-Proxy-Wasm: v0.1 @@ -34,7 +34,7 @@ X-Ratelimit-Remaining-Requests: 9999 X-Ratelimit-Remaining-Tokens: 9999954 X-Ratelimit-Reset-Requests: 6ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_2a57143182644fe6ab0750774d4622c6 +X-Request-Id: req_c2e94c4d669e42358ec6824a4e17fbb5 { "object": "list", @@ -7756,7 +7756,7 @@ X-Request-Id: req_2a57143182644fe6ab0750774d4622c6 "total_tokens": 46 } } -299 34497 +299 34481 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -7773,15 +7773,15 @@ Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Tue, 04 Aug 2026 10:43:43 GMT +Date: Sun, 06 Sep 2026 05:50:47 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst -Openai-Processing-Ms: 76 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 93 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload -Via: envoy-router-78b795c79f-vzmw5 +Via: envoy-router-7d54c87895-gbvbk X-Content-Type-Options: nosniff X-Engine-Geography: EU X-Openai-Proxy-Wasm: v0.1 @@ -7791,7 +7791,7 @@ X-Ratelimit-Remaining-Requests: 9999 X-Ratelimit-Remaining-Tokens: 9999986 X-Ratelimit-Reset-Requests: 6ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_84619f4b06894879bd2f4129295d2eec +X-Request-Id: req_23b02d34c2624b41bea046d3d1924c75 { "object": "list", @@ -9345,7 +9345,7 @@ X-Request-Id: req_84619f4b06894879bd2f4129295d2eec "total_tokens": 12 } } -1051 1725 +1051 1742 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -9353,18 +9353,18 @@ Content-Length: 849 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the desk is orange.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the house is blue.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is black.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the chair beside the desk is beige.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What colors is each piece of furniture next to the desk?\nHelpful Answer:"}]}HTTP/2.0 200 OK -Content-Length: 884 +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the chair beside the desk is beige.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the desk is orange.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is black.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the house is blue.\u003c/content\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What colors is each piece of furniture next to the desk?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 917 Access-Control-Expose-Headers: X-Request-ID Access-Control-Expose-Headers: CF-Ray Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Tue, 04 Aug 2026 10:43:46 GMT +Date: Sun, 06 Sep 2026 05:50:49 GMT Openai-Organization: lcgo-tst -Openai-Processing-Ms: 399 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Processing-Ms: 418 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -9376,19 +9376,19 @@ X-Ratelimit-Remaining-Requests: 29999 X-Ratelimit-Remaining-Tokens: 149999850 X-Ratelimit-Reset-Requests: 2ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_6e767c9c888540338dd240a6a257dca9 +X-Request-Id: req_13b508d2c8cf44c58cb34c8387dec4b9 { - "id": "chatcmpl-E96uYlcCSTv3ROvwdYKuigYXAIMbt", + "id": "chatcmpl-EL049p6rmQlOPCQpA0fV6PCu1lVVd", "object": "chat.completion", - "created": 1785840226, + "created": 1788673849, "model": "gpt-4.1-nano-2025-04-14", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "The lamp beside the desk is black, and the chair beside the desk is beige.", + "content": "The chair beside the desk is beige, the lamp beside the desk is black, and the color of the desk is orange.", "refusal": null, "annotations": [] }, @@ -9398,8 +9398,8 @@ X-Request-Id: req_6e767c9c888540338dd240a6a257dca9 ], "usage": { "prompt_tokens": 138, - "completion_tokens": 17, - "total_tokens": 155, + "completion_tokens": 25, + "total_tokens": 163, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 @@ -9412,5 +9412,5 @@ X-Request-Id: req_6e767c9c888540338dd240a6a257dca9 } }, "service_tier": "default", - "system_fingerprint": "fp_92a3cedc90" + "system_fingerprint": "fp_973a2ed1e3" } diff --git a/vectorstores/pinecone/testdata/TestPineconeStoreRest.httprr b/vectorstores/pinecone/testdata/TestPineconeStoreRest.httprr index b6b82715d..bcc64ee0e 100644 --- a/vectorstores/pinecone/testdata/TestPineconeStoreRest.httprr +++ b/vectorstores/pinecone/testdata/TestPineconeStoreRest.httprr @@ -1,5 +1,5 @@ httprr trace v1 -256 67760 +256 67744 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:18:51 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 65 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -3128,7 +3128,7 @@ X-Request-Id: req_e93ef84381ca4bcb91013a49d4ab6ab7 "total_tokens": 4 } } -247 34425 +247 34409 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -3147,7 +3147,7 @@ Date: Thu, 22 Jan 2026 20:19:09 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 71 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/pinecone/testdata/TestPineconeStoreRestWithScoreThreshold.httprr b/vectorstores/pinecone/testdata/TestPineconeStoreRestWithScoreThreshold.httprr index a30ac0628..1b78a010a 100644 --- a/vectorstores/pinecone/testdata/TestPineconeStoreRestWithScoreThreshold.httprr +++ b/vectorstores/pinecone/testdata/TestPineconeStoreRestWithScoreThreshold.httprr @@ -1,5 +1,5 @@ httprr trace v1 -334 334548 +334 334532 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:18:52 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 83 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -15464,7 +15464,7 @@ X-Request-Id: req_6d43d98576ba4c4aa94ab7d7e54db5a2 "total_tokens": 24 } } -276 34080 +276 34064 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -15483,7 +15483,7 @@ Date: Thu, 22 Jan 2026 20:19:09 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 73 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -17051,7 +17051,7 @@ X-Request-Id: req_d5c4002ba0de4060900c403624454d3e "total_tokens": 7 } } -276 34080 +276 34064 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -17070,7 +17070,7 @@ Date: Thu, 22 Jan 2026 20:19:12 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 35 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/pinecone/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr b/vectorstores/pinecone/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr index 923c9e5d6..2605744e3 100644 --- a/vectorstores/pinecone/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr +++ b/vectorstores/pinecone/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr @@ -1,5 +1,5 @@ httprr trace v1 -334 334547 +334 334531 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:18:51 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 72 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/redisvector/redis_vector_test.go b/vectorstores/redisvector/redis_vector_test.go index ece273b9a..d7da462e3 100644 --- a/vectorstores/redisvector/redis_vector_test.go +++ b/vectorstores/redisvector/redis_vector_test.go @@ -3,6 +3,7 @@ package redisvector_test import ( "context" _ "embed" + "errors" "log" "net/http" "os" @@ -75,6 +76,22 @@ func getTestURIs(t *testing.T) string { return uri } +// dropIndexOnCleanup drops the index and its documents when the test ends, whatever its +// outcome, so a failed run does not leave the index behind on a shared REDIS_URL. +// The store is bound now: tests reassign their store variables, possibly to nil. +func dropIndexOnCleanup(t *testing.T, store *redisvector.Store, index string) { + t.Helper() + t.Cleanup(func() { + ctx := context.Background() //nolint:usetesting + err := store.DropIndex(ctx, index, true) + // A test that failed before it created the index has nothing to drop. + if t.Failed() && errors.Is(err, redisvector.ErrNotExistedIndex) { + return + } + require.NoError(t, err) + }) +} + //go:embed testdata/schema.json var jsonSchemaData string @@ -132,7 +149,7 @@ func testInvalidRedisVectorConfigs(t *testing.T, ctx context.Context, redisURL s redisvector.WithIndexName(index, false), redisvector.WithEmbedder(e), ) - assert.Equal(t, "redis index name does not exist", err.Error()) + assert.EqualError(t, err, "redis index name does not exist") } func testValidRedisVectorConfigs(t *testing.T, ctx context.Context, redisURL string, e *embeddings.EmbedderImpl, index string) { @@ -165,13 +182,14 @@ func testValidRedisVectorConfigs(t *testing.T, ctx context.Context, redisURL str assert.Equal(t, redisvector.ErrEmptySchemaContent, err) // Test with schema files - _, err = redisvector.New(ctx, + store, err := redisvector.New(ctx, redisvector.WithConnectionURL(redisURL), redisvector.WithIndexName(index, true), redisvector.WithEmbedder(e), redisvector.WithIndexSchema(redisvector.YAMLSchemaFormat, "./testdata/schema.yml", nil), ) require.NoError(t, err) + dropIndexOnCleanup(t, store, index) _, err = redisvector.New(ctx, redisvector.WithConnectionURL(redisURL), @@ -221,7 +239,7 @@ func TestAddDocuments(t *testing.T) { redisvector.WithIndexName(index, false), redisvector.WithEmbedder(e), ) - assert.Equal(t, "redis index name does not exist", err.Error()) + assert.EqualError(t, err, "redis index name does not exist") vector, err := redisvector.New(ctx, redisvector.WithConnectionURL(redisURL), @@ -229,9 +247,10 @@ func TestAddDocuments(t *testing.T) { redisvector.WithEmbedder(e), ) require.NoError(t, err) + dropIndexOnCleanup(t, vector, index) err = vector.DropIndex(ctx, index, false) - assert.Equal(t, "redis index name does not exist", err.Error()) + assert.EqualError(t, err, "redis index name does not exist") //nolint: dupl data := []schema.Document{ @@ -285,13 +304,7 @@ func TestAddDocuments(t *testing.T) { redisvector.WithIndexSchema(redisvector.YAMLSchemaFormat, "./testdata/schema.yml", nil), ) require.NoError(t, err) - t.Cleanup(func() { - ctx := context.Background() //nolint:usetesting - err = vector.DropIndex(ctx, index, true) - require.NoError(t, err) - err = vector.DropIndex(ctx, newIndex, true) - require.NoError(t, err) - }) + dropIndexOnCleanup(t, vector, newIndex) } func TestSimilaritySearch(t *testing.T) { @@ -316,6 +329,7 @@ func TestSimilaritySearch(t *testing.T) { redisvector.WithEmbedder(e), ) require.NoError(t, err) + dropIndexOnCleanup(t, store, index) //nolint: dupl data := []schema.Document{ @@ -384,22 +398,21 @@ func TestSimilaritySearch(t *testing.T) { require.NoError(t, err) assert.Len(t, docs, 2) assert.Len(t, docs[0].Metadata, 3) - - t.Cleanup(func() { - ctx := context.Background() //nolint:usetesting - err = store.DropIndex(ctx, index, true) - require.NoError(t, err) - }) } func TestRedisVectorAsRetriever(t *testing.T) { httprr.SkipIfNoCredentialsAndRecordingMissing(t, "OPENAI_API_KEY") - t.Parallel() + + rr := httprr.OpenForTest(t, http.DefaultTransport) + defer rr.Close() + if !rr.Recording() { + t.Parallel() + } ctx := t.Context() redisURL := getTestURIs(t) - llm, e := createOpenAILLMAndEmbedder(t) + llm, e := createOpenAILLMAndEmbedder(t, rr) index := "test_redis_vector_as_retriever" store, err := redisvector.New(ctx, @@ -408,15 +421,17 @@ func TestRedisVectorAsRetriever(t *testing.T) { redisvector.WithEmbedder(e), ) require.NoError(t, err) + dropIndexOnCleanup(t, store, index) + // Fixed ids keep the document keys, which reach the LLM prompt, stable for httprr replay. _, err = store.AddDocuments( ctx, []schema.Document{ - {PageContent: "The color of the house is blue."}, - {PageContent: "The color of the car is red."}, - {PageContent: "The color of the desk is orange."}, - {PageContent: "The color of the lamp beside the desk is black."}, - {PageContent: "The color of the chair beside the desk is beige."}, + {PageContent: "The color of the house is blue.", Metadata: map[string]any{"ids": "house"}}, + {PageContent: "The color of the car is red.", Metadata: map[string]any{"ids": "car"}}, + {PageContent: "The color of the desk is orange.", Metadata: map[string]any{"ids": "desk"}}, + {PageContent: "The color of the lamp beside the desk is black.", Metadata: map[string]any{"ids": "lamp"}}, + {PageContent: "The color of the chair beside the desk is beige.", Metadata: map[string]any{"ids": "chair"}}, }, ) require.NoError(t, err) @@ -445,12 +460,6 @@ func TestRedisVectorAsRetriever(t *testing.T) { // The LLM should provide some response (not error) - exact content may vary require.NotEmpty(t, result, "expected non-empty result from LLM for furniture question") - - t.Cleanup(func() { - ctx := context.Background() //nolint:usetesting - err = store.DropIndex(ctx, index, true) - require.NoError(t, err) - }) } func TestRedisVectorAsRetrieverWithMetadataFilters(t *testing.T) { @@ -466,7 +475,9 @@ func TestRedisVectorAsRetrieverWithMetadataFilters(t *testing.T) { redisURL := getTestURIs(t) e := createOpenAIEmbedder(t, rr) - index := "test_redis_vector_as_retriever_with_metadata_filters" + // Not prefixed by the retriever test's index name: on a shared REDIS_URL that + // index would also match these keys and change the prompt it replays. + index := "test_redis_vector_metadata_filters" store, err := redisvector.New(ctx, redisvector.WithConnectionURL(redisURL), @@ -474,6 +485,7 @@ func TestRedisVectorAsRetrieverWithMetadataFilters(t *testing.T) { redisvector.WithEmbedder(e), ) require.NoError(t, err) + dropIndexOnCleanup(t, store, index) _, err = store.AddDocuments( ctx, @@ -511,11 +523,6 @@ func TestRedisVectorAsRetrieverWithMetadataFilters(t *testing.T) { }, ) require.NoError(t, err) - t.Cleanup(func() { - ctx := context.Background() //nolint:usetesting - err = store.DropIndex(ctx, index, true) - require.NoError(t, err) - }) // Test that retrieval with filters works correctly (without LLM dependency) docs, err := store.SimilaritySearch(ctx, "lamp", 5, @@ -550,14 +557,25 @@ func createOpenAIEmbedder(t *testing.T, rr *httprr.RecordReplay) *embeddings.Emb } // createOpenAILLMAndEmbedder creates both LLM and embedder with httprr support for chain tests. -func createOpenAILLMAndEmbedder(t *testing.T) (*openai.LLM, *embeddings.EmbedderImpl) { +func createOpenAILLMAndEmbedder(t *testing.T, rr *httprr.RecordReplay) (*openai.LLM, *embeddings.EmbedderImpl) { t.Helper() - llmOpts := []openai.Option{} + llmOpts := []openai.Option{ + openai.WithModel("gpt-4.1-nano"), + openai.WithHTTPClient(rr.Client()), + } embeddingOpts := []openai.Option{ openai.WithEmbeddingModel("text-embedding-ada-002"), + openai.WithHTTPClient(rr.Client()), } + // Only add fake token when NOT recording (i.e., during replay) + if !rr.Recording() { + llmOpts = append(llmOpts, openai.WithToken("test-api-key")) + embeddingOpts = append(embeddingOpts, openai.WithToken("test-api-key")) + } + // When recording, openai.New() will read OPENAI_API_KEY from environment + llm, err := openai.New(llmOpts...) require.NoError(t, err) embeddingLLM, err := openai.New(embeddingOpts...) diff --git a/vectorstores/redisvector/testdata/TestAddDocuments.httprr b/vectorstores/redisvector/testdata/TestAddDocuments.httprr index b433bb28c..bf76085c7 100644 --- a/vectorstores/redisvector/testdata/TestAddDocuments.httprr +++ b/vectorstores/redisvector/testdata/TestAddDocuments.httprr @@ -1,5 +1,5 @@ httprr trace v1 -377 434499 +377 434483 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:22:26 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 181 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -20090,7 +20090,7 @@ X-Request-Id: req_bfd45d32569049dfbfee2eea42f9d27a "total_tokens": 31 } } -255 67778 +255 67762 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -20109,7 +20109,7 @@ Date: Thu, 22 Jan 2026 20:22:28 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 216 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/redisvector/testdata/TestRedisVectorAsRetriever.httprr b/vectorstores/redisvector/testdata/TestRedisVectorAsRetriever.httprr index 4228b8a6a..301dde1f5 100644 --- a/vectorstores/redisvector/testdata/TestRedisVectorAsRetriever.httprr +++ b/vectorstores/redisvector/testdata/TestRedisVectorAsRetriever.httprr @@ -1,36 +1,40 @@ httprr trace v1 -442 167817 +441 168112 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com -User-Agent: langchaingo-httprr +User-Agent: langchaingo-httprr Content-Length: 245 Authorization: Bearer test-api-key Content-Type: application/json {"model":"text-embedding-ada-002","input":["The color of the house is blue.","The color of the car is red.","The color of the desk is orange.","The color of the lamp beside the desk is black.","The color of the chair beside the desk is beige."]}HTTP/2.0 200 OK -Content-Length: 166988 +Content-Length: 167155 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Sat, 21 Jun 2025 17:14:10 GMT +Date: Wed, 23 Sep 2026 09:28:34 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst -Openai-Processing-Ms: 46 +Openai-Processing-Ms: 147 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload -Via: envoy-router-8bc5ddcc7-8twjs +Via: envoy-router-6fbb69b6c9-qpwjk X-Content-Type-Options: nosniff -X-Envoy-Upstream-Service-Time: 50 +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 X-Ratelimit-Limit-Requests: 10000 -X-Ratelimit-Limit-Tokens: 5000000 +X-Ratelimit-Limit-Tokens: 10000000 X-Ratelimit-Remaining-Requests: 9999 -X-Ratelimit-Remaining-Tokens: 4999953 +X-Ratelimit-Remaining-Tokens: 9999954 X-Ratelimit-Reset-Requests: 6ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_3b262756db465c4edf09fa378aa87584 +X-Request-Id: req_2becf4f79f1741b59660bba80ec1f63a { "object": "list", @@ -39,7710 +43,7710 @@ X-Request-Id: req_3b262756db465c4edf09fa378aa87584 "object": "embedding", "index": 0, "embedding": [ - 0.0046253884, - 0.008682857, - -0.008102317, - -0.005773848, - -0.01662111, - 0.023284698, - -0.0021738696, - 0.0004985071, - 0.034176134, - -0.009572598, - -0.021214947, - 0.019321883, - 0.008070767, - -0.01718903, - -0.008077077, - -0.009742974, - 0.019612152, - -0.024319574, - 0.01804722, - -0.0013038485, - -0.034857634, - 0.028067842, - -0.00035830197, - -0.0025382845, - -0.0055498355, - -0.0052911164, - 0.016696833, - -0.013579586, - 0.017050205, - 0.007849909, - -0.004199449, - -0.015018315, - -0.011749622, - -0.009648321, - -0.010146827, - -0.0058495705, - -0.0009970142, - 0.0023884168, - -0.0072251977, - -0.000027410002, - 0.017592883, - -0.002426278, - 0.005600317, - -0.031046264, - -0.005773848, - 0.0059000524, - 0.0017353095, - 0.014412534, - -0.022691539, - 0.008279004, - 0.005310047, - 0.026326222, - -0.0006846585, - -0.034327578, - 0.006237649, - -0.01109336, - 0.0061682365, - 0.015535752, - 0.0026203173, - -0.004814695, - 0.010102657, - -0.021782868, - -0.011888447, - -0.012323853, - -0.029607534, - -0.010449719, - -0.017908394, - -0.010437097, - 0.0056728846, - 0.022540092, - 0.01925878, - 0.024748668, - 0.013895096, - -0.0015065642, - 0.012885462, - 0.013440761, - -0.023423523, - -0.01224182, - 0.0013022709, - 0.010941915, - 0.0065184534, - -0.004423462, - -0.03326746, - 0.007464986, - 0.029203681, - 0.017719088, - -0.015901744, - 0.014917351, - -0.03990581, - 0.0029815773, - 0.024420537, - 0.04172315, - 0.016848277, - -0.008928956, - -0.009010989, - -0.014210607, - 0.012020962, - 0.029834703, - 0.006941238, - -0.02622526, - -0.0006353599, - 0.011320529, - -0.047982886, - 0.0075975005, - -0.030112352, - 0.0017274218, - -0.0023379351, - -0.004322498, - 0.02738634, - -0.029531812, - -0.025278727, - 0.027588265, - 0.02478653, - -0.03155108, - -0.00096230797, - -0.00007237029, - 0.00061721803, - -0.011856897, - -0.0102982735, - 0.016520146, - 0.009894419, - 0.021770246, - 0.014728045, - 0.017643364, - -0.004931434, - 0.0055025085, - -0.021934312, - -0.044121034, - -0.0052974266, - -0.0022464371, - 0.009484255, - 0.021530459, - 0.015826022, - 0.0018189199, - -0.02568258, - -0.003931265, - -0.026023332, - 0.028421214, - -0.024622465, - -0.003615754, - 0.009780835, - 0.01953643, - -0.02336042, - -0.0035558068, - 0.019750977, - 0.02854742, - 0.0033885862, - -0.0028522178, - -0.0105002, - -0.030213315, - 0.017731708, - -0.031601563, - 0.014147505, - 0.020634407, - 0.020949919, - 0.035968233, - -0.008992058, - 0.012677224, - -0.033368424, - 0.013554345, - -0.02568258, - -0.0013227791, - 0.036397327, - -0.0063859387, - 0.034302335, - 0.018829685, - 0.017630745, - 0.0049061934, - -0.028421214, - 0.0011997299, - -0.012462677, - 0.035842028, - -0.039577678, - 0.021631422, - 0.007856219, - 0.015283344, - -0.005729676, - 0.0015538908, - -0.016684212, - -0.0050292425, - -0.041622188, - -0.0054646474, - 0.0112448055, - 0.0067203804, - -0.0016611645, - 0.013036907, - 0.016141534, - -0.008373657, - 0.01779481, - 0.0019467018, - 0.021505218, - 0.004697956, - -0.0024578292, - -0.00038768392, - -0.6857438, - -0.017933635, - 0.010134207, - -0.022022655, - 0.021568319, - 0.021543078, - 0.026780559, - 0.0070106504, - -0.015800782, - -0.017302614, - -0.005950534, - -0.0013787823, - -0.010052174, - -0.0014623926, - 0.0032718473, - -0.0034832393, - 0.007856219, - 0.010071105, - 0.005070259, - 0.0050639487, - -0.0075722598, - -0.00933281, - -0.0151066575, - 0.0018567812, - 0.015788162, - 0.009831317, - 0.014791147, - 0.0016674746, - -0.02887555, - 0.014904731, - -0.015699819, - 0.03470619, - -0.0019798304, - 0.008739649, - 0.032560717, - 0.004707421, - -0.021139225, - 0.036851663, - 0.021845968, - 0.013819374, - -0.0025556376, - -0.0036630805, - 0.019334503, - -0.00015903717, - -0.010102657, - 0.0062628896, - 0.009591529, - -0.0108977435, - 0.010310894, - 0.00728199, - 0.0066825193, - -0.009496876, - -0.008992058, - 0.0210004, - 0.021341152, - 0.00041371357, - 0.03649829, - 0.020773232, - -0.010172069, - -0.006650968, - -0.008058147, - 0.0024956905, - -0.012462677, - -0.021467356, - -0.0151066575, - 0.002009804, - -0.027739711, - -0.016091052, - -0.0141601255, - -0.005366839, - -0.0008116516, - 0.017138548, - -0.022994429, - 0.02301967, - 0.002621895, - -0.0019498569, - 0.034781914, - -0.008865854, - -0.010809401, - 0.0131757315, - 0.015371687, - -0.018034598, - -0.012121926, - -0.018867547, - 0.008998369, - -0.01572506, - -0.018892787, - -0.019889802, - 0.004436082, - -0.027058208, - 0.020243173, - -0.0074145044, - -0.014904731, - -0.025139902, - -0.013289316, - 0.009787146, - -0.0068150335, - 0.020154832, - 0.016141534, - -0.02187121, - -0.017542401, - -0.0089857485, - 0.0007256749, - 0.010418167, - 0.032131623, - 0.012222889, - -0.0044423924, - 0.023549728, - 0.003931265, - -0.026326222, - 0.022110999, - -0.005679195, - -0.015030935, - 0.0062471144, - -0.004694801, - -0.023574969, - 0.014904731, - 0.007641672, - 0.029859943, - -0.013630067, - 0.020180073, - 0.0032813125, - -0.00070871616, - -0.0033033981, - 0.01516976, - 0.0052753408, - -0.010714747, - -0.005127051, - -0.0047452827, - 0.00049890147, - 0.0031708837, - 0.011686521, - 0.022035275, - 0.0095852185, - 0.013276695, - 0.0033633453, - 0.006187167, - -0.008613445, - 0.03117247, - -0.007206267, - -0.014614461, - 0.01456398, - -0.011396251, - 0.006512143, - -0.009477945, - -0.031954937, - -0.038088467, - -0.019044233, - -0.02510204, - 0.016949242, - -0.005865346, - -0.00078838266, - 0.002027157, - 0.015624096, - -0.011642349, - 0.011143842, - 0.0012801852, - -0.0008305822, - -0.00844307, - 0.013453381, - 0.023436144, - 0.015952228, - -0.0027102379, - 0.0065878658, - -0.015308585, - -0.013806754, - -0.01837535, - 0.013352417, - -0.012595192, - -0.021921692, - 0.007856219, - -0.0040764, - -0.013226214, - -0.016192015, - -0.018299628, - 0.0070169605, - -0.033343185, - -0.033166498, - -0.004578062, - -0.012961185, - 0.01808508, - 0.015510512, - -0.0048020747, - -0.0027622972, - 0.016469665, - 0.0075091575, - 0.037886538, - 0.032434512, - 0.004231, - 0.0071557853, - -0.0014395181, - 0.0144503955, - 0.0012722973, - 0.022237202, - 0.011585557, - -0.009370672, - -0.0007461831, - 0.009181364, - -0.0041300366, - 0.01486687, - 0.024698187, - 0.0025161987, - 0.013630067, - -0.020369379, - -0.0028159341, - -0.04290947, - 0.02014221, - 0.0025603704, - -0.0018567812, - 0.005890587, - -0.019347124, - -0.022047896, - -0.016595868, - -0.013352417, - 0.009698803, - -0.01196417, - -0.0056192474, - 0.00641749, - 0.009528426, - -0.00700434, - 0.006048342, - 0.00009879433, - 0.029001754, - -0.0043887557, - -0.014387294, - -0.012311232, - 0.0005340021, - 0.011181704, - -0.014841629, - -0.010134207, - -0.021214947, - 0.00728199, - -0.008121248, - 0.009503186, - -0.0029200525, - 0.010538061, - 0.018223904, - -0.020243173, - 0.0013945578, - -0.0013188352, - 0.019220918, - 0.026300982, - 0.0017305769, - -0.0077173947, - 0.021757625, - -0.0048557115, - 0.010891434, - -0.0004089809, - -0.020482963, - 0.014791147, - -0.007730015, - -0.0049408996, - -0.01485425, - -0.00059592107, - 0.013352417, - -0.019485949, - 0.02683104, - -0.0055498355, - 0.026124295, - 0.017693847, - 0.03321698, - 0.0061335303, - -0.00073080196, - -0.007818358, - 0.009774525, - -0.0015830755, - -0.020634407, - -0.008304245, - -0.0057012807, - -0.02597285, - -0.0061398405, - -0.009496876, - 0.029228922, - -0.0016375012, - 0.0007162095, - -0.0073703327, - 0.0021107674, - -0.0016532767, - 0.012197648, - -0.00990704, - -0.007856219, - -0.023309939, - 0.0052374797, - 0.012651984, - -0.000042224223, - -0.009421153, - -0.03033952, - 0.021076122, - -0.015523132, - 0.012986425, - 0.026275741, - 0.0016422338, - 0.0063196816, - -0.008525102, - -0.0049061934, - -0.028421214, - 0.0025493274, - -0.0027938483, - 0.015737679, - -0.017024964, - 0.008846924, - -0.019359743, - -0.0079824235, - -0.001026199, - 0.008064456, - 0.022287684, - 0.0088910945, - 0.014892111, - -0.012405885, - -0.02277988, - -0.02948133, - -0.0076038106, - 0.007976114, - 0.009118263, - -0.015295965, - -0.00524379, - -0.025493274, - -0.024736049, - 0.024471018, - 0.013289316, - -0.000604992, - -0.0055498355, - -0.012784499, - -0.00092523545, - 0.08546557, - -0.018640378, - 0.0020855265, - -0.0017447749, - 0.02332256, - -0.017378336, - -0.016229877, - 0.0061903223, - -0.008316865, - 0.02650291, - 0.011427802, - -0.0021565165, - 0.0069159972, - 0.012487918, - 0.0004294891, - -0.0014387293, - 0.024168128, - -0.011585557, - 0.012330162, - -0.01951119, - -0.026755318, - 0.0028459076, - 0.014664942, - 0.0078057377, - -0.0040101423, - 0.0089478865, - 0.012778188, - 0.0006629671, - 0.021404253, - -0.009667251, - -0.0047957646, - 0.014021301, - -0.0021928002, - -0.019422846, - -0.0009157701, - -0.020217933, - -0.03437806, - -0.0073955734, - 0.012386954, - -0.02622526, - 0.029380368, - 0.0122102685, - 0.0089857485, - -0.009572598, - 0.0029815773, - 0.012065134, - -0.0014521385, - 0.041243576, - -0.012999046, - -0.010153138, - 0.030844338, - -0.017176408, - 0.0015049865, - 0.0043572043, - 0.013100009, - 0.01576292, - 0.0059284484, - 0.005511974, - 0.017555023, - -0.029809462, - -0.014955212, - -0.025846645, - -0.015914366, - 0.0029689567, - -0.0029736895, - -0.03882045, - -0.015068796, - -0.00081007404, - -0.022237202, - -0.015308585, - 0.025998091, - -0.011282667, - -0.018287007, - 0.015094037, - 0.024395296, - 0.02301967, - 0.0029200525, - -0.01896851, - -0.019650014, - 0.02011697, - -0.013074769, - -0.0021155, - 0.014980454, - 0.008815372, - -0.0041300366, - -0.002770185, - 0.0233478, - -0.027285375, - -0.007812048, - 0.022906085, - 0.0048336256, - 0.0019403915, - 0.030390002, - 0.009471634, - -0.008973127, - 0.004410841, - -0.0020397773, - 0.009193985, - -0.01662111, - 0.0024452088, - 0.010954536, - -0.031121988, - -0.013529104, - -0.004496029, - -0.0060798936, - 0.0025367069, - 0.010323514, - -0.0006215563, - -0.04142026, - 0.005310047, - 0.016860899, - -0.01721427, - 0.00005812301, - -0.030087112, - 0.0032245205, - 0.023890479, - -0.019410225, - 0.017529782, - 0.0023679086, - -0.035362452, - 0.027159171, - -0.036271125, - 0.02506418, - 0.010765229, - -0.007338782, - 0.0047168867, - 0.008802752, - -0.005950534, - -0.016166775, - 0.0039785914, - 0.0022353942, - 0.0009307569, - -0.022199342, - -0.012948564, - -0.019675255, - -0.013074769, - 0.019435467, - 0.004713732, - 0.00013073979, - -0.011320529, - -0.011257426, - 0.011869517, - 0.0030525671, - -0.0017148013, - -0.024660325, - -0.016419183, - 0.002713393, - -0.014399914, - -0.013491242, - 0.02275464, - 0.016797796, - -0.007641672, - -0.0019151507, - 0.02213624, - 0.006802413, - -0.009869179, - -0.017971497, - -0.004025918, - 0.02159356, - 0.029658018, - 0.00670145, - -0.00021198383, - 0.021732384, - -0.0095852185, - -0.0163056, - -0.011989411, - 0.0075911903, - -0.0053415983, - -0.021391634, - 0.019650014, - 0.016393943, - 0.027891155, - 0.01546003, - 0.022312924, - 0.005650799, - 0.015952228, - 0.0049945363, - -0.0027228585, - -0.015207621, - -0.037558407, - -0.018122941, - 0.0024105026, - -0.019738358, - 0.0042373105, - 0.021909071, - -0.0036094438, - 0.010922984, - 0.01956167, - 0.0077994275, - 0.0011807992, - 0.024471018, - -0.013731031, - 0.04232893, - -0.002812779, - -0.0073072305, - -0.0058053993, - -0.0089100255, - -0.011566627, - 0.008979438, - 0.0023474004, - 0.018476313, - 0.020369379, - -0.021934312, - -0.008260073, - 0.003382276, - 0.019523809, - -0.0013637955, - -0.0057265214, - 0.00524379, - -0.012046203, - -0.01869086, - -0.018817065, - -0.012683535, - -0.04338905, - 0.003615754, - 0.010828331, - -0.0285979, - 0.022489611, - -0.0051964633, - -0.020533444, - -0.008859544, - -0.0040416936, - 0.011856897, - -0.0040132976, - 0.023675932, - 0.0051144306, - -0.02796688, - -0.015094037, - 0.011036568, - -0.0145766, - -0.015081417, - 0.010859882, - 0.0036346847, - -0.012664604, - -0.0034075167, - 0.011124912, - 0.0068781357, - 0.0124816075, - -0.011699141, - -0.009156124, - 0.0035558068, - 0.017681226, - -0.017971497, - 0.0074586757, - -0.008531412, - 0.025720442, - -0.006846585, - -0.021719765, - 0.005098655, - -0.01109336, - -0.015295965, - -0.0095852185, - -0.025834026, - 0.012292301, - 0.004899883, - -0.008096008, - 0.0035968234, - 0.010758919, - -0.012879152, - -0.0072567486, - -0.009143503, - 0.047023732, - 0.0040921755, - 0.012355404, - 0.015560994, - 0.026376704, - 0.0042026043, - -0.011617108, - 0.010310894, - 0.026174778, - -0.001064849, - 0.0015578347, - -0.007149475, - 0.05133992, - 0.02160618, - -0.009761904, - -0.005155447, - -0.014929972, - -0.0221741, - -0.013768892, - 0.0145766, - -0.0008936844, - -0.015346446, - -0.0034043617, - -0.027790193, - -0.010254102, - -0.027764952, - -0.013024286, - 0.01077785, - -0.0030572999, - -0.016368702, - -0.01370579, - -0.022010034, - 0.02796688, - 0.02097516, - 0.000101259255, - -0.0057864683, - 0.010077416, - -0.025240865, - 0.018186044, - -0.023133254, - 0.02243913, - -0.013352417, - 0.008424139, - 0.011755933, - -0.01840059, - 0.010620094, - -0.00042160132, - -0.02826977, - -0.045685966, - 0.009837627, - -0.009200295, - 0.012424816, - -0.0063070613, - -0.018539416, - 0.01077785, - 0.009093022, - -0.01544741, - -0.021795487, - 0.0105696125, - -0.0059726196, - -0.0019041077, - 0.021909071, - -0.0141601255, - -0.0031393326, - 0.01898113, - -0.016797796, - -0.00031531363, - -0.026351463, - -0.012765568, - 0.01604057, - 0.025632098, - -0.000017587263, - -0.021959553, - 0.00019009526, - -0.015422169, - -0.017908394, - 0.00510812, - -0.0055498355, - 0.0015278611, - 0.03589251, - 0.025278727, - -0.0039217994, - 0.0054078554, - -0.02683104, - -0.009541047, - -0.021517837, - -0.021265429, - -0.016229877, - -0.027739711, - 0.007767876, - 0.016797796, - -0.00670145, - -0.01985194, - 0.00078838266, - 0.012166097, - -0.0035968234, - -0.018501554, - 0.011402561, - 0.015624096, - 0.016671592, - -0.005429941, - -0.004672715, - 0.021644043, - -0.0016035837, - 0.0059726196, - -0.0057580722, - 0.0038082155, - 0.0020902592, - -0.012563641, - 0.021139225, - 0.012052514, - 0.006556315, - -0.019321883, - 0.009168744, - 0.008367347, - 0.0052027735, - 0.012399575, - -0.00846831, - 0.010998707, - -0.008379967, - 0.012872841, - 0.0082916245, - 0.007351402, - 0.007723705, - -0.008329486, - -0.018223904, - -0.0128665315, - 0.0014521385, - -0.01137732, - -0.00033069478, - 0.020659648, - 0.00020725117, - -0.022628436, - -0.014033921, - -0.013226214, - -0.025329208, - -0.016204635, - 0.006594176, - 0.0015562571, - -0.0048336256, - 0.011528765, - 0.0023474004, - 0.011831656, - -0.007199957, - 0.0021675592, - -0.01369317, - 0.00019689847, - -0.027537784, - -0.017668605, - 0.002479915, - -0.026629113, - -0.022666298, - -0.02481177, - 0.00005743283, - -0.0013346107, - -0.004344584, - -0.028623141, - 0.027184412, - 0.010373996, - -0.010872503, - 0.0072504384, - -0.043060917, - -0.0151066575, - 0.00962939, - -0.005082879, - -0.00875227, - -0.016217256, - 0.010702127, - 0.0033633453, - -0.004404531, - -0.005723366, - 0.010146827, - 0.015813403, - 0.0056318683, - 0.04056207, - 0.2257543, - -0.0003164968, - -0.0001546989, - 0.039173823, - 0.017012343, - 0.021479977, - 0.0144503955, - 0.017062824, - 0.0029216302, - 0.015245482, - -0.0037577339, - -0.0050923447, - -0.013390279, - 0.014412534, - 0.00047247746, - -0.035185765, - -0.03031428, - -0.008682857, - -0.0063733184, - 0.007496537, - -0.019574292, - -0.025998091, - -0.0070989933, - -0.008922646, - 0.002961069, - 0.0065878658, - -0.018173423, - 0.01427371, - 0.02423123, - -0.0010743144, - -0.0018457383, - -0.035463415, - 0.010733678, - -0.0034043617, - -0.007035891, - -0.0043288083, - 0.0055151293, - -0.020861575, - 0.025707822, - 0.026881522, - 0.00041450234, - -0.003615754, - -0.024445778, - 0.0043635145, - -0.013592206, - 0.017239511, - -0.0059568444, - -0.005717056, - 0.008070767, - 0.008392587, - -0.023978822, - -0.021404253, - 0.009402222, - 0.04727614, - -0.0052090837, - 0.010935605, - 0.015687197, - -0.0021423185, - 0.017163789, - -0.0044518574, - -0.027941639, - 0.0378613, - -0.020886816, - 0.028093083, - -0.0010411857, - -0.0021265429, - -0.015220242, - 0.0010885124, - 0.008537723, - -0.015586235, - 0.015359066, - 0.010001693, - -0.0013566965, - -0.007054822, - -0.0059883953, - -0.014955212, - 0.031147229, - 0.006316527, - 0.03089482, - 0.013731031, - -0.023865238, - 0.03006187, - -0.022249823, - -0.0011918421, - 0.011320529, - -0.040057253, - 0.012128236, - -0.02450888, - 0.0135417245, - 0.0020792163, - 0.011124912, - 0.007237818, - 0.00039064183, - -0.004016453, - 0.01981408, - 0.018211285, - 0.013920337, - 0.02710869, - -0.0285979, - 0.00729461, - -0.037306, - -0.029203681, - 0.017870532, - 0.005098655, - -0.01255102, - 0.008657617, - 0.017163789, - 0.0015980623, - 0.021366393, - -0.009004679, - 0.025783544, - -0.012689845, - 0.0029342505, - 0.00006901799, - 0.016696833, - 0.00012324641, - -0.0056318683, - -0.025013698, - -0.00394073, - 0.007610121, - -0.020874195, - 0.0044139964, - -0.015195001, - 0.010859882, - 0.014942592, - -0.02329732, - -0.018602518, - 0.0102982735, - 0.0010806245, - -0.048487704, - 0.0006424589, - 0.0052595655, - 0.039527196, - -0.0034012066, - -0.01429895, - 0.034352817, - 0.015674578, - -0.033444148, - -0.011251116, - 0.0024310108, - -0.00087712007, - -0.025632098, - -0.004142657, - -0.016961861, - -0.0012478452, - -0.010121587, - 0.006512143, - 0.00045630752, - -0.029506572, - -0.018009357, - -0.019978145, - 0.001195786, - -0.017908394, - -0.011585557, - 0.02043248, - -0.02102564, - -0.01983932, - -0.012563641, - 0.008815372, - 0.0297085, - -0.010159449, - 0.019624773, - 0.022325546, - 0.004003832, - -0.019574292, - 0.013554345, - -0.16053191, - 0.027209653, - 0.01108074, - 0.005423631, - -0.012487918, - -0.022868223, - 0.006180857, - 0.006467972, - -0.013655309, - 0.024054544, - 0.025215624, - 0.008398898, - -0.017012343, - 0.0000755747, - -0.024344815, - -0.0013677394, - 0.00087238743, - -0.0068655154, - 0.018135563, - 0.013226214, - 0.013200972, - -0.014942592, - 0.015649337, - 0.00145766, - -0.006890756, - -0.010115277, - -0.011749622, - 0.03031428, - -0.0017952565, - -0.03152584, - -0.007351402, - 0.0018520484, - 0.00700434, - 0.00481785, - 0.01458922, - 0.0012636208, - -0.001751085, - 0.0075659496, - -0.00757857, - 0.0049061934, - 0.010891434, - 0.0024357436, - 0.01750454, - 0.013074769, - -0.027335858, - 0.0145766, - 0.02973374, - 0.02887555, - -0.009484255, - -0.012342784, - -0.019183058, - -0.021984793, - -0.006013636, - -0.013680549, - 0.035362452, - 0.02305753, - 0.0048336256, - 0.012185028, - -0.00016219229, - -0.0055876966, - -0.030667651, - -0.009982762, - 0.0045938375, - 0.005344753, - 0.019574292, - -0.009086711, - 0.008556654, - 0.0053415983, - -0.023739034, - 0.012633054, - -0.013365039, - -0.031475358, - -0.013150491, - -0.003382276, - -0.0035147904, - 0.008361037, - -0.017845292, - -0.00014730412, - -0.00495352, - -0.021164466, - 0.0020760612, - 0.037735093, - -0.031879213, - -0.024660325, - -0.017037584, - 0.020104349, - -0.005751762, - 0.006562625, - -0.008670237, - -0.009465325, - 0.008689168, - -0.04349001, - -0.0038492319, - -0.024534121, - 0.021177087, - 0.020407239, - 0.017655985, - -0.001510508, - -0.0027212808, - -0.009168744, - 0.005048173, - -0.0076984637, - -0.012513159, - 0.0028774587, - 0.03617016, - 0.013882476, - 0.0035810478, - 0.027159171, - 0.031652045, - 0.022363408, - -0.008954197, - 0.015977468, - 0.012917013, - 0.01312525, - 0.002741789, - -0.009351741, - 0.018198663, - -0.015409549, - -0.0029484485, - 0.0053415983, - 0.04841198, - 0.0051207407, - -0.018488934, - 0.012450057, - 0.00034508997, - 0.0013472312, - -0.094855174, - -0.010714747, - 0.023865238, - 0.0125005385, - 0.0032213654, - 0.00554037, - -0.0071116136, - 0.034504265, - 0.019902423, - 0.01893065, - -0.0041836733, - -0.013491242, - 0.006124065, - -0.026578631, - 0.010714747, - 0.0063196816, - 0.011150152, - -0.020243173, - -0.032636438, - 0.016671592, - -0.0028112014, - -0.0064616613, - -0.013655309, - -0.008859544, - 0.0020776386, - -0.016482284, - -0.042127006, - 0.02652815, - 0.0049345894, - 0.013377659, - 0.028648382, - 0.002083949, - -0.008064456, - -0.007723705, - -0.0021107674, - -0.0151066575, - 0.010077416, - -0.008133869, - 0.019460708, - -0.019448087, - -0.0012194493, - -0.023373041, - 0.001822075, - -0.041925076, - 0.0115350755, - 0.00072725245, - -0.017289992, - 0.015586235, - -0.009888109, - -0.0007449999, - -0.0054047005, - 0.010847262, - -0.0056539536, - 0.00008375826, - 0.025632098, - -0.018804444, - 0.01427371, - 0.019485949, - -0.04603934, - 0.0080013545, - 0.004461323, - 0.0056539536, - -0.000086026, - 0.02912796, - -0.0053920797, - -0.0056129373, - -0.024647705, - -0.0055561457, - 0.0073577124, - -0.03382276, - -0.01808508, - 0.033116017, - 0.0011484594, - 0.023663312, - -0.017744329, - -0.006288131, - -0.04467633, - 0.0007591979, - 0.020899437, - -0.022805123, - -0.011314218, - -0.013781512, - 0.007919322, - -0.026351463, - 0.0033444148, - 0.019738358, - 0.0075091575, - 0.009837627, - 0.009496876, - 0.00032477896, - 0.018021978, - 0.02392834, - -0.014614461, - -0.024534121, - -0.007433435, - 0.012020962, - -0.025821405, - 0.0048904177, - 0.008058147, - -0.018122941, - -0.022691539, - -0.023221597, - -0.043010436, - 0.019132577, - -0.0108977435, - -0.022880845, - 0.008335796, - -0.014475636, - -0.005026087, - -0.014071782, - -0.021845968, - 0.023701172, - 0.00583064, - 0.026629113, - -0.0030478344, - -0.013604826, - -0.01077785, - 0.009749284, - -0.013604826, - -0.0018504709, - 0.009029919, - -0.00016100911, - -0.010809401, - 0.0019750977, - 0.011806414, - -0.0018110321, - -0.031071505, - 0.0036378398, - -0.0062471144, - 0.010941915, - -0.03793702, - -0.024193369, - 0.0061145998, - -0.025316589, - 0.006357543, - 0.05073414, - -0.021656662, - -0.024256472, - -0.009263397, - 0.00786253, - 0.020773232, - -0.026174778, - -0.03445378, - -0.04407055, - 0.0016390787, - -0.028749345, - 0.006903377, - 0.012361714, - 0.0010064795, - -0.0006988565, - 0.0073072305, - 0.006467972, - 0.008316865, - 0.021568319, - -0.006512143, - -0.008802752, - 0.0039817467, - -0.034251854, - -0.0022353942, - -0.0010033244, - 0.018589897, - -0.005155447, - 0.022401268, - -0.018804444, - 0.005511974, - 0.003467464, - 0.026376704, - -0.004344584, - 0.017883154, - 0.019145196, - -0.0026739542, - -0.04139502, - 0.004590682, - -0.009074091, - 0.038643766, - -0.0004290947, - 0.02476129, - 0.0039912118, - 0.014765906, - -0.011112291, - -0.013667929, - 0.030465724, - -0.0017810586, - 0.024054544, - -0.020609166, - 0.024079785, - 0.02129067, - 0.010172069, - -0.023108013, - 0.0014371518, - 0.0017826362, - 0.01750454, - -0.031879213, - 0.0025177763, - 0.013566965, - 0.010645335, - -0.009806076, - 0.004985071, - 0.008689168, - -0.0105885435, - 0.0030951612, - 0.06653492, - -0.01166759, - 0.0015562571, - -0.029557053, - -0.03500908, - -0.02683104, - 0.009440084, - -0.006941238, - -0.01458922, - 0.005881122, - 0.00786253, - 0.0070800628, - -0.0017637055, - -0.0039028688, - 0.02187121, - -0.007730015, - 0.018021978, - -0.018728722, - -0.011654969, - -0.0043035676, - 0.033040293, - -0.010273032, - 0.008266384, - 0.0016248807, - -0.007117924, - 0.0021375858, - 0.007471296, - 0.017782189, - -0.011307907, - 0.0016501215, - 0.011352079, - 0.011686521, - -0.001941969, - -0.00845569, - 0.0016611645, - -0.020747991, - -0.007117924, - 0.009761904, - 0.018766584, - 0.013554345, - 0.042404655, - 0.006243959, - -0.04134454, - 0.015359066, - -0.0003677673, - 0.01660849, - 0.0079824235, - 0.031652045, - 0.015207621, - -0.011295287, - -0.0002675926, - -0.0009244467, - 0.026906762, - 0.00149631, - -0.031349156, - -0.02127805, - -0.02131591, - 0.026452428, - -0.03122295, - -0.0062029427, - -0.006613107, - 0.017024964, - 0.022590574, - -0.0034043617, - -0.015510512, - -0.01808508, - 0.012948564, - -0.017655985, - -0.005578231, - -0.006802413, - 0.006316527, - -0.0030872733, - -0.024647705, - 0.00048352033, - 0.0043635145, - 0.0039028688, - -0.009471634, - -0.0043319636, - 0.0016816726, - 0.011105981, - 0.0025367069, - 0.033418905, - -0.008436759, - -0.006619417, - 0.0073892632, - 0.011232185, - -0.019132577, - -0.01311263, - -0.021479977 + 0.0045962376, + 0.00861834, + -0.008126223, + -0.0057255807, + -0.016656235, + 0.023255637, + -0.0021608942, + 0.0004629361, + 0.03417052, + -0.009558408, + -0.021224082, + 0.019343946, + 0.008006349, + -0.017110497, + -0.008088369, + -0.009735065, + 0.019672023, + -0.024353435, + 0.018031636, + -0.0012744544, + -0.03485191, + 0.028063232, + -0.0003330064, + -0.0025457542, + -0.0055268416, + -0.005293402, + 0.01669409, + -0.013539501, + 0.017047405, + 0.007836002, + -0.0042019137, + -0.01500323, + -0.011741384, + -0.009659355, + -0.010170398, + -0.0058580735, + -0.0010071029, + 0.0023943337, + -0.007186156, + 0.000008675122, + 0.01755214, + -0.0024795078, + 0.0055457694, + -0.030965455, + -0.0057445085, + 0.005832837, + 0.0017397564, + 0.0144227855, + -0.022713048, + 0.008290263, + 0.0053501846, + 0.026296662, + -0.0006660128, + -0.03437241, + 0.0062997164, + -0.011110466, + 0.0062050787, + 0.015596293, + 0.0025773, + -0.004785513, + 0.010145161, + -0.02176667, + -0.011899114, + -0.012328138, + -0.029602673, + -0.010511094, + -0.017905453, + -0.010498475, + 0.005618325, + 0.022511154, + 0.019268235, + 0.024782458, + 0.0139180515, + -0.001563888, + 0.012782399, + 0.013451172, + -0.023444913, + -0.012290282, + 0.0012602587, + 0.010908572, + 0.006561547, + -0.004507909, + -0.033287235, + 0.007507924, + 0.029224122, + 0.017791888, + -0.015911752, + 0.014902283, + -0.039899256, + 0.0029921287, + 0.024429144, + 0.041716296, + 0.016845511, + -0.008959035, + -0.009053674, + -0.014183037, + 0.011993751, + 0.029880276, + 0.006914861, + -0.026220951, + -0.00060213235, + 0.011318669, + -0.048025478, + 0.00761518, + -0.03015788, + 0.0017019013, + -0.0023186237, + -0.004255542, + 0.027432315, + -0.029577436, + -0.025337666, + 0.027508024, + 0.024782458, + -0.031520665, + -0.00094085647, + -0.00008300515, + 0.0006277634, + -0.011854949, + -0.0102397995, + 0.01654267, + 0.009911722, + 0.021817144, + 0.014637298, + 0.017640468, + -0.004946397, + 0.005485832, + -0.021968564, + -0.044113785, + -0.005362803, + -0.0021640488, + 0.009413296, + 0.021526922, + 0.015836041, + 0.0018312394, + -0.025640508, + -0.0038643728, + -0.026094768, + 0.028416546, + -0.024656275, + -0.00353945, + 0.009779229, + 0.019558458, + -0.023369202, + -0.0035993871, + 0.019836063, + 0.02861844, + 0.003400648, + -0.0028706768, + -0.0105174035, + -0.030258827, + 0.017779268, + -0.031596374, + 0.0141451815, + 0.020580545, + 0.020984333, + 0.0360128, + -0.008977963, + 0.012662524, + -0.03333771, + 0.013526882, + -0.025716217, + -0.0013304483, + 0.036441825, + -0.006362808, + 0.034321938, + 0.018839212, + 0.017564757, + 0.0049053873, + -0.028366074, + 0.0011963783, + -0.012403848, + 0.035810906, + -0.039571177, + 0.021640487, + 0.007886475, + 0.01523036, + -0.0057034986, + 0.0015607334, + -0.01669409, + -0.0049716337, + -0.041665826, + -0.0055299965, + 0.0111987945, + 0.006681422, + -0.0016798192, + 0.012946437, + 0.016138883, + -0.008353354, + 0.017817125, + 0.0018959086, + 0.021514304, + 0.004731885, + -0.0024479618, + -0.00040891374, + -0.6856312, + -0.017981162, + 0.010132543, + -0.02200642, + 0.02161525, + 0.021526922, + 0.026725687, + 0.0070284265, + -0.01577295, + -0.017211443, + -0.005914856, + -0.0013501645, + -0.010088379, + -0.0015402286, + 0.0032902374, + -0.0035236771, + 0.007829692, + 0.01008207, + 0.0049905614, + 0.005022107, + -0.0075647067, + -0.009324968, + -0.015066322, + 0.001839126, + 0.01577295, + 0.009823393, + 0.014788718, + 0.0016861283, + -0.028896045, + 0.014902283, + -0.015735095, + 0.03470049, + -0.0020094737, + 0.008719287, + 0.03263108, + 0.0047129574, + -0.02114837, + 0.036896084, + 0.021791907, + 0.013829722, + -0.0024952807, + -0.0036151602, + 0.019343946, + -0.00020209092, + -0.010126234, + 0.006255552, + 0.009501625, + -0.010933809, + 0.010334437, + 0.0074069775, + 0.00669404, + -0.009451152, + -0.00892749, + 0.021034807, + 0.021299792, + 0.00046254176, + 0.036492296, + 0.020795057, + -0.010151471, + -0.0066435663, + -0.00815146, + 0.0025268267, + -0.012485867, + -0.021400739, + -0.015129413, + 0.002026824, + -0.027785629, + -0.01608841, + -0.0141451815, + -0.005340721, + -0.00081625016, + 0.017097877, + -0.02294018, + 0.023053743, + 0.0026277734, + -0.0019590005, + 0.03480144, + -0.008877017, + -0.010801316, + 0.013135713, + 0.015343926, + -0.018019019, + -0.012126244, + -0.018813975, + 0.009028437, + -0.015697239, + -0.01885183, + -0.019911772, + 0.004432199, + -0.027104238, + 0.020214614, + -0.0074069775, + -0.014864428, + -0.025135772, + -0.013299751, + 0.009817084, + -0.0067508225, + 0.02015152, + 0.016138883, + -0.021905473, + -0.017577376, + -0.008971654, + 0.0007425116, + 0.010397528, + 0.03210111, + 0.012302901, + -0.004485827, + 0.023508005, + 0.0039022279, + -0.026246188, + 0.02215784, + -0.0056877257, + -0.015066322, + 0.0061956146, + -0.004763431, + -0.02360895, + 0.014940138, + 0.0076404167, + 0.02977933, + -0.013690921, + 0.02016414, + 0.0032586914, + -0.00073304784, + -0.003369102, + 0.0151041765, + 0.0052965567, + -0.010700369, + -0.0050725807, + -0.0048202137, + 0.00042547533, + 0.0031608993, + 0.011671983, + 0.022069512, + 0.009552099, + 0.013186187, + 0.003378566, + 0.00619246, + -0.008612031, + 0.031192586, + -0.007192465, + -0.014637298, + 0.014536351, + -0.01138807, + 0.0065110736, + -0.00946377, + -0.031949688, + -0.037981264, + -0.018978013, + -0.025097918, + 0.01692122, + -0.005851764, + -0.00074448326, + 0.0019858144, + 0.015608911, + -0.01162151, + 0.011224031, + 0.0012571041, + -0.0008667236, + -0.008397519, + 0.013514264, + 0.023419676, + 0.015899133, + -0.0026987516, + 0.006580475, + -0.01530607, + -0.013842341, + -0.018372333, + 0.013413317, + -0.01261205, + -0.022031657, + 0.007810765, + -0.004078885, + -0.013211423, + -0.016214592, + -0.01838495, + 0.006977953, + -0.03333771, + -0.033135813, + -0.004583619, + -0.012996911, + 0.01806949, + 0.015470109, + -0.004763431, + -0.0027397615, + 0.016530052, + 0.0074889967, + 0.037829842, + 0.032429185, + 0.0043060156, + 0.0071483008, + -0.0014771367, + 0.0144480225, + 0.0012768203, + 0.022183077, + 0.011640437, + -0.009375442, + -0.00077997235, + 0.009154621, + -0.004138822, + 0.014889665, + 0.02476984, + 0.0024905489, + 0.013678302, + -0.020366034, + -0.0027413387, + -0.042902425, + 0.020138903, + 0.002561527, + -0.001892754, + 0.005946402, + -0.019356564, + -0.02208213, + -0.01660576, + -0.013375462, + 0.009665663, + -0.012018988, + -0.005662489, + 0.006422745, + 0.009552099, + -0.006971644, + 0.006031576, + 0.00011908577, + 0.029022228, + -0.00438488, + -0.014460641, + -0.012239809, + 0.0004830466, + 0.011160939, + -0.014864428, + -0.010132543, + -0.021198845, + 0.0073123397, + -0.008107296, + 0.009507935, + -0.0028690996, + 0.0105174035, + 0.018296622, + -0.020252468, + 0.0013951174, + -0.0013170413, + 0.019179907, + 0.026296662, + 0.0017381791, + -0.0076845814, + 0.021817144, + -0.0049116965, + 0.010858099, + -0.00034877934, + -0.020504834, + 0.014864428, + -0.007753982, + -0.0049337787, + -0.014889665, + -0.0005788673, + 0.013375462, + -0.01953322, + 0.02685187, + -0.0056025516, + 0.026145242, + 0.017741414, + 0.03321152, + 0.0060662767, + -0.0007535527, + -0.007817074, + 0.00984232, + -0.0016048977, + -0.020631019, + -0.008283953, + -0.005794982, + -0.025968585, + -0.006100977, + -0.009482698, + 0.029224122, + -0.0015694086, + 0.0007488208, + -0.007331267, + 0.0021593168, + -0.0016656235, + 0.012170408, + -0.009880176, + -0.0078486195, + -0.023381822, + 0.0052460833, + 0.012599433, + -0.000050769184, + -0.009438533, + -0.0303093, + 0.02100957, + -0.015507964, + 0.012971674, + 0.026372373, + 0.0016672008, + 0.0063501894, + -0.008567867, + -0.00488646, + -0.02839131, + 0.0025362903, + -0.0027902348, + 0.015722476, + -0.017060023, + 0.008826543, + -0.0193818, + -0.007974803, + -0.0010165666, + 0.008069442, + 0.022296643, + 0.00885178, + 0.0149275195, + -0.012403848, + -0.022801377, + -0.029501725, + -0.0076277987, + 0.008006349, + 0.009104147, + -0.015293452, + -0.0052681654, + -0.025489086, + -0.02476984, + 0.024429144, + 0.013287133, + -0.00066522416, + -0.0055489237, + -0.01276978, + -0.0008895944, + 0.085602954, + -0.018612081, + 0.0021041115, + -0.001769725, + 0.023331348, + -0.017425954, + -0.016201975, + 0.0061829966, + -0.008347045, + 0.026448082, + 0.011413307, + -0.002197172, + 0.0069211703, + 0.012492176, + 0.00043217881, + -0.0014211428, + 0.024164159, + -0.0116152, + 0.012340756, + -0.019507984, + -0.026725687, + 0.0029495417, + 0.014725626, + 0.007829692, + -0.0040410296, + 0.008990581, + 0.012795017, + 0.0006581263, + 0.021413356, + -0.009627809, + -0.004861223, + 0.013981143, + -0.002235027, + -0.019457512, + -0.00091246516, + -0.020138903, + -0.03439765, + -0.007400668, + 0.01238492, + -0.026220951, + 0.029426016, + 0.012151481, + 0.008984272, + -0.009571026, + 0.002984242, + 0.012006369, + -0.0014637298, + 0.0412368, + -0.013022147, + -0.010183017, + 0.030889746, + -0.017123114, + 0.0014353384, + 0.00438488, + 0.013148331, + 0.015810804, + 0.005933784, + 0.005523687, + 0.01755214, + -0.029804567, + -0.0149275195, + -0.025842402, + -0.015899133, + 0.002908532, + -0.002946387, + -0.03886455, + -0.015091559, + -0.00082413666, + -0.022220932, + -0.015318689, + 0.025993822, + -0.011299741, + -0.018359713, + 0.01515465, + 0.024403907, + 0.022952797, + 0.002925882, + -0.018965395, + -0.019634169, + 0.02016414, + -0.012996911, + -0.0021246164, + 0.015041085, + 0.008839161, + -0.0041230493, + -0.0027350294, + 0.023318728, + -0.027255658, + -0.00792433, + 0.022914942, + 0.004823368, + 0.0019558459, + 0.030359775, + 0.009451152, + -0.008984272, + 0.0043817256, + -0.001984237, + 0.009116765, + -0.01669409, + 0.0024448072, + 0.010933809, + -0.031066403, + -0.013577355, + -0.004548919, + -0.0061041317, + 0.0025063218, + 0.010302891, + -0.0005694035, + -0.04138822, + 0.005302866, + 0.016807655, + -0.017135734, + 0.000028194148, + -0.030208353, + 0.003277619, + 0.023861319, + -0.019331327, + 0.017577376, + 0.0023659426, + -0.03538188, + 0.027205184, + -0.036366113, + 0.025123155, + 0.010763461, + -0.007356504, + 0.004744503, + 0.008895944, + -0.0059211655, + -0.016164118, + 0.0039274646, + 0.0022097903, + 0.00082255935, + -0.022145221, + -0.012946437, + -0.01969726, + -0.013047384, + 0.019444892, + 0.0047728946, + 0.00004029496, + -0.011255577, + -0.0111987945, + 0.011911732, + 0.0030883437, + -0.0017634158, + -0.024731986, + -0.016416486, + 0.00276973, + -0.0144480225, + -0.013552119, + 0.022750903, + 0.016731946, + -0.0076593445, + -0.001903795, + 0.022107366, + 0.006839151, + -0.009873867, + -0.017981162, + -0.004100967, + 0.02161525, + 0.029602673, + 0.006681422, + -0.00030402362, + 0.02176667, + -0.009552099, + -0.016290303, + -0.011968515, + 0.0075836345, + -0.0053911945, + -0.021425975, + 0.01962155, + 0.01631554, + 0.027861338, + 0.015457491, + 0.022271406, + 0.0056372522, + 0.015962224, + 0.0049653244, + -0.0027239884, + -0.015205123, + -0.037527002, + -0.01808211, + 0.0024243025, + -0.019672023, + 0.00423346, + 0.021943329, + -0.0035552229, + 0.010883335, + 0.01953322, + 0.0077792187, + 0.001205842, + 0.02439129, + -0.013665684, + 0.042347215, + -0.0028596357, + -0.0072807935, + -0.0058044456, + -0.008914871, + -0.011495326, + 0.008952727, + 0.0023359738, + 0.018498516, + 0.020366034, + -0.021943329, + -0.008208243, + 0.0033943388, + 0.019583695, + -0.0014006379, + -0.0057413536, + 0.005302866, + -0.012037915, + -0.018675173, + -0.018801356, + -0.012719307, + -0.043381922, + 0.003608851, + 0.010788698, + -0.028643677, + 0.022435443, + -0.005239774, + -0.020580545, + -0.008895944, + -0.0040284116, + 0.011829712, + -0.0040599573, + 0.023735136, + 0.0051829913, + -0.02801276, + -0.0150284665, + 0.011047374, + -0.0146499155, + -0.01515465, + 0.010832862, + 0.0036624789, + -0.012700379, + -0.0034038026, + 0.0110978475, + 0.006801296, + 0.012479558, + -0.011690911, + -0.009173548, + 0.0035205225, + 0.017716177, + -0.017955925, + 0.0074637597, + -0.008580484, + 0.025728837, + -0.0068265325, + -0.021741435, + 0.0051672184, + -0.011123084, + -0.015255597, + -0.009564717, + -0.025817165, + 0.012252428, + 0.004848605, + -0.008119915, + 0.0035899235, + 0.0107950065, + -0.012933819, + -0.0073817405, + -0.009104147, + 0.047066484, + 0.0040820395, + 0.012334446, + 0.015533201, + 0.026347136, + 0.0041640587, + -0.011608891, + 0.010353364, + 0.026220951, + -0.0010496898, + 0.0015701972, + -0.0071735377, + 0.05130625, + 0.021590013, + -0.009741374, + -0.005186146, + -0.014952756, + -0.02215784, + -0.013766631, + 0.0145994425, + -0.00087382144, + -0.015419636, + -0.0034101119, + -0.027861338, + -0.010277654, + -0.027810866, + -0.01300953, + 0.010776079, + -0.0031198894, + -0.016353395, + -0.013678302, + -0.021993801, + 0.027987523, + 0.02099695, + 0.00009715151, + -0.005785518, + 0.010050524, + -0.025211483, + 0.018183056, + -0.023104217, + 0.022485917, + -0.013375462, + 0.008447992, + 0.011791857, + -0.018473279, + 0.010599422, + -0.00042271506, + -0.0283156, + -0.04555228, + 0.009804466, + -0.009198785, + 0.012391229, + -0.0063217985, + -0.018612081, + 0.010750842, + 0.009110456, + -0.015444873, + -0.021791907, + 0.010536331, + -0.0060284217, + -0.0019022177, + 0.021943329, + -0.0140947085, + -0.0032050635, + 0.019041106, + -0.016820274, + -0.00033596382, + -0.0263219, + -0.012795017, + 0.016037935, + 0.025640508, + 0.000056092555, + -0.021918092, + 0.000246058, + -0.015356544, + -0.017905453, + 0.0051262085, + -0.005555233, + 0.0014960644, + 0.03591185, + 0.025186246, + -0.003962165, + 0.0054448224, + -0.02677616, + -0.009501625, + -0.021451212, + -0.021261936, + -0.016227212, + -0.027659444, + 0.00777291, + 0.016832892, + -0.0067318953, + -0.019861298, + 0.00078825315, + 0.0122335, + -0.0035741504, + -0.018498516, + 0.011413307, + 0.015659384, + 0.016668854, + -0.0054826774, + -0.0046277833, + 0.02161525, + -0.0016009544, + 0.005952711, + -0.0057508177, + 0.003839136, + 0.0020394425, + -0.01261836, + 0.021123135, + 0.012056843, + 0.0065741655, + -0.019369183, + 0.009135692, + 0.008416446, + 0.0052366196, + 0.012403848, + -0.008485847, + 0.010990592, + -0.008365973, + 0.012933819, + 0.008372282, + 0.0073438855, + 0.007671963, + -0.008290263, + -0.01823353, + -0.0128518, + 0.0014605751, + -0.011356524, + -0.00039294362, + 0.020731965, + 0.00021451213, + -0.022675192, + -0.0139937615, + -0.01323666, + -0.025198866, + -0.016176738, + 0.0065741655, + 0.001552847, + -0.0047918223, + 0.011571036, + 0.0023817155, + 0.011854949, + -0.0071987743, + 0.002176667, + -0.0137161575, + 0.00022614466, + -0.027533261, + -0.01769094, + 0.002523672, + -0.02670045, + -0.022637337, + -0.024782458, + 0.00004091109, + -0.0012839182, + -0.004324943, + -0.028567966, + 0.027205184, + 0.010372292, + -0.0108707175, + 0.0072303205, + -0.043104317, + -0.015091559, + 0.009571026, + -0.005063117, + -0.008719287, + -0.016290303, + 0.010687751, + 0.0033943388, + -0.0044353534, + -0.0057665906, + 0.010151471, + 0.015836041, + 0.0056246337, + 0.04063112, + 0.22591911, + -0.0003475964, + -0.00011977584, + 0.039217863, + 0.016984312, + 0.021564778, + 0.0144732585, + 0.017034786, + 0.00296216, + 0.015205123, + -0.0037634259, + -0.0050315713, + -0.013438554, + 0.014372312, + 0.00046372472, + -0.035129514, + -0.030334538, + -0.00861834, + -0.0063186437, + 0.007501615, + -0.019608932, + -0.026044294, + -0.0071419915, + -0.008990581, + 0.0029590053, + 0.006555238, + -0.01815782, + 0.014283983, + 0.024214633, + -0.0010796584, + -0.0018848676, + -0.035482828, + 0.010731915, + -0.003416421, + -0.007015808, + -0.0043407157, + 0.005501605, + -0.020883385, + 0.025602652, + 0.02685187, + 0.00040043576, + -0.0035615321, + -0.024467, + 0.0043407157, + -0.013653065, + 0.017148351, + -0.0059211655, + -0.00569088, + 0.008119915, + 0.008397519, + -0.024000121, + -0.021400739, + 0.009375442, + 0.047344085, + -0.0052271555, + 0.010927499, + 0.015760332, + -0.0021514304, + 0.017160969, + -0.0044195806, + -0.027937049, + 0.037880316, + -0.020921241, + 0.028138943, + -0.0010110461, + -0.002069411, + -0.015268216, + 0.0010930655, + 0.00853632, + -0.015596293, + 0.01538178, + 0.010012669, + -0.0012878614, + -0.007009499, + -0.0059747933, + -0.014990612, + 0.031142112, + 0.00626817, + 0.030914983, + 0.013690921, + -0.02393703, + 0.03000646, + -0.022183077, + -0.0011695642, + 0.0112745045, + -0.04010115, + 0.012119935, + -0.024517473, + 0.013539501, + 0.0020993797, + 0.011123084, + 0.0071672285, + 0.00037657918, + -0.0039747832, + 0.01984868, + 0.018208293, + 0.0139180515, + 0.027028527, + -0.028643677, + 0.0072240112, + -0.037350345, + -0.029224122, + 0.017905453, + 0.0051293634, + -0.012530032, + 0.008719287, + 0.017148351, + 0.0015694086, + 0.021325028, + -0.008977963, + 0.025754072, + -0.012637287, + 0.0030015924, + 0.000056536166, + 0.016719326, + 0.0001789244, + -0.0056057065, + -0.025060063, + -0.003940083, + 0.0076277987, + -0.020908622, + 0.0043438706, + -0.01515465, + 0.010788698, + 0.014940138, + -0.023280874, + -0.018637318, + 0.0103092, + 0.0010347056, + -0.048429266, + 0.0006498455, + 0.005318639, + 0.039646886, + -0.0034511215, + -0.0142966015, + 0.03437241, + 0.01577295, + -0.0335396, + -0.0112492675, + 0.002411684, + -0.00091246516, + -0.025640508, + -0.0041262037, + -0.016984312, + -0.0012665679, + -0.010094688, + 0.0064732186, + 0.00037993092, + -0.029526962, + -0.017981162, + -0.019949628, + 0.0011963783, + -0.017943308, + -0.011583654, + 0.020366034, + -0.02099695, + -0.019823443, + -0.012586814, + 0.008813924, + 0.029754093, + -0.010176707, + 0.019672023, + 0.022321878, + 0.0039116917, + -0.019571077, + 0.013564737, + -0.16050553, + 0.027280895, + 0.011123084, + 0.005318639, + -0.012479558, + -0.022826614, + 0.006091513, + 0.006485837, + -0.013678302, + 0.024050593, + 0.025261957, + 0.0083849, + -0.016984312, + 0.000029845378, + -0.024277724, + -0.0014053698, + 0.0008194047, + -0.0069211703, + 0.018119965, + 0.013337607, + 0.013148331, + -0.014940138, + 0.015558437, + 0.0014755594, + -0.0068265325, + -0.01007576, + -0.011766621, + 0.030284064, + -0.001716097, + -0.0315459, + -0.0073880497, + 0.0019053724, + 0.0069653345, + 0.0048139044, + 0.014586824, + 0.001315464, + -0.0017350245, + 0.0075647067, + -0.0075647067, + 0.0049337787, + 0.0108959535, + 0.0024369208, + 0.017564757, + 0.013072621, + -0.02730613, + 0.014586824, + 0.02977933, + 0.028870808, + -0.009501625, + -0.012391229, + -0.019104198, + -0.021905473, + -0.006031576, + -0.013653065, + 0.03533141, + 0.02307898, + 0.0048517594, + 0.012176718, + -0.00013919629, + -0.0055836244, + -0.03061214, + -0.009981123, + 0.004608856, + 0.0053281025, + 0.019596312, + -0.009110456, + 0.008574176, + 0.0052839383, + -0.02376037, + 0.012662524, + -0.013337607, + -0.03147019, + -0.013123094, + -0.0034416576, + -0.003501595, + 0.008340736, + -0.017804505, + -0.00015043451, + -0.0049653244, + -0.021211464, + 0.0020189376, + 0.037754133, + -0.031899214, + -0.024681512, + -0.017022168, + 0.020075811, + -0.0057508177, + 0.006504765, + -0.008668813, + -0.009501625, + 0.008725596, + -0.043432396, + -0.0038265176, + -0.024530092, + 0.02116099, + 0.020340797, + 0.017589994, + -0.001494487, + -0.0027192566, + -0.009217712, + 0.005041035, + -0.007671963, + -0.012479558, + 0.0028517493, + 0.036189456, + 0.0139180515, + 0.0036214693, + 0.02715471, + 0.0315459, + 0.022359734, + -0.00892749, + 0.015987461, + 0.012946437, + 0.013123094, + 0.0027933894, + -0.009343895, + 0.018170439, + -0.015444873, + -0.0029369232, + 0.005362803, + 0.048429266, + 0.0051293634, + -0.018448042, + 0.012454322, + 0.00031723347, + 0.0013541077, + -0.094839595, + -0.010649896, + 0.023848701, + 0.01253634, + 0.0032003315, + 0.0055646966, + -0.0070725908, + 0.03447336, + 0.019924391, + 0.018965395, + -0.0041356673, + -0.013539501, + 0.0060820496, + -0.026574265, + 0.010712988, + 0.0063186437, + 0.01115463, + -0.020302942, + -0.032656316, + 0.016706709, + -0.0027192566, + -0.006416436, + -0.013627829, + -0.008826543, + 0.0021482757, + -0.016492197, + -0.04209485, + 0.026498556, + 0.004918006, + 0.013362844, + 0.028694151, + 0.0020410197, + -0.008088369, + -0.0077035087, + -0.0021088433, + -0.0151041765, + 0.0100631425, + -0.008119915, + 0.01947013, + -0.019419655, + -0.0011601005, + -0.02339444, + 0.0017949617, + -0.041943427, + 0.011564727, + 0.00072042947, + -0.01731239, + 0.015583674, + -0.009911722, + -0.000672322, + -0.005375421, + 0.0108454805, + -0.0056593344, + 0.00010163695, + 0.025653126, + -0.01885183, + 0.014258747, + 0.019495366, + -0.046057016, + 0.007993731, + 0.0044385083, + 0.0057034986, + -0.00003728824, + 0.029097939, + -0.005457441, + -0.005653025, + -0.024668893, + -0.005533151, + 0.0073880497, + -0.03384244, + -0.018044256, + 0.033135813, + 0.0011246114, + 0.023684662, + -0.017791888, + -0.006201924, + -0.04461852, + 0.00077129726, + 0.020933859, + -0.02276352, + -0.01130605, + -0.013766631, + 0.007892784, + -0.026372373, + 0.0033375563, + 0.019747734, + 0.007507924, + 0.009817084, + 0.009552099, + 0.00031683914, + 0.018031636, + 0.023899173, + -0.0145742055, + -0.024517473, + -0.007394359, + 0.012012679, + -0.025817165, + 0.004918006, + 0.008132533, + -0.018183056, + -0.022713048, + -0.023142071, + -0.043028608, + 0.01916729, + -0.010914882, + -0.02292756, + 0.008403827, + -0.0144732585, + -0.0050063343, + -0.0140694715, + -0.021842381, + 0.023747753, + 0.0058233733, + 0.026599502, + -0.0030331383, + -0.013564737, + -0.0107445335, + 0.009741374, + -0.0136404475, + -0.0018028482, + 0.009028437, + -0.00016206707, + -0.010731915, + 0.002053638, + 0.011779239, + -0.0017208288, + -0.031066403, + 0.0036403968, + -0.006230315, + 0.010933809, + -0.03793079, + -0.024101067, + 0.006107286, + -0.025325049, + 0.0063501894, + 0.05070057, + -0.021602632, + -0.024214633, + -0.009280804, + 0.007861238, + 0.020782439, + -0.02617048, + -0.034448124, + -0.044139024, + 0.0016577371, + -0.02876986, + 0.0068454603, + 0.012359683, + 0.0009960618, + -0.0006502399, + 0.0073249578, + 0.0064511364, + 0.008365973, + 0.021665724, + -0.0065678563, + -0.008763451, + 0.0039810925, + -0.034220994, + -0.0022287178, + -0.0009810774, + 0.018599462, + -0.005116745, + 0.022410206, + -0.018763501, + 0.0056246337, + 0.0034668944, + 0.026372373, + -0.0043123243, + 0.017943308, + 0.019192526, + -0.0027097927, + -0.04146393, + 0.004533146, + -0.009047364, + 0.038687892, + -0.00041443427, + 0.024744604, + 0.00400002, + 0.014725626, + -0.011091539, + -0.013665684, + 0.030485958, + -0.0018343941, + 0.02407583, + -0.020605782, + 0.024113687, + 0.021287173, + 0.010176707, + -0.023142071, + 0.0015047394, + 0.0017854979, + 0.017438574, + -0.031949688, + 0.0024668893, + 0.013564737, + 0.010555258, + -0.009716137, + 0.004924315, + 0.008656195, + -0.0105931135, + 0.0030788798, + 0.06647352, + -0.011665674, + 0.0014881778, + -0.029552199, + -0.035028566, + -0.02685187, + 0.009451152, + -0.0068517695, + -0.0145742055, + 0.0058454555, + 0.0077981465, + 0.007041045, + -0.0017870752, + -0.0038896094, + 0.021968564, + -0.0077666007, + 0.017968545, + -0.01870041, + -0.011634128, + -0.004290242, + 0.032959156, + -0.010271345, + 0.008277644, + 0.0015938566, + -0.0071356827, + 0.002107266, + 0.0074448325, + 0.01776665, + -0.01130605, + 0.0016261912, + 0.011318669, + 0.011690911, + -0.0019274545, + -0.008492156, + 0.0016766646, + -0.020681491, + -0.0071735377, + 0.00977292, + 0.018776119, + 0.013602592, + 0.0424734, + 0.0062429337, + -0.041337747, + 0.015369163, + -0.00036534097, + 0.016630998, + 0.007930639, + 0.031646848, + 0.015167269, + -0.011287123, + -0.00024802962, + -0.0009692478, + 0.026902344, + 0.0014361271, + -0.03131877, + -0.021325028, + -0.021375502, + 0.026448082, + -0.031268295, + -0.0062366244, + -0.0066120205, + 0.017034786, + 0.022599483, + -0.0034290394, + -0.015457491, + -0.018107347, + 0.012984293, + -0.01770356, + -0.0056120157, + -0.006763441, + 0.006388045, + -0.0030709933, + -0.024668893, + 0.00043967098, + 0.004362798, + 0.0038801457, + -0.009457461, + -0.0043344065, + 0.001630923, + 0.011148321, + 0.002599382, + 0.033438653, + -0.008403827, + -0.006580475, + 0.0074195955, + 0.01123665, + -0.019142052, + -0.013135713, + -0.02147645 ] }, { "object": "embedding", "index": 1, "embedding": [ - 0.00088795146, - -0.0046256795, - 0.004239949, - -0.0047645424, - -0.017552279, - 0.003292595, - -0.024390507, - -0.025501411, - 0.0053909686, - -0.024378164, - -0.018934736, - 0.029352544, - -0.00045130463, - -0.01876193, - -0.011676832, - -0.019416127, - 0.024896586, - -0.012713675, - 0.013577712, - -0.008282404, - -0.0074307113, - 0.017317753, - -0.029352544, - 0.011442307, - -0.0072517325, - -0.0073751663, - 0.021403411, - -0.012516181, - 0.030636255, - -0.008899572, - 0.008282404, - -0.02410661, - -0.0022495799, - -0.018107729, - -0.011226299, - -0.00753563, - 0.0047244267, - -0.006332151, - 0.000060125734, - -0.012084164, - 0.021465128, - -0.00030356986, - 0.0016894994, - -0.01876193, - 0.0031228736, - -0.005270621, - 0.007529458, - 0.010207971, - -0.001134819, - 0.020909676, - -0.004712083, - -0.0028235468, - -0.008214516, - -0.032833375, - 0.011510196, - -0.006720967, - -0.0077146087, - 0.03310493, - -0.022724152, - -0.013948013, - 0.014947826, - 0.00077647535, - -0.009664862, - -0.002542735, - -0.012337202, - -0.006517302, - 0.017885549, - 0.011460823, - -0.005838416, - 0.024736121, - 0.0074862563, - -0.00063799816, - 0.013182724, - -0.0019456244, - -0.008362636, - -0.023057424, - -0.029994398, - 0.0033018526, - 0.016564809, - -0.003980738, - 0.0107140485, - -0.0034252864, - -0.03127811, - 0.026538255, - 0.024674404, - 0.0031691613, - -0.044683013, - 0.004178232, - 0.0017959609, - -0.0044281855, - 0.011676832, - 0.033055555, - 0.021958863, - -0.016404344, - -0.002405415, - 0.005566862, - 0.020465314, - 0.026217327, - -0.0014997199, - -0.023859743, - 0.013330844, - 0.00583533, - -0.029722845, - 0.012324859, - -0.036166087, - -0.0235635, - 0.009047694, - 0.006764169, - 0.010152426, - -0.02432879, - -0.021749025, - 0.03105593, - 0.03591922, - -0.03675857, - 0.016885735, - 0.0029670387, - 0.012479152, - -0.009782124, - -0.026711062, - -0.001616982, - 0.016145132, - 0.032858063, - -0.001114761, - -0.014170193, - 0.024822526, - 0.0033635695, - -0.0113250455, - -0.032389015, - 0.006764169, - -0.004314009, - -0.0018761929, - 0.0005253649, - -0.011368248, - 0.015972326, - -0.008967461, - 0.015046573, - -0.02853788, - 0.03873351, - -0.02136638, - -0.03349992, - 0.01218291, - 0.02034188, - -0.02132935, - 0.005616235, - -0.0085231, - 0.0201197, - 0.012485323, - 0.011757064, - 0.005681038, - -0.023464754, - 0.028488507, - -0.028834121, - 0.039523482, - 0.009455024, - 0.017502904, - 0.017416501, - 0.0057242396, - -0.01507126, - -0.029821591, - 0.013812236, - -0.007979992, - 0.01115841, - 0.024341134, - -0.006603705, - 0.014713302, - 0.023662249, - 0.011584257, - 0.0005986536, - -0.0042954944, - -0.0047028256, - -0.010152426, - 0.05070658, - -0.018539747, - -0.0022048352, - -0.0032463074, - 0.023526471, - 0.015058916, - 0.011615115, - -0.024353478, - -0.010485697, - -0.0039591375, - 0.0011386763, - 0.033845533, - 0.0052366764, - 0.017638681, - 0.013738176, - 0.012837109, - -0.017490562, - -0.0006298978, - -0.011991588, - 0.01521938, - 0.03490706, - 0.01064616, - -0.0043880697, - -0.690044, - -0.022144014, - 0.007554145, - -0.0017188148, - 0.013392561, - 0.03387022, - 0.029352544, - 0.003453059, - -0.016651211, - 0.0011641345, - -0.0073504793, - 0.000075892465, - 0.0028914353, - -0.014293627, - 0.0077948407, - -0.029352544, - -0.015058916, - 0.009794467, - -0.017515248, - 0.03251245, - -0.011738549, - -0.019761741, - -0.021539187, - -0.003292595, - 0.025995146, - 0.025303917, - 0.00698635, - 0.0030611567, - -0.003258651, - 0.002366842, - -0.012787736, - -0.002877549, - -0.004098, - -0.008029365, - 0.036240146, - -0.013219753, - -0.0112695005, - 0.031080617, - 0.012016275, - 0.031450916, - 0.013960356, - 0.014392374, - -0.00020250848, - -0.026809808, - -0.003017955, - -0.011096694, - -0.0043294383, - -0.015676085, - 0.016663555, - 0.0030009828, - 0.008640362, - 0.001340799, - 0.009887042, - 0.025723591, - 0.005076213, - -0.00603591, - 0.025452038, - 0.015824206, - -0.026439507, - 0.006091455, - -0.0023791853, - 0.011392934, - -0.0010437865, - -0.021563875, - 0.004789229, - 0.0053847968, - -0.006850573, - 0.010886856, - 0.009257531, - 0.004196747, - -0.015997013, - 0.0039437083, - -0.010053678, - 0.0067703407, - 0.000020588363, - -0.0053724535, - 0.041399676, - 0.012047133, - -0.009232844, - 0.01957659, - 0.018441001, - 0.0073751663, - -0.020415941, - -0.0083317775, - 0.020662809, - -0.025575472, - -0.0331543, - -0.013935669, - 0.01745353, - -0.01060913, - 0.016268566, - 0.029253798, - -0.021008423, - -0.0051718736, - -0.011072007, - 0.006455585, - -0.009152612, - 0.0124297775, - 0.0077763256, - -0.0028142894, - 0.0046380227, - -0.030043773, - -0.010331404, - 0.009954931, - 0.019650651, - 0.018848332, - -0.021428097, - 0.002741772, - -0.0033882563, - -0.023501784, - 0.028982243, - 0.01108435, - -0.013553025, - 0.034043025, - -0.0128741395, - -0.02527923, - 0.01587358, - 0.0147009585, - 0.022896959, - -0.045053314, - 0.0160217, - 0.006930805, - 0.00013182338, - 0.011466995, - -0.006387696, - -0.022551345, - 0.0030102404, - 0.008072566, - -0.015416875, - -0.029500665, - 0.027426977, - 0.0027973172, - 0.019230977, - 0.0070172083, - 0.00867122, - -0.008467555, - 0.016638868, - 0.00064031256, - 0.01167066, - -0.017305411, - -0.017897893, - 0.014898453, - -0.018120073, - 0.008350292, - 0.0024717606, - -0.006653079, - -0.034043025, - 0.0024239302, - -0.0006538131, - 0.0061315713, - -0.019230977, - -0.008757624, - -0.020625778, - -0.004530018, - -0.011016461, - 0.004850946, - -0.022613062, - -0.009689549, - -0.003980738, - 0.0060883695, - 0.021563875, - 0.014626899, - -0.011806438, - 0.000023131772, - -0.011306531, - -0.011041149, - -0.007115955, - 0.034067713, - -0.029550038, - -0.0145898685, - 0.007949133, - -0.014071447, - -0.013553025, - -0.008350292, - -0.019193947, - 0.0008524643, - -0.016231537, - -0.024476912, - -0.008590989, - -0.0028065748, - 0.009714236, - -0.0059433347, - 0.0033419686, - -0.0103252325, - 0.03216683, - 0.0029840106, - 0.025723591, - 0.027575098, - -0.013121007, - 0.033746786, - -0.023205543, - -0.01302226, - -0.0065975334, - 0.019675339, - -0.0031305882, - 0.00030569138, - -0.0088872295, - -0.00032073486, - -0.009529085, - 0.014688616, - 0.01876193, - 0.012491494, - 0.022230417, - -0.02045297, - 0.02725417, - -0.005739669, - 0.008621847, - -0.019206291, - 0.017058544, - 0.034363955, - 0.0016524692, - -0.009041522, - -0.004872547, - 0.004989809, - 0.008023193, - -0.0022989535, - 0.006936976, - 0.015281097, - 0.003053442, - -0.019366754, - -0.0262667, - 0.031253424, - 0.03512924, - -0.039967846, - -0.019514874, - -0.010405464, - 0.017354785, - 0.01309632, - 0.0012127365, - -0.017021513, - -0.03416646, - 0.010084537, - 0.0017049286, - 0.0013978871, - -0.003453059, - -0.00036316522, - 0.013688802, - -0.015281097, - 0.01902114, - -0.0056501795, - 0.015490934, - 0.028710688, - 0.020971393, - -0.018786615, - 0.017256036, - -0.011757064, - 0.022144014, - 0.010967088, - -0.009214329, - 0.022921646, - -0.013219753, - 0.0046287654, - -0.017058544, - -0.0051780455, - -0.000034763954, - -0.02220573, - 0.0463864, - -0.0031475604, - 0.012195254, - 0.012800079, - 0.011861983, - 0.0042337775, - -0.0011973073, - -0.008152799, - 0.00004204462, - 0.011146067, - -0.019206291, - -0.0034592305, - -0.00033153532, - -0.012787736, - -0.00032247065, - -0.016120447, - -0.0017851605, - -0.030068459, - 0.009066208, - 0.0024223872, - 0.010726392, - -0.003233964, - -0.000114947674, - 0.02505705, - 0.02166262, - -0.015281097, - 0.017416501, - 0.029846279, - -0.019922206, - -0.027451664, - -0.037375737, - 0.0059649358, - -0.0056069777, - 0.004384984, - 0.035030495, - 0.022995707, - 0.018120073, - 0.0128741395, - 0.0008516928, - -0.003628952, - 0.0190952, - 0.0060112234, - 0.01894708, - -0.014824392, - -0.005841502, - -0.015564995, - -0.032685254, - -0.0056563513, - 0.030414075, - 0.026834495, - 0.029278483, - 0.009850012, - 0.0042708074, - -0.0020273991, - -0.022514315, - -0.020477658, - -0.009763609, - -0.0074060243, - -0.011349733, - -0.001893165, - 0.008757624, - -0.009393307, - 0.024625031, - 0.016725272, - -0.0021539188, - -0.009856184, - 0.0037030121, - -0.0049589504, - 0.07559083, - -0.0058847037, - 0.0046873963, - 0.0019857404, - 0.007239389, - -0.013034604, - -0.02436582, - -0.022106983, - 0.0013438849, - -0.002328269, - 0.0007247875, - -0.021934176, - -0.00004491349, - -0.010343747, - 0.003295681, - -0.0016925852, - 0.003289509, - -0.0140344165, - 0.0160217, - -0.017700398, - -0.01583655, - -0.0027309714, - 0.0011170753, - -0.017539935, - -0.007912103, - -0.005600806, - 0.017663369, - 0.005752012, - 0.02015673, - -0.0201197, - 0.018194133, - 0.012577898, - -0.01576249, - -0.016885735, - 0.0065543316, - -0.013540681, - -0.0025134196, - -0.003709184, - 0.01123247, - -0.005227419, - 0.015602025, - 0.008004678, - 0.0018900791, - -0.006529645, - 0.0041442877, - -0.0054588574, - 0.00010896885, - 0.003706098, - -0.013565368, - -0.021279978, - 0.02542735, - -0.0021755197, - -0.012664302, - 0.004159717, - -0.0026383963, - 0.014639242, - -0.028068833, - 0.0029068645, - -0.021082483, - -0.0066098766, - -0.0011973073, - -0.014071447, - -0.0008594074, - -0.0009404108, - -0.031796534, - -0.010201799, - 0.0030935581, - -0.016317941, - -0.0071529853, - 0.007634377, - 0.00035236476, - -0.019601278, - -0.0170462, - 0.025674218, - 0.03438864, - 0.01423191, - 0.0018206477, - -0.017465875, - -0.0018977937, - 0.0231932, - -0.004036283, - -0.00706041, - 0.011615115, - -0.0033789987, - -0.006190202, - 0.0064864433, - 0.013145694, - -0.020613436, - -0.012849453, - 0.014935482, - 0.02425473, - -0.0009890129, - 0.018329911, - -0.006856744, - -0.016108103, - -0.0021246034, - 0.001596924, - 0.008054052, - -0.016996827, - -0.006745654, - 0.017996639, - -0.020625778, - -0.016638868, - -0.030660942, - 0.023427725, - -0.009097067, - 0.02045297, - -0.006119228, - -0.016712928, - 0.006387696, - -0.009516741, - -0.006591362, - 0.0041936613, - -0.018120073, - 0.003233964, - 0.012688989, - -0.01616982, - 0.024291761, - -0.0026229671, - -0.04312775, - 0.009405651, - -0.032018714, - 0.03219152, - 0.027525725, - 0.010158597, - 0.011405278, - -0.0194655, - -0.006119228, - -0.014984856, - 0.011942214, - 0.009078552, - 0.018120073, - -0.010985603, - -0.0105474135, - -0.009899386, - -0.015157663, - 0.015848892, - 0.020132042, - 0.0063383225, - -0.010578272, - -0.023810368, - 0.024970645, - 0.027056675, - -0.011337389, - -0.020428285, - -0.014207223, - 0.014824392, - 0.022674778, - -0.027772592, - 0.017095573, - -0.0026167952, - -0.002879092, - -0.028340386, - 0.0028883496, - 0.023057424, - 0.0020181416, - -0.025797652, - -0.005477372, - 0.01525641, - 0.024760809, - 0.028389761, - -0.005289136, - 0.017280724, - -0.009596974, - -0.008442868, - 0.009893214, - 0.005498973, - 0.015725458, - -0.018441001, - 0.024007862, - 0.027081363, - -0.00391285, - 0.0032216206, - 0.013873952, - -0.0049003195, - 0.021958863, - 0.00013056975, - -0.003903592, - -0.0005373225, - -0.036832627, - -0.003038013, - 0.02900693, - -0.012775392, - 0.0041689747, - -0.00072787335, - -0.0031321312, - -0.006116142, - -0.0043695546, - 0.0051718736, - 0.020810928, - 0.015515622, - -0.019403784, - 0.011732377, - 0.0018700212, - -0.002920751, - -0.01302226, - -0.032018714, - -0.0010422437, - 0.015207037, - -0.0025921087, - 0.0361414, - 0.02315617, - 0.0073689944, - -0.017367128, - -0.004098, - 0.029426605, - 0.014886109, - -0.02945129, - 0.022341507, - -0.00453619, - -0.019761741, - -0.016601838, - -0.02008267, - -0.039622232, - 0.0022017495, - 0.0053909686, - -0.03895569, - 0.017441187, - -0.01583655, - -0.016268566, - -0.0011379048, - 0.014762675, - 0.0153675005, - -0.029253798, - 0.022008236, - 0.0064370697, - -0.02703199, - -0.021600904, - 0.01803367, - -0.009566115, - -0.006467928, - 0.016836362, - 0.02107014, - -0.014984856, - -0.0016262395, - -0.0070233797, - 0.010245001, - 0.015713116, - -0.030043773, - -0.0011942214, - 0.012053305, - 0.015515622, - -0.021995893, - 0.005221247, - 0.0010121567, - 0.006150086, - -0.014491121, - -0.015416875, - 0.007412196, - -0.013046946, - -0.027426977, - 0.019527217, - -0.026637001, - -0.0020459143, - 0.008769968, - -0.026439507, - 0.008745281, - -0.019477844, - -0.0077639823, - -0.004715169, - -0.018675525, - 0.03394428, - 0.0149231395, - 0.030043773, - 0.0073504793, - -0.011183097, - -0.0059495065, - -0.010028992, - 0.011621287, - 0.028562568, - -0.011584257, - -0.01002282, - -0.015861236, - 0.035055183, - 0.0076467204, - 0.005779785, - 0.0023483268, - -0.009522913, - -0.027007302, - -0.0007807184, - 0.02015673, - -0.011497853, - -0.02410661, - 0.018441001, - -0.030562194, - -0.0009913272, - -0.02992034, - 0.0035610634, - 0.015935296, - -0.0018376198, - -0.01935441, - 0.0038017593, - -0.012090335, - 0.0052335905, - 0.006106884, - -0.009627832, - 0.01825585, - 0.010275859, - -0.024131296, - 0.01233103, - -0.009288389, - 0.036882002, - 0.009479712, - 0.011343561, - 0.02084796, - -0.018206477, - 0.0252422, - -0.0007915189, - -0.018465688, - -0.009115581, - 0.02220573, - -0.0077022654, - 0.00943651, - -0.01674996, - 0.0050576977, - 0.017502904, - 0.024785494, - -0.005764356, - 0.0008462926, - 0.012713675, - -0.01674996, - -0.0066901087, - 0.021872459, - -0.01320741, - -0.0043510394, - -0.008837856, - -0.012750706, - 0.0027726304, - 0.0010900742, - -0.018107729, - -0.02084796, - 0.010905371, - -0.0035209474, - -0.021008423, - -0.0071529853, - -0.020095013, - -0.012102678, - 0.012614928, - 0.008819341, - 0.0071653286, - 0.00651113, - 0.025797652, - 0.0006133114, - 0.016145132, - -0.029080989, - 0.00698635, - 0.0077824974, - 0.006653079, - -0.014244254, - -0.016330283, - 0.00088486564, - 0.010288202, - 0.025797652, - -0.033055555, - -0.01773743, - 0.004715169, - -0.022514315, - 0.0033573979, - -0.0014974056, - 0.012003931, - 0.020206103, - -0.010041335, - -0.011744721, - 0.0033111102, - 0.004749113, - 0.007418368, - -0.001956425, - 0.010979432, - -0.0018977937, - -0.0020459143, - 0.011689175, - 0.01083131, - -0.017416501, - -0.018885363, - 0.007628205, - 0.014429404, - 0.0331543, - 0.018996453, - -0.022427911, - 0.033450544, - -0.014836736, - 0.004057884, - 0.017860861, - 0.028686002, - 0.0020165988, - -0.008547787, - -0.025772965, - -0.006936976, - 0.013960356, - -0.006057511, - -0.014466435, - 0.0028466906, - 0.013429591, - -0.013380217, - -0.016898079, - -0.003118245, - -0.024649719, - -0.017305411, - -0.0025535356, - 0.009121753, - -0.025772965, - 0.0136517715, - 0.010349919, - -0.0028281757, - -0.0055267457, - -0.008689735, - 0.0013284556, - 0.0057088104, - -0.010028992, - -0.0028713774, - -0.0017481303, - -0.00801085, - 0.0014503464, - -0.023983177, - 0.003332711, - 0.017144946, - -0.0143676875, - -0.03749917, - 0.030957183, - -0.009485883, - -0.018552091, - 0.01309632, - -0.020366568, - -0.021600904, - 0.013787549, - -0.0064123827, - -0.0028636628, - -0.010319061, - 0.008467555, - 0.0014835193, - -0.0049836375, - -0.023723966, - -0.0015436932, - 0.02816758, - -0.006702452, - 0.031549666, - 0.22060078, - 0.002110717, - 0.0037894158, - 0.02710605, - -0.017626338, - 0.03340117, - 0.006233404, - -0.010257344, - -0.010596787, - 0.012053305, - 0.009171127, - 0.011861983, - -0.028093519, - 0.0032185349, - 0.013182724, - -0.007912103, - -0.012861796, - -0.015959984, - -0.022032922, - -0.028488507, - -0.016515434, - 0.0014017444, - -0.011608943, - 0.002582851, - 0.012084164, - 0.0000014977189, - 0.0036999264, - 0.025550785, - 0.012935856, - -0.002170891, - -0.016293254, - -0.009504398, - 0.015787175, - -0.0066839373, - -0.011109036, - -0.0039467937, - 0.0005396369, - 0.014935482, - 0.013491308, - 0.023304291, - 0.020613436, - 0.009282217, - 0.015305784, - -0.026809808, - -0.016108103, - 0.006153172, - -0.016811676, - -0.017428845, - 0.0030025258, - 0.0022048352, - -0.020144386, - -0.02432879, - 0.017441187, - 0.04821322, - -0.0042276056, - 0.005400226, - 0.02710605, - 0.0058013857, - 0.0075171147, - -0.0043078377, - -0.022341507, - 0.008745281, - -0.0059865364, - 0.011676832, - -0.0016709843, - 0.01525641, - -0.02183543, - 0.014281284, - 0.011936042, - -0.0160217, - 0.022711808, - -0.008936603, - 0.015207037, - -0.0020968306, - 0.0034623165, - -0.0032216206, - 0.010707877, - -0.0043479535, - 0.032068085, - 0.014305971, - -0.0026522826, - 0.008387323, - 0.0032679082, - -0.003258651, - -0.0062766057, - -0.021674965, - 0.003962223, - 0.011547226, - 0.028266327, - 0.0016555551, - 0.010633817, - -0.005977279, - -0.010584443, - -0.027649159, - 0.0082762325, - 0.025945773, - 0.005539089, - 0.023600532, - 0.00962166, - 0.0021338607, - -0.028142894, - -0.020490002, - 0.010504211, - -0.0006842858, - -0.006702452, - 0.01400973, - 0.0041658888, - 0.0047738, - 0.020687494, - -0.024415195, - 0.020304851, - -0.024563314, - 0.022292133, - -0.0072085303, - 0.026390133, - -0.005776699, - 0.0050546117, - -0.024316447, - -0.003490089, - 0.0039560515, - -0.0045855637, - -0.0010283573, - 0.00713447, - -0.00867122, - -0.015997013, - -0.021526845, - -0.03189528, - 0.010288202, - -0.012189082, - -0.020687494, - 0.003258651, - -0.015676085, - 0.044757076, - -0.002132318, - -0.008442868, - 0.01620685, - -0.0053755394, - -0.011812609, - 0.0060081375, - -0.0041350303, - 0.016429031, - 0.0010291288, - 0.005637836, - -0.009522913, - -0.013553025, - -0.009208157, - -0.0054125697, - -0.016009357, - -0.043399304, - -0.008189829, - -0.019835802, - -0.010757251, - -0.019564249, - -0.009708064, - 0.011997759, - -0.015009543, - -0.03628952, - 0.0019163089, - 0.0029145791, - 0.03083375, - -0.009708064, - 0.020243134, - 0.013195067, - -0.009954931, - -0.008695907, - -0.018453345, - -0.15562525, - 0.019366754, - 0.0050576977, - -0.007905931, - -0.009819154, - -0.011750892, - 0.018798959, - 0.014997199, - -0.019329725, - 0.03014252, - 0.027525725, - -0.016712928, - -0.037252303, - -0.012460636, - 0.012824765, - -0.00025863227, - -0.0020783157, - 0.023501784, - 0.003607351, - 0.008362636, - 0.0048787184, - -0.028784748, - 0.020095013, - 0.0011710776, - -0.011362076, - 0.0029824679, - -0.003153732, - 0.027797278, - -0.015120633, - -0.018194133, - -0.0076467204, - -0.014466435, - 0.011466995, - 0.029846279, - -0.003826446, - -0.000231824, - -0.02323023, - 0.0044991598, - -0.018008983, - 0.019712368, - -0.015639056, - 0.009016835, - -0.000023396962, - 0.0047861435, - -0.010016648, - 0.031648412, - 0.015811862, - 0.012787736, - -0.002229522, - -0.012948199, - 0.006171687, - -0.015626712, - -0.011448479, - -0.01715729, - 0.04631234, - 0.032364327, - 0.005779785, - 0.021452785, - 0.011750892, - 0.019230977, - -0.016194507, - -0.0036474671, - 0.018428657, - 0.002190949, - 0.015614368, - -0.023983177, - 0.018231163, - 0.006628392, - -0.029105676, - 0.015244067, - -0.003453059, - -0.009066208, - -0.01291117, - -0.021971205, - 0.0016339541, - 0.0055884626, - -0.020662809, - 0.015170007, - -0.0065975334, - -0.026908556, - -0.0013739718, - 0.04571986, - -0.00094503956, - -0.01836694, - -0.0076837502, - 0.012787736, - 0.018021327, - -0.008412009, - -0.013108663, - -0.005736583, - 0.00015448504, - -0.04364617, - 0.023304291, - -0.03720293, - 0.016527778, - 0.0108251395, - -0.01693511, - -0.0011541055, - -0.0029130364, - -0.004236863, - -0.0017311582, - -0.0031336742, - -0.02425473, - -0.0019008797, - 0.010146254, - 0.021465128, - 0.017947266, - 0.019527217, - 0.041103438, - 0.025081737, - -0.008905744, - 0.015231724, - 0.0133185005, - 0.027994772, - -0.0030426418, - 0.004749113, - 0.023464754, - -0.00914644, - -0.0076590637, - 0.014614555, - 0.03915318, - -0.019996267, - 0.010436323, - 0.014491121, - 0.00998579, - -0.02073687, - -0.09376027, - -0.027377604, - 0.0034654024, - 0.0013029975, - 0.007455398, - 0.021786055, - -0.005443428, - 0.011608943, - -0.0047460273, - 0.015021887, - -0.006862916, - -0.020773899, - -0.017934922, - -0.012800079, - 0.024982989, - 0.0033635695, - 0.024020206, - -0.011689175, - -0.03826446, - 0.010103052, - -0.02015673, - -0.009529085, - -0.021131856, - 0.006150086, - -0.0013978871, - -0.0106029585, - -0.04048627, - 0.016700584, - 0.010868341, - 0.00654816, - -0.0041566314, - 0.010053678, - 0.015959984, - -0.022588374, - -0.014022073, - -0.013849266, - -0.014096133, - -0.013515995, - 0.011146067, - -0.034215834, - -0.0017867034, - 0.000072131596, - 0.004403499, - -0.027352918, - -0.018095387, - 0.008455211, - -0.0024470738, - 0.020773899, - 0.0017496733, - -0.009646347, - -0.019206291, - 0.017219007, - -0.0030935581, - 0.0034222004, - 0.030710315, - -0.024513941, - 0.020823272, - 0.0055113165, - -0.031549666, - 0.011022633, - -0.001449575, - 0.009257531, - 0.018552091, - 0.02315617, - -0.017502904, - -0.00658519, - -0.016564809, - 0.012306344, - 0.019613622, - -0.029895652, - -0.0092760455, - 0.01009688, - -0.020329537, - 0.004789229, - -0.010553585, - 0.00057820993, - -0.030488133, - -0.015540308, - 0.020909676, - -0.008171313, - -0.009263703, - -0.007868901, - 0.0029346372, - -0.03545017, - -0.018058356, - 0.024995333, - 0.005304565, - -0.027501037, - -0.0046071643, - -0.005878532, - 0.0011780207, - 0.03174716, - 0.02345241, - -0.033203676, - -0.026711062, - 0.023551159, - -0.000015573867, - 0.01708323, - -0.015453905, - -0.011763236, - -0.007467741, - -0.018589122, - -0.032907434, - 0.016848706, - -0.00973275, - -0.029204423, - 0.0025982803, - -0.008763796, - 0.009387136, - -0.018848332, - -0.008603332, - 0.022292133, - -0.021526845, - 0.0019085943, - 0.002229522, - -0.009646347, - -0.03448739, - 0.02095905, - -0.0008640362, - 0.0072455606, - -0.0074368827, - -0.006603705, - -0.0055884626, - 0.012775392, - -0.008208344, - -0.008769968, - -0.0105721, - 0.0045022457, - 0.0062426613, - 0.028809436, - -0.019218633, - -0.01803367, - 0.027426977, - -0.01291117, - 0.011201612, - 0.025797652, - -0.020539375, - -0.024723778, - 0.0017404158, - 0.010528898, - 0.008294747, - -0.023983177, - -0.007202359, - -0.031697784, - 0.009195814, - -0.009973446, - -0.01009688, - 0.001419488, - -0.023723966, - -0.004397327, - 0.0023128397, - 0.017552279, - 0.013762862, - 0.023872085, - -0.028784748, - -0.007276419, - -0.0062241466, - -0.031006556, - 0.0008617218, - 0.0013778291, - -0.0067333104, - -0.015861236, - 0.026612315, - -0.006764169, - 0.0010098423, - -0.014824392, - 0.020662809, - -0.0037832442, - -0.009060036, - -0.0039313645, - -0.0042924085, - -0.02513111, - -0.017762115, - 0.008300919, - 0.019045826, - 0.005147187, - 0.021921832, - -0.015564995, - -0.007239389, - -0.021600904, - -0.009393307, - 0.007276419, - 0.0026939414, - -0.006332151, - -0.034981124, - -0.0009342391, - 0.037005436, - 0.019564249, - -0.013812236, - 0.00076220336, - -0.0022110068, - -0.0007595032, - -0.039005063, - 0.007196187, - -0.001834534, - -0.00082700606, - -0.013898639, - -0.004650366, - -0.0062611764, - -0.008381151, - 0.0047768857, - 0.06048253, - 0.009047694, - 0.0030981868, - -0.02535329, - -0.03424052, - -0.004125773, - 0.015157663, - -0.0010075279, - -0.002266552, - -0.012639615, - -0.023440067, - 0.019996267, - -0.022847585, - -0.0063630096, - 0.020539375, - 0.0031305882, - 0.00065227016, - -0.01719432, - -0.012837109, - -0.024267074, - 0.0385607, - -0.008189829, - 0.027081363, - -0.009689549, - 0.01605873, - 0.028834121, - 0.002704742, - 0.012633444, - -0.010689362, - 0.01013391, - 0.004530018, - 0.026933242, - 0.0006198688, - 0.0015537222, - -0.0017388728, - -0.036536388, - 0.000044310786, - 0.011683004, - 0.015861236, - -0.0060636825, - 0.0447077, - -0.0012682817, - -0.040733136, - 0.027673844, - -0.0076467204, - -0.00060366816, - 0.02410661, - -0.0053940546, - -0.013602398, - -0.008115768, - 0.00060521107, - 0.011726205, - 0.018046012, - 0.005640922, - -0.025254544, - -0.0045423615, - -0.020810928, - 0.007541802, - -0.033672724, - -0.020897333, - 0.01408379, - 0.01320741, - 0.01521938, - 0.0062704342, - 0.006801199, - -0.017515248, - 0.017811488, - -0.0023745566, - 0.006369181, - -0.0011409906, - 0.0039406223, - 0.014602211, - -0.04233777, - -0.012997573, - 0.0029130364, - 0.0006260405, - -0.018008983, - -0.021242946, - 0.0086095035, - 0.020280164, - 0.0004285465, - 0.04144905, - -0.016256224, - -0.0320434, - 0.014318314, - -0.002703199, - -0.018329911, - -0.019082857, - -0.017107917 + 0.00089398306, + -0.00462804, + 0.0042670527, + -0.0047607105, + -0.017598893, + 0.003273567, + -0.024374345, + -0.025522098, + 0.0054086363, + -0.024312638, + -0.018931769, + 0.029347945, + -0.00042616535, + -0.018746648, + -0.011675002, + -0.019425428, + 0.024892684, + -0.012687, + 0.013587926, + -0.008262594, + -0.0074048643, + 0.017352065, + -0.029372627, + 0.011428174, + -0.007238255, + -0.007355498, + 0.02142474, + -0.012582098, + 0.03068082, + -0.008873495, + 0.008237911, + -0.024053467, + -0.0022800812, + -0.018117234, + -0.01122454, + -0.00754062, + 0.004739113, + -0.0063033905, + 0.00008147279, + -0.012150148, + 0.02151113, + -0.0002720902, + 0.001740143, + -0.01875899, + 0.0031362686, + -0.0052574533, + 0.007546791, + 0.010224883, + -0.0011215283, + 0.020894058, + -0.0047175153, + -0.0028323606, + -0.008151521, + -0.032852914, + 0.011496051, + -0.0066952314, + -0.007694888, + 0.033124425, + -0.022732932, + -0.013921144, + 0.0149825085, + 0.0007686403, + -0.00968186, + -0.0025608488, + -0.012384635, + -0.0065162806, + 0.017870406, + 0.0114405155, + -0.005812818, + 0.024756929, + 0.00745423, + -0.00065023964, + 0.013180658, + -0.0019345208, + -0.0083798375, + -0.023029128, + -0.029965017, + 0.003248884, + 0.016586896, + -0.003949261, + 0.010718541, + -0.0034093228, + -0.03127321, + 0.02655878, + 0.024682881, + 0.0031779208, + -0.044676013, + 0.0041528945, + 0.0017771674, + -0.0043842965, + 0.01165649, + 0.03314911, + 0.021992447, + -0.01636475, + -0.0024096663, + 0.0055845017, + 0.020474449, + 0.026237901, + -0.0015565641, + -0.023868345, + 0.01336578, + 0.0058745258, + -0.029718189, + 0.012322928, + -0.03616042, + -0.023596834, + 0.009064788, + 0.006744597, + 0.010132322, + -0.024300296, + -0.021807324, + 0.031075746, + 0.035987638, + -0.03675281, + 0.016846066, + 0.0029403481, + 0.012421659, + -0.009848469, + -0.02673156, + -0.0016167287, + 0.016154945, + 0.032877598, + -0.0011654948, + -0.014143291, + 0.024868002, + 0.0033445302, + -0.011347954, + -0.032359257, + 0.0068001337, + -0.0042824796, + -0.0018357892, + 0.0005187262, + -0.011415832, + 0.016006848, + -0.008972227, + 0.015044216, + -0.02853341, + 0.03872744, + -0.02133835, + -0.033469986, + 0.012150148, + 0.020338694, + -0.02132601, + 0.0056184405, + -0.00847857, + 0.020104205, + 0.012477196, + 0.011767563, + 0.0057233428, + -0.023436395, + 0.028434679, + -0.028829604, + 0.03956666, + 0.009496738, + 0.017512504, + 0.017450796, + 0.0057480256, + -0.01508124, + -0.02981692, + 0.013847096, + -0.00797257, + 0.011162832, + 0.024386685, + -0.0065779877, + 0.014686313, + 0.02365854, + 0.0115947835, + 0.0005488084, + -0.0043380163, + -0.0047144303, + -0.010132322, + 0.050698638, + -0.018536843, + -0.0021767216, + -0.0032612255, + 0.023510443, + 0.015007191, + 0.011551588, + -0.024374345, + -0.010471712, + -0.0039184075, + 0.0011222997, + 0.03386491, + 0.0052481974, + 0.017672943, + 0.013723682, + 0.012847439, + -0.01756187, + -0.0005977885, + -0.012020563, + 0.015179971, + 0.034852225, + 0.01062598, + -0.004362699, + -0.68993586, + -0.02211586, + 0.007546791, + -0.001740143, + 0.013415146, + 0.03386491, + 0.029347945, + 0.0034648594, + -0.016636262, + 0.0011747509, + -0.00736784, + 0.000043002205, + 0.0029372629, + -0.014291388, + 0.007787449, + -0.029347945, + -0.014994849, + 0.009817616, + -0.017500162, + 0.032532036, + -0.0117613925, + -0.019770987, + -0.021498788, + -0.0033291036, + 0.026015757, + 0.025299953, + 0.006991426, + 0.0030745612, + -0.0033167622, + 0.0023587577, + -0.012822757, + -0.0028863542, + -0.0040911874, + -0.008083643, + 0.036283836, + -0.013205341, + -0.01122454, + 0.031075746, + 0.012032905, + 0.031421307, + 0.013995193, + 0.014427143, + -0.00021192567, + -0.026805608, + -0.0029681164, + -0.011113467, + -0.0043318453, + -0.015636604, + 0.016673286, + 0.0029804579, + 0.008614325, + 0.0013591012, + 0.009885494, + 0.02571956, + 0.0050846734, + -0.006068903, + 0.025423367, + 0.015883433, + -0.026435364, + 0.00608433, + -0.0023834407, + 0.011434345, + -0.0010189401, + -0.021548154, + 0.0048039057, + 0.0053839535, + -0.0068803527, + 0.010897492, + 0.009299275, + 0.0042115166, + -0.016006848, + 0.003940005, + -0.010070615, + 0.0067816214, + 0.000030082261, + -0.005371612, + 0.041442554, + 0.012051417, + -0.00924991, + 0.019561183, + 0.018438112, + 0.007392523, + -0.020412741, + -0.008336643, + 0.020671912, + -0.025546782, + -0.033198476, + -0.013958169, + 0.017500162, + -0.010564273, + 0.016241336, + 0.029273896, + -0.021005131, + -0.0051309536, + -0.011094955, + 0.0064484025, + -0.0091511775, + 0.012421659, + 0.0077689365, + -0.0028863542, + 0.0046372963, + -0.030039065, + -0.010317444, + 0.009928688, + 0.019598207, + 0.01884538, + -0.021412399, + 0.002713574, + -0.003427835, + -0.023485761, + 0.028928336, + 0.011045589, + -0.013526218, + 0.03403769, + -0.012921488, + -0.025324635, + 0.015871093, + 0.014710996, + 0.022918055, + -0.04507094, + 0.016031532, + 0.006929719, + 0.00012987437, + 0.0114405155, + -0.0063620126, + -0.022560153, + 0.0029881713, + 0.008077472, + -0.015463824, + -0.029520726, + 0.02742268, + 0.0027922508, + 0.019178597, + 0.007016109, + 0.008645179, + -0.008435374, + 0.016648604, + 0.00063095614, + 0.011687344, + -0.017278016, + -0.017919771, + 0.014945484, + -0.018129576, + 0.008330472, + 0.0024852576, + -0.0066705486, + -0.03401301, + 0.0024405199, + -0.00062671374, + 0.0061151837, + -0.019252647, + -0.008805618, + -0.020585522, + -0.0044922843, + -0.011002394, + 0.0048902957, + -0.0226342, + -0.009712714, + -0.0039369194, + 0.006090501, + 0.021622203, + 0.014661631, + -0.011804587, + 0.0000605984, + -0.0112862475, + -0.011064101, + -0.0070901574, + 0.034062374, + -0.029545408, + -0.014587582, + 0.007923204, + -0.0140692415, + -0.013575585, + -0.008342814, + -0.019203281, + 0.00086235814, + -0.016253676, + -0.024473077, + -0.008540276, + -0.0028385313, + 0.009700372, + -0.005896123, + 0.0033815545, + -0.010348298, + 0.032186475, + 0.002978915, + 0.02571956, + 0.027644826, + -0.013118951, + 0.033815548, + -0.023238933, + -0.013069585, + -0.006615012, + 0.019647572, + -0.0031239272, + 0.00030390796, + -0.008885837, + -0.00033244755, + -0.009527592, + 0.014686313, + 0.01875899, + 0.012551244, + 0.022239275, + -0.020462109, + 0.027274583, + -0.005704831, + 0.008645179, + -0.019166257, + 0.017105237, + 0.034383252, + 0.0016367835, + -0.009033934, + -0.0048810397, + 0.004985942, + 0.007978741, + -0.0023464162, + 0.006892694, + 0.015278703, + 0.0030637626, + -0.019351378, + -0.02621322, + 0.031248527, + 0.03512374, + -0.040010948, + -0.019474793, + -0.010440858, + 0.017364407, + 0.013081927, + 0.0011678088, + -0.017055871, + -0.034210473, + 0.010082956, + 0.0016738079, + 0.0014192656, + -0.0034586887, + -0.00031875627, + 0.013674316, + -0.015315727, + 0.01901816, + -0.0056523797, + 0.015488507, + 0.02870619, + 0.020980448, + -0.018820696, + 0.017290358, + -0.011773734, + 0.022128202, + 0.011002394, + -0.009237568, + 0.022955079, + -0.013242366, + 0.0046403813, + -0.017031187, + -0.005220429, + -0.000036108355, + -0.022239275, + 0.04635445, + -0.0031779208, + 0.012174831, + 0.012785732, + 0.011884807, + 0.0042115166, + -0.00123183, + -0.008151521, + 0.000019440178, + 0.011162832, + -0.019203281, + -0.0034586887, + -0.00033726843, + -0.012748708, + -0.00030545064, + -0.016130263, + -0.0017864235, + -0.030088432, + 0.009077129, + 0.0024220077, + 0.010730882, + -0.003292079, + -0.000076218035, + 0.025065465, + 0.02168391, + -0.0152910445, + 0.017389089, + 0.02981692, + -0.019931426, + -0.027447363, + -0.037394565, + 0.0059855985, + -0.005621526, + 0.004430577, + 0.035025008, + 0.023029128, + 0.0181666, + 0.012896805, + 0.0008515594, + -0.003616042, + 0.019067526, + 0.005991769, + 0.018907087, + -0.014809729, + -0.005828245, + -0.015562556, + -0.032680135, + -0.0056431238, + 0.030433992, + 0.026830291, + 0.029347945, + 0.009811445, + 0.0042886506, + -0.0020286243, + -0.022498446, + -0.020474449, + -0.009749738, + -0.007386352, + -0.011347954, + -0.0018990391, + 0.008768593, + -0.009367153, + 0.024682881, + 0.016673286, + -0.0021921482, + -0.009811445, + 0.0037425417, + -0.004985942, + 0.07557898, + -0.0059269764, + 0.004695918, + 0.0019545755, + 0.007256767, + -0.013032561, + -0.024374345, + -0.02210352, + 0.0014084668, + -0.0022847091, + 0.0007239026, + -0.021943081, + -0.000053849173, + -0.010348298, + 0.0033105914, + -0.0017077468, + 0.0032828231, + -0.014032218, + 0.016006848, + -0.017722309, + -0.015871093, + -0.0027475131, + 0.001075248, + -0.017537186, + -0.0079170335, + -0.0056091845, + 0.017598893, + 0.005741855, + 0.020165913, + -0.020116547, + 0.0181666, + 0.012582098, + -0.015735336, + -0.016920114, + 0.006584158, + -0.013513877, + -0.0025253673, + -0.0037302002, + 0.011212198, + -0.005158722, + 0.015611921, + 0.008015766, + 0.0018728136, + -0.0065162806, + 0.0041004433, + -0.0054456606, + 0.00009458557, + 0.0037147736, + -0.013526218, + -0.02125196, + 0.02544805, + -0.0022245445, + -0.012687, + 0.0042207725, + -0.0026318121, + 0.014636948, + -0.028113801, + 0.0029079518, + -0.02107918, + -0.006584158, + -0.0011770648, + -0.0140692415, + -0.0008330472, + -0.00090709585, + -0.031766865, + -0.010212542, + 0.003119299, + -0.016303042, + -0.0071580354, + 0.00762701, + 0.0003278195, + -0.019573525, + -0.017080553, + 0.025670195, + 0.03435857, + 0.014254363, + 0.0018234478, + -0.017450796, + -0.001894411, + 0.023214249, + -0.003986285, + -0.007083987, + 0.0116071245, + -0.003350701, + -0.0062262565, + 0.006522451, + 0.013180658, + -0.020585522, + -0.012909146, + 0.014994849, + 0.02425093, + -0.0010073701, + 0.01833938, + -0.0068433285, + -0.016130263, + -0.0021042156, + 0.0016228994, + 0.00805279, + -0.01695714, + -0.0067260847, + 0.017981479, + -0.020634888, + -0.016611578, + -0.030656137, + 0.02347342, + -0.009120325, + 0.020499133, + -0.006121354, + -0.01669797, + 0.006436061, + -0.009502909, + -0.0065779877, + 0.0041775773, + -0.018154258, + 0.0032334574, + 0.012699342, + -0.01620431, + 0.024300296, + -0.0026626657, + -0.043096308, + 0.009428861, + -0.032063063, + 0.032186475, + 0.027521411, + 0.010150835, + 0.011422003, + -0.019511817, + -0.0061336956, + -0.015031874, + 0.011946514, + 0.009052446, + 0.018104892, + -0.010983882, + -0.010558102, + -0.009897835, + -0.015179971, + 0.01585875, + 0.020165913, + 0.006349671, + -0.010595126, + -0.023818979, + 0.024954392, + 0.02707712, + -0.011335613, + -0.02038806, + -0.014155632, + 0.01482207, + 0.02262186, + -0.027768241, + 0.017068211, + -0.0026333549, + -0.0028431593, + -0.02836063, + 0.0028693848, + 0.02312786, + 0.0020656486, + -0.025818292, + -0.0054610875, + 0.015229337, + 0.024781613, + 0.028409995, + -0.005297563, + 0.017327381, + -0.0096139815, + -0.008453887, + 0.009965713, + 0.0054641725, + 0.01568597, + -0.018438112, + 0.02406581, + 0.027052436, + -0.0038998951, + 0.003214945, + 0.013871779, + -0.0049304054, + 0.021980105, + 0.00013459883, + -0.0038998951, + -0.0005333816, + -0.036826856, + -0.0030622198, + 0.029027067, + -0.012736366, + 0.004146724, + -0.0006857213, + -0.003099244, + -0.0060966713, + -0.0044151503, + 0.005192661, + 0.020807669, + 0.015537873, + -0.019425428, + 0.011730539, + 0.0018758989, + -0.002883269, + -0.012970854, + -0.032013696, + -0.0009680317, + 0.015155288, + -0.0026009586, + 0.03616042, + 0.023152541, + 0.0073740105, + -0.017376747, + -0.0041004433, + 0.02947136, + 0.01490846, + -0.02947136, + 0.022350349, + -0.0045046257, + -0.019758645, + -0.016611578, + -0.020104205, + -0.039640706, + 0.002232258, + 0.005424063, + -0.039023634, + 0.017450796, + -0.01585875, + -0.016241336, + -0.001154696, + 0.01473568, + 0.015389776, + -0.029249214, + 0.022041813, + 0.00642989, + -0.026978388, + -0.021646887, + 0.01800616, + -0.009589299, + -0.0064052073, + 0.016784359, + 0.021042155, + -0.014957826, + -0.0016275274, + -0.007009938, + 0.0102187125, + 0.015722996, + -0.030063748, + -0.0012248879, + 0.012008221, + 0.015500849, + -0.021992447, + 0.0052667097, + 0.0010305103, + 0.006152208, + -0.014538216, + -0.015389776, + 0.0074048643, + -0.013057244, + -0.02742268, + 0.019499475, + -0.02665751, + -0.0020671913, + 0.00874391, + -0.026435364, + 0.008768593, + -0.019511817, + -0.007738083, + -0.004695918, + -0.018672599, + 0.033889595, + 0.014933143, + 0.030113114, + 0.007324645, + -0.011181345, + -0.0059424033, + -0.009996567, + 0.011662661, + 0.028558092, + -0.0115701, + -0.009996567, + -0.015871093, + 0.035000324, + 0.0076516927, + 0.0058004768, + 0.0023541297, + -0.009552275, + -0.026978388, + -0.0007929375, + 0.020128889, + -0.011434345, + -0.024127515, + 0.018462794, + -0.030532723, + -0.0009965713, + -0.029940333, + 0.003582103, + 0.015895775, + -0.0019283501, + -0.019339036, + 0.003788822, + -0.01208844, + 0.0052142586, + 0.0060874154, + -0.009620152, + 0.018277673, + 0.010261907, + -0.024090491, + 0.012316757, + -0.009262251, + 0.036925588, + 0.00950908, + 0.011366466, + 0.020881716, + -0.01824065, + 0.025250586, + -0.00079910824, + -0.01851216, + -0.009157348, + 0.022214592, + -0.007694888, + 0.009453543, + -0.01671031, + 0.0050599906, + 0.01748782, + 0.024756929, + -0.005766538, + 0.00086081546, + 0.012699342, + -0.01669797, + -0.0066890605, + 0.021906056, + -0.013242366, + -0.0043441867, + -0.0088303005, + -0.012736366, + 0.002724373, + 0.0010567359, + -0.018129576, + -0.020857034, + 0.010878979, + -0.0035018837, + -0.02099279, + -0.007164206, + -0.020104205, + -0.01208227, + 0.012612952, + 0.008811789, + 0.0071271816, + 0.006460744, + 0.025818292, + 0.0006012595, + 0.01620431, + -0.029101117, + 0.0069790846, + 0.0077689365, + 0.00668289, + -0.014254363, + -0.016340068, + 0.0008322759, + 0.010274249, + 0.025768926, + -0.03307506, + -0.017709967, + 0.0046897475, + -0.022523127, + 0.0034000669, + -0.0014570613, + 0.011977368, + 0.020215278, + -0.010033591, + -0.011773734, + 0.0033105914, + 0.004720601, + 0.0074665714, + -0.0019345208, + 0.010996223, + -0.0018990391, + -0.002030167, + 0.011675002, + 0.010866638, + -0.017426113, + -0.018919427, + 0.0076516927, + 0.014427143, + 0.033124425, + 0.019005818, + -0.022436738, + 0.033445302, + -0.014883777, + 0.004038736, + 0.017919771, + 0.02870619, + 0.0020224536, + -0.008552618, + -0.02579361, + -0.0069544017, + 0.013982852, + -0.0060781594, + -0.014488851, + 0.0028693848, + 0.0134521695, + -0.013378121, + -0.016858408, + -0.0030884454, + -0.024645856, + -0.017290358, + -0.002540794, + 0.009101812, + -0.025744244, + 0.013686657, + 0.010311273, + -0.0028092202, + -0.00552588, + -0.008669862, + 0.0013459884, + 0.005707916, + -0.0100644445, + -0.0028308178, + -0.0017771674, + -0.008034278, + 0.0014439485, + -0.023954736, + 0.003341445, + 0.017092895, + -0.0143654365, + -0.03751798, + 0.031001698, + -0.00951525, + -0.018549185, + 0.013094268, + -0.020375717, + -0.021622203, + 0.013822413, + -0.0063805245, + -0.0028431593, + -0.010342127, + 0.008435374, + 0.0015149118, + -0.005004454, + -0.02373259, + -0.001538052, + 0.028212532, + -0.006744597, + 0.03147067, + 0.22056621, + 0.002096502, + 0.0037672247, + 0.027101804, + -0.017635917, + 0.033445302, + 0.0062108296, + -0.010249566, + -0.010582785, + 0.012045246, + 0.009194373, + 0.01191566, + -0.028089117, + 0.0032427134, + 0.013217682, + -0.007941716, + -0.012847439, + -0.015957482, + -0.022066494, + -0.028508727, + -0.016451139, + 0.0014177229, + -0.0116071245, + 0.0025917024, + 0.012069928, + -0.000014125164, + 0.0037086029, + 0.025571464, + 0.012921488, + -0.0021366118, + -0.01627836, + -0.00951525, + 0.015821727, + -0.0067137433, + -0.011082613, + -0.003915322, + 0.00057966204, + 0.014957826, + 0.013513877, + 0.023325322, + 0.020597864, + 0.009274593, + 0.015303385, + -0.026805608, + -0.016080897, + 0.006127525, + -0.016870748, + -0.01740143, + 0.0030406222, + 0.0022091179, + -0.02014123, + -0.024287954, + 0.017413773, + 0.04823035, + -0.004223858, + 0.005390124, + 0.027101804, + 0.005760367, + 0.0074912542, + -0.004257797, + -0.022325665, + 0.008731569, + -0.005982513, + 0.011650319, + -0.0016738079, + 0.015266362, + -0.02184435, + 0.01422968, + 0.011958855, + -0.016056214, + 0.02270825, + -0.008935203, + 0.015204654, + -0.0021288984, + 0.0034741154, + -0.0031686649, + 0.0106815165, + -0.004334931, + 0.032063063, + 0.014316071, + -0.0026379828, + 0.008355155, + 0.003230372, + -0.0032365427, + -0.0062509393, + -0.021646887, + 0.0039523463, + 0.011545417, + 0.028311264, + 0.0016861493, + 0.010638322, + -0.005967086, + -0.010576614, + -0.027620142, + 0.008262594, + 0.025966391, + 0.0055752457, + 0.023596834, + 0.009632494, + 0.0021474105, + -0.028138483, + -0.020536156, + 0.010514907, + -0.0007084758, + -0.0067199143, + 0.014044559, + 0.0041960897, + 0.004763796, + 0.020696595, + -0.024399027, + 0.020351036, + -0.024584148, + 0.022300983, + -0.0072135716, + 0.026410682, + -0.0057788794, + 0.005056905, + -0.02433732, + -0.0034864568, + 0.0039523463, + -0.0045601623, + -0.001086818, + 0.00711484, + -0.008645179, + -0.015969824, + -0.021523472, + -0.031914964, + 0.010298932, + -0.0122118555, + -0.020684253, + 0.003264311, + -0.015661288, + 0.04475006, + -0.0021304411, + -0.008441545, + 0.016191969, + -0.0053345873, + -0.01182927, + 0.006007196, + -0.004140553, + 0.01646348, + 0.0009742024, + 0.005680148, + -0.009546104, + -0.013550902, + -0.009194373, + -0.0054209777, + -0.015994506, + -0.043392505, + -0.008170034, + -0.01988206, + -0.010786419, + -0.019598207, + -0.009725055, + 0.012002051, + -0.014994849, + -0.0363332, + 0.0019345208, + 0.0028909824, + 0.030878283, + -0.009737397, + 0.020276986, + 0.013230024, + -0.009996567, + -0.008725398, + -0.018462794, + -0.15560088, + 0.019388402, + 0.0050846734, + -0.007904693, + -0.009836128, + -0.011724368, + 0.018796014, + 0.015019532, + -0.019339036, + 0.03016248, + 0.027546095, + -0.016722651, + -0.03727115, + -0.012489538, + 0.012810415, + -0.00027131886, + -0.0021258132, + 0.023522785, + 0.0035759322, + 0.008355155, + 0.0049211495, + -0.028780239, + 0.020116547, + 0.0011153576, + -0.011366466, + 0.0029372629, + -0.0031810063, + 0.027792923, + -0.015105923, + -0.0181666, + -0.007670205, + -0.014513534, + 0.011428174, + 0.029841602, + -0.0037980783, + -0.00024200793, + -0.023251273, + 0.0045138816, + -0.017981479, + 0.019770987, + -0.015611921, + 0.009021593, + -0.000009364549, + 0.0047853934, + -0.010039762, + 0.031643454, + 0.015797043, + 0.012822757, + -0.0021798068, + -0.013007878, + 0.0061645494, + -0.015624263, + -0.0114528565, + -0.017179284, + 0.046329767, + 0.03240862, + 0.0058251596, + 0.021449422, + 0.011699685, + 0.019203281, + -0.016241336, + -0.0036407248, + 0.018388746, + 0.0021690081, + 0.015611921, + -0.024028784, + 0.018203624, + 0.006676719, + -0.029101117, + 0.015241679, + -0.0034926275, + -0.009033934, + -0.012921488, + -0.021967763, + 0.0016290701, + 0.0055752457, + -0.020659572, + 0.015130606, + -0.006608841, + -0.026879657, + -0.0013668145, + 0.045712695, + -0.0009680317, + -0.018438112, + -0.0076455222, + 0.012748708, + 0.017981479, + -0.008410691, + -0.013155975, + -0.005735684, + 0.00014520476, + -0.043738063, + 0.023325322, + -0.037246466, + 0.016549872, + 0.010872809, + -0.016944798, + -0.0011894063, + -0.0029125798, + -0.0042732237, + -0.0017092895, + -0.0031285551, + -0.024275612, + -0.0019036671, + 0.010126152, + 0.021474106, + 0.017956795, + 0.01954884, + 0.04114636, + 0.025090149, + -0.008935203, + 0.015229337, + 0.013353438, + 0.028039752, + -0.0030344515, + 0.0047761374, + 0.023461077, + -0.0091511775, + -0.0076455222, + 0.01464929, + 0.03914705, + -0.01996845, + 0.010440858, + 0.014513534, + 0.009990396, + -0.020770645, + -0.09379494, + -0.027373314, + 0.0034556033, + 0.0012865951, + 0.007448059, + 0.0217703, + -0.0054364046, + 0.0115947835, + -0.004732942, + 0.014994849, + -0.00685567, + -0.020869376, + -0.017919771, + -0.012785732, + 0.025040783, + 0.0033599571, + 0.024004102, + -0.011724368, + -0.03830783, + 0.010089127, + -0.020178255, + -0.00951525, + -0.021153228, + 0.006152208, + -0.0014161803, + -0.010601297, + -0.04050461, + 0.016636262, + 0.010891321, + 0.0065101096, + -0.0041436385, + 0.010039762, + 0.01594514, + -0.022584835, + -0.014081583, + -0.013834755, + -0.0140569005, + -0.013513877, + 0.011175174, + -0.03418579, + -0.0018033929, + 0.00008282263, + 0.004393553, + -0.027348632, + -0.018055527, + 0.00847857, + -0.0024405199, + 0.020795327, + 0.0017200882, + -0.00968186, + -0.019215623, + 0.017253334, + -0.0030822747, + 0.0034432618, + 0.030656137, + -0.024522442, + 0.02082001, + 0.005535136, + -0.031569403, + 0.011070272, + -0.0015071984, + 0.00924991, + 0.018487478, + 0.02312786, + -0.017500162, + -0.006590329, + -0.016599238, + 0.0123661235, + 0.019647572, + -0.029890968, + -0.009286934, + 0.010095298, + -0.020289328, + 0.004779223, + -0.010514907, + 0.00056539226, + -0.03050804, + -0.015525532, + 0.020894058, + -0.008151521, + -0.009219056, + -0.007898522, + 0.0029295494, + -0.035469297, + -0.018055527, + 0.0250161, + 0.0053438437, + -0.027546095, + -0.0046156985, + -0.005896123, + 0.0012326014, + 0.031692818, + 0.02347342, + -0.033198476, + -0.026706876, + 0.023559809, + 0.000008370244, + 0.017092895, + -0.015463824, + -0.011835441, + -0.00745423, + -0.018610891, + -0.032951646, + 0.0167967, + -0.009743567, + -0.029150482, + 0.0025809037, + -0.008774764, + 0.009398007, + -0.018833037, + -0.008620496, + 0.022288641, + -0.021461764, + 0.0019391488, + 0.0022384287, + -0.009638665, + -0.0344573, + 0.020931082, + -0.00084307464, + 0.007293791, + -0.00736784, + -0.0066890605, + -0.005655465, + 0.012785732, + -0.00823174, + -0.008768593, + -0.010582785, + 0.004507711, + 0.006254025, + 0.02880492, + -0.019215623, + -0.018018503, + 0.027447363, + -0.012909146, + 0.011175174, + 0.02579361, + -0.02056084, + -0.024756929, + 0.0017000334, + 0.01054576, + 0.008281106, + -0.02406581, + -0.00720123, + -0.0317175, + 0.009206714, + -0.009953371, + -0.010101469, + 0.001460918, + -0.023707906, + -0.0044213207, + 0.0022785384, + 0.017524846, + 0.0137483645, + 0.023868345, + -0.028730873, + -0.007318474, + -0.0062509393, + -0.03102638, + 0.0008723856, + 0.0013297902, + -0.006701402, + -0.015821727, + 0.02665751, + -0.0067569385, + 0.001011998, + -0.014846752, + 0.020696595, + -0.0037949928, + -0.009089471, + -0.0039585168, + -0.004276309, + -0.02511483, + -0.017759332, + 0.008348985, + 0.019055184, + 0.0051463805, + 0.021918397, + -0.015537873, + -0.0072197425, + -0.021634545, + -0.009410348, + 0.007269108, + 0.002695062, + -0.006349671, + -0.035000324, + -0.00094334886, + 0.03699964, + 0.019561183, + -0.013847096, + 0.0007624696, + -0.0021875203, + -0.00075398484, + -0.039048318, + 0.007170377, + -0.0018280759, + -0.0008176204, + -0.013958169, + -0.0046588937, + -0.006272537, + -0.008367497, + 0.004810076, + 0.060522422, + 0.009058617, + 0.0031424393, + -0.025398685, + -0.03418579, + -0.0041498095, + 0.015179971, + -0.001009684, + -0.0023063067, + -0.0126746595, + -0.023448735, + 0.019993134, + -0.022905713, + -0.006374354, + 0.020523814, + 0.003119299, + 0.00066836615, + -0.01721631, + -0.01285978, + -0.024300296, + 0.03857934, + -0.008207058, + 0.02700307, + -0.00968186, + 0.016117921, + 0.02887897, + 0.002729001, + 0.0126746595, + -0.010638322, + 0.010144664, + 0.0044953697, + 0.026929023, + 0.0006228571, + 0.0015642776, + -0.0017231735, + -0.036456615, + 0.000027286153, + 0.011644149, + 0.015871093, + -0.0060565616, + 0.044700697, + -0.0012611409, + -0.04072675, + 0.02766951, + -0.0075961566, + -0.0006085873, + 0.024090491, + -0.0053932094, + -0.013575585, + -0.008095984, + 0.0005711773, + 0.01173671, + 0.018055527, + 0.00565855, + -0.025262928, + -0.0045601623, + -0.020782985, + 0.0075035957, + -0.033692133, + -0.0209064, + 0.014081583, + 0.013180658, + 0.015216996, + 0.0062355124, + 0.0067877923, + -0.017500162, + 0.017858064, + -0.0023541297, + 0.006368183, + -0.0011153576, + 0.0039369194, + 0.014587582, + -0.042355824, + -0.013020219, + 0.0028724703, + 0.0005954745, + -0.018018503, + -0.021227278, + 0.008632838, + 0.02031401, + 0.0004061105, + 0.041417874, + -0.016253676, + -0.03203838, + 0.014303729, + -0.0027274583, + -0.018314697, + -0.019092208, + -0.01714226 ] }, { "object": "embedding", "index": 2, "embedding": [ - 0.013970954, - -0.01845293, - -0.0057561356, - -0.023792882, - 0.0032142159, - 0.009553008, - -0.044179462, - -0.0043090982, - 0.017966313, - -0.020668304, - 0.01085278, - 0.010968031, - -0.016263165, - 0.01936213, - -0.024535608, - -0.0054295915, - 0.031732377, - -0.001121294, - 0.01069271, - -0.022435483, - -0.045460027, - 0.0045620096, - -0.020578666, - 0.017671784, - -0.016634528, - 0.0010764742, - 0.01568691, - -0.015174684, - 0.026482066, - 0.010814364, - 0.02485575, - -0.012741612, - 0.017326033, - -0.037315637, - -0.040901218, - 0.017108336, - -0.0021545491, - 0.010071636, - -0.001343792, - -0.02070672, - 0.008509348, - 0.005573655, - -0.0036816217, - -0.0038801092, - -0.008022734, - 0.013561173, - 0.01389412, - 0.010225304, - -0.008829489, - 0.0103021385, - -0.0048053167, - 0.030861594, - -0.004152229, - -0.004270681, - 0.018248038, - -0.025611281, - -0.0008419709, - 0.017851064, - -0.020860389, - -0.016698556, - 0.012735209, - -0.002127337, - 0.005147868, - -0.0096874675, - -0.0076129534, - 0.010206096, - -0.005893796, - -0.004619635, - -0.0038128796, - 0.005730524, - 0.029324917, - 0.029350528, - 0.00071751606, - 0.015161878, - 0.0031902052, - 0.013714842, - -0.004277084, - -0.0019736695, - -0.004853338, - -0.0174797, - 0.0043347096, - -0.0129401, - -0.026136313, - -0.0008147589, - 0.027224792, - 0.011851621, - -0.0028348488, - 0.0011429035, - -0.031066485, - -0.012050108, - -0.0052695214, - 0.029478585, - 0.032423884, - -0.0012269404, - -0.013625202, - 0.016416831, - 0.022320231, - 0.020002412, - 0.005704913, - -0.029068805, - 0.0048629423, - 0.014547208, - -0.038314477, - 0.0026523683, - -0.0367778, - -0.015533242, - 0.015584465, - -0.012594348, - 0.027404072, - -0.032116547, - -0.020258524, - 0.008957546, - 0.011070477, - -0.02047622, - -0.0070174914, - -0.02006644, - 0.017133947, - -0.008406904, - -0.017902287, - -0.0156613, - 0.014560014, - 0.03736686, - 0.016813807, - -0.023165405, - 0.027224792, - 0.01144184, - -0.012511111, - -0.013356283, - 0.0059354147, - -0.0002983314, - 0.01107688, - 0.007817844, - 0.01010365, - 0.0174797, - -0.0070751165, - 0.010186887, - -0.009104811, - 0.031578712, - 0.007933094, - -0.02999081, - 0.015238713, - 0.028351689, - -0.006377209, - -0.0076833847, - -0.004587621, - 0.030528648, - 0.020258524, - -0.016468054, - 0.0021369413, - 0.009008768, - 0.0049749915, - -0.024458773, - 0.019951189, - 0.013548368, - 0.023011737, - 0.0033678836, - -0.011723564, - -0.009328909, - -0.020117661, - -0.016083885, - -0.006844615, - 0.006143506, - 0.028633414, - 0.002458683, - 0.030707927, - 0.01968227, - 0.009757899, - 0.01897796, - 0.0012709599, - 0.003527954, - -0.0015830974, - 0.035907015, - -0.010571057, - 0.014944183, - 0.004760497, - 0.010551848, - 0.011998885, - 0.0040081656, - -0.014227067, - 0.0032142159, - -0.01895235, - -0.002322623, - 0.013433117, - 0.005509627, - 0.0010404583, - -0.009796315, - 0.010410986, - -0.020886, - 0.0121973725, - -0.013125782, - 0.014585625, - 0.018337678, - 0.005048624, - -0.016532082, - -0.69129974, - -0.040235322, - 0.011461048, - -0.0017623763, - 0.0024346726, - 0.037802253, - 0.0058489763, - 0.012632765, - 0.0073632435, - -0.026059479, - 0.0064508417, - 0.008848698, - 0.013093768, - -0.0028732657, - 0.0070110885, - -0.030195702, - -0.0099755945, - 0.015725328, - -0.003572774, - 0.014406346, - -0.008995962, - -0.004158632, - -0.028633414, - -0.0048181224, - 0.020117661, - 0.018286455, - 0.011000046, - -0.009706676, - -0.005666496, - 0.020668304, - -0.0045748153, - -0.004619635, - -0.017902287, - -0.020156078, - 0.038314477, - 0.0019560617, - -0.015174684, - 0.008221221, - -0.008003525, - 0.025163084, - -0.002817241, - 0.01577655, - -0.0015670903, - -0.01468807, - -0.01069271, - -0.0057401285, - 0.00572092, - -0.0014222265, - 0.03316661, - -0.0006919048, - 0.02077075, - 0.0029725095, - 0.023690436, - -0.005503224, - 0.014854544, - -0.001069271, - 0.03017009, - 0.015123462, - 0.0062331455, - -0.00719677, - -0.019631047, - 0.012709599, - -0.02958103, - -0.009706676, - -0.0124854995, - 0.0041714376, - -0.032116547, - -0.017658979, - -0.001482253, - -0.001916044, - 0.006111492, - 0.0074720914, - -0.011217741, - 0.029837143, - 0.016442442, - 0.0022601956, - 0.026059479, - -0.01786387, - 0.021359809, - 0.012530319, - 0.0017767827, - 0.003940936, - -0.017313227, - -0.009136825, - 0.027813852, - -0.021270169, - -0.02955542, - -0.021282975, - 0.019413352, - -0.0114162285, - 0.033909336, - 0.019631047, - 0.0007503305, - -0.0029484988, - -0.006284368, - 0.014649653, - -0.014495986, - 0.0005634482, - 0.0030861595, - -0.005832969, - 0.014470374, - -0.035241123, - -0.0016487263, - -0.0015878995, - 0.039851155, - 0.004504384, - -0.02608509, - 0.033422723, - 0.019848743, - -0.017518116, - 0.019221267, - -0.011774787, - -0.024650859, - 0.006252354, - 0.01014847, - -0.024727693, - 0.046202753, - 0.009098408, - 0.011646731, - -0.0031389827, - 0.009354521, - 0.0065436824, - -0.0005442397, - -0.014611236, - 0.0005570454, - -0.004830928, - 0.0004133821, - -0.016122302, - -0.027916297, - -0.003761657, - 0.015494825, - -0.009508189, - 0.009949983, - 0.005346355, - 0.0030269334, - -0.003832088, - 0.00597063, - -0.017966313, - 0.025790561, - -0.029939588, - -0.025752144, - -0.0107567385, - -0.013881315, - -0.013561173, - -0.00034635258, - -0.009053588, - -0.030938428, - -0.007766621, - -0.019234072, - 0.021436643, - -0.03370445, - -0.02167995, - -0.017146753, - 0.002181761, - -0.0064508417, - -0.004072194, - -0.022755625, - 0.003550364, - -0.0017895884, - 0.02526553, - 0.008426112, - 0.0035151485, - -0.015456408, - -0.0001341591, - -0.009079199, - -0.040004823, - -0.009437758, - 0.037290026, - -0.014431957, - -0.022320231, - -0.006229944, - -0.0028268453, - 0.00075713353, - -0.023690436, - -0.024932582, - -0.011755578, - -0.025790561, - -0.023255045, - 0.00021469458, - -0.016301582, - 0.014956988, - 0.010295736, - 0.005618475, - -0.019259684, - 0.035266735, - -0.006767781, - 0.019746298, - 0.03572774, - -0.0021321392, - 0.019374935, - -0.008387695, - -0.0072928127, - -0.007958706, - -0.011377812, - 0.016083885, - -0.0023242238, - -0.0036239964, - 0.0061371033, - 0.00057625386, - -0.00040177698, - 0.013522757, - -0.004408342, - 0.019054793, - -0.020399386, - 0.019746298, - -0.0132666435, - 0.012562334, - -0.0020232913, - 0.015520437, - 0.036111906, - 0.0029933185, - -0.022576345, - 0.0028044353, - 0.0018968355, - 0.017735813, - -0.0010268523, - -0.012299818, - 0.014713681, - -0.010859183, - -0.014662459, - -0.0054039806, - 0.008554168, - 0.043820903, - -0.012741612, - -0.01448318, - -0.013381895, - 0.039236482, - 0.011429034, - 0.0023946548, - -0.008150791, - -0.028684635, - -0.0025483225, - -0.012466291, - 0.00020459012, - -0.01686503, - -0.0049077617, - 0.009284089, - -0.031245764, - 0.014444763, - 0.011422631, - 0.010641487, - 0.042284228, - 0.0320141, - -0.017915092, - 0.022537928, - -0.020412192, - 0.026328398, - 0.015584465, - -0.02070672, - 0.014316707, - -0.018913932, - -0.010167679, - -0.017658979, - 0.01568691, - 0.022627568, - 0.002844453, - 0.039492596, - 0.0033166609, - 0.027019903, - 0.0174797, - -0.016442442, - -0.011089685, - 0.014726487, - -0.017351644, - 0.0038000739, - -0.003982554, - -0.008720641, - 0.021513477, - -0.0072928127, - -0.013381895, - -0.004830928, - 0.00090519874, - 0.01700589, - -0.0039345333, - 0.0018200018, - -0.02217937, - -0.011621119, - 0.003114972, - 0.022192176, - 0.010865586, - 0.0009100009, - -0.021090891, - 0.009181645, - 0.012082122, - 0.008995962, - -0.02115492, - -0.025688116, - 0.021500671, - -0.006258757, - 0.011230547, - 0.023165405, - 0.023728853, - 0.013996566, - 0.003543961, - -0.00079835166, - -0.02535517, - 0.0047733025, - -0.010071636, - 0.003387092, - -0.0023962555, - -0.009373729, - -0.015635688, - -0.026558898, - 0.0017159559, - 0.0011068876, - 0.027737018, - -0.009437758, - 0.006883032, - -0.026021061, - -0.011448243, - 0.008714238, - -0.005845775, - 0.0014358325, - 0.0032126151, - -0.019029181, - -0.0012445482, - -0.029043194, - -0.010590265, - 0.02476611, - 0.022000091, - 0.01689064, - -0.01927249, - -0.011582702, - -0.0033102583, - 0.06848457, - 0.005596065, - -0.00919445, - 0.01073753, - 0.010167679, - -0.01600705, - -0.016199136, - 0.004254674, - -0.008016331, - -0.0028428524, - 0.002013687, - 0.0015430797, - 0.0073568407, - 0.006383612, - -0.0003105368, - -0.014662459, - 0.008675822, - 0.0002072913, - 0.030323757, - -0.021641534, - -0.004824525, - 0.010154873, - -0.009437758, - -0.002458683, - -0.006117895, - 0.0077218013, - 0.022192176, - 0.016416831, - 0.015443603, - -0.022166565, - 0.008631002, - 0.020501832, - 0.0064572445, - -0.012184568, - -0.009597828, - -0.012844058, - -0.0032238201, - 0.004786108, - 0.006908643, - -0.021167723, - 0.01600705, - 0.0041234163, - 0.0065276753, - -0.021052474, - -0.0066333218, - 0.00728641, - -0.011569897, - 0.0134715345, - -0.020104855, - 0.0029997213, - 0.022806846, - -0.010244513, - -0.012664779, - -0.0070366994, - 0.011697953, - 0.0149826, - -0.012677585, - -0.008797475, - -0.00844532, - -0.01850415, - 0.004571614, - -0.017236393, - -0.0082084155, - -0.0030685517, - -0.009341715, - -0.01348434, - -0.004430752, - 0.0041650347, - -0.011352201, - 0.013433117, - 0.0013886117, - -0.017607756, - -0.013817286, - -0.0013654014, - 0.030912817, - 0.026302787, - 0.0067805867, - -0.022870874, - 0.010551848, - 0.046714976, - -0.0019960792, - -0.0075745364, - -0.01418865, - -0.0020344963, - 0.0055128285, - 0.00090119697, - 0.033294667, - -0.01359959, - 0.0033966962, - 0.0023434323, - 0.03134821, - 0.0057337256, - 0.00719677, - -0.0017591749, - -0.0073696463, - -0.012165359, - 0.022204982, - 0.0048021153, - -0.014329513, - -0.015443603, - 0.0033262651, - -0.02347274, - -0.005832969, - 0.000917204, - 0.007580939, - 0.012536722, - 0.025035027, - 0.0057113157, - -0.021282975, - 0.0146240415, - 0.026815012, - -0.0045556067, - 0.002469888, - -0.008477334, - 0.0029324917, - 0.010558251, - -0.0016967474, - 0.013497146, - 0.0022649977, - -0.029683476, - 0.0051062494, - -0.044409964, - 0.02367763, - 0.0010540644, - -0.0032942512, - -0.001237345, - 0.0115763, - -0.021116503, - -0.0038416923, - -0.0002971309, - -0.01389412, - 0.01959263, - -0.028633414, - -0.02658451, - -0.031732377, - -0.01897796, - 0.0100140115, - 0.0069278516, - -0.0023802484, - -0.014995405, - -0.025099056, - 0.017851064, - 0.018248038, - -0.00019708682, - -0.031066485, - -0.022243397, - -0.006562891, - 0.009559411, - 0.0028252446, - 0.012594348, - -0.004142625, - 0.01359959, - -0.012901683, - 0.021872034, - 0.0034191061, - -0.012325429, - -0.026021061, - -0.017697396, - 0.018990766, - 0.010539043, - 0.03373006, - -0.0059770327, - 0.0011597108, - 0.008899921, - -0.0067805867, - -0.008131582, - -0.007888275, - -0.013445923, - -0.019400546, - 0.013573979, - 0.014662459, - 0.005119055, - 0.017249199, - -0.0118260095, - 0.009661856, - 0.005215097, - -0.005487217, - -0.014342317, - -0.028454134, - -0.022819651, - 0.0014934578, - 0.0015790956, - -0.019823132, - -0.012869669, - 0.009962789, - -0.007728204, - 0.023639213, - 0.012920892, - 0.002540319, - -0.0077218013, - 0.02819802, - 0.006806198, - 0.030118868, - -0.009386535, - 0.0014198255, - 0.00016757382, - -0.02567531, - -0.00092040544, - 0.009059991, - 0.012978517, - 0.0135099515, - 0.006188326, - 0.0019064398, - -0.020821972, - 0.016173525, - 0.01777423, - 0.021731172, - 0.01477771, - -0.0026299586, - -0.02390813, - -0.023728853, - -0.035138678, - -0.024599636, - -0.03232144, - 0.003300654, - 0.011640328, - -0.03437034, - 0.021282975, - -0.0013926134, - -0.03498501, - 0.014739293, - 0.01019329, - 0.024048993, - -0.01173637, - 0.0055864607, - 0.0054904185, - -0.011089685, - -0.013369089, - -0.0007779427, - -0.016634528, - -0.004213056, - 0.033909336, - 0.010225304, - -0.0035183497, - 0.017556533, - 0.0056088706, - 0.00025171088, - 0.025905812, - -0.017748618, - -0.01809437, - 0.007561731, - 0.015558854, - -0.021769589, - 0.019938383, - -0.014111816, - 0.013766064, - -0.02476611, - -0.029299306, - -0.004962186, - -0.00021209342, - -0.018632207, - 0.003278244, - -0.03818642, - 0.004174639, - 0.0063676047, - -0.0073248264, - -0.00753612, - -0.0048661437, - -0.017697396, - -0.01868343, - -0.0062555554, - 0.005384772, - -0.012005288, - 0.022691596, - 0.0018328073, - 0.00247469, - -0.031681154, - -0.0027868275, - 0.0046004266, - 0.027429683, - -0.0016519277, - -0.0062203403, - -0.01078235, - 0.018017536, - 0.029811531, - -0.0057721427, - -0.0054616057, - -0.0013830093, - -0.0054616057, - 0.0057721427, - 0.017697396, - -0.012626362, - -0.008957546, - 0.013868509, - -0.018901126, - 0.005141465, - -0.015750939, - -0.019080404, - -0.0060218526, - -0.014444763, - -0.014239873, - -0.001137301, - 0.01153148, - 0.0027884282, - 0.0067613786, - -0.025009416, - 0.031271376, - 0.011313784, - -0.021859229, - 0.015392381, - -0.005087041, - 0.009917969, - 0.0026683754, - 0.015238713, - 0.005938616, - -0.019733492, - 0.03452401, - -0.010007609, - -0.028095577, - -0.015456408, - 0.0063740076, - -0.008906323, - -0.0004774103, - 0.00006838012, - 0.0028156403, - -0.013228227, - 0.026302787, - -0.001500661, - -0.0015534844, - -0.00399536, - -0.023447128, - -0.015353964, - 0.0026555697, - -0.020156078, - -0.0025195098, - 0.014880154, - -0.0018392102, - 0.008759058, - -0.04015849, - -0.006031457, - -0.0313226, - 0.010391777, - -0.009700273, - -0.012120539, - -0.027224792, - 0.0010764742, - -0.008502945, - -0.004238667, - -0.009271284, - 0.00131658, - -0.005861782, - 0.012293415, - -0.0072607985, - 0.0144575685, - 0.0026043472, - -0.0008939938, - -0.012229387, - -0.001403018, - -0.015264324, - 0.004113812, - 0.0045460025, - -0.017159559, - 0.014163039, - -0.03137382, - -0.030349368, - 0.0071839644, - -0.010231707, - -0.001139702, - 0.011300978, - 0.014495986, - 0.032884885, - -0.0029789123, - -0.0016583304, - 0.022409871, - -0.001666334, - -0.0008419709, - -0.038647424, - -0.018465735, - 0.0032814455, - -0.017748618, - 0.004097805, - -0.003550364, - -0.009937177, - -0.022499511, - 0.008272444, - 0.003441516, - 0.007568134, - -0.008118777, - 0.0069726715, - 0.011755578, - -0.0013037743, - 0.023126988, - 0.03232144, - 0.01368923, - 0.0056440863, - -0.01098724, - -0.010417389, - 0.010731127, - 0.03675219, - -0.00078154425, - -0.00071791623, - -0.003371085, - -0.011832412, - 0.00989876, - -0.010686307, - 0.01418865, - 0.0054359944, - 0.011108894, - 0.005141465, - -0.009053588, - -0.0050070058, - 0.017300421, - 0.0014798519, - -0.007235187, - -0.018734653, - 0.01377887, - -0.014444763, - -0.008522154, - 0.0091112135, - -0.024369135, - -0.0065756966, - -0.021897646, - 0.009175242, - -0.042028114, - -0.011256158, - -0.023626408, - -0.004661253, - -0.03380689, - 0.024625247, - 0.017197976, - -0.016954668, - -0.0061242976, - -0.02397216, - -0.0038993177, - -0.0020777152, - -0.013791676, - -0.02326785, - -0.038673036, - -0.032628775, - -0.005781747, - 0.010558251, - -0.017082725, - -0.006105089, - -0.004056187, - 0.008598988, - 0.024394745, - 0.23070642, - 0.010916809, - -0.005282327, - 0.032603163, - 0.0033774879, - 0.049634665, - 0.022960514, - -0.008554168, - 0.013177005, - 0.020873195, - 0.0037744627, - 0.0025499233, - 0.009290492, - 0.0043187025, - 0.006181923, - -0.004213056, - -0.028069966, - -0.00090519874, - -0.015789356, - 0.009962789, - 0.014598431, - -0.017748618, - 0.01123695, - 0.003864102, - 0.03475451, - -0.0019080405, - -0.01818401, - -0.0018135989, - 0.023101376, - 0.0055288356, - -0.006181923, - -0.011467451, - 0.003387092, - -0.0091112135, - -0.006998283, - -0.00547121, - -0.01927249, - 0.008214818, - 0.020924417, - 0.026046673, - 0.012133345, - 0.012959309, - -0.032116547, - -0.021756783, - -0.0041234163, - 0.023511156, - -0.009431355, - -0.0061627147, - 0.019170044, - 0.0065885023, - -0.017812647, - -0.0019720688, - 0.02376727, - 0.023434322, - 0.0011132904, - 0.023229433, - 0.022000091, - -0.011665938, - 0.029529808, - -0.0148673495, - -0.014060594, - 0.023434322, - -0.018619401, - 0.003219018, - 0.007638565, - -0.0071583535, - -0.01979752, - 0.009501786, - 0.013445923, - -0.010596667, - 0.017761424, - 0.010974434, - 0.01959263, - 0.0055992664, - -0.006281167, - -0.0032398272, - 0.024830138, - 0.008214818, - 0.026943069, - -0.017889481, - -0.0037168374, - -0.014380734, - -0.01439354, - 0.022896485, - -0.018721847, - -0.022781234, - 0.007670579, - 0.00199768, - 0.035702128, - -0.008663016, - -0.009213659, - -0.009546605, - 0.009783509, - -0.010007609, - 0.006194729, - 0.02476611, - -0.0135099515, - 0.022115342, - -0.023639213, - 0.0032238201, - -0.036521688, - -0.01698028, - 0.017915092, - -0.010801558, - -0.013663619, - 0.011096088, - 0.004821324, - 0.015558854, - 0.03890354, - -0.008893518, - 0.0134715345, - -0.005103048, - 0.0119924825, - -0.0023194216, - 0.018324872, - -0.0014286293, - 0.0033742865, - -0.012575139, - -0.018440124, - -0.013855703, - -0.00021789598, - -0.022076925, - -0.0144191515, - 0.009629842, - -0.01568691, - -0.0037296428, - -0.0040882006, - 0.02006644, - 0.0004145826, - -0.040312156, - 0.030426202, - -0.0019944785, - 0.030912817, - -0.0023962555, - -0.009296895, - -0.0008867906, - -0.009514591, - -0.0052343057, - 0.011525077, - -0.0101804845, - -0.008624599, - -0.008938338, - 0.012434278, - -0.013727647, - 0.0055832593, - 0.007779427, - 0.005064631, - -0.012863266, - -0.013586785, - -0.017146753, - 0.0010228505, - -0.021462254, - -0.0005478413, - 0.003479933, - 0.016109496, - -0.0131001705, - -0.026405232, - -0.0076449676, - -0.016378414, - 0.019502992, - -0.006812601, - 0.0258802, - -0.006466849, - -0.014214261, - -0.008899921, - 0.0013718043, - -0.16421954, - 0.024061799, - 0.0041330205, - -0.00399536, - -0.01380448, - -0.0011453045, - 0.025777755, - 0.018196816, - -0.001012446, - 0.028326077, - 0.015161878, - -0.008675822, - -0.052067734, - -0.024113022, - 0.008867906, - 0.01895235, - -0.0042290627, - -0.015225907, - 0.026405232, - 0.00994358, - -0.0029629052, - -0.029196862, - 0.012184568, - -0.0026187536, - 0.004645246, - 0.00016997487, - -0.009188048, - 0.030221313, - -0.0018376095, - -0.007132742, - -0.004651649, - -0.0052855285, - 0.0027884282, - 0.036316797, - 0.007305618, - 0.0050198114, - 0.00006597906, - 0.005112652, - 0.0010940819, - 0.003940936, - -0.00808036, - 0.024894167, - -0.0061082905, - 0.009617036, - -0.020015217, - 0.022934902, - 0.035061844, - 0.021103697, - -0.0015814967, - -0.0073248264, - 0.008650211, - -0.031578712, - -0.023818493, - -0.008669419, - 0.017876675, - 0.005275924, - 0.018555373, - 0.009809121, - -0.003924929, - 0.02265318, - 0.0036656146, - -0.026712567, - -0.00096122344, - 0.0026251564, - -0.0011220942, - -0.012792835, - 0.0030685517, - 0.00824043, - -0.031937268, - 0.014764904, - -0.013055351, - -0.006601308, - 0.023229433, - -0.017326033, - 0.012453486, - 0.00994358, - -0.01457282, - 0.012011691, - -0.005282327, - -0.010871989, - 0.013343478, - 0.026187535, - 0.0016103094, - -0.014470374, - -0.016762584, - 0.014931377, - -0.013625202, - 0.0056953086, - -0.006281167, - -0.028326077, - 0.008131582, - -0.03992799, - 0.0040209712, - -0.038698647, - 0.016083885, - 0.0133947, - -0.010455806, - -0.01114731, - -0.0012029299, - -0.02106528, - 0.011569897, - -0.010884794, - -0.012094928, - 0.018107176, - 0.024074605, - 0.024663664, - -0.00044579638, - 0.010391777, - 0.027122347, - 0.008169999, - -0.014700876, - 0.03152749, - 0.014227067, - 0.033269055, - 0.01457282, - -0.00027712208, - 0.008310861, - -0.03475451, - -0.0026843825, - 0.0067165587, - 0.036880247, - 0.012120539, - -0.009783509, - 0.009226465, - -0.003082958, - -0.02467647, - -0.09542763, - -0.022909291, - 0.012453486, - 0.014764904, - -0.0013670021, - 0.0152002955, - 0.010161276, - 0.03736686, - 0.00013615997, - 0.029350528, - -0.008368487, - -0.017313227, - -0.014969794, - 0.0028668628, - 0.008509348, - -0.013177005, - 0.007958706, - -0.025483225, - -0.024932582, - 0.0052951323, - -0.0040689926, - -0.012472694, - 0.0021881638, - -0.004261077, - -0.016288776, - -0.020322552, - -0.039287705, - 0.019951189, - 0.0049365745, - -0.004683663, - 0.015174684, - -0.007235187, - 0.004955783, - -0.010795156, - -0.017249199, - 0.013817286, - -0.01489296, - -0.00031834023, - 0.006117895, - -0.031450655, - 0.010250916, - 0.012037302, - 0.006508467, - -0.028607802, - -0.0134715345, - 0.004049784, - -0.0136764245, - -0.011979677, - -0.009367326, - -0.019400546, - 0.010833573, - 0.03695708, - -0.0033902933, - -0.0112497555, - 0.037494916, - -0.020360969, - 0.021218946, - 0.020604277, - -0.009520994, - 0.004821324, - 0.011038463, - 0.012408666, - 0.008483737, - 0.025521642, - -0.0053783692, - -0.015417991, - -0.027301626, - 0.0035375583, - 0.012203775, - -0.04192567, - -0.0006326787, - 0.020860389, - -0.018721847, - 0.0132666435, - -0.0096042305, - -0.001121294, - -0.020719526, - -0.011563494, - 0.0095658135, - -0.00031753987, - -0.026008256, - -0.020629887, - -0.0062619583, - -0.023639213, - 0.007030297, - 0.022192176, - -0.013305061, - -0.0044051404, - 0.028582191, - -0.014508791, - 0.0006098687, - 0.043078177, - 0.013727647, - -0.012242192, - -0.007523314, - 0.011890038, - 0.01223579, - 0.018235233, - 0.009027977, - -0.019336518, - -0.021667145, - -0.0026667747, - -0.049301717, - 0.01014847, - -0.0023642415, - -0.023255045, - -0.0032398272, - 0.009841135, - -0.015802162, - -0.004043381, - -0.0052631185, - -0.0053655636, - -0.0020120863, - -0.002356238, - -0.0050038043, - 0.0006578898, - -0.01398376, - 0.0026971882, - 0.017979119, - -0.005064631, - 0.027276015, - 0.00056785013, - -0.0019032384, - 0.014598431, - 0.011140907, - 0.00077994354, - -0.01639122, - 0.017454088, - -0.030938428, - -0.015213101, - -0.016621722, - -0.014508791, - -0.006466849, - -0.018209621, - 0.015021017, - 0.039313316, - -0.019246878, - -0.019054793, - -0.0061371033, - 0.030221313, - 0.008778267, - -0.020168884, - -0.013702036, - -0.043539178, - 0.016672945, - -0.013317866, - -0.016314387, - 0.018785875, - -0.0016311185, - -0.012696793, - 0.0059098033, - -0.0013686029, - 0.021039668, - 0.027147958, - -0.0002479092, - -0.009143228, - 0.00036055883, - -0.017121142, - 0.03014448, - 0.008867906, - 0.011134504, - -0.03196288, - 0.01659611, - -0.012472694, - -0.00033014544, - 0.011870829, - 0.008470931, - 0.008477334, - -0.017069919, - -0.014662459, - 0.007580939, - 0.0075553283, - -0.00824043, - -0.00919445, - 0.040260933, - 0.008598988, - 0.023293462, - 0.010955226, - -0.011947663, - 0.0038032753, - -0.0014670462, - 0.008125179, - 0.0132666435, - -0.0077538155, - -0.019784715, - 0.026866235, - 0.020424997, - 0.031937268, - -0.038237642, - -0.0009452164, - 0.0053591607, - -0.004962186, - -0.03137382, - -0.004485176, - -0.007728204, - -0.0029484988, - -0.0041842433, - 0.0041938475, - -0.0036079893, - 0.0020809167, - 0.015968634, - 0.035446014, - 0.013766064, - -0.0061691175, - -0.007869067, - -0.02658451, - -0.008848698, - 0.0076833847, - -0.0077922326, - -0.003636802, - -0.0121973725, - 0.007625759, - 0.007087922, - -0.021539088, - -0.00081916084, - 0.022000091, - -0.0016855425, - -0.005688906, - -0.033320278, - -0.028812692, - -0.018837098, - 0.0065436824, - 0.0014254279, - 0.0117043555, - -0.011653134, - -0.0103469575, - 0.022204982, - 0.027122347, - 0.040056046, - -0.03152749, - -0.0037744627, - 0.018657818, - 0.011512271, - -0.003300654, - 0.008477334, - -0.01938774, - -0.024369135, - -0.007523314, - -0.018990766, - 0.026110701, - 0.016199136, - 0.05409103, - -0.004430752, - -0.035778962, - 0.017108336, - 0.0012277408, - 0.007843455, - 0.01377887, - 0.0011893238, - -0.014406346, - -0.013727647, - 0.0025099057, - 0.0010092446, - 0.021167723, - 0.0034159047, - -0.016877836, - -0.002252192, - -0.019157238, - 0.019963995, - -0.031015262, - -0.013010531, - 0.022320231, - 0.0052311043, - 0.012325429, - 0.003457523, - -0.016224748, - -0.0071647563, - -0.0068318094, - 0.0124022635, - -0.005026214, - -0.020860389, - 0.017300421, - -0.022409871, - -0.02326785, - -0.00021449449, - 0.014636847, - -0.018657818, - -0.015674105, - -0.025483225, - -0.006226743, - 0.014560014, - -0.0005030216, - 0.020847583, - -0.015840577, - -0.027404072, - -0.011563494, - -0.0100588305, - -0.019912772, - 0.006002644, - -0.023805687 + 0.013982197, + -0.018476475, + -0.005729884, + -0.023803027, + 0.0031706425, + 0.009507126, + -0.044174526, + -0.0043758387, + 0.01791309, + -0.02065319, + 0.010851568, + 0.010934795, + -0.016222933, + 0.019359965, + -0.024520062, + -0.0053873714, + 0.03178005, + -0.0010819557, + 0.010729928, + -0.022381758, + -0.045480553, + 0.0045486954, + -0.020665996, + 0.017695418, + -0.016619865, + 0.0010731529, + 0.015685158, + -0.015185793, + 0.026453499, + 0.010755536, + 0.02481456, + -0.012765798, + 0.017285684, + -0.037337076, + -0.040947862, + 0.017093621, + -0.0021639115, + 0.010064109, + -0.0013468429, + -0.020627582, + 0.008495593, + 0.0055666305, + -0.003665205, + -0.0038092525, + -0.007996229, + 0.013559658, + 0.013918176, + 0.010256172, + -0.008854112, + 0.010320193, + -0.0048271874, + 0.030858146, + -0.0041229557, + -0.0043150187, + 0.01831002, + -0.025621224, + -0.00086028286, + 0.01782346, + -0.020947687, + -0.016709493, + 0.012714581, + -0.0020694805, + 0.005134488, + -0.0097312, + -0.0075928965, + 0.010204955, + -0.0059027406, + -0.004638325, + -0.0038860778, + 0.0057522915, + 0.02932164, + 0.029372858, + 0.00069662905, + 0.0151473805, + 0.0032106556, + 0.013726113, + -0.0042541986, + -0.0020390705, + -0.0048303884, + -0.017503355, + 0.0042894105, + -0.012977066, + -0.026171805, + -0.0008050647, + 0.027196143, + 0.011869502, + -0.002901754, + 0.0011355734, + -0.031088622, + -0.012035958, + -0.005256128, + 0.029424075, + 0.032471478, + -0.0012075971, + -0.013598071, + 0.016427802, + 0.022368954, + 0.020000177, + 0.005729884, + -0.029065557, + 0.0048976103, + 0.014545582, + -0.03836141, + 0.0026472704, + -0.036824908, + -0.015531506, + 0.015557115, + -0.012573734, + 0.027477834, + -0.03211296, + -0.020269064, + 0.0089885555, + 0.011082044, + -0.020461127, + -0.0070487177, + -0.020025784, + 0.017157642, + -0.0084315725, + -0.017861873, + -0.015697962, + 0.014558387, + 0.037337076, + 0.016824732, + -0.023226837, + 0.027247358, + 0.0114149535, + -0.01256093, + -0.013329183, + 0.0060243807, + -0.0002958973, + 0.011037229, + 0.007829774, + 0.01009612, + 0.017554572, + -0.0070295115, + 0.010179347, + -0.009058978, + 0.03157518, + 0.007855383, + -0.029961852, + 0.01523701, + 0.02834852, + -0.0064757294, + -0.0077337427, + -0.004628722, + 0.030550845, + 0.02025626, + -0.016466213, + 0.0021383031, + 0.00906538, + 0.0049616313, + -0.024507258, + 0.019897742, + 0.013546854, + 0.022983557, + 0.0033098883, + -0.011645429, + -0.0093662795, + -0.020115415, + -0.016094891, + -0.0067926333, + 0.0061332164, + 0.028655821, + 0.002460009, + 0.030730104, + 0.019718483, + 0.009711993, + 0.019001449, + 0.0012700176, + 0.0035115546, + -0.001566115, + 0.035877395, + -0.010569875, + 0.014929709, + 0.0047215526, + 0.010544267, + 0.012048761, + 0.003950099, + -0.014251086, + 0.0031978514, + -0.019001449, + -0.0023671784, + 0.013406008, + 0.005432186, + 0.0010955603, + -0.009756808, + 0.010441833, + -0.020858059, + 0.012208814, + -0.013149924, + 0.014609603, + 0.018348433, + 0.0051024775, + -0.01654304, + -0.6912225, + -0.040282045, + 0.0114789745, + -0.0017381716, + 0.0023895856, + 0.03779803, + 0.005845122, + 0.012580137, + 0.0074264416, + -0.026069371, + 0.0063572903, + 0.008860514, + 0.013092305, + -0.0029545715, + 0.007080728, + -0.030192327, + -0.0099872835, + 0.015749179, + -0.0035819777, + 0.014327911, + -0.009071783, + -0.004180575, + -0.028655821, + -0.0047919755, + 0.020153826, + 0.018258803, + 0.010998816, + -0.0097376015, + -0.0056914715, + 0.020691603, + -0.0045358916, + -0.0046095154, + -0.017951502, + -0.020128218, + 0.038335804, + 0.0019030257, + -0.015172989, + 0.008194694, + -0.008041044, + 0.025185881, + -0.0027897172, + 0.015774786, + -0.0015805197, + -0.014686429, + -0.010627494, + -0.005720281, + 0.0057010744, + -0.0014436747, + 0.033214122, + -0.00071423483, + 0.020819645, + 0.003068209, + 0.023700593, + -0.005480202, + 0.0148400795, + -0.0010651503, + 0.030192327, + 0.0151473805, + 0.0063092746, + -0.007195966, + -0.019564833, + 0.012733787, + -0.029577725, + -0.009654375, + -0.012516115, + 0.00413576, + -0.032164175, + -0.017631397, + -0.0015269021, + -0.0019542426, + 0.006078799, + 0.007458452, + -0.011178075, + 0.029859418, + 0.01651743, + 0.0022791494, + 0.026120588, + -0.01788748, + 0.021395834, + 0.012554528, + 0.0018069941, + 0.003918088, + -0.017324096, + -0.009142206, + 0.027759528, + -0.021254988, + -0.029526507, + -0.02131901, + 0.019475203, + -0.011395747, + 0.033956766, + 0.019641658, + 0.00074744574, + -0.0029673756, + -0.006274063, + 0.014635212, + -0.014443149, + 0.0005897939, + 0.0031306294, + -0.0058003073, + 0.014468757, + -0.035288405, + -0.0016821531, + -0.0015725171, + 0.039846703, + 0.0045230873, + -0.026146198, + 0.033470206, + 0.019808114, + -0.017503355, + 0.019180706, + -0.011747863, + -0.0246353, + 0.0062484546, + 0.0101729445, + -0.024750538, + 0.046223197, + 0.009084587, + 0.011594213, + -0.003205854, + 0.009379084, + 0.0065525547, + -0.00052177155, + -0.014622408, + 0.0006009976, + -0.004820785, + 0.00044174524, + -0.016107697, + -0.027913177, + -0.0037356282, + 0.015531506, + -0.009475116, + 0.009968078, + 0.0053809695, + 0.0030345977, + -0.003841263, + 0.005976365, + -0.017938698, + 0.02578768, + -0.029961852, + -0.025736462, + -0.01073633, + -0.013879764, + -0.013585267, + -0.00032290618, + -0.009103794, + -0.03093497, + -0.0077721556, + -0.019231923, + 0.021447051, + -0.033700682, + -0.021639114, + -0.017144836, + 0.0021879193, + -0.006405306, + -0.0040877443, + -0.022817103, + 0.003543565, + -0.0017749836, + 0.02530112, + 0.008457181, + 0.003469941, + -0.01548029, + -0.00013364395, + -0.00906538, + -0.040077176, + -0.009411095, + 0.037337076, + -0.014481561, + -0.022343347, + -0.006213243, + -0.002821728, + 0.0007470456, + -0.023700593, + -0.024891384, + -0.011773471, + -0.025749266, + -0.023303661, + 0.00018245999, + -0.016248543, + 0.014929709, + 0.010268976, + 0.005598641, + -0.01921912, + 0.035288405, + -0.0067862314, + 0.019795308, + 0.03567253, + -0.0020822845, + 0.01937277, + -0.008405964, + -0.0072791935, + -0.007925806, + -0.011382943, + 0.016094891, + -0.0023031572, + -0.0036524008, + 0.006181232, + 0.0006033984, + -0.00037952478, + 0.013559658, + -0.0044174525, + 0.019078273, + -0.02040991, + 0.01970568, + -0.013265162, + 0.01256093, + -0.002040671, + 0.015505899, + 0.03613348, + 0.002983381, + -0.02259943, + 0.0027513045, + 0.0018566104, + 0.017785048, + -0.00103394, + -0.012330454, + 0.0147120375, + -0.010864372, + -0.014699233, + -0.005419382, + 0.0085532125, + 0.043841615, + -0.012746591, + -0.014558387, + -0.013341987, + 0.03925771, + 0.011357334, + 0.0023879851, + -0.008137075, + -0.028758256, + -0.0025624426, + -0.01243929, + 0.00018986243, + -0.016824732, + -0.0049168165, + 0.00927665, + -0.03129349, + 0.014430345, + 0.011440562, + 0.010640299, + 0.0422795, + 0.032036133, + -0.017925894, + 0.022548214, + -0.020448323, + 0.026299847, + 0.015621136, + -0.0206788, + 0.01426389, + -0.018911818, + -0.010185749, + -0.017644202, + 0.015672352, + 0.022676256, + 0.0028569393, + 0.039488185, + 0.003354703, + 0.0270681, + 0.01749055, + -0.016389389, + -0.011101251, + 0.01475045, + -0.017349705, + 0.003841263, + -0.0040557333, + -0.008700461, + 0.021639114, + -0.007311204, + -0.013393204, + -0.004823986, + 0.00094911206, + 0.016978383, + -0.003908485, + 0.0018149968, + -0.022215305, + -0.011626223, + 0.0031338304, + 0.022164088, + 0.010845166, + 0.00095231313, + -0.021088533, + 0.009199825, + 0.012087175, + 0.0089885555, + -0.021178164, + -0.025646832, + 0.021459855, + -0.0062452536, + 0.011216488, + 0.023162816, + 0.023777418, + 0.01402061, + 0.003482745, + -0.0008050647, + -0.02536514, + 0.0047759702, + -0.010134532, + 0.0033995179, + -0.002375181, + -0.00939829, + -0.015685158, + -0.026555931, + 0.0016949573, + 0.0011403749, + 0.027733918, + -0.009468714, + 0.006837448, + -0.02609498, + -0.011421355, + 0.008745275, + -0.0058131116, + 0.0014132647, + 0.0032490683, + -0.019027056, + -0.0012388073, + -0.029065557, + -0.010550669, + 0.024788952, + 0.022061653, + 0.016875949, + -0.01928314, + -0.01158781, + -0.0032490683, + 0.0684257, + 0.0055826358, + -0.009161413, + 0.010717124, + 0.010192151, + -0.016005263, + -0.016261347, + 0.0043182196, + -0.00802824, + -0.0028265293, + 0.0020038588, + 0.0015381058, + 0.007375225, + 0.0064149094, + -0.00031870478, + -0.014724841, + 0.008706863, + 0.00018716154, + 0.030345978, + -0.02162631, + -0.0047855736, + 0.010134532, + -0.009455909, + -0.0024664109, + -0.0061204126, + 0.0077145365, + 0.022189695, + 0.016402192, + 0.015493094, + -0.022176892, + 0.008642842, + 0.020537952, + 0.00650774, + -0.0121639995, + -0.009558342, + -0.01289384, + -0.0032202587, + 0.0047951764, + 0.00696549, + -0.02122938, + 0.015992459, + 0.0040877443, + 0.0065173428, + -0.021050122, + -0.0066197766, + 0.007291998, + -0.011549397, + 0.013457225, + -0.020064197, + 0.0030586056, + 0.022727473, + -0.010192151, + -0.01265056, + -0.007074326, + 0.011703048, + 0.0149041, + -0.012624951, + -0.008758079, + -0.008444376, + -0.018476475, + 0.004571103, + -0.017311292, + -0.008258715, + -0.0031050208, + -0.0093662795, + -0.013482833, + -0.004468669, + 0.004145363, + -0.011363736, + 0.0134700285, + 0.0013700505, + -0.01766981, + -0.013802938, + -0.0013628481, + 0.030909363, + 0.02627424, + 0.006779829, + -0.022868318, + 0.010499452, + 0.046760976, + -0.0020294674, + -0.0076377112, + -0.0142126735, + -0.0020134621, + 0.005483403, + 0.0008874918, + 0.033290945, + -0.013598071, + 0.003409121, + 0.002317562, + 0.031370316, + 0.0057522915, + 0.0072279763, + -0.0017877878, + -0.007381627, + -0.012087175, + 0.022164088, + 0.004820785, + -0.014302302, + -0.01548029, + 0.0033258935, + -0.023495726, + -0.0058131116, + 0.0009211029, + 0.007624907, + 0.01256093, + 0.025006622, + 0.0056914715, + -0.021254988, + 0.014635212, + 0.026812015, + -0.004551897, + 0.0024584082, + -0.008457181, + 0.0029177594, + 0.010550669, + -0.0016565446, + 0.013457225, + 0.0022599432, + -0.029654551, + 0.005044859, + -0.04437939, + 0.02366218, + 0.0010467442, + -0.0033418988, + -0.001234806, + 0.01161982, + -0.021088533, + -0.0038092525, + -0.00027769132, + -0.013943785, + 0.019628854, + -0.028630214, + -0.02658154, + -0.031703223, + -0.018937428, + 0.009948871, + 0.0069270777, + -0.0023975882, + -0.015006534, + -0.025083447, + 0.017785048, + 0.018258803, + -0.00016935568, + -0.031037405, + -0.022240913, + -0.0065813637, + 0.009539137, + 0.0028297305, + 0.012554528, + -0.0041709715, + 0.013572463, + -0.012945056, + 0.02186959, + 0.0034635388, + -0.012381671, + -0.026043763, + -0.017695418, + 0.018975839, + 0.010576277, + 0.033751898, + -0.006017979, + 0.0011875905, + 0.008886122, + -0.006779829, + -0.008169086, + -0.007925806, + -0.0134700285, + -0.019411182, + 0.013495637, + 0.014724841, + 0.0051568956, + 0.017208857, + -0.011818286, + 0.009654375, + 0.0051985094, + -0.0055346196, + -0.0143407155, + -0.028425347, + -0.022855515, + 0.0014692831, + 0.0015725171, + -0.019846525, + -0.012817014, + 0.010000088, + -0.0077145365, + 0.023623768, + 0.012938654, + 0.0025352335, + -0.0076953303, + 0.028220478, + 0.0068694586, + 0.03014111, + -0.009379084, + 0.0013644486, + 0.00019456397, + -0.025698049, + -0.0009363079, + 0.009097391, + 0.0130346855, + 0.013508442, + 0.0062068407, + 0.0019030257, + -0.020781232, + 0.016235739, + 0.017785048, + 0.021754352, + 0.0147760585, + -0.0026392678, + -0.023879852, + -0.023777418, + -0.03516036, + -0.024584083, + -0.032317825, + 0.003297084, + 0.011639027, + -0.0343665, + 0.021293402, + -0.0013892568, + -0.034929886, + 0.014814471, + 0.010140934, + 0.024007894, + -0.011735058, + 0.005621048, + 0.005496207, + -0.011062837, + -0.013329183, + -0.0008022638, + -0.016645472, + -0.004206183, + 0.033956766, + 0.01021776, + -0.003540364, + 0.017592985, + 0.005685069, + 0.00022887526, + 0.025915721, + -0.017708223, + -0.018079545, + 0.0075352774, + 0.015493094, + -0.021754352, + 0.019987373, + -0.014135848, + 0.013713309, + -0.024763342, + -0.029270424, + -0.004990441, + -0.00024067913, + -0.018604517, + 0.003260272, + -0.038207762, + 0.0041293576, + 0.006363692, + -0.007311204, + -0.0075288755, + -0.0048431926, + -0.01766981, + -0.018706951, + -0.006280465, + 0.0054065776, + -0.012016751, + 0.022663452, + 0.0018117958, + 0.0024744135, + -0.031728834, + -0.0028761458, + 0.004574304, + 0.027426617, + -0.0016309363, + -0.006219645, + -0.010749134, + 0.018002719, + 0.0298082, + -0.0058003073, + -0.0054513924, + -0.001447676, + -0.0054673976, + 0.0058195135, + 0.017746635, + -0.012644158, + -0.008930936, + 0.0139053725, + -0.018899014, + 0.005185705, + -0.015697962, + -0.019091077, + -0.006040386, + -0.01450717, + -0.014251086, + -0.0012083973, + 0.011536594, + 0.0027865162, + 0.0067350143, + -0.02503223, + 0.031242272, + 0.011318922, + -0.021843983, + 0.015377856, + -0.0051024775, + 0.009961676, + 0.0026728788, + 0.015224205, + 0.0059443545, + -0.019718483, + 0.03449454, + -0.009980882, + -0.028066829, + -0.015493094, + 0.006411708, + -0.008930936, + -0.0005221717, + 0.0000951813, + 0.002773712, + -0.013239553, + 0.02624863, + -0.0014812871, + -0.0015861215, + -0.0040013157, + -0.0234189, + -0.015313835, + 0.0026312652, + -0.02019224, + -0.0025112256, + 0.014878492, + -0.0018838194, + 0.008783688, + -0.040128395, + -0.0059443545, + -0.03129349, + 0.01037141, + -0.009660777, + -0.012176803, + -0.027247358, + 0.0011203684, + -0.008527604, + -0.004218987, + -0.009270248, + 0.0013148324, + -0.0058835344, + 0.012304846, + -0.007291998, + 0.014443149, + 0.0025832495, + -0.0008882921, + -0.012266433, + -0.0014036616, + -0.015249814, + 0.0041901777, + 0.0045839073, + -0.017132033, + 0.014161456, + -0.031395923, + -0.030345978, + 0.007266389, + -0.010198553, + -0.0011355734, + 0.011325324, + 0.014545582, + 0.03288121, + -0.0029545715, + -0.0016469415, + 0.022420172, + -0.0016901557, + -0.00083867577, + -0.038668714, + -0.018489279, + 0.0032426661, + -0.017785048, + 0.0041293576, + -0.0034763431, + -0.009942469, + -0.022522606, + 0.008277922, + 0.0034219252, + 0.007516071, + -0.0081818905, + 0.0069718924, + 0.011703048, + -0.001241208, + 0.023098795, + 0.032343436, + 0.013700505, + 0.005662662, + -0.010992414, + -0.010441833, + 0.010742732, + 0.036824908, + -0.0007582493, + -0.00068542536, + -0.0034219252, + -0.011805481, + 0.00988485, + -0.010723526, + 0.014238281, + 0.0054481914, + 0.011094848, + 0.005185705, + -0.0090525765, + -0.0049616313, + 0.017388117, + 0.0014820873, + -0.007202368, + -0.018758168, + 0.013764526, + -0.014443149, + -0.008476387, + 0.009142206, + -0.024366412, + -0.0065429513, + -0.021908004, + 0.00915501, + -0.042049024, + -0.0112292925, + -0.023610963, + -0.004641526, + -0.033828724, + 0.024609692, + 0.01718325, + -0.0170296, + -0.006178031, + -0.023982285, + -0.003902083, + -0.0021078931, + -0.013828547, + -0.02326525, + -0.038694322, + -0.03259952, + -0.0058419206, + 0.010544267, + -0.017119229, + -0.0060819997, + -0.0040589347, + 0.008521202, + 0.024379216, + 0.23068064, + 0.010909187, + -0.0053201495, + 0.03257391, + 0.0033611052, + 0.04962912, + 0.022970753, + -0.008540408, + 0.013201141, + 0.020909276, + 0.0037964482, + 0.0025256304, + 0.009379084, + 0.0043150187, + 0.0061428198, + -0.0041773734, + -0.028092436, + -0.0008682855, + -0.015800396, + 0.010019294, + 0.014635212, + -0.017797852, + 0.011280509, + 0.00383166, + 0.034725018, + -0.001922232, + -0.018169174, + -0.0018197984, + 0.023073187, + 0.0054705986, + -0.0062356503, + -0.011472573, + 0.0033354966, + -0.009097391, + -0.0070359134, + -0.005502609, + -0.01928314, + 0.008201096, + 0.020934884, + 0.026069371, + 0.012138391, + 0.012932252, + -0.032138567, + -0.021818373, + -0.0041261567, + 0.02348292, + -0.009404692, + -0.0061908355, + 0.019193511, + 0.0066261785, + -0.017759439, + -0.001922232, + 0.023777418, + 0.02350853, + 0.0011091647, + 0.023226837, + 0.022061653, + -0.011690244, + 0.029526507, + -0.014891297, + -0.014071827, + 0.023457313, + -0.018668538, + 0.0031882483, + 0.0077081346, + -0.0071575535, + -0.019808114, + 0.009475116, + 0.013457225, + -0.010569875, + 0.017746635, + 0.010992414, + 0.019628854, + 0.0056402544, + -0.006286867, + -0.003236264, + 0.024840167, + 0.008162684, + 0.026940057, + -0.017900286, + -0.0037420304, + -0.014404736, + -0.014404736, + 0.022868318, + -0.018719755, + -0.022804298, + 0.0076313093, + 0.0020566762, + 0.03569814, + -0.008674853, + -0.009263846, + -0.009583951, + 0.00976321, + -0.010032099, + 0.006238851, + 0.024776146, + -0.0134700285, + 0.022151284, + -0.02368779, + 0.0031738435, + -0.036517605, + -0.01700399, + 0.017900286, + -0.010787547, + -0.013649288, + 0.011114054, + 0.00480478, + 0.015531506, + 0.038873583, + -0.008828503, + 0.013457225, + -0.005112081, + 0.012003947, + -0.0023223637, + 0.01833563, + -0.00136845, + 0.0033835126, + -0.012618549, + -0.018450867, + -0.0139053725, + -0.00018806184, + -0.022036046, + -0.01441754, + 0.009628766, + -0.015710765, + -0.0037388294, + -0.0040877443, + 0.020077001, + 0.00031870478, + -0.040282045, + 0.03047402, + -0.0020022583, + 0.030909363, + -0.0023719799, + -0.009289455, + -0.00086748524, + -0.009526332, + -0.005243324, + 0.011504583, + -0.01012813, + -0.008636439, + -0.008918133, + 0.012445692, + -0.013738917, + 0.0056466567, + 0.0077977637, + 0.005105679, + -0.012887438, + -0.013585267, + -0.017119229, + 0.0010091318, + -0.02147266, + -0.00059219473, + 0.003473142, + 0.016146109, + -0.013111511, + -0.026376672, + -0.007618505, + -0.016389389, + 0.019539224, + -0.006824644, + 0.025864504, + -0.006472528, + -0.014225477, + -0.008905328, + 0.0014468757, + -0.16409875, + 0.024071915, + 0.004164569, + -0.004033326, + -0.013828547, + -0.0011675839, + 0.02578768, + 0.018233195, + -0.0010171344, + 0.028322913, + 0.015160184, + -0.008649244, + -0.0520107, + -0.024123132, + 0.008924535, + 0.019001449, + -0.0042285905, + -0.015224205, + 0.026402282, + 0.009961676, + -0.0029785794, + -0.029142382, + 0.012215217, + -0.0026408683, + 0.00465433, + 0.00016485421, + -0.00918702, + 0.030243544, + -0.0017877878, + -0.007080728, + -0.00465433, + -0.0052721333, + 0.0028057224, + 0.036287133, + 0.0072855954, + 0.005067266, + 0.00013964591, + 0.005172901, + 0.0010923592, + 0.003972506, + -0.008137075, + 0.024929797, + -0.006152423, + 0.009628766, + -0.019987373, + 0.022970753, + 0.03505793, + 0.021101339, + -0.0015829204, + -0.0073048016, + 0.008681254, + -0.03157518, + -0.023828635, + -0.008649244, + 0.01784907, + 0.0052049113, + 0.018566104, + 0.009808025, + -0.003850866, + 0.022586627, + 0.0036299936, + -0.0267608, + -0.0009651173, + 0.0026200614, + -0.0011043631, + -0.012810612, + 0.0030714099, + 0.008258715, + -0.031856876, + 0.014788862, + -0.013041088, + -0.0066005704, + 0.02323964, + -0.017349705, + 0.012477702, + 0.009910459, + -0.014571191, + 0.012035958, + -0.005377768, + -0.010838764, + 0.013329183, + 0.02618461, + 0.0016773515, + -0.014519975, + -0.016799124, + 0.014865688, + -0.013687701, + 0.005672265, + -0.006261259, + -0.028246088, + 0.00814988, + -0.039949134, + 0.0040013157, + -0.03877115, + 0.016094891, + 0.0133804, + -0.010448235, + -0.011158869, + -0.0011883908, + -0.021088533, + 0.011575006, + -0.010883578, + -0.012112782, + 0.01809235, + 0.024097523, + 0.024660908, + -0.00043574328, + 0.010397019, + 0.027042491, + 0.008233107, + -0.014699233, + 0.031523965, + 0.0142126735, + 0.03323973, + 0.014545582, + -0.00028869492, + 0.0083035305, + -0.034801845, + -0.0027080905, + 0.006779829, + 0.036773693, + 0.012170401, + -0.009692787, + 0.009219031, + -0.0030522035, + -0.024673713, + -0.095365755, + -0.022919536, + 0.012432888, + 0.01475045, + -0.0013924579, + 0.0151473805, + 0.010185749, + 0.03743951, + 0.00018466072, + 0.02934725, + -0.008322736, + -0.017349705, + -0.015019339, + 0.002871344, + 0.008476387, + -0.013201141, + 0.007996229, + -0.025454769, + -0.024981014, + 0.0053297523, + -0.004010919, + -0.012420083, + 0.0022039246, + -0.004270204, + -0.01629976, + -0.020269064, + -0.03920649, + 0.019936156, + 0.00498724, + -0.00471515, + 0.0152114015, + -0.0072407806, + 0.0048559965, + -0.010768341, + -0.017196054, + 0.013790134, + -0.014827276, + -0.00037292263, + 0.006101206, + -0.03144714, + 0.010268976, + 0.012003947, + 0.006510941, + -0.028578997, + -0.013508442, + 0.0040269243, + -0.013713309, + -0.011971937, + -0.009353476, + -0.01937277, + 0.010883578, + 0.037004165, + -0.0033835126, + -0.011178075, + 0.037516337, + -0.020333085, + 0.021280598, + 0.0206788, + -0.009455909, + 0.004817584, + 0.011088446, + 0.012368867, + 0.008508397, + 0.02551879, + -0.0053809695, + -0.015390661, + -0.027324185, + 0.003533962, + 0.012176803, + -0.041895375, + -0.0005985968, + 0.02092208, + -0.018745363, + 0.013226749, + -0.009603158, + -0.001101162, + -0.020755624, + -0.011523789, + 0.009558342, + -0.00032050538, + -0.026018154, + -0.020614779, + -0.006277264, + -0.02366218, + 0.0070423153, + 0.022253716, + -0.013341987, + -0.004388643, + 0.028604604, + -0.014494366, + 0.0005645856, + 0.04312458, + 0.013802938, + -0.012260031, + -0.0075352774, + 0.011901514, + 0.0122280205, + 0.018284412, + 0.00903337, + -0.019398378, + -0.021664724, + -0.0026504714, + -0.049321815, + 0.010115326, + -0.002378382, + -0.023252446, + -0.0032698752, + 0.009878448, + -0.01578759, + -0.004033326, + -0.005256128, + -0.00535216, + -0.0019750495, + -0.002357575, + -0.0050224513, + 0.00065141416, + -0.01402061, + 0.0027016883, + 0.018002719, + -0.0050288537, + 0.02722175, + 0.00053697656, + -0.0019126289, + 0.014571191, + 0.011101251, + 0.0007462454, + -0.016350977, + 0.01742653, + -0.03096058, + -0.01523701, + -0.016607061, + -0.014468757, + -0.0065493532, + -0.018194782, + 0.015006534, + 0.039283317, + -0.019257532, + -0.01903986, + -0.006155624, + 0.030243544, + 0.008822101, + -0.020179436, + -0.013687701, + -0.043508705, + 0.016632669, + -0.013303574, + -0.016325368, + 0.0188606, + -0.0016453409, + -0.012727384, + 0.005854725, + -0.0013548455, + 0.021050122, + 0.027119316, + -0.0002262744, + -0.009122999, + 0.00036051855, + -0.017144836, + 0.030089894, + 0.008834905, + 0.011120456, + -0.03190809, + 0.016607061, + -0.012490507, + -0.00034311283, + 0.011939926, + 0.008495593, + 0.008521202, + -0.017068012, + -0.014699233, + 0.0075736903, + 0.007618505, + -0.008265117, + -0.00918702, + 0.040256437, + 0.008591625, + 0.02323964, + 0.0109476, + -0.011991142, + 0.0037964482, + -0.0013764526, + 0.008124271, + 0.013239553, + -0.0077721556, + -0.019731287, + 0.02691445, + 0.020422716, + 0.031984918, + -0.038310196, + -0.0009251042, + 0.005364964, + -0.005006446, + -0.031370316, + -0.004567902, + -0.007701732, + -0.002986582, + -0.00413576, + 0.0041901777, + -0.0036620041, + 0.0020870862, + 0.015979653, + 0.035390835, + 0.013802938, + -0.0062100417, + -0.0079066, + -0.026530324, + -0.0088669155, + 0.0077209384, + -0.007804166, + -0.0036363956, + -0.012234422, + 0.0076313093, + 0.007080728, + -0.021575093, + -0.0007982625, + 0.022010436, + -0.0017189652, + -0.005726683, + -0.033316553, + -0.028809473, + -0.018783776, + 0.0065557556, + 0.0013556457, + 0.011722255, + -0.011658234, + -0.010397019, + 0.022253716, + 0.027016884, + 0.040154003, + -0.031523965, + -0.0037388294, + 0.018719755, + 0.011542995, + -0.0032506688, + 0.008469985, + -0.01937277, + -0.024443237, + -0.0075096693, + -0.019103881, + 0.02609498, + 0.016235739, + 0.054084983, + -0.004427056, + -0.03577496, + 0.017055208, + 0.001292425, + 0.007842579, + 0.013802938, + 0.0011843895, + -0.014481561, + -0.013713309, + 0.002469612, + 0.0009987283, + 0.021203771, + 0.0033451, + -0.016837535, + -0.0022279324, + -0.01912949, + 0.020000177, + -0.031088622, + -0.013028284, + 0.022304934, + 0.0052049113, + 0.012356062, + 0.0034571367, + -0.016184522, + -0.007151151, + -0.006818242, + 0.012388073, + -0.005006446, + -0.020909276, + 0.017260075, + -0.022420172, + -0.023201229, + -0.00021547085, + 0.01466082, + -0.018630126, + -0.015685158, + -0.025505986, + -0.006213243, + 0.014583996, + -0.00046975445, + 0.020819645, + -0.015838807, + -0.027452227, + -0.011542995, + -0.010064109, + -0.020025784, + 0.005979566, + -0.023841439 ] }, { "object": "embedding", "index": 3, "embedding": [ - 0.015762007, - -0.007306679, - 0.0065185786, - -0.021875368, - -0.006547295, - 0.0036756743, - -0.018263508, - -0.033208698, - 0.011818314, - -0.017523266, - 0.019463206, - 0.00966779, - -0.004639263, - -0.0013520546, - -0.016859604, - -0.00011915231, - 0.03313212, - 0.011582203, - 0.026444435, - -0.016527772, - -0.022309301, - 0.01822522, - -0.008921168, - 0.011575822, - -0.020841584, - -0.0101783, - 0.008015012, - -0.016680924, - 0.00242971, - 0.015481226, - 0.010548419, - -0.018212456, - 0.012258629, - -0.025040532, - -0.035735723, - 0.015672667, - 0.004543542, - -0.0035193306, - 0.017063808, - -0.018659152, - -0.00063654257, - 0.009833706, - 0.0033119358, - -0.007868241, - -0.009004126, - 0.012118239, - 0.019463206, - 0.0072620097, - -0.017574318, - 0.011652398, - 0.0035799537, - 0.019220714, - -0.018123116, - -0.018761255, - 0.011148269, - -0.03530179, - 0.003927739, - 0.017650895, - 0.005704953, - -0.008180928, - -0.012615986, - -0.016923418, - 0.004154278, - -0.014026271, - 0.004422296, - -0.0009101442, - -0.009514636, - 0.004339338, - 0.0002763935, - 0.0054656514, - 0.021288281, - 0.037956443, - 0.0063494723, - 0.01938663, - 0.025104346, - 0.009265763, - -0.013796542, - 0.023394136, - -0.004479728, - -0.0031539965, - 0.0010090555, - -0.008768015, - -0.030707197, - -0.0048243226, - 0.014421917, - -0.001675112, - -0.009680552, - 0.0043457192, - -0.03496996, - -0.003086992, - -0.011282278, - 0.030732721, - 0.026623113, - -0.01207995, - 0.0006249763, - 0.0147665115, - 0.011307804, - 0.029762752, - 0.015762007, - -0.03535284, - 0.014932428, - 0.004575449, - -0.04242341, - 0.0029737228, - -0.024721462, - -0.020611854, - 0.0024855472, - 0.0040298407, - 0.026163654, - -0.020586329, - -0.022232724, - 0.023955697, - 0.04668617, - -0.023011252, - -0.0019399392, - -0.02104579, - 0.012845716, - -0.028282272, - -0.017957201, - -0.005950636, - 0.0065090065, - 0.051102083, - 0.018008253, - -0.015187683, - 0.03706305, - -0.00012403805, - -0.00888288, - -0.028996987, - -0.004214901, - 0.015698193, - -0.0062665143, - 0.017255249, - 0.0020867109, - 0.013490235, - 0.007332205, - -0.0010369741, - -0.014434679, - 0.027286777, - -0.0059027756, - -0.019373868, - 0.010835581, - 0.032289777, - -0.016068313, - 0.0039085946, - -0.0065728207, - 0.03499548, - 0.015978973, - -0.0040170783, - -0.020382125, - -0.0056570927, - 0.003248122, - -0.011199321, - 0.0031763315, - -0.0035831444, - 0.015442938, - 0.0052965446, - -0.0071790516, - 0.0052582566, - -0.027159149, - 0.0019702509, - -0.019399393, - -0.0063973325, - 0.03017116, - -0.011894891, - 0.04354653, - 0.027848339, - 0.00163124, - -0.0027838766, - -0.01628528, - -0.0022941057, - 0.0006632646, - 0.025206449, - -0.012973344, - 0.032366354, - -0.017612606, - 0.012188435, - 0.007791664, - -0.001767642, - -0.016387383, - 0.0043074307, - -0.024912905, - -0.0033246984, - 0.016221466, - 0.0046009743, - 0.005992115, - -0.005117866, - 0.025512753, - -0.008640387, - 0.014906902, - -0.004817941, - 0.023802545, - 0.025984976, - -0.021594588, - -0.033566054, - -0.681225, - -0.043903887, - 0.020088581, - -0.0036022884, - 0.0018027396, - 0.024644887, - 0.006732355, - 0.015417412, - 0.005714525, - -0.016310805, - 0.01184384, - 0.005449698, - 0.011078075, - -0.0135668125, - -0.00606231, - -0.02243693, - -0.003350224, - 0.022168912, - -0.0020994737, - -0.015519514, - 0.0005643532, - 0.006936559, - -0.017663658, - -0.011716212, - 0.02197747, - 0.009004126, - 0.017446691, - -0.0006552879, - -0.017459454, - -0.0018665534, - -0.016808553, - 0.015098343, - -0.02082882, - -0.013005251, - 0.046941426, - -0.011377999, - -0.0070386613, - 0.024734225, - 0.008844592, - 0.026342332, - -0.009699697, - -0.0017325444, - 0.012009756, - -0.030885875, - -0.013796542, - 0.010714335, - 0.015136631, - -0.006668541, - 0.032213204, - 0.0013911406, - 0.019514257, - -0.031855844, - 0.005066815, - 0.009986858, - 0.007842715, - 0.001494838, - 0.04234683, - 0.00076536665, - 0.0009994835, - 0.0072556282, - 0.0070769493, - 0.0022271012, - -0.004639263, - -0.016259754, - -0.016629875, - -0.0009189186, - -0.038237225, - -0.015902396, - -0.018378371, - -0.0007386446, - -0.005334833, - 0.0041510873, - -0.015787533, - 0.023815308, - 0.020241736, - -0.0051274383, - 0.030758247, - -0.00902327, - 0.00022574129, - -0.0021664782, - 0.011097218, - -0.014409154, - -0.031166656, - -0.017280774, - 0.029711701, - -0.021709451, - -0.01628528, - -0.025436178, - 0.016081076, - -0.004591402, - 0.02498948, - -0.0013392919, - -0.01605555, - -0.008117114, - -0.013809305, - 0.036118604, - 0.0021999804, - 0.0030502991, - 0.0034363726, - 0.005982543, - -0.002641891, - -0.015978973, - -0.0044765375, - 0.000027793898, - 0.026265757, - -0.012182053, - -0.02743993, - 0.028333323, - 0.011167414, - -0.015978973, - 0.025091583, - -0.011129125, - -0.009865612, - 0.017638132, - 0.011952323, - -0.027873864, - 0.048243225, - 0.0024392821, - 0.01869744, - -0.0086914385, - 0.0065728207, - 0.024810802, - -0.009093465, - -0.008314937, - -0.0017867861, - -0.013132879, - -0.008908405, - -0.012418164, - -0.044159144, - 0.0014070941, - 0.0032417406, - 0.009642264, - 0.016770264, - 0.006713211, - 0.008640387, - 0.0035671908, - 0.011007879, - -0.021632874, - 0.024453444, - -0.005807055, - -0.011314185, - -0.0010377718, - -0.026023265, - 0.0136051, - 0.003382131, - -0.03422972, - -0.03466365, - -0.006148459, - -0.012341587, - 0.01531531, - -0.023751494, - -0.012360731, - -0.03928377, - 0.009916663, - 0.0156216165, - -0.01651501, - -0.022092335, - -0.0054146, - -0.013311557, - 0.02983933, - 0.016591586, - 0.0011183367, - 0.0017692373, - -0.00073226326, - -0.010420792, - -0.021683926, - -0.008314937, - 0.041249234, - -0.00075459806, - -0.026393384, - -0.021135127, - 0.0009843278, - -0.0039564553, - -0.008155403, - -0.015136631, - -0.019909903, - -0.0062633236, - -0.015034529, - 0.0034299912, - -0.009489111, - 0.018506, - 0.017153148, - 0.0098911375, - -0.017344588, - 0.047400884, - 0.007019517, - 0.016489483, - 0.0028572625, - 0.0014844683, - -0.0017867861, - -0.012507503, - -0.010280401, - 0.0029513878, - -0.00930405, - 0.009935807, - 0.012073569, - 0.0106569035, - 0.011186558, - 0.002415352, - -0.0023020825, - 0.009450822, - -0.011326948, - 0.017561555, - -0.014294289, - 0.0060591195, - -0.026852844, - 0.017918913, - -0.010644141, - 0.0005276603, - 0.026367858, - 0.0043648635, - -0.024032274, - -0.0032082384, - -0.007606604, - 0.016157651, - -0.0058549154, - -0.024313055, - 0.0029274577, - 0.0020165157, - -0.012309681, - 0.0012124621, - 0.014792037, - 0.023572814, - -0.014128373, - -0.0037554416, - 0.0016089053, - 0.03234083, - 0.01762537, - -0.0070258984, - -0.018110353, - -0.02304954, - -0.0051051034, - -0.012067188, - 0.010650522, - -0.032493982, - -0.006087836, - 0.0056889993, - -0.032085575, - 0.02225825, - 0.011920416, - -0.011295041, - 0.03512311, - 0.025640382, - 0.0048658014, - 0.003895832, - -0.0013815686, - 0.016349094, - 0.011735356, - -0.01781681, - 0.0066047274, - -0.012564936, - 0.009431679, - -0.0033470334, - 0.015698193, - 0.03928377, - -0.008385132, - 0.036807794, - 0.0015562589, - 0.017102096, - 0.023330322, - -0.026125366, - -0.006311184, - 0.0058038644, - -0.005749623, - 0.013024394, - -0.000879035, - -0.005468842, - -0.0018107163, - 0.005108294, - -0.009374246, - -0.017408403, - -0.0018043349, - 0.028741732, - -0.0073002977, - 0.026750742, - -0.010433555, - -0.0052582566, - -0.004377626, - 0.030783772, - 0.01142905, - -0.00809797, - -0.026125366, - 0.014830325, - -0.0011326948, - -0.0047956062, - -0.03017116, - -0.023036778, - 0.01776576, - -0.0006201903, - 0.0099039, - 0.008359606, - 0.0095912125, - 0.029226717, - -0.0060814545, - 0.007606604, - -0.025742484, - 0.0057783388, - 0.007944817, - 0.016604349, - 0.002332394, - -0.00458183, - -0.018263508, - -0.0321111, - -0.01591516, - 0.011882128, - 0.00980818, - -0.0067834063, - 0.008417039, - -0.010159155, - -0.028716207, - -0.011448194, - -0.0005743241, - 0.0007697539, - -0.013758253, - -0.0054114093, - -0.002354729, - -0.029252242, - 0.0044956817, - 0.034408398, - 0.020739483, - 0.005200824, - -0.010095342, - -0.012060806, - -0.008819066, - 0.077240214, - 0.024963954, - 0.008059681, - 0.010031528, - -0.0028173788, - -0.011543915, - -0.028537527, - 0.0119459415, - -0.013183929, - -0.0066047274, - 0.016578823, - -0.026074314, - 0.0017500932, - 0.004511635, - 0.0051274383, - -0.006649397, - 0.0070258984, - -0.0013265292, - 0.033744734, - -0.020114107, - 0.006103789, - 0.0017947629, - -0.014051797, - 0.012341587, - 0.00379373, - -0.0064483834, - 0.007536409, - -0.010191062, - 0.015723718, - -0.011550296, - 0.008997745, - 0.009750747, - -0.0075300275, - -0.0065792017, - -0.017574318, - 0.0024536403, - -0.0017883815, - 0.0056092325, - 0.010088961, - -0.014626121, - 0.03604203, - 0.004482919, - 0.012813809, - -0.006885508, - -0.021415908, - 0.007051424, - -0.0140007455, - 0.020560803, - -0.0119459415, - -0.018161405, - 0.026291283, - 0.0073641115, - -0.015238733, - 0.0058868225, - 0.010739861, - 0.0036150513, - -0.010950447, - -0.018072065, - -0.007900148, - 0.0008917977, - 0.0009835301, - -0.0072301026, - 0.0024185427, - -0.005468842, - -0.014957952, - -0.008665913, - 0.0038990227, - -0.0031348525, - -0.018021015, - -0.003442754, - 0.014626121, - -0.012673419, - -0.021875368, - 0.008015012, - 0.027312303, - 0.008582955, - 0.017612606, - -0.02428753, - -0.017778521, - 0.041632116, - -0.00041279546, - -0.007740613, - -0.0038830691, - -0.0029960575, - -0.00703228, - 0.0010904182, - 0.025946688, - -0.02345795, - -0.014434679, - -0.010567564, - 0.032366354, - -0.0018617674, - 0.013037157, - -0.005312498, - -0.01374549, - -0.010337834, - 0.02966065, - 0.008499997, - -0.009648645, - 0.0052454937, - 0.003586335, - -0.024772514, - -0.0006927785, - -0.015442938, - 0.015800295, - 0.014307052, - 0.028512003, - 0.0034523262, - -0.017944438, - 0.013222218, - 0.007019517, - -0.009425297, - -0.012571317, - -0.0038320182, - 0.004798797, - 0.0067834063, - -0.006043166, - 0.014396391, - -0.008729727, - -0.027159149, - -0.0015961424, - -0.04089188, - 0.027133625, - 0.0017006375, - 0.010650522, - 0.0017197817, - 0.02766966, - -0.0057113343, - -0.013222218, - 0.013349845, - -0.009144517, - 0.020624617, - -0.0107015725, - -0.017319063, - -0.033897884, - -0.025512753, - 0.033489477, - 0.002327608, - -0.015991736, - -0.004881755, - 0.011658779, - 0.012781902, - 0.0098911375, - 0.0027073, - -0.035378367, - -0.02304954, - -0.005570944, - 0.0039532646, - -0.007083331, - 0.016999993, - -0.009629501, - 0.0055517997, - -0.009463585, - 0.011122744, - -0.0013448757, - -0.012698945, - -0.03193242, - -0.02558933, - 0.030477466, - 0.016744738, - 0.01739564, - -0.0026642259, - 0.0038064925, - 0.0016783028, - -0.0056794276, - 0.0028078067, - -0.008921168, - 0.0018250744, - -0.030094584, - 0.014472968, - 0.0139114065, - -0.0028492857, - 0.02396846, - -0.005570944, - 0.012462834, - 0.013388134, - -0.0042117103, - -0.00005783125, - -0.02646996, - -0.027414404, - 0.007695943, - -0.00009796414, - -0.0076767993, - -0.001896865, - -0.0001806728, - -0.018531526, - 0.017561555, - 0.0029099088, - -0.007938435, - 0.0036948186, - 0.0333108, - -0.0009859231, - 0.034255244, - -0.004553114, - -0.002235078, - -0.0052774004, - -0.026878368, - -0.0035416654, - 0.013439184, - 0.006834457, - 0.0071981954, - 0.005542228, - 0.011914035, - -0.024823565, - 0.015749244, - 0.012903148, - 0.031447437, - 0.008551048, - -0.009233856, - -0.019769512, - -0.030987978, - -0.036016505, - -0.03665464, - -0.032238726, - 0.013337082, - 0.0022462455, - -0.03160059, - 0.02151801, - -0.00818731, - -0.020458702, - 0.008040538, - 0.01152477, - 0.029099088, - 0.0008559025, - 0.00888288, - 0.021632874, - -0.008595718, - -0.0086914385, - 0.008308556, - -0.011422669, - -0.006834457, - 0.019233476, - 0.01943768, - -0.020203447, - 0.02479804, - 0.012718089, - 0.011760882, - 0.022079572, - -0.009361483, - -0.0033151265, - -0.005290163, - 0.010759005, - -0.020777771, - 0.011869365, - -0.026112603, - 0.0058868225, - -0.037318304, - 0.002281343, - -0.0024281146, - -0.010382504, - -0.014651647, - -0.005676237, - -0.033387374, - 0.015289784, - 0.02160735, - 0.008378751, - 0.006260133, - -0.006885508, - -0.008429802, - -0.003225787, - -0.010510132, - 0.032698188, - 0.0002821766, - 0.0015626402, - 0.006454765, - -0.001293027, - -0.010159155, - -0.008231979, - -0.0031938802, - 0.02539789, - -0.0034906145, - -0.0021920037, - -0.024045037, - 0.008168166, - 0.038620107, - -0.01651501, - -0.00074024, - -0.0021489295, - -0.005449698, - 0.0027168721, - 0.0067068296, - 0.001869744, - -0.015200445, - 0.01864639, - -0.0240578, - -0.012265011, - -0.028052542, - -0.0036054791, - 0.008168166, - -0.015647141, - -0.00522954, - -0.028001491, - 0.014957952, - 0.000028915625, - -0.003822446, - -0.017408403, - 0.031039027, - 0.0050795777, - -0.0186081, - 0.019361105, - 0.00008520138, - 0.015864108, - 0.002271771, - 0.014358103, - 0.0042499984, - -0.02516816, - 0.030554043, - 0.0021026644, - -0.03525074, - -0.027057048, - -0.008895642, - -0.011186558, - 0.0012475597, - -0.005060434, - 0.009367865, - -0.002179241, - 0.013209455, - -0.020624617, - 0.00056515087, - -0.0059283013, - -0.026316807, - 0.018148642, - 0.020688431, - -0.020879872, - -0.017599843, - 0.00902327, - -0.011154651, - 0.0013783779, - -0.027363354, - -0.008499997, - -0.012667038, - 0.01859534, - 0.013196692, - -0.019271765, - -0.003914976, - -0.012303299, - -0.01239902, - 0.0033693681, - -0.0021680736, - 0.014421917, - -0.002739207, - -0.001256334, - -0.024542784, - 0.014332578, - -0.02146696, - 0.013898644, - 0.0015841774, - -0.019667411, - -0.017969964, - -0.002081925, - 0.0042212824, - -0.00458183, - -0.0047956062, - -0.03040089, - -0.018391134, - 0.0027376118, - -0.0031874988, - -0.0027998302, - 0.0018011442, - 0.008174547, - 0.018314559, - -0.005666665, - -0.015493989, - 0.020509753, - 0.00075539574, - -0.0015610448, - -0.018084828, - -0.017842336, - -0.008423421, - -0.009310432, - 0.013898644, - 0.0038862599, - 0.0044765375, - -0.008308556, - 0.026444435, - -0.016948942, - 0.004891327, - -0.0041351337, - -0.022934677, - -0.00070873194, - 0.021415908, - 0.020063056, - 0.03137086, - 0.010063435, - -0.00809797, - -0.02313888, - -0.0055517997, - 0.0095018735, - 0.037139628, - -0.012526647, - 0.015009004, - 0.009406153, - -0.010331453, - 0.0014262382, - -0.030936927, - 0.007504502, - 0.011665161, - 0.02132657, - 0.0055996603, - -0.007523646, - 0.011971467, - 0.028563052, - -0.0028795972, - -0.022845337, - -0.0014748962, - -0.0053284517, - -0.035046533, - 0.001356043, - 0.009533781, - -0.02869068, - 0.007638511, - -0.02368768, - -0.004205329, - -0.023445187, - -0.007523646, - -0.024810802, - -0.008831829, - -0.033897884, - 0.028792782, - 0.024530021, - -0.009508255, - 0.008870117, - -0.028563052, - -0.0028078067, - -0.006981229, - -0.00916366, - -0.009661408, - -0.026572064, - -0.006560058, - -0.007849096, - 0.0007195005, - -0.031728216, - -0.005529465, - 0.0065217693, - 0.0069110338, - 0.020343836, - 0.23422214, - 0.008774396, - -0.013579574, - 0.032085575, - -0.018110353, - 0.025040532, - 0.023840832, - -0.01596621, - 0.028486477, - 0.03665464, - -0.021671163, - 0.0006126124, - 0.0008319723, - -0.0018521952, - 0.011977849, - -0.012960581, - -0.03377026, - -0.0023658962, - -0.0015107915, - -0.009099847, - 0.016846841, - 0.0026913467, - 0.00916366, - 0.00029075157, - 0.028996987, - 0.015698193, - -0.0069301776, - 0.003618242, - 0.0044861096, - 0.011792788, - -0.001253941, - -0.01869744, - 0.0043840073, - -0.0060176407, - 0.002512668, - -0.0028891694, - -0.006694067, - 0.003211429, - 0.009387009, - 0.03859458, - 0.0060591195, - 0.0063239466, - -0.024874616, - -0.008551048, - 0.0047924155, - 0.00851276, - -0.015800295, - -0.006719592, - 0.021900894, - 0.015034529, - -0.010140011, - -0.0061803656, - 0.044490974, - 0.023189932, - -0.01096959, - 0.02183708, - 0.033566054, - -0.011250371, - 0.025716959, - -0.010344216, - -0.01508558, - 0.023623865, - -0.01993543, - 0.0046265, - 0.019144138, - -0.0016065122, - -0.015787533, - 0.0051657264, - 0.02193918, - -0.02276876, - 0.011320567, - 0.0024392821, - 0.007721469, - 0.0017979536, - -0.005727288, - -0.019629123, - 0.022692185, - -0.006103789, - 0.027873864, - 0.006499435, - -0.016412906, - -0.008104351, - -0.0075683156, - 0.018059302, - -0.0066749225, - -0.008965838, - -0.0018362418, - 0.015723718, - 0.0228581, - -0.00684722, - 0.0040968456, - -0.0029593646, - 0.0017054236, - 0.010242114, - 0.030324314, - 0.022564556, - -0.00536674, - 0.0073832558, - -0.026074314, - -0.0009683743, - -0.03496996, - -0.035659146, - 0.0042340453, - -0.017268011, - -0.009106228, - 0.007204577, - -0.0009986858, - 0.0015506751, - 0.033693682, - -0.0003832816, - 0.0039915526, - -0.012022519, - 0.008359606, - -0.0083021745, - 0.0090360325, - -0.006173984, - 0.013936932, - -0.013260506, - -0.017102096, - -0.018722966, - -0.0034268005, - -0.020701194, - 0.0017788095, - -0.0067068296, - -0.00006735346, - -0.019820563, - -0.002743993, - -0.0024967145, - 0.0073002977, - -0.04275524, - 0.036475964, - -0.0046711694, - 0.021403145, - -0.000051948413, - -0.0054337443, - 0.01193956, - 0.0001487659, - -0.0076512736, - -0.000465043, - -0.0080915885, - 0.001670326, - 0.0016910655, - 0.009865612, - -0.00522954, - 0.0014206545, - -0.0066238716, - 0.005845343, - -0.027822813, - -0.027159149, - -0.024274766, - -0.025334075, - -0.010471843, - -0.009380627, - -0.0070578055, - 0.009361483, - 0.003080611, - -0.021441434, - -0.008991363, - 0.0010018765, - 0.031064553, - -0.01138438, - -0.0014254405, - 0.026546538, - -0.0148048, - 0.013400896, - 0.0030088203, - -0.16254649, - 0.02410885, - 0.014090085, - -0.01494519, - -0.005063624, - -0.0026642259, - 0.016208703, - 0.02040765, - -0.020165158, - 0.028741732, - -0.0036310048, - 0.024644887, - -0.04247446, - -0.009131754, - -0.012552173, - 0.0009683743, - 0.000106090425, - -0.0009891138, - 0.017370114, - 0.0033757496, - 0.007536409, - -0.020879872, - 0.022743234, - 0.021058552, - 0.015060055, - -0.0032736475, - -0.026342332, - 0.032596085, - 0.0074470695, - -0.0071981954, - -0.0069939913, - -0.0034906145, - -0.0002753964, - 0.024874616, - 0.016489483, - -0.0025764818, - 0.0023307987, - 0.010593089, - -0.00024448658, - -0.01041441, - 0.00222072, - 0.028563052, - 0.009565688, - 0.012220341, - 0.0010920136, - 0.02749098, - 0.029099088, - 0.02114789, - 0.0035831444, - -0.009616738, - 0.023330322, - -0.033438426, - -0.013515761, - -0.007842715, - 0.022130623, - 0.02031831, - 0.016349094, - 0.009374246, - -0.008155403, - 0.009138135, - 0.00064292393, - -0.038645633, - -0.023445187, - 0.0064675277, - 0.0010417601, - -0.006981229, - 0.010803675, - 0.011894891, - -0.0044637746, - 0.006024022, - -0.020471465, - -0.006234607, - -0.0058868225, - -0.021313807, - -0.006515388, - 0.0008957861, - -0.011594966, - -0.0026482723, - -0.003503377, - -0.013183929, - 0.010229351, - 0.02248798, - -0.015034529, - -0.00874887, - -0.008831829, - 0.00888288, - 0.004853039, - 0.008263886, - -0.02424924, - -0.00064611464, - 0.023317559, - -0.036246233, - 0.003752251, - -0.03943692, - 0.008997745, - 0.017331826, - 0.0015762006, - -0.011084456, - 0.007887385, - 0.012182053, - 0.00020639773, - 0.0013105758, - -0.023853594, - 0.009559306, - 0.030298788, - 0.018493237, - -0.012233104, - 0.0062282262, - 0.03045194, - -0.004084083, - -0.016872367, - 0.022360353, - -0.0046935044, - 0.006815313, - 0.02294744, - 0.010242114, - 0.013681677, - -0.028486477, - -0.0014254405, - 0.009514636, - 0.048881363, - -0.0061293147, - -0.0062760864, - 0.019475969, - -0.0023148453, - -0.0309114, - -0.10006002, - -0.013707202, - 0.017829573, - 0.020739483, - 0.0136561515, - 0.027031522, - 0.005038099, - 0.017433928, - 0.0023212268, - 0.02410885, - 0.0021951944, - -0.022794286, - -0.019488731, - 0.010427173, - 0.005306117, - -0.013490235, - 0.018518763, - -0.023011252, - -0.05066815, - 0.0037650138, - -0.0039213574, - 0.006872745, - -0.003442754, - -0.016757501, - -0.005344405, - 0.0034363726, - -0.024210952, - 0.005880441, - 0.017880624, - -0.004080892, - 0.0107015725, - -0.0148558505, - 0.0041957567, - -0.006694067, - -0.008678676, - -0.0004000327, - -0.004808369, - 0.0012850502, - 0.02743993, - -0.030962452, - -0.00458183, - 0.0022175293, - 0.015277022, - -0.03285134, - -0.0041670403, - 0.010293164, - -0.000098911376, - 0.012239485, - 0.0042117103, - -0.019271765, - 0.0060591195, - 0.020662906, - -0.0346126, - -0.009712459, - 0.044108093, - -0.029507497, - 0.01161411, - 0.017012756, - -0.0271081, - 0.021824317, - 0.0048147505, - 0.017038282, - 0.0012986107, - 0.02920119, - -0.026023265, - -0.01637462, - -0.04895794, - -0.008595718, - 0.023024015, - -0.031498488, - 0.0034714702, - 0.017561555, - -0.01619594, - -0.0041127987, - -0.0198078, - 0.01920795, - -0.025193686, - -0.01299887, - 0.008423421, - -0.012239485, - -0.02641891, - -0.020394888, - 0.008021394, - -0.0056889993, - -0.0074598324, - 0.029558549, - -0.021964706, - -0.008436183, - 0.025576567, - -0.00289236, - 0.013375371, - 0.038620107, - 0.013298794, - -0.019501494, - -0.008634006, - 0.020943686, - 0.007338586, - 0.0028604532, - 0.019220714, - -0.018148642, - -0.019743986, - -0.007925672, - -0.035914402, - 0.014868613, - -0.014779274, - -0.02437687, - -0.011805551, - 0.013158403, - -0.011741738, - 0.0034523262, - -0.011512008, - -0.004470156, - -0.011205702, - -0.0073641115, - -0.012615986, - -0.015953448, - -0.0053731212, - 0.0026897513, - 0.016770264, - -0.0019686555, - 0.011907654, - -0.009240237, - -0.0072173397, - -0.0014725032, - 0.00040521758, - 0.008015012, - -0.03325975, - 0.0067068296, - -0.01642567, - -0.019080324, - -0.029456446, - -0.002018111, - 0.024210952, - -0.02646996, - 0.011480101, - 0.027057048, - -0.018684678, - -0.031983472, - -0.012226722, - 0.021415908, - 0.008359606, - -0.020024767, - -0.02387912, - -0.022998491, - 0.017102096, - -0.011033405, - -0.019820563, - 0.030707197, - -0.012673419, - -0.0076640365, - 0.0020579947, - 0.012730852, - 0.018557051, - 0.017727472, - 0.0027918534, - -0.005251875, - -0.011665161, - -0.00855743, - 0.02915014, - 0.012131002, - 0.0068408386, - -0.0138220675, - 0.006343091, - -0.0046328814, - 0.01346471, - 0.011652398, - -0.0032082384, - 0.018659152, - -0.005682618, - -0.0031444246, - -0.0043552914, - -0.023866357, - -0.014281526, - -0.0040649385, - 0.050693676, - 0.016361857, - 0.01258408, - -0.005982543, - -0.009648645, - -0.01822522, - -0.0120289, - 0.017089333, - 0.0048626107, - -0.0037299162, - -0.012405401, - -0.001066488, - 0.027644135, - 0.023623865, - -0.053297278, - -0.008257505, - 0.01827627, - -0.001346471, - -0.024772514, - 0.01272447, - -0.003895832, - 0.008506378, - 0.01323498, - 0.00028018243, - -0.0015115892, - -0.00606231, - -0.0029162902, - 0.022373116, - 0.0061676027, - -0.01762537, - -0.007370493, - -0.034408398, - -0.010076198, - 0.02424924, - -0.0069939913, - -0.018340083, - -0.014396391, - 0.018250745, - 0.009182804, - -0.014549544, - 0.0035320933, - 0.01406456, - -0.0070450427, - -0.0019925856, - -0.039462447, - -0.010140011, - -0.013541287, - 0.013617863, - 0.011512008, - 0.0051657264, - 0.00911261, - -0.0032927915, - 0.021415908, - 0.010682428, - 0.026495486, - -0.038390376, - 0.018493237, - 0.007440688, - 0.002743993, - 0.012884004, - -0.015302547, - 0.0022510316, - -0.024083326, - -0.01198423, - -0.016349094, - 0.017957201, - 0.0031268757, - 0.051204186, - -0.008844592, - -0.031804793, - 0.033336323, - -0.024210952, - 0.001543496, - 0.01216929, - 0.00072628073, - -0.0228581, - -0.011850221, - -0.011148269, - 0.01369444, - 0.020165158, - -0.016591586, - -0.004636072, - -0.00023970056, - -0.029788278, - 0.02743993, - -0.028078068, - -0.0013289222, - 0.028716207, - 0.0026131747, - 0.011205702, - 0.015468463, - -0.01869744, - -0.019067561, - 0.014485731, - 0.026074314, - 0.0031986663, - -0.0010465462, - 0.020012004, - -0.008755252, - -0.022015758, - -0.011537533, - 0.0010170323, - -0.036118604, - -0.015953448, - -0.014498494, - -0.000036892347, - 0.014626121, - 0.008499997, - 0.029864855, - -0.020063056, - -0.020152396, - 0.0057432414, - -0.012788284, - -0.007791664, - 0.0071981954, - -0.0062505607 + 0.01577385, + -0.0072296807, + 0.0065341513, + -0.021912377, + -0.006553294, + 0.0037105556, + -0.01824968, + -0.033232283, + 0.011862292, + -0.017496722, + 0.019436548, + 0.009731036, + -0.0045847534, + -0.0013471901, + -0.016896907, + -0.00010548602, + 0.03307914, + 0.011607052, + 0.026468417, + -0.016514046, + -0.022308, + 0.018185869, + -0.008920648, + 0.011626194, + -0.020878654, + -0.010196849, + 0.008014545, + -0.016654428, + 0.0024199968, + 0.015505847, + 0.010509518, + -0.018236918, + 0.012238772, + -0.025102882, + -0.035759162, + 0.015595181, + 0.0045209434, + -0.0034936012, + 0.017062813, + -0.018619778, + -0.0006265351, + 0.009845894, + 0.0032798375, + -0.007835876, + -0.008984458, + 0.012130294, + 0.019538643, + 0.0072871097, + -0.017586054, + 0.011638957, + 0.003598888, + 0.019181307, + -0.018096536, + -0.018734636, + 0.011192286, + -0.035248682, + 0.0039466526, + 0.017675389, + 0.0057237633, + -0.008180451, + -0.0126024885, + -0.016922431, + 0.0041348925, + -0.014050977, + 0.004409276, + -0.000938008, + -0.009539605, + 0.004303989, + 0.00019840944, + 0.0054972377, + 0.021325326, + 0.038005278, + 0.006368245, + 0.019359974, + 0.025077358, + 0.009265222, + -0.013770213, + 0.023418296, + -0.004466705, + -0.0031474316, + 0.0009906513, + -0.008735598, + -0.03073093, + -0.0048080888, + 0.0144338375, + -0.0017388244, + -0.009628939, + 0.00431037, + -0.034993444, + -0.0030772407, + -0.011262477, + 0.03073093, + 0.026596038, + -0.012111152, + 0.00066123187, + 0.014803936, + 0.011313525, + 0.029709969, + 0.015735563, + -0.035350777, + 0.014931556, + 0.004524134, + -0.042446457, + 0.0029831207, + -0.024745544, + -0.02059789, + 0.0024790212, + 0.003978558, + 0.026162129, + -0.020559605, + -0.022256952, + 0.023903253, + 0.046683446, + -0.023035435, + -0.0019318499, + -0.021044562, + 0.012870491, + -0.028306147, + -0.017981678, + -0.006052385, + 0.0065245796, + 0.051175676, + 0.01799444, + -0.015225083, + 0.037060887, + -0.0001232332, + -0.008914267, + -0.028969772, + -0.0042178454, + 0.015684515, + -0.0063395305, + 0.01730529, + 0.0020706367, + 0.01350221, + 0.007274348, + -0.0010265445, + -0.0144338375, + 0.02731071, + -0.005950289, + -0.019411024, + 0.010815807, + 0.032313418, + -0.016067376, + 0.0039307005, + -0.006546913, + 0.034993444, + 0.015978042, + -0.003972177, + -0.020380937, + -0.005615286, + 0.0032479325, + -0.011256096, + 0.003187313, + -0.0035765544, + 0.015416513, + 0.0052515687, + -0.0071722516, + 0.005302617, + -0.027234137, + 0.001990874, + -0.019436548, + -0.006451198, + 0.030143877, + -0.011875054, + 0.04354399, + 0.027872238, + 0.0016104067, + -0.002837953, + -0.016258806, + -0.002268448, + 0.0006664164, + 0.025166692, + -0.012985349, + 0.032313418, + -0.017586054, + 0.0121941045, + 0.0077848285, + -0.0018106108, + -0.016360901, + 0.004367799, + -0.02491145, + -0.003314933, + 0.016207758, + 0.004587944, + 0.006033242, + -0.00506971, + 0.02547298, + -0.008646265, + 0.014880508, + -0.004852756, + 0.023801155, + 0.025945174, + -0.02160609, + -0.033538572, + -0.68118525, + -0.043952376, + 0.020074647, + -0.0036339834, + 0.0017978487, + 0.02464345, + 0.0067192004, + 0.015442037, + 0.0057173823, + -0.01629709, + 0.011811243, + 0.005442999, + 0.011077428, + -0.013566021, + -0.0060491944, + -0.02243562, + -0.0033851243, + 0.022205904, + -0.002155185, + -0.015480323, + 0.0005595345, + 0.0069297734, + -0.017649865, + -0.011696386, + 0.021963425, + 0.009029125, + 0.017445672, + -0.00071148225, + -0.017394625, + -0.0018536826, + -0.016845858, + 0.015122986, + -0.020827606, + -0.013023635, + 0.04696421, + -0.011415621, + -0.007070156, + 0.024758307, + 0.008799409, + 0.026417369, + -0.009635321, + -0.0017547769, + 0.01204096, + -0.030935122, + -0.013808499, + 0.010694568, + 0.015071939, + -0.006680914, + 0.0321858, + 0.0014157859, + 0.019500358, + -0.03187951, + 0.0051048053, + 0.00994799, + 0.007893305, + 0.0015099058, + 0.04234436, + 0.00076292915, + 0.0009435914, + 0.007210538, + 0.007133966, + 0.0022174, + -0.004664516, + -0.016194995, + -0.016628904, + -0.0009108887, + -0.038209468, + -0.015850421, + -0.018415585, + -0.00071227987, + -0.0053377124, + 0.0041859406, + -0.015850421, + 0.02382668, + 0.02027884, + -0.005152663, + 0.030756453, + -0.009029125, + 0.00024207945, + -0.0021583757, + 0.011141238, + -0.014446599, + -0.03111379, + -0.017318053, + 0.029633395, + -0.021695424, + -0.016246043, + -0.025421932, + 0.016105661, + -0.0045751818, + 0.025000785, + -0.0013774999, + -0.016105661, + -0.0081357835, + -0.013795737, + 0.03614202, + 0.002204638, + 0.0030086448, + 0.0034457438, + 0.0059470986, + -0.0026305702, + -0.015978042, + -0.0045177527, + -0.0000015173586, + 0.026264224, + -0.012213247, + -0.027361758, + 0.028408242, + 0.0111795245, + -0.015926993, + 0.025077358, + -0.0111795245, + -0.009916085, + 0.017662628, + 0.011989912, + -0.027846714, + 0.04821489, + 0.0024247826, + 0.018709112, + -0.008678169, + 0.0065915803, + 0.024822118, + -0.009156745, + -0.008295309, + -0.0017834915, + -0.013195923, + -0.008907885, + -0.012442963, + -0.044207618, + 0.0014556672, + 0.0031649794, + 0.009750179, + 0.01679481, + 0.006757486, + 0.008646265, + 0.0035574113, + 0.010949808, + -0.021618852, + 0.024439257, + -0.005797145, + -0.011332668, + -0.0010289374, + -0.026008984, + 0.013578783, + 0.0033978862, + -0.034253243, + -0.03461058, + -0.006119386, + -0.012328105, + 0.015352703, + -0.023813918, + -0.012315343, + -0.039255954, + 0.009903323, + 0.015620705, + -0.016526807, + -0.02211657, + -0.005430237, + -0.013285256, + 0.029837588, + 0.016628904, + 0.0011182715, + 0.001812206, + -0.0007577446, + -0.0104329465, + -0.0216699, + -0.008295309, + 0.0413234, + -0.0007465778, + -0.026442893, + -0.021133894, + 0.0010066038, + -0.0039275098, + -0.008212356, + -0.015161272, + -0.019972552, + -0.0062629585, + -0.015071939, + 0.0034010767, + -0.009437509, + 0.01850492, + 0.017164908, + 0.009986276, + -0.017407387, + 0.04739812, + 0.006999965, + 0.016501283, + 0.0028507148, + 0.0015226678, + -0.0018473015, + -0.012525917, + -0.010254278, + 0.002959192, + -0.0092779845, + 0.009928847, + 0.012149437, + 0.010656281, + 0.011211429, + 0.0023817108, + -0.0021950663, + 0.00944389, + -0.011351812, + 0.017535007, + -0.014280694, + 0.00602048, + -0.026876802, + 0.017905105, + -0.010694568, + 0.0005623262, + 0.026442893, + 0.004367799, + -0.023979824, + -0.0032096466, + -0.007574255, + 0.016143948, + -0.00589286, + -0.024311636, + 0.002935263, + 0.0020339459, + -0.0123344865, + 0.0011836768, + 0.014791174, + 0.023520391, + -0.014076501, + -0.0037616035, + 0.0016383235, + 0.032338943, + 0.01761158, + -0.0070254887, + -0.018173108, + -0.023035435, + -0.005101615, + -0.012034579, + 0.010700949, + -0.032543134, + -0.006077909, + 0.0056408104, + -0.0320837, + 0.022308, + 0.011938864, + -0.011319906, + 0.03517211, + 0.025613362, + 0.0048878514, + 0.0039370814, + -0.0013487854, + 0.016335377, + 0.011709148, + -0.017854057, + 0.006617104, + -0.012525917, + 0.009424747, + -0.0034010767, + 0.015658991, + 0.039255954, + -0.0083655, + 0.036780123, + 0.0015936565, + 0.017101098, + 0.023405533, + -0.026085556, + -0.0063714352, + 0.0058450024, + -0.0057684304, + 0.013049159, + -0.0009427938, + -0.0054717134, + -0.0018058249, + 0.0050984244, + -0.009386461, + -0.017420148, + -0.0018329442, + 0.02876558, + -0.007299872, + 0.02674918, + -0.010471232, + -0.0052707116, + -0.004361418, + 0.0308075, + 0.011422003, + -0.008097498, + -0.026111081, + 0.014816698, + -0.0011900578, + -0.0047729933, + -0.030118352, + -0.023048198, + 0.0177392, + -0.0006349102, + 0.009979894, + 0.008378262, + 0.009533225, + 0.029199488, + -0.0060842903, + 0.0076189223, + -0.02579203, + 0.0057716207, + 0.007880543, + 0.01660338, + 0.002325877, + -0.004568801, + -0.018275203, + -0.032134753, + -0.015875945, + 0.011824006, + 0.009845894, + -0.006744724, + 0.008422929, + -0.01013942, + -0.028740056, + -0.011492194, + -0.0005914396, + 0.00079363777, + -0.013770213, + -0.005430237, + -0.002332258, + -0.029250536, + 0.004530515, + 0.034431912, + 0.020802082, + 0.005232426, + -0.010113896, + -0.012034579, + -0.00880579, + 0.077235706, + 0.0249625, + 0.008052831, + 0.010094753, + -0.002775738, + -0.011562385, + -0.028586911, + 0.011983531, + -0.01324697, + -0.0065915803, + 0.01660338, + -0.026060032, + 0.001767539, + 0.004485848, + 0.005165425, + -0.006680914, + 0.0071148225, + -0.0013128922, + 0.033793814, + -0.020138457, + 0.0061321477, + 0.0017563722, + -0.0140254535, + 0.0123344865, + 0.0037296985, + -0.006483103, + 0.007529588, + -0.010228754, + 0.015710039, + -0.011568765, + 0.00899722, + 0.009737416, + -0.007567874, + -0.006572437, + -0.017573293, + 0.0024471162, + -0.0017946583, + 0.0056248577, + 0.010145801, + -0.014650792, + 0.03606545, + 0.004460324, + 0.012787538, + -0.0068851067, + -0.02142742, + 0.007076537, + -0.014012692, + 0.020546842, + -0.011989912, + -0.018173108, + 0.026315272, + 0.007357301, + -0.015263368, + 0.0059215743, + 0.010720092, + 0.0035893165, + -0.010956189, + -0.01807101, + -0.007861401, + 0.00093880564, + 0.000978687, + -0.007331777, + 0.0024423304, + -0.005494047, + -0.015033652, + -0.008659027, + 0.0038636997, + -0.0031043598, + -0.017981678, + -0.0034616962, + 0.014625268, + -0.012659918, + -0.021874093, + 0.0079954015, + 0.027285187, + 0.008544168, + 0.017624341, + -0.024311636, + -0.01781577, + 0.041655213, + -0.0004343073, + -0.0077401614, + -0.0038668902, + -0.0029879066, + -0.0070382506, + 0.0010345208, + 0.025957936, + -0.023494868, + -0.014408314, + -0.010560567, + 0.03236447, + -0.0018935638, + 0.013068303, + -0.005293045, + -0.013770213, + -0.010343612, + 0.029607872, + 0.0084612155, + -0.009679987, + 0.005293045, + 0.003605269, + -0.024783831, + -0.00066163065, + -0.015442037, + 0.015799373, + 0.01425517, + 0.02851034, + 0.0034553153, + -0.017968915, + 0.013195923, + 0.0070127267, + -0.009450272, + -0.012557821, + -0.0038987952, + 0.004734707, + 0.0068276776, + -0.006065147, + 0.014357266, + -0.008722836, + -0.027157566, + -0.0015202749, + -0.040838443, + 0.027157566, + 0.0017005383, + 0.010675425, + 0.0017101099, + 0.027616998, + -0.005755668, + -0.013259732, + 0.013323543, + -0.009131221, + 0.020648938, + -0.010649901, + -0.017330814, + -0.033946957, + -0.025485741, + 0.033538572, + 0.0022923767, + -0.01604185, + -0.0048814705, + 0.011626194, + 0.012762014, + 0.009839512, + 0.0026911898, + -0.03529973, + -0.023035435, + -0.0055801906, + 0.0040072724, + -0.007070156, + 0.016935192, + -0.00957151, + 0.0055546667, + -0.009456652, + 0.011071047, + -0.001292154, + -0.012666299, + -0.031905036, + -0.025562314, + 0.03047569, + 0.016743762, + 0.017356338, + -0.0026401416, + 0.0038828426, + 0.0016718238, + -0.005666334, + 0.0028826199, + -0.00893341, + 0.0018361347, + -0.030118352, + 0.014497648, + 0.0138850715, + -0.0028491195, + 0.023941537, + -0.005545095, + 0.012436583, + 0.013400114, + -0.0042306078, + -0.00003614242, + -0.026442893, + -0.027412806, + 0.007638065, + -0.0001354967, + -0.0076827323, + -0.0018808017, + -0.0001483584, + -0.018594254, + 0.01754777, + 0.0029225012, + -0.008008163, + 0.0037616035, + 0.03338543, + -0.0009826751, + 0.034304295, + -0.0045528486, + -0.002211019, + -0.0052770926, + -0.026902325, + -0.0035223158, + 0.013463925, + 0.0068787253, + 0.007236062, + 0.005570619, + 0.011906959, + -0.024860403, + 0.01577385, + 0.01286411, + 0.03149665, + 0.008537787, + -0.009207793, + -0.01976836, + -0.031011693, + -0.036014404, + -0.03662698, + -0.03226237, + 0.013336305, + 0.0022317572, + -0.031598747, + 0.021542279, + -0.008225118, + -0.020457508, + 0.008040069, + 0.011530479, + 0.029122915, + 0.0008414953, + 0.008907885, + 0.02160609, + -0.008595216, + -0.008659027, + 0.008320833, + -0.011402859, + -0.0067766295, + 0.019270642, + 0.019500358, + -0.020227792, + 0.024809355, + 0.012723728, + 0.011760196, + 0.022091046, + -0.009373699, + -0.0033532192, + -0.005289855, + 0.010777521, + -0.020776559, + 0.011868672, + -0.026136605, + 0.005848193, + -0.037290603, + 0.0022923767, + -0.0024168063, + -0.010420185, + -0.014663554, + -0.0056535723, + -0.03338543, + 0.015327179, + 0.021631613, + 0.008391025, + 0.006250196, + -0.0068978686, + -0.008384643, + -0.0032176226, + -0.010483994, + 0.032721803, + 0.00030868122, + 0.0015354297, + 0.006476722, + -0.00128338, + -0.010196849, + -0.008257023, + -0.003212837, + 0.025370883, + -0.0034489343, + -0.0022174, + -0.024132969, + 0.008148545, + 0.038617853, + -0.01653957, + -0.0007577446, + -0.002136042, + -0.0054334276, + 0.0027214994, + 0.006680914, + 0.0018345395, + -0.015199559, + 0.018607017, + -0.024069158, + -0.012245152, + -0.028050907, + -0.0036084594, + 0.008193213, + -0.015607943, + -0.005248378, + -0.028050907, + 0.014982604, + 0.00004454242, + -0.0038381757, + -0.017394625, + 0.031037217, + 0.005107996, + -0.018594254, + 0.01939826, + 0.00013669314, + 0.015901469, + 0.002268448, + 0.014318979, + 0.004240179, + -0.02515393, + 0.030654358, + 0.0021583757, + -0.03529973, + -0.027080994, + -0.008907885, + -0.0111795245, + 0.0012618441, + -0.005031424, + 0.009335414, + -0.0021902807, + 0.013157636, + -0.020636177, + 0.0005794752, + -0.005924765, + -0.026340798, + 0.018147584, + 0.020623414, + -0.020891417, + -0.017522246, + 0.0090099815, + -0.011173143, + 0.0013695236, + -0.027361758, + -0.008499501, + -0.012647156, + 0.01863254, + 0.013221446, + -0.01933445, + -0.0039434624, + -0.012321725, + -0.012423821, + 0.0033276952, + -0.0021934712, + 0.014370028, + -0.0026991658, + -0.0012474868, + -0.024579639, + 0.0142934555, + -0.021465708, + 0.013936119, + 0.0016135972, + -0.019755598, + -0.017968915, + -0.002136042, + 0.0042050835, + -0.004594325, + -0.004811279, + -0.030424641, + -0.018351777, + 0.0027023565, + -0.003225599, + -0.0027932858, + 0.0017850867, + 0.0081357835, + 0.018262442, + -0.0056535723, + -0.015480323, + 0.020546842, + 0.0007437861, + -0.0015936565, + -0.018045487, + -0.017841296, + -0.008403786, + -0.009297127, + 0.013936119, + 0.0038892238, + 0.004556039, + -0.008327214, + 0.026442893, + -0.016922431, + 0.004916566, + -0.004125321, + -0.022997148, + -0.00071307755, + 0.02142742, + 0.0200236, + 0.031343505, + 0.010069229, + -0.008129403, + -0.02313753, + -0.005545095, + 0.009469414, + 0.037111938, + -0.012513154, + 0.0149698425, + 0.009431128, + -0.01033085, + 0.0013926547, + -0.03098617, + 0.0075423503, + 0.011683623, + 0.021312563, + 0.005596143, + -0.0074849213, + 0.011989912, + 0.028586911, + -0.0028507148, + -0.022780195, + -0.0014907627, + -0.005360046, + -0.03504449, + 0.0014046192, + 0.009533225, + -0.028740056, + 0.0076061604, + -0.023673536, + -0.004169988, + -0.02344382, + -0.007523207, + -0.024796592, + -0.00880579, + -0.03392143, + 0.028791104, + 0.024554115, + -0.009552367, + 0.0088696, + -0.028535863, + -0.0027470235, + -0.007006346, + -0.009156745, + -0.00969275, + -0.026570512, + -0.006623485, + -0.007861401, + 0.0006995179, + -0.031649794, + -0.005564238, + 0.006540532, + 0.0069170115, + 0.020368174, + 0.23420848, + 0.008754741, + -0.013591545, + 0.032134753, + -0.01812206, + 0.025077358, + 0.02376287, + -0.015875945, + 0.028484816, + 0.036652505, + -0.021657137, + 0.0006440829, + 0.00089174573, + -0.0018345395, + 0.011989912, + -0.013030016, + -0.03376829, + -0.002338639, + -0.0014357265, + -0.0090801725, + 0.01685862, + 0.002649713, + 0.009169507, + 0.00033121413, + 0.028995296, + 0.015697276, + -0.0069042495, + 0.0036116499, + 0.004476276, + 0.01178572, + -0.0012068079, + -0.018721875, + 0.004364609, + -0.0060619568, + 0.002522093, + -0.0029065486, + -0.0067383433, + 0.003219218, + 0.009386461, + 0.038617853, + 0.006058766, + 0.0062629585, + -0.024873165, + -0.008550549, + 0.004785755, + 0.00849312, + -0.015735563, + -0.0067383433, + 0.021950664, + 0.015046414, + -0.010152182, + -0.0061449097, + 0.044513904, + 0.023214104, + -0.011007237, + 0.021823043, + 0.033615146, + -0.011268858, + 0.025715457, + -0.010349994, + -0.0151102245, + 0.023673536, + -0.019883217, + 0.004594325, + 0.019155784, + -0.0015721206, + -0.015799373, + 0.0051399013, + 0.021912377, + -0.022780195, + 0.011332668, + 0.0024550925, + 0.0077146376, + 0.0018042297, + -0.0057173823, + -0.019653501, + 0.022716384, + -0.006128957, + 0.027897762, + 0.006508627, + -0.016360901, + -0.008129403, + -0.007644446, + 0.01799444, + -0.006700057, + -0.008914267, + -0.0018329442, + 0.015684515, + 0.022831243, + -0.0068659633, + 0.0041029872, + -0.0029575967, + 0.0016925621, + 0.010273421, + 0.030373594, + 0.022550479, + -0.005360046, + 0.007363682, + -0.026111081, + -0.000995437, + -0.034942392, + -0.035657067, + 0.004214655, + -0.017190432, + -0.00912484, + 0.007248824, + -0.0009746988, + 0.0015107034, + 0.033666193, + -0.0004159619, + 0.0040710825, + -0.011996293, + 0.0083335955, + -0.008308071, + 0.009003601, + -0.0061576716, + 0.013961643, + -0.013234208, + -0.017101098, + -0.018747399, + -0.0034648867, + -0.020687224, + 0.0017866819, + -0.006700057, + -0.000046710964, + -0.019857693, + -0.0027342616, + -0.0025045453, + 0.007261586, + -0.042778272, + 0.036473837, + -0.0046868497, + 0.02136361, + -0.00008260413, + -0.005417475, + 0.011906959, + 0.00017288541, + -0.0077210185, + -0.00047059925, + -0.008129403, + 0.001628752, + 0.0017404197, + 0.00988418, + -0.0052579497, + 0.0014756079, + -0.0066745332, + 0.005886479, + -0.02782119, + -0.02718309, + -0.024298875, + -0.025396409, + -0.010401041, + -0.009405605, + -0.0070573934, + 0.009354556, + 0.0030836216, + -0.021478469, + -0.008952552, + 0.00095156766, + 0.03111379, + -0.0113773355, + -0.0014588577, + 0.026468417, + -0.014803936, + 0.013310781, + 0.0030469308, + -0.16253701, + 0.024069158, + 0.014140312, + -0.014918794, + -0.0050473763, + -0.0026832134, + 0.016182235, + 0.020444747, + -0.020189505, + 0.028714532, + -0.0036403644, + 0.024630686, + -0.042446457, + -0.009137602, + -0.012557821, + 0.0009013172, + 0.00013061124, + -0.0009866632, + 0.017407387, + 0.0033564097, + 0.007491302, + -0.02091694, + 0.022767432, + 0.021057323, + 0.0151102245, + -0.0032559088, + -0.026315272, + 0.03256866, + 0.0074721593, + -0.007191395, + -0.0070191077, + -0.0034712679, + -0.00025763316, + 0.02491145, + 0.016488522, + -0.0026018557, + 0.0023242817, + 0.010547805, + -0.00024566878, + -0.010381898, + 0.002238138, + 0.028612435, + 0.009609796, + 0.012181343, + 0.001036116, + 0.02743833, + 0.029097391, + 0.02117218, + 0.0035510303, + -0.009597034, + 0.023265151, + -0.03338543, + -0.013425639, + -0.0078550195, + 0.022154856, + 0.020317126, + 0.016399188, + 0.009297127, + -0.00817407, + 0.009214174, + 0.00066721404, + -0.03864338, + -0.023456581, + 0.006377816, + 0.0010608424, + -0.0069808215, + 0.01083495, + 0.011906959, + -0.004473086, + 0.006052385, + -0.020508556, + -0.006259768, + -0.0058450024, + -0.02136361, + -0.006559675, + 0.0008973291, + -0.01159429, + -0.0026066413, + -0.0035382684, + -0.013183161, + 0.010318088, + 0.02249943, + -0.015008128, + -0.008786647, + -0.008844076, + 0.008927029, + 0.004903804, + 0.00823788, + -0.024235064, + -0.0005890467, + 0.023290675, + -0.036218595, + 0.0037296985, + -0.03946015, + 0.008971696, + 0.017343577, + 0.0015737158, + -0.011077428, + 0.007848638, + 0.012200485, + 0.00022393346, + 0.0013184756, + -0.023839442, + 0.00957151, + 0.030322544, + 0.018466635, + -0.012238772, + 0.0062151006, + 0.030450165, + -0.0040742727, + -0.01685862, + 0.022359049, + -0.0046964213, + 0.0067638676, + 0.022984387, + 0.010190468, + 0.013731927, + -0.02851034, + -0.0014429052, + 0.009597034, + 0.048878513, + -0.0061672432, + -0.0062852916, + 0.019500358, + -0.0023099245, + -0.030960646, + -0.099952094, + -0.013668117, + 0.01780301, + 0.020751035, + 0.013706403, + 0.02700442, + 0.004986757, + 0.0173691, + 0.0023418295, + 0.02414573, + 0.0021870902, + -0.022805719, + -0.019500358, + 0.0103627555, + 0.005315379, + -0.013463925, + 0.018594254, + -0.023022672, + -0.05063967, + 0.0037775561, + -0.003924319, + 0.0068532014, + -0.0034234102, + -0.016743762, + -0.005296236, + 0.0034457438, + -0.024184017, + 0.0058577643, + 0.01786682, + -0.0040327962, + 0.010662663, + -0.014791174, + 0.0041923216, + -0.0066681523, + -0.008665407, + -0.00039263134, + -0.0047602314, + 0.0012658322, + 0.027514901, + -0.030935122, + -0.0045975153, + 0.0022237808, + 0.015263368, + -0.032823898, + -0.004138083, + 0.010273421, + -0.00010468839, + 0.012296201, + 0.0042497506, + -0.019245116, + 0.006077909, + 0.020636177, + -0.034636106, + -0.009711892, + 0.04410552, + -0.029480252, + 0.011613432, + 0.01703729, + -0.027080994, + 0.021810282, + 0.0048176604, + 0.01703729, + 0.0013152851, + 0.029250536, + -0.02598346, + -0.016386425, + -0.049006134, + -0.008595216, + 0.023022672, + -0.031471126, + 0.0034776488, + 0.017535007, + -0.016156709, + -0.0040774634, + -0.019819407, + 0.019181307, + -0.025192216, + -0.013010873, + 0.00842931, + -0.012219628, + -0.026417369, + -0.020380937, + 0.0081357835, + -0.005666334, + -0.0074147303, + 0.029556824, + -0.021950664, + -0.008442072, + 0.025549551, + -0.002971954, + 0.0133490665, + 0.038617853, + 0.013285256, + -0.019525882, + -0.008614359, + 0.020967988, + 0.007331777, + 0.0028570958, + 0.019206831, + -0.018134821, + -0.019755598, + -0.0079252105, + -0.035886783, + 0.014778412, + -0.014791174, + -0.02445202, + -0.0118559105, + 0.013157636, + -0.011709148, + 0.0034680772, + -0.011543241, + -0.004476276, + -0.011224192, + -0.007344539, + -0.012634394, + -0.015978042, + -0.005369617, + 0.0027103326, + 0.016756523, + -0.001984493, + 0.011875054, + -0.009226936, + -0.007248824, + -0.0014915604, + 0.0003704972, + 0.008033688, + -0.033232283, + 0.0067192004, + -0.016462998, + -0.01906645, + -0.029454729, + -0.0020052313, + 0.024184017, + -0.02649394, + 0.011485812, + 0.026978897, + -0.018709112, + -0.03193056, + -0.012162199, + 0.021376373, + 0.008435691, + -0.020074647, + -0.02389049, + -0.022984387, + 0.017152147, + -0.0109817125, + -0.01976836, + 0.030781977, + -0.01260887, + -0.0076508275, + 0.002065851, + 0.012787538, + 0.01850492, + 0.017700912, + 0.0027645712, + -0.0052834735, + -0.01159429, + -0.008563311, + 0.029148439, + 0.012149437, + 0.0067766295, + -0.013821261, + 0.0063522924, + -0.0046868497, + 0.013476687, + 0.011664481, + -0.0032463372, + 0.018658064, + -0.005666334, + -0.0031266934, + -0.0043199416, + -0.023877729, + -0.01425517, + -0.0040264153, + 0.050792817, + 0.01634814, + 0.012564203, + -0.005950289, + -0.009654463, + -0.018262442, + -0.012015436, + 0.01703729, + 0.0048240414, + -0.0037233175, + -0.01236001, + -0.0010496756, + 0.027642522, + 0.023596963, + -0.053243123, + -0.008231499, + 0.018262442, + -0.0013639402, + -0.024809355, + 0.012755632, + -0.0038605093, + 0.008505883, + 0.0132086845, + 0.00033719634, + -0.001473215, + -0.006103433, + -0.0029496204, + 0.022333525, + 0.0062246723, + -0.017586054, + -0.007382825, + -0.03440639, + -0.010113896, + 0.024247827, + -0.0069425358, + -0.018339014, + -0.0144338375, + 0.018275203, + 0.009112078, + -0.014523172, + 0.0035382684, + 0.014114787, + -0.0070382506, + -0.0020291603, + -0.039434623, + -0.01013942, + -0.013527735, + 0.01362983, + 0.011492194, + 0.005190949, + 0.009099316, + -0.0032622898, + 0.021376373, + 0.010656281, + 0.02649394, + -0.038388137, + 0.018466635, + 0.007465778, + 0.0027613807, + 0.012876872, + -0.015352703, + 0.00228121, + -0.024120206, + -0.011996293, + -0.016360901, + 0.017956154, + 0.0031346697, + 0.0512012, + -0.008856838, + -0.031726368, + 0.033308856, + -0.024158493, + 0.0015027272, + 0.0121941045, + 0.0007314229, + -0.022831243, + -0.0118559105, + -0.0111795245, + 0.013706403, + 0.020176744, + -0.016590618, + -0.0045751818, + -0.00020319519, + -0.029812064, + 0.027463853, + -0.02807643, + -0.0013352257, + 0.028714532, + 0.002611427, + 0.011236954, + 0.015442037, + -0.018709112, + -0.019053686, + 0.014459361, + 0.026111081, + 0.0031665748, + -0.0010576519, + 0.019998075, + -0.008754741, + -0.022027235, + -0.011504956, + 0.0010209611, + -0.0361165, + -0.01596528, + -0.014459361, + -0.00003359999, + 0.014625268, + 0.0084612155, + 0.029888637, + -0.020036362, + -0.020100173, + 0.005685477, + -0.012781157, + -0.0077848285, + 0.007185014, + -0.006240625 ] }, { "object": "embedding", "index": 4, "embedding": [ - 0.0068770517, - -0.005129081, - -0.0014808308, - -0.018895945, - -0.0009433618, - 0.019852862, - -0.027329583, - -0.020312183, - 0.010353854, - -0.009811601, - 0.0014904, - 0.009658494, - -0.0073937876, - 0.008388982, - -0.017377634, - -0.0047814013, - 0.030340685, - 0.021932565, - 0.024790559, - -0.006066861, - -0.031437952, - 0.01344789, - 0.00350551, - 0.0038978467, - -0.020771503, - 0.000071370145, - 0.013881693, - -0.015833806, - 0.016752448, - 0.012950292, - 0.022072911, - -0.011661642, - 0.0074894796, - -0.03613323, - -0.020503566, - 0.010449546, - 0.0019473284, - -0.005786165, - 0.018717319, - -0.012688735, - 0.005798924, - 0.00630928, - 0.004127507, - 0.000023511779, - -0.008567607, - 0.015999671, - 0.017811436, - 0.0016163943, - -0.012918395, - 0.008810027, - 0.00923107, - 0.030493792, - -0.03299454, - -0.0053236545, - -0.0007499846, - -0.027227512, - -0.015923118, - 0.02268534, - -0.02208567, - -0.020656673, - -0.0024832026, - -0.010105056, - -0.0002422199, - -0.016943831, - 0.0021913426, - -0.003495941, - -0.021409448, - 0.0032886087, - -0.0030605432, - 0.0050429585, - 0.024867114, - 0.03447457, - 0.002315742, - 0.006395403, - 0.04072644, - 0.00724706, - 0.0017431859, - 0.023999507, - -0.012140102, - -0.0018675852, - -0.00268894, - -0.01846214, - -0.011629745, - -0.011827508, - 0.026640601, - 0.004172163, - -0.0019919847, - 0.01029006, - -0.0021546606, - -0.018870426, - -0.004220009, - 0.02676819, - 0.027482688, - 0.004650622, - -0.0018245239, - 0.02174118, - 0.022493957, - 0.015731735, - 0.031846236, - -0.032382112, - 0.0053938287, - 0.031284843, - -0.03424491, - 0.00654532, - -0.03299454, - -0.021039441, - 0.0036586171, - -0.010487823, - 0.021830494, - -0.017237285, - -0.0155658685, - 0.021115994, - 0.037358083, - -0.013728586, - -0.012471833, - -0.023195695, - 0.035393212, - -0.00794242, - -0.010379372, - -0.011961477, - -0.0005334819, - 0.04605966, - 0.022621546, - -0.040828507, - 0.026793709, - 0.0011801991, - -0.00946711, - -0.026793709, - 0.0031769683, - 0.0070429174, - 0.005109943, - 0.016293127, - 0.006928087, - 0.02023563, - -0.011202321, - -0.0040158667, - -0.031973824, - 0.018653525, - 0.004988733, - -0.01857697, - 0.01286098, - 0.031437952, - -0.017275563, - -0.009664874, - -0.0085165715, - 0.031999342, - 0.022404643, - -0.010436787, - -0.012931154, - -0.002912221, - 0.0035023205, - -0.008886579, - 0.003180158, - 0.0024624693, - 0.009384178, - 0.0039201747, - -0.0018867236, - 0.004456049, - -0.032815915, - -0.0015199049, - -0.018219722, - 0.014085835, - 0.033096608, - -0.0029170054, - 0.03802155, - 0.018436624, - 0.0029010568, - -0.0032184348, - -0.002256732, - -0.0074575823, - -0.0061402246, - 0.04128783, - -0.013588238, - 0.012267691, - 0.008841923, - 0.008829165, - 0.0025438075, - 0.0023651826, - -0.017352115, - -0.008918477, - -0.026589565, - -0.0025166948, - 0.011393705, - -0.0018835339, - 0.0074384436, - -0.005071666, - 0.014685504, - -0.0060732407, - 0.0054002083, - -0.015757252, - 0.030417237, - 0.010245403, - 0.0036075814, - -0.028452367, - -0.6863272, - -0.036796693, - 0.018883185, - 0.0051641683, - 0.018423865, - 0.031514503, - 0.010564377, - 0.023540186, - 0.0046570017, - -0.010392131, - 0.010200747, - 0.011074733, - 0.016318643, - -0.009384178, - -0.009077963, - -0.015336208, - -0.008835544, - 0.0016873657, - 0.011821128, - 0.007087574, - 0.0010071563, - 0.009084343, - -0.01953389, - 0.00561073, - 0.020745985, - -0.002057374, - 0.0068323957, - 0.0043444084, - -0.010691965, - 0.0031594248, - -0.020516325, - 0.010436787, - -0.028784098, - -0.0093459, - 0.046672087, - 0.0048228675, - -0.005412967, - 0.017147973, - 0.008146564, - 0.012644079, - -0.0029201952, - 0.0041913013, - 0.0134861665, - -0.027559243, - -0.012254932, - 0.019686997, - 0.0051003736, - 0.010302818, - 0.021103235, - 0.0001587886, - 0.023489151, - -0.005684094, - 0.023961231, - 0.0068579135, - 0.02350191, - 0.0005055718, - 0.031488985, - -0.00064552104, - -0.0037574987, - 0.0052598603, - -0.0007049297, - 0.006870672, - -0.026921296, - -0.022583269, - -0.022647062, - 0.013243747, - -0.027201993, - -0.029728258, - -0.008522951, - 0.0037511191, - -0.0014800334, - 0.014366531, - -0.008663299, - 0.015948636, - 0.02278741, - -0.0027383808, - 0.020605637, - 0.0070429174, - 0.0022647062, - 0.008089148, - -0.0011786042, - -0.022226019, - -0.006012636, - -0.00023683724, - 0.03169313, - -0.03330075, - -0.030621381, - -0.028579956, - 0.015923118, - -0.017352115, - 0.035112515, - 0.02302983, - -0.016765205, - -0.0066792886, - -0.0072534396, - 0.014774816, - 0.008899339, - 0.007878626, - 0.005310896, - -0.010424028, - 0.010066779, - -0.0055565047, - -0.0011307583, - 0.010283681, - 0.017964544, - -0.00018211348, - -0.02208567, - 0.026385423, - 0.014009282, - 0.0038691391, - 0.026717154, - -0.010258162, - -0.011648884, - 0.018857667, - 0.008765371, - -0.025670923, - 0.03835328, - 0.0013612161, - 0.011610607, - -0.009218312, - 0.0144303255, - 0.02304259, - -0.0056745247, - -0.0007272578, - 0.0016458993, - -0.0012232604, - -0.011604227, - -0.009256588, - -0.037511192, - -0.0027527346, - 0.003435336, - 0.0012511705, - 0.016088983, - 0.0055565047, - 0.0074065463, - -0.004232768, - 0.0056872834, - -0.014978959, - 0.022481197, - -0.01649727, - -0.014940682, - -0.0061785015, - -0.013230988, - 0.004969595, - -0.0012105014, - -0.019125605, - -0.043303736, - -0.0072789574, - -0.0125420075, - 0.018640766, - -0.01636968, - -0.009894534, - -0.029141348, - 0.014404808, - 0.016650375, - 0.00013506501, - -0.022710858, - -0.01029006, - 0.0010478253, - 0.015208619, - 0.014506879, - -0.007623448, - -0.012076307, - -0.003074897, - -0.008899339, - -0.033632483, - -0.0069599845, - 0.02653853, - -0.009007789, - -0.016101742, - 0.0017320218, - -0.012605802, - -0.016535545, - -0.013371336, - -0.018041097, - -0.016905554, - -0.024573658, - -0.025428506, - -0.0007563641, - -0.018245239, - 0.0022583269, - 0.025581611, - 0.0100348815, - -0.020848056, - 0.04748866, - -0.019623201, - 0.012669596, - 0.026002657, - -0.012599423, - 0.015336208, - -0.0018915082, - -0.011616986, - -0.018130409, - -0.001996769, - 0.020733226, - 0.008440018, - 0.002816529, - 0.008580366, - 0.01227407, - -0.012025272, - 0.015259655, - -0.0031004148, - 0.015425521, - -0.026155762, - 0.0006566851, - -0.036311854, - 0.021090476, - -0.0022758704, - 0.014251701, - 0.01964872, - 0.010953523, - -0.014749299, - -0.003936123, - -0.012924775, - 0.008861062, - -0.018206963, - -0.013983764, - 0.008114666, - 0.006487905, - -0.009071584, - 0.00408923, - 0.018309034, - 0.018628007, - -0.0082358755, - -0.019916655, - 0.0028005803, - 0.029779293, - 0.016688652, - -0.0040190564, - -0.0060572918, - -0.021447726, - 0.005154599, - -0.018857667, - 0.0038691391, - -0.03610771, - -0.00048204753, - 0.0030764919, - -0.026819225, - 0.010207127, - 0.007929661, - -0.00993919, - 0.03541873, - 0.018155927, - -0.018832149, - 0.020835297, - -0.008350706, - 0.027278546, - 0.021639109, - -0.013690309, - 0.012994949, - -0.00561392, - -0.0009928026, - -0.01612726, - 0.01823248, - 0.027686832, - -0.020184593, - 0.044043753, - 0.0021546606, - 0.03146347, - 0.008121045, - -0.007585171, - -0.012337864, - 0.0032120552, - -0.021179788, - 0.02385916, - -0.0066218735, - -0.0123889, - 0.0015677509, - -0.008950374, - -0.015935877, - -0.00806363, - 0.0059775487, - 0.0021100044, - 0.006334798, - 0.0035852534, - -0.011655263, - 0.00012459872, - -0.0031689939, - 0.03192279, - 0.013026846, - 0.00584677, - -0.032662805, - 0.013001328, - 0.006851534, - -0.006328419, - -0.0069982614, - -0.008025354, - 0.0072534396, - -0.0038404316, - -0.006382644, - 0.00397121, - 0.020159075, - 0.0063379877, - -0.0091800345, - 0.011368188, - -0.017352115, - -0.0029536874, - 0.0058180625, - 0.0022838446, - 0.006615494, - 0.002877134, - -0.03005999, - -0.02607921, - -0.008695196, - -0.0024050542, - 0.010156091, - -0.0073937876, - 0.010589894, - -0.02689578, - -0.026257833, - 0.018538695, - 0.0010071563, - 0.0067048064, - -0.0077446573, - -0.0037319807, - -0.0076553454, - -0.032560736, - -0.0009026928, - 0.03610771, - 0.010328337, - 0.009849877, - -0.021243583, - -0.0222005, - -0.00068619003, - 0.07405271, - 0.026564049, - 0.0062486753, - 0.010928005, - 0.0201208, - -0.008631402, - -0.02162635, - 0.002784632, - -0.00736827, - -0.010698345, - 0.005645817, - 0.0008412905, - -0.00095053867, - 0.0067749806, - 0.013077881, - -0.012688735, - 0.008886579, - -0.00467614, - 0.025186086, - -0.026997851, - -0.008778129, - 0.029753774, - -0.014404808, - 0.0041083684, - 0.0029217901, - 0.005409777, - 0.017569017, - 0.0044018235, - 0.024139855, - -0.02046529, - 0.006813257, - 0.01986562, - -0.0031721836, - -0.01460895, - -0.011521295, - 0.0075596534, - -0.026487494, - -0.0058595287, - 0.008663299, - -0.027431654, - 0.029957918, - 0.010481443, - 0.009186414, - -0.009837119, - -0.01133629, - 0.011942338, - -0.010341096, - 0.03332627, - -0.017849714, - -0.017760402, - 0.025466781, - -0.0032535216, - -0.010105056, - -0.01273977, - 0.013843416, - 0.006889811, - -0.025772996, - 0.007789314, - -0.010328337, - -0.0054448643, - -0.0017384014, - -0.0036873247, - -0.009913672, - -0.00865054, - -0.010130573, - -0.008918477, - 0.0009274132, - -0.0038212931, - -0.0166121, - 0.015935877, - 0.008152942, - -0.012203896, - -0.01684176, - -0.0006196045, - 0.023233972, - 0.011010938, - 0.010245403, - -0.0068004983, - -0.008331567, - 0.0451155, - 0.0073108547, - -0.0146217095, - -0.0031402863, - 0.011010938, - -0.00013446693, - 0.000114032744, - 0.021230824, - -0.017135214, - -0.018283516, - 0.00034568668, - 0.041543007, - -0.0064145415, - 0.027278546, - -0.009862636, - -0.009798842, - -0.0028356675, - 0.014328254, - 0.0039425027, - -0.022417402, - -0.010232645, - 0.010583514, - -0.01894698, - -0.0021881529, - -0.025785754, - 0.0068387752, - 0.0042838035, - 0.012816324, - -0.012331485, - -0.027814422, - 0.007840349, - 0.021817734, - -0.01181475, - -0.0023300957, - -0.011884923, - -0.008038113, - 0.010781278, - 0.006111517, - 0.0122613115, - -0.0036777554, - -0.024841595, - 0.017033143, - -0.050091475, - 0.02817167, - -0.0004844398, - -0.007349131, - -0.014111353, - 0.0114575, - -0.013932728, - -0.003237573, - 0.026640601, - -0.008497433, - 0.01800282, - -0.022876723, - -0.013894452, - -0.05506745, - -0.02852892, - 0.02559437, - 0.01695659, - -0.015974153, - -0.010711104, - -0.00268894, - 0.015234137, - 0.0024927717, - -0.0012934344, - -0.04151749, - -0.019967692, - -0.0008779724, - 0.026513012, - -0.014672745, - 0.02653853, - -0.0072151627, - 0.020962887, - 0.0038595698, - 0.023170179, - 0.0008652135, - -0.0031307172, - -0.015604145, - -0.009684011, - 0.023540186, - 0.024190892, - 0.00080221635, - -0.00058132777, - 0.0008731878, - -0.0021100044, - -0.0114064645, - -0.0010079538, - -0.009052446, - -0.0025996277, - -0.019202158, - 0.011068353, - 0.03472975, - 0.0120699275, - 0.019457337, - -0.006685668, - 0.015744492, - 0.008982272, - 0.001835688, - -0.015744492, - -0.035010446, - -0.04560034, - 0.0024002697, - -0.0011004559, - -0.013996523, - -0.0011650479, - -0.0016195839, - 0.0027495448, - 0.018270757, - 0.0073810285, - 0.007987076, - 0.0063188495, - 0.033709038, - -0.0015087409, - 0.041211274, - -0.00993281, - -0.0022200502, - -0.0026713966, - -0.022430161, - -0.00062040193, - 0.013179952, - -0.005224773, - 0.014200665, - 0.0041083684, - 0.010711104, - -0.020018728, - 0.019495612, - 0.0092246905, - 0.024050543, - 0.0012065143, - -0.0007946408, - -0.009779704, - -0.02500746, - -0.032866947, - -0.038633976, - -0.028784098, - 0.009122619, - 0.00036422696, - -0.030544827, - 0.020095281, - 0.0076872422, - -0.03228004, - 0.0050206305, - 0.014634469, - 0.023233972, - -0.00935228, - 0.022698099, - 0.00794242, - -0.013269265, - -0.0023013882, - -0.0034193876, - -0.016548304, - 0.012912015, - 0.033658, - 0.017798677, - -0.009632976, - 0.0074767205, - 0.010889729, - 0.005987118, - 0.011859406, - -0.013230988, - -0.0113618085, - 0.010009364, - 0.008172081, - -0.020822538, - 0.012471833, - -0.0109790405, - 0.019508371, - -0.021128753, - -0.009837119, - -0.0003379117, - -0.02280017, - -0.0024289773, - 0.004232768, - -0.037970513, - 0.01017523, - 0.01834731, - 0.011310773, - -0.007144989, - 0.008337947, - -0.0026857504, - -0.0027208372, - -0.014060318, - 0.004771832, - -0.015412762, - 0.0023556135, - -0.00040210498, - 0.007751037, - -0.019036291, - -0.0042646653, - -0.00062319293, - 0.02596438, - -0.006921708, - -0.007087574, - -0.017211767, - 0.010124194, - 0.042640273, - -0.031999342, - -0.00024720386, - 0.0032917985, - -0.001263132, - -0.009792462, - 0.0028835135, - -0.0014282003, - -0.010928005, - 0.02643646, - -0.0122613115, - -0.011750955, - -0.016305884, - -0.016561063, - 0.0035501663, - -0.007342752, - -0.0038531905, - -0.016982108, - 0.011036456, - 0.013779622, - 0.002958472, - -0.002326906, - 0.015502074, - 0.0035246485, - -0.027482688, - 0.033045575, - -0.0155658685, - 0.005550125, - 0.00023105586, - 0.010953523, - -0.002489582, - 0.001163453, - 0.030008953, - -0.001133948, - -0.02058012, - -0.008446397, - 0.0047271755, - -0.0074639614, - -0.004969595, - -0.015323449, - -0.005409777, - -0.003987159, - 0.015489315, - -0.009575561, - -0.008376224, - -0.016216572, - -0.014876887, - -0.008344326, - 0.014927923, - -0.014774816, - -0.0068196366, - 0.018959738, - -0.003145071, - -0.00021112007, - -0.02139669, - -0.014098594, - -0.0109918, - 0.007846729, - 0.0026394993, - -0.019214917, - 0.0017750831, - -0.017990062, - 0.0008444803, - -0.0035501663, - 0.001239209, - 0.0083251875, - 0.007068435, - 0.014404808, - -0.022353608, - 0.023527427, - -0.007872246, - 0.0021466864, - -0.009447972, - -0.0022391884, - -0.026513012, - 0.0021291429, - -0.008567607, - 0.005272619, - 0.0060413433, - -0.027482688, - -0.026040932, - 0.012829083, - -0.012133722, - 0.008714335, - 0.0067622215, - -0.0047973497, - 0.01426446, - 0.0014744514, - -0.017415911, - 0.030136542, - -0.00958194, - 0.005527797, - -0.023578463, - 0.0021020302, - -0.010947144, - -0.019597683, - -0.009486249, - 0.02000597, - -0.0005761445, - -0.01800282, - 0.019304229, - -0.00421044, - -0.0014935897, - -0.01273977, - 0.003543787, - -0.0016618478, - 0.01614002, - 0.0033045574, - 0.027150957, - -0.0048420057, - 0.01098542, - -0.007725519, - 0.00044496695, - 0.007923283, - 0.022583269, - -0.008503812, - -0.006787739, - 0.012031651, - -0.01029006, - -0.011042835, - -0.028222706, - 0.023603981, - -0.012280449, - 0.013358577, - 0.019610442, - -0.016688652, - -0.00034867704, - 0.031284843, - -0.0077956934, - -0.016063467, - -0.018028338, - 0.0029871794, - -0.019954933, - -0.0069599845, - 0.0050652865, - -0.016382439, - 0.0039010362, - -0.025568852, - -0.007387408, - -0.031004148, - -0.0150937885, - -0.019355264, - 0.0049408874, - -0.026359905, - 0.023948472, - 0.028350295, - -0.02513505, - 0.0004641053, - -0.028350295, - -0.0022009118, - -0.011948718, - -0.007272578, - -0.007004641, - -0.041823704, - -0.026691636, - -0.010207127, - -0.007897764, - -0.02023563, - 0.0009561207, - -0.0025629457, - 0.0005761445, - 0.021077717, - 0.22863965, - -0.003027051, - -0.01684176, - 0.034780785, - -0.0035597356, - 0.023910195, - 0.034576643, - -0.0063411775, - 0.013498926, - 0.042283025, - -0.008286911, - 0.0077318987, - 0.0002669403, - 0.0004170568, - 0.022136707, - -0.025887826, - -0.015400003, - -0.020133559, - -0.013384095, - -0.010232645, - 0.02047805, - -0.0155658685, - 0.0093459, - 0.008121045, - 0.03998642, - 0.0021514709, - -0.01731384, - 0.0073746494, - 0.019112846, - 0.0038372418, - -0.004596397, - -0.0026985093, - 0.0013811518, - -0.012050789, - -0.01449412, - 0.012988569, - 0.0062997113, - 0.012535628, - 0.026742673, - 0.037587743, - 0.004950457, - 0.016701411, - -0.022710858, - -0.005288568, - -0.008146564, - 0.016790723, - -0.02047805, - 0.010219886, - 0.02280017, - 0.004736745, - -0.015502074, - 0.005237532, - 0.01906181, - 0.017288322, - -0.0027511397, - 0.021639109, - 0.033377305, - -0.0026921297, - 0.021013923, - -0.019686997, - -0.00854209, - 0.017505223, - -0.019087328, - 0.008790888, - 0.0015860918, - -0.016395198, - -0.0070939534, - -0.0053204647, - 0.016854519, - -0.009033307, - 0.015055512, - 0.010526099, - 0.01939354, - 0.01591036, - -0.0077191396, - -0.013907211, - 0.031131737, - 0.002465659, - 0.023208454, - -0.0009760565, - -0.008459156, - -0.0020717278, - -0.022838447, - 0.0016586581, - -0.0049153697, - -0.024714006, - 0.015068271, - 0.0038755185, - 0.02232809, - -0.015144825, - 0.0015701432, - -0.002932954, - 0.011253358, - -0.012841841, - 0.020184593, - 0.025415746, - -0.009243829, - 0.021664627, - -0.02606645, - 0.012401659, - -0.031642094, - -0.02666612, - 0.0072917165, - -0.016510028, - -0.0077829342, - 0.008797267, - 0.002583679, - 0.011266116, - 0.020950127, - 0.008267772, - -0.015718976, - -0.0018931031, - 0.010258162, - -0.017517982, - 0.02000597, - -0.005926513, - 0.0046857093, - -0.019699754, - -0.004889852, - -0.021115994, - -0.012969431, - -0.027559243, - -0.0075022383, - 0.008121045, - -0.008733473, - -0.002759114, - 0.0062486753, - 0.008790888, - 0.001432985, - -0.05014251, - 0.017122455, - 0.0058850464, - 0.023680534, - -0.011093871, - -0.011757335, - 0.0043220804, - -0.011010938, - 0.008937616, - -0.0033268854, - 0.0071577476, - -0.01261856, - -0.017517982, - 0.017747642, - -0.016803483, - 0.0027160526, - -0.003145071, - 0.000113434675, - -0.020439772, - -0.032075897, - -0.031080702, - -0.008484675, - -0.023655016, - 0.00093618495, - -0.015948636, - 0.02980481, - 0.0025198844, - -0.018245239, - -0.016561063, - -0.0075724125, - 0.029447561, - -0.005285378, - 0.017096937, - 0.024012266, - -0.022659821, - -0.0077829342, - -0.008229496, - -0.16259953, - 0.030391721, - 0.0077574165, - -0.004175353, - -0.0028324777, - 0.0018580161, - 0.021115994, - 0.020962887, - -0.009626596, - 0.02630887, - 0.0032822292, - 0.0027383808, - -0.037944995, - -0.012675975, - -0.00421044, - 0.021575315, - -0.010609033, - -0.0030493792, - 0.015680699, - 0.0069153286, - 0.012490972, - -0.027967528, - 0.012656838, - 0.013460648, - 0.009830739, - 0.007189645, - -0.016216572, - 0.035827015, - -0.0020812969, - -0.009275727, - -0.004979164, - 0.0016793914, - 0.017403152, - 0.02197084, - 0.011597848, - 0.011546812, - -0.0031418812, - 0.0033619725, - -0.0032694703, - -0.00032794382, - 0.0027973908, - 0.02280017, - -0.008778129, - 0.008637781, - -0.0053045163, - 0.013779622, - 0.035699427, - 0.013460648, - 0.006369885, - -0.006417731, - 0.0036299096, - -0.042844415, - -0.018615248, - -0.013843416, - 0.020860815, - 0.022761893, - 0.030595863, - 0.009754186, - -0.017926266, - 0.01566794, - 0.010781278, - -0.036643587, - -0.010022122, - 0.020707708, - -0.0060381535, - -0.018015578, - 0.014787575, - 0.0006758234, - 0.0012431962, - 0.0020892713, - -0.019776309, - -0.009971087, - 0.003936123, - -0.03271384, - 0.010857832, - 0.012108204, - 0.004350788, - -0.008465536, - -0.009058825, - -0.012018892, - -0.004274234, - 0.026232317, - -0.011712678, - -0.0012567525, - -0.007961559, - 0.018257998, - -0.0051801167, - -0.007272578, - -0.026040932, - -0.0203377, - 0.025619889, - -0.05014251, - -0.002853211, - -0.0380981, - 0.011942338, - 0.018360069, - 0.0024337617, - -0.0046123452, - 0.0059934976, - -0.0042614755, - 0.016471751, - -0.005409777, - -0.016561063, - 0.011916821, - 0.015795529, - 0.01742867, - -0.009358659, - 0.0012942317, - 0.02983033, - 0.009294865, - -0.0057415087, - 0.027993046, - 0.006242296, - 0.025734719, - 0.011534054, - 0.00573194, - -0.00025816855, - -0.028375814, - -0.0009912077, - -0.0070748148, - 0.04223199, - -0.001730427, - -0.005553315, - 0.013409613, - -0.004184922, - -0.0017734884, - -0.106562406, - 0.00072047964, - 0.017147973, - 0.015387244, - -0.0018851288, - 0.006864293, - -0.007751037, - 0.01649727, - 0.012076307, - 0.030213095, - -0.0033109367, - -0.017722124, - -0.014774816, - -0.0019265952, - 0.00088195957, - -0.010781278, - 0.0055437456, - -0.032305557, - -0.030340685, - 0.0031753734, - -0.012254932, - -0.0057255602, - 0.004749504, - -0.024471587, - -0.006806878, - 0.0072661983, - -0.033504896, - 0.016433474, - 0.009071584, - -0.0028564006, - 0.010768519, - -0.009550043, - 0.022506716, - -0.008676058, - -0.015336208, - -0.0077701756, - -0.014978959, - -0.01612726, - 0.007936041, - -0.024446068, - -0.003993538, - 0.002944118, - 0.0012208681, - -0.024076061, - -0.016905554, - 0.010487823, - 0.0017080989, - 0.0064591975, - -0.0016889606, - -0.021639109, - 0.0057415087, - 0.024178132, - -0.011132148, - -0.0063411775, - 0.03998642, - -0.0060732407, - 0.008822786, - 0.0166121, - -0.01648451, - -0.00081098813, - -0.006583597, - 0.023131901, - -0.013613756, - 0.034117322, - -0.01707142, - -0.01273977, - -0.037358083, - 0.009671253, - 0.018551454, - -0.021792216, - 0.00596479, - 0.022659821, - -0.017862473, - 0.02010804, - -0.008261394, - 0.004864334, - -0.019457337, - -0.024535382, - 0.015361726, - -0.027916493, - -0.032229003, - -0.031157255, - 0.009428834, - -0.02232809, - -0.0071960245, - 0.02583679, - -0.0039680204, - -0.011955097, - 0.027814422, - -0.0026490684, - 0.0074767205, - 0.04243613, - 0.0074639614, - -0.036337372, - -0.016344162, - 0.025875067, - -0.0011554786, - -0.013192711, - -0.008082769, - -0.014417566, - -0.021753939, - -0.005834011, - -0.036975317, - 0.02374433, - -0.029013759, - -0.026206799, - 0.007087574, - 0.012427177, - 0.0014951846, - -0.009722289, - -0.019508371, - -0.0066920477, - -0.026844744, - 0.008210357, - -0.010379372, - -0.017977303, - -0.017326597, - -0.0006826016, - 0.021945324, - -0.0025788944, - 0.01834731, - -0.00036103724, - 0.0057191807, - 0.0064719566, - 0.015693458, - 0.0021530658, - -0.03376007, - 0.012484592, - -0.032203484, - -0.01110663, - -0.023591222, - 0.000672235, - 0.014200665, - -0.012727011, - 0.021473244, - 0.029677222, - -0.020988405, - -0.022417402, - -0.010883349, - 0.02676819, - 0.0114064645, - -0.01718625, - -0.022532232, - -0.026091969, - 0.014532397, - -0.0166121, - -0.016854519, - 0.020439772, - 0.0005538164, - -0.0059679793, - 0.007189645, - -0.0019393541, - 0.008459156, - 0.023425356, - 0.027661314, - -0.014455844, - -0.0040031075, - -0.0018532315, - 0.022991553, - 0.021128753, - -0.007846729, - -0.00970315, - 0.006347557, - -0.0065293717, - 0.011298014, - 0.021026682, - -0.0029393337, - 0.0072343014, - -0.009805221, - 0.0060828095, - 0.010640929, - -0.03133588, - -0.010832313, - -0.008682437, - 0.033402823, - 0.0012272475, - 0.02983033, - 0.0012184758, - -0.004548551, - -0.008006215, - -0.009741426, - 0.0194063, - 0.009645735, - -0.00017573404, - -0.019942174, - 0.00036043918, - 0.025913343, - 0.025772996, - -0.035852533, - -0.019495612, - 0.016152779, - -0.0044018235, - -0.023170179, - 0.013766862, - -0.011036456, - 0.014328254, - 0.0028245035, - 0.0015438279, - 0.008095528, - -0.0057478882, - -0.0036905142, - 0.039654687, - 0.0006219968, - -0.0041211275, - -0.012108204, - -0.02036322, - -0.019610442, - 0.00041466454, - -0.018972497, - -0.009505387, - -0.010379372, - 0.00020892713, - -0.010921625, - 0.0041434555, - -0.009569181, - 0.024611935, - -0.011374567, - 0.0071832654, - -0.04360995, - -0.016510028, - -0.022915, - 0.014711021, - 0.0017846524, - 0.00537469, - 0.008057251, - -0.004452859, - 0.025032979, - 0.017466946, - 0.03176968, - -0.011738196, - -0.0053140856, - 0.024573658, - 0.0063156597, - -0.015208619, - 0.015042753, - -0.020427013, - -0.02161359, - -0.00807001, - -0.015718976, - 0.028860651, - -0.00019287881, - 0.04779487, - -0.0029010568, - -0.018398346, - 0.029294454, - -0.0052758087, - -0.00022527447, - 0.0074193054, - 0.012886498, - -0.012561145, - -0.011789232, - -0.0130140865, - -0.0012248552, - 0.025734719, - -0.0016921503, - -0.009849877, - -0.000100326884, - -0.032637287, - 0.03330075, - -0.03962917, - -0.011795611, - 0.009715909, - 0.004979164, - 0.024714006, - 0.009039687, - -0.016433474, - -0.0004090825, - 0.010430408, - 0.015706217, - -0.01916388, - -0.008248635, - 0.013983764, - -0.011317152, - -0.037204977, - -0.009664874, - 0.00783397, - -0.027814422, - -0.014978959, - -0.026461976, - -0.001298219, - 0.014098594, - 0.012216655, - 0.010545238, - -0.029090311, - -0.03296902, - -0.0073555107, - -0.0043794955, - -0.02373157, - -0.0035469767, - -0.022034636 + 0.006868671, + -0.005114832, + -0.0014453228, + -0.01894146, + -0.0009566394, + 0.019796059, + -0.027321622, + -0.020331776, + 0.010363594, + -0.009776855, + 0.0014493087, + 0.009668436, + -0.0074171443, + 0.008392916, + -0.017372573, + -0.0047576865, + 0.030357357, + 0.021938931, + 0.024796093, + -0.0060714716, + -0.031377774, + 0.013520503, + 0.0034949228, + 0.0038935225, + -0.020752698, + 0.00006497176, + 0.013941425, + -0.015790928, + 0.016785832, + 0.0129784085, + 0.022079239, + -0.011664623, + 0.007468165, + -0.036071684, + -0.02051035, + 0.0104528805, + 0.0019148733, + -0.005797235, + 0.018660847, + -0.012672284, + 0.0058355005, + 0.0063201976, + 0.0041007944, + 0.000064324035, + -0.008590622, + 0.016058788, + 0.017806249, + 0.0016836853, + -0.012933765, + 0.008826593, + 0.009190116, + 0.03048491, + -0.032959417, + -0.0052934047, + -0.00075255637, + -0.02719407, + -0.01589297, + 0.022653222, + -0.022091992, + -0.02061239, + -0.002448997, + -0.010025581, + -0.00020358483, + -0.01690063, + 0.0022034594, + -0.0035013002, + -0.021364948, + 0.0033131612, + -0.0030453021, + 0.005006413, + 0.024821604, + 0.03446453, + 0.002297529, + 0.006431806, + 0.040714573, + 0.0072768372, + 0.0016597694, + 0.023941496, + -0.01212381, + -0.0018431253, + -0.002724828, + -0.018469518, + -0.011651868, + -0.011824063, + 0.02658182, + 0.0041805143, + -0.0021014179, + 0.01029344, + -0.0021540332, + -0.018852174, + -0.004215591, + 0.026785905, + 0.027449174, + 0.0045791143, + -0.0018510973, + 0.021722093, + 0.022512915, + 0.015714398, + 0.03178594, + -0.032398187, + 0.005338048, + 0.03127573, + -0.034260448, + 0.006505148, + -0.033010438, + -0.021033311, + 0.0036894393, + -0.010446503, + 0.021862399, + -0.017181244, + -0.015561335, + 0.021109844, + 0.0373472, + -0.013762852, + -0.012506466, + -0.02318894, + 0.03530637, + -0.007927352, + -0.010395481, + -0.011951615, + -0.00053930545, + 0.046046246, + 0.022640467, + -0.040791105, + 0.026760394, + 0.0011989881, + -0.009477108, + -0.026811413, + 0.0031696653, + 0.007104642, + 0.005067, + 0.016288381, + 0.00695158, + 0.02024249, + -0.011135283, + -0.004014697, + -0.03199002, + 0.018686356, + 0.004945826, + -0.018635336, + 0.012825346, + 0.031377774, + -0.017308796, + -0.009668436, + -0.008494958, + 0.031913493, + 0.022423629, + -0.010350838, + -0.012908255, + -0.002881079, + 0.0034853562, + -0.008909502, + 0.0031537213, + 0.0024904513, + 0.00944522, + 0.0039541097, + -0.0018654469, + 0.004454751, + -0.032755334, + -0.0014859799, + -0.018188905, + 0.014081732, + 0.03308697, + -0.0028842678, + 0.038010474, + 0.018507784, + 0.0028954286, + -0.003252574, + -0.002217809, + -0.0074745426, + -0.006125681, + 0.041275803, + -0.013584279, + 0.012225851, + 0.00880746, + 0.008794705, + 0.0025701711, + 0.002401165, + -0.017347062, + -0.008877614, + -0.026556311, + -0.0025127728, + 0.011384009, + -0.0018813908, + 0.007391634, + -0.00504149, + 0.014617451, + -0.0060140733, + 0.005382691, + -0.015790928, + 0.030357357, + 0.010287062, + 0.0035618874, + -0.028418569, + -0.6865355, + -0.036811486, + 0.018852174, + 0.0051275874, + 0.018456763, + 0.031505324, + 0.010554922, + 0.023571596, + 0.0046779667, + -0.010344461, + 0.010242419, + 0.011039619, + 0.016301136, + -0.009355933, + -0.009037054, + -0.015306231, + -0.008839348, + 0.001682091, + 0.011773042, + 0.007053621, + 0.0009598282, + 0.0090944525, + -0.019515444, + 0.0056409836, + 0.020739943, + -0.002053586, + 0.0067921397, + 0.004330388, + -0.010650585, + 0.0031919868, + -0.02051035, + 0.010414614, + -0.028801223, + -0.009387822, + 0.046684004, + 0.0048565394, + -0.00541139, + 0.017155733, + 0.008105924, + 0.012640395, + -0.0029018063, + 0.0041422485, + 0.013482238, + -0.027576726, + -0.012270495, + 0.019681262, + 0.005035112, + 0.010274308, + 0.021160863, + 0.00012944527, + 0.023507819, + -0.00565055, + 0.024005271, + 0.006868671, + 0.023507819, + 0.00048669032, + 0.031403285, + -0.0006281932, + -0.003759593, + 0.0052360063, + -0.00068718597, + 0.006881426, + -0.026887946, + -0.0226022, + -0.022653222, + 0.01321438, + -0.02719407, + -0.029719599, + -0.008507714, + 0.0037978585, + -0.0015370006, + 0.0143368365, + -0.008654398, + 0.015943991, + 0.022768019, + -0.0027391776, + 0.02053586, + 0.007008978, + 0.0022879627, + 0.0080804145, + -0.0011128905, + -0.02215577, + -0.0060045067, + -0.00022819836, + 0.031709407, + -0.03324003, + -0.03053593, + -0.028622651, + 0.015905725, + -0.017347062, + 0.0351278, + 0.023035876, + -0.016798588, + -0.006747497, + -0.0072066835, + 0.014681227, + 0.0089669, + 0.007863576, + 0.005302971, + -0.010414614, + 0.010057469, + -0.005574019, + -0.0011304289, + 0.010338083, + 0.01798482, + -0.00018833838, + -0.022079239, + 0.026352227, + 0.014017956, + 0.0038425017, + 0.026683861, + -0.010287062, + -0.011664623, + 0.018775644, + 0.008775572, + -0.025676202, + 0.038316596, + 0.0013560364, + 0.011581714, + -0.00926027, + 0.014413367, + 0.023074143, + -0.0057111373, + -0.00073222775, + 0.0015314203, + -0.0012555892, + -0.011639113, + -0.009253892, + -0.037500266, + -0.0027487439, + 0.003443902, + 0.0011862329, + 0.016071543, + 0.005586774, + 0.0073661236, + -0.004292122, + 0.005685627, + -0.014974596, + 0.022487404, + -0.016479708, + -0.01491082, + -0.006170324, + -0.01321438, + 0.0050191684, + -0.0012173237, + -0.01913279, + -0.04326561, + -0.0072704596, + -0.012538354, + 0.018711867, + -0.016326645, + -0.009847009, + -0.02918388, + 0.0143368365, + 0.016632771, + 0.00010742264, + -0.022729753, + -0.010338083, + 0.0010435341, + 0.015191434, + 0.014579184, + -0.007659493, + -0.012047279, + -0.0031186445, + -0.00894139, + -0.033571664, + -0.006919692, + 0.02650529, + -0.009011543, + -0.016097052, + 0.0017187622, + -0.012659528, + -0.01658175, + -0.013341931, + -0.018061353, + -0.016913384, + -0.024579255, + -0.025421098, + -0.00076571014, + -0.01825268, + 0.002225781, + 0.025561405, + 0.010070224, + -0.020841984, + 0.047525845, + -0.019668506, + 0.012659528, + 0.025969572, + -0.012544732, + 0.015331741, + -0.0019356004, + -0.011613603, + -0.018137883, + -0.0020312644, + 0.020778209, + 0.008450315, + 0.0028061422, + 0.008603377, + 0.012308761, + -0.012034524, + 0.015242455, + -0.0031409662, + 0.015408272, + -0.026148144, + 0.0006250044, + -0.036301278, + 0.021084333, + -0.002337389, + 0.01422204, + 0.019655751, + 0.010880179, + -0.014783268, + -0.0039285994, + -0.012940142, + 0.008871236, + -0.018214414, + -0.013992446, + 0.008112302, + 0.006505148, + -0.009107207, + 0.004091228, + 0.018341966, + 0.018609826, + -0.008233476, + -0.019872589, + 0.0027870096, + 0.029770618, + 0.016658282, + -0.004008319, + -0.005991752, + -0.021428723, + 0.005178608, + -0.01886493, + 0.003852068, + -0.036148217, + -0.0004815085, + 0.0030453021, + -0.026760394, + 0.010261552, + 0.0079082195, + -0.0099362945, + 0.035408415, + 0.018150639, + -0.018775644, + 0.020829229, + -0.0082972525, + 0.027245091, + 0.021709338, + -0.013724587, + 0.012972031, + -0.005618662, + -0.0009725834, + -0.016122563, + 0.01825268, + 0.027653256, + -0.02016596, + 0.044056434, + 0.0021205507, + 0.031454302, + 0.008125057, + -0.0075383186, + -0.012359781, + 0.0031792317, + -0.021237396, + 0.023788434, + -0.0066837207, + -0.012372537, + 0.0015808466, + -0.008973278, + -0.01599501, + -0.008086792, + 0.0059758076, + 0.0020886627, + 0.0063106315, + 0.0035714537, + -0.01159447, + 0.000062032086, + -0.0031776372, + 0.031887982, + 0.013035807, + 0.005845067, + -0.032704312, + 0.012965653, + 0.0068304054, + -0.0063393307, + -0.006983468, + -0.007952862, + 0.0073342356, + -0.0038775785, + -0.0063393307, + 0.0039572986, + 0.020178715, + 0.0063425195, + -0.009183738, + 0.011371254, + -0.017385326, + -0.0029512327, + 0.005746214, + 0.0022991234, + 0.0066709653, + 0.0028874567, + -0.030025722, + -0.026084369, + -0.008705419, + -0.0023517385, + 0.010121245, + -0.0073788785, + 0.010599565, + -0.026887946, + -0.026275696, + 0.018469518, + 0.001002877, + 0.0066837207, + -0.0077168914, + -0.0037245161, + -0.0076658707, + -0.032576762, + -0.000911199, + 0.036122706, + 0.0103891045, + 0.0098725185, + -0.021186374, + -0.02218128, + -0.00062380865, + 0.073980115, + 0.0265308, + 0.0063265753, + 0.010867423, + 0.02016596, + -0.008692663, + -0.021709338, + 0.0028460023, + -0.007391634, + -0.010701606, + 0.005589963, + 0.00090242986, + -0.00088249985, + 0.006779385, + 0.0130421845, + -0.012697794, + 0.0089669, + -0.004690722, + 0.02520426, + -0.026964476, + -0.008730929, + 0.029719599, + -0.014375102, + 0.0041326825, + 0.0029097782, + 0.0053890687, + 0.017602166, + 0.0043814084, + 0.024183845, + -0.020497594, + 0.006773007, + 0.019808814, + -0.0031409662, + -0.014668471, + -0.011466918, + 0.0075829616, + -0.02650529, + -0.005765347, + 0.008705419, + -0.027423663, + 0.02989817, + 0.01047839, + 0.00912634, + -0.009802366, + -0.011313856, + 0.011945237, + -0.010376349, + 0.033316564, + -0.01783176, + -0.017780738, + 0.02549763, + -0.0032430077, + -0.010140378, + -0.012799836, + 0.013826628, + 0.0068559158, + -0.025790999, + 0.0077998, + -0.010325328, + -0.0053986353, + -0.0016900629, + -0.0037149498, + -0.009898029, + -0.008673531, + -0.010159511, + -0.008960523, + 0.0009263458, + -0.0037882922, + -0.016568994, + 0.01591848, + 0.0080804145, + -0.012168453, + -0.016913384, + -0.00061902544, + 0.02321445, + 0.011001353, + 0.010261552, + -0.006728364, + -0.0083610285, + 0.04510236, + 0.007315103, + -0.014745003, + -0.003101106, + 0.011020486, + -0.00013691901, + 0.000087542474, + 0.02119913, + -0.017066447, + -0.01822717, + 0.00038923268, + 0.041581925, + -0.006431806, + 0.027245091, + -0.009847009, + -0.009776855, + -0.002804548, + 0.014285815, + 0.0038967112, + -0.022423629, + -0.010280685, + 0.010586809, + -0.018877685, + -0.002181138, + -0.025765488, + 0.006811273, + 0.004327199, + 0.012825346, + -0.012327894, + -0.02783183, + 0.007844443, + 0.021862399, + -0.011817685, + -0.0023740602, + -0.0119643705, + -0.008048526, + 0.010682474, + 0.0061224923, + 0.01228325, + -0.0036894393, + -0.024745073, + 0.017066447, + -0.050076883, + 0.028188976, + -0.00046994913, + -0.0072768372, + -0.014081732, + 0.01146054, + -0.013877649, + -0.003268518, + 0.026683861, + -0.008494958, + 0.0179338, + -0.02287006, + -0.013915915, + -0.05505141, + -0.02852061, + 0.025637936, + 0.017002672, + -0.015982255, + -0.010695228, + -0.0026482968, + 0.015178679, + 0.002504801, + -0.0012810996, + -0.041479886, + -0.019961877, + -0.0008179267, + 0.02650529, + -0.014655716, + 0.02650529, + -0.007219439, + 0.021033311, + 0.0038169913, + 0.023099653, + 0.0008434371, + -0.0031298052, + -0.015637865, + -0.009719457, + 0.023520574, + 0.024132824, + 0.0008243043, + -0.0006098576, + 0.0008769195, + -0.0020631524, + -0.011390387, + -0.0009446814, + -0.009030676, + -0.0026036536, + -0.019196564, + 0.011065129, + 0.034668613, + 0.012111055, + 0.019426158, + -0.0066900984, + 0.015765417, + 0.008973278, + 0.0018431253, + -0.015765417, + -0.035025757, + -0.045536038, + 0.0023724658, + -0.0010762194, + -0.013992446, + -0.0011407925, + -0.001626287, + 0.002793387, + 0.018239925, + 0.007391634, + 0.007920975, + 0.006297876, + 0.033673707, + -0.0014827912, + 0.041250292, + -0.010019204, + -0.0022050538, + -0.002672213, + -0.022372607, + -0.0006509134, + 0.013163358, + -0.0052360063, + 0.014234794, + 0.0041263048, + 0.0106697185, + -0.020076673, + 0.019489935, + 0.009241137, + 0.024069048, + 0.0011790581, + -0.0008099547, + -0.009783233, + -0.025012933, + -0.032806356, + -0.038648233, + -0.028826734, + 0.009100829, + 0.00036073278, + -0.030561442, + 0.020076673, + 0.007659493, + -0.032194104, + 0.005009602, + 0.014668471, + 0.02326547, + -0.009406954, + 0.022653222, + 0.007901842, + -0.013201624, + -0.0022927457, + -0.0034375244, + -0.016517974, + 0.012869989, + 0.033648197, + 0.01783176, + -0.009623793, + 0.0075128083, + 0.010912067, + 0.0060108844, + 0.0118559515, + -0.013188869, + -0.011345743, + 0.009961805, + 0.008144191, + -0.020893006, + 0.012487333, + -0.010988598, + 0.019489935, + -0.021148108, + -0.0098725185, + -0.0003443902, + -0.022742508, + -0.0024745073, + 0.0042347237, + -0.037933942, + 0.010216909, + 0.018354721, + 0.011256457, + -0.0071939286, + 0.008431182, + -0.002705695, + -0.0028141143, + -0.013992446, + 0.004805519, + -0.015446538, + 0.0023118786, + -0.00040497736, + 0.007755157, + -0.019081768, + -0.004263423, + -0.00060826325, + 0.025995081, + -0.0069388244, + -0.0070344885, + -0.01724502, + 0.01010849, + 0.042653363, + -0.03196451, + -0.00028141143, + 0.0033354827, + -0.0013042184, + -0.009770477, + 0.0028619464, + -0.0014341619, + -0.0109503325, + 0.026479779, + -0.01228325, + -0.011753909, + -0.016275626, + -0.016543485, + 0.0035714537, + -0.0073023476, + -0.0038138025, + -0.01702818, + 0.011045996, + 0.013775608, + 0.003000659, + -0.0023246338, + 0.015510314, + 0.0034949228, + -0.027474685, + 0.03303595, + -0.015523069, + 0.005586774, + 0.00025012135, + 0.010912067, + -0.0024474026, + 0.0011288346, + 0.029949192, + -0.0010969465, + -0.02056137, + -0.008418427, + 0.004703477, + -0.0074745426, + -0.004942637, + -0.015370007, + -0.005417768, + -0.00397962, + 0.015535824, + -0.009566395, + -0.008341895, + -0.016211849, + -0.014885309, + -0.008329141, + 0.014961841, + -0.0148342885, + -0.0067857625, + 0.01894146, + -0.0031537213, + -0.00018235939, + -0.021415967, + -0.014107242, + -0.011020486, + 0.007901842, + 0.0026865625, + -0.019222075, + 0.0017745661, + -0.017997576, + 0.0008031785, + -0.0034534682, + 0.0012611697, + 0.008265365, + 0.007072754, + 0.014362346, + -0.022347096, + 0.023507819, + -0.007838066, + 0.0021349003, + -0.009457975, + -0.0022895571, + -0.02650529, + 0.0021380892, + -0.008552357, + 0.0052551394, + 0.0060682828, + -0.027551215, + -0.026058858, + 0.012844479, + -0.0121365655, + 0.0087500615, + 0.0067347414, + -0.0048087076, + 0.01424755, + 0.0014230012, + -0.017359817, + 0.030178785, + -0.0095919045, + 0.0055357534, + -0.023584351, + 0.002146061, + -0.010918445, + -0.01955371, + -0.009477108, + 0.020000141, + -0.0004902777, + -0.018010331, + 0.019273095, + -0.0042442903, + -0.0014859799, + -0.012697794, + 0.0035140554, + -0.0016932518, + 0.016109807, + 0.0032908395, + 0.027092028, + -0.0048597283, + 0.010912067, + -0.0077168914, + 0.00039501235, + 0.007952862, + 0.0226022, + -0.008520468, + -0.0067921397, + 0.012040902, + -0.010318951, + -0.01109064, + -0.028239995, + 0.023622615, + -0.012315138, + 0.013380197, + 0.019617485, + -0.016734812, + -0.00037986558, + 0.03125022, + -0.0078061777, + -0.016033277, + -0.018010331, + 0.0029671765, + -0.020038407, + -0.006919692, + 0.005035112, + -0.016364912, + 0.0038743897, + -0.025561405, + -0.0073788785, + -0.030995118, + -0.015102148, + -0.019349627, + 0.004897994, + -0.026352227, + 0.02397976, + 0.028342037, + -0.025140485, + 0.00045320793, + -0.028316528, + -0.0022736131, + -0.011932482, + -0.0072768372, + -0.0070344885, + -0.04186254, + -0.026734883, + -0.010159511, + -0.007882709, + -0.020255245, + 0.00096939463, + -0.0025558216, + 0.00058992766, + 0.021148108, + 0.22857304, + -0.0031298052, + -0.016862364, + 0.034770653, + -0.0035618874, + 0.02387772, + 0.03456657, + -0.0063106315, + 0.013533259, + 0.042296216, + -0.008310008, + 0.0077615343, + 0.00030014562, + 0.00043806114, + 0.022130258, + -0.02589304, + -0.015421027, + -0.020114938, + -0.013316421, + -0.010248797, + 0.020433819, + -0.015586845, + 0.00928578, + 0.008067659, + 0.03997477, + 0.002058369, + -0.017308796, + 0.0074043893, + 0.01913279, + 0.0038425017, + -0.004591869, + -0.0027343943, + 0.0013329176, + -0.012015391, + -0.014489898, + 0.01294652, + 0.00636803, + 0.012557487, + 0.026709372, + 0.037576795, + 0.0048852386, + 0.016734812, + -0.022716997, + -0.00530616, + -0.008246232, + 0.016824098, + -0.020459328, + 0.010216909, + 0.022806283, + 0.00472261, + -0.0154592935, + 0.0052487617, + 0.019107278, + 0.01727053, + -0.002700912, + 0.02164556, + 0.033393092, + -0.0027184503, + 0.021007802, + -0.019668506, + -0.008501336, + 0.017500123, + -0.019107278, + 0.00880746, + 0.0015808466, + -0.016364912, + -0.007059999, + -0.005338048, + 0.016824098, + -0.008998788, + 0.015012861, + 0.010548544, + 0.019451668, + 0.0159695, + -0.007755157, + -0.01395418, + 0.031097159, + 0.002433053, + 0.02323996, + -0.0010124433, + -0.008386539, + -0.0020950404, + -0.022780774, + 0.0016549862, + -0.0049490146, + -0.024643032, + 0.015025617, + 0.0038456905, + 0.022283321, + -0.015165923, + 0.0015593222, + -0.0029735542, + 0.011205437, + -0.012863612, + 0.020178715, + 0.025446609, + -0.009234759, + 0.021632805, + -0.026071614, + 0.012340648, + -0.03165839, + -0.026632842, + 0.0072768372, + -0.016466953, + -0.007787045, + 0.008839348, + 0.002525528, + 0.011224569, + 0.020905761, + 0.008271743, + -0.015714398, + -0.0018463141, + 0.010312573, + -0.017500123, + 0.020038407, + -0.005905654, + 0.00472261, + -0.019694017, + -0.004869295, + -0.021071577, + -0.01292101, + -0.027602237, + -0.0075128083, + 0.008086792, + -0.008673531, + -0.0028109255, + 0.006205401, + 0.00880746, + 0.0014652527, + -0.050102394, + 0.017155733, + 0.0059120315, + 0.023686392, + -0.011109772, + -0.011741155, + 0.004343143, + -0.010994975, + 0.008935012, + -0.003284462, + 0.007155663, + -0.012595752, + -0.017500123, + 0.017729716, + -0.016811343, + 0.0027072895, + -0.003164882, + 0.00008684492, + -0.020446572, + -0.032041043, + -0.031046137, + -0.008418427, + -0.023673637, + 0.0009072131, + -0.015943991, + 0.02982164, + 0.0024840736, + -0.018239925, + -0.016568994, + -0.007563829, + 0.029438984, + -0.005309349, + 0.017117469, + 0.023992516, + -0.022678731, + -0.0077487794, + -0.008227099, + -0.16255218, + 0.030459398, + 0.007767912, + -0.0041454374, + -0.0028794846, + 0.0018766077, + 0.021071577, + 0.020995047, + -0.00963017, + 0.026275696, + 0.003284462, + 0.002740772, + -0.037933942, + -0.012710549, + -0.00421878, + 0.02156903, + -0.010625076, + -0.003048491, + 0.015676131, + 0.006932447, + 0.012563865, + -0.027984891, + 0.012640395, + 0.013482238, + 0.009802366, + 0.007251327, + -0.016250115, + 0.03584209, + -0.002053586, + -0.009247514, + -0.004971336, + 0.0017028182, + 0.017372573, + 0.021964442, + 0.011607225, + 0.011575337, + -0.003128211, + 0.0033673707, + -0.0032605461, + -0.0003272504, + 0.0027870096, + 0.022768019, + -0.008762817, + 0.008635265, + -0.0052519506, + 0.013762852, + 0.03566352, + 0.013456728, + 0.006380785, + -0.006428617, + 0.0036894393, + -0.042780913, + -0.01862258, + -0.013864894, + 0.020867495, + 0.022780774, + 0.03058695, + 0.0097640995, + -0.0179338, + 0.015701642, + 0.010790893, + -0.03655638, + -0.010019204, + 0.020688921, + -0.006030017, + -0.017997576, + 0.014796023, + 0.000645333, + 0.001262764, + 0.0020806908, + -0.019745037, + -0.009968183, + 0.004014697, + -0.032729823, + 0.010880179, + 0.012149321, + 0.004330388, + -0.0084694475, + -0.009075319, + -0.011970748, + -0.0042761783, + 0.026173655, + -0.0117475325, + -0.0012492116, + -0.007927352, + 0.018239925, + -0.005175419, + -0.007283215, + -0.026084369, + -0.020357287, + 0.02562518, + -0.050051376, + -0.0028460023, + -0.038061492, + 0.0119643705, + 0.018316457, + 0.00245378, + -0.004595058, + 0.0060045067, + -0.0042857444, + 0.016517974, + -0.005449656, + -0.01658175, + 0.011881461, + 0.015727151, + 0.017372573, + -0.009394199, + 0.0012763165, + 0.029745108, + 0.009273025, + -0.0057749134, + 0.027984891, + 0.006202212, + 0.025739977, + 0.011511561, + 0.005762158, + -0.00026506884, + -0.028367547, + -0.00096620584, + -0.0070982645, + 0.042245198, + -0.0016868742, + -0.005513432, + 0.013494994, + -0.004196458, + -0.0017586221, + -0.10663341, + 0.00070592016, + 0.017194, + 0.015370007, + -0.0019005237, + 0.006836783, + -0.007723269, + 0.016441442, + 0.0120983, + 0.030306337, + -0.003332294, + -0.017755227, + -0.014796023, + -0.0019722716, + 0.0008960523, + -0.0106697185, + 0.005551697, + -0.032296147, + -0.03043389, + 0.003199959, + -0.012225851, + -0.005717515, + 0.004735365, + -0.02443895, + -0.006779385, + 0.0072768372, + -0.033495136, + 0.016377667, + 0.0090944525, + -0.0028300583, + 0.010765382, + -0.009528128, + 0.022449138, + -0.008628887, + -0.015344496, + -0.007812555, + -0.01491082, + -0.016122563, + 0.007965618, + -0.024451703, + -0.0039987527, + 0.0029464494, + 0.0012356592, + -0.024056293, + -0.016887875, + 0.010459257, + 0.0016964406, + 0.0064158617, + -0.0017044125, + -0.021594541, + 0.0057749134, + 0.024145579, + -0.011148038, + -0.0063552745, + 0.03994926, + -0.0060746605, + 0.00878195, + 0.01660726, + -0.016492464, + -0.00078045833, + -0.0065944344, + 0.023176184, + -0.0136353, + 0.034158405, + -0.017066447, + -0.012716927, + -0.037321694, + 0.009706701, + 0.018495029, + -0.02181138, + 0.0059471084, + 0.022704242, + -0.017870024, + 0.020076673, + -0.0082526095, + 0.0049362592, + -0.019489935, + -0.02454099, + 0.015395517, + -0.02788285, + -0.032219615, + -0.03114818, + 0.00947073, + -0.022283321, + -0.0071429075, + 0.02589304, + -0.003982809, + -0.01191335, + 0.02780632, + -0.0026706185, + 0.0074298996, + 0.04247479, + 0.007487298, + -0.03632679, + -0.016390422, + 0.02591855, + -0.0011256457, + -0.0131506035, + -0.008067659, + -0.014451633, + -0.021798624, + -0.0057430253, + -0.036939036, + 0.023762923, + -0.028979797, + -0.026199166, + 0.007085509, + 0.0124618225, + 0.0014955463, + -0.009725834, + -0.019528199, + -0.0066582104, + -0.026811413, + 0.0081888335, + -0.010459257, + -0.017921045, + -0.017347062, + -0.0006728364, + 0.021926176, + -0.0026275697, + 0.018354721, + -0.00033781328, + 0.0056728716, + 0.006457316, + 0.015676131, + 0.002165194, + -0.03372473, + 0.012493711, + -0.032194104, + -0.011103394, + -0.023609862, + 0.0006425428, + 0.014171018, + -0.012729682, + 0.02146699, + 0.029566536, + -0.020918515, + -0.022359852, + -0.0108865565, + 0.026734883, + 0.011358499, + -0.01724502, + -0.022487404, + -0.026007837, + 0.0145536745, + -0.016645527, + -0.016824098, + 0.02051035, + 0.0005568439, + -0.0059439195, + 0.007213061, + -0.0018845797, + 0.00843756, + 0.023418533, + 0.027678767, + -0.014464388, + -0.003947732, + -0.0018399365, + 0.022933835, + 0.021097088, + -0.007876331, + -0.009623793, + 0.0063552745, + -0.006537036, + 0.011371254, + 0.020995047, + -0.0029719598, + 0.007219439, + -0.009853386, + 0.0061129257, + 0.010574054, + -0.03127573, + -0.010803648, + -0.008718174, + 0.03336758, + 0.0012308761, + 0.02984715, + 0.0012165265, + -0.004499394, + -0.007965618, + -0.009783233, + 0.019489935, + 0.009668436, + -0.000117586926, + -0.019936366, + 0.0003408028, + 0.02589304, + 0.025752733, + -0.03584209, + -0.01947718, + 0.016097052, + -0.0044483733, + -0.02321445, + 0.013750098, + -0.011007731, + 0.014349591, + 0.0028874567, + 0.0015210566, + 0.008105924, + -0.0057430253, + -0.0037053833, + 0.03966865, + 0.0006297876, + -0.0041613816, + -0.0120983, + -0.020382797, + -0.019591976, + 0.00040597384, + -0.01894146, + -0.009560017, + -0.010325328, + 0.0001715972, + -0.010867423, + 0.0041103605, + -0.009636547, + 0.02454099, + -0.0113393655, + 0.007187551, + -0.043546226, + -0.016492464, + -0.02294659, + 0.014681227, + 0.0017793493, + 0.005414579, + 0.00811868, + -0.0044451845, + 0.025038442, + 0.017474614, + 0.03181145, + -0.011715644, + -0.0052934047, + 0.0245665, + 0.006336142, + -0.015216945, + 0.0150511265, + -0.020357287, + -0.021607297, + -0.0080804145, + -0.015676131, + 0.028852245, + -0.00020318622, + 0.04770442, + -0.0029209391, + -0.018418498, + 0.02928592, + -0.005290216, + -0.00029655822, + 0.007391634, + 0.012908255, + -0.0126340175, + -0.011766665, + -0.012997541, + -0.0012452257, + 0.025688957, + -0.0016996294, + -0.009802366, + -0.00012725298, + -0.03265329, + 0.033316564, + -0.039719667, + -0.011766665, + 0.0096556805, + 0.0049362592, + 0.024655787, + 0.008979656, + -0.016454197, + -0.00039182356, + 0.010408237, + 0.015688887, + -0.019158298, + -0.008246232, + 0.014005201, + -0.0113011, + -0.03721965, + -0.0096556805, + 0.0077742897, + -0.02783183, + -0.015012861, + -0.026377738, + -0.0013456728, + 0.014171018, + 0.012187586, + 0.010580432, + -0.029081838, + -0.032882884, + -0.0073852562, + -0.004355898, + -0.023762923, + -0.0035140554, + -0.022053728 ] } ], @@ -7752,10 +7756,10 @@ X-Request-Id: req_3b262756db465c4edf09fa378aa87584 "total_tokens": 46 } } -266 34339 +265 34463 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com -User-Agent: langchaingo-httprr +User-Agent: langchaingo-httprr Content-Length: 70 Authorization: Bearer test-api-key Content-Type: application/json @@ -7764,26 +7768,30 @@ Content-Type: application/json Content-Length: 33508 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Sat, 21 Jun 2025 17:14:12 GMT +Date: Wed, 23 Sep 2026 09:28:35 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst -Openai-Processing-Ms: 107 +Openai-Processing-Ms: 95 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload -Via: envoy-router-5db75cfb77-8szn6 +Via: envoy-router-6659cb4779-vrl5c X-Content-Type-Options: nosniff -X-Envoy-Upstream-Service-Time: 110 +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 X-Ratelimit-Limit-Requests: 10000 -X-Ratelimit-Limit-Tokens: 5000000 +X-Ratelimit-Limit-Tokens: 10000000 X-Ratelimit-Remaining-Requests: 9999 -X-Ratelimit-Remaining-Tokens: 4999994 +X-Ratelimit-Remaining-Tokens: 9999995 X-Ratelimit-Reset-Requests: 6ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_1f744a5a1f16e4f6c51a41dbd96033fd +X-Request-Id: req_c7d55a7a89e14ba88aaf235c02bff3eb { "object": "list", @@ -9337,40 +9345,43 @@ X-Request-Id: req_1f744a5a1f16e4f6c51a41dbd96033fd "total_tokens": 6 } } -1403 1563 +1439 1666 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com -User-Agent: langchaingo-httprr -Content-Length: 1199 +User-Agent: langchaingo-httprr +Content-Length: 1236 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the desk is orange.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"id\"\u003edoc:test_redis_vector_as_retriever:62641a9e-76b9-4de8-a2d7-90dfc10a5599\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the chair beside the desk is beige.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"id\"\u003edoc:test_redis_vector_as_retriever:a8e98e8e-f54b-4ca6-be29-0ce9b9788a7c\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is black.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"id\"\u003edoc:test_redis_vector_as_retriever:fb0c8fe3-b926-447e-a1c5-cadccbd9cf8d\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What color is the desk?\nHelpful Answer:"}],"temperature":0}HTTP/2.0 200 OK +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the desk is orange.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"id\"\u003edoc:test_redis_vector_as_retriever:desk\u003c/kv\u003e\n\n\u003ckv key=\"ids\"\u003edesk\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the chair beside the desk is beige.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"id\"\u003edoc:test_redis_vector_as_retriever:chair\u003c/kv\u003e\n\n\u003ckv key=\"ids\"\u003echair\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is black.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"id\"\u003edoc:test_redis_vector_as_retriever:lamp\u003c/kv\u003e\n\n\u003ckv key=\"ids\"\u003elamp\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What color is the desk?\nHelpful Answer:"}]}HTTP/2.0 200 OK Content-Length: 841 Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Sat, 21 Jun 2025 17:14:13 GMT +Date: Wed, 23 Sep 2026 09:28:37 GMT Openai-Organization: lcgo-tst -Openai-Processing-Ms: 128 +Openai-Processing-Ms: 536 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload X-Content-Type-Options: nosniff -X-Envoy-Upstream-Service-Time: 133 -X-Ratelimit-Limit-Requests: 10000 -X-Ratelimit-Limit-Tokens: 10000000 -X-Ratelimit-Remaining-Requests: 9999 -X-Ratelimit-Remaining-Tokens: 9999789 -X-Ratelimit-Reset-Requests: 6ms -X-Ratelimit-Reset-Tokens: 1ms -X-Request-Id: req_99bd6c151a70fff65f4e4a78899c109d +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999795 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_576b9a3d23264b6cbc5d5ac7bd86e941 { - "id": "chatcmpl-Bkw571Ko7stWSFGNqfDCjqhFakMn8", + "id": "chatcmpl-ERDZEWSZNVOV6E2Jqj8q4pQZVUSbL", "object": "chat.completion", - "created": 1750526053, + "created": 1790155716, "model": "gpt-4.1-nano-2025-04-14", "choices": [ { @@ -9386,9 +9397,9 @@ X-Request-Id: req_99bd6c151a70fff65f4e4a78899c109d } ], "usage": { - "prompt_tokens": 262, + "prompt_tokens": 222, "completion_tokens": 8, - "total_tokens": 270, + "total_tokens": 230, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 @@ -9401,40 +9412,44 @@ X-Request-Id: req_99bd6c151a70fff65f4e4a78899c109d } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": "fp_1e72310be1" } -300 34355 +327 34445 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com -User-Agent: langchaingo-httprr -Content-Length: 103 +User-Agent: langchaingo-httprr +Content-Length: 131 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"text-embedding-ada-002","input":["What colors is each piece of furniture next to the desk?"]}HTTP/2.0 200 OK -Content-Length: 33526 +{"model":"text-embedding-ada-002","input":["What colors are all of the pieces of furniture next to the desk and the desk itself?"]}HTTP/2.0 200 OK +Content-Length: 33489 Access-Control-Allow-Origin: * Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Sat, 21 Jun 2025 17:14:14 GMT +Date: Wed, 23 Sep 2026 09:28:38 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst -Openai-Processing-Ms: 36 +Openai-Processing-Ms: 133 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload -Via: envoy-router-5db75cfb77-xhcs8 +Via: envoy-router-6fbb69b6c9-p6w2b X-Content-Type-Options: nosniff -X-Envoy-Upstream-Service-Time: 38 +X-Engine-Geography: EU +X-Openai-Proxy-Wasm: v0.1 X-Ratelimit-Limit-Requests: 10000 -X-Ratelimit-Limit-Tokens: 5000000 +X-Ratelimit-Limit-Tokens: 10000000 X-Ratelimit-Remaining-Requests: 9999 -X-Ratelimit-Remaining-Tokens: 4999986 +X-Ratelimit-Remaining-Tokens: 9999979 X-Ratelimit-Reset-Requests: 6ms X-Ratelimit-Reset-Tokens: 0s -X-Request-Id: req_fa5400edab2c93b46f878d029ad6d7e2 +X-Request-Id: req_cdb0e99bdac34301a6e44d10e35bae9b { "object": "list", @@ -9443,1592 +9458,1595 @@ X-Request-Id: req_fa5400edab2c93b46f878d029ad6d7e2 "object": "embedding", "index": 0, "embedding": [ - 0.014166317, - -0.00021363195, - 0.0033157628, - -0.017779376, - -0.004656039, - 0.015452982, - -0.025863275, - -0.0043083797, - 0.022250215, - 0.0040939357, - 0.0071221483, - 0.00007061836, - -0.018949073, - 0.011696959, - -0.008129386, - 0.004600804, - 0.010611741, - 0.008850698, - 0.02750085, - -0.02530442, - -0.036312558, - 0.007375582, - 0.0011794433, - -0.008174875, - -0.01988483, - 0.011027632, - 0.026799032, - -0.002869004, - 0.006049927, - 0.014946113, - 0.033245355, - -0.0075705317, - 0.0054910723, - -0.032439563, - -0.016635675, - 0.02750085, - 0.005585298, - 0.006517805, - 0.017233519, - -0.015543958, - 0.0016554445, - 0.008246356, - 0.0017285505, - 0.009065143, - -0.006868714, - 0.009091136, - 0.0045293225, - 0.014816147, - -0.01792234, - -0.0005815988, - 0.019105032, - 0.02634415, - -0.019858837, - -0.016570691, - 0.0106572285, - -0.020261731, - 0.002869004, - 0.03529882, - -0.036468517, - -0.012054366, - 0.007531542, - 0.004454592, - -0.00014692273, - 0.0014353143, - -0.00014905499, - -0.016258772, - -0.008512787, - 0.0020307219, - 0.002438491, - 0.00699868, - 0.038547978, - 0.056353346, - 0.015271029, - 0.021678364, - 0.029684281, - -0.0011656344, - 0.0078239655, - 0.0035968148, - -0.0025050987, - -0.0023783816, - 0.009026153, - -0.008174875, - -0.024355667, - -0.0020128516, - 0.029450342, - -0.004753514, - 0.021977285, - 0.022562133, - -0.0027065463, - 0.0004280762, - -0.01603783, - 0.03392118, - 0.010527262, - -0.019079039, - -0.013698438, - 0.01800032, - 0.020924559, - 0.02465459, - 0.011924399, - -0.038885888, - 0.023718832, - 0.016947594, - -0.043746624, - 0.0068102293, - -0.018715134, - -0.027240917, - -0.005442335, - -0.017038569, - 0.024251694, - -0.018507188, - -0.038547978, - 0.041719154, - 0.027578829, - -0.010299822, - -0.010462279, - -0.01257423, - 0.028774519, - -0.017064562, - -0.011281067, - -0.0120088775, - 0.0060889167, - 0.039873634, - 0.02903445, - -0.03680643, - 0.03015216, - -0.00074324425, - -0.011378542, - -0.009091136, - -0.024953512, - -0.014686181, - 0.01395837, - 0.016089816, - 0.0063098595, - 0.030983943, - -0.017363485, - 0.006582788, - -0.011430528, - 0.022549137, - 0.00201935, - -0.0078564575, - 0.015349009, - 0.011469518, - -0.0077394876, - -0.0084608, - 0.010455782, - 0.03207566, - 0.012177833, - -0.008096894, - -0.029008457, - -0.0033141382, - 0.015907863, - 0.0025570851, - 0.008122887, - 0.0071221483, - 0.006803731, - 0.01735049, - -0.027578829, - -0.021522405, - -0.03176374, - -0.013880391, - -0.021743346, - -0.010650731, - 0.028488593, - -0.0013768295, - 0.033505287, - 0.021522405, - 0.019481935, - 0.014140324, - -0.013321537, - 0.0014426248, - -0.009974906, - 0.016024834, - -0.025057485, - 0.008902685, - 0.0073885787, - 0.007141643, - 0.01627177, - -0.006469068, - -0.010774199, - -0.0036195589, - 0.008798712, - -0.015349009, - 0.016596684, - -0.0052506346, - -0.007596525, - -0.018793114, - 0.007771979, - -0.015751904, - 0.0076355147, - -0.0030509566, - 0.029814247, - 0.0071286466, - -0.013425509, - -0.012795173, - -0.6541979, - -0.048139483, - 0.025473377, - -0.020352708, - 0.008766221, - 0.025889268, - 0.025863275, - 0.0334533, - 0.008532281, - -0.022198228, - 0.019247996, - 0.009468039, - 0.0280727, - -0.019780857, - 0.006764741, - -0.026487112, - 0.026747046, - 0.010618239, - 0.0031029433, - 0.007914942, - -0.007141643, - 0.018546177, - -0.00096012536, - -0.0066152797, - 0.02492752, - 0.00630661, - 0.016986582, - -0.010579249, - -0.0169216, - 0.013211065, - -0.0149071235, - 0.012327295, - -0.012658709, - -0.0040127067, - 0.042836864, - -0.0002205364, - -0.01888409, - 0.015387999, - 0.012951133, - 0.024082739, - -0.009786455, - 0.0030249634, - 0.008148882, - -0.013334533, - -0.00016824531, - -0.0075835283, - 0.018624157, - -0.006764741, - 0.041485213, - -0.015478975, - 0.008675245, - -0.017389478, - -0.007596525, - 0.015582948, - 0.02822866, - 0.0038794912, - 0.045514166, - 0.02072961, - 0.010358307, - 0.00853878, - 0.0012687951, - -0.005608042, - -0.035350807, - -0.0077199927, - -0.028904485, - 0.0017626666, - -0.03360926, - -0.03857397, - -0.015985843, - -0.024979506, - 0.005439086, - 0.010826185, - -0.0226921, - 0.01523204, - 0.028358627, - 0.01407534, - 0.025824286, - -0.004815248, - 0.0057704994, - -0.004841241, - -0.003231285, - -0.0045488174, - -0.032803472, - -0.01415332, - 0.023978766, - -0.0150370905, - -0.027526842, - -0.016362745, - 0.015297023, - 0.0052018976, - 0.010221842, - 0.0111186085, - -0.0014052596, - -0.013042109, - 0.0075900266, - 0.024199707, - -0.0074080736, - -0.0034181112, - -0.0021314458, - -0.009390058, - 0.010033391, - -0.0096694855, - -0.006140903, - 0.005569052, - 0.016193788, - -0.016869614, - -0.022523144, - 0.032387577, - 0.017207526, - -0.009929419, - 0.0031825474, - -0.036182594, - -0.020976545, - 0.012639213, - 0.012275308, - -0.03233559, - 0.04067942, - 0.0052896244, - -0.0005686022, - -0.008863695, - 0.020170756, - 0.010039889, - -0.008701238, - -0.009370564, - 0.021626377, - 0.0030022194, - 0.0004272639, - -0.017935336, - -0.017896347, - 0.01792234, - 0.009578509, - 0.006095415, - 0.015297023, - -0.0023475145, - -0.013042109, - -0.009429049, - 0.013763421, - -0.01511507, - 0.012736688, - -0.016258772, - -0.030126167, - -0.011573491, - -0.0053058704, - 0.012021874, - -0.0029908472, - -0.012327295, - -0.029684281, - -0.0047242716, - -0.018559175, - -0.01211285, - -0.032387577, - -0.01395837, - -0.048789315, - 0.0036682962, - 0.023445904, - -0.0010567877, - -0.03119189, - 0.0007895447, - -0.009649991, - 0.013776418, - 0.0013053481, - -0.008395817, - 0.0009487533, - 0.0015035466, - -0.0107871955, - -0.021093516, - -0.011066622, - 0.025837282, - -0.0026106962, - -0.021795332, - -0.008909184, - -0.010039889, - -0.009227601, - -0.0060174353, - -0.019442944, - -0.007966928, - -0.0037755184, - -0.017688401, - 0.005634035, - -0.008311339, - -0.0045098276, - 0.012990123, - -0.0017821616, - 0.004958211, - 0.03249155, - 0.0051401635, - 0.013659448, - 0.016674664, - -0.015894867, - 0.0067712395, - 0.0057672504, - -0.008174875, - -0.01126807, - -0.018988064, - 0.0069012055, - 0.009325075, - -0.006979185, - -0.0070311716, - 0.01122908, - -0.006888209, - 0.033947174, - -0.0075835283, - 0.016934596, - -0.03431108, - 0.014348269, - -0.01919601, - 0.010293324, - -0.016336752, - -0.004490332, - 0.029528322, - 0.012970627, - -0.039249793, - 0.0036942894, - -0.019455941, - 0.009636994, - -0.012405274, - -0.024147721, - 0.018637154, - -0.010826185, - 0.007531542, - -0.00032126022, - 0.003954222, - 0.035740707, - -0.002014476, - -0.018988064, - -0.01134605, - 0.023523884, - 0.020924559, - 0.005776998, - -0.017467458, - -0.016206786, - -0.014387259, - -0.009974906, - 0.011599484, - -0.011073121, - 0.0004491957, - -0.0032394077, - -0.020001799, - -0.006582788, - 0.012528743, - -0.003600064, - 0.030827984, - 0.0016237653, - -0.0020680872, - 0.026136205, - 0.0017805371, - 0.0106897205, - 0.03880791, - -0.022822065, - 0.014569212, - 0.00076152076, - 0.0012972252, - -0.017103553, - 0.023601864, - 0.0149071235, - -0.007642013, - 0.05170056, - -0.017051566, - 0.007836962, - 0.016687661, - -0.0063326033, - -0.020131765, - 0.010585748, - -0.019858837, - 0.013711435, - -0.011521504, - -0.025252433, - -0.0015011097, - 0.013042109, - -0.017584428, - -0.0032832713, - 0.012704196, - 0.0054780757, - 0.0045520663, - 0.0059816944, - -0.0072716093, - 0.0026285665, - -0.018221263, - 0.030022195, - 0.014023353, - -0.0008179748, - -0.0169216, - 0.026201187, - 0.0039672186, - -0.009006659, - -0.00900016, - -0.026903005, - 0.0116124805, - -0.008720732, - 0.00026703993, - 0.017129546, - 0.026747046, - 0.020001799, - -0.0041751643, - -0.011592986, - -0.032621518, - 0.011047128, - 0.004708026, - 0.02449863, - 0.007596525, - -0.008668746, - 0.0038145082, - -0.035402793, - -0.020989543, - 0.017909342, - 0.017688401, - 0.0025505868, - -0.0117099555, - -0.025395397, - -0.04530622, - -0.009870933, - -0.0049127224, - -0.014582208, - -0.006764741, - -0.0100658825, - -0.0087792175, - -0.040367503, - -0.011508508, - 0.048139483, - 0.025993241, - -0.020027792, - -0.02669506, - -0.022900045, - -0.0007521794, - 0.069973804, - 0.030334113, - -0.0050004497, - 0.015543958, - 0.0026204437, - -0.010475276, - 0.0005352983, - 0.0013987613, - 0.011885409, - -0.0059134625, - -0.0017480454, - 0.001147764, - 0.0016107687, - -0.013334533, - -0.0022776579, - -0.0044708373, - -0.006618529, - -0.023224961, - 0.017038569, - -0.03023014, - -0.022406174, - 0.019157019, - -0.0019332473, - 0.021249475, - -0.008298342, - 0.02822866, - 0.01707756, - 0.0061246576, - 0.022211224, - -0.029086437, - 0.005971947, - 0.02134045, - -0.01411433, - 0.00711565, - -0.020742606, - -0.030698018, - -0.012827665, - 0.01857217, - 0.011625477, - -0.006391088, - 0.0207686, - 0.006199388, - -0.0048477394, - -0.024212705, - -0.0023328934, - 0.02534341, - -0.013698438, - 0.016362745, - -0.004444844, - -0.01696059, - 0.008265851, - -0.0074275685, - 0.006823226, - -0.0077004978, - 0.009123628, - -0.010871673, - -0.027136944, - -0.008311339, - -0.007745986, - -0.022146242, - 0.0034798451, - 0.014933117, - 0.012957631, - -0.0037430266, - -0.024056746, - -0.037794173, - -0.013971367, - -0.002415747, - -0.0110861175, - -0.019910824, - -0.026370144, - -0.008740228, - -0.010286826, - -0.0044513424, - 0.035714712, - 0.027604822, - 0.025538359, - -0.023224961, - 0.005439086, - 0.030983943, - 0.0008216301, - -0.017701397, - 0.004792504, - 0.009714974, - 0.0022630366, - -0.001904005, - 0.035506766, - -0.005507318, - -0.0069921818, - 0.009377061, - 0.028956471, - -0.0006616092, - 0.02361486, - -0.010449283, - -0.010247835, - -0.0041589187, - 0.013464499, - 0.0139193805, - -0.029632295, - -0.023043009, - 0.015985843, - -0.020482674, - 0.010618239, - -0.021236477, - -0.0076290164, - -0.00018296806, - 0.015284026, - -0.001544161, - -0.0028007717, - 0.012457261, - 0.010559754, - -0.008987163, - -0.009598005, - -0.010442785, - 0.013828404, - 0.008519284, - 0.009968408, - 0.023263952, - -0.022783076, - -0.0067452462, - 0.034077138, - -0.040185552, - 0.029736267, - -0.0022484155, - -0.028644552, - -0.0030265881, - 0.0014491233, - -0.020573651, - 0.004379861, - 0.010943155, - -0.014140324, - 0.033479296, - -0.010007398, - -0.008428308, - -0.034077138, - -0.011170596, - 0.017493451, - 0.016596684, - -0.01688261, - -0.0003344599, - -0.0075185453, - 0.011326555, - -0.0037982624, - -0.019312978, - -0.033713233, - -0.027760781, - -0.0038502489, - 0.011326555, - -0.0019105033, - 0.022588126, - -0.0011786311, - 0.011489012, - -0.023237959, - 0.011521504, - -0.02049567, - -0.016856616, - -0.016284766, - -0.006979185, - 0.024212705, - 0.012047867, - 0.00980595, - 0.000011435503, - 0.0016164547, - 0.0057087657, - -0.0016318882, - 0.0033303841, - -0.021288464, - -0.0032101653, - -0.0014783656, - 0.016206786, - 0.0125352405, - 0.010605242, - 0.011995881, - 0.017597424, - 0.0103258155, - 0.032933436, - -0.013503489, - -0.010150361, - -0.018520184, - -0.030334113, - 0.012678203, - -0.012099854, - -0.0153360125, - -0.0077329893, - -0.0051564095, - 0.0044513424, - 0.0005214894, - 0.0072586127, - 0.00008874255, - -0.016973587, - 0.034259092, - 0.0063845897, - 0.039405756, - -0.021002539, - 0.009162618, - -0.0007720805, - -0.022913042, - -0.017532442, - -0.0010112996, - -0.005487823, - 0.0029437346, - 0.022627117, - 0.01172945, - -0.022133244, - -0.0024774808, - -0.010273829, - 0.0144782355, - 0.0031208135, - -0.015855877, - -0.023796812, - -0.029242396, - -0.026552096, - -0.012769179, - -0.029788254, - 0.010176354, - -0.004080939, - -0.049257193, - 0.010579249, - -0.0014613075, - -0.030983943, - -0.006618529, - -0.010026893, - 0.034207106, - 0.007849959, - 0.005302621, - 0.014673185, - -0.0072976025, - -0.0032848958, - -0.027604822, - -0.02799472, - 0.0066672666, - 0.02638314, - 0.039041847, - -0.025213445, - 0.025330413, - 0.008616759, - -0.008850698, - 0.00703767, - -0.024888529, - -0.0039249794, - -0.0071221483, - 0.019403955, - -0.02742287, - 0.006592536, - -0.014296283, - 0.0075705317, - -0.010507768, - -0.017545437, - 0.024511626, - -0.004139424, - -0.0058517284, - 0.016089816, - -0.03761222, - 0.036286566, - 0.021847319, - 0.0110861175, - -0.018793114, - 0.0024937266, - -0.0048444904, - -0.0016180793, - 0.0006567355, - 0.025928259, - -0.0010275453, - 0.0010584123, - 0.0023556375, - 0.010007398, - -0.027162937, - -0.009377061, - -0.00024124977, - 0.02661708, - -0.014972107, - 0.003580569, - -0.010748206, - 0.015595945, - 0.0484514, - -0.006534051, - -0.0024417401, - -0.003245906, - -0.01941695, - 0.00321179, - 0.0031776738, - -0.016440725, - -0.002553836, - 0.023692839, - -0.017948333, - -0.0012143718, - -0.014582208, - -0.005695769, - 0.007531542, - -0.019183012, - -0.023211965, - -0.0066672666, - 0.026851019, - 0.0068752123, - 0.0007672068, - -0.011638474, - 0.016258772, - -0.0077004978, - -0.020859577, - 0.036494512, - -0.004987453, - 0.011437026, - -0.017337492, - 0.020872572, - -0.007726491, - -0.02257513, - 0.03950973, - -0.0026561844, - -0.023822805, - -0.0107222125, - 0.011521504, - -0.019351969, - 0.0022435416, - -0.010527262, - -0.0024953512, - -0.0079214405, - 0.014790154, - -0.00080903963, - 0.0008675244, - 0.006072671, - -0.010793693, - 0.00059621996, - 0.0100658825, - 0.000061886254, - 0.028046707, - -0.0008399066, - 0.0054715774, - 0.024134725, - -0.027838761, - -0.013776418, - -0.017792374, - 0.011482514, - -0.0024352418, - -0.012281806, - -0.007817468, - -0.006280617, - -0.0067062564, - -0.01403635, - 0.0044091037, - 0.0041426728, - 0.011014636, - 0.023172975, - -0.0053351126, - 0.02257513, - -0.018910084, - 0.0029583557, - -0.013776418, - -0.039041847, - -0.034908924, - -0.009974906, - 0.0033368825, - 0.00014499355, - 0.012834163, - -0.045098275, - -0.031139903, - 0.01788335, - -0.002907994, - -0.020677624, - 0.024550617, - 0.004773009, - 0.029242396, - -0.0073820804, - -0.020248735, - 0.028514586, - 0.006933697, - -0.007843461, - -0.014257293, - -0.0076680062, - -0.0010145487, - -0.019468937, - 0.0039899624, - 0.009675984, - -0.007492552, - -0.03217963, - 0.039587706, - 0.002596075, - -0.013016116, - -0.011599484, - 0.00027272597, - 0.004350619, - -0.003746276, - 0.015790895, - 0.033375323, - 0.016531702, - -0.013302041, - -0.020820586, - -0.004880231, - 0.005234389, - 0.030022195, - -0.020352708, - -0.0003710129, - 0.0148421405, - -0.011755443, - -0.012606722, - -0.01880611, - 0.0098644355, - 0.010852179, - 0.029736267, - 0.008291844, - -0.009935916, - 0.0066282763, - 0.020326715, - -0.0010121118, - -0.026954992, - -0.011917901, - -0.015349009, - -0.029892227, - -0.023471897, - 0.014816147, - -0.022393178, - 0.0017594175, - -0.013880391, - -0.0024271188, - -0.012294803, - -0.020001799, - -0.025122467, - -0.007973427, - -0.0049939514, - 0.017038569, - 0.011255073, - -0.0055203144, - 0.0036260572, - -0.02799472, - -0.024043748, - -0.020924559, - -0.018052306, - -0.0048704837, - -0.047567632, - -0.01688261, - 0.0072781076, - -0.011917901, - -0.016063822, - 0.0011835048, - 0.003057455, - 0.026825026, - 0.022263212, - 0.23560274, - -0.00076436374, - -0.0016513831, - 0.028410614, - -0.0010291699, - 0.03457101, - 0.024342671, - 0.0046982784, - 0.030905964, - 0.045202248, - -0.008376322, - -0.00041284578, - 0.0069012055, - 0.0076290164, - 0.017363485, - -0.018026313, - -0.048243456, - -0.015634935, - -0.011456521, - 0.016765641, - 0.012275308, - 0.01180743, - 0.016492711, - -0.0038632455, - 0.025889268, - 0.0115474975, - -0.00753804, - -0.0039282287, - 0.008200868, - 0.008993662, - -0.00016712843, - -0.011073121, - 0.0007619269, - 0.006072671, - -0.0007724866, - -0.005146662, - -0.016635675, - 0.0017431717, - 0.029398356, - 0.024667585, - 0.013685442, - -0.016687661, - -0.03810609, - -0.0044285986, - -0.00094794104, - 0.007992921, - -0.018520184, - 0.0010965898, - 0.015816888, - -0.0033011416, - -0.020443683, - -0.0142313, - 0.019377962, - 0.03319337, - -0.0014101333, - 0.01788335, - 0.016869614, - -0.019066043, - 0.021574391, - 0.0036195589, - -0.020300722, - 0.03142583, - -0.009403055, - 0.01315258, - 0.0075640334, - -0.010351809, - 0.009520025, - -0.0020177253, - 0.04169316, - -0.0144132525, - 0.018624157, - 0.01627177, - 0.004818497, - 0.007070162, - 0.017675404, - -0.0059979404, - 0.031555794, - -0.00761602, - 0.01395837, - 0.0066477717, - -0.0063585965, - -0.022068262, - -0.022146242, - 0.02669506, - -0.0067257513, - -0.025538359, - 0.012606722, - -0.003203667, - 0.026240177, - -0.010748206, - -0.004353868, - 0.004987453, - -0.007836962, - 0.011521504, - 0.0072131245, - 0.025798293, - -0.00201935, - 0.01603783, - -0.018715134, - 0.004435097, - -0.027968727, - -0.001544161, - -0.006371593, - 0.0017512946, - -0.024745565, - 0.018208265, - -0.009968408, - -0.001915377, - 0.018442204, - 0.006007688, - -0.009182112, - -0.018091297, - 0.011982884, - -0.019871833, - 0.018559175, - 0.011255073, - 0.0017009327, - -0.018143283, - -0.022133244, - -0.008213865, - -0.0067777378, - -0.030438086, - -0.006738748, - 0.0043246257, - 0.005110921, - -0.016180793, - 0.004119929, - 0.01965089, - 0.009630496, - -0.030801991, - 0.0129316375, - -0.02585028, - 0.0253824, - -0.019260991, - -0.017610421, - 0.0062838662, - -0.0009495656, - -0.013516486, - 0.013165576, - -0.0037950133, - -0.006342351, - -0.0076680062, - 0.016778637, - -0.022991022, - 0.015699917, - -0.008311339, - -0.01680463, - -0.021119509, - -0.017597424, - -0.021353448, - -0.009942415, - -0.0021639373, - -0.0052863755, - -0.004685282, - 0.0027406623, - -0.0050004497, - 0.0069921818, - -0.030542059, - 0.0019186261, - 0.021197489, - -0.00473077, - 0.010059385, - 0.0060044387, - -0.004984204, - -0.014777157, - 0.010182852, - -0.16469318, - 0.0257723, - 0.026747046, - -0.0013955121, - -0.0028316388, - 0.009585008, - 0.023081997, - 0.038054105, - -0.019234998, - 0.02903445, - 0.009662988, - -0.012710695, - -0.033557273, - -0.011774939, - 0.0015799017, - 0.022406174, - -0.01288615, - 0.0018877592, - 0.011969888, - 0.021288464, - 0.011391538, - -0.028930478, - 0.008772719, - 0.012951133, - 0.008545278, - -0.0016928099, - -0.02750085, - 0.022874052, - 0.012398776, - 0.00036552997, - -0.0082853455, - -0.0069921818, - 0.014543219, - 0.005864725, - 0.008980664, - 0.013880391, - 0.0010762827, - 0.0027309149, - -0.011060124, - -0.0040094573, - -0.0014312528, - 0.029008457, - -0.006433327, - 0.019559914, - -0.00996191, - -0.0018682642, - 0.02642213, - 0.012210325, - -0.001324843, - -0.014530222, - -0.00005523564, - -0.029658288, - -0.00842181, - -0.00061084115, - 0.012028373, - 0.008987163, - 0.03329734, - 0.014062343, - 0.00665427, - 0.0035285824, - 0.016024834, - -0.03880791, - 0.0051856516, - 0.00071115885, - 0.007791474, - -0.007882451, - 0.005906964, - 0.009071642, - -0.008993662, - -0.0029664787, - -0.012795173, - -0.0059946915, - 0.020378701, - -0.0130746, - 0.003153305, - 0.030853977, - -0.008993662, - -0.0088442005, - 0.0016424479, - 0.008408814, - -0.0034213604, - 0.040445484, - -0.014218303, - -0.0035480775, - 0.0020469679, - 0.0035870674, - -0.020378701, - 0.0031484314, - -0.033167377, - -0.004285636, - 0.014738168, - -0.034363065, - -0.00016205161, - -0.029892227, - 0.021223482, - 0.015751904, - -0.010397296, - -0.010715714, - 0.009812448, - -0.008824705, - 0.0071091517, - -0.022874052, - -0.019403955, - 0.016089816, - 0.027968727, - 0.011502009, - -0.016089816, - 0.01311359, - 0.035506766, - 0.003453852, - -0.015128067, - 0.0284626, - 0.013607462, - 0.028592566, - 0.02569432, - 0.0073820804, - 0.0082853455, - -0.027630815, - 0.006365095, - 0.017636415, - 0.033739228, - -0.013945374, - -0.022133244, - 0.019598903, - -0.002792649, - -0.015946854, - -0.10090576, - 0.005949203, - 0.0075705317, - 0.016830623, - -0.00024876345, - 0.019299982, - 0.01315258, - 0.025031492, - 0.0017789125, - 0.033531282, - -0.00017504823, - -0.015452982, - -0.0063553476, - -0.0015766525, - -0.017948333, - -0.012840661, - -0.004516326, - -0.024108732, - -0.019442944, - 0.011833423, - -0.0009926169, - -0.01580389, - 0.0043213763, - -0.0036260572, - 0.011112111, - -0.010813189, - -0.03176374, - 0.005091426, - 0.016414732, - 0.013776418, - 0.02373183, - -0.012275308, - -0.0056242878, - -0.0051596584, - -0.021249475, - -0.010202347, - -0.012580729, - -0.02677304, - 0.016752644, - -0.04764561, - 0.011534501, - 0.009377061, - 0.0016221408, - -0.04611201, - -0.0017951583, - -0.0056015435, - -0.025369404, - 0.0047015273, - -0.004058195, - -0.012775678, - 0.007434067, - 0.009409553, - -0.013516486, - -0.009403055, - 0.04208306, - 0.0005921585, - 0.012892648, - 0.027448863, - -0.012060864, - -0.004305131, - -0.0021281966, - 0.01338652, - 0.0052246414, - 0.030931957, - 0.0017837862, - -0.018325236, - -0.026240177, - 0.0041589187, - 0.012340291, - -0.026721053, - -0.008246356, - 0.01072871, - -0.023069002, - 0.010260832, - -0.022432167, - -0.0018780117, - -0.022471158, - -0.0014873007, - 0.021405434, - -0.0022646612, - -0.03233559, - -0.037040368, - 0.0036163097, - -0.014608202, - 0.00938356, - 0.025070481, - -0.025252433, - 0.009578509, - 0.007096155, - -0.010897666, - 0.004415602, - 0.053702038, - 0.009773458, - -0.02549937, - -0.0027552836, - 0.015310019, - -0.0042628916, - 0.0024352418, - 0.015011097, - -0.017415471, - -0.021366443, - -0.0067257513, - -0.05261032, - 0.015478975, - -0.0014759287, - -0.018442204, - 0.0070311716, - 0.0084608, - 0.0013865769, - -0.014504229, - -0.0037105351, - 0.008928678, - -0.009630496, - 0.0029810998, - -0.021197489, - 0.003245906, - 0.009513526, - 0.009708475, - 0.027968727, - 0.010007398, - 0.010969148, - -0.015504968, - -0.010202347, - -0.00006980607, - 0.010169855, - 0.009097635, - -0.0142313, - 0.016050827, - -0.014218303, - -0.01857217, - -0.02353688, - -0.012223322, - 0.032517545, - -0.00021708418, - 0.0009625622, - 0.04515026, - -0.02380981, - -0.017753383, - -0.024407653, - 0.02919041, - 0.023263952, - -0.035012897, - -0.015777897, - -0.032907445, - -0.00669326, - -0.030568052, - 0.0035643233, - 0.03145182, - 0.008720732, - -0.0029486082, - 0.013880391, - -0.009429049, - 0.011242077, - 0.030074181, - 0.022913042, - -0.015894867, - -0.025668327, - -0.010871673, - 0.015894867, - -0.006049927, - 0.0066282763, - -0.033505287, - 0.004665787, - 0.004370114, - 0.01672665, - 0.010741707, - 0.011599484, - -0.005279877, - 0.01803931, - 0.002092456, - 0.003065578, - 0.00014072904, - -0.024810549, - 0.013581469, - 0.023120988, - -0.009565513, - 0.020716613, - -0.013178573, - -0.004519575, - 0.003522084, - -0.017337492, - 0.021431427, - 0.016986582, - -0.011378542, - -0.022588126, - 0.017779376, - 0.043434706, - -0.00796043, - -0.03126987, - 0.008343831, - -0.0066672666, - -0.0036325555, - -0.032933436, - 0.0047892546, - -0.02196429, - -0.0030866973, - -0.0007619269, - -0.006215634, - -0.023601864, - -0.0022435416, - 0.007291104, - 0.029736267, - -0.004837992, - -0.010449283, - -0.0010502894, - -0.030724011, - -0.012873153, - 0.007070162, - -0.0121063525, - -0.0110536255, - -0.01664867, - 0.00892218, - 0.003310889, - 0.004019205, - -0.004727521, - 0.011742447, - -0.009338072, - 0.013672445, - -0.030568052, - -0.02053466, - -0.026552096, - 0.012782176, - 0.011826925, - 0.009721472, - 0.0003257278, - 0.0041426728, - 0.025031492, - 0.024589606, - 0.026851019, - -0.029528322, - 0.01588187, - 0.028722532, - 0.010117869, - -0.0035545758, - 0.009286085, - -0.007687501, - -0.00942255, - -0.011995881, - -0.0020957051, - 0.022133244, - -0.003119189, - 0.06435926, - 0.00039700614, - -0.009533022, - 0.028410614, - -0.0037560235, - -0.002573331, - 0.02622718, - 0.0043733628, - -0.008155379, - -0.022497151, - -0.004184912, - 0.012496251, - 0.023211965, - -0.0030184651, - -0.014777157, - 0.0033791214, - -0.034207106, - 0.020196749, - -0.027578829, - 0.0017480454, - 0.00492247, - -0.020209745, - 0.016440725, - 0.00761602, - -0.021574391, - -0.0110536255, - 0.005968698, - -0.0015734034, - -0.006007688, - -0.024355667, - 0.023939775, - -0.018416211, - -0.03217963, - -0.009955412, - -0.0035903165, - -0.017168537, - -0.033167377, - -0.022315199, - -0.002899871, - 0.011398036, - 0.003876242, - 0.0046885307, - -0.026331153, - 0.0035903165, - -0.014283286, - -0.009948913, - -0.008415312, - 0.010566252, - -0.025070481 + 0.010940914, + 0.00037101895, + 0.0019054401, + -0.018620905, + -0.012196111, + 0.010196854, + -0.024728665, + -0.0048946193, + 0.019022051, + 0.0058942474, + 0.0070329825, + -0.0033191538, + -0.022502957, + 0.0068453504, + -0.005832782, + 0.0009373536, + 0.010552709, + 0.016097572, + 0.026281487, + -0.020885436, + -0.032816272, + 0.009122821, + -0.003642658, + -0.0032479828, + -0.021040717, + 0.008708735, + 0.030823486, + -0.004545235, + 0.009433384, + 0.01748217, + 0.03421381, + -0.010170974, + 0.0015277489, + -0.039596923, + -0.012558435, + 0.02888246, + 0.00837229, + 0.0072982563, + 0.01519176, + -0.007815863, + -0.0021076303, + 0.009562786, + 0.00030207212, + 0.00009371514, + -0.0046228757, + 0.0040761535, + 0.011186778, + 0.016226973, + -0.015748188, + 0.0040082177, + 0.021959469, + 0.036517162, + -0.02049723, + -0.017805675, + 0.009291043, + -0.018426802, + 0.0032415127, + 0.041434426, + -0.035973676, + -0.011549102, + 0.009724538, + 0.002754639, + -0.0017954487, + -0.001341734, + -0.004102034, + -0.015049418, + -0.01288841, + 0.0018569145, + -0.0029940319, + 0.0110250255, + 0.034343213, + 0.055849776, + 0.015101179, + 0.01589053, + 0.033152718, + -0.0014484903, + 0.0087928455, + 0.0023809914, + -0.0065024355, + -0.0027853716, + 0.00987335, + 0.0012762243, + -0.027873127, + -0.0019572007, + 0.023175845, + 0.00016347074, + 0.02357699, + 0.027588444, + -0.007912914, + -0.0021302756, + -0.015372923, + 0.028494256, + 0.009769829, + -0.011251478, + -0.0077058715, + 0.01586465, + 0.019229094, + 0.022671178, + 0.004791098, + -0.02968475, + 0.015579965, + 0.017715093, + -0.03856171, + 0.0033417991, + -0.019034991, + -0.027484922, + -0.000926031, + -0.020717213, + 0.020354887, + -0.014907076, + -0.034472615, + 0.028261332, + 0.023318186, + -0.016201094, + -0.002047782, + -0.01818094, + 0.035559587, + -0.018698547, + -0.009815119, + -0.016421076, + 0.0045064143, + 0.043634254, + 0.026126204, + -0.026993196, + 0.028753059, + 0.002591269, + -0.008864017, + -0.0067030084, + -0.026372068, + -0.016472837, + 0.007692931, + 0.022671178, + 0.009316923, + 0.027536683, + -0.006596252, + 0.0040308633, + -0.016252855, + 0.021687726, + 0.00646685, + -0.008171718, + 0.011736735, + 0.015424684, + -0.009252222, + -0.0074858884, + 0.00986688, + 0.034162052, + 0.012364333, + -0.011283829, + -0.021739487, + -0.0035132563, + 0.01445417, + 0.00044684028, + 0.015411743, + 0.0130372215, + 0.0069488715, + 0.017145727, + -0.03623248, + -0.018336222, + -0.030849367, + -0.012726658, + -0.023357008, + -0.010119214, + 0.025957981, + -0.0077705723, + 0.028649537, + 0.020238427, + 0.027226118, + 0.012364333, + -0.0064215595, + -0.003500316, + -0.012435504, + 0.019940803, + -0.020303128, + 0.0072335554, + 0.004037333, + 0.0078029227, + 0.017249247, + -0.0077899825, + -0.008876957, + -0.0038917563, + 0.0061336407, + -0.020290187, + 0.01749511, + -0.009232812, + -0.0095174955, + -0.023939315, + 0.0104103675, + -0.01666694, + 0.0027061133, + -0.006631837, + 0.030487042, + 0.005842487, + -0.0058133714, + -0.011245009, + -0.65384096, + -0.046429332, + 0.023887554, + -0.02202417, + 0.012344923, + 0.03035764, + 0.02357699, + 0.030849367, + 0.00004443129, + -0.02348641, + 0.012830179, + 0.0069553414, + 0.027743725, + -0.017702153, + -0.0037300042, + -0.024625145, + 0.022425316, + 0.014285948, + -0.011490871, + 0.0017356004, + -0.0060527646, + 0.020885436, + 0.00063164206, + -0.006389209, + 0.02820957, + 0.009045179, + 0.017702153, + -0.008488752, + -0.009679248, + 0.015308222, + -0.024366342, + 0.015321162, + -0.020354887, + -0.005528688, + 0.037552375, + -0.00085647753, + -0.0212607, + 0.015359983, + 0.0062953928, + 0.024819247, + -0.0097439485, + 0.008482282, + 0.008495222, + -0.01589053, + 0.0074729486, + 0.00025597276, + 0.018944409, + 0.0017792735, + 0.0377853, + -0.014492991, + 0.00914223, + -0.017081026, + -0.0031638716, + 0.014156546, + 0.03284215, + 0.0013207061, + 0.04461771, + 0.019306734, + 0.005751906, + 0.006282453, + 0.003338564, + -0.001672517, + -0.035326667, + -0.008132897, + -0.031366974, + 0.0043737777, + -0.038173504, + -0.03470554, + -0.023046443, + -0.02346053, + 0.010462128, + 0.011122077, + -0.01900911, + 0.020393709, + 0.028468376, + 0.0073306067, + 0.02952947, + 0.0032091623, + 0.011458521, + -0.012260811, + -0.0056645595, + -0.0049916706, + -0.03108229, + -0.0145447515, + 0.029348306, + -0.016615178, + -0.019280855, + -0.01667988, + 0.016511658, + 0.005020786, + 0.013496598, + 0.018646786, + 0.00041812926, + -0.006165991, + -0.00142908, + 0.026941435, + -0.004781393, + 0.0017339828, + -0.00045411912, + -0.001118516, + 0.006123936, + -0.012435504, + -0.0060074744, + 0.0031800468, + 0.024081657, + -0.015722306, + -0.027484922, + 0.03411029, + 0.01977258, + -0.00685829, + 0.008728145, + -0.04182263, + -0.015994051, + 0.0071947346, + 0.009362213, + -0.032221023, + 0.045989364, + 0.0014808407, + 0.0024553973, + -0.0042023202, + 0.017663334, + 0.0045064143, + -0.007945265, + -0.009232812, + 0.024482803, + 0.0016102424, + 0.0017792735, + -0.02509099, + -0.018439744, + 0.017986838, + 0.019086752, + 0.0007299065, + 0.008119957, + -0.00094058865, + -0.009426914, + -0.013276615, + 0.009595136, + -0.011070316, + 0.023887554, + -0.023952255, + -0.021674786, + -0.009051649, + 0.0006474129, + 0.0032318076, + -0.004878444, + -0.016563417, + -0.030150598, + -0.0001479021, + -0.028546017, + -0.0063374485, + -0.03403265, + -0.014648273, + -0.04016629, + 0.0066835983, + 0.025686238, + 0.001750158, + -0.03328212, + 0.00026648663, + -0.0035035512, + 0.016485777, + 0.0033029786, + -0.012551965, + 0.0028533076, + 0.005839252, + -0.008139367, + -0.021571264, + -0.020587811, + 0.023796974, + -0.0003390729, + -0.02505217, + -0.0032512178, + -0.008779906, + -0.0055675083, + -0.0077770427, + -0.024599263, + -0.004923735, + -0.0044158334, + -0.014790615, + -0.00012242615, + -0.0073370766, + -0.00047595563, + 0.008074666, + -0.0029244786, + 0.010772692, + 0.032945674, + 0.000028913193, + 0.016861042, + 0.018413862, + -0.017042205, + 0.006243632, + 0.002578329, + -0.0057195555, + -0.014609452, + -0.017728034, + 0.0074664783, + 0.0052569443, + -0.005463987, + -0.0063180383, + 0.01062388, + -0.0060333544, + 0.025401555, + -0.0032835682, + 0.018802067, + -0.028261332, + 0.013406017, + -0.02511687, + 0.011542632, + -0.008954598, + -0.008391701, + 0.028623657, + 0.017792735, + -0.042935487, + 0.0024246646, + -0.019345555, + 0.017960956, + -0.01291429, + -0.020950137, + 0.016861042, + -0.019707879, + 0.0038141152, + 0.005011081, + 0.0037720597, + 0.02958123, + -0.006227457, + -0.015023538, + -0.01065623, + 0.023227606, + 0.024547504, + 0.0013902596, + -0.013418957, + -0.018879708, + -0.012299632, + -0.0061142305, + 0.013444837, + -0.017676273, + 0.00681947, + 0.0050434317, + -0.017844494, + -0.0035164913, + 0.009756888, + -0.006696538, + 0.03266099, + 0.0021852714, + -0.005451047, + 0.029814152, + -0.0038335256, + 0.007660581, + 0.028313093, + -0.027510803, + 0.01138088, + 0.0070847436, + -0.00042823877, + -0.01749511, + 0.02197241, + 0.018672666, + -0.0107468115, + 0.045212954, + -0.012351393, + 0.01290135, + 0.012610196, + -0.0020332243, + -0.017236307, + 0.012707247, + -0.021623025, + 0.014324768, + -0.009808649, + -0.025621537, + -0.00493991, + 0.012331982, + -0.012293162, + 0.000027598957, + 0.010843863, + 0.012991931, + 0.0070265126, + 0.009316923, + -0.00681947, + 0.0012835031, + -0.018620905, + 0.025699178, + 0.0076864613, + -0.006140111, + -0.020898376, + 0.021726547, + 0.00683241, + -0.0080681965, + -0.008268769, + -0.021687726, + 0.01440241, + -0.012759008, + 0.009718068, + 0.016511658, + 0.027459042, + 0.020419588, + -0.0082364185, + -0.00569691, + -0.030538803, + 0.007938795, + 0.0078029227, + 0.021765366, + 0.0044352436, + -0.009899231, + -0.0009575726, + -0.041356783, + -0.013690701, + 0.017042205, + 0.010953855, + 0.004710222, + -0.015631726, + -0.026203845, + -0.04927617, + -0.012564906, + 0.00022584641, + -0.01220258, + -0.0042929016, + -0.00569691, + -0.008398171, + -0.044255383, + -0.009957462, + 0.04557528, + 0.0258674, + -0.017365709, + -0.028390734, + -0.008689324, + 0.0007481036, + 0.07049805, + 0.02743316, + -0.013393076, + 0.01587759, + -0.00081765704, + -0.010455658, + -0.0034841408, + -0.0019620534, + 0.008022905, + -0.008935188, + 0.003068438, + 0.002510393, + 0.0032593054, + -0.0079582045, + 0.0036361879, + -0.0070071025, + -0.005628974, + -0.019358495, + 0.011743205, + -0.03113405, + -0.02127364, + 0.017637452, + -0.005758376, + 0.020846615, + -0.0070912135, + 0.028002528, + 0.014117726, + 0.00058109453, + 0.01667988, + -0.026061503, + 0.0099121705, + 0.023072325, + -0.012739598, + 0.0050369613, + -0.027717846, + -0.030487042, + -0.010889154, + 0.021713607, + 0.0070847436, + -0.003581192, + 0.022412375, + 0.0019749936, + -0.0024780426, + -0.02274882, + -0.0035456067, + 0.025401555, + -0.016175212, + 0.011704384, + -0.0076799914, + -0.015554085, + 0.007505299, + -0.007117094, + -0.0017275128, + -0.0069359313, + 0.0052342988, + -0.011173837, + -0.033825606, + -0.014040085, + -0.003869111, + -0.022127692, + 0.0061271708, + 0.014040085, + 0.009750418, + 0.00084596366, + -0.018310342, + -0.032790393, + -0.013975384, + 0.0027837541, + -0.008482282, + -0.02192065, + -0.020794854, + -0.0036232478, + -0.0073241363, + -0.004244376, + 0.03364444, + 0.02655323, + 0.025336854, + -0.023589931, + 0.005011081, + 0.033592682, + 0.0008322147, + -0.010229205, + 0.006690068, + 0.0056225043, + 0.010138623, + -0.0012592403, + 0.035896033, + -0.009996282, + -0.0048428588, + 0.006224222, + 0.030668205, + -0.0019539658, + 0.021480683, + -0.015735248, + -0.007867624, + -0.0036620682, + 0.01290782, + 0.016589299, + -0.025453316, + -0.024443982, + 0.013574239, + -0.023991076, + 0.0052342988, + -0.017158667, + -0.009938051, + 0.0038270555, + 0.008508163, + -0.0028436026, + -0.011982598, + 0.013794222, + 0.011866136, + -0.0057195555, + -0.016654, + -0.005848957, + 0.008844607, + 0.008113487, + 0.009614547, + 0.024172239, + -0.021403043, + -0.0019086752, + 0.033049196, + -0.046843417, + 0.030823486, + -0.0040632137, + -0.030927008, + -0.0005730069, + 0.008993419, + -0.0039014614, + 0.004930205, + 0.0082881795, + -0.018413862, + 0.03656892, + -0.0041376194, + -0.011924367, + -0.032428067, + -0.010073923, + 0.015450563, + 0.014764735, + -0.018620905, + 0.0010384487, + -0.011898487, + 0.01366482, + -0.008139367, + -0.018659726, + -0.03871699, + -0.029891795, + -0.0028565426, + 0.017158667, + -0.004260551, + 0.026035624, + -0.0045937607, + 0.0068906406, + -0.011963188, + 0.0023098204, + -0.022412375, + -0.012060239, + -0.01441535, + -0.012681367, + 0.021519504, + 0.010520359, + 0.008935188, + 0.0019151452, + 0.0070200423, + 0.009724538, + 0.0039273417, + 0.0085146325, + -0.016239913, + -0.0073758974, + 0.0008872104, + 0.016188154, + 0.010403897, + 0.008669915, + 0.010733872, + 0.012713717, + 0.008728145, + 0.036931247, + -0.017922137, + -0.0110250255, + -0.019552598, + -0.032324545, + 0.013781281, + -0.014285948, + -0.017378649, + -0.0008221052, + -0.0053604655, + -0.000670867, + 0.005454282, + 0.0033547392, + 0.0011872606, + -0.016343435, + 0.036206596, + 0.0006227457, + 0.033722084, + -0.019707879, + 0.01441535, + 0.0075829397, + -0.019863162, + -0.014764735, + -0.0065380214, + -0.004344662, + 0.0041635, + 0.018931469, + 0.008967538, + -0.020303128, + 0.0007489124, + -0.008087606, + 0.013354256, + 0.0043964228, + -0.016356375, + -0.021830067, + -0.030927008, + -0.017210428, + -0.017365709, + -0.032143384, + 0.012571376, + -0.004402893, + -0.045471758, + 0.010552709, + 0.007136504, + -0.035430185, + -0.009996282, + -0.010830923, + 0.026165025, + 0.012978991, + 0.0032835682, + 0.017106906, + -0.010319786, + 0.0036103076, + -0.023978136, + -0.027795486, + 0.00456788, + 0.026734393, + 0.03737121, + -0.028494256, + 0.027303759, + 0.010073923, + -0.015411743, + 0.0009624252, + -0.025530957, + -0.00835288, + -0.007822333, + 0.017042205, + -0.025919162, + 0.011225598, + -0.011613803, + 0.0046714013, + -0.011050906, + -0.019086752, + 0.02120894, + -0.003788235, + -0.002358346, + 0.020160785, + -0.0438413, + 0.03258335, + 0.021687726, + 0.00911635, + -0.019565538, + 0.0020639573, + -0.003642658, + 0.0013465865, + -0.0009041944, + 0.017275129, + -0.00454847, + 0.009659837, + 0.0063406834, + 0.011911427, + -0.022334734, + -0.013354256, + 0.0005232681, + 0.026385007, + -0.018517384, + 0.0066447775, + -0.009672778, + 0.017986838, + 0.048189197, + -0.014182427, + -0.0044417134, + -0.0016708996, + -0.02355111, + 0.0037526495, + 0.003720299, + -0.016175212, + -0.00014274626, + 0.02129952, + -0.017689213, + -0.008909307, + -0.013858923, + -0.011989068, + 0.004474064, + -0.019358495, + -0.02199829, + -0.010086863, + 0.0142083075, + 0.009633957, + 0.004855799, + -0.021040717, + 0.00906459, + -0.008443461, + -0.02494865, + 0.035093743, + -0.0069359313, + 0.007667051, + -0.014868256, + 0.021428922, + -0.0076799914, + -0.023085264, + 0.04404834, + 0.0065768417, + -0.029011862, + -0.013910683, + 0.016796341, + -0.012972521, + 0.0029180085, + -0.013231324, + -0.0015689956, + -0.006677128, + 0.012325512, + -0.001672517, + 0.0044546537, + 0.0034776707, + -0.012733128, + 0.0047619827, + 0.0027869893, + -0.0049043247, + 0.02114424, + -0.0004650374, + 0.007751162, + 0.018245641, + -0.024379281, + -0.014855316, + -0.012810769, + 0.007518239, + -0.0084564015, + -0.006922991, + -0.010805042, + -0.0054995725, + -0.0052116537, + -0.007738222, + -0.004655226, + -0.004014688, + 0.007447068, + 0.02503923, + -0.00015700066, + 0.027148478, + -0.011037965, + 0.005017551, + -0.018491503, + -0.04026981, + -0.03721593, + -0.007207675, + 0.007000632, + 0.0034582606, + 0.009808649, + -0.044565946, + -0.03405853, + 0.020380769, + -0.002689938, + -0.02048429, + 0.025207452, + 0.007964675, + 0.030202357, + -0.0056580896, + -0.024676906, + 0.03263511, + 0.008081136, + -0.006961812, + -0.019966682, + -0.011102666, + 0.0030797606, + -0.024806308, + 0.00606247, + 0.0038497008, + -0.0074988287, + -0.030098837, + 0.042210836, + 0.0031881344, + -0.013910683, + -0.019177333, + 0.0018763248, + 0.0010344048, + 0.0024634849, + 0.014078906, + 0.039648682, + 0.01744335, + -0.012448444, + -0.02052311, + -0.00058271206, + 0.0056030937, + 0.033980887, + -0.016369315, + -0.0035973673, + 0.009336333, + -0.012241402, + -0.011665564, + -0.014842375, + 0.00986688, + 0.013975384, + 0.025065111, + 0.011710854, + -0.014298889, + 0.008281709, + 0.018491503, + -0.007712342, + -0.027096717, + -0.012480794, + -0.017766854, + -0.032764513, + -0.02582858, + 0.014518871, + -0.021066597, + 0.0048202137, + -0.009756888, + -0.006288923, + -0.013380136, + -0.031004649, + -0.02743316, + -0.010242145, + -0.009401034, + 0.01891853, + 0.019190272, + -0.0030393226, + 0.008249358, + -0.032039862, + -0.020096084, + -0.018789127, + -0.015411743, + -0.01371658, + -0.04459183, + -0.014687094, + 0.0060980553, + -0.012196111, + -0.01515294, + 0.0024133418, + 0.007343547, + 0.025142752, + 0.022826461, + 0.23830618, + 0.0027449336, + -0.0038464656, + 0.029814152, + 0.0019572007, + 0.032945674, + 0.028338974, + 0.004490239, + 0.029193025, + 0.04707634, + -0.0068647605, + 0.003869111, + 0.0036264828, + 0.006974752, + 0.01965612, + -0.011982598, + -0.047024578, + -0.015748188, + -0.008113487, + 0.018543264, + 0.014078906, + 0.00759588, + 0.0093492735, + -0.0057486705, + 0.026294427, + 0.010973264, + -0.0060948203, + 0.00028124652, + 0.0006882553, + 0.0050466666, + 0.0014218013, + -0.017948017, + 0.0050434317, + 0.004389953, + -0.000111103494, + -0.0033806195, + -0.011814375, + -0.004639051, + 0.03273863, + 0.023732273, + 0.0105268285, + -0.0125907855, + -0.041434426, + -0.0070718033, + -0.0036717735, + 0.008210538, + -0.01890559, + 0.0015277489, + 0.02045841, + 0.0027724316, + -0.020005504, + -0.006327743, + 0.017003383, + 0.027950767, + -0.0020186666, + 0.019099692, + 0.016472837, + -0.021079538, + 0.018491503, + -0.0033320938, + -0.018387983, + 0.038354665, + -0.01444123, + 0.010824453, + 0.0060074744, + -0.011296769, + 0.0018569145, + -0.002000874, + 0.032479826, + -0.016861042, + 0.021027777, + 0.017016325, + 0.00170325, + 0.0070718033, + 0.016576359, + -0.006159521, + 0.020393709, + -0.0101321535, + 0.018620905, + -0.0005256944, + -0.0002980283, + -0.025414495, + -0.026294427, + 0.025634477, + -0.005528688, + -0.019345555, + 0.008721675, + -0.004389953, + 0.022955863, + -0.007925854, + -0.002916391, + 0.017365709, + -0.0039952775, + 0.014273008, + 0.015722306, + 0.016628118, + 0.0019636708, + 0.01586465, + -0.020212546, + 0.0048105083, + -0.02808017, + 0.005389581, + -0.008327, + 0.0052828244, + -0.021674786, + 0.017184546, + -0.013218384, + -0.0066383076, + 0.013302496, + 0.00023393401, + -0.003108876, + -0.013470718, + 0.011199717, + -0.021066597, + 0.019280855, + 0.007880564, + 0.0038529357, + -0.012597256, + -0.0227747, + -0.009511026, + -0.00913576, + -0.02743316, + -0.0156058455, + 0.009316923, + 0.0007266714, + -0.018064478, + 0.005897483, + 0.015062358, + 0.008948128, + -0.034317333, + 0.015463504, + -0.020665452, + 0.023253486, + -0.016058752, + -0.007997026, + 0.010067453, + -0.0034388504, + -0.011212658, + 0.008449932, + -0.000091642694, + -0.0069424016, + -0.0095174955, + 0.011329119, + -0.018167999, + 0.0075635295, + -0.0077641024, + -0.019565538, + -0.023369947, + -0.014091846, + -0.023149965, + -0.0051307776, + -0.0024101068, + -0.0048913844, + -0.005302235, + 0.0061271708, + -0.005444577, + 0.00906459, + -0.02278764, + 0.0003433189, + 0.021403043, + -0.0025217158, + 0.004344662, + 0.013250735, + -0.0039014614, + -0.022813521, + 0.01603287, + -0.16356376, + 0.022554718, + 0.018387983, + -0.0018536794, + -0.0009373536, + 0.010817982, + 0.014661213, + 0.038949914, + -0.019707879, + 0.025246272, + 0.010999145, + -0.011367939, + -0.027769607, + -0.01890559, + 0.004477299, + 0.013897743, + -0.006897111, + 0.0027805192, + 0.012416094, + 0.017236307, + 0.009672778, + -0.024832187, + 0.004085859, + 0.013263674, + 0.008475812, + -0.010921504, + -0.026993196, + 0.026708512, + 0.016162273, + 0.0020186666, + -0.008941658, + -0.00571632, + 0.010824453, + 0.0035326665, + 0.0049916706, + 0.013457777, + 0.0036038375, + 0.003788235, + -0.012616666, + -0.005687205, + -0.00841111, + 0.024146358, + -0.00571632, + 0.01821976, + -0.014234188, + -0.00050062285, + 0.029943554, + 0.016925743, + 0.0009737478, + -0.020406649, + 0.010313316, + -0.03046116, + -0.0061045256, + -0.002875953, + 0.011012085, + 0.014932957, + 0.03335976, + 0.008385231, + 0.004771688, + 0.012733128, + 0.017986838, + -0.035714872, + 0.007647641, + 0.004609936, + 0.0142083075, + -0.013153683, + 0.007673521, + 0.0047425725, + -0.012759008, + -0.004859034, + -0.014570632, + -0.011691444, + 0.021079538, + -0.01371658, + 0.006813, + 0.030150598, + -0.012319042, + -0.014182427, + 0.0046681664, + 0.012959581, + -0.0058295466, + 0.0394934, + -0.0154376235, + -0.003196222, + 0.0085146325, + 0.0020623396, + -0.01906087, + -0.0030182947, + -0.032298665, + -0.0079582045, + 0.01215082, + -0.03346328, + 0.0030328524, + -0.029814152, + 0.02193359, + 0.011102666, + -0.008553453, + -0.005020786, + 0.007162384, + -0.0154893845, + 0.006690068, + -0.016265795, + -0.013845982, + 0.017262187, + 0.028571896, + 0.0064053843, + -0.01811624, + 0.016912803, + 0.03423969, + 0.0052342988, + -0.016912803, + 0.024780426, + 0.01220258, + 0.030176478, + 0.024081657, + 0.011697914, + 0.0049754954, + -0.02952947, + 0.00042015116, + 0.017210428, + 0.038949914, + -0.008145837, + -0.030512922, + 0.022929981, + -0.007130034, + -0.009769829, + -0.10212383, + 0.009841, + 0.012500205, + 0.014273008, + 0.0032560704, + 0.019410256, + 0.009433384, + 0.021726547, + 0.00757, + 0.03568899, + -0.0010578589, + -0.013418957, + -0.0050499015, + 0.009038709, + -0.011290299, + -0.014803555, + -0.008974008, + -0.027226118, + -0.021778308, + 0.012836649, + 0.0009915406, + -0.022981742, + 0.004102034, + -0.0073758974, + 0.012765478, + -0.011704384, + -0.02808017, + 0.008003496, + 0.01666694, + 0.011581453, + 0.019474957, + -0.014130666, + -0.01603287, + -0.0035294315, + -0.01366482, + -0.008993419, + -0.01752099, + -0.032013983, + 0.012778418, + -0.045627043, + 0.009316923, + 0.005451047, + 0.002000874, + -0.047412783, + 0.0005968654, + -0.003568252, + -0.02268412, + 0.0038205853, + -0.0015350278, + -0.009310452, + 0.012002008, + 0.013535419, + -0.006677128, + -0.01140029, + 0.045989364, + -0.004205555, + 0.011633214, + 0.030719966, + -0.00837229, + -0.0033288589, + -0.0020380768, + 0.017999778, + 0.0067288885, + 0.028649537, + 0.0013740844, + -0.01827152, + -0.028364854, + 0.0013069572, + 0.019306734, + -0.036775965, + -0.0042087906, + 0.0068712304, + -0.023512289, + 0.0109150335, + -0.02122188, + 0.00030106117, + -0.0228394, + -0.0062759826, + 0.023434648, + -0.007447068, + -0.02968475, + -0.029296545, + -0.004412598, + -0.006146581, + 0.011335589, + 0.027691964, + -0.023253486, + 0.0020041089, + 0.0052828244, + -0.008605214, + 0.0011541015, + 0.052821778, + 0.015204701, + -0.030538803, + 0.0015131911, + 0.011329119, + -0.0003821394, + 0.00026385815, + 0.010293906, + -0.0089610685, + -0.024055777, + -0.0014412114, + -0.051165435, + 0.017909195, + -0.003632953, + -0.022205332, + 0.0068259398, + 0.008831667, + 0.012875469, + -0.020096084, + -0.006324508, + 0.013833042, + -0.019462017, + 0.0062533375, + -0.015722306, + -0.0019410256, + 0.0011904957, + 0.019358495, + 0.029348306, + 0.006651248, + 0.009174581, + -0.012021419, + -0.007453538, + 0.008132897, + 0.0125325555, + 0.013004871, + -0.019850222, + 0.01436359, + -0.017896255, + -0.014803555, + -0.02494865, + -0.012196111, + 0.031651657, + -0.0071688546, + 0.011574983, + 0.047179863, + -0.022218272, + -0.019992564, + -0.020587811, + 0.035404306, + 0.021610085, + -0.029917674, + -0.017805675, + -0.029374188, + -0.00052933383, + -0.022502957, + 0.004037333, + 0.03423969, + 0.010462128, + -0.010151564, + 0.016809281, + -0.008838137, + 0.016226973, + 0.028934222, + 0.017624512, + -0.012377273, + -0.015851708, + -0.0061174654, + 0.022929981, + -0.009562786, + 0.008217008, + -0.025660358, + 0.0019992564, + 0.005059607, + 0.022619419, + 0.009653367, + 0.010798573, + 0.0060462947, + 0.015579965, + 0.0045387647, + 0.0041343844, + 0.00032754807, + -0.023227606, + 0.009569256, + 0.022606477, + -0.0020170491, + 0.018866768, + -0.014014205, + -0.0069359313, + 0.005975124, + -0.014583572, + 0.019940803, + 0.007304726, + -0.008799316, + -0.021648906, + 0.010073923, + 0.043323692, + -0.0100803925, + -0.032039862, + 0.015476444, + -0.005693675, + -0.0059298333, + -0.03038352, + 0.0051728333, + -0.021131298, + -0.0024084894, + -0.0005022404, + -0.010319786, + -0.017663334, + -0.0011775555, + 0.010824453, + 0.03719005, + 0.0006716757, + -0.009970401, + 0.0009041944, + -0.036646564, + -0.017236307, + 0.020743093, + -0.01441535, + -0.018090358, + -0.02127364, + 0.01673164, + 0.0017081025, + 0.004037333, + -0.0069294614, + 0.010397427, + -0.0035035512, + 0.013406017, + -0.028157812, + -0.020846615, + -0.022619419, + 0.016058752, + 0.013897743, + 0.010274495, + 0.001939408, + 0.011555572, + 0.028701298, + 0.024883948, + 0.029141264, + -0.019254973, + 0.009808649, + 0.021648906, + 0.010093333, + -0.010966795, + 0.008449932, + -0.0061692265, + -0.01827152, + -0.022347674, + -0.0022386494, + 0.021532444, + -0.0040114527, + 0.059680067, + 0.00533135, + -0.009989812, + 0.028390734, + -0.0008010774, + 0.0020801325, + 0.024016956, + -0.0064377347, + -0.0046843416, + -0.020872494, + -0.004250846, + 0.010753281, + 0.026242666, + -0.004736102, + -0.014945897, + 0.0066447775, + -0.036284238, + 0.021687726, + -0.033670325, + -0.0037364743, + 0.006586547, + -0.017948017, + 0.01590347, + 0.0029066857, + -0.026837913, + -0.010287436, + 0.009569256, + -0.0020801325, + -0.0066835983, + -0.024793366, + 0.023214666, + -0.016899863, + -0.038820513, + -0.0100803925, + -0.0028516902, + -0.023033503, + -0.025543896, + -0.019138511, + -0.00007218189, + 0.0039920425, + 0.00161833, + 0.00091389957, + -0.032298665, + 0.0037300042, + -0.0062371623, + -0.0058004316, + -0.01604581, + 0.0069359313, + -0.03030588 ] } ], "model": "text-embedding-ada-002-v2", "usage": { - "prompt_tokens": 12, - "total_tokens": 12 + "prompt_tokens": 18, + "total_tokens": 18 } } -1725 1606 +1808 1689 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com -User-Agent: langchaingo-httprr -Content-Length: 1521 +User-Agent: langchaingo-httprr +Content-Length: 1605 Authorization: Bearer test-api-key Content-Type: application/json -{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the chair beside the desk is beige.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"id\"\u003edoc:test_redis_vector_as_retriever:a8e98e8e-f54b-4ca6-be29-0ce9b9788a7c\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the desk is orange.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"id\"\u003edoc:test_redis_vector_as_retriever:62641a9e-76b9-4de8-a2d7-90dfc10a5599\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is black.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"id\"\u003edoc:test_redis_vector_as_retriever:fb0c8fe3-b926-447e-a1c5-cadccbd9cf8d\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the house is blue.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"id\"\u003edoc:test_redis_vector_as_retriever:670985af-d931-4812-89c8-ea35dc0f9be8\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What colors is each piece of furniture next to the desk?\nHelpful Answer:"}],"temperature":0}HTTP/2.0 200 OK -Content-Length: 884 +{"model":"gpt-4.1-nano","messages":[{"role":"user","content":"Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the chair beside the desk is beige.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"id\"\u003edoc:test_redis_vector_as_retriever:chair\u003c/kv\u003e\n\n\u003ckv key=\"ids\"\u003echair\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the desk is orange.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"id\"\u003edoc:test_redis_vector_as_retriever:desk\u003c/kv\u003e\n\n\u003ckv key=\"ids\"\u003edesk\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the lamp beside the desk is black.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"id\"\u003edoc:test_redis_vector_as_retriever:lamp\u003c/kv\u003e\n\n\u003ckv key=\"ids\"\u003elamp\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\n\n\u003cdocument\u003e\n\u003ccontent\u003eThe color of the house is blue.\u003c/content\u003e\n\n\u003cmetadata\u003e\n\n\u003ckv key=\"id\"\u003edoc:test_redis_vector_as_retriever:house\u003c/kv\u003e\n\n\u003ckv key=\"ids\"\u003ehouse\u003c/kv\u003e\n\n\u003c/metadata\u003e\n\n\u003c/document\u003e\n\n\nQuestion: What colors are all of the pieces of furniture next to the desk and the desk itself?\nHelpful Answer:"}]}HTTP/2.0 200 OK +Content-Length: 864 Access-Control-Expose-Headers: X-Request-ID +Access-Control-Expose-Headers: CF-Ray +Access-Control-Expose-Headers: CF-Ray Alt-Svc: h3=":443"; ma=86400 Cf-Cache-Status: DYNAMIC Content-Type: application/json -Date: Sat, 21 Jun 2025 17:14:16 GMT +Date: Wed, 23 Sep 2026 09:28:40 GMT Openai-Organization: lcgo-tst -Openai-Processing-Ms: 159 +Openai-Processing-Ms: 600 +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload X-Content-Type-Options: nosniff -X-Envoy-Upstream-Service-Time: 181 -X-Ratelimit-Limit-Requests: 10000 -X-Ratelimit-Limit-Tokens: 10000000 -X-Ratelimit-Remaining-Requests: 9999 -X-Ratelimit-Remaining-Tokens: 9999734 -X-Ratelimit-Reset-Requests: 6ms -X-Ratelimit-Reset-Tokens: 1ms -X-Request-Id: req_5f33061040abc8cd66ac10e78d4cb770 +X-Openai-Proxy-Wasm: v0.1 +X-Ratelimit-Limit-Requests: 30000 +X-Ratelimit-Limit-Tokens: 150000000 +X-Ratelimit-Remaining-Requests: 29999 +X-Ratelimit-Remaining-Tokens: 149999732 +X-Ratelimit-Reset-Requests: 2ms +X-Ratelimit-Reset-Tokens: 0s +X-Request-Id: req_e9b7cfd75711460dac7358c4d219b256 { - "id": "chatcmpl-Bkw5AVKFLxpgYG3Xgr5BckvCnbqh0", + "id": "chatcmpl-ERDZHyI9TV76TTWCcS7IMnPgZf7Bo", "object": "chat.completion", - "created": 1750526056, + "created": 1790155719, "model": "gpt-4.1-nano-2025-04-14", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "The chair beside the desk is beige, and the lamp beside the desk is black.", + "content": "The desk is orange, and the chair next to it is beige.", "refusal": null, "annotations": [] }, @@ -11037,9 +11055,9 @@ X-Request-Id: req_5f33061040abc8cd66ac10e78d4cb770 } ], "usage": { - "prompt_tokens": 332, - "completion_tokens": 17, - "total_tokens": 349, + "prompt_tokens": 288, + "completion_tokens": 14, + "total_tokens": 302, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 @@ -11052,5 +11070,5 @@ X-Request-Id: req_5f33061040abc8cd66ac10e78d4cb770 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": "fp_6afed20c8d" } diff --git a/vectorstores/redisvector/testdata/TestRedisVectorAsRetrieverWithMetadataFilters.httprr b/vectorstores/redisvector/testdata/TestRedisVectorAsRetrieverWithMetadataFilters.httprr index 5651c4751..6b3d3663f 100644 --- a/vectorstores/redisvector/testdata/TestRedisVectorAsRetrieverWithMetadataFilters.httprr +++ b/vectorstores/redisvector/testdata/TestRedisVectorAsRetrieverWithMetadataFilters.httprr @@ -1,5 +1,5 @@ httprr trace v1 -492 167983 +492 167967 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:22:02 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 143 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -7754,7 +7754,7 @@ X-Request-Id: req_78e472b0887640e2af7848ddcdfe587e "total_tokens": 55 } } -246 34442 +246 34426 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -7773,7 +7773,7 @@ Date: Thu, 22 Jan 2026 20:22:04 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 49 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/redisvector/testdata/TestSimilaritySearch.httprr b/vectorstores/redisvector/testdata/TestSimilaritySearch.httprr index 55c80d16c..50b3a7f7a 100644 --- a/vectorstores/redisvector/testdata/TestSimilaritySearch.httprr +++ b/vectorstores/redisvector/testdata/TestSimilaritySearch.httprr @@ -1,5 +1,5 @@ httprr trace v1 -377 434497 +377 434481 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:21:49 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 48 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -20090,7 +20090,7 @@ X-Request-Id: req_21d012c2add54e9c82b6be05a82ecc9f "total_tokens": 31 } } -247 34374 +247 34358 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -20109,7 +20109,7 @@ Date: Thu, 22 Jan 2026 20:21:50 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 56 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -21677,7 +21677,7 @@ X-Request-Id: req_ae78008ea2bd951289ee0924e4c85fa3 "total_tokens": 2 } } -247 34374 +247 34358 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -21696,7 +21696,7 @@ Date: Thu, 22 Jan 2026 20:21:51 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 33 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -23264,7 +23264,7 @@ X-Request-Id: req_62a57f46ffbc43dfb6c7ec9ed92866c0 "total_tokens": 2 } } -247 34374 +247 34358 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -23283,7 +23283,7 @@ Date: Thu, 22 Jan 2026 20:21:52 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 51 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -24851,7 +24851,7 @@ X-Request-Id: req_4a4768e317a94a99af19e04fb8d13eff "total_tokens": 2 } } -247 34374 +247 34358 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -24870,7 +24870,7 @@ Date: Thu, 22 Jan 2026 20:21:54 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 33 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -26438,7 +26438,7 @@ X-Request-Id: req_1a4f9c2386fe47ee96142f09879c7b33 "total_tokens": 2 } } -247 34376 +247 34360 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -26457,7 +26457,7 @@ Date: Thu, 22 Jan 2026 20:21:55 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 118 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/weaviate/testdata/TestDeduplicater.httprr b/vectorstores/weaviate/testdata/TestDeduplicater.httprr index 21abb6b1f..f4ecc26cf 100644 --- a/vectorstores/weaviate/testdata/TestDeduplicater.httprr +++ b/vectorstores/weaviate/testdata/TestDeduplicater.httprr @@ -1,5 +1,5 @@ httprr trace v1 -248 34452 +248 34436 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:24:18 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 45 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/weaviate/testdata/TestMetadataSearch.httprr b/vectorstores/weaviate/testdata/TestMetadataSearch.httprr index 5cda9ffaa..4623a5bac 100644 --- a/vectorstores/weaviate/testdata/TestMetadataSearch.httprr +++ b/vectorstores/weaviate/testdata/TestMetadataSearch.httprr @@ -1,5 +1,5 @@ httprr trace v1 -256 67762 +256 67746 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:24:18 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 105 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/weaviate/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr b/vectorstores/weaviate/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr index 6e640424f..430829ba6 100644 --- a/vectorstores/weaviate/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr +++ b/vectorstores/weaviate/testdata/TestSimilaritySearchWithInvalidScoreThreshold.httprr @@ -1,5 +1,5 @@ httprr trace v1 -334 334547 +334 334531 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:24:18 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 62 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/weaviate/testdata/TestWeaviateAsRetriever.httprr b/vectorstores/weaviate/testdata/TestWeaviateAsRetriever.httprr index a0c3ab057..41ae3f679 100644 --- a/vectorstores/weaviate/testdata/TestWeaviateAsRetriever.httprr +++ b/vectorstores/weaviate/testdata/TestWeaviateAsRetriever.httprr @@ -1,5 +1,5 @@ httprr trace v1 -340 101258 +340 101242 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:24:18 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 161 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -4670,7 +4670,7 @@ X-Request-Id: req_0346deed3dd6469ba79733d9297b54e1 "total_tokens": 24 } } -265 34412 +265 34396 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -4689,7 +4689,7 @@ Date: Thu, 22 Jan 2026 20:24:19 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 43 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -6257,7 +6257,7 @@ X-Request-Id: req_6a35c95b685e428998b9195ca4b25e49 "total_tokens": 6 } } -610 1638 +610 1622 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -6274,7 +6274,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 20:24:21 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 257 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/weaviate/testdata/TestWeaviateAsRetrieverWithMetadataFilterEqualsClause.httprr b/vectorstores/weaviate/testdata/TestWeaviateAsRetrieverWithMetadataFilterEqualsClause.httprr index 15bfc6683..b464f2b9e 100644 --- a/vectorstores/weaviate/testdata/TestWeaviateAsRetrieverWithMetadataFilterEqualsClause.httprr +++ b/vectorstores/weaviate/testdata/TestWeaviateAsRetrieverWithMetadataFilterEqualsClause.httprr @@ -1,5 +1,5 @@ httprr trace v1 -492 167911 +492 167895 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:24:18 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 235 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -7754,7 +7754,7 @@ X-Request-Id: req_b983bf6ad8594d7f8deaaf5ca75fc203 "total_tokens": 55 } } -266 34417 +266 34401 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -7773,7 +7773,7 @@ Date: Thu, 22 Jan 2026 20:24:19 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 91 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -9341,7 +9341,7 @@ X-Request-Id: req_b5d7a353422e4e64bffe27b2a31e7dc7 "total_tokens": 6 } } -731 1642 +731 1626 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -9358,7 +9358,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 20:24:21 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 246 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/weaviate/testdata/TestWeaviateAsRetrieverWithMetadataFilterNotSelected.httprr b/vectorstores/weaviate/testdata/TestWeaviateAsRetrieverWithMetadataFilterNotSelected.httprr index 690a29165..3527f00db 100644 --- a/vectorstores/weaviate/testdata/TestWeaviateAsRetrieverWithMetadataFilterNotSelected.httprr +++ b/vectorstores/weaviate/testdata/TestWeaviateAsRetrieverWithMetadataFilterNotSelected.httprr @@ -1,5 +1,5 @@ httprr trace v1 -492 167981 +492 167965 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:24:18 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 43 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -7754,7 +7754,7 @@ X-Request-Id: req_9816263d255445469e7652f3fd5aefbe "total_tokens": 55 } } -292 34413 +292 34397 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -7773,7 +7773,7 @@ Date: Thu, 22 Jan 2026 20:24:19 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 61 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -9341,7 +9341,7 @@ X-Request-Id: req_6265f54303164cc6827708585cd737fa "total_tokens": 12 } } -1751 1755 +1751 1739 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -9358,7 +9358,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 20:24:21 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 482 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/weaviate/testdata/TestWeaviateAsRetrieverWithMetadataFilters.httprr b/vectorstores/weaviate/testdata/TestWeaviateAsRetrieverWithMetadataFilters.httprr index 38f4935b1..2729f3f3b 100644 --- a/vectorstores/weaviate/testdata/TestWeaviateAsRetrieverWithMetadataFilters.httprr +++ b/vectorstores/weaviate/testdata/TestWeaviateAsRetrieverWithMetadataFilters.httprr @@ -1,5 +1,5 @@ httprr trace v1 -393 101153 +393 101137 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:24:30 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 139 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -4670,7 +4670,7 @@ X-Request-Id: req_a51c973ed8d64688bb4c70f6d6ebf75e "total_tokens": 33 } } -278 34392 +278 34376 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -4689,7 +4689,7 @@ Date: Thu, 22 Jan 2026 20:24:32 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 53 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -6257,7 +6257,7 @@ X-Request-Id: req_20f711560f534463ad9dcf4028e587cb "total_tokens": 9 } } -750 1747 +750 1731 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -6274,7 +6274,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 20:24:33 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 393 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/weaviate/testdata/TestWeaviateAsRetrieverWithScoreThreshold.httprr b/vectorstores/weaviate/testdata/TestWeaviateAsRetrieverWithScoreThreshold.httprr index b2ed16896..b8f7fbb1d 100644 --- a/vectorstores/weaviate/testdata/TestWeaviateAsRetrieverWithScoreThreshold.httprr +++ b/vectorstores/weaviate/testdata/TestWeaviateAsRetrieverWithScoreThreshold.httprr @@ -1,5 +1,5 @@ httprr trace v1 -441 168070 +441 168054 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:24:18 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 252 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -7754,7 +7754,7 @@ X-Request-Id: req_15603b1261fe422e97e1626ba1b7fff2 "total_tokens": 46 } } -324 34289 +324 34273 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -7773,7 +7773,7 @@ Date: Thu, 22 Jan 2026 20:24:19 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 45 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -9341,7 +9341,7 @@ X-Request-Id: req_16af74141db44904bfff45cebf92afbd "total_tokens": 17 } } -1198 1664 +1198 1648 POST https://api.openai.com/v1/chat/completions HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -9358,7 +9358,7 @@ Content-Type: application/json Date: Thu, 22 Jan 2026 20:24:21 GMT Openai-Organization: lcgo-tst Openai-Processing-Ms: 235 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/weaviate/testdata/TestWeaviateStoreAdditionalFieldsAdded.httprr b/vectorstores/weaviate/testdata/TestWeaviateStoreAdditionalFieldsAdded.httprr index 6ace3eca9..66b8cf52e 100644 --- a/vectorstores/weaviate/testdata/TestWeaviateStoreAdditionalFieldsAdded.httprr +++ b/vectorstores/weaviate/testdata/TestWeaviateStoreAdditionalFieldsAdded.httprr @@ -1,5 +1,5 @@ httprr trace v1 -245 34343 +245 34327 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:24:18 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 72 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -1583,7 +1583,7 @@ X-Request-Id: req_56134ac60fb84182a5b63782cb940fd9 "total_tokens": 1 } } -245 34344 +245 34328 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -1602,7 +1602,7 @@ Date: Thu, 22 Jan 2026 20:24:19 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 173 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/weaviate/testdata/TestWeaviateStoreAdditionalFieldsDefaults.httprr b/vectorstores/weaviate/testdata/TestWeaviateStoreAdditionalFieldsDefaults.httprr index 38af98715..3f5f5ecb8 100644 --- a/vectorstores/weaviate/testdata/TestWeaviateStoreAdditionalFieldsDefaults.httprr +++ b/vectorstores/weaviate/testdata/TestWeaviateStoreAdditionalFieldsDefaults.httprr @@ -1,5 +1,5 @@ httprr trace v1 -245 34342 +245 34326 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:24:18 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 43 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -1583,7 +1583,7 @@ X-Request-Id: req_f4690d4cd7cd444a9526955354ee673b "total_tokens": 1 } } -245 34344 +245 34328 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -1602,7 +1602,7 @@ Date: Thu, 22 Jan 2026 20:24:19 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 159 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/weaviate/testdata/TestWeaviateStoreRest.httprr b/vectorstores/weaviate/testdata/TestWeaviateStoreRest.httprr index e5fcc1e59..694b5a2db 100644 --- a/vectorstores/weaviate/testdata/TestWeaviateStoreRest.httprr +++ b/vectorstores/weaviate/testdata/TestWeaviateStoreRest.httprr @@ -1,5 +1,5 @@ httprr trace v1 -256 67761 +256 67745 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:24:18 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 70 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -3128,7 +3128,7 @@ X-Request-Id: req_7e74ca4e9d3d40848f4cf222ef1fe582 "total_tokens": 4 } } -247 34424 +247 34408 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -3147,7 +3147,7 @@ Date: Thu, 22 Jan 2026 20:24:19 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 56 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/weaviate/testdata/TestWeaviateStoreRestWithScoreThreshold.httprr b/vectorstores/weaviate/testdata/TestWeaviateStoreRestWithScoreThreshold.httprr index 78bcc9b71..8ba94747b 100644 --- a/vectorstores/weaviate/testdata/TestWeaviateStoreRestWithScoreThreshold.httprr +++ b/vectorstores/weaviate/testdata/TestWeaviateStoreRestWithScoreThreshold.httprr @@ -1,5 +1,5 @@ httprr trace v1 -334 334549 +334 334533 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:24:18 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 277 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -15464,7 +15464,7 @@ X-Request-Id: req_a80c06d9c7394d6288679de6cdd4b8ef "total_tokens": 24 } } -276 34080 +276 34064 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -15483,7 +15483,7 @@ Date: Thu, 22 Jan 2026 20:24:20 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 47 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -17051,7 +17051,7 @@ X-Request-Id: req_71c8f049a15c4f1b8d5f39f572e654dc "total_tokens": 7 } } -276 34080 +276 34064 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -17070,7 +17070,7 @@ Date: Thu, 22 Jan 2026 20:24:21 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 45 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/weaviate/testdata/TestWeaviateWithOptionEmbedder.httprr b/vectorstores/weaviate/testdata/TestWeaviateWithOptionEmbedder.httprr index f82215ce2..b3f5b5321 100644 --- a/vectorstores/weaviate/testdata/TestWeaviateWithOptionEmbedder.httprr +++ b/vectorstores/weaviate/testdata/TestWeaviateWithOptionEmbedder.httprr @@ -1,5 +1,5 @@ httprr trace v1 -256 67760 +256 67744 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -18,7 +18,7 @@ Date: Thu, 22 Jan 2026 20:24:18 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 52 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -3128,7 +3128,7 @@ X-Request-Id: req_ed0c5ac009fd42f48cef4e836ac03ce0 "total_tokens": 4 } } -247 34383 +247 34367 POST https://api.openai.com/v1/embeddings HTTP/1.1 Host: api.openai.com User-Agent: langchaingo-httprr @@ -3147,7 +3147,7 @@ Date: Thu, 22 Jan 2026 20:24:19 GMT Openai-Model: text-embedding-ada-002-v2 Openai-Organization: lcgo-tst Openai-Processing-Ms: 108 -Openai-Project: proj_pf0r5emOzUBDExmxgmWVPVjK +Openai-Project: proj_lcgo-tst Openai-Version: 2020-10-01 Server: cloudflare Strict-Transport-Security: max-age=31536000; includeSubDomains; preload diff --git a/vectorstores/weaviate/weaviate_test.go b/vectorstores/weaviate/weaviate_test.go index 5bcab1c48..17075337f 100644 --- a/vectorstores/weaviate/weaviate_test.go +++ b/vectorstores/weaviate/weaviate_test.go @@ -124,8 +124,8 @@ func createOpenAIClient(t *testing.T) (*embeddings.EmbedderImpl, *openai.LLM) { e, err := embeddings.NewEmbedder(embeddingLLM) require.NoError(t, err) - // Create LLM for chains (with default chat model) - llm, err := openai.New(opts...) + // Create LLM for chains (with the chat model the cassettes record) + llm, err := openai.New(append([]openai.Option{openai.WithModel("gpt-4.1-nano")}, opts...)...) require.NoError(t, err) return e, llm