letta-nightly 0.6.4.dev20241213193437__tar.gz → 0.6.4.dev20241215104129__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.
Potentially problematic release.
This version of letta-nightly might be problematic. Click here for more details.
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/PKG-INFO +1 -1
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/__init__.py +1 -1
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/agent.py +54 -45
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/chat_only_agent.py +6 -8
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/cli/cli.py +2 -10
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/client/client.py +121 -138
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/config.py +0 -161
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/main.py +3 -8
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/memory.py +3 -14
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/o1_agent.py +1 -5
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/offline_memory_agent.py +2 -6
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/orm/__init__.py +2 -0
- letta_nightly-0.6.4.dev20241215104129/letta/orm/agent.py +109 -0
- letta_nightly-0.6.4.dev20241215104129/letta/orm/agents_tags.py +20 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/orm/block.py +29 -4
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/orm/blocks_agents.py +5 -11
- letta_nightly-0.6.4.dev20241215104129/letta/orm/custom_columns.py +152 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/orm/message.py +3 -38
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/orm/organization.py +2 -7
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/orm/passage.py +10 -32
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/orm/source.py +5 -25
- letta_nightly-0.6.4.dev20241215104129/letta/orm/sources_agents.py +13 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/orm/sqlalchemy_base.py +54 -30
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/orm/tool.py +1 -19
- letta_nightly-0.6.4.dev20241215104129/letta/orm/tools_agents.py +15 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/orm/user.py +3 -4
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/agent.py +48 -65
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/memory.py +2 -1
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/sandbox_config.py +12 -1
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/app.py +0 -5
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/routers/openai/chat_completions/chat_completions.py +1 -1
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/routers/v1/agents.py +99 -78
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/routers/v1/blocks.py +22 -25
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/routers/v1/jobs.py +4 -4
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/routers/v1/sandbox_configs.py +10 -10
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/routers/v1/sources.py +12 -12
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/routers/v1/tools.py +35 -15
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/routers/v1/users.py +0 -46
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/server.py +172 -716
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/ws_api/server.py +0 -5
- letta_nightly-0.6.4.dev20241215104129/letta/services/agent_manager.py +405 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/services/block_manager.py +13 -21
- letta_nightly-0.6.4.dev20241215104129/letta/services/helpers/agent_manager_helper.py +90 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/services/organization_manager.py +0 -1
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/services/passage_manager.py +62 -62
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/services/sandbox_config_manager.py +3 -3
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/services/source_manager.py +22 -1
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/services/user_manager.py +11 -6
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/utils.py +2 -2
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/pyproject.toml +1 -1
- letta_nightly-0.6.4.dev20241213193437/letta/metadata.py +0 -407
- letta_nightly-0.6.4.dev20241213193437/letta/orm/agents_tags.py +0 -28
- letta_nightly-0.6.4.dev20241213193437/letta/orm/tools_agents.py +0 -32
- letta_nightly-0.6.4.dev20241213193437/letta/schemas/agents_tags.py +0 -33
- letta_nightly-0.6.4.dev20241213193437/letta/schemas/api_key.py +0 -21
- letta_nightly-0.6.4.dev20241213193437/letta/schemas/blocks_agents.py +0 -32
- letta_nightly-0.6.4.dev20241213193437/letta/schemas/tools_agents.py +0 -32
- letta_nightly-0.6.4.dev20241213193437/letta/server/rest_api/routers/openai/assistants/threads.py +0 -338
- letta_nightly-0.6.4.dev20241213193437/letta/services/agents_tags_manager.py +0 -64
- letta_nightly-0.6.4.dev20241213193437/letta/services/blocks_agents_manager.py +0 -106
- letta_nightly-0.6.4.dev20241213193437/letta/services/tools_agents_manager.py +0 -94
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/LICENSE +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/README.md +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/__main__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/benchmark/benchmark.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/benchmark/constants.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/cli/cli_config.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/cli/cli_load.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/client/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/client/streaming.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/client/utils.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/constants.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/credentials.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/data_sources/connectors.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/data_sources/connectors_helper.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/embeddings.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/errors.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/functions/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/functions/function_sets/base.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/functions/function_sets/extras.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/functions/functions.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/functions/helpers.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/functions/schema_generator.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/helpers/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/helpers/tool_rule_solver.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/humans/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/humans/examples/basic.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/humans/examples/cs_phd.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/interface.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/llm_api/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/llm_api/anthropic.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/llm_api/azure_openai.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/llm_api/azure_openai_constants.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/llm_api/cohere.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/llm_api/google_ai.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/llm_api/helpers.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/llm_api/llm_api_tools.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/llm_api/mistral.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/llm_api/openai.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/README.md +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/chat_completion_proxy.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/constants.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/function_parser.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/grammars/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/grammars/gbnf_grammar_generator.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/grammars/json.gbnf +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/grammars/json_func_calls_with_inner_thoughts.gbnf +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/json_parser.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/koboldcpp/api.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/koboldcpp/settings.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/llamacpp/api.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/llamacpp/settings.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/llm_chat_completion_wrappers/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/llm_chat_completion_wrappers/airoboros.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/llm_chat_completion_wrappers/chatml.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/llm_chat_completion_wrappers/configurable_wrapper.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/llm_chat_completion_wrappers/dolphin.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/llm_chat_completion_wrappers/llama3.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/llm_chat_completion_wrappers/simple_summary_wrapper.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/llm_chat_completion_wrappers/wrapper_base.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/llm_chat_completion_wrappers/zephyr.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/lmstudio/api.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/lmstudio/settings.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/ollama/api.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/ollama/settings.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/settings/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/settings/deterministic_mirostat.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/settings/settings.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/settings/simple.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/utils.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/vllm/api.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/webui/api.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/webui/legacy_api.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/webui/legacy_settings.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/local_llm/webui/settings.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/log.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/openai_backcompat/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/openai_backcompat/openai_object.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/orm/__all__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/orm/base.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/orm/enums.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/orm/errors.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/orm/file.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/orm/job.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/orm/mixins.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/orm/sandbox_config.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/orm/sqlite_functions.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/personas/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/personas/examples/anna_pa.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/personas/examples/google_search_persona.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/personas/examples/memgpt_doc.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/personas/examples/memgpt_starter.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/personas/examples/o1_persona.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/personas/examples/offline_memory_persona.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/personas/examples/sam.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/personas/examples/sam_pov.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/personas/examples/sam_simple_pov_gpt35.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/personas/examples/sqldb/test.db +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/prompts/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/prompts/gpt_summarize.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/prompts/gpt_system.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/prompts/system/memgpt_base.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/prompts/system/memgpt_chat.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/prompts/system/memgpt_chat_compressed.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/prompts/system/memgpt_chat_fstring.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/prompts/system/memgpt_convo_only.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/prompts/system/memgpt_doc.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/prompts/system/memgpt_gpt35_extralong.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/prompts/system/memgpt_intuitive_knowledge.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/prompts/system/memgpt_modified_chat.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/prompts/system/memgpt_modified_o1.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/prompts/system/memgpt_offline_memory.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/prompts/system/memgpt_offline_memory_chat.txt +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/providers.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/pytest.ini +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/block.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/embedding_config.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/enums.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/file.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/health.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/job.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/letta_base.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/letta_message.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/letta_request.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/letta_response.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/llm_config.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/message.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/openai/chat_completion_request.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/openai/chat_completion_response.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/openai/chat_completions.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/openai/embedding_response.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/openai/openai.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/organization.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/passage.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/source.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/tool.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/tool_rule.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/usage.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/schemas/user.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/constants.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/generate_openapi_schema.sh +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/auth/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/auth/index.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/auth_token.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/interface.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/routers/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/routers/openai/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/routers/openai/assistants/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/routers/openai/assistants/assistants.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/routers/openai/assistants/schemas.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/routers/openai/chat_completions/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/routers/v1/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/routers/v1/health.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/routers/v1/llms.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/routers/v1/organizations.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/static_files.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/rest_api/utils.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/startup.sh +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/static_files/assets/index-048c9598.js +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/static_files/assets/index-0e31b727.css +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/static_files/favicon.ico +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/static_files/index.html +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/static_files/memgpt_logo_transparent.png +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/utils.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/ws_api/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/ws_api/example_client.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/ws_api/interface.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/server/ws_api/protocol.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/services/__init__.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/services/job_manager.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/services/message_manager.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/services/per_agent_lock_manager.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/services/tool_execution_sandbox.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/services/tool_manager.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/services/tool_sandbox_env/.gitkeep +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/settings.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/streaming_interface.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/streaming_utils.py +0 -0
- {letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/system.py +0 -0
{letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/__init__.py
RENAMED
|
@@ -4,7 +4,7 @@ __version__ = "0.6.4"
|
|
|
4
4
|
from letta.client.client import LocalClient, RESTClient, create_client
|
|
5
5
|
|
|
6
6
|
# imports for easier access
|
|
7
|
-
from letta.schemas.agent import AgentState
|
|
7
|
+
from letta.schemas.agent import AgentState
|
|
8
8
|
from letta.schemas.block import Block
|
|
9
9
|
from letta.schemas.embedding_config import EmbeddingConfig
|
|
10
10
|
from letta.schemas.enums import JobStatus
|
{letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/agent.py
RENAMED
|
@@ -6,8 +6,6 @@ import warnings
|
|
|
6
6
|
from abc import ABC, abstractmethod
|
|
7
7
|
from typing import List, Literal, Optional, Tuple, Union
|
|
8
8
|
|
|
9
|
-
from tqdm import tqdm
|
|
10
|
-
|
|
11
9
|
from letta.constants import (
|
|
12
10
|
BASE_TOOLS,
|
|
13
11
|
CLI_WARNING_PREFIX,
|
|
@@ -28,9 +26,8 @@ from letta.llm_api.helpers import is_context_overflow_error
|
|
|
28
26
|
from letta.llm_api.llm_api_tools import create
|
|
29
27
|
from letta.local_llm.utils import num_tokens_from_functions, num_tokens_from_messages
|
|
30
28
|
from letta.memory import summarize_messages
|
|
31
|
-
from letta.metadata import MetadataStore
|
|
32
29
|
from letta.orm import User
|
|
33
|
-
from letta.schemas.agent import AgentState, AgentStepResponse
|
|
30
|
+
from letta.schemas.agent import AgentState, AgentStepResponse, UpdateAgent
|
|
34
31
|
from letta.schemas.block import BlockUpdate
|
|
35
32
|
from letta.schemas.embedding_config import EmbeddingConfig
|
|
36
33
|
from letta.schemas.enums import MessageRole
|
|
@@ -49,12 +46,12 @@ from letta.schemas.tool import Tool
|
|
|
49
46
|
from letta.schemas.tool_rule import TerminalToolRule
|
|
50
47
|
from letta.schemas.usage import LettaUsageStatistics
|
|
51
48
|
from letta.schemas.user import User as PydanticUser
|
|
49
|
+
from letta.services.agent_manager import AgentManager
|
|
52
50
|
from letta.services.block_manager import BlockManager
|
|
53
51
|
from letta.services.message_manager import MessageManager
|
|
54
52
|
from letta.services.passage_manager import PassageManager
|
|
55
53
|
from letta.services.source_manager import SourceManager
|
|
56
54
|
from letta.services.tool_execution_sandbox import ToolExecutionSandbox
|
|
57
|
-
from letta.services.user_manager import UserManager
|
|
58
55
|
from letta.streaming_interface import StreamingRefreshCLIInterface
|
|
59
56
|
from letta.system import (
|
|
60
57
|
get_heartbeat,
|
|
@@ -316,7 +313,7 @@ class Agent(BaseAgent):
|
|
|
316
313
|
|
|
317
314
|
else:
|
|
318
315
|
printd(f"Agent.__init__ :: creating, state={agent_state.message_ids}")
|
|
319
|
-
assert self.agent_state.id is not None and self.agent_state.
|
|
316
|
+
assert self.agent_state.id is not None and self.agent_state.created_by_id is not None
|
|
320
317
|
|
|
321
318
|
# Generate a sequence of initial messages to put in the buffer
|
|
322
319
|
init_messages = initialize_message_sequence(
|
|
@@ -335,7 +332,7 @@ class Agent(BaseAgent):
|
|
|
335
332
|
# We always need the system prompt up front
|
|
336
333
|
system_message_obj = Message.dict_to_message(
|
|
337
334
|
agent_id=self.agent_state.id,
|
|
338
|
-
user_id=self.agent_state.
|
|
335
|
+
user_id=self.agent_state.created_by_id,
|
|
339
336
|
model=self.model,
|
|
340
337
|
openai_message_dict=init_messages[0],
|
|
341
338
|
)
|
|
@@ -358,7 +355,7 @@ class Agent(BaseAgent):
|
|
|
358
355
|
# Cast to Message objects
|
|
359
356
|
init_messages = [
|
|
360
357
|
Message.dict_to_message(
|
|
361
|
-
agent_id=self.agent_state.id, user_id=self.agent_state.
|
|
358
|
+
agent_id=self.agent_state.id, user_id=self.agent_state.created_by_id, model=self.model, openai_message_dict=msg
|
|
362
359
|
)
|
|
363
360
|
for msg in init_messages
|
|
364
361
|
]
|
|
@@ -439,11 +436,12 @@ class Agent(BaseAgent):
|
|
|
439
436
|
else:
|
|
440
437
|
# execute tool in a sandbox
|
|
441
438
|
# TODO: allow agent_state to specify which sandbox to execute tools in
|
|
442
|
-
sandbox_run_result = ToolExecutionSandbox(function_name, function_args, self.agent_state.
|
|
439
|
+
sandbox_run_result = ToolExecutionSandbox(function_name, function_args, self.agent_state.created_by_id).run(
|
|
443
440
|
agent_state=self.agent_state.__deepcopy__()
|
|
444
441
|
)
|
|
445
442
|
function_response, updated_agent_state = sandbox_run_result.func_return, sandbox_run_result.agent_state
|
|
446
443
|
assert orig_memory_str == self.agent_state.memory.compile(), "Memory should not be modified in a sandbox tool"
|
|
444
|
+
|
|
447
445
|
self.update_memory_if_change(updated_agent_state.memory)
|
|
448
446
|
except Exception as e:
|
|
449
447
|
# Need to catch error here, or else trunction wont happen
|
|
@@ -573,7 +571,7 @@ class Agent(BaseAgent):
|
|
|
573
571
|
added_messages_objs = [
|
|
574
572
|
Message.dict_to_message(
|
|
575
573
|
agent_id=self.agent_state.id,
|
|
576
|
-
user_id=self.agent_state.
|
|
574
|
+
user_id=self.agent_state.created_by_id,
|
|
577
575
|
model=self.model,
|
|
578
576
|
openai_message_dict=msg,
|
|
579
577
|
)
|
|
@@ -603,7 +601,7 @@ class Agent(BaseAgent):
|
|
|
603
601
|
response = create(
|
|
604
602
|
llm_config=self.agent_state.llm_config,
|
|
605
603
|
messages=message_sequence,
|
|
606
|
-
user_id=self.agent_state.
|
|
604
|
+
user_id=self.agent_state.created_by_id,
|
|
607
605
|
functions=allowed_functions,
|
|
608
606
|
functions_python=self.functions_python,
|
|
609
607
|
function_call=function_call,
|
|
@@ -689,7 +687,7 @@ class Agent(BaseAgent):
|
|
|
689
687
|
Message.dict_to_message(
|
|
690
688
|
id=response_message_id,
|
|
691
689
|
agent_id=self.agent_state.id,
|
|
692
|
-
user_id=self.agent_state.
|
|
690
|
+
user_id=self.agent_state.created_by_id,
|
|
693
691
|
model=self.model,
|
|
694
692
|
openai_message_dict=response_message.model_dump(),
|
|
695
693
|
)
|
|
@@ -722,7 +720,7 @@ class Agent(BaseAgent):
|
|
|
722
720
|
messages.append(
|
|
723
721
|
Message.dict_to_message(
|
|
724
722
|
agent_id=self.agent_state.id,
|
|
725
|
-
user_id=self.agent_state.
|
|
723
|
+
user_id=self.agent_state.created_by_id,
|
|
726
724
|
model=self.model,
|
|
727
725
|
openai_message_dict={
|
|
728
726
|
"role": "tool",
|
|
@@ -745,7 +743,7 @@ class Agent(BaseAgent):
|
|
|
745
743
|
messages.append(
|
|
746
744
|
Message.dict_to_message(
|
|
747
745
|
agent_id=self.agent_state.id,
|
|
748
|
-
user_id=self.agent_state.
|
|
746
|
+
user_id=self.agent_state.created_by_id,
|
|
749
747
|
model=self.model,
|
|
750
748
|
openai_message_dict={
|
|
751
749
|
"role": "tool",
|
|
@@ -823,7 +821,7 @@ class Agent(BaseAgent):
|
|
|
823
821
|
messages.append(
|
|
824
822
|
Message.dict_to_message(
|
|
825
823
|
agent_id=self.agent_state.id,
|
|
826
|
-
user_id=self.agent_state.
|
|
824
|
+
user_id=self.agent_state.created_by_id,
|
|
827
825
|
model=self.model,
|
|
828
826
|
openai_message_dict={
|
|
829
827
|
"role": "tool",
|
|
@@ -842,7 +840,7 @@ class Agent(BaseAgent):
|
|
|
842
840
|
messages.append(
|
|
843
841
|
Message.dict_to_message(
|
|
844
842
|
agent_id=self.agent_state.id,
|
|
845
|
-
user_id=self.agent_state.
|
|
843
|
+
user_id=self.agent_state.created_by_id,
|
|
846
844
|
model=self.model,
|
|
847
845
|
openai_message_dict={
|
|
848
846
|
"role": "tool",
|
|
@@ -861,7 +859,7 @@ class Agent(BaseAgent):
|
|
|
861
859
|
Message.dict_to_message(
|
|
862
860
|
id=response_message_id,
|
|
863
861
|
agent_id=self.agent_state.id,
|
|
864
|
-
user_id=self.agent_state.
|
|
862
|
+
user_id=self.agent_state.created_by_id,
|
|
865
863
|
model=self.model,
|
|
866
864
|
openai_message_dict=response_message.model_dump(),
|
|
867
865
|
)
|
|
@@ -890,18 +888,14 @@ class Agent(BaseAgent):
|
|
|
890
888
|
# additional args
|
|
891
889
|
chaining: bool = True,
|
|
892
890
|
max_chaining_steps: Optional[int] = None,
|
|
893
|
-
ms: Optional[MetadataStore] = None,
|
|
894
891
|
**kwargs,
|
|
895
892
|
) -> LettaUsageStatistics:
|
|
896
893
|
"""Run Agent.step in a loop, handling chaining via heartbeat requests and function failures"""
|
|
897
|
-
# assert ms is not None, "MetadataStore is required"
|
|
898
|
-
|
|
899
894
|
next_input_message = messages if isinstance(messages, list) else [messages]
|
|
900
895
|
counter = 0
|
|
901
896
|
total_usage = UsageStatistics()
|
|
902
897
|
step_count = 0
|
|
903
898
|
while True:
|
|
904
|
-
kwargs["ms"] = ms
|
|
905
899
|
kwargs["first_message"] = False
|
|
906
900
|
step_response = self.inner_step(
|
|
907
901
|
messages=next_input_message,
|
|
@@ -919,8 +913,7 @@ class Agent(BaseAgent):
|
|
|
919
913
|
|
|
920
914
|
# logger.debug("Saving agent state")
|
|
921
915
|
# save updated state
|
|
922
|
-
|
|
923
|
-
save_agent(self, ms)
|
|
916
|
+
save_agent(self)
|
|
924
917
|
|
|
925
918
|
# Chain stops
|
|
926
919
|
if not chaining:
|
|
@@ -931,10 +924,10 @@ class Agent(BaseAgent):
|
|
|
931
924
|
break
|
|
932
925
|
# Chain handlers
|
|
933
926
|
elif token_warning:
|
|
934
|
-
assert self.agent_state.
|
|
927
|
+
assert self.agent_state.created_by_id is not None
|
|
935
928
|
next_input_message = Message.dict_to_message(
|
|
936
929
|
agent_id=self.agent_state.id,
|
|
937
|
-
user_id=self.agent_state.
|
|
930
|
+
user_id=self.agent_state.created_by_id,
|
|
938
931
|
model=self.model,
|
|
939
932
|
openai_message_dict={
|
|
940
933
|
"role": "user", # TODO: change to system?
|
|
@@ -943,10 +936,10 @@ class Agent(BaseAgent):
|
|
|
943
936
|
)
|
|
944
937
|
continue # always chain
|
|
945
938
|
elif function_failed:
|
|
946
|
-
assert self.agent_state.
|
|
939
|
+
assert self.agent_state.created_by_id is not None
|
|
947
940
|
next_input_message = Message.dict_to_message(
|
|
948
941
|
agent_id=self.agent_state.id,
|
|
949
|
-
user_id=self.agent_state.
|
|
942
|
+
user_id=self.agent_state.created_by_id,
|
|
950
943
|
model=self.model,
|
|
951
944
|
openai_message_dict={
|
|
952
945
|
"role": "user", # TODO: change to system?
|
|
@@ -955,10 +948,10 @@ class Agent(BaseAgent):
|
|
|
955
948
|
)
|
|
956
949
|
continue # always chain
|
|
957
950
|
elif heartbeat_request:
|
|
958
|
-
assert self.agent_state.
|
|
951
|
+
assert self.agent_state.created_by_id is not None
|
|
959
952
|
next_input_message = Message.dict_to_message(
|
|
960
953
|
agent_id=self.agent_state.id,
|
|
961
|
-
user_id=self.agent_state.
|
|
954
|
+
user_id=self.agent_state.created_by_id,
|
|
962
955
|
model=self.model,
|
|
963
956
|
openai_message_dict={
|
|
964
957
|
"role": "user", # TODO: change to system?
|
|
@@ -979,7 +972,6 @@ class Agent(BaseAgent):
|
|
|
979
972
|
first_message_retry_limit: int = FIRST_MESSAGE_ATTEMPTS,
|
|
980
973
|
skip_verify: bool = False,
|
|
981
974
|
stream: bool = False, # TODO move to config?
|
|
982
|
-
ms: Optional[MetadataStore] = None,
|
|
983
975
|
) -> AgentStepResponse:
|
|
984
976
|
"""Runs a single step in the agent loop (generates at most one LLM call)"""
|
|
985
977
|
|
|
@@ -1099,7 +1091,6 @@ class Agent(BaseAgent):
|
|
|
1099
1091
|
first_message_retry_limit=first_message_retry_limit,
|
|
1100
1092
|
skip_verify=skip_verify,
|
|
1101
1093
|
stream=stream,
|
|
1102
|
-
ms=ms,
|
|
1103
1094
|
)
|
|
1104
1095
|
|
|
1105
1096
|
else:
|
|
@@ -1129,10 +1120,10 @@ class Agent(BaseAgent):
|
|
|
1129
1120
|
openai_message_dict = {"role": "user", "content": cleaned_user_message_text, "name": name}
|
|
1130
1121
|
|
|
1131
1122
|
# Create the associated Message object (in the database)
|
|
1132
|
-
assert self.agent_state.
|
|
1123
|
+
assert self.agent_state.created_by_id is not None, "User ID is not set"
|
|
1133
1124
|
user_message = Message.dict_to_message(
|
|
1134
1125
|
agent_id=self.agent_state.id,
|
|
1135
|
-
user_id=self.agent_state.
|
|
1126
|
+
user_id=self.agent_state.created_by_id,
|
|
1136
1127
|
model=self.model,
|
|
1137
1128
|
openai_message_dict=openai_message_dict,
|
|
1138
1129
|
# created_at=timestamp,
|
|
@@ -1232,7 +1223,7 @@ class Agent(BaseAgent):
|
|
|
1232
1223
|
[
|
|
1233
1224
|
Message.dict_to_message(
|
|
1234
1225
|
agent_id=self.agent_state.id,
|
|
1235
|
-
user_id=self.agent_state.
|
|
1226
|
+
user_id=self.agent_state.created_by_id,
|
|
1236
1227
|
model=self.model,
|
|
1237
1228
|
openai_message_dict=packed_summary_message,
|
|
1238
1229
|
)
|
|
@@ -1260,7 +1251,7 @@ class Agent(BaseAgent):
|
|
|
1260
1251
|
assert isinstance(new_system_message, str)
|
|
1261
1252
|
new_system_message_obj = Message.dict_to_message(
|
|
1262
1253
|
agent_id=self.agent_state.id,
|
|
1263
|
-
user_id=self.agent_state.
|
|
1254
|
+
user_id=self.agent_state.created_by_id,
|
|
1264
1255
|
model=self.model,
|
|
1265
1256
|
openai_message_dict={"role": "system", "content": new_system_message},
|
|
1266
1257
|
)
|
|
@@ -1371,7 +1362,14 @@ class Agent(BaseAgent):
|
|
|
1371
1362
|
# TODO: recall memory
|
|
1372
1363
|
raise NotImplementedError()
|
|
1373
1364
|
|
|
1374
|
-
def attach_source(
|
|
1365
|
+
def attach_source(
|
|
1366
|
+
self,
|
|
1367
|
+
user: PydanticUser,
|
|
1368
|
+
source_id: str,
|
|
1369
|
+
source_manager: SourceManager,
|
|
1370
|
+
agent_manager: AgentManager,
|
|
1371
|
+
page_size: Optional[int] = None,
|
|
1372
|
+
):
|
|
1375
1373
|
"""Attach data with name `source_name` to the agent from source_connector."""
|
|
1376
1374
|
# TODO: eventually, adding a data source should just give access to the retriever the source table, rather than modifying archival memory
|
|
1377
1375
|
passages = self.passage_manager.list_passages(actor=user, source_id=source_id, limit=page_size)
|
|
@@ -1384,7 +1382,7 @@ class Agent(BaseAgent):
|
|
|
1384
1382
|
agents_passages = self.passage_manager.list_passages(actor=user, agent_id=self.agent_state.id, source_id=source_id, limit=page_size)
|
|
1385
1383
|
passage_size = self.passage_manager.size(actor=user, agent_id=self.agent_state.id, source_id=source_id)
|
|
1386
1384
|
assert all([p.agent_id == self.agent_state.id for p in agents_passages])
|
|
1387
|
-
assert len(agents_passages) == passage_size
|
|
1385
|
+
assert len(agents_passages) == passage_size # sanity check
|
|
1388
1386
|
assert passage_size == len(passages), f"Expected {len(passages)} passages, got {passage_size}"
|
|
1389
1387
|
|
|
1390
1388
|
# attach to agent
|
|
@@ -1393,7 +1391,7 @@ class Agent(BaseAgent):
|
|
|
1393
1391
|
|
|
1394
1392
|
# NOTE: need this redundant line here because we haven't migrated agent to ORM yet
|
|
1395
1393
|
# TODO: delete @matt and remove
|
|
1396
|
-
|
|
1394
|
+
agent_manager.attach_source(agent_id=self.agent_state.id, source_id=source_id, actor=user)
|
|
1397
1395
|
|
|
1398
1396
|
printd(
|
|
1399
1397
|
f"Attached data source {source.name} to agent {self.agent_state.name}, consisting of {len(passages)}. Agent now has {passage_size} embeddings in archival memory.",
|
|
@@ -1610,20 +1608,31 @@ class Agent(BaseAgent):
|
|
|
1610
1608
|
return context_window_breakdown.context_window_size_current
|
|
1611
1609
|
|
|
1612
1610
|
|
|
1613
|
-
def save_agent(agent: Agent
|
|
1611
|
+
def save_agent(agent: Agent):
|
|
1614
1612
|
"""Save agent to metadata store"""
|
|
1615
|
-
|
|
1616
1613
|
agent.update_state()
|
|
1617
1614
|
agent_state = agent.agent_state
|
|
1618
1615
|
assert isinstance(agent_state.memory, Memory), f"Memory is not a Memory object: {type(agent_state.memory)}"
|
|
1619
1616
|
|
|
1620
1617
|
# TODO: move this to agent manager
|
|
1618
|
+
# TODO: Completely strip out metadata
|
|
1621
1619
|
# convert to persisted model
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1620
|
+
agent_manager = AgentManager()
|
|
1621
|
+
update_agent = UpdateAgent(
|
|
1622
|
+
name=agent_state.name,
|
|
1623
|
+
tool_ids=[t.id for t in agent_state.tools],
|
|
1624
|
+
source_ids=[s.id for s in agent_state.sources],
|
|
1625
|
+
block_ids=[b.id for b in agent_state.memory.blocks],
|
|
1626
|
+
tags=agent_state.tags,
|
|
1627
|
+
system=agent_state.system,
|
|
1628
|
+
tool_rules=agent_state.tool_rules,
|
|
1629
|
+
llm_config=agent_state.llm_config,
|
|
1630
|
+
embedding_config=agent_state.embedding_config,
|
|
1631
|
+
message_ids=agent_state.message_ids,
|
|
1632
|
+
description=agent_state.description,
|
|
1633
|
+
metadata_=agent_state.metadata_,
|
|
1634
|
+
)
|
|
1635
|
+
agent_manager.update_agent(agent_id=agent_state.id, agent_update=update_agent, actor=agent.user)
|
|
1627
1636
|
|
|
1628
1637
|
|
|
1629
1638
|
def strip_name_field_from_user_message(user_message_text: str) -> Tuple[str, Optional[str]]:
|
|
@@ -2,9 +2,7 @@ from concurrent.futures import ThreadPoolExecutor
|
|
|
2
2
|
from typing import List, Optional, Union
|
|
3
3
|
|
|
4
4
|
from letta.agent import Agent
|
|
5
|
-
|
|
6
5
|
from letta.interface import AgentInterface
|
|
7
|
-
from letta.metadata import MetadataStore
|
|
8
6
|
from letta.prompts import gpt_system
|
|
9
7
|
from letta.schemas.agent import AgentState, AgentType
|
|
10
8
|
from letta.schemas.embedding_config import EmbeddingConfig
|
|
@@ -37,11 +35,9 @@ class ChatOnlyAgent(Agent):
|
|
|
37
35
|
messages: Union[Message, List[Message]],
|
|
38
36
|
chaining: bool = True,
|
|
39
37
|
max_chaining_steps: Optional[int] = None,
|
|
40
|
-
ms: Optional[MetadataStore] = None,
|
|
41
38
|
**kwargs,
|
|
42
39
|
) -> LettaUsageStatistics:
|
|
43
|
-
|
|
44
|
-
letta_statistics = super().step(messages=messages, chaining=chaining, max_chaining_steps=max_chaining_steps, ms=ms, **kwargs)
|
|
40
|
+
letta_statistics = super().step(messages=messages, chaining=chaining, max_chaining_steps=max_chaining_steps, **kwargs)
|
|
45
41
|
|
|
46
42
|
if self.always_rethink_memory:
|
|
47
43
|
|
|
@@ -68,8 +64,10 @@ class ChatOnlyAgent(Agent):
|
|
|
68
64
|
name="chat_agent_persona_new", label="chat_agent_persona_new", value=conversation_persona_block.value, limit=2000
|
|
69
65
|
)
|
|
70
66
|
|
|
71
|
-
recent_convo = "".join([str(message) for message in self.messages[3:]])[-self.recent_convo_limit:]
|
|
72
|
-
conversation_messages_block = Block(
|
|
67
|
+
recent_convo = "".join([str(message) for message in self.messages[3:]])[-self.recent_convo_limit :]
|
|
68
|
+
conversation_messages_block = Block(
|
|
69
|
+
name="conversation_block", label="conversation_block", value=recent_convo, limit=self.recent_convo_limit
|
|
70
|
+
)
|
|
73
71
|
|
|
74
72
|
offline_memory = BasicBlockMemory(
|
|
75
73
|
blocks=[
|
|
@@ -89,7 +87,7 @@ class ChatOnlyAgent(Agent):
|
|
|
89
87
|
memory=offline_memory,
|
|
90
88
|
llm_config=LLMConfig.default_config("gpt-4"),
|
|
91
89
|
embedding_config=EmbeddingConfig.default_config("text-embedding-ada-002"),
|
|
92
|
-
|
|
90
|
+
tool_ids=self.agent_state.metadata_.get("offline_memory_tools", []),
|
|
93
91
|
include_base_tools=False,
|
|
94
92
|
)
|
|
95
93
|
self.offline_memory_agent.memory.update_block_value(label="conversation_block", value=recent_convo)
|
{letta_nightly-0.6.4.dev20241213193437 → letta_nightly-0.6.4.dev20241215104129}/letta/cli/cli.py
RENAMED
|
@@ -18,7 +18,6 @@ from letta.constants import (
|
|
|
18
18
|
)
|
|
19
19
|
from letta.local_llm.constants import ASSISTANT_MESSAGE_CLI_SYMBOL
|
|
20
20
|
from letta.log import get_logger
|
|
21
|
-
from letta.metadata import MetadataStore
|
|
22
21
|
from letta.schemas.enums import OptionState
|
|
23
22
|
from letta.schemas.memory import ChatMemory, Memory
|
|
24
23
|
from letta.server.server import logger as server_logger
|
|
@@ -138,9 +137,7 @@ def run(
|
|
|
138
137
|
config = LettaConfig.load()
|
|
139
138
|
|
|
140
139
|
# read user id from config
|
|
141
|
-
ms = MetadataStore(config)
|
|
142
140
|
client = create_client()
|
|
143
|
-
server = client.server
|
|
144
141
|
|
|
145
142
|
# determine agent to use, if not provided
|
|
146
143
|
if not yes and not agent:
|
|
@@ -165,8 +162,6 @@ def run(
|
|
|
165
162
|
persona = persona if persona else config.persona
|
|
166
163
|
if agent and agent_state: # use existing agent
|
|
167
164
|
typer.secho(f"\n🔁 Using existing agent {agent}", fg=typer.colors.GREEN)
|
|
168
|
-
# agent_config = AgentConfig.load(agent)
|
|
169
|
-
# agent_state = ms.get_agent(agent_name=agent, user_id=user_id)
|
|
170
165
|
printd("Loading agent state:", agent_state.id)
|
|
171
166
|
printd("Agent state:", agent_state.name)
|
|
172
167
|
# printd("State path:", agent_config.save_state_dir())
|
|
@@ -224,8 +219,6 @@ def run(
|
|
|
224
219
|
)
|
|
225
220
|
|
|
226
221
|
# create agent
|
|
227
|
-
tools = [server.tool_manager.get_tool_by_name(tool_name=tool_name, actor=client.user) for tool_name in agent_state.tool_names]
|
|
228
|
-
agent_state.tools = tools
|
|
229
222
|
letta_agent = Agent(agent_state=agent_state, interface=interface(), user=client.user)
|
|
230
223
|
|
|
231
224
|
else: # create new agent
|
|
@@ -317,7 +310,7 @@ def run(
|
|
|
317
310
|
metadata=metadata,
|
|
318
311
|
)
|
|
319
312
|
assert isinstance(agent_state.memory, Memory), f"Expected Memory, got {type(agent_state.memory)}"
|
|
320
|
-
typer.secho(f"-> 🛠️ {len(agent_state.tools)} tools: {', '.join([t for t in agent_state.
|
|
313
|
+
typer.secho(f"-> 🛠️ {len(agent_state.tools)} tools: {', '.join([t.name for t in agent_state.tools])}", fg=typer.colors.WHITE)
|
|
321
314
|
|
|
322
315
|
letta_agent = Agent(
|
|
323
316
|
interface=interface(),
|
|
@@ -326,7 +319,7 @@ def run(
|
|
|
326
319
|
first_message_verify_mono=True if (model is not None and "gpt-4" in model) else False,
|
|
327
320
|
user=client.user,
|
|
328
321
|
)
|
|
329
|
-
save_agent(agent=letta_agent
|
|
322
|
+
save_agent(agent=letta_agent)
|
|
330
323
|
typer.secho(f"🎉 Created new agent '{letta_agent.agent_state.name}' (id={letta_agent.agent_state.id})", fg=typer.colors.GREEN)
|
|
331
324
|
|
|
332
325
|
# start event loop
|
|
@@ -337,7 +330,6 @@ def run(
|
|
|
337
330
|
letta_agent=letta_agent,
|
|
338
331
|
config=config,
|
|
339
332
|
first=first,
|
|
340
|
-
ms=ms,
|
|
341
333
|
no_verify=no_verify,
|
|
342
334
|
stream=stream,
|
|
343
335
|
) # TODO: add back no_verify
|