Я строю многообразительную систему беседы, используя инструменты Gemini 2.5 с моделями Gemini 2.5 с моделями Openai, я обычно сохраняю историю разговоров как множество сообщений (роль, контент), и этого достаточно для воспроизведения чата. И я не уверен, что следует хранить, чтобы верно реконструировать разговор позже.{
"sdk_http_response": {
"headers": {
"Content-Type": "application/json; charset=UTF-8",
"Vary": "Origin, X-Origin, Referer",
"Content-Encoding": "gzip",
"Date": "Wed, 13 Aug 2025 01:35:21 GMT",
"Server": "scaffolding on HTTPServer2",
"X-XSS-Protection": "0",
"X-Frame-Options": "SAMEORIGIN",
"X-Content-Type-Options": "nosniff",
"Server-Timing": "gfet4t7; dur=4209",
"Alt-Svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000",
"Transfer-Encoding": "chunked"
},
"body": null
},
"candidates": [
{
"content": {
"parts": [
{
"video_metadata": null,
"thought": null,
"inline_data": null,
"file_data": null,
"thought_signature": "b'\\n\\xa9\\x0c\\x01T\\xa8\\\\\\xee\\xd4\\xb6\\xf6%\\xd5\\...''",
"code_execution_result": null,
"executable_code": null,
"function_call": null,
"function_response": null,
"text": "INSIGHTS\n- Current total: **290 employees**\n- Status mix: All employees are currently active.\n- Top segments by job title:..."
}
],
"role": "model"
},
"citation_metadata": null,
"finish_message": null,
"token_count": null,
"finish_reason": {
"_value_": "STOP",
"_name_": "STOP",
"__objclass__": "{'_generate_next_value_': , '__module__': 'google.genai.types', '__doc__': 'Output only. The reason why the model stopped generating tokens.\\n\\n If empty, the model has not stopped generating the tokens.\\n ', '_new_member_': , '_use_args_': True, '_member_names_': ['FINISH_REASON_UNSPECIFIED', 'STOP', 'MAX_TOKENS', 'SAFETY', 'RECITATION', 'LANGUAGE', 'OTHER', 'BLOCKLIST', 'PROHIBITED_CONTENT', 'SPII', 'MALFORMED_FUNCTION_CALL', 'IMAGE_SAFETY', 'UNEXPECTED_TOOL_CALL'], '_member_map_': {'FINISH_REASON_UNSPECIFIED': , 'STOP': , 'MAX_TOKENS': , 'SAFETY': , 'RECITATION': , 'LANGUAGE': , 'OTHER': , 'BLOCKLIST': , 'PROHIBITED_CONTENT': , 'SPII': , 'MALFORMED_FUNCTION_CALL': , 'IMAGE_SAFETY': , 'UNEXPECTED_TOOL_CALL': }, '_value2member_map_': {'FINISH_REASON_UNSPECIFIED': , 'STOP': , 'MAX_TOKENS': , 'SAFETY': , 'RECITATION': , 'LANGUAGE': , 'OTHER': , 'BLOCKLIST': , 'PROHIBITED_CONTENT': , 'SPII': , 'MALFORMED_FUNCTION_CALL': , 'IMAGE_SAFETY': , 'UNEXPECTED_TOOL_CALL': }, '_unhashable_values_': [], '_member_type_': , '_value_repr_': , 'FINISH_REASON_UNSPECIFIED': , 'STOP': , 'MAX_TOKENS': , 'SAFETY': , 'RECITATION': , 'LANGUAGE': , 'OTHER': , 'BLOCKLIST': , 'PROHIBITED_CONTENT': , 'SPII': , 'MALFORMED_FUNCTION_CALL': , 'IMAGE_SAFETY': , 'UNEXPECTED_TOOL_CALL': , '__new__': }",
"_sort_order_": 1
},
"url_context_metadata": null,
"avg_logprobs": null,
"grounding_metadata": null,
"index": 0,
"logprobs_result": null,
"safety_ratings": null
}
],
"create_time": null,
"model_version": "gemini-2.5-flash",
"prompt_feedback": null,
"response_id": "2eubaISSKc7ZqtsPl_i46Qk",
"usage_metadata": {
"cache_tokens_details": null,
"cached_content_token_count": null,
"candidates_token_count": 218,
"candidates_tokens_details": null,
"prompt_token_count": 6409,
"prompt_tokens_details": [
{
"modality": {
"_value_": "TEXT",
"_name_": "TEXT",
"__objclass__": "{'_generate_next_value_': , '__module__': 'google.genai.types', '__doc__': 'Server content modalities.', '_new_member_': , '_use_args_': True, '_member_names_': ['MODALITY_UNSPECIFIED', 'TEXT', 'IMAGE', 'VIDEO', 'AUDIO', 'DOCUMENT'], '_member_map_': {'MODALITY_UNSPECIFIED': , 'TEXT': , 'IMAGE': , 'VIDEO': , 'AUDIO': , 'DOCUMENT': }, '_value2member_map_': {'MODALITY_UNSPECIFIED': , 'TEXT': , 'IMAGE': , 'VIDEO': , 'AUDIO': , 'DOCUMENT': }, '_unhashable_values_': [], '_member_type_': , '_value_repr_': , 'MODALITY_UNSPECIFIED': , 'TEXT': , 'IMAGE': , 'VIDEO': , 'AUDIO': , 'DOCUMENT': , '__new__': }",
"_sort_order_": 1
},
"token_count": 6409
}
],
"thoughts_token_count": 306,
"tool_use_prompt_token_count": null,
"tool_use_prompt_tokens_details": null,
"total_token_count": 6933,
"traffic_type": null
},
"automatic_function_calling_history": [
{
"parts": [
{
"video_metadata": null,
"thought": null,
"inline_data": null,
"file_data": null,
"thought_signature": null,
"code_execution_result": null,
"executable_code": null,
"function_call": null,
"function_response": null,
"text": "how many emplyoees do we have?"
}
],
"role": "user"
},
{
"parts": [
{
"video_metadata": null,
"thought": null,
"inline_data": null,
"file_data": null,
"thought_signature": "b'\\n\\xbf\\x03\\x01T\\xa8\\\\\\xee...'",
"code_execution_result": null,
"executable_code": null,
"function_call": null,
"function_response": null,
"text": "Clarifying which data best answers your question so results are reliable."
},
{
"video_metadata": null,
"thought": null,
"inline_data": null,
"file_data": null,
"thought_signature": null,
"code_execution_result": null,
"executable_code": null,
"function_call": {
"id": null,
"args": {},
"name": "list_tables"
},
"function_response": null,
"text": null
}
],
"role": "model"
},
{
"parts": [
{
"video_metadata": null,
"thought": null,
"inline_data": null,
"file_data": null,
"thought_signature": null,
"code_execution_result": null,
"executable_code": null,
"function_call": null,
"function_response": {
"will_continue": null,
"scheduling": null,
"id": null,
"name": "list_tables",
"response": {
"result": {
"meta": null,
"content": [
{
"type": "text",
"text": "Available tables: ['Sales.SalesTaxRate', 'Sales.PersonCreditCard', ...",
"annotations": null,
"meta": null
}
],
"structuredContent": {
"result": "Available tables: ['Sales.SalesTaxRate', 'Sales.PersonCreditCard', ..."
},
"isError": false
}
}
},
"text": null
}
],
"role": "user"
}
],
"parsed": null
}
< /code>
Мои вопросы: < /p>
Какова наилучшая практика для хранения сообщений как у пользователя, так и от модели, включая инструменты и ответы инструментов, так что я могу позже воспроизводить или проанализировать разговор? Для эффективности хранения? < /p>
< /li>
Есть ли рекомендуемая схема JSON для Gemini+MCP История разговора, аналогично формату сообщений OpenAI, но при поддержке function_call и function_response? Flash) с автоматическим вызовом функции через инструмент MCP.
Подробнее здесь: https://stackoverflow.com/questions/797 ... uding-tool
Как сохранить многократные данные для разговора Gemini 2.5 Flash + MCP (включая инструментальные вызовы и ответы)? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение