letta-nightly 0.7.1.dev20250423104245__tar.gz → 0.7.2.dev20250423222439__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/PKG-INFO +1 -1
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/__init__.py +1 -1
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/helpers/composio_helpers.py +1 -1
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/helpers/datetime_helpers.py +9 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/jobs/llm_batch_job_polling.py +2 -1
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/llm_api/anthropic.py +10 -6
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/llm_api/anthropic_client.py +2 -2
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/llm_api/cohere.py +2 -2
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/llm_api/google_ai_client.py +2 -2
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/llm_api/google_vertex_client.py +2 -2
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/llm_api/openai.py +11 -4
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/llm_api/openai_client.py +34 -2
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/chat_completion_proxy.py +2 -2
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/letta_message_content.py +2 -1
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/llm_config.py +12 -2
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/message.py +17 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/openai/chat_completion_response.py +52 -3
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/chat_completions_interface.py +2 -2
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/interface.py +1 -1
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/v1/messages.py +9 -1
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/agent_manager.py +5 -1
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/pyproject.toml +1 -1
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/LICENSE +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/README.md +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/__main__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/agent.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/agents/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/agents/base_agent.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/agents/ephemeral_agent.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/agents/ephemeral_memory_agent.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/agents/helpers.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/agents/letta_agent.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/agents/letta_agent_batch.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/agents/voice_agent.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/benchmark/benchmark.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/benchmark/constants.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/cli/cli.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/cli/cli_config.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/cli/cli_load.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/client/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/client/client.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/client/streaming.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/client/utils.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/config.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/constants.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/data_sources/connectors.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/data_sources/connectors_helper.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/embeddings.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/errors.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/functions/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/functions/ast_parsers.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/functions/function_sets/base.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/functions/function_sets/extras.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/functions/function_sets/multi_agent.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/functions/functions.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/functions/helpers.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/functions/interface.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/functions/mcp_client/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/functions/mcp_client/base_client.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/functions/mcp_client/exceptions.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/functions/mcp_client/sse_client.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/functions/mcp_client/stdio_client.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/functions/mcp_client/types.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/functions/schema_generator.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/groups/dynamic_multi_agent.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/groups/helpers.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/groups/round_robin_multi_agent.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/groups/sleeptime_multi_agent.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/groups/supervisor_multi_agent.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/helpers/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/helpers/converters.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/helpers/json_helpers.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/helpers/message_helper.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/helpers/tool_execution_helper.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/helpers/tool_rule_solver.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/humans/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/humans/examples/basic.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/humans/examples/cs_phd.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/interface.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/interfaces/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/interfaces/anthropic_streaming_interface.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/interfaces/openai_chat_completions_streaming_interface.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/interfaces/utils.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/jobs/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/jobs/helpers.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/jobs/scheduler.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/jobs/types.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/llm_api/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/llm_api/aws_bedrock.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/llm_api/azure_openai.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/llm_api/azure_openai_constants.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/llm_api/deepseek.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/llm_api/google_constants.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/llm_api/helpers.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/llm_api/llm_api_tools.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/llm_api/llm_client.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/llm_api/llm_client_base.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/llm_api/mistral.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/README.md +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/constants.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/function_parser.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/grammars/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/grammars/gbnf_grammar_generator.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/grammars/json.gbnf +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/grammars/json_func_calls_with_inner_thoughts.gbnf +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/json_parser.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/koboldcpp/api.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/koboldcpp/settings.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/llamacpp/api.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/llamacpp/settings.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/llm_chat_completion_wrappers/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/llm_chat_completion_wrappers/airoboros.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/llm_chat_completion_wrappers/chatml.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/llm_chat_completion_wrappers/configurable_wrapper.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/llm_chat_completion_wrappers/dolphin.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/llm_chat_completion_wrappers/llama3.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/llm_chat_completion_wrappers/simple_summary_wrapper.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/llm_chat_completion_wrappers/wrapper_base.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/llm_chat_completion_wrappers/zephyr.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/lmstudio/api.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/lmstudio/settings.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/ollama/api.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/ollama/settings.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/settings/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/settings/deterministic_mirostat.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/settings/settings.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/settings/simple.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/utils.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/vllm/api.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/webui/api.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/webui/legacy_api.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/webui/legacy_settings.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/local_llm/webui/settings.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/log.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/main.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/memory.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/openai_backcompat/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/openai_backcompat/openai_object.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/__all__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/agent.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/agents_tags.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/base.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/block.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/block_history.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/blocks_agents.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/custom_columns.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/enums.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/errors.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/file.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/group.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/groups_agents.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/groups_blocks.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/identities_agents.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/identities_blocks.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/identity.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/job.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/job_messages.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/llm_batch_items.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/llm_batch_job.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/message.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/mixins.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/organization.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/passage.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/provider.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/sandbox_config.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/source.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/sources_agents.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/sqlalchemy_base.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/sqlite_functions.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/step.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/tool.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/tools_agents.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/orm/user.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/personas/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/personas/examples/anna_pa.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/personas/examples/google_search_persona.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/personas/examples/memgpt_doc.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/personas/examples/memgpt_starter.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/personas/examples/o1_persona.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/personas/examples/offline_memory_persona.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/personas/examples/sam.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/personas/examples/sam_pov.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/personas/examples/sam_simple_pov_gpt35.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/personas/examples/sleeptime_doc_persona.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/personas/examples/sqldb/test.db +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/prompts/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/prompts/gpt_summarize.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/prompts/gpt_system.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/prompts/system/memgpt_base.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/prompts/system/memgpt_chat.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/prompts/system/memgpt_chat_compressed.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/prompts/system/memgpt_chat_fstring.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/prompts/system/memgpt_convo_only.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/prompts/system/memgpt_doc.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/prompts/system/memgpt_gpt35_extralong.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/prompts/system/memgpt_intuitive_knowledge.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/prompts/system/memgpt_memory_only.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/prompts/system/memgpt_modified_chat.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/prompts/system/memgpt_modified_o1.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/prompts/system/memgpt_offline_memory.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/prompts/system/memgpt_offline_memory_chat.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/prompts/system/memgpt_sleeptime_chat.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/prompts/system/sleeptime.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/prompts/system/sleeptime_doc_ingest.txt +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/pytest.ini +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/agent.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/block.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/embedding_config.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/embedding_config_overrides.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/enums.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/environment_variables.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/file.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/group.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/health.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/identity.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/job.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/letta_base.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/letta_message.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/letta_request.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/letta_response.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/llm_batch_job.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/llm_config_overrides.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/memory.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/openai/chat_completion_request.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/openai/chat_completions.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/openai/embedding_response.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/openai/openai.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/organization.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/passage.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/providers.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/response_format.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/run.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/sandbox_config.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/source.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/step.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/tool.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/tool_execution_result.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/tool_rule.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/usage.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/schemas/user.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/serialize_schemas/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/serialize_schemas/marshmallow_agent.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/serialize_schemas/marshmallow_agent_environment_variable.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/serialize_schemas/marshmallow_base.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/serialize_schemas/marshmallow_block.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/serialize_schemas/marshmallow_custom_fields.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/serialize_schemas/marshmallow_message.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/serialize_schemas/marshmallow_tag.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/serialize_schemas/marshmallow_tool.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/serialize_schemas/pydantic_agent_schema.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/constants.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/db.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/generate_openapi_schema.sh +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/app.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/auth/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/auth/index.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/auth_token.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/optimistic_json_parser.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/openai/chat_completions/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/openai/chat_completions/chat_completions.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/v1/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/v1/agents.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/v1/blocks.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/v1/groups.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/v1/health.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/v1/identities.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/v1/jobs.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/v1/llms.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/v1/organizations.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/v1/providers.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/v1/runs.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/v1/sandbox_configs.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/v1/sources.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/v1/steps.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/v1/tags.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/v1/tools.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/v1/users.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/routers/v1/voice.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/static_files.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/rest_api/utils.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/server.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/startup.sh +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/static_files/assets/index-048c9598.js +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/static_files/assets/index-0e31b727.css +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/static_files/favicon.ico +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/static_files/index.html +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/static_files/memgpt_logo_transparent.png +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/utils.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/ws_api/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/ws_api/example_client.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/ws_api/interface.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/ws_api/protocol.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/server/ws_api/server.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/block_manager.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/group_manager.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/helpers/agent_manager_helper.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/helpers/tool_execution_helper.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/identity_manager.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/job_manager.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/llm_batch_manager.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/message_manager.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/organization_manager.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/passage_manager.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/per_agent_lock_manager.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/provider_manager.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/sandbox_config_manager.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/source_manager.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/step_manager.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/summarizer/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/summarizer/enums.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/summarizer/summarizer.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/tool_executor/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/tool_executor/tool_execution_manager.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/tool_executor/tool_execution_sandbox.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/tool_executor/tool_executor.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/tool_manager.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/tool_sandbox/__init__.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/tool_sandbox/base.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/tool_sandbox/e2b_sandbox.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/tool_sandbox/local_sandbox.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/services/user_manager.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/settings.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/streaming_interface.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/streaming_utils.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/system.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/tracing.py +0 -0
- {letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/utils.py +0 -0
@@ -10,7 +10,7 @@ def get_composio_api_key(actor: User, logger: Optional[Logger] = None) -> Option
|
|
10
10
|
api_keys = SandboxConfigManager().list_sandbox_env_vars_by_key(key="COMPOSIO_API_KEY", actor=actor)
|
11
11
|
if not api_keys:
|
12
12
|
if logger:
|
13
|
-
logger.
|
13
|
+
logger.debug(f"No API keys found for Composio. Defaulting to the environment variable...")
|
14
14
|
if tool_settings.composio_api_key:
|
15
15
|
return tool_settings.composio_api_key
|
16
16
|
else:
|
@@ -66,6 +66,15 @@ def get_utc_time() -> datetime:
|
|
66
66
|
return datetime.now(timezone.utc)
|
67
67
|
|
68
68
|
|
69
|
+
def get_utc_time_int() -> int:
|
70
|
+
return int(get_utc_time().timestamp())
|
71
|
+
|
72
|
+
|
73
|
+
def timestamp_to_datetime(timestamp_seconds: int) -> datetime:
|
74
|
+
"""Convert Unix timestamp in seconds to UTC datetime object"""
|
75
|
+
return datetime.fromtimestamp(timestamp_seconds, tz=timezone.utc)
|
76
|
+
|
77
|
+
|
69
78
|
def format_datetime(dt):
|
70
79
|
return dt.strftime("%Y-%m-%d %I:%M:%S %p %Z%z")
|
71
80
|
|
@@ -73,7 +73,8 @@ async def fetch_batch_items(server: SyncServer, batch_id: str, batch_resp_id: st
|
|
73
73
|
"""
|
74
74
|
updates = []
|
75
75
|
try:
|
76
|
-
|
76
|
+
results = await server.anthropic_async_client.beta.messages.batches.results(batch_resp_id)
|
77
|
+
async for item_result in results:
|
77
78
|
# Here, custom_id should be the agent_id
|
78
79
|
item_status = map_anthropic_individual_batch_item_status_to_job_status(item_result)
|
79
80
|
updates.append(ItemUpdateInfo(batch_id, item_result.custom_id, item_status, item_result))
|
@@ -20,7 +20,7 @@ from anthropic.types.beta import (
|
|
20
20
|
)
|
21
21
|
|
22
22
|
from letta.errors import BedrockError, BedrockPermissionError
|
23
|
-
from letta.helpers.datetime_helpers import
|
23
|
+
from letta.helpers.datetime_helpers import get_utc_time_int, timestamp_to_datetime
|
24
24
|
from letta.llm_api.aws_bedrock import get_bedrock_client
|
25
25
|
from letta.llm_api.helpers import add_inner_thoughts_to_functions
|
26
26
|
from letta.local_llm.constants import INNER_THOUGHTS_KWARG, INNER_THOUGHTS_KWARG_DESCRIPTION
|
@@ -396,7 +396,7 @@ def convert_anthropic_response_to_chatcompletion(
|
|
396
396
|
return ChatCompletionResponse(
|
397
397
|
id=response.id,
|
398
398
|
choices=[choice],
|
399
|
-
created=
|
399
|
+
created=get_utc_time_int(),
|
400
400
|
model=response.model,
|
401
401
|
usage=UsageStatistics(
|
402
402
|
prompt_tokens=prompt_tokens,
|
@@ -451,7 +451,7 @@ def convert_anthropic_stream_event_to_chatcompletion(
|
|
451
451
|
'logprobs': None
|
452
452
|
}
|
453
453
|
],
|
454
|
-
'created':
|
454
|
+
'created': 1713216662,
|
455
455
|
'model': 'gpt-4o-mini-2024-07-18',
|
456
456
|
'system_fingerprint': 'fp_bd83329f63',
|
457
457
|
'object': 'chat.completion.chunk'
|
@@ -613,7 +613,7 @@ def convert_anthropic_stream_event_to_chatcompletion(
|
|
613
613
|
return ChatCompletionChunkResponse(
|
614
614
|
id=message_id,
|
615
615
|
choices=[choice],
|
616
|
-
created=
|
616
|
+
created=get_utc_time_int(),
|
617
617
|
model=model,
|
618
618
|
output_tokens=completion_chunk_tokens,
|
619
619
|
)
|
@@ -920,7 +920,7 @@ def anthropic_chat_completions_process_stream(
|
|
920
920
|
chat_completion_response = ChatCompletionResponse(
|
921
921
|
id=dummy_message.id if create_message_id else TEMP_STREAM_RESPONSE_ID,
|
922
922
|
choices=[],
|
923
|
-
created=dummy_message.created_at,
|
923
|
+
created=int(dummy_message.created_at.timestamp()),
|
924
924
|
model=chat_completion_request.model,
|
925
925
|
usage=UsageStatistics(
|
926
926
|
prompt_tokens=prompt_tokens,
|
@@ -954,7 +954,11 @@ def anthropic_chat_completions_process_stream(
|
|
954
954
|
message_type = stream_interface.process_chunk(
|
955
955
|
chat_completion_chunk,
|
956
956
|
message_id=chat_completion_response.id if create_message_id else chat_completion_chunk.id,
|
957
|
-
message_date=
|
957
|
+
message_date=(
|
958
|
+
timestamp_to_datetime(chat_completion_response.created)
|
959
|
+
if create_message_datetime
|
960
|
+
else timestamp_to_datetime(chat_completion_chunk.created)
|
961
|
+
),
|
958
962
|
# if extended_thinking is on, then reasoning_content will be flowing as chunks
|
959
963
|
# TODO handle emitting redacted reasoning content (e.g. as concat?)
|
960
964
|
expect_reasoning_content=extended_thinking,
|
@@ -22,7 +22,7 @@ from letta.errors import (
|
|
22
22
|
LLMServerError,
|
23
23
|
LLMUnprocessableEntityError,
|
24
24
|
)
|
25
|
-
from letta.helpers.datetime_helpers import
|
25
|
+
from letta.helpers.datetime_helpers import get_utc_time_int
|
26
26
|
from letta.llm_api.helpers import add_inner_thoughts_to_functions, unpack_all_inner_thoughts_from_kwargs
|
27
27
|
from letta.llm_api.llm_client_base import LLMClientBase
|
28
28
|
from letta.local_llm.constants import INNER_THOUGHTS_KWARG, INNER_THOUGHTS_KWARG_DESCRIPTION
|
@@ -403,7 +403,7 @@ class AnthropicClient(LLMClientBase):
|
|
403
403
|
chat_completion_response = ChatCompletionResponse(
|
404
404
|
id=response.id,
|
405
405
|
choices=[choice],
|
406
|
-
created=
|
406
|
+
created=get_utc_time_int(),
|
407
407
|
model=response.model,
|
408
408
|
usage=UsageStatistics(
|
409
409
|
prompt_tokens=prompt_tokens,
|
@@ -4,7 +4,7 @@ from typing import List, Optional, Union
|
|
4
4
|
|
5
5
|
import requests
|
6
6
|
|
7
|
-
from letta.helpers.datetime_helpers import
|
7
|
+
from letta.helpers.datetime_helpers import get_utc_time_int
|
8
8
|
from letta.helpers.json_helpers import json_dumps
|
9
9
|
from letta.local_llm.utils import count_tokens
|
10
10
|
from letta.schemas.message import Message
|
@@ -207,7 +207,7 @@ def convert_cohere_response_to_chatcompletion(
|
|
207
207
|
return ChatCompletionResponse(
|
208
208
|
id=response_json["response_id"],
|
209
209
|
choices=[choice],
|
210
|
-
created=
|
210
|
+
created=get_utc_time_int(),
|
211
211
|
model=model,
|
212
212
|
usage=UsageStatistics(
|
213
213
|
prompt_tokens=prompt_tokens,
|
@@ -6,7 +6,7 @@ import requests
|
|
6
6
|
from google.genai.types import FunctionCallingConfig, FunctionCallingConfigMode, ToolConfig
|
7
7
|
|
8
8
|
from letta.constants import NON_USER_MSG_PREFIX
|
9
|
-
from letta.helpers.datetime_helpers import
|
9
|
+
from letta.helpers.datetime_helpers import get_utc_time_int
|
10
10
|
from letta.helpers.json_helpers import json_dumps
|
11
11
|
from letta.llm_api.helpers import make_post_request
|
12
12
|
from letta.llm_api.llm_client_base import LLMClientBase
|
@@ -260,7 +260,7 @@ class GoogleAIClient(LLMClientBase):
|
|
260
260
|
id=response_id,
|
261
261
|
choices=choices,
|
262
262
|
model=self.llm_config.model, # NOTE: Google API doesn't pass back model in the response
|
263
|
-
created=
|
263
|
+
created=get_utc_time_int(),
|
264
264
|
usage=usage,
|
265
265
|
)
|
266
266
|
except KeyError as e:
|
@@ -4,7 +4,7 @@ from typing import List, Optional
|
|
4
4
|
from google import genai
|
5
5
|
from google.genai.types import FunctionCallingConfig, FunctionCallingConfigMode, GenerateContentResponse, ThinkingConfig, ToolConfig
|
6
6
|
|
7
|
-
from letta.helpers.datetime_helpers import
|
7
|
+
from letta.helpers.datetime_helpers import get_utc_time_int
|
8
8
|
from letta.helpers.json_helpers import json_dumps
|
9
9
|
from letta.llm_api.google_ai_client import GoogleAIClient
|
10
10
|
from letta.local_llm.json_parser import clean_json_string_extra_backslash
|
@@ -234,7 +234,7 @@ class GoogleVertexClient(GoogleAIClient):
|
|
234
234
|
id=response_id,
|
235
235
|
choices=choices,
|
236
236
|
model=self.llm_config.model, # NOTE: Google API doesn't pass back model in the response
|
237
|
-
created=
|
237
|
+
created=get_utc_time_int(),
|
238
238
|
usage=usage,
|
239
239
|
)
|
240
240
|
except KeyError as e:
|
@@ -4,7 +4,9 @@ from typing import Generator, List, Optional, Union
|
|
4
4
|
import requests
|
5
5
|
from openai import OpenAI
|
6
6
|
|
7
|
+
from letta.helpers.datetime_helpers import timestamp_to_datetime
|
7
8
|
from letta.llm_api.helpers import add_inner_thoughts_to_functions, convert_to_structured_output, make_post_request
|
9
|
+
from letta.llm_api.openai_client import supports_parallel_tool_calling, supports_temperature_param
|
8
10
|
from letta.local_llm.constants import INNER_THOUGHTS_KWARG, INNER_THOUGHTS_KWARG_DESCRIPTION, INNER_THOUGHTS_KWARG_DESCRIPTION_GO_FIRST
|
9
11
|
from letta.local_llm.utils import num_tokens_from_functions, num_tokens_from_messages
|
10
12
|
from letta.log import get_logger
|
@@ -135,7 +137,7 @@ def build_openai_chat_completions_request(
|
|
135
137
|
tool_choice=tool_choice,
|
136
138
|
user=str(user_id),
|
137
139
|
max_completion_tokens=llm_config.max_tokens,
|
138
|
-
temperature=
|
140
|
+
temperature=llm_config.temperature if supports_temperature_param(model) else None,
|
139
141
|
reasoning_effort=llm_config.reasoning_effort,
|
140
142
|
)
|
141
143
|
else:
|
@@ -237,7 +239,7 @@ def openai_chat_completions_process_stream(
|
|
237
239
|
chat_completion_response = ChatCompletionResponse(
|
238
240
|
id=dummy_message.id if create_message_id else TEMP_STREAM_RESPONSE_ID,
|
239
241
|
choices=[],
|
240
|
-
created=dummy_message.created_at, # NOTE: doesn't matter since both will do get_utc_time()
|
242
|
+
created=int(dummy_message.created_at.timestamp()), # NOTE: doesn't matter since both will do get_utc_time()
|
241
243
|
model=chat_completion_request.model,
|
242
244
|
usage=UsageStatistics(
|
243
245
|
completion_tokens=0,
|
@@ -274,7 +276,11 @@ def openai_chat_completions_process_stream(
|
|
274
276
|
message_type = stream_interface.process_chunk(
|
275
277
|
chat_completion_chunk,
|
276
278
|
message_id=chat_completion_response.id if create_message_id else chat_completion_chunk.id,
|
277
|
-
message_date=
|
279
|
+
message_date=(
|
280
|
+
timestamp_to_datetime(chat_completion_response.created)
|
281
|
+
if create_message_datetime
|
282
|
+
else timestamp_to_datetime(chat_completion_chunk.created)
|
283
|
+
),
|
278
284
|
expect_reasoning_content=expect_reasoning_content,
|
279
285
|
name=name,
|
280
286
|
message_index=message_idx,
|
@@ -489,6 +495,7 @@ def prepare_openai_payload(chat_completion_request: ChatCompletionRequest):
|
|
489
495
|
# except ValueError as e:
|
490
496
|
# warnings.warn(f"Failed to convert tool function to structured output, tool={tool}, error={e}")
|
491
497
|
|
492
|
-
if
|
498
|
+
if not supports_parallel_tool_calling(chat_completion_request.model):
|
493
499
|
data.pop("parallel_tool_calls", None)
|
500
|
+
|
494
501
|
return data
|
@@ -34,6 +34,33 @@ from letta.settings import model_settings
|
|
34
34
|
logger = get_logger(__name__)
|
35
35
|
|
36
36
|
|
37
|
+
def is_openai_reasoning_model(model: str) -> bool:
|
38
|
+
"""Utility function to check if the model is a 'reasoner'"""
|
39
|
+
|
40
|
+
# NOTE: needs to be updated with new model releases
|
41
|
+
return model.startswith("o1") or model.startswith("o3")
|
42
|
+
|
43
|
+
|
44
|
+
def supports_temperature_param(model: str) -> bool:
|
45
|
+
"""Certain OpenAI models don't support configuring the temperature.
|
46
|
+
|
47
|
+
Example error: 400 - {'error': {'message': "Unsupported parameter: 'temperature' is not supported with this model.", 'type': 'invalid_request_error', 'param': 'temperature', 'code': 'unsupported_parameter'}}
|
48
|
+
"""
|
49
|
+
if is_openai_reasoning_model(model):
|
50
|
+
return False
|
51
|
+
else:
|
52
|
+
return True
|
53
|
+
|
54
|
+
|
55
|
+
def supports_parallel_tool_calling(model: str) -> bool:
|
56
|
+
"""Certain OpenAI models don't support parallel tool calls."""
|
57
|
+
|
58
|
+
if is_openai_reasoning_model(model):
|
59
|
+
return False
|
60
|
+
else:
|
61
|
+
return True
|
62
|
+
|
63
|
+
|
37
64
|
class OpenAIClient(LLMClientBase):
|
38
65
|
def _prepare_client_kwargs(self) -> dict:
|
39
66
|
api_key = model_settings.openai_api_key or os.environ.get("OPENAI_API_KEY")
|
@@ -66,7 +93,8 @@ class OpenAIClient(LLMClientBase):
|
|
66
93
|
put_inner_thoughts_first=True,
|
67
94
|
)
|
68
95
|
|
69
|
-
use_developer_message =
|
96
|
+
use_developer_message = is_openai_reasoning_model(llm_config.model)
|
97
|
+
|
70
98
|
openai_message_list = [
|
71
99
|
cast_message_to_subtype(
|
72
100
|
m.to_openai_dict(
|
@@ -103,7 +131,7 @@ class OpenAIClient(LLMClientBase):
|
|
103
131
|
tool_choice=tool_choice,
|
104
132
|
user=str(),
|
105
133
|
max_completion_tokens=llm_config.max_tokens,
|
106
|
-
temperature=llm_config.temperature,
|
134
|
+
temperature=llm_config.temperature if supports_temperature_param(model) else None,
|
107
135
|
)
|
108
136
|
|
109
137
|
if "inference.memgpt.ai" in llm_config.model_endpoint:
|
@@ -160,6 +188,10 @@ class OpenAIClient(LLMClientBase):
|
|
160
188
|
response=chat_completion_response, inner_thoughts_key=INNER_THOUGHTS_KWARG
|
161
189
|
)
|
162
190
|
|
191
|
+
# If we used a reasoning model, create a content part for the ommitted reasoning
|
192
|
+
if is_openai_reasoning_model(self.llm_config.model):
|
193
|
+
chat_completion_response.choices[0].message.ommitted_reasoning_content = True
|
194
|
+
|
163
195
|
return chat_completion_response
|
164
196
|
|
165
197
|
def stream(self, request_data: dict) -> Stream[ChatCompletionChunk]:
|
@@ -6,7 +6,7 @@ import requests
|
|
6
6
|
|
7
7
|
from letta.constants import CLI_WARNING_PREFIX
|
8
8
|
from letta.errors import LocalLLMConnectionError, LocalLLMError
|
9
|
-
from letta.helpers.datetime_helpers import
|
9
|
+
from letta.helpers.datetime_helpers import get_utc_time_int
|
10
10
|
from letta.helpers.json_helpers import json_dumps
|
11
11
|
from letta.local_llm.constants import DEFAULT_WRAPPER
|
12
12
|
from letta.local_llm.function_parser import patch_function
|
@@ -241,7 +241,7 @@ def get_chat_completion(
|
|
241
241
|
),
|
242
242
|
)
|
243
243
|
],
|
244
|
-
created=
|
244
|
+
created=get_utc_time_int(),
|
245
245
|
model=model,
|
246
246
|
# "This fingerprint represents the backend configuration that the model runs with."
|
247
247
|
# system_fingerprint=user if user is not None else "null",
|
@@ -145,7 +145,8 @@ class OmittedReasoningContent(MessageContent):
|
|
145
145
|
type: Literal[MessageContentType.omitted_reasoning] = Field(
|
146
146
|
MessageContentType.omitted_reasoning, description="Indicates this is an omitted reasoning step."
|
147
147
|
)
|
148
|
-
|
148
|
+
# NOTE: dropping because we don't track this kind of information for the other reasoning types
|
149
|
+
# tokens: int = Field(..., description="The reasoning token count for intermediate reasoning content.")
|
149
150
|
|
150
151
|
|
151
152
|
LettaMessageContentUnion = Annotated[
|
@@ -81,8 +81,11 @@ class LLMConfig(BaseModel):
|
|
81
81
|
@model_validator(mode="before")
|
82
82
|
@classmethod
|
83
83
|
def set_default_enable_reasoner(cls, values):
|
84
|
-
|
85
|
-
|
84
|
+
# NOTE: this is really only applicable for models that can toggle reasoning on-and-off, like 3.7
|
85
|
+
# We can also use this field to identify if a model is a "reasoning" model (o1/o3, etc.) if we want
|
86
|
+
# if any(openai_reasoner_model in values.get("model", "") for openai_reasoner_model in ["o3-mini", "o1"]):
|
87
|
+
# values["enable_reasoner"] = True
|
88
|
+
# values["put_inner_thoughts_in_kwargs"] = False
|
86
89
|
return values
|
87
90
|
|
88
91
|
@model_validator(mode="before")
|
@@ -100,6 +103,13 @@ class LLMConfig(BaseModel):
|
|
100
103
|
if values.get("put_inner_thoughts_in_kwargs") is None:
|
101
104
|
values["put_inner_thoughts_in_kwargs"] = False if model in avoid_put_inner_thoughts_in_kwargs else True
|
102
105
|
|
106
|
+
# For the o1/o3 series from OpenAI, set to False by default
|
107
|
+
# We can set this flag to `true` if desired, which will enable "double-think"
|
108
|
+
from letta.llm_api.openai_client import is_openai_reasoning_model
|
109
|
+
|
110
|
+
if is_openai_reasoning_model(model):
|
111
|
+
values["put_inner_thoughts_in_kwargs"] = False
|
112
|
+
|
103
113
|
return values
|
104
114
|
|
105
115
|
@model_validator(mode="after")
|
@@ -31,6 +31,7 @@ from letta.schemas.letta_message import (
|
|
31
31
|
)
|
32
32
|
from letta.schemas.letta_message_content import (
|
33
33
|
LettaMessageContentUnion,
|
34
|
+
OmittedReasoningContent,
|
34
35
|
ReasoningContent,
|
35
36
|
RedactedReasoningContent,
|
36
37
|
TextContent,
|
@@ -295,6 +296,18 @@ class Message(BaseMessage):
|
|
295
296
|
sender_id=self.sender_id,
|
296
297
|
)
|
297
298
|
)
|
299
|
+
elif isinstance(content_part, OmittedReasoningContent):
|
300
|
+
# Special case for "hidden reasoning" models like o1/o3
|
301
|
+
# NOTE: we also have to think about how to return this during streaming
|
302
|
+
messages.append(
|
303
|
+
HiddenReasoningMessage(
|
304
|
+
id=self.id,
|
305
|
+
date=self.created_at,
|
306
|
+
state="omitted",
|
307
|
+
name=self.name,
|
308
|
+
otid=otid,
|
309
|
+
)
|
310
|
+
)
|
298
311
|
else:
|
299
312
|
warnings.warn(f"Unrecognized content part in assistant message: {content_part}")
|
300
313
|
|
@@ -464,6 +477,10 @@ class Message(BaseMessage):
|
|
464
477
|
data=openai_message_dict["redacted_reasoning_content"] if "redacted_reasoning_content" in openai_message_dict else None,
|
465
478
|
),
|
466
479
|
)
|
480
|
+
if "omitted_reasoning_content" in openai_message_dict and openai_message_dict["omitted_reasoning_content"]:
|
481
|
+
content.append(
|
482
|
+
OmittedReasoningContent(),
|
483
|
+
)
|
467
484
|
|
468
485
|
# If we're going from deprecated function form
|
469
486
|
if openai_message_dict["role"] == "function":
|
@@ -39,9 +39,10 @@ class Message(BaseModel):
|
|
39
39
|
tool_calls: Optional[List[ToolCall]] = None
|
40
40
|
role: str
|
41
41
|
function_call: Optional[FunctionCall] = None # Deprecated
|
42
|
-
reasoning_content: Optional[str] = None # Used in newer reasoning APIs
|
42
|
+
reasoning_content: Optional[str] = None # Used in newer reasoning APIs, e.g. DeepSeek
|
43
43
|
reasoning_content_signature: Optional[str] = None # NOTE: for Anthropic
|
44
44
|
redacted_reasoning_content: Optional[str] = None # NOTE: for Anthropic
|
45
|
+
ommitted_reasoning_content: bool = False # NOTE: for OpenAI o1/o3
|
45
46
|
|
46
47
|
|
47
48
|
class Choice(BaseModel):
|
@@ -52,16 +53,64 @@ class Choice(BaseModel):
|
|
52
53
|
seed: Optional[int] = None # found in TogetherAI
|
53
54
|
|
54
55
|
|
56
|
+
class UsageStatisticsPromptTokenDetails(BaseModel):
|
57
|
+
cached_tokens: int = 0
|
58
|
+
# NOTE: OAI specific
|
59
|
+
# audio_tokens: int = 0
|
60
|
+
|
61
|
+
def __add__(self, other: "UsageStatisticsPromptTokenDetails") -> "UsageStatisticsPromptTokenDetails":
|
62
|
+
return UsageStatisticsPromptTokenDetails(
|
63
|
+
cached_tokens=self.cached_tokens + other.cached_tokens,
|
64
|
+
)
|
65
|
+
|
66
|
+
|
67
|
+
class UsageStatisticsCompletionTokenDetails(BaseModel):
|
68
|
+
reasoning_tokens: int = 0
|
69
|
+
# NOTE: OAI specific
|
70
|
+
# audio_tokens: int = 0
|
71
|
+
# accepted_prediction_tokens: int = 0
|
72
|
+
# rejected_prediction_tokens: int = 0
|
73
|
+
|
74
|
+
def __add__(self, other: "UsageStatisticsCompletionTokenDetails") -> "UsageStatisticsCompletionTokenDetails":
|
75
|
+
return UsageStatisticsCompletionTokenDetails(
|
76
|
+
reasoning_tokens=self.reasoning_tokens + other.reasoning_tokens,
|
77
|
+
)
|
78
|
+
|
79
|
+
|
55
80
|
class UsageStatistics(BaseModel):
|
56
81
|
completion_tokens: int = 0
|
57
82
|
prompt_tokens: int = 0
|
58
83
|
total_tokens: int = 0
|
59
84
|
|
85
|
+
prompt_tokens_details: Optional[UsageStatisticsPromptTokenDetails] = None
|
86
|
+
completion_tokens_details: Optional[UsageStatisticsCompletionTokenDetails] = None
|
87
|
+
|
60
88
|
def __add__(self, other: "UsageStatistics") -> "UsageStatistics":
|
89
|
+
|
90
|
+
if self.prompt_tokens_details is None and other.prompt_tokens_details is None:
|
91
|
+
total_prompt_tokens_details = None
|
92
|
+
elif self.prompt_tokens_details is None:
|
93
|
+
total_prompt_tokens_details = other.prompt_tokens_details
|
94
|
+
elif other.prompt_tokens_details is None:
|
95
|
+
total_prompt_tokens_details = self.prompt_tokens_details
|
96
|
+
else:
|
97
|
+
total_prompt_tokens_details = self.prompt_tokens_details + other.prompt_tokens_details
|
98
|
+
|
99
|
+
if self.completion_tokens_details is None and other.completion_tokens_details is None:
|
100
|
+
total_completion_tokens_details = None
|
101
|
+
elif self.completion_tokens_details is None:
|
102
|
+
total_completion_tokens_details = other.completion_tokens_details
|
103
|
+
elif other.completion_tokens_details is None:
|
104
|
+
total_completion_tokens_details = self.completion_tokens_details
|
105
|
+
else:
|
106
|
+
total_completion_tokens_details = self.completion_tokens_details + other.completion_tokens_details
|
107
|
+
|
61
108
|
return UsageStatistics(
|
62
109
|
completion_tokens=self.completion_tokens + other.completion_tokens,
|
63
110
|
prompt_tokens=self.prompt_tokens + other.prompt_tokens,
|
64
111
|
total_tokens=self.total_tokens + other.total_tokens,
|
112
|
+
prompt_tokens_details=total_prompt_tokens_details,
|
113
|
+
completion_tokens_details=total_completion_tokens_details,
|
65
114
|
)
|
66
115
|
|
67
116
|
|
@@ -70,7 +119,7 @@ class ChatCompletionResponse(BaseModel):
|
|
70
119
|
|
71
120
|
id: str
|
72
121
|
choices: List[Choice]
|
73
|
-
created: datetime.datetime
|
122
|
+
created: Union[datetime.datetime, int]
|
74
123
|
model: Optional[str] = None # NOTE: this is not consistent with OpenAI API standard, however is necessary to support local LLMs
|
75
124
|
# system_fingerprint: str # docs say this is mandatory, but in reality API returns None
|
76
125
|
system_fingerprint: Optional[str] = None
|
@@ -138,7 +187,7 @@ class ChatCompletionChunkResponse(BaseModel):
|
|
138
187
|
|
139
188
|
id: str
|
140
189
|
choices: List[ChunkChoice]
|
141
|
-
created: Union[datetime.datetime,
|
190
|
+
created: Union[datetime.datetime, int]
|
142
191
|
model: str
|
143
192
|
# system_fingerprint: str # docs say this is mandatory, but in reality API returns None
|
144
193
|
system_fingerprint: Optional[str] = None
|
@@ -238,7 +238,7 @@ class ChatCompletionsStreamingInterface(AgentChunkStreamingInterface):
|
|
238
238
|
return ChatCompletionChunk(
|
239
239
|
id=chunk.id,
|
240
240
|
object=chunk.object,
|
241
|
-
created=chunk.created
|
241
|
+
created=chunk.created,
|
242
242
|
model=chunk.model,
|
243
243
|
choices=[
|
244
244
|
Choice(
|
@@ -256,7 +256,7 @@ class ChatCompletionsStreamingInterface(AgentChunkStreamingInterface):
|
|
256
256
|
return ChatCompletionChunk(
|
257
257
|
id=chunk.id,
|
258
258
|
object=chunk.object,
|
259
|
-
created=chunk.created
|
259
|
+
created=chunk.created,
|
260
260
|
model=chunk.model,
|
261
261
|
choices=[
|
262
262
|
Choice(
|
@@ -1001,7 +1001,7 @@ class StreamingServerInterface(AgentChunkStreamingInterface):
|
|
1001
1001
|
# Example case that would trigger here:
|
1002
1002
|
# id='chatcmpl-AKtUvREgRRvgTW6n8ZafiKuV0mxhQ'
|
1003
1003
|
# choices=[ChunkChoice(finish_reason=None, index=0, delta=MessageDelta(content=None, tool_calls=None, function_call=None), logprobs=None)]
|
1004
|
-
# created=
|
1004
|
+
# created=1713216662
|
1005
1005
|
# model='gpt-4o-mini-2024-07-18'
|
1006
1006
|
# object='chat.completion.chunk'
|
1007
1007
|
warnings.warn(f"Couldn't find delta in chunk: {chunk}")
|
@@ -1,6 +1,6 @@
|
|
1
1
|
from typing import List, Optional
|
2
2
|
|
3
|
-
from fastapi import APIRouter, Body, Depends, Header
|
3
|
+
from fastapi import APIRouter, Body, Depends, Header, status
|
4
4
|
from fastapi.exceptions import HTTPException
|
5
5
|
from starlette.requests import Request
|
6
6
|
|
@@ -11,6 +11,7 @@ from letta.schemas.job import BatchJob, JobStatus, JobType, JobUpdate
|
|
11
11
|
from letta.schemas.letta_request import CreateBatch
|
12
12
|
from letta.server.rest_api.utils import get_letta_server
|
13
13
|
from letta.server.server import SyncServer
|
14
|
+
from letta.settings import settings
|
14
15
|
|
15
16
|
router = APIRouter(prefix="/messages", tags=["messages"])
|
16
17
|
|
@@ -43,6 +44,13 @@ async def create_messages_batch(
|
|
43
44
|
if length > max_bytes:
|
44
45
|
raise HTTPException(status_code=413, detail=f"Request too large ({length} bytes). Max is {max_bytes} bytes.")
|
45
46
|
|
47
|
+
# Reject request if env var is not set
|
48
|
+
if not settings.enable_batch_job_polling:
|
49
|
+
raise HTTPException(
|
50
|
+
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
51
|
+
detail=f"Server misconfiguration: LETTA_ENABLE_BATCH_JOB_POLLING is set to False.",
|
52
|
+
)
|
53
|
+
|
46
54
|
actor = server.user_manager.get_user_or_default(user_id=actor_id)
|
47
55
|
batch_job = BatchJob(
|
48
56
|
user_id=actor.id,
|
@@ -161,7 +161,7 @@ class AgentManager:
|
|
161
161
|
# Basic CRUD operations
|
162
162
|
# ======================================================================================================================
|
163
163
|
@trace_method
|
164
|
-
def create_agent(self, agent_create: CreateAgent, actor: PydanticUser) -> PydanticAgentState:
|
164
|
+
def create_agent(self, agent_create: CreateAgent, actor: PydanticUser, _test_only_force_id: Optional[str] = None) -> PydanticAgentState:
|
165
165
|
# validate required configs
|
166
166
|
if not agent_create.llm_config or not agent_create.embedding_config:
|
167
167
|
raise ValueError("llm_config and embedding_config are required")
|
@@ -239,6 +239,10 @@ class AgentManager:
|
|
239
239
|
created_by_id=actor.id,
|
240
240
|
last_updated_by_id=actor.id,
|
241
241
|
)
|
242
|
+
|
243
|
+
if _test_only_force_id:
|
244
|
+
new_agent.id = _test_only_force_id
|
245
|
+
|
242
246
|
session.add(new_agent)
|
243
247
|
session.flush()
|
244
248
|
aid = new_agent.id
|
File without changes
|
File without changes
|
{letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/__main__.py
RENAMED
File without changes
|
{letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/agent.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/cli/cli.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/config.py
RENAMED
File without changes
|
{letta_nightly-0.7.1.dev20250423104245 → letta_nightly-0.7.2.dev20250423222439}/letta/constants.py
RENAMED
File without changes
|
File without changes
|