Nënshkrimet e Mendimit

Nënshkrimet e mendimit janë përfaqësime të koduara të procesit të brendshëm të të menduarit të modelit dhe përdoren për të ruajtur kontekstin e arsyetimit në bashkëveprimet me shumë kthesa. Kur përdoren modele të të menduarit (siç janë seritë Gemini 3 dhe 2.5), API mund të kthejë një fushë thoughtSignature brenda pjesëve të përmbajtjes së përgjigjes (p.sh., pjesët text ose functionCall ).

Si rregull i përgjithshëm, nëse merrni një nënshkrim mendimi në një përgjigje model, duhet ta kaloni atë pikërisht ashtu siç e morët kur dërguat historikun e bisedës në raundin tjetër. Kur përdorni Gemini 3 Pro, duhet të kaloni nënshkrimet e mendimit gjatë thirrjes së funksionit, përndryshe do të merrni një gabim validimi (kodi i statusit 4xx).

Si funksionon

Grafiku më poshtë vizualizon kuptimin e "kthesës" dhe "hapit" siç lidhen me thirrjen e funksioneve në Gemini API. Një "kthesë" është një shkëmbim i vetëm dhe i plotë në një bisedë midis një përdoruesi dhe një modeli. Një "hap" është një veprim ose operacion më i detajuar i kryer nga modeli, shpesh si pjesë e një procesi më të madh për të përfunduar një kthesë.

Diagrami i kthesave dhe hapave të thirrjes së funksionit

Ky dokument përqendrohet në trajtimin e thirrjes së funksioneve për Gemini 3 Pro. Referojuni seksionit të sjelljes së modelit për mospërputhjet me 2.5.

Gemini 3 Pro kthen nënshkrimet e mendimit për të gjitha përgjigjet e modelit (përgjigjet nga API) me një thirrje funksioni. Nënshkrimet e mendimit shfaqen në rastet e mëposhtme:

  • Kur ka thirrje paralele të funksioneve , pjesa e parë e thirrjes së funksionit e kthyer nga përgjigja e modelit do të ketë një nënshkrim mendimi.
  • Kur ka thirrje funksionesh sekuenciale (me shumë hapa), çdo thirrje funksioni do të ketë një nënshkrim dhe ju duhet të kaloni të gjitha nënshkrimet mbrapsht.
  • Përgjigjet e modelit pa një thirrje funksioni do të kthejnë një nënshkrim mendimi brenda pjesës së fundit të kthyer nga modeli.

Tabela e mëposhtme ofron një vizualizim për thirrjet e funksioneve me shumë hapa, duke kombinuar përkufizimet e kthesave dhe hapave me konceptin e nënshkrimeve të prezantuara më sipër:

Kthehu

Hapi

Kërkesë për përdoruesin

Përgjigje modeli

FunksioniPërgjigja

1

1

request1 = user_prompt FC1 + signature FR1

1

2

request2 = request1 + (FC1 + signature) + FR1 FC2 + signature FR2

1

3

request3 = request2 + (FC2 + signature) + FR2 text_output

(pa FC)

Asnjë

Nënshkrimet në pjesët që thërrasin funksionet

Kur Gemini gjeneron një functionCall , ai mbështetet në thought_signature për të përpunuar saktë rezultatin e mjetit në kthesën tjetër.

  • Sjellja :
    • Thirrje e një funksioni të vetëm : Pjesa functionCall do të përmbajë një thought_signature .
    • Thirrjet e Funksioneve Paralele : Nëse modeli gjeneron thirrje të funksioneve paralele në një përgjigje, thought_signature i bashkëngjitet vetëm pjesës së parë functionCall . Pjesët pasuese functionCall në të njëjtën përgjigje nuk do të përmbajnë një nënshkrim.
  • Kërkesa : Duhet ta ktheni këtë nënshkrim pikërisht në pjesën ku e keni marrë kur keni dërguar historikun e bisedës.
  • Validimi : Validimi i rreptë zbatohet për të gjitha thirrjet e funksioneve brenda rradhës aktuale. (Kërkohet vetëm rradha aktuale; ne nuk validojmë në rradhët e mëparshme)
    • API-ja shkon prapa në histori (nga më e reja tek më e vjetra) për të gjetur mesazhin më të fundit të Përdoruesit që përmban përmbajtje standarde (p.sh., text ) (i cili do të ishte fillimi i kthesës aktuale). Kjo nuk do të jetë një functionResponse .
    • Të gjitha kthesat e modelit functionCall që ndodhin pas atij mesazhi specifik të përdorimit konsiderohen pjesë e kthesës.
    • Pjesa e parë functionCallsecilin hap të kthesës aktuale duhet të përfshijë thought_signature in e saj.
    • Nëse hiqni një thought_signature për pjesën e parë functionCall në çdo hap të kthesës aktuale, kërkesa do të dështojë me një gabim 400.
  • Nëse nënshkrimet e duhura nuk kthehen, ja se si do të bëni gabim
    • gemini-3-pro-preview : Mospërfshirja e nënshkrimeve do të rezultojë në një gabim 400. Fjalori do të jetë i formës:
      • Thirrja e funksionit <Function Call> në bllokun <index of contents array> i mungon një thought_signature . Për shembull, thirrja e funksionit FC1 në bllokun 1. i mungon një thought_signature .

Shembull i thirrjes së funksionit sekuencial

Ky seksion tregon një shembull të thirrjeve të shumëfishta të funksioneve ku përdoruesi bën një pyetje komplekse që kërkon detyra të shumëfishta.

Le të shqyrtojmë një shembull të thirrjes së një funksioni me shumë kthesa, ku përdoruesi bën një pyetje komplekse që kërkon detyra të shumëfishta: "Check flight status for AA100 and book a taxi if delayed" .

Kthehu

Hapi

Kërkesë për përdoruesin

Përgjigje modeli

FunksioniPërgjigja

1

1

request1="Check flight status for AA100 and book a taxi 2 hours before if delayed." FC1 ("check_flight") + signature FR1

1

2

request2 = request1 + FC1 ("check_flight") + signature + FR1 FC2("book_taxi") + signature FR2

1

3

request3 = request2 + FC2 ("book_taxi") + signature + FR2 text_output

(pa FC)

None

Kodi i mëposhtëm ilustron sekuencën në tabelën e mësipërme.

Kthesa 1, Hapi 1 (Kërkesë e përdoruesit)

{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "text": "Check flight status for AA100 and book a taxi 2 hours before if delayed."
        }
      ]
    }
  ],
  "tools": [
    {
      "functionDeclarations": [
        {
          "name": "check_flight",
          "description": "Gets the current status of a flight",
          "parameters": {
            "type": "object",
            "properties": {
              "flight": {
                "type": "string",
                "description": "The flight number to check"
              }
            },
            "required": [
              "flight"
            ]
          }
        },
        {
          "name": "book_taxi",
          "description": "Book a taxi",
          "parameters": {
            "type": "object",
            "properties": {
              "time": {
                "type": "string",
                "description": "time to book the taxi"
              }
            },
            "required": [
              "time"
            ]
          }
        }
      ]
    }
  ]
}

Kthesa 1, Hapi 1 (Përgjigje modeli)

{
"content": {
        "role": "model",
        "parts": [
          {
            "functionCall": {
              "name": "check_flight",
              "args": {
                "flight": "AA100"
              }
            },
            "thoughtSignature": "<Signature A>"
          }
        ]
  }
}

Hapi 1, Hapi 2 (Përgjigja e përdoruesit - Dërgimi i rezultateve të mjetit) Meqenëse ky hap i përdoruesit përmban vetëm një functionResponse (pa tekst të ri), jemi ende në Hapi 1. Duhet të ruajmë <Signature_A> .

{
      "role": "user",
      "parts": [
        {
          "text": "Check flight status for AA100 and book a taxi 2 hours before if delayed."
        }
      ]
    },
    {
        "role": "model",
        "parts": [
          {
            "functionCall": {
              "name": "check_flight",
              "args": {
                "flight": "AA100"
              }
            },
            "thoughtSignature": "<Signature A>" //Required and Validated
          }
        ]
      },
      {
        "role": "user",
        "parts": [
          {
            "functionResponse": {
              "name": "check_flight",
              "response": {
                "status": "delayed",
                "departure_time": "12 PM"
                }
              }
            }
        ]
}

Kthesa 1, Hapi 2 (Modeli) Modeli tani vendos të rezervojë një taksi bazuar në rezultatin e mëparshëm të mjetit.

{
      "content": {
        "role": "model",
        "parts": [
          {
            "functionCall": {
              "name": "book_taxi",
              "args": {
                "time": "10 AM"
              }
            },
            "thoughtSignature": "<Signature B>"
          }
        ]
      }
}

Kthesa 1, Hapi 3 (Përdoruesi - Dërgimi i rezultatit të mjetit) Për të dërguar konfirmimin e rezervimit të taksisë, duhet të përfshijmë nënshkrime për TË GJITHA thirrjet e funksioneve në këtë lak ( <Signature A> + <Signature B> ).

{
      "role": "user",
      "parts": [
        {
          "text": "Check flight status for AA100 and book a taxi 2 hours before if delayed."
        }
      ]
    },
    {
        "role": "model",
        "parts": [
          {
            "functionCall": {
              "name": "check_flight",
              "args": {
                "flight": "AA100"
              }
            },
            "thoughtSignature": "<Signature A>" //Required and Validated
          }
        ]
      },
      {
        "role": "user",
        "parts": [
          {
            "functionResponse": {
              "name": "check_flight",
              "response": {
                "status": "delayed",
                "departure_time": "12 PM"
              }
              }
            }
        ]
      },
      {
        "role": "model",
        "parts": [
          {
            "functionCall": {
              "name": "book_taxi",
              "args": {
                "time": "10 AM"
              }
            },
            "thoughtSignature": "<Signature B>" //Required and Validated
          }
        ]
      },
      {
        "role": "user",
        "parts": [
          {
            "functionResponse": {
              "name": "book_taxi",
              "response": {
                "booking_status": "success"
              }
              }
            }
        ]
    }
}

Shembull i thirrjes së funksionit paralel

Le të shqyrtojmë një shembull të thirrjes së një funksioni paralel ku përdoruesi pyet "Check weather in Paris and London" për të parë se ku e kryen modeli validimin.

Kthehu

Hapi

Kërkesë për përdoruesin

Përgjigje modeli

FunksioniPërgjigja

1

1

request1="Kontrolloni motin në Paris dhe Londër"

FC1 ("Paris") + nënshkrimi

FC2 ("Londër")

FR1

1

2

kërkesa 2 = kërkesa1 + FC1 ("Paris") + nënshkrimi + FC2 ("Londër")

text_output

(pa FC)

Asnjë

Kodi i mëposhtëm ilustron sekuencën në tabelën e mësipërme.

Kthesa 1, Hapi 1 (Kërkesë e përdoruesit)

{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "text": "Check the weather in Paris and London."
        }
      ]
    }
  ],
  "tools": [
    {
      "functionDeclarations": [
        {
          "name": "get_current_temperature",
          "description": "Gets the current temperature for a given location.",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city name, e.g. San Francisco"
              }
            },
            "required": [
              "location"
            ]
          }
        }
      ]
    }
  ]
}

Kthesa 1, Hapi 1 (Përgjigje modeli)

{
  "content": {
    "parts": [
      {
        "functionCall": {
          "name": "get_current_temperature",
          "args": {
            "location": "Paris"
          }
        },
        "thoughtSignature": "<Signature_A>"// INCLUDED on First FC
      },
      {
        "functionCall": {
          "name": "get_current_temperature",
          "args": {
            "location": "London"
          }// NO signature on subsequent parallel FCs
        }
      }
    ]
  }
}

Hapi 1, Hapi 2 (Përgjigja e përdoruesit - Dërgimi i rezultateve të mjetit) Duhet ta ruajmë <Signature_A> në pjesën e parë pikërisht ashtu siç është marrë.

[
  {
    "role": "user",
    "parts": [
      {
        "text": "Check the weather in Paris and London."
      }
    ]
  },
  {
    "role": "model",
    "parts": [
      {
        "functionCall": {
          "name": "get_current_temperature",
          "args": {
            "city": "Paris"
          }
        },
        "thought_signature": "<Signature_A>" // MUST BE INCLUDED
      },
      {
        "functionCall": {
          "name": "get_current_temperature",
          "args": {
            "city": "London"
          }
        }
      } // NO SIGNATURE FIELD
    ]
  },
  {
    "role": "user",
    "parts": [
      {
        "functionResponse": {
          "name": "get_current_temperature",
          "response": {
            "temp": "15C"
          }
        }
      },
      {
        "functionResponse": {
          "name": "get_current_temperature",
          "response": {
            "temp": "12C"
          }
        }
      }
    ]
  }
]

Nënshkrimet në pjesët jo- functionCall

Gemini gjithashtu mund të kthejë thought_signatures në pjesën e fundit të përgjigjes në pjesët që nuk përfshijnë thirrje funksioni.

  • Sjellja : Pjesa e fundit e përmbajtjes ( text, inlineData… ) e kthyer nga modeli mund të përmbajë një thought_signature .
  • Rekomandim : Kthimi i këtyre nënshkrimeve rekomandohet për të siguruar që modeli të ruajë arsyetim me cilësi të lartë, veçanërisht për ndjekjen e udhëzimeve komplekse ose rrjedhat e punës të simuluara të agjentëve.
  • Validimi : API nuk e zbaton në mënyrë strikte validimin. Nuk do të merrni një gabim bllokimi nëse i lini jashtë, megjithëse performanca mund të përkeqësohet.

Arsyetim Tekst/Në Kontekst (Pa validim)

Kthesa 1, Hapi 1 (Përgjigje modeli)

{
  "role": "model",
  "parts": [
    {
      "text": "I need to calculate the risk. Let me think step-by-step...",
      "thought_signature": "<Signature_C>" // OPTIONAL (Recommended)
    }
  ]
}

Kthesa 2, Hapi 1 (Përdoruesi)

[
  { "role": "user", "parts": [{ "text": "What is the risk?" }] },
  {
    "role": "model", 
    "parts": [
      {
        "text": "I need to calculate the risk. Let me think step-by-step...",
        // If you omit <Signature_C> here, no error will occur.
      }
    ]
  },
  { "role": "user", "parts": [{ "text": "Summarize it." }] }
]

Nënshkrimet për pajtueshmërinë me OpenAI

Shembujt e mëposhtëm tregojnë se si të trajtohen nënshkrimet e mendimeve për një API të përfundimit të bisedës duke përdorur përputhshmërinë me OpenAI .

Shembull i thirrjes së funksionit sekuencial

Ky është një shembull i thirrjes së funksioneve të shumëfishta ku përdoruesi bën një pyetje komplekse që kërkon detyra të shumëfishta.

Le të shqyrtojmë një shembull të një funksioni me thirrje të shumëfishta, ku përdoruesi pyet Check flight status for AA100 and book a taxi if delayed dhe mund të shihni se çfarë ndodh kur përdoruesi bën një pyetje komplekse që kërkon detyra të shumëfishta.

Kthehu

Hapi

Kërkesë për përdoruesin

Përgjigje modeli

FunksioniPërgjigja

1

1

request1="Check the weather in Paris and London" FC1 ("Paris") + signature

FC2 ("Londër")

FR1

1

2

request 2 = request1 + FC1 ("Paris") + signature + FC2 ("London") text_output

(pa FC)

None

Kodi i mëposhtëm ecën nëpër sekuencën e dhënë.

Kthesa 1, Hapi 1 (Kërkesa e Përdoruesit)

{
  "model": "google/gemini-3-pro-preview",
  "messages": [
    {
      "role": "user",
      "content": "Check flight status for AA100 and book a taxi 2 hours before if delayed."
    }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "check_flight",
        "description": "Gets the current status of a flight",
        "parameters": {
          "type": "object",
          "properties": {
            "flight": {
              "type": "string",
              "description": "The flight number to check."
            }
          },
          "required": [
            "flight"
          ]
        }
      }
    },
    {
      "type": "function",
      "function": {
        "name": "book_taxi",
        "description": "Book a taxi",
        "parameters": {
          "type": "object",
          "properties": {
            "time": {
              "type": "string",
              "description": "time to book the taxi"
            }
          },
          "required": [
            "time"
          ]
        }
      }
    }
  ]
}

Kthesa 1, Hapi 1 (Përgjigje Modeli)

{
      "role": "model",
        "tool_calls": [
          {
            "extra_content": {
              "google": {
                "thought_signature": "<Signature A>"
              }
            },
            "function": {
              "arguments": "{\"flight\":\"AA100\"}",
              "name": "check_flight"
            },
            "id": "function-call-1",
            "type": "function"
          }
        ]
    }

Kthesa 1, Hapi 2 (Përgjigja e Përdoruesit - Dërgimi i Rezultateve të Mjetit)

Meqenëse kjo raund përdoruesi përmban vetëm një functionResponse (pa tekst të ri), ne jemi ende në Raundin 1 dhe duhet të ruajmë <Signature_A> .

"messages": [
    {
      "role": "user",
      "content": "Check flight status for AA100 and book a taxi 2 hours before if delayed."
    },
    {
      "role": "model",
        "tool_calls": [
          {
            "extra_content": {
              "google": {
                "thought_signature": "<Signature A>" //Required and Validated
              }
            },
            "function": {
              "arguments": "{\"flight\":\"AA100\"}",
              "name": "check_flight"
            },
            "id": "function-call-1",
            "type": "function"
          }
        ]
    },
    {
      "role": "tool",
      "name": "check_flight",
      "tool_call_id": "function-call-1",
      "content": "{\"status\":\"delayed\",\"departure_time\":\"12 PM\"}"                 
    }
  ]

Kthesa 1, Hapi 2 (Model)

Modeli tani vendos të rezervojë një taksi bazuar në rezultatin e mëparshëm të mjetit.

{
"role": "model",
"tool_calls": [
{
"extra_content": {
"google": {
"thought_signature": "<Signature B>"
}
            },
            "function": {
              "arguments": "{\"time\":\"10 AM\"}",
              "name": "book_taxi"
            },
            "id": "function-call-2",
            "type": "function"
          }
       ]
}

Kthesa 1, Hapi 3 (Përdoruesi - Dërgimi i të Dhënave të Mjetit)

Për të dërguar konfirmimin e rezervimit të taksisë, duhet të përfshijmë nënshkrime për TË GJITHA thirrjet e funksioneve në këtë lak ( <Signature A> + <Signature B> ).

"messages": [
    {
      "role": "user",
      "content": "Check flight status for AA100 and book a taxi 2 hours before if delayed."
    },
    {
      "role": "model",
        "tool_calls": [
          {
            "extra_content": {
              "google": {
                "thought_signature": "<Signature A>" //Required and Validated
              }
            },
            "function": {
              "arguments": "{\"flight\":\"AA100\"}",
              "name": "check_flight"
            },
            "id": "function-call-1d6a1a61-6f4f-4029-80ce-61586bd86da5",
            "type": "function"
          }
        ]
    },
    {
      "role": "tool",
      "name": "check_flight",
      "tool_call_id": "function-call-1d6a1a61-6f4f-4029-80ce-61586bd86da5",
      "content": "{\"status\":\"delayed\",\"departure_time\":\"12 PM\"}"                 
    },
    {
      "role": "model",
        "tool_calls": [
          {
            "extra_content": {
              "google": {
                "thought_signature": "<Signature B>" //Required and Validated
              }
            },
            "function": {
              "arguments": "{\"time\":\"10 AM\"}",
              "name": "book_taxi"
            },
            "id": "function-call-65b325ba-9b40-4003-9535-8c7137b35634",
            "type": "function"
          }
        ]
    },
    {
      "role": "tool",
      "name": "book_taxi",
      "tool_call_id": "function-call-65b325ba-9b40-4003-9535-8c7137b35634",
      "content": "{\"booking_status\":\"success\"}"
    }
  ]

Shembull i thirrjes së funksionit paralel

Le të shqyrtojmë një shembull të thirrjes së një funksioni paralel ku përdoruesi pyet "Check weather in Paris and London" dhe ju mund të shihni se ku bën validimin modeli.

Kthehu

Hapi

Kërkesë për përdoruesin

Përgjigje modeli

FunksioniPërgjigja

1

1

request1="Check the weather in Paris and London" FC1 ("Paris") + signature

FC2 ("Londër")

FR1

1

2

request 2 = request1 + FC1 ("Paris") + signature + FC2 ("London") text_output

(pa FC)

None

Ja kodi për të ecur nëpër sekuencën e dhënë.

Kthesa 1, Hapi 1 (Kërkesa e Përdoruesit)

{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "text": "Check the weather in Paris and London."
        }
      ]
    }
  ],
  "tools": [
    {
      "functionDeclarations": [
        {
          "name": "get_current_temperature",
          "description": "Gets the current temperature for a given location.",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city name, e.g. San Francisco"
              }
            },
            "required": [
              "location"
            ]
          }
        }
      ]
    }
  ]
}

Kthesa 1, Hapi 1 (Përgjigje Modeli)

{
"role": "assistant",
        "tool_calls": [
          {
            "extra_content": {
              "google": {
                "thought_signature": "<Signature A>" //Signature returned
              }
            },
            "function": {
              "arguments": "{\"location\":\"Paris\"}",
              "name": "get_current_temperature"
            },
            "id": "function-call-f3b9ecb3-d55f-4076-98c8-b13e9d1c0e01",
            "type": "function"
          },
          {
            "function": {
              "arguments": "{\"location\":\"London\"}",
              "name": "get_current_temperature"
            },
            "id": "function-call-335673ad-913e-42d1-bbf5-387c8ab80f44",
            "type": "function" // No signature on Parallel FC
          }
        ]
}

Kthesa 1, Hapi 2 (Përgjigja e Përdoruesit - Dërgimi i Rezultateve të Mjetit)

Duhet ta ruani <Signature_A> në pjesën e parë pikërisht ashtu siç e keni marrë.

"messages": [
    {
      "role": "user",
      "content": "Check the weather in Paris and London."
    },
    {
      "role": "assistant",
        "tool_calls": [
          {
            "extra_content": {
              "google": {
                "thought_signature": "<Signature A>" //Required
              }
            },
            "function": {
              "arguments": "{\"location\":\"Paris\"}",
              "name": "get_current_temperature"
            },
            "id": "function-call-f3b9ecb3-d55f-4076-98c8-b13e9d1c0e01",
            "type": "function"
          },
          {
            "function": { //No Signature
              "arguments": "{\"location\":\"London\"}",
              "name": "get_current_temperature"
            },
            "id": "function-call-335673ad-913e-42d1-bbf5-387c8ab80f44",
            "type": "function"
          }
        ]
    },
    {
      "role":"tool",
      "name": "get_current_temperature",
      "tool_call_id": "function-call-f3b9ecb3-d55f-4076-98c8-b13e9d1c0e01",
      "content": "{\"temp\":\"15C\"}"
    },    
    {
      "role":"tool",
      "name": "get_current_temperature",
      "tool_call_id": "function-call-335673ad-913e-42d1-bbf5-387c8ab80f44",
      "content": "{\"temp\":\"12C\"}"
    }
  ]

Pyetje të shpeshta

  1. Si mund ta transferoj historikun nga një model tjetër në Gemini 3 Pro me një pjesë të thirrjes së funksionit në kthesën dhe hapin aktual? Duhet të ofroj pjesë të thirrjes së funksionit që nuk janë gjeneruar nga API dhe për këtë arsye nuk kanë një nënshkrim mendimi të lidhur me to?

    Ndërkohë që injektimi i blloqeve të thirrjeve të funksioneve të personalizuara në kërkesë nuk rekomandohet fuqimisht, në rastet kur nuk mund të shmanget, p.sh. duke i dhënë informacion modelit mbi thirrjet e funksioneve dhe përgjigjet që janë ekzekutuar në mënyrë deterministe nga klienti, ose duke transferuar një gjurmë nga një model tjetër që nuk përfshin nënshkrime mendimi, mund të vendosni nënshkrimet e mëposhtme artificiale si "context_engineering_is_the_way_to_go" ose "skip_thought_signature_validator" në fushën e nënshkrimit të mendimit për të anashkaluar validimin.

  2. Po dërgoj mbrapsht thirrje dhe përgjigje të funksioneve paralele të ndërthurura dhe API po kthen një vlerë 400. Pse?

    Kur API kthen thirrjet paralele të funksioneve "FC1 + nënshkrim, FC2", përgjigja e pritur e përdoruesit është "FC1 + nënshkrim, FC2, FR1, FR2". Nëse i keni të ndërthurura si "FC1 + nënshkrim, FR1, FC2, FR2", API do të kthejë një gabim 400.

  3. Kur transmetohet dhe modeli nuk po kthen një thirrje funksioni, nuk mund ta gjej nënshkrimin e mendimit.

    Gjatë një përgjigjeje të modelit që nuk përmban një FC me një kërkesë transmetimi, modeli mund ta kthejë nënshkrimin e mendimit në një pjesë me një pjesë të përmbajtjes së tekstit bosh. Këshillohet që të analizohet e gjithë kërkesa derisa modeli të kthejë finish_reason .

Sjellja e shenjës së mendimit sipas serisë së modelit

Modelet Gemini 3 Pro dhe Gemini 2.5 sillen ndryshe me nënshkrimet e mendimit në thirrjet e funksioneve:

  • Nëse ka thirrje funksionesh në një përgjigje,
    • Gemini 3 Pro do ta ketë gjithmonë nënshkrimin në pjesën e parë të thirrjes së funksionit. Është e detyrueshme të kthehet ajo pjesë.
    • Gemini 2.5 do ta ketë nënshkrimin në pjesën e parë (pavarësisht nga lloji). Kthimi i asaj pjese është opsional .
  • Nëse nuk ka thirrje funksionesh në një përgjigje,
    • Gemini 3 Pro do të ketë firmën në pjesën e fundit nëse modeli gjeneron një ide.
    • Gemini 2.5 nuk do të ketë një nënshkrim në asnjë pjesë.

Për sjelljen e të menduarit dhe nënshkrimin e modeleve Gemini 2.5, referojuni faqes së të menduarit .